diff --git a/bleep.yaml b/bleep.yaml index aa022e0c43..e3520ed616 100644 --- a/bleep.yaml +++ b/bleep.yaml @@ -283,6 +283,31 @@ projects: folder: ./testers/openapi/scala/spring isTestProject: true sources: ./testapi + testers/combined/java: + dependencies: + - com.fasterxml.jackson.core:jackson-annotations:2.17.2 + - com.fasterxml.jackson.core:jackson-databind:2.17.2 + - com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.17.2 + - com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.17.2 + - com.novocode:junit-interface:0.11 + - io.smallrye.reactive:mutiny:2.6.1 + - io.smallrye.reactive:mutiny-zero-flow-adapters:1.0.0 + - jakarta.validation:jakarta.validation-api:3.0.2 + - jakarta.ws.rs:jakarta.ws.rs-api:3.1.0 + - junit:junit:4.13.2 + - org.mariadb.jdbc:mariadb-java-client:3.5.0 + - org.postgresql:postgresql:42.7.3 + dependsOn: foundations-jdbc-dsl + isTestProject: true + java: + options: -proc:none + platform: + name: jvm + sources: + - ./generated-and-checked-in/shared + - ./generated-and-checked-in/postgres + - ./generated-and-checked-in/mariadb + - ./generated-and-checked-in/api testers/oracle/java: dependencies: - com.fasterxml.jackson.core:jackson-annotations:2.17.2 @@ -543,6 +568,9 @@ scripts: main: scripts.GeneratedMariaDb project: typr-scripts sourceGlobs: ../mariadb_sql + generate-combined-test: + main: scripts.GenerateCombinedTest + project: typr-scripts generate-openapi-test: main: scripts.GenerateOpenApiTest project: typr-scripts diff --git a/site-in/patterns/multi-repo.md b/site-in/patterns/multi-repo.md index fed31d9789..cb7a9962e6 100644 --- a/site-in/patterns/multi-repo.md +++ b/site-in/patterns/multi-repo.md @@ -142,7 +142,7 @@ object DomainInsert extends TestDomainInsert { val testInsert = new TestInsert(new Random(1), DomainInsert) val businessentityRow = testInsert.personBusinessentity() -val personRow = testInsert.personPerson(businessentityRow.businessentityid, persontype = "SC", FirstName("name")) +val personRow = testInsert.personPerson(businessentityRow.businessentityid, persontype = "SC", firstname = FirstName(Name("name"))) val countryregionRow = testInsert.personCountryregion(CountryregionId("NOR")) val salesterritoryRow = testInsert.salesSalesterritory(countryregionRow.countryregioncode) val stateprovinceRow = testInsert.personStateprovince(countryregionRow.countryregioncode, salesterritoryRow.territoryid) diff --git a/site/package-lock.json b/site/package-lock.json index badbdb5b10..470cf76c78 100644 --- a/site/package-lock.json +++ b/site/package-lock.json @@ -132,6 +132,7 @@ "version": "4.23.3", "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.23.3.tgz", "integrity": "sha512-P4VAKFHqU0wx9O+q29Q8YVuaowaZ5EM77rxfmGnkHUJggh28useXQdopokgwMeYw2XUht49WX5RcTQ40rZIabw==", + "peer": true, "dependencies": { "@algolia/client-common": "4.23.3", "@algolia/requester-common": "4.23.3", @@ -241,6 +242,7 @@ "version": "7.24.4", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.4.tgz", "integrity": "sha512-MBVlMXP+kkl5394RBLSxxk/iLTeVGuXTV3cIDXavPpMMqnSnt6apKgan/U8O3USWZCWZT/TbgfEpKa4uMgN4Dg==", + "peer": true, "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.24.2", @@ -3144,6 +3146,7 @@ "version": "6.5.1", "resolved": "https://registry.npmjs.org/@svgr/core/-/core-6.5.1.tgz", "integrity": "sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw==", + "peer": true, "dependencies": { "@babel/core": "^7.19.6", "@svgr/babel-preset": "^6.5.1", @@ -3495,6 +3498,7 @@ "version": "18.3.1", "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.1.tgz", "integrity": "sha512-V0kuGBX3+prX+DQ/7r2qsv1NsdfnCLnTgnRJ1pYnxykBhGMz+qj+box5lq7XsO5mtZsBqpjwwTu/7wszPfMBcw==", + "peer": true, "dependencies": { "@types/prop-types": "*", "csstype": "^3.0.2" @@ -3784,6 +3788,7 @@ "version": "8.11.3", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -3839,6 +3844,7 @@ "version": "8.12.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "peer": true, "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -3881,6 +3887,7 @@ "version": "4.23.3", "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.23.3.tgz", "integrity": "sha512-Le/3YgNvjW9zxIQMRhUHuhiUjAlKY/zsdZpfq4dlLqg6mEm0nL6yk+7f2hDOtLpxsgE4jSzDmvHL7nXdBp5feg==", + "peer": true, "dependencies": { "@algolia/cache-browser-local-storage": "4.23.3", "@algolia/cache-common": "4.23.3", @@ -4279,6 +4286,7 @@ "url": "https://github.com/sponsors/ai" } ], + "peer": true, "dependencies": { "caniuse-lite": "^1.0.30001587", "electron-to-chromium": "^1.4.668", @@ -6186,6 +6194,7 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "peer": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -6375,6 +6384,7 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "peer": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -10932,6 +10942,7 @@ "url": "https://github.com/sponsors/ai" } ], + "peer": true, "dependencies": { "nanoid": "^3.3.7", "picocolors": "^1.0.0", @@ -11752,6 +11763,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, + "peer": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -11822,6 +11834,7 @@ "version": "18.3.1", "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "peer": true, "dependencies": { "loose-envify": "^1.1.0" }, @@ -11951,6 +11964,7 @@ "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "peer": true, "dependencies": { "loose-envify": "^1.1.0", "scheduler": "^0.23.2" @@ -12006,6 +12020,7 @@ "version": "5.5.2", "resolved": "https://registry.npmjs.org/@docusaurus/react-loadable/-/react-loadable-5.5.2.tgz", "integrity": "sha512-A3dYjdBGuy0IGT+wyLIGIKLRE+sAk1iNk0f1HjNDysO7u8lhL4N3VEm+FAubmJbAztn94F7MxBTPmnixbiyFdQ==", + "peer": true, "dependencies": { "@types/react": "*", "prop-types": "^15.6.2" @@ -12033,6 +12048,7 @@ "version": "5.3.4", "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.3.4.tgz", "integrity": "sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==", + "peer": true, "dependencies": { "@babel/runtime": "^7.12.13", "history": "^4.9.0", @@ -13492,6 +13508,7 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "peer": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -14036,6 +14053,7 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "peer": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -14216,6 +14234,7 @@ "version": "5.91.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.91.0.tgz", "integrity": "sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw==", + "peer": true, "dependencies": { "@types/eslint-scope": "^3.7.3", "@types/estree": "^1.0.5", @@ -14443,6 +14462,7 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "peer": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", diff --git a/site/showcase-generated b/site/showcase-generated new file mode 120000 index 0000000000..adb5f1767b --- /dev/null +++ b/site/showcase-generated @@ -0,0 +1 @@ +../showcase-generated \ No newline at end of file diff --git a/snapshot-tests/java-sql/DSLTest/allCombinesBooleanExpressions.sql b/snapshot-tests/java-sql/DSLTest/allCombinesBooleanExpressions.sql index 22023da2a6..c6d1d81858 100644 --- a/snapshot-tests/java-sql/DSLTest/allCombinesBooleanExpressions.sql +++ b/snapshot-tests/java-sql/DSLTest/allCombinesBooleanExpressions.sql @@ -1,2 +1,2 @@ select personperson0."businessentityid", personperson0."persontype", personperson0."namestyle", personperson0."title", personperson0."firstname", personperson0."middlename", personperson0."lastname", personperson0."suffix", personperson0."emailpromotion", personperson0."additionalcontactinfo", personperson0."demographics", personperson0."rowguid", personperson0."modifieddate" -from (select * from "person"."person" personperson0 where ((((personperson0)."persontype" = ?::bpchar) AND ((personperson0)."firstname" = ?)) AND ((personperson0)."lastname" = ?::"public"."Name"))) personperson0 \ No newline at end of file +from (select * from "person"."person" personperson0 where ((((personperson0)."persontype" = ?::bpchar) AND ((personperson0)."firstname" = ?::"public"."Name")) AND ((personperson0)."lastname" = ?::"public"."Name"))) personperson0 \ No newline at end of file diff --git a/testers/combined/java/generated-and-checked-in/api/combined/api/api/CustomersApi.java b/testers/combined/java/generated-and-checked-in/api/combined/api/api/CustomersApi.java new file mode 100644 index 0000000000..ff6ea16989 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/api/combined/api/api/CustomersApi.java @@ -0,0 +1,30 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.api.api; + +import combined.api.model.Customer; +import combined.api.model.CustomerCreate; +import combined.api.model.CustomerUpdate; +import io.smallrye.mutiny.Uni; +import java.util.List; +import java.util.Optional; + +public interface CustomersApi { + /** Create a new customer */ + Uni createCustomer(CustomerCreate body); + + /** Get customer by ID */ + Uni getCustomer(Long customerId); + + /** List all customers */ + Uni> listCustomers( + + /** Filter by active status */ + Optional isActive); + + /** Update customer */ + Uni updateCustomer(Long customerId, CustomerUpdate body); +} diff --git a/testers/combined/java/generated-and-checked-in/api/combined/api/api/CustomersApiServer.java b/testers/combined/java/generated-and-checked-in/api/combined/api/api/CustomersApiServer.java new file mode 100644 index 0000000000..a9050c1790 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/api/combined/api/api/CustomersApiServer.java @@ -0,0 +1,58 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.api.api; + +import combined.api.model.Customer; +import combined.api.model.CustomerCreate; +import combined.api.model.CustomerUpdate; +import io.smallrye.mutiny.Uni; +import jakarta.ws.rs.Consumes; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.POST; +import jakarta.ws.rs.PUT; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.PathParam; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.QueryParam; +import jakarta.ws.rs.core.MediaType; +import java.util.List; +import java.util.Optional; + +@Path("/customers") +public interface CustomersApiServer extends CustomersApi { + /** Create a new customer */ + @Override + @POST + @Path("") + @Consumes(value = {MediaType.APPLICATION_JSON}) + @Produces(value = {MediaType.APPLICATION_JSON}) + Uni createCustomer(CustomerCreate body); + + /** Get customer by ID */ + @Override + @GET + @Path("/{customerId}") + @Produces(value = {MediaType.APPLICATION_JSON}) + Uni getCustomer(@PathParam("customerId") Long customerId); + + /** List all customers */ + @Override + @GET + @Path("") + @Produces(value = {MediaType.APPLICATION_JSON}) + Uni> listCustomers( + + /** Filter by active status */ + @QueryParam("isActive") Optional isActive); + + /** Update customer */ + @Override + @PUT + @Path("/{customerId}") + @Consumes(value = {MediaType.APPLICATION_JSON}) + @Produces(value = {MediaType.APPLICATION_JSON}) + Uni updateCustomer(@PathParam("customerId") Long customerId, CustomerUpdate body); +} diff --git a/testers/combined/java/generated-and-checked-in/api/combined/api/api/EmployeesApi.java b/testers/combined/java/generated-and-checked-in/api/combined/api/api/EmployeesApi.java new file mode 100644 index 0000000000..3c2c627a9c --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/api/combined/api/api/EmployeesApi.java @@ -0,0 +1,22 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.api.api; + +import combined.api.model.Employee; +import io.smallrye.mutiny.Uni; +import java.util.List; +import java.util.Optional; + +public interface EmployeesApi { + /** Get employee by ID */ + Uni getEmployee(Integer employeeId); + + /** List all employees */ + Uni> listEmployees( + + /** Filter by active status */ + Optional isActive); +} diff --git a/testers/combined/java/generated-and-checked-in/api/combined/api/api/EmployeesApiServer.java b/testers/combined/java/generated-and-checked-in/api/combined/api/api/EmployeesApiServer.java new file mode 100644 index 0000000000..38e0c041e0 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/api/combined/api/api/EmployeesApiServer.java @@ -0,0 +1,37 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.api.api; + +import combined.api.model.Employee; +import io.smallrye.mutiny.Uni; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.PathParam; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.QueryParam; +import jakarta.ws.rs.core.MediaType; +import java.util.List; +import java.util.Optional; + +@Path("/employees") +public interface EmployeesApiServer extends EmployeesApi { + /** Get employee by ID */ + @Override + @GET + @Path("/{employeeId}") + @Produces(value = {MediaType.APPLICATION_JSON}) + Uni getEmployee(@PathParam("employeeId") Integer employeeId); + + /** List all employees */ + @Override + @GET + @Path("") + @Produces(value = {MediaType.APPLICATION_JSON}) + Uni> listEmployees( + + /** Filter by active status */ + @QueryParam("isActive") Optional isActive); +} diff --git a/testers/combined/java/generated-and-checked-in/api/combined/api/api/ProductsApi.java b/testers/combined/java/generated-and-checked-in/api/combined/api/api/ProductsApi.java new file mode 100644 index 0000000000..1deba2cda3 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/api/combined/api/api/ProductsApi.java @@ -0,0 +1,20 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.api.api; + +import combined.api.model.Product; +import io.smallrye.mutiny.Uni; +import java.util.List; +import java.util.Optional; + +public interface ProductsApi { + /** List all products from both databases */ + Uni> listProducts( + /** Filter by data source */ + Optional source, + /** Filter by active status */ + Optional isActive); +} diff --git a/testers/combined/java/generated-and-checked-in/api/combined/api/api/ProductsApiServer.java b/testers/combined/java/generated-and-checked-in/api/combined/api/api/ProductsApiServer.java new file mode 100644 index 0000000000..faa0521183 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/api/combined/api/api/ProductsApiServer.java @@ -0,0 +1,31 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.api.api; + +import combined.api.model.Product; +import io.smallrye.mutiny.Uni; +import jakarta.ws.rs.DefaultValue; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.QueryParam; +import jakarta.ws.rs.core.MediaType; +import java.util.List; +import java.util.Optional; + +@Path("/products") +public interface ProductsApiServer extends ProductsApi { + /** List all products from both databases */ + @Override + @GET + @Path("") + @Produces(value = {MediaType.APPLICATION_JSON}) + Uni> listProducts( + /** Filter by data source */ + @QueryParam("source") @DefaultValue("all") Optional source, + /** Filter by active status */ + @QueryParam("isActive") Optional isActive); +} diff --git a/testers/combined/java/generated-and-checked-in/api/combined/api/model/Customer.java b/testers/combined/java/generated-and-checked-in/api/combined/api/model/Customer.java new file mode 100644 index 0000000000..79c4b69ea7 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/api/combined/api/model/Customer.java @@ -0,0 +1,74 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.api.model; + +import com.fasterxml.jackson.annotation.JsonProperty; +import combined.shared.FirstName; +import combined.shared.IsActive; +import combined.shared.LastName; +import jakarta.validation.constraints.Email; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import java.time.OffsetDateTime; +import java.util.Optional; + +public record Customer( + /** When the customer was created */ + @JsonProperty("createdAt") Optional createdAt, + /** Customer ID */ + @JsonProperty("customerId") @NotNull Long customerId, + /** Customer's email address (matches Email type) */ + @JsonProperty("email") @NotNull @Email String email, + /** Customer's first name (matches FirstName type) */ + @JsonProperty("firstName") @NotNull @Size(max = 100) FirstName firstName, + /** Whether customer account is active (matches IsActive type) */ + @JsonProperty("isActive") @NotNull IsActive isActive, + /** Customer's last name (matches LastName type) */ + @JsonProperty("lastName") @NotNull @Size(max = 100) LastName lastName, + /** Customer loyalty tier */ + @JsonProperty("tier") Optional tier) { + /** When the customer was created */ + public Customer withCreatedAt(Optional createdAt) { + return new Customer(createdAt, customerId, email, firstName, isActive, lastName, tier); + } + ; + + /** Customer ID */ + public Customer withCustomerId(Long customerId) { + return new Customer(createdAt, customerId, email, firstName, isActive, lastName, tier); + } + ; + + /** Customer's email address (matches Email type) */ + public Customer withEmail(String email) { + return new Customer(createdAt, customerId, email, firstName, isActive, lastName, tier); + } + ; + + /** Customer's first name (matches FirstName type) */ + public Customer withFirstName(FirstName firstName) { + return new Customer(createdAt, customerId, email, firstName, isActive, lastName, tier); + } + ; + + /** Whether customer account is active (matches IsActive type) */ + public Customer withIsActive(IsActive isActive) { + return new Customer(createdAt, customerId, email, firstName, isActive, lastName, tier); + } + ; + + /** Customer's last name (matches LastName type) */ + public Customer withLastName(LastName lastName) { + return new Customer(createdAt, customerId, email, firstName, isActive, lastName, tier); + } + ; + + /** Customer loyalty tier */ + public Customer withTier(Optional tier) { + return new Customer(createdAt, customerId, email, firstName, isActive, lastName, tier); + } + ; +} diff --git a/testers/combined/java/generated-and-checked-in/api/combined/api/model/CustomerCreate.java b/testers/combined/java/generated-and-checked-in/api/combined/api/model/CustomerCreate.java new file mode 100644 index 0000000000..7ed11491ab --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/api/combined/api/model/CustomerCreate.java @@ -0,0 +1,46 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.api.model; + +import com.fasterxml.jackson.annotation.JsonProperty; +import combined.shared.FirstName; +import combined.shared.LastName; +import jakarta.validation.constraints.Email; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import java.util.Optional; + +public record CustomerCreate( + /** Customer's email address (matches Email type) */ + @JsonProperty("email") @NotNull @Email String email, + /** Customer's first name (matches FirstName type) */ + @JsonProperty("firstName") @NotNull @Size(max = 100) FirstName firstName, + /** Customer's last name (matches LastName type) */ + @JsonProperty("lastName") @NotNull @Size(max = 100) LastName lastName, + @JsonProperty("tier") Optional tier) { + /** Customer's email address (matches Email type) */ + public CustomerCreate withEmail(String email) { + return new CustomerCreate(email, firstName, lastName, tier); + } + ; + + /** Customer's first name (matches FirstName type) */ + public CustomerCreate withFirstName(FirstName firstName) { + return new CustomerCreate(email, firstName, lastName, tier); + } + ; + + /** Customer's last name (matches LastName type) */ + public CustomerCreate withLastName(LastName lastName) { + return new CustomerCreate(email, firstName, lastName, tier); + } + ; + + public CustomerCreate withTier(Optional tier) { + return new CustomerCreate(email, firstName, lastName, tier); + } + ; +} diff --git a/testers/combined/java/generated-and-checked-in/api/combined/api/model/CustomerUpdate.java b/testers/combined/java/generated-and-checked-in/api/combined/api/model/CustomerUpdate.java new file mode 100644 index 0000000000..1cfa75f845 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/api/combined/api/model/CustomerUpdate.java @@ -0,0 +1,54 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.api.model; + +import com.fasterxml.jackson.annotation.JsonProperty; +import combined.shared.FirstName; +import combined.shared.IsActive; +import combined.shared.LastName; +import jakarta.validation.constraints.Email; +import jakarta.validation.constraints.Size; +import java.util.Optional; + +public record CustomerUpdate( + /** Customer's email address (matches Email type) */ + @JsonProperty("email") @Email Optional email, + /** Customer's first name (matches FirstName type) */ + @JsonProperty("firstName") @Size(max = 100) Optional firstName, + /** Whether customer account is active (matches IsActive type) */ + @JsonProperty("isActive") Optional isActive, + /** Customer's last name (matches LastName type) */ + @JsonProperty("lastName") @Size(max = 100) Optional lastName, + @JsonProperty("tier") Optional tier) { + /** Customer's email address (matches Email type) */ + public CustomerUpdate withEmail(Optional email) { + return new CustomerUpdate(email, firstName, isActive, lastName, tier); + } + ; + + /** Customer's first name (matches FirstName type) */ + public CustomerUpdate withFirstName(Optional firstName) { + return new CustomerUpdate(email, firstName, isActive, lastName, tier); + } + ; + + /** Whether customer account is active (matches IsActive type) */ + public CustomerUpdate withIsActive(Optional isActive) { + return new CustomerUpdate(email, firstName, isActive, lastName, tier); + } + ; + + /** Customer's last name (matches LastName type) */ + public CustomerUpdate withLastName(Optional lastName) { + return new CustomerUpdate(email, firstName, isActive, lastName, tier); + } + ; + + public CustomerUpdate withTier(Optional tier) { + return new CustomerUpdate(email, firstName, isActive, lastName, tier); + } + ; +} diff --git a/testers/combined/java/generated-and-checked-in/api/combined/api/model/Employee.java b/testers/combined/java/generated-and-checked-in/api/combined/api/model/Employee.java new file mode 100644 index 0000000000..68ae979da6 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/api/combined/api/model/Employee.java @@ -0,0 +1,173 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.api.model; + +import com.fasterxml.jackson.annotation.JsonProperty; +import combined.shared.FirstName; +import combined.shared.IsActive; +import combined.shared.IsSalaried; +import combined.shared.LastName; +import combined.shared.MiddleName; +import jakarta.validation.constraints.Email; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import java.time.LocalDate; +import java.util.Optional; + +public record Employee( + /** Employee's email address (matches Email type) */ + @JsonProperty("email") @NotNull @Email String email, + /** Employee business entity ID */ + @JsonProperty("employeeId") @NotNull Integer employeeId, + /** Employee's first name (matches FirstName type) */ + @JsonProperty("firstName") @NotNull @Size(max = 50) FirstName firstName, + /** Date employee was hired */ + @JsonProperty("hireDate") Optional hireDate, + /** Whether employee is currently active (matches IsActive type) */ + @JsonProperty("isActive") @NotNull IsActive isActive, + /** Whether employee is salaried vs hourly (matches SalariedFlag type) */ + @JsonProperty("isSalaried") @NotNull IsSalaried isSalaried, + /** Job title */ + @JsonProperty("jobTitle") Optional jobTitle, + /** Employee's last name (matches LastName type) */ + @JsonProperty("lastName") @NotNull @Size(max = 50) LastName lastName, + /** Employee's middle name (matches MiddleName type) */ + @JsonProperty("middleName") @Size(max = 50) Optional middleName) { + /** Employee's email address (matches Email type) */ + public Employee withEmail(String email) { + return new Employee( + email, + employeeId, + firstName, + hireDate, + isActive, + isSalaried, + jobTitle, + lastName, + middleName); + } + ; + + /** Employee business entity ID */ + public Employee withEmployeeId(Integer employeeId) { + return new Employee( + email, + employeeId, + firstName, + hireDate, + isActive, + isSalaried, + jobTitle, + lastName, + middleName); + } + ; + + /** Employee's first name (matches FirstName type) */ + public Employee withFirstName(FirstName firstName) { + return new Employee( + email, + employeeId, + firstName, + hireDate, + isActive, + isSalaried, + jobTitle, + lastName, + middleName); + } + ; + + /** Date employee was hired */ + public Employee withHireDate(Optional hireDate) { + return new Employee( + email, + employeeId, + firstName, + hireDate, + isActive, + isSalaried, + jobTitle, + lastName, + middleName); + } + ; + + /** Whether employee is currently active (matches IsActive type) */ + public Employee withIsActive(IsActive isActive) { + return new Employee( + email, + employeeId, + firstName, + hireDate, + isActive, + isSalaried, + jobTitle, + lastName, + middleName); + } + ; + + /** Whether employee is salaried vs hourly (matches SalariedFlag type) */ + public Employee withIsSalaried(IsSalaried isSalaried) { + return new Employee( + email, + employeeId, + firstName, + hireDate, + isActive, + isSalaried, + jobTitle, + lastName, + middleName); + } + ; + + /** Job title */ + public Employee withJobTitle(Optional jobTitle) { + return new Employee( + email, + employeeId, + firstName, + hireDate, + isActive, + isSalaried, + jobTitle, + lastName, + middleName); + } + ; + + /** Employee's last name (matches LastName type) */ + public Employee withLastName(LastName lastName) { + return new Employee( + email, + employeeId, + firstName, + hireDate, + isActive, + isSalaried, + jobTitle, + lastName, + middleName); + } + ; + + /** Employee's middle name (matches MiddleName type) */ + public Employee withMiddleName(Optional middleName) { + return new Employee( + email, + employeeId, + firstName, + hireDate, + isActive, + isSalaried, + jobTitle, + lastName, + middleName); + } + ; +} diff --git a/testers/combined/java/generated-and-checked-in/api/combined/api/model/Product.java b/testers/combined/java/generated-and-checked-in/api/combined/api/model/Product.java new file mode 100644 index 0000000000..9e40af7067 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/api/combined/api/model/Product.java @@ -0,0 +1,61 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.api.model; + +import com.fasterxml.jackson.annotation.JsonProperty; +import combined.shared.IsActive; +import jakarta.validation.constraints.NotNull; +import java.util.Optional; + +public record Product( + /** Product description */ + @JsonProperty("description") Optional description, + /** Whether product is active/visible (matches IsActive type) */ + @JsonProperty("isActive") @NotNull IsActive isActive, + /** Product name */ + @JsonProperty("name") @NotNull String name, + /** Product price */ + @JsonProperty("price") Optional price, + /** Product ID (prefixed with source, e.g., "pg-123" or "maria-456") */ + @JsonProperty("productId") @NotNull String productId, + /** Which database this product comes from */ + @JsonProperty("source") @NotNull String source) { + /** Product description */ + public Product withDescription(Optional description) { + return new Product(description, isActive, name, price, productId, source); + } + ; + + /** Whether product is active/visible (matches IsActive type) */ + public Product withIsActive(IsActive isActive) { + return new Product(description, isActive, name, price, productId, source); + } + ; + + /** Product name */ + public Product withName(String name) { + return new Product(description, isActive, name, price, productId, source); + } + ; + + /** Product price */ + public Product withPrice(Optional price) { + return new Product(description, isActive, name, price, productId, source); + } + ; + + /** Product ID (prefixed with source, e.g., "pg-123" or "maria-456") */ + public Product withProductId(String productId) { + return new Product(description, isActive, name, price, productId, source); + } + ; + + /** Which database this product comes from */ + public Product withSource(String source) { + return new Product(description, isActive, name, price, productId, source); + } + ; +} diff --git a/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/DefaultedDeserializer.java b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/DefaultedDeserializer.java new file mode 100644 index 0000000000..ff7d41fcf0 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/DefaultedDeserializer.java @@ -0,0 +1,64 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.mariadb; + +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.JsonToken; +import com.fasterxml.jackson.databind.BeanProperty; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JavaType; +import com.fasterxml.jackson.databind.JsonDeserializer; +import com.fasterxml.jackson.databind.deser.ContextualDeserializer; +import combined.mariadb.customtypes.Defaulted; +import combined.mariadb.customtypes.Defaulted.Provided; +import combined.mariadb.customtypes.Defaulted.UseDefault; +import java.io.IOException; + +/** Jackson deserializer for Defaulted types */ +public class DefaultedDeserializer extends JsonDeserializer> + implements ContextualDeserializer { + JavaType valueType; + + Class defaultedClass; + + public DefaultedDeserializer(JavaType valueType, Class defaultedClass) { + this.valueType = valueType; + this.defaultedClass = defaultedClass; + } + + @Override + public JsonDeserializer createContextual(DeserializationContext ctxt, BeanProperty property) { + JavaType contextType = ctxt.getContextualType(); + JavaType type = (contextType == null && property != null ? property.getType() : contextType); + if (type != null && type.containedTypeCount() > 0) { + return new DefaultedDeserializer(type.containedType(0), type.getRawClass()); + } + ; + throw new RuntimeException("unexpected"); + } + + @Override + public Defaulted deserialize(JsonParser p, DeserializationContext ctxt) throws IOException { + if (p.currentToken() == JsonToken.VALUE_STRING) { + String text = p.getText(); + if ("defaulted".equals(text)) { + return new UseDefault(); + } + throw new IOException("Expected 'defaulted' but got: " + text); + } + if (p.currentToken() == JsonToken.START_OBJECT) { + p.nextToken(); + if (p.currentToken() == JsonToken.FIELD_NAME && "provided".equals(p.currentName())) { + p.nextToken(); + Object value = ctxt.readValue(p, valueType); + p.nextToken(); + return new Provided(value); + } + } + ; + throw new IOException("Expected 'provided' field but got: " + p.currentName()); + } +} diff --git a/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/DefaultedSerializer.java b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/DefaultedSerializer.java new file mode 100644 index 0000000000..9f1bec04eb --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/DefaultedSerializer.java @@ -0,0 +1,34 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.mariadb; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.JsonSerializer; +import com.fasterxml.jackson.databind.SerializerProvider; +import combined.mariadb.customtypes.Defaulted; +import combined.mariadb.customtypes.Defaulted.Provided; +import combined.mariadb.customtypes.Defaulted.UseDefault; +import java.io.IOException; + +/** Jackson serializer for Defaulted types */ +public class DefaultedSerializer extends JsonSerializer> { + @Override + public void serialize(Defaulted value, JsonGenerator gen, SerializerProvider serializers) + throws IOException { + switch (value) { + case null -> gen.writeNull(); + case UseDefault u -> gen.writeString("defaulted"); + case Provided p -> { + gen.writeStartObject(); + gen.writeFieldName("provided"); + serializers.defaultSerializeValue(p.value(), gen); + gen.writeEndObject(); + } + default -> throw new IOException("Unknown Defaulted subtype: " + value.getClass().getName()); + } + ; + } +} diff --git a/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/brands/BrandsFields.java b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/brands/BrandsFields.java new file mode 100644 index 0000000000..9a14939fd1 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/brands/BrandsFields.java @@ -0,0 +1,172 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.mariadb.brands; + +import combined.shared.IsActive; +import dev.typr.foundations.MariaTypes; +import dev.typr.foundations.RowParser; +import dev.typr.foundations.dsl.FieldsBase; +import dev.typr.foundations.dsl.Path; +import dev.typr.foundations.dsl.RelationStructure; +import dev.typr.foundations.dsl.SqlExpr; +import dev.typr.foundations.dsl.SqlExpr.Field; +import dev.typr.foundations.dsl.SqlExpr.FieldLike; +import dev.typr.foundations.dsl.SqlExpr.IdField; +import dev.typr.foundations.dsl.SqlExpr.OptField; +import dev.typr.foundations.dsl.TupleExpr.TupleExpr7; +import java.util.List; +import java.util.Optional; + +public class BrandsFields + extends TupleExpr7 + implements RelationStructure, FieldsBase { + List _path; + + public BrandsFields(List _path) { + this._path = _path; + } + + public static BrandsFields structure = new BrandsFields(java.util.Collections.emptyList()); + + public IdField brandId() { + return new IdField( + _path, + "brand_id", + BrandsRow::brandId, + Optional.empty(), + Optional.empty(), + (row, value) -> row.withBrandId(value), + BrandsId.mariaType); + } + + public Field name() { + return new Field( + _path, + "name", + BrandsRow::name, + Optional.empty(), + Optional.empty(), + (row, value) -> row.withName(value), + MariaTypes.varchar); + } + + public Field slug() { + return new Field( + _path, + "slug", + BrandsRow::slug, + Optional.empty(), + Optional.empty(), + (row, value) -> row.withSlug(value), + MariaTypes.varchar); + } + + public OptField logoBlob() { + return new OptField( + _path, + "logo_blob", + BrandsRow::logoBlob, + Optional.empty(), + Optional.empty(), + (row, value) -> row.withLogoBlob(value), + MariaTypes.mediumblob); + } + + public OptField websiteUrl() { + return new OptField( + _path, + "website_url", + BrandsRow::websiteUrl, + Optional.empty(), + Optional.empty(), + (row, value) -> row.withWebsiteUrl(value), + MariaTypes.varchar); + } + + public OptField countryOfOrigin() { + return new OptField( + _path, + "country_of_origin", + BrandsRow::countryOfOrigin, + Optional.empty(), + Optional.empty(), + (row, value) -> row.withCountryOfOrigin(value), + MariaTypes.char_); + } + + public Field isActive() { + return new Field( + _path, + "is_active", + BrandsRow::isActive, + Optional.empty(), + Optional.empty(), + (row, value) -> row.withIsActive(value), + IsActive.mariaType); + } + + @Override + public List _path() { + return _path; + } + + @Override + public List> columns() { + return java.util.List.of( + this.brandId(), + this.name(), + this.slug(), + this.logoBlob(), + this.websiteUrl(), + this.countryOfOrigin(), + this.isActive()); + } + + @Override + public RowParser rowParser() { + return BrandsRow._rowParser; + } + + @Override + public RelationStructure withPaths(List _path) { + return new BrandsFields(_path); + } + + @Override + public SqlExpr _1() { + return brandId(); + } + + @Override + public SqlExpr _2() { + return name(); + } + + @Override + public SqlExpr _3() { + return slug(); + } + + @Override + public SqlExpr _4() { + return logoBlob(); + } + + @Override + public SqlExpr _5() { + return websiteUrl(); + } + + @Override + public SqlExpr _6() { + return countryOfOrigin(); + } + + @Override + public SqlExpr _7() { + return isActive(); + } +} diff --git a/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/brands/BrandsId.java b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/brands/BrandsId.java new file mode 100644 index 0000000000..daa706e011 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/brands/BrandsId.java @@ -0,0 +1,31 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.mariadb.brands; + +import com.fasterxml.jackson.annotation.JsonValue; +import dev.typr.foundations.MariaType; +import dev.typr.foundations.MariaTypes; +import dev.typr.foundations.data.Uint2; +import dev.typr.foundations.dsl.Bijection; + +/** Type for the primary key of table `brands` */ +public record BrandsId(@JsonValue Uint2 value) { + public BrandsId withValue(Uint2 value) { + return new BrandsId(value); + } + ; + + @Override + public java.lang.String toString() { + return value.toString(); + } + ; + + public static Bijection bijection = Bijection.of(BrandsId::value, BrandsId::new); + + public static MariaType mariaType = + MariaTypes.smallintUnsigned.bimap(BrandsId::new, BrandsId::value); +} diff --git a/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/brands/BrandsRepo.java b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/brands/BrandsRepo.java new file mode 100644 index 0000000000..1847aaa2e6 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/brands/BrandsRepo.java @@ -0,0 +1,47 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.mariadb.brands; + +import dev.typr.foundations.dsl.DeleteBuilder; +import dev.typr.foundations.dsl.SelectBuilder; +import dev.typr.foundations.dsl.UpdateBuilder; +import java.sql.Connection; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Optional; + +public interface BrandsRepo { + DeleteBuilder delete(); + + Boolean deleteById(BrandsId brandId, Connection c); + + Integer deleteByIds(BrandsId[] brandIds, Connection c); + + BrandsRow insert(BrandsRow unsaved, Connection c); + + BrandsRow insert(BrandsRowUnsaved unsaved, Connection c); + + SelectBuilder select(); + + List selectAll(Connection c); + + Optional selectById(BrandsId brandId, Connection c); + + List selectByIds(BrandsId[] brandIds, Connection c); + + Map selectByIdsTracked(BrandsId[] brandIds, Connection c); + + Optional selectByUniqueSlug(String slug, Connection c); + + UpdateBuilder update(); + + Boolean update(BrandsRow row, Connection c); + + BrandsRow upsert(BrandsRow unsaved, Connection c); + + List upsertBatch(Iterator unsaved, Connection c); +} diff --git a/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/brands/BrandsRepoImpl.java b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/brands/BrandsRepoImpl.java new file mode 100644 index 0000000000..21fcc17de1 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/brands/BrandsRepoImpl.java @@ -0,0 +1,299 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.mariadb.brands; + +import static dev.typr.foundations.Fragment.interpolate; + +import combined.shared.IsActive; +import dev.typr.foundations.Fragment; +import dev.typr.foundations.MariaTypes; +import dev.typr.foundations.dsl.DeleteBuilder; +import dev.typr.foundations.dsl.Dialect; +import dev.typr.foundations.dsl.SelectBuilder; +import dev.typr.foundations.dsl.UpdateBuilder; +import java.sql.Connection; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Optional; + +public class BrandsRepoImpl implements BrandsRepo { + @Override + public DeleteBuilder delete() { + return DeleteBuilder.of("`brands`", BrandsFields.structure, Dialect.MARIADB); + } + + @Override + public Boolean deleteById(BrandsId brandId, Connection c) { + return interpolate( + Fragment.lit("delete from `brands` where `brand_id` = "), + Fragment.encode(BrandsId.mariaType, brandId), + Fragment.lit("")) + .update() + .runUnchecked(c) + > 0; + } + + @Override + public Integer deleteByIds(BrandsId[] brandIds, Connection c) { + ArrayList fragments = new ArrayList<>(); + for (var id : brandIds) { + fragments.add(Fragment.encode(BrandsId.mariaType, id)); + } + ; + return Fragment.interpolate( + Fragment.lit("delete from `brands` where `brand_id` in ("), + Fragment.comma(fragments), + Fragment.lit(")")) + .update() + .runUnchecked(c); + } + + @Override + public BrandsRow insert(BrandsRow unsaved, Connection c) { + return interpolate( + Fragment.lit( + "insert into `brands`(`name`, `slug`, `logo_blob`, `website_url`," + + " `country_of_origin`, `is_active`)\n" + + "values ("), + Fragment.encode(MariaTypes.varchar, unsaved.name()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.varchar, unsaved.slug()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.mediumblob.opt(), unsaved.logoBlob()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.varchar.opt(), unsaved.websiteUrl()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.char_.opt(), unsaved.countryOfOrigin()), + Fragment.lit(", "), + Fragment.encode(IsActive.mariaType, unsaved.isActive()), + Fragment.lit( + ")\n" + + "RETURNING `brand_id`, `name`, `slug`, `logo_blob`, `website_url`," + + " `country_of_origin`, `is_active`\n")) + .updateReturning(BrandsRow._rowParser.exactlyOne()) + .runUnchecked(c); + } + + @Override + public BrandsRow insert(BrandsRowUnsaved unsaved, Connection c) { + ArrayList columns = new ArrayList<>(); + ; + ArrayList values = new ArrayList<>(); + ; + columns.add(Fragment.lit("`name`")); + values.add(interpolate(Fragment.encode(MariaTypes.varchar, unsaved.name()), Fragment.lit(""))); + columns.add(Fragment.lit("`slug`")); + values.add(interpolate(Fragment.encode(MariaTypes.varchar, unsaved.slug()), Fragment.lit(""))); + unsaved + .logoBlob() + .visit( + () -> {}, + value -> { + columns.add(Fragment.lit("`logo_blob`")); + values.add( + interpolate( + Fragment.encode(MariaTypes.mediumblob.opt(), value), Fragment.lit(""))); + }); + ; + unsaved + .websiteUrl() + .visit( + () -> {}, + value -> { + columns.add(Fragment.lit("`website_url`")); + values.add( + interpolate(Fragment.encode(MariaTypes.varchar.opt(), value), Fragment.lit(""))); + }); + ; + unsaved + .countryOfOrigin() + .visit( + () -> {}, + value -> { + columns.add(Fragment.lit("`country_of_origin`")); + values.add( + interpolate(Fragment.encode(MariaTypes.char_.opt(), value), Fragment.lit(""))); + }); + ; + unsaved + .isActive() + .visit( + () -> {}, + value -> { + columns.add(Fragment.lit("`is_active`")); + values.add(interpolate(Fragment.encode(IsActive.mariaType, value), Fragment.lit(""))); + }); + ; + Fragment q = + interpolate( + Fragment.lit("insert into `brands`("), + Fragment.comma(columns), + Fragment.lit(")\nvalues ("), + Fragment.comma(values), + Fragment.lit( + ")\n" + + "RETURNING `brand_id`, `name`, `slug`, `logo_blob`, `website_url`," + + " `country_of_origin`, `is_active`\n")); + ; + return q.updateReturning(BrandsRow._rowParser.exactlyOne()).runUnchecked(c); + } + + @Override + public SelectBuilder select() { + return SelectBuilder.of( + "`brands`", BrandsFields.structure, BrandsRow._rowParser, Dialect.MARIADB); + } + + @Override + public List selectAll(Connection c) { + return interpolate( + Fragment.lit( + "select `brand_id`, `name`, `slug`, `logo_blob`, `website_url`," + + " `country_of_origin`, `is_active`\n" + + "from `brands`\n")) + .query(BrandsRow._rowParser.all()) + .runUnchecked(c); + } + + @Override + public Optional selectById(BrandsId brandId, Connection c) { + return interpolate( + Fragment.lit( + "select `brand_id`, `name`, `slug`, `logo_blob`, `website_url`," + + " `country_of_origin`, `is_active`\n" + + "from `brands`\n" + + "where `brand_id` = "), + Fragment.encode(BrandsId.mariaType, brandId), + Fragment.lit("")) + .query(BrandsRow._rowParser.first()) + .runUnchecked(c); + } + + @Override + public List selectByIds(BrandsId[] brandIds, Connection c) { + ArrayList fragments = new ArrayList<>(); + for (var id : brandIds) { + fragments.add(Fragment.encode(BrandsId.mariaType, id)); + } + ; + return Fragment.interpolate( + Fragment.lit( + "select `brand_id`, `name`, `slug`, `logo_blob`, `website_url`," + + " `country_of_origin`, `is_active` from `brands` where `brand_id` in ("), + Fragment.comma(fragments), + Fragment.lit(")")) + .query(BrandsRow._rowParser.all()) + .runUnchecked(c); + } + + @Override + public Map selectByIdsTracked(BrandsId[] brandIds, Connection c) { + HashMap ret = new HashMap(); + selectByIds(brandIds, c).forEach(row -> ret.put(row.brandId(), row)); + return ret; + } + + @Override + public Optional selectByUniqueSlug(String slug, Connection c) { + return interpolate( + Fragment.lit( + "select `brand_id`, `name`, `slug`, `logo_blob`, `website_url`," + + " `country_of_origin`, `is_active`\n" + + "from `brands`\n" + + "where `slug` = "), + Fragment.encode(MariaTypes.varchar, slug), + Fragment.lit("\n")) + .query(BrandsRow._rowParser.first()) + .runUnchecked(c); + } + + @Override + public UpdateBuilder update() { + return UpdateBuilder.of( + "`brands`", BrandsFields.structure, BrandsRow._rowParser, Dialect.MARIADB); + } + + @Override + public Boolean update(BrandsRow row, Connection c) { + BrandsId brandId = row.brandId(); + ; + return interpolate( + Fragment.lit("update `brands`\nset `name` = "), + Fragment.encode(MariaTypes.varchar, row.name()), + Fragment.lit(",\n`slug` = "), + Fragment.encode(MariaTypes.varchar, row.slug()), + Fragment.lit(",\n`logo_blob` = "), + Fragment.encode(MariaTypes.mediumblob.opt(), row.logoBlob()), + Fragment.lit(",\n`website_url` = "), + Fragment.encode(MariaTypes.varchar.opt(), row.websiteUrl()), + Fragment.lit(",\n`country_of_origin` = "), + Fragment.encode(MariaTypes.char_.opt(), row.countryOfOrigin()), + Fragment.lit(",\n`is_active` = "), + Fragment.encode(IsActive.mariaType, row.isActive()), + Fragment.lit("\nwhere `brand_id` = "), + Fragment.encode(BrandsId.mariaType, brandId), + Fragment.lit("")) + .update() + .runUnchecked(c) + > 0; + } + + @Override + public BrandsRow upsert(BrandsRow unsaved, Connection c) { + return interpolate( + Fragment.lit( + "INSERT INTO `brands`(`brand_id`, `name`, `slug`, `logo_blob`, `website_url`," + + " `country_of_origin`, `is_active`)\n" + + "VALUES ("), + Fragment.encode(BrandsId.mariaType, unsaved.brandId()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.varchar, unsaved.name()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.varchar, unsaved.slug()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.mediumblob.opt(), unsaved.logoBlob()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.varchar.opt(), unsaved.websiteUrl()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.char_.opt(), unsaved.countryOfOrigin()), + Fragment.lit(", "), + Fragment.encode(IsActive.mariaType, unsaved.isActive()), + Fragment.lit( + ")\n" + + "ON DUPLICATE KEY UPDATE `name` = VALUES(`name`),\n" + + "`slug` = VALUES(`slug`),\n" + + "`logo_blob` = VALUES(`logo_blob`),\n" + + "`website_url` = VALUES(`website_url`),\n" + + "`country_of_origin` = VALUES(`country_of_origin`),\n" + + "`is_active` = VALUES(`is_active`)\n" + + "RETURNING `brand_id`, `name`, `slug`, `logo_blob`, `website_url`," + + " `country_of_origin`, `is_active`")) + .updateReturning(BrandsRow._rowParser.exactlyOne()) + .runUnchecked(c); + } + + @Override + public List upsertBatch(Iterator unsaved, Connection c) { + return interpolate( + Fragment.lit( + "INSERT INTO `brands`(`brand_id`, `name`, `slug`, `logo_blob`, `website_url`," + + " `country_of_origin`, `is_active`)\n" + + "VALUES (?, ?, ?, ?, ?, ?, ?)\n" + + "ON DUPLICATE KEY UPDATE `name` = VALUES(`name`),\n" + + "`slug` = VALUES(`slug`),\n" + + "`logo_blob` = VALUES(`logo_blob`),\n" + + "`website_url` = VALUES(`website_url`),\n" + + "`country_of_origin` = VALUES(`country_of_origin`),\n" + + "`is_active` = VALUES(`is_active`)\n" + + "RETURNING `brand_id`, `name`, `slug`, `logo_blob`, `website_url`," + + " `country_of_origin`, `is_active`")) + .updateReturningEach(BrandsRow._rowParser, unsaved) + .runUnchecked(c); + } +} diff --git a/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/brands/BrandsRepoMock.java b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/brands/BrandsRepoMock.java new file mode 100644 index 0000000000..2e55cc733a --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/brands/BrandsRepoMock.java @@ -0,0 +1,186 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.mariadb.brands; + +import dev.typr.foundations.dsl.DeleteBuilder; +import dev.typr.foundations.dsl.DeleteBuilderMock; +import dev.typr.foundations.dsl.DeleteParams; +import dev.typr.foundations.dsl.SelectBuilder; +import dev.typr.foundations.dsl.SelectBuilderMock; +import dev.typr.foundations.dsl.SelectParams; +import dev.typr.foundations.dsl.UpdateBuilder; +import dev.typr.foundations.dsl.UpdateBuilderMock; +import dev.typr.foundations.dsl.UpdateParams; +import java.sql.Connection; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.function.Function; +import java.util.stream.Collectors; + +public record BrandsRepoMock( + java.util.function.Function toRow, + HashMap map) + implements BrandsRepo { + public BrandsRepoMock(java.util.function.Function toRow) { + this(toRow, new HashMap()); + } + ; + + public BrandsRepoMock withToRow(java.util.function.Function toRow) { + return new BrandsRepoMock(toRow, map); + } + ; + + public BrandsRepoMock withMap(HashMap map) { + return new BrandsRepoMock(toRow, map); + } + ; + + @Override + public DeleteBuilder delete() { + return new DeleteBuilderMock<>( + BrandsFields.structure, + () -> new ArrayList<>(map.values()), + DeleteParams.empty(), + row -> row.brandId(), + id -> map.remove(id)); + } + ; + + @Override + public Boolean deleteById(BrandsId brandId, Connection c) { + return Optional.ofNullable(map.remove(brandId)).isPresent(); + } + ; + + @Override + public Integer deleteByIds(BrandsId[] brandIds, Connection c) { + var count = 0; + for (var id : brandIds) { + if (Optional.ofNullable(map.remove(id)).isPresent()) { + count = count + 1; + ; + } + ; + } + ; + return count; + } + ; + + @Override + public BrandsRow insert(BrandsRow unsaved, Connection c) { + if (map.containsKey(unsaved.brandId())) { + throw new RuntimeException("id " + unsaved.brandId() + " already exists"); + } + ; + map.put(unsaved.brandId(), unsaved); + return unsaved; + } + ; + + @Override + public BrandsRow insert(BrandsRowUnsaved unsaved, Connection c) { + return insert(toRow.apply(unsaved), c); + } + ; + + @Override + public SelectBuilder select() { + return new SelectBuilderMock<>( + BrandsFields.structure, () -> new ArrayList<>(map.values()), SelectParams.empty()); + } + ; + + @Override + public List selectAll(Connection c) { + return new ArrayList<>(map.values()); + } + ; + + @Override + public Optional selectById(BrandsId brandId, Connection c) { + return Optional.ofNullable(map.get(brandId)); + } + ; + + @Override + public List selectByIds(BrandsId[] brandIds, Connection c) { + var result = new ArrayList(); + for (var id : brandIds) { + var opt = Optional.ofNullable(map.get(id)); + if (opt.isPresent()) { + result.add(opt.get()); + } + ; + } + ; + return result; + } + ; + + @Override + public Map selectByIdsTracked(BrandsId[] brandIds, Connection c) { + return selectByIds(brandIds, c).stream() + .collect(Collectors.toMap((BrandsRow row) -> row.brandId(), Function.identity())); + } + ; + + @Override + public Optional selectByUniqueSlug(String slug, Connection c) { + return new ArrayList<>(map.values()).stream().filter(v -> slug.equals(v.slug())).findFirst(); + } + ; + + @Override + public UpdateBuilder update() { + return new UpdateBuilderMock<>( + BrandsFields.structure, + () -> new ArrayList<>(map.values()), + UpdateParams.empty(), + row -> row); + } + ; + + @Override + public Boolean update(BrandsRow row, Connection c) { + var shouldUpdate = + Optional.ofNullable(map.get(row.brandId())) + .filter(oldRow -> !oldRow.equals(row)) + .isPresent(); + if (shouldUpdate) { + map.put(row.brandId(), row); + ; + } + ; + return shouldUpdate; + } + ; + + @Override + public BrandsRow upsert(BrandsRow unsaved, Connection c) { + map.put(unsaved.brandId(), unsaved); + return unsaved; + } + ; + + @Override + public List upsertBatch(Iterator unsaved, Connection c) { + var result = new ArrayList(); + while (unsaved.hasNext()) { + var row = unsaved.next(); + map.put(row.brandId(), row); + result.add(row); + } + ; + return result; + } + ; +} diff --git a/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/brands/BrandsRow.java b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/brands/BrandsRow.java new file mode 100644 index 0000000000..b670719603 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/brands/BrandsRow.java @@ -0,0 +1,160 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.mariadb.brands; + +import com.fasterxml.jackson.annotation.JsonProperty; +import combined.mariadb.customtypes.Defaulted; +import combined.shared.IsActive; +import dev.typr.foundations.MariaTypes; +import dev.typr.foundations.RowParser; +import dev.typr.foundations.RowParsers; +import dev.typr.foundations.Tuple.Tuple7; +import java.util.Optional; + +/** Table: brands Primary key: brand_id */ +public record BrandsRow( + /** AUTO_INCREMENT */ + @JsonProperty("brand_id") BrandsId brandId, + /** */ + String name, + /** */ + String slug, + /** Default: NULL */ + @JsonProperty("logo_blob") Optional logoBlob, + /** Default: NULL */ + @JsonProperty("website_url") Optional websiteUrl, + /** Default: NULL */ + @JsonProperty("country_of_origin") Optional countryOfOrigin, + /** Default: 1 */ + @JsonProperty("is_active") /* user-picked */ IsActive isActive) + implements Tuple7< + BrandsId, + String, + String, + Optional, + Optional, + Optional, /* user-picked */ + IsActive> { + /** AUTO_INCREMENT */ + public BrandsRow withBrandId(BrandsId brandId) { + return new BrandsRow(brandId, name, slug, logoBlob, websiteUrl, countryOfOrigin, isActive); + } + ; + + /** */ + public BrandsRow withName(String name) { + return new BrandsRow(brandId, name, slug, logoBlob, websiteUrl, countryOfOrigin, isActive); + } + ; + + /** */ + public BrandsRow withSlug(String slug) { + return new BrandsRow(brandId, name, slug, logoBlob, websiteUrl, countryOfOrigin, isActive); + } + ; + + /** Default: NULL */ + public BrandsRow withLogoBlob(Optional logoBlob) { + return new BrandsRow(brandId, name, slug, logoBlob, websiteUrl, countryOfOrigin, isActive); + } + ; + + /** Default: NULL */ + public BrandsRow withWebsiteUrl(Optional websiteUrl) { + return new BrandsRow(brandId, name, slug, logoBlob, websiteUrl, countryOfOrigin, isActive); + } + ; + + /** Default: NULL */ + public BrandsRow withCountryOfOrigin(Optional countryOfOrigin) { + return new BrandsRow(brandId, name, slug, logoBlob, websiteUrl, countryOfOrigin, isActive); + } + ; + + /** Default: 1 */ + public BrandsRow withIsActive(/* user-picked */ IsActive isActive) { + return new BrandsRow(brandId, name, slug, logoBlob, websiteUrl, countryOfOrigin, isActive); + } + ; + + public static RowParser _rowParser = + RowParsers.of( + BrandsId.mariaType, + MariaTypes.varchar, + MariaTypes.varchar, + MariaTypes.mediumblob.opt(), + MariaTypes.varchar.opt(), + MariaTypes.char_.opt(), + IsActive.mariaType, + BrandsRow::new, + row -> + new Object[] { + row.brandId(), + row.name(), + row.slug(), + row.logoBlob(), + row.websiteUrl(), + row.countryOfOrigin(), + row.isActive() + }); + ; + + @Override + public BrandsId _1() { + return brandId; + } + ; + + @Override + public String _2() { + return name; + } + ; + + @Override + public String _3() { + return slug; + } + ; + + @Override + public Optional _4() { + return logoBlob; + } + ; + + @Override + public Optional _5() { + return websiteUrl; + } + ; + + @Override + public Optional _6() { + return countryOfOrigin; + } + ; + + @Override + public /* user-picked */ IsActive _7() { + return isActive; + } + ; + + public BrandsId id() { + return brandId; + } + ; + + public BrandsRowUnsaved toUnsavedRow( + Defaulted> logoBlob, + Defaulted> websiteUrl, + Defaulted> countryOfOrigin, + Defaulted isActive) { + return new BrandsRowUnsaved(name, slug, logoBlob, websiteUrl, countryOfOrigin, isActive); + } + ; +} diff --git a/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/brands/BrandsRowUnsaved.java b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/brands/BrandsRowUnsaved.java new file mode 100644 index 0000000000..6ec679f70c --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/brands/BrandsRowUnsaved.java @@ -0,0 +1,90 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.mariadb.brands; + +import com.fasterxml.jackson.annotation.JsonProperty; +import combined.mariadb.customtypes.Defaulted; +import combined.mariadb.customtypes.Defaulted.UseDefault; +import combined.shared.IsActive; +import java.util.Optional; + +/** This class corresponds to a row in table `brands` which has not been persisted yet */ +public record BrandsRowUnsaved( + /** */ + String name, + /** */ + String slug, + /** Default: NULL */ + @JsonProperty("logo_blob") Defaulted> logoBlob, + /** Default: NULL */ + @JsonProperty("website_url") Defaulted> websiteUrl, + /** Default: NULL */ + @JsonProperty("country_of_origin") Defaulted> countryOfOrigin, + /** Default: 1 */ + @JsonProperty("is_active") Defaulted isActive) { + public BrandsRowUnsaved( + /** */ + String name, + /** */ + String slug) { + this( + name, slug, new UseDefault<>(), new UseDefault<>(), new UseDefault<>(), new UseDefault<>()); + } + ; + + /** */ + public BrandsRowUnsaved withName(String name) { + return new BrandsRowUnsaved(name, slug, logoBlob, websiteUrl, countryOfOrigin, isActive); + } + ; + + /** */ + public BrandsRowUnsaved withSlug(String slug) { + return new BrandsRowUnsaved(name, slug, logoBlob, websiteUrl, countryOfOrigin, isActive); + } + ; + + /** Default: NULL */ + public BrandsRowUnsaved withLogoBlob(Defaulted> logoBlob) { + return new BrandsRowUnsaved(name, slug, logoBlob, websiteUrl, countryOfOrigin, isActive); + } + ; + + /** Default: NULL */ + public BrandsRowUnsaved withWebsiteUrl(Defaulted> websiteUrl) { + return new BrandsRowUnsaved(name, slug, logoBlob, websiteUrl, countryOfOrigin, isActive); + } + ; + + /** Default: NULL */ + public BrandsRowUnsaved withCountryOfOrigin(Defaulted> countryOfOrigin) { + return new BrandsRowUnsaved(name, slug, logoBlob, websiteUrl, countryOfOrigin, isActive); + } + ; + + /** Default: 1 */ + public BrandsRowUnsaved withIsActive(Defaulted isActive) { + return new BrandsRowUnsaved(name, slug, logoBlob, websiteUrl, countryOfOrigin, isActive); + } + ; + + public BrandsRow toRow( + java.util.function.Supplier> logoBlobDefault, + java.util.function.Supplier> websiteUrlDefault, + java.util.function.Supplier> countryOfOriginDefault, + java.util.function.Supplier isActiveDefault, + java.util.function.Supplier brandIdDefault) { + return new BrandsRow( + brandIdDefault.get(), + name, + slug, + logoBlob.getOrElse(logoBlobDefault), + websiteUrl.getOrElse(websiteUrlDefault), + countryOfOrigin.getOrElse(countryOfOriginDefault), + isActive.getOrElse(isActiveDefault)); + } + ; +} diff --git a/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/categories/CategoriesFields.java b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/categories/CategoriesFields.java new file mode 100644 index 0000000000..c5398e65fe --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/categories/CategoriesFields.java @@ -0,0 +1,214 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.mariadb.categories; + +import dev.typr.foundations.MariaTypes; +import dev.typr.foundations.RowParser; +import dev.typr.foundations.data.Json; +import dev.typr.foundations.dsl.FieldsBase; +import dev.typr.foundations.dsl.ForeignKey; +import dev.typr.foundations.dsl.Path; +import dev.typr.foundations.dsl.RelationStructure; +import dev.typr.foundations.dsl.SqlExpr; +import dev.typr.foundations.dsl.SqlExpr.Field; +import dev.typr.foundations.dsl.SqlExpr.FieldLike; +import dev.typr.foundations.dsl.SqlExpr.IdField; +import dev.typr.foundations.dsl.SqlExpr.OptField; +import dev.typr.foundations.dsl.TupleExpr.TupleExpr9; +import java.util.List; +import java.util.Optional; + +public class CategoriesFields + extends TupleExpr9< + CategoriesId, CategoriesId, String, String, String, String, Short, Boolean, Json> + implements RelationStructure, FieldsBase { + List _path; + + public CategoriesFields(List _path) { + this._path = _path; + } + + public static CategoriesFields structure = + new CategoriesFields(java.util.Collections.emptyList()); + + public IdField categoryId() { + return new IdField( + _path, + "category_id", + CategoriesRow::categoryId, + Optional.empty(), + Optional.empty(), + (row, value) -> row.withCategoryId(value), + CategoriesId.mariaType); + } + + public OptField parentId() { + return new OptField( + _path, + "parent_id", + CategoriesRow::parentId, + Optional.empty(), + Optional.empty(), + (row, value) -> row.withParentId(value), + CategoriesId.mariaType); + } + + public Field name() { + return new Field( + _path, + "name", + CategoriesRow::name, + Optional.empty(), + Optional.empty(), + (row, value) -> row.withName(value), + MariaTypes.varchar); + } + + public Field slug() { + return new Field( + _path, + "slug", + CategoriesRow::slug, + Optional.empty(), + Optional.empty(), + (row, value) -> row.withSlug(value), + MariaTypes.varchar); + } + + public OptField description() { + return new OptField( + _path, + "description", + CategoriesRow::description, + Optional.empty(), + Optional.empty(), + (row, value) -> row.withDescription(value), + MariaTypes.mediumtext); + } + + public OptField imageUrl() { + return new OptField( + _path, + "image_url", + CategoriesRow::imageUrl, + Optional.empty(), + Optional.empty(), + (row, value) -> row.withImageUrl(value), + MariaTypes.varchar); + } + + public Field sortOrder() { + return new Field( + _path, + "sort_order", + CategoriesRow::sortOrder, + Optional.empty(), + Optional.empty(), + (row, value) -> row.withSortOrder(value), + MariaTypes.smallint); + } + + public Field isVisible() { + return new Field( + _path, + "is_visible", + CategoriesRow::isVisible, + Optional.empty(), + Optional.empty(), + (row, value) -> row.withIsVisible(value), + MariaTypes.bool); + } + + public OptField metadata() { + return new OptField( + _path, + "metadata", + CategoriesRow::metadata, + Optional.empty(), + Optional.empty(), + (row, value) -> row.withMetadata(value), + MariaTypes.json); + } + + @Override + public List _path() { + return _path; + } + + public ForeignKey fkCategories() { + return ForeignKey.of("fk_category_parent") + .withColumnPair(parentId(), CategoriesFields::categoryId); + } + + @Override + public List> columns() { + return java.util.List.of( + this.categoryId(), + this.parentId(), + this.name(), + this.slug(), + this.description(), + this.imageUrl(), + this.sortOrder(), + this.isVisible(), + this.metadata()); + } + + @Override + public RowParser rowParser() { + return CategoriesRow._rowParser; + } + + @Override + public RelationStructure withPaths(List _path) { + return new CategoriesFields(_path); + } + + @Override + public SqlExpr _1() { + return categoryId(); + } + + @Override + public SqlExpr _2() { + return parentId(); + } + + @Override + public SqlExpr _3() { + return name(); + } + + @Override + public SqlExpr _4() { + return slug(); + } + + @Override + public SqlExpr _5() { + return description(); + } + + @Override + public SqlExpr _6() { + return imageUrl(); + } + + @Override + public SqlExpr _7() { + return sortOrder(); + } + + @Override + public SqlExpr _8() { + return isVisible(); + } + + @Override + public SqlExpr _9() { + return metadata(); + } +} diff --git a/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/categories/CategoriesId.java b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/categories/CategoriesId.java new file mode 100644 index 0000000000..64628c62dc --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/categories/CategoriesId.java @@ -0,0 +1,32 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.mariadb.categories; + +import com.fasterxml.jackson.annotation.JsonValue; +import dev.typr.foundations.MariaType; +import dev.typr.foundations.MariaTypes; +import dev.typr.foundations.data.Uint4; +import dev.typr.foundations.dsl.Bijection; + +/** Type for the primary key of table `categories` */ +public record CategoriesId(@JsonValue Uint4 value) { + public CategoriesId withValue(Uint4 value) { + return new CategoriesId(value); + } + ; + + @Override + public java.lang.String toString() { + return value.toString(); + } + ; + + public static Bijection bijection = + Bijection.of(CategoriesId::value, CategoriesId::new); + + public static MariaType mariaType = + MariaTypes.mediumintUnsigned.bimap(CategoriesId::new, CategoriesId::value); +} diff --git a/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/categories/CategoriesRepo.java b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/categories/CategoriesRepo.java new file mode 100644 index 0000000000..741ba72764 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/categories/CategoriesRepo.java @@ -0,0 +1,47 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.mariadb.categories; + +import dev.typr.foundations.dsl.DeleteBuilder; +import dev.typr.foundations.dsl.SelectBuilder; +import dev.typr.foundations.dsl.UpdateBuilder; +import java.sql.Connection; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Optional; + +public interface CategoriesRepo { + DeleteBuilder delete(); + + Boolean deleteById(CategoriesId categoryId, Connection c); + + Integer deleteByIds(CategoriesId[] categoryIds, Connection c); + + CategoriesRow insert(CategoriesRow unsaved, Connection c); + + CategoriesRow insert(CategoriesRowUnsaved unsaved, Connection c); + + SelectBuilder select(); + + List selectAll(Connection c); + + Optional selectById(CategoriesId categoryId, Connection c); + + List selectByIds(CategoriesId[] categoryIds, Connection c); + + Map selectByIdsTracked(CategoriesId[] categoryIds, Connection c); + + Optional selectByUniqueSlug(String slug, Connection c); + + UpdateBuilder update(); + + Boolean update(CategoriesRow row, Connection c); + + CategoriesRow upsert(CategoriesRow unsaved, Connection c); + + List upsertBatch(Iterator unsaved, Connection c); +} diff --git a/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/categories/CategoriesRepoImpl.java b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/categories/CategoriesRepoImpl.java new file mode 100644 index 0000000000..3488de4dfe --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/categories/CategoriesRepoImpl.java @@ -0,0 +1,337 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.mariadb.categories; + +import static dev.typr.foundations.Fragment.interpolate; + +import dev.typr.foundations.Fragment; +import dev.typr.foundations.MariaTypes; +import dev.typr.foundations.dsl.DeleteBuilder; +import dev.typr.foundations.dsl.Dialect; +import dev.typr.foundations.dsl.SelectBuilder; +import dev.typr.foundations.dsl.UpdateBuilder; +import java.sql.Connection; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Optional; + +public class CategoriesRepoImpl implements CategoriesRepo { + @Override + public DeleteBuilder delete() { + return DeleteBuilder.of("`categories`", CategoriesFields.structure, Dialect.MARIADB); + } + + @Override + public Boolean deleteById(CategoriesId categoryId, Connection c) { + return interpolate( + Fragment.lit("delete from `categories` where `category_id` = "), + Fragment.encode(CategoriesId.mariaType, categoryId), + Fragment.lit("")) + .update() + .runUnchecked(c) + > 0; + } + + @Override + public Integer deleteByIds(CategoriesId[] categoryIds, Connection c) { + ArrayList fragments = new ArrayList<>(); + for (var id : categoryIds) { + fragments.add(Fragment.encode(CategoriesId.mariaType, id)); + } + ; + return Fragment.interpolate( + Fragment.lit("delete from `categories` where `category_id` in ("), + Fragment.comma(fragments), + Fragment.lit(")")) + .update() + .runUnchecked(c); + } + + @Override + public CategoriesRow insert(CategoriesRow unsaved, Connection c) { + return interpolate( + Fragment.lit( + "insert into `categories`(`parent_id`, `name`, `slug`, `description`, `image_url`," + + " `sort_order`, `is_visible`, `metadata`)\n" + + "values ("), + Fragment.encode(CategoriesId.mariaType.opt(), unsaved.parentId()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.varchar, unsaved.name()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.varchar, unsaved.slug()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.mediumtext.opt(), unsaved.description()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.varchar.opt(), unsaved.imageUrl()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.smallint, unsaved.sortOrder()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.bool, unsaved.isVisible()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.json.opt(), unsaved.metadata()), + Fragment.lit( + ")\n" + + "RETURNING `category_id`, `parent_id`, `name`, `slug`, `description`," + + " `image_url`, `sort_order`, `is_visible`, `metadata`\n")) + .updateReturning(CategoriesRow._rowParser.exactlyOne()) + .runUnchecked(c); + } + + @Override + public CategoriesRow insert(CategoriesRowUnsaved unsaved, Connection c) { + ArrayList columns = new ArrayList<>(); + ; + ArrayList values = new ArrayList<>(); + ; + columns.add(Fragment.lit("`name`")); + values.add(interpolate(Fragment.encode(MariaTypes.varchar, unsaved.name()), Fragment.lit(""))); + columns.add(Fragment.lit("`slug`")); + values.add(interpolate(Fragment.encode(MariaTypes.varchar, unsaved.slug()), Fragment.lit(""))); + unsaved + .parentId() + .visit( + () -> {}, + value -> { + columns.add(Fragment.lit("`parent_id`")); + values.add( + interpolate( + Fragment.encode(CategoriesId.mariaType.opt(), value), Fragment.lit(""))); + }); + ; + unsaved + .description() + .visit( + () -> {}, + value -> { + columns.add(Fragment.lit("`description`")); + values.add( + interpolate( + Fragment.encode(MariaTypes.mediumtext.opt(), value), Fragment.lit(""))); + }); + ; + unsaved + .imageUrl() + .visit( + () -> {}, + value -> { + columns.add(Fragment.lit("`image_url`")); + values.add( + interpolate(Fragment.encode(MariaTypes.varchar.opt(), value), Fragment.lit(""))); + }); + ; + unsaved + .sortOrder() + .visit( + () -> {}, + value -> { + columns.add(Fragment.lit("`sort_order`")); + values.add( + interpolate(Fragment.encode(MariaTypes.smallint, value), Fragment.lit(""))); + }); + ; + unsaved + .isVisible() + .visit( + () -> {}, + value -> { + columns.add(Fragment.lit("`is_visible`")); + values.add(interpolate(Fragment.encode(MariaTypes.bool, value), Fragment.lit(""))); + }); + ; + unsaved + .metadata() + .visit( + () -> {}, + value -> { + columns.add(Fragment.lit("`metadata`")); + values.add( + interpolate(Fragment.encode(MariaTypes.json.opt(), value), Fragment.lit(""))); + }); + ; + Fragment q = + interpolate( + Fragment.lit("insert into `categories`("), + Fragment.comma(columns), + Fragment.lit(")\nvalues ("), + Fragment.comma(values), + Fragment.lit( + ")\n" + + "RETURNING `category_id`, `parent_id`, `name`, `slug`, `description`," + + " `image_url`, `sort_order`, `is_visible`, `metadata`\n")); + ; + return q.updateReturning(CategoriesRow._rowParser.exactlyOne()).runUnchecked(c); + } + + @Override + public SelectBuilder select() { + return SelectBuilder.of( + "`categories`", CategoriesFields.structure, CategoriesRow._rowParser, Dialect.MARIADB); + } + + @Override + public List selectAll(Connection c) { + return interpolate( + Fragment.lit( + "select `category_id`, `parent_id`, `name`, `slug`, `description`, `image_url`," + + " `sort_order`, `is_visible`, `metadata`\n" + + "from `categories`\n")) + .query(CategoriesRow._rowParser.all()) + .runUnchecked(c); + } + + @Override + public Optional selectById(CategoriesId categoryId, Connection c) { + return interpolate( + Fragment.lit( + "select `category_id`, `parent_id`, `name`, `slug`, `description`, `image_url`," + + " `sort_order`, `is_visible`, `metadata`\n" + + "from `categories`\n" + + "where `category_id` = "), + Fragment.encode(CategoriesId.mariaType, categoryId), + Fragment.lit("")) + .query(CategoriesRow._rowParser.first()) + .runUnchecked(c); + } + + @Override + public List selectByIds(CategoriesId[] categoryIds, Connection c) { + ArrayList fragments = new ArrayList<>(); + for (var id : categoryIds) { + fragments.add(Fragment.encode(CategoriesId.mariaType, id)); + } + ; + return Fragment.interpolate( + Fragment.lit( + "select `category_id`, `parent_id`, `name`, `slug`, `description`, `image_url`," + + " `sort_order`, `is_visible`, `metadata` from `categories` where" + + " `category_id` in ("), + Fragment.comma(fragments), + Fragment.lit(")")) + .query(CategoriesRow._rowParser.all()) + .runUnchecked(c); + } + + @Override + public Map selectByIdsTracked( + CategoriesId[] categoryIds, Connection c) { + HashMap ret = new HashMap(); + selectByIds(categoryIds, c).forEach(row -> ret.put(row.categoryId(), row)); + return ret; + } + + @Override + public Optional selectByUniqueSlug(String slug, Connection c) { + return interpolate( + Fragment.lit( + "select `category_id`, `parent_id`, `name`, `slug`, `description`, `image_url`," + + " `sort_order`, `is_visible`, `metadata`\n" + + "from `categories`\n" + + "where `slug` = "), + Fragment.encode(MariaTypes.varchar, slug), + Fragment.lit("\n")) + .query(CategoriesRow._rowParser.first()) + .runUnchecked(c); + } + + @Override + public UpdateBuilder update() { + return UpdateBuilder.of( + "`categories`", CategoriesFields.structure, CategoriesRow._rowParser, Dialect.MARIADB); + } + + @Override + public Boolean update(CategoriesRow row, Connection c) { + CategoriesId categoryId = row.categoryId(); + ; + return interpolate( + Fragment.lit("update `categories`\nset `parent_id` = "), + Fragment.encode(CategoriesId.mariaType.opt(), row.parentId()), + Fragment.lit(",\n`name` = "), + Fragment.encode(MariaTypes.varchar, row.name()), + Fragment.lit(",\n`slug` = "), + Fragment.encode(MariaTypes.varchar, row.slug()), + Fragment.lit(",\n`description` = "), + Fragment.encode(MariaTypes.mediumtext.opt(), row.description()), + Fragment.lit(",\n`image_url` = "), + Fragment.encode(MariaTypes.varchar.opt(), row.imageUrl()), + Fragment.lit(",\n`sort_order` = "), + Fragment.encode(MariaTypes.smallint, row.sortOrder()), + Fragment.lit(",\n`is_visible` = "), + Fragment.encode(MariaTypes.bool, row.isVisible()), + Fragment.lit(",\n`metadata` = "), + Fragment.encode(MariaTypes.json.opt(), row.metadata()), + Fragment.lit("\nwhere `category_id` = "), + Fragment.encode(CategoriesId.mariaType, categoryId), + Fragment.lit("")) + .update() + .runUnchecked(c) + > 0; + } + + @Override + public CategoriesRow upsert(CategoriesRow unsaved, Connection c) { + return interpolate( + Fragment.lit( + "INSERT INTO `categories`(`category_id`, `parent_id`, `name`, `slug`," + + " `description`, `image_url`, `sort_order`, `is_visible`, `metadata`)\n" + + "VALUES ("), + Fragment.encode(CategoriesId.mariaType, unsaved.categoryId()), + Fragment.lit(", "), + Fragment.encode(CategoriesId.mariaType.opt(), unsaved.parentId()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.varchar, unsaved.name()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.varchar, unsaved.slug()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.mediumtext.opt(), unsaved.description()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.varchar.opt(), unsaved.imageUrl()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.smallint, unsaved.sortOrder()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.bool, unsaved.isVisible()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.json.opt(), unsaved.metadata()), + Fragment.lit( + ")\n" + + "ON DUPLICATE KEY UPDATE `parent_id` = VALUES(`parent_id`),\n" + + "`name` = VALUES(`name`),\n" + + "`slug` = VALUES(`slug`),\n" + + "`description` = VALUES(`description`),\n" + + "`image_url` = VALUES(`image_url`),\n" + + "`sort_order` = VALUES(`sort_order`),\n" + + "`is_visible` = VALUES(`is_visible`),\n" + + "`metadata` = VALUES(`metadata`)\n" + + "RETURNING `category_id`, `parent_id`, `name`, `slug`, `description`," + + " `image_url`, `sort_order`, `is_visible`, `metadata`")) + .updateReturning(CategoriesRow._rowParser.exactlyOne()) + .runUnchecked(c); + } + + @Override + public List upsertBatch(Iterator unsaved, Connection c) { + return interpolate( + Fragment.lit( + "INSERT INTO `categories`(`category_id`, `parent_id`, `name`, `slug`," + + " `description`, `image_url`, `sort_order`, `is_visible`, `metadata`)\n" + + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)\n" + + "ON DUPLICATE KEY UPDATE `parent_id` = VALUES(`parent_id`),\n" + + "`name` = VALUES(`name`),\n" + + "`slug` = VALUES(`slug`),\n" + + "`description` = VALUES(`description`),\n" + + "`image_url` = VALUES(`image_url`),\n" + + "`sort_order` = VALUES(`sort_order`),\n" + + "`is_visible` = VALUES(`is_visible`),\n" + + "`metadata` = VALUES(`metadata`)\n" + + "RETURNING `category_id`, `parent_id`, `name`, `slug`, `description`," + + " `image_url`, `sort_order`, `is_visible`, `metadata`")) + .updateReturningEach(CategoriesRow._rowParser, unsaved) + .runUnchecked(c); + } +} diff --git a/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/categories/CategoriesRepoMock.java b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/categories/CategoriesRepoMock.java new file mode 100644 index 0000000000..d79830a599 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/categories/CategoriesRepoMock.java @@ -0,0 +1,189 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.mariadb.categories; + +import dev.typr.foundations.dsl.DeleteBuilder; +import dev.typr.foundations.dsl.DeleteBuilderMock; +import dev.typr.foundations.dsl.DeleteParams; +import dev.typr.foundations.dsl.SelectBuilder; +import dev.typr.foundations.dsl.SelectBuilderMock; +import dev.typr.foundations.dsl.SelectParams; +import dev.typr.foundations.dsl.UpdateBuilder; +import dev.typr.foundations.dsl.UpdateBuilderMock; +import dev.typr.foundations.dsl.UpdateParams; +import java.sql.Connection; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.function.Function; +import java.util.stream.Collectors; + +public record CategoriesRepoMock( + java.util.function.Function toRow, + HashMap map) + implements CategoriesRepo { + public CategoriesRepoMock( + java.util.function.Function toRow) { + this(toRow, new HashMap()); + } + ; + + public CategoriesRepoMock withToRow( + java.util.function.Function toRow) { + return new CategoriesRepoMock(toRow, map); + } + ; + + public CategoriesRepoMock withMap(HashMap map) { + return new CategoriesRepoMock(toRow, map); + } + ; + + @Override + public DeleteBuilder delete() { + return new DeleteBuilderMock<>( + CategoriesFields.structure, + () -> new ArrayList<>(map.values()), + DeleteParams.empty(), + row -> row.categoryId(), + id -> map.remove(id)); + } + ; + + @Override + public Boolean deleteById(CategoriesId categoryId, Connection c) { + return Optional.ofNullable(map.remove(categoryId)).isPresent(); + } + ; + + @Override + public Integer deleteByIds(CategoriesId[] categoryIds, Connection c) { + var count = 0; + for (var id : categoryIds) { + if (Optional.ofNullable(map.remove(id)).isPresent()) { + count = count + 1; + ; + } + ; + } + ; + return count; + } + ; + + @Override + public CategoriesRow insert(CategoriesRow unsaved, Connection c) { + if (map.containsKey(unsaved.categoryId())) { + throw new RuntimeException("id " + unsaved.categoryId() + " already exists"); + } + ; + map.put(unsaved.categoryId(), unsaved); + return unsaved; + } + ; + + @Override + public CategoriesRow insert(CategoriesRowUnsaved unsaved, Connection c) { + return insert(toRow.apply(unsaved), c); + } + ; + + @Override + public SelectBuilder select() { + return new SelectBuilderMock<>( + CategoriesFields.structure, () -> new ArrayList<>(map.values()), SelectParams.empty()); + } + ; + + @Override + public List selectAll(Connection c) { + return new ArrayList<>(map.values()); + } + ; + + @Override + public Optional selectById(CategoriesId categoryId, Connection c) { + return Optional.ofNullable(map.get(categoryId)); + } + ; + + @Override + public List selectByIds(CategoriesId[] categoryIds, Connection c) { + var result = new ArrayList(); + for (var id : categoryIds) { + var opt = Optional.ofNullable(map.get(id)); + if (opt.isPresent()) { + result.add(opt.get()); + } + ; + } + ; + return result; + } + ; + + @Override + public Map selectByIdsTracked( + CategoriesId[] categoryIds, Connection c) { + return selectByIds(categoryIds, c).stream() + .collect(Collectors.toMap((CategoriesRow row) -> row.categoryId(), Function.identity())); + } + ; + + @Override + public Optional selectByUniqueSlug(String slug, Connection c) { + return new ArrayList<>(map.values()).stream().filter(v -> slug.equals(v.slug())).findFirst(); + } + ; + + @Override + public UpdateBuilder update() { + return new UpdateBuilderMock<>( + CategoriesFields.structure, + () -> new ArrayList<>(map.values()), + UpdateParams.empty(), + row -> row); + } + ; + + @Override + public Boolean update(CategoriesRow row, Connection c) { + var shouldUpdate = + Optional.ofNullable(map.get(row.categoryId())) + .filter(oldRow -> !oldRow.equals(row)) + .isPresent(); + if (shouldUpdate) { + map.put(row.categoryId(), row); + ; + } + ; + return shouldUpdate; + } + ; + + @Override + public CategoriesRow upsert(CategoriesRow unsaved, Connection c) { + map.put(unsaved.categoryId(), unsaved); + return unsaved; + } + ; + + @Override + public List upsertBatch(Iterator unsaved, Connection c) { + var result = new ArrayList(); + while (unsaved.hasNext()) { + var row = unsaved.next(); + map.put(row.categoryId(), row); + result.add(row); + } + ; + return result; + } + ; +} diff --git a/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/categories/CategoriesRow.java b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/categories/CategoriesRow.java new file mode 100644 index 0000000000..59cb3e8c9b --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/categories/CategoriesRow.java @@ -0,0 +1,206 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.mariadb.categories; + +import com.fasterxml.jackson.annotation.JsonProperty; +import combined.mariadb.customtypes.Defaulted; +import dev.typr.foundations.MariaTypes; +import dev.typr.foundations.RowParser; +import dev.typr.foundations.RowParsers; +import dev.typr.foundations.Tuple.Tuple9; +import dev.typr.foundations.data.Json; +import java.util.Optional; + +/** Table: categories Primary key: category_id */ +public record CategoriesRow( + /** AUTO_INCREMENT */ + @JsonProperty("category_id") CategoriesId categoryId, + /** Default: NULL Points to {@link combined.mariadb.categories.CategoriesRow#categoryId()} */ + @JsonProperty("parent_id") Optional parentId, + /** */ + String name, + /** */ + String slug, + /** Default: NULL */ + Optional description, + /** Default: NULL */ + @JsonProperty("image_url") Optional imageUrl, + /** Default: 0 */ + @JsonProperty("sort_order") Short sortOrder, + /** Default: 1 */ + @JsonProperty("is_visible") Boolean isVisible, + /** Default: NULL */ + Optional metadata) + implements Tuple9< + CategoriesId, + Optional, + String, + String, + Optional, + Optional, + Short, + Boolean, + Optional> { + /** AUTO_INCREMENT */ + public CategoriesRow withCategoryId(CategoriesId categoryId) { + return new CategoriesRow( + categoryId, parentId, name, slug, description, imageUrl, sortOrder, isVisible, metadata); + } + ; + + /** Default: NULL Points to {@link combined.mariadb.categories.CategoriesRow#categoryId()} */ + public CategoriesRow withParentId(Optional parentId) { + return new CategoriesRow( + categoryId, parentId, name, slug, description, imageUrl, sortOrder, isVisible, metadata); + } + ; + + /** */ + public CategoriesRow withName(String name) { + return new CategoriesRow( + categoryId, parentId, name, slug, description, imageUrl, sortOrder, isVisible, metadata); + } + ; + + /** */ + public CategoriesRow withSlug(String slug) { + return new CategoriesRow( + categoryId, parentId, name, slug, description, imageUrl, sortOrder, isVisible, metadata); + } + ; + + /** Default: NULL */ + public CategoriesRow withDescription(Optional description) { + return new CategoriesRow( + categoryId, parentId, name, slug, description, imageUrl, sortOrder, isVisible, metadata); + } + ; + + /** Default: NULL */ + public CategoriesRow withImageUrl(Optional imageUrl) { + return new CategoriesRow( + categoryId, parentId, name, slug, description, imageUrl, sortOrder, isVisible, metadata); + } + ; + + /** Default: 0 */ + public CategoriesRow withSortOrder(Short sortOrder) { + return new CategoriesRow( + categoryId, parentId, name, slug, description, imageUrl, sortOrder, isVisible, metadata); + } + ; + + /** Default: 1 */ + public CategoriesRow withIsVisible(Boolean isVisible) { + return new CategoriesRow( + categoryId, parentId, name, slug, description, imageUrl, sortOrder, isVisible, metadata); + } + ; + + /** Default: NULL */ + public CategoriesRow withMetadata(Optional metadata) { + return new CategoriesRow( + categoryId, parentId, name, slug, description, imageUrl, sortOrder, isVisible, metadata); + } + ; + + public static RowParser _rowParser = + RowParsers.of( + CategoriesId.mariaType, + CategoriesId.mariaType.opt(), + MariaTypes.varchar, + MariaTypes.varchar, + MariaTypes.mediumtext.opt(), + MariaTypes.varchar.opt(), + MariaTypes.smallint, + MariaTypes.bool, + MariaTypes.json.opt(), + CategoriesRow::new, + row -> + new Object[] { + row.categoryId(), + row.parentId(), + row.name(), + row.slug(), + row.description(), + row.imageUrl(), + row.sortOrder(), + row.isVisible(), + row.metadata() + }); + ; + + @Override + public CategoriesId _1() { + return categoryId; + } + ; + + @Override + public Optional _2() { + return parentId; + } + ; + + @Override + public String _3() { + return name; + } + ; + + @Override + public String _4() { + return slug; + } + ; + + @Override + public Optional _5() { + return description; + } + ; + + @Override + public Optional _6() { + return imageUrl; + } + ; + + @Override + public Short _7() { + return sortOrder; + } + ; + + @Override + public Boolean _8() { + return isVisible; + } + ; + + @Override + public Optional _9() { + return metadata; + } + ; + + public CategoriesId id() { + return categoryId; + } + ; + + public CategoriesRowUnsaved toUnsavedRow( + Defaulted> parentId, + Defaulted> description, + Defaulted> imageUrl, + Defaulted sortOrder, + Defaulted isVisible, + Defaulted> metadata) { + return new CategoriesRowUnsaved( + name, slug, parentId, description, imageUrl, sortOrder, isVisible, metadata); + } + ; +} diff --git a/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/categories/CategoriesRowUnsaved.java b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/categories/CategoriesRowUnsaved.java new file mode 100644 index 0000000000..8a4fdbf869 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/categories/CategoriesRowUnsaved.java @@ -0,0 +1,125 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.mariadb.categories; + +import com.fasterxml.jackson.annotation.JsonProperty; +import combined.mariadb.customtypes.Defaulted; +import combined.mariadb.customtypes.Defaulted.UseDefault; +import dev.typr.foundations.data.Json; +import java.util.Optional; + +/** This class corresponds to a row in table `categories` which has not been persisted yet */ +public record CategoriesRowUnsaved( + /** */ + String name, + /** */ + String slug, + /** Default: NULL Points to {@link combined.mariadb.categories.CategoriesRow#categoryId()} */ + @JsonProperty("parent_id") Defaulted> parentId, + /** Default: NULL */ + Defaulted> description, + /** Default: NULL */ + @JsonProperty("image_url") Defaulted> imageUrl, + /** Default: 0 */ + @JsonProperty("sort_order") Defaulted sortOrder, + /** Default: 1 */ + @JsonProperty("is_visible") Defaulted isVisible, + /** Default: NULL */ + Defaulted> metadata) { + public CategoriesRowUnsaved( + /** */ + String name, + /** */ + String slug) { + this( + name, + slug, + new UseDefault<>(), + new UseDefault<>(), + new UseDefault<>(), + new UseDefault<>(), + new UseDefault<>(), + new UseDefault<>()); + } + ; + + /** */ + public CategoriesRowUnsaved withName(String name) { + return new CategoriesRowUnsaved( + name, slug, parentId, description, imageUrl, sortOrder, isVisible, metadata); + } + ; + + /** */ + public CategoriesRowUnsaved withSlug(String slug) { + return new CategoriesRowUnsaved( + name, slug, parentId, description, imageUrl, sortOrder, isVisible, metadata); + } + ; + + /** Default: NULL Points to {@link combined.mariadb.categories.CategoriesRow#categoryId()} */ + public CategoriesRowUnsaved withParentId(Defaulted> parentId) { + return new CategoriesRowUnsaved( + name, slug, parentId, description, imageUrl, sortOrder, isVisible, metadata); + } + ; + + /** Default: NULL */ + public CategoriesRowUnsaved withDescription(Defaulted> description) { + return new CategoriesRowUnsaved( + name, slug, parentId, description, imageUrl, sortOrder, isVisible, metadata); + } + ; + + /** Default: NULL */ + public CategoriesRowUnsaved withImageUrl(Defaulted> imageUrl) { + return new CategoriesRowUnsaved( + name, slug, parentId, description, imageUrl, sortOrder, isVisible, metadata); + } + ; + + /** Default: 0 */ + public CategoriesRowUnsaved withSortOrder(Defaulted sortOrder) { + return new CategoriesRowUnsaved( + name, slug, parentId, description, imageUrl, sortOrder, isVisible, metadata); + } + ; + + /** Default: 1 */ + public CategoriesRowUnsaved withIsVisible(Defaulted isVisible) { + return new CategoriesRowUnsaved( + name, slug, parentId, description, imageUrl, sortOrder, isVisible, metadata); + } + ; + + /** Default: NULL */ + public CategoriesRowUnsaved withMetadata(Defaulted> metadata) { + return new CategoriesRowUnsaved( + name, slug, parentId, description, imageUrl, sortOrder, isVisible, metadata); + } + ; + + public CategoriesRow toRow( + java.util.function.Supplier> parentIdDefault, + java.util.function.Supplier> descriptionDefault, + java.util.function.Supplier> imageUrlDefault, + java.util.function.Supplier sortOrderDefault, + java.util.function.Supplier isVisibleDefault, + java.util.function.Supplier> metadataDefault, + java.util.function.Supplier categoryIdDefault) { + return new CategoriesRow( + categoryIdDefault.get(), + parentId.getOrElse(parentIdDefault), + name, + slug, + description.getOrElse(descriptionDefault), + imageUrl.getOrElse(imageUrlDefault), + sortOrder.getOrElse(sortOrderDefault), + isVisible.getOrElse(isVisibleDefault), + metadata.getOrElse(metadataDefault)); + } + ; +} diff --git a/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/customer_status/CustomerStatusFields.java b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/customer_status/CustomerStatusFields.java new file mode 100644 index 0000000000..ab58360d56 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/customer_status/CustomerStatusFields.java @@ -0,0 +1,102 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.mariadb.customer_status; + +import combined.shared.IsActive; +import dev.typr.foundations.MariaTypes; +import dev.typr.foundations.RowParser; +import dev.typr.foundations.dsl.FieldsBase; +import dev.typr.foundations.dsl.Path; +import dev.typr.foundations.dsl.RelationStructure; +import dev.typr.foundations.dsl.SqlExpr; +import dev.typr.foundations.dsl.SqlExpr.Field; +import dev.typr.foundations.dsl.SqlExpr.FieldLike; +import dev.typr.foundations.dsl.SqlExpr.IdField; +import dev.typr.foundations.dsl.TupleExpr.TupleExpr3; +import java.util.List; +import java.util.Optional; + +public class CustomerStatusFields + extends TupleExpr3 + implements RelationStructure, + FieldsBase { + List _path; + + public CustomerStatusFields(List _path) { + this._path = _path; + } + + public static CustomerStatusFields structure = + new CustomerStatusFields(java.util.Collections.emptyList()); + + public IdField statusCode() { + return new IdField( + _path, + "status_code", + CustomerStatusRow::statusCode, + Optional.empty(), + Optional.empty(), + (row, value) -> row.withStatusCode(value), + CustomerStatusId.mariaType); + } + + public Field description() { + return new Field( + _path, + "description", + CustomerStatusRow::description, + Optional.empty(), + Optional.empty(), + (row, value) -> row.withDescription(value), + MariaTypes.varchar); + } + + public Field isActive() { + return new Field( + _path, + "is_active", + CustomerStatusRow::isActive, + Optional.empty(), + Optional.empty(), + (row, value) -> row.withIsActive(value), + IsActive.mariaType); + } + + @Override + public List _path() { + return _path; + } + + @Override + public List> columns() { + return java.util.List.of(this.statusCode(), this.description(), this.isActive()); + } + + @Override + public RowParser rowParser() { + return CustomerStatusRow._rowParser; + } + + @Override + public RelationStructure withPaths(List _path) { + return new CustomerStatusFields(_path); + } + + @Override + public SqlExpr _1() { + return statusCode(); + } + + @Override + public SqlExpr _2() { + return description(); + } + + @Override + public SqlExpr _3() { + return isActive(); + } +} diff --git a/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/customer_status/CustomerStatusId.java b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/customer_status/CustomerStatusId.java new file mode 100644 index 0000000000..baf581cadd --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/customer_status/CustomerStatusId.java @@ -0,0 +1,31 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.mariadb.customer_status; + +import com.fasterxml.jackson.annotation.JsonValue; +import dev.typr.foundations.MariaType; +import dev.typr.foundations.MariaTypes; +import dev.typr.foundations.dsl.Bijection; + +/** Type for the primary key of table `customer_status` */ +public record CustomerStatusId(@JsonValue String value) { + public CustomerStatusId withValue(String value) { + return new CustomerStatusId(value); + } + ; + + @Override + public java.lang.String toString() { + return value.toString(); + } + ; + + public static Bijection bijection = + Bijection.of(CustomerStatusId::value, CustomerStatusId::new); + + public static MariaType mariaType = + MariaTypes.varchar.bimap(CustomerStatusId::new, CustomerStatusId::value); +} diff --git a/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/customer_status/CustomerStatusRepo.java b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/customer_status/CustomerStatusRepo.java new file mode 100644 index 0000000000..d1537b18f8 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/customer_status/CustomerStatusRepo.java @@ -0,0 +1,46 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.mariadb.customer_status; + +import dev.typr.foundations.dsl.DeleteBuilder; +import dev.typr.foundations.dsl.SelectBuilder; +import dev.typr.foundations.dsl.UpdateBuilder; +import java.sql.Connection; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Optional; + +public interface CustomerStatusRepo { + DeleteBuilder delete(); + + Boolean deleteById(CustomerStatusId statusCode, Connection c); + + Integer deleteByIds(CustomerStatusId[] statusCodes, Connection c); + + CustomerStatusRow insert(CustomerStatusRow unsaved, Connection c); + + CustomerStatusRow insert(CustomerStatusRowUnsaved unsaved, Connection c); + + SelectBuilder select(); + + List selectAll(Connection c); + + Optional selectById(CustomerStatusId statusCode, Connection c); + + List selectByIds(CustomerStatusId[] statusCodes, Connection c); + + Map selectByIdsTracked( + CustomerStatusId[] statusCodes, Connection c); + + UpdateBuilder update(); + + Boolean update(CustomerStatusRow row, Connection c); + + CustomerStatusRow upsert(CustomerStatusRow unsaved, Connection c); + + List upsertBatch(Iterator unsaved, Connection c); +} diff --git a/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/customer_status/CustomerStatusRepoImpl.java b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/customer_status/CustomerStatusRepoImpl.java new file mode 100644 index 0000000000..640b8e47f8 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/customer_status/CustomerStatusRepoImpl.java @@ -0,0 +1,221 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.mariadb.customer_status; + +import static dev.typr.foundations.Fragment.interpolate; + +import combined.shared.IsActive; +import dev.typr.foundations.Fragment; +import dev.typr.foundations.MariaTypes; +import dev.typr.foundations.dsl.DeleteBuilder; +import dev.typr.foundations.dsl.Dialect; +import dev.typr.foundations.dsl.SelectBuilder; +import dev.typr.foundations.dsl.UpdateBuilder; +import java.sql.Connection; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Optional; + +public class CustomerStatusRepoImpl implements CustomerStatusRepo { + @Override + public DeleteBuilder delete() { + return DeleteBuilder.of("`customer_status`", CustomerStatusFields.structure, Dialect.MARIADB); + } + + @Override + public Boolean deleteById(CustomerStatusId statusCode, Connection c) { + return interpolate( + Fragment.lit("delete from `customer_status` where `status_code` = "), + Fragment.encode(CustomerStatusId.mariaType, statusCode), + Fragment.lit("")) + .update() + .runUnchecked(c) + > 0; + } + + @Override + public Integer deleteByIds(CustomerStatusId[] statusCodes, Connection c) { + ArrayList fragments = new ArrayList<>(); + for (var id : statusCodes) { + fragments.add(Fragment.encode(CustomerStatusId.mariaType, id)); + } + ; + return Fragment.interpolate( + Fragment.lit("delete from `customer_status` where `status_code` in ("), + Fragment.comma(fragments), + Fragment.lit(")")) + .update() + .runUnchecked(c); + } + + @Override + public CustomerStatusRow insert(CustomerStatusRow unsaved, Connection c) { + return interpolate( + Fragment.lit( + "insert into `customer_status`(`status_code`, `description`, `is_active`)\n" + + "values ("), + Fragment.encode(CustomerStatusId.mariaType, unsaved.statusCode()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.varchar, unsaved.description()), + Fragment.lit(", "), + Fragment.encode(IsActive.mariaType, unsaved.isActive()), + Fragment.lit(")\nRETURNING `status_code`, `description`, `is_active`\n")) + .updateReturning(CustomerStatusRow._rowParser.exactlyOne()) + .runUnchecked(c); + } + + @Override + public CustomerStatusRow insert(CustomerStatusRowUnsaved unsaved, Connection c) { + ArrayList columns = new ArrayList<>(); + ; + ArrayList values = new ArrayList<>(); + ; + columns.add(Fragment.lit("`status_code`")); + values.add( + interpolate( + Fragment.encode(CustomerStatusId.mariaType, unsaved.statusCode()), Fragment.lit(""))); + columns.add(Fragment.lit("`description`")); + values.add( + interpolate(Fragment.encode(MariaTypes.varchar, unsaved.description()), Fragment.lit(""))); + unsaved + .isActive() + .visit( + () -> {}, + value -> { + columns.add(Fragment.lit("`is_active`")); + values.add(interpolate(Fragment.encode(IsActive.mariaType, value), Fragment.lit(""))); + }); + ; + Fragment q = + interpolate( + Fragment.lit("insert into `customer_status`("), + Fragment.comma(columns), + Fragment.lit(")\nvalues ("), + Fragment.comma(values), + Fragment.lit(")\nRETURNING `status_code`, `description`, `is_active`\n")); + ; + return q.updateReturning(CustomerStatusRow._rowParser.exactlyOne()).runUnchecked(c); + } + + @Override + public SelectBuilder select() { + return SelectBuilder.of( + "`customer_status`", + CustomerStatusFields.structure, + CustomerStatusRow._rowParser, + Dialect.MARIADB); + } + + @Override + public List selectAll(Connection c) { + return interpolate( + Fragment.lit( + "select `status_code`, `description`, `is_active`\nfrom `customer_status`\n")) + .query(CustomerStatusRow._rowParser.all()) + .runUnchecked(c); + } + + @Override + public Optional selectById(CustomerStatusId statusCode, Connection c) { + return interpolate( + Fragment.lit( + "select `status_code`, `description`, `is_active`\n" + + "from `customer_status`\n" + + "where `status_code` = "), + Fragment.encode(CustomerStatusId.mariaType, statusCode), + Fragment.lit("")) + .query(CustomerStatusRow._rowParser.first()) + .runUnchecked(c); + } + + @Override + public List selectByIds(CustomerStatusId[] statusCodes, Connection c) { + ArrayList fragments = new ArrayList<>(); + for (var id : statusCodes) { + fragments.add(Fragment.encode(CustomerStatusId.mariaType, id)); + } + ; + return Fragment.interpolate( + Fragment.lit( + "select `status_code`, `description`, `is_active` from `customer_status` where" + + " `status_code` in ("), + Fragment.comma(fragments), + Fragment.lit(")")) + .query(CustomerStatusRow._rowParser.all()) + .runUnchecked(c); + } + + @Override + public Map selectByIdsTracked( + CustomerStatusId[] statusCodes, Connection c) { + HashMap ret = + new HashMap(); + selectByIds(statusCodes, c).forEach(row -> ret.put(row.statusCode(), row)); + return ret; + } + + @Override + public UpdateBuilder update() { + return UpdateBuilder.of( + "`customer_status`", + CustomerStatusFields.structure, + CustomerStatusRow._rowParser, + Dialect.MARIADB); + } + + @Override + public Boolean update(CustomerStatusRow row, Connection c) { + CustomerStatusId statusCode = row.statusCode(); + ; + return interpolate( + Fragment.lit("update `customer_status`\nset `description` = "), + Fragment.encode(MariaTypes.varchar, row.description()), + Fragment.lit(",\n`is_active` = "), + Fragment.encode(IsActive.mariaType, row.isActive()), + Fragment.lit("\nwhere `status_code` = "), + Fragment.encode(CustomerStatusId.mariaType, statusCode), + Fragment.lit("")) + .update() + .runUnchecked(c) + > 0; + } + + @Override + public CustomerStatusRow upsert(CustomerStatusRow unsaved, Connection c) { + return interpolate( + Fragment.lit( + "INSERT INTO `customer_status`(`status_code`, `description`, `is_active`)\n" + + "VALUES ("), + Fragment.encode(CustomerStatusId.mariaType, unsaved.statusCode()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.varchar, unsaved.description()), + Fragment.lit(", "), + Fragment.encode(IsActive.mariaType, unsaved.isActive()), + Fragment.lit( + ")\n" + + "ON DUPLICATE KEY UPDATE `description` = VALUES(`description`),\n" + + "`is_active` = VALUES(`is_active`)\n" + + "RETURNING `status_code`, `description`, `is_active`")) + .updateReturning(CustomerStatusRow._rowParser.exactlyOne()) + .runUnchecked(c); + } + + @Override + public List upsertBatch(Iterator unsaved, Connection c) { + return interpolate( + Fragment.lit( + "INSERT INTO `customer_status`(`status_code`, `description`, `is_active`)\n" + + "VALUES (?, ?, ?)\n" + + "ON DUPLICATE KEY UPDATE `description` = VALUES(`description`),\n" + + "`is_active` = VALUES(`is_active`)\n" + + "RETURNING `status_code`, `description`, `is_active`")) + .updateReturningEach(CustomerStatusRow._rowParser, unsaved) + .runUnchecked(c); + } +} diff --git a/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/customer_status/CustomerStatusRepoMock.java b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/customer_status/CustomerStatusRepoMock.java new file mode 100644 index 0000000000..ddaf95bb2b --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/customer_status/CustomerStatusRepoMock.java @@ -0,0 +1,184 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.mariadb.customer_status; + +import dev.typr.foundations.dsl.DeleteBuilder; +import dev.typr.foundations.dsl.DeleteBuilderMock; +import dev.typr.foundations.dsl.DeleteParams; +import dev.typr.foundations.dsl.SelectBuilder; +import dev.typr.foundations.dsl.SelectBuilderMock; +import dev.typr.foundations.dsl.SelectParams; +import dev.typr.foundations.dsl.UpdateBuilder; +import dev.typr.foundations.dsl.UpdateBuilderMock; +import dev.typr.foundations.dsl.UpdateParams; +import java.sql.Connection; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.function.Function; +import java.util.stream.Collectors; + +public record CustomerStatusRepoMock( + java.util.function.Function toRow, + HashMap map) + implements CustomerStatusRepo { + public CustomerStatusRepoMock( + java.util.function.Function toRow) { + this(toRow, new HashMap()); + } + ; + + public CustomerStatusRepoMock withToRow( + java.util.function.Function toRow) { + return new CustomerStatusRepoMock(toRow, map); + } + ; + + public CustomerStatusRepoMock withMap(HashMap map) { + return new CustomerStatusRepoMock(toRow, map); + } + ; + + @Override + public DeleteBuilder delete() { + return new DeleteBuilderMock<>( + CustomerStatusFields.structure, + () -> new ArrayList<>(map.values()), + DeleteParams.empty(), + row -> row.statusCode(), + id -> map.remove(id)); + } + ; + + @Override + public Boolean deleteById(CustomerStatusId statusCode, Connection c) { + return Optional.ofNullable(map.remove(statusCode)).isPresent(); + } + ; + + @Override + public Integer deleteByIds(CustomerStatusId[] statusCodes, Connection c) { + var count = 0; + for (var id : statusCodes) { + if (Optional.ofNullable(map.remove(id)).isPresent()) { + count = count + 1; + ; + } + ; + } + ; + return count; + } + ; + + @Override + public CustomerStatusRow insert(CustomerStatusRow unsaved, Connection c) { + if (map.containsKey(unsaved.statusCode())) { + throw new RuntimeException("id " + unsaved.statusCode() + " already exists"); + } + ; + map.put(unsaved.statusCode(), unsaved); + return unsaved; + } + ; + + @Override + public CustomerStatusRow insert(CustomerStatusRowUnsaved unsaved, Connection c) { + return insert(toRow.apply(unsaved), c); + } + ; + + @Override + public SelectBuilder select() { + return new SelectBuilderMock<>( + CustomerStatusFields.structure, () -> new ArrayList<>(map.values()), SelectParams.empty()); + } + ; + + @Override + public List selectAll(Connection c) { + return new ArrayList<>(map.values()); + } + ; + + @Override + public Optional selectById(CustomerStatusId statusCode, Connection c) { + return Optional.ofNullable(map.get(statusCode)); + } + ; + + @Override + public List selectByIds(CustomerStatusId[] statusCodes, Connection c) { + var result = new ArrayList(); + for (var id : statusCodes) { + var opt = Optional.ofNullable(map.get(id)); + if (opt.isPresent()) { + result.add(opt.get()); + } + ; + } + ; + return result; + } + ; + + @Override + public Map selectByIdsTracked( + CustomerStatusId[] statusCodes, Connection c) { + return selectByIds(statusCodes, c).stream() + .collect( + Collectors.toMap((CustomerStatusRow row) -> row.statusCode(), Function.identity())); + } + ; + + @Override + public UpdateBuilder update() { + return new UpdateBuilderMock<>( + CustomerStatusFields.structure, + () -> new ArrayList<>(map.values()), + UpdateParams.empty(), + row -> row); + } + ; + + @Override + public Boolean update(CustomerStatusRow row, Connection c) { + var shouldUpdate = + Optional.ofNullable(map.get(row.statusCode())) + .filter(oldRow -> !oldRow.equals(row)) + .isPresent(); + if (shouldUpdate) { + map.put(row.statusCode(), row); + ; + } + ; + return shouldUpdate; + } + ; + + @Override + public CustomerStatusRow upsert(CustomerStatusRow unsaved, Connection c) { + map.put(unsaved.statusCode(), unsaved); + return unsaved; + } + ; + + @Override + public List upsertBatch(Iterator unsaved, Connection c) { + var result = new ArrayList(); + while (unsaved.hasNext()) { + var row = unsaved.next(); + map.put(row.statusCode(), row); + result.add(row); + } + ; + return result; + } + ; +} diff --git a/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/customer_status/CustomerStatusRow.java b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/customer_status/CustomerStatusRow.java new file mode 100644 index 0000000000..0fae88c3df --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/customer_status/CustomerStatusRow.java @@ -0,0 +1,79 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.mariadb.customer_status; + +import com.fasterxml.jackson.annotation.JsonProperty; +import combined.mariadb.customtypes.Defaulted; +import combined.shared.IsActive; +import dev.typr.foundations.MariaTypes; +import dev.typr.foundations.RowParser; +import dev.typr.foundations.RowParsers; +import dev.typr.foundations.Tuple.Tuple3; + +/** Table: customer_status Primary key: status_code */ +public record CustomerStatusRow( + /** */ + @JsonProperty("status_code") CustomerStatusId statusCode, + /** */ + String description, + /** Default: 1 */ + @JsonProperty("is_active") /* user-picked */ IsActive isActive) + implements Tuple3 { + /** */ + public CustomerStatusRow withStatusCode(CustomerStatusId statusCode) { + return new CustomerStatusRow(statusCode, description, isActive); + } + ; + + /** */ + public CustomerStatusRow withDescription(String description) { + return new CustomerStatusRow(statusCode, description, isActive); + } + ; + + /** Default: 1 */ + public CustomerStatusRow withIsActive(/* user-picked */ IsActive isActive) { + return new CustomerStatusRow(statusCode, description, isActive); + } + ; + + public static RowParser _rowParser = + RowParsers.of( + CustomerStatusId.mariaType, + MariaTypes.varchar, + IsActive.mariaType, + CustomerStatusRow::new, + row -> new Object[] {row.statusCode(), row.description(), row.isActive()}); + ; + + @Override + public CustomerStatusId _1() { + return statusCode; + } + ; + + @Override + public String _2() { + return description; + } + ; + + @Override + public /* user-picked */ IsActive _3() { + return isActive; + } + ; + + public CustomerStatusId id() { + return statusCode; + } + ; + + public CustomerStatusRowUnsaved toUnsavedRow(Defaulted isActive) { + return new CustomerStatusRowUnsaved(statusCode, description, isActive); + } + ; +} diff --git a/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/customer_status/CustomerStatusRowUnsaved.java b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/customer_status/CustomerStatusRowUnsaved.java new file mode 100644 index 0000000000..ed7491d29c --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/customer_status/CustomerStatusRowUnsaved.java @@ -0,0 +1,53 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.mariadb.customer_status; + +import com.fasterxml.jackson.annotation.JsonProperty; +import combined.mariadb.customtypes.Defaulted; +import combined.mariadb.customtypes.Defaulted.UseDefault; +import combined.shared.IsActive; + +/** This class corresponds to a row in table `customer_status` which has not been persisted yet */ +public record CustomerStatusRowUnsaved( + /** */ + @JsonProperty("status_code") CustomerStatusId statusCode, + /** */ + String description, + /** Default: 1 */ + @JsonProperty("is_active") Defaulted isActive) { + public CustomerStatusRowUnsaved( + /** */ + @JsonProperty("status_code") CustomerStatusId statusCode, + /** */ + String description) { + this(statusCode, description, new UseDefault<>()); + } + ; + + /** */ + public CustomerStatusRowUnsaved withStatusCode(CustomerStatusId statusCode) { + return new CustomerStatusRowUnsaved(statusCode, description, isActive); + } + ; + + /** */ + public CustomerStatusRowUnsaved withDescription(String description) { + return new CustomerStatusRowUnsaved(statusCode, description, isActive); + } + ; + + /** Default: 1 */ + public CustomerStatusRowUnsaved withIsActive(Defaulted isActive) { + return new CustomerStatusRowUnsaved(statusCode, description, isActive); + } + ; + + public CustomerStatusRow toRow( + java.util.function.Supplier isActiveDefault) { + return new CustomerStatusRow(statusCode, description, isActive.getOrElse(isActiveDefault)); + } + ; +} diff --git a/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/customers/CustomersFields.java b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/customers/CustomersFields.java new file mode 100644 index 0000000000..93514f0eed --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/customers/CustomersFields.java @@ -0,0 +1,318 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.mariadb.customers; + +import combined.mariadb.customer_status.CustomerStatusFields; +import combined.mariadb.customer_status.CustomerStatusId; +import combined.mariadb.customer_status.CustomerStatusRow; +import combined.shared.FirstName; +import combined.shared.LastName; +import dev.typr.foundations.MariaTypes; +import dev.typr.foundations.RowParser; +import dev.typr.foundations.data.Json; +import dev.typr.foundations.data.maria.MariaSet; +import dev.typr.foundations.dsl.FieldsBase; +import dev.typr.foundations.dsl.ForeignKey; +import dev.typr.foundations.dsl.Path; +import dev.typr.foundations.dsl.RelationStructure; +import dev.typr.foundations.dsl.SqlExpr; +import dev.typr.foundations.dsl.SqlExpr.Field; +import dev.typr.foundations.dsl.SqlExpr.FieldLike; +import dev.typr.foundations.dsl.SqlExpr.IdField; +import dev.typr.foundations.dsl.SqlExpr.OptField; +import dev.typr.foundations.dsl.TupleExpr.TupleExpr14; +import java.time.LocalDateTime; +import java.util.List; +import java.util.Optional; + +public class CustomersFields + extends TupleExpr14< + CustomersId, + String, + byte[], /* user-picked */ + FirstName, /* user-picked */ + LastName, + String, + CustomerStatusId, + String, + Json, + MariaSet, + String, + LocalDateTime, + LocalDateTime, + LocalDateTime> + implements RelationStructure, FieldsBase { + List _path; + + public CustomersFields(List _path) { + this._path = _path; + } + + public static CustomersFields structure = new CustomersFields(java.util.Collections.emptyList()); + + public IdField customerId() { + return new IdField( + _path, + "customer_id", + CustomersRow::customerId, + Optional.empty(), + Optional.empty(), + (row, value) -> row.withCustomerId(value), + CustomersId.mariaType); + } + + public Field email() { + return new Field( + _path, + "email", + CustomersRow::email, + Optional.empty(), + Optional.empty(), + (row, value) -> row.withEmail(value), + MariaTypes.varchar); + } + + public Field passwordHash() { + return new Field( + _path, + "password_hash", + CustomersRow::passwordHash, + Optional.empty(), + Optional.empty(), + (row, value) -> row.withPasswordHash(value), + MariaTypes.binary); + } + + public Field firstName() { + return new Field( + _path, + "first_name", + CustomersRow::firstName, + Optional.empty(), + Optional.empty(), + (row, value) -> row.withFirstName(value), + FirstName.mariaType); + } + + public Field lastName() { + return new Field( + _path, + "last_name", + CustomersRow::lastName, + Optional.empty(), + Optional.empty(), + (row, value) -> row.withLastName(value), + LastName.mariaType); + } + + public OptField phone() { + return new OptField( + _path, + "phone", + CustomersRow::phone, + Optional.empty(), + Optional.empty(), + (row, value) -> row.withPhone(value), + MariaTypes.varchar); + } + + public Field status() { + return new Field( + _path, + "status", + CustomersRow::status, + Optional.empty(), + Optional.empty(), + (row, value) -> row.withStatus(value), + CustomerStatusId.mariaType); + } + + public Field tier() { + return new Field( + _path, + "tier", + CustomersRow::tier, + Optional.empty(), + Optional.empty(), + (row, value) -> row.withTier(value), + MariaTypes.text); + } + + public OptField preferences() { + return new OptField( + _path, + "preferences", + CustomersRow::preferences, + Optional.empty(), + Optional.empty(), + (row, value) -> row.withPreferences(value), + MariaTypes.json); + } + + public OptField marketingFlags() { + return new OptField( + _path, + "marketing_flags", + CustomersRow::marketingFlags, + Optional.empty(), + Optional.empty(), + (row, value) -> row.withMarketingFlags(value), + MariaTypes.set); + } + + public OptField notes() { + return new OptField( + _path, + "notes", + CustomersRow::notes, + Optional.empty(), + Optional.empty(), + (row, value) -> row.withNotes(value), + MariaTypes.text); + } + + public Field createdAt() { + return new Field( + _path, + "created_at", + CustomersRow::createdAt, + Optional.empty(), + Optional.empty(), + (row, value) -> row.withCreatedAt(value), + MariaTypes.datetime); + } + + public Field updatedAt() { + return new Field( + _path, + "updated_at", + CustomersRow::updatedAt, + Optional.empty(), + Optional.empty(), + (row, value) -> row.withUpdatedAt(value), + MariaTypes.datetime); + } + + public OptField lastLoginAt() { + return new OptField( + _path, + "last_login_at", + CustomersRow::lastLoginAt, + Optional.empty(), + Optional.empty(), + (row, value) -> row.withLastLoginAt(value), + MariaTypes.datetime); + } + + @Override + public List _path() { + return _path; + } + + public ForeignKey fkCustomerStatus() { + return ForeignKey.of("fk_customer_status") + .withColumnPair(status(), CustomerStatusFields::statusCode); + } + + @Override + public List> columns() { + return java.util.List.of( + this.customerId(), + this.email(), + this.passwordHash(), + this.firstName(), + this.lastName(), + this.phone(), + this.status(), + this.tier(), + this.preferences(), + this.marketingFlags(), + this.notes(), + this.createdAt(), + this.updatedAt(), + this.lastLoginAt()); + } + + @Override + public RowParser rowParser() { + return CustomersRow._rowParser; + } + + @Override + public RelationStructure withPaths(List _path) { + return new CustomersFields(_path); + } + + @Override + public SqlExpr _1() { + return customerId(); + } + + @Override + public SqlExpr _2() { + return email(); + } + + @Override + public SqlExpr _3() { + return passwordHash(); + } + + @Override + public SqlExpr _4() { + return firstName(); + } + + @Override + public SqlExpr _5() { + return lastName(); + } + + @Override + public SqlExpr _6() { + return phone(); + } + + @Override + public SqlExpr _7() { + return status(); + } + + @Override + public SqlExpr _8() { + return tier(); + } + + @Override + public SqlExpr _9() { + return preferences(); + } + + @Override + public SqlExpr _10() { + return marketingFlags(); + } + + @Override + public SqlExpr _11() { + return notes(); + } + + @Override + public SqlExpr _12() { + return createdAt(); + } + + @Override + public SqlExpr _13() { + return updatedAt(); + } + + @Override + public SqlExpr _14() { + return lastLoginAt(); + } +} diff --git a/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/customers/CustomersId.java b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/customers/CustomersId.java new file mode 100644 index 0000000000..9fa561adde --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/customers/CustomersId.java @@ -0,0 +1,32 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.mariadb.customers; + +import com.fasterxml.jackson.annotation.JsonValue; +import dev.typr.foundations.MariaType; +import dev.typr.foundations.MariaTypes; +import dev.typr.foundations.data.Uint8; +import dev.typr.foundations.dsl.Bijection; + +/** Type for the primary key of table `customers` */ +public record CustomersId(@JsonValue Uint8 value) { + public CustomersId withValue(Uint8 value) { + return new CustomersId(value); + } + ; + + @Override + public java.lang.String toString() { + return value.toString(); + } + ; + + public static Bijection bijection = + Bijection.of(CustomersId::value, CustomersId::new); + + public static MariaType mariaType = + MariaTypes.bigintUnsigned.bimap(CustomersId::new, CustomersId::value); +} diff --git a/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/customers/CustomersRepo.java b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/customers/CustomersRepo.java new file mode 100644 index 0000000000..316c817341 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/customers/CustomersRepo.java @@ -0,0 +1,47 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.mariadb.customers; + +import dev.typr.foundations.dsl.DeleteBuilder; +import dev.typr.foundations.dsl.SelectBuilder; +import dev.typr.foundations.dsl.UpdateBuilder; +import java.sql.Connection; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Optional; + +public interface CustomersRepo { + DeleteBuilder delete(); + + Boolean deleteById(CustomersId customerId, Connection c); + + Integer deleteByIds(CustomersId[] customerIds, Connection c); + + CustomersRow insert(CustomersRow unsaved, Connection c); + + CustomersRow insert(CustomersRowUnsaved unsaved, Connection c); + + SelectBuilder select(); + + List selectAll(Connection c); + + Optional selectById(CustomersId customerId, Connection c); + + List selectByIds(CustomersId[] customerIds, Connection c); + + Map selectByIdsTracked(CustomersId[] customerIds, Connection c); + + Optional selectByUniqueEmail(String email, Connection c); + + UpdateBuilder update(); + + Boolean update(CustomersRow row, Connection c); + + CustomersRow upsert(CustomersRow unsaved, Connection c); + + List upsertBatch(Iterator unsaved, Connection c); +} diff --git a/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/customers/CustomersRepoImpl.java b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/customers/CustomersRepoImpl.java new file mode 100644 index 0000000000..d0bfaf57a0 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/customers/CustomersRepoImpl.java @@ -0,0 +1,427 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.mariadb.customers; + +import static dev.typr.foundations.Fragment.interpolate; + +import combined.mariadb.customer_status.CustomerStatusId; +import combined.shared.FirstName; +import combined.shared.LastName; +import dev.typr.foundations.Fragment; +import dev.typr.foundations.MariaTypes; +import dev.typr.foundations.dsl.DeleteBuilder; +import dev.typr.foundations.dsl.Dialect; +import dev.typr.foundations.dsl.SelectBuilder; +import dev.typr.foundations.dsl.UpdateBuilder; +import java.sql.Connection; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Optional; + +public class CustomersRepoImpl implements CustomersRepo { + @Override + public DeleteBuilder delete() { + return DeleteBuilder.of("`customers`", CustomersFields.structure, Dialect.MARIADB); + } + + @Override + public Boolean deleteById(CustomersId customerId, Connection c) { + return interpolate( + Fragment.lit("delete from `customers` where `customer_id` = "), + Fragment.encode(CustomersId.mariaType, customerId), + Fragment.lit("")) + .update() + .runUnchecked(c) + > 0; + } + + @Override + public Integer deleteByIds(CustomersId[] customerIds, Connection c) { + ArrayList fragments = new ArrayList<>(); + for (var id : customerIds) { + fragments.add(Fragment.encode(CustomersId.mariaType, id)); + } + ; + return Fragment.interpolate( + Fragment.lit("delete from `customers` where `customer_id` in ("), + Fragment.comma(fragments), + Fragment.lit(")")) + .update() + .runUnchecked(c); + } + + @Override + public CustomersRow insert(CustomersRow unsaved, Connection c) { + return interpolate( + Fragment.lit( + "insert into `customers`(`email`, `password_hash`, `first_name`, `last_name`," + + " `phone`, `status`, `tier`, `preferences`, `marketing_flags`, `notes`," + + " `created_at`, `updated_at`, `last_login_at`)\n" + + "values ("), + Fragment.encode(MariaTypes.varchar, unsaved.email()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.binary, unsaved.passwordHash()), + Fragment.lit(", "), + Fragment.encode(FirstName.mariaType, unsaved.firstName()), + Fragment.lit(", "), + Fragment.encode(LastName.mariaType, unsaved.lastName()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.varchar.opt(), unsaved.phone()), + Fragment.lit(", "), + Fragment.encode(CustomerStatusId.mariaType, unsaved.status()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.text, unsaved.tier()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.json.opt(), unsaved.preferences()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.set.opt(), unsaved.marketingFlags()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.text.opt(), unsaved.notes()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.datetime, unsaved.createdAt()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.datetime, unsaved.updatedAt()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.datetime.opt(), unsaved.lastLoginAt()), + Fragment.lit( + ")\n" + + "RETURNING `customer_id`, `email`, `password_hash`, `first_name`," + + " `last_name`, `phone`, `status`, `tier`, `preferences`, `marketing_flags`," + + " `notes`, `created_at`, `updated_at`, `last_login_at`\n")) + .updateReturning(CustomersRow._rowParser.exactlyOne()) + .runUnchecked(c); + } + + @Override + public CustomersRow insert(CustomersRowUnsaved unsaved, Connection c) { + ArrayList columns = new ArrayList<>(); + ; + ArrayList values = new ArrayList<>(); + ; + columns.add(Fragment.lit("`email`")); + values.add(interpolate(Fragment.encode(MariaTypes.varchar, unsaved.email()), Fragment.lit(""))); + columns.add(Fragment.lit("`password_hash`")); + values.add( + interpolate(Fragment.encode(MariaTypes.binary, unsaved.passwordHash()), Fragment.lit(""))); + columns.add(Fragment.lit("`first_name`")); + values.add( + interpolate(Fragment.encode(FirstName.mariaType, unsaved.firstName()), Fragment.lit(""))); + columns.add(Fragment.lit("`last_name`")); + values.add( + interpolate(Fragment.encode(LastName.mariaType, unsaved.lastName()), Fragment.lit(""))); + unsaved + .phone() + .visit( + () -> {}, + value -> { + columns.add(Fragment.lit("`phone`")); + values.add( + interpolate(Fragment.encode(MariaTypes.varchar.opt(), value), Fragment.lit(""))); + }); + ; + unsaved + .status() + .visit( + () -> {}, + value -> { + columns.add(Fragment.lit("`status`")); + values.add( + interpolate( + Fragment.encode(CustomerStatusId.mariaType, value), Fragment.lit(""))); + }); + ; + unsaved + .tier() + .visit( + () -> {}, + value -> { + columns.add(Fragment.lit("`tier`")); + values.add(interpolate(Fragment.encode(MariaTypes.text, value), Fragment.lit(""))); + }); + ; + unsaved + .preferences() + .visit( + () -> {}, + value -> { + columns.add(Fragment.lit("`preferences`")); + values.add( + interpolate(Fragment.encode(MariaTypes.json.opt(), value), Fragment.lit(""))); + }); + ; + unsaved + .marketingFlags() + .visit( + () -> {}, + value -> { + columns.add(Fragment.lit("`marketing_flags`")); + values.add( + interpolate(Fragment.encode(MariaTypes.set.opt(), value), Fragment.lit(""))); + }); + ; + unsaved + .notes() + .visit( + () -> {}, + value -> { + columns.add(Fragment.lit("`notes`")); + values.add( + interpolate(Fragment.encode(MariaTypes.text.opt(), value), Fragment.lit(""))); + }); + ; + unsaved + .createdAt() + .visit( + () -> {}, + value -> { + columns.add(Fragment.lit("`created_at`")); + values.add( + interpolate(Fragment.encode(MariaTypes.datetime, value), Fragment.lit(""))); + }); + ; + unsaved + .updatedAt() + .visit( + () -> {}, + value -> { + columns.add(Fragment.lit("`updated_at`")); + values.add( + interpolate(Fragment.encode(MariaTypes.datetime, value), Fragment.lit(""))); + }); + ; + unsaved + .lastLoginAt() + .visit( + () -> {}, + value -> { + columns.add(Fragment.lit("`last_login_at`")); + values.add( + interpolate(Fragment.encode(MariaTypes.datetime.opt(), value), Fragment.lit(""))); + }); + ; + Fragment q = + interpolate( + Fragment.lit("insert into `customers`("), + Fragment.comma(columns), + Fragment.lit(")\nvalues ("), + Fragment.comma(values), + Fragment.lit( + ")\n" + + "RETURNING `customer_id`, `email`, `password_hash`, `first_name`," + + " `last_name`, `phone`, `status`, `tier`, `preferences`, `marketing_flags`," + + " `notes`, `created_at`, `updated_at`, `last_login_at`\n")); + ; + return q.updateReturning(CustomersRow._rowParser.exactlyOne()).runUnchecked(c); + } + + @Override + public SelectBuilder select() { + return SelectBuilder.of( + "`customers`", CustomersFields.structure, CustomersRow._rowParser, Dialect.MARIADB); + } + + @Override + public List selectAll(Connection c) { + return interpolate( + Fragment.lit( + "select `customer_id`, `email`, `password_hash`, `first_name`, `last_name`," + + " `phone`, `status`, `tier`, `preferences`, `marketing_flags`, `notes`," + + " `created_at`, `updated_at`, `last_login_at`\n" + + "from `customers`\n")) + .query(CustomersRow._rowParser.all()) + .runUnchecked(c); + } + + @Override + public Optional selectById(CustomersId customerId, Connection c) { + return interpolate( + Fragment.lit( + "select `customer_id`, `email`, `password_hash`, `first_name`, `last_name`," + + " `phone`, `status`, `tier`, `preferences`, `marketing_flags`, `notes`," + + " `created_at`, `updated_at`, `last_login_at`\n" + + "from `customers`\n" + + "where `customer_id` = "), + Fragment.encode(CustomersId.mariaType, customerId), + Fragment.lit("")) + .query(CustomersRow._rowParser.first()) + .runUnchecked(c); + } + + @Override + public List selectByIds(CustomersId[] customerIds, Connection c) { + ArrayList fragments = new ArrayList<>(); + for (var id : customerIds) { + fragments.add(Fragment.encode(CustomersId.mariaType, id)); + } + ; + return Fragment.interpolate( + Fragment.lit( + "select `customer_id`, `email`, `password_hash`, `first_name`, `last_name`," + + " `phone`, `status`, `tier`, `preferences`, `marketing_flags`, `notes`," + + " `created_at`, `updated_at`, `last_login_at` from `customers` where" + + " `customer_id` in ("), + Fragment.comma(fragments), + Fragment.lit(")")) + .query(CustomersRow._rowParser.all()) + .runUnchecked(c); + } + + @Override + public Map selectByIdsTracked( + CustomersId[] customerIds, Connection c) { + HashMap ret = new HashMap(); + selectByIds(customerIds, c).forEach(row -> ret.put(row.customerId(), row)); + return ret; + } + + @Override + public Optional selectByUniqueEmail(String email, Connection c) { + return interpolate( + Fragment.lit( + "select `customer_id`, `email`, `password_hash`, `first_name`, `last_name`," + + " `phone`, `status`, `tier`, `preferences`, `marketing_flags`, `notes`," + + " `created_at`, `updated_at`, `last_login_at`\n" + + "from `customers`\n" + + "where `email` = "), + Fragment.encode(MariaTypes.varchar, email), + Fragment.lit("\n")) + .query(CustomersRow._rowParser.first()) + .runUnchecked(c); + } + + @Override + public UpdateBuilder update() { + return UpdateBuilder.of( + "`customers`", CustomersFields.structure, CustomersRow._rowParser, Dialect.MARIADB); + } + + @Override + public Boolean update(CustomersRow row, Connection c) { + CustomersId customerId = row.customerId(); + ; + return interpolate( + Fragment.lit("update `customers`\nset `email` = "), + Fragment.encode(MariaTypes.varchar, row.email()), + Fragment.lit(",\n`password_hash` = "), + Fragment.encode(MariaTypes.binary, row.passwordHash()), + Fragment.lit(",\n`first_name` = "), + Fragment.encode(FirstName.mariaType, row.firstName()), + Fragment.lit(",\n`last_name` = "), + Fragment.encode(LastName.mariaType, row.lastName()), + Fragment.lit(",\n`phone` = "), + Fragment.encode(MariaTypes.varchar.opt(), row.phone()), + Fragment.lit(",\n`status` = "), + Fragment.encode(CustomerStatusId.mariaType, row.status()), + Fragment.lit(",\n`tier` = "), + Fragment.encode(MariaTypes.text, row.tier()), + Fragment.lit(",\n`preferences` = "), + Fragment.encode(MariaTypes.json.opt(), row.preferences()), + Fragment.lit(",\n`marketing_flags` = "), + Fragment.encode(MariaTypes.set.opt(), row.marketingFlags()), + Fragment.lit(",\n`notes` = "), + Fragment.encode(MariaTypes.text.opt(), row.notes()), + Fragment.lit(",\n`created_at` = "), + Fragment.encode(MariaTypes.datetime, row.createdAt()), + Fragment.lit(",\n`updated_at` = "), + Fragment.encode(MariaTypes.datetime, row.updatedAt()), + Fragment.lit(",\n`last_login_at` = "), + Fragment.encode(MariaTypes.datetime.opt(), row.lastLoginAt()), + Fragment.lit("\nwhere `customer_id` = "), + Fragment.encode(CustomersId.mariaType, customerId), + Fragment.lit("")) + .update() + .runUnchecked(c) + > 0; + } + + @Override + public CustomersRow upsert(CustomersRow unsaved, Connection c) { + return interpolate( + Fragment.lit( + "INSERT INTO `customers`(`customer_id`, `email`, `password_hash`, `first_name`," + + " `last_name`, `phone`, `status`, `tier`, `preferences`, `marketing_flags`," + + " `notes`, `created_at`, `updated_at`, `last_login_at`)\n" + + "VALUES ("), + Fragment.encode(CustomersId.mariaType, unsaved.customerId()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.varchar, unsaved.email()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.binary, unsaved.passwordHash()), + Fragment.lit(", "), + Fragment.encode(FirstName.mariaType, unsaved.firstName()), + Fragment.lit(", "), + Fragment.encode(LastName.mariaType, unsaved.lastName()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.varchar.opt(), unsaved.phone()), + Fragment.lit(", "), + Fragment.encode(CustomerStatusId.mariaType, unsaved.status()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.text, unsaved.tier()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.json.opt(), unsaved.preferences()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.set.opt(), unsaved.marketingFlags()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.text.opt(), unsaved.notes()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.datetime, unsaved.createdAt()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.datetime, unsaved.updatedAt()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.datetime.opt(), unsaved.lastLoginAt()), + Fragment.lit( + ")\n" + + "ON DUPLICATE KEY UPDATE `email` = VALUES(`email`),\n" + + "`password_hash` = VALUES(`password_hash`),\n" + + "`first_name` = VALUES(`first_name`),\n" + + "`last_name` = VALUES(`last_name`),\n" + + "`phone` = VALUES(`phone`),\n" + + "`status` = VALUES(`status`),\n" + + "`tier` = VALUES(`tier`),\n" + + "`preferences` = VALUES(`preferences`),\n" + + "`marketing_flags` = VALUES(`marketing_flags`),\n" + + "`notes` = VALUES(`notes`),\n" + + "`created_at` = VALUES(`created_at`),\n" + + "`updated_at` = VALUES(`updated_at`),\n" + + "`last_login_at` = VALUES(`last_login_at`)\n" + + "RETURNING `customer_id`, `email`, `password_hash`, `first_name`," + + " `last_name`, `phone`, `status`, `tier`, `preferences`, `marketing_flags`," + + " `notes`, `created_at`, `updated_at`, `last_login_at`")) + .updateReturning(CustomersRow._rowParser.exactlyOne()) + .runUnchecked(c); + } + + @Override + public List upsertBatch(Iterator unsaved, Connection c) { + return interpolate( + Fragment.lit( + "INSERT INTO `customers`(`customer_id`, `email`, `password_hash`, `first_name`," + + " `last_name`, `phone`, `status`, `tier`, `preferences`, `marketing_flags`," + + " `notes`, `created_at`, `updated_at`, `last_login_at`)\n" + + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)\n" + + "ON DUPLICATE KEY UPDATE `email` = VALUES(`email`),\n" + + "`password_hash` = VALUES(`password_hash`),\n" + + "`first_name` = VALUES(`first_name`),\n" + + "`last_name` = VALUES(`last_name`),\n" + + "`phone` = VALUES(`phone`),\n" + + "`status` = VALUES(`status`),\n" + + "`tier` = VALUES(`tier`),\n" + + "`preferences` = VALUES(`preferences`),\n" + + "`marketing_flags` = VALUES(`marketing_flags`),\n" + + "`notes` = VALUES(`notes`),\n" + + "`created_at` = VALUES(`created_at`),\n" + + "`updated_at` = VALUES(`updated_at`),\n" + + "`last_login_at` = VALUES(`last_login_at`)\n" + + "RETURNING `customer_id`, `email`, `password_hash`, `first_name`," + + " `last_name`, `phone`, `status`, `tier`, `preferences`, `marketing_flags`," + + " `notes`, `created_at`, `updated_at`, `last_login_at`")) + .updateReturningEach(CustomersRow._rowParser, unsaved) + .runUnchecked(c); + } +} diff --git a/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/customers/CustomersRepoMock.java b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/customers/CustomersRepoMock.java new file mode 100644 index 0000000000..051c59303b --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/customers/CustomersRepoMock.java @@ -0,0 +1,188 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.mariadb.customers; + +import dev.typr.foundations.dsl.DeleteBuilder; +import dev.typr.foundations.dsl.DeleteBuilderMock; +import dev.typr.foundations.dsl.DeleteParams; +import dev.typr.foundations.dsl.SelectBuilder; +import dev.typr.foundations.dsl.SelectBuilderMock; +import dev.typr.foundations.dsl.SelectParams; +import dev.typr.foundations.dsl.UpdateBuilder; +import dev.typr.foundations.dsl.UpdateBuilderMock; +import dev.typr.foundations.dsl.UpdateParams; +import java.sql.Connection; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.function.Function; +import java.util.stream.Collectors; + +public record CustomersRepoMock( + java.util.function.Function toRow, + HashMap map) + implements CustomersRepo { + public CustomersRepoMock(java.util.function.Function toRow) { + this(toRow, new HashMap()); + } + ; + + public CustomersRepoMock withToRow( + java.util.function.Function toRow) { + return new CustomersRepoMock(toRow, map); + } + ; + + public CustomersRepoMock withMap(HashMap map) { + return new CustomersRepoMock(toRow, map); + } + ; + + @Override + public DeleteBuilder delete() { + return new DeleteBuilderMock<>( + CustomersFields.structure, + () -> new ArrayList<>(map.values()), + DeleteParams.empty(), + row -> row.customerId(), + id -> map.remove(id)); + } + ; + + @Override + public Boolean deleteById(CustomersId customerId, Connection c) { + return Optional.ofNullable(map.remove(customerId)).isPresent(); + } + ; + + @Override + public Integer deleteByIds(CustomersId[] customerIds, Connection c) { + var count = 0; + for (var id : customerIds) { + if (Optional.ofNullable(map.remove(id)).isPresent()) { + count = count + 1; + ; + } + ; + } + ; + return count; + } + ; + + @Override + public CustomersRow insert(CustomersRow unsaved, Connection c) { + if (map.containsKey(unsaved.customerId())) { + throw new RuntimeException("id " + unsaved.customerId() + " already exists"); + } + ; + map.put(unsaved.customerId(), unsaved); + return unsaved; + } + ; + + @Override + public CustomersRow insert(CustomersRowUnsaved unsaved, Connection c) { + return insert(toRow.apply(unsaved), c); + } + ; + + @Override + public SelectBuilder select() { + return new SelectBuilderMock<>( + CustomersFields.structure, () -> new ArrayList<>(map.values()), SelectParams.empty()); + } + ; + + @Override + public List selectAll(Connection c) { + return new ArrayList<>(map.values()); + } + ; + + @Override + public Optional selectById(CustomersId customerId, Connection c) { + return Optional.ofNullable(map.get(customerId)); + } + ; + + @Override + public List selectByIds(CustomersId[] customerIds, Connection c) { + var result = new ArrayList(); + for (var id : customerIds) { + var opt = Optional.ofNullable(map.get(id)); + if (opt.isPresent()) { + result.add(opt.get()); + } + ; + } + ; + return result; + } + ; + + @Override + public Map selectByIdsTracked( + CustomersId[] customerIds, Connection c) { + return selectByIds(customerIds, c).stream() + .collect(Collectors.toMap((CustomersRow row) -> row.customerId(), Function.identity())); + } + ; + + @Override + public Optional selectByUniqueEmail(String email, Connection c) { + return new ArrayList<>(map.values()).stream().filter(v -> email.equals(v.email())).findFirst(); + } + ; + + @Override + public UpdateBuilder update() { + return new UpdateBuilderMock<>( + CustomersFields.structure, + () -> new ArrayList<>(map.values()), + UpdateParams.empty(), + row -> row); + } + ; + + @Override + public Boolean update(CustomersRow row, Connection c) { + var shouldUpdate = + Optional.ofNullable(map.get(row.customerId())) + .filter(oldRow -> !oldRow.equals(row)) + .isPresent(); + if (shouldUpdate) { + map.put(row.customerId(), row); + ; + } + ; + return shouldUpdate; + } + ; + + @Override + public CustomersRow upsert(CustomersRow unsaved, Connection c) { + map.put(unsaved.customerId(), unsaved); + return unsaved; + } + ; + + @Override + public List upsertBatch(Iterator unsaved, Connection c) { + var result = new ArrayList(); + while (unsaved.hasNext()) { + var row = unsaved.next(); + map.put(row.customerId(), row); + result.add(row); + } + ; + return result; + } + ; +} diff --git a/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/customers/CustomersRow.java b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/customers/CustomersRow.java new file mode 100644 index 0000000000..4485ce4302 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/customers/CustomersRow.java @@ -0,0 +1,504 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.mariadb.customers; + +import com.fasterxml.jackson.annotation.JsonProperty; +import combined.mariadb.customer_status.CustomerStatusId; +import combined.mariadb.customtypes.Defaulted; +import combined.shared.FirstName; +import combined.shared.LastName; +import dev.typr.foundations.MariaTypes; +import dev.typr.foundations.RowParser; +import dev.typr.foundations.RowParsers; +import dev.typr.foundations.Tuple.Tuple14; +import dev.typr.foundations.data.Json; +import dev.typr.foundations.data.maria.MariaSet; +import java.time.LocalDateTime; +import java.util.Optional; + +/** Table: customers Primary key: customer_id */ +public record CustomersRow( + /** AUTO_INCREMENT */ + @JsonProperty("customer_id") CustomersId customerId, + /** */ + String email, + /** */ + @JsonProperty("password_hash") byte[] passwordHash, + /** */ + @JsonProperty("first_name") /* user-picked */ FirstName firstName, + /** */ + @JsonProperty("last_name") /* user-picked */ LastName lastName, + /** Default: NULL */ + Optional phone, + /** + * Default: 'pending' Points to {@link + * combined.mariadb.customer_status.CustomerStatusRow#statusCode()} + */ + CustomerStatusId status, + /** Default: 'bronze' */ + String tier, + /** Default: NULL */ + Optional preferences, + /** Default: NULL */ + @JsonProperty("marketing_flags") Optional marketingFlags, + /** Default: NULL */ + Optional notes, + /** Default: current_timestamp(6) */ + @JsonProperty("created_at") LocalDateTime createdAt, + /** Default: current_timestamp(6) */ + @JsonProperty("updated_at") LocalDateTime updatedAt, + /** Default: NULL */ + @JsonProperty("last_login_at") Optional lastLoginAt) + implements Tuple14< + CustomersId, + String, + byte[], /* user-picked */ + FirstName, /* user-picked */ + LastName, + Optional, + CustomerStatusId, + String, + Optional, + Optional, + Optional, + LocalDateTime, + LocalDateTime, + Optional> { + /** AUTO_INCREMENT */ + public CustomersRow withCustomerId(CustomersId customerId) { + return new CustomersRow( + customerId, + email, + passwordHash, + firstName, + lastName, + phone, + status, + tier, + preferences, + marketingFlags, + notes, + createdAt, + updatedAt, + lastLoginAt); + } + ; + + /** */ + public CustomersRow withEmail(String email) { + return new CustomersRow( + customerId, + email, + passwordHash, + firstName, + lastName, + phone, + status, + tier, + preferences, + marketingFlags, + notes, + createdAt, + updatedAt, + lastLoginAt); + } + ; + + /** */ + public CustomersRow withPasswordHash(byte[] passwordHash) { + return new CustomersRow( + customerId, + email, + passwordHash, + firstName, + lastName, + phone, + status, + tier, + preferences, + marketingFlags, + notes, + createdAt, + updatedAt, + lastLoginAt); + } + ; + + /** */ + public CustomersRow withFirstName(/* user-picked */ FirstName firstName) { + return new CustomersRow( + customerId, + email, + passwordHash, + firstName, + lastName, + phone, + status, + tier, + preferences, + marketingFlags, + notes, + createdAt, + updatedAt, + lastLoginAt); + } + ; + + /** */ + public CustomersRow withLastName(/* user-picked */ LastName lastName) { + return new CustomersRow( + customerId, + email, + passwordHash, + firstName, + lastName, + phone, + status, + tier, + preferences, + marketingFlags, + notes, + createdAt, + updatedAt, + lastLoginAt); + } + ; + + /** Default: NULL */ + public CustomersRow withPhone(Optional phone) { + return new CustomersRow( + customerId, + email, + passwordHash, + firstName, + lastName, + phone, + status, + tier, + preferences, + marketingFlags, + notes, + createdAt, + updatedAt, + lastLoginAt); + } + ; + + /** + * Default: 'pending' Points to {@link + * combined.mariadb.customer_status.CustomerStatusRow#statusCode()} + */ + public CustomersRow withStatus(CustomerStatusId status) { + return new CustomersRow( + customerId, + email, + passwordHash, + firstName, + lastName, + phone, + status, + tier, + preferences, + marketingFlags, + notes, + createdAt, + updatedAt, + lastLoginAt); + } + ; + + /** Default: 'bronze' */ + public CustomersRow withTier(String tier) { + return new CustomersRow( + customerId, + email, + passwordHash, + firstName, + lastName, + phone, + status, + tier, + preferences, + marketingFlags, + notes, + createdAt, + updatedAt, + lastLoginAt); + } + ; + + /** Default: NULL */ + public CustomersRow withPreferences(Optional preferences) { + return new CustomersRow( + customerId, + email, + passwordHash, + firstName, + lastName, + phone, + status, + tier, + preferences, + marketingFlags, + notes, + createdAt, + updatedAt, + lastLoginAt); + } + ; + + /** Default: NULL */ + public CustomersRow withMarketingFlags(Optional marketingFlags) { + return new CustomersRow( + customerId, + email, + passwordHash, + firstName, + lastName, + phone, + status, + tier, + preferences, + marketingFlags, + notes, + createdAt, + updatedAt, + lastLoginAt); + } + ; + + /** Default: NULL */ + public CustomersRow withNotes(Optional notes) { + return new CustomersRow( + customerId, + email, + passwordHash, + firstName, + lastName, + phone, + status, + tier, + preferences, + marketingFlags, + notes, + createdAt, + updatedAt, + lastLoginAt); + } + ; + + /** Default: current_timestamp(6) */ + public CustomersRow withCreatedAt(LocalDateTime createdAt) { + return new CustomersRow( + customerId, + email, + passwordHash, + firstName, + lastName, + phone, + status, + tier, + preferences, + marketingFlags, + notes, + createdAt, + updatedAt, + lastLoginAt); + } + ; + + /** Default: current_timestamp(6) */ + public CustomersRow withUpdatedAt(LocalDateTime updatedAt) { + return new CustomersRow( + customerId, + email, + passwordHash, + firstName, + lastName, + phone, + status, + tier, + preferences, + marketingFlags, + notes, + createdAt, + updatedAt, + lastLoginAt); + } + ; + + /** Default: NULL */ + public CustomersRow withLastLoginAt(Optional lastLoginAt) { + return new CustomersRow( + customerId, + email, + passwordHash, + firstName, + lastName, + phone, + status, + tier, + preferences, + marketingFlags, + notes, + createdAt, + updatedAt, + lastLoginAt); + } + ; + + public static RowParser _rowParser = + RowParsers.of( + CustomersId.mariaType, + MariaTypes.varchar, + MariaTypes.binary, + FirstName.mariaType, + LastName.mariaType, + MariaTypes.varchar.opt(), + CustomerStatusId.mariaType, + MariaTypes.text, + MariaTypes.json.opt(), + MariaTypes.set.opt(), + MariaTypes.text.opt(), + MariaTypes.datetime, + MariaTypes.datetime, + MariaTypes.datetime.opt(), + CustomersRow::new, + row -> + new Object[] { + row.customerId(), + row.email(), + row.passwordHash(), + row.firstName(), + row.lastName(), + row.phone(), + row.status(), + row.tier(), + row.preferences(), + row.marketingFlags(), + row.notes(), + row.createdAt(), + row.updatedAt(), + row.lastLoginAt() + }); + ; + + @Override + public CustomersId _1() { + return customerId; + } + ; + + @Override + public Optional _10() { + return marketingFlags; + } + ; + + @Override + public Optional _11() { + return notes; + } + ; + + @Override + public LocalDateTime _12() { + return createdAt; + } + ; + + @Override + public LocalDateTime _13() { + return updatedAt; + } + ; + + @Override + public Optional _14() { + return lastLoginAt; + } + ; + + @Override + public String _2() { + return email; + } + ; + + @Override + public byte[] _3() { + return passwordHash; + } + ; + + @Override + public /* user-picked */ FirstName _4() { + return firstName; + } + ; + + @Override + public /* user-picked */ LastName _5() { + return lastName; + } + ; + + @Override + public Optional _6() { + return phone; + } + ; + + @Override + public CustomerStatusId _7() { + return status; + } + ; + + @Override + public String _8() { + return tier; + } + ; + + @Override + public Optional _9() { + return preferences; + } + ; + + public CustomersId id() { + return customerId; + } + ; + + public CustomersRowUnsaved toUnsavedRow( + Defaulted> phone, + Defaulted status, + Defaulted tier, + Defaulted> preferences, + Defaulted> marketingFlags, + Defaulted> notes, + Defaulted createdAt, + Defaulted updatedAt, + Defaulted> lastLoginAt) { + return new CustomersRowUnsaved( + email, + passwordHash, + firstName, + lastName, + phone, + status, + tier, + preferences, + marketingFlags, + notes, + createdAt, + updatedAt, + lastLoginAt); + } + ; +} diff --git a/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/customers/CustomersRowUnsaved.java b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/customers/CustomersRowUnsaved.java new file mode 100644 index 0000000000..aa82af7a54 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/customers/CustomersRowUnsaved.java @@ -0,0 +1,354 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.mariadb.customers; + +import com.fasterxml.jackson.annotation.JsonProperty; +import combined.mariadb.customer_status.CustomerStatusId; +import combined.mariadb.customtypes.Defaulted; +import combined.mariadb.customtypes.Defaulted.UseDefault; +import combined.shared.FirstName; +import combined.shared.LastName; +import dev.typr.foundations.data.Json; +import dev.typr.foundations.data.maria.MariaSet; +import java.time.LocalDateTime; +import java.util.Optional; + +/** This class corresponds to a row in table `customers` which has not been persisted yet */ +public record CustomersRowUnsaved( + /** */ + String email, + /** */ + @JsonProperty("password_hash") byte[] passwordHash, + /** */ + @JsonProperty("first_name") /* user-picked */ FirstName firstName, + /** */ + @JsonProperty("last_name") /* user-picked */ LastName lastName, + /** Default: NULL */ + Defaulted> phone, + /** + * Default: 'pending' Points to {@link + * combined.mariadb.customer_status.CustomerStatusRow#statusCode()} + */ + Defaulted status, + /** Default: 'bronze' */ + Defaulted tier, + /** Default: NULL */ + Defaulted> preferences, + /** Default: NULL */ + @JsonProperty("marketing_flags") Defaulted> marketingFlags, + /** Default: NULL */ + Defaulted> notes, + /** Default: current_timestamp(6) */ + @JsonProperty("created_at") Defaulted createdAt, + /** Default: current_timestamp(6) */ + @JsonProperty("updated_at") Defaulted updatedAt, + /** Default: NULL */ + @JsonProperty("last_login_at") Defaulted> lastLoginAt) { + public CustomersRowUnsaved( + /** */ + String email, + /** */ + @JsonProperty("password_hash") byte[] passwordHash, + /** */ + @JsonProperty("first_name") /* user-picked */ FirstName firstName, + /** */ + @JsonProperty("last_name") /* user-picked */ LastName lastName) { + this( + email, + passwordHash, + firstName, + lastName, + new UseDefault<>(), + new UseDefault<>(), + new UseDefault<>(), + new UseDefault<>(), + new UseDefault<>(), + new UseDefault<>(), + new UseDefault<>(), + new UseDefault<>(), + new UseDefault<>()); + } + ; + + /** */ + public CustomersRowUnsaved withEmail(String email) { + return new CustomersRowUnsaved( + email, + passwordHash, + firstName, + lastName, + phone, + status, + tier, + preferences, + marketingFlags, + notes, + createdAt, + updatedAt, + lastLoginAt); + } + ; + + /** */ + public CustomersRowUnsaved withPasswordHash(byte[] passwordHash) { + return new CustomersRowUnsaved( + email, + passwordHash, + firstName, + lastName, + phone, + status, + tier, + preferences, + marketingFlags, + notes, + createdAt, + updatedAt, + lastLoginAt); + } + ; + + /** */ + public CustomersRowUnsaved withFirstName(/* user-picked */ FirstName firstName) { + return new CustomersRowUnsaved( + email, + passwordHash, + firstName, + lastName, + phone, + status, + tier, + preferences, + marketingFlags, + notes, + createdAt, + updatedAt, + lastLoginAt); + } + ; + + /** */ + public CustomersRowUnsaved withLastName(/* user-picked */ LastName lastName) { + return new CustomersRowUnsaved( + email, + passwordHash, + firstName, + lastName, + phone, + status, + tier, + preferences, + marketingFlags, + notes, + createdAt, + updatedAt, + lastLoginAt); + } + ; + + /** Default: NULL */ + public CustomersRowUnsaved withPhone(Defaulted> phone) { + return new CustomersRowUnsaved( + email, + passwordHash, + firstName, + lastName, + phone, + status, + tier, + preferences, + marketingFlags, + notes, + createdAt, + updatedAt, + lastLoginAt); + } + ; + + /** + * Default: 'pending' Points to {@link + * combined.mariadb.customer_status.CustomerStatusRow#statusCode()} + */ + public CustomersRowUnsaved withStatus(Defaulted status) { + return new CustomersRowUnsaved( + email, + passwordHash, + firstName, + lastName, + phone, + status, + tier, + preferences, + marketingFlags, + notes, + createdAt, + updatedAt, + lastLoginAt); + } + ; + + /** Default: 'bronze' */ + public CustomersRowUnsaved withTier(Defaulted tier) { + return new CustomersRowUnsaved( + email, + passwordHash, + firstName, + lastName, + phone, + status, + tier, + preferences, + marketingFlags, + notes, + createdAt, + updatedAt, + lastLoginAt); + } + ; + + /** Default: NULL */ + public CustomersRowUnsaved withPreferences(Defaulted> preferences) { + return new CustomersRowUnsaved( + email, + passwordHash, + firstName, + lastName, + phone, + status, + tier, + preferences, + marketingFlags, + notes, + createdAt, + updatedAt, + lastLoginAt); + } + ; + + /** Default: NULL */ + public CustomersRowUnsaved withMarketingFlags(Defaulted> marketingFlags) { + return new CustomersRowUnsaved( + email, + passwordHash, + firstName, + lastName, + phone, + status, + tier, + preferences, + marketingFlags, + notes, + createdAt, + updatedAt, + lastLoginAt); + } + ; + + /** Default: NULL */ + public CustomersRowUnsaved withNotes(Defaulted> notes) { + return new CustomersRowUnsaved( + email, + passwordHash, + firstName, + lastName, + phone, + status, + tier, + preferences, + marketingFlags, + notes, + createdAt, + updatedAt, + lastLoginAt); + } + ; + + /** Default: current_timestamp(6) */ + public CustomersRowUnsaved withCreatedAt(Defaulted createdAt) { + return new CustomersRowUnsaved( + email, + passwordHash, + firstName, + lastName, + phone, + status, + tier, + preferences, + marketingFlags, + notes, + createdAt, + updatedAt, + lastLoginAt); + } + ; + + /** Default: current_timestamp(6) */ + public CustomersRowUnsaved withUpdatedAt(Defaulted updatedAt) { + return new CustomersRowUnsaved( + email, + passwordHash, + firstName, + lastName, + phone, + status, + tier, + preferences, + marketingFlags, + notes, + createdAt, + updatedAt, + lastLoginAt); + } + ; + + /** Default: NULL */ + public CustomersRowUnsaved withLastLoginAt(Defaulted> lastLoginAt) { + return new CustomersRowUnsaved( + email, + passwordHash, + firstName, + lastName, + phone, + status, + tier, + preferences, + marketingFlags, + notes, + createdAt, + updatedAt, + lastLoginAt); + } + ; + + public CustomersRow toRow( + java.util.function.Supplier> phoneDefault, + java.util.function.Supplier statusDefault, + java.util.function.Supplier tierDefault, + java.util.function.Supplier> preferencesDefault, + java.util.function.Supplier> marketingFlagsDefault, + java.util.function.Supplier> notesDefault, + java.util.function.Supplier createdAtDefault, + java.util.function.Supplier updatedAtDefault, + java.util.function.Supplier> lastLoginAtDefault, + java.util.function.Supplier customerIdDefault) { + return new CustomersRow( + customerIdDefault.get(), + email, + passwordHash, + firstName, + lastName, + phone.getOrElse(phoneDefault), + status.getOrElse(statusDefault), + tier.getOrElse(tierDefault), + preferences.getOrElse(preferencesDefault), + marketingFlags.getOrElse(marketingFlagsDefault), + notes.getOrElse(notesDefault), + createdAt.getOrElse(createdAtDefault), + updatedAt.getOrElse(updatedAtDefault), + lastLoginAt.getOrElse(lastLoginAtDefault)); + } + ; +} diff --git a/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/customtypes/Defaulted.java b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/customtypes/Defaulted.java new file mode 100644 index 0000000000..63858a94fd --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/customtypes/Defaulted.java @@ -0,0 +1,72 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.mariadb.customtypes; + +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import combined.mariadb.DefaultedDeserializer; +import combined.mariadb.DefaultedSerializer; + +/** This signals a value where if you don't provide it, postgres will generate it for you */ +@JsonSerialize(using = DefaultedSerializer.class) +@JsonDeserialize(using = DefaultedDeserializer.class) +public sealed interface Defaulted permits Defaulted.Provided, Defaulted.UseDefault { + record Provided(T value) implements Defaulted { + public Provided withValue(T value) { + return new Provided<>(value); + } + ; + + @Override + public U fold( + java.util.function.Supplier onDefault, java.util.function.Function onProvided) { + return onProvided.apply(value); + } + ; + + @Override + public T getOrElse(java.util.function.Supplier onDefault) { + return value; + } + ; + + @Override + public void visit(java.lang.Runnable onDefault, java.util.function.Consumer onProvided) { + onProvided.accept(value); + } + ; + } + ; + + record UseDefault() implements Defaulted { + @Override + public U fold( + java.util.function.Supplier onDefault, java.util.function.Function onProvided) { + return onDefault.get(); + } + ; + + @Override + public T getOrElse(java.util.function.Supplier onDefault) { + return onDefault.get(); + } + ; + + @Override + public void visit(java.lang.Runnable onDefault, java.util.function.Consumer onProvided) { + onDefault.run(); + } + ; + } + ; + + U fold( + java.util.function.Supplier onDefault, java.util.function.Function onProvided); + + T getOrElse(java.util.function.Supplier onDefault); + + void visit(java.lang.Runnable onDefault, java.util.function.Consumer onProvided); +} diff --git a/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/products/ProductsFields.java b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/products/ProductsFields.java new file mode 100644 index 0000000000..1afc05fe21 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/products/ProductsFields.java @@ -0,0 +1,389 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.mariadb.products; + +import combined.mariadb.brands.BrandsFields; +import combined.mariadb.brands.BrandsId; +import combined.mariadb.brands.BrandsRow; +import dev.typr.foundations.MariaTypes; +import dev.typr.foundations.RowParser; +import dev.typr.foundations.data.Json; +import dev.typr.foundations.data.maria.MariaSet; +import dev.typr.foundations.dsl.FieldsBase; +import dev.typr.foundations.dsl.ForeignKey; +import dev.typr.foundations.dsl.Path; +import dev.typr.foundations.dsl.RelationStructure; +import dev.typr.foundations.dsl.SqlExpr; +import dev.typr.foundations.dsl.SqlExpr.Field; +import dev.typr.foundations.dsl.SqlExpr.FieldLike; +import dev.typr.foundations.dsl.SqlExpr.IdField; +import dev.typr.foundations.dsl.SqlExpr.OptField; +import dev.typr.foundations.dsl.TupleExpr.TupleExpr18; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.List; +import java.util.Optional; + +public class ProductsFields + extends TupleExpr18< + ProductsId, + String, + BrandsId, + String, + String, + String, + BigDecimal, + BigDecimal, + BigDecimal, + Json, + String, + String, + MariaSet, + Json, + Json, + LocalDateTime, + LocalDateTime, + LocalDateTime> + implements RelationStructure, FieldsBase { + List _path; + + public ProductsFields(List _path) { + this._path = _path; + } + + public static ProductsFields structure = new ProductsFields(java.util.Collections.emptyList()); + + public IdField productId() { + return new IdField( + _path, + "product_id", + ProductsRow::productId, + Optional.empty(), + Optional.empty(), + (row, value) -> row.withProductId(value), + ProductsId.mariaType); + } + + public Field sku() { + return new Field( + _path, + "sku", + ProductsRow::sku, + Optional.empty(), + Optional.empty(), + (row, value) -> row.withSku(value), + MariaTypes.varchar); + } + + public OptField brandId() { + return new OptField( + _path, + "brand_id", + ProductsRow::brandId, + Optional.empty(), + Optional.empty(), + (row, value) -> row.withBrandId(value), + BrandsId.mariaType); + } + + public Field name() { + return new Field( + _path, + "name", + ProductsRow::name, + Optional.empty(), + Optional.empty(), + (row, value) -> row.withName(value), + MariaTypes.varchar); + } + + public OptField shortDescription() { + return new OptField( + _path, + "short_description", + ProductsRow::shortDescription, + Optional.empty(), + Optional.empty(), + (row, value) -> row.withShortDescription(value), + MariaTypes.varchar); + } + + public OptField fullDescription() { + return new OptField( + _path, + "full_description", + ProductsRow::fullDescription, + Optional.empty(), + Optional.empty(), + (row, value) -> row.withFullDescription(value), + MariaTypes.longtext); + } + + public Field basePrice() { + return new Field( + _path, + "base_price", + ProductsRow::basePrice, + Optional.empty(), + Optional.empty(), + (row, value) -> row.withBasePrice(value), + MariaTypes.numeric); + } + + public OptField costPrice() { + return new OptField( + _path, + "cost_price", + ProductsRow::costPrice, + Optional.empty(), + Optional.empty(), + (row, value) -> row.withCostPrice(value), + MariaTypes.numeric); + } + + public OptField weightKg() { + return new OptField( + _path, + "weight_kg", + ProductsRow::weightKg, + Optional.empty(), + Optional.empty(), + (row, value) -> row.withWeightKg(value), + MariaTypes.numeric); + } + + public OptField dimensionsJson() { + return new OptField( + _path, + "dimensions_json", + ProductsRow::dimensionsJson, + Optional.empty(), + Optional.empty(), + (row, value) -> row.withDimensionsJson(value), + MariaTypes.json); + } + + public Field status() { + return new Field( + _path, + "status", + ProductsRow::status, + Optional.empty(), + Optional.empty(), + (row, value) -> row.withStatus(value), + MariaTypes.text); + } + + public Field taxClass() { + return new Field( + _path, + "tax_class", + ProductsRow::taxClass, + Optional.empty(), + Optional.empty(), + (row, value) -> row.withTaxClass(value), + MariaTypes.text); + } + + public OptField tags() { + return new OptField( + _path, + "tags", + ProductsRow::tags, + Optional.empty(), + Optional.empty(), + (row, value) -> row.withTags(value), + MariaTypes.set); + } + + public OptField attributes() { + return new OptField( + _path, + "attributes", + ProductsRow::attributes, + Optional.empty(), + Optional.empty(), + (row, value) -> row.withAttributes(value), + MariaTypes.json); + } + + public OptField seoMetadata() { + return new OptField( + _path, + "seo_metadata", + ProductsRow::seoMetadata, + Optional.empty(), + Optional.empty(), + (row, value) -> row.withSeoMetadata(value), + MariaTypes.json); + } + + public Field createdAt() { + return new Field( + _path, + "created_at", + ProductsRow::createdAt, + Optional.empty(), + Optional.empty(), + (row, value) -> row.withCreatedAt(value), + MariaTypes.datetime); + } + + public Field updatedAt() { + return new Field( + _path, + "updated_at", + ProductsRow::updatedAt, + Optional.empty(), + Optional.empty(), + (row, value) -> row.withUpdatedAt(value), + MariaTypes.datetime); + } + + public OptField publishedAt() { + return new OptField( + _path, + "published_at", + ProductsRow::publishedAt, + Optional.empty(), + Optional.empty(), + (row, value) -> row.withPublishedAt(value), + MariaTypes.datetime); + } + + @Override + public List _path() { + return _path; + } + + public ForeignKey fkBrands() { + return ForeignKey.of("fk_product_brand") + .withColumnPair(brandId(), BrandsFields::brandId); + } + + @Override + public List> columns() { + return java.util.List.of( + this.productId(), + this.sku(), + this.brandId(), + this.name(), + this.shortDescription(), + this.fullDescription(), + this.basePrice(), + this.costPrice(), + this.weightKg(), + this.dimensionsJson(), + this.status(), + this.taxClass(), + this.tags(), + this.attributes(), + this.seoMetadata(), + this.createdAt(), + this.updatedAt(), + this.publishedAt()); + } + + @Override + public RowParser rowParser() { + return ProductsRow._rowParser; + } + + @Override + public RelationStructure withPaths(List _path) { + return new ProductsFields(_path); + } + + @Override + public SqlExpr _1() { + return productId(); + } + + @Override + public SqlExpr _2() { + return sku(); + } + + @Override + public SqlExpr _3() { + return brandId(); + } + + @Override + public SqlExpr _4() { + return name(); + } + + @Override + public SqlExpr _5() { + return shortDescription(); + } + + @Override + public SqlExpr _6() { + return fullDescription(); + } + + @Override + public SqlExpr _7() { + return basePrice(); + } + + @Override + public SqlExpr _8() { + return costPrice(); + } + + @Override + public SqlExpr _9() { + return weightKg(); + } + + @Override + public SqlExpr _10() { + return dimensionsJson(); + } + + @Override + public SqlExpr _11() { + return status(); + } + + @Override + public SqlExpr _12() { + return taxClass(); + } + + @Override + public SqlExpr _13() { + return tags(); + } + + @Override + public SqlExpr _14() { + return attributes(); + } + + @Override + public SqlExpr _15() { + return seoMetadata(); + } + + @Override + public SqlExpr _16() { + return createdAt(); + } + + @Override + public SqlExpr _17() { + return updatedAt(); + } + + @Override + public SqlExpr _18() { + return publishedAt(); + } +} diff --git a/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/products/ProductsId.java b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/products/ProductsId.java new file mode 100644 index 0000000000..fbede13569 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/products/ProductsId.java @@ -0,0 +1,32 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.mariadb.products; + +import com.fasterxml.jackson.annotation.JsonValue; +import dev.typr.foundations.MariaType; +import dev.typr.foundations.MariaTypes; +import dev.typr.foundations.data.Uint8; +import dev.typr.foundations.dsl.Bijection; + +/** Type for the primary key of table `products` */ +public record ProductsId(@JsonValue Uint8 value) { + public ProductsId withValue(Uint8 value) { + return new ProductsId(value); + } + ; + + @Override + public java.lang.String toString() { + return value.toString(); + } + ; + + public static Bijection bijection = + Bijection.of(ProductsId::value, ProductsId::new); + + public static MariaType mariaType = + MariaTypes.bigintUnsigned.bimap(ProductsId::new, ProductsId::value); +} diff --git a/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/products/ProductsRepo.java b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/products/ProductsRepo.java new file mode 100644 index 0000000000..d577ff4f4f --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/products/ProductsRepo.java @@ -0,0 +1,47 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.mariadb.products; + +import dev.typr.foundations.dsl.DeleteBuilder; +import dev.typr.foundations.dsl.SelectBuilder; +import dev.typr.foundations.dsl.UpdateBuilder; +import java.sql.Connection; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Optional; + +public interface ProductsRepo { + DeleteBuilder delete(); + + Boolean deleteById(ProductsId productId, Connection c); + + Integer deleteByIds(ProductsId[] productIds, Connection c); + + ProductsRow insert(ProductsRow unsaved, Connection c); + + ProductsRow insert(ProductsRowUnsaved unsaved, Connection c); + + SelectBuilder select(); + + List selectAll(Connection c); + + Optional selectById(ProductsId productId, Connection c); + + List selectByIds(ProductsId[] productIds, Connection c); + + Map selectByIdsTracked(ProductsId[] productIds, Connection c); + + Optional selectByUniqueSku(String sku, Connection c); + + UpdateBuilder update(); + + Boolean update(ProductsRow row, Connection c); + + ProductsRow upsert(ProductsRow unsaved, Connection c); + + List upsertBatch(Iterator unsaved, Connection c); +} diff --git a/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/products/ProductsRepoImpl.java b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/products/ProductsRepoImpl.java new file mode 100644 index 0000000000..46153ca688 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/products/ProductsRepoImpl.java @@ -0,0 +1,511 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.mariadb.products; + +import static dev.typr.foundations.Fragment.interpolate; + +import combined.mariadb.brands.BrandsId; +import dev.typr.foundations.Fragment; +import dev.typr.foundations.MariaTypes; +import dev.typr.foundations.dsl.DeleteBuilder; +import dev.typr.foundations.dsl.Dialect; +import dev.typr.foundations.dsl.SelectBuilder; +import dev.typr.foundations.dsl.UpdateBuilder; +import java.sql.Connection; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Optional; + +public class ProductsRepoImpl implements ProductsRepo { + @Override + public DeleteBuilder delete() { + return DeleteBuilder.of("`products`", ProductsFields.structure, Dialect.MARIADB); + } + + @Override + public Boolean deleteById(ProductsId productId, Connection c) { + return interpolate( + Fragment.lit("delete from `products` where `product_id` = "), + Fragment.encode(ProductsId.mariaType, productId), + Fragment.lit("")) + .update() + .runUnchecked(c) + > 0; + } + + @Override + public Integer deleteByIds(ProductsId[] productIds, Connection c) { + ArrayList fragments = new ArrayList<>(); + for (var id : productIds) { + fragments.add(Fragment.encode(ProductsId.mariaType, id)); + } + ; + return Fragment.interpolate( + Fragment.lit("delete from `products` where `product_id` in ("), + Fragment.comma(fragments), + Fragment.lit(")")) + .update() + .runUnchecked(c); + } + + @Override + public ProductsRow insert(ProductsRow unsaved, Connection c) { + return interpolate( + Fragment.lit( + "insert into `products`(`sku`, `brand_id`, `name`, `short_description`," + + " `full_description`, `base_price`, `cost_price`, `weight_kg`," + + " `dimensions_json`, `status`, `tax_class`, `tags`, `attributes`," + + " `seo_metadata`, `created_at`, `updated_at`, `published_at`)\n" + + "values ("), + Fragment.encode(MariaTypes.varchar, unsaved.sku()), + Fragment.lit(", "), + Fragment.encode(BrandsId.mariaType.opt(), unsaved.brandId()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.varchar, unsaved.name()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.varchar.opt(), unsaved.shortDescription()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.longtext.opt(), unsaved.fullDescription()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.numeric, unsaved.basePrice()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.numeric.opt(), unsaved.costPrice()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.numeric.opt(), unsaved.weightKg()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.json.opt(), unsaved.dimensionsJson()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.text, unsaved.status()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.text, unsaved.taxClass()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.set.opt(), unsaved.tags()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.json.opt(), unsaved.attributes()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.json.opt(), unsaved.seoMetadata()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.datetime, unsaved.createdAt()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.datetime, unsaved.updatedAt()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.datetime.opt(), unsaved.publishedAt()), + Fragment.lit( + ")\n" + + "RETURNING `product_id`, `sku`, `brand_id`, `name`, `short_description`," + + " `full_description`, `base_price`, `cost_price`, `weight_kg`," + + " `dimensions_json`, `status`, `tax_class`, `tags`, `attributes`," + + " `seo_metadata`, `created_at`, `updated_at`, `published_at`\n")) + .updateReturning(ProductsRow._rowParser.exactlyOne()) + .runUnchecked(c); + } + + @Override + public ProductsRow insert(ProductsRowUnsaved unsaved, Connection c) { + ArrayList columns = new ArrayList<>(); + ; + ArrayList values = new ArrayList<>(); + ; + columns.add(Fragment.lit("`sku`")); + values.add(interpolate(Fragment.encode(MariaTypes.varchar, unsaved.sku()), Fragment.lit(""))); + columns.add(Fragment.lit("`name`")); + values.add(interpolate(Fragment.encode(MariaTypes.varchar, unsaved.name()), Fragment.lit(""))); + columns.add(Fragment.lit("`base_price`")); + values.add( + interpolate(Fragment.encode(MariaTypes.numeric, unsaved.basePrice()), Fragment.lit(""))); + unsaved + .brandId() + .visit( + () -> {}, + value -> { + columns.add(Fragment.lit("`brand_id`")); + values.add( + interpolate(Fragment.encode(BrandsId.mariaType.opt(), value), Fragment.lit(""))); + }); + ; + unsaved + .shortDescription() + .visit( + () -> {}, + value -> { + columns.add(Fragment.lit("`short_description`")); + values.add( + interpolate(Fragment.encode(MariaTypes.varchar.opt(), value), Fragment.lit(""))); + }); + ; + unsaved + .fullDescription() + .visit( + () -> {}, + value -> { + columns.add(Fragment.lit("`full_description`")); + values.add( + interpolate(Fragment.encode(MariaTypes.longtext.opt(), value), Fragment.lit(""))); + }); + ; + unsaved + .costPrice() + .visit( + () -> {}, + value -> { + columns.add(Fragment.lit("`cost_price`")); + values.add( + interpolate(Fragment.encode(MariaTypes.numeric.opt(), value), Fragment.lit(""))); + }); + ; + unsaved + .weightKg() + .visit( + () -> {}, + value -> { + columns.add(Fragment.lit("`weight_kg`")); + values.add( + interpolate(Fragment.encode(MariaTypes.numeric.opt(), value), Fragment.lit(""))); + }); + ; + unsaved + .dimensionsJson() + .visit( + () -> {}, + value -> { + columns.add(Fragment.lit("`dimensions_json`")); + values.add( + interpolate(Fragment.encode(MariaTypes.json.opt(), value), Fragment.lit(""))); + }); + ; + unsaved + .status() + .visit( + () -> {}, + value -> { + columns.add(Fragment.lit("`status`")); + values.add(interpolate(Fragment.encode(MariaTypes.text, value), Fragment.lit(""))); + }); + ; + unsaved + .taxClass() + .visit( + () -> {}, + value -> { + columns.add(Fragment.lit("`tax_class`")); + values.add(interpolate(Fragment.encode(MariaTypes.text, value), Fragment.lit(""))); + }); + ; + unsaved + .tags() + .visit( + () -> {}, + value -> { + columns.add(Fragment.lit("`tags`")); + values.add( + interpolate(Fragment.encode(MariaTypes.set.opt(), value), Fragment.lit(""))); + }); + ; + unsaved + .attributes() + .visit( + () -> {}, + value -> { + columns.add(Fragment.lit("`attributes`")); + values.add( + interpolate(Fragment.encode(MariaTypes.json.opt(), value), Fragment.lit(""))); + }); + ; + unsaved + .seoMetadata() + .visit( + () -> {}, + value -> { + columns.add(Fragment.lit("`seo_metadata`")); + values.add( + interpolate(Fragment.encode(MariaTypes.json.opt(), value), Fragment.lit(""))); + }); + ; + unsaved + .createdAt() + .visit( + () -> {}, + value -> { + columns.add(Fragment.lit("`created_at`")); + values.add( + interpolate(Fragment.encode(MariaTypes.datetime, value), Fragment.lit(""))); + }); + ; + unsaved + .updatedAt() + .visit( + () -> {}, + value -> { + columns.add(Fragment.lit("`updated_at`")); + values.add( + interpolate(Fragment.encode(MariaTypes.datetime, value), Fragment.lit(""))); + }); + ; + unsaved + .publishedAt() + .visit( + () -> {}, + value -> { + columns.add(Fragment.lit("`published_at`")); + values.add( + interpolate(Fragment.encode(MariaTypes.datetime.opt(), value), Fragment.lit(""))); + }); + ; + Fragment q = + interpolate( + Fragment.lit("insert into `products`("), + Fragment.comma(columns), + Fragment.lit(")\nvalues ("), + Fragment.comma(values), + Fragment.lit( + ")\n" + + "RETURNING `product_id`, `sku`, `brand_id`, `name`, `short_description`," + + " `full_description`, `base_price`, `cost_price`, `weight_kg`," + + " `dimensions_json`, `status`, `tax_class`, `tags`, `attributes`," + + " `seo_metadata`, `created_at`, `updated_at`, `published_at`\n")); + ; + return q.updateReturning(ProductsRow._rowParser.exactlyOne()).runUnchecked(c); + } + + @Override + public SelectBuilder select() { + return SelectBuilder.of( + "`products`", ProductsFields.structure, ProductsRow._rowParser, Dialect.MARIADB); + } + + @Override + public List selectAll(Connection c) { + return interpolate( + Fragment.lit( + "select `product_id`, `sku`, `brand_id`, `name`, `short_description`," + + " `full_description`, `base_price`, `cost_price`, `weight_kg`," + + " `dimensions_json`, `status`, `tax_class`, `tags`, `attributes`," + + " `seo_metadata`, `created_at`, `updated_at`, `published_at`\n" + + "from `products`\n")) + .query(ProductsRow._rowParser.all()) + .runUnchecked(c); + } + + @Override + public Optional selectById(ProductsId productId, Connection c) { + return interpolate( + Fragment.lit( + "select `product_id`, `sku`, `brand_id`, `name`, `short_description`," + + " `full_description`, `base_price`, `cost_price`, `weight_kg`," + + " `dimensions_json`, `status`, `tax_class`, `tags`, `attributes`," + + " `seo_metadata`, `created_at`, `updated_at`, `published_at`\n" + + "from `products`\n" + + "where `product_id` = "), + Fragment.encode(ProductsId.mariaType, productId), + Fragment.lit("")) + .query(ProductsRow._rowParser.first()) + .runUnchecked(c); + } + + @Override + public List selectByIds(ProductsId[] productIds, Connection c) { + ArrayList fragments = new ArrayList<>(); + for (var id : productIds) { + fragments.add(Fragment.encode(ProductsId.mariaType, id)); + } + ; + return Fragment.interpolate( + Fragment.lit( + "select `product_id`, `sku`, `brand_id`, `name`, `short_description`," + + " `full_description`, `base_price`, `cost_price`, `weight_kg`," + + " `dimensions_json`, `status`, `tax_class`, `tags`, `attributes`," + + " `seo_metadata`, `created_at`, `updated_at`, `published_at` from `products`" + + " where `product_id` in ("), + Fragment.comma(fragments), + Fragment.lit(")")) + .query(ProductsRow._rowParser.all()) + .runUnchecked(c); + } + + @Override + public Map selectByIdsTracked(ProductsId[] productIds, Connection c) { + HashMap ret = new HashMap(); + selectByIds(productIds, c).forEach(row -> ret.put(row.productId(), row)); + return ret; + } + + @Override + public Optional selectByUniqueSku(String sku, Connection c) { + return interpolate( + Fragment.lit( + "select `product_id`, `sku`, `brand_id`, `name`, `short_description`," + + " `full_description`, `base_price`, `cost_price`, `weight_kg`," + + " `dimensions_json`, `status`, `tax_class`, `tags`, `attributes`," + + " `seo_metadata`, `created_at`, `updated_at`, `published_at`\n" + + "from `products`\n" + + "where `sku` = "), + Fragment.encode(MariaTypes.varchar, sku), + Fragment.lit("\n")) + .query(ProductsRow._rowParser.first()) + .runUnchecked(c); + } + + @Override + public UpdateBuilder update() { + return UpdateBuilder.of( + "`products`", ProductsFields.structure, ProductsRow._rowParser, Dialect.MARIADB); + } + + @Override + public Boolean update(ProductsRow row, Connection c) { + ProductsId productId = row.productId(); + ; + return interpolate( + Fragment.lit("update `products`\nset `sku` = "), + Fragment.encode(MariaTypes.varchar, row.sku()), + Fragment.lit(",\n`brand_id` = "), + Fragment.encode(BrandsId.mariaType.opt(), row.brandId()), + Fragment.lit(",\n`name` = "), + Fragment.encode(MariaTypes.varchar, row.name()), + Fragment.lit(",\n`short_description` = "), + Fragment.encode(MariaTypes.varchar.opt(), row.shortDescription()), + Fragment.lit(",\n`full_description` = "), + Fragment.encode(MariaTypes.longtext.opt(), row.fullDescription()), + Fragment.lit(",\n`base_price` = "), + Fragment.encode(MariaTypes.numeric, row.basePrice()), + Fragment.lit(",\n`cost_price` = "), + Fragment.encode(MariaTypes.numeric.opt(), row.costPrice()), + Fragment.lit(",\n`weight_kg` = "), + Fragment.encode(MariaTypes.numeric.opt(), row.weightKg()), + Fragment.lit(",\n`dimensions_json` = "), + Fragment.encode(MariaTypes.json.opt(), row.dimensionsJson()), + Fragment.lit(",\n`status` = "), + Fragment.encode(MariaTypes.text, row.status()), + Fragment.lit(",\n`tax_class` = "), + Fragment.encode(MariaTypes.text, row.taxClass()), + Fragment.lit(",\n`tags` = "), + Fragment.encode(MariaTypes.set.opt(), row.tags()), + Fragment.lit(",\n`attributes` = "), + Fragment.encode(MariaTypes.json.opt(), row.attributes()), + Fragment.lit(",\n`seo_metadata` = "), + Fragment.encode(MariaTypes.json.opt(), row.seoMetadata()), + Fragment.lit(",\n`created_at` = "), + Fragment.encode(MariaTypes.datetime, row.createdAt()), + Fragment.lit(",\n`updated_at` = "), + Fragment.encode(MariaTypes.datetime, row.updatedAt()), + Fragment.lit(",\n`published_at` = "), + Fragment.encode(MariaTypes.datetime.opt(), row.publishedAt()), + Fragment.lit("\nwhere `product_id` = "), + Fragment.encode(ProductsId.mariaType, productId), + Fragment.lit("")) + .update() + .runUnchecked(c) + > 0; + } + + @Override + public ProductsRow upsert(ProductsRow unsaved, Connection c) { + return interpolate( + Fragment.lit( + "INSERT INTO `products`(`product_id`, `sku`, `brand_id`, `name`," + + " `short_description`, `full_description`, `base_price`, `cost_price`," + + " `weight_kg`, `dimensions_json`, `status`, `tax_class`, `tags`," + + " `attributes`, `seo_metadata`, `created_at`, `updated_at`, `published_at`)\n" + + "VALUES ("), + Fragment.encode(ProductsId.mariaType, unsaved.productId()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.varchar, unsaved.sku()), + Fragment.lit(", "), + Fragment.encode(BrandsId.mariaType.opt(), unsaved.brandId()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.varchar, unsaved.name()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.varchar.opt(), unsaved.shortDescription()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.longtext.opt(), unsaved.fullDescription()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.numeric, unsaved.basePrice()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.numeric.opt(), unsaved.costPrice()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.numeric.opt(), unsaved.weightKg()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.json.opt(), unsaved.dimensionsJson()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.text, unsaved.status()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.text, unsaved.taxClass()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.set.opt(), unsaved.tags()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.json.opt(), unsaved.attributes()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.json.opt(), unsaved.seoMetadata()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.datetime, unsaved.createdAt()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.datetime, unsaved.updatedAt()), + Fragment.lit(", "), + Fragment.encode(MariaTypes.datetime.opt(), unsaved.publishedAt()), + Fragment.lit( + ")\n" + + "ON DUPLICATE KEY UPDATE `sku` = VALUES(`sku`),\n" + + "`brand_id` = VALUES(`brand_id`),\n" + + "`name` = VALUES(`name`),\n" + + "`short_description` = VALUES(`short_description`),\n" + + "`full_description` = VALUES(`full_description`),\n" + + "`base_price` = VALUES(`base_price`),\n" + + "`cost_price` = VALUES(`cost_price`),\n" + + "`weight_kg` = VALUES(`weight_kg`),\n" + + "`dimensions_json` = VALUES(`dimensions_json`),\n" + + "`status` = VALUES(`status`),\n" + + "`tax_class` = VALUES(`tax_class`),\n" + + "`tags` = VALUES(`tags`),\n" + + "`attributes` = VALUES(`attributes`),\n" + + "`seo_metadata` = VALUES(`seo_metadata`),\n" + + "`created_at` = VALUES(`created_at`),\n" + + "`updated_at` = VALUES(`updated_at`),\n" + + "`published_at` = VALUES(`published_at`)\n" + + "RETURNING `product_id`, `sku`, `brand_id`, `name`, `short_description`," + + " `full_description`, `base_price`, `cost_price`, `weight_kg`," + + " `dimensions_json`, `status`, `tax_class`, `tags`, `attributes`," + + " `seo_metadata`, `created_at`, `updated_at`, `published_at`")) + .updateReturning(ProductsRow._rowParser.exactlyOne()) + .runUnchecked(c); + } + + @Override + public List upsertBatch(Iterator unsaved, Connection c) { + return interpolate( + Fragment.lit( + "INSERT INTO `products`(`product_id`, `sku`, `brand_id`, `name`," + + " `short_description`, `full_description`, `base_price`, `cost_price`," + + " `weight_kg`, `dimensions_json`, `status`, `tax_class`, `tags`," + + " `attributes`, `seo_metadata`, `created_at`, `updated_at`, `published_at`)\n" + + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)\n" + + "ON DUPLICATE KEY UPDATE `sku` = VALUES(`sku`),\n" + + "`brand_id` = VALUES(`brand_id`),\n" + + "`name` = VALUES(`name`),\n" + + "`short_description` = VALUES(`short_description`),\n" + + "`full_description` = VALUES(`full_description`),\n" + + "`base_price` = VALUES(`base_price`),\n" + + "`cost_price` = VALUES(`cost_price`),\n" + + "`weight_kg` = VALUES(`weight_kg`),\n" + + "`dimensions_json` = VALUES(`dimensions_json`),\n" + + "`status` = VALUES(`status`),\n" + + "`tax_class` = VALUES(`tax_class`),\n" + + "`tags` = VALUES(`tags`),\n" + + "`attributes` = VALUES(`attributes`),\n" + + "`seo_metadata` = VALUES(`seo_metadata`),\n" + + "`created_at` = VALUES(`created_at`),\n" + + "`updated_at` = VALUES(`updated_at`),\n" + + "`published_at` = VALUES(`published_at`)\n" + + "RETURNING `product_id`, `sku`, `brand_id`, `name`, `short_description`," + + " `full_description`, `base_price`, `cost_price`, `weight_kg`," + + " `dimensions_json`, `status`, `tax_class`, `tags`, `attributes`," + + " `seo_metadata`, `created_at`, `updated_at`, `published_at`")) + .updateReturningEach(ProductsRow._rowParser, unsaved) + .runUnchecked(c); + } +} diff --git a/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/products/ProductsRepoMock.java b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/products/ProductsRepoMock.java new file mode 100644 index 0000000000..f7a08dc68a --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/products/ProductsRepoMock.java @@ -0,0 +1,187 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.mariadb.products; + +import dev.typr.foundations.dsl.DeleteBuilder; +import dev.typr.foundations.dsl.DeleteBuilderMock; +import dev.typr.foundations.dsl.DeleteParams; +import dev.typr.foundations.dsl.SelectBuilder; +import dev.typr.foundations.dsl.SelectBuilderMock; +import dev.typr.foundations.dsl.SelectParams; +import dev.typr.foundations.dsl.UpdateBuilder; +import dev.typr.foundations.dsl.UpdateBuilderMock; +import dev.typr.foundations.dsl.UpdateParams; +import java.sql.Connection; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.function.Function; +import java.util.stream.Collectors; + +public record ProductsRepoMock( + java.util.function.Function toRow, + HashMap map) + implements ProductsRepo { + public ProductsRepoMock(java.util.function.Function toRow) { + this(toRow, new HashMap()); + } + ; + + public ProductsRepoMock withToRow( + java.util.function.Function toRow) { + return new ProductsRepoMock(toRow, map); + } + ; + + public ProductsRepoMock withMap(HashMap map) { + return new ProductsRepoMock(toRow, map); + } + ; + + @Override + public DeleteBuilder delete() { + return new DeleteBuilderMock<>( + ProductsFields.structure, + () -> new ArrayList<>(map.values()), + DeleteParams.empty(), + row -> row.productId(), + id -> map.remove(id)); + } + ; + + @Override + public Boolean deleteById(ProductsId productId, Connection c) { + return Optional.ofNullable(map.remove(productId)).isPresent(); + } + ; + + @Override + public Integer deleteByIds(ProductsId[] productIds, Connection c) { + var count = 0; + for (var id : productIds) { + if (Optional.ofNullable(map.remove(id)).isPresent()) { + count = count + 1; + ; + } + ; + } + ; + return count; + } + ; + + @Override + public ProductsRow insert(ProductsRow unsaved, Connection c) { + if (map.containsKey(unsaved.productId())) { + throw new RuntimeException("id " + unsaved.productId() + " already exists"); + } + ; + map.put(unsaved.productId(), unsaved); + return unsaved; + } + ; + + @Override + public ProductsRow insert(ProductsRowUnsaved unsaved, Connection c) { + return insert(toRow.apply(unsaved), c); + } + ; + + @Override + public SelectBuilder select() { + return new SelectBuilderMock<>( + ProductsFields.structure, () -> new ArrayList<>(map.values()), SelectParams.empty()); + } + ; + + @Override + public List selectAll(Connection c) { + return new ArrayList<>(map.values()); + } + ; + + @Override + public Optional selectById(ProductsId productId, Connection c) { + return Optional.ofNullable(map.get(productId)); + } + ; + + @Override + public List selectByIds(ProductsId[] productIds, Connection c) { + var result = new ArrayList(); + for (var id : productIds) { + var opt = Optional.ofNullable(map.get(id)); + if (opt.isPresent()) { + result.add(opt.get()); + } + ; + } + ; + return result; + } + ; + + @Override + public Map selectByIdsTracked(ProductsId[] productIds, Connection c) { + return selectByIds(productIds, c).stream() + .collect(Collectors.toMap((ProductsRow row) -> row.productId(), Function.identity())); + } + ; + + @Override + public Optional selectByUniqueSku(String sku, Connection c) { + return new ArrayList<>(map.values()).stream().filter(v -> sku.equals(v.sku())).findFirst(); + } + ; + + @Override + public UpdateBuilder update() { + return new UpdateBuilderMock<>( + ProductsFields.structure, + () -> new ArrayList<>(map.values()), + UpdateParams.empty(), + row -> row); + } + ; + + @Override + public Boolean update(ProductsRow row, Connection c) { + var shouldUpdate = + Optional.ofNullable(map.get(row.productId())) + .filter(oldRow -> !oldRow.equals(row)) + .isPresent(); + if (shouldUpdate) { + map.put(row.productId(), row); + ; + } + ; + return shouldUpdate; + } + ; + + @Override + public ProductsRow upsert(ProductsRow unsaved, Connection c) { + map.put(unsaved.productId(), unsaved); + return unsaved; + } + ; + + @Override + public List upsertBatch(Iterator unsaved, Connection c) { + var result = new ArrayList(); + while (unsaved.hasNext()) { + var row = unsaved.next(); + map.put(row.productId(), row); + result.add(row); + } + ; + return result; + } + ; +} diff --git a/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/products/ProductsRow.java b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/products/ProductsRow.java new file mode 100644 index 0000000000..e3362f1fb8 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/products/ProductsRow.java @@ -0,0 +1,702 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.mariadb.products; + +import com.fasterxml.jackson.annotation.JsonProperty; +import combined.mariadb.brands.BrandsId; +import combined.mariadb.customtypes.Defaulted; +import dev.typr.foundations.MariaTypes; +import dev.typr.foundations.RowParser; +import dev.typr.foundations.RowParsers; +import dev.typr.foundations.Tuple.Tuple18; +import dev.typr.foundations.data.Json; +import dev.typr.foundations.data.maria.MariaSet; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.Optional; + +/** Table: products Primary key: product_id */ +public record ProductsRow( + /** AUTO_INCREMENT */ + @JsonProperty("product_id") ProductsId productId, + /** */ + String sku, + /** Default: NULL Points to {@link combined.mariadb.brands.BrandsRow#brandId()} */ + @JsonProperty("brand_id") Optional brandId, + /** */ + String name, + /** Default: NULL */ + @JsonProperty("short_description") Optional shortDescription, + /** Default: NULL */ + @JsonProperty("full_description") Optional fullDescription, + /** */ + @JsonProperty("base_price") BigDecimal basePrice, + /** Default: NULL */ + @JsonProperty("cost_price") Optional costPrice, + /** Default: NULL */ + @JsonProperty("weight_kg") Optional weightKg, + /** length, width, height in cm Default: NULL */ + @JsonProperty("dimensions_json") Optional dimensionsJson, + /** Default: 'draft' */ + String status, + /** Default: 'standard' */ + @JsonProperty("tax_class") String taxClass, + /** Default: NULL */ + Optional tags, + /** Default: NULL */ + Optional attributes, + /** Default: NULL */ + @JsonProperty("seo_metadata") Optional seoMetadata, + /** Default: current_timestamp(6) */ + @JsonProperty("created_at") LocalDateTime createdAt, + /** Default: current_timestamp(6) */ + @JsonProperty("updated_at") LocalDateTime updatedAt, + /** Default: NULL */ + @JsonProperty("published_at") Optional publishedAt) + implements Tuple18< + ProductsId, + String, + Optional, + String, + Optional, + Optional, + BigDecimal, + Optional, + Optional, + Optional, + String, + String, + Optional, + Optional, + Optional, + LocalDateTime, + LocalDateTime, + Optional> { + /** AUTO_INCREMENT */ + public ProductsRow withProductId(ProductsId productId) { + return new ProductsRow( + productId, + sku, + brandId, + name, + shortDescription, + fullDescription, + basePrice, + costPrice, + weightKg, + dimensionsJson, + status, + taxClass, + tags, + attributes, + seoMetadata, + createdAt, + updatedAt, + publishedAt); + } + ; + + /** */ + public ProductsRow withSku(String sku) { + return new ProductsRow( + productId, + sku, + brandId, + name, + shortDescription, + fullDescription, + basePrice, + costPrice, + weightKg, + dimensionsJson, + status, + taxClass, + tags, + attributes, + seoMetadata, + createdAt, + updatedAt, + publishedAt); + } + ; + + /** Default: NULL Points to {@link combined.mariadb.brands.BrandsRow#brandId()} */ + public ProductsRow withBrandId(Optional brandId) { + return new ProductsRow( + productId, + sku, + brandId, + name, + shortDescription, + fullDescription, + basePrice, + costPrice, + weightKg, + dimensionsJson, + status, + taxClass, + tags, + attributes, + seoMetadata, + createdAt, + updatedAt, + publishedAt); + } + ; + + /** */ + public ProductsRow withName(String name) { + return new ProductsRow( + productId, + sku, + brandId, + name, + shortDescription, + fullDescription, + basePrice, + costPrice, + weightKg, + dimensionsJson, + status, + taxClass, + tags, + attributes, + seoMetadata, + createdAt, + updatedAt, + publishedAt); + } + ; + + /** Default: NULL */ + public ProductsRow withShortDescription(Optional shortDescription) { + return new ProductsRow( + productId, + sku, + brandId, + name, + shortDescription, + fullDescription, + basePrice, + costPrice, + weightKg, + dimensionsJson, + status, + taxClass, + tags, + attributes, + seoMetadata, + createdAt, + updatedAt, + publishedAt); + } + ; + + /** Default: NULL */ + public ProductsRow withFullDescription(Optional fullDescription) { + return new ProductsRow( + productId, + sku, + brandId, + name, + shortDescription, + fullDescription, + basePrice, + costPrice, + weightKg, + dimensionsJson, + status, + taxClass, + tags, + attributes, + seoMetadata, + createdAt, + updatedAt, + publishedAt); + } + ; + + /** */ + public ProductsRow withBasePrice(BigDecimal basePrice) { + return new ProductsRow( + productId, + sku, + brandId, + name, + shortDescription, + fullDescription, + basePrice, + costPrice, + weightKg, + dimensionsJson, + status, + taxClass, + tags, + attributes, + seoMetadata, + createdAt, + updatedAt, + publishedAt); + } + ; + + /** Default: NULL */ + public ProductsRow withCostPrice(Optional costPrice) { + return new ProductsRow( + productId, + sku, + brandId, + name, + shortDescription, + fullDescription, + basePrice, + costPrice, + weightKg, + dimensionsJson, + status, + taxClass, + tags, + attributes, + seoMetadata, + createdAt, + updatedAt, + publishedAt); + } + ; + + /** Default: NULL */ + public ProductsRow withWeightKg(Optional weightKg) { + return new ProductsRow( + productId, + sku, + brandId, + name, + shortDescription, + fullDescription, + basePrice, + costPrice, + weightKg, + dimensionsJson, + status, + taxClass, + tags, + attributes, + seoMetadata, + createdAt, + updatedAt, + publishedAt); + } + ; + + /** length, width, height in cm Default: NULL */ + public ProductsRow withDimensionsJson(Optional dimensionsJson) { + return new ProductsRow( + productId, + sku, + brandId, + name, + shortDescription, + fullDescription, + basePrice, + costPrice, + weightKg, + dimensionsJson, + status, + taxClass, + tags, + attributes, + seoMetadata, + createdAt, + updatedAt, + publishedAt); + } + ; + + /** Default: 'draft' */ + public ProductsRow withStatus(String status) { + return new ProductsRow( + productId, + sku, + brandId, + name, + shortDescription, + fullDescription, + basePrice, + costPrice, + weightKg, + dimensionsJson, + status, + taxClass, + tags, + attributes, + seoMetadata, + createdAt, + updatedAt, + publishedAt); + } + ; + + /** Default: 'standard' */ + public ProductsRow withTaxClass(String taxClass) { + return new ProductsRow( + productId, + sku, + brandId, + name, + shortDescription, + fullDescription, + basePrice, + costPrice, + weightKg, + dimensionsJson, + status, + taxClass, + tags, + attributes, + seoMetadata, + createdAt, + updatedAt, + publishedAt); + } + ; + + /** Default: NULL */ + public ProductsRow withTags(Optional tags) { + return new ProductsRow( + productId, + sku, + brandId, + name, + shortDescription, + fullDescription, + basePrice, + costPrice, + weightKg, + dimensionsJson, + status, + taxClass, + tags, + attributes, + seoMetadata, + createdAt, + updatedAt, + publishedAt); + } + ; + + /** Default: NULL */ + public ProductsRow withAttributes(Optional attributes) { + return new ProductsRow( + productId, + sku, + brandId, + name, + shortDescription, + fullDescription, + basePrice, + costPrice, + weightKg, + dimensionsJson, + status, + taxClass, + tags, + attributes, + seoMetadata, + createdAt, + updatedAt, + publishedAt); + } + ; + + /** Default: NULL */ + public ProductsRow withSeoMetadata(Optional seoMetadata) { + return new ProductsRow( + productId, + sku, + brandId, + name, + shortDescription, + fullDescription, + basePrice, + costPrice, + weightKg, + dimensionsJson, + status, + taxClass, + tags, + attributes, + seoMetadata, + createdAt, + updatedAt, + publishedAt); + } + ; + + /** Default: current_timestamp(6) */ + public ProductsRow withCreatedAt(LocalDateTime createdAt) { + return new ProductsRow( + productId, + sku, + brandId, + name, + shortDescription, + fullDescription, + basePrice, + costPrice, + weightKg, + dimensionsJson, + status, + taxClass, + tags, + attributes, + seoMetadata, + createdAt, + updatedAt, + publishedAt); + } + ; + + /** Default: current_timestamp(6) */ + public ProductsRow withUpdatedAt(LocalDateTime updatedAt) { + return new ProductsRow( + productId, + sku, + brandId, + name, + shortDescription, + fullDescription, + basePrice, + costPrice, + weightKg, + dimensionsJson, + status, + taxClass, + tags, + attributes, + seoMetadata, + createdAt, + updatedAt, + publishedAt); + } + ; + + /** Default: NULL */ + public ProductsRow withPublishedAt(Optional publishedAt) { + return new ProductsRow( + productId, + sku, + brandId, + name, + shortDescription, + fullDescription, + basePrice, + costPrice, + weightKg, + dimensionsJson, + status, + taxClass, + tags, + attributes, + seoMetadata, + createdAt, + updatedAt, + publishedAt); + } + ; + + public static RowParser _rowParser = + RowParsers.of( + ProductsId.mariaType, + MariaTypes.varchar, + BrandsId.mariaType.opt(), + MariaTypes.varchar, + MariaTypes.varchar.opt(), + MariaTypes.longtext.opt(), + MariaTypes.numeric, + MariaTypes.numeric.opt(), + MariaTypes.numeric.opt(), + MariaTypes.json.opt(), + MariaTypes.text, + MariaTypes.text, + MariaTypes.set.opt(), + MariaTypes.json.opt(), + MariaTypes.json.opt(), + MariaTypes.datetime, + MariaTypes.datetime, + MariaTypes.datetime.opt(), + ProductsRow::new, + row -> + new Object[] { + row.productId(), + row.sku(), + row.brandId(), + row.name(), + row.shortDescription(), + row.fullDescription(), + row.basePrice(), + row.costPrice(), + row.weightKg(), + row.dimensionsJson(), + row.status(), + row.taxClass(), + row.tags(), + row.attributes(), + row.seoMetadata(), + row.createdAt(), + row.updatedAt(), + row.publishedAt() + }); + ; + + @Override + public ProductsId _1() { + return productId; + } + ; + + @Override + public Optional _10() { + return dimensionsJson; + } + ; + + @Override + public String _11() { + return status; + } + ; + + @Override + public String _12() { + return taxClass; + } + ; + + @Override + public Optional _13() { + return tags; + } + ; + + @Override + public Optional _14() { + return attributes; + } + ; + + @Override + public Optional _15() { + return seoMetadata; + } + ; + + @Override + public LocalDateTime _16() { + return createdAt; + } + ; + + @Override + public LocalDateTime _17() { + return updatedAt; + } + ; + + @Override + public Optional _18() { + return publishedAt; + } + ; + + @Override + public String _2() { + return sku; + } + ; + + @Override + public Optional _3() { + return brandId; + } + ; + + @Override + public String _4() { + return name; + } + ; + + @Override + public Optional _5() { + return shortDescription; + } + ; + + @Override + public Optional _6() { + return fullDescription; + } + ; + + @Override + public BigDecimal _7() { + return basePrice; + } + ; + + @Override + public Optional _8() { + return costPrice; + } + ; + + @Override + public Optional _9() { + return weightKg; + } + ; + + public ProductsId id() { + return productId; + } + ; + + public ProductsRowUnsaved toUnsavedRow( + Defaulted> brandId, + Defaulted> shortDescription, + Defaulted> fullDescription, + Defaulted> costPrice, + Defaulted> weightKg, + Defaulted> dimensionsJson, + Defaulted status, + Defaulted taxClass, + Defaulted> tags, + Defaulted> attributes, + Defaulted> seoMetadata, + Defaulted createdAt, + Defaulted updatedAt, + Defaulted> publishedAt) { + return new ProductsRowUnsaved( + sku, + name, + basePrice, + brandId, + shortDescription, + fullDescription, + costPrice, + weightKg, + dimensionsJson, + status, + taxClass, + tags, + attributes, + seoMetadata, + createdAt, + updatedAt, + publishedAt); + } + ; +} diff --git a/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/products/ProductsRowUnsaved.java b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/products/ProductsRowUnsaved.java new file mode 100644 index 0000000000..b4649a969e --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/mariadb/combined/mariadb/products/ProductsRowUnsaved.java @@ -0,0 +1,510 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.mariadb.products; + +import com.fasterxml.jackson.annotation.JsonProperty; +import combined.mariadb.brands.BrandsId; +import combined.mariadb.customtypes.Defaulted; +import combined.mariadb.customtypes.Defaulted.UseDefault; +import dev.typr.foundations.data.Json; +import dev.typr.foundations.data.maria.MariaSet; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.Optional; + +/** This class corresponds to a row in table `products` which has not been persisted yet */ +public record ProductsRowUnsaved( + /** */ + String sku, + /** */ + String name, + /** */ + @JsonProperty("base_price") BigDecimal basePrice, + /** Default: NULL Points to {@link combined.mariadb.brands.BrandsRow#brandId()} */ + @JsonProperty("brand_id") Defaulted> brandId, + /** Default: NULL */ + @JsonProperty("short_description") Defaulted> shortDescription, + /** Default: NULL */ + @JsonProperty("full_description") Defaulted> fullDescription, + /** Default: NULL */ + @JsonProperty("cost_price") Defaulted> costPrice, + /** Default: NULL */ + @JsonProperty("weight_kg") Defaulted> weightKg, + /** Default: NULL length, width, height in cm */ + @JsonProperty("dimensions_json") Defaulted> dimensionsJson, + /** Default: 'draft' */ + Defaulted status, + /** Default: 'standard' */ + @JsonProperty("tax_class") Defaulted taxClass, + /** Default: NULL */ + Defaulted> tags, + /** Default: NULL */ + Defaulted> attributes, + /** Default: NULL */ + @JsonProperty("seo_metadata") Defaulted> seoMetadata, + /** Default: current_timestamp(6) */ + @JsonProperty("created_at") Defaulted createdAt, + /** Default: current_timestamp(6) */ + @JsonProperty("updated_at") Defaulted updatedAt, + /** Default: NULL */ + @JsonProperty("published_at") Defaulted> publishedAt) { + public ProductsRowUnsaved( + /** */ + String sku, + /** */ + String name, + /** */ + @JsonProperty("base_price") BigDecimal basePrice) { + this( + sku, + name, + basePrice, + new UseDefault<>(), + new UseDefault<>(), + new UseDefault<>(), + new UseDefault<>(), + new UseDefault<>(), + new UseDefault<>(), + new UseDefault<>(), + new UseDefault<>(), + new UseDefault<>(), + new UseDefault<>(), + new UseDefault<>(), + new UseDefault<>(), + new UseDefault<>(), + new UseDefault<>()); + } + ; + + /** */ + public ProductsRowUnsaved withSku(String sku) { + return new ProductsRowUnsaved( + sku, + name, + basePrice, + brandId, + shortDescription, + fullDescription, + costPrice, + weightKg, + dimensionsJson, + status, + taxClass, + tags, + attributes, + seoMetadata, + createdAt, + updatedAt, + publishedAt); + } + ; + + /** */ + public ProductsRowUnsaved withName(String name) { + return new ProductsRowUnsaved( + sku, + name, + basePrice, + brandId, + shortDescription, + fullDescription, + costPrice, + weightKg, + dimensionsJson, + status, + taxClass, + tags, + attributes, + seoMetadata, + createdAt, + updatedAt, + publishedAt); + } + ; + + /** */ + public ProductsRowUnsaved withBasePrice(BigDecimal basePrice) { + return new ProductsRowUnsaved( + sku, + name, + basePrice, + brandId, + shortDescription, + fullDescription, + costPrice, + weightKg, + dimensionsJson, + status, + taxClass, + tags, + attributes, + seoMetadata, + createdAt, + updatedAt, + publishedAt); + } + ; + + /** Default: NULL Points to {@link combined.mariadb.brands.BrandsRow#brandId()} */ + public ProductsRowUnsaved withBrandId(Defaulted> brandId) { + return new ProductsRowUnsaved( + sku, + name, + basePrice, + brandId, + shortDescription, + fullDescription, + costPrice, + weightKg, + dimensionsJson, + status, + taxClass, + tags, + attributes, + seoMetadata, + createdAt, + updatedAt, + publishedAt); + } + ; + + /** Default: NULL */ + public ProductsRowUnsaved withShortDescription(Defaulted> shortDescription) { + return new ProductsRowUnsaved( + sku, + name, + basePrice, + brandId, + shortDescription, + fullDescription, + costPrice, + weightKg, + dimensionsJson, + status, + taxClass, + tags, + attributes, + seoMetadata, + createdAt, + updatedAt, + publishedAt); + } + ; + + /** Default: NULL */ + public ProductsRowUnsaved withFullDescription(Defaulted> fullDescription) { + return new ProductsRowUnsaved( + sku, + name, + basePrice, + brandId, + shortDescription, + fullDescription, + costPrice, + weightKg, + dimensionsJson, + status, + taxClass, + tags, + attributes, + seoMetadata, + createdAt, + updatedAt, + publishedAt); + } + ; + + /** Default: NULL */ + public ProductsRowUnsaved withCostPrice(Defaulted> costPrice) { + return new ProductsRowUnsaved( + sku, + name, + basePrice, + brandId, + shortDescription, + fullDescription, + costPrice, + weightKg, + dimensionsJson, + status, + taxClass, + tags, + attributes, + seoMetadata, + createdAt, + updatedAt, + publishedAt); + } + ; + + /** Default: NULL */ + public ProductsRowUnsaved withWeightKg(Defaulted> weightKg) { + return new ProductsRowUnsaved( + sku, + name, + basePrice, + brandId, + shortDescription, + fullDescription, + costPrice, + weightKg, + dimensionsJson, + status, + taxClass, + tags, + attributes, + seoMetadata, + createdAt, + updatedAt, + publishedAt); + } + ; + + /** Default: NULL length, width, height in cm */ + public ProductsRowUnsaved withDimensionsJson(Defaulted> dimensionsJson) { + return new ProductsRowUnsaved( + sku, + name, + basePrice, + brandId, + shortDescription, + fullDescription, + costPrice, + weightKg, + dimensionsJson, + status, + taxClass, + tags, + attributes, + seoMetadata, + createdAt, + updatedAt, + publishedAt); + } + ; + + /** Default: 'draft' */ + public ProductsRowUnsaved withStatus(Defaulted status) { + return new ProductsRowUnsaved( + sku, + name, + basePrice, + brandId, + shortDescription, + fullDescription, + costPrice, + weightKg, + dimensionsJson, + status, + taxClass, + tags, + attributes, + seoMetadata, + createdAt, + updatedAt, + publishedAt); + } + ; + + /** Default: 'standard' */ + public ProductsRowUnsaved withTaxClass(Defaulted taxClass) { + return new ProductsRowUnsaved( + sku, + name, + basePrice, + brandId, + shortDescription, + fullDescription, + costPrice, + weightKg, + dimensionsJson, + status, + taxClass, + tags, + attributes, + seoMetadata, + createdAt, + updatedAt, + publishedAt); + } + ; + + /** Default: NULL */ + public ProductsRowUnsaved withTags(Defaulted> tags) { + return new ProductsRowUnsaved( + sku, + name, + basePrice, + brandId, + shortDescription, + fullDescription, + costPrice, + weightKg, + dimensionsJson, + status, + taxClass, + tags, + attributes, + seoMetadata, + createdAt, + updatedAt, + publishedAt); + } + ; + + /** Default: NULL */ + public ProductsRowUnsaved withAttributes(Defaulted> attributes) { + return new ProductsRowUnsaved( + sku, + name, + basePrice, + brandId, + shortDescription, + fullDescription, + costPrice, + weightKg, + dimensionsJson, + status, + taxClass, + tags, + attributes, + seoMetadata, + createdAt, + updatedAt, + publishedAt); + } + ; + + /** Default: NULL */ + public ProductsRowUnsaved withSeoMetadata(Defaulted> seoMetadata) { + return new ProductsRowUnsaved( + sku, + name, + basePrice, + brandId, + shortDescription, + fullDescription, + costPrice, + weightKg, + dimensionsJson, + status, + taxClass, + tags, + attributes, + seoMetadata, + createdAt, + updatedAt, + publishedAt); + } + ; + + /** Default: current_timestamp(6) */ + public ProductsRowUnsaved withCreatedAt(Defaulted createdAt) { + return new ProductsRowUnsaved( + sku, + name, + basePrice, + brandId, + shortDescription, + fullDescription, + costPrice, + weightKg, + dimensionsJson, + status, + taxClass, + tags, + attributes, + seoMetadata, + createdAt, + updatedAt, + publishedAt); + } + ; + + /** Default: current_timestamp(6) */ + public ProductsRowUnsaved withUpdatedAt(Defaulted updatedAt) { + return new ProductsRowUnsaved( + sku, + name, + basePrice, + brandId, + shortDescription, + fullDescription, + costPrice, + weightKg, + dimensionsJson, + status, + taxClass, + tags, + attributes, + seoMetadata, + createdAt, + updatedAt, + publishedAt); + } + ; + + /** Default: NULL */ + public ProductsRowUnsaved withPublishedAt(Defaulted> publishedAt) { + return new ProductsRowUnsaved( + sku, + name, + basePrice, + brandId, + shortDescription, + fullDescription, + costPrice, + weightKg, + dimensionsJson, + status, + taxClass, + tags, + attributes, + seoMetadata, + createdAt, + updatedAt, + publishedAt); + } + ; + + public ProductsRow toRow( + java.util.function.Supplier> brandIdDefault, + java.util.function.Supplier> shortDescriptionDefault, + java.util.function.Supplier> fullDescriptionDefault, + java.util.function.Supplier> costPriceDefault, + java.util.function.Supplier> weightKgDefault, + java.util.function.Supplier> dimensionsJsonDefault, + java.util.function.Supplier statusDefault, + java.util.function.Supplier taxClassDefault, + java.util.function.Supplier> tagsDefault, + java.util.function.Supplier> attributesDefault, + java.util.function.Supplier> seoMetadataDefault, + java.util.function.Supplier createdAtDefault, + java.util.function.Supplier updatedAtDefault, + java.util.function.Supplier> publishedAtDefault, + java.util.function.Supplier productIdDefault) { + return new ProductsRow( + productIdDefault.get(), + sku, + brandId.getOrElse(brandIdDefault), + name, + shortDescription.getOrElse(shortDescriptionDefault), + fullDescription.getOrElse(fullDescriptionDefault), + basePrice, + costPrice.getOrElse(costPriceDefault), + weightKg.getOrElse(weightKgDefault), + dimensionsJson.getOrElse(dimensionsJsonDefault), + status.getOrElse(statusDefault), + taxClass.getOrElse(taxClassDefault), + tags.getOrElse(tagsDefault), + attributes.getOrElse(attributesDefault), + seoMetadata.getOrElse(seoMetadataDefault), + createdAt.getOrElse(createdAtDefault), + updatedAt.getOrElse(updatedAtDefault), + publishedAt.getOrElse(publishedAtDefault)); + } + ; +} diff --git a/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/DefaultedDeserializer.java b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/DefaultedDeserializer.java new file mode 100644 index 0000000000..d9eb060b67 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/DefaultedDeserializer.java @@ -0,0 +1,64 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.postgres; + +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.JsonToken; +import com.fasterxml.jackson.databind.BeanProperty; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JavaType; +import com.fasterxml.jackson.databind.JsonDeserializer; +import com.fasterxml.jackson.databind.deser.ContextualDeserializer; +import combined.postgres.customtypes.Defaulted; +import combined.postgres.customtypes.Defaulted.Provided; +import combined.postgres.customtypes.Defaulted.UseDefault; +import java.io.IOException; + +/** Jackson deserializer for Defaulted types */ +public class DefaultedDeserializer extends JsonDeserializer> + implements ContextualDeserializer { + JavaType valueType; + + Class defaultedClass; + + public DefaultedDeserializer(JavaType valueType, Class defaultedClass) { + this.valueType = valueType; + this.defaultedClass = defaultedClass; + } + + @Override + public JsonDeserializer createContextual(DeserializationContext ctxt, BeanProperty property) { + JavaType contextType = ctxt.getContextualType(); + JavaType type = (contextType == null && property != null ? property.getType() : contextType); + if (type != null && type.containedTypeCount() > 0) { + return new DefaultedDeserializer(type.containedType(0), type.getRawClass()); + } + ; + throw new RuntimeException("unexpected"); + } + + @Override + public Defaulted deserialize(JsonParser p, DeserializationContext ctxt) throws IOException { + if (p.currentToken() == JsonToken.VALUE_STRING) { + String text = p.getText(); + if ("defaulted".equals(text)) { + return new UseDefault(); + } + throw new IOException("Expected 'defaulted' but got: " + text); + } + if (p.currentToken() == JsonToken.START_OBJECT) { + p.nextToken(); + if (p.currentToken() == JsonToken.FIELD_NAME && "provided".equals(p.currentName())) { + p.nextToken(); + Object value = ctxt.readValue(p, valueType); + p.nextToken(); + return new Provided(value); + } + } + ; + throw new IOException("Expected 'provided' field but got: " + p.currentName()); + } +} diff --git a/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/DefaultedSerializer.java b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/DefaultedSerializer.java new file mode 100644 index 0000000000..e09ba4b387 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/DefaultedSerializer.java @@ -0,0 +1,34 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.postgres; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.JsonSerializer; +import com.fasterxml.jackson.databind.SerializerProvider; +import combined.postgres.customtypes.Defaulted; +import combined.postgres.customtypes.Defaulted.Provided; +import combined.postgres.customtypes.Defaulted.UseDefault; +import java.io.IOException; + +/** Jackson serializer for Defaulted types */ +public class DefaultedSerializer extends JsonSerializer> { + @Override + public void serialize(Defaulted value, JsonGenerator gen, SerializerProvider serializers) + throws IOException { + switch (value) { + case null -> gen.writeNull(); + case UseDefault u -> gen.writeString("defaulted"); + case Provided p -> { + gen.writeStartObject(); + gen.writeFieldName("provided"); + serializers.defaultSerializeValue(p.value(), gen); + gen.writeEndObject(); + } + default -> throw new IOException("Unknown Defaulted subtype: " + value.getClass().getName()); + } + ; + } +} diff --git a/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/customtypes/Defaulted.java b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/customtypes/Defaulted.java new file mode 100644 index 0000000000..5c50756870 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/customtypes/Defaulted.java @@ -0,0 +1,85 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.postgres.customtypes; + +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import combined.postgres.DefaultedDeserializer; +import combined.postgres.DefaultedSerializer; +import dev.typr.foundations.DbText; +import dev.typr.foundations.PgText; + +/** This signals a value where if you don't provide it, postgres will generate it for you */ +@JsonSerialize(using = DefaultedSerializer.class) +@JsonDeserialize(using = DefaultedDeserializer.class) +public sealed interface Defaulted permits Defaulted.Provided, Defaulted.UseDefault { + record Provided(T value) implements Defaulted { + public Provided withValue(T value) { + return new Provided<>(value); + } + ; + + @Override + public U fold( + java.util.function.Supplier onDefault, java.util.function.Function onProvided) { + return onProvided.apply(value); + } + ; + + @Override + public T getOrElse(java.util.function.Supplier onDefault) { + return value; + } + ; + + @Override + public void visit(java.lang.Runnable onDefault, java.util.function.Consumer onProvided) { + onProvided.accept(value); + } + ; + } + ; + + record UseDefault() implements Defaulted { + @Override + public U fold( + java.util.function.Supplier onDefault, java.util.function.Function onProvided) { + return onDefault.get(); + } + ; + + @Override + public T getOrElse(java.util.function.Supplier onDefault) { + return onDefault.get(); + } + ; + + @Override + public void visit(java.lang.Runnable onDefault, java.util.function.Consumer onProvided) { + onDefault.run(); + } + ; + } + ; + + static PgText> pgText(DbText t) { + return PgText.instance( + (ot, sb) -> + ot.visit( + () -> { + sb.append("__DEFAULT_VALUE__"); + }, + value -> t.unsafeEncode(value, sb))); + } + ; + + U fold( + java.util.function.Supplier onDefault, java.util.function.Function onProvided); + + T getOrElse(java.util.function.Supplier onDefault); + + void visit(java.lang.Runnable onDefault, java.util.function.Consumer onProvided); +} diff --git a/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/humanresources/employee/EmployeeFields.java b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/humanresources/employee/EmployeeFields.java new file mode 100644 index 0000000000..9556849006 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/humanresources/employee/EmployeeFields.java @@ -0,0 +1,337 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.postgres.humanresources.employee; + +import combined.postgres.person.businessentity.BusinessentityId; +import combined.postgres.person.person.PersonFields; +import combined.postgres.person.person.PersonRow; +import combined.shared.IsActive; +import combined.shared.IsSalaried; +import dev.typr.foundations.PgTypes; +import dev.typr.foundations.RowParser; +import dev.typr.foundations.dsl.FieldsBase; +import dev.typr.foundations.dsl.ForeignKey; +import dev.typr.foundations.dsl.Path; +import dev.typr.foundations.dsl.RelationStructure; +import dev.typr.foundations.dsl.SqlExpr; +import dev.typr.foundations.dsl.SqlExpr.Field; +import dev.typr.foundations.dsl.SqlExpr.FieldLike; +import dev.typr.foundations.dsl.SqlExpr.IdField; +import dev.typr.foundations.dsl.SqlExpr.OptField; +import dev.typr.foundations.dsl.TupleExpr.TupleExpr15; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.List; +import java.util.Optional; +import java.util.UUID; + +public class EmployeeFields + extends TupleExpr15< + BusinessentityId, + String, + String, + String, + LocalDate, + String, + String, + LocalDate, /* user-picked */ + IsSalaried, + Short, + Short, /* user-picked */ + IsActive, + UUID, + LocalDateTime, + String> + implements RelationStructure, FieldsBase { + List _path; + + public EmployeeFields(List _path) { + this._path = _path; + } + + public static EmployeeFields structure = new EmployeeFields(java.util.Collections.emptyList()); + + public IdField businessentityid() { + return new IdField( + _path, + "businessentityid", + EmployeeRow::businessentityid, + Optional.empty(), + Optional.of("int4"), + (row, value) -> row.withBusinessentityid(value), + BusinessentityId.pgType); + } + + public Field nationalidnumber() { + return new Field( + _path, + "nationalidnumber", + EmployeeRow::nationalidnumber, + Optional.empty(), + Optional.empty(), + (row, value) -> row.withNationalidnumber(value), + PgTypes.text); + } + + public Field loginid() { + return new Field( + _path, + "loginid", + EmployeeRow::loginid, + Optional.empty(), + Optional.empty(), + (row, value) -> row.withLoginid(value), + PgTypes.text); + } + + public Field jobtitle() { + return new Field( + _path, + "jobtitle", + EmployeeRow::jobtitle, + Optional.empty(), + Optional.empty(), + (row, value) -> row.withJobtitle(value), + PgTypes.text); + } + + public Field birthdate() { + return new Field( + _path, + "birthdate", + EmployeeRow::birthdate, + Optional.empty(), + Optional.of("date"), + (row, value) -> row.withBirthdate(value), + PgTypes.date); + } + + public Field maritalstatus() { + return new Field( + _path, + "maritalstatus", + EmployeeRow::maritalstatus, + Optional.empty(), + Optional.of("bpchar"), + (row, value) -> row.withMaritalstatus(value), + PgTypes.bpchar); + } + + public Field gender() { + return new Field( + _path, + "gender", + EmployeeRow::gender, + Optional.empty(), + Optional.of("bpchar"), + (row, value) -> row.withGender(value), + PgTypes.bpchar); + } + + public Field hiredate() { + return new Field( + _path, + "hiredate", + EmployeeRow::hiredate, + Optional.empty(), + Optional.of("date"), + (row, value) -> row.withHiredate(value), + PgTypes.date); + } + + public Field salariedflag() { + return new Field( + _path, + "salariedflag", + EmployeeRow::salariedflag, + Optional.empty(), + Optional.of("bool"), + (row, value) -> row.withSalariedflag(value), + IsSalaried.pgType); + } + + public Field vacationhours() { + return new Field( + _path, + "vacationhours", + EmployeeRow::vacationhours, + Optional.empty(), + Optional.of("int2"), + (row, value) -> row.withVacationhours(value), + PgTypes.int2); + } + + public Field sickleavehours() { + return new Field( + _path, + "sickleavehours", + EmployeeRow::sickleavehours, + Optional.empty(), + Optional.of("int2"), + (row, value) -> row.withSickleavehours(value), + PgTypes.int2); + } + + public Field currentflag() { + return new Field( + _path, + "currentflag", + EmployeeRow::currentflag, + Optional.empty(), + Optional.of("bool"), + (row, value) -> row.withCurrentflag(value), + IsActive.pgType); + } + + public Field rowguid() { + return new Field( + _path, + "rowguid", + EmployeeRow::rowguid, + Optional.empty(), + Optional.of("uuid"), + (row, value) -> row.withRowguid(value), + PgTypes.uuid); + } + + public Field modifieddate() { + return new Field( + _path, + "modifieddate", + EmployeeRow::modifieddate, + Optional.empty(), + Optional.of("timestamp"), + (row, value) -> row.withModifieddate(value), + PgTypes.timestamp); + } + + public OptField organizationnode() { + return new OptField( + _path, + "organizationnode", + EmployeeRow::organizationnode, + Optional.empty(), + Optional.empty(), + (row, value) -> row.withOrganizationnode(value), + PgTypes.text); + } + + @Override + public List _path() { + return _path; + } + + public ForeignKey fkPersonPerson() { + return ForeignKey.of( + "humanresources.FK_Employee_Person_BusinessEntityID") + .withColumnPair(businessentityid(), PersonFields::businessentityid); + } + + @Override + public List> columns() { + return java.util.List.of( + this.businessentityid(), + this.nationalidnumber(), + this.loginid(), + this.jobtitle(), + this.birthdate(), + this.maritalstatus(), + this.gender(), + this.hiredate(), + this.salariedflag(), + this.vacationhours(), + this.sickleavehours(), + this.currentflag(), + this.rowguid(), + this.modifieddate(), + this.organizationnode()); + } + + @Override + public RowParser rowParser() { + return EmployeeRow._rowParser; + } + + @Override + public RelationStructure withPaths(List _path) { + return new EmployeeFields(_path); + } + + @Override + public SqlExpr _1() { + return businessentityid(); + } + + @Override + public SqlExpr _2() { + return nationalidnumber(); + } + + @Override + public SqlExpr _3() { + return loginid(); + } + + @Override + public SqlExpr _4() { + return jobtitle(); + } + + @Override + public SqlExpr _5() { + return birthdate(); + } + + @Override + public SqlExpr _6() { + return maritalstatus(); + } + + @Override + public SqlExpr _7() { + return gender(); + } + + @Override + public SqlExpr _8() { + return hiredate(); + } + + @Override + public SqlExpr _9() { + return salariedflag(); + } + + @Override + public SqlExpr _10() { + return vacationhours(); + } + + @Override + public SqlExpr _11() { + return sickleavehours(); + } + + @Override + public SqlExpr _12() { + return currentflag(); + } + + @Override + public SqlExpr _13() { + return rowguid(); + } + + @Override + public SqlExpr _14() { + return modifieddate(); + } + + @Override + public SqlExpr _15() { + return organizationnode(); + } +} diff --git a/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/humanresources/employee/EmployeeRepo.java b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/humanresources/employee/EmployeeRepo.java new file mode 100644 index 0000000000..65b45b5599 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/humanresources/employee/EmployeeRepo.java @@ -0,0 +1,56 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.postgres.humanresources.employee; + +import combined.postgres.person.businessentity.BusinessentityId; +import dev.typr.foundations.dsl.DeleteBuilder; +import dev.typr.foundations.dsl.SelectBuilder; +import dev.typr.foundations.dsl.UpdateBuilder; +import java.sql.Connection; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Optional; + +public interface EmployeeRepo { + DeleteBuilder delete(); + + Boolean deleteById(BusinessentityId businessentityid, Connection c); + + Integer deleteByIds(BusinessentityId[] businessentityids, Connection c); + + EmployeeRow insert(EmployeeRow unsaved, Connection c); + + EmployeeRow insert(EmployeeRowUnsaved unsaved, Connection c); + + Long insertStreaming(Iterator unsaved, Integer batchSize, Connection c); + + /** NOTE: this functionality requires PostgreSQL 16 or later! */ + Long insertUnsavedStreaming( + Iterator unsaved, Integer batchSize, Connection c); + + SelectBuilder select(); + + List selectAll(Connection c); + + Optional selectById(BusinessentityId businessentityid, Connection c); + + List selectByIds(BusinessentityId[] businessentityids, Connection c); + + Map selectByIdsTracked( + BusinessentityId[] businessentityids, Connection c); + + UpdateBuilder update(); + + Boolean update(EmployeeRow row, Connection c); + + EmployeeRow upsert(EmployeeRow unsaved, Connection c); + + List upsertBatch(Iterator unsaved, Connection c); + + /** NOTE: this functionality is not safe if you use auto-commit mode! it runs 3 SQL statements */ + Integer upsertStreaming(Iterator unsaved, Integer batchSize, Connection c); +} diff --git a/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/humanresources/employee/EmployeeRepoImpl.java b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/humanresources/employee/EmployeeRepoImpl.java new file mode 100644 index 0000000000..e67f33a36b --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/humanresources/employee/EmployeeRepoImpl.java @@ -0,0 +1,509 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.postgres.humanresources.employee; + +import static dev.typr.foundations.Fragment.interpolate; + +import combined.postgres.person.businessentity.BusinessentityId; +import combined.shared.IsActive; +import combined.shared.IsSalaried; +import dev.typr.foundations.Fragment; +import dev.typr.foundations.PgTypes; +import dev.typr.foundations.dsl.DeleteBuilder; +import dev.typr.foundations.dsl.Dialect; +import dev.typr.foundations.dsl.SelectBuilder; +import dev.typr.foundations.dsl.UpdateBuilder; +import dev.typr.foundations.streamingInsert; +import java.sql.Connection; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Optional; + +public class EmployeeRepoImpl implements EmployeeRepo { + @Override + public DeleteBuilder delete() { + return DeleteBuilder.of( + "\"humanresources\".\"employee\"", EmployeeFields.structure, Dialect.POSTGRESQL); + } + + @Override + public Boolean deleteById(BusinessentityId businessentityid, Connection c) { + return interpolate( + Fragment.lit( + "delete from \"humanresources\".\"employee\" where \"businessentityid\" = "), + Fragment.encode(BusinessentityId.pgType, businessentityid), + Fragment.lit("")) + .update() + .runUnchecked(c) + > 0; + } + + @Override + public Integer deleteByIds(BusinessentityId[] businessentityids, Connection c) { + return interpolate( + Fragment.lit( + "delete\nfrom \"humanresources\".\"employee\"\nwhere \"businessentityid\" = ANY("), + Fragment.encode(BusinessentityId.pgTypeArray, businessentityids), + Fragment.lit(")")) + .update() + .runUnchecked(c); + } + + @Override + public EmployeeRow insert(EmployeeRow unsaved, Connection c) { + return interpolate( + Fragment.lit( + "insert into \"humanresources\".\"employee\"(\"businessentityid\"," + + " \"nationalidnumber\", \"loginid\", \"jobtitle\", \"birthdate\"," + + " \"maritalstatus\", \"gender\", \"hiredate\", \"salariedflag\"," + + " \"vacationhours\", \"sickleavehours\", \"currentflag\", \"rowguid\"," + + " \"modifieddate\", \"organizationnode\")\n" + + "values ("), + Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid()), + Fragment.lit("::int4, "), + Fragment.encode(PgTypes.text, unsaved.nationalidnumber()), + Fragment.lit(", "), + Fragment.encode(PgTypes.text, unsaved.loginid()), + Fragment.lit(", "), + Fragment.encode(PgTypes.text, unsaved.jobtitle()), + Fragment.lit(", "), + Fragment.encode(PgTypes.date, unsaved.birthdate()), + Fragment.lit("::date, "), + Fragment.encode(PgTypes.bpchar, unsaved.maritalstatus()), + Fragment.lit("::bpchar, "), + Fragment.encode(PgTypes.bpchar, unsaved.gender()), + Fragment.lit("::bpchar, "), + Fragment.encode(PgTypes.date, unsaved.hiredate()), + Fragment.lit("::date, "), + Fragment.encode(IsSalaried.pgType, unsaved.salariedflag()), + Fragment.lit("::bool, "), + Fragment.encode(PgTypes.int2, unsaved.vacationhours()), + Fragment.lit("::int2, "), + Fragment.encode(PgTypes.int2, unsaved.sickleavehours()), + Fragment.lit("::int2, "), + Fragment.encode(IsActive.pgType, unsaved.currentflag()), + Fragment.lit("::bool, "), + Fragment.encode(PgTypes.uuid, unsaved.rowguid()), + Fragment.lit("::uuid, "), + Fragment.encode(PgTypes.timestamp, unsaved.modifieddate()), + Fragment.lit("::timestamp, "), + Fragment.encode(PgTypes.text.opt(), unsaved.organizationnode()), + Fragment.lit( + ")\n" + + "RETURNING \"businessentityid\", \"nationalidnumber\", \"loginid\"," + + " \"jobtitle\", \"birthdate\", \"maritalstatus\", \"gender\", \"hiredate\"," + + " \"salariedflag\", \"vacationhours\", \"sickleavehours\", \"currentflag\"," + + " \"rowguid\", \"modifieddate\", \"organizationnode\"\n")) + .updateReturning(EmployeeRow._rowParser.exactlyOne()) + .runUnchecked(c); + } + + @Override + public EmployeeRow insert(EmployeeRowUnsaved unsaved, Connection c) { + ArrayList columns = new ArrayList<>(); + ; + ArrayList values = new ArrayList<>(); + ; + columns.add(Fragment.lit("\"businessentityid\"")); + values.add( + interpolate( + Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid()), + Fragment.lit("::int4"))); + columns.add(Fragment.lit("\"nationalidnumber\"")); + values.add( + interpolate(Fragment.encode(PgTypes.text, unsaved.nationalidnumber()), Fragment.lit(""))); + columns.add(Fragment.lit("\"loginid\"")); + values.add(interpolate(Fragment.encode(PgTypes.text, unsaved.loginid()), Fragment.lit(""))); + columns.add(Fragment.lit("\"jobtitle\"")); + values.add(interpolate(Fragment.encode(PgTypes.text, unsaved.jobtitle()), Fragment.lit(""))); + columns.add(Fragment.lit("\"birthdate\"")); + values.add( + interpolate(Fragment.encode(PgTypes.date, unsaved.birthdate()), Fragment.lit("::date"))); + columns.add(Fragment.lit("\"maritalstatus\"")); + values.add( + interpolate( + Fragment.encode(PgTypes.bpchar, unsaved.maritalstatus()), Fragment.lit("::bpchar"))); + columns.add(Fragment.lit("\"gender\"")); + values.add( + interpolate(Fragment.encode(PgTypes.bpchar, unsaved.gender()), Fragment.lit("::bpchar"))); + columns.add(Fragment.lit("\"hiredate\"")); + values.add( + interpolate(Fragment.encode(PgTypes.date, unsaved.hiredate()), Fragment.lit("::date"))); + unsaved + .salariedflag() + .visit( + () -> {}, + value -> { + columns.add(Fragment.lit("\"salariedflag\"")); + values.add( + interpolate(Fragment.encode(IsSalaried.pgType, value), Fragment.lit("::bool"))); + }); + ; + unsaved + .vacationhours() + .visit( + () -> {}, + value -> { + columns.add(Fragment.lit("\"vacationhours\"")); + values.add(interpolate(Fragment.encode(PgTypes.int2, value), Fragment.lit("::int2"))); + }); + ; + unsaved + .sickleavehours() + .visit( + () -> {}, + value -> { + columns.add(Fragment.lit("\"sickleavehours\"")); + values.add(interpolate(Fragment.encode(PgTypes.int2, value), Fragment.lit("::int2"))); + }); + ; + unsaved + .currentflag() + .visit( + () -> {}, + value -> { + columns.add(Fragment.lit("\"currentflag\"")); + values.add( + interpolate(Fragment.encode(IsActive.pgType, value), Fragment.lit("::bool"))); + }); + ; + unsaved + .rowguid() + .visit( + () -> {}, + value -> { + columns.add(Fragment.lit("\"rowguid\"")); + values.add(interpolate(Fragment.encode(PgTypes.uuid, value), Fragment.lit("::uuid"))); + }); + ; + unsaved + .modifieddate() + .visit( + () -> {}, + value -> { + columns.add(Fragment.lit("\"modifieddate\"")); + values.add( + interpolate( + Fragment.encode(PgTypes.timestamp, value), Fragment.lit("::timestamp"))); + }); + ; + unsaved + .organizationnode() + .visit( + () -> {}, + value -> { + columns.add(Fragment.lit("\"organizationnode\"")); + values.add(interpolate(Fragment.encode(PgTypes.text.opt(), value), Fragment.lit(""))); + }); + ; + Fragment q = + interpolate( + Fragment.lit("insert into \"humanresources\".\"employee\"("), + Fragment.comma(columns), + Fragment.lit(")\nvalues ("), + Fragment.comma(values), + Fragment.lit( + ")\n" + + "RETURNING \"businessentityid\", \"nationalidnumber\", \"loginid\"," + + " \"jobtitle\", \"birthdate\", \"maritalstatus\", \"gender\", \"hiredate\"," + + " \"salariedflag\", \"vacationhours\", \"sickleavehours\", \"currentflag\"," + + " \"rowguid\", \"modifieddate\", \"organizationnode\"\n")); + ; + return q.updateReturning(EmployeeRow._rowParser.exactlyOne()).runUnchecked(c); + } + + @Override + public Long insertStreaming(Iterator unsaved, Integer batchSize, Connection c) { + return streamingInsert.insertUnchecked( + "COPY \"humanresources\".\"employee\"(\"businessentityid\", \"nationalidnumber\"," + + " \"loginid\", \"jobtitle\", \"birthdate\", \"maritalstatus\", \"gender\"," + + " \"hiredate\", \"salariedflag\", \"vacationhours\", \"sickleavehours\"," + + " \"currentflag\", \"rowguid\", \"modifieddate\", \"organizationnode\") FROM STDIN", + batchSize, + unsaved, + c, + EmployeeRow.pgText); + } + + /** NOTE: this functionality requires PostgreSQL 16 or later! */ + @Override + public Long insertUnsavedStreaming( + Iterator unsaved, Integer batchSize, Connection c) { + return streamingInsert.insertUnchecked( + "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, + c, + EmployeeRowUnsaved.pgText); + } + + @Override + public SelectBuilder select() { + return SelectBuilder.of( + "\"humanresources\".\"employee\"", + EmployeeFields.structure, + EmployeeRow._rowParser, + Dialect.POSTGRESQL); + } + + @Override + public List selectAll(Connection c) { + return interpolate( + Fragment.lit( + "select \"businessentityid\", \"nationalidnumber\", \"loginid\", \"jobtitle\"," + + " \"birthdate\", \"maritalstatus\", \"gender\", \"hiredate\"," + + " \"salariedflag\", \"vacationhours\", \"sickleavehours\", \"currentflag\"," + + " \"rowguid\", \"modifieddate\", \"organizationnode\"\n" + + "from \"humanresources\".\"employee\"\n")) + .query(EmployeeRow._rowParser.all()) + .runUnchecked(c); + } + + @Override + public Optional selectById(BusinessentityId businessentityid, Connection c) { + return interpolate( + Fragment.lit( + "select \"businessentityid\", \"nationalidnumber\", \"loginid\", \"jobtitle\"," + + " \"birthdate\", \"maritalstatus\", \"gender\", \"hiredate\"," + + " \"salariedflag\", \"vacationhours\", \"sickleavehours\", \"currentflag\"," + + " \"rowguid\", \"modifieddate\", \"organizationnode\"\n" + + "from \"humanresources\".\"employee\"\n" + + "where \"businessentityid\" = "), + Fragment.encode(BusinessentityId.pgType, businessentityid), + Fragment.lit("")) + .query(EmployeeRow._rowParser.first()) + .runUnchecked(c); + } + + @Override + public List selectByIds(BusinessentityId[] businessentityids, Connection c) { + return interpolate( + Fragment.lit( + "select \"businessentityid\", \"nationalidnumber\", \"loginid\", \"jobtitle\"," + + " \"birthdate\", \"maritalstatus\", \"gender\", \"hiredate\"," + + " \"salariedflag\", \"vacationhours\", \"sickleavehours\", \"currentflag\"," + + " \"rowguid\", \"modifieddate\", \"organizationnode\"\n" + + "from \"humanresources\".\"employee\"\n" + + "where \"businessentityid\" = ANY("), + Fragment.encode(BusinessentityId.pgTypeArray, businessentityids), + Fragment.lit(")")) + .query(EmployeeRow._rowParser.all()) + .runUnchecked(c); + } + + @Override + public Map selectByIdsTracked( + BusinessentityId[] businessentityids, Connection c) { + HashMap ret = new HashMap(); + selectByIds(businessentityids, c).forEach(row -> ret.put(row.businessentityid(), row)); + return ret; + } + + @Override + public UpdateBuilder update() { + return UpdateBuilder.of( + "\"humanresources\".\"employee\"", + EmployeeFields.structure, + EmployeeRow._rowParser, + Dialect.POSTGRESQL); + } + + @Override + public Boolean update(EmployeeRow row, Connection c) { + BusinessentityId businessentityid = row.businessentityid(); + ; + return interpolate( + Fragment.lit("update \"humanresources\".\"employee\"\nset \"nationalidnumber\" = "), + Fragment.encode(PgTypes.text, row.nationalidnumber()), + Fragment.lit(",\n\"loginid\" = "), + Fragment.encode(PgTypes.text, row.loginid()), + Fragment.lit(",\n\"jobtitle\" = "), + Fragment.encode(PgTypes.text, row.jobtitle()), + Fragment.lit(",\n\"birthdate\" = "), + Fragment.encode(PgTypes.date, row.birthdate()), + Fragment.lit("::date,\n\"maritalstatus\" = "), + Fragment.encode(PgTypes.bpchar, row.maritalstatus()), + Fragment.lit("::bpchar,\n\"gender\" = "), + Fragment.encode(PgTypes.bpchar, row.gender()), + Fragment.lit("::bpchar,\n\"hiredate\" = "), + Fragment.encode(PgTypes.date, row.hiredate()), + Fragment.lit("::date,\n\"salariedflag\" = "), + Fragment.encode(IsSalaried.pgType, row.salariedflag()), + Fragment.lit("::bool,\n\"vacationhours\" = "), + Fragment.encode(PgTypes.int2, row.vacationhours()), + Fragment.lit("::int2,\n\"sickleavehours\" = "), + Fragment.encode(PgTypes.int2, row.sickleavehours()), + Fragment.lit("::int2,\n\"currentflag\" = "), + Fragment.encode(IsActive.pgType, row.currentflag()), + Fragment.lit("::bool,\n\"rowguid\" = "), + Fragment.encode(PgTypes.uuid, row.rowguid()), + Fragment.lit("::uuid,\n\"modifieddate\" = "), + Fragment.encode(PgTypes.timestamp, row.modifieddate()), + Fragment.lit("::timestamp,\n\"organizationnode\" = "), + Fragment.encode(PgTypes.text.opt(), row.organizationnode()), + Fragment.lit("\nwhere \"businessentityid\" = "), + Fragment.encode(BusinessentityId.pgType, businessentityid), + Fragment.lit("")) + .update() + .runUnchecked(c) + > 0; + } + + @Override + public EmployeeRow upsert(EmployeeRow unsaved, Connection c) { + return interpolate( + Fragment.lit( + "insert into \"humanresources\".\"employee\"(\"businessentityid\"," + + " \"nationalidnumber\", \"loginid\", \"jobtitle\", \"birthdate\"," + + " \"maritalstatus\", \"gender\", \"hiredate\", \"salariedflag\"," + + " \"vacationhours\", \"sickleavehours\", \"currentflag\", \"rowguid\"," + + " \"modifieddate\", \"organizationnode\")\n" + + "values ("), + Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid()), + Fragment.lit("::int4, "), + Fragment.encode(PgTypes.text, unsaved.nationalidnumber()), + Fragment.lit(", "), + Fragment.encode(PgTypes.text, unsaved.loginid()), + Fragment.lit(", "), + Fragment.encode(PgTypes.text, unsaved.jobtitle()), + Fragment.lit(", "), + Fragment.encode(PgTypes.date, unsaved.birthdate()), + Fragment.lit("::date, "), + Fragment.encode(PgTypes.bpchar, unsaved.maritalstatus()), + Fragment.lit("::bpchar, "), + Fragment.encode(PgTypes.bpchar, unsaved.gender()), + Fragment.lit("::bpchar, "), + Fragment.encode(PgTypes.date, unsaved.hiredate()), + Fragment.lit("::date, "), + Fragment.encode(IsSalaried.pgType, unsaved.salariedflag()), + Fragment.lit("::bool, "), + Fragment.encode(PgTypes.int2, unsaved.vacationhours()), + Fragment.lit("::int2, "), + Fragment.encode(PgTypes.int2, unsaved.sickleavehours()), + Fragment.lit("::int2, "), + Fragment.encode(IsActive.pgType, unsaved.currentflag()), + Fragment.lit("::bool, "), + Fragment.encode(PgTypes.uuid, unsaved.rowguid()), + Fragment.lit("::uuid, "), + Fragment.encode(PgTypes.timestamp, unsaved.modifieddate()), + Fragment.lit("::timestamp, "), + Fragment.encode(PgTypes.text.opt(), unsaved.organizationnode()), + Fragment.lit( + ")\n" + + "on conflict (\"businessentityid\")\n" + + "do update set\n" + + " \"nationalidnumber\" = EXCLUDED.\"nationalidnumber\",\n" + + "\"loginid\" = EXCLUDED.\"loginid\",\n" + + "\"jobtitle\" = EXCLUDED.\"jobtitle\",\n" + + "\"birthdate\" = EXCLUDED.\"birthdate\",\n" + + "\"maritalstatus\" = EXCLUDED.\"maritalstatus\",\n" + + "\"gender\" = EXCLUDED.\"gender\",\n" + + "\"hiredate\" = EXCLUDED.\"hiredate\",\n" + + "\"salariedflag\" = EXCLUDED.\"salariedflag\",\n" + + "\"vacationhours\" = EXCLUDED.\"vacationhours\",\n" + + "\"sickleavehours\" = EXCLUDED.\"sickleavehours\",\n" + + "\"currentflag\" = EXCLUDED.\"currentflag\",\n" + + "\"rowguid\" = EXCLUDED.\"rowguid\",\n" + + "\"modifieddate\" = EXCLUDED.\"modifieddate\",\n" + + "\"organizationnode\" = EXCLUDED.\"organizationnode\"\n" + + "returning \"businessentityid\", \"nationalidnumber\", \"loginid\"," + + " \"jobtitle\", \"birthdate\", \"maritalstatus\", \"gender\", \"hiredate\"," + + " \"salariedflag\", \"vacationhours\", \"sickleavehours\", \"currentflag\"," + + " \"rowguid\", \"modifieddate\", \"organizationnode\"")) + .updateReturning(EmployeeRow._rowParser.exactlyOne()) + .runUnchecked(c); + } + + @Override + public List upsertBatch(Iterator unsaved, Connection c) { + return interpolate( + Fragment.lit( + "insert into \"humanresources\".\"employee\"(\"businessentityid\"," + + " \"nationalidnumber\", \"loginid\", \"jobtitle\", \"birthdate\"," + + " \"maritalstatus\", \"gender\", \"hiredate\", \"salariedflag\"," + + " \"vacationhours\", \"sickleavehours\", \"currentflag\", \"rowguid\"," + + " \"modifieddate\", \"organizationnode\")\n" + + "values (?::int4, ?, ?, ?, ?::date, ?::bpchar, ?::bpchar, ?::date, ?::bool," + + " ?::int2, ?::int2, ?::bool, ?::uuid, ?::timestamp, ?)\n" + + "on conflict (\"businessentityid\")\n" + + "do update set\n" + + " \"nationalidnumber\" = EXCLUDED.\"nationalidnumber\",\n" + + "\"loginid\" = EXCLUDED.\"loginid\",\n" + + "\"jobtitle\" = EXCLUDED.\"jobtitle\",\n" + + "\"birthdate\" = EXCLUDED.\"birthdate\",\n" + + "\"maritalstatus\" = EXCLUDED.\"maritalstatus\",\n" + + "\"gender\" = EXCLUDED.\"gender\",\n" + + "\"hiredate\" = EXCLUDED.\"hiredate\",\n" + + "\"salariedflag\" = EXCLUDED.\"salariedflag\",\n" + + "\"vacationhours\" = EXCLUDED.\"vacationhours\",\n" + + "\"sickleavehours\" = EXCLUDED.\"sickleavehours\",\n" + + "\"currentflag\" = EXCLUDED.\"currentflag\",\n" + + "\"rowguid\" = EXCLUDED.\"rowguid\",\n" + + "\"modifieddate\" = EXCLUDED.\"modifieddate\",\n" + + "\"organizationnode\" = EXCLUDED.\"organizationnode\"\n" + + "returning \"businessentityid\", \"nationalidnumber\", \"loginid\"," + + " \"jobtitle\", \"birthdate\", \"maritalstatus\", \"gender\", \"hiredate\"," + + " \"salariedflag\", \"vacationhours\", \"sickleavehours\", \"currentflag\"," + + " \"rowguid\", \"modifieddate\", \"organizationnode\"")) + .updateManyReturning(EmployeeRow._rowParser, unsaved) + .runUnchecked(c); + } + + /** NOTE: this functionality is not safe if you use auto-commit mode! it runs 3 SQL statements */ + @Override + public Integer upsertStreaming(Iterator unsaved, Integer batchSize, Connection c) { + interpolate( + Fragment.lit( + "create temporary table employee_TEMP (like \"humanresources\".\"employee\") on" + + " commit drop")) + .update() + .runUnchecked(c); + streamingInsert.insertUnchecked( + "copy employee_TEMP(\"businessentityid\", \"nationalidnumber\", \"loginid\", \"jobtitle\"," + + " \"birthdate\", \"maritalstatus\", \"gender\", \"hiredate\", \"salariedflag\"," + + " \"vacationhours\", \"sickleavehours\", \"currentflag\", \"rowguid\"," + + " \"modifieddate\", \"organizationnode\") from stdin", + batchSize, + unsaved, + c, + EmployeeRow.pgText); + return interpolate( + Fragment.lit( + "insert into \"humanresources\".\"employee\"(\"businessentityid\"," + + " \"nationalidnumber\", \"loginid\", \"jobtitle\", \"birthdate\"," + + " \"maritalstatus\", \"gender\", \"hiredate\", \"salariedflag\"," + + " \"vacationhours\", \"sickleavehours\", \"currentflag\", \"rowguid\"," + + " \"modifieddate\", \"organizationnode\")\n" + + "select * from employee_TEMP\n" + + "on conflict (\"businessentityid\")\n" + + "do update set\n" + + " \"nationalidnumber\" = EXCLUDED.\"nationalidnumber\",\n" + + "\"loginid\" = EXCLUDED.\"loginid\",\n" + + "\"jobtitle\" = EXCLUDED.\"jobtitle\",\n" + + "\"birthdate\" = EXCLUDED.\"birthdate\",\n" + + "\"maritalstatus\" = EXCLUDED.\"maritalstatus\",\n" + + "\"gender\" = EXCLUDED.\"gender\",\n" + + "\"hiredate\" = EXCLUDED.\"hiredate\",\n" + + "\"salariedflag\" = EXCLUDED.\"salariedflag\",\n" + + "\"vacationhours\" = EXCLUDED.\"vacationhours\",\n" + + "\"sickleavehours\" = EXCLUDED.\"sickleavehours\",\n" + + "\"currentflag\" = EXCLUDED.\"currentflag\",\n" + + "\"rowguid\" = EXCLUDED.\"rowguid\",\n" + + "\"modifieddate\" = EXCLUDED.\"modifieddate\",\n" + + "\"organizationnode\" = EXCLUDED.\"organizationnode\"\n" + + ";\n" + + "drop table employee_TEMP;")) + .update() + .runUnchecked(c); + } +} diff --git a/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/humanresources/employee/EmployeeRepoMock.java b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/humanresources/employee/EmployeeRepoMock.java new file mode 100644 index 0000000000..a6758a2447 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/humanresources/employee/EmployeeRepoMock.java @@ -0,0 +1,227 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.postgres.humanresources.employee; + +import combined.postgres.person.businessentity.BusinessentityId; +import dev.typr.foundations.dsl.DeleteBuilder; +import dev.typr.foundations.dsl.DeleteBuilderMock; +import dev.typr.foundations.dsl.DeleteParams; +import dev.typr.foundations.dsl.SelectBuilder; +import dev.typr.foundations.dsl.SelectBuilderMock; +import dev.typr.foundations.dsl.SelectParams; +import dev.typr.foundations.dsl.UpdateBuilder; +import dev.typr.foundations.dsl.UpdateBuilderMock; +import dev.typr.foundations.dsl.UpdateParams; +import java.sql.Connection; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.function.Function; +import java.util.stream.Collectors; + +public record EmployeeRepoMock( + java.util.function.Function toRow, + HashMap map) + implements EmployeeRepo { + public EmployeeRepoMock(java.util.function.Function toRow) { + this(toRow, new HashMap()); + } + ; + + public EmployeeRepoMock withToRow( + java.util.function.Function toRow) { + return new EmployeeRepoMock(toRow, map); + } + ; + + public EmployeeRepoMock withMap(HashMap map) { + return new EmployeeRepoMock(toRow, map); + } + ; + + @Override + public DeleteBuilder delete() { + return new DeleteBuilderMock<>( + EmployeeFields.structure, + () -> new ArrayList<>(map.values()), + DeleteParams.empty(), + row -> row.businessentityid(), + id -> map.remove(id)); + } + ; + + @Override + public Boolean deleteById(BusinessentityId businessentityid, Connection c) { + return Optional.ofNullable(map.remove(businessentityid)).isPresent(); + } + ; + + @Override + public Integer deleteByIds(BusinessentityId[] businessentityids, Connection c) { + var count = 0; + for (var id : businessentityids) { + if (Optional.ofNullable(map.remove(id)).isPresent()) { + count = count + 1; + ; + } + ; + } + ; + return count; + } + ; + + @Override + public EmployeeRow insert(EmployeeRow unsaved, Connection c) { + if (map.containsKey(unsaved.businessentityid())) { + throw new RuntimeException("id " + unsaved.businessentityid() + " already exists"); + } + ; + map.put(unsaved.businessentityid(), unsaved); + return unsaved; + } + ; + + @Override + public EmployeeRow insert(EmployeeRowUnsaved unsaved, Connection c) { + return insert(toRow.apply(unsaved), c); + } + ; + + @Override + public Long insertStreaming(Iterator unsaved, Integer batchSize, Connection c) { + var count = 0L; + while (unsaved.hasNext()) { + var row = unsaved.next(); + map.put(row.businessentityid(), row); + count = count + 1L; + } + ; + return count; + } + ; + + /** NOTE: this functionality requires PostgreSQL 16 or later! */ + @Override + public Long insertUnsavedStreaming( + Iterator unsaved, Integer batchSize, Connection c) { + var count = 0L; + while (unsaved.hasNext()) { + var unsavedRow = unsaved.next(); + var row = toRow.apply(unsavedRow); + map.put(row.businessentityid(), row); + count = count + 1L; + } + ; + return count; + } + ; + + @Override + public SelectBuilder select() { + return new SelectBuilderMock<>( + EmployeeFields.structure, () -> new ArrayList<>(map.values()), SelectParams.empty()); + } + ; + + @Override + public List selectAll(Connection c) { + return new ArrayList<>(map.values()); + } + ; + + @Override + public Optional selectById(BusinessentityId businessentityid, Connection c) { + return Optional.ofNullable(map.get(businessentityid)); + } + ; + + @Override + public List selectByIds(BusinessentityId[] businessentityids, Connection c) { + var result = new ArrayList(); + for (var id : businessentityids) { + var opt = Optional.ofNullable(map.get(id)); + if (opt.isPresent()) { + result.add(opt.get()); + } + ; + } + ; + return result; + } + ; + + @Override + public Map selectByIdsTracked( + BusinessentityId[] businessentityids, Connection c) { + return selectByIds(businessentityids, c).stream() + .collect( + Collectors.toMap((EmployeeRow row) -> row.businessentityid(), Function.identity())); + } + ; + + @Override + public UpdateBuilder update() { + return new UpdateBuilderMock<>( + EmployeeFields.structure, + () -> new ArrayList<>(map.values()), + UpdateParams.empty(), + row -> row); + } + ; + + @Override + public Boolean update(EmployeeRow row, Connection c) { + var shouldUpdate = + Optional.ofNullable(map.get(row.businessentityid())) + .filter(oldRow -> !oldRow.equals(row)) + .isPresent(); + if (shouldUpdate) { + map.put(row.businessentityid(), row); + ; + } + ; + return shouldUpdate; + } + ; + + @Override + public EmployeeRow upsert(EmployeeRow unsaved, Connection c) { + map.put(unsaved.businessentityid(), unsaved); + return unsaved; + } + ; + + @Override + public List upsertBatch(Iterator unsaved, Connection c) { + var result = new ArrayList(); + while (unsaved.hasNext()) { + var row = unsaved.next(); + map.put(row.businessentityid(), row); + result.add(row); + } + ; + return result; + } + ; + + /** NOTE: this functionality is not safe if you use auto-commit mode! it runs 3 SQL statements */ + @Override + public Integer upsertStreaming(Iterator unsaved, Integer batchSize, Connection c) { + var count = 0; + while (unsaved.hasNext()) { + var row = unsaved.next(); + map.put(row.businessentityid(), row); + count = count + 1; + } + ; + return count; + } + ; +} diff --git a/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/humanresources/employee/EmployeeRow.java b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/humanresources/employee/EmployeeRow.java new file mode 100644 index 0000000000..7bb5b552be --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/humanresources/employee/EmployeeRow.java @@ -0,0 +1,597 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.postgres.humanresources.employee; + +import combined.postgres.customtypes.Defaulted; +import combined.postgres.person.businessentity.BusinessentityId; +import combined.shared.IsActive; +import combined.shared.IsSalaried; +import dev.typr.foundations.PgText; +import dev.typr.foundations.PgTypes; +import dev.typr.foundations.RowParser; +import dev.typr.foundations.RowParsers; +import dev.typr.foundations.Tuple.Tuple15; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.Optional; +import java.util.UUID; + +/** + * Table: humanresources.employee Employee information such as salary, department, and title. + * Primary key: businessentityid + */ +public record EmployeeRow( + /** + * Primary key for Employee records. Foreign key to BusinessEntity.BusinessEntityID. Points to + * {@link combined.postgres.person.person.PersonRow#businessentityid()} + */ + BusinessentityId businessentityid, + /** Unique national identification number such as a social security number. */ + String nationalidnumber, + /** Network login. */ + String loginid, + /** Work title such as Buyer or Sales Representative. */ + String jobtitle, + /** + * Date of birth. Constraint CK_Employee_BirthDate affecting columns birthdate: (((birthdate >= + * '1930-01-01'::date) AND (birthdate <= (now() - '18 years'::interval)))) + */ + LocalDate birthdate, + /** + * M = Married, S = Single Constraint CK_Employee_MaritalStatus affecting columns maritalstatus: + * ((upper((maritalstatus)::text) = ANY (ARRAY['M'::text, 'S'::text]))) + */ + String maritalstatus, + /** + * M = Male, F = Female Constraint CK_Employee_Gender affecting columns gender: + * ((upper((gender)::text) = ANY (ARRAY['M'::text, 'F'::text]))) + */ + String gender, + /** + * Employee hired on this date. Constraint CK_Employee_HireDate affecting columns hiredate: + * (((hiredate >= '1996-07-01'::date) AND (hiredate <= (now() + '1 day'::interval)))) + */ + LocalDate hiredate, + /** + * Job classification. 0 = Hourly, not exempt from collective bargaining. 1 = Salaried, exempt + * from collective bargaining. Default: true + */ + /* user-picked */ IsSalaried salariedflag, + /** + * Number of available vacation hours. Default: 0 Constraint CK_Employee_VacationHours affecting + * columns vacationhours: (((vacationhours >= '-40'::integer) AND (vacationhours <= 240))) + */ + Short vacationhours, + /** + * Number of available sick leave hours. Default: 0 Constraint CK_Employee_SickLeaveHours + * affecting columns sickleavehours: (((sickleavehours >= 0) AND (sickleavehours <= 120))) + */ + Short sickleavehours, + /** 0 = Inactive, 1 = Active Default: true */ + /* user-picked */ IsActive currentflag, + /** Default: uuid_generate_v1() */ + UUID rowguid, + /** Default: now() */ + LocalDateTime modifieddate, + /** Where the employee is located in corporate hierarchy. Default: '/'::character varying */ + Optional organizationnode) + implements Tuple15< + BusinessentityId, + String, + String, + String, + LocalDate, + String, + String, + LocalDate, /* user-picked */ + IsSalaried, + Short, + Short, /* user-picked */ + IsActive, + UUID, + LocalDateTime, + Optional> { + /** + * Primary key for Employee records. Foreign key to BusinessEntity.BusinessEntityID. Points to + * {@link combined.postgres.person.person.PersonRow#businessentityid()} + */ + public EmployeeRow withBusinessentityid(BusinessentityId businessentityid) { + return new EmployeeRow( + businessentityid, + nationalidnumber, + loginid, + jobtitle, + birthdate, + maritalstatus, + gender, + hiredate, + salariedflag, + vacationhours, + sickleavehours, + currentflag, + rowguid, + modifieddate, + organizationnode); + } + ; + + /** Unique national identification number such as a social security number. */ + public EmployeeRow withNationalidnumber(String nationalidnumber) { + return new EmployeeRow( + businessentityid, + nationalidnumber, + loginid, + jobtitle, + birthdate, + maritalstatus, + gender, + hiredate, + salariedflag, + vacationhours, + sickleavehours, + currentflag, + rowguid, + modifieddate, + organizationnode); + } + ; + + /** Network login. */ + public EmployeeRow withLoginid(String loginid) { + return new EmployeeRow( + businessentityid, + nationalidnumber, + loginid, + jobtitle, + birthdate, + maritalstatus, + gender, + hiredate, + salariedflag, + vacationhours, + sickleavehours, + currentflag, + rowguid, + modifieddate, + organizationnode); + } + ; + + /** Work title such as Buyer or Sales Representative. */ + public EmployeeRow withJobtitle(String jobtitle) { + return new EmployeeRow( + businessentityid, + nationalidnumber, + loginid, + jobtitle, + birthdate, + maritalstatus, + gender, + hiredate, + salariedflag, + vacationhours, + sickleavehours, + currentflag, + rowguid, + modifieddate, + organizationnode); + } + ; + + /** + * Date of birth. Constraint CK_Employee_BirthDate affecting columns birthdate: (((birthdate >= + * '1930-01-01'::date) AND (birthdate <= (now() - '18 years'::interval)))) + */ + public EmployeeRow withBirthdate(LocalDate birthdate) { + return new EmployeeRow( + businessentityid, + nationalidnumber, + loginid, + jobtitle, + birthdate, + maritalstatus, + gender, + hiredate, + salariedflag, + vacationhours, + sickleavehours, + currentflag, + rowguid, + modifieddate, + organizationnode); + } + ; + + /** + * M = Married, S = Single Constraint CK_Employee_MaritalStatus affecting columns maritalstatus: + * ((upper((maritalstatus)::text) = ANY (ARRAY['M'::text, 'S'::text]))) + */ + public EmployeeRow withMaritalstatus(String maritalstatus) { + return new EmployeeRow( + businessentityid, + nationalidnumber, + loginid, + jobtitle, + birthdate, + maritalstatus, + gender, + hiredate, + salariedflag, + vacationhours, + sickleavehours, + currentflag, + rowguid, + modifieddate, + organizationnode); + } + ; + + /** + * M = Male, F = Female Constraint CK_Employee_Gender affecting columns gender: + * ((upper((gender)::text) = ANY (ARRAY['M'::text, 'F'::text]))) + */ + public EmployeeRow withGender(String gender) { + return new EmployeeRow( + businessentityid, + nationalidnumber, + loginid, + jobtitle, + birthdate, + maritalstatus, + gender, + hiredate, + salariedflag, + vacationhours, + sickleavehours, + currentflag, + rowguid, + modifieddate, + organizationnode); + } + ; + + /** + * Employee hired on this date. Constraint CK_Employee_HireDate affecting columns hiredate: + * (((hiredate >= '1996-07-01'::date) AND (hiredate <= (now() + '1 day'::interval)))) + */ + public EmployeeRow withHiredate(LocalDate hiredate) { + return new EmployeeRow( + businessentityid, + nationalidnumber, + loginid, + jobtitle, + birthdate, + maritalstatus, + gender, + hiredate, + salariedflag, + vacationhours, + sickleavehours, + currentflag, + rowguid, + modifieddate, + organizationnode); + } + ; + + /** + * Job classification. 0 = Hourly, not exempt from collective bargaining. 1 = Salaried, exempt + * from collective bargaining. Default: true + */ + public EmployeeRow withSalariedflag(/* user-picked */ IsSalaried salariedflag) { + return new EmployeeRow( + businessentityid, + nationalidnumber, + loginid, + jobtitle, + birthdate, + maritalstatus, + gender, + hiredate, + salariedflag, + vacationhours, + sickleavehours, + currentflag, + rowguid, + modifieddate, + organizationnode); + } + ; + + /** + * Number of available vacation hours. Default: 0 Constraint CK_Employee_VacationHours affecting + * columns vacationhours: (((vacationhours >= '-40'::integer) AND (vacationhours <= 240))) + */ + public EmployeeRow withVacationhours(Short vacationhours) { + return new EmployeeRow( + businessentityid, + nationalidnumber, + loginid, + jobtitle, + birthdate, + maritalstatus, + gender, + hiredate, + salariedflag, + vacationhours, + sickleavehours, + currentflag, + rowguid, + modifieddate, + organizationnode); + } + ; + + /** + * Number of available sick leave hours. Default: 0 Constraint CK_Employee_SickLeaveHours + * affecting columns sickleavehours: (((sickleavehours >= 0) AND (sickleavehours <= 120))) + */ + public EmployeeRow withSickleavehours(Short sickleavehours) { + return new EmployeeRow( + businessentityid, + nationalidnumber, + loginid, + jobtitle, + birthdate, + maritalstatus, + gender, + hiredate, + salariedflag, + vacationhours, + sickleavehours, + currentflag, + rowguid, + modifieddate, + organizationnode); + } + ; + + /** 0 = Inactive, 1 = Active Default: true */ + public EmployeeRow withCurrentflag(/* user-picked */ IsActive currentflag) { + return new EmployeeRow( + businessentityid, + nationalidnumber, + loginid, + jobtitle, + birthdate, + maritalstatus, + gender, + hiredate, + salariedflag, + vacationhours, + sickleavehours, + currentflag, + rowguid, + modifieddate, + organizationnode); + } + ; + + /** Default: uuid_generate_v1() */ + public EmployeeRow withRowguid(UUID rowguid) { + return new EmployeeRow( + businessentityid, + nationalidnumber, + loginid, + jobtitle, + birthdate, + maritalstatus, + gender, + hiredate, + salariedflag, + vacationhours, + sickleavehours, + currentflag, + rowguid, + modifieddate, + organizationnode); + } + ; + + /** Default: now() */ + public EmployeeRow withModifieddate(LocalDateTime modifieddate) { + return new EmployeeRow( + businessentityid, + nationalidnumber, + loginid, + jobtitle, + birthdate, + maritalstatus, + gender, + hiredate, + salariedflag, + vacationhours, + sickleavehours, + currentflag, + rowguid, + modifieddate, + organizationnode); + } + ; + + /** Where the employee is located in corporate hierarchy. Default: '/'::character varying */ + public EmployeeRow withOrganizationnode(Optional organizationnode) { + return new EmployeeRow( + businessentityid, + nationalidnumber, + loginid, + jobtitle, + birthdate, + maritalstatus, + gender, + hiredate, + salariedflag, + vacationhours, + sickleavehours, + currentflag, + rowguid, + modifieddate, + organizationnode); + } + ; + + public static RowParser _rowParser = + RowParsers.of( + BusinessentityId.pgType, + PgTypes.text, + PgTypes.text, + PgTypes.text, + PgTypes.date, + PgTypes.bpchar, + PgTypes.bpchar, + PgTypes.date, + IsSalaried.pgType, + PgTypes.int2, + PgTypes.int2, + IsActive.pgType, + PgTypes.uuid, + PgTypes.timestamp, + PgTypes.text.opt(), + EmployeeRow::new, + row -> + new Object[] { + row.businessentityid(), + row.nationalidnumber(), + row.loginid(), + row.jobtitle(), + row.birthdate(), + row.maritalstatus(), + row.gender(), + row.hiredate(), + row.salariedflag(), + row.vacationhours(), + row.sickleavehours(), + row.currentflag(), + row.rowguid(), + row.modifieddate(), + row.organizationnode() + }); + ; + + public static PgText pgText = PgText.from(_rowParser); + + @Override + public BusinessentityId _1() { + return businessentityid; + } + ; + + @Override + public Short _10() { + return vacationhours; + } + ; + + @Override + public Short _11() { + return sickleavehours; + } + ; + + @Override + public /* user-picked */ IsActive _12() { + return currentflag; + } + ; + + @Override + public UUID _13() { + return rowguid; + } + ; + + @Override + public LocalDateTime _14() { + return modifieddate; + } + ; + + @Override + public Optional _15() { + return organizationnode; + } + ; + + @Override + public String _2() { + return nationalidnumber; + } + ; + + @Override + public String _3() { + return loginid; + } + ; + + @Override + public String _4() { + return jobtitle; + } + ; + + @Override + public LocalDate _5() { + return birthdate; + } + ; + + @Override + public String _6() { + return maritalstatus; + } + ; + + @Override + public String _7() { + return gender; + } + ; + + @Override + public LocalDate _8() { + return hiredate; + } + ; + + @Override + public /* user-picked */ IsSalaried _9() { + return salariedflag; + } + ; + + public BusinessentityId id() { + return businessentityid; + } + ; + + public EmployeeRowUnsaved toUnsavedRow( + Defaulted salariedflag, + Defaulted vacationhours, + Defaulted sickleavehours, + Defaulted currentflag, + Defaulted rowguid, + Defaulted modifieddate, + Defaulted> organizationnode) { + return new EmployeeRowUnsaved( + businessentityid, + nationalidnumber, + loginid, + jobtitle, + birthdate, + maritalstatus, + gender, + hiredate, + salariedflag, + vacationhours, + sickleavehours, + currentflag, + rowguid, + modifieddate, + organizationnode); + } + ; +} diff --git a/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/humanresources/employee/EmployeeRowUnsaved.java b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/humanresources/employee/EmployeeRowUnsaved.java new file mode 100644 index 0000000000..aecbaab358 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/humanresources/employee/EmployeeRowUnsaved.java @@ -0,0 +1,529 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.postgres.humanresources.employee; + +import combined.postgres.customtypes.Defaulted; +import combined.postgres.customtypes.Defaulted.UseDefault; +import combined.postgres.person.businessentity.BusinessentityId; +import combined.shared.IsActive; +import combined.shared.IsSalaried; +import dev.typr.foundations.PgText; +import dev.typr.foundations.PgTypes; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.Optional; +import java.util.UUID; + +/** + * This class corresponds to a row in table `humanresources.employee` which has not been persisted + * yet + */ +public record EmployeeRowUnsaved( + /** + * Primary key for Employee records. Foreign key to BusinessEntity.BusinessEntityID. Points to + * {@link combined.postgres.person.person.PersonRow#businessentityid()} + */ + BusinessentityId businessentityid, + /** Unique national identification number such as a social security number. */ + String nationalidnumber, + /** Network login. */ + String loginid, + /** Work title such as Buyer or Sales Representative. */ + String jobtitle, + /** + * Date of birth. Constraint CK_Employee_BirthDate affecting columns birthdate: (((birthdate >= + * '1930-01-01'::date) AND (birthdate <= (now() - '18 years'::interval)))) + */ + LocalDate birthdate, + /** + * M = Married, S = Single Constraint CK_Employee_MaritalStatus affecting columns maritalstatus: + * ((upper((maritalstatus)::text) = ANY (ARRAY['M'::text, 'S'::text]))) + */ + String maritalstatus, + /** + * M = Male, F = Female Constraint CK_Employee_Gender affecting columns gender: + * ((upper((gender)::text) = ANY (ARRAY['M'::text, 'F'::text]))) + */ + String gender, + /** + * Employee hired on this date. Constraint CK_Employee_HireDate affecting columns hiredate: + * (((hiredate >= '1996-07-01'::date) AND (hiredate <= (now() + '1 day'::interval)))) + */ + LocalDate hiredate, + /** + * Default: true Job classification. 0 = Hourly, not exempt from collective bargaining. 1 = + * Salaried, exempt from collective bargaining. + */ + Defaulted salariedflag, + /** + * Default: 0 Number of available vacation hours. Constraint CK_Employee_VacationHours affecting + * columns vacationhours: (((vacationhours >= '-40'::integer) AND (vacationhours <= 240))) + */ + Defaulted vacationhours, + /** + * Default: 0 Number of available sick leave hours. Constraint CK_Employee_SickLeaveHours + * affecting columns sickleavehours: (((sickleavehours >= 0) AND (sickleavehours <= 120))) + */ + Defaulted sickleavehours, + /** Default: true 0 = Inactive, 1 = Active */ + Defaulted currentflag, + /** Default: uuid_generate_v1() */ + Defaulted rowguid, + /** Default: now() */ + Defaulted modifieddate, + /** Default: '/'::character varying Where the employee is located in corporate hierarchy. */ + Defaulted> organizationnode) { + public EmployeeRowUnsaved( + /** + * Primary key for Employee records. Foreign key to BusinessEntity.BusinessEntityID. Points to + * {@link combined.postgres.person.person.PersonRow#businessentityid()} + */ + BusinessentityId businessentityid, + /** Unique national identification number such as a social security number. */ + String nationalidnumber, + /** Network login. */ + String loginid, + /** Work title such as Buyer or Sales Representative. */ + String jobtitle, + /** + * Date of birth. Constraint CK_Employee_BirthDate affecting columns birthdate: (((birthdate + * >= '1930-01-01'::date) AND (birthdate <= (now() - '18 years'::interval)))) + */ + LocalDate birthdate, + /** + * M = Married, S = Single Constraint CK_Employee_MaritalStatus affecting columns + * maritalstatus: ((upper((maritalstatus)::text) = ANY (ARRAY['M'::text, 'S'::text]))) + */ + String maritalstatus, + /** + * M = Male, F = Female Constraint CK_Employee_Gender affecting columns gender: + * ((upper((gender)::text) = ANY (ARRAY['M'::text, 'F'::text]))) + */ + String gender, + /** + * Employee hired on this date. Constraint CK_Employee_HireDate affecting columns hiredate: + * (((hiredate >= '1996-07-01'::date) AND (hiredate <= (now() + '1 day'::interval)))) + */ + LocalDate hiredate) { + this( + businessentityid, + nationalidnumber, + loginid, + jobtitle, + birthdate, + maritalstatus, + gender, + hiredate, + new UseDefault<>(), + new UseDefault<>(), + new UseDefault<>(), + new UseDefault<>(), + new UseDefault<>(), + new UseDefault<>(), + new UseDefault<>()); + } + ; + + /** + * Primary key for Employee records. Foreign key to BusinessEntity.BusinessEntityID. Points to + * {@link combined.postgres.person.person.PersonRow#businessentityid()} + */ + public EmployeeRowUnsaved withBusinessentityid(BusinessentityId businessentityid) { + return new EmployeeRowUnsaved( + businessentityid, + nationalidnumber, + loginid, + jobtitle, + birthdate, + maritalstatus, + gender, + hiredate, + salariedflag, + vacationhours, + sickleavehours, + currentflag, + rowguid, + modifieddate, + organizationnode); + } + ; + + /** Unique national identification number such as a social security number. */ + public EmployeeRowUnsaved withNationalidnumber(String nationalidnumber) { + return new EmployeeRowUnsaved( + businessentityid, + nationalidnumber, + loginid, + jobtitle, + birthdate, + maritalstatus, + gender, + hiredate, + salariedflag, + vacationhours, + sickleavehours, + currentflag, + rowguid, + modifieddate, + organizationnode); + } + ; + + /** Network login. */ + public EmployeeRowUnsaved withLoginid(String loginid) { + return new EmployeeRowUnsaved( + businessentityid, + nationalidnumber, + loginid, + jobtitle, + birthdate, + maritalstatus, + gender, + hiredate, + salariedflag, + vacationhours, + sickleavehours, + currentflag, + rowguid, + modifieddate, + organizationnode); + } + ; + + /** Work title such as Buyer or Sales Representative. */ + public EmployeeRowUnsaved withJobtitle(String jobtitle) { + return new EmployeeRowUnsaved( + businessentityid, + nationalidnumber, + loginid, + jobtitle, + birthdate, + maritalstatus, + gender, + hiredate, + salariedflag, + vacationhours, + sickleavehours, + currentflag, + rowguid, + modifieddate, + organizationnode); + } + ; + + /** + * Date of birth. Constraint CK_Employee_BirthDate affecting columns birthdate: (((birthdate >= + * '1930-01-01'::date) AND (birthdate <= (now() - '18 years'::interval)))) + */ + public EmployeeRowUnsaved withBirthdate(LocalDate birthdate) { + return new EmployeeRowUnsaved( + businessentityid, + nationalidnumber, + loginid, + jobtitle, + birthdate, + maritalstatus, + gender, + hiredate, + salariedflag, + vacationhours, + sickleavehours, + currentflag, + rowguid, + modifieddate, + organizationnode); + } + ; + + /** + * M = Married, S = Single Constraint CK_Employee_MaritalStatus affecting columns maritalstatus: + * ((upper((maritalstatus)::text) = ANY (ARRAY['M'::text, 'S'::text]))) + */ + public EmployeeRowUnsaved withMaritalstatus(String maritalstatus) { + return new EmployeeRowUnsaved( + businessentityid, + nationalidnumber, + loginid, + jobtitle, + birthdate, + maritalstatus, + gender, + hiredate, + salariedflag, + vacationhours, + sickleavehours, + currentflag, + rowguid, + modifieddate, + organizationnode); + } + ; + + /** + * M = Male, F = Female Constraint CK_Employee_Gender affecting columns gender: + * ((upper((gender)::text) = ANY (ARRAY['M'::text, 'F'::text]))) + */ + public EmployeeRowUnsaved withGender(String gender) { + return new EmployeeRowUnsaved( + businessentityid, + nationalidnumber, + loginid, + jobtitle, + birthdate, + maritalstatus, + gender, + hiredate, + salariedflag, + vacationhours, + sickleavehours, + currentflag, + rowguid, + modifieddate, + organizationnode); + } + ; + + /** + * Employee hired on this date. Constraint CK_Employee_HireDate affecting columns hiredate: + * (((hiredate >= '1996-07-01'::date) AND (hiredate <= (now() + '1 day'::interval)))) + */ + public EmployeeRowUnsaved withHiredate(LocalDate hiredate) { + return new EmployeeRowUnsaved( + businessentityid, + nationalidnumber, + loginid, + jobtitle, + birthdate, + maritalstatus, + gender, + hiredate, + salariedflag, + vacationhours, + sickleavehours, + currentflag, + rowguid, + modifieddate, + organizationnode); + } + ; + + /** + * Default: true Job classification. 0 = Hourly, not exempt from collective bargaining. 1 = + * Salaried, exempt from collective bargaining. + */ + public EmployeeRowUnsaved withSalariedflag(Defaulted salariedflag) { + return new EmployeeRowUnsaved( + businessentityid, + nationalidnumber, + loginid, + jobtitle, + birthdate, + maritalstatus, + gender, + hiredate, + salariedflag, + vacationhours, + sickleavehours, + currentflag, + rowguid, + modifieddate, + organizationnode); + } + ; + + /** + * Default: 0 Number of available vacation hours. Constraint CK_Employee_VacationHours affecting + * columns vacationhours: (((vacationhours >= '-40'::integer) AND (vacationhours <= 240))) + */ + public EmployeeRowUnsaved withVacationhours(Defaulted vacationhours) { + return new EmployeeRowUnsaved( + businessentityid, + nationalidnumber, + loginid, + jobtitle, + birthdate, + maritalstatus, + gender, + hiredate, + salariedflag, + vacationhours, + sickleavehours, + currentflag, + rowguid, + modifieddate, + organizationnode); + } + ; + + /** + * Default: 0 Number of available sick leave hours. Constraint CK_Employee_SickLeaveHours + * affecting columns sickleavehours: (((sickleavehours >= 0) AND (sickleavehours <= 120))) + */ + public EmployeeRowUnsaved withSickleavehours(Defaulted sickleavehours) { + return new EmployeeRowUnsaved( + businessentityid, + nationalidnumber, + loginid, + jobtitle, + birthdate, + maritalstatus, + gender, + hiredate, + salariedflag, + vacationhours, + sickleavehours, + currentflag, + rowguid, + modifieddate, + organizationnode); + } + ; + + /** Default: true 0 = Inactive, 1 = Active */ + public EmployeeRowUnsaved withCurrentflag(Defaulted currentflag) { + return new EmployeeRowUnsaved( + businessentityid, + nationalidnumber, + loginid, + jobtitle, + birthdate, + maritalstatus, + gender, + hiredate, + salariedflag, + vacationhours, + sickleavehours, + currentflag, + rowguid, + modifieddate, + organizationnode); + } + ; + + /** Default: uuid_generate_v1() */ + public EmployeeRowUnsaved withRowguid(Defaulted rowguid) { + return new EmployeeRowUnsaved( + businessentityid, + nationalidnumber, + loginid, + jobtitle, + birthdate, + maritalstatus, + gender, + hiredate, + salariedflag, + vacationhours, + sickleavehours, + currentflag, + rowguid, + modifieddate, + organizationnode); + } + ; + + /** Default: now() */ + public EmployeeRowUnsaved withModifieddate(Defaulted modifieddate) { + return new EmployeeRowUnsaved( + businessentityid, + nationalidnumber, + loginid, + jobtitle, + birthdate, + maritalstatus, + gender, + hiredate, + salariedflag, + vacationhours, + sickleavehours, + currentflag, + rowguid, + modifieddate, + organizationnode); + } + ; + + /** Default: '/'::character varying Where the employee is located in corporate hierarchy. */ + public EmployeeRowUnsaved withOrganizationnode(Defaulted> organizationnode) { + return new EmployeeRowUnsaved( + businessentityid, + nationalidnumber, + loginid, + jobtitle, + birthdate, + maritalstatus, + gender, + hiredate, + salariedflag, + vacationhours, + sickleavehours, + currentflag, + rowguid, + modifieddate, + organizationnode); + } + ; + + public static PgText pgText = + PgText.instance( + (row, sb) -> { + BusinessentityId.pgType.text().unsafeEncode(row.businessentityid, sb); + sb.append(PgText.DELIMETER); + PgTypes.text.text().unsafeEncode(row.nationalidnumber, sb); + sb.append(PgText.DELIMETER); + PgTypes.text.text().unsafeEncode(row.loginid, sb); + sb.append(PgText.DELIMETER); + PgTypes.text.text().unsafeEncode(row.jobtitle, sb); + sb.append(PgText.DELIMETER); + PgTypes.date.text().unsafeEncode(row.birthdate, sb); + sb.append(PgText.DELIMETER); + PgTypes.bpchar.text().unsafeEncode(row.maritalstatus, sb); + sb.append(PgText.DELIMETER); + PgTypes.bpchar.text().unsafeEncode(row.gender, sb); + sb.append(PgText.DELIMETER); + PgTypes.date.text().unsafeEncode(row.hiredate, sb); + sb.append(PgText.DELIMETER); + Defaulted.pgText(IsSalaried.pgType.text()).unsafeEncode(row.salariedflag, sb); + sb.append(PgText.DELIMETER); + Defaulted.pgText(PgTypes.int2.text()).unsafeEncode(row.vacationhours, sb); + sb.append(PgText.DELIMETER); + Defaulted.pgText(PgTypes.int2.text()).unsafeEncode(row.sickleavehours, sb); + sb.append(PgText.DELIMETER); + Defaulted.pgText(IsActive.pgType.text()).unsafeEncode(row.currentflag, sb); + sb.append(PgText.DELIMETER); + Defaulted.pgText(PgTypes.uuid.text()).unsafeEncode(row.rowguid, sb); + sb.append(PgText.DELIMETER); + Defaulted.pgText(PgTypes.timestamp.text()).unsafeEncode(row.modifieddate, sb); + sb.append(PgText.DELIMETER); + Defaulted.pgText(PgTypes.text.opt().text()).unsafeEncode(row.organizationnode, sb); + }); + + public EmployeeRow toRow( + java.util.function.Supplier salariedflagDefault, + java.util.function.Supplier vacationhoursDefault, + java.util.function.Supplier sickleavehoursDefault, + java.util.function.Supplier currentflagDefault, + java.util.function.Supplier rowguidDefault, + java.util.function.Supplier modifieddateDefault, + java.util.function.Supplier> organizationnodeDefault) { + return new EmployeeRow( + businessentityid, + nationalidnumber, + loginid, + jobtitle, + birthdate, + maritalstatus, + gender, + hiredate, + salariedflag.getOrElse(salariedflagDefault), + vacationhours.getOrElse(vacationhoursDefault), + sickleavehours.getOrElse(sickleavehoursDefault), + currentflag.getOrElse(currentflagDefault), + rowguid.getOrElse(rowguidDefault), + modifieddate.getOrElse(modifieddateDefault), + organizationnode.getOrElse(organizationnodeDefault)); + } + ; +} diff --git a/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/information_schema/CardinalNumber.java b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/information_schema/CardinalNumber.java new file mode 100644 index 0000000000..c18aab24ab --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/information_schema/CardinalNumber.java @@ -0,0 +1,35 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.postgres.information_schema; + +import com.fasterxml.jackson.annotation.JsonValue; +import dev.typr.foundations.PgType; +import dev.typr.foundations.PgTypes; +import dev.typr.foundations.dsl.Bijection; +import dev.typr.foundations.internal.arrayMap; + +/** Domain `information_schema.cardinal_number` Constraint: CHECK ((VALUE >= 0)) */ +public record CardinalNumber(@JsonValue Integer value) { + public CardinalNumber withValue(Integer value) { + return new CardinalNumber(value); + } + ; + + public static Bijection bijection = + Bijection.of(CardinalNumber::value, CardinalNumber::new); + + public static PgType pgType = + PgTypes.int4 + .bimap(CardinalNumber::new, CardinalNumber::value) + .renamed("\"information_schema\".\"cardinal_number\""); + + public static PgType pgTypeArray = + PgTypes.int4Array + .bimap( + xs -> arrayMap.map(xs, CardinalNumber::new, CardinalNumber.class), + xs -> arrayMap.map(xs, CardinalNumber::value, Integer.class)) + .renamed("\"information_schema\".\"cardinal_number\"[]"); +} diff --git a/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/information_schema/CharacterData.java b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/information_schema/CharacterData.java new file mode 100644 index 0000000000..081b94db4b --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/information_schema/CharacterData.java @@ -0,0 +1,35 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.postgres.information_schema; + +import com.fasterxml.jackson.annotation.JsonValue; +import dev.typr.foundations.PgType; +import dev.typr.foundations.PgTypes; +import dev.typr.foundations.dsl.Bijection; +import dev.typr.foundations.internal.arrayMap; + +/** Domain `information_schema.character_data` No constraint */ +public record CharacterData(@JsonValue String value) { + public CharacterData withValue(String value) { + return new CharacterData(value); + } + ; + + public static Bijection bijection = + Bijection.of(CharacterData::value, CharacterData::new); + + public static PgType pgType = + PgTypes.text + .bimap(CharacterData::new, CharacterData::value) + .renamed("\"information_schema\".\"character_data\""); + + public static PgType pgTypeArray = + PgTypes.textArray + .bimap( + xs -> arrayMap.map(xs, CharacterData::new, CharacterData.class), + xs -> arrayMap.map(xs, CharacterData::value, String.class)) + .renamed("\"information_schema\".\"character_data\"[]"); +} diff --git a/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/information_schema/SqlIdentifier.java b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/information_schema/SqlIdentifier.java new file mode 100644 index 0000000000..7a13527e3e --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/information_schema/SqlIdentifier.java @@ -0,0 +1,35 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.postgres.information_schema; + +import com.fasterxml.jackson.annotation.JsonValue; +import dev.typr.foundations.PgType; +import dev.typr.foundations.PgTypes; +import dev.typr.foundations.dsl.Bijection; +import dev.typr.foundations.internal.arrayMap; + +/** Domain `information_schema.sql_identifier` No constraint */ +public record SqlIdentifier(@JsonValue String value) { + public SqlIdentifier withValue(String value) { + return new SqlIdentifier(value); + } + ; + + public static Bijection bijection = + Bijection.of(SqlIdentifier::value, SqlIdentifier::new); + + public static PgType pgType = + PgTypes.name + .bimap(SqlIdentifier::new, SqlIdentifier::value) + .renamed("\"information_schema\".\"sql_identifier\""); + + public static PgType pgTypeArray = + PgTypes.nameArray + .bimap( + xs -> arrayMap.map(xs, SqlIdentifier::new, SqlIdentifier.class), + xs -> arrayMap.map(xs, SqlIdentifier::value, String.class)) + .renamed("\"information_schema\".\"sql_identifier\"[]"); +} diff --git a/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/information_schema/TimeStamp.java b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/information_schema/TimeStamp.java new file mode 100644 index 0000000000..98f4b85ad7 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/information_schema/TimeStamp.java @@ -0,0 +1,36 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.postgres.information_schema; + +import com.fasterxml.jackson.annotation.JsonValue; +import dev.typr.foundations.PgType; +import dev.typr.foundations.PgTypes; +import dev.typr.foundations.dsl.Bijection; +import dev.typr.foundations.internal.arrayMap; +import java.time.Instant; + +/** Domain `information_schema.time_stamp` No constraint */ +public record TimeStamp(@JsonValue Instant value) { + public TimeStamp withValue(Instant value) { + return new TimeStamp(value); + } + ; + + public static Bijection bijection = + Bijection.of(TimeStamp::value, TimeStamp::new); + + public static PgType pgType = + PgTypes.timestamptz + .bimap(TimeStamp::new, TimeStamp::value) + .renamed("\"information_schema\".\"time_stamp\""); + + public static PgType pgTypeArray = + PgTypes.timestamptzArray + .bimap( + xs -> arrayMap.map(xs, TimeStamp::new, TimeStamp.class), + xs -> arrayMap.map(xs, TimeStamp::value, Instant.class)) + .renamed("\"information_schema\".\"time_stamp\"[]"); +} diff --git a/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/information_schema/YesOrNo.java b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/information_schema/YesOrNo.java new file mode 100644 index 0000000000..1a51f58a47 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/information_schema/YesOrNo.java @@ -0,0 +1,37 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.postgres.information_schema; + +import com.fasterxml.jackson.annotation.JsonValue; +import dev.typr.foundations.PgType; +import dev.typr.foundations.PgTypes; +import dev.typr.foundations.dsl.Bijection; +import dev.typr.foundations.internal.arrayMap; + +/** + * Domain `information_schema.yes_or_no` Constraint: CHECK (((VALUE)::text = ANY + * ((ARRAY['YES'::character varying, 'NO'::character varying])::text[]))) + */ +public record YesOrNo(@JsonValue String value) { + public YesOrNo withValue(String value) { + return new YesOrNo(value); + } + ; + + public static Bijection bijection = Bijection.of(YesOrNo::value, YesOrNo::new); + + public static PgType pgType = + PgTypes.text + .bimap(YesOrNo::new, YesOrNo::value) + .renamed("\"information_schema\".\"yes_or_no\""); + + public static PgType pgTypeArray = + PgTypes.textArray + .bimap( + xs -> arrayMap.map(xs, YesOrNo::new, YesOrNo.class), + xs -> arrayMap.map(xs, YesOrNo::value, String.class)) + .renamed("\"information_schema\".\"yes_or_no\"[]"); +} diff --git a/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/person/businessentity/BusinessentityFields.java b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/person/businessentity/BusinessentityFields.java new file mode 100644 index 0000000000..b0619666f2 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/person/businessentity/BusinessentityFields.java @@ -0,0 +1,102 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.postgres.person.businessentity; + +import dev.typr.foundations.PgTypes; +import dev.typr.foundations.RowParser; +import dev.typr.foundations.dsl.FieldsBase; +import dev.typr.foundations.dsl.Path; +import dev.typr.foundations.dsl.RelationStructure; +import dev.typr.foundations.dsl.SqlExpr; +import dev.typr.foundations.dsl.SqlExpr.Field; +import dev.typr.foundations.dsl.SqlExpr.FieldLike; +import dev.typr.foundations.dsl.SqlExpr.IdField; +import dev.typr.foundations.dsl.TupleExpr.TupleExpr3; +import java.time.LocalDateTime; +import java.util.List; +import java.util.Optional; +import java.util.UUID; + +public class BusinessentityFields extends TupleExpr3 + implements RelationStructure, + FieldsBase { + List _path; + + public BusinessentityFields(List _path) { + this._path = _path; + } + + public static BusinessentityFields structure = + new BusinessentityFields(java.util.Collections.emptyList()); + + public IdField businessentityid() { + return new IdField( + _path, + "businessentityid", + BusinessentityRow::businessentityid, + Optional.empty(), + Optional.of("int4"), + (row, value) -> row.withBusinessentityid(value), + BusinessentityId.pgType); + } + + public Field rowguid() { + return new Field( + _path, + "rowguid", + BusinessentityRow::rowguid, + Optional.empty(), + Optional.of("uuid"), + (row, value) -> row.withRowguid(value), + PgTypes.uuid); + } + + public Field modifieddate() { + return new Field( + _path, + "modifieddate", + BusinessentityRow::modifieddate, + Optional.empty(), + Optional.of("timestamp"), + (row, value) -> row.withModifieddate(value), + PgTypes.timestamp); + } + + @Override + public List _path() { + return _path; + } + + @Override + public List> columns() { + return java.util.List.of(this.businessentityid(), this.rowguid(), this.modifieddate()); + } + + @Override + public RowParser rowParser() { + return BusinessentityRow._rowParser; + } + + @Override + public RelationStructure withPaths(List _path) { + return new BusinessentityFields(_path); + } + + @Override + public SqlExpr _1() { + return businessentityid(); + } + + @Override + public SqlExpr _2() { + return rowguid(); + } + + @Override + public SqlExpr _3() { + return modifieddate(); + } +} diff --git a/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/person/businessentity/BusinessentityId.java b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/person/businessentity/BusinessentityId.java new file mode 100644 index 0000000000..1a672a4a5f --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/person/businessentity/BusinessentityId.java @@ -0,0 +1,37 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.postgres.person.businessentity; + +import com.fasterxml.jackson.annotation.JsonValue; +import dev.typr.foundations.PgType; +import dev.typr.foundations.PgTypes; +import dev.typr.foundations.dsl.Bijection; +import dev.typr.foundations.internal.arrayMap; + +/** Type for the primary key of table `person.businessentity` */ +public record BusinessentityId(@JsonValue Integer value) { + public BusinessentityId withValue(Integer value) { + return new BusinessentityId(value); + } + ; + + @Override + public java.lang.String toString() { + return value.toString(); + } + ; + + public static Bijection bijection = + Bijection.of(BusinessentityId::value, BusinessentityId::new); + + public static PgType pgType = + PgTypes.int4.bimap(BusinessentityId::new, BusinessentityId::value); + + public static PgType pgTypeArray = + PgTypes.int4Array.bimap( + xs -> arrayMap.map(xs, BusinessentityId::new, BusinessentityId.class), + xs -> arrayMap.map(xs, BusinessentityId::value, Integer.class)); +} diff --git a/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/person/businessentity/BusinessentityRepo.java b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/person/businessentity/BusinessentityRepo.java new file mode 100644 index 0000000000..64aeb99a0b --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/person/businessentity/BusinessentityRepo.java @@ -0,0 +1,55 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.postgres.person.businessentity; + +import dev.typr.foundations.dsl.DeleteBuilder; +import dev.typr.foundations.dsl.SelectBuilder; +import dev.typr.foundations.dsl.UpdateBuilder; +import java.sql.Connection; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Optional; + +public interface BusinessentityRepo { + DeleteBuilder delete(); + + Boolean deleteById(BusinessentityId businessentityid, Connection c); + + Integer deleteByIds(BusinessentityId[] businessentityids, Connection c); + + BusinessentityRow insert(BusinessentityRow unsaved, Connection c); + + BusinessentityRow insert(BusinessentityRowUnsaved unsaved, Connection c); + + Long insertStreaming(Iterator unsaved, Integer batchSize, Connection c); + + /** NOTE: this functionality requires PostgreSQL 16 or later! */ + Long insertUnsavedStreaming( + Iterator unsaved, Integer batchSize, Connection c); + + SelectBuilder select(); + + List selectAll(Connection c); + + Optional selectById(BusinessentityId businessentityid, Connection c); + + List selectByIds(BusinessentityId[] businessentityids, Connection c); + + Map selectByIdsTracked( + BusinessentityId[] businessentityids, Connection c); + + UpdateBuilder update(); + + Boolean update(BusinessentityRow row, Connection c); + + BusinessentityRow upsert(BusinessentityRow unsaved, Connection c); + + List upsertBatch(Iterator unsaved, Connection c); + + /** NOTE: this functionality is not safe if you use auto-commit mode! it runs 3 SQL statements */ + Integer upsertStreaming(Iterator unsaved, Integer batchSize, Connection c); +} diff --git a/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/person/businessentity/BusinessentityRepoImpl.java b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/person/businessentity/BusinessentityRepoImpl.java new file mode 100644 index 0000000000..6d8e2bdbd3 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/person/businessentity/BusinessentityRepoImpl.java @@ -0,0 +1,301 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.postgres.person.businessentity; + +import static dev.typr.foundations.Fragment.interpolate; + +import dev.typr.foundations.Fragment; +import dev.typr.foundations.PgTypes; +import dev.typr.foundations.dsl.DeleteBuilder; +import dev.typr.foundations.dsl.Dialect; +import dev.typr.foundations.dsl.SelectBuilder; +import dev.typr.foundations.dsl.UpdateBuilder; +import dev.typr.foundations.streamingInsert; +import java.sql.Connection; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Optional; + +public class BusinessentityRepoImpl implements BusinessentityRepo { + @Override + public DeleteBuilder delete() { + return DeleteBuilder.of( + "\"person\".\"businessentity\"", BusinessentityFields.structure, Dialect.POSTGRESQL); + } + + @Override + public Boolean deleteById(BusinessentityId businessentityid, Connection c) { + return interpolate( + Fragment.lit( + "delete from \"person\".\"businessentity\" where \"businessentityid\" = "), + Fragment.encode(BusinessentityId.pgType, businessentityid), + Fragment.lit("")) + .update() + .runUnchecked(c) + > 0; + } + + @Override + public Integer deleteByIds(BusinessentityId[] businessentityids, Connection c) { + return interpolate( + Fragment.lit( + "delete\nfrom \"person\".\"businessentity\"\nwhere \"businessentityid\" = ANY("), + Fragment.encode(BusinessentityId.pgTypeArray, businessentityids), + Fragment.lit(")")) + .update() + .runUnchecked(c); + } + + @Override + public BusinessentityRow insert(BusinessentityRow unsaved, Connection c) { + return interpolate( + Fragment.lit( + "insert into \"person\".\"businessentity\"(\"businessentityid\", \"rowguid\"," + + " \"modifieddate\")\n" + + "values ("), + Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid()), + Fragment.lit("::int4, "), + Fragment.encode(PgTypes.uuid, unsaved.rowguid()), + Fragment.lit("::uuid, "), + Fragment.encode(PgTypes.timestamp, unsaved.modifieddate()), + Fragment.lit( + "::timestamp)\nRETURNING \"businessentityid\", \"rowguid\", \"modifieddate\"\n")) + .updateReturning(BusinessentityRow._rowParser.exactlyOne()) + .runUnchecked(c); + } + + @Override + public BusinessentityRow insert(BusinessentityRowUnsaved unsaved, Connection c) { + ArrayList columns = new ArrayList<>(); + ; + ArrayList values = new ArrayList<>(); + ; + unsaved + .businessentityid() + .visit( + () -> {}, + value -> { + columns.add(Fragment.lit("\"businessentityid\"")); + values.add( + interpolate( + Fragment.encode(BusinessentityId.pgType, value), Fragment.lit("::int4"))); + }); + ; + unsaved + .rowguid() + .visit( + () -> {}, + value -> { + columns.add(Fragment.lit("\"rowguid\"")); + values.add(interpolate(Fragment.encode(PgTypes.uuid, value), Fragment.lit("::uuid"))); + }); + ; + unsaved + .modifieddate() + .visit( + () -> {}, + value -> { + columns.add(Fragment.lit("\"modifieddate\"")); + values.add( + interpolate( + Fragment.encode(PgTypes.timestamp, value), Fragment.lit("::timestamp"))); + }); + ; + Fragment q = + (columns.isEmpty() + ? interpolate( + Fragment.lit( + "insert into \"person\".\"businessentity\" default values\n" + + "RETURNING \"businessentityid\", \"rowguid\", \"modifieddate\"\n")) + : interpolate( + Fragment.lit("insert into \"person\".\"businessentity\"("), + Fragment.comma(columns), + Fragment.lit(")\nvalues ("), + Fragment.comma(values), + Fragment.lit( + ")\nRETURNING \"businessentityid\", \"rowguid\", \"modifieddate\"\n"))); + ; + return q.updateReturning(BusinessentityRow._rowParser.exactlyOne()).runUnchecked(c); + } + + @Override + public Long insertStreaming( + Iterator unsaved, Integer batchSize, Connection c) { + return streamingInsert.insertUnchecked( + "COPY \"person\".\"businessentity\"(\"businessentityid\", \"rowguid\", \"modifieddate\")" + + " FROM STDIN", + batchSize, + unsaved, + c, + BusinessentityRow.pgText); + } + + /** NOTE: this functionality requires PostgreSQL 16 or later! */ + @Override + public Long insertUnsavedStreaming( + Iterator unsaved, Integer batchSize, Connection c) { + return streamingInsert.insertUnchecked( + "COPY \"person\".\"businessentity\"(\"businessentityid\", \"rowguid\", \"modifieddate\")" + + " FROM STDIN (DEFAULT '__DEFAULT_VALUE__')", + batchSize, + unsaved, + c, + BusinessentityRowUnsaved.pgText); + } + + @Override + public SelectBuilder select() { + return SelectBuilder.of( + "\"person\".\"businessentity\"", + BusinessentityFields.structure, + BusinessentityRow._rowParser, + Dialect.POSTGRESQL); + } + + @Override + public List selectAll(Connection c) { + return interpolate( + Fragment.lit( + "select \"businessentityid\", \"rowguid\", \"modifieddate\"\n" + + "from \"person\".\"businessentity\"\n")) + .query(BusinessentityRow._rowParser.all()) + .runUnchecked(c); + } + + @Override + public Optional selectById(BusinessentityId businessentityid, Connection c) { + return interpolate( + Fragment.lit( + "select \"businessentityid\", \"rowguid\", \"modifieddate\"\n" + + "from \"person\".\"businessentity\"\n" + + "where \"businessentityid\" = "), + Fragment.encode(BusinessentityId.pgType, businessentityid), + Fragment.lit("")) + .query(BusinessentityRow._rowParser.first()) + .runUnchecked(c); + } + + @Override + public List selectByIds(BusinessentityId[] businessentityids, Connection c) { + return interpolate( + Fragment.lit( + "select \"businessentityid\", \"rowguid\", \"modifieddate\"\n" + + "from \"person\".\"businessentity\"\n" + + "where \"businessentityid\" = ANY("), + Fragment.encode(BusinessentityId.pgTypeArray, businessentityids), + Fragment.lit(")")) + .query(BusinessentityRow._rowParser.all()) + .runUnchecked(c); + } + + @Override + public Map selectByIdsTracked( + BusinessentityId[] businessentityids, Connection c) { + HashMap ret = + new HashMap(); + selectByIds(businessentityids, c).forEach(row -> ret.put(row.businessentityid(), row)); + return ret; + } + + @Override + public UpdateBuilder update() { + return UpdateBuilder.of( + "\"person\".\"businessentity\"", + BusinessentityFields.structure, + BusinessentityRow._rowParser, + Dialect.POSTGRESQL); + } + + @Override + public Boolean update(BusinessentityRow row, Connection c) { + BusinessentityId businessentityid = row.businessentityid(); + ; + return interpolate( + Fragment.lit("update \"person\".\"businessentity\"\nset \"rowguid\" = "), + Fragment.encode(PgTypes.uuid, row.rowguid()), + Fragment.lit("::uuid,\n\"modifieddate\" = "), + Fragment.encode(PgTypes.timestamp, row.modifieddate()), + Fragment.lit("::timestamp\nwhere \"businessentityid\" = "), + Fragment.encode(BusinessentityId.pgType, businessentityid), + Fragment.lit("")) + .update() + .runUnchecked(c) + > 0; + } + + @Override + public BusinessentityRow upsert(BusinessentityRow unsaved, Connection c) { + return interpolate( + Fragment.lit( + "insert into \"person\".\"businessentity\"(\"businessentityid\", \"rowguid\"," + + " \"modifieddate\")\n" + + "values ("), + Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid()), + Fragment.lit("::int4, "), + Fragment.encode(PgTypes.uuid, unsaved.rowguid()), + Fragment.lit("::uuid, "), + Fragment.encode(PgTypes.timestamp, unsaved.modifieddate()), + Fragment.lit( + "::timestamp)\n" + + "on conflict (\"businessentityid\")\n" + + "do update set\n" + + " \"rowguid\" = EXCLUDED.\"rowguid\",\n" + + "\"modifieddate\" = EXCLUDED.\"modifieddate\"\n" + + "returning \"businessentityid\", \"rowguid\", \"modifieddate\"")) + .updateReturning(BusinessentityRow._rowParser.exactlyOne()) + .runUnchecked(c); + } + + @Override + public List upsertBatch(Iterator unsaved, Connection c) { + return interpolate( + Fragment.lit( + "insert into \"person\".\"businessentity\"(\"businessentityid\", \"rowguid\"," + + " \"modifieddate\")\n" + + "values (?::int4, ?::uuid, ?::timestamp)\n" + + "on conflict (\"businessentityid\")\n" + + "do update set\n" + + " \"rowguid\" = EXCLUDED.\"rowguid\",\n" + + "\"modifieddate\" = EXCLUDED.\"modifieddate\"\n" + + "returning \"businessentityid\", \"rowguid\", \"modifieddate\"")) + .updateManyReturning(BusinessentityRow._rowParser, unsaved) + .runUnchecked(c); + } + + /** NOTE: this functionality is not safe if you use auto-commit mode! it runs 3 SQL statements */ + @Override + public Integer upsertStreaming( + Iterator unsaved, Integer batchSize, Connection c) { + interpolate( + Fragment.lit( + "create temporary table businessentity_TEMP (like \"person\".\"businessentity\") on" + + " commit drop")) + .update() + .runUnchecked(c); + streamingInsert.insertUnchecked( + "copy businessentity_TEMP(\"businessentityid\", \"rowguid\", \"modifieddate\") from stdin", + batchSize, + unsaved, + c, + BusinessentityRow.pgText); + return interpolate( + Fragment.lit( + "insert into \"person\".\"businessentity\"(\"businessentityid\", \"rowguid\"," + + " \"modifieddate\")\n" + + "select * from businessentity_TEMP\n" + + "on conflict (\"businessentityid\")\n" + + "do update set\n" + + " \"rowguid\" = EXCLUDED.\"rowguid\",\n" + + "\"modifieddate\" = EXCLUDED.\"modifieddate\"\n" + + ";\n" + + "drop table businessentity_TEMP;")) + .update() + .runUnchecked(c); + } +} diff --git a/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/person/businessentity/BusinessentityRepoMock.java b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/person/businessentity/BusinessentityRepoMock.java new file mode 100644 index 0000000000..f28370d18d --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/person/businessentity/BusinessentityRepoMock.java @@ -0,0 +1,230 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.postgres.person.businessentity; + +import dev.typr.foundations.dsl.DeleteBuilder; +import dev.typr.foundations.dsl.DeleteBuilderMock; +import dev.typr.foundations.dsl.DeleteParams; +import dev.typr.foundations.dsl.SelectBuilder; +import dev.typr.foundations.dsl.SelectBuilderMock; +import dev.typr.foundations.dsl.SelectParams; +import dev.typr.foundations.dsl.UpdateBuilder; +import dev.typr.foundations.dsl.UpdateBuilderMock; +import dev.typr.foundations.dsl.UpdateParams; +import java.sql.Connection; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.function.Function; +import java.util.stream.Collectors; + +public record BusinessentityRepoMock( + java.util.function.Function toRow, + HashMap map) + implements BusinessentityRepo { + public BusinessentityRepoMock( + java.util.function.Function toRow) { + this(toRow, new HashMap()); + } + ; + + public BusinessentityRepoMock withToRow( + java.util.function.Function toRow) { + return new BusinessentityRepoMock(toRow, map); + } + ; + + public BusinessentityRepoMock withMap(HashMap map) { + return new BusinessentityRepoMock(toRow, map); + } + ; + + @Override + public DeleteBuilder delete() { + return new DeleteBuilderMock<>( + BusinessentityFields.structure, + () -> new ArrayList<>(map.values()), + DeleteParams.empty(), + row -> row.businessentityid(), + id -> map.remove(id)); + } + ; + + @Override + public Boolean deleteById(BusinessentityId businessentityid, Connection c) { + return Optional.ofNullable(map.remove(businessentityid)).isPresent(); + } + ; + + @Override + public Integer deleteByIds(BusinessentityId[] businessentityids, Connection c) { + var count = 0; + for (var id : businessentityids) { + if (Optional.ofNullable(map.remove(id)).isPresent()) { + count = count + 1; + ; + } + ; + } + ; + return count; + } + ; + + @Override + public BusinessentityRow insert(BusinessentityRow unsaved, Connection c) { + if (map.containsKey(unsaved.businessentityid())) { + throw new RuntimeException("id " + unsaved.businessentityid() + " already exists"); + } + ; + map.put(unsaved.businessentityid(), unsaved); + return unsaved; + } + ; + + @Override + public BusinessentityRow insert(BusinessentityRowUnsaved unsaved, Connection c) { + return insert(toRow.apply(unsaved), c); + } + ; + + @Override + public Long insertStreaming( + Iterator unsaved, Integer batchSize, Connection c) { + var count = 0L; + while (unsaved.hasNext()) { + var row = unsaved.next(); + map.put(row.businessentityid(), row); + count = count + 1L; + } + ; + return count; + } + ; + + /** NOTE: this functionality requires PostgreSQL 16 or later! */ + @Override + public Long insertUnsavedStreaming( + Iterator unsaved, Integer batchSize, Connection c) { + var count = 0L; + while (unsaved.hasNext()) { + var unsavedRow = unsaved.next(); + var row = toRow.apply(unsavedRow); + map.put(row.businessentityid(), row); + count = count + 1L; + } + ; + return count; + } + ; + + @Override + public SelectBuilder select() { + return new SelectBuilderMock<>( + BusinessentityFields.structure, () -> new ArrayList<>(map.values()), SelectParams.empty()); + } + ; + + @Override + public List selectAll(Connection c) { + return new ArrayList<>(map.values()); + } + ; + + @Override + public Optional selectById(BusinessentityId businessentityid, Connection c) { + return Optional.ofNullable(map.get(businessentityid)); + } + ; + + @Override + public List selectByIds(BusinessentityId[] businessentityids, Connection c) { + var result = new ArrayList(); + for (var id : businessentityids) { + var opt = Optional.ofNullable(map.get(id)); + if (opt.isPresent()) { + result.add(opt.get()); + } + ; + } + ; + return result; + } + ; + + @Override + public Map selectByIdsTracked( + BusinessentityId[] businessentityids, Connection c) { + return selectByIds(businessentityids, c).stream() + .collect( + Collectors.toMap( + (BusinessentityRow row) -> row.businessentityid(), Function.identity())); + } + ; + + @Override + public UpdateBuilder update() { + return new UpdateBuilderMock<>( + BusinessentityFields.structure, + () -> new ArrayList<>(map.values()), + UpdateParams.empty(), + row -> row); + } + ; + + @Override + public Boolean update(BusinessentityRow row, Connection c) { + var shouldUpdate = + Optional.ofNullable(map.get(row.businessentityid())) + .filter(oldRow -> !oldRow.equals(row)) + .isPresent(); + if (shouldUpdate) { + map.put(row.businessentityid(), row); + ; + } + ; + return shouldUpdate; + } + ; + + @Override + public BusinessentityRow upsert(BusinessentityRow unsaved, Connection c) { + map.put(unsaved.businessentityid(), unsaved); + return unsaved; + } + ; + + @Override + public List upsertBatch(Iterator unsaved, Connection c) { + var result = new ArrayList(); + while (unsaved.hasNext()) { + var row = unsaved.next(); + map.put(row.businessentityid(), row); + result.add(row); + } + ; + return result; + } + ; + + /** NOTE: this functionality is not safe if you use auto-commit mode! it runs 3 SQL statements */ + @Override + public Integer upsertStreaming( + Iterator unsaved, Integer batchSize, Connection c) { + var count = 0; + while (unsaved.hasNext()) { + var row = unsaved.next(); + map.put(row.businessentityid(), row); + count = count + 1; + } + ; + return count; + } + ; +} diff --git a/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/person/businessentity/BusinessentityRow.java b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/person/businessentity/BusinessentityRow.java new file mode 100644 index 0000000000..e3b2e24ac2 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/person/businessentity/BusinessentityRow.java @@ -0,0 +1,94 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.postgres.person.businessentity; + +import combined.postgres.customtypes.Defaulted; +import dev.typr.foundations.PgText; +import dev.typr.foundations.PgTypes; +import dev.typr.foundations.RowParser; +import dev.typr.foundations.RowParsers; +import dev.typr.foundations.Tuple.Tuple3; +import java.time.LocalDateTime; +import java.util.UUID; + +/** + * Table: person.businessentity Source of the ID that connects vendors, customers, and employees + * with address and contact information. Primary key: businessentityid + */ +public record BusinessentityRow( + /** + * Primary key for all customers, vendors, and employees. Default: + * nextval('person.businessentity_businessentityid_seq'::regclass) + */ + BusinessentityId businessentityid, + /** Default: uuid_generate_v1() */ + UUID rowguid, + /** Default: now() */ + LocalDateTime modifieddate) + implements Tuple3 { + /** + * Primary key for all customers, vendors, and employees. Default: + * nextval('person.businessentity_businessentityid_seq'::regclass) + */ + public BusinessentityRow withBusinessentityid(BusinessentityId businessentityid) { + return new BusinessentityRow(businessentityid, rowguid, modifieddate); + } + ; + + /** Default: uuid_generate_v1() */ + public BusinessentityRow withRowguid(UUID rowguid) { + return new BusinessentityRow(businessentityid, rowguid, modifieddate); + } + ; + + /** Default: now() */ + public BusinessentityRow withModifieddate(LocalDateTime modifieddate) { + return new BusinessentityRow(businessentityid, rowguid, modifieddate); + } + ; + + public static RowParser _rowParser = + RowParsers.of( + BusinessentityId.pgType, + PgTypes.uuid, + PgTypes.timestamp, + BusinessentityRow::new, + row -> new Object[] {row.businessentityid(), row.rowguid(), row.modifieddate()}); + ; + + public static PgText pgText = PgText.from(_rowParser); + + @Override + public BusinessentityId _1() { + return businessentityid; + } + ; + + @Override + public UUID _2() { + return rowguid; + } + ; + + @Override + public LocalDateTime _3() { + return modifieddate; + } + ; + + public BusinessentityId id() { + return businessentityid; + } + ; + + public BusinessentityRowUnsaved toUnsavedRow( + Defaulted businessentityid, + Defaulted rowguid, + Defaulted modifieddate) { + return new BusinessentityRowUnsaved(businessentityid, rowguid, modifieddate); + } + ; +} diff --git a/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/person/businessentity/BusinessentityRowUnsaved.java b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/person/businessentity/BusinessentityRowUnsaved.java new file mode 100644 index 0000000000..b19d442187 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/person/businessentity/BusinessentityRowUnsaved.java @@ -0,0 +1,75 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.postgres.person.businessentity; + +import combined.postgres.customtypes.Defaulted; +import combined.postgres.customtypes.Defaulted.UseDefault; +import dev.typr.foundations.PgText; +import dev.typr.foundations.PgTypes; +import java.time.LocalDateTime; +import java.util.UUID; + +/** + * This class corresponds to a row in table `person.businessentity` which has not been persisted yet + */ +public record BusinessentityRowUnsaved( + /** + * Default: nextval('person.businessentity_businessentityid_seq'::regclass) Primary key for all + * customers, vendors, and employees. + */ + Defaulted businessentityid, + /** Default: uuid_generate_v1() */ + Defaulted rowguid, + /** Default: now() */ + Defaulted modifieddate) { + public BusinessentityRowUnsaved() { + this(new UseDefault<>(), new UseDefault<>(), new UseDefault<>()); + } + ; + + /** + * Default: nextval('person.businessentity_businessentityid_seq'::regclass) Primary key for all + * customers, vendors, and employees. + */ + public BusinessentityRowUnsaved withBusinessentityid( + Defaulted businessentityid) { + return new BusinessentityRowUnsaved(businessentityid, rowguid, modifieddate); + } + ; + + /** Default: uuid_generate_v1() */ + public BusinessentityRowUnsaved withRowguid(Defaulted rowguid) { + return new BusinessentityRowUnsaved(businessentityid, rowguid, modifieddate); + } + ; + + /** Default: now() */ + public BusinessentityRowUnsaved withModifieddate(Defaulted modifieddate) { + return new BusinessentityRowUnsaved(businessentityid, rowguid, modifieddate); + } + ; + + public static PgText pgText = + PgText.instance( + (row, sb) -> { + Defaulted.pgText(BusinessentityId.pgType.text()).unsafeEncode(row.businessentityid, sb); + sb.append(PgText.DELIMETER); + Defaulted.pgText(PgTypes.uuid.text()).unsafeEncode(row.rowguid, sb); + sb.append(PgText.DELIMETER); + Defaulted.pgText(PgTypes.timestamp.text()).unsafeEncode(row.modifieddate, sb); + }); + + public BusinessentityRow toRow( + java.util.function.Supplier businessentityidDefault, + java.util.function.Supplier rowguidDefault, + java.util.function.Supplier modifieddateDefault) { + return new BusinessentityRow( + businessentityid.getOrElse(businessentityidDefault), + rowguid.getOrElse(rowguidDefault), + modifieddate.getOrElse(modifieddateDefault)); + } + ; +} diff --git a/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/person/emailaddress/EmailaddressFields.java b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/person/emailaddress/EmailaddressFields.java new file mode 100644 index 0000000000..0560a65aca --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/person/emailaddress/EmailaddressFields.java @@ -0,0 +1,160 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.postgres.person.emailaddress; + +import combined.postgres.person.businessentity.BusinessentityId; +import combined.postgres.person.person.PersonFields; +import combined.postgres.person.person.PersonRow; +import dev.typr.foundations.PgTypes; +import dev.typr.foundations.RowParser; +import dev.typr.foundations.dsl.FieldsBase; +import dev.typr.foundations.dsl.ForeignKey; +import dev.typr.foundations.dsl.Path; +import dev.typr.foundations.dsl.RelationStructure; +import dev.typr.foundations.dsl.SqlExpr; +import dev.typr.foundations.dsl.SqlExpr.Field; +import dev.typr.foundations.dsl.SqlExpr.FieldLike; +import dev.typr.foundations.dsl.SqlExpr.IdField; +import dev.typr.foundations.dsl.SqlExpr.OptField; +import dev.typr.foundations.dsl.TupleExpr; +import dev.typr.foundations.dsl.TupleExpr.TupleExpr5; +import java.time.LocalDateTime; +import java.util.List; +import java.util.Optional; +import java.util.UUID; + +public class EmailaddressFields + extends TupleExpr5 + implements RelationStructure, FieldsBase { + List _path; + + public EmailaddressFields(List _path) { + this._path = _path; + } + + public static EmailaddressFields structure = + new EmailaddressFields(java.util.Collections.emptyList()); + + public IdField businessentityid() { + return new IdField( + _path, + "businessentityid", + EmailaddressRow::businessentityid, + Optional.empty(), + Optional.of("int4"), + (row, value) -> row.withBusinessentityid(value), + BusinessentityId.pgType); + } + + public IdField emailaddressid() { + return new IdField( + _path, + "emailaddressid", + EmailaddressRow::emailaddressid, + Optional.empty(), + Optional.of("int4"), + (row, value) -> row.withEmailaddressid(value), + PgTypes.int4); + } + + public OptField emailaddress() { + return new OptField( + _path, + "emailaddress", + EmailaddressRow::emailaddress, + Optional.empty(), + Optional.empty(), + (row, value) -> row.withEmailaddress(value), + PgTypes.text); + } + + public Field rowguid() { + return new Field( + _path, + "rowguid", + EmailaddressRow::rowguid, + Optional.empty(), + Optional.of("uuid"), + (row, value) -> row.withRowguid(value), + PgTypes.uuid); + } + + public Field modifieddate() { + return new Field( + _path, + "modifieddate", + EmailaddressRow::modifieddate, + Optional.empty(), + Optional.of("timestamp"), + (row, value) -> row.withModifieddate(value), + PgTypes.timestamp); + } + + @Override + public List _path() { + return _path; + } + + public ForeignKey fkPerson() { + return ForeignKey.of("person.FK_EmailAddress_Person_BusinessEntityID") + .withColumnPair(businessentityid(), PersonFields::businessentityid); + } + + public SqlExpr compositeIdIs(EmailaddressId compositeId) { + return SqlExpr.all( + businessentityid().isEqual(compositeId.businessentityid()), + emailaddressid().isEqual(compositeId.emailaddressid())); + } + + public SqlExpr compositeIdIn(List compositeIds) { + return TupleExpr.of(businessentityid(), emailaddressid()).among(compositeIds); + } + + @Override + public List> columns() { + return java.util.List.of( + this.businessentityid(), + this.emailaddressid(), + this.emailaddress(), + this.rowguid(), + this.modifieddate()); + } + + @Override + public RowParser rowParser() { + return EmailaddressRow._rowParser; + } + + @Override + public RelationStructure withPaths(List _path) { + return new EmailaddressFields(_path); + } + + @Override + public SqlExpr _1() { + return businessentityid(); + } + + @Override + public SqlExpr _2() { + return emailaddressid(); + } + + @Override + public SqlExpr _3() { + return emailaddress(); + } + + @Override + public SqlExpr _4() { + return rowguid(); + } + + @Override + public SqlExpr _5() { + return modifieddate(); + } +} diff --git a/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/person/emailaddress/EmailaddressId.java b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/person/emailaddress/EmailaddressId.java new file mode 100644 index 0000000000..aa44d29162 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/person/emailaddress/EmailaddressId.java @@ -0,0 +1,46 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.postgres.person.emailaddress; + +import combined.postgres.person.businessentity.BusinessentityId; +import dev.typr.foundations.PgTypes; +import dev.typr.foundations.RowParser; +import dev.typr.foundations.RowParsers; +import dev.typr.foundations.Tuple.Tuple2; + +/** Type for the composite primary key of table `person.emailaddress` */ +public record EmailaddressId(BusinessentityId businessentityid, Integer emailaddressid) + implements Tuple2 { + public EmailaddressId withBusinessentityid(BusinessentityId businessentityid) { + return new EmailaddressId(businessentityid, emailaddressid); + } + ; + + public EmailaddressId withEmailaddressid(Integer emailaddressid) { + return new EmailaddressId(businessentityid, emailaddressid); + } + ; + + public static RowParser _rowParser = + RowParsers.of( + BusinessentityId.pgType, + PgTypes.int4, + EmailaddressId::new, + row -> new Object[] {row.businessentityid(), row.emailaddressid()}); + ; + + @Override + public BusinessentityId _1() { + return businessentityid; + } + ; + + @Override + public Integer _2() { + return emailaddressid; + } + ; +} diff --git a/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/person/emailaddress/EmailaddressRepo.java b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/person/emailaddress/EmailaddressRepo.java new file mode 100644 index 0000000000..4fe2521433 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/person/emailaddress/EmailaddressRepo.java @@ -0,0 +1,55 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.postgres.person.emailaddress; + +import dev.typr.foundations.dsl.DeleteBuilder; +import dev.typr.foundations.dsl.SelectBuilder; +import dev.typr.foundations.dsl.UpdateBuilder; +import java.sql.Connection; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Optional; + +public interface EmailaddressRepo { + DeleteBuilder delete(); + + Boolean deleteById(EmailaddressId compositeId, Connection c); + + Integer deleteByIds(EmailaddressId[] compositeIds, Connection c); + + EmailaddressRow insert(EmailaddressRow unsaved, Connection c); + + EmailaddressRow insert(EmailaddressRowUnsaved unsaved, Connection c); + + Long insertStreaming(Iterator unsaved, Integer batchSize, Connection c); + + /** NOTE: this functionality requires PostgreSQL 16 or later! */ + Long insertUnsavedStreaming( + Iterator unsaved, Integer batchSize, Connection c); + + SelectBuilder select(); + + List selectAll(Connection c); + + Optional selectById(EmailaddressId compositeId, Connection c); + + List selectByIds(EmailaddressId[] compositeIds, Connection c); + + Map selectByIdsTracked( + EmailaddressId[] compositeIds, Connection c); + + UpdateBuilder update(); + + Boolean update(EmailaddressRow row, Connection c); + + EmailaddressRow upsert(EmailaddressRow unsaved, Connection c); + + List upsertBatch(Iterator unsaved, Connection c); + + /** NOTE: this functionality is not safe if you use auto-commit mode! it runs 3 SQL statements */ + Integer upsertStreaming(Iterator unsaved, Integer batchSize, Connection c); +} diff --git a/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/person/emailaddress/EmailaddressRepoImpl.java b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/person/emailaddress/EmailaddressRepoImpl.java new file mode 100644 index 0000000000..1a3e5d12df --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/person/emailaddress/EmailaddressRepoImpl.java @@ -0,0 +1,352 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.postgres.person.emailaddress; + +import static dev.typr.foundations.Fragment.interpolate; + +import combined.postgres.person.businessentity.BusinessentityId; +import dev.typr.foundations.Fragment; +import dev.typr.foundations.PgTypes; +import dev.typr.foundations.dsl.DeleteBuilder; +import dev.typr.foundations.dsl.Dialect; +import dev.typr.foundations.dsl.SelectBuilder; +import dev.typr.foundations.dsl.UpdateBuilder; +import dev.typr.foundations.internal.arrayMap; +import dev.typr.foundations.streamingInsert; +import java.sql.Connection; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Optional; + +public class EmailaddressRepoImpl implements EmailaddressRepo { + @Override + public DeleteBuilder delete() { + return DeleteBuilder.of( + "\"person\".\"emailaddress\"", EmailaddressFields.structure, Dialect.POSTGRESQL); + } + + @Override + public Boolean deleteById(EmailaddressId compositeId, Connection c) { + return interpolate( + Fragment.lit( + "delete from \"person\".\"emailaddress\" where \"businessentityid\" = "), + Fragment.encode(BusinessentityId.pgType, compositeId.businessentityid()), + Fragment.lit(" AND \"emailaddressid\" = "), + Fragment.encode(PgTypes.int4, compositeId.emailaddressid()), + Fragment.lit("")) + .update() + .runUnchecked(c) + > 0; + } + + @Override + public Integer deleteByIds(EmailaddressId[] compositeIds, Connection c) { + BusinessentityId[] businessentityid = + arrayMap.map(compositeIds, EmailaddressId::businessentityid, BusinessentityId.class); + ; + Integer[] emailaddressid = + arrayMap.map(compositeIds, EmailaddressId::emailaddressid, Integer.class); + ; + return interpolate( + Fragment.lit( + "delete\n" + + "from \"person\".\"emailaddress\"\n" + + "where (\"businessentityid\", \"emailaddressid\")\n" + + "in (select * from unnest("), + Fragment.encode(BusinessentityId.pgTypeArray, businessentityid), + Fragment.lit(", "), + Fragment.encode(PgTypes.int4Array, emailaddressid), + Fragment.lit("))\n")) + .update() + .runUnchecked(c); + } + + @Override + public EmailaddressRow insert(EmailaddressRow unsaved, Connection c) { + return interpolate( + Fragment.lit( + "insert into \"person\".\"emailaddress\"(\"businessentityid\", \"emailaddressid\"," + + " \"emailaddress\", \"rowguid\", \"modifieddate\")\n" + + "values ("), + Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid()), + Fragment.lit("::int4, "), + Fragment.encode(PgTypes.int4, unsaved.emailaddressid()), + Fragment.lit("::int4, "), + Fragment.encode(PgTypes.text.opt(), unsaved.emailaddress()), + Fragment.lit(", "), + Fragment.encode(PgTypes.uuid, unsaved.rowguid()), + Fragment.lit("::uuid, "), + Fragment.encode(PgTypes.timestamp, unsaved.modifieddate()), + Fragment.lit( + "::timestamp)\n" + + "RETURNING \"businessentityid\", \"emailaddressid\", \"emailaddress\"," + + " \"rowguid\", \"modifieddate\"\n")) + .updateReturning(EmailaddressRow._rowParser.exactlyOne()) + .runUnchecked(c); + } + + @Override + public EmailaddressRow insert(EmailaddressRowUnsaved unsaved, Connection c) { + ArrayList columns = new ArrayList<>(); + ; + ArrayList values = new ArrayList<>(); + ; + columns.add(Fragment.lit("\"businessentityid\"")); + values.add( + interpolate( + Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid()), + Fragment.lit("::int4"))); + columns.add(Fragment.lit("\"emailaddress\"")); + values.add( + interpolate(Fragment.encode(PgTypes.text.opt(), unsaved.emailaddress()), Fragment.lit(""))); + unsaved + .emailaddressid() + .visit( + () -> {}, + value -> { + columns.add(Fragment.lit("\"emailaddressid\"")); + values.add(interpolate(Fragment.encode(PgTypes.int4, value), Fragment.lit("::int4"))); + }); + ; + unsaved + .rowguid() + .visit( + () -> {}, + value -> { + columns.add(Fragment.lit("\"rowguid\"")); + values.add(interpolate(Fragment.encode(PgTypes.uuid, value), Fragment.lit("::uuid"))); + }); + ; + unsaved + .modifieddate() + .visit( + () -> {}, + value -> { + columns.add(Fragment.lit("\"modifieddate\"")); + values.add( + interpolate( + Fragment.encode(PgTypes.timestamp, value), Fragment.lit("::timestamp"))); + }); + ; + Fragment q = + interpolate( + Fragment.lit("insert into \"person\".\"emailaddress\"("), + Fragment.comma(columns), + Fragment.lit(")\nvalues ("), + Fragment.comma(values), + Fragment.lit( + ")\n" + + "RETURNING \"businessentityid\", \"emailaddressid\", \"emailaddress\"," + + " \"rowguid\", \"modifieddate\"\n")); + ; + return q.updateReturning(EmailaddressRow._rowParser.exactlyOne()).runUnchecked(c); + } + + @Override + public Long insertStreaming(Iterator unsaved, Integer batchSize, Connection c) { + return streamingInsert.insertUnchecked( + "COPY \"person\".\"emailaddress\"(\"businessentityid\", \"emailaddressid\"," + + " \"emailaddress\", \"rowguid\", \"modifieddate\") FROM STDIN", + batchSize, + unsaved, + c, + EmailaddressRow.pgText); + } + + /** NOTE: this functionality requires PostgreSQL 16 or later! */ + @Override + public Long insertUnsavedStreaming( + Iterator unsaved, Integer batchSize, Connection c) { + return streamingInsert.insertUnchecked( + "COPY \"person\".\"emailaddress\"(\"businessentityid\", \"emailaddress\"," + + " \"emailaddressid\", \"rowguid\", \"modifieddate\") FROM STDIN (DEFAULT" + + " '__DEFAULT_VALUE__')", + batchSize, + unsaved, + c, + EmailaddressRowUnsaved.pgText); + } + + @Override + public SelectBuilder select() { + return SelectBuilder.of( + "\"person\".\"emailaddress\"", + EmailaddressFields.structure, + EmailaddressRow._rowParser, + Dialect.POSTGRESQL); + } + + @Override + public List selectAll(Connection c) { + return interpolate( + Fragment.lit( + "select \"businessentityid\", \"emailaddressid\", \"emailaddress\", \"rowguid\"," + + " \"modifieddate\"\n" + + "from \"person\".\"emailaddress\"\n")) + .query(EmailaddressRow._rowParser.all()) + .runUnchecked(c); + } + + @Override + public Optional selectById(EmailaddressId compositeId, Connection c) { + return interpolate( + Fragment.lit( + "select \"businessentityid\", \"emailaddressid\", \"emailaddress\", \"rowguid\"," + + " \"modifieddate\"\n" + + "from \"person\".\"emailaddress\"\n" + + "where \"businessentityid\" = "), + Fragment.encode(BusinessentityId.pgType, compositeId.businessentityid()), + Fragment.lit(" AND \"emailaddressid\" = "), + Fragment.encode(PgTypes.int4, compositeId.emailaddressid()), + Fragment.lit("")) + .query(EmailaddressRow._rowParser.first()) + .runUnchecked(c); + } + + @Override + public List selectByIds(EmailaddressId[] compositeIds, Connection c) { + BusinessentityId[] businessentityid = + arrayMap.map(compositeIds, EmailaddressId::businessentityid, BusinessentityId.class); + ; + Integer[] emailaddressid = + arrayMap.map(compositeIds, EmailaddressId::emailaddressid, Integer.class); + ; + return interpolate( + Fragment.lit( + "select \"businessentityid\", \"emailaddressid\", \"emailaddress\", \"rowguid\"," + + " \"modifieddate\"\n" + + "from \"person\".\"emailaddress\"\n" + + "where (\"businessentityid\", \"emailaddressid\")\n" + + "in (select * from unnest("), + Fragment.encode(BusinessentityId.pgTypeArray, businessentityid), + Fragment.lit(", "), + Fragment.encode(PgTypes.int4Array, emailaddressid), + Fragment.lit("))\n")) + .query(EmailaddressRow._rowParser.all()) + .runUnchecked(c); + } + + @Override + public Map selectByIdsTracked( + EmailaddressId[] compositeIds, Connection c) { + HashMap ret = new HashMap(); + selectByIds(compositeIds, c).forEach(row -> ret.put(row.compositeId(), row)); + return ret; + } + + @Override + public UpdateBuilder update() { + return UpdateBuilder.of( + "\"person\".\"emailaddress\"", + EmailaddressFields.structure, + EmailaddressRow._rowParser, + Dialect.POSTGRESQL); + } + + @Override + public Boolean update(EmailaddressRow row, Connection c) { + EmailaddressId compositeId = row.compositeId(); + ; + return interpolate( + Fragment.lit("update \"person\".\"emailaddress\"\nset \"emailaddress\" = "), + Fragment.encode(PgTypes.text.opt(), row.emailaddress()), + Fragment.lit(",\n\"rowguid\" = "), + Fragment.encode(PgTypes.uuid, row.rowguid()), + Fragment.lit("::uuid,\n\"modifieddate\" = "), + Fragment.encode(PgTypes.timestamp, row.modifieddate()), + Fragment.lit("::timestamp\nwhere \"businessentityid\" = "), + Fragment.encode(BusinessentityId.pgType, compositeId.businessentityid()), + Fragment.lit(" AND \"emailaddressid\" = "), + Fragment.encode(PgTypes.int4, compositeId.emailaddressid()), + Fragment.lit("")) + .update() + .runUnchecked(c) + > 0; + } + + @Override + public EmailaddressRow upsert(EmailaddressRow unsaved, Connection c) { + return interpolate( + Fragment.lit( + "insert into \"person\".\"emailaddress\"(\"businessentityid\", \"emailaddressid\"," + + " \"emailaddress\", \"rowguid\", \"modifieddate\")\n" + + "values ("), + Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid()), + Fragment.lit("::int4, "), + Fragment.encode(PgTypes.int4, unsaved.emailaddressid()), + Fragment.lit("::int4, "), + Fragment.encode(PgTypes.text.opt(), unsaved.emailaddress()), + Fragment.lit(", "), + Fragment.encode(PgTypes.uuid, unsaved.rowguid()), + Fragment.lit("::uuid, "), + Fragment.encode(PgTypes.timestamp, unsaved.modifieddate()), + Fragment.lit( + "::timestamp)\n" + + "on conflict (\"businessentityid\", \"emailaddressid\")\n" + + "do update set\n" + + " \"emailaddress\" = EXCLUDED.\"emailaddress\",\n" + + "\"rowguid\" = EXCLUDED.\"rowguid\",\n" + + "\"modifieddate\" = EXCLUDED.\"modifieddate\"\n" + + "returning \"businessentityid\", \"emailaddressid\", \"emailaddress\"," + + " \"rowguid\", \"modifieddate\"")) + .updateReturning(EmailaddressRow._rowParser.exactlyOne()) + .runUnchecked(c); + } + + @Override + public List upsertBatch(Iterator unsaved, Connection c) { + return interpolate( + Fragment.lit( + "insert into \"person\".\"emailaddress\"(\"businessentityid\", \"emailaddressid\"," + + " \"emailaddress\", \"rowguid\", \"modifieddate\")\n" + + "values (?::int4, ?::int4, ?, ?::uuid, ?::timestamp)\n" + + "on conflict (\"businessentityid\", \"emailaddressid\")\n" + + "do update set\n" + + " \"emailaddress\" = EXCLUDED.\"emailaddress\",\n" + + "\"rowguid\" = EXCLUDED.\"rowguid\",\n" + + "\"modifieddate\" = EXCLUDED.\"modifieddate\"\n" + + "returning \"businessentityid\", \"emailaddressid\", \"emailaddress\"," + + " \"rowguid\", \"modifieddate\"")) + .updateManyReturning(EmailaddressRow._rowParser, unsaved) + .runUnchecked(c); + } + + /** NOTE: this functionality is not safe if you use auto-commit mode! it runs 3 SQL statements */ + @Override + public Integer upsertStreaming( + Iterator unsaved, Integer batchSize, Connection c) { + interpolate( + Fragment.lit( + "create temporary table emailaddress_TEMP (like \"person\".\"emailaddress\") on" + + " commit drop")) + .update() + .runUnchecked(c); + streamingInsert.insertUnchecked( + "copy emailaddress_TEMP(\"businessentityid\", \"emailaddressid\", \"emailaddress\"," + + " \"rowguid\", \"modifieddate\") from stdin", + batchSize, + unsaved, + c, + EmailaddressRow.pgText); + return interpolate( + Fragment.lit( + "insert into \"person\".\"emailaddress\"(\"businessentityid\", \"emailaddressid\"," + + " \"emailaddress\", \"rowguid\", \"modifieddate\")\n" + + "select * from emailaddress_TEMP\n" + + "on conflict (\"businessentityid\", \"emailaddressid\")\n" + + "do update set\n" + + " \"emailaddress\" = EXCLUDED.\"emailaddress\",\n" + + "\"rowguid\" = EXCLUDED.\"rowguid\",\n" + + "\"modifieddate\" = EXCLUDED.\"modifieddate\"\n" + + ";\n" + + "drop table emailaddress_TEMP;")) + .update() + .runUnchecked(c); + } +} diff --git a/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/person/emailaddress/EmailaddressRepoMock.java b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/person/emailaddress/EmailaddressRepoMock.java new file mode 100644 index 0000000000..5b10f88131 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/person/emailaddress/EmailaddressRepoMock.java @@ -0,0 +1,227 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.postgres.person.emailaddress; + +import dev.typr.foundations.dsl.DeleteBuilder; +import dev.typr.foundations.dsl.DeleteBuilderMock; +import dev.typr.foundations.dsl.DeleteParams; +import dev.typr.foundations.dsl.SelectBuilder; +import dev.typr.foundations.dsl.SelectBuilderMock; +import dev.typr.foundations.dsl.SelectParams; +import dev.typr.foundations.dsl.UpdateBuilder; +import dev.typr.foundations.dsl.UpdateBuilderMock; +import dev.typr.foundations.dsl.UpdateParams; +import java.sql.Connection; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.function.Function; +import java.util.stream.Collectors; + +public record EmailaddressRepoMock( + java.util.function.Function toRow, + HashMap map) + implements EmailaddressRepo { + public EmailaddressRepoMock( + java.util.function.Function toRow) { + this(toRow, new HashMap()); + } + ; + + public EmailaddressRepoMock withToRow( + java.util.function.Function toRow) { + return new EmailaddressRepoMock(toRow, map); + } + ; + + public EmailaddressRepoMock withMap(HashMap map) { + return new EmailaddressRepoMock(toRow, map); + } + ; + + @Override + public DeleteBuilder delete() { + return new DeleteBuilderMock<>( + EmailaddressFields.structure, + () -> new ArrayList<>(map.values()), + DeleteParams.empty(), + row -> row.compositeId(), + id -> map.remove(id)); + } + ; + + @Override + public Boolean deleteById(EmailaddressId compositeId, Connection c) { + return Optional.ofNullable(map.remove(compositeId)).isPresent(); + } + ; + + @Override + public Integer deleteByIds(EmailaddressId[] compositeIds, Connection c) { + var count = 0; + for (var id : compositeIds) { + if (Optional.ofNullable(map.remove(id)).isPresent()) { + count = count + 1; + ; + } + ; + } + ; + return count; + } + ; + + @Override + public EmailaddressRow insert(EmailaddressRow unsaved, Connection c) { + if (map.containsKey(unsaved.compositeId())) { + throw new RuntimeException("id " + unsaved.compositeId() + " already exists"); + } + ; + map.put(unsaved.compositeId(), unsaved); + return unsaved; + } + ; + + @Override + public EmailaddressRow insert(EmailaddressRowUnsaved unsaved, Connection c) { + return insert(toRow.apply(unsaved), c); + } + ; + + @Override + public Long insertStreaming(Iterator unsaved, Integer batchSize, Connection c) { + var count = 0L; + while (unsaved.hasNext()) { + var row = unsaved.next(); + map.put(row.compositeId(), row); + count = count + 1L; + } + ; + return count; + } + ; + + /** NOTE: this functionality requires PostgreSQL 16 or later! */ + @Override + public Long insertUnsavedStreaming( + Iterator unsaved, Integer batchSize, Connection c) { + var count = 0L; + while (unsaved.hasNext()) { + var unsavedRow = unsaved.next(); + var row = toRow.apply(unsavedRow); + map.put(row.compositeId(), row); + count = count + 1L; + } + ; + return count; + } + ; + + @Override + public SelectBuilder select() { + return new SelectBuilderMock<>( + EmailaddressFields.structure, () -> new ArrayList<>(map.values()), SelectParams.empty()); + } + ; + + @Override + public List selectAll(Connection c) { + return new ArrayList<>(map.values()); + } + ; + + @Override + public Optional selectById(EmailaddressId compositeId, Connection c) { + return Optional.ofNullable(map.get(compositeId)); + } + ; + + @Override + public List selectByIds(EmailaddressId[] compositeIds, Connection c) { + var result = new ArrayList(); + for (var id : compositeIds) { + var opt = Optional.ofNullable(map.get(id)); + if (opt.isPresent()) { + result.add(opt.get()); + } + ; + } + ; + return result; + } + ; + + @Override + public Map selectByIdsTracked( + EmailaddressId[] compositeIds, Connection c) { + return selectByIds(compositeIds, c).stream() + .collect(Collectors.toMap((EmailaddressRow row) -> row.compositeId(), Function.identity())); + } + ; + + @Override + public UpdateBuilder update() { + return new UpdateBuilderMock<>( + EmailaddressFields.structure, + () -> new ArrayList<>(map.values()), + UpdateParams.empty(), + row -> row); + } + ; + + @Override + public Boolean update(EmailaddressRow row, Connection c) { + var shouldUpdate = + Optional.ofNullable(map.get(row.compositeId())) + .filter(oldRow -> !oldRow.equals(row)) + .isPresent(); + if (shouldUpdate) { + map.put(row.compositeId(), row); + ; + } + ; + return shouldUpdate; + } + ; + + @Override + public EmailaddressRow upsert(EmailaddressRow unsaved, Connection c) { + map.put(unsaved.compositeId(), unsaved); + return unsaved; + } + ; + + @Override + public List upsertBatch(Iterator unsaved, Connection c) { + var result = new ArrayList(); + while (unsaved.hasNext()) { + var row = unsaved.next(); + map.put(row.compositeId(), row); + result.add(row); + } + ; + return result; + } + ; + + /** NOTE: this functionality is not safe if you use auto-commit mode! it runs 3 SQL statements */ + @Override + public Integer upsertStreaming( + Iterator unsaved, Integer batchSize, Connection c) { + var count = 0; + while (unsaved.hasNext()) { + var row = unsaved.next(); + map.put(row.compositeId(), row); + count = count + 1; + } + ; + return count; + } + ; +} diff --git a/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/person/emailaddress/EmailaddressRow.java b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/person/emailaddress/EmailaddressRow.java new file mode 100644 index 0000000000..fd85185d11 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/person/emailaddress/EmailaddressRow.java @@ -0,0 +1,166 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.postgres.person.emailaddress; + +import combined.postgres.customtypes.Defaulted; +import combined.postgres.person.businessentity.BusinessentityId; +import dev.typr.foundations.PgText; +import dev.typr.foundations.PgTypes; +import dev.typr.foundations.RowParser; +import dev.typr.foundations.RowParsers; +import dev.typr.foundations.Tuple.Tuple5; +import java.time.LocalDateTime; +import java.util.Optional; +import java.util.UUID; + +/** + * Table: person.emailaddress Where to send a person email. Composite primary key: businessentityid, + * emailaddressid + */ +public record EmailaddressRow( + /** + * Primary key. Person associated with this email address. Foreign key to + * Person.BusinessEntityID Points to {@link + * combined.postgres.person.person.PersonRow#businessentityid()} + */ + BusinessentityId businessentityid, + /** + * Primary key. ID of this email address. Default: + * nextval('person.emailaddress_emailaddressid_seq'::regclass) + */ + Integer emailaddressid, + /** E-mail address for the person. */ + Optional emailaddress, + /** Default: uuid_generate_v1() */ + UUID rowguid, + /** Default: now() */ + LocalDateTime modifieddate) + implements Tuple5< + BusinessentityId, Integer, Optional, UUID, LocalDateTime> { + /** + * Primary key. Person associated with this email address. Foreign key to Person.BusinessEntityID + * Points to {@link combined.postgres.person.person.PersonRow#businessentityid()} + */ + public EmailaddressRow withBusinessentityid(BusinessentityId businessentityid) { + return new EmailaddressRow( + businessentityid, emailaddressid, emailaddress, rowguid, modifieddate); + } + ; + + /** + * Primary key. ID of this email address. Default: + * nextval('person.emailaddress_emailaddressid_seq'::regclass) + */ + public EmailaddressRow withEmailaddressid(Integer emailaddressid) { + return new EmailaddressRow( + businessentityid, emailaddressid, emailaddress, rowguid, modifieddate); + } + ; + + /** E-mail address for the person. */ + public EmailaddressRow withEmailaddress(Optional emailaddress) { + return new EmailaddressRow( + businessentityid, emailaddressid, emailaddress, rowguid, modifieddate); + } + ; + + /** Default: uuid_generate_v1() */ + public EmailaddressRow withRowguid(UUID rowguid) { + return new EmailaddressRow( + businessentityid, emailaddressid, emailaddress, rowguid, modifieddate); + } + ; + + /** Default: now() */ + public EmailaddressRow withModifieddate(LocalDateTime modifieddate) { + return new EmailaddressRow( + businessentityid, emailaddressid, emailaddress, rowguid, modifieddate); + } + ; + + public static RowParser _rowParser = + RowParsers.of( + BusinessentityId.pgType, + PgTypes.int4, + PgTypes.text.opt(), + PgTypes.uuid, + PgTypes.timestamp, + EmailaddressRow::new, + row -> + new Object[] { + row.businessentityid(), + row.emailaddressid(), + row.emailaddress(), + row.rowguid(), + row.modifieddate() + }); + ; + + public static EmailaddressRow apply( + EmailaddressId compositeId, + Optional emailaddress, + UUID rowguid, + LocalDateTime modifieddate) { + return new EmailaddressRow( + compositeId.businessentityid(), + compositeId.emailaddressid(), + emailaddress, + rowguid, + modifieddate); + } + ; + + public static PgText pgText = PgText.from(_rowParser); + + @Override + public BusinessentityId _1() { + return businessentityid; + } + ; + + @Override + public Integer _2() { + return emailaddressid; + } + ; + + @Override + public Optional _3() { + return emailaddress; + } + ; + + @Override + public UUID _4() { + return rowguid; + } + ; + + @Override + public LocalDateTime _5() { + return modifieddate; + } + ; + + public EmailaddressId compositeId() { + return new EmailaddressId(businessentityid, emailaddressid); + } + ; + + public EmailaddressId id() { + return this.compositeId(); + } + ; + + public EmailaddressRowUnsaved toUnsavedRow( + Defaulted emailaddressid, + Defaulted rowguid, + Defaulted modifieddate) { + return new EmailaddressRowUnsaved( + businessentityid, emailaddress, emailaddressid, rowguid, modifieddate); + } + ; +} diff --git a/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/person/emailaddress/EmailaddressRowUnsaved.java b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/person/emailaddress/EmailaddressRowUnsaved.java new file mode 100644 index 0000000000..299b9c470e --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/person/emailaddress/EmailaddressRowUnsaved.java @@ -0,0 +1,122 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.postgres.person.emailaddress; + +import combined.postgres.customtypes.Defaulted; +import combined.postgres.customtypes.Defaulted.UseDefault; +import combined.postgres.person.businessentity.BusinessentityId; +import dev.typr.foundations.PgText; +import dev.typr.foundations.PgTypes; +import java.time.LocalDateTime; +import java.util.Optional; +import java.util.UUID; + +/** + * This class corresponds to a row in table `person.emailaddress` which has not been persisted yet + */ +public record EmailaddressRowUnsaved( + /** + * Primary key. Person associated with this email address. Foreign key to + * Person.BusinessEntityID Points to {@link + * combined.postgres.person.person.PersonRow#businessentityid()} + */ + BusinessentityId businessentityid, + /** E-mail address for the person. */ + Optional emailaddress, + /** + * Default: nextval('person.emailaddress_emailaddressid_seq'::regclass) Primary key. ID of this + * email address. + */ + Defaulted emailaddressid, + /** Default: uuid_generate_v1() */ + Defaulted rowguid, + /** Default: now() */ + Defaulted modifieddate) { + public EmailaddressRowUnsaved( + + /** + * Primary key. Person associated with this email address. Foreign key to + * Person.BusinessEntityID Points to {@link + * combined.postgres.person.person.PersonRow#businessentityid()} + */ + BusinessentityId businessentityid) { + this( + businessentityid, + Optional.empty(), + new UseDefault<>(), + new UseDefault<>(), + new UseDefault<>()); + } + ; + + /** + * Primary key. Person associated with this email address. Foreign key to Person.BusinessEntityID + * Points to {@link combined.postgres.person.person.PersonRow#businessentityid()} + */ + public EmailaddressRowUnsaved withBusinessentityid(BusinessentityId businessentityid) { + return new EmailaddressRowUnsaved( + businessentityid, emailaddress, emailaddressid, rowguid, modifieddate); + } + ; + + /** E-mail address for the person. */ + public EmailaddressRowUnsaved withEmailaddress(Optional emailaddress) { + return new EmailaddressRowUnsaved( + businessentityid, emailaddress, emailaddressid, rowguid, modifieddate); + } + ; + + /** + * Default: nextval('person.emailaddress_emailaddressid_seq'::regclass) Primary key. ID of this + * email address. + */ + public EmailaddressRowUnsaved withEmailaddressid(Defaulted emailaddressid) { + return new EmailaddressRowUnsaved( + businessentityid, emailaddress, emailaddressid, rowguid, modifieddate); + } + ; + + /** Default: uuid_generate_v1() */ + public EmailaddressRowUnsaved withRowguid(Defaulted rowguid) { + return new EmailaddressRowUnsaved( + businessentityid, emailaddress, emailaddressid, rowguid, modifieddate); + } + ; + + /** Default: now() */ + public EmailaddressRowUnsaved withModifieddate(Defaulted modifieddate) { + return new EmailaddressRowUnsaved( + businessentityid, emailaddress, emailaddressid, rowguid, modifieddate); + } + ; + + public static PgText pgText = + PgText.instance( + (row, sb) -> { + BusinessentityId.pgType.text().unsafeEncode(row.businessentityid, sb); + sb.append(PgText.DELIMETER); + PgTypes.text.opt().text().unsafeEncode(row.emailaddress, sb); + sb.append(PgText.DELIMETER); + Defaulted.pgText(PgTypes.int4.text()).unsafeEncode(row.emailaddressid, sb); + sb.append(PgText.DELIMETER); + Defaulted.pgText(PgTypes.uuid.text()).unsafeEncode(row.rowguid, sb); + sb.append(PgText.DELIMETER); + Defaulted.pgText(PgTypes.timestamp.text()).unsafeEncode(row.modifieddate, sb); + }); + + public EmailaddressRow toRow( + java.util.function.Supplier emailaddressidDefault, + java.util.function.Supplier rowguidDefault, + java.util.function.Supplier modifieddateDefault) { + return new EmailaddressRow( + businessentityid, + emailaddressid.getOrElse(emailaddressidDefault), + emailaddress, + rowguid.getOrElse(rowguidDefault), + modifieddate.getOrElse(modifieddateDefault)); + } + ; +} diff --git a/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/person/person/PersonFields.java b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/person/person/PersonFields.java new file mode 100644 index 0000000000..f2934c7962 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/person/person/PersonFields.java @@ -0,0 +1,304 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.postgres.person.person; + +import combined.postgres.person.businessentity.BusinessentityFields; +import combined.postgres.person.businessentity.BusinessentityId; +import combined.postgres.person.businessentity.BusinessentityRow; +import combined.postgres.public_.NameStyle; +import combined.shared.FirstName; +import combined.shared.LastName; +import combined.shared.MiddleName; +import dev.typr.foundations.PgTypes; +import dev.typr.foundations.RowParser; +import dev.typr.foundations.data.Xml; +import dev.typr.foundations.dsl.FieldsBase; +import dev.typr.foundations.dsl.ForeignKey; +import dev.typr.foundations.dsl.Path; +import dev.typr.foundations.dsl.RelationStructure; +import dev.typr.foundations.dsl.SqlExpr; +import dev.typr.foundations.dsl.SqlExpr.Field; +import dev.typr.foundations.dsl.SqlExpr.FieldLike; +import dev.typr.foundations.dsl.SqlExpr.IdField; +import dev.typr.foundations.dsl.SqlExpr.OptField; +import dev.typr.foundations.dsl.TupleExpr.TupleExpr13; +import java.time.LocalDateTime; +import java.util.List; +import java.util.Optional; +import java.util.UUID; + +public class PersonFields + extends TupleExpr13< + BusinessentityId, + String, + NameStyle, /* max 8 chars */ + String, /* user-picked */ + FirstName, /* user-picked */ + MiddleName, /* user-picked */ + LastName, /* max 10 chars */ + String, + Integer, + Xml, + Xml, + UUID, + LocalDateTime> + implements RelationStructure, FieldsBase { + List _path; + + public PersonFields(List _path) { + this._path = _path; + } + + public static PersonFields structure = new PersonFields(java.util.Collections.emptyList()); + + public IdField businessentityid() { + return new IdField( + _path, + "businessentityid", + PersonRow::businessentityid, + Optional.empty(), + Optional.of("int4"), + (row, value) -> row.withBusinessentityid(value), + BusinessentityId.pgType); + } + + public Field persontype() { + return new Field( + _path, + "persontype", + PersonRow::persontype, + Optional.empty(), + Optional.of("bpchar"), + (row, value) -> row.withPersontype(value), + PgTypes.bpchar); + } + + public Field namestyle() { + return new Field( + _path, + "namestyle", + PersonRow::namestyle, + Optional.empty(), + Optional.of("bool"), + (row, value) -> row.withNamestyle(value), + NameStyle.pgType); + } + + public OptField title() { + return new OptField( + _path, + "title", + PersonRow::title, + Optional.empty(), + Optional.empty(), + (row, value) -> row.withTitle(value), + PgTypes.text); + } + + public Field firstname() { + return new Field( + _path, + "firstname", + PersonRow::firstname, + Optional.empty(), + Optional.of("varchar"), + (row, value) -> row.withFirstname(value), + FirstName.pgType); + } + + public OptField middlename() { + return new OptField( + _path, + "middlename", + PersonRow::middlename, + Optional.empty(), + Optional.of("varchar"), + (row, value) -> row.withMiddlename(value), + MiddleName.pgType); + } + + public Field lastname() { + return new Field( + _path, + "lastname", + PersonRow::lastname, + Optional.empty(), + Optional.of("varchar"), + (row, value) -> row.withLastname(value), + LastName.pgType); + } + + public OptField suffix() { + return new OptField( + _path, + "suffix", + PersonRow::suffix, + Optional.empty(), + Optional.empty(), + (row, value) -> row.withSuffix(value), + PgTypes.text); + } + + public Field emailpromotion() { + return new Field( + _path, + "emailpromotion", + PersonRow::emailpromotion, + Optional.empty(), + Optional.of("int4"), + (row, value) -> row.withEmailpromotion(value), + PgTypes.int4); + } + + public OptField additionalcontactinfo() { + return new OptField( + _path, + "additionalcontactinfo", + PersonRow::additionalcontactinfo, + Optional.empty(), + Optional.of("xml"), + (row, value) -> row.withAdditionalcontactinfo(value), + PgTypes.xml); + } + + public OptField demographics() { + return new OptField( + _path, + "demographics", + PersonRow::demographics, + Optional.empty(), + Optional.of("xml"), + (row, value) -> row.withDemographics(value), + PgTypes.xml); + } + + public Field rowguid() { + return new Field( + _path, + "rowguid", + PersonRow::rowguid, + Optional.empty(), + Optional.of("uuid"), + (row, value) -> row.withRowguid(value), + PgTypes.uuid); + } + + public Field modifieddate() { + return new Field( + _path, + "modifieddate", + PersonRow::modifieddate, + Optional.empty(), + Optional.of("timestamp"), + (row, value) -> row.withModifieddate(value), + PgTypes.timestamp); + } + + @Override + public List _path() { + return _path; + } + + public ForeignKey fkBusinessentity() { + return ForeignKey.of( + "person.FK_Person_BusinessEntity_BusinessEntityID") + .withColumnPair( + businessentityid(), BusinessentityFields::businessentityid); + } + + @Override + public List> columns() { + return java.util.List.of( + this.businessentityid(), + this.persontype(), + this.namestyle(), + this.title(), + this.firstname(), + this.middlename(), + this.lastname(), + this.suffix(), + this.emailpromotion(), + this.additionalcontactinfo(), + this.demographics(), + this.rowguid(), + this.modifieddate()); + } + + @Override + public RowParser rowParser() { + return PersonRow._rowParser; + } + + @Override + public RelationStructure withPaths(List _path) { + return new PersonFields(_path); + } + + @Override + public SqlExpr _1() { + return businessentityid(); + } + + @Override + public SqlExpr _2() { + return persontype(); + } + + @Override + public SqlExpr _3() { + return namestyle(); + } + + @Override + public SqlExpr _4() { + return title(); + } + + @Override + public SqlExpr _5() { + return firstname(); + } + + @Override + public SqlExpr _6() { + return middlename(); + } + + @Override + public SqlExpr _7() { + return lastname(); + } + + @Override + public SqlExpr _8() { + return suffix(); + } + + @Override + public SqlExpr _9() { + return emailpromotion(); + } + + @Override + public SqlExpr _10() { + return additionalcontactinfo(); + } + + @Override + public SqlExpr _11() { + return demographics(); + } + + @Override + public SqlExpr _12() { + return rowguid(); + } + + @Override + public SqlExpr _13() { + return modifieddate(); + } +} diff --git a/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/person/person/PersonRepo.java b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/person/person/PersonRepo.java new file mode 100644 index 0000000000..52dfc9140e --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/person/person/PersonRepo.java @@ -0,0 +1,55 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.postgres.person.person; + +import combined.postgres.person.businessentity.BusinessentityId; +import dev.typr.foundations.dsl.DeleteBuilder; +import dev.typr.foundations.dsl.SelectBuilder; +import dev.typr.foundations.dsl.UpdateBuilder; +import java.sql.Connection; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Optional; + +public interface PersonRepo { + DeleteBuilder delete(); + + Boolean deleteById(BusinessentityId businessentityid, Connection c); + + Integer deleteByIds(BusinessentityId[] businessentityids, Connection c); + + PersonRow insert(PersonRow unsaved, Connection c); + + PersonRow insert(PersonRowUnsaved unsaved, Connection c); + + Long insertStreaming(Iterator unsaved, Integer batchSize, Connection c); + + /** NOTE: this functionality requires PostgreSQL 16 or later! */ + Long insertUnsavedStreaming(Iterator unsaved, Integer batchSize, Connection c); + + SelectBuilder select(); + + List selectAll(Connection c); + + Optional selectById(BusinessentityId businessentityid, Connection c); + + List selectByIds(BusinessentityId[] businessentityids, Connection c); + + Map selectByIdsTracked( + BusinessentityId[] businessentityids, Connection c); + + UpdateBuilder update(); + + Boolean update(PersonRow row, Connection c); + + PersonRow upsert(PersonRow unsaved, Connection c); + + List upsertBatch(Iterator unsaved, Connection c); + + /** NOTE: this functionality is not safe if you use auto-commit mode! it runs 3 SQL statements */ + Integer upsertStreaming(Iterator unsaved, Integer batchSize, Connection c); +} diff --git a/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/person/person/PersonRepoImpl.java b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/person/person/PersonRepoImpl.java new file mode 100644 index 0000000000..ffcbfce020 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/person/person/PersonRepoImpl.java @@ -0,0 +1,461 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.postgres.person.person; + +import static dev.typr.foundations.Fragment.interpolate; + +import combined.postgres.person.businessentity.BusinessentityId; +import combined.postgres.public_.NameStyle; +import combined.shared.FirstName; +import combined.shared.LastName; +import combined.shared.MiddleName; +import dev.typr.foundations.Fragment; +import dev.typr.foundations.PgTypes; +import dev.typr.foundations.dsl.DeleteBuilder; +import dev.typr.foundations.dsl.Dialect; +import dev.typr.foundations.dsl.SelectBuilder; +import dev.typr.foundations.dsl.UpdateBuilder; +import dev.typr.foundations.streamingInsert; +import java.sql.Connection; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Optional; + +public class PersonRepoImpl implements PersonRepo { + @Override + public DeleteBuilder delete() { + return DeleteBuilder.of("\"person\".\"person\"", PersonFields.structure, Dialect.POSTGRESQL); + } + + @Override + public Boolean deleteById(BusinessentityId businessentityid, Connection c) { + return interpolate( + Fragment.lit("delete from \"person\".\"person\" where \"businessentityid\" = "), + Fragment.encode(BusinessentityId.pgType, businessentityid), + Fragment.lit("")) + .update() + .runUnchecked(c) + > 0; + } + + @Override + public Integer deleteByIds(BusinessentityId[] businessentityids, Connection c) { + return interpolate( + Fragment.lit("delete\nfrom \"person\".\"person\"\nwhere \"businessentityid\" = ANY("), + Fragment.encode(BusinessentityId.pgTypeArray, businessentityids), + Fragment.lit(")")) + .update() + .runUnchecked(c); + } + + @Override + public PersonRow insert(PersonRow unsaved, Connection c) { + return interpolate( + Fragment.lit( + "insert into \"person\".\"person\"(\"businessentityid\", \"persontype\"," + + " \"namestyle\", \"title\", \"firstname\", \"middlename\", \"lastname\"," + + " \"suffix\", \"emailpromotion\", \"additionalcontactinfo\"," + + " \"demographics\", \"rowguid\", \"modifieddate\")\n" + + "values ("), + Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid()), + Fragment.lit("::int4, "), + Fragment.encode(PgTypes.bpchar, unsaved.persontype()), + Fragment.lit("::bpchar, "), + Fragment.encode(NameStyle.pgType, unsaved.namestyle()), + Fragment.lit("::bool, "), + Fragment.encode(PgTypes.text.opt(), unsaved.title()), + Fragment.lit(", "), + Fragment.encode(FirstName.pgType, unsaved.firstname()), + Fragment.lit("::varchar, "), + Fragment.encode(MiddleName.pgType.opt(), unsaved.middlename()), + Fragment.lit("::varchar, "), + Fragment.encode(LastName.pgType, unsaved.lastname()), + Fragment.lit("::varchar, "), + Fragment.encode(PgTypes.text.opt(), unsaved.suffix()), + Fragment.lit(", "), + Fragment.encode(PgTypes.int4, unsaved.emailpromotion()), + Fragment.lit("::int4, "), + Fragment.encode(PgTypes.xml.opt(), unsaved.additionalcontactinfo()), + Fragment.lit("::xml, "), + Fragment.encode(PgTypes.xml.opt(), unsaved.demographics()), + Fragment.lit("::xml, "), + Fragment.encode(PgTypes.uuid, unsaved.rowguid()), + Fragment.lit("::uuid, "), + Fragment.encode(PgTypes.timestamp, unsaved.modifieddate()), + Fragment.lit( + "::timestamp)\n" + + "RETURNING \"businessentityid\", \"persontype\", \"namestyle\", \"title\"," + + " \"firstname\", \"middlename\", \"lastname\", \"suffix\"," + + " \"emailpromotion\", \"additionalcontactinfo\", \"demographics\"," + + " \"rowguid\", \"modifieddate\"\n")) + .updateReturning(PersonRow._rowParser.exactlyOne()) + .runUnchecked(c); + } + + @Override + public PersonRow insert(PersonRowUnsaved unsaved, Connection c) { + ArrayList columns = new ArrayList<>(); + ; + ArrayList values = new ArrayList<>(); + ; + columns.add(Fragment.lit("\"businessentityid\"")); + values.add( + interpolate( + Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid()), + Fragment.lit("::int4"))); + columns.add(Fragment.lit("\"persontype\"")); + values.add( + interpolate( + Fragment.encode(PgTypes.bpchar, unsaved.persontype()), Fragment.lit("::bpchar"))); + columns.add(Fragment.lit("\"title\"")); + values.add(interpolate(Fragment.encode(PgTypes.text.opt(), unsaved.title()), Fragment.lit(""))); + columns.add(Fragment.lit("\"firstname\"")); + values.add( + interpolate( + Fragment.encode(FirstName.pgType, unsaved.firstname()), Fragment.lit("::varchar"))); + columns.add(Fragment.lit("\"middlename\"")); + values.add( + interpolate( + Fragment.encode(MiddleName.pgType.opt(), unsaved.middlename()), + Fragment.lit("::varchar"))); + columns.add(Fragment.lit("\"lastname\"")); + values.add( + interpolate( + Fragment.encode(LastName.pgType, unsaved.lastname()), Fragment.lit("::varchar"))); + columns.add(Fragment.lit("\"suffix\"")); + values.add( + interpolate(Fragment.encode(PgTypes.text.opt(), unsaved.suffix()), Fragment.lit(""))); + columns.add(Fragment.lit("\"additionalcontactinfo\"")); + values.add( + interpolate( + Fragment.encode(PgTypes.xml.opt(), unsaved.additionalcontactinfo()), + Fragment.lit("::xml"))); + columns.add(Fragment.lit("\"demographics\"")); + values.add( + interpolate( + Fragment.encode(PgTypes.xml.opt(), unsaved.demographics()), Fragment.lit("::xml"))); + unsaved + .namestyle() + .visit( + () -> {}, + value -> { + columns.add(Fragment.lit("\"namestyle\"")); + values.add( + interpolate(Fragment.encode(NameStyle.pgType, value), Fragment.lit("::bool"))); + }); + ; + unsaved + .emailpromotion() + .visit( + () -> {}, + value -> { + columns.add(Fragment.lit("\"emailpromotion\"")); + values.add(interpolate(Fragment.encode(PgTypes.int4, value), Fragment.lit("::int4"))); + }); + ; + unsaved + .rowguid() + .visit( + () -> {}, + value -> { + columns.add(Fragment.lit("\"rowguid\"")); + values.add(interpolate(Fragment.encode(PgTypes.uuid, value), Fragment.lit("::uuid"))); + }); + ; + unsaved + .modifieddate() + .visit( + () -> {}, + value -> { + columns.add(Fragment.lit("\"modifieddate\"")); + values.add( + interpolate( + Fragment.encode(PgTypes.timestamp, value), Fragment.lit("::timestamp"))); + }); + ; + Fragment q = + interpolate( + Fragment.lit("insert into \"person\".\"person\"("), + Fragment.comma(columns), + Fragment.lit(")\nvalues ("), + Fragment.comma(values), + Fragment.lit( + ")\n" + + "RETURNING \"businessentityid\", \"persontype\", \"namestyle\", \"title\"," + + " \"firstname\", \"middlename\", \"lastname\", \"suffix\"," + + " \"emailpromotion\", \"additionalcontactinfo\", \"demographics\"," + + " \"rowguid\", \"modifieddate\"\n")); + ; + return q.updateReturning(PersonRow._rowParser.exactlyOne()).runUnchecked(c); + } + + @Override + public Long insertStreaming(Iterator unsaved, Integer batchSize, Connection c) { + return streamingInsert.insertUnchecked( + "COPY \"person\".\"person\"(\"businessentityid\", \"persontype\", \"namestyle\", \"title\"," + + " \"firstname\", \"middlename\", \"lastname\", \"suffix\", \"emailpromotion\"," + + " \"additionalcontactinfo\", \"demographics\", \"rowguid\", \"modifieddate\") FROM" + + " STDIN", + batchSize, + unsaved, + c, + PersonRow.pgText); + } + + /** NOTE: this functionality requires PostgreSQL 16 or later! */ + @Override + public Long insertUnsavedStreaming( + Iterator unsaved, Integer batchSize, Connection c) { + return streamingInsert.insertUnchecked( + "COPY \"person\".\"person\"(\"businessentityid\", \"persontype\", \"title\", \"firstname\"," + + " \"middlename\", \"lastname\", \"suffix\", \"additionalcontactinfo\"," + + " \"demographics\", \"namestyle\", \"emailpromotion\", \"rowguid\", \"modifieddate\")" + + " FROM STDIN (DEFAULT '__DEFAULT_VALUE__')", + batchSize, + unsaved, + c, + PersonRowUnsaved.pgText); + } + + @Override + public SelectBuilder select() { + return SelectBuilder.of( + "\"person\".\"person\"", PersonFields.structure, PersonRow._rowParser, Dialect.POSTGRESQL); + } + + @Override + public List selectAll(Connection c) { + return interpolate( + Fragment.lit( + "select \"businessentityid\", \"persontype\", \"namestyle\", \"title\"," + + " \"firstname\", \"middlename\", \"lastname\", \"suffix\"," + + " \"emailpromotion\", \"additionalcontactinfo\", \"demographics\"," + + " \"rowguid\", \"modifieddate\"\n" + + "from \"person\".\"person\"\n")) + .query(PersonRow._rowParser.all()) + .runUnchecked(c); + } + + @Override + public Optional selectById(BusinessentityId businessentityid, Connection c) { + return interpolate( + Fragment.lit( + "select \"businessentityid\", \"persontype\", \"namestyle\", \"title\"," + + " \"firstname\", \"middlename\", \"lastname\", \"suffix\"," + + " \"emailpromotion\", \"additionalcontactinfo\", \"demographics\"," + + " \"rowguid\", \"modifieddate\"\n" + + "from \"person\".\"person\"\n" + + "where \"businessentityid\" = "), + Fragment.encode(BusinessentityId.pgType, businessentityid), + Fragment.lit("")) + .query(PersonRow._rowParser.first()) + .runUnchecked(c); + } + + @Override + public List selectByIds(BusinessentityId[] businessentityids, Connection c) { + return interpolate( + Fragment.lit( + "select \"businessentityid\", \"persontype\", \"namestyle\", \"title\"," + + " \"firstname\", \"middlename\", \"lastname\", \"suffix\"," + + " \"emailpromotion\", \"additionalcontactinfo\", \"demographics\"," + + " \"rowguid\", \"modifieddate\"\n" + + "from \"person\".\"person\"\n" + + "where \"businessentityid\" = ANY("), + Fragment.encode(BusinessentityId.pgTypeArray, businessentityids), + Fragment.lit(")")) + .query(PersonRow._rowParser.all()) + .runUnchecked(c); + } + + @Override + public Map selectByIdsTracked( + BusinessentityId[] businessentityids, Connection c) { + HashMap ret = new HashMap(); + selectByIds(businessentityids, c).forEach(row -> ret.put(row.businessentityid(), row)); + return ret; + } + + @Override + public UpdateBuilder update() { + return UpdateBuilder.of( + "\"person\".\"person\"", PersonFields.structure, PersonRow._rowParser, Dialect.POSTGRESQL); + } + + @Override + public Boolean update(PersonRow row, Connection c) { + BusinessentityId businessentityid = row.businessentityid(); + ; + return interpolate( + Fragment.lit("update \"person\".\"person\"\nset \"persontype\" = "), + Fragment.encode(PgTypes.bpchar, row.persontype()), + Fragment.lit("::bpchar,\n\"namestyle\" = "), + Fragment.encode(NameStyle.pgType, row.namestyle()), + Fragment.lit("::bool,\n\"title\" = "), + Fragment.encode(PgTypes.text.opt(), row.title()), + Fragment.lit(",\n\"firstname\" = "), + Fragment.encode(FirstName.pgType, row.firstname()), + Fragment.lit("::varchar,\n\"middlename\" = "), + Fragment.encode(MiddleName.pgType.opt(), row.middlename()), + Fragment.lit("::varchar,\n\"lastname\" = "), + Fragment.encode(LastName.pgType, row.lastname()), + Fragment.lit("::varchar,\n\"suffix\" = "), + Fragment.encode(PgTypes.text.opt(), row.suffix()), + Fragment.lit(",\n\"emailpromotion\" = "), + Fragment.encode(PgTypes.int4, row.emailpromotion()), + Fragment.lit("::int4,\n\"additionalcontactinfo\" = "), + Fragment.encode(PgTypes.xml.opt(), row.additionalcontactinfo()), + Fragment.lit("::xml,\n\"demographics\" = "), + Fragment.encode(PgTypes.xml.opt(), row.demographics()), + Fragment.lit("::xml,\n\"rowguid\" = "), + Fragment.encode(PgTypes.uuid, row.rowguid()), + Fragment.lit("::uuid,\n\"modifieddate\" = "), + Fragment.encode(PgTypes.timestamp, row.modifieddate()), + Fragment.lit("::timestamp\nwhere \"businessentityid\" = "), + Fragment.encode(BusinessentityId.pgType, businessentityid), + Fragment.lit("")) + .update() + .runUnchecked(c) + > 0; + } + + @Override + public PersonRow upsert(PersonRow unsaved, Connection c) { + return interpolate( + Fragment.lit( + "insert into \"person\".\"person\"(\"businessentityid\", \"persontype\"," + + " \"namestyle\", \"title\", \"firstname\", \"middlename\", \"lastname\"," + + " \"suffix\", \"emailpromotion\", \"additionalcontactinfo\"," + + " \"demographics\", \"rowguid\", \"modifieddate\")\n" + + "values ("), + Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid()), + Fragment.lit("::int4, "), + Fragment.encode(PgTypes.bpchar, unsaved.persontype()), + Fragment.lit("::bpchar, "), + Fragment.encode(NameStyle.pgType, unsaved.namestyle()), + Fragment.lit("::bool, "), + Fragment.encode(PgTypes.text.opt(), unsaved.title()), + Fragment.lit(", "), + Fragment.encode(FirstName.pgType, unsaved.firstname()), + Fragment.lit("::varchar, "), + Fragment.encode(MiddleName.pgType.opt(), unsaved.middlename()), + Fragment.lit("::varchar, "), + Fragment.encode(LastName.pgType, unsaved.lastname()), + Fragment.lit("::varchar, "), + Fragment.encode(PgTypes.text.opt(), unsaved.suffix()), + Fragment.lit(", "), + Fragment.encode(PgTypes.int4, unsaved.emailpromotion()), + Fragment.lit("::int4, "), + Fragment.encode(PgTypes.xml.opt(), unsaved.additionalcontactinfo()), + Fragment.lit("::xml, "), + Fragment.encode(PgTypes.xml.opt(), unsaved.demographics()), + Fragment.lit("::xml, "), + Fragment.encode(PgTypes.uuid, unsaved.rowguid()), + Fragment.lit("::uuid, "), + Fragment.encode(PgTypes.timestamp, unsaved.modifieddate()), + Fragment.lit( + "::timestamp)\n" + + "on conflict (\"businessentityid\")\n" + + "do update set\n" + + " \"persontype\" = EXCLUDED.\"persontype\",\n" + + "\"namestyle\" = EXCLUDED.\"namestyle\",\n" + + "\"title\" = EXCLUDED.\"title\",\n" + + "\"firstname\" = EXCLUDED.\"firstname\",\n" + + "\"middlename\" = EXCLUDED.\"middlename\",\n" + + "\"lastname\" = EXCLUDED.\"lastname\",\n" + + "\"suffix\" = EXCLUDED.\"suffix\",\n" + + "\"emailpromotion\" = EXCLUDED.\"emailpromotion\",\n" + + "\"additionalcontactinfo\" = EXCLUDED.\"additionalcontactinfo\",\n" + + "\"demographics\" = EXCLUDED.\"demographics\",\n" + + "\"rowguid\" = EXCLUDED.\"rowguid\",\n" + + "\"modifieddate\" = EXCLUDED.\"modifieddate\"\n" + + "returning \"businessentityid\", \"persontype\", \"namestyle\", \"title\"," + + " \"firstname\", \"middlename\", \"lastname\", \"suffix\"," + + " \"emailpromotion\", \"additionalcontactinfo\", \"demographics\"," + + " \"rowguid\", \"modifieddate\"")) + .updateReturning(PersonRow._rowParser.exactlyOne()) + .runUnchecked(c); + } + + @Override + public List upsertBatch(Iterator unsaved, Connection c) { + return interpolate( + Fragment.lit( + "insert into \"person\".\"person\"(\"businessentityid\", \"persontype\"," + + " \"namestyle\", \"title\", \"firstname\", \"middlename\", \"lastname\"," + + " \"suffix\", \"emailpromotion\", \"additionalcontactinfo\"," + + " \"demographics\", \"rowguid\", \"modifieddate\")\n" + + "values (?::int4, ?::bpchar, ?::bool, ?, ?::varchar, ?::varchar, ?::varchar," + + " ?, ?::int4, ?::xml, ?::xml, ?::uuid, ?::timestamp)\n" + + "on conflict (\"businessentityid\")\n" + + "do update set\n" + + " \"persontype\" = EXCLUDED.\"persontype\",\n" + + "\"namestyle\" = EXCLUDED.\"namestyle\",\n" + + "\"title\" = EXCLUDED.\"title\",\n" + + "\"firstname\" = EXCLUDED.\"firstname\",\n" + + "\"middlename\" = EXCLUDED.\"middlename\",\n" + + "\"lastname\" = EXCLUDED.\"lastname\",\n" + + "\"suffix\" = EXCLUDED.\"suffix\",\n" + + "\"emailpromotion\" = EXCLUDED.\"emailpromotion\",\n" + + "\"additionalcontactinfo\" = EXCLUDED.\"additionalcontactinfo\",\n" + + "\"demographics\" = EXCLUDED.\"demographics\",\n" + + "\"rowguid\" = EXCLUDED.\"rowguid\",\n" + + "\"modifieddate\" = EXCLUDED.\"modifieddate\"\n" + + "returning \"businessentityid\", \"persontype\", \"namestyle\", \"title\"," + + " \"firstname\", \"middlename\", \"lastname\", \"suffix\"," + + " \"emailpromotion\", \"additionalcontactinfo\", \"demographics\"," + + " \"rowguid\", \"modifieddate\"")) + .updateManyReturning(PersonRow._rowParser, unsaved) + .runUnchecked(c); + } + + /** NOTE: this functionality is not safe if you use auto-commit mode! it runs 3 SQL statements */ + @Override + public Integer upsertStreaming(Iterator unsaved, Integer batchSize, Connection c) { + interpolate( + Fragment.lit( + "create temporary table person_TEMP (like \"person\".\"person\") on commit drop")) + .update() + .runUnchecked(c); + streamingInsert.insertUnchecked( + "copy person_TEMP(\"businessentityid\", \"persontype\", \"namestyle\", \"title\"," + + " \"firstname\", \"middlename\", \"lastname\", \"suffix\", \"emailpromotion\"," + + " \"additionalcontactinfo\", \"demographics\", \"rowguid\", \"modifieddate\") from" + + " stdin", + batchSize, + unsaved, + c, + PersonRow.pgText); + return interpolate( + Fragment.lit( + "insert into \"person\".\"person\"(\"businessentityid\", \"persontype\"," + + " \"namestyle\", \"title\", \"firstname\", \"middlename\", \"lastname\"," + + " \"suffix\", \"emailpromotion\", \"additionalcontactinfo\"," + + " \"demographics\", \"rowguid\", \"modifieddate\")\n" + + "select * from person_TEMP\n" + + "on conflict (\"businessentityid\")\n" + + "do update set\n" + + " \"persontype\" = EXCLUDED.\"persontype\",\n" + + "\"namestyle\" = EXCLUDED.\"namestyle\",\n" + + "\"title\" = EXCLUDED.\"title\",\n" + + "\"firstname\" = EXCLUDED.\"firstname\",\n" + + "\"middlename\" = EXCLUDED.\"middlename\",\n" + + "\"lastname\" = EXCLUDED.\"lastname\",\n" + + "\"suffix\" = EXCLUDED.\"suffix\",\n" + + "\"emailpromotion\" = EXCLUDED.\"emailpromotion\",\n" + + "\"additionalcontactinfo\" = EXCLUDED.\"additionalcontactinfo\",\n" + + "\"demographics\" = EXCLUDED.\"demographics\",\n" + + "\"rowguid\" = EXCLUDED.\"rowguid\",\n" + + "\"modifieddate\" = EXCLUDED.\"modifieddate\"\n" + + ";\n" + + "drop table person_TEMP;")) + .update() + .runUnchecked(c); + } +} diff --git a/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/person/person/PersonRepoMock.java b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/person/person/PersonRepoMock.java new file mode 100644 index 0000000000..636aa858c0 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/person/person/PersonRepoMock.java @@ -0,0 +1,225 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.postgres.person.person; + +import combined.postgres.person.businessentity.BusinessentityId; +import dev.typr.foundations.dsl.DeleteBuilder; +import dev.typr.foundations.dsl.DeleteBuilderMock; +import dev.typr.foundations.dsl.DeleteParams; +import dev.typr.foundations.dsl.SelectBuilder; +import dev.typr.foundations.dsl.SelectBuilderMock; +import dev.typr.foundations.dsl.SelectParams; +import dev.typr.foundations.dsl.UpdateBuilder; +import dev.typr.foundations.dsl.UpdateBuilderMock; +import dev.typr.foundations.dsl.UpdateParams; +import java.sql.Connection; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.function.Function; +import java.util.stream.Collectors; + +public record PersonRepoMock( + java.util.function.Function toRow, + HashMap map) + implements PersonRepo { + public PersonRepoMock(java.util.function.Function toRow) { + this(toRow, new HashMap()); + } + ; + + public PersonRepoMock withToRow(java.util.function.Function toRow) { + return new PersonRepoMock(toRow, map); + } + ; + + public PersonRepoMock withMap(HashMap map) { + return new PersonRepoMock(toRow, map); + } + ; + + @Override + public DeleteBuilder delete() { + return new DeleteBuilderMock<>( + PersonFields.structure, + () -> new ArrayList<>(map.values()), + DeleteParams.empty(), + row -> row.businessentityid(), + id -> map.remove(id)); + } + ; + + @Override + public Boolean deleteById(BusinessentityId businessentityid, Connection c) { + return Optional.ofNullable(map.remove(businessentityid)).isPresent(); + } + ; + + @Override + public Integer deleteByIds(BusinessentityId[] businessentityids, Connection c) { + var count = 0; + for (var id : businessentityids) { + if (Optional.ofNullable(map.remove(id)).isPresent()) { + count = count + 1; + ; + } + ; + } + ; + return count; + } + ; + + @Override + public PersonRow insert(PersonRow unsaved, Connection c) { + if (map.containsKey(unsaved.businessentityid())) { + throw new RuntimeException("id " + unsaved.businessentityid() + " already exists"); + } + ; + map.put(unsaved.businessentityid(), unsaved); + return unsaved; + } + ; + + @Override + public PersonRow insert(PersonRowUnsaved unsaved, Connection c) { + return insert(toRow.apply(unsaved), c); + } + ; + + @Override + public Long insertStreaming(Iterator unsaved, Integer batchSize, Connection c) { + var count = 0L; + while (unsaved.hasNext()) { + var row = unsaved.next(); + map.put(row.businessentityid(), row); + count = count + 1L; + } + ; + return count; + } + ; + + /** NOTE: this functionality requires PostgreSQL 16 or later! */ + @Override + public Long insertUnsavedStreaming( + Iterator unsaved, Integer batchSize, Connection c) { + var count = 0L; + while (unsaved.hasNext()) { + var unsavedRow = unsaved.next(); + var row = toRow.apply(unsavedRow); + map.put(row.businessentityid(), row); + count = count + 1L; + } + ; + return count; + } + ; + + @Override + public SelectBuilder select() { + return new SelectBuilderMock<>( + PersonFields.structure, () -> new ArrayList<>(map.values()), SelectParams.empty()); + } + ; + + @Override + public List selectAll(Connection c) { + return new ArrayList<>(map.values()); + } + ; + + @Override + public Optional selectById(BusinessentityId businessentityid, Connection c) { + return Optional.ofNullable(map.get(businessentityid)); + } + ; + + @Override + public List selectByIds(BusinessentityId[] businessentityids, Connection c) { + var result = new ArrayList(); + for (var id : businessentityids) { + var opt = Optional.ofNullable(map.get(id)); + if (opt.isPresent()) { + result.add(opt.get()); + } + ; + } + ; + return result; + } + ; + + @Override + public Map selectByIdsTracked( + BusinessentityId[] businessentityids, Connection c) { + return selectByIds(businessentityids, c).stream() + .collect(Collectors.toMap((PersonRow row) -> row.businessentityid(), Function.identity())); + } + ; + + @Override + public UpdateBuilder update() { + return new UpdateBuilderMock<>( + PersonFields.structure, + () -> new ArrayList<>(map.values()), + UpdateParams.empty(), + row -> row); + } + ; + + @Override + public Boolean update(PersonRow row, Connection c) { + var shouldUpdate = + Optional.ofNullable(map.get(row.businessentityid())) + .filter(oldRow -> !oldRow.equals(row)) + .isPresent(); + if (shouldUpdate) { + map.put(row.businessentityid(), row); + ; + } + ; + return shouldUpdate; + } + ; + + @Override + public PersonRow upsert(PersonRow unsaved, Connection c) { + map.put(unsaved.businessentityid(), unsaved); + return unsaved; + } + ; + + @Override + public List upsertBatch(Iterator unsaved, Connection c) { + var result = new ArrayList(); + while (unsaved.hasNext()) { + var row = unsaved.next(); + map.put(row.businessentityid(), row); + result.add(row); + } + ; + return result; + } + ; + + /** NOTE: this functionality is not safe if you use auto-commit mode! it runs 3 SQL statements */ + @Override + public Integer upsertStreaming(Iterator unsaved, Integer batchSize, Connection c) { + var count = 0; + while (unsaved.hasNext()) { + var row = unsaved.next(); + map.put(row.businessentityid(), row); + count = count + 1; + } + ; + return count; + } + ; +} diff --git a/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/person/person/PersonRow.java b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/person/person/PersonRow.java new file mode 100644 index 0000000000..818e2e779d --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/person/person/PersonRow.java @@ -0,0 +1,496 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.postgres.person.person; + +import combined.postgres.customtypes.Defaulted; +import combined.postgres.person.businessentity.BusinessentityId; +import combined.postgres.public_.NameStyle; +import combined.shared.FirstName; +import combined.shared.LastName; +import combined.shared.MiddleName; +import dev.typr.foundations.PgText; +import dev.typr.foundations.PgTypes; +import dev.typr.foundations.RowParser; +import dev.typr.foundations.RowParsers; +import dev.typr.foundations.Tuple.Tuple13; +import dev.typr.foundations.data.Xml; +import java.time.LocalDateTime; +import java.util.Optional; +import java.util.UUID; + +/** + * Table: person.person Human beings involved with AdventureWorks: employees, customer contacts, and + * vendor contacts. Primary key: businessentityid + */ +public record PersonRow( + /** + * Primary key for Person records. Points to {@link + * combined.postgres.person.businessentity.BusinessentityRow#businessentityid()} + */ + BusinessentityId businessentityid, + /** + * Primary type of person: SC = Store Contact, IN = Individual (retail) customer, SP = Sales + * person, EM = Employee (non-sales), VC = Vendor contact, GC = General contact Constraint + * CK_Person_PersonType affecting columns persontype: (((persontype IS NULL) OR + * (upper((persontype)::text) = ANY (ARRAY['SC'::text, 'VC'::text, 'IN'::text, 'EM'::text, + * 'SP'::text, 'GC'::text])))) + */ + String persontype, + /** + * 0 = The data in FirstName and LastName are stored in western style (first name, last name) + * order. 1 = Eastern style (last name, first name) order. Default: false + */ + NameStyle namestyle, + /** A courtesy title. For example, Mr. or Ms. */ + Optional title, + /** First name of the person. */ + /* user-picked */ FirstName firstname, + /** Middle name or middle initial of the person. */ + Optional middlename, + /** Last name of the person. */ + /* user-picked */ LastName lastname, + /** Surname suffix. For example, Sr. or Jr. */ + Optional suffix, + /** + * 0 = Contact does not wish to receive e-mail promotions, 1 = Contact does wish to receive + * e-mail promotions from AdventureWorks, 2 = Contact does wish to receive e-mail promotions + * from AdventureWorks and selected partners. Default: 0 Constraint CK_Person_EmailPromotion + * affecting columns emailpromotion: (((emailpromotion >= 0) AND (emailpromotion <= 2))) + */ + Integer emailpromotion, + /** Additional contact information about the person stored in xml format. */ + Optional additionalcontactinfo, + /** + * Personal information such as hobbies, and income collected from online shoppers. Used for + * sales analysis. + */ + Optional demographics, + /** Default: uuid_generate_v1() */ + UUID rowguid, + /** Default: now() */ + LocalDateTime modifieddate) + implements Tuple13< + BusinessentityId, + String, + NameStyle, + Optional, /* user-picked */ + FirstName, + Optional, /* user-picked */ + LastName, + Optional, + Integer, + Optional, + Optional, + UUID, + LocalDateTime> { + /** + * Primary key for Person records. Points to {@link + * combined.postgres.person.businessentity.BusinessentityRow#businessentityid()} + */ + public PersonRow withBusinessentityid(BusinessentityId businessentityid) { + return new PersonRow( + businessentityid, + persontype, + namestyle, + title, + firstname, + middlename, + lastname, + suffix, + emailpromotion, + additionalcontactinfo, + demographics, + rowguid, + modifieddate); + } + ; + + /** + * Primary type of person: SC = Store Contact, IN = Individual (retail) customer, SP = Sales + * person, EM = Employee (non-sales), VC = Vendor contact, GC = General contact Constraint + * CK_Person_PersonType affecting columns persontype: (((persontype IS NULL) OR + * (upper((persontype)::text) = ANY (ARRAY['SC'::text, 'VC'::text, 'IN'::text, 'EM'::text, + * 'SP'::text, 'GC'::text])))) + */ + public PersonRow withPersontype(String persontype) { + return new PersonRow( + businessentityid, + persontype, + namestyle, + title, + firstname, + middlename, + lastname, + suffix, + emailpromotion, + additionalcontactinfo, + demographics, + rowguid, + modifieddate); + } + ; + + /** + * 0 = The data in FirstName and LastName are stored in western style (first name, last name) + * order. 1 = Eastern style (last name, first name) order. Default: false + */ + public PersonRow withNamestyle(NameStyle namestyle) { + return new PersonRow( + businessentityid, + persontype, + namestyle, + title, + firstname, + middlename, + lastname, + suffix, + emailpromotion, + additionalcontactinfo, + demographics, + rowguid, + modifieddate); + } + ; + + /** A courtesy title. For example, Mr. or Ms. */ + public PersonRow withTitle(Optional title) { + return new PersonRow( + businessentityid, + persontype, + namestyle, + title, + firstname, + middlename, + lastname, + suffix, + emailpromotion, + additionalcontactinfo, + demographics, + rowguid, + modifieddate); + } + ; + + /** First name of the person. */ + public PersonRow withFirstname(/* user-picked */ FirstName firstname) { + return new PersonRow( + businessentityid, + persontype, + namestyle, + title, + firstname, + middlename, + lastname, + suffix, + emailpromotion, + additionalcontactinfo, + demographics, + rowguid, + modifieddate); + } + ; + + /** Middle name or middle initial of the person. */ + public PersonRow withMiddlename(Optional middlename) { + return new PersonRow( + businessentityid, + persontype, + namestyle, + title, + firstname, + middlename, + lastname, + suffix, + emailpromotion, + additionalcontactinfo, + demographics, + rowguid, + modifieddate); + } + ; + + /** Last name of the person. */ + public PersonRow withLastname(/* user-picked */ LastName lastname) { + return new PersonRow( + businessentityid, + persontype, + namestyle, + title, + firstname, + middlename, + lastname, + suffix, + emailpromotion, + additionalcontactinfo, + demographics, + rowguid, + modifieddate); + } + ; + + /** Surname suffix. For example, Sr. or Jr. */ + public PersonRow withSuffix(Optional suffix) { + return new PersonRow( + businessentityid, + persontype, + namestyle, + title, + firstname, + middlename, + lastname, + suffix, + emailpromotion, + additionalcontactinfo, + demographics, + rowguid, + modifieddate); + } + ; + + /** + * 0 = Contact does not wish to receive e-mail promotions, 1 = Contact does wish to receive e-mail + * promotions from AdventureWorks, 2 = Contact does wish to receive e-mail promotions from + * AdventureWorks and selected partners. Default: 0 Constraint CK_Person_EmailPromotion affecting + * columns emailpromotion: (((emailpromotion >= 0) AND (emailpromotion <= 2))) + */ + public PersonRow withEmailpromotion(Integer emailpromotion) { + return new PersonRow( + businessentityid, + persontype, + namestyle, + title, + firstname, + middlename, + lastname, + suffix, + emailpromotion, + additionalcontactinfo, + demographics, + rowguid, + modifieddate); + } + ; + + /** Additional contact information about the person stored in xml format. */ + public PersonRow withAdditionalcontactinfo(Optional additionalcontactinfo) { + return new PersonRow( + businessentityid, + persontype, + namestyle, + title, + firstname, + middlename, + lastname, + suffix, + emailpromotion, + additionalcontactinfo, + demographics, + rowguid, + modifieddate); + } + ; + + /** + * Personal information such as hobbies, and income collected from online shoppers. Used for sales + * analysis. + */ + public PersonRow withDemographics(Optional demographics) { + return new PersonRow( + businessentityid, + persontype, + namestyle, + title, + firstname, + middlename, + lastname, + suffix, + emailpromotion, + additionalcontactinfo, + demographics, + rowguid, + modifieddate); + } + ; + + /** Default: uuid_generate_v1() */ + public PersonRow withRowguid(UUID rowguid) { + return new PersonRow( + businessentityid, + persontype, + namestyle, + title, + firstname, + middlename, + lastname, + suffix, + emailpromotion, + additionalcontactinfo, + demographics, + rowguid, + modifieddate); + } + ; + + /** Default: now() */ + public PersonRow withModifieddate(LocalDateTime modifieddate) { + return new PersonRow( + businessentityid, + persontype, + namestyle, + title, + firstname, + middlename, + lastname, + suffix, + emailpromotion, + additionalcontactinfo, + demographics, + rowguid, + modifieddate); + } + ; + + public static RowParser _rowParser = + RowParsers.of( + BusinessentityId.pgType, + PgTypes.bpchar, + NameStyle.pgType, + PgTypes.text.opt(), + FirstName.pgType, + MiddleName.pgType.opt(), + LastName.pgType, + PgTypes.text.opt(), + PgTypes.int4, + PgTypes.xml.opt(), + PgTypes.xml.opt(), + PgTypes.uuid, + PgTypes.timestamp, + PersonRow::new, + row -> + new Object[] { + row.businessentityid(), + row.persontype(), + row.namestyle(), + row.title(), + row.firstname(), + row.middlename(), + row.lastname(), + row.suffix(), + row.emailpromotion(), + row.additionalcontactinfo(), + row.demographics(), + row.rowguid(), + row.modifieddate() + }); + ; + + public static PgText pgText = PgText.from(_rowParser); + + @Override + public BusinessentityId _1() { + return businessentityid; + } + ; + + @Override + public Optional _10() { + return additionalcontactinfo; + } + ; + + @Override + public Optional _11() { + return demographics; + } + ; + + @Override + public UUID _12() { + return rowguid; + } + ; + + @Override + public LocalDateTime _13() { + return modifieddate; + } + ; + + @Override + public String _2() { + return persontype; + } + ; + + @Override + public NameStyle _3() { + return namestyle; + } + ; + + @Override + public Optional _4() { + return title; + } + ; + + @Override + public /* user-picked */ FirstName _5() { + return firstname; + } + ; + + @Override + public Optional _6() { + return middlename; + } + ; + + @Override + public /* user-picked */ LastName _7() { + return lastname; + } + ; + + @Override + public Optional _8() { + return suffix; + } + ; + + @Override + public Integer _9() { + return emailpromotion; + } + ; + + public BusinessentityId id() { + return businessentityid; + } + ; + + public PersonRowUnsaved toUnsavedRow( + Defaulted namestyle, + Defaulted emailpromotion, + Defaulted rowguid, + Defaulted modifieddate) { + return new PersonRowUnsaved( + businessentityid, + persontype, + title, + firstname, + middlename, + lastname, + suffix, + additionalcontactinfo, + demographics, + namestyle, + emailpromotion, + rowguid, + modifieddate); + } + ; +} diff --git a/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/person/person/PersonRowUnsaved.java b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/person/person/PersonRowUnsaved.java new file mode 100644 index 0000000000..468a672ca0 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/person/person/PersonRowUnsaved.java @@ -0,0 +1,423 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.postgres.person.person; + +import combined.postgres.customtypes.Defaulted; +import combined.postgres.customtypes.Defaulted.UseDefault; +import combined.postgres.person.businessentity.BusinessentityId; +import combined.postgres.public_.NameStyle; +import combined.shared.FirstName; +import combined.shared.LastName; +import combined.shared.MiddleName; +import dev.typr.foundations.PgText; +import dev.typr.foundations.PgTypes; +import dev.typr.foundations.data.Xml; +import java.time.LocalDateTime; +import java.util.Optional; +import java.util.UUID; + +/** This class corresponds to a row in table `person.person` which has not been persisted yet */ +public record PersonRowUnsaved( + /** + * Primary key for Person records. Points to {@link + * combined.postgres.person.businessentity.BusinessentityRow#businessentityid()} + */ + BusinessentityId businessentityid, + /** + * Primary type of person: SC = Store Contact, IN = Individual (retail) customer, SP = Sales + * person, EM = Employee (non-sales), VC = Vendor contact, GC = General contact Constraint + * CK_Person_PersonType affecting columns persontype: (((persontype IS NULL) OR + * (upper((persontype)::text) = ANY (ARRAY['SC'::text, 'VC'::text, 'IN'::text, 'EM'::text, + * 'SP'::text, 'GC'::text])))) + */ + String persontype, + /** A courtesy title. For example, Mr. or Ms. */ + Optional title, + /** First name of the person. */ + /* user-picked */ FirstName firstname, + /** Middle name or middle initial of the person. */ + Optional middlename, + /** Last name of the person. */ + /* user-picked */ LastName lastname, + /** Surname suffix. For example, Sr. or Jr. */ + Optional suffix, + /** Additional contact information about the person stored in xml format. */ + Optional additionalcontactinfo, + /** + * Personal information such as hobbies, and income collected from online shoppers. Used for + * sales analysis. + */ + Optional demographics, + /** + * Default: false 0 = The data in FirstName and LastName are stored in western style (first + * name, last name) order. 1 = Eastern style (last name, first name) order. + */ + Defaulted namestyle, + /** + * Default: 0 0 = Contact does not wish to receive e-mail promotions, 1 = Contact does wish to + * receive e-mail promotions from AdventureWorks, 2 = Contact does wish to receive e-mail + * promotions from AdventureWorks and selected partners. Constraint CK_Person_EmailPromotion + * affecting columns emailpromotion: (((emailpromotion >= 0) AND (emailpromotion <= 2))) + */ + Defaulted emailpromotion, + /** Default: uuid_generate_v1() */ + Defaulted rowguid, + /** Default: now() */ + Defaulted modifieddate) { + public PersonRowUnsaved( + /** + * Primary key for Person records. Points to {@link + * combined.postgres.person.businessentity.BusinessentityRow#businessentityid()} + */ + BusinessentityId businessentityid, + /** + * Primary type of person: SC = Store Contact, IN = Individual (retail) customer, SP = Sales + * person, EM = Employee (non-sales), VC = Vendor contact, GC = General contact Constraint + * CK_Person_PersonType affecting columns persontype: (((persontype IS NULL) OR + * (upper((persontype)::text) = ANY (ARRAY['SC'::text, 'VC'::text, 'IN'::text, 'EM'::text, + * 'SP'::text, 'GC'::text])))) + */ + String persontype, + /** First name of the person. */ + /* user-picked */ FirstName firstname, + /** Last name of the person. */ + /* user-picked */ LastName lastname) { + this( + businessentityid, + persontype, + Optional.empty(), + firstname, + Optional.empty(), + lastname, + Optional.empty(), + Optional.empty(), + Optional.empty(), + new UseDefault<>(), + new UseDefault<>(), + new UseDefault<>(), + new UseDefault<>()); + } + ; + + /** + * Primary key for Person records. Points to {@link + * combined.postgres.person.businessentity.BusinessentityRow#businessentityid()} + */ + public PersonRowUnsaved withBusinessentityid(BusinessentityId businessentityid) { + return new PersonRowUnsaved( + businessentityid, + persontype, + title, + firstname, + middlename, + lastname, + suffix, + additionalcontactinfo, + demographics, + namestyle, + emailpromotion, + rowguid, + modifieddate); + } + ; + + /** + * Primary type of person: SC = Store Contact, IN = Individual (retail) customer, SP = Sales + * person, EM = Employee (non-sales), VC = Vendor contact, GC = General contact Constraint + * CK_Person_PersonType affecting columns persontype: (((persontype IS NULL) OR + * (upper((persontype)::text) = ANY (ARRAY['SC'::text, 'VC'::text, 'IN'::text, 'EM'::text, + * 'SP'::text, 'GC'::text])))) + */ + public PersonRowUnsaved withPersontype(String persontype) { + return new PersonRowUnsaved( + businessentityid, + persontype, + title, + firstname, + middlename, + lastname, + suffix, + additionalcontactinfo, + demographics, + namestyle, + emailpromotion, + rowguid, + modifieddate); + } + ; + + /** A courtesy title. For example, Mr. or Ms. */ + public PersonRowUnsaved withTitle(Optional title) { + return new PersonRowUnsaved( + businessentityid, + persontype, + title, + firstname, + middlename, + lastname, + suffix, + additionalcontactinfo, + demographics, + namestyle, + emailpromotion, + rowguid, + modifieddate); + } + ; + + /** First name of the person. */ + public PersonRowUnsaved withFirstname(/* user-picked */ FirstName firstname) { + return new PersonRowUnsaved( + businessentityid, + persontype, + title, + firstname, + middlename, + lastname, + suffix, + additionalcontactinfo, + demographics, + namestyle, + emailpromotion, + rowguid, + modifieddate); + } + ; + + /** Middle name or middle initial of the person. */ + public PersonRowUnsaved withMiddlename(Optional middlename) { + return new PersonRowUnsaved( + businessentityid, + persontype, + title, + firstname, + middlename, + lastname, + suffix, + additionalcontactinfo, + demographics, + namestyle, + emailpromotion, + rowguid, + modifieddate); + } + ; + + /** Last name of the person. */ + public PersonRowUnsaved withLastname(/* user-picked */ LastName lastname) { + return new PersonRowUnsaved( + businessentityid, + persontype, + title, + firstname, + middlename, + lastname, + suffix, + additionalcontactinfo, + demographics, + namestyle, + emailpromotion, + rowguid, + modifieddate); + } + ; + + /** Surname suffix. For example, Sr. or Jr. */ + public PersonRowUnsaved withSuffix(Optional suffix) { + return new PersonRowUnsaved( + businessentityid, + persontype, + title, + firstname, + middlename, + lastname, + suffix, + additionalcontactinfo, + demographics, + namestyle, + emailpromotion, + rowguid, + modifieddate); + } + ; + + /** Additional contact information about the person stored in xml format. */ + public PersonRowUnsaved withAdditionalcontactinfo(Optional additionalcontactinfo) { + return new PersonRowUnsaved( + businessentityid, + persontype, + title, + firstname, + middlename, + lastname, + suffix, + additionalcontactinfo, + demographics, + namestyle, + emailpromotion, + rowguid, + modifieddate); + } + ; + + /** + * Personal information such as hobbies, and income collected from online shoppers. Used for sales + * analysis. + */ + public PersonRowUnsaved withDemographics(Optional demographics) { + return new PersonRowUnsaved( + businessentityid, + persontype, + title, + firstname, + middlename, + lastname, + suffix, + additionalcontactinfo, + demographics, + namestyle, + emailpromotion, + rowguid, + modifieddate); + } + ; + + /** + * Default: false 0 = The data in FirstName and LastName are stored in western style (first name, + * last name) order. 1 = Eastern style (last name, first name) order. + */ + public PersonRowUnsaved withNamestyle(Defaulted namestyle) { + return new PersonRowUnsaved( + businessentityid, + persontype, + title, + firstname, + middlename, + lastname, + suffix, + additionalcontactinfo, + demographics, + namestyle, + emailpromotion, + rowguid, + modifieddate); + } + ; + + /** + * Default: 0 0 = Contact does not wish to receive e-mail promotions, 1 = Contact does wish to + * receive e-mail promotions from AdventureWorks, 2 = Contact does wish to receive e-mail + * promotions from AdventureWorks and selected partners. Constraint CK_Person_EmailPromotion + * affecting columns emailpromotion: (((emailpromotion >= 0) AND (emailpromotion <= 2))) + */ + public PersonRowUnsaved withEmailpromotion(Defaulted emailpromotion) { + return new PersonRowUnsaved( + businessentityid, + persontype, + title, + firstname, + middlename, + lastname, + suffix, + additionalcontactinfo, + demographics, + namestyle, + emailpromotion, + rowguid, + modifieddate); + } + ; + + /** Default: uuid_generate_v1() */ + public PersonRowUnsaved withRowguid(Defaulted rowguid) { + return new PersonRowUnsaved( + businessentityid, + persontype, + title, + firstname, + middlename, + lastname, + suffix, + additionalcontactinfo, + demographics, + namestyle, + emailpromotion, + rowguid, + modifieddate); + } + ; + + /** Default: now() */ + public PersonRowUnsaved withModifieddate(Defaulted modifieddate) { + return new PersonRowUnsaved( + businessentityid, + persontype, + title, + firstname, + middlename, + lastname, + suffix, + additionalcontactinfo, + demographics, + namestyle, + emailpromotion, + rowguid, + modifieddate); + } + ; + + public static PgText pgText = + PgText.instance( + (row, sb) -> { + BusinessentityId.pgType.text().unsafeEncode(row.businessentityid, sb); + sb.append(PgText.DELIMETER); + PgTypes.bpchar.text().unsafeEncode(row.persontype, sb); + sb.append(PgText.DELIMETER); + PgTypes.text.opt().text().unsafeEncode(row.title, sb); + sb.append(PgText.DELIMETER); + FirstName.pgType.text().unsafeEncode(row.firstname, sb); + sb.append(PgText.DELIMETER); + MiddleName.pgType.opt().text().unsafeEncode(row.middlename, sb); + sb.append(PgText.DELIMETER); + LastName.pgType.text().unsafeEncode(row.lastname, sb); + sb.append(PgText.DELIMETER); + PgTypes.text.opt().text().unsafeEncode(row.suffix, sb); + sb.append(PgText.DELIMETER); + PgTypes.xml.opt().text().unsafeEncode(row.additionalcontactinfo, sb); + sb.append(PgText.DELIMETER); + PgTypes.xml.opt().text().unsafeEncode(row.demographics, sb); + sb.append(PgText.DELIMETER); + Defaulted.pgText(NameStyle.pgType.text()).unsafeEncode(row.namestyle, sb); + sb.append(PgText.DELIMETER); + Defaulted.pgText(PgTypes.int4.text()).unsafeEncode(row.emailpromotion, sb); + sb.append(PgText.DELIMETER); + Defaulted.pgText(PgTypes.uuid.text()).unsafeEncode(row.rowguid, sb); + sb.append(PgText.DELIMETER); + Defaulted.pgText(PgTypes.timestamp.text()).unsafeEncode(row.modifieddate, sb); + }); + + public PersonRow toRow( + java.util.function.Supplier namestyleDefault, + java.util.function.Supplier emailpromotionDefault, + java.util.function.Supplier rowguidDefault, + java.util.function.Supplier modifieddateDefault) { + return new PersonRow( + businessentityid, + persontype, + namestyle.getOrElse(namestyleDefault), + title, + firstname, + middlename, + lastname, + suffix, + emailpromotion.getOrElse(emailpromotionDefault), + additionalcontactinfo, + demographics, + rowguid.getOrElse(rowguidDefault), + modifieddate.getOrElse(modifieddateDefault)); + } + ; +} diff --git a/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/AccountNumber.java b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/AccountNumber.java new file mode 100644 index 0000000000..7020fc4674 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/AccountNumber.java @@ -0,0 +1,35 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.postgres.public_; + +import com.fasterxml.jackson.annotation.JsonValue; +import dev.typr.foundations.PgType; +import dev.typr.foundations.PgTypes; +import dev.typr.foundations.dsl.Bijection; +import dev.typr.foundations.internal.arrayMap; + +/** Domain `public.AccountNumber` No constraint */ +public record AccountNumber(@JsonValue String value) { + public AccountNumber withValue(String value) { + return new AccountNumber(value); + } + ; + + public static Bijection bijection = + Bijection.of(AccountNumber::value, AccountNumber::new); + + public static PgType pgType = + PgTypes.text + .bimap(AccountNumber::new, AccountNumber::value) + .renamed("\"public\".\"AccountNumber\""); + + public static PgType pgTypeArray = + PgTypes.textArray + .bimap( + xs -> arrayMap.map(xs, AccountNumber::new, AccountNumber.class), + xs -> arrayMap.map(xs, AccountNumber::value, String.class)) + .renamed("\"public\".\"AccountNumber\"[]"); +} diff --git a/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/Address.java b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/Address.java new file mode 100644 index 0000000000..3348b182a9 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/Address.java @@ -0,0 +1,59 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.postgres.public_; + +import dev.typr.foundations.PgRead; +import dev.typr.foundations.PgStruct; +import dev.typr.foundations.PgType; +import dev.typr.foundations.PgTypes; +import java.util.Optional; + +/** PostgreSQL composite type: public.address */ +public record Address( + Optional street, + Optional city, + Optional zip, + Optional country) { + public Address withStreet(Optional street) { + return new Address(street, city, zip, country); + } + ; + + public Address withCity(Optional city) { + return new Address(street, city, zip, country); + } + ; + + public Address withZip(Optional zip) { + return new Address(street, city, zip, country); + } + ; + + public Address withCountry(Optional country) { + return new Address(street, city, zip, country); + } + ; + + public static PgStruct

pgStruct = + PgStruct.
builder("public.address") + .optField("street", PgTypes.text, v -> v.street()) + .optField("city", PgTypes.text, v -> v.city()) + .optField("zip", PgTypes.text, v -> v.zip()) + .optField("country", PgTypes.text, v -> v.country()) + .build( + arr -> + new Address( + Optional.ofNullable((String) arr[0]), + Optional.ofNullable((String) arr[1]), + Optional.ofNullable((String) arr[2]), + Optional.ofNullable((String) arr[3]))); + + public static PgType
pgType = pgStruct.asType(); + + public static PgType pgTypeArray = + pgType.array( + PgRead.readCompositeArray(pgType.pgCompositeText(), Address[]::new), Address[]::new); +} diff --git a/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/AllTypesComposite.java b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/AllTypesComposite.java new file mode 100644 index 0000000000..185cf3f275 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/AllTypesComposite.java @@ -0,0 +1,598 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.postgres.public_; + +import dev.typr.foundations.PgRead; +import dev.typr.foundations.PgStruct; +import dev.typr.foundations.PgType; +import dev.typr.foundations.PgTypes; +import dev.typr.foundations.data.Json; +import dev.typr.foundations.data.Jsonb; +import dev.typr.foundations.data.Xml; +import java.math.BigDecimal; +import java.time.Instant; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.util.Optional; +import java.util.UUID; +import org.postgresql.util.PGInterval; + +/** PostgreSQL composite type: public.all_types_composite */ +public record AllTypesComposite( + Optional colBoolean, + Optional colSmallint, + Optional colInteger, + Optional colBigint, + Optional colReal, + Optional colDouble, + Optional colNumeric, + Optional colText, + Optional colVarchar, + Optional colChar, + Optional colBytea, + Optional colDate, + Optional colTime, + Optional colTimestamp, + Optional colTimestamptz, + Optional colInterval, + Optional colUuid, + Optional colJson, + Optional colJsonb, + Optional colXml) { + public AllTypesComposite withColBoolean(Optional colBoolean) { + return new AllTypesComposite( + colBoolean, + colSmallint, + colInteger, + colBigint, + colReal, + colDouble, + colNumeric, + colText, + colVarchar, + colChar, + colBytea, + colDate, + colTime, + colTimestamp, + colTimestamptz, + colInterval, + colUuid, + colJson, + colJsonb, + colXml); + } + ; + + public AllTypesComposite withColSmallint(Optional colSmallint) { + return new AllTypesComposite( + colBoolean, + colSmallint, + colInteger, + colBigint, + colReal, + colDouble, + colNumeric, + colText, + colVarchar, + colChar, + colBytea, + colDate, + colTime, + colTimestamp, + colTimestamptz, + colInterval, + colUuid, + colJson, + colJsonb, + colXml); + } + ; + + public AllTypesComposite withColInteger(Optional colInteger) { + return new AllTypesComposite( + colBoolean, + colSmallint, + colInteger, + colBigint, + colReal, + colDouble, + colNumeric, + colText, + colVarchar, + colChar, + colBytea, + colDate, + colTime, + colTimestamp, + colTimestamptz, + colInterval, + colUuid, + colJson, + colJsonb, + colXml); + } + ; + + public AllTypesComposite withColBigint(Optional colBigint) { + return new AllTypesComposite( + colBoolean, + colSmallint, + colInteger, + colBigint, + colReal, + colDouble, + colNumeric, + colText, + colVarchar, + colChar, + colBytea, + colDate, + colTime, + colTimestamp, + colTimestamptz, + colInterval, + colUuid, + colJson, + colJsonb, + colXml); + } + ; + + public AllTypesComposite withColReal(Optional colReal) { + return new AllTypesComposite( + colBoolean, + colSmallint, + colInteger, + colBigint, + colReal, + colDouble, + colNumeric, + colText, + colVarchar, + colChar, + colBytea, + colDate, + colTime, + colTimestamp, + colTimestamptz, + colInterval, + colUuid, + colJson, + colJsonb, + colXml); + } + ; + + public AllTypesComposite withColDouble(Optional colDouble) { + return new AllTypesComposite( + colBoolean, + colSmallint, + colInteger, + colBigint, + colReal, + colDouble, + colNumeric, + colText, + colVarchar, + colChar, + colBytea, + colDate, + colTime, + colTimestamp, + colTimestamptz, + colInterval, + colUuid, + colJson, + colJsonb, + colXml); + } + ; + + public AllTypesComposite withColNumeric(Optional colNumeric) { + return new AllTypesComposite( + colBoolean, + colSmallint, + colInteger, + colBigint, + colReal, + colDouble, + colNumeric, + colText, + colVarchar, + colChar, + colBytea, + colDate, + colTime, + colTimestamp, + colTimestamptz, + colInterval, + colUuid, + colJson, + colJsonb, + colXml); + } + ; + + public AllTypesComposite withColText(Optional colText) { + return new AllTypesComposite( + colBoolean, + colSmallint, + colInteger, + colBigint, + colReal, + colDouble, + colNumeric, + colText, + colVarchar, + colChar, + colBytea, + colDate, + colTime, + colTimestamp, + colTimestamptz, + colInterval, + colUuid, + colJson, + colJsonb, + colXml); + } + ; + + public AllTypesComposite withColVarchar(Optional colVarchar) { + return new AllTypesComposite( + colBoolean, + colSmallint, + colInteger, + colBigint, + colReal, + colDouble, + colNumeric, + colText, + colVarchar, + colChar, + colBytea, + colDate, + colTime, + colTimestamp, + colTimestamptz, + colInterval, + colUuid, + colJson, + colJsonb, + colXml); + } + ; + + public AllTypesComposite withColChar(Optional colChar) { + return new AllTypesComposite( + colBoolean, + colSmallint, + colInteger, + colBigint, + colReal, + colDouble, + colNumeric, + colText, + colVarchar, + colChar, + colBytea, + colDate, + colTime, + colTimestamp, + colTimestamptz, + colInterval, + colUuid, + colJson, + colJsonb, + colXml); + } + ; + + public AllTypesComposite withColBytea(Optional colBytea) { + return new AllTypesComposite( + colBoolean, + colSmallint, + colInteger, + colBigint, + colReal, + colDouble, + colNumeric, + colText, + colVarchar, + colChar, + colBytea, + colDate, + colTime, + colTimestamp, + colTimestamptz, + colInterval, + colUuid, + colJson, + colJsonb, + colXml); + } + ; + + public AllTypesComposite withColDate(Optional colDate) { + return new AllTypesComposite( + colBoolean, + colSmallint, + colInteger, + colBigint, + colReal, + colDouble, + colNumeric, + colText, + colVarchar, + colChar, + colBytea, + colDate, + colTime, + colTimestamp, + colTimestamptz, + colInterval, + colUuid, + colJson, + colJsonb, + colXml); + } + ; + + public AllTypesComposite withColTime(Optional colTime) { + return new AllTypesComposite( + colBoolean, + colSmallint, + colInteger, + colBigint, + colReal, + colDouble, + colNumeric, + colText, + colVarchar, + colChar, + colBytea, + colDate, + colTime, + colTimestamp, + colTimestamptz, + colInterval, + colUuid, + colJson, + colJsonb, + colXml); + } + ; + + public AllTypesComposite withColTimestamp(Optional colTimestamp) { + return new AllTypesComposite( + colBoolean, + colSmallint, + colInteger, + colBigint, + colReal, + colDouble, + colNumeric, + colText, + colVarchar, + colChar, + colBytea, + colDate, + colTime, + colTimestamp, + colTimestamptz, + colInterval, + colUuid, + colJson, + colJsonb, + colXml); + } + ; + + public AllTypesComposite withColTimestamptz(Optional colTimestamptz) { + return new AllTypesComposite( + colBoolean, + colSmallint, + colInteger, + colBigint, + colReal, + colDouble, + colNumeric, + colText, + colVarchar, + colChar, + colBytea, + colDate, + colTime, + colTimestamp, + colTimestamptz, + colInterval, + colUuid, + colJson, + colJsonb, + colXml); + } + ; + + public AllTypesComposite withColInterval(Optional colInterval) { + return new AllTypesComposite( + colBoolean, + colSmallint, + colInteger, + colBigint, + colReal, + colDouble, + colNumeric, + colText, + colVarchar, + colChar, + colBytea, + colDate, + colTime, + colTimestamp, + colTimestamptz, + colInterval, + colUuid, + colJson, + colJsonb, + colXml); + } + ; + + public AllTypesComposite withColUuid(Optional colUuid) { + return new AllTypesComposite( + colBoolean, + colSmallint, + colInteger, + colBigint, + colReal, + colDouble, + colNumeric, + colText, + colVarchar, + colChar, + colBytea, + colDate, + colTime, + colTimestamp, + colTimestamptz, + colInterval, + colUuid, + colJson, + colJsonb, + colXml); + } + ; + + public AllTypesComposite withColJson(Optional colJson) { + return new AllTypesComposite( + colBoolean, + colSmallint, + colInteger, + colBigint, + colReal, + colDouble, + colNumeric, + colText, + colVarchar, + colChar, + colBytea, + colDate, + colTime, + colTimestamp, + colTimestamptz, + colInterval, + colUuid, + colJson, + colJsonb, + colXml); + } + ; + + public AllTypesComposite withColJsonb(Optional colJsonb) { + return new AllTypesComposite( + colBoolean, + colSmallint, + colInteger, + colBigint, + colReal, + colDouble, + colNumeric, + colText, + colVarchar, + colChar, + colBytea, + colDate, + colTime, + colTimestamp, + colTimestamptz, + colInterval, + colUuid, + colJson, + colJsonb, + colXml); + } + ; + + public AllTypesComposite withColXml(Optional colXml) { + return new AllTypesComposite( + colBoolean, + colSmallint, + colInteger, + colBigint, + colReal, + colDouble, + colNumeric, + colText, + colVarchar, + colChar, + colBytea, + colDate, + colTime, + colTimestamp, + colTimestamptz, + colInterval, + colUuid, + colJson, + colJsonb, + colXml); + } + ; + + public static PgStruct pgStruct = + PgStruct.builder("public.all_types_composite") + .optField("colBoolean", PgTypes.bool, v -> v.colBoolean()) + .optField("colSmallint", PgTypes.int2, v -> v.colSmallint()) + .optField("colInteger", PgTypes.int4, v -> v.colInteger()) + .optField("colBigint", PgTypes.int8, v -> v.colBigint()) + .optField("colReal", PgTypes.float4, v -> v.colReal()) + .optField("colDouble", PgTypes.float8, v -> v.colDouble()) + .optField("colNumeric", PgTypes.numeric, v -> v.colNumeric()) + .optField("colText", PgTypes.text, v -> v.colText()) + .optField("colVarchar", PgTypes.text, v -> v.colVarchar()) + .optField("colChar", PgTypes.bpchar, v -> v.colChar()) + .optField("colBytea", PgTypes.bytea, v -> v.colBytea()) + .optField("colDate", PgTypes.date, v -> v.colDate()) + .optField("colTime", PgTypes.time, v -> v.colTime()) + .optField("colTimestamp", PgTypes.timestamp, v -> v.colTimestamp()) + .optField("colTimestamptz", PgTypes.timestamptz, v -> v.colTimestamptz()) + .optField("colInterval", PgTypes.interval, v -> v.colInterval()) + .optField("colUuid", PgTypes.uuid, v -> v.colUuid()) + .optField("colJson", PgTypes.json, v -> v.colJson()) + .optField("colJsonb", PgTypes.jsonb, v -> v.colJsonb()) + .optField("colXml", PgTypes.xml, v -> v.colXml()) + .build( + arr -> + new AllTypesComposite( + Optional.ofNullable((Boolean) arr[0]), + Optional.ofNullable((Short) arr[1]), + Optional.ofNullable((Integer) arr[2]), + Optional.ofNullable((Long) arr[3]), + Optional.ofNullable((Float) arr[4]), + Optional.ofNullable((Double) arr[5]), + Optional.ofNullable((BigDecimal) arr[6]), + Optional.ofNullable((String) arr[7]), + Optional.ofNullable((String) arr[8]), + Optional.ofNullable((/* bpchar */ String) arr[9]), + Optional.ofNullable((byte[]) arr[10]), + Optional.ofNullable((LocalDate) arr[11]), + Optional.ofNullable((LocalTime) arr[12]), + Optional.ofNullable((LocalDateTime) arr[13]), + Optional.ofNullable((Instant) arr[14]), + Optional.ofNullable((PGInterval) arr[15]), + Optional.ofNullable((UUID) arr[16]), + Optional.ofNullable((Json) arr[17]), + Optional.ofNullable((Jsonb) arr[18]), + Optional.ofNullable((Xml) arr[19]))); + + public static PgType pgType = pgStruct.asType(); + + public static PgType pgTypeArray = + pgType.array( + PgRead.readCompositeArray(pgType.pgCompositeText(), AllTypesComposite[]::new), + AllTypesComposite[]::new); +} diff --git a/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/Complex.java b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/Complex.java new file mode 100644 index 0000000000..818819bc36 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/Complex.java @@ -0,0 +1,40 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.postgres.public_; + +import dev.typr.foundations.PgRead; +import dev.typr.foundations.PgStruct; +import dev.typr.foundations.PgType; +import dev.typr.foundations.PgTypes; +import java.util.Optional; + +/** PostgreSQL composite type: public.complex */ +public record Complex(Optional r, Optional i) { + public Complex withR(Optional r) { + return new Complex(r, i); + } + ; + + public Complex withI(Optional i) { + return new Complex(r, i); + } + ; + + public static PgStruct pgStruct = + PgStruct.builder("public.complex") + .optField("r", PgTypes.float8, v -> v.r()) + .optField("i", PgTypes.float8, v -> v.i()) + .build( + arr -> + new Complex( + Optional.ofNullable((Double) arr[0]), Optional.ofNullable((Double) arr[1]))); + + public static PgType pgType = pgStruct.asType(); + + public static PgType pgTypeArray = + pgType.array( + PgRead.readCompositeArray(pgType.pgCompositeText(), Complex[]::new), Complex[]::new); +} diff --git a/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/ContactInfo.java b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/ContactInfo.java new file mode 100644 index 0000000000..629d92c9fb --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/ContactInfo.java @@ -0,0 +1,50 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.postgres.public_; + +import dev.typr.foundations.PgRead; +import dev.typr.foundations.PgStruct; +import dev.typr.foundations.PgType; +import dev.typr.foundations.PgTypes; +import java.util.Optional; + +/** PostgreSQL composite type: public.contact_info */ +public record ContactInfo( + Optional email, Optional phone, Optional

address) { + public ContactInfo withEmail(Optional email) { + return new ContactInfo(email, phone, address); + } + ; + + public ContactInfo withPhone(Optional phone) { + return new ContactInfo(email, phone, address); + } + ; + + public ContactInfo withAddress(Optional
address) { + return new ContactInfo(email, phone, address); + } + ; + + public static PgStruct pgStruct = + PgStruct.builder("public.contact_info") + .optField("email", PgTypes.text, v -> v.email()) + .optField("phone", PgTypes.text, v -> v.phone()) + .optField("address", Address.pgType, v -> v.address()) + .build( + arr -> + new ContactInfo( + Optional.ofNullable((String) arr[0]), + Optional.ofNullable((String) arr[1]), + Optional.ofNullable((Address) arr[2]))); + + public static PgType pgType = pgStruct.asType(); + + public static PgType pgTypeArray = + pgType.array( + PgRead.readCompositeArray(pgType.pgCompositeText(), ContactInfo[]::new), + ContactInfo[]::new); +} diff --git a/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/EmployeeRecord.java b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/EmployeeRecord.java new file mode 100644 index 0000000000..bec66143cf --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/EmployeeRecord.java @@ -0,0 +1,70 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.postgres.public_; + +import dev.typr.foundations.PgRead; +import dev.typr.foundations.PgStruct; +import dev.typr.foundations.PgType; +import dev.typr.foundations.PgTypes; +import java.math.BigDecimal; +import java.time.LocalDate; +import java.util.Optional; + +/** PostgreSQL composite type: public.employee_record */ +public record EmployeeRecord( + Optional name, + Optional contact, + Optional employeeId, + Optional salary, + Optional hireDate) { + public EmployeeRecord withName(Optional name) { + return new EmployeeRecord(name, contact, employeeId, salary, hireDate); + } + ; + + public EmployeeRecord withContact(Optional contact) { + return new EmployeeRecord(name, contact, employeeId, salary, hireDate); + } + ; + + public EmployeeRecord withEmployeeId(Optional employeeId) { + return new EmployeeRecord(name, contact, employeeId, salary, hireDate); + } + ; + + public EmployeeRecord withSalary(Optional salary) { + return new EmployeeRecord(name, contact, employeeId, salary, hireDate); + } + ; + + public EmployeeRecord withHireDate(Optional hireDate) { + return new EmployeeRecord(name, contact, employeeId, salary, hireDate); + } + ; + + public static PgStruct pgStruct = + PgStruct.builder("public.employee_record") + .optField("name", PersonName.pgType, v -> v.name()) + .optField("contact", ContactInfo.pgType, v -> v.contact()) + .optField("employeeId", PgTypes.int4, v -> v.employeeId()) + .optField("salary", PgTypes.numeric, v -> v.salary()) + .optField("hireDate", PgTypes.date, v -> v.hireDate()) + .build( + arr -> + new EmployeeRecord( + Optional.ofNullable((PersonName) arr[0]), + Optional.ofNullable((ContactInfo) arr[1]), + Optional.ofNullable((Integer) arr[2]), + Optional.ofNullable((BigDecimal) arr[3]), + Optional.ofNullable((LocalDate) arr[4]))); + + public static PgType pgType = pgStruct.asType(); + + public static PgType pgTypeArray = + pgType.array( + PgRead.readCompositeArray(pgType.pgCompositeText(), EmployeeRecord[]::new), + EmployeeRecord[]::new); +} diff --git a/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/Flag.java b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/Flag.java new file mode 100644 index 0000000000..713c7a1805 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/Flag.java @@ -0,0 +1,32 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.postgres.public_; + +import com.fasterxml.jackson.annotation.JsonValue; +import dev.typr.foundations.PgType; +import dev.typr.foundations.PgTypes; +import dev.typr.foundations.dsl.Bijection; +import dev.typr.foundations.internal.arrayMap; + +/** Domain `public.Flag` No constraint */ +public record Flag(@JsonValue Boolean value) { + public Flag withValue(Boolean value) { + return new Flag(value); + } + ; + + public static Bijection bijection = Bijection.of(Flag::value, Flag::new); + + public static PgType pgType = + PgTypes.bool.bimap(Flag::new, Flag::value).renamed("\"public\".\"Flag\""); + + public static PgType pgTypeArray = + PgTypes.boolArray + .bimap( + xs -> arrayMap.map(xs, Flag::new, Flag.class), + xs -> arrayMap.map(xs, Flag::value, Boolean.class)) + .renamed("\"public\".\"Flag\"[]"); +} diff --git a/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/InventoryItem.java b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/InventoryItem.java new file mode 100644 index 0000000000..386c55c97c --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/InventoryItem.java @@ -0,0 +1,61 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.postgres.public_; + +import dev.typr.foundations.PgRead; +import dev.typr.foundations.PgStruct; +import dev.typr.foundations.PgType; +import dev.typr.foundations.PgTypes; +import java.math.BigDecimal; +import java.util.Optional; + +/** PostgreSQL composite type: public.inventory_item */ +public record InventoryItem( + Optional name, + Optional tags, + Optional prices, + Optional available) { + public InventoryItem withName(Optional name) { + return new InventoryItem(name, tags, prices, available); + } + ; + + public InventoryItem withTags(Optional tags) { + return new InventoryItem(name, tags, prices, available); + } + ; + + public InventoryItem withPrices(Optional prices) { + return new InventoryItem(name, tags, prices, available); + } + ; + + public InventoryItem withAvailable(Optional available) { + return new InventoryItem(name, tags, prices, available); + } + ; + + public static PgStruct pgStruct = + PgStruct.builder("public.inventory_item") + .optField("name", PgTypes.text, v -> v.name()) + .optField("tags", PgTypes.textArray, v -> v.tags()) + .optField("prices", PgTypes.numericArray, v -> v.prices()) + .optField("available", PgTypes.bool, v -> v.available()) + .build( + arr -> + new InventoryItem( + Optional.ofNullable((String) arr[0]), + Optional.ofNullable((String[]) arr[1]), + Optional.ofNullable((BigDecimal[]) arr[2]), + Optional.ofNullable((Boolean) arr[3]))); + + public static PgType pgType = pgStruct.asType(); + + public static PgType pgTypeArray = + pgType.array( + PgRead.readCompositeArray(pgType.pgCompositeText(), InventoryItem[]::new), + InventoryItem[]::new); +} diff --git a/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/MetadataRecord.java b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/MetadataRecord.java new file mode 100644 index 0000000000..99ab1b62d5 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/MetadataRecord.java @@ -0,0 +1,52 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.postgres.public_; + +import dev.typr.foundations.PgRead; +import dev.typr.foundations.PgStruct; +import dev.typr.foundations.PgType; +import dev.typr.foundations.PgTypes; +import dev.typr.foundations.data.Jsonb; +import java.time.Instant; +import java.util.Optional; + +/** PostgreSQL composite type: public.metadata_record */ +public record MetadataRecord( + Optional key, Optional value, Optional createdAt) { + public MetadataRecord withKey(Optional key) { + return new MetadataRecord(key, value, createdAt); + } + ; + + public MetadataRecord withValue(Optional value) { + return new MetadataRecord(key, value, createdAt); + } + ; + + public MetadataRecord withCreatedAt(Optional createdAt) { + return new MetadataRecord(key, value, createdAt); + } + ; + + public static PgStruct pgStruct = + PgStruct.builder("public.metadata_record") + .optField("key", PgTypes.text, v -> v.key()) + .optField("value", PgTypes.jsonb, v -> v.value()) + .optField("createdAt", PgTypes.timestamptz, v -> v.createdAt()) + .build( + arr -> + new MetadataRecord( + Optional.ofNullable((String) arr[0]), + Optional.ofNullable((Jsonb) arr[1]), + Optional.ofNullable((Instant) arr[2]))); + + public static PgType pgType = pgStruct.asType(); + + public static PgType pgTypeArray = + pgType.array( + PgRead.readCompositeArray(pgType.pgCompositeText(), MetadataRecord[]::new), + MetadataRecord[]::new); +} diff --git a/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/Mydomain.java b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/Mydomain.java new file mode 100644 index 0000000000..220fe0743d --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/Mydomain.java @@ -0,0 +1,33 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.postgres.public_; + +import com.fasterxml.jackson.annotation.JsonValue; +import dev.typr.foundations.PgType; +import dev.typr.foundations.PgTypes; +import dev.typr.foundations.dsl.Bijection; +import dev.typr.foundations.internal.arrayMap; + +/** Domain `public.mydomain` No constraint */ +public record Mydomain(@JsonValue String value) { + public Mydomain withValue(String value) { + return new Mydomain(value); + } + ; + + public static Bijection bijection = + Bijection.of(Mydomain::value, Mydomain::new); + + public static PgType pgType = + PgTypes.text.bimap(Mydomain::new, Mydomain::value).renamed("\"public\".\"mydomain\""); + + public static PgType pgTypeArray = + PgTypes.textArray + .bimap( + xs -> arrayMap.map(xs, Mydomain::new, Mydomain.class), + xs -> arrayMap.map(xs, Mydomain::value, String.class)) + .renamed("\"public\".\"mydomain\"[]"); +} diff --git a/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/Name.java b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/Name.java new file mode 100644 index 0000000000..cfc45f8a72 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/Name.java @@ -0,0 +1,32 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.postgres.public_; + +import com.fasterxml.jackson.annotation.JsonValue; +import dev.typr.foundations.PgType; +import dev.typr.foundations.PgTypes; +import dev.typr.foundations.dsl.Bijection; +import dev.typr.foundations.internal.arrayMap; + +/** Domain `public.Name` No constraint */ +public record Name(@JsonValue String value) { + public Name withValue(String value) { + return new Name(value); + } + ; + + public static Bijection bijection = Bijection.of(Name::value, Name::new); + + public static PgType pgType = + PgTypes.text.bimap(Name::new, Name::value).renamed("\"public\".\"Name\""); + + public static PgType pgTypeArray = + PgTypes.textArray + .bimap( + xs -> arrayMap.map(xs, Name::new, Name.class), + xs -> arrayMap.map(xs, Name::value, String.class)) + .renamed("\"public\".\"Name\"[]"); +} diff --git a/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/NameStyle.java b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/NameStyle.java new file mode 100644 index 0000000000..21146aaae0 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/NameStyle.java @@ -0,0 +1,33 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.postgres.public_; + +import com.fasterxml.jackson.annotation.JsonValue; +import dev.typr.foundations.PgType; +import dev.typr.foundations.PgTypes; +import dev.typr.foundations.dsl.Bijection; +import dev.typr.foundations.internal.arrayMap; + +/** Domain `public.NameStyle` No constraint */ +public record NameStyle(@JsonValue Boolean value) { + public NameStyle withValue(Boolean value) { + return new NameStyle(value); + } + ; + + public static Bijection bijection = + Bijection.of(NameStyle::value, NameStyle::new); + + public static PgType pgType = + PgTypes.bool.bimap(NameStyle::new, NameStyle::value).renamed("\"public\".\"NameStyle\""); + + public static PgType pgTypeArray = + PgTypes.boolArray + .bimap( + xs -> arrayMap.map(xs, NameStyle::new, NameStyle.class), + xs -> arrayMap.map(xs, NameStyle::value, Boolean.class)) + .renamed("\"public\".\"NameStyle\"[]"); +} diff --git a/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/NullableTest.java b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/NullableTest.java new file mode 100644 index 0000000000..f54379d64b --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/NullableTest.java @@ -0,0 +1,50 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.postgres.public_; + +import dev.typr.foundations.PgRead; +import dev.typr.foundations.PgStruct; +import dev.typr.foundations.PgType; +import dev.typr.foundations.PgTypes; +import java.util.Optional; + +/** PostgreSQL composite type: public.nullable_test */ +public record NullableTest( + Optional alwaysPresent, Optional oftenNull, Optional emptyVsNull) { + public NullableTest withAlwaysPresent(Optional alwaysPresent) { + return new NullableTest(alwaysPresent, oftenNull, emptyVsNull); + } + ; + + public NullableTest withOftenNull(Optional oftenNull) { + return new NullableTest(alwaysPresent, oftenNull, emptyVsNull); + } + ; + + public NullableTest withEmptyVsNull(Optional emptyVsNull) { + return new NullableTest(alwaysPresent, oftenNull, emptyVsNull); + } + ; + + public static PgStruct pgStruct = + PgStruct.builder("public.nullable_test") + .optField("alwaysPresent", PgTypes.text, v -> v.alwaysPresent()) + .optField("oftenNull", PgTypes.text, v -> v.oftenNull()) + .optField("emptyVsNull", PgTypes.text, v -> v.emptyVsNull()) + .build( + arr -> + new NullableTest( + Optional.ofNullable((String) arr[0]), + Optional.ofNullable((String) arr[1]), + Optional.ofNullable((String) arr[2]))); + + public static PgType pgType = pgStruct.asType(); + + public static PgType pgTypeArray = + pgType.array( + PgRead.readCompositeArray(pgType.pgCompositeText(), NullableTest[]::new), + NullableTest[]::new); +} diff --git a/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/OrderNumber.java b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/OrderNumber.java new file mode 100644 index 0000000000..1a2eca2685 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/OrderNumber.java @@ -0,0 +1,35 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.postgres.public_; + +import com.fasterxml.jackson.annotation.JsonValue; +import dev.typr.foundations.PgType; +import dev.typr.foundations.PgTypes; +import dev.typr.foundations.dsl.Bijection; +import dev.typr.foundations.internal.arrayMap; + +/** Domain `public.OrderNumber` No constraint */ +public record OrderNumber(@JsonValue String value) { + public OrderNumber withValue(String value) { + return new OrderNumber(value); + } + ; + + public static Bijection bijection = + Bijection.of(OrderNumber::value, OrderNumber::new); + + public static PgType pgType = + PgTypes.text + .bimap(OrderNumber::new, OrderNumber::value) + .renamed("\"public\".\"OrderNumber\""); + + public static PgType pgTypeArray = + PgTypes.textArray + .bimap( + xs -> arrayMap.map(xs, OrderNumber::new, OrderNumber.class), + xs -> arrayMap.map(xs, OrderNumber::value, String.class)) + .renamed("\"public\".\"OrderNumber\"[]"); +} diff --git a/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/PersonName.java b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/PersonName.java new file mode 100644 index 0000000000..635a400908 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/PersonName.java @@ -0,0 +1,60 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.postgres.public_; + +import dev.typr.foundations.PgRead; +import dev.typr.foundations.PgStruct; +import dev.typr.foundations.PgType; +import dev.typr.foundations.PgTypes; +import java.util.Optional; + +/** PostgreSQL composite type: public.person_name */ +public record PersonName( + Optional firstName, + Optional middleName, + Optional lastName, + Optional suffix) { + public PersonName withFirstName(Optional firstName) { + return new PersonName(firstName, middleName, lastName, suffix); + } + ; + + public PersonName withMiddleName(Optional middleName) { + return new PersonName(firstName, middleName, lastName, suffix); + } + ; + + public PersonName withLastName(Optional lastName) { + return new PersonName(firstName, middleName, lastName, suffix); + } + ; + + public PersonName withSuffix(Optional suffix) { + return new PersonName(firstName, middleName, lastName, suffix); + } + ; + + public static PgStruct pgStruct = + PgStruct.builder("public.person_name") + .optField("firstName", PgTypes.text, v -> v.firstName()) + .optField("middleName", PgTypes.text, v -> v.middleName()) + .optField("lastName", PgTypes.text, v -> v.lastName()) + .optField("suffix", PgTypes.text, v -> v.suffix()) + .build( + arr -> + new PersonName( + Optional.ofNullable((String) arr[0]), + Optional.ofNullable((String) arr[1]), + Optional.ofNullable((String) arr[2]), + Optional.ofNullable((String) arr[3]))); + + public static PgType pgType = pgStruct.asType(); + + public static PgType pgTypeArray = + pgType.array( + PgRead.readCompositeArray(pgType.pgCompositeText(), PersonName[]::new), + PersonName[]::new); +} diff --git a/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/Phone.java b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/Phone.java new file mode 100644 index 0000000000..f9c047f3cd --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/Phone.java @@ -0,0 +1,32 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.postgres.public_; + +import com.fasterxml.jackson.annotation.JsonValue; +import dev.typr.foundations.PgType; +import dev.typr.foundations.PgTypes; +import dev.typr.foundations.dsl.Bijection; +import dev.typr.foundations.internal.arrayMap; + +/** Domain `public.Phone` No constraint */ +public record Phone(@JsonValue String value) { + public Phone withValue(String value) { + return new Phone(value); + } + ; + + public static Bijection bijection = Bijection.of(Phone::value, Phone::new); + + public static PgType pgType = + PgTypes.text.bimap(Phone::new, Phone::value).renamed("\"public\".\"Phone\""); + + public static PgType pgTypeArray = + PgTypes.textArray + .bimap( + xs -> arrayMap.map(xs, Phone::new, Phone.class), + xs -> arrayMap.map(xs, Phone::value, String.class)) + .renamed("\"public\".\"Phone\"[]"); +} diff --git a/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/Point2d.java b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/Point2d.java new file mode 100644 index 0000000000..e96e5cc4c4 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/Point2d.java @@ -0,0 +1,40 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.postgres.public_; + +import dev.typr.foundations.PgRead; +import dev.typr.foundations.PgStruct; +import dev.typr.foundations.PgType; +import dev.typr.foundations.PgTypes; +import java.util.Optional; + +/** PostgreSQL composite type: public.point_2d */ +public record Point2d(Optional x, Optional y) { + public Point2d withX(Optional x) { + return new Point2d(x, y); + } + ; + + public Point2d withY(Optional y) { + return new Point2d(x, y); + } + ; + + public static PgStruct pgStruct = + PgStruct.builder("public.point_2d") + .optField("x", PgTypes.float8, v -> v.x()) + .optField("y", PgTypes.float8, v -> v.y()) + .build( + arr -> + new Point2d( + Optional.ofNullable((Double) arr[0]), Optional.ofNullable((Double) arr[1]))); + + public static PgType pgType = pgStruct.asType(); + + public static PgType pgTypeArray = + pgType.array( + PgRead.readCompositeArray(pgType.pgCompositeText(), Point2d[]::new), Point2d[]::new); +} diff --git a/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/PolygonCustom.java b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/PolygonCustom.java new file mode 100644 index 0000000000..89ebfd1636 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/PolygonCustom.java @@ -0,0 +1,42 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.postgres.public_; + +import dev.typr.foundations.PgRead; +import dev.typr.foundations.PgStruct; +import dev.typr.foundations.PgType; +import dev.typr.foundations.PgTypes; +import java.util.Optional; + +/** PostgreSQL composite type: public.polygon_custom */ +public record PolygonCustom(Optional name, Optional vertices) { + public PolygonCustom withName(Optional name) { + return new PolygonCustom(name, vertices); + } + ; + + public PolygonCustom withVertices(Optional vertices) { + return new PolygonCustom(name, vertices); + } + ; + + public static PgStruct pgStruct = + PgStruct.builder("public.polygon_custom") + .optField("name", PgTypes.text, v -> v.name()) + .optField("vertices", Point2d.pgTypeArray, v -> v.vertices()) + .build( + arr -> + new PolygonCustom( + Optional.ofNullable((String) arr[0]), + Optional.ofNullable((Point2d[]) arr[1]))); + + public static PgType pgType = pgStruct.asType(); + + public static PgType pgTypeArray = + pgType.array( + PgRead.readCompositeArray(pgType.pgCompositeText(), PolygonCustom[]::new), + PolygonCustom[]::new); +} diff --git a/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/ShortText.java b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/ShortText.java new file mode 100644 index 0000000000..b4cd23ed6b --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/ShortText.java @@ -0,0 +1,33 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.postgres.public_; + +import com.fasterxml.jackson.annotation.JsonValue; +import dev.typr.foundations.PgType; +import dev.typr.foundations.PgTypes; +import dev.typr.foundations.dsl.Bijection; +import dev.typr.foundations.internal.arrayMap; + +/** Domain `public.short_text` Constraint: CHECK ((length(VALUE) <= 55)) */ +public record ShortText(@JsonValue String value) { + public ShortText withValue(String value) { + return new ShortText(value); + } + ; + + public static Bijection bijection = + Bijection.of(ShortText::value, ShortText::new); + + public static PgType pgType = + PgTypes.text.bimap(ShortText::new, ShortText::value).renamed("\"public\".\"short_text\""); + + public static PgType pgTypeArray = + PgTypes.textArray + .bimap( + xs -> arrayMap.map(xs, ShortText::new, ShortText.class), + xs -> arrayMap.map(xs, ShortText::value, String.class)) + .renamed("\"public\".\"short_text\"[]"); +} diff --git a/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/TablefuncCrosstab2.java b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/TablefuncCrosstab2.java new file mode 100644 index 0000000000..d2ea221cf0 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/TablefuncCrosstab2.java @@ -0,0 +1,50 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.postgres.public_; + +import dev.typr.foundations.PgRead; +import dev.typr.foundations.PgStruct; +import dev.typr.foundations.PgType; +import dev.typr.foundations.PgTypes; +import java.util.Optional; + +/** PostgreSQL composite type: public.tablefunc_crosstab_2 */ +public record TablefuncCrosstab2( + Optional rowName, Optional category1, Optional category2) { + public TablefuncCrosstab2 withRowName(Optional rowName) { + return new TablefuncCrosstab2(rowName, category1, category2); + } + ; + + public TablefuncCrosstab2 withCategory1(Optional category1) { + return new TablefuncCrosstab2(rowName, category1, category2); + } + ; + + public TablefuncCrosstab2 withCategory2(Optional category2) { + return new TablefuncCrosstab2(rowName, category1, category2); + } + ; + + public static PgStruct pgStruct = + PgStruct.builder("public.tablefunc_crosstab_2") + .optField("rowName", PgTypes.text, v -> v.rowName()) + .optField("category1", PgTypes.text, v -> v.category1()) + .optField("category2", PgTypes.text, v -> v.category2()) + .build( + arr -> + new TablefuncCrosstab2( + Optional.ofNullable((String) arr[0]), + Optional.ofNullable((String) arr[1]), + Optional.ofNullable((String) arr[2]))); + + public static PgType pgType = pgStruct.asType(); + + public static PgType pgTypeArray = + pgType.array( + PgRead.readCompositeArray(pgType.pgCompositeText(), TablefuncCrosstab2[]::new), + TablefuncCrosstab2[]::new); +} diff --git a/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/TablefuncCrosstab3.java b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/TablefuncCrosstab3.java new file mode 100644 index 0000000000..223354bf27 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/TablefuncCrosstab3.java @@ -0,0 +1,60 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.postgres.public_; + +import dev.typr.foundations.PgRead; +import dev.typr.foundations.PgStruct; +import dev.typr.foundations.PgType; +import dev.typr.foundations.PgTypes; +import java.util.Optional; + +/** PostgreSQL composite type: public.tablefunc_crosstab_3 */ +public record TablefuncCrosstab3( + Optional rowName, + Optional category1, + Optional category2, + Optional category3) { + public TablefuncCrosstab3 withRowName(Optional rowName) { + return new TablefuncCrosstab3(rowName, category1, category2, category3); + } + ; + + public TablefuncCrosstab3 withCategory1(Optional category1) { + return new TablefuncCrosstab3(rowName, category1, category2, category3); + } + ; + + public TablefuncCrosstab3 withCategory2(Optional category2) { + return new TablefuncCrosstab3(rowName, category1, category2, category3); + } + ; + + public TablefuncCrosstab3 withCategory3(Optional category3) { + return new TablefuncCrosstab3(rowName, category1, category2, category3); + } + ; + + public static PgStruct pgStruct = + PgStruct.builder("public.tablefunc_crosstab_3") + .optField("rowName", PgTypes.text, v -> v.rowName()) + .optField("category1", PgTypes.text, v -> v.category1()) + .optField("category2", PgTypes.text, v -> v.category2()) + .optField("category3", PgTypes.text, v -> v.category3()) + .build( + arr -> + new TablefuncCrosstab3( + Optional.ofNullable((String) arr[0]), + Optional.ofNullable((String) arr[1]), + Optional.ofNullable((String) arr[2]), + Optional.ofNullable((String) arr[3]))); + + public static PgType pgType = pgStruct.asType(); + + public static PgType pgTypeArray = + pgType.array( + PgRead.readCompositeArray(pgType.pgCompositeText(), TablefuncCrosstab3[]::new), + TablefuncCrosstab3[]::new); +} diff --git a/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/TablefuncCrosstab4.java b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/TablefuncCrosstab4.java new file mode 100644 index 0000000000..b9ab7b0c06 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/TablefuncCrosstab4.java @@ -0,0 +1,68 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.postgres.public_; + +import dev.typr.foundations.PgRead; +import dev.typr.foundations.PgStruct; +import dev.typr.foundations.PgType; +import dev.typr.foundations.PgTypes; +import java.util.Optional; + +/** PostgreSQL composite type: public.tablefunc_crosstab_4 */ +public record TablefuncCrosstab4( + Optional rowName, + Optional category1, + Optional category2, + Optional category3, + Optional category4) { + public TablefuncCrosstab4 withRowName(Optional rowName) { + return new TablefuncCrosstab4(rowName, category1, category2, category3, category4); + } + ; + + public TablefuncCrosstab4 withCategory1(Optional category1) { + return new TablefuncCrosstab4(rowName, category1, category2, category3, category4); + } + ; + + public TablefuncCrosstab4 withCategory2(Optional category2) { + return new TablefuncCrosstab4(rowName, category1, category2, category3, category4); + } + ; + + public TablefuncCrosstab4 withCategory3(Optional category3) { + return new TablefuncCrosstab4(rowName, category1, category2, category3, category4); + } + ; + + public TablefuncCrosstab4 withCategory4(Optional category4) { + return new TablefuncCrosstab4(rowName, category1, category2, category3, category4); + } + ; + + public static PgStruct pgStruct = + PgStruct.builder("public.tablefunc_crosstab_4") + .optField("rowName", PgTypes.text, v -> v.rowName()) + .optField("category1", PgTypes.text, v -> v.category1()) + .optField("category2", PgTypes.text, v -> v.category2()) + .optField("category3", PgTypes.text, v -> v.category3()) + .optField("category4", PgTypes.text, v -> v.category4()) + .build( + arr -> + new TablefuncCrosstab4( + Optional.ofNullable((String) arr[0]), + Optional.ofNullable((String) arr[1]), + Optional.ofNullable((String) arr[2]), + Optional.ofNullable((String) arr[3]), + Optional.ofNullable((String) arr[4]))); + + public static PgType pgType = pgStruct.asType(); + + public static PgType pgTypeArray = + pgType.array( + PgRead.readCompositeArray(pgType.pgCompositeText(), TablefuncCrosstab4[]::new), + TablefuncCrosstab4[]::new); +} diff --git a/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/TextWithSpecialChars.java b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/TextWithSpecialChars.java new file mode 100644 index 0000000000..153f4de372 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/TextWithSpecialChars.java @@ -0,0 +1,82 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.postgres.public_; + +import dev.typr.foundations.PgRead; +import dev.typr.foundations.PgStruct; +import dev.typr.foundations.PgType; +import dev.typr.foundations.PgTypes; +import java.util.Optional; + +/** PostgreSQL composite type: public.text_with_special_chars */ +public record TextWithSpecialChars( + Optional withComma, + Optional withQuotes, + Optional withParens, + Optional withBackslash, + Optional withNewline, + Optional withAll) { + public TextWithSpecialChars withWithComma(Optional withComma) { + return new TextWithSpecialChars( + withComma, withQuotes, withParens, withBackslash, withNewline, withAll); + } + ; + + public TextWithSpecialChars withWithQuotes(Optional withQuotes) { + return new TextWithSpecialChars( + withComma, withQuotes, withParens, withBackslash, withNewline, withAll); + } + ; + + public TextWithSpecialChars withWithParens(Optional withParens) { + return new TextWithSpecialChars( + withComma, withQuotes, withParens, withBackslash, withNewline, withAll); + } + ; + + public TextWithSpecialChars withWithBackslash(Optional withBackslash) { + return new TextWithSpecialChars( + withComma, withQuotes, withParens, withBackslash, withNewline, withAll); + } + ; + + public TextWithSpecialChars withWithNewline(Optional withNewline) { + return new TextWithSpecialChars( + withComma, withQuotes, withParens, withBackslash, withNewline, withAll); + } + ; + + public TextWithSpecialChars withWithAll(Optional withAll) { + return new TextWithSpecialChars( + withComma, withQuotes, withParens, withBackslash, withNewline, withAll); + } + ; + + public static PgStruct pgStruct = + PgStruct.builder("public.text_with_special_chars") + .optField("withComma", PgTypes.text, v -> v.withComma()) + .optField("withQuotes", PgTypes.text, v -> v.withQuotes()) + .optField("withParens", PgTypes.text, v -> v.withParens()) + .optField("withBackslash", PgTypes.text, v -> v.withBackslash()) + .optField("withNewline", PgTypes.text, v -> v.withNewline()) + .optField("withAll", PgTypes.text, v -> v.withAll()) + .build( + arr -> + new TextWithSpecialChars( + Optional.ofNullable((String) arr[0]), + Optional.ofNullable((String) arr[1]), + Optional.ofNullable((String) arr[2]), + Optional.ofNullable((String) arr[3]), + Optional.ofNullable((String) arr[4]), + Optional.ofNullable((String) arr[5]))); + + public static PgType pgType = pgStruct.asType(); + + public static PgType pgTypeArray = + pgType.array( + PgRead.readCompositeArray(pgType.pgCompositeText(), TextWithSpecialChars[]::new), + TextWithSpecialChars[]::new); +} diff --git a/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/TreeNode.java b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/TreeNode.java new file mode 100644 index 0000000000..163d283d93 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/postgres/combined/postgres/public_/TreeNode.java @@ -0,0 +1,48 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.postgres.public_; + +import dev.typr.foundations.PgRead; +import dev.typr.foundations.PgStruct; +import dev.typr.foundations.PgType; +import dev.typr.foundations.PgTypes; +import java.util.Optional; + +/** PostgreSQL composite type: public.tree_node */ +public record TreeNode(Optional id, Optional label, Optional parentId) { + public TreeNode withId(Optional id) { + return new TreeNode(id, label, parentId); + } + ; + + public TreeNode withLabel(Optional label) { + return new TreeNode(id, label, parentId); + } + ; + + public TreeNode withParentId(Optional parentId) { + return new TreeNode(id, label, parentId); + } + ; + + public static PgStruct pgStruct = + PgStruct.builder("public.tree_node") + .optField("id", PgTypes.int4, v -> v.id()) + .optField("label", PgTypes.text, v -> v.label()) + .optField("parentId", PgTypes.int4, v -> v.parentId()) + .build( + arr -> + new TreeNode( + Optional.ofNullable((Integer) arr[0]), + Optional.ofNullable((String) arr[1]), + Optional.ofNullable((Integer) arr[2]))); + + public static PgType pgType = pgStruct.asType(); + + public static PgType pgTypeArray = + pgType.array( + PgRead.readCompositeArray(pgType.pgCompositeText(), TreeNode[]::new), TreeNode[]::new); +} diff --git a/testers/combined/java/generated-and-checked-in/shared/combined/shared/FirstName.java b/testers/combined/java/generated-and-checked-in/shared/combined/shared/FirstName.java new file mode 100644 index 0000000000..c884394089 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/shared/combined/shared/FirstName.java @@ -0,0 +1,36 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.shared; + +import com.fasterxml.jackson.annotation.JsonValue; +import combined.postgres.public_.Name; +import dev.typr.foundations.MariaType; +import dev.typr.foundations.MariaTypes; +import dev.typr.foundations.PgType; + +/** + * Shared type `FirstName` aligned across sources: - postgres (PostgreSQL): person.person.firstname + * - mariadb (MariaDB): customers.first_name - api (OpenAPI): CustomerCreate.firstName (model), + * CustomerUpdate.firstName (model), Customer.firstName (model), Employee.firstName (model) + */ +public record FirstName(@JsonValue /* max 50 chars */ String value) { + public FirstName withValue(/* max 50 chars */ String value) { + return new FirstName(value); + } + ; + + @Override + public java.lang.String toString() { + return value.toString(); + } + ; + + public static MariaType mariaType = + MariaTypes.varchar.bimap(FirstName::new, FirstName::value); + + public static PgType pgType = + Name.pgType.bimap(x -> new FirstName(x.value()), w -> new Name(w.value())); +} diff --git a/testers/combined/java/generated-and-checked-in/shared/combined/shared/IsActive.java b/testers/combined/java/generated-and-checked-in/shared/combined/shared/IsActive.java new file mode 100644 index 0000000000..c030dbe936 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/shared/combined/shared/IsActive.java @@ -0,0 +1,40 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.shared; + +import com.fasterxml.jackson.annotation.JsonValue; +import combined.postgres.public_.Flag; +import dev.typr.foundations.MariaType; +import dev.typr.foundations.MariaTypes; +import dev.typr.foundations.PgType; + +/** + * Shared type `IsActive` aligned across sources: - postgres (PostgreSQL): + * purchasing.vendor.activeflag, humanresources.employee.currentflag - mariadb (MariaDB): + * warehouses.is_active, payment_methods.is_active, promotions.is_active, + * shipping_carriers.is_active, customer_status.is_active, brands.is_active - api (OpenAPI): + * CustomerUpdate.isActive (model), Customer.isActive (model), Employee.isActive (model), + * Product.isActive (model), /customers.isActive (param), /employees.isActive (param), + * /products.isActive (param) + */ +public record IsActive(@JsonValue Boolean value) { + public IsActive withValue(Boolean value) { + return new IsActive(value); + } + ; + + @Override + public java.lang.String toString() { + return value.toString(); + } + ; + + public static MariaType mariaType = + MariaTypes.bool.bimap(IsActive::new, IsActive::value); + + public static PgType pgType = + Flag.pgType.bimap(x -> new IsActive(x.value()), w -> new Flag(w.value())); +} diff --git a/testers/combined/java/generated-and-checked-in/shared/combined/shared/IsSalaried.java b/testers/combined/java/generated-and-checked-in/shared/combined/shared/IsSalaried.java new file mode 100644 index 0000000000..e56ffaad89 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/shared/combined/shared/IsSalaried.java @@ -0,0 +1,30 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.shared; + +import com.fasterxml.jackson.annotation.JsonValue; +import combined.postgres.public_.Flag; +import dev.typr.foundations.PgType; + +/** + * Shared type `IsSalaried` aligned across sources: - postgres (PostgreSQL): + * humanresources.employee.salariedflag - api (OpenAPI): Employee.isSalaried (model) + */ +public record IsSalaried(@JsonValue Boolean value) { + public IsSalaried withValue(Boolean value) { + return new IsSalaried(value); + } + ; + + @Override + public java.lang.String toString() { + return value.toString(); + } + ; + + public static PgType pgType = + Flag.pgType.bimap(x -> new IsSalaried(x.value()), w -> new Flag(w.value())); +} diff --git a/testers/combined/java/generated-and-checked-in/shared/combined/shared/LastName.java b/testers/combined/java/generated-and-checked-in/shared/combined/shared/LastName.java new file mode 100644 index 0000000000..75bc75c808 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/shared/combined/shared/LastName.java @@ -0,0 +1,36 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.shared; + +import com.fasterxml.jackson.annotation.JsonValue; +import dev.typr.foundations.MariaType; +import dev.typr.foundations.MariaTypes; +import dev.typr.foundations.PgType; +import dev.typr.foundations.PgTypes; + +/** + * Shared type `LastName` aligned across sources: - postgres (PostgreSQL): public.users.last_name, + * person.person.lastname - mariadb (MariaDB): customers.last_name - api (OpenAPI): + * CustomerCreate.lastName (model), CustomerUpdate.lastName (model), Customer.lastName (model), + * Employee.lastName (model) + */ +public record LastName(@JsonValue String value) { + public LastName withValue(String value) { + return new LastName(value); + } + ; + + @Override + public java.lang.String toString() { + return value.toString(); + } + ; + + public static MariaType mariaType = + MariaTypes.varchar.bimap(LastName::new, LastName::value); + + public static PgType pgType = PgTypes.text.bimap(LastName::new, LastName::value); +} diff --git a/testers/combined/java/generated-and-checked-in/shared/combined/shared/MiddleName.java b/testers/combined/java/generated-and-checked-in/shared/combined/shared/MiddleName.java new file mode 100644 index 0000000000..11618825b6 --- /dev/null +++ b/testers/combined/java/generated-and-checked-in/shared/combined/shared/MiddleName.java @@ -0,0 +1,30 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package combined.shared; + +import com.fasterxml.jackson.annotation.JsonValue; +import combined.postgres.public_.Name; +import dev.typr.foundations.PgType; + +/** + * Shared type `MiddleName` aligned across sources: - postgres (PostgreSQL): + * person.person.middlename - api (OpenAPI): Employee.middleName (model) + */ +public record MiddleName(@JsonValue /* max 50 chars */ String value) { + public MiddleName withValue(/* max 50 chars */ String value) { + return new MiddleName(value); + } + ; + + @Override + public java.lang.String toString() { + return value.toString(); + } + ; + + public static PgType pgType = + Name.pgType.bimap(x -> new MiddleName(x.value()), w -> new Name(w.value())); +} diff --git a/testers/combined/java/src/java/combined/server/CombinedApiServer.java b/testers/combined/java/src/java/combined/server/CombinedApiServer.java new file mode 100644 index 0000000000..fe68176cae --- /dev/null +++ b/testers/combined/java/src/java/combined/server/CombinedApiServer.java @@ -0,0 +1,185 @@ +/** + * Example server implementation demonstrating unified TypeDefinitions across: - PostgreSQL database + * (AdventureWorks - HR data) - MariaDB database (ordering system - customer data) - OpenAPI spec + * (REST API) + * + *

All three sources share the same semantic types: - FirstName, LastName, MiddleName for names - + * IsActive, IsSalaried for boolean flags + */ +package combined.server; + +import combined.api.api.CustomersApiServer; +import combined.api.api.EmployeesApiServer; +import combined.api.api.ProductsApiServer; +import combined.api.model.Customer; +import combined.api.model.CustomerCreate; +import combined.api.model.CustomerUpdate; +import combined.api.model.Employee; +import combined.api.model.Product; +import combined.mariadb.customers.CustomersRepo; +import combined.postgres.humanresources.employee.EmployeeRepo; +import combined.postgres.person.person.PersonRepo; +import io.smallrye.mutiny.Uni; +import java.util.List; +import java.util.Optional; + +/** + * Server implementation that bridges between: - Generated database repositories (PostgreSQL + + * MariaDB) - Generated OpenAPI server interfaces + * + *

The key insight is that TypeDefinitions creates semantic wrapper types that are UNIFIED across + * all sources. The shared types in combined.shared package have database-specific instances + * (pgType, mariaType) that handle the conversion from/to different underlying types. + */ +public class CombinedApiServer + implements EmployeesApiServer, CustomersApiServer, ProductsApiServer { + + private final EmployeeRepo employeeRepo; + private final PersonRepo personRepo; + private final CustomersRepo customersRepo; + + public CombinedApiServer( + EmployeeRepo employeeRepo, PersonRepo personRepo, CustomersRepo customersRepo) { + this.employeeRepo = employeeRepo; + this.personRepo = personRepo; + this.customersRepo = customersRepo; + } + + // ═══════════════════════════════════════════════════════════════════════════ + // EmployeesApiServer implementation - data from PostgreSQL + // ═══════════════════════════════════════════════════════════════════════════ + + @Override + public Uni> listEmployees(Optional isActive) { + return Uni.createFrom() + .item( + () -> { + // Query PostgreSQL using generated repositories + // The Employee and Person tables are joined to get full employee info + // TypeDefinitions matches: + // - person.firstname -> combined.shared.FirstName + // - person.lastname -> combined.shared.LastName + // - person.middlename -> combined.postgres.userdefined.MiddleName + // - employee.currentflag -> combined.shared.IsActive + // - employee.salariedflag -> combined.postgres.userdefined.IsSalaried + throw new UnsupportedOperationException( + "Implementation requires database connection"); + }); + } + + @Override + public Uni getEmployee(Integer employeeId) { + return Uni.createFrom() + .item( + () -> { + // Fetch from PostgreSQL and map to API model + // The wrapper types (FirstName, LastName, etc.) bridge the gap + // between database columns and API fields + throw new UnsupportedOperationException( + "Implementation requires database connection"); + }); + } + + // ═══════════════════════════════════════════════════════════════════════════ + // CustomersApiServer implementation - data from MariaDB + // ═══════════════════════════════════════════════════════════════════════════ + + @Override + public Uni> listCustomers(Optional isActive) { + return Uni.createFrom() + .item( + () -> { + // Query MariaDB using generated repositories + // TypeDefinitions matches: + // - customers.first_name -> combined.shared.FirstName + // - customers.last_name -> combined.shared.LastName + throw new UnsupportedOperationException( + "Implementation requires database connection"); + }); + } + + @Override + public Uni createCustomer(CustomerCreate customerCreate) { + return Uni.createFrom() + .item( + () -> { + // Insert into MariaDB + // The wrapper types ensure type safety: + // customerCreate.firstName() returns FirstName (not String) + combined.shared.FirstName firstName = customerCreate.firstName(); + combined.shared.LastName lastName = customerCreate.lastName(); + // ... create customer in database + throw new UnsupportedOperationException( + "Implementation requires database connection"); + }); + } + + @Override + public Uni getCustomer(Long customerId) { + return Uni.createFrom() + .item( + () -> { + throw new UnsupportedOperationException( + "Implementation requires database connection"); + }); + } + + @Override + public Uni updateCustomer(Long customerId, CustomerUpdate customerUpdate) { + return Uni.createFrom() + .item( + () -> { + // Update MariaDB customer + // Optional wrapper types for partial updates: + // customerUpdate.firstName() returns Optional + Optional firstName = customerUpdate.firstName(); + Optional lastName = customerUpdate.lastName(); + Optional isActive = customerUpdate.isActive(); + throw new UnsupportedOperationException( + "Implementation requires database connection"); + }); + } + + // ═══════════════════════════════════════════════════════════════════════════ + // ProductsApiServer implementation - data from both databases + // ═══════════════════════════════════════════════════════════════════════════ + + @Override + public Uni> listProducts(Optional source, Optional isActive) { + return Uni.createFrom() + .item( + () -> { + // Aggregate products from both databases + // This demonstrates how a single API can serve data from multiple sources + // while maintaining type safety through shared TypeDefinitions + throw new UnsupportedOperationException( + "Implementation requires database connection"); + }); + } + + /** + * Demonstrates how unified shared types work across all sources. + * + *

With shared types enabled (sharedPkg in GenerateConfig), TypeDefinitions that match across + * multiple sources are unified into a single type in combined.shared: + * + *

combined.shared.FirstName - Used by PostgreSQL (via Name domain) and MariaDB + * combined.shared.LastName - Used by PostgreSQL (via Name domain) and MariaDB + * combined.shared.IsActive - Used by PostgreSQL (via Flag domain) and MariaDB + * + *

Each shared type contains database-specific instances: - pgType: handles PostgreSQL domain + * types (Name -> String -> FirstName) - mariaType: handles MariaDB types (varchar -> FirstName) + * + *

The underlying value is always the canonical JVM type (String for names, Boolean for flags), + * making it trivial to use the same shared type across all sources. + */ + private void sharedTypesExample(combined.shared.FirstName sharedFirstName) { + // The shared type can be used with any database + // The underlying value is the canonical type (String for text, Boolean for flags) + String value = sharedFirstName.value(); + + // Database adapters use the type's pgType/mariaType to handle conversions: + // - PostgreSQL: Name.pgType.bimap() converts through the Name domain + // - MariaDB: MariaTypes.text.bimap() handles direct String mapping + } +} diff --git a/testers/combined/specs/combined-api.yaml b/testers/combined/specs/combined-api.yaml new file mode 100644 index 0000000000..1450a1dfd6 --- /dev/null +++ b/testers/combined/specs/combined-api.yaml @@ -0,0 +1,344 @@ +openapi: 3.0.3 +info: + title: Combined Multi-Database API + description: | + A demonstration API that combines data from multiple databases: + - PostgreSQL (AdventureWorks) - HR and production data + - MariaDB (Ordering System) - E-commerce customers and orders + + This spec is designed to demonstrate how TypeDefinitions can match + across both database columns AND OpenAPI fields, creating shared + wrapper types like FirstName, LastName, Email, and IsActive. + version: 1.0.0 + +servers: + - url: http://localhost:8080/api + description: Local development server + +tags: + - name: Employees + description: Employee management (from PostgreSQL AdventureWorks) + - name: Customers + description: Customer management (from MariaDB Ordering System) + - name: Products + description: Product catalog (from both databases) + +paths: + # PostgreSQL-backed endpoints (AdventureWorks HR) + /employees: + get: + tags: [Employees] + operationId: listEmployees + summary: List all employees + parameters: + - name: isActive + in: query + description: Filter by active status + schema: + type: boolean + responses: + '200': + description: List of employees + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Employee' + + /employees/{employeeId}: + get: + tags: [Employees] + operationId: getEmployee + summary: Get employee by ID + parameters: + - name: employeeId + in: path + required: true + schema: + type: integer + format: int32 + responses: + '200': + description: Employee details + content: + application/json: + schema: + $ref: '#/components/schemas/Employee' + '404': + description: Employee not found + + # MariaDB-backed endpoints (Ordering System) + /customers: + get: + tags: [Customers] + operationId: listCustomers + summary: List all customers + parameters: + - name: isActive + in: query + description: Filter by active status + schema: + type: boolean + responses: + '200': + description: List of customers + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Customer' + post: + tags: [Customers] + operationId: createCustomer + summary: Create a new customer + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CustomerCreate' + responses: + '201': + description: Customer created + content: + application/json: + schema: + $ref: '#/components/schemas/Customer' + + /customers/{customerId}: + get: + tags: [Customers] + operationId: getCustomer + summary: Get customer by ID + parameters: + - name: customerId + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: Customer details + content: + application/json: + schema: + $ref: '#/components/schemas/Customer' + '404': + description: Customer not found + put: + tags: [Customers] + operationId: updateCustomer + summary: Update customer + parameters: + - name: customerId + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CustomerUpdate' + responses: + '200': + description: Customer updated + content: + application/json: + schema: + $ref: '#/components/schemas/Customer' + + # Product endpoints (data from both databases) + /products: + get: + tags: [Products] + operationId: listProducts + summary: List all products from both databases + parameters: + - name: source + in: query + description: Filter by data source + schema: + type: string + enum: [postgres, mariadb, all] + default: all + - name: isActive + in: query + description: Filter by active status + schema: + type: boolean + responses: + '200': + description: List of products + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Product' + +components: + schemas: + # Employee from PostgreSQL (HumanResources.Employee + Person.Person) + Employee: + type: object + required: + - employeeId + - firstName + - lastName + - email + - isActive + - isSalaried + properties: + employeeId: + type: integer + format: int32 + description: Employee business entity ID + firstName: + type: string + description: Employee's first name (matches FirstName type) + maxLength: 50 + lastName: + type: string + description: Employee's last name (matches LastName type) + maxLength: 50 + middleName: + type: string + description: Employee's middle name (matches MiddleName type) + maxLength: 50 + email: + type: string + format: email + description: Employee's email address (matches Email type) + jobTitle: + type: string + description: Job title + isActive: + type: boolean + description: Whether employee is currently active (matches IsActive type) + isSalaried: + type: boolean + description: Whether employee is salaried vs hourly (matches SalariedFlag type) + hireDate: + type: string + format: date + description: Date employee was hired + + # Customer from MariaDB (customers table) + Customer: + type: object + required: + - customerId + - firstName + - lastName + - email + - isActive + properties: + customerId: + type: integer + format: int64 + description: Customer ID + firstName: + type: string + description: Customer's first name (matches FirstName type) + maxLength: 100 + lastName: + type: string + description: Customer's last name (matches LastName type) + maxLength: 100 + email: + type: string + format: email + description: Customer's email address (matches Email type) + tier: + type: string + enum: [bronze, silver, gold, platinum] + description: Customer loyalty tier + isActive: + type: boolean + description: Whether customer account is active (matches IsActive type) + createdAt: + type: string + format: date-time + description: When the customer was created + + CustomerCreate: + type: object + required: + - firstName + - lastName + - email + properties: + firstName: + type: string + description: Customer's first name (matches FirstName type) + maxLength: 100 + lastName: + type: string + description: Customer's last name (matches LastName type) + maxLength: 100 + email: + type: string + format: email + description: Customer's email address (matches Email type) + tier: + type: string + enum: [bronze, silver, gold, platinum] + default: bronze + + CustomerUpdate: + type: object + properties: + firstName: + type: string + description: Customer's first name (matches FirstName type) + maxLength: 100 + lastName: + type: string + description: Customer's last name (matches LastName type) + maxLength: 100 + email: + type: string + format: email + description: Customer's email address (matches Email type) + tier: + type: string + enum: [bronze, silver, gold, platinum] + isActive: + type: boolean + description: Whether customer account is active (matches IsActive type) + + # Product - unified from both databases + Product: + type: object + required: + - productId + - name + - source + - isActive + properties: + productId: + type: string + description: Product ID (prefixed with source, e.g., "pg-123" or "maria-456") + name: + type: string + description: Product name + description: + type: string + description: Product description + price: + type: number + format: double + description: Product price + source: + type: string + enum: [postgres, mariadb] + description: Which database this product comes from + isActive: + type: boolean + description: Whether product is active/visible (matches IsActive type) diff --git a/testers/db2/java/generated-and-checked-in/testdb/EmailAddress.java b/testers/db2/java/generated-and-checked-in/testdb/EmailAddress.java index d76e0ce8f4..ef6424003e 100644 --- a/testers/db2/java/generated-and-checked-in/testdb/EmailAddress.java +++ b/testers/db2/java/generated-and-checked-in/testdb/EmailAddress.java @@ -20,6 +20,6 @@ public EmailAddress withValue(String value) { public static Bijection bijection = Bijection.of(EmailAddress::value, EmailAddress::new); - public static Db2Type dbType = + public static Db2Type db2Type = Db2Types.varchar.bimap(EmailAddress::new, EmailAddress::value).renamed("\"EMAIL_ADDRESS\""); } diff --git a/testers/db2/java/generated-and-checked-in/testdb/MoneyAmount.java b/testers/db2/java/generated-and-checked-in/testdb/MoneyAmount.java index 27301bcfc0..616cc0638e 100644 --- a/testers/db2/java/generated-and-checked-in/testdb/MoneyAmount.java +++ b/testers/db2/java/generated-and-checked-in/testdb/MoneyAmount.java @@ -21,6 +21,6 @@ public MoneyAmount withValue(BigDecimal value) { public static Bijection bijection = Bijection.of(MoneyAmount::value, MoneyAmount::new); - public static Db2Type dbType = + public static Db2Type db2Type = Db2Types.decimal.bimap(MoneyAmount::new, MoneyAmount::value).renamed("\"MONEY_AMOUNT\""); } diff --git a/testers/db2/java/generated-and-checked-in/testdb/check_constraint_test/CheckConstraintTestFields.java b/testers/db2/java/generated-and-checked-in/testdb/check_constraint_test/CheckConstraintTestFields.java index e054e41f03..949e95a0c9 100644 --- a/testers/db2/java/generated-and-checked-in/testdb/check_constraint_test/CheckConstraintTestFields.java +++ b/testers/db2/java/generated-and-checked-in/testdb/check_constraint_test/CheckConstraintTestFields.java @@ -41,7 +41,7 @@ public IdField id() { Optional.empty(), Optional.empty(), (row, value) -> row.withId(value), - CheckConstraintTestId.dbType); + CheckConstraintTestId.db2Type); } public Field age() { diff --git a/testers/db2/java/generated-and-checked-in/testdb/check_constraint_test/CheckConstraintTestId.java b/testers/db2/java/generated-and-checked-in/testdb/check_constraint_test/CheckConstraintTestId.java index 4aa29a1fee..8657c99e7d 100644 --- a/testers/db2/java/generated-and-checked-in/testdb/check_constraint_test/CheckConstraintTestId.java +++ b/testers/db2/java/generated-and-checked-in/testdb/check_constraint_test/CheckConstraintTestId.java @@ -26,6 +26,6 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(CheckConstraintTestId::value, CheckConstraintTestId::new); - public static Db2Type dbType = + public static Db2Type db2Type = Db2Types.integer.bimap(CheckConstraintTestId::new, CheckConstraintTestId::value); } diff --git a/testers/db2/java/generated-and-checked-in/testdb/check_constraint_test/CheckConstraintTestRepoImpl.java b/testers/db2/java/generated-and-checked-in/testdb/check_constraint_test/CheckConstraintTestRepoImpl.java index fee5d9603d..5c05a4b3b9 100644 --- a/testers/db2/java/generated-and-checked-in/testdb/check_constraint_test/CheckConstraintTestRepoImpl.java +++ b/testers/db2/java/generated-and-checked-in/testdb/check_constraint_test/CheckConstraintTestRepoImpl.java @@ -32,7 +32,7 @@ public DeleteBuilder delete() public Boolean deleteById(CheckConstraintTestId id, Connection c) { return interpolate( Fragment.lit("delete from \"CHECK_CONSTRAINT_TEST\" where \"ID\" = "), - Fragment.encode(CheckConstraintTestId.dbType, id), + Fragment.encode(CheckConstraintTestId.db2Type, id), Fragment.lit("")) .update() .runUnchecked(c) @@ -43,7 +43,7 @@ public Boolean deleteById(CheckConstraintTestId id, Connection c) { public Integer deleteByIds(CheckConstraintTestId[] ids, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : ids) { - fragments.add(Fragment.encode(CheckConstraintTestId.dbType, id)); + fragments.add(Fragment.encode(CheckConstraintTestId.db2Type, id)); } ; return Fragment.interpolate( @@ -61,7 +61,7 @@ public CheckConstraintTestRow insert(CheckConstraintTestRow unsaved, Connection "SELECT \"ID\", \"AGE\", \"STATUS\", \"PRICE\" FROM FINAL TABLE (INSERT INTO" + " \"CHECK_CONSTRAINT_TEST\"(\"ID\", \"AGE\", \"STATUS\", \"PRICE\")\n" + "VALUES ("), - Fragment.encode(CheckConstraintTestId.dbType, unsaved.id()), + Fragment.encode(CheckConstraintTestId.db2Type, unsaved.id()), Fragment.lit(", "), Fragment.encode(Db2Types.integer, unsaved.age()), Fragment.lit(", "), @@ -98,7 +98,7 @@ public Optional selectById(CheckConstraintTestId id, Con "select \"ID\", \"AGE\", \"STATUS\", \"PRICE\"\n" + "from \"CHECK_CONSTRAINT_TEST\"\n" + "where \"ID\" = "), - Fragment.encode(CheckConstraintTestId.dbType, id), + Fragment.encode(CheckConstraintTestId.db2Type, id), Fragment.lit("")) .query(CheckConstraintTestRow._rowParser.first()) .runUnchecked(c); @@ -108,7 +108,7 @@ public Optional selectById(CheckConstraintTestId id, Con public List selectByIds(CheckConstraintTestId[] ids, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : ids) { - fragments.add(Fragment.encode(CheckConstraintTestId.dbType, id)); + fragments.add(Fragment.encode(CheckConstraintTestId.db2Type, id)); } ; return Fragment.interpolate( @@ -151,7 +151,7 @@ public Boolean update(CheckConstraintTestRow row, Connection c) { Fragment.lit(",\n\"PRICE\" = "), Fragment.encode(Db2Types.decimal.opt(), row.price()), Fragment.lit("\nwhere \"ID\" = "), - Fragment.encode(CheckConstraintTestId.dbType, id), + Fragment.encode(CheckConstraintTestId.db2Type, id), Fragment.lit("")) .update() .runUnchecked(c) @@ -162,7 +162,7 @@ public Boolean update(CheckConstraintTestRow row, Connection c) { public void upsert(CheckConstraintTestRow unsaved, Connection c) { interpolate( Fragment.lit("MERGE INTO \"CHECK_CONSTRAINT_TEST\" AS t\nUSING (VALUES ("), - Fragment.encode(CheckConstraintTestId.dbType, unsaved.id()), + Fragment.encode(CheckConstraintTestId.db2Type, unsaved.id()), Fragment.lit(", "), Fragment.encode(Db2Types.integer, unsaved.age()), Fragment.lit(", "), @@ -177,7 +177,7 @@ public void upsert(CheckConstraintTestRow unsaved, Connection c) { + "\"PRICE\" = s.\"PRICE\"\n" + "WHEN NOT MATCHED THEN INSERT (\"ID\", \"AGE\", \"STATUS\", \"PRICE\") VALUES" + " ("), - Fragment.encode(CheckConstraintTestId.dbType, unsaved.id()), + Fragment.encode(CheckConstraintTestId.db2Type, unsaved.id()), Fragment.lit(", "), Fragment.encode(Db2Types.integer, unsaved.age()), Fragment.lit(", "), diff --git a/testers/db2/java/generated-and-checked-in/testdb/check_constraint_test/CheckConstraintTestRow.java b/testers/db2/java/generated-and-checked-in/testdb/check_constraint_test/CheckConstraintTestRow.java index 71b0c8290d..e7c65327f2 100644 --- a/testers/db2/java/generated-and-checked-in/testdb/check_constraint_test/CheckConstraintTestRow.java +++ b/testers/db2/java/generated-and-checked-in/testdb/check_constraint_test/CheckConstraintTestRow.java @@ -50,7 +50,7 @@ public CheckConstraintTestRow withPrice(Optional price) { public static RowParser _rowParser = RowParsers.of( - CheckConstraintTestId.dbType, + CheckConstraintTestId.db2Type, Db2Types.integer, Db2Types.varchar, Db2Types.decimal.opt(), diff --git a/testers/db2/java/generated-and-checked-in/testdb/customers/CustomersFields.java b/testers/db2/java/generated-and-checked-in/testdb/customers/CustomersFields.java index 019af05cfc..019e3725f7 100644 --- a/testers/db2/java/generated-and-checked-in/testdb/customers/CustomersFields.java +++ b/testers/db2/java/generated-and-checked-in/testdb/customers/CustomersFields.java @@ -38,7 +38,7 @@ public IdField customerId() { Optional.empty(), Optional.empty(), (row, value) -> row.withCustomerId(value), - CustomersId.dbType); + CustomersId.db2Type); } public Field name() { diff --git a/testers/db2/java/generated-and-checked-in/testdb/customers/CustomersId.java b/testers/db2/java/generated-and-checked-in/testdb/customers/CustomersId.java index 8536669b93..0de39336eb 100644 --- a/testers/db2/java/generated-and-checked-in/testdb/customers/CustomersId.java +++ b/testers/db2/java/generated-and-checked-in/testdb/customers/CustomersId.java @@ -26,6 +26,6 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(CustomersId::value, CustomersId::new); - public static Db2Type dbType = + public static Db2Type db2Type = Db2Types.integer.bimap(CustomersId::new, CustomersId::value); } diff --git a/testers/db2/java/generated-and-checked-in/testdb/customers/CustomersRepoImpl.java b/testers/db2/java/generated-and-checked-in/testdb/customers/CustomersRepoImpl.java index 1ff082b133..3bc9ceb7da 100644 --- a/testers/db2/java/generated-and-checked-in/testdb/customers/CustomersRepoImpl.java +++ b/testers/db2/java/generated-and-checked-in/testdb/customers/CustomersRepoImpl.java @@ -31,7 +31,7 @@ public DeleteBuilder delete() { public Boolean deleteById(CustomersId customerId, Connection c) { return interpolate( Fragment.lit("delete from \"CUSTOMERS\" where \"CUSTOMER_ID\" = "), - Fragment.encode(CustomersId.dbType, customerId), + Fragment.encode(CustomersId.db2Type, customerId), Fragment.lit("")) .update() .runUnchecked(c) @@ -42,7 +42,7 @@ public Boolean deleteById(CustomersId customerId, Connection c) { public Integer deleteByIds(CustomersId[] customerIds, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : customerIds) { - fragments.add(Fragment.encode(CustomersId.dbType, id)); + fragments.add(Fragment.encode(CustomersId.db2Type, id)); } ; return Fragment.interpolate( @@ -61,7 +61,7 @@ public CustomersRow insert(CustomersRow unsaved, Connection c) { + " (INSERT INTO \"CUSTOMERS\"(\"CUSTOMER_ID\", \"NAME\", \"EMAIL\"," + " \"CREATED_AT\")\n" + "VALUES ("), - Fragment.encode(CustomersId.dbType, unsaved.customerId()), + Fragment.encode(CustomersId.db2Type, unsaved.customerId()), Fragment.lit(", "), Fragment.encode(Db2Types.varchar, unsaved.name()), Fragment.lit(", "), @@ -89,7 +89,8 @@ public CustomersRow insert(CustomersRowUnsaved unsaved, Connection c) { () -> {}, value -> { columns.add(Fragment.lit("\"CUSTOMER_ID\"")); - values.add(interpolate(Fragment.encode(CustomersId.dbType, value), Fragment.lit(""))); + values.add( + interpolate(Fragment.encode(CustomersId.db2Type, value), Fragment.lit(""))); }); ; unsaved @@ -138,7 +139,7 @@ public Optional selectById(CustomersId customerId, Connection c) { "select \"CUSTOMER_ID\", \"NAME\", \"EMAIL\", \"CREATED_AT\"\n" + "from \"CUSTOMERS\"\n" + "where \"CUSTOMER_ID\" = "), - Fragment.encode(CustomersId.dbType, customerId), + Fragment.encode(CustomersId.db2Type, customerId), Fragment.lit("")) .query(CustomersRow._rowParser.first()) .runUnchecked(c); @@ -148,7 +149,7 @@ public Optional selectById(CustomersId customerId, Connection c) { public List selectByIds(CustomersId[] customerIds, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : customerIds) { - fragments.add(Fragment.encode(CustomersId.dbType, id)); + fragments.add(Fragment.encode(CustomersId.db2Type, id)); } ; return Fragment.interpolate( @@ -200,7 +201,7 @@ public Boolean update(CustomersRow row, Connection c) { Fragment.lit(",\n\"CREATED_AT\" = "), Fragment.encode(Db2Types.timestamp.opt(), row.createdAt()), Fragment.lit("\nwhere \"CUSTOMER_ID\" = "), - Fragment.encode(CustomersId.dbType, customerId), + Fragment.encode(CustomersId.db2Type, customerId), Fragment.lit("")) .update() .runUnchecked(c) @@ -211,7 +212,7 @@ public Boolean update(CustomersRow row, Connection c) { public void upsert(CustomersRow unsaved, Connection c) { interpolate( Fragment.lit("MERGE INTO \"CUSTOMERS\" AS t\nUSING (VALUES ("), - Fragment.encode(CustomersId.dbType, unsaved.customerId()), + Fragment.encode(CustomersId.db2Type, unsaved.customerId()), Fragment.lit(", "), Fragment.encode(Db2Types.varchar, unsaved.name()), Fragment.lit(", "), @@ -226,7 +227,7 @@ public void upsert(CustomersRow unsaved, Connection c) { + "\"CREATED_AT\" = s.\"CREATED_AT\"\n" + "WHEN NOT MATCHED THEN INSERT (\"CUSTOMER_ID\", \"NAME\", \"EMAIL\"," + " \"CREATED_AT\") VALUES ("), - Fragment.encode(CustomersId.dbType, unsaved.customerId()), + Fragment.encode(CustomersId.db2Type, unsaved.customerId()), Fragment.lit(", "), Fragment.encode(Db2Types.varchar, unsaved.name()), Fragment.lit(", "), diff --git a/testers/db2/java/generated-and-checked-in/testdb/customers/CustomersRow.java b/testers/db2/java/generated-and-checked-in/testdb/customers/CustomersRow.java index eeaaa18b36..e1f7933880 100644 --- a/testers/db2/java/generated-and-checked-in/testdb/customers/CustomersRow.java +++ b/testers/db2/java/generated-and-checked-in/testdb/customers/CustomersRow.java @@ -54,7 +54,7 @@ public CustomersRow withCreatedAt(Optional createdAt) { public static RowParser _rowParser = RowParsers.of( - CustomersId.dbType, + CustomersId.db2Type, Db2Types.varchar, Db2Types.varchar, Db2Types.timestamp.opt(), diff --git a/testers/db2/java/generated-and-checked-in/testdb/db2test/Db2testFields.java b/testers/db2/java/generated-and-checked-in/testdb/db2test/Db2testFields.java index 4f71334734..847ce12010 100644 --- a/testers/db2/java/generated-and-checked-in/testdb/db2test/Db2testFields.java +++ b/testers/db2/java/generated-and-checked-in/testdb/db2test/Db2testFields.java @@ -77,7 +77,7 @@ public IdField intCol() { Optional.empty(), Optional.empty(), (row, value) -> row.withIntCol(value), - Db2testId.dbType); + Db2testId.db2Type); } public Field bigintCol() { diff --git a/testers/db2/java/generated-and-checked-in/testdb/db2test/Db2testId.java b/testers/db2/java/generated-and-checked-in/testdb/db2test/Db2testId.java index 1d5f050b7a..7ef6da60de 100644 --- a/testers/db2/java/generated-and-checked-in/testdb/db2test/Db2testId.java +++ b/testers/db2/java/generated-and-checked-in/testdb/db2test/Db2testId.java @@ -26,6 +26,6 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(Db2testId::value, Db2testId::new); - public static Db2Type dbType = + public static Db2Type db2Type = Db2Types.integer.bimap(Db2testId::new, Db2testId::value); } diff --git a/testers/db2/java/generated-and-checked-in/testdb/db2test/Db2testRepoImpl.java b/testers/db2/java/generated-and-checked-in/testdb/db2test/Db2testRepoImpl.java index 8c2f50a56b..c7f14afa58 100644 --- a/testers/db2/java/generated-and-checked-in/testdb/db2test/Db2testRepoImpl.java +++ b/testers/db2/java/generated-and-checked-in/testdb/db2test/Db2testRepoImpl.java @@ -31,7 +31,7 @@ public DeleteBuilder delete() { public Boolean deleteById(Db2testId intCol, Connection c) { return interpolate( Fragment.lit("delete from \"DB2TEST\" where \"INT_COL\" = "), - Fragment.encode(Db2testId.dbType, intCol), + Fragment.encode(Db2testId.db2Type, intCol), Fragment.lit("")) .update() .runUnchecked(c) @@ -42,7 +42,7 @@ public Boolean deleteById(Db2testId intCol, Connection c) { public Integer deleteByIds(Db2testId[] intCols, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : intCols) { - fragments.add(Fragment.encode(Db2testId.dbType, id)); + fragments.add(Fragment.encode(Db2testId.db2Type, id)); } ; return Fragment.interpolate( @@ -72,7 +72,7 @@ public Db2testRow insert(Db2testRow unsaved, Connection c) { + "VALUES ("), Fragment.encode(Db2Types.smallint, unsaved.smallintCol()), Fragment.lit(", "), - Fragment.encode(Db2testId.dbType, unsaved.intCol()), + Fragment.encode(Db2testId.db2Type, unsaved.intCol()), Fragment.lit(", "), Fragment.encode(Db2Types.bigint, unsaved.bigintCol()), Fragment.lit(", "), @@ -155,7 +155,7 @@ public Optional selectById(Db2testId intCol, Connection c) { + " \"TIMESTAMP6_COL\", \"TIMESTAMP12_COL\", \"XML_COL\"\n" + "from \"DB2TEST\"\n" + "where \"INT_COL\" = "), - Fragment.encode(Db2testId.dbType, intCol), + Fragment.encode(Db2testId.db2Type, intCol), Fragment.lit("")) .query(Db2testRow._rowParser.first()) .runUnchecked(c); @@ -165,7 +165,7 @@ public Optional selectById(Db2testId intCol, Connection c) { public List selectByIds(Db2testId[] intCols, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : intCols) { - fragments.add(Fragment.encode(Db2testId.dbType, id)); + fragments.add(Fragment.encode(Db2testId.db2Type, id)); } ; return Fragment.interpolate( @@ -248,7 +248,7 @@ public Boolean update(Db2testRow row, Connection c) { Fragment.lit(",\n\"XML_COL\" = "), Fragment.encode(Db2Types.xml, row.xmlCol()), Fragment.lit("\nwhere \"INT_COL\" = "), - Fragment.encode(Db2testId.dbType, intCol), + Fragment.encode(Db2testId.db2Type, intCol), Fragment.lit("")) .update() .runUnchecked(c) @@ -261,7 +261,7 @@ public void upsert(Db2testRow unsaved, Connection c) { Fragment.lit("MERGE INTO \"DB2TEST\" AS t\nUSING (VALUES ("), Fragment.encode(Db2Types.smallint, unsaved.smallintCol()), Fragment.lit(", "), - Fragment.encode(Db2testId.dbType, unsaved.intCol()), + Fragment.encode(Db2testId.db2Type, unsaved.intCol()), Fragment.lit(", "), Fragment.encode(Db2Types.bigint, unsaved.bigintCol()), Fragment.lit(", "), @@ -346,7 +346,7 @@ public void upsert(Db2testRow unsaved, Connection c) { + " VALUES ("), Fragment.encode(Db2Types.smallint, unsaved.smallintCol()), Fragment.lit(", "), - Fragment.encode(Db2testId.dbType, unsaved.intCol()), + Fragment.encode(Db2testId.db2Type, unsaved.intCol()), Fragment.lit(", "), Fragment.encode(Db2Types.bigint, unsaved.bigintCol()), Fragment.lit(", "), diff --git a/testers/db2/java/generated-and-checked-in/testdb/db2test/Db2testRow.java b/testers/db2/java/generated-and-checked-in/testdb/db2test/Db2testRow.java index 9686afe0ac..6c8b4a50b4 100644 --- a/testers/db2/java/generated-and-checked-in/testdb/db2test/Db2testRow.java +++ b/testers/db2/java/generated-and-checked-in/testdb/db2test/Db2testRow.java @@ -766,7 +766,7 @@ public Db2testRow withXmlCol(Xml xmlCol) { public static RowParser _rowParser = RowParsers.of( Db2Types.smallint, - Db2testId.dbType, + Db2testId.db2Type, Db2Types.bigint, Db2Types.decimal, Db2Types.decimal, diff --git a/testers/db2/java/generated-and-checked-in/testdb/db2test_identity_always/Db2testIdentityAlwaysFields.java b/testers/db2/java/generated-and-checked-in/testdb/db2test_identity_always/Db2testIdentityAlwaysFields.java index dad9e7241a..41b5990b29 100644 --- a/testers/db2/java/generated-and-checked-in/testdb/db2test_identity_always/Db2testIdentityAlwaysFields.java +++ b/testers/db2/java/generated-and-checked-in/testdb/db2test_identity_always/Db2testIdentityAlwaysFields.java @@ -38,7 +38,7 @@ public IdField id() { Optional.empty(), Optional.empty(), (row, value) -> row.withId(value), - Db2testIdentityAlwaysId.dbType); + Db2testIdentityAlwaysId.db2Type); } public Field name() { diff --git a/testers/db2/java/generated-and-checked-in/testdb/db2test_identity_always/Db2testIdentityAlwaysId.java b/testers/db2/java/generated-and-checked-in/testdb/db2test_identity_always/Db2testIdentityAlwaysId.java index 6ec92248d8..71fbd0e476 100644 --- a/testers/db2/java/generated-and-checked-in/testdb/db2test_identity_always/Db2testIdentityAlwaysId.java +++ b/testers/db2/java/generated-and-checked-in/testdb/db2test_identity_always/Db2testIdentityAlwaysId.java @@ -26,6 +26,6 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(Db2testIdentityAlwaysId::value, Db2testIdentityAlwaysId::new); - public static Db2Type dbType = + public static Db2Type db2Type = Db2Types.integer.bimap(Db2testIdentityAlwaysId::new, Db2testIdentityAlwaysId::value); } diff --git a/testers/db2/java/generated-and-checked-in/testdb/db2test_identity_always/Db2testIdentityAlwaysRepoImpl.java b/testers/db2/java/generated-and-checked-in/testdb/db2test_identity_always/Db2testIdentityAlwaysRepoImpl.java index a45e6d5641..e3ae7aae93 100644 --- a/testers/db2/java/generated-and-checked-in/testdb/db2test_identity_always/Db2testIdentityAlwaysRepoImpl.java +++ b/testers/db2/java/generated-and-checked-in/testdb/db2test_identity_always/Db2testIdentityAlwaysRepoImpl.java @@ -32,7 +32,7 @@ public DeleteBuilder dele public Boolean deleteById(Db2testIdentityAlwaysId id, Connection c) { return interpolate( Fragment.lit("delete from \"DB2TEST_IDENTITY_ALWAYS\" where \"ID\" = "), - Fragment.encode(Db2testIdentityAlwaysId.dbType, id), + Fragment.encode(Db2testIdentityAlwaysId.db2Type, id), Fragment.lit("")) .update() .runUnchecked(c) @@ -43,7 +43,7 @@ public Boolean deleteById(Db2testIdentityAlwaysId id, Connection c) { public Integer deleteByIds(Db2testIdentityAlwaysId[] ids, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : ids) { - fragments.add(Fragment.encode(Db2testIdentityAlwaysId.dbType, id)); + fragments.add(Fragment.encode(Db2testIdentityAlwaysId.db2Type, id)); } ; return Fragment.interpolate( @@ -109,7 +109,7 @@ public Optional selectById(Db2testIdentityAlwaysId id, return interpolate( Fragment.lit( "select \"ID\", \"NAME\"\nfrom \"DB2TEST_IDENTITY_ALWAYS\"\nwhere \"ID\" = "), - Fragment.encode(Db2testIdentityAlwaysId.dbType, id), + Fragment.encode(Db2testIdentityAlwaysId.db2Type, id), Fragment.lit("")) .query(Db2testIdentityAlwaysRow._rowParser.first()) .runUnchecked(c); @@ -119,7 +119,7 @@ public Optional selectById(Db2testIdentityAlwaysId id, public List selectByIds(Db2testIdentityAlwaysId[] ids, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : ids) { - fragments.add(Fragment.encode(Db2testIdentityAlwaysId.dbType, id)); + fragments.add(Fragment.encode(Db2testIdentityAlwaysId.db2Type, id)); } ; return Fragment.interpolate( @@ -157,7 +157,7 @@ public Boolean update(Db2testIdentityAlwaysRow row, Connection c) { Fragment.lit("update \"DB2TEST_IDENTITY_ALWAYS\"\nset \"NAME\" = "), Fragment.encode(Db2Types.varchar, row.name()), Fragment.lit("\nwhere \"ID\" = "), - Fragment.encode(Db2testIdentityAlwaysId.dbType, id), + Fragment.encode(Db2testIdentityAlwaysId.db2Type, id), Fragment.lit("")) .update() .runUnchecked(c) @@ -168,7 +168,7 @@ public Boolean update(Db2testIdentityAlwaysRow row, Connection c) { public void upsert(Db2testIdentityAlwaysRow unsaved, Connection c) { interpolate( Fragment.lit("MERGE INTO \"DB2TEST_IDENTITY_ALWAYS\" AS t\nUSING (VALUES ("), - Fragment.encode(Db2testIdentityAlwaysId.dbType, unsaved.id()), + Fragment.encode(Db2testIdentityAlwaysId.db2Type, unsaved.id()), Fragment.lit(", "), Fragment.encode(Db2Types.varchar, unsaved.name()), Fragment.lit( @@ -176,7 +176,7 @@ public void upsert(Db2testIdentityAlwaysRow unsaved, Connection c) { + "ON t.\"ID\" = s.\"ID\"\n" + "WHEN MATCHED THEN UPDATE SET \"NAME\" = s.\"NAME\"\n" + "WHEN NOT MATCHED THEN INSERT (\"ID\", \"NAME\") VALUES ("), - Fragment.encode(Db2testIdentityAlwaysId.dbType, unsaved.id()), + Fragment.encode(Db2testIdentityAlwaysId.db2Type, unsaved.id()), Fragment.lit(", "), Fragment.encode(Db2Types.varchar, unsaved.name()), Fragment.lit(")")) diff --git a/testers/db2/java/generated-and-checked-in/testdb/db2test_identity_always/Db2testIdentityAlwaysRow.java b/testers/db2/java/generated-and-checked-in/testdb/db2test_identity_always/Db2testIdentityAlwaysRow.java index 25733ce42a..0eeeb7c3f6 100644 --- a/testers/db2/java/generated-and-checked-in/testdb/db2test_identity_always/Db2testIdentityAlwaysRow.java +++ b/testers/db2/java/generated-and-checked-in/testdb/db2test_identity_always/Db2testIdentityAlwaysRow.java @@ -29,7 +29,7 @@ public Db2testIdentityAlwaysRow withName(String name) { public static RowParser _rowParser = RowParsers.of( - Db2testIdentityAlwaysId.dbType, + Db2testIdentityAlwaysId.db2Type, Db2Types.varchar, Db2testIdentityAlwaysRow::new, row -> new Object[] {row.id(), row.name()}); diff --git a/testers/db2/java/generated-and-checked-in/testdb/db2test_identity_default/Db2testIdentityDefaultFields.java b/testers/db2/java/generated-and-checked-in/testdb/db2test_identity_default/Db2testIdentityDefaultFields.java index b49ba14068..81f5993e1e 100644 --- a/testers/db2/java/generated-and-checked-in/testdb/db2test_identity_default/Db2testIdentityDefaultFields.java +++ b/testers/db2/java/generated-and-checked-in/testdb/db2test_identity_default/Db2testIdentityDefaultFields.java @@ -38,7 +38,7 @@ public IdField id() { Optional.empty(), Optional.empty(), (row, value) -> row.withId(value), - Db2testIdentityDefaultId.dbType); + Db2testIdentityDefaultId.db2Type); } public Field name() { diff --git a/testers/db2/java/generated-and-checked-in/testdb/db2test_identity_default/Db2testIdentityDefaultId.java b/testers/db2/java/generated-and-checked-in/testdb/db2test_identity_default/Db2testIdentityDefaultId.java index 3772b7e3ad..8667b9a5a8 100644 --- a/testers/db2/java/generated-and-checked-in/testdb/db2test_identity_default/Db2testIdentityDefaultId.java +++ b/testers/db2/java/generated-and-checked-in/testdb/db2test_identity_default/Db2testIdentityDefaultId.java @@ -26,6 +26,6 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(Db2testIdentityDefaultId::value, Db2testIdentityDefaultId::new); - public static Db2Type dbType = + public static Db2Type db2Type = Db2Types.integer.bimap(Db2testIdentityDefaultId::new, Db2testIdentityDefaultId::value); } diff --git a/testers/db2/java/generated-and-checked-in/testdb/db2test_identity_default/Db2testIdentityDefaultRepoImpl.java b/testers/db2/java/generated-and-checked-in/testdb/db2test_identity_default/Db2testIdentityDefaultRepoImpl.java index 544baed54d..dd2597aa52 100644 --- a/testers/db2/java/generated-and-checked-in/testdb/db2test_identity_default/Db2testIdentityDefaultRepoImpl.java +++ b/testers/db2/java/generated-and-checked-in/testdb/db2test_identity_default/Db2testIdentityDefaultRepoImpl.java @@ -32,7 +32,7 @@ public DeleteBuilder de public Boolean deleteById(Db2testIdentityDefaultId id, Connection c) { return interpolate( Fragment.lit("delete from \"DB2TEST_IDENTITY_DEFAULT\" where \"ID\" = "), - Fragment.encode(Db2testIdentityDefaultId.dbType, id), + Fragment.encode(Db2testIdentityDefaultId.db2Type, id), Fragment.lit("")) .update() .runUnchecked(c) @@ -43,7 +43,7 @@ public Boolean deleteById(Db2testIdentityDefaultId id, Connection c) { public Integer deleteByIds(Db2testIdentityDefaultId[] ids, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : ids) { - fragments.add(Fragment.encode(Db2testIdentityDefaultId.dbType, id)); + fragments.add(Fragment.encode(Db2testIdentityDefaultId.db2Type, id)); } ; return Fragment.interpolate( @@ -61,7 +61,7 @@ public Db2testIdentityDefaultRow insert(Db2testIdentityDefaultRow unsaved, Conne "SELECT \"ID\", \"NAME\" FROM FINAL TABLE (INSERT INTO" + " \"DB2TEST_IDENTITY_DEFAULT\"(\"ID\", \"NAME\")\n" + "VALUES ("), - Fragment.encode(Db2testIdentityDefaultId.dbType, unsaved.id()), + Fragment.encode(Db2testIdentityDefaultId.db2Type, unsaved.id()), Fragment.lit(", "), Fragment.encode(Db2Types.varchar, unsaved.name()), Fragment.lit("))\n")) @@ -85,7 +85,7 @@ public Db2testIdentityDefaultRow insert(Db2testIdentityDefaultRowUnsaved unsaved columns.add(Fragment.lit("\"ID\"")); values.add( interpolate( - Fragment.encode(Db2testIdentityDefaultId.dbType, value), Fragment.lit(""))); + Fragment.encode(Db2testIdentityDefaultId.db2Type, value), Fragment.lit(""))); }); ; Fragment q = @@ -122,7 +122,7 @@ public Optional selectById(Db2testIdentityDefaultId i return interpolate( Fragment.lit( "select \"ID\", \"NAME\"\nfrom \"DB2TEST_IDENTITY_DEFAULT\"\nwhere \"ID\" = "), - Fragment.encode(Db2testIdentityDefaultId.dbType, id), + Fragment.encode(Db2testIdentityDefaultId.db2Type, id), Fragment.lit("")) .query(Db2testIdentityDefaultRow._rowParser.first()) .runUnchecked(c); @@ -132,7 +132,7 @@ public Optional selectById(Db2testIdentityDefaultId i public List selectByIds(Db2testIdentityDefaultId[] ids, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : ids) { - fragments.add(Fragment.encode(Db2testIdentityDefaultId.dbType, id)); + fragments.add(Fragment.encode(Db2testIdentityDefaultId.db2Type, id)); } ; return Fragment.interpolate( @@ -170,7 +170,7 @@ public Boolean update(Db2testIdentityDefaultRow row, Connection c) { Fragment.lit("update \"DB2TEST_IDENTITY_DEFAULT\"\nset \"NAME\" = "), Fragment.encode(Db2Types.varchar, row.name()), Fragment.lit("\nwhere \"ID\" = "), - Fragment.encode(Db2testIdentityDefaultId.dbType, id), + Fragment.encode(Db2testIdentityDefaultId.db2Type, id), Fragment.lit("")) .update() .runUnchecked(c) @@ -181,7 +181,7 @@ public Boolean update(Db2testIdentityDefaultRow row, Connection c) { public void upsert(Db2testIdentityDefaultRow unsaved, Connection c) { interpolate( Fragment.lit("MERGE INTO \"DB2TEST_IDENTITY_DEFAULT\" AS t\nUSING (VALUES ("), - Fragment.encode(Db2testIdentityDefaultId.dbType, unsaved.id()), + Fragment.encode(Db2testIdentityDefaultId.db2Type, unsaved.id()), Fragment.lit(", "), Fragment.encode(Db2Types.varchar, unsaved.name()), Fragment.lit( @@ -189,7 +189,7 @@ public void upsert(Db2testIdentityDefaultRow unsaved, Connection c) { + "ON t.\"ID\" = s.\"ID\"\n" + "WHEN MATCHED THEN UPDATE SET \"NAME\" = s.\"NAME\"\n" + "WHEN NOT MATCHED THEN INSERT (\"ID\", \"NAME\") VALUES ("), - Fragment.encode(Db2testIdentityDefaultId.dbType, unsaved.id()), + Fragment.encode(Db2testIdentityDefaultId.db2Type, unsaved.id()), Fragment.lit(", "), Fragment.encode(Db2Types.varchar, unsaved.name()), Fragment.lit(")")) diff --git a/testers/db2/java/generated-and-checked-in/testdb/db2test_identity_default/Db2testIdentityDefaultRow.java b/testers/db2/java/generated-and-checked-in/testdb/db2test_identity_default/Db2testIdentityDefaultRow.java index ea32062219..4d41bca04f 100644 --- a/testers/db2/java/generated-and-checked-in/testdb/db2test_identity_default/Db2testIdentityDefaultRow.java +++ b/testers/db2/java/generated-and-checked-in/testdb/db2test_identity_default/Db2testIdentityDefaultRow.java @@ -30,7 +30,7 @@ public Db2testIdentityDefaultRow withName(String name) { public static RowParser _rowParser = RowParsers.of( - Db2testIdentityDefaultId.dbType, + Db2testIdentityDefaultId.db2Type, Db2Types.varchar, Db2testIdentityDefaultRow::new, row -> new Object[] {row.id(), row.name()}); diff --git a/testers/db2/java/generated-and-checked-in/testdb/db2test_unique/Db2testUniqueFields.java b/testers/db2/java/generated-and-checked-in/testdb/db2test_unique/Db2testUniqueFields.java index 22cc24fba7..94f5ac9201 100644 --- a/testers/db2/java/generated-and-checked-in/testdb/db2test_unique/Db2testUniqueFields.java +++ b/testers/db2/java/generated-and-checked-in/testdb/db2test_unique/Db2testUniqueFields.java @@ -38,7 +38,7 @@ public IdField id() { Optional.empty(), Optional.empty(), (row, value) -> row.withId(value), - Db2testUniqueId.dbType); + Db2testUniqueId.db2Type); } public Field email() { diff --git a/testers/db2/java/generated-and-checked-in/testdb/db2test_unique/Db2testUniqueId.java b/testers/db2/java/generated-and-checked-in/testdb/db2test_unique/Db2testUniqueId.java index 4cac4acab6..1fb01b1303 100644 --- a/testers/db2/java/generated-and-checked-in/testdb/db2test_unique/Db2testUniqueId.java +++ b/testers/db2/java/generated-and-checked-in/testdb/db2test_unique/Db2testUniqueId.java @@ -26,6 +26,6 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(Db2testUniqueId::value, Db2testUniqueId::new); - public static Db2Type dbType = + public static Db2Type db2Type = Db2Types.integer.bimap(Db2testUniqueId::new, Db2testUniqueId::value); } diff --git a/testers/db2/java/generated-and-checked-in/testdb/db2test_unique/Db2testUniqueRepoImpl.java b/testers/db2/java/generated-and-checked-in/testdb/db2test_unique/Db2testUniqueRepoImpl.java index db7449015d..daba2b69c0 100644 --- a/testers/db2/java/generated-and-checked-in/testdb/db2test_unique/Db2testUniqueRepoImpl.java +++ b/testers/db2/java/generated-and-checked-in/testdb/db2test_unique/Db2testUniqueRepoImpl.java @@ -31,7 +31,7 @@ public DeleteBuilder delete() { public Boolean deleteById(Db2testUniqueId id, Connection c) { return interpolate( Fragment.lit("delete from \"DB2TEST_UNIQUE\" where \"ID\" = "), - Fragment.encode(Db2testUniqueId.dbType, id), + Fragment.encode(Db2testUniqueId.db2Type, id), Fragment.lit("")) .update() .runUnchecked(c) @@ -42,7 +42,7 @@ public Boolean deleteById(Db2testUniqueId id, Connection c) { public Integer deleteByIds(Db2testUniqueId[] ids, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : ids) { - fragments.add(Fragment.encode(Db2testUniqueId.dbType, id)); + fragments.add(Fragment.encode(Db2testUniqueId.db2Type, id)); } ; return Fragment.interpolate( @@ -121,7 +121,7 @@ public Optional selectById(Db2testUniqueId id, Connection c) { "select \"ID\", \"EMAIL\", \"CODE\", \"CATEGORY\"\n" + "from \"DB2TEST_UNIQUE\"\n" + "where \"ID\" = "), - Fragment.encode(Db2testUniqueId.dbType, id), + Fragment.encode(Db2testUniqueId.db2Type, id), Fragment.lit("")) .query(Db2testUniqueRow._rowParser.first()) .runUnchecked(c); @@ -131,7 +131,7 @@ public Optional selectById(Db2testUniqueId id, Connection c) { public List selectByIds(Db2testUniqueId[] ids, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : ids) { - fragments.add(Fragment.encode(Db2testUniqueId.dbType, id)); + fragments.add(Fragment.encode(Db2testUniqueId.db2Type, id)); } ; return Fragment.interpolate( @@ -203,7 +203,7 @@ public Boolean update(Db2testUniqueRow row, Connection c) { Fragment.lit(",\n\"CATEGORY\" = "), Fragment.encode(Db2Types.varchar, row.category()), Fragment.lit("\nwhere \"ID\" = "), - Fragment.encode(Db2testUniqueId.dbType, id), + Fragment.encode(Db2testUniqueId.db2Type, id), Fragment.lit("")) .update() .runUnchecked(c) @@ -214,7 +214,7 @@ public Boolean update(Db2testUniqueRow row, Connection c) { public void upsert(Db2testUniqueRow unsaved, Connection c) { interpolate( Fragment.lit("MERGE INTO \"DB2TEST_UNIQUE\" AS t\nUSING (VALUES ("), - Fragment.encode(Db2testUniqueId.dbType, unsaved.id()), + Fragment.encode(Db2testUniqueId.db2Type, unsaved.id()), Fragment.lit(", "), Fragment.encode(Db2Types.varchar, unsaved.email()), Fragment.lit(", "), @@ -229,7 +229,7 @@ public void upsert(Db2testUniqueRow unsaved, Connection c) { + "\"CATEGORY\" = s.\"CATEGORY\"\n" + "WHEN NOT MATCHED THEN INSERT (\"ID\", \"EMAIL\", \"CODE\", \"CATEGORY\")" + " VALUES ("), - Fragment.encode(Db2testUniqueId.dbType, unsaved.id()), + Fragment.encode(Db2testUniqueId.db2Type, unsaved.id()), Fragment.lit(", "), Fragment.encode(Db2Types.varchar, unsaved.email()), Fragment.lit(", "), diff --git a/testers/db2/java/generated-and-checked-in/testdb/db2test_unique/Db2testUniqueRow.java b/testers/db2/java/generated-and-checked-in/testdb/db2test_unique/Db2testUniqueRow.java index f31ac9e915..8987253a60 100644 --- a/testers/db2/java/generated-and-checked-in/testdb/db2test_unique/Db2testUniqueRow.java +++ b/testers/db2/java/generated-and-checked-in/testdb/db2test_unique/Db2testUniqueRow.java @@ -42,7 +42,7 @@ public Db2testUniqueRow withCategory(String category) { public static RowParser _rowParser = RowParsers.of( - Db2testUniqueId.dbType, + Db2testUniqueId.db2Type, Db2Types.varchar, Db2Types.varchar, Db2Types.varchar, diff --git a/testers/db2/java/generated-and-checked-in/testdb/distinct_type_test/DistinctTypeTestFields.java b/testers/db2/java/generated-and-checked-in/testdb/distinct_type_test/DistinctTypeTestFields.java index 485d5cc632..7913a5ade7 100644 --- a/testers/db2/java/generated-and-checked-in/testdb/distinct_type_test/DistinctTypeTestFields.java +++ b/testers/db2/java/generated-and-checked-in/testdb/distinct_type_test/DistinctTypeTestFields.java @@ -41,7 +41,7 @@ public IdField id() { Optional.empty(), Optional.empty(), (row, value) -> row.withId(value), - DistinctTypeTestId.dbType); + DistinctTypeTestId.db2Type); } public Field email() { @@ -52,7 +52,7 @@ public Field email() { Optional.empty(), Optional.empty(), (row, value) -> row.withEmail(value), - EmailAddress.dbType); + EmailAddress.db2Type); } public OptField balance() { @@ -63,7 +63,7 @@ public OptField balance() { Optional.empty(), Optional.empty(), (row, value) -> row.withBalance(value), - MoneyAmount.dbType); + MoneyAmount.db2Type); } @Override diff --git a/testers/db2/java/generated-and-checked-in/testdb/distinct_type_test/DistinctTypeTestId.java b/testers/db2/java/generated-and-checked-in/testdb/distinct_type_test/DistinctTypeTestId.java index 684e1cbc79..5484a3888b 100644 --- a/testers/db2/java/generated-and-checked-in/testdb/distinct_type_test/DistinctTypeTestId.java +++ b/testers/db2/java/generated-and-checked-in/testdb/distinct_type_test/DistinctTypeTestId.java @@ -26,6 +26,6 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(DistinctTypeTestId::value, DistinctTypeTestId::new); - public static Db2Type dbType = + public static Db2Type db2Type = Db2Types.integer.bimap(DistinctTypeTestId::new, DistinctTypeTestId::value); } diff --git a/testers/db2/java/generated-and-checked-in/testdb/distinct_type_test/DistinctTypeTestRepoImpl.java b/testers/db2/java/generated-and-checked-in/testdb/distinct_type_test/DistinctTypeTestRepoImpl.java index d9c222cecc..9224eed210 100644 --- a/testers/db2/java/generated-and-checked-in/testdb/distinct_type_test/DistinctTypeTestRepoImpl.java +++ b/testers/db2/java/generated-and-checked-in/testdb/distinct_type_test/DistinctTypeTestRepoImpl.java @@ -33,7 +33,7 @@ public DeleteBuilder delete() { public Boolean deleteById(DistinctTypeTestId id, Connection c) { return interpolate( Fragment.lit("delete from \"DISTINCT_TYPE_TEST\" where \"ID\" = "), - Fragment.encode(DistinctTypeTestId.dbType, id), + Fragment.encode(DistinctTypeTestId.db2Type, id), Fragment.lit("")) .update() .runUnchecked(c) @@ -44,7 +44,7 @@ public Boolean deleteById(DistinctTypeTestId id, Connection c) { public Integer deleteByIds(DistinctTypeTestId[] ids, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : ids) { - fragments.add(Fragment.encode(DistinctTypeTestId.dbType, id)); + fragments.add(Fragment.encode(DistinctTypeTestId.db2Type, id)); } ; return Fragment.interpolate( @@ -62,9 +62,9 @@ public DistinctTypeTestRow insert(DistinctTypeTestRow unsaved, Connection c) { "SELECT \"ID\", \"EMAIL\", \"BALANCE\" FROM FINAL TABLE (INSERT INTO" + " \"DISTINCT_TYPE_TEST\"(\"EMAIL\", \"BALANCE\")\n" + "VALUES ("), - Fragment.encode(EmailAddress.dbType, unsaved.email()), + Fragment.encode(EmailAddress.db2Type, unsaved.email()), Fragment.lit(", "), - Fragment.encode(MoneyAmount.dbType.opt(), unsaved.balance()), + Fragment.encode(MoneyAmount.db2Type.opt(), unsaved.balance()), Fragment.lit("))\n")) .updateReturning(DistinctTypeTestRow._rowParser.exactlyOne()) .runUnchecked(c); @@ -78,11 +78,11 @@ public DistinctTypeTestRow insert(DistinctTypeTestRowUnsaved unsaved, Connection ; columns.add(Fragment.lit("\"EMAIL\"")); values.add( - interpolate(Fragment.encode(EmailAddress.dbType, unsaved.email()), Fragment.lit(""))); + interpolate(Fragment.encode(EmailAddress.db2Type, unsaved.email()), Fragment.lit(""))); columns.add(Fragment.lit("\"BALANCE\"")); values.add( interpolate( - Fragment.encode(MoneyAmount.dbType.opt(), unsaved.balance()), Fragment.lit(""))); + Fragment.encode(MoneyAmount.db2Type.opt(), unsaved.balance()), Fragment.lit(""))); Fragment q = interpolate( Fragment.lit( @@ -120,7 +120,7 @@ public Optional selectById(DistinctTypeTestId id, Connectio "select \"ID\", \"EMAIL\", \"BALANCE\"\n" + "from \"DISTINCT_TYPE_TEST\"\n" + "where \"ID\" = "), - Fragment.encode(DistinctTypeTestId.dbType, id), + Fragment.encode(DistinctTypeTestId.db2Type, id), Fragment.lit("")) .query(DistinctTypeTestRow._rowParser.first()) .runUnchecked(c); @@ -130,7 +130,7 @@ public Optional selectById(DistinctTypeTestId id, Connectio public List selectByIds(DistinctTypeTestId[] ids, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : ids) { - fragments.add(Fragment.encode(DistinctTypeTestId.dbType, id)); + fragments.add(Fragment.encode(DistinctTypeTestId.db2Type, id)); } ; return Fragment.interpolate( @@ -167,11 +167,11 @@ public Boolean update(DistinctTypeTestRow row, Connection c) { ; return interpolate( Fragment.lit("update \"DISTINCT_TYPE_TEST\"\nset \"EMAIL\" = "), - Fragment.encode(EmailAddress.dbType, row.email()), + Fragment.encode(EmailAddress.db2Type, row.email()), Fragment.lit(",\n\"BALANCE\" = "), - Fragment.encode(MoneyAmount.dbType.opt(), row.balance()), + Fragment.encode(MoneyAmount.db2Type.opt(), row.balance()), Fragment.lit("\nwhere \"ID\" = "), - Fragment.encode(DistinctTypeTestId.dbType, id), + Fragment.encode(DistinctTypeTestId.db2Type, id), Fragment.lit("")) .update() .runUnchecked(c) @@ -182,22 +182,22 @@ public Boolean update(DistinctTypeTestRow row, Connection c) { public void upsert(DistinctTypeTestRow unsaved, Connection c) { interpolate( Fragment.lit("MERGE INTO \"DISTINCT_TYPE_TEST\" AS t\nUSING (VALUES ("), - Fragment.encode(DistinctTypeTestId.dbType, unsaved.id()), + Fragment.encode(DistinctTypeTestId.db2Type, unsaved.id()), Fragment.lit(", "), - Fragment.encode(EmailAddress.dbType, unsaved.email()), + Fragment.encode(EmailAddress.db2Type, unsaved.email()), Fragment.lit(", "), - Fragment.encode(MoneyAmount.dbType.opt(), unsaved.balance()), + Fragment.encode(MoneyAmount.db2Type.opt(), unsaved.balance()), Fragment.lit( ")) AS s(\"ID\", \"EMAIL\", \"BALANCE\")\n" + "ON t.\"ID\" = s.\"ID\"\n" + "WHEN MATCHED THEN UPDATE SET \"EMAIL\" = s.\"EMAIL\",\n" + "\"BALANCE\" = s.\"BALANCE\"\n" + "WHEN NOT MATCHED THEN INSERT (\"ID\", \"EMAIL\", \"BALANCE\") VALUES ("), - Fragment.encode(DistinctTypeTestId.dbType, unsaved.id()), + Fragment.encode(DistinctTypeTestId.db2Type, unsaved.id()), Fragment.lit(", "), - Fragment.encode(EmailAddress.dbType, unsaved.email()), + Fragment.encode(EmailAddress.db2Type, unsaved.email()), Fragment.lit(", "), - Fragment.encode(MoneyAmount.dbType.opt(), unsaved.balance()), + Fragment.encode(MoneyAmount.db2Type.opt(), unsaved.balance()), Fragment.lit(")")) .update() .runUnchecked(c); diff --git a/testers/db2/java/generated-and-checked-in/testdb/distinct_type_test/DistinctTypeTestRow.java b/testers/db2/java/generated-and-checked-in/testdb/distinct_type_test/DistinctTypeTestRow.java index 3ed9cbb784..a398760ab7 100644 --- a/testers/db2/java/generated-and-checked-in/testdb/distinct_type_test/DistinctTypeTestRow.java +++ b/testers/db2/java/generated-and-checked-in/testdb/distinct_type_test/DistinctTypeTestRow.java @@ -38,9 +38,9 @@ public DistinctTypeTestRow withBalance(Optional balance) { public static RowParser _rowParser = RowParsers.of( - DistinctTypeTestId.dbType, - EmailAddress.dbType, - MoneyAmount.dbType.opt(), + DistinctTypeTestId.db2Type, + EmailAddress.db2Type, + MoneyAmount.db2Type.opt(), DistinctTypeTestRow::new, row -> new Object[] {row.id(), row.email(), row.balance()}); ; diff --git a/testers/db2/java/generated-and-checked-in/testdb/identity_params_test/IdentityParamsTestFields.java b/testers/db2/java/generated-and-checked-in/testdb/identity_params_test/IdentityParamsTestFields.java index 48db7bb810..a91c9d0433 100644 --- a/testers/db2/java/generated-and-checked-in/testdb/identity_params_test/IdentityParamsTestFields.java +++ b/testers/db2/java/generated-and-checked-in/testdb/identity_params_test/IdentityParamsTestFields.java @@ -38,7 +38,7 @@ public IdField id() { Optional.empty(), Optional.empty(), (row, value) -> row.withId(value), - IdentityParamsTestId.dbType); + IdentityParamsTestId.db2Type); } public Field name() { diff --git a/testers/db2/java/generated-and-checked-in/testdb/identity_params_test/IdentityParamsTestId.java b/testers/db2/java/generated-and-checked-in/testdb/identity_params_test/IdentityParamsTestId.java index 25da130876..41942d1711 100644 --- a/testers/db2/java/generated-and-checked-in/testdb/identity_params_test/IdentityParamsTestId.java +++ b/testers/db2/java/generated-and-checked-in/testdb/identity_params_test/IdentityParamsTestId.java @@ -26,6 +26,6 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(IdentityParamsTestId::value, IdentityParamsTestId::new); - public static Db2Type dbType = + public static Db2Type db2Type = Db2Types.integer.bimap(IdentityParamsTestId::new, IdentityParamsTestId::value); } diff --git a/testers/db2/java/generated-and-checked-in/testdb/identity_params_test/IdentityParamsTestRepoImpl.java b/testers/db2/java/generated-and-checked-in/testdb/identity_params_test/IdentityParamsTestRepoImpl.java index 0663bea318..c57fc82629 100644 --- a/testers/db2/java/generated-and-checked-in/testdb/identity_params_test/IdentityParamsTestRepoImpl.java +++ b/testers/db2/java/generated-and-checked-in/testdb/identity_params_test/IdentityParamsTestRepoImpl.java @@ -32,7 +32,7 @@ public DeleteBuilder delete() { public Boolean deleteById(IdentityParamsTestId id, Connection c) { return interpolate( Fragment.lit("delete from \"IDENTITY_PARAMS_TEST\" where \"ID\" = "), - Fragment.encode(IdentityParamsTestId.dbType, id), + Fragment.encode(IdentityParamsTestId.db2Type, id), Fragment.lit("")) .update() .runUnchecked(c) @@ -43,7 +43,7 @@ public Boolean deleteById(IdentityParamsTestId id, Connection c) { public Integer deleteByIds(IdentityParamsTestId[] ids, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : ids) { - fragments.add(Fragment.encode(IdentityParamsTestId.dbType, id)); + fragments.add(Fragment.encode(IdentityParamsTestId.db2Type, id)); } ; return Fragment.interpolate( @@ -107,7 +107,7 @@ public List selectAll(Connection c) { public Optional selectById(IdentityParamsTestId id, Connection c) { return interpolate( Fragment.lit("select \"ID\", \"NAME\"\nfrom \"IDENTITY_PARAMS_TEST\"\nwhere \"ID\" = "), - Fragment.encode(IdentityParamsTestId.dbType, id), + Fragment.encode(IdentityParamsTestId.db2Type, id), Fragment.lit("")) .query(IdentityParamsTestRow._rowParser.first()) .runUnchecked(c); @@ -117,7 +117,7 @@ public Optional selectById(IdentityParamsTestId id, Conne public List selectByIds(IdentityParamsTestId[] ids, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : ids) { - fragments.add(Fragment.encode(IdentityParamsTestId.dbType, id)); + fragments.add(Fragment.encode(IdentityParamsTestId.db2Type, id)); } ; return Fragment.interpolate( @@ -154,7 +154,7 @@ public Boolean update(IdentityParamsTestRow row, Connection c) { Fragment.lit("update \"IDENTITY_PARAMS_TEST\"\nset \"NAME\" = "), Fragment.encode(Db2Types.varchar, row.name()), Fragment.lit("\nwhere \"ID\" = "), - Fragment.encode(IdentityParamsTestId.dbType, id), + Fragment.encode(IdentityParamsTestId.db2Type, id), Fragment.lit("")) .update() .runUnchecked(c) @@ -165,7 +165,7 @@ public Boolean update(IdentityParamsTestRow row, Connection c) { public void upsert(IdentityParamsTestRow unsaved, Connection c) { interpolate( Fragment.lit("MERGE INTO \"IDENTITY_PARAMS_TEST\" AS t\nUSING (VALUES ("), - Fragment.encode(IdentityParamsTestId.dbType, unsaved.id()), + Fragment.encode(IdentityParamsTestId.db2Type, unsaved.id()), Fragment.lit(", "), Fragment.encode(Db2Types.varchar, unsaved.name()), Fragment.lit( @@ -173,7 +173,7 @@ public void upsert(IdentityParamsTestRow unsaved, Connection c) { + "ON t.\"ID\" = s.\"ID\"\n" + "WHEN MATCHED THEN UPDATE SET \"NAME\" = s.\"NAME\"\n" + "WHEN NOT MATCHED THEN INSERT (\"ID\", \"NAME\") VALUES ("), - Fragment.encode(IdentityParamsTestId.dbType, unsaved.id()), + Fragment.encode(IdentityParamsTestId.db2Type, unsaved.id()), Fragment.lit(", "), Fragment.encode(Db2Types.varchar, unsaved.name()), Fragment.lit(")")) diff --git a/testers/db2/java/generated-and-checked-in/testdb/identity_params_test/IdentityParamsTestRow.java b/testers/db2/java/generated-and-checked-in/testdb/identity_params_test/IdentityParamsTestRow.java index aa6b9f7f06..5080d8557d 100644 --- a/testers/db2/java/generated-and-checked-in/testdb/identity_params_test/IdentityParamsTestRow.java +++ b/testers/db2/java/generated-and-checked-in/testdb/identity_params_test/IdentityParamsTestRow.java @@ -29,7 +29,7 @@ public IdentityParamsTestRow withName(String name) { public static RowParser _rowParser = RowParsers.of( - IdentityParamsTestId.dbType, + IdentityParamsTestId.db2Type, Db2Types.varchar, IdentityParamsTestRow::new, row -> new Object[] {row.id(), row.name()}); diff --git a/testers/db2/java/generated-and-checked-in/testdb/order_items/OrderItemsFields.java b/testers/db2/java/generated-and-checked-in/testdb/order_items/OrderItemsFields.java index d321bc5ece..5a53f22d25 100644 --- a/testers/db2/java/generated-and-checked-in/testdb/order_items/OrderItemsFields.java +++ b/testers/db2/java/generated-and-checked-in/testdb/order_items/OrderItemsFields.java @@ -43,7 +43,7 @@ public IdField orderId() { Optional.empty(), Optional.empty(), (row, value) -> row.withOrderId(value), - OrdersId.dbType); + OrdersId.db2Type); } public IdField itemNumber() { diff --git a/testers/db2/java/generated-and-checked-in/testdb/order_items/OrderItemsId.java b/testers/db2/java/generated-and-checked-in/testdb/order_items/OrderItemsId.java index 803e59e1d8..f213cfda3d 100644 --- a/testers/db2/java/generated-and-checked-in/testdb/order_items/OrderItemsId.java +++ b/testers/db2/java/generated-and-checked-in/testdb/order_items/OrderItemsId.java @@ -28,7 +28,7 @@ public OrderItemsId withItemNumber(Integer itemNumber) { public static RowParser _rowParser = RowParsers.of( - OrdersId.dbType, + OrdersId.db2Type, Db2Types.integer, OrderItemsId::new, row -> new Object[] {row.orderId(), row.itemNumber()}); diff --git a/testers/db2/java/generated-and-checked-in/testdb/order_items/OrderItemsRepoImpl.java b/testers/db2/java/generated-and-checked-in/testdb/order_items/OrderItemsRepoImpl.java index 894c991825..933678841e 100644 --- a/testers/db2/java/generated-and-checked-in/testdb/order_items/OrderItemsRepoImpl.java +++ b/testers/db2/java/generated-and-checked-in/testdb/order_items/OrderItemsRepoImpl.java @@ -32,7 +32,7 @@ public DeleteBuilder delete() { public Boolean deleteById(OrderItemsId compositeId, Connection c) { return interpolate( Fragment.lit("delete from \"ORDER_ITEMS\" where \"ORDER_ID\" = "), - Fragment.encode(OrdersId.dbType, compositeId.orderId()), + Fragment.encode(OrdersId.db2Type, compositeId.orderId()), Fragment.lit(" AND \"ITEM_NUMBER\" = "), Fragment.encode(Db2Types.integer, compositeId.itemNumber()), Fragment.lit("")) @@ -48,7 +48,7 @@ public Integer deleteByIds(OrderItemsId[] compositeIds, Connection c) { fragments.add( Fragment.interpolate( Fragment.lit("("), - Fragment.encode(OrdersId.dbType, id.orderId()), + Fragment.encode(OrdersId.db2Type, id.orderId()), Fragment.lit(", "), Fragment.encode(Db2Types.integer, id.itemNumber()), Fragment.lit(")"))); @@ -70,7 +70,7 @@ public OrderItemsRow insert(OrderItemsRow unsaved, Connection c) { + " \"UNIT_PRICE\" FROM FINAL TABLE (INSERT INTO \"ORDER_ITEMS\"(\"ORDER_ID\"," + " \"ITEM_NUMBER\", \"PRODUCT_NAME\", \"QUANTITY\", \"UNIT_PRICE\")\n" + "VALUES ("), - Fragment.encode(OrdersId.dbType, unsaved.orderId()), + Fragment.encode(OrdersId.db2Type, unsaved.orderId()), Fragment.lit(", "), Fragment.encode(Db2Types.integer, unsaved.itemNumber()), Fragment.lit(", "), @@ -109,7 +109,7 @@ public Optional selectById(OrderItemsId compositeId, Connection c + " \"UNIT_PRICE\"\n" + "from \"ORDER_ITEMS\"\n" + "where \"ORDER_ID\" = "), - Fragment.encode(OrdersId.dbType, compositeId.orderId()), + Fragment.encode(OrdersId.db2Type, compositeId.orderId()), Fragment.lit(" AND \"ITEM_NUMBER\" = "), Fragment.encode(Db2Types.integer, compositeId.itemNumber()), Fragment.lit("")) @@ -124,7 +124,7 @@ public List selectByIds(OrderItemsId[] compositeIds, Connection c fragments.add( Fragment.interpolate( Fragment.lit("("), - Fragment.encode(OrdersId.dbType, id.orderId()), + Fragment.encode(OrdersId.db2Type, id.orderId()), Fragment.lit(", "), Fragment.encode(Db2Types.integer, id.itemNumber()), Fragment.lit(")"))); @@ -167,7 +167,7 @@ public Boolean update(OrderItemsRow row, Connection c) { Fragment.lit(",\n\"UNIT_PRICE\" = "), Fragment.encode(Db2Types.decimal, row.unitPrice()), Fragment.lit("\nwhere \"ORDER_ID\" = "), - Fragment.encode(OrdersId.dbType, compositeId.orderId()), + Fragment.encode(OrdersId.db2Type, compositeId.orderId()), Fragment.lit(" AND \"ITEM_NUMBER\" = "), Fragment.encode(Db2Types.integer, compositeId.itemNumber()), Fragment.lit("")) @@ -180,7 +180,7 @@ public Boolean update(OrderItemsRow row, Connection c) { public void upsert(OrderItemsRow unsaved, Connection c) { interpolate( Fragment.lit("MERGE INTO \"ORDER_ITEMS\" AS t\nUSING (VALUES ("), - Fragment.encode(OrdersId.dbType, unsaved.orderId()), + Fragment.encode(OrdersId.db2Type, unsaved.orderId()), Fragment.lit(", "), Fragment.encode(Db2Types.integer, unsaved.itemNumber()), Fragment.lit(", "), @@ -199,7 +199,7 @@ public void upsert(OrderItemsRow unsaved, Connection c) { + "\"UNIT_PRICE\" = s.\"UNIT_PRICE\"\n" + "WHEN NOT MATCHED THEN INSERT (\"ORDER_ID\", \"ITEM_NUMBER\"," + " \"PRODUCT_NAME\", \"QUANTITY\", \"UNIT_PRICE\") VALUES ("), - Fragment.encode(OrdersId.dbType, unsaved.orderId()), + Fragment.encode(OrdersId.db2Type, unsaved.orderId()), Fragment.lit(", "), Fragment.encode(Db2Types.integer, unsaved.itemNumber()), Fragment.lit(", "), diff --git a/testers/db2/java/generated-and-checked-in/testdb/order_items/OrderItemsRow.java b/testers/db2/java/generated-and-checked-in/testdb/order_items/OrderItemsRow.java index 409c701eb2..bb973a83b8 100644 --- a/testers/db2/java/generated-and-checked-in/testdb/order_items/OrderItemsRow.java +++ b/testers/db2/java/generated-and-checked-in/testdb/order_items/OrderItemsRow.java @@ -50,7 +50,7 @@ public OrderItemsRow withUnitPrice(BigDecimal unitPrice) { public static RowParser _rowParser = RowParsers.of( - OrdersId.dbType, + OrdersId.db2Type, Db2Types.integer, Db2Types.varchar, Db2Types.integer, diff --git a/testers/db2/java/generated-and-checked-in/testdb/orders/OrdersFields.java b/testers/db2/java/generated-and-checked-in/testdb/orders/OrdersFields.java index 486a645fe0..f249e87a5f 100644 --- a/testers/db2/java/generated-and-checked-in/testdb/orders/OrdersFields.java +++ b/testers/db2/java/generated-and-checked-in/testdb/orders/OrdersFields.java @@ -43,7 +43,7 @@ public IdField orderId() { Optional.empty(), Optional.empty(), (row, value) -> row.withOrderId(value), - OrdersId.dbType); + OrdersId.db2Type); } public Field customerId() { @@ -54,7 +54,7 @@ public Field customerId() { Optional.empty(), Optional.empty(), (row, value) -> row.withCustomerId(value), - CustomersId.dbType); + CustomersId.db2Type); } public Field orderDate() { diff --git a/testers/db2/java/generated-and-checked-in/testdb/orders/OrdersId.java b/testers/db2/java/generated-and-checked-in/testdb/orders/OrdersId.java index 5e40451e4a..7273a83515 100644 --- a/testers/db2/java/generated-and-checked-in/testdb/orders/OrdersId.java +++ b/testers/db2/java/generated-and-checked-in/testdb/orders/OrdersId.java @@ -26,5 +26,5 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(OrdersId::value, OrdersId::new); - public static Db2Type dbType = Db2Types.integer.bimap(OrdersId::new, OrdersId::value); + public static Db2Type db2Type = Db2Types.integer.bimap(OrdersId::new, OrdersId::value); } diff --git a/testers/db2/java/generated-and-checked-in/testdb/orders/OrdersRepoImpl.java b/testers/db2/java/generated-and-checked-in/testdb/orders/OrdersRepoImpl.java index 2fffc8f1b5..9d9a6df4fc 100644 --- a/testers/db2/java/generated-and-checked-in/testdb/orders/OrdersRepoImpl.java +++ b/testers/db2/java/generated-and-checked-in/testdb/orders/OrdersRepoImpl.java @@ -32,7 +32,7 @@ public DeleteBuilder delete() { public Boolean deleteById(OrdersId orderId, Connection c) { return interpolate( Fragment.lit("delete from \"ORDERS\" where \"ORDER_ID\" = "), - Fragment.encode(OrdersId.dbType, orderId), + Fragment.encode(OrdersId.db2Type, orderId), Fragment.lit("")) .update() .runUnchecked(c) @@ -43,7 +43,7 @@ public Boolean deleteById(OrdersId orderId, Connection c) { public Integer deleteByIds(OrdersId[] orderIds, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : orderIds) { - fragments.add(Fragment.encode(OrdersId.dbType, id)); + fragments.add(Fragment.encode(OrdersId.db2Type, id)); } ; return Fragment.interpolate( @@ -62,7 +62,7 @@ public OrdersRow insert(OrdersRow unsaved, Connection c) { + " FROM FINAL TABLE (INSERT INTO \"ORDERS\"(\"CUSTOMER_ID\", \"ORDER_DATE\"," + " \"TOTAL_AMOUNT\", \"STATUS\")\n" + "VALUES ("), - Fragment.encode(CustomersId.dbType, unsaved.customerId()), + Fragment.encode(CustomersId.db2Type, unsaved.customerId()), Fragment.lit(", "), Fragment.encode(Db2Types.date, unsaved.orderDate()), Fragment.lit(", "), @@ -82,7 +82,7 @@ public OrdersRow insert(OrdersRowUnsaved unsaved, Connection c) { ; columns.add(Fragment.lit("\"CUSTOMER_ID\"")); values.add( - interpolate(Fragment.encode(CustomersId.dbType, unsaved.customerId()), Fragment.lit(""))); + interpolate(Fragment.encode(CustomersId.db2Type, unsaved.customerId()), Fragment.lit(""))); columns.add(Fragment.lit("\"TOTAL_AMOUNT\"")); values.add( interpolate( @@ -144,7 +144,7 @@ public Optional selectById(OrdersId orderId, Connection c) { + " \"STATUS\"\n" + "from \"ORDERS\"\n" + "where \"ORDER_ID\" = "), - Fragment.encode(OrdersId.dbType, orderId), + Fragment.encode(OrdersId.db2Type, orderId), Fragment.lit("")) .query(OrdersRow._rowParser.first()) .runUnchecked(c); @@ -154,7 +154,7 @@ public Optional selectById(OrdersId orderId, Connection c) { public List selectByIds(OrdersId[] orderIds, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : orderIds) { - fragments.add(Fragment.encode(OrdersId.dbType, id)); + fragments.add(Fragment.encode(OrdersId.db2Type, id)); } ; return Fragment.interpolate( @@ -186,7 +186,7 @@ public Boolean update(OrdersRow row, Connection c) { ; return interpolate( Fragment.lit("update \"ORDERS\"\nset \"CUSTOMER_ID\" = "), - Fragment.encode(CustomersId.dbType, row.customerId()), + Fragment.encode(CustomersId.db2Type, row.customerId()), Fragment.lit(",\n\"ORDER_DATE\" = "), Fragment.encode(Db2Types.date, row.orderDate()), Fragment.lit(",\n\"TOTAL_AMOUNT\" = "), @@ -194,7 +194,7 @@ public Boolean update(OrdersRow row, Connection c) { Fragment.lit(",\n\"STATUS\" = "), Fragment.encode(Db2Types.varchar.opt(), row.status()), Fragment.lit("\nwhere \"ORDER_ID\" = "), - Fragment.encode(OrdersId.dbType, orderId), + Fragment.encode(OrdersId.db2Type, orderId), Fragment.lit("")) .update() .runUnchecked(c) @@ -205,9 +205,9 @@ public Boolean update(OrdersRow row, Connection c) { public void upsert(OrdersRow unsaved, Connection c) { interpolate( Fragment.lit("MERGE INTO \"ORDERS\" AS t\nUSING (VALUES ("), - Fragment.encode(OrdersId.dbType, unsaved.orderId()), + Fragment.encode(OrdersId.db2Type, unsaved.orderId()), Fragment.lit(", "), - Fragment.encode(CustomersId.dbType, unsaved.customerId()), + Fragment.encode(CustomersId.db2Type, unsaved.customerId()), Fragment.lit(", "), Fragment.encode(Db2Types.date, unsaved.orderDate()), Fragment.lit(", "), @@ -224,9 +224,9 @@ public void upsert(OrdersRow unsaved, Connection c) { + "\"STATUS\" = s.\"STATUS\"\n" + "WHEN NOT MATCHED THEN INSERT (\"ORDER_ID\", \"CUSTOMER_ID\", \"ORDER_DATE\"," + " \"TOTAL_AMOUNT\", \"STATUS\") VALUES ("), - Fragment.encode(OrdersId.dbType, unsaved.orderId()), + Fragment.encode(OrdersId.db2Type, unsaved.orderId()), Fragment.lit(", "), - Fragment.encode(CustomersId.dbType, unsaved.customerId()), + Fragment.encode(CustomersId.db2Type, unsaved.customerId()), Fragment.lit(", "), Fragment.encode(Db2Types.date, unsaved.orderDate()), Fragment.lit(", "), diff --git a/testers/db2/java/generated-and-checked-in/testdb/orders/OrdersRow.java b/testers/db2/java/generated-and-checked-in/testdb/orders/OrdersRow.java index f5b63d8d38..e136ab47ef 100644 --- a/testers/db2/java/generated-and-checked-in/testdb/orders/OrdersRow.java +++ b/testers/db2/java/generated-and-checked-in/testdb/orders/OrdersRow.java @@ -61,8 +61,8 @@ public OrdersRow withStatus(Optional status) { public static RowParser _rowParser = RowParsers.of( - OrdersId.dbType, - CustomersId.dbType, + OrdersId.db2Type, + CustomersId.db2Type, Db2Types.date, Db2Types.decimal.opt(), Db2Types.varchar.opt(), diff --git a/testers/db2/kotlin/generated-and-checked-in/testdb/EmailAddress.kt b/testers/db2/kotlin/generated-and-checked-in/testdb/EmailAddress.kt index aadcdf3c1c..97f844f453 100644 --- a/testers/db2/kotlin/generated-and-checked-in/testdb/EmailAddress.kt +++ b/testers/db2/kotlin/generated-and-checked-in/testdb/EmailAddress.kt @@ -18,7 +18,7 @@ data class EmailAddress(@field:JsonValue val value: String) { val bijection: Bijection = Bijection.of(EmailAddress::value, ::EmailAddress) - val dbType: Db2Type = + val db2Type: Db2Type = Db2Types.varchar.bimap(::EmailAddress, EmailAddress::value).renamed("\"EMAIL_ADDRESS\"") } } \ No newline at end of file diff --git a/testers/db2/kotlin/generated-and-checked-in/testdb/MoneyAmount.kt b/testers/db2/kotlin/generated-and-checked-in/testdb/MoneyAmount.kt index 1bfb63d17e..15f5c17f0c 100644 --- a/testers/db2/kotlin/generated-and-checked-in/testdb/MoneyAmount.kt +++ b/testers/db2/kotlin/generated-and-checked-in/testdb/MoneyAmount.kt @@ -19,7 +19,7 @@ data class MoneyAmount(@field:JsonValue val value: BigDecimal) { val bijection: Bijection = Bijection.of(MoneyAmount::value, ::MoneyAmount) - val dbType: Db2Type = + val db2Type: Db2Type = KotlinDbTypes.Db2Types.decimal.bimap(::MoneyAmount, MoneyAmount::value).renamed("\"MONEY_AMOUNT\"") } } \ No newline at end of file diff --git a/testers/db2/kotlin/generated-and-checked-in/testdb/check_constraint_test/CheckConstraintTestFields.kt b/testers/db2/kotlin/generated-and-checked-in/testdb/check_constraint_test/CheckConstraintTestFields.kt index d07978db09..32ea98d51b 100644 --- a/testers/db2/kotlin/generated-and-checked-in/testdb/check_constraint_test/CheckConstraintTestFields.kt +++ b/testers/db2/kotlin/generated-and-checked-in/testdb/check_constraint_test/CheckConstraintTestFields.kt @@ -35,7 +35,7 @@ data class CheckConstraintTestFields(val _path: List) : TupleExpr4> = listOf(this.id().underlying, this.age().underlying, this.status().underlying, this.price().underlying) - fun id(): IdField = IdField(_path, "ID", CheckConstraintTestRow::id, null, null, { row, value -> row.copy(id = value) }, CheckConstraintTestId.dbType) + fun id(): IdField = IdField(_path, "ID", CheckConstraintTestRow::id, null, null, { row, value -> row.copy(id = value) }, CheckConstraintTestId.db2Type) fun price(): OptField = OptField(_path, "PRICE", CheckConstraintTestRow::price, null, null, { row, value -> row.copy(price = value) }, KotlinDbTypes.Db2Types.decimal) diff --git a/testers/db2/kotlin/generated-and-checked-in/testdb/check_constraint_test/CheckConstraintTestId.kt b/testers/db2/kotlin/generated-and-checked-in/testdb/check_constraint_test/CheckConstraintTestId.kt index 547118eae4..f0e8c8eecb 100644 --- a/testers/db2/kotlin/generated-and-checked-in/testdb/check_constraint_test/CheckConstraintTestId.kt +++ b/testers/db2/kotlin/generated-and-checked-in/testdb/check_constraint_test/CheckConstraintTestId.kt @@ -20,7 +20,7 @@ data class CheckConstraintTestId(@field:JsonValue val value: Int) { val bijection: Bijection = Bijection.of(CheckConstraintTestId::value, ::CheckConstraintTestId) - val dbType: Db2Type = + val db2Type: Db2Type = KotlinDbTypes.Db2Types.integer.bimap(::CheckConstraintTestId, CheckConstraintTestId::value) } } \ No newline at end of file diff --git a/testers/db2/kotlin/generated-and-checked-in/testdb/check_constraint_test/CheckConstraintTestRepoImpl.kt b/testers/db2/kotlin/generated-and-checked-in/testdb/check_constraint_test/CheckConstraintTestRepoImpl.kt index a8cd567423..84890379d8 100644 --- a/testers/db2/kotlin/generated-and-checked-in/testdb/check_constraint_test/CheckConstraintTestRepoImpl.kt +++ b/testers/db2/kotlin/generated-and-checked-in/testdb/check_constraint_test/CheckConstraintTestRepoImpl.kt @@ -26,21 +26,21 @@ class CheckConstraintTestRepoImpl() : CheckConstraintTestRepo { override fun deleteById( id: CheckConstraintTestId, c: Connection - ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"CHECK_CONSTRAINT_TEST\" where \"ID\" = "), Fragment.encode(CheckConstraintTestId.dbType, id), Fragment.lit("")).update().runUnchecked(c) > 0 + ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"CHECK_CONSTRAINT_TEST\" where \"ID\" = "), Fragment.encode(CheckConstraintTestId.db2Type, id), Fragment.lit("")).update().runUnchecked(c) > 0 override fun deleteByIds( ids: Array, c: Connection ): Int { val fragments: ArrayList = ArrayList() - for (id in ids) { fragments.add(Fragment.encode(CheckConstraintTestId.dbType, id)) } + for (id in ids) { fragments.add(Fragment.encode(CheckConstraintTestId.db2Type, id)) } return Fragment.interpolate(Fragment.lit("delete from \"CHECK_CONSTRAINT_TEST\" where \"ID\" in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).update().runUnchecked(c) } override fun insert( unsaved: CheckConstraintTestRow, c: Connection - ): CheckConstraintTestRow = Fragment.interpolate(Fragment.lit("SELECT \"ID\", \"AGE\", \"STATUS\", \"PRICE\" FROM FINAL TABLE (INSERT INTO \"CHECK_CONSTRAINT_TEST\"(\"ID\", \"AGE\", \"STATUS\", \"PRICE\")\nVALUES ("), Fragment.encode(CheckConstraintTestId.dbType, unsaved.id), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.integer, unsaved.age), Fragment.lit(", "), Fragment.encode(Db2Types.varchar, unsaved.status), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.decimal.nullable(), unsaved.price), Fragment.lit("))\n")) + ): CheckConstraintTestRow = Fragment.interpolate(Fragment.lit("SELECT \"ID\", \"AGE\", \"STATUS\", \"PRICE\" FROM FINAL TABLE (INSERT INTO \"CHECK_CONSTRAINT_TEST\"(\"ID\", \"AGE\", \"STATUS\", \"PRICE\")\nVALUES ("), Fragment.encode(CheckConstraintTestId.db2Type, unsaved.id), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.integer, unsaved.age), Fragment.lit(", "), Fragment.encode(Db2Types.varchar, unsaved.status), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.decimal.nullable(), unsaved.price), Fragment.lit("))\n")) .updateReturning(CheckConstraintTestRow._rowParser.exactlyOne()).runUnchecked(c) override fun select(): SelectBuilder = SelectBuilder.of("\"CHECK_CONSTRAINT_TEST\"", CheckConstraintTestFields.structure, CheckConstraintTestRow._rowParser, Dialect.DB2) @@ -50,14 +50,14 @@ class CheckConstraintTestRepoImpl() : CheckConstraintTestRepo { override fun selectById( id: CheckConstraintTestId, c: Connection - ): CheckConstraintTestRow? = Fragment.interpolate(Fragment.lit("select \"ID\", \"AGE\", \"STATUS\", \"PRICE\"\nfrom \"CHECK_CONSTRAINT_TEST\"\nwhere \"ID\" = "), Fragment.encode(CheckConstraintTestId.dbType, id), Fragment.lit("")).query(CheckConstraintTestRow._rowParser.first()).runUnchecked(c) + ): CheckConstraintTestRow? = Fragment.interpolate(Fragment.lit("select \"ID\", \"AGE\", \"STATUS\", \"PRICE\"\nfrom \"CHECK_CONSTRAINT_TEST\"\nwhere \"ID\" = "), Fragment.encode(CheckConstraintTestId.db2Type, id), Fragment.lit("")).query(CheckConstraintTestRow._rowParser.first()).runUnchecked(c) override fun selectByIds( ids: Array, c: Connection ): List { val fragments: ArrayList = ArrayList() - for (id in ids) { fragments.add(Fragment.encode(CheckConstraintTestId.dbType, id)) } + for (id in ids) { fragments.add(Fragment.encode(CheckConstraintTestId.db2Type, id)) } return Fragment.interpolate(Fragment.lit("select \"ID\", \"AGE\", \"STATUS\", \"PRICE\" from \"CHECK_CONSTRAINT_TEST\" where \"ID\" in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).query(CheckConstraintTestRow._rowParser.all()).runUnchecked(c) } @@ -77,14 +77,14 @@ class CheckConstraintTestRepoImpl() : CheckConstraintTestRepo { c: Connection ): Boolean { val id: CheckConstraintTestId = row.id - return Fragment.interpolate(Fragment.lit("update \"CHECK_CONSTRAINT_TEST\"\nset \"AGE\" = "), Fragment.encode(KotlinDbTypes.Db2Types.integer, row.age), Fragment.lit(",\n\"STATUS\" = "), Fragment.encode(Db2Types.varchar, row.status), Fragment.lit(",\n\"PRICE\" = "), Fragment.encode(KotlinDbTypes.Db2Types.decimal.nullable(), row.price), Fragment.lit("\nwhere \"ID\" = "), Fragment.encode(CheckConstraintTestId.dbType, id), Fragment.lit("")).update().runUnchecked(c) > 0 + return Fragment.interpolate(Fragment.lit("update \"CHECK_CONSTRAINT_TEST\"\nset \"AGE\" = "), Fragment.encode(KotlinDbTypes.Db2Types.integer, row.age), Fragment.lit(",\n\"STATUS\" = "), Fragment.encode(Db2Types.varchar, row.status), Fragment.lit(",\n\"PRICE\" = "), Fragment.encode(KotlinDbTypes.Db2Types.decimal.nullable(), row.price), Fragment.lit("\nwhere \"ID\" = "), Fragment.encode(CheckConstraintTestId.db2Type, id), Fragment.lit("")).update().runUnchecked(c) > 0 } override fun upsert( unsaved: CheckConstraintTestRow, c: Connection ) { - Fragment.interpolate(Fragment.lit("MERGE INTO \"CHECK_CONSTRAINT_TEST\" AS t\nUSING (VALUES ("), Fragment.encode(CheckConstraintTestId.dbType, unsaved.id), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.integer, unsaved.age), Fragment.lit(", "), Fragment.encode(Db2Types.varchar, unsaved.status), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.decimal.nullable(), unsaved.price), Fragment.lit(")) AS s(\"ID\", \"AGE\", \"STATUS\", \"PRICE\")\nON t.\"ID\" = s.\"ID\"\nWHEN MATCHED THEN UPDATE SET \"AGE\" = s.\"AGE\",\n\"STATUS\" = s.\"STATUS\",\n\"PRICE\" = s.\"PRICE\"\nWHEN NOT MATCHED THEN INSERT (\"ID\", \"AGE\", \"STATUS\", \"PRICE\") VALUES ("), Fragment.encode(CheckConstraintTestId.dbType, unsaved.id), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.integer, unsaved.age), Fragment.lit(", "), Fragment.encode(Db2Types.varchar, unsaved.status), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.decimal.nullable(), unsaved.price), Fragment.lit(")")) + Fragment.interpolate(Fragment.lit("MERGE INTO \"CHECK_CONSTRAINT_TEST\" AS t\nUSING (VALUES ("), Fragment.encode(CheckConstraintTestId.db2Type, unsaved.id), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.integer, unsaved.age), Fragment.lit(", "), Fragment.encode(Db2Types.varchar, unsaved.status), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.decimal.nullable(), unsaved.price), Fragment.lit(")) AS s(\"ID\", \"AGE\", \"STATUS\", \"PRICE\")\nON t.\"ID\" = s.\"ID\"\nWHEN MATCHED THEN UPDATE SET \"AGE\" = s.\"AGE\",\n\"STATUS\" = s.\"STATUS\",\n\"PRICE\" = s.\"PRICE\"\nWHEN NOT MATCHED THEN INSERT (\"ID\", \"AGE\", \"STATUS\", \"PRICE\") VALUES ("), Fragment.encode(CheckConstraintTestId.db2Type, unsaved.id), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.integer, unsaved.age), Fragment.lit(", "), Fragment.encode(Db2Types.varchar, unsaved.status), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.decimal.nullable(), unsaved.price), Fragment.lit(")")) .update() .runUnchecked(c) } diff --git a/testers/db2/kotlin/generated-and-checked-in/testdb/check_constraint_test/CheckConstraintTestRow.kt b/testers/db2/kotlin/generated-and-checked-in/testdb/check_constraint_test/CheckConstraintTestRow.kt index cf4221dd9a..bb7b3c59a9 100644 --- a/testers/db2/kotlin/generated-and-checked-in/testdb/check_constraint_test/CheckConstraintTestRow.kt +++ b/testers/db2/kotlin/generated-and-checked-in/testdb/check_constraint_test/CheckConstraintTestRow.kt @@ -35,6 +35,6 @@ data class CheckConstraintTestRow( override fun _4(): BigDecimal? = price companion object { - val _rowParser: RowParser = RowParsers.of(CheckConstraintTestId.dbType, KotlinDbTypes.Db2Types.integer, Db2Types.varchar, KotlinDbTypes.Db2Types.decimal.nullable(), { t0, t1, t2, t3 -> CheckConstraintTestRow(t0, t1, t2, t3) }, { row -> arrayOf(row.id, row.age, row.status, row.price) }) + val _rowParser: RowParser = RowParsers.of(CheckConstraintTestId.db2Type, KotlinDbTypes.Db2Types.integer, Db2Types.varchar, KotlinDbTypes.Db2Types.decimal.nullable(), { t0, t1, t2, t3 -> CheckConstraintTestRow(t0, t1, t2, t3) }, { row -> arrayOf(row.id, row.age, row.status, row.price) }) } } \ No newline at end of file diff --git a/testers/db2/kotlin/generated-and-checked-in/testdb/customers/CustomersFields.kt b/testers/db2/kotlin/generated-and-checked-in/testdb/customers/CustomersFields.kt index 61bb20e038..5e16fc8f45 100644 --- a/testers/db2/kotlin/generated-and-checked-in/testdb/customers/CustomersFields.kt +++ b/testers/db2/kotlin/generated-and-checked-in/testdb/customers/CustomersFields.kt @@ -34,7 +34,7 @@ data class CustomersFields(val _path: List) : TupleExpr4 = OptField(_path, "CREATED_AT", CustomersRow::createdAt, null, null, { row, value -> row.copy(createdAt = value) }, Db2Types.timestamp) - fun customerId(): IdField = IdField(_path, "CUSTOMER_ID", CustomersRow::customerId, null, null, { row, value -> row.copy(customerId = value) }, CustomersId.dbType) + fun customerId(): IdField = IdField(_path, "CUSTOMER_ID", CustomersRow::customerId, null, null, { row, value -> row.copy(customerId = value) }, CustomersId.db2Type) fun email(): Field = Field(_path, "EMAIL", CustomersRow::email, null, null, { row, value -> row.copy(email = value) }, Db2Types.varchar) diff --git a/testers/db2/kotlin/generated-and-checked-in/testdb/customers/CustomersId.kt b/testers/db2/kotlin/generated-and-checked-in/testdb/customers/CustomersId.kt index 0bd7ab34cd..abdbaa76fd 100644 --- a/testers/db2/kotlin/generated-and-checked-in/testdb/customers/CustomersId.kt +++ b/testers/db2/kotlin/generated-and-checked-in/testdb/customers/CustomersId.kt @@ -20,7 +20,7 @@ data class CustomersId(@field:JsonValue val value: Int) { val bijection: Bijection = Bijection.of(CustomersId::value, ::CustomersId) - val dbType: Db2Type = + val db2Type: Db2Type = KotlinDbTypes.Db2Types.integer.bimap(::CustomersId, CustomersId::value) } } \ No newline at end of file diff --git a/testers/db2/kotlin/generated-and-checked-in/testdb/customers/CustomersRepoImpl.kt b/testers/db2/kotlin/generated-and-checked-in/testdb/customers/CustomersRepoImpl.kt index 1bd53fc253..40ce7311b2 100644 --- a/testers/db2/kotlin/generated-and-checked-in/testdb/customers/CustomersRepoImpl.kt +++ b/testers/db2/kotlin/generated-and-checked-in/testdb/customers/CustomersRepoImpl.kt @@ -25,21 +25,21 @@ class CustomersRepoImpl() : CustomersRepo { override fun deleteById( customerId: CustomersId, c: Connection - ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"CUSTOMERS\" where \"CUSTOMER_ID\" = "), Fragment.encode(CustomersId.dbType, customerId), Fragment.lit("")).update().runUnchecked(c) > 0 + ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"CUSTOMERS\" where \"CUSTOMER_ID\" = "), Fragment.encode(CustomersId.db2Type, customerId), Fragment.lit("")).update().runUnchecked(c) > 0 override fun deleteByIds( customerIds: Array, c: Connection ): Int { val fragments: ArrayList = ArrayList() - for (id in customerIds) { fragments.add(Fragment.encode(CustomersId.dbType, id)) } + for (id in customerIds) { fragments.add(Fragment.encode(CustomersId.db2Type, id)) } return Fragment.interpolate(Fragment.lit("delete from \"CUSTOMERS\" where \"CUSTOMER_ID\" in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).update().runUnchecked(c) } override fun insert( unsaved: CustomersRow, c: Connection - ): CustomersRow = Fragment.interpolate(Fragment.lit("SELECT \"CUSTOMER_ID\", \"NAME\", \"EMAIL\", \"CREATED_AT\" FROM FINAL TABLE (INSERT INTO \"CUSTOMERS\"(\"CUSTOMER_ID\", \"NAME\", \"EMAIL\", \"CREATED_AT\")\nVALUES ("), Fragment.encode(CustomersId.dbType, unsaved.customerId), Fragment.lit(", "), Fragment.encode(Db2Types.varchar, unsaved.name), Fragment.lit(", "), Fragment.encode(Db2Types.varchar, unsaved.email), Fragment.lit(", "), Fragment.encode(Db2Types.timestamp.nullable(), unsaved.createdAt), Fragment.lit("))\n")) + ): CustomersRow = Fragment.interpolate(Fragment.lit("SELECT \"CUSTOMER_ID\", \"NAME\", \"EMAIL\", \"CREATED_AT\" FROM FINAL TABLE (INSERT INTO \"CUSTOMERS\"(\"CUSTOMER_ID\", \"NAME\", \"EMAIL\", \"CREATED_AT\")\nVALUES ("), Fragment.encode(CustomersId.db2Type, unsaved.customerId), Fragment.lit(", "), Fragment.encode(Db2Types.varchar, unsaved.name), Fragment.lit(", "), Fragment.encode(Db2Types.varchar, unsaved.email), Fragment.lit(", "), Fragment.encode(Db2Types.timestamp.nullable(), unsaved.createdAt), Fragment.lit("))\n")) .updateReturning(CustomersRow._rowParser.exactlyOne()).runUnchecked(c) override fun insert( @@ -55,7 +55,7 @@ class CustomersRepoImpl() : CustomersRepo { unsaved.customerId.visit( { }, { value -> columns.add(Fragment.lit("\"CUSTOMER_ID\"")) - values.add(Fragment.interpolate(Fragment.encode(CustomersId.dbType, value), Fragment.lit(""))) } + values.add(Fragment.interpolate(Fragment.encode(CustomersId.db2Type, value), Fragment.lit(""))) } ); unsaved.createdAt.visit( { }, @@ -73,14 +73,14 @@ class CustomersRepoImpl() : CustomersRepo { override fun selectById( customerId: CustomersId, c: Connection - ): CustomersRow? = Fragment.interpolate(Fragment.lit("select \"CUSTOMER_ID\", \"NAME\", \"EMAIL\", \"CREATED_AT\"\nfrom \"CUSTOMERS\"\nwhere \"CUSTOMER_ID\" = "), Fragment.encode(CustomersId.dbType, customerId), Fragment.lit("")).query(CustomersRow._rowParser.first()).runUnchecked(c) + ): CustomersRow? = Fragment.interpolate(Fragment.lit("select \"CUSTOMER_ID\", \"NAME\", \"EMAIL\", \"CREATED_AT\"\nfrom \"CUSTOMERS\"\nwhere \"CUSTOMER_ID\" = "), Fragment.encode(CustomersId.db2Type, customerId), Fragment.lit("")).query(CustomersRow._rowParser.first()).runUnchecked(c) override fun selectByIds( customerIds: Array, c: Connection ): List { val fragments: ArrayList = ArrayList() - for (id in customerIds) { fragments.add(Fragment.encode(CustomersId.dbType, id)) } + for (id in customerIds) { fragments.add(Fragment.encode(CustomersId.db2Type, id)) } return Fragment.interpolate(Fragment.lit("select \"CUSTOMER_ID\", \"NAME\", \"EMAIL\", \"CREATED_AT\" from \"CUSTOMERS\" where \"CUSTOMER_ID\" in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).query(CustomersRow._rowParser.all()).runUnchecked(c) } @@ -105,14 +105,14 @@ class CustomersRepoImpl() : CustomersRepo { c: Connection ): Boolean { val customerId: CustomersId = row.customerId - return Fragment.interpolate(Fragment.lit("update \"CUSTOMERS\"\nset \"NAME\" = "), Fragment.encode(Db2Types.varchar, row.name), Fragment.lit(",\n\"EMAIL\" = "), Fragment.encode(Db2Types.varchar, row.email), Fragment.lit(",\n\"CREATED_AT\" = "), Fragment.encode(Db2Types.timestamp.nullable(), row.createdAt), Fragment.lit("\nwhere \"CUSTOMER_ID\" = "), Fragment.encode(CustomersId.dbType, customerId), Fragment.lit("")).update().runUnchecked(c) > 0 + return Fragment.interpolate(Fragment.lit("update \"CUSTOMERS\"\nset \"NAME\" = "), Fragment.encode(Db2Types.varchar, row.name), Fragment.lit(",\n\"EMAIL\" = "), Fragment.encode(Db2Types.varchar, row.email), Fragment.lit(",\n\"CREATED_AT\" = "), Fragment.encode(Db2Types.timestamp.nullable(), row.createdAt), Fragment.lit("\nwhere \"CUSTOMER_ID\" = "), Fragment.encode(CustomersId.db2Type, customerId), Fragment.lit("")).update().runUnchecked(c) > 0 } override fun upsert( unsaved: CustomersRow, c: Connection ) { - Fragment.interpolate(Fragment.lit("MERGE INTO \"CUSTOMERS\" AS t\nUSING (VALUES ("), Fragment.encode(CustomersId.dbType, unsaved.customerId), Fragment.lit(", "), Fragment.encode(Db2Types.varchar, unsaved.name), Fragment.lit(", "), Fragment.encode(Db2Types.varchar, unsaved.email), Fragment.lit(", "), Fragment.encode(Db2Types.timestamp.nullable(), unsaved.createdAt), Fragment.lit(")) AS s(\"CUSTOMER_ID\", \"NAME\", \"EMAIL\", \"CREATED_AT\")\nON t.\"CUSTOMER_ID\" = s.\"CUSTOMER_ID\"\nWHEN MATCHED THEN UPDATE SET \"NAME\" = s.\"NAME\",\n\"EMAIL\" = s.\"EMAIL\",\n\"CREATED_AT\" = s.\"CREATED_AT\"\nWHEN NOT MATCHED THEN INSERT (\"CUSTOMER_ID\", \"NAME\", \"EMAIL\", \"CREATED_AT\") VALUES ("), Fragment.encode(CustomersId.dbType, unsaved.customerId), Fragment.lit(", "), Fragment.encode(Db2Types.varchar, unsaved.name), Fragment.lit(", "), Fragment.encode(Db2Types.varchar, unsaved.email), Fragment.lit(", "), Fragment.encode(Db2Types.timestamp.nullable(), unsaved.createdAt), Fragment.lit(")")) + Fragment.interpolate(Fragment.lit("MERGE INTO \"CUSTOMERS\" AS t\nUSING (VALUES ("), Fragment.encode(CustomersId.db2Type, unsaved.customerId), Fragment.lit(", "), Fragment.encode(Db2Types.varchar, unsaved.name), Fragment.lit(", "), Fragment.encode(Db2Types.varchar, unsaved.email), Fragment.lit(", "), Fragment.encode(Db2Types.timestamp.nullable(), unsaved.createdAt), Fragment.lit(")) AS s(\"CUSTOMER_ID\", \"NAME\", \"EMAIL\", \"CREATED_AT\")\nON t.\"CUSTOMER_ID\" = s.\"CUSTOMER_ID\"\nWHEN MATCHED THEN UPDATE SET \"NAME\" = s.\"NAME\",\n\"EMAIL\" = s.\"EMAIL\",\n\"CREATED_AT\" = s.\"CREATED_AT\"\nWHEN NOT MATCHED THEN INSERT (\"CUSTOMER_ID\", \"NAME\", \"EMAIL\", \"CREATED_AT\") VALUES ("), Fragment.encode(CustomersId.db2Type, unsaved.customerId), Fragment.lit(", "), Fragment.encode(Db2Types.varchar, unsaved.name), Fragment.lit(", "), Fragment.encode(Db2Types.varchar, unsaved.email), Fragment.lit(", "), Fragment.encode(Db2Types.timestamp.nullable(), unsaved.createdAt), Fragment.lit(")")) .update() .runUnchecked(c) } diff --git a/testers/db2/kotlin/generated-and-checked-in/testdb/customers/CustomersRow.kt b/testers/db2/kotlin/generated-and-checked-in/testdb/customers/CustomersRow.kt index 31300aa36b..afdaa8c5a5 100644 --- a/testers/db2/kotlin/generated-and-checked-in/testdb/customers/CustomersRow.kt +++ b/testers/db2/kotlin/generated-and-checked-in/testdb/customers/CustomersRow.kt @@ -46,6 +46,6 @@ data class CustomersRow( ): CustomersRowUnsaved = CustomersRowUnsaved(name, email, customerId, createdAt) companion object { - val _rowParser: RowParser = RowParsers.of(CustomersId.dbType, Db2Types.varchar, Db2Types.varchar, Db2Types.timestamp.nullable(), { t0, t1, t2, t3 -> CustomersRow(t0, t1, t2, t3) }, { row -> arrayOf(row.customerId, row.name, row.email, row.createdAt) }) + val _rowParser: RowParser = RowParsers.of(CustomersId.db2Type, Db2Types.varchar, Db2Types.varchar, Db2Types.timestamp.nullable(), { t0, t1, t2, t3 -> CustomersRow(t0, t1, t2, t3) }, { row -> arrayOf(row.customerId, row.name, row.email, row.createdAt) }) } } \ No newline at end of file diff --git a/testers/db2/kotlin/generated-and-checked-in/testdb/db2test/Db2testFields.kt b/testers/db2/kotlin/generated-and-checked-in/testdb/db2test/Db2testFields.kt index 0cbc167d0d..b303ca192c 100644 --- a/testers/db2/kotlin/generated-and-checked-in/testdb/db2test/Db2testFields.kt +++ b/testers/db2/kotlin/generated-and-checked-in/testdb/db2test/Db2testFields.kt @@ -100,7 +100,7 @@ data class Db2testFields(val _path: List) : TupleExpr24 = Field(_path, "GRAPHIC_COL", Db2testRow::graphicCol, null, null, { row, value -> row.copy(graphicCol = value) }, Db2Types.graphic) - fun intCol(): IdField = IdField(_path, "INT_COL", Db2testRow::intCol, null, null, { row, value -> row.copy(intCol = value) }, Db2testId.dbType) + fun intCol(): IdField = IdField(_path, "INT_COL", Db2testRow::intCol, null, null, { row, value -> row.copy(intCol = value) }, Db2testId.db2Type) fun numericCol(): Field = Field(_path, "NUMERIC_COL", Db2testRow::numericCol, null, null, { row, value -> row.copy(numericCol = value) }, KotlinDbTypes.Db2Types.decimal) diff --git a/testers/db2/kotlin/generated-and-checked-in/testdb/db2test/Db2testId.kt b/testers/db2/kotlin/generated-and-checked-in/testdb/db2test/Db2testId.kt index 4ce7685d8a..dc3f959c03 100644 --- a/testers/db2/kotlin/generated-and-checked-in/testdb/db2test/Db2testId.kt +++ b/testers/db2/kotlin/generated-and-checked-in/testdb/db2test/Db2testId.kt @@ -20,7 +20,7 @@ data class Db2testId(@field:JsonValue val value: Int) { val bijection: Bijection = Bijection.of(Db2testId::value, ::Db2testId) - val dbType: Db2Type = + val db2Type: Db2Type = KotlinDbTypes.Db2Types.integer.bimap(::Db2testId, Db2testId::value) } } \ No newline at end of file diff --git a/testers/db2/kotlin/generated-and-checked-in/testdb/db2test/Db2testRepoImpl.kt b/testers/db2/kotlin/generated-and-checked-in/testdb/db2test/Db2testRepoImpl.kt index 28f2137f73..a57b5333d4 100644 --- a/testers/db2/kotlin/generated-and-checked-in/testdb/db2test/Db2testRepoImpl.kt +++ b/testers/db2/kotlin/generated-and-checked-in/testdb/db2test/Db2testRepoImpl.kt @@ -25,21 +25,21 @@ class Db2testRepoImpl() : Db2testRepo { override fun deleteById( intCol: Db2testId, c: Connection - ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"DB2TEST\" where \"INT_COL\" = "), Fragment.encode(Db2testId.dbType, intCol), Fragment.lit("")).update().runUnchecked(c) > 0 + ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"DB2TEST\" where \"INT_COL\" = "), Fragment.encode(Db2testId.db2Type, intCol), Fragment.lit("")).update().runUnchecked(c) > 0 override fun deleteByIds( intCols: Array, c: Connection ): Int { val fragments: ArrayList = ArrayList() - for (id in intCols) { fragments.add(Fragment.encode(Db2testId.dbType, id)) } + for (id in intCols) { fragments.add(Fragment.encode(Db2testId.db2Type, id)) } return Fragment.interpolate(Fragment.lit("delete from \"DB2TEST\" where \"INT_COL\" in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).update().runUnchecked(c) } override fun insert( unsaved: Db2testRow, c: Connection - ): Db2testRow = Fragment.interpolate(Fragment.lit("SELECT \"SMALLINT_COL\", \"INT_COL\", \"BIGINT_COL\", \"DECIMAL_COL\", \"NUMERIC_COL\", \"DECFLOAT16_COL\", \"DECFLOAT34_COL\", \"REAL_COL\", \"DOUBLE_COL\", \"BOOL_COL\", \"CHAR_COL\", \"VARCHAR_COL\", \"CLOB_COL\", \"GRAPHIC_COL\", \"VARGRAPHIC_COL\", \"BINARY_COL\", \"VARBINARY_COL\", \"BLOB_COL\", \"DATE_COL\", \"TIME_COL\", \"TIMESTAMP_COL\", \"TIMESTAMP6_COL\", \"TIMESTAMP12_COL\", \"XML_COL\" FROM FINAL TABLE (INSERT INTO \"DB2TEST\"(\"SMALLINT_COL\", \"INT_COL\", \"BIGINT_COL\", \"DECIMAL_COL\", \"NUMERIC_COL\", \"DECFLOAT16_COL\", \"DECFLOAT34_COL\", \"REAL_COL\", \"DOUBLE_COL\", \"BOOL_COL\", \"CHAR_COL\", \"VARCHAR_COL\", \"CLOB_COL\", \"GRAPHIC_COL\", \"VARGRAPHIC_COL\", \"BINARY_COL\", \"VARBINARY_COL\", \"BLOB_COL\", \"DATE_COL\", \"TIME_COL\", \"TIMESTAMP_COL\", \"TIMESTAMP6_COL\", \"TIMESTAMP12_COL\", \"XML_COL\")\nVALUES ("), Fragment.encode(KotlinDbTypes.Db2Types.smallint, unsaved.smallintCol), Fragment.lit(", "), Fragment.encode(Db2testId.dbType, unsaved.intCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.bigint, unsaved.bigintCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.decimal, unsaved.decimalCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.decimal, unsaved.numericCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.decfloat, unsaved.decfloat16Col), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.decfloat, unsaved.decfloat34Col), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.real, unsaved.realCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.double_, unsaved.doubleCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.boolean_, unsaved.boolCol), Fragment.lit(", "), Fragment.encode(Db2Types.char_, unsaved.charCol), Fragment.lit(", "), Fragment.encode(Db2Types.varchar, unsaved.varcharCol), Fragment.lit(", "), Fragment.encode(Db2Types.clob, unsaved.clobCol), Fragment.lit(", "), Fragment.encode(Db2Types.graphic, unsaved.graphicCol), Fragment.lit(", "), Fragment.encode(Db2Types.vargraphic, unsaved.vargraphicCol), Fragment.lit(", "), Fragment.encode(Db2Types.binary, unsaved.binaryCol), Fragment.lit(", "), Fragment.encode(Db2Types.varbinary, unsaved.varbinaryCol), Fragment.lit(", "), Fragment.encode(Db2Types.blob, unsaved.blobCol), Fragment.lit(", "), Fragment.encode(Db2Types.date, unsaved.dateCol), Fragment.lit(", "), Fragment.encode(Db2Types.time, unsaved.timeCol), Fragment.lit(", "), Fragment.encode(Db2Types.timestamp, unsaved.timestampCol), Fragment.lit(", "), Fragment.encode(Db2Types.timestamp, unsaved.timestamp6Col), Fragment.lit(", "), Fragment.encode(Db2Types.timestamp, unsaved.timestamp12Col), Fragment.lit(", "), Fragment.encode(Db2Types.xml, unsaved.xmlCol), Fragment.lit("))\n")) + ): Db2testRow = Fragment.interpolate(Fragment.lit("SELECT \"SMALLINT_COL\", \"INT_COL\", \"BIGINT_COL\", \"DECIMAL_COL\", \"NUMERIC_COL\", \"DECFLOAT16_COL\", \"DECFLOAT34_COL\", \"REAL_COL\", \"DOUBLE_COL\", \"BOOL_COL\", \"CHAR_COL\", \"VARCHAR_COL\", \"CLOB_COL\", \"GRAPHIC_COL\", \"VARGRAPHIC_COL\", \"BINARY_COL\", \"VARBINARY_COL\", \"BLOB_COL\", \"DATE_COL\", \"TIME_COL\", \"TIMESTAMP_COL\", \"TIMESTAMP6_COL\", \"TIMESTAMP12_COL\", \"XML_COL\" FROM FINAL TABLE (INSERT INTO \"DB2TEST\"(\"SMALLINT_COL\", \"INT_COL\", \"BIGINT_COL\", \"DECIMAL_COL\", \"NUMERIC_COL\", \"DECFLOAT16_COL\", \"DECFLOAT34_COL\", \"REAL_COL\", \"DOUBLE_COL\", \"BOOL_COL\", \"CHAR_COL\", \"VARCHAR_COL\", \"CLOB_COL\", \"GRAPHIC_COL\", \"VARGRAPHIC_COL\", \"BINARY_COL\", \"VARBINARY_COL\", \"BLOB_COL\", \"DATE_COL\", \"TIME_COL\", \"TIMESTAMP_COL\", \"TIMESTAMP6_COL\", \"TIMESTAMP12_COL\", \"XML_COL\")\nVALUES ("), Fragment.encode(KotlinDbTypes.Db2Types.smallint, unsaved.smallintCol), Fragment.lit(", "), Fragment.encode(Db2testId.db2Type, unsaved.intCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.bigint, unsaved.bigintCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.decimal, unsaved.decimalCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.decimal, unsaved.numericCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.decfloat, unsaved.decfloat16Col), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.decfloat, unsaved.decfloat34Col), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.real, unsaved.realCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.double_, unsaved.doubleCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.boolean_, unsaved.boolCol), Fragment.lit(", "), Fragment.encode(Db2Types.char_, unsaved.charCol), Fragment.lit(", "), Fragment.encode(Db2Types.varchar, unsaved.varcharCol), Fragment.lit(", "), Fragment.encode(Db2Types.clob, unsaved.clobCol), Fragment.lit(", "), Fragment.encode(Db2Types.graphic, unsaved.graphicCol), Fragment.lit(", "), Fragment.encode(Db2Types.vargraphic, unsaved.vargraphicCol), Fragment.lit(", "), Fragment.encode(Db2Types.binary, unsaved.binaryCol), Fragment.lit(", "), Fragment.encode(Db2Types.varbinary, unsaved.varbinaryCol), Fragment.lit(", "), Fragment.encode(Db2Types.blob, unsaved.blobCol), Fragment.lit(", "), Fragment.encode(Db2Types.date, unsaved.dateCol), Fragment.lit(", "), Fragment.encode(Db2Types.time, unsaved.timeCol), Fragment.lit(", "), Fragment.encode(Db2Types.timestamp, unsaved.timestampCol), Fragment.lit(", "), Fragment.encode(Db2Types.timestamp, unsaved.timestamp6Col), Fragment.lit(", "), Fragment.encode(Db2Types.timestamp, unsaved.timestamp12Col), Fragment.lit(", "), Fragment.encode(Db2Types.xml, unsaved.xmlCol), Fragment.lit("))\n")) .updateReturning(Db2testRow._rowParser.exactlyOne()).runUnchecked(c) override fun select(): SelectBuilder = SelectBuilder.of("\"DB2TEST\"", Db2testFields.structure, Db2testRow._rowParser, Dialect.DB2) @@ -49,14 +49,14 @@ class Db2testRepoImpl() : Db2testRepo { override fun selectById( intCol: Db2testId, c: Connection - ): Db2testRow? = Fragment.interpolate(Fragment.lit("select \"SMALLINT_COL\", \"INT_COL\", \"BIGINT_COL\", \"DECIMAL_COL\", \"NUMERIC_COL\", \"DECFLOAT16_COL\", \"DECFLOAT34_COL\", \"REAL_COL\", \"DOUBLE_COL\", \"BOOL_COL\", \"CHAR_COL\", \"VARCHAR_COL\", \"CLOB_COL\", \"GRAPHIC_COL\", \"VARGRAPHIC_COL\", \"BINARY_COL\", \"VARBINARY_COL\", \"BLOB_COL\", \"DATE_COL\", \"TIME_COL\", \"TIMESTAMP_COL\", \"TIMESTAMP6_COL\", \"TIMESTAMP12_COL\", \"XML_COL\"\nfrom \"DB2TEST\"\nwhere \"INT_COL\" = "), Fragment.encode(Db2testId.dbType, intCol), Fragment.lit("")).query(Db2testRow._rowParser.first()).runUnchecked(c) + ): Db2testRow? = Fragment.interpolate(Fragment.lit("select \"SMALLINT_COL\", \"INT_COL\", \"BIGINT_COL\", \"DECIMAL_COL\", \"NUMERIC_COL\", \"DECFLOAT16_COL\", \"DECFLOAT34_COL\", \"REAL_COL\", \"DOUBLE_COL\", \"BOOL_COL\", \"CHAR_COL\", \"VARCHAR_COL\", \"CLOB_COL\", \"GRAPHIC_COL\", \"VARGRAPHIC_COL\", \"BINARY_COL\", \"VARBINARY_COL\", \"BLOB_COL\", \"DATE_COL\", \"TIME_COL\", \"TIMESTAMP_COL\", \"TIMESTAMP6_COL\", \"TIMESTAMP12_COL\", \"XML_COL\"\nfrom \"DB2TEST\"\nwhere \"INT_COL\" = "), Fragment.encode(Db2testId.db2Type, intCol), Fragment.lit("")).query(Db2testRow._rowParser.first()).runUnchecked(c) override fun selectByIds( intCols: Array, c: Connection ): List { val fragments: ArrayList = ArrayList() - for (id in intCols) { fragments.add(Fragment.encode(Db2testId.dbType, id)) } + for (id in intCols) { fragments.add(Fragment.encode(Db2testId.db2Type, id)) } return Fragment.interpolate(Fragment.lit("select \"SMALLINT_COL\", \"INT_COL\", \"BIGINT_COL\", \"DECIMAL_COL\", \"NUMERIC_COL\", \"DECFLOAT16_COL\", \"DECFLOAT34_COL\", \"REAL_COL\", \"DOUBLE_COL\", \"BOOL_COL\", \"CHAR_COL\", \"VARCHAR_COL\", \"CLOB_COL\", \"GRAPHIC_COL\", \"VARGRAPHIC_COL\", \"BINARY_COL\", \"VARBINARY_COL\", \"BLOB_COL\", \"DATE_COL\", \"TIME_COL\", \"TIMESTAMP_COL\", \"TIMESTAMP6_COL\", \"TIMESTAMP12_COL\", \"XML_COL\" from \"DB2TEST\" where \"INT_COL\" in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).query(Db2testRow._rowParser.all()).runUnchecked(c) } @@ -76,14 +76,14 @@ class Db2testRepoImpl() : Db2testRepo { c: Connection ): Boolean { val intCol: Db2testId = row.intCol - return Fragment.interpolate(Fragment.lit("update \"DB2TEST\"\nset \"SMALLINT_COL\" = "), Fragment.encode(KotlinDbTypes.Db2Types.smallint, row.smallintCol), Fragment.lit(",\n\"BIGINT_COL\" = "), Fragment.encode(KotlinDbTypes.Db2Types.bigint, row.bigintCol), Fragment.lit(",\n\"DECIMAL_COL\" = "), Fragment.encode(KotlinDbTypes.Db2Types.decimal, row.decimalCol), Fragment.lit(",\n\"NUMERIC_COL\" = "), Fragment.encode(KotlinDbTypes.Db2Types.decimal, row.numericCol), Fragment.lit(",\n\"DECFLOAT16_COL\" = "), Fragment.encode(KotlinDbTypes.Db2Types.decfloat, row.decfloat16Col), Fragment.lit(",\n\"DECFLOAT34_COL\" = "), Fragment.encode(KotlinDbTypes.Db2Types.decfloat, row.decfloat34Col), Fragment.lit(",\n\"REAL_COL\" = "), Fragment.encode(KotlinDbTypes.Db2Types.real, row.realCol), Fragment.lit(",\n\"DOUBLE_COL\" = "), Fragment.encode(KotlinDbTypes.Db2Types.double_, row.doubleCol), Fragment.lit(",\n\"BOOL_COL\" = "), Fragment.encode(KotlinDbTypes.Db2Types.boolean_, row.boolCol), Fragment.lit(",\n\"CHAR_COL\" = "), Fragment.encode(Db2Types.char_, row.charCol), Fragment.lit(",\n\"VARCHAR_COL\" = "), Fragment.encode(Db2Types.varchar, row.varcharCol), Fragment.lit(",\n\"CLOB_COL\" = "), Fragment.encode(Db2Types.clob, row.clobCol), Fragment.lit(",\n\"GRAPHIC_COL\" = "), Fragment.encode(Db2Types.graphic, row.graphicCol), Fragment.lit(",\n\"VARGRAPHIC_COL\" = "), Fragment.encode(Db2Types.vargraphic, row.vargraphicCol), Fragment.lit(",\n\"BINARY_COL\" = "), Fragment.encode(Db2Types.binary, row.binaryCol), Fragment.lit(",\n\"VARBINARY_COL\" = "), Fragment.encode(Db2Types.varbinary, row.varbinaryCol), Fragment.lit(",\n\"BLOB_COL\" = "), Fragment.encode(Db2Types.blob, row.blobCol), Fragment.lit(",\n\"DATE_COL\" = "), Fragment.encode(Db2Types.date, row.dateCol), Fragment.lit(",\n\"TIME_COL\" = "), Fragment.encode(Db2Types.time, row.timeCol), Fragment.lit(",\n\"TIMESTAMP_COL\" = "), Fragment.encode(Db2Types.timestamp, row.timestampCol), Fragment.lit(",\n\"TIMESTAMP6_COL\" = "), Fragment.encode(Db2Types.timestamp, row.timestamp6Col), Fragment.lit(",\n\"TIMESTAMP12_COL\" = "), Fragment.encode(Db2Types.timestamp, row.timestamp12Col), Fragment.lit(",\n\"XML_COL\" = "), Fragment.encode(Db2Types.xml, row.xmlCol), Fragment.lit("\nwhere \"INT_COL\" = "), Fragment.encode(Db2testId.dbType, intCol), Fragment.lit("")).update().runUnchecked(c) > 0 + return Fragment.interpolate(Fragment.lit("update \"DB2TEST\"\nset \"SMALLINT_COL\" = "), Fragment.encode(KotlinDbTypes.Db2Types.smallint, row.smallintCol), Fragment.lit(",\n\"BIGINT_COL\" = "), Fragment.encode(KotlinDbTypes.Db2Types.bigint, row.bigintCol), Fragment.lit(",\n\"DECIMAL_COL\" = "), Fragment.encode(KotlinDbTypes.Db2Types.decimal, row.decimalCol), Fragment.lit(",\n\"NUMERIC_COL\" = "), Fragment.encode(KotlinDbTypes.Db2Types.decimal, row.numericCol), Fragment.lit(",\n\"DECFLOAT16_COL\" = "), Fragment.encode(KotlinDbTypes.Db2Types.decfloat, row.decfloat16Col), Fragment.lit(",\n\"DECFLOAT34_COL\" = "), Fragment.encode(KotlinDbTypes.Db2Types.decfloat, row.decfloat34Col), Fragment.lit(",\n\"REAL_COL\" = "), Fragment.encode(KotlinDbTypes.Db2Types.real, row.realCol), Fragment.lit(",\n\"DOUBLE_COL\" = "), Fragment.encode(KotlinDbTypes.Db2Types.double_, row.doubleCol), Fragment.lit(",\n\"BOOL_COL\" = "), Fragment.encode(KotlinDbTypes.Db2Types.boolean_, row.boolCol), Fragment.lit(",\n\"CHAR_COL\" = "), Fragment.encode(Db2Types.char_, row.charCol), Fragment.lit(",\n\"VARCHAR_COL\" = "), Fragment.encode(Db2Types.varchar, row.varcharCol), Fragment.lit(",\n\"CLOB_COL\" = "), Fragment.encode(Db2Types.clob, row.clobCol), Fragment.lit(",\n\"GRAPHIC_COL\" = "), Fragment.encode(Db2Types.graphic, row.graphicCol), Fragment.lit(",\n\"VARGRAPHIC_COL\" = "), Fragment.encode(Db2Types.vargraphic, row.vargraphicCol), Fragment.lit(",\n\"BINARY_COL\" = "), Fragment.encode(Db2Types.binary, row.binaryCol), Fragment.lit(",\n\"VARBINARY_COL\" = "), Fragment.encode(Db2Types.varbinary, row.varbinaryCol), Fragment.lit(",\n\"BLOB_COL\" = "), Fragment.encode(Db2Types.blob, row.blobCol), Fragment.lit(",\n\"DATE_COL\" = "), Fragment.encode(Db2Types.date, row.dateCol), Fragment.lit(",\n\"TIME_COL\" = "), Fragment.encode(Db2Types.time, row.timeCol), Fragment.lit(",\n\"TIMESTAMP_COL\" = "), Fragment.encode(Db2Types.timestamp, row.timestampCol), Fragment.lit(",\n\"TIMESTAMP6_COL\" = "), Fragment.encode(Db2Types.timestamp, row.timestamp6Col), Fragment.lit(",\n\"TIMESTAMP12_COL\" = "), Fragment.encode(Db2Types.timestamp, row.timestamp12Col), Fragment.lit(",\n\"XML_COL\" = "), Fragment.encode(Db2Types.xml, row.xmlCol), Fragment.lit("\nwhere \"INT_COL\" = "), Fragment.encode(Db2testId.db2Type, intCol), Fragment.lit("")).update().runUnchecked(c) > 0 } override fun upsert( unsaved: Db2testRow, c: Connection ) { - Fragment.interpolate(Fragment.lit("MERGE INTO \"DB2TEST\" AS t\nUSING (VALUES ("), Fragment.encode(KotlinDbTypes.Db2Types.smallint, unsaved.smallintCol), Fragment.lit(", "), Fragment.encode(Db2testId.dbType, unsaved.intCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.bigint, unsaved.bigintCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.decimal, unsaved.decimalCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.decimal, unsaved.numericCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.decfloat, unsaved.decfloat16Col), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.decfloat, unsaved.decfloat34Col), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.real, unsaved.realCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.double_, unsaved.doubleCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.boolean_, unsaved.boolCol), Fragment.lit(", "), Fragment.encode(Db2Types.char_, unsaved.charCol), Fragment.lit(", "), Fragment.encode(Db2Types.varchar, unsaved.varcharCol), Fragment.lit(", "), Fragment.encode(Db2Types.clob, unsaved.clobCol), Fragment.lit(", "), Fragment.encode(Db2Types.graphic, unsaved.graphicCol), Fragment.lit(", "), Fragment.encode(Db2Types.vargraphic, unsaved.vargraphicCol), Fragment.lit(", "), Fragment.encode(Db2Types.binary, unsaved.binaryCol), Fragment.lit(", "), Fragment.encode(Db2Types.varbinary, unsaved.varbinaryCol), Fragment.lit(", "), Fragment.encode(Db2Types.blob, unsaved.blobCol), Fragment.lit(", "), Fragment.encode(Db2Types.date, unsaved.dateCol), Fragment.lit(", "), Fragment.encode(Db2Types.time, unsaved.timeCol), Fragment.lit(", "), Fragment.encode(Db2Types.timestamp, unsaved.timestampCol), Fragment.lit(", "), Fragment.encode(Db2Types.timestamp, unsaved.timestamp6Col), Fragment.lit(", "), Fragment.encode(Db2Types.timestamp, unsaved.timestamp12Col), Fragment.lit(", "), Fragment.encode(Db2Types.xml, unsaved.xmlCol), Fragment.lit(")) AS s(\"SMALLINT_COL\", \"INT_COL\", \"BIGINT_COL\", \"DECIMAL_COL\", \"NUMERIC_COL\", \"DECFLOAT16_COL\", \"DECFLOAT34_COL\", \"REAL_COL\", \"DOUBLE_COL\", \"BOOL_COL\", \"CHAR_COL\", \"VARCHAR_COL\", \"CLOB_COL\", \"GRAPHIC_COL\", \"VARGRAPHIC_COL\", \"BINARY_COL\", \"VARBINARY_COL\", \"BLOB_COL\", \"DATE_COL\", \"TIME_COL\", \"TIMESTAMP_COL\", \"TIMESTAMP6_COL\", \"TIMESTAMP12_COL\", \"XML_COL\")\nON t.\"INT_COL\" = s.\"INT_COL\"\nWHEN MATCHED THEN UPDATE SET \"SMALLINT_COL\" = s.\"SMALLINT_COL\",\n\"BIGINT_COL\" = s.\"BIGINT_COL\",\n\"DECIMAL_COL\" = s.\"DECIMAL_COL\",\n\"NUMERIC_COL\" = s.\"NUMERIC_COL\",\n\"DECFLOAT16_COL\" = s.\"DECFLOAT16_COL\",\n\"DECFLOAT34_COL\" = s.\"DECFLOAT34_COL\",\n\"REAL_COL\" = s.\"REAL_COL\",\n\"DOUBLE_COL\" = s.\"DOUBLE_COL\",\n\"BOOL_COL\" = s.\"BOOL_COL\",\n\"CHAR_COL\" = s.\"CHAR_COL\",\n\"VARCHAR_COL\" = s.\"VARCHAR_COL\",\n\"CLOB_COL\" = s.\"CLOB_COL\",\n\"GRAPHIC_COL\" = s.\"GRAPHIC_COL\",\n\"VARGRAPHIC_COL\" = s.\"VARGRAPHIC_COL\",\n\"BINARY_COL\" = s.\"BINARY_COL\",\n\"VARBINARY_COL\" = s.\"VARBINARY_COL\",\n\"BLOB_COL\" = s.\"BLOB_COL\",\n\"DATE_COL\" = s.\"DATE_COL\",\n\"TIME_COL\" = s.\"TIME_COL\",\n\"TIMESTAMP_COL\" = s.\"TIMESTAMP_COL\",\n\"TIMESTAMP6_COL\" = s.\"TIMESTAMP6_COL\",\n\"TIMESTAMP12_COL\" = s.\"TIMESTAMP12_COL\",\n\"XML_COL\" = s.\"XML_COL\"\nWHEN NOT MATCHED THEN INSERT (\"SMALLINT_COL\", \"INT_COL\", \"BIGINT_COL\", \"DECIMAL_COL\", \"NUMERIC_COL\", \"DECFLOAT16_COL\", \"DECFLOAT34_COL\", \"REAL_COL\", \"DOUBLE_COL\", \"BOOL_COL\", \"CHAR_COL\", \"VARCHAR_COL\", \"CLOB_COL\", \"GRAPHIC_COL\", \"VARGRAPHIC_COL\", \"BINARY_COL\", \"VARBINARY_COL\", \"BLOB_COL\", \"DATE_COL\", \"TIME_COL\", \"TIMESTAMP_COL\", \"TIMESTAMP6_COL\", \"TIMESTAMP12_COL\", \"XML_COL\") VALUES ("), Fragment.encode(KotlinDbTypes.Db2Types.smallint, unsaved.smallintCol), Fragment.lit(", "), Fragment.encode(Db2testId.dbType, unsaved.intCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.bigint, unsaved.bigintCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.decimal, unsaved.decimalCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.decimal, unsaved.numericCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.decfloat, unsaved.decfloat16Col), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.decfloat, unsaved.decfloat34Col), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.real, unsaved.realCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.double_, unsaved.doubleCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.boolean_, unsaved.boolCol), Fragment.lit(", "), Fragment.encode(Db2Types.char_, unsaved.charCol), Fragment.lit(", "), Fragment.encode(Db2Types.varchar, unsaved.varcharCol), Fragment.lit(", "), Fragment.encode(Db2Types.clob, unsaved.clobCol), Fragment.lit(", "), Fragment.encode(Db2Types.graphic, unsaved.graphicCol), Fragment.lit(", "), Fragment.encode(Db2Types.vargraphic, unsaved.vargraphicCol), Fragment.lit(", "), Fragment.encode(Db2Types.binary, unsaved.binaryCol), Fragment.lit(", "), Fragment.encode(Db2Types.varbinary, unsaved.varbinaryCol), Fragment.lit(", "), Fragment.encode(Db2Types.blob, unsaved.blobCol), Fragment.lit(", "), Fragment.encode(Db2Types.date, unsaved.dateCol), Fragment.lit(", "), Fragment.encode(Db2Types.time, unsaved.timeCol), Fragment.lit(", "), Fragment.encode(Db2Types.timestamp, unsaved.timestampCol), Fragment.lit(", "), Fragment.encode(Db2Types.timestamp, unsaved.timestamp6Col), Fragment.lit(", "), Fragment.encode(Db2Types.timestamp, unsaved.timestamp12Col), Fragment.lit(", "), Fragment.encode(Db2Types.xml, unsaved.xmlCol), Fragment.lit(")")) + Fragment.interpolate(Fragment.lit("MERGE INTO \"DB2TEST\" AS t\nUSING (VALUES ("), Fragment.encode(KotlinDbTypes.Db2Types.smallint, unsaved.smallintCol), Fragment.lit(", "), Fragment.encode(Db2testId.db2Type, unsaved.intCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.bigint, unsaved.bigintCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.decimal, unsaved.decimalCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.decimal, unsaved.numericCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.decfloat, unsaved.decfloat16Col), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.decfloat, unsaved.decfloat34Col), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.real, unsaved.realCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.double_, unsaved.doubleCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.boolean_, unsaved.boolCol), Fragment.lit(", "), Fragment.encode(Db2Types.char_, unsaved.charCol), Fragment.lit(", "), Fragment.encode(Db2Types.varchar, unsaved.varcharCol), Fragment.lit(", "), Fragment.encode(Db2Types.clob, unsaved.clobCol), Fragment.lit(", "), Fragment.encode(Db2Types.graphic, unsaved.graphicCol), Fragment.lit(", "), Fragment.encode(Db2Types.vargraphic, unsaved.vargraphicCol), Fragment.lit(", "), Fragment.encode(Db2Types.binary, unsaved.binaryCol), Fragment.lit(", "), Fragment.encode(Db2Types.varbinary, unsaved.varbinaryCol), Fragment.lit(", "), Fragment.encode(Db2Types.blob, unsaved.blobCol), Fragment.lit(", "), Fragment.encode(Db2Types.date, unsaved.dateCol), Fragment.lit(", "), Fragment.encode(Db2Types.time, unsaved.timeCol), Fragment.lit(", "), Fragment.encode(Db2Types.timestamp, unsaved.timestampCol), Fragment.lit(", "), Fragment.encode(Db2Types.timestamp, unsaved.timestamp6Col), Fragment.lit(", "), Fragment.encode(Db2Types.timestamp, unsaved.timestamp12Col), Fragment.lit(", "), Fragment.encode(Db2Types.xml, unsaved.xmlCol), Fragment.lit(")) AS s(\"SMALLINT_COL\", \"INT_COL\", \"BIGINT_COL\", \"DECIMAL_COL\", \"NUMERIC_COL\", \"DECFLOAT16_COL\", \"DECFLOAT34_COL\", \"REAL_COL\", \"DOUBLE_COL\", \"BOOL_COL\", \"CHAR_COL\", \"VARCHAR_COL\", \"CLOB_COL\", \"GRAPHIC_COL\", \"VARGRAPHIC_COL\", \"BINARY_COL\", \"VARBINARY_COL\", \"BLOB_COL\", \"DATE_COL\", \"TIME_COL\", \"TIMESTAMP_COL\", \"TIMESTAMP6_COL\", \"TIMESTAMP12_COL\", \"XML_COL\")\nON t.\"INT_COL\" = s.\"INT_COL\"\nWHEN MATCHED THEN UPDATE SET \"SMALLINT_COL\" = s.\"SMALLINT_COL\",\n\"BIGINT_COL\" = s.\"BIGINT_COL\",\n\"DECIMAL_COL\" = s.\"DECIMAL_COL\",\n\"NUMERIC_COL\" = s.\"NUMERIC_COL\",\n\"DECFLOAT16_COL\" = s.\"DECFLOAT16_COL\",\n\"DECFLOAT34_COL\" = s.\"DECFLOAT34_COL\",\n\"REAL_COL\" = s.\"REAL_COL\",\n\"DOUBLE_COL\" = s.\"DOUBLE_COL\",\n\"BOOL_COL\" = s.\"BOOL_COL\",\n\"CHAR_COL\" = s.\"CHAR_COL\",\n\"VARCHAR_COL\" = s.\"VARCHAR_COL\",\n\"CLOB_COL\" = s.\"CLOB_COL\",\n\"GRAPHIC_COL\" = s.\"GRAPHIC_COL\",\n\"VARGRAPHIC_COL\" = s.\"VARGRAPHIC_COL\",\n\"BINARY_COL\" = s.\"BINARY_COL\",\n\"VARBINARY_COL\" = s.\"VARBINARY_COL\",\n\"BLOB_COL\" = s.\"BLOB_COL\",\n\"DATE_COL\" = s.\"DATE_COL\",\n\"TIME_COL\" = s.\"TIME_COL\",\n\"TIMESTAMP_COL\" = s.\"TIMESTAMP_COL\",\n\"TIMESTAMP6_COL\" = s.\"TIMESTAMP6_COL\",\n\"TIMESTAMP12_COL\" = s.\"TIMESTAMP12_COL\",\n\"XML_COL\" = s.\"XML_COL\"\nWHEN NOT MATCHED THEN INSERT (\"SMALLINT_COL\", \"INT_COL\", \"BIGINT_COL\", \"DECIMAL_COL\", \"NUMERIC_COL\", \"DECFLOAT16_COL\", \"DECFLOAT34_COL\", \"REAL_COL\", \"DOUBLE_COL\", \"BOOL_COL\", \"CHAR_COL\", \"VARCHAR_COL\", \"CLOB_COL\", \"GRAPHIC_COL\", \"VARGRAPHIC_COL\", \"BINARY_COL\", \"VARBINARY_COL\", \"BLOB_COL\", \"DATE_COL\", \"TIME_COL\", \"TIMESTAMP_COL\", \"TIMESTAMP6_COL\", \"TIMESTAMP12_COL\", \"XML_COL\") VALUES ("), Fragment.encode(KotlinDbTypes.Db2Types.smallint, unsaved.smallintCol), Fragment.lit(", "), Fragment.encode(Db2testId.db2Type, unsaved.intCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.bigint, unsaved.bigintCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.decimal, unsaved.decimalCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.decimal, unsaved.numericCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.decfloat, unsaved.decfloat16Col), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.decfloat, unsaved.decfloat34Col), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.real, unsaved.realCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.double_, unsaved.doubleCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.boolean_, unsaved.boolCol), Fragment.lit(", "), Fragment.encode(Db2Types.char_, unsaved.charCol), Fragment.lit(", "), Fragment.encode(Db2Types.varchar, unsaved.varcharCol), Fragment.lit(", "), Fragment.encode(Db2Types.clob, unsaved.clobCol), Fragment.lit(", "), Fragment.encode(Db2Types.graphic, unsaved.graphicCol), Fragment.lit(", "), Fragment.encode(Db2Types.vargraphic, unsaved.vargraphicCol), Fragment.lit(", "), Fragment.encode(Db2Types.binary, unsaved.binaryCol), Fragment.lit(", "), Fragment.encode(Db2Types.varbinary, unsaved.varbinaryCol), Fragment.lit(", "), Fragment.encode(Db2Types.blob, unsaved.blobCol), Fragment.lit(", "), Fragment.encode(Db2Types.date, unsaved.dateCol), Fragment.lit(", "), Fragment.encode(Db2Types.time, unsaved.timeCol), Fragment.lit(", "), Fragment.encode(Db2Types.timestamp, unsaved.timestampCol), Fragment.lit(", "), Fragment.encode(Db2Types.timestamp, unsaved.timestamp6Col), Fragment.lit(", "), Fragment.encode(Db2Types.timestamp, unsaved.timestamp12Col), Fragment.lit(", "), Fragment.encode(Db2Types.xml, unsaved.xmlCol), Fragment.lit(")")) .update() .runUnchecked(c) } diff --git a/testers/db2/kotlin/generated-and-checked-in/testdb/db2test/Db2testRow.kt b/testers/db2/kotlin/generated-and-checked-in/testdb/db2test/Db2testRow.kt index b82dea8fd9..a6b528498e 100644 --- a/testers/db2/kotlin/generated-and-checked-in/testdb/db2test/Db2testRow.kt +++ b/testers/db2/kotlin/generated-and-checked-in/testdb/db2test/Db2testRow.kt @@ -97,6 +97,6 @@ data class Db2testRow( fun id(): Db2testId = intCol companion object { - val _rowParser: RowParser = RowParsers.of(KotlinDbTypes.Db2Types.smallint, Db2testId.dbType, KotlinDbTypes.Db2Types.bigint, KotlinDbTypes.Db2Types.decimal, KotlinDbTypes.Db2Types.decimal, KotlinDbTypes.Db2Types.decfloat, KotlinDbTypes.Db2Types.decfloat, KotlinDbTypes.Db2Types.real, KotlinDbTypes.Db2Types.double_, KotlinDbTypes.Db2Types.boolean_, Db2Types.char_, Db2Types.varchar, Db2Types.clob, Db2Types.graphic, Db2Types.vargraphic, Db2Types.binary, Db2Types.varbinary, Db2Types.blob, Db2Types.date, Db2Types.time, Db2Types.timestamp, Db2Types.timestamp, Db2Types.timestamp, Db2Types.xml, { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23 -> Db2testRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23) }, { row -> arrayOf(row.smallintCol, row.intCol, row.bigintCol, row.decimalCol, row.numericCol, row.decfloat16Col, row.decfloat34Col, row.realCol, row.doubleCol, row.boolCol, row.charCol, row.varcharCol, row.clobCol, row.graphicCol, row.vargraphicCol, row.binaryCol, row.varbinaryCol, row.blobCol, row.dateCol, row.timeCol, row.timestampCol, row.timestamp6Col, row.timestamp12Col, row.xmlCol) }) + val _rowParser: RowParser = RowParsers.of(KotlinDbTypes.Db2Types.smallint, Db2testId.db2Type, KotlinDbTypes.Db2Types.bigint, KotlinDbTypes.Db2Types.decimal, KotlinDbTypes.Db2Types.decimal, KotlinDbTypes.Db2Types.decfloat, KotlinDbTypes.Db2Types.decfloat, KotlinDbTypes.Db2Types.real, KotlinDbTypes.Db2Types.double_, KotlinDbTypes.Db2Types.boolean_, Db2Types.char_, Db2Types.varchar, Db2Types.clob, Db2Types.graphic, Db2Types.vargraphic, Db2Types.binary, Db2Types.varbinary, Db2Types.blob, Db2Types.date, Db2Types.time, Db2Types.timestamp, Db2Types.timestamp, Db2Types.timestamp, Db2Types.xml, { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23 -> Db2testRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23) }, { row -> arrayOf(row.smallintCol, row.intCol, row.bigintCol, row.decimalCol, row.numericCol, row.decfloat16Col, row.decfloat34Col, row.realCol, row.doubleCol, row.boolCol, row.charCol, row.varcharCol, row.clobCol, row.graphicCol, row.vargraphicCol, row.binaryCol, row.varbinaryCol, row.blobCol, row.dateCol, row.timeCol, row.timestampCol, row.timestamp6Col, row.timestamp12Col, row.xmlCol) }) } } \ No newline at end of file diff --git a/testers/db2/kotlin/generated-and-checked-in/testdb/db2test_identity_always/Db2testIdentityAlwaysFields.kt b/testers/db2/kotlin/generated-and-checked-in/testdb/db2test_identity_always/Db2testIdentityAlwaysFields.kt index 82ad6e8f90..45604738b2 100644 --- a/testers/db2/kotlin/generated-and-checked-in/testdb/db2test_identity_always/Db2testIdentityAlwaysFields.kt +++ b/testers/db2/kotlin/generated-and-checked-in/testdb/db2test_identity_always/Db2testIdentityAlwaysFields.kt @@ -26,7 +26,7 @@ data class Db2testIdentityAlwaysFields(val _path: List) : TupleExpr2> = listOf(this.id().underlying, this.name().underlying) - fun id(): IdField = IdField(_path, "ID", Db2testIdentityAlwaysRow::id, null, null, { row, value -> row.copy(id = value) }, Db2testIdentityAlwaysId.dbType) + fun id(): IdField = IdField(_path, "ID", Db2testIdentityAlwaysRow::id, null, null, { row, value -> row.copy(id = value) }, Db2testIdentityAlwaysId.db2Type) fun name(): Field = Field(_path, "NAME", Db2testIdentityAlwaysRow::name, null, null, { row, value -> row.copy(name = value) }, Db2Types.varchar) diff --git a/testers/db2/kotlin/generated-and-checked-in/testdb/db2test_identity_always/Db2testIdentityAlwaysId.kt b/testers/db2/kotlin/generated-and-checked-in/testdb/db2test_identity_always/Db2testIdentityAlwaysId.kt index 27454d7ec6..2f41db14f3 100644 --- a/testers/db2/kotlin/generated-and-checked-in/testdb/db2test_identity_always/Db2testIdentityAlwaysId.kt +++ b/testers/db2/kotlin/generated-and-checked-in/testdb/db2test_identity_always/Db2testIdentityAlwaysId.kt @@ -20,7 +20,7 @@ data class Db2testIdentityAlwaysId(@field:JsonValue val value: Int) { val bijection: Bijection = Bijection.of(Db2testIdentityAlwaysId::value, ::Db2testIdentityAlwaysId) - val dbType: Db2Type = + val db2Type: Db2Type = KotlinDbTypes.Db2Types.integer.bimap(::Db2testIdentityAlwaysId, Db2testIdentityAlwaysId::value) } } \ No newline at end of file diff --git a/testers/db2/kotlin/generated-and-checked-in/testdb/db2test_identity_always/Db2testIdentityAlwaysRepoImpl.kt b/testers/db2/kotlin/generated-and-checked-in/testdb/db2test_identity_always/Db2testIdentityAlwaysRepoImpl.kt index 491cb507af..042786dfd9 100644 --- a/testers/db2/kotlin/generated-and-checked-in/testdb/db2test_identity_always/Db2testIdentityAlwaysRepoImpl.kt +++ b/testers/db2/kotlin/generated-and-checked-in/testdb/db2test_identity_always/Db2testIdentityAlwaysRepoImpl.kt @@ -24,14 +24,14 @@ class Db2testIdentityAlwaysRepoImpl() : Db2testIdentityAlwaysRepo { override fun deleteById( id: Db2testIdentityAlwaysId, c: Connection - ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"DB2TEST_IDENTITY_ALWAYS\" where \"ID\" = "), Fragment.encode(Db2testIdentityAlwaysId.dbType, id), Fragment.lit("")).update().runUnchecked(c) > 0 + ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"DB2TEST_IDENTITY_ALWAYS\" where \"ID\" = "), Fragment.encode(Db2testIdentityAlwaysId.db2Type, id), Fragment.lit("")).update().runUnchecked(c) > 0 override fun deleteByIds( ids: Array, c: Connection ): Int { val fragments: ArrayList = ArrayList() - for (id in ids) { fragments.add(Fragment.encode(Db2testIdentityAlwaysId.dbType, id)) } + for (id in ids) { fragments.add(Fragment.encode(Db2testIdentityAlwaysId.db2Type, id)) } return Fragment.interpolate(Fragment.lit("delete from \"DB2TEST_IDENTITY_ALWAYS\" where \"ID\" in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).update().runUnchecked(c) } @@ -60,14 +60,14 @@ class Db2testIdentityAlwaysRepoImpl() : Db2testIdentityAlwaysRepo { override fun selectById( id: Db2testIdentityAlwaysId, c: Connection - ): Db2testIdentityAlwaysRow? = Fragment.interpolate(Fragment.lit("select \"ID\", \"NAME\"\nfrom \"DB2TEST_IDENTITY_ALWAYS\"\nwhere \"ID\" = "), Fragment.encode(Db2testIdentityAlwaysId.dbType, id), Fragment.lit("")).query(Db2testIdentityAlwaysRow._rowParser.first()).runUnchecked(c) + ): Db2testIdentityAlwaysRow? = Fragment.interpolate(Fragment.lit("select \"ID\", \"NAME\"\nfrom \"DB2TEST_IDENTITY_ALWAYS\"\nwhere \"ID\" = "), Fragment.encode(Db2testIdentityAlwaysId.db2Type, id), Fragment.lit("")).query(Db2testIdentityAlwaysRow._rowParser.first()).runUnchecked(c) override fun selectByIds( ids: Array, c: Connection ): List { val fragments: ArrayList = ArrayList() - for (id in ids) { fragments.add(Fragment.encode(Db2testIdentityAlwaysId.dbType, id)) } + for (id in ids) { fragments.add(Fragment.encode(Db2testIdentityAlwaysId.db2Type, id)) } return Fragment.interpolate(Fragment.lit("select \"ID\", \"NAME\" from \"DB2TEST_IDENTITY_ALWAYS\" where \"ID\" in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).query(Db2testIdentityAlwaysRow._rowParser.all()).runUnchecked(c) } @@ -87,14 +87,14 @@ class Db2testIdentityAlwaysRepoImpl() : Db2testIdentityAlwaysRepo { c: Connection ): Boolean { val id: Db2testIdentityAlwaysId = row.id - return Fragment.interpolate(Fragment.lit("update \"DB2TEST_IDENTITY_ALWAYS\"\nset \"NAME\" = "), Fragment.encode(Db2Types.varchar, row.name), Fragment.lit("\nwhere \"ID\" = "), Fragment.encode(Db2testIdentityAlwaysId.dbType, id), Fragment.lit("")).update().runUnchecked(c) > 0 + return Fragment.interpolate(Fragment.lit("update \"DB2TEST_IDENTITY_ALWAYS\"\nset \"NAME\" = "), Fragment.encode(Db2Types.varchar, row.name), Fragment.lit("\nwhere \"ID\" = "), Fragment.encode(Db2testIdentityAlwaysId.db2Type, id), Fragment.lit("")).update().runUnchecked(c) > 0 } override fun upsert( unsaved: Db2testIdentityAlwaysRow, c: Connection ) { - Fragment.interpolate(Fragment.lit("MERGE INTO \"DB2TEST_IDENTITY_ALWAYS\" AS t\nUSING (VALUES ("), Fragment.encode(Db2testIdentityAlwaysId.dbType, unsaved.id), Fragment.lit(", "), Fragment.encode(Db2Types.varchar, unsaved.name), Fragment.lit(")) AS s(\"ID\", \"NAME\")\nON t.\"ID\" = s.\"ID\"\nWHEN MATCHED THEN UPDATE SET \"NAME\" = s.\"NAME\"\nWHEN NOT MATCHED THEN INSERT (\"ID\", \"NAME\") VALUES ("), Fragment.encode(Db2testIdentityAlwaysId.dbType, unsaved.id), Fragment.lit(", "), Fragment.encode(Db2Types.varchar, unsaved.name), Fragment.lit(")")) + Fragment.interpolate(Fragment.lit("MERGE INTO \"DB2TEST_IDENTITY_ALWAYS\" AS t\nUSING (VALUES ("), Fragment.encode(Db2testIdentityAlwaysId.db2Type, unsaved.id), Fragment.lit(", "), Fragment.encode(Db2Types.varchar, unsaved.name), Fragment.lit(")) AS s(\"ID\", \"NAME\")\nON t.\"ID\" = s.\"ID\"\nWHEN MATCHED THEN UPDATE SET \"NAME\" = s.\"NAME\"\nWHEN NOT MATCHED THEN INSERT (\"ID\", \"NAME\") VALUES ("), Fragment.encode(Db2testIdentityAlwaysId.db2Type, unsaved.id), Fragment.lit(", "), Fragment.encode(Db2Types.varchar, unsaved.name), Fragment.lit(")")) .update() .runUnchecked(c) } diff --git a/testers/db2/kotlin/generated-and-checked-in/testdb/db2test_identity_always/Db2testIdentityAlwaysRow.kt b/testers/db2/kotlin/generated-and-checked-in/testdb/db2test_identity_always/Db2testIdentityAlwaysRow.kt index ffb5b59950..5bbf41d3f8 100644 --- a/testers/db2/kotlin/generated-and-checked-in/testdb/db2test_identity_always/Db2testIdentityAlwaysRow.kt +++ b/testers/db2/kotlin/generated-and-checked-in/testdb/db2test_identity_always/Db2testIdentityAlwaysRow.kt @@ -26,6 +26,6 @@ data class Db2testIdentityAlwaysRow( fun toUnsavedRow(): Db2testIdentityAlwaysRowUnsaved = Db2testIdentityAlwaysRowUnsaved(name) companion object { - val _rowParser: RowParser = RowParsers.of(Db2testIdentityAlwaysId.dbType, Db2Types.varchar, { t0, t1 -> Db2testIdentityAlwaysRow(t0, t1) }, { row -> arrayOf(row.id, row.name) }) + val _rowParser: RowParser = RowParsers.of(Db2testIdentityAlwaysId.db2Type, Db2Types.varchar, { t0, t1 -> Db2testIdentityAlwaysRow(t0, t1) }, { row -> arrayOf(row.id, row.name) }) } } \ No newline at end of file diff --git a/testers/db2/kotlin/generated-and-checked-in/testdb/db2test_identity_default/Db2testIdentityDefaultFields.kt b/testers/db2/kotlin/generated-and-checked-in/testdb/db2test_identity_default/Db2testIdentityDefaultFields.kt index d2635fc254..80683a2eef 100644 --- a/testers/db2/kotlin/generated-and-checked-in/testdb/db2test_identity_default/Db2testIdentityDefaultFields.kt +++ b/testers/db2/kotlin/generated-and-checked-in/testdb/db2test_identity_default/Db2testIdentityDefaultFields.kt @@ -26,7 +26,7 @@ data class Db2testIdentityDefaultFields(val _path: List) : TupleExpr2> = listOf(this.id().underlying, this.name().underlying) - fun id(): IdField = IdField(_path, "ID", Db2testIdentityDefaultRow::id, null, null, { row, value -> row.copy(id = value) }, Db2testIdentityDefaultId.dbType) + fun id(): IdField = IdField(_path, "ID", Db2testIdentityDefaultRow::id, null, null, { row, value -> row.copy(id = value) }, Db2testIdentityDefaultId.db2Type) fun name(): Field = Field(_path, "NAME", Db2testIdentityDefaultRow::name, null, null, { row, value -> row.copy(name = value) }, Db2Types.varchar) diff --git a/testers/db2/kotlin/generated-and-checked-in/testdb/db2test_identity_default/Db2testIdentityDefaultId.kt b/testers/db2/kotlin/generated-and-checked-in/testdb/db2test_identity_default/Db2testIdentityDefaultId.kt index 5311453bff..1b22409817 100644 --- a/testers/db2/kotlin/generated-and-checked-in/testdb/db2test_identity_default/Db2testIdentityDefaultId.kt +++ b/testers/db2/kotlin/generated-and-checked-in/testdb/db2test_identity_default/Db2testIdentityDefaultId.kt @@ -20,7 +20,7 @@ data class Db2testIdentityDefaultId(@field:JsonValue val value: Int) { val bijection: Bijection = Bijection.of(Db2testIdentityDefaultId::value, ::Db2testIdentityDefaultId) - val dbType: Db2Type = + val db2Type: Db2Type = KotlinDbTypes.Db2Types.integer.bimap(::Db2testIdentityDefaultId, Db2testIdentityDefaultId::value) } } \ No newline at end of file diff --git a/testers/db2/kotlin/generated-and-checked-in/testdb/db2test_identity_default/Db2testIdentityDefaultRepoImpl.kt b/testers/db2/kotlin/generated-and-checked-in/testdb/db2test_identity_default/Db2testIdentityDefaultRepoImpl.kt index 9dd1f74ce5..116cd51151 100644 --- a/testers/db2/kotlin/generated-and-checked-in/testdb/db2test_identity_default/Db2testIdentityDefaultRepoImpl.kt +++ b/testers/db2/kotlin/generated-and-checked-in/testdb/db2test_identity_default/Db2testIdentityDefaultRepoImpl.kt @@ -24,21 +24,21 @@ class Db2testIdentityDefaultRepoImpl() : Db2testIdentityDefaultRepo { override fun deleteById( id: Db2testIdentityDefaultId, c: Connection - ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"DB2TEST_IDENTITY_DEFAULT\" where \"ID\" = "), Fragment.encode(Db2testIdentityDefaultId.dbType, id), Fragment.lit("")).update().runUnchecked(c) > 0 + ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"DB2TEST_IDENTITY_DEFAULT\" where \"ID\" = "), Fragment.encode(Db2testIdentityDefaultId.db2Type, id), Fragment.lit("")).update().runUnchecked(c) > 0 override fun deleteByIds( ids: Array, c: Connection ): Int { val fragments: ArrayList = ArrayList() - for (id in ids) { fragments.add(Fragment.encode(Db2testIdentityDefaultId.dbType, id)) } + for (id in ids) { fragments.add(Fragment.encode(Db2testIdentityDefaultId.db2Type, id)) } return Fragment.interpolate(Fragment.lit("delete from \"DB2TEST_IDENTITY_DEFAULT\" where \"ID\" in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).update().runUnchecked(c) } override fun insert( unsaved: Db2testIdentityDefaultRow, c: Connection - ): Db2testIdentityDefaultRow = Fragment.interpolate(Fragment.lit("SELECT \"ID\", \"NAME\" FROM FINAL TABLE (INSERT INTO \"DB2TEST_IDENTITY_DEFAULT\"(\"ID\", \"NAME\")\nVALUES ("), Fragment.encode(Db2testIdentityDefaultId.dbType, unsaved.id), Fragment.lit(", "), Fragment.encode(Db2Types.varchar, unsaved.name), Fragment.lit("))\n")) + ): Db2testIdentityDefaultRow = Fragment.interpolate(Fragment.lit("SELECT \"ID\", \"NAME\" FROM FINAL TABLE (INSERT INTO \"DB2TEST_IDENTITY_DEFAULT\"(\"ID\", \"NAME\")\nVALUES ("), Fragment.encode(Db2testIdentityDefaultId.db2Type, unsaved.id), Fragment.lit(", "), Fragment.encode(Db2Types.varchar, unsaved.name), Fragment.lit("))\n")) .updateReturning(Db2testIdentityDefaultRow._rowParser.exactlyOne()).runUnchecked(c) override fun insert( @@ -52,7 +52,7 @@ class Db2testIdentityDefaultRepoImpl() : Db2testIdentityDefaultRepo { unsaved.id.visit( { }, { value -> columns.add(Fragment.lit("\"ID\"")) - values.add(Fragment.interpolate(Fragment.encode(Db2testIdentityDefaultId.dbType, value), Fragment.lit(""))) } + values.add(Fragment.interpolate(Fragment.encode(Db2testIdentityDefaultId.db2Type, value), Fragment.lit(""))) } ); val q: Fragment = Fragment.interpolate(Fragment.lit("SELECT \"ID\", \"NAME\" FROM FINAL TABLE (INSERT INTO \"DB2TEST_IDENTITY_DEFAULT\"("), Fragment.comma(columns.toMutableList()), Fragment.lit(")\nVALUES ("), Fragment.comma(values.toMutableList()), Fragment.lit("))\n")) return q.updateReturning(Db2testIdentityDefaultRow._rowParser.exactlyOne()).runUnchecked(c) @@ -65,14 +65,14 @@ class Db2testIdentityDefaultRepoImpl() : Db2testIdentityDefaultRepo { override fun selectById( id: Db2testIdentityDefaultId, c: Connection - ): Db2testIdentityDefaultRow? = Fragment.interpolate(Fragment.lit("select \"ID\", \"NAME\"\nfrom \"DB2TEST_IDENTITY_DEFAULT\"\nwhere \"ID\" = "), Fragment.encode(Db2testIdentityDefaultId.dbType, id), Fragment.lit("")).query(Db2testIdentityDefaultRow._rowParser.first()).runUnchecked(c) + ): Db2testIdentityDefaultRow? = Fragment.interpolate(Fragment.lit("select \"ID\", \"NAME\"\nfrom \"DB2TEST_IDENTITY_DEFAULT\"\nwhere \"ID\" = "), Fragment.encode(Db2testIdentityDefaultId.db2Type, id), Fragment.lit("")).query(Db2testIdentityDefaultRow._rowParser.first()).runUnchecked(c) override fun selectByIds( ids: Array, c: Connection ): List { val fragments: ArrayList = ArrayList() - for (id in ids) { fragments.add(Fragment.encode(Db2testIdentityDefaultId.dbType, id)) } + for (id in ids) { fragments.add(Fragment.encode(Db2testIdentityDefaultId.db2Type, id)) } return Fragment.interpolate(Fragment.lit("select \"ID\", \"NAME\" from \"DB2TEST_IDENTITY_DEFAULT\" where \"ID\" in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).query(Db2testIdentityDefaultRow._rowParser.all()).runUnchecked(c) } @@ -92,14 +92,14 @@ class Db2testIdentityDefaultRepoImpl() : Db2testIdentityDefaultRepo { c: Connection ): Boolean { val id: Db2testIdentityDefaultId = row.id - return Fragment.interpolate(Fragment.lit("update \"DB2TEST_IDENTITY_DEFAULT\"\nset \"NAME\" = "), Fragment.encode(Db2Types.varchar, row.name), Fragment.lit("\nwhere \"ID\" = "), Fragment.encode(Db2testIdentityDefaultId.dbType, id), Fragment.lit("")).update().runUnchecked(c) > 0 + return Fragment.interpolate(Fragment.lit("update \"DB2TEST_IDENTITY_DEFAULT\"\nset \"NAME\" = "), Fragment.encode(Db2Types.varchar, row.name), Fragment.lit("\nwhere \"ID\" = "), Fragment.encode(Db2testIdentityDefaultId.db2Type, id), Fragment.lit("")).update().runUnchecked(c) > 0 } override fun upsert( unsaved: Db2testIdentityDefaultRow, c: Connection ) { - Fragment.interpolate(Fragment.lit("MERGE INTO \"DB2TEST_IDENTITY_DEFAULT\" AS t\nUSING (VALUES ("), Fragment.encode(Db2testIdentityDefaultId.dbType, unsaved.id), Fragment.lit(", "), Fragment.encode(Db2Types.varchar, unsaved.name), Fragment.lit(")) AS s(\"ID\", \"NAME\")\nON t.\"ID\" = s.\"ID\"\nWHEN MATCHED THEN UPDATE SET \"NAME\" = s.\"NAME\"\nWHEN NOT MATCHED THEN INSERT (\"ID\", \"NAME\") VALUES ("), Fragment.encode(Db2testIdentityDefaultId.dbType, unsaved.id), Fragment.lit(", "), Fragment.encode(Db2Types.varchar, unsaved.name), Fragment.lit(")")) + Fragment.interpolate(Fragment.lit("MERGE INTO \"DB2TEST_IDENTITY_DEFAULT\" AS t\nUSING (VALUES ("), Fragment.encode(Db2testIdentityDefaultId.db2Type, unsaved.id), Fragment.lit(", "), Fragment.encode(Db2Types.varchar, unsaved.name), Fragment.lit(")) AS s(\"ID\", \"NAME\")\nON t.\"ID\" = s.\"ID\"\nWHEN MATCHED THEN UPDATE SET \"NAME\" = s.\"NAME\"\nWHEN NOT MATCHED THEN INSERT (\"ID\", \"NAME\") VALUES ("), Fragment.encode(Db2testIdentityDefaultId.db2Type, unsaved.id), Fragment.lit(", "), Fragment.encode(Db2Types.varchar, unsaved.name), Fragment.lit(")")) .update() .runUnchecked(c) } diff --git a/testers/db2/kotlin/generated-and-checked-in/testdb/db2test_identity_default/Db2testIdentityDefaultRow.kt b/testers/db2/kotlin/generated-and-checked-in/testdb/db2test_identity_default/Db2testIdentityDefaultRow.kt index f8de9d95a3..6cebc8a3ba 100644 --- a/testers/db2/kotlin/generated-and-checked-in/testdb/db2test_identity_default/Db2testIdentityDefaultRow.kt +++ b/testers/db2/kotlin/generated-and-checked-in/testdb/db2test_identity_default/Db2testIdentityDefaultRow.kt @@ -27,6 +27,6 @@ data class Db2testIdentityDefaultRow( fun toUnsavedRow(id: Defaulted): Db2testIdentityDefaultRowUnsaved = Db2testIdentityDefaultRowUnsaved(name, id) companion object { - val _rowParser: RowParser = RowParsers.of(Db2testIdentityDefaultId.dbType, Db2Types.varchar, { t0, t1 -> Db2testIdentityDefaultRow(t0, t1) }, { row -> arrayOf(row.id, row.name) }) + val _rowParser: RowParser = RowParsers.of(Db2testIdentityDefaultId.db2Type, Db2Types.varchar, { t0, t1 -> Db2testIdentityDefaultRow(t0, t1) }, { row -> arrayOf(row.id, row.name) }) } } \ No newline at end of file diff --git a/testers/db2/kotlin/generated-and-checked-in/testdb/db2test_unique/Db2testUniqueFields.kt b/testers/db2/kotlin/generated-and-checked-in/testdb/db2test_unique/Db2testUniqueFields.kt index a9bb9055b8..33ab1f3e91 100644 --- a/testers/db2/kotlin/generated-and-checked-in/testdb/db2test_unique/Db2testUniqueFields.kt +++ b/testers/db2/kotlin/generated-and-checked-in/testdb/db2test_unique/Db2testUniqueFields.kt @@ -36,7 +36,7 @@ data class Db2testUniqueFields(val _path: List) : TupleExpr4 = Field(_path, "EMAIL", Db2testUniqueRow::email, null, null, { row, value -> row.copy(email = value) }, Db2Types.varchar) - fun id(): IdField = IdField(_path, "ID", Db2testUniqueRow::id, null, null, { row, value -> row.copy(id = value) }, Db2testUniqueId.dbType) + fun id(): IdField = IdField(_path, "ID", Db2testUniqueRow::id, null, null, { row, value -> row.copy(id = value) }, Db2testUniqueId.db2Type) override fun rowParser(): RowParser = Db2testUniqueRow._rowParser.underlying diff --git a/testers/db2/kotlin/generated-and-checked-in/testdb/db2test_unique/Db2testUniqueId.kt b/testers/db2/kotlin/generated-and-checked-in/testdb/db2test_unique/Db2testUniqueId.kt index eb4d3d479e..9d90b45bb6 100644 --- a/testers/db2/kotlin/generated-and-checked-in/testdb/db2test_unique/Db2testUniqueId.kt +++ b/testers/db2/kotlin/generated-and-checked-in/testdb/db2test_unique/Db2testUniqueId.kt @@ -20,7 +20,7 @@ data class Db2testUniqueId(@field:JsonValue val value: Int) { val bijection: Bijection = Bijection.of(Db2testUniqueId::value, ::Db2testUniqueId) - val dbType: Db2Type = + val db2Type: Db2Type = KotlinDbTypes.Db2Types.integer.bimap(::Db2testUniqueId, Db2testUniqueId::value) } } \ No newline at end of file diff --git a/testers/db2/kotlin/generated-and-checked-in/testdb/db2test_unique/Db2testUniqueRepoImpl.kt b/testers/db2/kotlin/generated-and-checked-in/testdb/db2test_unique/Db2testUniqueRepoImpl.kt index ec53f9ddc9..e0e8a0d5c1 100644 --- a/testers/db2/kotlin/generated-and-checked-in/testdb/db2test_unique/Db2testUniqueRepoImpl.kt +++ b/testers/db2/kotlin/generated-and-checked-in/testdb/db2test_unique/Db2testUniqueRepoImpl.kt @@ -24,14 +24,14 @@ class Db2testUniqueRepoImpl() : Db2testUniqueRepo { override fun deleteById( id: Db2testUniqueId, c: Connection - ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"DB2TEST_UNIQUE\" where \"ID\" = "), Fragment.encode(Db2testUniqueId.dbType, id), Fragment.lit("")).update().runUnchecked(c) > 0 + ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"DB2TEST_UNIQUE\" where \"ID\" = "), Fragment.encode(Db2testUniqueId.db2Type, id), Fragment.lit("")).update().runUnchecked(c) > 0 override fun deleteByIds( ids: Array, c: Connection ): Int { val fragments: ArrayList = ArrayList() - for (id in ids) { fragments.add(Fragment.encode(Db2testUniqueId.dbType, id)) } + for (id in ids) { fragments.add(Fragment.encode(Db2testUniqueId.db2Type, id)) } return Fragment.interpolate(Fragment.lit("delete from \"DB2TEST_UNIQUE\" where \"ID\" in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).update().runUnchecked(c) } @@ -64,14 +64,14 @@ class Db2testUniqueRepoImpl() : Db2testUniqueRepo { override fun selectById( id: Db2testUniqueId, c: Connection - ): Db2testUniqueRow? = Fragment.interpolate(Fragment.lit("select \"ID\", \"EMAIL\", \"CODE\", \"CATEGORY\"\nfrom \"DB2TEST_UNIQUE\"\nwhere \"ID\" = "), Fragment.encode(Db2testUniqueId.dbType, id), Fragment.lit("")).query(Db2testUniqueRow._rowParser.first()).runUnchecked(c) + ): Db2testUniqueRow? = Fragment.interpolate(Fragment.lit("select \"ID\", \"EMAIL\", \"CODE\", \"CATEGORY\"\nfrom \"DB2TEST_UNIQUE\"\nwhere \"ID\" = "), Fragment.encode(Db2testUniqueId.db2Type, id), Fragment.lit("")).query(Db2testUniqueRow._rowParser.first()).runUnchecked(c) override fun selectByIds( ids: Array, c: Connection ): List { val fragments: ArrayList = ArrayList() - for (id in ids) { fragments.add(Fragment.encode(Db2testUniqueId.dbType, id)) } + for (id in ids) { fragments.add(Fragment.encode(Db2testUniqueId.db2Type, id)) } return Fragment.interpolate(Fragment.lit("select \"ID\", \"EMAIL\", \"CODE\", \"CATEGORY\" from \"DB2TEST_UNIQUE\" where \"ID\" in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).query(Db2testUniqueRow._rowParser.all()).runUnchecked(c) } @@ -102,14 +102,14 @@ class Db2testUniqueRepoImpl() : Db2testUniqueRepo { c: Connection ): Boolean { val id: Db2testUniqueId = row.id - return Fragment.interpolate(Fragment.lit("update \"DB2TEST_UNIQUE\"\nset \"EMAIL\" = "), Fragment.encode(Db2Types.varchar, row.email), Fragment.lit(",\n\"CODE\" = "), Fragment.encode(Db2Types.varchar, row.code), Fragment.lit(",\n\"CATEGORY\" = "), Fragment.encode(Db2Types.varchar, row.category), Fragment.lit("\nwhere \"ID\" = "), Fragment.encode(Db2testUniqueId.dbType, id), Fragment.lit("")).update().runUnchecked(c) > 0 + return Fragment.interpolate(Fragment.lit("update \"DB2TEST_UNIQUE\"\nset \"EMAIL\" = "), Fragment.encode(Db2Types.varchar, row.email), Fragment.lit(",\n\"CODE\" = "), Fragment.encode(Db2Types.varchar, row.code), Fragment.lit(",\n\"CATEGORY\" = "), Fragment.encode(Db2Types.varchar, row.category), Fragment.lit("\nwhere \"ID\" = "), Fragment.encode(Db2testUniqueId.db2Type, id), Fragment.lit("")).update().runUnchecked(c) > 0 } override fun upsert( unsaved: Db2testUniqueRow, c: Connection ) { - Fragment.interpolate(Fragment.lit("MERGE INTO \"DB2TEST_UNIQUE\" AS t\nUSING (VALUES ("), Fragment.encode(Db2testUniqueId.dbType, unsaved.id), Fragment.lit(", "), Fragment.encode(Db2Types.varchar, unsaved.email), Fragment.lit(", "), Fragment.encode(Db2Types.varchar, unsaved.code), Fragment.lit(", "), Fragment.encode(Db2Types.varchar, unsaved.category), Fragment.lit(")) AS s(\"ID\", \"EMAIL\", \"CODE\", \"CATEGORY\")\nON t.\"ID\" = s.\"ID\"\nWHEN MATCHED THEN UPDATE SET \"EMAIL\" = s.\"EMAIL\",\n\"CODE\" = s.\"CODE\",\n\"CATEGORY\" = s.\"CATEGORY\"\nWHEN NOT MATCHED THEN INSERT (\"ID\", \"EMAIL\", \"CODE\", \"CATEGORY\") VALUES ("), Fragment.encode(Db2testUniqueId.dbType, unsaved.id), Fragment.lit(", "), Fragment.encode(Db2Types.varchar, unsaved.email), Fragment.lit(", "), Fragment.encode(Db2Types.varchar, unsaved.code), Fragment.lit(", "), Fragment.encode(Db2Types.varchar, unsaved.category), Fragment.lit(")")) + Fragment.interpolate(Fragment.lit("MERGE INTO \"DB2TEST_UNIQUE\" AS t\nUSING (VALUES ("), Fragment.encode(Db2testUniqueId.db2Type, unsaved.id), Fragment.lit(", "), Fragment.encode(Db2Types.varchar, unsaved.email), Fragment.lit(", "), Fragment.encode(Db2Types.varchar, unsaved.code), Fragment.lit(", "), Fragment.encode(Db2Types.varchar, unsaved.category), Fragment.lit(")) AS s(\"ID\", \"EMAIL\", \"CODE\", \"CATEGORY\")\nON t.\"ID\" = s.\"ID\"\nWHEN MATCHED THEN UPDATE SET \"EMAIL\" = s.\"EMAIL\",\n\"CODE\" = s.\"CODE\",\n\"CATEGORY\" = s.\"CATEGORY\"\nWHEN NOT MATCHED THEN INSERT (\"ID\", \"EMAIL\", \"CODE\", \"CATEGORY\") VALUES ("), Fragment.encode(Db2testUniqueId.db2Type, unsaved.id), Fragment.lit(", "), Fragment.encode(Db2Types.varchar, unsaved.email), Fragment.lit(", "), Fragment.encode(Db2Types.varchar, unsaved.code), Fragment.lit(", "), Fragment.encode(Db2Types.varchar, unsaved.category), Fragment.lit(")")) .update() .runUnchecked(c) } diff --git a/testers/db2/kotlin/generated-and-checked-in/testdb/db2test_unique/Db2testUniqueRow.kt b/testers/db2/kotlin/generated-and-checked-in/testdb/db2test_unique/Db2testUniqueRow.kt index 859bf1f785..8f31a58606 100644 --- a/testers/db2/kotlin/generated-and-checked-in/testdb/db2test_unique/Db2testUniqueRow.kt +++ b/testers/db2/kotlin/generated-and-checked-in/testdb/db2test_unique/Db2testUniqueRow.kt @@ -32,6 +32,6 @@ data class Db2testUniqueRow( fun toUnsavedRow(): Db2testUniqueRowUnsaved = Db2testUniqueRowUnsaved(email, code, category) companion object { - val _rowParser: RowParser = RowParsers.of(Db2testUniqueId.dbType, Db2Types.varchar, Db2Types.varchar, Db2Types.varchar, { t0, t1, t2, t3 -> Db2testUniqueRow(t0, t1, t2, t3) }, { row -> arrayOf(row.id, row.email, row.code, row.category) }) + val _rowParser: RowParser = RowParsers.of(Db2testUniqueId.db2Type, Db2Types.varchar, Db2Types.varchar, Db2Types.varchar, { t0, t1, t2, t3 -> Db2testUniqueRow(t0, t1, t2, t3) }, { row -> arrayOf(row.id, row.email, row.code, row.category) }) } } \ No newline at end of file diff --git a/testers/db2/kotlin/generated-and-checked-in/testdb/distinct_type_test/DistinctTypeTestFields.kt b/testers/db2/kotlin/generated-and-checked-in/testdb/distinct_type_test/DistinctTypeTestFields.kt index 3284acf3f0..1c2590bdb0 100644 --- a/testers/db2/kotlin/generated-and-checked-in/testdb/distinct_type_test/DistinctTypeTestFields.kt +++ b/testers/db2/kotlin/generated-and-checked-in/testdb/distinct_type_test/DistinctTypeTestFields.kt @@ -28,13 +28,13 @@ data class DistinctTypeTestFields(val _path: List) : TupleExpr3 = _path - fun balance(): OptField = OptField(_path, "BALANCE", DistinctTypeTestRow::balance, null, null, { row, value -> row.copy(balance = value) }, MoneyAmount.dbType) + fun balance(): OptField = OptField(_path, "BALANCE", DistinctTypeTestRow::balance, null, null, { row, value -> row.copy(balance = value) }, MoneyAmount.db2Type) override fun columns(): List> = listOf(this.id().underlying, this.email().underlying, this.balance().underlying) - fun email(): Field = Field(_path, "EMAIL", DistinctTypeTestRow::email, null, null, { row, value -> row.copy(email = value) }, EmailAddress.dbType) + fun email(): Field = Field(_path, "EMAIL", DistinctTypeTestRow::email, null, null, { row, value -> row.copy(email = value) }, EmailAddress.db2Type) - fun id(): IdField = IdField(_path, "ID", DistinctTypeTestRow::id, null, null, { row, value -> row.copy(id = value) }, DistinctTypeTestId.dbType) + fun id(): IdField = IdField(_path, "ID", DistinctTypeTestRow::id, null, null, { row, value -> row.copy(id = value) }, DistinctTypeTestId.db2Type) override fun rowParser(): RowParser = DistinctTypeTestRow._rowParser.underlying diff --git a/testers/db2/kotlin/generated-and-checked-in/testdb/distinct_type_test/DistinctTypeTestId.kt b/testers/db2/kotlin/generated-and-checked-in/testdb/distinct_type_test/DistinctTypeTestId.kt index a134addcb7..2b7fd4cbac 100644 --- a/testers/db2/kotlin/generated-and-checked-in/testdb/distinct_type_test/DistinctTypeTestId.kt +++ b/testers/db2/kotlin/generated-and-checked-in/testdb/distinct_type_test/DistinctTypeTestId.kt @@ -20,7 +20,7 @@ data class DistinctTypeTestId(@field:JsonValue val value: Int) { val bijection: Bijection = Bijection.of(DistinctTypeTestId::value, ::DistinctTypeTestId) - val dbType: Db2Type = + val db2Type: Db2Type = KotlinDbTypes.Db2Types.integer.bimap(::DistinctTypeTestId, DistinctTypeTestId::value) } } \ No newline at end of file diff --git a/testers/db2/kotlin/generated-and-checked-in/testdb/distinct_type_test/DistinctTypeTestRepoImpl.kt b/testers/db2/kotlin/generated-and-checked-in/testdb/distinct_type_test/DistinctTypeTestRepoImpl.kt index f9346941bc..f5c650661f 100644 --- a/testers/db2/kotlin/generated-and-checked-in/testdb/distinct_type_test/DistinctTypeTestRepoImpl.kt +++ b/testers/db2/kotlin/generated-and-checked-in/testdb/distinct_type_test/DistinctTypeTestRepoImpl.kt @@ -26,21 +26,21 @@ class DistinctTypeTestRepoImpl() : DistinctTypeTestRepo { override fun deleteById( id: DistinctTypeTestId, c: Connection - ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"DISTINCT_TYPE_TEST\" where \"ID\" = "), Fragment.encode(DistinctTypeTestId.dbType, id), Fragment.lit("")).update().runUnchecked(c) > 0 + ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"DISTINCT_TYPE_TEST\" where \"ID\" = "), Fragment.encode(DistinctTypeTestId.db2Type, id), Fragment.lit("")).update().runUnchecked(c) > 0 override fun deleteByIds( ids: Array, c: Connection ): Int { val fragments: ArrayList = ArrayList() - for (id in ids) { fragments.add(Fragment.encode(DistinctTypeTestId.dbType, id)) } + for (id in ids) { fragments.add(Fragment.encode(DistinctTypeTestId.db2Type, id)) } return Fragment.interpolate(Fragment.lit("delete from \"DISTINCT_TYPE_TEST\" where \"ID\" in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).update().runUnchecked(c) } override fun insert( unsaved: DistinctTypeTestRow, c: Connection - ): DistinctTypeTestRow = Fragment.interpolate(Fragment.lit("SELECT \"ID\", \"EMAIL\", \"BALANCE\" FROM FINAL TABLE (INSERT INTO \"DISTINCT_TYPE_TEST\"(\"EMAIL\", \"BALANCE\")\nVALUES ("), Fragment.encode(EmailAddress.dbType, unsaved.email), Fragment.lit(", "), Fragment.encode(MoneyAmount.dbType.nullable(), unsaved.balance), Fragment.lit("))\n")) + ): DistinctTypeTestRow = Fragment.interpolate(Fragment.lit("SELECT \"ID\", \"EMAIL\", \"BALANCE\" FROM FINAL TABLE (INSERT INTO \"DISTINCT_TYPE_TEST\"(\"EMAIL\", \"BALANCE\")\nVALUES ("), Fragment.encode(EmailAddress.db2Type, unsaved.email), Fragment.lit(", "), Fragment.encode(MoneyAmount.db2Type.nullable(), unsaved.balance), Fragment.lit("))\n")) .updateReturning(DistinctTypeTestRow._rowParser.exactlyOne()).runUnchecked(c) override fun insert( @@ -50,9 +50,9 @@ class DistinctTypeTestRepoImpl() : DistinctTypeTestRepo { val columns: ArrayList = ArrayList() val values: ArrayList = ArrayList() columns.add(Fragment.lit("\"EMAIL\"")) - values.add(Fragment.interpolate(Fragment.encode(EmailAddress.dbType, unsaved.email), Fragment.lit(""))) + values.add(Fragment.interpolate(Fragment.encode(EmailAddress.db2Type, unsaved.email), Fragment.lit(""))) columns.add(Fragment.lit("\"BALANCE\"")) - values.add(Fragment.interpolate(Fragment.encode(MoneyAmount.dbType.nullable(), unsaved.balance), Fragment.lit(""))) + values.add(Fragment.interpolate(Fragment.encode(MoneyAmount.db2Type.nullable(), unsaved.balance), Fragment.lit(""))) val q: Fragment = Fragment.interpolate(Fragment.lit("SELECT \"ID\", \"EMAIL\", \"BALANCE\" FROM FINAL TABLE (INSERT INTO \"DISTINCT_TYPE_TEST\"("), Fragment.comma(columns.toMutableList()), Fragment.lit(")\nVALUES ("), Fragment.comma(values.toMutableList()), Fragment.lit("))\n")) return q.updateReturning(DistinctTypeTestRow._rowParser.exactlyOne()).runUnchecked(c) } @@ -64,14 +64,14 @@ class DistinctTypeTestRepoImpl() : DistinctTypeTestRepo { override fun selectById( id: DistinctTypeTestId, c: Connection - ): DistinctTypeTestRow? = Fragment.interpolate(Fragment.lit("select \"ID\", \"EMAIL\", \"BALANCE\"\nfrom \"DISTINCT_TYPE_TEST\"\nwhere \"ID\" = "), Fragment.encode(DistinctTypeTestId.dbType, id), Fragment.lit("")).query(DistinctTypeTestRow._rowParser.first()).runUnchecked(c) + ): DistinctTypeTestRow? = Fragment.interpolate(Fragment.lit("select \"ID\", \"EMAIL\", \"BALANCE\"\nfrom \"DISTINCT_TYPE_TEST\"\nwhere \"ID\" = "), Fragment.encode(DistinctTypeTestId.db2Type, id), Fragment.lit("")).query(DistinctTypeTestRow._rowParser.first()).runUnchecked(c) override fun selectByIds( ids: Array, c: Connection ): List { val fragments: ArrayList = ArrayList() - for (id in ids) { fragments.add(Fragment.encode(DistinctTypeTestId.dbType, id)) } + for (id in ids) { fragments.add(Fragment.encode(DistinctTypeTestId.db2Type, id)) } return Fragment.interpolate(Fragment.lit("select \"ID\", \"EMAIL\", \"BALANCE\" from \"DISTINCT_TYPE_TEST\" where \"ID\" in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).query(DistinctTypeTestRow._rowParser.all()).runUnchecked(c) } @@ -91,14 +91,14 @@ class DistinctTypeTestRepoImpl() : DistinctTypeTestRepo { c: Connection ): Boolean { val id: DistinctTypeTestId = row.id - return Fragment.interpolate(Fragment.lit("update \"DISTINCT_TYPE_TEST\"\nset \"EMAIL\" = "), Fragment.encode(EmailAddress.dbType, row.email), Fragment.lit(",\n\"BALANCE\" = "), Fragment.encode(MoneyAmount.dbType.nullable(), row.balance), Fragment.lit("\nwhere \"ID\" = "), Fragment.encode(DistinctTypeTestId.dbType, id), Fragment.lit("")).update().runUnchecked(c) > 0 + return Fragment.interpolate(Fragment.lit("update \"DISTINCT_TYPE_TEST\"\nset \"EMAIL\" = "), Fragment.encode(EmailAddress.db2Type, row.email), Fragment.lit(",\n\"BALANCE\" = "), Fragment.encode(MoneyAmount.db2Type.nullable(), row.balance), Fragment.lit("\nwhere \"ID\" = "), Fragment.encode(DistinctTypeTestId.db2Type, id), Fragment.lit("")).update().runUnchecked(c) > 0 } override fun upsert( unsaved: DistinctTypeTestRow, c: Connection ) { - Fragment.interpolate(Fragment.lit("MERGE INTO \"DISTINCT_TYPE_TEST\" AS t\nUSING (VALUES ("), Fragment.encode(DistinctTypeTestId.dbType, unsaved.id), Fragment.lit(", "), Fragment.encode(EmailAddress.dbType, unsaved.email), Fragment.lit(", "), Fragment.encode(MoneyAmount.dbType.nullable(), unsaved.balance), Fragment.lit(")) AS s(\"ID\", \"EMAIL\", \"BALANCE\")\nON t.\"ID\" = s.\"ID\"\nWHEN MATCHED THEN UPDATE SET \"EMAIL\" = s.\"EMAIL\",\n\"BALANCE\" = s.\"BALANCE\"\nWHEN NOT MATCHED THEN INSERT (\"ID\", \"EMAIL\", \"BALANCE\") VALUES ("), Fragment.encode(DistinctTypeTestId.dbType, unsaved.id), Fragment.lit(", "), Fragment.encode(EmailAddress.dbType, unsaved.email), Fragment.lit(", "), Fragment.encode(MoneyAmount.dbType.nullable(), unsaved.balance), Fragment.lit(")")) + Fragment.interpolate(Fragment.lit("MERGE INTO \"DISTINCT_TYPE_TEST\" AS t\nUSING (VALUES ("), Fragment.encode(DistinctTypeTestId.db2Type, unsaved.id), Fragment.lit(", "), Fragment.encode(EmailAddress.db2Type, unsaved.email), Fragment.lit(", "), Fragment.encode(MoneyAmount.db2Type.nullable(), unsaved.balance), Fragment.lit(")) AS s(\"ID\", \"EMAIL\", \"BALANCE\")\nON t.\"ID\" = s.\"ID\"\nWHEN MATCHED THEN UPDATE SET \"EMAIL\" = s.\"EMAIL\",\n\"BALANCE\" = s.\"BALANCE\"\nWHEN NOT MATCHED THEN INSERT (\"ID\", \"EMAIL\", \"BALANCE\") VALUES ("), Fragment.encode(DistinctTypeTestId.db2Type, unsaved.id), Fragment.lit(", "), Fragment.encode(EmailAddress.db2Type, unsaved.email), Fragment.lit(", "), Fragment.encode(MoneyAmount.db2Type.nullable(), unsaved.balance), Fragment.lit(")")) .update() .runUnchecked(c) } diff --git a/testers/db2/kotlin/generated-and-checked-in/testdb/distinct_type_test/DistinctTypeTestRow.kt b/testers/db2/kotlin/generated-and-checked-in/testdb/distinct_type_test/DistinctTypeTestRow.kt index 0b1d6fff84..fda14097c9 100644 --- a/testers/db2/kotlin/generated-and-checked-in/testdb/distinct_type_test/DistinctTypeTestRow.kt +++ b/testers/db2/kotlin/generated-and-checked-in/testdb/distinct_type_test/DistinctTypeTestRow.kt @@ -31,6 +31,6 @@ data class DistinctTypeTestRow( fun toUnsavedRow(): DistinctTypeTestRowUnsaved = DistinctTypeTestRowUnsaved(email, balance) companion object { - val _rowParser: RowParser = RowParsers.of(DistinctTypeTestId.dbType, EmailAddress.dbType, MoneyAmount.dbType.nullable(), { t0, t1, t2 -> DistinctTypeTestRow(t0, t1, t2) }, { row -> arrayOf(row.id, row.email, row.balance) }) + val _rowParser: RowParser = RowParsers.of(DistinctTypeTestId.db2Type, EmailAddress.db2Type, MoneyAmount.db2Type.nullable(), { t0, t1, t2 -> DistinctTypeTestRow(t0, t1, t2) }, { row -> arrayOf(row.id, row.email, row.balance) }) } } \ No newline at end of file diff --git a/testers/db2/kotlin/generated-and-checked-in/testdb/identity_params_test/IdentityParamsTestFields.kt b/testers/db2/kotlin/generated-and-checked-in/testdb/identity_params_test/IdentityParamsTestFields.kt index c34400d75f..395a8c46f3 100644 --- a/testers/db2/kotlin/generated-and-checked-in/testdb/identity_params_test/IdentityParamsTestFields.kt +++ b/testers/db2/kotlin/generated-and-checked-in/testdb/identity_params_test/IdentityParamsTestFields.kt @@ -26,7 +26,7 @@ data class IdentityParamsTestFields(val _path: List) : TupleExpr2> = listOf(this.id().underlying, this.name().underlying) - fun id(): IdField = IdField(_path, "ID", IdentityParamsTestRow::id, null, null, { row, value -> row.copy(id = value) }, IdentityParamsTestId.dbType) + fun id(): IdField = IdField(_path, "ID", IdentityParamsTestRow::id, null, null, { row, value -> row.copy(id = value) }, IdentityParamsTestId.db2Type) fun name(): Field = Field(_path, "NAME", IdentityParamsTestRow::name, null, null, { row, value -> row.copy(name = value) }, Db2Types.varchar) diff --git a/testers/db2/kotlin/generated-and-checked-in/testdb/identity_params_test/IdentityParamsTestId.kt b/testers/db2/kotlin/generated-and-checked-in/testdb/identity_params_test/IdentityParamsTestId.kt index 7a99ff4863..a82a52b3aa 100644 --- a/testers/db2/kotlin/generated-and-checked-in/testdb/identity_params_test/IdentityParamsTestId.kt +++ b/testers/db2/kotlin/generated-and-checked-in/testdb/identity_params_test/IdentityParamsTestId.kt @@ -20,7 +20,7 @@ data class IdentityParamsTestId(@field:JsonValue val value: Int) { val bijection: Bijection = Bijection.of(IdentityParamsTestId::value, ::IdentityParamsTestId) - val dbType: Db2Type = + val db2Type: Db2Type = KotlinDbTypes.Db2Types.integer.bimap(::IdentityParamsTestId, IdentityParamsTestId::value) } } \ No newline at end of file diff --git a/testers/db2/kotlin/generated-and-checked-in/testdb/identity_params_test/IdentityParamsTestRepoImpl.kt b/testers/db2/kotlin/generated-and-checked-in/testdb/identity_params_test/IdentityParamsTestRepoImpl.kt index 5ac4cf47cc..a50dc4db7f 100644 --- a/testers/db2/kotlin/generated-and-checked-in/testdb/identity_params_test/IdentityParamsTestRepoImpl.kt +++ b/testers/db2/kotlin/generated-and-checked-in/testdb/identity_params_test/IdentityParamsTestRepoImpl.kt @@ -24,14 +24,14 @@ class IdentityParamsTestRepoImpl() : IdentityParamsTestRepo { override fun deleteById( id: IdentityParamsTestId, c: Connection - ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"IDENTITY_PARAMS_TEST\" where \"ID\" = "), Fragment.encode(IdentityParamsTestId.dbType, id), Fragment.lit("")).update().runUnchecked(c) > 0 + ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"IDENTITY_PARAMS_TEST\" where \"ID\" = "), Fragment.encode(IdentityParamsTestId.db2Type, id), Fragment.lit("")).update().runUnchecked(c) > 0 override fun deleteByIds( ids: Array, c: Connection ): Int { val fragments: ArrayList = ArrayList() - for (id in ids) { fragments.add(Fragment.encode(IdentityParamsTestId.dbType, id)) } + for (id in ids) { fragments.add(Fragment.encode(IdentityParamsTestId.db2Type, id)) } return Fragment.interpolate(Fragment.lit("delete from \"IDENTITY_PARAMS_TEST\" where \"ID\" in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).update().runUnchecked(c) } @@ -60,14 +60,14 @@ class IdentityParamsTestRepoImpl() : IdentityParamsTestRepo { override fun selectById( id: IdentityParamsTestId, c: Connection - ): IdentityParamsTestRow? = Fragment.interpolate(Fragment.lit("select \"ID\", \"NAME\"\nfrom \"IDENTITY_PARAMS_TEST\"\nwhere \"ID\" = "), Fragment.encode(IdentityParamsTestId.dbType, id), Fragment.lit("")).query(IdentityParamsTestRow._rowParser.first()).runUnchecked(c) + ): IdentityParamsTestRow? = Fragment.interpolate(Fragment.lit("select \"ID\", \"NAME\"\nfrom \"IDENTITY_PARAMS_TEST\"\nwhere \"ID\" = "), Fragment.encode(IdentityParamsTestId.db2Type, id), Fragment.lit("")).query(IdentityParamsTestRow._rowParser.first()).runUnchecked(c) override fun selectByIds( ids: Array, c: Connection ): List { val fragments: ArrayList = ArrayList() - for (id in ids) { fragments.add(Fragment.encode(IdentityParamsTestId.dbType, id)) } + for (id in ids) { fragments.add(Fragment.encode(IdentityParamsTestId.db2Type, id)) } return Fragment.interpolate(Fragment.lit("select \"ID\", \"NAME\" from \"IDENTITY_PARAMS_TEST\" where \"ID\" in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).query(IdentityParamsTestRow._rowParser.all()).runUnchecked(c) } @@ -87,14 +87,14 @@ class IdentityParamsTestRepoImpl() : IdentityParamsTestRepo { c: Connection ): Boolean { val id: IdentityParamsTestId = row.id - return Fragment.interpolate(Fragment.lit("update \"IDENTITY_PARAMS_TEST\"\nset \"NAME\" = "), Fragment.encode(Db2Types.varchar, row.name), Fragment.lit("\nwhere \"ID\" = "), Fragment.encode(IdentityParamsTestId.dbType, id), Fragment.lit("")).update().runUnchecked(c) > 0 + return Fragment.interpolate(Fragment.lit("update \"IDENTITY_PARAMS_TEST\"\nset \"NAME\" = "), Fragment.encode(Db2Types.varchar, row.name), Fragment.lit("\nwhere \"ID\" = "), Fragment.encode(IdentityParamsTestId.db2Type, id), Fragment.lit("")).update().runUnchecked(c) > 0 } override fun upsert( unsaved: IdentityParamsTestRow, c: Connection ) { - Fragment.interpolate(Fragment.lit("MERGE INTO \"IDENTITY_PARAMS_TEST\" AS t\nUSING (VALUES ("), Fragment.encode(IdentityParamsTestId.dbType, unsaved.id), Fragment.lit(", "), Fragment.encode(Db2Types.varchar, unsaved.name), Fragment.lit(")) AS s(\"ID\", \"NAME\")\nON t.\"ID\" = s.\"ID\"\nWHEN MATCHED THEN UPDATE SET \"NAME\" = s.\"NAME\"\nWHEN NOT MATCHED THEN INSERT (\"ID\", \"NAME\") VALUES ("), Fragment.encode(IdentityParamsTestId.dbType, unsaved.id), Fragment.lit(", "), Fragment.encode(Db2Types.varchar, unsaved.name), Fragment.lit(")")) + Fragment.interpolate(Fragment.lit("MERGE INTO \"IDENTITY_PARAMS_TEST\" AS t\nUSING (VALUES ("), Fragment.encode(IdentityParamsTestId.db2Type, unsaved.id), Fragment.lit(", "), Fragment.encode(Db2Types.varchar, unsaved.name), Fragment.lit(")) AS s(\"ID\", \"NAME\")\nON t.\"ID\" = s.\"ID\"\nWHEN MATCHED THEN UPDATE SET \"NAME\" = s.\"NAME\"\nWHEN NOT MATCHED THEN INSERT (\"ID\", \"NAME\") VALUES ("), Fragment.encode(IdentityParamsTestId.db2Type, unsaved.id), Fragment.lit(", "), Fragment.encode(Db2Types.varchar, unsaved.name), Fragment.lit(")")) .update() .runUnchecked(c) } diff --git a/testers/db2/kotlin/generated-and-checked-in/testdb/identity_params_test/IdentityParamsTestRow.kt b/testers/db2/kotlin/generated-and-checked-in/testdb/identity_params_test/IdentityParamsTestRow.kt index 716ad84bc4..6f64fbba24 100644 --- a/testers/db2/kotlin/generated-and-checked-in/testdb/identity_params_test/IdentityParamsTestRow.kt +++ b/testers/db2/kotlin/generated-and-checked-in/testdb/identity_params_test/IdentityParamsTestRow.kt @@ -26,6 +26,6 @@ data class IdentityParamsTestRow( fun toUnsavedRow(): IdentityParamsTestRowUnsaved = IdentityParamsTestRowUnsaved(name) companion object { - val _rowParser: RowParser = RowParsers.of(IdentityParamsTestId.dbType, Db2Types.varchar, { t0, t1 -> IdentityParamsTestRow(t0, t1) }, { row -> arrayOf(row.id, row.name) }) + val _rowParser: RowParser = RowParsers.of(IdentityParamsTestId.db2Type, Db2Types.varchar, { t0, t1 -> IdentityParamsTestRow(t0, t1) }, { row -> arrayOf(row.id, row.name) }) } } \ No newline at end of file diff --git a/testers/db2/kotlin/generated-and-checked-in/testdb/order_items/OrderItemsFields.kt b/testers/db2/kotlin/generated-and-checked-in/testdb/order_items/OrderItemsFields.kt index d317563f56..1e3f0fae46 100644 --- a/testers/db2/kotlin/generated-and-checked-in/testdb/order_items/OrderItemsFields.kt +++ b/testers/db2/kotlin/generated-and-checked-in/testdb/order_items/OrderItemsFields.kt @@ -47,7 +47,7 @@ data class OrderItemsFields(val _path: List) : TupleExpr5 = IdField(_path, "ITEM_NUMBER", OrderItemsRow::itemNumber, null, null, { row, value -> row.copy(itemNumber = value) }, KotlinDbTypes.Db2Types.integer) - fun orderId(): IdField = IdField(_path, "ORDER_ID", OrderItemsRow::orderId, null, null, { row, value -> row.copy(orderId = value) }, OrdersId.dbType) + fun orderId(): IdField = IdField(_path, "ORDER_ID", OrderItemsRow::orderId, null, null, { row, value -> row.copy(orderId = value) }, OrdersId.db2Type) fun productName(): Field = Field(_path, "PRODUCT_NAME", OrderItemsRow::productName, null, null, { row, value -> row.copy(productName = value) }, Db2Types.varchar) diff --git a/testers/db2/kotlin/generated-and-checked-in/testdb/order_items/OrderItemsId.kt b/testers/db2/kotlin/generated-and-checked-in/testdb/order_items/OrderItemsId.kt index 1f936769b2..2a656d9eea 100644 --- a/testers/db2/kotlin/generated-and-checked-in/testdb/order_items/OrderItemsId.kt +++ b/testers/db2/kotlin/generated-and-checked-in/testdb/order_items/OrderItemsId.kt @@ -22,6 +22,6 @@ data class OrderItemsId( override fun _2(): Int = itemNumber companion object { - val _rowParser: RowParser = RowParsers.of(OrdersId.dbType, KotlinDbTypes.Db2Types.integer, { t0, t1 -> OrderItemsId(t0, t1) }, { row -> arrayOf(row.orderId, row.itemNumber) }) + val _rowParser: RowParser = RowParsers.of(OrdersId.db2Type, KotlinDbTypes.Db2Types.integer, { t0, t1 -> OrderItemsId(t0, t1) }, { row -> arrayOf(row.orderId, row.itemNumber) }) } } \ No newline at end of file diff --git a/testers/db2/kotlin/generated-and-checked-in/testdb/order_items/OrderItemsRepoImpl.kt b/testers/db2/kotlin/generated-and-checked-in/testdb/order_items/OrderItemsRepoImpl.kt index b8796062a2..a9b95e45b9 100644 --- a/testers/db2/kotlin/generated-and-checked-in/testdb/order_items/OrderItemsRepoImpl.kt +++ b/testers/db2/kotlin/generated-and-checked-in/testdb/order_items/OrderItemsRepoImpl.kt @@ -26,21 +26,21 @@ class OrderItemsRepoImpl() : OrderItemsRepo { override fun deleteById( compositeId: OrderItemsId, c: Connection - ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"ORDER_ITEMS\" where \"ORDER_ID\" = "), Fragment.encode(OrdersId.dbType, compositeId.orderId), Fragment.lit(" AND \"ITEM_NUMBER\" = "), Fragment.encode(KotlinDbTypes.Db2Types.integer, compositeId.itemNumber), Fragment.lit("")).update().runUnchecked(c) > 0 + ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"ORDER_ITEMS\" where \"ORDER_ID\" = "), Fragment.encode(OrdersId.db2Type, compositeId.orderId), Fragment.lit(" AND \"ITEM_NUMBER\" = "), Fragment.encode(KotlinDbTypes.Db2Types.integer, compositeId.itemNumber), Fragment.lit("")).update().runUnchecked(c) > 0 override fun deleteByIds( compositeIds: Array, c: Connection ): Int { val fragments: ArrayList = ArrayList() - for (id in compositeIds) { fragments.add(Fragment.interpolate(Fragment.lit("("), Fragment.encode(OrdersId.dbType, id.orderId), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.integer, id.itemNumber), Fragment.lit(")"))) } + for (id in compositeIds) { fragments.add(Fragment.interpolate(Fragment.lit("("), Fragment.encode(OrdersId.db2Type, id.orderId), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.integer, id.itemNumber), Fragment.lit(")"))) } return Fragment.interpolate(Fragment.lit("delete from \"ORDER_ITEMS\" where (\"ORDER_ID\", \"ITEM_NUMBER\") in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).update().runUnchecked(c) } override fun insert( unsaved: OrderItemsRow, c: Connection - ): OrderItemsRow = Fragment.interpolate(Fragment.lit("SELECT \"ORDER_ID\", \"ITEM_NUMBER\", \"PRODUCT_NAME\", \"QUANTITY\", \"UNIT_PRICE\" FROM FINAL TABLE (INSERT INTO \"ORDER_ITEMS\"(\"ORDER_ID\", \"ITEM_NUMBER\", \"PRODUCT_NAME\", \"QUANTITY\", \"UNIT_PRICE\")\nVALUES ("), Fragment.encode(OrdersId.dbType, unsaved.orderId), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.integer, unsaved.itemNumber), Fragment.lit(", "), Fragment.encode(Db2Types.varchar, unsaved.productName), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.integer, unsaved.quantity), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.decimal, unsaved.unitPrice), Fragment.lit("))\n")) + ): OrderItemsRow = Fragment.interpolate(Fragment.lit("SELECT \"ORDER_ID\", \"ITEM_NUMBER\", \"PRODUCT_NAME\", \"QUANTITY\", \"UNIT_PRICE\" FROM FINAL TABLE (INSERT INTO \"ORDER_ITEMS\"(\"ORDER_ID\", \"ITEM_NUMBER\", \"PRODUCT_NAME\", \"QUANTITY\", \"UNIT_PRICE\")\nVALUES ("), Fragment.encode(OrdersId.db2Type, unsaved.orderId), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.integer, unsaved.itemNumber), Fragment.lit(", "), Fragment.encode(Db2Types.varchar, unsaved.productName), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.integer, unsaved.quantity), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.decimal, unsaved.unitPrice), Fragment.lit("))\n")) .updateReturning(OrderItemsRow._rowParser.exactlyOne()).runUnchecked(c) override fun select(): SelectBuilder = SelectBuilder.of("\"ORDER_ITEMS\"", OrderItemsFields.structure, OrderItemsRow._rowParser, Dialect.DB2) @@ -50,14 +50,14 @@ class OrderItemsRepoImpl() : OrderItemsRepo { override fun selectById( compositeId: OrderItemsId, c: Connection - ): OrderItemsRow? = Fragment.interpolate(Fragment.lit("select \"ORDER_ID\", \"ITEM_NUMBER\", \"PRODUCT_NAME\", \"QUANTITY\", \"UNIT_PRICE\"\nfrom \"ORDER_ITEMS\"\nwhere \"ORDER_ID\" = "), Fragment.encode(OrdersId.dbType, compositeId.orderId), Fragment.lit(" AND \"ITEM_NUMBER\" = "), Fragment.encode(KotlinDbTypes.Db2Types.integer, compositeId.itemNumber), Fragment.lit("")).query(OrderItemsRow._rowParser.first()).runUnchecked(c) + ): OrderItemsRow? = Fragment.interpolate(Fragment.lit("select \"ORDER_ID\", \"ITEM_NUMBER\", \"PRODUCT_NAME\", \"QUANTITY\", \"UNIT_PRICE\"\nfrom \"ORDER_ITEMS\"\nwhere \"ORDER_ID\" = "), Fragment.encode(OrdersId.db2Type, compositeId.orderId), Fragment.lit(" AND \"ITEM_NUMBER\" = "), Fragment.encode(KotlinDbTypes.Db2Types.integer, compositeId.itemNumber), Fragment.lit("")).query(OrderItemsRow._rowParser.first()).runUnchecked(c) override fun selectByIds( compositeIds: Array, c: Connection ): List { val fragments: ArrayList = ArrayList() - for (id in compositeIds) { fragments.add(Fragment.interpolate(Fragment.lit("("), Fragment.encode(OrdersId.dbType, id.orderId), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.integer, id.itemNumber), Fragment.lit(")"))) } + for (id in compositeIds) { fragments.add(Fragment.interpolate(Fragment.lit("("), Fragment.encode(OrdersId.db2Type, id.orderId), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.integer, id.itemNumber), Fragment.lit(")"))) } return Fragment.interpolate(Fragment.lit("select \"ORDER_ID\", \"ITEM_NUMBER\", \"PRODUCT_NAME\", \"QUANTITY\", \"UNIT_PRICE\" from \"ORDER_ITEMS\" where (\"ORDER_ID\", \"ITEM_NUMBER\") in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).query(OrderItemsRow._rowParser.all()).runUnchecked(c) } @@ -77,14 +77,14 @@ class OrderItemsRepoImpl() : OrderItemsRepo { c: Connection ): Boolean { val compositeId: OrderItemsId = row.compositeId() - return Fragment.interpolate(Fragment.lit("update \"ORDER_ITEMS\"\nset \"PRODUCT_NAME\" = "), Fragment.encode(Db2Types.varchar, row.productName), Fragment.lit(",\n\"QUANTITY\" = "), Fragment.encode(KotlinDbTypes.Db2Types.integer, row.quantity), Fragment.lit(",\n\"UNIT_PRICE\" = "), Fragment.encode(KotlinDbTypes.Db2Types.decimal, row.unitPrice), Fragment.lit("\nwhere \"ORDER_ID\" = "), Fragment.encode(OrdersId.dbType, compositeId.orderId), Fragment.lit(" AND \"ITEM_NUMBER\" = "), Fragment.encode(KotlinDbTypes.Db2Types.integer, compositeId.itemNumber), Fragment.lit("")).update().runUnchecked(c) > 0 + return Fragment.interpolate(Fragment.lit("update \"ORDER_ITEMS\"\nset \"PRODUCT_NAME\" = "), Fragment.encode(Db2Types.varchar, row.productName), Fragment.lit(",\n\"QUANTITY\" = "), Fragment.encode(KotlinDbTypes.Db2Types.integer, row.quantity), Fragment.lit(",\n\"UNIT_PRICE\" = "), Fragment.encode(KotlinDbTypes.Db2Types.decimal, row.unitPrice), Fragment.lit("\nwhere \"ORDER_ID\" = "), Fragment.encode(OrdersId.db2Type, compositeId.orderId), Fragment.lit(" AND \"ITEM_NUMBER\" = "), Fragment.encode(KotlinDbTypes.Db2Types.integer, compositeId.itemNumber), Fragment.lit("")).update().runUnchecked(c) > 0 } override fun upsert( unsaved: OrderItemsRow, c: Connection ) { - Fragment.interpolate(Fragment.lit("MERGE INTO \"ORDER_ITEMS\" AS t\nUSING (VALUES ("), Fragment.encode(OrdersId.dbType, unsaved.orderId), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.integer, unsaved.itemNumber), Fragment.lit(", "), Fragment.encode(Db2Types.varchar, unsaved.productName), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.integer, unsaved.quantity), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.decimal, unsaved.unitPrice), Fragment.lit(")) AS s(\"ORDER_ID\", \"ITEM_NUMBER\", \"PRODUCT_NAME\", \"QUANTITY\", \"UNIT_PRICE\")\nON t.\"ORDER_ID\" = s.\"ORDER_ID\" AND t.\"ITEM_NUMBER\" = s.\"ITEM_NUMBER\"\nWHEN MATCHED THEN UPDATE SET \"PRODUCT_NAME\" = s.\"PRODUCT_NAME\",\n\"QUANTITY\" = s.\"QUANTITY\",\n\"UNIT_PRICE\" = s.\"UNIT_PRICE\"\nWHEN NOT MATCHED THEN INSERT (\"ORDER_ID\", \"ITEM_NUMBER\", \"PRODUCT_NAME\", \"QUANTITY\", \"UNIT_PRICE\") VALUES ("), Fragment.encode(OrdersId.dbType, unsaved.orderId), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.integer, unsaved.itemNumber), Fragment.lit(", "), Fragment.encode(Db2Types.varchar, unsaved.productName), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.integer, unsaved.quantity), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.decimal, unsaved.unitPrice), Fragment.lit(")")) + Fragment.interpolate(Fragment.lit("MERGE INTO \"ORDER_ITEMS\" AS t\nUSING (VALUES ("), Fragment.encode(OrdersId.db2Type, unsaved.orderId), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.integer, unsaved.itemNumber), Fragment.lit(", "), Fragment.encode(Db2Types.varchar, unsaved.productName), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.integer, unsaved.quantity), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.decimal, unsaved.unitPrice), Fragment.lit(")) AS s(\"ORDER_ID\", \"ITEM_NUMBER\", \"PRODUCT_NAME\", \"QUANTITY\", \"UNIT_PRICE\")\nON t.\"ORDER_ID\" = s.\"ORDER_ID\" AND t.\"ITEM_NUMBER\" = s.\"ITEM_NUMBER\"\nWHEN MATCHED THEN UPDATE SET \"PRODUCT_NAME\" = s.\"PRODUCT_NAME\",\n\"QUANTITY\" = s.\"QUANTITY\",\n\"UNIT_PRICE\" = s.\"UNIT_PRICE\"\nWHEN NOT MATCHED THEN INSERT (\"ORDER_ID\", \"ITEM_NUMBER\", \"PRODUCT_NAME\", \"QUANTITY\", \"UNIT_PRICE\") VALUES ("), Fragment.encode(OrdersId.db2Type, unsaved.orderId), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.integer, unsaved.itemNumber), Fragment.lit(", "), Fragment.encode(Db2Types.varchar, unsaved.productName), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.integer, unsaved.quantity), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.decimal, unsaved.unitPrice), Fragment.lit(")")) .update() .runUnchecked(c) } diff --git a/testers/db2/kotlin/generated-and-checked-in/testdb/order_items/OrderItemsRow.kt b/testers/db2/kotlin/generated-and-checked-in/testdb/order_items/OrderItemsRow.kt index 3d767b322c..75807df1fb 100644 --- a/testers/db2/kotlin/generated-and-checked-in/testdb/order_items/OrderItemsRow.kt +++ b/testers/db2/kotlin/generated-and-checked-in/testdb/order_items/OrderItemsRow.kt @@ -40,7 +40,7 @@ data class OrderItemsRow( fun id(): OrderItemsId = this.compositeId() companion object { - val _rowParser: RowParser = RowParsers.of(OrdersId.dbType, KotlinDbTypes.Db2Types.integer, Db2Types.varchar, KotlinDbTypes.Db2Types.integer, KotlinDbTypes.Db2Types.decimal, { t0, t1, t2, t3, t4 -> OrderItemsRow(t0, t1, t2, t3, t4) }, { row -> arrayOf(row.orderId, row.itemNumber, row.productName, row.quantity, row.unitPrice) }) + val _rowParser: RowParser = RowParsers.of(OrdersId.db2Type, KotlinDbTypes.Db2Types.integer, Db2Types.varchar, KotlinDbTypes.Db2Types.integer, KotlinDbTypes.Db2Types.decimal, { t0, t1, t2, t3, t4 -> OrderItemsRow(t0, t1, t2, t3, t4) }, { row -> arrayOf(row.orderId, row.itemNumber, row.productName, row.quantity, row.unitPrice) }) fun apply( compositeId: OrderItemsId, diff --git a/testers/db2/kotlin/generated-and-checked-in/testdb/orders/OrdersFields.kt b/testers/db2/kotlin/generated-and-checked-in/testdb/orders/OrdersFields.kt index 7aad7dbd9d..ccdc257071 100644 --- a/testers/db2/kotlin/generated-and-checked-in/testdb/orders/OrdersFields.kt +++ b/testers/db2/kotlin/generated-and-checked-in/testdb/orders/OrdersFields.kt @@ -40,13 +40,13 @@ data class OrdersFields(val _path: List) : TupleExpr5> = listOf(this.orderId().underlying, this.customerId().underlying, this.orderDate().underlying, this.totalAmount().underlying, this.status().underlying) - fun customerId(): Field = Field(_path, "CUSTOMER_ID", OrdersRow::customerId, null, null, { row, value -> row.copy(customerId = value) }, CustomersId.dbType) + fun customerId(): Field = Field(_path, "CUSTOMER_ID", OrdersRow::customerId, null, null, { row, value -> row.copy(customerId = value) }, CustomersId.db2Type) fun fkCustomers(): ForeignKey = ForeignKey.of("FK_CUSTOMER").withColumnPair(customerId(), CustomersFields::customerId) fun orderDate(): Field = Field(_path, "ORDER_DATE", OrdersRow::orderDate, null, null, { row, value -> row.copy(orderDate = value) }, Db2Types.date) - fun orderId(): IdField = IdField(_path, "ORDER_ID", OrdersRow::orderId, null, null, { row, value -> row.copy(orderId = value) }, OrdersId.dbType) + fun orderId(): IdField = IdField(_path, "ORDER_ID", OrdersRow::orderId, null, null, { row, value -> row.copy(orderId = value) }, OrdersId.db2Type) override fun rowParser(): RowParser = OrdersRow._rowParser.underlying diff --git a/testers/db2/kotlin/generated-and-checked-in/testdb/orders/OrdersId.kt b/testers/db2/kotlin/generated-and-checked-in/testdb/orders/OrdersId.kt index 07d2642ec3..e052ff87ce 100644 --- a/testers/db2/kotlin/generated-and-checked-in/testdb/orders/OrdersId.kt +++ b/testers/db2/kotlin/generated-and-checked-in/testdb/orders/OrdersId.kt @@ -20,7 +20,7 @@ data class OrdersId(@field:JsonValue val value: Int) { val bijection: Bijection = Bijection.of(OrdersId::value, ::OrdersId) - val dbType: Db2Type = + val db2Type: Db2Type = KotlinDbTypes.Db2Types.integer.bimap(::OrdersId, OrdersId::value) } } \ No newline at end of file diff --git a/testers/db2/kotlin/generated-and-checked-in/testdb/orders/OrdersRepoImpl.kt b/testers/db2/kotlin/generated-and-checked-in/testdb/orders/OrdersRepoImpl.kt index 5496335936..141dd2a5b8 100644 --- a/testers/db2/kotlin/generated-and-checked-in/testdb/orders/OrdersRepoImpl.kt +++ b/testers/db2/kotlin/generated-and-checked-in/testdb/orders/OrdersRepoImpl.kt @@ -27,21 +27,21 @@ class OrdersRepoImpl() : OrdersRepo { override fun deleteById( orderId: OrdersId, c: Connection - ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"ORDERS\" where \"ORDER_ID\" = "), Fragment.encode(OrdersId.dbType, orderId), Fragment.lit("")).update().runUnchecked(c) > 0 + ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"ORDERS\" where \"ORDER_ID\" = "), Fragment.encode(OrdersId.db2Type, orderId), Fragment.lit("")).update().runUnchecked(c) > 0 override fun deleteByIds( orderIds: Array, c: Connection ): Int { val fragments: ArrayList = ArrayList() - for (id in orderIds) { fragments.add(Fragment.encode(OrdersId.dbType, id)) } + for (id in orderIds) { fragments.add(Fragment.encode(OrdersId.db2Type, id)) } return Fragment.interpolate(Fragment.lit("delete from \"ORDERS\" where \"ORDER_ID\" in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).update().runUnchecked(c) } override fun insert( unsaved: OrdersRow, c: Connection - ): OrdersRow = Fragment.interpolate(Fragment.lit("SELECT \"ORDER_ID\", \"CUSTOMER_ID\", \"ORDER_DATE\", \"TOTAL_AMOUNT\", \"STATUS\" FROM FINAL TABLE (INSERT INTO \"ORDERS\"(\"CUSTOMER_ID\", \"ORDER_DATE\", \"TOTAL_AMOUNT\", \"STATUS\")\nVALUES ("), Fragment.encode(CustomersId.dbType, unsaved.customerId), Fragment.lit(", "), Fragment.encode(Db2Types.date, unsaved.orderDate), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.decimal.nullable(), unsaved.totalAmount), Fragment.lit(", "), Fragment.encode(Db2Types.varchar.nullable(), unsaved.status), Fragment.lit("))\n")) + ): OrdersRow = Fragment.interpolate(Fragment.lit("SELECT \"ORDER_ID\", \"CUSTOMER_ID\", \"ORDER_DATE\", \"TOTAL_AMOUNT\", \"STATUS\" FROM FINAL TABLE (INSERT INTO \"ORDERS\"(\"CUSTOMER_ID\", \"ORDER_DATE\", \"TOTAL_AMOUNT\", \"STATUS\")\nVALUES ("), Fragment.encode(CustomersId.db2Type, unsaved.customerId), Fragment.lit(", "), Fragment.encode(Db2Types.date, unsaved.orderDate), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.decimal.nullable(), unsaved.totalAmount), Fragment.lit(", "), Fragment.encode(Db2Types.varchar.nullable(), unsaved.status), Fragment.lit("))\n")) .updateReturning(OrdersRow._rowParser.exactlyOne()).runUnchecked(c) override fun insert( @@ -51,7 +51,7 @@ class OrdersRepoImpl() : OrdersRepo { val columns: ArrayList = ArrayList() val values: ArrayList = ArrayList() columns.add(Fragment.lit("\"CUSTOMER_ID\"")) - values.add(Fragment.interpolate(Fragment.encode(CustomersId.dbType, unsaved.customerId), Fragment.lit(""))) + values.add(Fragment.interpolate(Fragment.encode(CustomersId.db2Type, unsaved.customerId), Fragment.lit(""))) columns.add(Fragment.lit("\"TOTAL_AMOUNT\"")) values.add(Fragment.interpolate(Fragment.encode(KotlinDbTypes.Db2Types.decimal.nullable(), unsaved.totalAmount), Fragment.lit(""))) unsaved.orderDate.visit( @@ -75,14 +75,14 @@ class OrdersRepoImpl() : OrdersRepo { override fun selectById( orderId: OrdersId, c: Connection - ): OrdersRow? = Fragment.interpolate(Fragment.lit("select \"ORDER_ID\", \"CUSTOMER_ID\", \"ORDER_DATE\", \"TOTAL_AMOUNT\", \"STATUS\"\nfrom \"ORDERS\"\nwhere \"ORDER_ID\" = "), Fragment.encode(OrdersId.dbType, orderId), Fragment.lit("")).query(OrdersRow._rowParser.first()).runUnchecked(c) + ): OrdersRow? = Fragment.interpolate(Fragment.lit("select \"ORDER_ID\", \"CUSTOMER_ID\", \"ORDER_DATE\", \"TOTAL_AMOUNT\", \"STATUS\"\nfrom \"ORDERS\"\nwhere \"ORDER_ID\" = "), Fragment.encode(OrdersId.db2Type, orderId), Fragment.lit("")).query(OrdersRow._rowParser.first()).runUnchecked(c) override fun selectByIds( orderIds: Array, c: Connection ): List { val fragments: ArrayList = ArrayList() - for (id in orderIds) { fragments.add(Fragment.encode(OrdersId.dbType, id)) } + for (id in orderIds) { fragments.add(Fragment.encode(OrdersId.db2Type, id)) } return Fragment.interpolate(Fragment.lit("select \"ORDER_ID\", \"CUSTOMER_ID\", \"ORDER_DATE\", \"TOTAL_AMOUNT\", \"STATUS\" from \"ORDERS\" where \"ORDER_ID\" in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).query(OrdersRow._rowParser.all()).runUnchecked(c) } @@ -102,14 +102,14 @@ class OrdersRepoImpl() : OrdersRepo { c: Connection ): Boolean { val orderId: OrdersId = row.orderId - return Fragment.interpolate(Fragment.lit("update \"ORDERS\"\nset \"CUSTOMER_ID\" = "), Fragment.encode(CustomersId.dbType, row.customerId), Fragment.lit(",\n\"ORDER_DATE\" = "), Fragment.encode(Db2Types.date, row.orderDate), Fragment.lit(",\n\"TOTAL_AMOUNT\" = "), Fragment.encode(KotlinDbTypes.Db2Types.decimal.nullable(), row.totalAmount), Fragment.lit(",\n\"STATUS\" = "), Fragment.encode(Db2Types.varchar.nullable(), row.status), Fragment.lit("\nwhere \"ORDER_ID\" = "), Fragment.encode(OrdersId.dbType, orderId), Fragment.lit("")).update().runUnchecked(c) > 0 + return Fragment.interpolate(Fragment.lit("update \"ORDERS\"\nset \"CUSTOMER_ID\" = "), Fragment.encode(CustomersId.db2Type, row.customerId), Fragment.lit(",\n\"ORDER_DATE\" = "), Fragment.encode(Db2Types.date, row.orderDate), Fragment.lit(",\n\"TOTAL_AMOUNT\" = "), Fragment.encode(KotlinDbTypes.Db2Types.decimal.nullable(), row.totalAmount), Fragment.lit(",\n\"STATUS\" = "), Fragment.encode(Db2Types.varchar.nullable(), row.status), Fragment.lit("\nwhere \"ORDER_ID\" = "), Fragment.encode(OrdersId.db2Type, orderId), Fragment.lit("")).update().runUnchecked(c) > 0 } override fun upsert( unsaved: OrdersRow, c: Connection ) { - Fragment.interpolate(Fragment.lit("MERGE INTO \"ORDERS\" AS t\nUSING (VALUES ("), Fragment.encode(OrdersId.dbType, unsaved.orderId), Fragment.lit(", "), Fragment.encode(CustomersId.dbType, unsaved.customerId), Fragment.lit(", "), Fragment.encode(Db2Types.date, unsaved.orderDate), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.decimal.nullable(), unsaved.totalAmount), Fragment.lit(", "), Fragment.encode(Db2Types.varchar.nullable(), unsaved.status), Fragment.lit(")) AS s(\"ORDER_ID\", \"CUSTOMER_ID\", \"ORDER_DATE\", \"TOTAL_AMOUNT\", \"STATUS\")\nON t.\"ORDER_ID\" = s.\"ORDER_ID\"\nWHEN MATCHED THEN UPDATE SET \"CUSTOMER_ID\" = s.\"CUSTOMER_ID\",\n\"ORDER_DATE\" = s.\"ORDER_DATE\",\n\"TOTAL_AMOUNT\" = s.\"TOTAL_AMOUNT\",\n\"STATUS\" = s.\"STATUS\"\nWHEN NOT MATCHED THEN INSERT (\"ORDER_ID\", \"CUSTOMER_ID\", \"ORDER_DATE\", \"TOTAL_AMOUNT\", \"STATUS\") VALUES ("), Fragment.encode(OrdersId.dbType, unsaved.orderId), Fragment.lit(", "), Fragment.encode(CustomersId.dbType, unsaved.customerId), Fragment.lit(", "), Fragment.encode(Db2Types.date, unsaved.orderDate), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.decimal.nullable(), unsaved.totalAmount), Fragment.lit(", "), Fragment.encode(Db2Types.varchar.nullable(), unsaved.status), Fragment.lit(")")) + Fragment.interpolate(Fragment.lit("MERGE INTO \"ORDERS\" AS t\nUSING (VALUES ("), Fragment.encode(OrdersId.db2Type, unsaved.orderId), Fragment.lit(", "), Fragment.encode(CustomersId.db2Type, unsaved.customerId), Fragment.lit(", "), Fragment.encode(Db2Types.date, unsaved.orderDate), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.decimal.nullable(), unsaved.totalAmount), Fragment.lit(", "), Fragment.encode(Db2Types.varchar.nullable(), unsaved.status), Fragment.lit(")) AS s(\"ORDER_ID\", \"CUSTOMER_ID\", \"ORDER_DATE\", \"TOTAL_AMOUNT\", \"STATUS\")\nON t.\"ORDER_ID\" = s.\"ORDER_ID\"\nWHEN MATCHED THEN UPDATE SET \"CUSTOMER_ID\" = s.\"CUSTOMER_ID\",\n\"ORDER_DATE\" = s.\"ORDER_DATE\",\n\"TOTAL_AMOUNT\" = s.\"TOTAL_AMOUNT\",\n\"STATUS\" = s.\"STATUS\"\nWHEN NOT MATCHED THEN INSERT (\"ORDER_ID\", \"CUSTOMER_ID\", \"ORDER_DATE\", \"TOTAL_AMOUNT\", \"STATUS\") VALUES ("), Fragment.encode(OrdersId.db2Type, unsaved.orderId), Fragment.lit(", "), Fragment.encode(CustomersId.db2Type, unsaved.customerId), Fragment.lit(", "), Fragment.encode(Db2Types.date, unsaved.orderDate), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.Db2Types.decimal.nullable(), unsaved.totalAmount), Fragment.lit(", "), Fragment.encode(Db2Types.varchar.nullable(), unsaved.status), Fragment.lit(")")) .update() .runUnchecked(c) } diff --git a/testers/db2/kotlin/generated-and-checked-in/testdb/orders/OrdersRow.kt b/testers/db2/kotlin/generated-and-checked-in/testdb/orders/OrdersRow.kt index 5ae1ebb169..fe6d43b17b 100644 --- a/testers/db2/kotlin/generated-and-checked-in/testdb/orders/OrdersRow.kt +++ b/testers/db2/kotlin/generated-and-checked-in/testdb/orders/OrdersRow.kt @@ -53,6 +53,6 @@ data class OrdersRow( ): OrdersRowUnsaved = OrdersRowUnsaved(customerId, totalAmount, orderDate, status) companion object { - val _rowParser: RowParser = RowParsers.of(OrdersId.dbType, CustomersId.dbType, Db2Types.date, KotlinDbTypes.Db2Types.decimal.nullable(), Db2Types.varchar.nullable(), { t0, t1, t2, t3, t4 -> OrdersRow(t0, t1, t2, t3, t4) }, { row -> arrayOf(row.orderId, row.customerId, row.orderDate, row.totalAmount, row.status) }) + val _rowParser: RowParser = RowParsers.of(OrdersId.db2Type, CustomersId.db2Type, Db2Types.date, KotlinDbTypes.Db2Types.decimal.nullable(), Db2Types.varchar.nullable(), { t0, t1, t2, t3, t4 -> OrdersRow(t0, t1, t2, t3, t4) }, { row -> arrayOf(row.orderId, row.customerId, row.orderDate, row.totalAmount, row.status) }) } } \ No newline at end of file diff --git a/testers/db2/scala/generated-and-checked-in/testdb/EmailAddress.scala b/testers/db2/scala/generated-and-checked-in/testdb/EmailAddress.scala index a60c8646ff..31f2ba497d 100644 --- a/testers/db2/scala/generated-and-checked-in/testdb/EmailAddress.scala +++ b/testers/db2/scala/generated-and-checked-in/testdb/EmailAddress.scala @@ -18,5 +18,5 @@ case class EmailAddress(@JsonValue value: String) object EmailAddress { given bijection: Bijection[EmailAddress, String] = Bijection.apply[EmailAddress, String](_.value)(EmailAddress.apply) - given dbType: Db2Type[EmailAddress] = Db2Types.varchar.bimap(EmailAddress.apply, _.value).renamed(""""EMAIL_ADDRESS"""") + given db2Type: Db2Type[EmailAddress] = Db2Types.varchar.bimap(EmailAddress.apply, _.value).renamed(""""EMAIL_ADDRESS"""") } \ No newline at end of file diff --git a/testers/db2/scala/generated-and-checked-in/testdb/MoneyAmount.scala b/testers/db2/scala/generated-and-checked-in/testdb/MoneyAmount.scala index abbdfc502a..2d6799444a 100644 --- a/testers/db2/scala/generated-and-checked-in/testdb/MoneyAmount.scala +++ b/testers/db2/scala/generated-and-checked-in/testdb/MoneyAmount.scala @@ -18,5 +18,5 @@ case class MoneyAmount(@JsonValue value: BigDecimal) object MoneyAmount { given bijection: Bijection[MoneyAmount, BigDecimal] = Bijection.apply[MoneyAmount, BigDecimal](_.value)(MoneyAmount.apply) - given dbType: Db2Type[MoneyAmount] = ScalaDbTypes.Db2Types.decimal.bimap(MoneyAmount.apply, _.value).renamed(""""MONEY_AMOUNT"""") + given db2Type: Db2Type[MoneyAmount] = ScalaDbTypes.Db2Types.decimal.bimap(MoneyAmount.apply, _.value).renamed(""""MONEY_AMOUNT"""") } \ No newline at end of file diff --git a/testers/db2/scala/generated-and-checked-in/testdb/check_constraint_test/CheckConstraintTestFields.scala b/testers/db2/scala/generated-and-checked-in/testdb/check_constraint_test/CheckConstraintTestFields.scala index e253f3fba2..6d29b26d3b 100644 --- a/testers/db2/scala/generated-and-checked-in/testdb/check_constraint_test/CheckConstraintTestFields.scala +++ b/testers/db2/scala/generated-and-checked-in/testdb/check_constraint_test/CheckConstraintTestFields.scala @@ -27,7 +27,7 @@ class CheckConstraintTestFields(val `_path`: java.util.List[Path]) extends Tuple None, None, (row, value) => row.copy(id = value), - CheckConstraintTestId.dbType + CheckConstraintTestId.db2Type ) } diff --git a/testers/db2/scala/generated-and-checked-in/testdb/check_constraint_test/CheckConstraintTestId.scala b/testers/db2/scala/generated-and-checked-in/testdb/check_constraint_test/CheckConstraintTestId.scala index 777fec399c..f62f85741c 100644 --- a/testers/db2/scala/generated-and-checked-in/testdb/check_constraint_test/CheckConstraintTestId.scala +++ b/testers/db2/scala/generated-and-checked-in/testdb/check_constraint_test/CheckConstraintTestId.scala @@ -16,5 +16,5 @@ case class CheckConstraintTestId(@JsonValue value: Int) extends scala.AnyVal object CheckConstraintTestId { given bijection: Bijection[CheckConstraintTestId, Int] = Bijection.apply[CheckConstraintTestId, Int](_.value)(CheckConstraintTestId.apply) - given dbType: Db2Type[CheckConstraintTestId] = ScalaDbTypes.Db2Types.integer.bimap(CheckConstraintTestId.apply, _.value) + given db2Type: Db2Type[CheckConstraintTestId] = ScalaDbTypes.Db2Types.integer.bimap(CheckConstraintTestId.apply, _.value) } \ No newline at end of file diff --git a/testers/db2/scala/generated-and-checked-in/testdb/check_constraint_test/CheckConstraintTestRepoImpl.scala b/testers/db2/scala/generated-and-checked-in/testdb/check_constraint_test/CheckConstraintTestRepoImpl.scala index 10d01595c3..7cfecfc3af 100644 --- a/testers/db2/scala/generated-and-checked-in/testdb/check_constraint_test/CheckConstraintTestRepoImpl.scala +++ b/testers/db2/scala/generated-and-checked-in/testdb/check_constraint_test/CheckConstraintTestRepoImpl.scala @@ -20,17 +20,17 @@ import dev.typr.foundations.scala.Fragment.sql class CheckConstraintTestRepoImpl extends CheckConstraintTestRepo { override def delete: DeleteBuilder[CheckConstraintTestFields, CheckConstraintTestRow] = DeleteBuilder.of(""""CHECK_CONSTRAINT_TEST"""", CheckConstraintTestFields.structure, Dialect.DB2) - override def deleteById(id: CheckConstraintTestId)(using c: Connection): Boolean = sql"""delete from "CHECK_CONSTRAINT_TEST" where "ID" = ${Fragment.encode(CheckConstraintTestId.dbType, id)}""".update().runUnchecked(c) > 0 + override def deleteById(id: CheckConstraintTestId)(using c: Connection): Boolean = sql"""delete from "CHECK_CONSTRAINT_TEST" where "ID" = ${Fragment.encode(CheckConstraintTestId.db2Type, id)}""".update().runUnchecked(c) > 0 override def deleteByIds(ids: Array[CheckConstraintTestId])(using c: Connection): Int = { val fragments: ListBuffer[Fragment] = ListBuffer() - ids.foreach { id => fragments.addOne(Fragment.encode(CheckConstraintTestId.dbType, id)): @scala.annotation.nowarn } + ids.foreach { id => fragments.addOne(Fragment.encode(CheckConstraintTestId.db2Type, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("""delete from "CHECK_CONSTRAINT_TEST" where "ID" in ("""), Fragment.comma(fragments), Fragment.lit(")")).update().runUnchecked(c) } override def insert(unsaved: CheckConstraintTestRow)(using c: Connection): CheckConstraintTestRow = { sql"""SELECT "ID", "AGE", "STATUS", "PRICE" FROM FINAL TABLE (INSERT INTO "CHECK_CONSTRAINT_TEST"("ID", "AGE", "STATUS", "PRICE") - VALUES (${Fragment.encode(CheckConstraintTestId.dbType, unsaved.id)}, ${Fragment.encode(ScalaDbTypes.Db2Types.integer, unsaved.age)}, ${Fragment.encode(Db2Types.varchar, unsaved.status)}, ${Fragment.encode(ScalaDbTypes.Db2Types.decimal.nullable, unsaved.price)})) + VALUES (${Fragment.encode(CheckConstraintTestId.db2Type, unsaved.id)}, ${Fragment.encode(ScalaDbTypes.Db2Types.integer, unsaved.age)}, ${Fragment.encode(Db2Types.varchar, unsaved.status)}, ${Fragment.encode(ScalaDbTypes.Db2Types.decimal.nullable, unsaved.price)})) """ .updateReturning(CheckConstraintTestRow.`_rowParser`.exactlyOne()).runUnchecked(c) } @@ -46,12 +46,12 @@ class CheckConstraintTestRepoImpl extends CheckConstraintTestRepo { override def selectById(id: CheckConstraintTestId)(using c: Connection): Option[CheckConstraintTestRow] = { sql"""select "ID", "AGE", "STATUS", "PRICE" from "CHECK_CONSTRAINT_TEST" - where "ID" = ${Fragment.encode(CheckConstraintTestId.dbType, id)}""".query(CheckConstraintTestRow.`_rowParser`.first()).runUnchecked(c) + where "ID" = ${Fragment.encode(CheckConstraintTestId.db2Type, id)}""".query(CheckConstraintTestRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(ids: Array[CheckConstraintTestId])(using c: Connection): List[CheckConstraintTestRow] = { val fragments: ListBuffer[Fragment] = ListBuffer() - ids.foreach { id => fragments.addOne(Fragment.encode(CheckConstraintTestId.dbType, id)): @scala.annotation.nowarn } + ids.foreach { id => fragments.addOne(Fragment.encode(CheckConstraintTestId.db2Type, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("""select "ID", "AGE", "STATUS", "PRICE" from "CHECK_CONSTRAINT_TEST" where "ID" in ("""), Fragment.comma(fragments), Fragment.lit(")")).query(CheckConstraintTestRow.`_rowParser`.all()).runUnchecked(c) } @@ -69,17 +69,17 @@ class CheckConstraintTestRepoImpl extends CheckConstraintTestRepo { set "AGE" = ${Fragment.encode(ScalaDbTypes.Db2Types.integer, row.age)}, "STATUS" = ${Fragment.encode(Db2Types.varchar, row.status)}, "PRICE" = ${Fragment.encode(ScalaDbTypes.Db2Types.decimal.nullable, row.price)} - where "ID" = ${Fragment.encode(CheckConstraintTestId.dbType, id)}""".update().runUnchecked(c) > 0 + where "ID" = ${Fragment.encode(CheckConstraintTestId.db2Type, id)}""".update().runUnchecked(c) > 0 } override def upsert(unsaved: CheckConstraintTestRow)(using c: Connection): Unit = { sql"""MERGE INTO "CHECK_CONSTRAINT_TEST" AS t - USING (VALUES (${Fragment.encode(CheckConstraintTestId.dbType, unsaved.id)}, ${Fragment.encode(ScalaDbTypes.Db2Types.integer, unsaved.age)}, ${Fragment.encode(Db2Types.varchar, unsaved.status)}, ${Fragment.encode(ScalaDbTypes.Db2Types.decimal.nullable, unsaved.price)})) AS s("ID", "AGE", "STATUS", "PRICE") + USING (VALUES (${Fragment.encode(CheckConstraintTestId.db2Type, unsaved.id)}, ${Fragment.encode(ScalaDbTypes.Db2Types.integer, unsaved.age)}, ${Fragment.encode(Db2Types.varchar, unsaved.status)}, ${Fragment.encode(ScalaDbTypes.Db2Types.decimal.nullable, unsaved.price)})) AS s("ID", "AGE", "STATUS", "PRICE") ON t."ID" = s."ID" WHEN MATCHED THEN UPDATE SET "AGE" = s."AGE", "STATUS" = s."STATUS", "PRICE" = s."PRICE" - WHEN NOT MATCHED THEN INSERT ("ID", "AGE", "STATUS", "PRICE") VALUES (${Fragment.encode(CheckConstraintTestId.dbType, unsaved.id)}, ${Fragment.encode(ScalaDbTypes.Db2Types.integer, unsaved.age)}, ${Fragment.encode(Db2Types.varchar, unsaved.status)}, ${Fragment.encode(ScalaDbTypes.Db2Types.decimal.nullable, unsaved.price)})""" + WHEN NOT MATCHED THEN INSERT ("ID", "AGE", "STATUS", "PRICE") VALUES (${Fragment.encode(CheckConstraintTestId.db2Type, unsaved.id)}, ${Fragment.encode(ScalaDbTypes.Db2Types.integer, unsaved.age)}, ${Fragment.encode(Db2Types.varchar, unsaved.status)}, ${Fragment.encode(ScalaDbTypes.Db2Types.decimal.nullable, unsaved.price)})""" .update() .runUnchecked(c): @scala.annotation.nowarn } diff --git a/testers/db2/scala/generated-and-checked-in/testdb/check_constraint_test/CheckConstraintTestRow.scala b/testers/db2/scala/generated-and-checked-in/testdb/check_constraint_test/CheckConstraintTestRow.scala index 0e9b805312..c949382aa3 100644 --- a/testers/db2/scala/generated-and-checked-in/testdb/check_constraint_test/CheckConstraintTestRow.scala +++ b/testers/db2/scala/generated-and-checked-in/testdb/check_constraint_test/CheckConstraintTestRow.scala @@ -35,5 +35,5 @@ case class CheckConstraintTestRow( } object CheckConstraintTestRow { - val `_rowParser`: RowParser[CheckConstraintTestRow] = RowParsers.of(CheckConstraintTestId.dbType, ScalaDbTypes.Db2Types.integer, Db2Types.varchar, ScalaDbTypes.Db2Types.decimal.nullable)(CheckConstraintTestRow.apply)(row => Array[Any](row.id, row.age, row.status, row.price)) + val `_rowParser`: RowParser[CheckConstraintTestRow] = RowParsers.of(CheckConstraintTestId.db2Type, ScalaDbTypes.Db2Types.integer, Db2Types.varchar, ScalaDbTypes.Db2Types.decimal.nullable)(CheckConstraintTestRow.apply)(row => Array[Any](row.id, row.age, row.status, row.price)) } \ No newline at end of file diff --git a/testers/db2/scala/generated-and-checked-in/testdb/customers/CustomersFields.scala b/testers/db2/scala/generated-and-checked-in/testdb/customers/CustomersFields.scala index 9c3fdbf22c..54b14027c4 100644 --- a/testers/db2/scala/generated-and-checked-in/testdb/customers/CustomersFields.scala +++ b/testers/db2/scala/generated-and-checked-in/testdb/customers/CustomersFields.scala @@ -27,7 +27,7 @@ class CustomersFields(val `_path`: java.util.List[Path]) extends TupleExpr4[Cust None, None, (row, value) => row.copy(customerId = value), - CustomersId.dbType + CustomersId.db2Type ) } diff --git a/testers/db2/scala/generated-and-checked-in/testdb/customers/CustomersId.scala b/testers/db2/scala/generated-and-checked-in/testdb/customers/CustomersId.scala index 7f0d265580..914d250836 100644 --- a/testers/db2/scala/generated-and-checked-in/testdb/customers/CustomersId.scala +++ b/testers/db2/scala/generated-and-checked-in/testdb/customers/CustomersId.scala @@ -16,5 +16,5 @@ case class CustomersId(@JsonValue value: Int) extends scala.AnyVal object CustomersId { given bijection: Bijection[CustomersId, Int] = Bijection.apply[CustomersId, Int](_.value)(CustomersId.apply) - given dbType: Db2Type[CustomersId] = ScalaDbTypes.Db2Types.integer.bimap(CustomersId.apply, _.value) + given db2Type: Db2Type[CustomersId] = ScalaDbTypes.Db2Types.integer.bimap(CustomersId.apply, _.value) } \ No newline at end of file diff --git a/testers/db2/scala/generated-and-checked-in/testdb/customers/CustomersRepoImpl.scala b/testers/db2/scala/generated-and-checked-in/testdb/customers/CustomersRepoImpl.scala index 7408d89dd9..df74addd92 100644 --- a/testers/db2/scala/generated-and-checked-in/testdb/customers/CustomersRepoImpl.scala +++ b/testers/db2/scala/generated-and-checked-in/testdb/customers/CustomersRepoImpl.scala @@ -19,17 +19,17 @@ import dev.typr.foundations.scala.Fragment.sql class CustomersRepoImpl extends CustomersRepo { override def delete: DeleteBuilder[CustomersFields, CustomersRow] = DeleteBuilder.of(""""CUSTOMERS"""", CustomersFields.structure, Dialect.DB2) - override def deleteById(customerId: CustomersId)(using c: Connection): Boolean = sql"""delete from "CUSTOMERS" where "CUSTOMER_ID" = ${Fragment.encode(CustomersId.dbType, customerId)}""".update().runUnchecked(c) > 0 + override def deleteById(customerId: CustomersId)(using c: Connection): Boolean = sql"""delete from "CUSTOMERS" where "CUSTOMER_ID" = ${Fragment.encode(CustomersId.db2Type, customerId)}""".update().runUnchecked(c) > 0 override def deleteByIds(customerIds: Array[CustomersId])(using c: Connection): Int = { val fragments: ListBuffer[Fragment] = ListBuffer() - customerIds.foreach { id => fragments.addOne(Fragment.encode(CustomersId.dbType, id)): @scala.annotation.nowarn } + customerIds.foreach { id => fragments.addOne(Fragment.encode(CustomersId.db2Type, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("""delete from "CUSTOMERS" where "CUSTOMER_ID" in ("""), Fragment.comma(fragments), Fragment.lit(")")).update().runUnchecked(c) } override def insert(unsaved: CustomersRow)(using c: Connection): CustomersRow = { sql"""SELECT "CUSTOMER_ID", "NAME", "EMAIL", "CREATED_AT" FROM FINAL TABLE (INSERT INTO "CUSTOMERS"("CUSTOMER_ID", "NAME", "EMAIL", "CREATED_AT") - VALUES (${Fragment.encode(CustomersId.dbType, unsaved.customerId)}, ${Fragment.encode(Db2Types.varchar, unsaved.name)}, ${Fragment.encode(Db2Types.varchar, unsaved.email)}, ${Fragment.encode(Db2Types.timestamp.nullable, unsaved.createdAt)})) + VALUES (${Fragment.encode(CustomersId.db2Type, unsaved.customerId)}, ${Fragment.encode(Db2Types.varchar, unsaved.name)}, ${Fragment.encode(Db2Types.varchar, unsaved.email)}, ${Fragment.encode(Db2Types.timestamp.nullable, unsaved.createdAt)})) """ .updateReturning(CustomersRow.`_rowParser`.exactlyOne()).runUnchecked(c) } @@ -43,7 +43,7 @@ class CustomersRepoImpl extends CustomersRepo { values.addOne(sql"${Fragment.encode(Db2Types.varchar, unsaved.email)}"): @scala.annotation.nowarn unsaved.customerId.visit( { }, - value => { columns.addOne(Fragment.lit(""""CUSTOMER_ID"""")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(CustomersId.dbType, value)}"): @scala.annotation.nowarn } + value => { columns.addOne(Fragment.lit(""""CUSTOMER_ID"""")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(CustomersId.db2Type, value)}"): @scala.annotation.nowarn } ); unsaved.createdAt.visit( { }, @@ -68,12 +68,12 @@ class CustomersRepoImpl extends CustomersRepo { override def selectById(customerId: CustomersId)(using c: Connection): Option[CustomersRow] = { sql"""select "CUSTOMER_ID", "NAME", "EMAIL", "CREATED_AT" from "CUSTOMERS" - where "CUSTOMER_ID" = ${Fragment.encode(CustomersId.dbType, customerId)}""".query(CustomersRow.`_rowParser`.first()).runUnchecked(c) + where "CUSTOMER_ID" = ${Fragment.encode(CustomersId.db2Type, customerId)}""".query(CustomersRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(customerIds: Array[CustomersId])(using c: Connection): List[CustomersRow] = { val fragments: ListBuffer[Fragment] = ListBuffer() - customerIds.foreach { id => fragments.addOne(Fragment.encode(CustomersId.dbType, id)): @scala.annotation.nowarn } + customerIds.foreach { id => fragments.addOne(Fragment.encode(CustomersId.db2Type, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("""select "CUSTOMER_ID", "NAME", "EMAIL", "CREATED_AT" from "CUSTOMERS" where "CUSTOMER_ID" in ("""), Fragment.comma(fragments), Fragment.lit(")")).query(CustomersRow.`_rowParser`.all()).runUnchecked(c) } @@ -98,17 +98,17 @@ class CustomersRepoImpl extends CustomersRepo { set "NAME" = ${Fragment.encode(Db2Types.varchar, row.name)}, "EMAIL" = ${Fragment.encode(Db2Types.varchar, row.email)}, "CREATED_AT" = ${Fragment.encode(Db2Types.timestamp.nullable, row.createdAt)} - where "CUSTOMER_ID" = ${Fragment.encode(CustomersId.dbType, customerId)}""".update().runUnchecked(c) > 0 + where "CUSTOMER_ID" = ${Fragment.encode(CustomersId.db2Type, customerId)}""".update().runUnchecked(c) > 0 } override def upsert(unsaved: CustomersRow)(using c: Connection): Unit = { sql"""MERGE INTO "CUSTOMERS" AS t - USING (VALUES (${Fragment.encode(CustomersId.dbType, unsaved.customerId)}, ${Fragment.encode(Db2Types.varchar, unsaved.name)}, ${Fragment.encode(Db2Types.varchar, unsaved.email)}, ${Fragment.encode(Db2Types.timestamp.nullable, unsaved.createdAt)})) AS s("CUSTOMER_ID", "NAME", "EMAIL", "CREATED_AT") + USING (VALUES (${Fragment.encode(CustomersId.db2Type, unsaved.customerId)}, ${Fragment.encode(Db2Types.varchar, unsaved.name)}, ${Fragment.encode(Db2Types.varchar, unsaved.email)}, ${Fragment.encode(Db2Types.timestamp.nullable, unsaved.createdAt)})) AS s("CUSTOMER_ID", "NAME", "EMAIL", "CREATED_AT") ON t."CUSTOMER_ID" = s."CUSTOMER_ID" WHEN MATCHED THEN UPDATE SET "NAME" = s."NAME", "EMAIL" = s."EMAIL", "CREATED_AT" = s."CREATED_AT" - WHEN NOT MATCHED THEN INSERT ("CUSTOMER_ID", "NAME", "EMAIL", "CREATED_AT") VALUES (${Fragment.encode(CustomersId.dbType, unsaved.customerId)}, ${Fragment.encode(Db2Types.varchar, unsaved.name)}, ${Fragment.encode(Db2Types.varchar, unsaved.email)}, ${Fragment.encode(Db2Types.timestamp.nullable, unsaved.createdAt)})""" + WHEN NOT MATCHED THEN INSERT ("CUSTOMER_ID", "NAME", "EMAIL", "CREATED_AT") VALUES (${Fragment.encode(CustomersId.db2Type, unsaved.customerId)}, ${Fragment.encode(Db2Types.varchar, unsaved.name)}, ${Fragment.encode(Db2Types.varchar, unsaved.email)}, ${Fragment.encode(Db2Types.timestamp.nullable, unsaved.createdAt)})""" .update() .runUnchecked(c): @scala.annotation.nowarn } diff --git a/testers/db2/scala/generated-and-checked-in/testdb/customers/CustomersRow.scala b/testers/db2/scala/generated-and-checked-in/testdb/customers/CustomersRow.scala index 887b517c2f..b7c4d617c2 100644 --- a/testers/db2/scala/generated-and-checked-in/testdb/customers/CustomersRow.scala +++ b/testers/db2/scala/generated-and-checked-in/testdb/customers/CustomersRow.scala @@ -54,5 +54,5 @@ case class CustomersRow( } object CustomersRow { - val `_rowParser`: RowParser[CustomersRow] = RowParsers.of(CustomersId.dbType, Db2Types.varchar, Db2Types.varchar, Db2Types.timestamp.nullable)(CustomersRow.apply)(row => Array[Any](row.customerId, row.name, row.email, row.createdAt)) + val `_rowParser`: RowParser[CustomersRow] = RowParsers.of(CustomersId.db2Type, Db2Types.varchar, Db2Types.varchar, Db2Types.timestamp.nullable)(CustomersRow.apply)(row => Array[Any](row.customerId, row.name, row.email, row.createdAt)) } \ No newline at end of file diff --git a/testers/db2/scala/generated-and-checked-in/testdb/db2test/Db2testFields.scala b/testers/db2/scala/generated-and-checked-in/testdb/db2test/Db2testFields.scala index 5c696d1ba8..ddaacbe459 100644 --- a/testers/db2/scala/generated-and-checked-in/testdb/db2test/Db2testFields.scala +++ b/testers/db2/scala/generated-and-checked-in/testdb/db2test/Db2testFields.scala @@ -42,7 +42,7 @@ class Db2testFields(val `_path`: java.util.List[Path]) extends TupleExpr24[Short None, None, (row, value) => row.copy(intCol = value), - Db2testId.dbType + Db2testId.db2Type ) } diff --git a/testers/db2/scala/generated-and-checked-in/testdb/db2test/Db2testId.scala b/testers/db2/scala/generated-and-checked-in/testdb/db2test/Db2testId.scala index 5b837adb3f..51ece4e727 100644 --- a/testers/db2/scala/generated-and-checked-in/testdb/db2test/Db2testId.scala +++ b/testers/db2/scala/generated-and-checked-in/testdb/db2test/Db2testId.scala @@ -16,5 +16,5 @@ case class Db2testId(@JsonValue value: Int) extends scala.AnyVal object Db2testId { given bijection: Bijection[Db2testId, Int] = Bijection.apply[Db2testId, Int](_.value)(Db2testId.apply) - given dbType: Db2Type[Db2testId] = ScalaDbTypes.Db2Types.integer.bimap(Db2testId.apply, _.value) + given db2Type: Db2Type[Db2testId] = ScalaDbTypes.Db2Types.integer.bimap(Db2testId.apply, _.value) } \ No newline at end of file diff --git a/testers/db2/scala/generated-and-checked-in/testdb/db2test/Db2testRepoImpl.scala b/testers/db2/scala/generated-and-checked-in/testdb/db2test/Db2testRepoImpl.scala index 25186232ba..5f0d429937 100644 --- a/testers/db2/scala/generated-and-checked-in/testdb/db2test/Db2testRepoImpl.scala +++ b/testers/db2/scala/generated-and-checked-in/testdb/db2test/Db2testRepoImpl.scala @@ -19,17 +19,17 @@ import dev.typr.foundations.scala.Fragment.sql class Db2testRepoImpl extends Db2testRepo { override def delete: DeleteBuilder[Db2testFields, Db2testRow] = DeleteBuilder.of(""""DB2TEST"""", Db2testFields.structure, Dialect.DB2) - override def deleteById(intCol: Db2testId)(using c: Connection): Boolean = sql"""delete from "DB2TEST" where "INT_COL" = ${Fragment.encode(Db2testId.dbType, intCol)}""".update().runUnchecked(c) > 0 + override def deleteById(intCol: Db2testId)(using c: Connection): Boolean = sql"""delete from "DB2TEST" where "INT_COL" = ${Fragment.encode(Db2testId.db2Type, intCol)}""".update().runUnchecked(c) > 0 override def deleteByIds(intCols: Array[Db2testId])(using c: Connection): Int = { val fragments: ListBuffer[Fragment] = ListBuffer() - intCols.foreach { id => fragments.addOne(Fragment.encode(Db2testId.dbType, id)): @scala.annotation.nowarn } + intCols.foreach { id => fragments.addOne(Fragment.encode(Db2testId.db2Type, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("""delete from "DB2TEST" where "INT_COL" in ("""), Fragment.comma(fragments), Fragment.lit(")")).update().runUnchecked(c) } override def insert(unsaved: Db2testRow)(using c: Connection): Db2testRow = { sql"""SELECT "SMALLINT_COL", "INT_COL", "BIGINT_COL", "DECIMAL_COL", "NUMERIC_COL", "DECFLOAT16_COL", "DECFLOAT34_COL", "REAL_COL", "DOUBLE_COL", "BOOL_COL", "CHAR_COL", "VARCHAR_COL", "CLOB_COL", "GRAPHIC_COL", "VARGRAPHIC_COL", "BINARY_COL", "VARBINARY_COL", "BLOB_COL", "DATE_COL", "TIME_COL", "TIMESTAMP_COL", "TIMESTAMP6_COL", "TIMESTAMP12_COL", "XML_COL" FROM FINAL TABLE (INSERT INTO "DB2TEST"("SMALLINT_COL", "INT_COL", "BIGINT_COL", "DECIMAL_COL", "NUMERIC_COL", "DECFLOAT16_COL", "DECFLOAT34_COL", "REAL_COL", "DOUBLE_COL", "BOOL_COL", "CHAR_COL", "VARCHAR_COL", "CLOB_COL", "GRAPHIC_COL", "VARGRAPHIC_COL", "BINARY_COL", "VARBINARY_COL", "BLOB_COL", "DATE_COL", "TIME_COL", "TIMESTAMP_COL", "TIMESTAMP6_COL", "TIMESTAMP12_COL", "XML_COL") - VALUES (${Fragment.encode(ScalaDbTypes.Db2Types.smallint, unsaved.smallintCol)}, ${Fragment.encode(Db2testId.dbType, unsaved.intCol)}, ${Fragment.encode(ScalaDbTypes.Db2Types.bigint, unsaved.bigintCol)}, ${Fragment.encode(ScalaDbTypes.Db2Types.decimal, unsaved.decimalCol)}, ${Fragment.encode(ScalaDbTypes.Db2Types.decimal, unsaved.numericCol)}, ${Fragment.encode(ScalaDbTypes.Db2Types.decfloat, unsaved.decfloat16Col)}, ${Fragment.encode(ScalaDbTypes.Db2Types.decfloat, unsaved.decfloat34Col)}, ${Fragment.encode(ScalaDbTypes.Db2Types.real, unsaved.realCol)}, ${Fragment.encode(ScalaDbTypes.Db2Types.double_, unsaved.doubleCol)}, ${Fragment.encode(ScalaDbTypes.Db2Types.boolean_, unsaved.boolCol)}, ${Fragment.encode(Db2Types.char_, unsaved.charCol)}, ${Fragment.encode(Db2Types.varchar, unsaved.varcharCol)}, ${Fragment.encode(Db2Types.clob, unsaved.clobCol)}, ${Fragment.encode(Db2Types.graphic, unsaved.graphicCol)}, ${Fragment.encode(Db2Types.vargraphic, unsaved.vargraphicCol)}, ${Fragment.encode(Db2Types.binary, unsaved.binaryCol)}, ${Fragment.encode(Db2Types.varbinary, unsaved.varbinaryCol)}, ${Fragment.encode(Db2Types.blob, unsaved.blobCol)}, ${Fragment.encode(Db2Types.date, unsaved.dateCol)}, ${Fragment.encode(Db2Types.time, unsaved.timeCol)}, ${Fragment.encode(Db2Types.timestamp, unsaved.timestampCol)}, ${Fragment.encode(Db2Types.timestamp, unsaved.timestamp6Col)}, ${Fragment.encode(Db2Types.timestamp, unsaved.timestamp12Col)}, ${Fragment.encode(Db2Types.xml, unsaved.xmlCol)})) + VALUES (${Fragment.encode(ScalaDbTypes.Db2Types.smallint, unsaved.smallintCol)}, ${Fragment.encode(Db2testId.db2Type, unsaved.intCol)}, ${Fragment.encode(ScalaDbTypes.Db2Types.bigint, unsaved.bigintCol)}, ${Fragment.encode(ScalaDbTypes.Db2Types.decimal, unsaved.decimalCol)}, ${Fragment.encode(ScalaDbTypes.Db2Types.decimal, unsaved.numericCol)}, ${Fragment.encode(ScalaDbTypes.Db2Types.decfloat, unsaved.decfloat16Col)}, ${Fragment.encode(ScalaDbTypes.Db2Types.decfloat, unsaved.decfloat34Col)}, ${Fragment.encode(ScalaDbTypes.Db2Types.real, unsaved.realCol)}, ${Fragment.encode(ScalaDbTypes.Db2Types.double_, unsaved.doubleCol)}, ${Fragment.encode(ScalaDbTypes.Db2Types.boolean_, unsaved.boolCol)}, ${Fragment.encode(Db2Types.char_, unsaved.charCol)}, ${Fragment.encode(Db2Types.varchar, unsaved.varcharCol)}, ${Fragment.encode(Db2Types.clob, unsaved.clobCol)}, ${Fragment.encode(Db2Types.graphic, unsaved.graphicCol)}, ${Fragment.encode(Db2Types.vargraphic, unsaved.vargraphicCol)}, ${Fragment.encode(Db2Types.binary, unsaved.binaryCol)}, ${Fragment.encode(Db2Types.varbinary, unsaved.varbinaryCol)}, ${Fragment.encode(Db2Types.blob, unsaved.blobCol)}, ${Fragment.encode(Db2Types.date, unsaved.dateCol)}, ${Fragment.encode(Db2Types.time, unsaved.timeCol)}, ${Fragment.encode(Db2Types.timestamp, unsaved.timestampCol)}, ${Fragment.encode(Db2Types.timestamp, unsaved.timestamp6Col)}, ${Fragment.encode(Db2Types.timestamp, unsaved.timestamp12Col)}, ${Fragment.encode(Db2Types.xml, unsaved.xmlCol)})) """ .updateReturning(Db2testRow.`_rowParser`.exactlyOne()).runUnchecked(c) } @@ -45,12 +45,12 @@ class Db2testRepoImpl extends Db2testRepo { override def selectById(intCol: Db2testId)(using c: Connection): Option[Db2testRow] = { sql"""select "SMALLINT_COL", "INT_COL", "BIGINT_COL", "DECIMAL_COL", "NUMERIC_COL", "DECFLOAT16_COL", "DECFLOAT34_COL", "REAL_COL", "DOUBLE_COL", "BOOL_COL", "CHAR_COL", "VARCHAR_COL", "CLOB_COL", "GRAPHIC_COL", "VARGRAPHIC_COL", "BINARY_COL", "VARBINARY_COL", "BLOB_COL", "DATE_COL", "TIME_COL", "TIMESTAMP_COL", "TIMESTAMP6_COL", "TIMESTAMP12_COL", "XML_COL" from "DB2TEST" - where "INT_COL" = ${Fragment.encode(Db2testId.dbType, intCol)}""".query(Db2testRow.`_rowParser`.first()).runUnchecked(c) + where "INT_COL" = ${Fragment.encode(Db2testId.db2Type, intCol)}""".query(Db2testRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(intCols: Array[Db2testId])(using c: Connection): List[Db2testRow] = { val fragments: ListBuffer[Fragment] = ListBuffer() - intCols.foreach { id => fragments.addOne(Fragment.encode(Db2testId.dbType, id)): @scala.annotation.nowarn } + intCols.foreach { id => fragments.addOne(Fragment.encode(Db2testId.db2Type, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("""select "SMALLINT_COL", "INT_COL", "BIGINT_COL", "DECIMAL_COL", "NUMERIC_COL", "DECFLOAT16_COL", "DECFLOAT34_COL", "REAL_COL", "DOUBLE_COL", "BOOL_COL", "CHAR_COL", "VARCHAR_COL", "CLOB_COL", "GRAPHIC_COL", "VARGRAPHIC_COL", "BINARY_COL", "VARBINARY_COL", "BLOB_COL", "DATE_COL", "TIME_COL", "TIMESTAMP_COL", "TIMESTAMP6_COL", "TIMESTAMP12_COL", "XML_COL" from "DB2TEST" where "INT_COL" in ("""), Fragment.comma(fragments), Fragment.lit(")")).query(Db2testRow.`_rowParser`.all()).runUnchecked(c) } @@ -88,12 +88,12 @@ class Db2testRepoImpl extends Db2testRepo { "TIMESTAMP6_COL" = ${Fragment.encode(Db2Types.timestamp, row.timestamp6Col)}, "TIMESTAMP12_COL" = ${Fragment.encode(Db2Types.timestamp, row.timestamp12Col)}, "XML_COL" = ${Fragment.encode(Db2Types.xml, row.xmlCol)} - where "INT_COL" = ${Fragment.encode(Db2testId.dbType, intCol)}""".update().runUnchecked(c) > 0 + where "INT_COL" = ${Fragment.encode(Db2testId.db2Type, intCol)}""".update().runUnchecked(c) > 0 } override def upsert(unsaved: Db2testRow)(using c: Connection): Unit = { sql"""MERGE INTO "DB2TEST" AS t - USING (VALUES (${Fragment.encode(ScalaDbTypes.Db2Types.smallint, unsaved.smallintCol)}, ${Fragment.encode(Db2testId.dbType, unsaved.intCol)}, ${Fragment.encode(ScalaDbTypes.Db2Types.bigint, unsaved.bigintCol)}, ${Fragment.encode(ScalaDbTypes.Db2Types.decimal, unsaved.decimalCol)}, ${Fragment.encode(ScalaDbTypes.Db2Types.decimal, unsaved.numericCol)}, ${Fragment.encode(ScalaDbTypes.Db2Types.decfloat, unsaved.decfloat16Col)}, ${Fragment.encode(ScalaDbTypes.Db2Types.decfloat, unsaved.decfloat34Col)}, ${Fragment.encode(ScalaDbTypes.Db2Types.real, unsaved.realCol)}, ${Fragment.encode(ScalaDbTypes.Db2Types.double_, unsaved.doubleCol)}, ${Fragment.encode(ScalaDbTypes.Db2Types.boolean_, unsaved.boolCol)}, ${Fragment.encode(Db2Types.char_, unsaved.charCol)}, ${Fragment.encode(Db2Types.varchar, unsaved.varcharCol)}, ${Fragment.encode(Db2Types.clob, unsaved.clobCol)}, ${Fragment.encode(Db2Types.graphic, unsaved.graphicCol)}, ${Fragment.encode(Db2Types.vargraphic, unsaved.vargraphicCol)}, ${Fragment.encode(Db2Types.binary, unsaved.binaryCol)}, ${Fragment.encode(Db2Types.varbinary, unsaved.varbinaryCol)}, ${Fragment.encode(Db2Types.blob, unsaved.blobCol)}, ${Fragment.encode(Db2Types.date, unsaved.dateCol)}, ${Fragment.encode(Db2Types.time, unsaved.timeCol)}, ${Fragment.encode(Db2Types.timestamp, unsaved.timestampCol)}, ${Fragment.encode(Db2Types.timestamp, unsaved.timestamp6Col)}, ${Fragment.encode(Db2Types.timestamp, unsaved.timestamp12Col)}, ${Fragment.encode(Db2Types.xml, unsaved.xmlCol)})) AS s("SMALLINT_COL", "INT_COL", "BIGINT_COL", "DECIMAL_COL", "NUMERIC_COL", "DECFLOAT16_COL", "DECFLOAT34_COL", "REAL_COL", "DOUBLE_COL", "BOOL_COL", "CHAR_COL", "VARCHAR_COL", "CLOB_COL", "GRAPHIC_COL", "VARGRAPHIC_COL", "BINARY_COL", "VARBINARY_COL", "BLOB_COL", "DATE_COL", "TIME_COL", "TIMESTAMP_COL", "TIMESTAMP6_COL", "TIMESTAMP12_COL", "XML_COL") + USING (VALUES (${Fragment.encode(ScalaDbTypes.Db2Types.smallint, unsaved.smallintCol)}, ${Fragment.encode(Db2testId.db2Type, unsaved.intCol)}, ${Fragment.encode(ScalaDbTypes.Db2Types.bigint, unsaved.bigintCol)}, ${Fragment.encode(ScalaDbTypes.Db2Types.decimal, unsaved.decimalCol)}, ${Fragment.encode(ScalaDbTypes.Db2Types.decimal, unsaved.numericCol)}, ${Fragment.encode(ScalaDbTypes.Db2Types.decfloat, unsaved.decfloat16Col)}, ${Fragment.encode(ScalaDbTypes.Db2Types.decfloat, unsaved.decfloat34Col)}, ${Fragment.encode(ScalaDbTypes.Db2Types.real, unsaved.realCol)}, ${Fragment.encode(ScalaDbTypes.Db2Types.double_, unsaved.doubleCol)}, ${Fragment.encode(ScalaDbTypes.Db2Types.boolean_, unsaved.boolCol)}, ${Fragment.encode(Db2Types.char_, unsaved.charCol)}, ${Fragment.encode(Db2Types.varchar, unsaved.varcharCol)}, ${Fragment.encode(Db2Types.clob, unsaved.clobCol)}, ${Fragment.encode(Db2Types.graphic, unsaved.graphicCol)}, ${Fragment.encode(Db2Types.vargraphic, unsaved.vargraphicCol)}, ${Fragment.encode(Db2Types.binary, unsaved.binaryCol)}, ${Fragment.encode(Db2Types.varbinary, unsaved.varbinaryCol)}, ${Fragment.encode(Db2Types.blob, unsaved.blobCol)}, ${Fragment.encode(Db2Types.date, unsaved.dateCol)}, ${Fragment.encode(Db2Types.time, unsaved.timeCol)}, ${Fragment.encode(Db2Types.timestamp, unsaved.timestampCol)}, ${Fragment.encode(Db2Types.timestamp, unsaved.timestamp6Col)}, ${Fragment.encode(Db2Types.timestamp, unsaved.timestamp12Col)}, ${Fragment.encode(Db2Types.xml, unsaved.xmlCol)})) AS s("SMALLINT_COL", "INT_COL", "BIGINT_COL", "DECIMAL_COL", "NUMERIC_COL", "DECFLOAT16_COL", "DECFLOAT34_COL", "REAL_COL", "DOUBLE_COL", "BOOL_COL", "CHAR_COL", "VARCHAR_COL", "CLOB_COL", "GRAPHIC_COL", "VARGRAPHIC_COL", "BINARY_COL", "VARBINARY_COL", "BLOB_COL", "DATE_COL", "TIME_COL", "TIMESTAMP_COL", "TIMESTAMP6_COL", "TIMESTAMP12_COL", "XML_COL") ON t."INT_COL" = s."INT_COL" WHEN MATCHED THEN UPDATE SET "SMALLINT_COL" = s."SMALLINT_COL", "BIGINT_COL" = s."BIGINT_COL", @@ -118,7 +118,7 @@ class Db2testRepoImpl extends Db2testRepo { "TIMESTAMP6_COL" = s."TIMESTAMP6_COL", "TIMESTAMP12_COL" = s."TIMESTAMP12_COL", "XML_COL" = s."XML_COL" - WHEN NOT MATCHED THEN INSERT ("SMALLINT_COL", "INT_COL", "BIGINT_COL", "DECIMAL_COL", "NUMERIC_COL", "DECFLOAT16_COL", "DECFLOAT34_COL", "REAL_COL", "DOUBLE_COL", "BOOL_COL", "CHAR_COL", "VARCHAR_COL", "CLOB_COL", "GRAPHIC_COL", "VARGRAPHIC_COL", "BINARY_COL", "VARBINARY_COL", "BLOB_COL", "DATE_COL", "TIME_COL", "TIMESTAMP_COL", "TIMESTAMP6_COL", "TIMESTAMP12_COL", "XML_COL") VALUES (${Fragment.encode(ScalaDbTypes.Db2Types.smallint, unsaved.smallintCol)}, ${Fragment.encode(Db2testId.dbType, unsaved.intCol)}, ${Fragment.encode(ScalaDbTypes.Db2Types.bigint, unsaved.bigintCol)}, ${Fragment.encode(ScalaDbTypes.Db2Types.decimal, unsaved.decimalCol)}, ${Fragment.encode(ScalaDbTypes.Db2Types.decimal, unsaved.numericCol)}, ${Fragment.encode(ScalaDbTypes.Db2Types.decfloat, unsaved.decfloat16Col)}, ${Fragment.encode(ScalaDbTypes.Db2Types.decfloat, unsaved.decfloat34Col)}, ${Fragment.encode(ScalaDbTypes.Db2Types.real, unsaved.realCol)}, ${Fragment.encode(ScalaDbTypes.Db2Types.double_, unsaved.doubleCol)}, ${Fragment.encode(ScalaDbTypes.Db2Types.boolean_, unsaved.boolCol)}, ${Fragment.encode(Db2Types.char_, unsaved.charCol)}, ${Fragment.encode(Db2Types.varchar, unsaved.varcharCol)}, ${Fragment.encode(Db2Types.clob, unsaved.clobCol)}, ${Fragment.encode(Db2Types.graphic, unsaved.graphicCol)}, ${Fragment.encode(Db2Types.vargraphic, unsaved.vargraphicCol)}, ${Fragment.encode(Db2Types.binary, unsaved.binaryCol)}, ${Fragment.encode(Db2Types.varbinary, unsaved.varbinaryCol)}, ${Fragment.encode(Db2Types.blob, unsaved.blobCol)}, ${Fragment.encode(Db2Types.date, unsaved.dateCol)}, ${Fragment.encode(Db2Types.time, unsaved.timeCol)}, ${Fragment.encode(Db2Types.timestamp, unsaved.timestampCol)}, ${Fragment.encode(Db2Types.timestamp, unsaved.timestamp6Col)}, ${Fragment.encode(Db2Types.timestamp, unsaved.timestamp12Col)}, ${Fragment.encode(Db2Types.xml, unsaved.xmlCol)})""" + WHEN NOT MATCHED THEN INSERT ("SMALLINT_COL", "INT_COL", "BIGINT_COL", "DECIMAL_COL", "NUMERIC_COL", "DECFLOAT16_COL", "DECFLOAT34_COL", "REAL_COL", "DOUBLE_COL", "BOOL_COL", "CHAR_COL", "VARCHAR_COL", "CLOB_COL", "GRAPHIC_COL", "VARGRAPHIC_COL", "BINARY_COL", "VARBINARY_COL", "BLOB_COL", "DATE_COL", "TIME_COL", "TIMESTAMP_COL", "TIMESTAMP6_COL", "TIMESTAMP12_COL", "XML_COL") VALUES (${Fragment.encode(ScalaDbTypes.Db2Types.smallint, unsaved.smallintCol)}, ${Fragment.encode(Db2testId.db2Type, unsaved.intCol)}, ${Fragment.encode(ScalaDbTypes.Db2Types.bigint, unsaved.bigintCol)}, ${Fragment.encode(ScalaDbTypes.Db2Types.decimal, unsaved.decimalCol)}, ${Fragment.encode(ScalaDbTypes.Db2Types.decimal, unsaved.numericCol)}, ${Fragment.encode(ScalaDbTypes.Db2Types.decfloat, unsaved.decfloat16Col)}, ${Fragment.encode(ScalaDbTypes.Db2Types.decfloat, unsaved.decfloat34Col)}, ${Fragment.encode(ScalaDbTypes.Db2Types.real, unsaved.realCol)}, ${Fragment.encode(ScalaDbTypes.Db2Types.double_, unsaved.doubleCol)}, ${Fragment.encode(ScalaDbTypes.Db2Types.boolean_, unsaved.boolCol)}, ${Fragment.encode(Db2Types.char_, unsaved.charCol)}, ${Fragment.encode(Db2Types.varchar, unsaved.varcharCol)}, ${Fragment.encode(Db2Types.clob, unsaved.clobCol)}, ${Fragment.encode(Db2Types.graphic, unsaved.graphicCol)}, ${Fragment.encode(Db2Types.vargraphic, unsaved.vargraphicCol)}, ${Fragment.encode(Db2Types.binary, unsaved.binaryCol)}, ${Fragment.encode(Db2Types.varbinary, unsaved.varbinaryCol)}, ${Fragment.encode(Db2Types.blob, unsaved.blobCol)}, ${Fragment.encode(Db2Types.date, unsaved.dateCol)}, ${Fragment.encode(Db2Types.time, unsaved.timeCol)}, ${Fragment.encode(Db2Types.timestamp, unsaved.timestampCol)}, ${Fragment.encode(Db2Types.timestamp, unsaved.timestamp6Col)}, ${Fragment.encode(Db2Types.timestamp, unsaved.timestamp12Col)}, ${Fragment.encode(Db2Types.xml, unsaved.xmlCol)})""" .update() .runUnchecked(c): @scala.annotation.nowarn } diff --git a/testers/db2/scala/generated-and-checked-in/testdb/db2test/Db2testRow.scala b/testers/db2/scala/generated-and-checked-in/testdb/db2test/Db2testRow.scala index c10a9acd98..87faaaa85c 100644 --- a/testers/db2/scala/generated-and-checked-in/testdb/db2test/Db2testRow.scala +++ b/testers/db2/scala/generated-and-checked-in/testdb/db2test/Db2testRow.scala @@ -97,5 +97,5 @@ case class Db2testRow( } object Db2testRow { - val `_rowParser`: RowParser[Db2testRow] = RowParsers.of(ScalaDbTypes.Db2Types.smallint, Db2testId.dbType, ScalaDbTypes.Db2Types.bigint, ScalaDbTypes.Db2Types.decimal, ScalaDbTypes.Db2Types.decimal, ScalaDbTypes.Db2Types.decfloat, ScalaDbTypes.Db2Types.decfloat, ScalaDbTypes.Db2Types.real, ScalaDbTypes.Db2Types.double_, ScalaDbTypes.Db2Types.boolean_, Db2Types.char_, Db2Types.varchar, Db2Types.clob, Db2Types.graphic, Db2Types.vargraphic, Db2Types.binary, Db2Types.varbinary, Db2Types.blob, Db2Types.date, Db2Types.time, Db2Types.timestamp, Db2Types.timestamp, Db2Types.timestamp, Db2Types.xml)(Db2testRow.apply)(row => Array[Any](row.smallintCol, row.intCol, row.bigintCol, row.decimalCol, row.numericCol, row.decfloat16Col, row.decfloat34Col, row.realCol, row.doubleCol, row.boolCol, row.charCol, row.varcharCol, row.clobCol, row.graphicCol, row.vargraphicCol, row.binaryCol, row.varbinaryCol, row.blobCol, row.dateCol, row.timeCol, row.timestampCol, row.timestamp6Col, row.timestamp12Col, row.xmlCol)) + val `_rowParser`: RowParser[Db2testRow] = RowParsers.of(ScalaDbTypes.Db2Types.smallint, Db2testId.db2Type, ScalaDbTypes.Db2Types.bigint, ScalaDbTypes.Db2Types.decimal, ScalaDbTypes.Db2Types.decimal, ScalaDbTypes.Db2Types.decfloat, ScalaDbTypes.Db2Types.decfloat, ScalaDbTypes.Db2Types.real, ScalaDbTypes.Db2Types.double_, ScalaDbTypes.Db2Types.boolean_, Db2Types.char_, Db2Types.varchar, Db2Types.clob, Db2Types.graphic, Db2Types.vargraphic, Db2Types.binary, Db2Types.varbinary, Db2Types.blob, Db2Types.date, Db2Types.time, Db2Types.timestamp, Db2Types.timestamp, Db2Types.timestamp, Db2Types.xml)(Db2testRow.apply)(row => Array[Any](row.smallintCol, row.intCol, row.bigintCol, row.decimalCol, row.numericCol, row.decfloat16Col, row.decfloat34Col, row.realCol, row.doubleCol, row.boolCol, row.charCol, row.varcharCol, row.clobCol, row.graphicCol, row.vargraphicCol, row.binaryCol, row.varbinaryCol, row.blobCol, row.dateCol, row.timeCol, row.timestampCol, row.timestamp6Col, row.timestamp12Col, row.xmlCol)) } \ No newline at end of file diff --git a/testers/db2/scala/generated-and-checked-in/testdb/db2test_identity_always/Db2testIdentityAlwaysFields.scala b/testers/db2/scala/generated-and-checked-in/testdb/db2test_identity_always/Db2testIdentityAlwaysFields.scala index e7b8705143..5bd62217b2 100644 --- a/testers/db2/scala/generated-and-checked-in/testdb/db2test_identity_always/Db2testIdentityAlwaysFields.scala +++ b/testers/db2/scala/generated-and-checked-in/testdb/db2test_identity_always/Db2testIdentityAlwaysFields.scala @@ -25,7 +25,7 @@ class Db2testIdentityAlwaysFields(val `_path`: java.util.List[Path]) extends Tup None, None, (row, value) => row.copy(id = value), - Db2testIdentityAlwaysId.dbType + Db2testIdentityAlwaysId.db2Type ) } diff --git a/testers/db2/scala/generated-and-checked-in/testdb/db2test_identity_always/Db2testIdentityAlwaysId.scala b/testers/db2/scala/generated-and-checked-in/testdb/db2test_identity_always/Db2testIdentityAlwaysId.scala index 33cd2f304e..d346824490 100644 --- a/testers/db2/scala/generated-and-checked-in/testdb/db2test_identity_always/Db2testIdentityAlwaysId.scala +++ b/testers/db2/scala/generated-and-checked-in/testdb/db2test_identity_always/Db2testIdentityAlwaysId.scala @@ -16,5 +16,5 @@ case class Db2testIdentityAlwaysId(@JsonValue value: Int) extends scala.AnyVal object Db2testIdentityAlwaysId { given bijection: Bijection[Db2testIdentityAlwaysId, Int] = Bijection.apply[Db2testIdentityAlwaysId, Int](_.value)(Db2testIdentityAlwaysId.apply) - given dbType: Db2Type[Db2testIdentityAlwaysId] = ScalaDbTypes.Db2Types.integer.bimap(Db2testIdentityAlwaysId.apply, _.value) + given db2Type: Db2Type[Db2testIdentityAlwaysId] = ScalaDbTypes.Db2Types.integer.bimap(Db2testIdentityAlwaysId.apply, _.value) } \ No newline at end of file diff --git a/testers/db2/scala/generated-and-checked-in/testdb/db2test_identity_always/Db2testIdentityAlwaysRepoImpl.scala b/testers/db2/scala/generated-and-checked-in/testdb/db2test_identity_always/Db2testIdentityAlwaysRepoImpl.scala index b67990a628..a6a2a362bc 100644 --- a/testers/db2/scala/generated-and-checked-in/testdb/db2test_identity_always/Db2testIdentityAlwaysRepoImpl.scala +++ b/testers/db2/scala/generated-and-checked-in/testdb/db2test_identity_always/Db2testIdentityAlwaysRepoImpl.scala @@ -18,11 +18,11 @@ import dev.typr.foundations.scala.Fragment.sql class Db2testIdentityAlwaysRepoImpl extends Db2testIdentityAlwaysRepo { override def delete: DeleteBuilder[Db2testIdentityAlwaysFields, Db2testIdentityAlwaysRow] = DeleteBuilder.of(""""DB2TEST_IDENTITY_ALWAYS"""", Db2testIdentityAlwaysFields.structure, Dialect.DB2) - override def deleteById(id: Db2testIdentityAlwaysId)(using c: Connection): Boolean = sql"""delete from "DB2TEST_IDENTITY_ALWAYS" where "ID" = ${Fragment.encode(Db2testIdentityAlwaysId.dbType, id)}""".update().runUnchecked(c) > 0 + override def deleteById(id: Db2testIdentityAlwaysId)(using c: Connection): Boolean = sql"""delete from "DB2TEST_IDENTITY_ALWAYS" where "ID" = ${Fragment.encode(Db2testIdentityAlwaysId.db2Type, id)}""".update().runUnchecked(c) > 0 override def deleteByIds(ids: Array[Db2testIdentityAlwaysId])(using c: Connection): Int = { val fragments: ListBuffer[Fragment] = ListBuffer() - ids.foreach { id => fragments.addOne(Fragment.encode(Db2testIdentityAlwaysId.dbType, id)): @scala.annotation.nowarn } + ids.foreach { id => fragments.addOne(Fragment.encode(Db2testIdentityAlwaysId.db2Type, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("""delete from "DB2TEST_IDENTITY_ALWAYS" where "ID" in ("""), Fragment.comma(fragments), Fragment.lit(")")).update().runUnchecked(c) } @@ -57,12 +57,12 @@ class Db2testIdentityAlwaysRepoImpl extends Db2testIdentityAlwaysRepo { override def selectById(id: Db2testIdentityAlwaysId)(using c: Connection): Option[Db2testIdentityAlwaysRow] = { sql"""select "ID", "NAME" from "DB2TEST_IDENTITY_ALWAYS" - where "ID" = ${Fragment.encode(Db2testIdentityAlwaysId.dbType, id)}""".query(Db2testIdentityAlwaysRow.`_rowParser`.first()).runUnchecked(c) + where "ID" = ${Fragment.encode(Db2testIdentityAlwaysId.db2Type, id)}""".query(Db2testIdentityAlwaysRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(ids: Array[Db2testIdentityAlwaysId])(using c: Connection): List[Db2testIdentityAlwaysRow] = { val fragments: ListBuffer[Fragment] = ListBuffer() - ids.foreach { id => fragments.addOne(Fragment.encode(Db2testIdentityAlwaysId.dbType, id)): @scala.annotation.nowarn } + ids.foreach { id => fragments.addOne(Fragment.encode(Db2testIdentityAlwaysId.db2Type, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("""select "ID", "NAME" from "DB2TEST_IDENTITY_ALWAYS" where "ID" in ("""), Fragment.comma(fragments), Fragment.lit(")")).query(Db2testIdentityAlwaysRow.`_rowParser`.all()).runUnchecked(c) } @@ -78,15 +78,15 @@ class Db2testIdentityAlwaysRepoImpl extends Db2testIdentityAlwaysRepo { val id: Db2testIdentityAlwaysId = row.id return sql"""update "DB2TEST_IDENTITY_ALWAYS" set "NAME" = ${Fragment.encode(Db2Types.varchar, row.name)} - where "ID" = ${Fragment.encode(Db2testIdentityAlwaysId.dbType, id)}""".update().runUnchecked(c) > 0 + where "ID" = ${Fragment.encode(Db2testIdentityAlwaysId.db2Type, id)}""".update().runUnchecked(c) > 0 } override def upsert(unsaved: Db2testIdentityAlwaysRow)(using c: Connection): Unit = { sql"""MERGE INTO "DB2TEST_IDENTITY_ALWAYS" AS t - USING (VALUES (${Fragment.encode(Db2testIdentityAlwaysId.dbType, unsaved.id)}, ${Fragment.encode(Db2Types.varchar, unsaved.name)})) AS s("ID", "NAME") + USING (VALUES (${Fragment.encode(Db2testIdentityAlwaysId.db2Type, unsaved.id)}, ${Fragment.encode(Db2Types.varchar, unsaved.name)})) AS s("ID", "NAME") ON t."ID" = s."ID" WHEN MATCHED THEN UPDATE SET "NAME" = s."NAME" - WHEN NOT MATCHED THEN INSERT ("ID", "NAME") VALUES (${Fragment.encode(Db2testIdentityAlwaysId.dbType, unsaved.id)}, ${Fragment.encode(Db2Types.varchar, unsaved.name)})""" + WHEN NOT MATCHED THEN INSERT ("ID", "NAME") VALUES (${Fragment.encode(Db2testIdentityAlwaysId.db2Type, unsaved.id)}, ${Fragment.encode(Db2Types.varchar, unsaved.name)})""" .update() .runUnchecked(c): @scala.annotation.nowarn } diff --git a/testers/db2/scala/generated-and-checked-in/testdb/db2test_identity_always/Db2testIdentityAlwaysRow.scala b/testers/db2/scala/generated-and-checked-in/testdb/db2test_identity_always/Db2testIdentityAlwaysRow.scala index 3d593a2e86..09f8fd7e9a 100644 --- a/testers/db2/scala/generated-and-checked-in/testdb/db2test_identity_always/Db2testIdentityAlwaysRow.scala +++ b/testers/db2/scala/generated-and-checked-in/testdb/db2test_identity_always/Db2testIdentityAlwaysRow.scala @@ -27,5 +27,5 @@ case class Db2testIdentityAlwaysRow( } object Db2testIdentityAlwaysRow { - val `_rowParser`: RowParser[Db2testIdentityAlwaysRow] = RowParsers.of(Db2testIdentityAlwaysId.dbType, Db2Types.varchar)(Db2testIdentityAlwaysRow.apply)(row => Array[Any](row.id, row.name)) + val `_rowParser`: RowParser[Db2testIdentityAlwaysRow] = RowParsers.of(Db2testIdentityAlwaysId.db2Type, Db2Types.varchar)(Db2testIdentityAlwaysRow.apply)(row => Array[Any](row.id, row.name)) } \ No newline at end of file diff --git a/testers/db2/scala/generated-and-checked-in/testdb/db2test_identity_default/Db2testIdentityDefaultFields.scala b/testers/db2/scala/generated-and-checked-in/testdb/db2test_identity_default/Db2testIdentityDefaultFields.scala index 00ef908188..347eb913d6 100644 --- a/testers/db2/scala/generated-and-checked-in/testdb/db2test_identity_default/Db2testIdentityDefaultFields.scala +++ b/testers/db2/scala/generated-and-checked-in/testdb/db2test_identity_default/Db2testIdentityDefaultFields.scala @@ -25,7 +25,7 @@ class Db2testIdentityDefaultFields(val `_path`: java.util.List[Path]) extends Tu None, None, (row, value) => row.copy(id = value), - Db2testIdentityDefaultId.dbType + Db2testIdentityDefaultId.db2Type ) } diff --git a/testers/db2/scala/generated-and-checked-in/testdb/db2test_identity_default/Db2testIdentityDefaultId.scala b/testers/db2/scala/generated-and-checked-in/testdb/db2test_identity_default/Db2testIdentityDefaultId.scala index 4089bcfc32..ec0a504052 100644 --- a/testers/db2/scala/generated-and-checked-in/testdb/db2test_identity_default/Db2testIdentityDefaultId.scala +++ b/testers/db2/scala/generated-and-checked-in/testdb/db2test_identity_default/Db2testIdentityDefaultId.scala @@ -16,5 +16,5 @@ case class Db2testIdentityDefaultId(@JsonValue value: Int) extends scala.AnyVal object Db2testIdentityDefaultId { given bijection: Bijection[Db2testIdentityDefaultId, Int] = Bijection.apply[Db2testIdentityDefaultId, Int](_.value)(Db2testIdentityDefaultId.apply) - given dbType: Db2Type[Db2testIdentityDefaultId] = ScalaDbTypes.Db2Types.integer.bimap(Db2testIdentityDefaultId.apply, _.value) + given db2Type: Db2Type[Db2testIdentityDefaultId] = ScalaDbTypes.Db2Types.integer.bimap(Db2testIdentityDefaultId.apply, _.value) } \ No newline at end of file diff --git a/testers/db2/scala/generated-and-checked-in/testdb/db2test_identity_default/Db2testIdentityDefaultRepoImpl.scala b/testers/db2/scala/generated-and-checked-in/testdb/db2test_identity_default/Db2testIdentityDefaultRepoImpl.scala index 278519aebd..54ed9c8f0d 100644 --- a/testers/db2/scala/generated-and-checked-in/testdb/db2test_identity_default/Db2testIdentityDefaultRepoImpl.scala +++ b/testers/db2/scala/generated-and-checked-in/testdb/db2test_identity_default/Db2testIdentityDefaultRepoImpl.scala @@ -18,17 +18,17 @@ import dev.typr.foundations.scala.Fragment.sql class Db2testIdentityDefaultRepoImpl extends Db2testIdentityDefaultRepo { override def delete: DeleteBuilder[Db2testIdentityDefaultFields, Db2testIdentityDefaultRow] = DeleteBuilder.of(""""DB2TEST_IDENTITY_DEFAULT"""", Db2testIdentityDefaultFields.structure, Dialect.DB2) - override def deleteById(id: Db2testIdentityDefaultId)(using c: Connection): Boolean = sql"""delete from "DB2TEST_IDENTITY_DEFAULT" where "ID" = ${Fragment.encode(Db2testIdentityDefaultId.dbType, id)}""".update().runUnchecked(c) > 0 + override def deleteById(id: Db2testIdentityDefaultId)(using c: Connection): Boolean = sql"""delete from "DB2TEST_IDENTITY_DEFAULT" where "ID" = ${Fragment.encode(Db2testIdentityDefaultId.db2Type, id)}""".update().runUnchecked(c) > 0 override def deleteByIds(ids: Array[Db2testIdentityDefaultId])(using c: Connection): Int = { val fragments: ListBuffer[Fragment] = ListBuffer() - ids.foreach { id => fragments.addOne(Fragment.encode(Db2testIdentityDefaultId.dbType, id)): @scala.annotation.nowarn } + ids.foreach { id => fragments.addOne(Fragment.encode(Db2testIdentityDefaultId.db2Type, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("""delete from "DB2TEST_IDENTITY_DEFAULT" where "ID" in ("""), Fragment.comma(fragments), Fragment.lit(")")).update().runUnchecked(c) } override def insert(unsaved: Db2testIdentityDefaultRow)(using c: Connection): Db2testIdentityDefaultRow = { sql"""SELECT "ID", "NAME" FROM FINAL TABLE (INSERT INTO "DB2TEST_IDENTITY_DEFAULT"("ID", "NAME") - VALUES (${Fragment.encode(Db2testIdentityDefaultId.dbType, unsaved.id)}, ${Fragment.encode(Db2Types.varchar, unsaved.name)})) + VALUES (${Fragment.encode(Db2testIdentityDefaultId.db2Type, unsaved.id)}, ${Fragment.encode(Db2Types.varchar, unsaved.name)})) """ .updateReturning(Db2testIdentityDefaultRow.`_rowParser`.exactlyOne()).runUnchecked(c) } @@ -40,7 +40,7 @@ class Db2testIdentityDefaultRepoImpl extends Db2testIdentityDefaultRepo { values.addOne(sql"${Fragment.encode(Db2Types.varchar, unsaved.name)}"): @scala.annotation.nowarn unsaved.id.visit( { }, - value => { columns.addOne(Fragment.lit(""""ID"""")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(Db2testIdentityDefaultId.dbType, value)}"): @scala.annotation.nowarn } + value => { columns.addOne(Fragment.lit(""""ID"""")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(Db2testIdentityDefaultId.db2Type, value)}"): @scala.annotation.nowarn } ); val q: Fragment = { sql"""SELECT "ID", "NAME" FROM FINAL TABLE (INSERT INTO "DB2TEST_IDENTITY_DEFAULT"(${Fragment.comma(columns)}) @@ -61,12 +61,12 @@ class Db2testIdentityDefaultRepoImpl extends Db2testIdentityDefaultRepo { override def selectById(id: Db2testIdentityDefaultId)(using c: Connection): Option[Db2testIdentityDefaultRow] = { sql"""select "ID", "NAME" from "DB2TEST_IDENTITY_DEFAULT" - where "ID" = ${Fragment.encode(Db2testIdentityDefaultId.dbType, id)}""".query(Db2testIdentityDefaultRow.`_rowParser`.first()).runUnchecked(c) + where "ID" = ${Fragment.encode(Db2testIdentityDefaultId.db2Type, id)}""".query(Db2testIdentityDefaultRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(ids: Array[Db2testIdentityDefaultId])(using c: Connection): List[Db2testIdentityDefaultRow] = { val fragments: ListBuffer[Fragment] = ListBuffer() - ids.foreach { id => fragments.addOne(Fragment.encode(Db2testIdentityDefaultId.dbType, id)): @scala.annotation.nowarn } + ids.foreach { id => fragments.addOne(Fragment.encode(Db2testIdentityDefaultId.db2Type, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("""select "ID", "NAME" from "DB2TEST_IDENTITY_DEFAULT" where "ID" in ("""), Fragment.comma(fragments), Fragment.lit(")")).query(Db2testIdentityDefaultRow.`_rowParser`.all()).runUnchecked(c) } @@ -82,15 +82,15 @@ class Db2testIdentityDefaultRepoImpl extends Db2testIdentityDefaultRepo { val id: Db2testIdentityDefaultId = row.id return sql"""update "DB2TEST_IDENTITY_DEFAULT" set "NAME" = ${Fragment.encode(Db2Types.varchar, row.name)} - where "ID" = ${Fragment.encode(Db2testIdentityDefaultId.dbType, id)}""".update().runUnchecked(c) > 0 + where "ID" = ${Fragment.encode(Db2testIdentityDefaultId.db2Type, id)}""".update().runUnchecked(c) > 0 } override def upsert(unsaved: Db2testIdentityDefaultRow)(using c: Connection): Unit = { sql"""MERGE INTO "DB2TEST_IDENTITY_DEFAULT" AS t - USING (VALUES (${Fragment.encode(Db2testIdentityDefaultId.dbType, unsaved.id)}, ${Fragment.encode(Db2Types.varchar, unsaved.name)})) AS s("ID", "NAME") + USING (VALUES (${Fragment.encode(Db2testIdentityDefaultId.db2Type, unsaved.id)}, ${Fragment.encode(Db2Types.varchar, unsaved.name)})) AS s("ID", "NAME") ON t."ID" = s."ID" WHEN MATCHED THEN UPDATE SET "NAME" = s."NAME" - WHEN NOT MATCHED THEN INSERT ("ID", "NAME") VALUES (${Fragment.encode(Db2testIdentityDefaultId.dbType, unsaved.id)}, ${Fragment.encode(Db2Types.varchar, unsaved.name)})""" + WHEN NOT MATCHED THEN INSERT ("ID", "NAME") VALUES (${Fragment.encode(Db2testIdentityDefaultId.db2Type, unsaved.id)}, ${Fragment.encode(Db2Types.varchar, unsaved.name)})""" .update() .runUnchecked(c): @scala.annotation.nowarn } diff --git a/testers/db2/scala/generated-and-checked-in/testdb/db2test_identity_default/Db2testIdentityDefaultRow.scala b/testers/db2/scala/generated-and-checked-in/testdb/db2test_identity_default/Db2testIdentityDefaultRow.scala index 7d165eae40..09439c08ba 100644 --- a/testers/db2/scala/generated-and-checked-in/testdb/db2test_identity_default/Db2testIdentityDefaultRow.scala +++ b/testers/db2/scala/generated-and-checked-in/testdb/db2test_identity_default/Db2testIdentityDefaultRow.scala @@ -28,5 +28,5 @@ case class Db2testIdentityDefaultRow( } object Db2testIdentityDefaultRow { - val `_rowParser`: RowParser[Db2testIdentityDefaultRow] = RowParsers.of(Db2testIdentityDefaultId.dbType, Db2Types.varchar)(Db2testIdentityDefaultRow.apply)(row => Array[Any](row.id, row.name)) + val `_rowParser`: RowParser[Db2testIdentityDefaultRow] = RowParsers.of(Db2testIdentityDefaultId.db2Type, Db2Types.varchar)(Db2testIdentityDefaultRow.apply)(row => Array[Any](row.id, row.name)) } \ No newline at end of file diff --git a/testers/db2/scala/generated-and-checked-in/testdb/db2test_unique/Db2testUniqueFields.scala b/testers/db2/scala/generated-and-checked-in/testdb/db2test_unique/Db2testUniqueFields.scala index 04d8081f0c..e0bc7e39be 100644 --- a/testers/db2/scala/generated-and-checked-in/testdb/db2test_unique/Db2testUniqueFields.scala +++ b/testers/db2/scala/generated-and-checked-in/testdb/db2test_unique/Db2testUniqueFields.scala @@ -25,7 +25,7 @@ class Db2testUniqueFields(val `_path`: java.util.List[Path]) extends TupleExpr4[ None, None, (row, value) => row.copy(id = value), - Db2testUniqueId.dbType + Db2testUniqueId.db2Type ) } diff --git a/testers/db2/scala/generated-and-checked-in/testdb/db2test_unique/Db2testUniqueId.scala b/testers/db2/scala/generated-and-checked-in/testdb/db2test_unique/Db2testUniqueId.scala index a549dbb575..50f3916a17 100644 --- a/testers/db2/scala/generated-and-checked-in/testdb/db2test_unique/Db2testUniqueId.scala +++ b/testers/db2/scala/generated-and-checked-in/testdb/db2test_unique/Db2testUniqueId.scala @@ -16,5 +16,5 @@ case class Db2testUniqueId(@JsonValue value: Int) extends scala.AnyVal object Db2testUniqueId { given bijection: Bijection[Db2testUniqueId, Int] = Bijection.apply[Db2testUniqueId, Int](_.value)(Db2testUniqueId.apply) - given dbType: Db2Type[Db2testUniqueId] = ScalaDbTypes.Db2Types.integer.bimap(Db2testUniqueId.apply, _.value) + given db2Type: Db2Type[Db2testUniqueId] = ScalaDbTypes.Db2Types.integer.bimap(Db2testUniqueId.apply, _.value) } \ No newline at end of file diff --git a/testers/db2/scala/generated-and-checked-in/testdb/db2test_unique/Db2testUniqueRepoImpl.scala b/testers/db2/scala/generated-and-checked-in/testdb/db2test_unique/Db2testUniqueRepoImpl.scala index 18008e3c38..09bb03c4b2 100644 --- a/testers/db2/scala/generated-and-checked-in/testdb/db2test_unique/Db2testUniqueRepoImpl.scala +++ b/testers/db2/scala/generated-and-checked-in/testdb/db2test_unique/Db2testUniqueRepoImpl.scala @@ -18,11 +18,11 @@ import dev.typr.foundations.scala.Fragment.sql class Db2testUniqueRepoImpl extends Db2testUniqueRepo { override def delete: DeleteBuilder[Db2testUniqueFields, Db2testUniqueRow] = DeleteBuilder.of(""""DB2TEST_UNIQUE"""", Db2testUniqueFields.structure, Dialect.DB2) - override def deleteById(id: Db2testUniqueId)(using c: Connection): Boolean = sql"""delete from "DB2TEST_UNIQUE" where "ID" = ${Fragment.encode(Db2testUniqueId.dbType, id)}""".update().runUnchecked(c) > 0 + override def deleteById(id: Db2testUniqueId)(using c: Connection): Boolean = sql"""delete from "DB2TEST_UNIQUE" where "ID" = ${Fragment.encode(Db2testUniqueId.db2Type, id)}""".update().runUnchecked(c) > 0 override def deleteByIds(ids: Array[Db2testUniqueId])(using c: Connection): Int = { val fragments: ListBuffer[Fragment] = ListBuffer() - ids.foreach { id => fragments.addOne(Fragment.encode(Db2testUniqueId.dbType, id)): @scala.annotation.nowarn } + ids.foreach { id => fragments.addOne(Fragment.encode(Db2testUniqueId.db2Type, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("""delete from "DB2TEST_UNIQUE" where "ID" in ("""), Fragment.comma(fragments), Fragment.lit(")")).update().runUnchecked(c) } @@ -61,12 +61,12 @@ class Db2testUniqueRepoImpl extends Db2testUniqueRepo { override def selectById(id: Db2testUniqueId)(using c: Connection): Option[Db2testUniqueRow] = { sql"""select "ID", "EMAIL", "CODE", "CATEGORY" from "DB2TEST_UNIQUE" - where "ID" = ${Fragment.encode(Db2testUniqueId.dbType, id)}""".query(Db2testUniqueRow.`_rowParser`.first()).runUnchecked(c) + where "ID" = ${Fragment.encode(Db2testUniqueId.db2Type, id)}""".query(Db2testUniqueRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(ids: Array[Db2testUniqueId])(using c: Connection): List[Db2testUniqueRow] = { val fragments: ListBuffer[Fragment] = ListBuffer() - ids.foreach { id => fragments.addOne(Fragment.encode(Db2testUniqueId.dbType, id)): @scala.annotation.nowarn } + ids.foreach { id => fragments.addOne(Fragment.encode(Db2testUniqueId.db2Type, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("""select "ID", "EMAIL", "CODE", "CATEGORY" from "DB2TEST_UNIQUE" where "ID" in ("""), Fragment.comma(fragments), Fragment.lit(")")).query(Db2testUniqueRow.`_rowParser`.all()).runUnchecked(c) } @@ -101,17 +101,17 @@ class Db2testUniqueRepoImpl extends Db2testUniqueRepo { set "EMAIL" = ${Fragment.encode(Db2Types.varchar, row.email)}, "CODE" = ${Fragment.encode(Db2Types.varchar, row.code)}, "CATEGORY" = ${Fragment.encode(Db2Types.varchar, row.category)} - where "ID" = ${Fragment.encode(Db2testUniqueId.dbType, id)}""".update().runUnchecked(c) > 0 + where "ID" = ${Fragment.encode(Db2testUniqueId.db2Type, id)}""".update().runUnchecked(c) > 0 } override def upsert(unsaved: Db2testUniqueRow)(using c: Connection): Unit = { sql"""MERGE INTO "DB2TEST_UNIQUE" AS t - USING (VALUES (${Fragment.encode(Db2testUniqueId.dbType, unsaved.id)}, ${Fragment.encode(Db2Types.varchar, unsaved.email)}, ${Fragment.encode(Db2Types.varchar, unsaved.code)}, ${Fragment.encode(Db2Types.varchar, unsaved.category)})) AS s("ID", "EMAIL", "CODE", "CATEGORY") + USING (VALUES (${Fragment.encode(Db2testUniqueId.db2Type, unsaved.id)}, ${Fragment.encode(Db2Types.varchar, unsaved.email)}, ${Fragment.encode(Db2Types.varchar, unsaved.code)}, ${Fragment.encode(Db2Types.varchar, unsaved.category)})) AS s("ID", "EMAIL", "CODE", "CATEGORY") ON t."ID" = s."ID" WHEN MATCHED THEN UPDATE SET "EMAIL" = s."EMAIL", "CODE" = s."CODE", "CATEGORY" = s."CATEGORY" - WHEN NOT MATCHED THEN INSERT ("ID", "EMAIL", "CODE", "CATEGORY") VALUES (${Fragment.encode(Db2testUniqueId.dbType, unsaved.id)}, ${Fragment.encode(Db2Types.varchar, unsaved.email)}, ${Fragment.encode(Db2Types.varchar, unsaved.code)}, ${Fragment.encode(Db2Types.varchar, unsaved.category)})""" + WHEN NOT MATCHED THEN INSERT ("ID", "EMAIL", "CODE", "CATEGORY") VALUES (${Fragment.encode(Db2testUniqueId.db2Type, unsaved.id)}, ${Fragment.encode(Db2Types.varchar, unsaved.email)}, ${Fragment.encode(Db2Types.varchar, unsaved.code)}, ${Fragment.encode(Db2Types.varchar, unsaved.category)})""" .update() .runUnchecked(c): @scala.annotation.nowarn } diff --git a/testers/db2/scala/generated-and-checked-in/testdb/db2test_unique/Db2testUniqueRow.scala b/testers/db2/scala/generated-and-checked-in/testdb/db2test_unique/Db2testUniqueRow.scala index be4df8e7c4..8e5f3f6d0f 100644 --- a/testers/db2/scala/generated-and-checked-in/testdb/db2test_unique/Db2testUniqueRow.scala +++ b/testers/db2/scala/generated-and-checked-in/testdb/db2test_unique/Db2testUniqueRow.scala @@ -33,5 +33,5 @@ case class Db2testUniqueRow( } object Db2testUniqueRow { - val `_rowParser`: RowParser[Db2testUniqueRow] = RowParsers.of(Db2testUniqueId.dbType, Db2Types.varchar, Db2Types.varchar, Db2Types.varchar)(Db2testUniqueRow.apply)(row => Array[Any](row.id, row.email, row.code, row.category)) + val `_rowParser`: RowParser[Db2testUniqueRow] = RowParsers.of(Db2testUniqueId.db2Type, Db2Types.varchar, Db2Types.varchar, Db2Types.varchar)(Db2testUniqueRow.apply)(row => Array[Any](row.id, row.email, row.code, row.category)) } \ No newline at end of file diff --git a/testers/db2/scala/generated-and-checked-in/testdb/distinct_type_test/DistinctTypeTestFields.scala b/testers/db2/scala/generated-and-checked-in/testdb/distinct_type_test/DistinctTypeTestFields.scala index f65cb26613..f567962a37 100644 --- a/testers/db2/scala/generated-and-checked-in/testdb/distinct_type_test/DistinctTypeTestFields.scala +++ b/testers/db2/scala/generated-and-checked-in/testdb/distinct_type_test/DistinctTypeTestFields.scala @@ -27,7 +27,7 @@ class DistinctTypeTestFields(val `_path`: java.util.List[Path]) extends TupleExp None, None, (row, value) => row.copy(id = value), - DistinctTypeTestId.dbType + DistinctTypeTestId.db2Type ) } @@ -39,7 +39,7 @@ class DistinctTypeTestFields(val `_path`: java.util.List[Path]) extends TupleExp None, None, (row, value) => row.copy(email = value), - EmailAddress.dbType + EmailAddress.db2Type ) } @@ -51,7 +51,7 @@ class DistinctTypeTestFields(val `_path`: java.util.List[Path]) extends TupleExp None, None, (row, value) => row.copy(balance = value), - MoneyAmount.dbType + MoneyAmount.db2Type ) } diff --git a/testers/db2/scala/generated-and-checked-in/testdb/distinct_type_test/DistinctTypeTestId.scala b/testers/db2/scala/generated-and-checked-in/testdb/distinct_type_test/DistinctTypeTestId.scala index dcb1c84985..076c53d093 100644 --- a/testers/db2/scala/generated-and-checked-in/testdb/distinct_type_test/DistinctTypeTestId.scala +++ b/testers/db2/scala/generated-and-checked-in/testdb/distinct_type_test/DistinctTypeTestId.scala @@ -16,5 +16,5 @@ case class DistinctTypeTestId(@JsonValue value: Int) extends scala.AnyVal object DistinctTypeTestId { given bijection: Bijection[DistinctTypeTestId, Int] = Bijection.apply[DistinctTypeTestId, Int](_.value)(DistinctTypeTestId.apply) - given dbType: Db2Type[DistinctTypeTestId] = ScalaDbTypes.Db2Types.integer.bimap(DistinctTypeTestId.apply, _.value) + given db2Type: Db2Type[DistinctTypeTestId] = ScalaDbTypes.Db2Types.integer.bimap(DistinctTypeTestId.apply, _.value) } \ No newline at end of file diff --git a/testers/db2/scala/generated-and-checked-in/testdb/distinct_type_test/DistinctTypeTestRepoImpl.scala b/testers/db2/scala/generated-and-checked-in/testdb/distinct_type_test/DistinctTypeTestRepoImpl.scala index 429fe84028..bfb87c0556 100644 --- a/testers/db2/scala/generated-and-checked-in/testdb/distinct_type_test/DistinctTypeTestRepoImpl.scala +++ b/testers/db2/scala/generated-and-checked-in/testdb/distinct_type_test/DistinctTypeTestRepoImpl.scala @@ -20,17 +20,17 @@ import dev.typr.foundations.scala.Fragment.sql class DistinctTypeTestRepoImpl extends DistinctTypeTestRepo { override def delete: DeleteBuilder[DistinctTypeTestFields, DistinctTypeTestRow] = DeleteBuilder.of(""""DISTINCT_TYPE_TEST"""", DistinctTypeTestFields.structure, Dialect.DB2) - override def deleteById(id: DistinctTypeTestId)(using c: Connection): Boolean = sql"""delete from "DISTINCT_TYPE_TEST" where "ID" = ${Fragment.encode(DistinctTypeTestId.dbType, id)}""".update().runUnchecked(c) > 0 + override def deleteById(id: DistinctTypeTestId)(using c: Connection): Boolean = sql"""delete from "DISTINCT_TYPE_TEST" where "ID" = ${Fragment.encode(DistinctTypeTestId.db2Type, id)}""".update().runUnchecked(c) > 0 override def deleteByIds(ids: Array[DistinctTypeTestId])(using c: Connection): Int = { val fragments: ListBuffer[Fragment] = ListBuffer() - ids.foreach { id => fragments.addOne(Fragment.encode(DistinctTypeTestId.dbType, id)): @scala.annotation.nowarn } + ids.foreach { id => fragments.addOne(Fragment.encode(DistinctTypeTestId.db2Type, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("""delete from "DISTINCT_TYPE_TEST" where "ID" in ("""), Fragment.comma(fragments), Fragment.lit(")")).update().runUnchecked(c) } override def insert(unsaved: DistinctTypeTestRow)(using c: Connection): DistinctTypeTestRow = { sql"""SELECT "ID", "EMAIL", "BALANCE" FROM FINAL TABLE (INSERT INTO "DISTINCT_TYPE_TEST"("EMAIL", "BALANCE") - VALUES (${Fragment.encode(EmailAddress.dbType, unsaved.email)}, ${Fragment.encode(MoneyAmount.dbType.nullable, unsaved.balance)})) + VALUES (${Fragment.encode(EmailAddress.db2Type, unsaved.email)}, ${Fragment.encode(MoneyAmount.db2Type.nullable, unsaved.balance)})) """ .updateReturning(DistinctTypeTestRow.`_rowParser`.exactlyOne()).runUnchecked(c) } @@ -39,9 +39,9 @@ class DistinctTypeTestRepoImpl extends DistinctTypeTestRepo { val columns: ListBuffer[Fragment] = ListBuffer() val values: ListBuffer[Fragment] = ListBuffer() columns.addOne(Fragment.lit(""""EMAIL"""")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(EmailAddress.dbType, unsaved.email)}"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(EmailAddress.db2Type, unsaved.email)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""BALANCE"""")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(MoneyAmount.dbType.nullable, unsaved.balance)}"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(MoneyAmount.db2Type.nullable, unsaved.balance)}"): @scala.annotation.nowarn val q: Fragment = { sql"""SELECT "ID", "EMAIL", "BALANCE" FROM FINAL TABLE (INSERT INTO "DISTINCT_TYPE_TEST"(${Fragment.comma(columns)}) VALUES (${Fragment.comma(values)})) @@ -61,12 +61,12 @@ class DistinctTypeTestRepoImpl extends DistinctTypeTestRepo { override def selectById(id: DistinctTypeTestId)(using c: Connection): Option[DistinctTypeTestRow] = { sql"""select "ID", "EMAIL", "BALANCE" from "DISTINCT_TYPE_TEST" - where "ID" = ${Fragment.encode(DistinctTypeTestId.dbType, id)}""".query(DistinctTypeTestRow.`_rowParser`.first()).runUnchecked(c) + where "ID" = ${Fragment.encode(DistinctTypeTestId.db2Type, id)}""".query(DistinctTypeTestRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(ids: Array[DistinctTypeTestId])(using c: Connection): List[DistinctTypeTestRow] = { val fragments: ListBuffer[Fragment] = ListBuffer() - ids.foreach { id => fragments.addOne(Fragment.encode(DistinctTypeTestId.dbType, id)): @scala.annotation.nowarn } + ids.foreach { id => fragments.addOne(Fragment.encode(DistinctTypeTestId.db2Type, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("""select "ID", "EMAIL", "BALANCE" from "DISTINCT_TYPE_TEST" where "ID" in ("""), Fragment.comma(fragments), Fragment.lit(")")).query(DistinctTypeTestRow.`_rowParser`.all()).runUnchecked(c) } @@ -81,18 +81,18 @@ class DistinctTypeTestRepoImpl extends DistinctTypeTestRepo { override def update(row: DistinctTypeTestRow)(using c: Connection): Boolean = { val id: DistinctTypeTestId = row.id return sql"""update "DISTINCT_TYPE_TEST" - set "EMAIL" = ${Fragment.encode(EmailAddress.dbType, row.email)}, - "BALANCE" = ${Fragment.encode(MoneyAmount.dbType.nullable, row.balance)} - where "ID" = ${Fragment.encode(DistinctTypeTestId.dbType, id)}""".update().runUnchecked(c) > 0 + set "EMAIL" = ${Fragment.encode(EmailAddress.db2Type, row.email)}, + "BALANCE" = ${Fragment.encode(MoneyAmount.db2Type.nullable, row.balance)} + where "ID" = ${Fragment.encode(DistinctTypeTestId.db2Type, id)}""".update().runUnchecked(c) > 0 } override def upsert(unsaved: DistinctTypeTestRow)(using c: Connection): Unit = { sql"""MERGE INTO "DISTINCT_TYPE_TEST" AS t - USING (VALUES (${Fragment.encode(DistinctTypeTestId.dbType, unsaved.id)}, ${Fragment.encode(EmailAddress.dbType, unsaved.email)}, ${Fragment.encode(MoneyAmount.dbType.nullable, unsaved.balance)})) AS s("ID", "EMAIL", "BALANCE") + USING (VALUES (${Fragment.encode(DistinctTypeTestId.db2Type, unsaved.id)}, ${Fragment.encode(EmailAddress.db2Type, unsaved.email)}, ${Fragment.encode(MoneyAmount.db2Type.nullable, unsaved.balance)})) AS s("ID", "EMAIL", "BALANCE") ON t."ID" = s."ID" WHEN MATCHED THEN UPDATE SET "EMAIL" = s."EMAIL", "BALANCE" = s."BALANCE" - WHEN NOT MATCHED THEN INSERT ("ID", "EMAIL", "BALANCE") VALUES (${Fragment.encode(DistinctTypeTestId.dbType, unsaved.id)}, ${Fragment.encode(EmailAddress.dbType, unsaved.email)}, ${Fragment.encode(MoneyAmount.dbType.nullable, unsaved.balance)})""" + WHEN NOT MATCHED THEN INSERT ("ID", "EMAIL", "BALANCE") VALUES (${Fragment.encode(DistinctTypeTestId.db2Type, unsaved.id)}, ${Fragment.encode(EmailAddress.db2Type, unsaved.email)}, ${Fragment.encode(MoneyAmount.db2Type.nullable, unsaved.balance)})""" .update() .runUnchecked(c): @scala.annotation.nowarn } diff --git a/testers/db2/scala/generated-and-checked-in/testdb/distinct_type_test/DistinctTypeTestRow.scala b/testers/db2/scala/generated-and-checked-in/testdb/distinct_type_test/DistinctTypeTestRow.scala index 25f4e79d86..99d6c737cf 100644 --- a/testers/db2/scala/generated-and-checked-in/testdb/distinct_type_test/DistinctTypeTestRow.scala +++ b/testers/db2/scala/generated-and-checked-in/testdb/distinct_type_test/DistinctTypeTestRow.scala @@ -32,5 +32,5 @@ case class DistinctTypeTestRow( } object DistinctTypeTestRow { - val `_rowParser`: RowParser[DistinctTypeTestRow] = RowParsers.of(DistinctTypeTestId.dbType, EmailAddress.dbType, MoneyAmount.dbType.nullable)(DistinctTypeTestRow.apply)(row => Array[Any](row.id, row.email, row.balance)) + val `_rowParser`: RowParser[DistinctTypeTestRow] = RowParsers.of(DistinctTypeTestId.db2Type, EmailAddress.db2Type, MoneyAmount.db2Type.nullable)(DistinctTypeTestRow.apply)(row => Array[Any](row.id, row.email, row.balance)) } \ No newline at end of file diff --git a/testers/db2/scala/generated-and-checked-in/testdb/identity_params_test/IdentityParamsTestFields.scala b/testers/db2/scala/generated-and-checked-in/testdb/identity_params_test/IdentityParamsTestFields.scala index 394db17f55..7b448d5ebe 100644 --- a/testers/db2/scala/generated-and-checked-in/testdb/identity_params_test/IdentityParamsTestFields.scala +++ b/testers/db2/scala/generated-and-checked-in/testdb/identity_params_test/IdentityParamsTestFields.scala @@ -25,7 +25,7 @@ class IdentityParamsTestFields(val `_path`: java.util.List[Path]) extends TupleE None, None, (row, value) => row.copy(id = value), - IdentityParamsTestId.dbType + IdentityParamsTestId.db2Type ) } diff --git a/testers/db2/scala/generated-and-checked-in/testdb/identity_params_test/IdentityParamsTestId.scala b/testers/db2/scala/generated-and-checked-in/testdb/identity_params_test/IdentityParamsTestId.scala index fcbe443ff9..e1e38240ff 100644 --- a/testers/db2/scala/generated-and-checked-in/testdb/identity_params_test/IdentityParamsTestId.scala +++ b/testers/db2/scala/generated-and-checked-in/testdb/identity_params_test/IdentityParamsTestId.scala @@ -16,5 +16,5 @@ case class IdentityParamsTestId(@JsonValue value: Int) extends scala.AnyVal object IdentityParamsTestId { given bijection: Bijection[IdentityParamsTestId, Int] = Bijection.apply[IdentityParamsTestId, Int](_.value)(IdentityParamsTestId.apply) - given dbType: Db2Type[IdentityParamsTestId] = ScalaDbTypes.Db2Types.integer.bimap(IdentityParamsTestId.apply, _.value) + given db2Type: Db2Type[IdentityParamsTestId] = ScalaDbTypes.Db2Types.integer.bimap(IdentityParamsTestId.apply, _.value) } \ No newline at end of file diff --git a/testers/db2/scala/generated-and-checked-in/testdb/identity_params_test/IdentityParamsTestRepoImpl.scala b/testers/db2/scala/generated-and-checked-in/testdb/identity_params_test/IdentityParamsTestRepoImpl.scala index 7c0c9cd938..7bc8b2ee88 100644 --- a/testers/db2/scala/generated-and-checked-in/testdb/identity_params_test/IdentityParamsTestRepoImpl.scala +++ b/testers/db2/scala/generated-and-checked-in/testdb/identity_params_test/IdentityParamsTestRepoImpl.scala @@ -18,11 +18,11 @@ import dev.typr.foundations.scala.Fragment.sql class IdentityParamsTestRepoImpl extends IdentityParamsTestRepo { override def delete: DeleteBuilder[IdentityParamsTestFields, IdentityParamsTestRow] = DeleteBuilder.of(""""IDENTITY_PARAMS_TEST"""", IdentityParamsTestFields.structure, Dialect.DB2) - override def deleteById(id: IdentityParamsTestId)(using c: Connection): Boolean = sql"""delete from "IDENTITY_PARAMS_TEST" where "ID" = ${Fragment.encode(IdentityParamsTestId.dbType, id)}""".update().runUnchecked(c) > 0 + override def deleteById(id: IdentityParamsTestId)(using c: Connection): Boolean = sql"""delete from "IDENTITY_PARAMS_TEST" where "ID" = ${Fragment.encode(IdentityParamsTestId.db2Type, id)}""".update().runUnchecked(c) > 0 override def deleteByIds(ids: Array[IdentityParamsTestId])(using c: Connection): Int = { val fragments: ListBuffer[Fragment] = ListBuffer() - ids.foreach { id => fragments.addOne(Fragment.encode(IdentityParamsTestId.dbType, id)): @scala.annotation.nowarn } + ids.foreach { id => fragments.addOne(Fragment.encode(IdentityParamsTestId.db2Type, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("""delete from "IDENTITY_PARAMS_TEST" where "ID" in ("""), Fragment.comma(fragments), Fragment.lit(")")).update().runUnchecked(c) } @@ -57,12 +57,12 @@ class IdentityParamsTestRepoImpl extends IdentityParamsTestRepo { override def selectById(id: IdentityParamsTestId)(using c: Connection): Option[IdentityParamsTestRow] = { sql"""select "ID", "NAME" from "IDENTITY_PARAMS_TEST" - where "ID" = ${Fragment.encode(IdentityParamsTestId.dbType, id)}""".query(IdentityParamsTestRow.`_rowParser`.first()).runUnchecked(c) + where "ID" = ${Fragment.encode(IdentityParamsTestId.db2Type, id)}""".query(IdentityParamsTestRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(ids: Array[IdentityParamsTestId])(using c: Connection): List[IdentityParamsTestRow] = { val fragments: ListBuffer[Fragment] = ListBuffer() - ids.foreach { id => fragments.addOne(Fragment.encode(IdentityParamsTestId.dbType, id)): @scala.annotation.nowarn } + ids.foreach { id => fragments.addOne(Fragment.encode(IdentityParamsTestId.db2Type, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("""select "ID", "NAME" from "IDENTITY_PARAMS_TEST" where "ID" in ("""), Fragment.comma(fragments), Fragment.lit(")")).query(IdentityParamsTestRow.`_rowParser`.all()).runUnchecked(c) } @@ -78,15 +78,15 @@ class IdentityParamsTestRepoImpl extends IdentityParamsTestRepo { val id: IdentityParamsTestId = row.id return sql"""update "IDENTITY_PARAMS_TEST" set "NAME" = ${Fragment.encode(Db2Types.varchar, row.name)} - where "ID" = ${Fragment.encode(IdentityParamsTestId.dbType, id)}""".update().runUnchecked(c) > 0 + where "ID" = ${Fragment.encode(IdentityParamsTestId.db2Type, id)}""".update().runUnchecked(c) > 0 } override def upsert(unsaved: IdentityParamsTestRow)(using c: Connection): Unit = { sql"""MERGE INTO "IDENTITY_PARAMS_TEST" AS t - USING (VALUES (${Fragment.encode(IdentityParamsTestId.dbType, unsaved.id)}, ${Fragment.encode(Db2Types.varchar, unsaved.name)})) AS s("ID", "NAME") + USING (VALUES (${Fragment.encode(IdentityParamsTestId.db2Type, unsaved.id)}, ${Fragment.encode(Db2Types.varchar, unsaved.name)})) AS s("ID", "NAME") ON t."ID" = s."ID" WHEN MATCHED THEN UPDATE SET "NAME" = s."NAME" - WHEN NOT MATCHED THEN INSERT ("ID", "NAME") VALUES (${Fragment.encode(IdentityParamsTestId.dbType, unsaved.id)}, ${Fragment.encode(Db2Types.varchar, unsaved.name)})""" + WHEN NOT MATCHED THEN INSERT ("ID", "NAME") VALUES (${Fragment.encode(IdentityParamsTestId.db2Type, unsaved.id)}, ${Fragment.encode(Db2Types.varchar, unsaved.name)})""" .update() .runUnchecked(c): @scala.annotation.nowarn } diff --git a/testers/db2/scala/generated-and-checked-in/testdb/identity_params_test/IdentityParamsTestRow.scala b/testers/db2/scala/generated-and-checked-in/testdb/identity_params_test/IdentityParamsTestRow.scala index c9a39af25f..c7ab5afbf7 100644 --- a/testers/db2/scala/generated-and-checked-in/testdb/identity_params_test/IdentityParamsTestRow.scala +++ b/testers/db2/scala/generated-and-checked-in/testdb/identity_params_test/IdentityParamsTestRow.scala @@ -27,5 +27,5 @@ case class IdentityParamsTestRow( } object IdentityParamsTestRow { - val `_rowParser`: RowParser[IdentityParamsTestRow] = RowParsers.of(IdentityParamsTestId.dbType, Db2Types.varchar)(IdentityParamsTestRow.apply)(row => Array[Any](row.id, row.name)) + val `_rowParser`: RowParser[IdentityParamsTestRow] = RowParsers.of(IdentityParamsTestId.db2Type, Db2Types.varchar)(IdentityParamsTestRow.apply)(row => Array[Any](row.id, row.name)) } \ No newline at end of file diff --git a/testers/db2/scala/generated-and-checked-in/testdb/order_items/OrderItemsFields.scala b/testers/db2/scala/generated-and-checked-in/testdb/order_items/OrderItemsFields.scala index 2b1f652b39..3684d4cc48 100644 --- a/testers/db2/scala/generated-and-checked-in/testdb/order_items/OrderItemsFields.scala +++ b/testers/db2/scala/generated-and-checked-in/testdb/order_items/OrderItemsFields.scala @@ -31,7 +31,7 @@ class OrderItemsFields(val `_path`: java.util.List[Path]) extends TupleExpr5[Ord None, None, (row, value) => row.copy(orderId = value), - OrdersId.dbType + OrdersId.db2Type ) } diff --git a/testers/db2/scala/generated-and-checked-in/testdb/order_items/OrderItemsId.scala b/testers/db2/scala/generated-and-checked-in/testdb/order_items/OrderItemsId.scala index fa68da7404..bbe2e70ce5 100644 --- a/testers/db2/scala/generated-and-checked-in/testdb/order_items/OrderItemsId.scala +++ b/testers/db2/scala/generated-and-checked-in/testdb/order_items/OrderItemsId.scala @@ -23,5 +23,5 @@ case class OrderItemsId( } object OrderItemsId { - val `_rowParser`: RowParser[OrderItemsId] = RowParsers.of(OrdersId.dbType, ScalaDbTypes.Db2Types.integer)(OrderItemsId.apply)(row => Array[Any](row.orderId, row.itemNumber)) + val `_rowParser`: RowParser[OrderItemsId] = RowParsers.of(OrdersId.db2Type, ScalaDbTypes.Db2Types.integer)(OrderItemsId.apply)(row => Array[Any](row.orderId, row.itemNumber)) } \ No newline at end of file diff --git a/testers/db2/scala/generated-and-checked-in/testdb/order_items/OrderItemsRepoImpl.scala b/testers/db2/scala/generated-and-checked-in/testdb/order_items/OrderItemsRepoImpl.scala index 3b6bc6516a..11b96fa74a 100644 --- a/testers/db2/scala/generated-and-checked-in/testdb/order_items/OrderItemsRepoImpl.scala +++ b/testers/db2/scala/generated-and-checked-in/testdb/order_items/OrderItemsRepoImpl.scala @@ -20,17 +20,17 @@ import dev.typr.foundations.scala.Fragment.sql class OrderItemsRepoImpl extends OrderItemsRepo { override def delete: DeleteBuilder[OrderItemsFields, OrderItemsRow] = DeleteBuilder.of(""""ORDER_ITEMS"""", OrderItemsFields.structure, Dialect.DB2) - override def deleteById(compositeId: OrderItemsId)(using c: Connection): Boolean = sql"""delete from "ORDER_ITEMS" where "ORDER_ID" = ${Fragment.encode(OrdersId.dbType, compositeId.orderId)} AND "ITEM_NUMBER" = ${Fragment.encode(ScalaDbTypes.Db2Types.integer, compositeId.itemNumber)}""".update().runUnchecked(c) > 0 + override def deleteById(compositeId: OrderItemsId)(using c: Connection): Boolean = sql"""delete from "ORDER_ITEMS" where "ORDER_ID" = ${Fragment.encode(OrdersId.db2Type, compositeId.orderId)} AND "ITEM_NUMBER" = ${Fragment.encode(ScalaDbTypes.Db2Types.integer, compositeId.itemNumber)}""".update().runUnchecked(c) > 0 override def deleteByIds(compositeIds: Array[OrderItemsId])(using c: Connection): Int = { val fragments: ListBuffer[Fragment] = ListBuffer() - compositeIds.foreach { id => fragments.addOne(Fragment.interpolate(Fragment.lit("("), Fragment.encode(OrdersId.dbType, id.orderId), Fragment.lit(", "), Fragment.encode(ScalaDbTypes.Db2Types.integer, id.itemNumber), Fragment.lit(")"))): @scala.annotation.nowarn } + compositeIds.foreach { id => fragments.addOne(Fragment.interpolate(Fragment.lit("("), Fragment.encode(OrdersId.db2Type, id.orderId), Fragment.lit(", "), Fragment.encode(ScalaDbTypes.Db2Types.integer, id.itemNumber), Fragment.lit(")"))): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("""delete from "ORDER_ITEMS" where ("ORDER_ID", "ITEM_NUMBER") in ("""), Fragment.comma(fragments), Fragment.lit(")")).update().runUnchecked(c) } override def insert(unsaved: OrderItemsRow)(using c: Connection): OrderItemsRow = { sql"""SELECT "ORDER_ID", "ITEM_NUMBER", "PRODUCT_NAME", "QUANTITY", "UNIT_PRICE" FROM FINAL TABLE (INSERT INTO "ORDER_ITEMS"("ORDER_ID", "ITEM_NUMBER", "PRODUCT_NAME", "QUANTITY", "UNIT_PRICE") - VALUES (${Fragment.encode(OrdersId.dbType, unsaved.orderId)}, ${Fragment.encode(ScalaDbTypes.Db2Types.integer, unsaved.itemNumber)}, ${Fragment.encode(Db2Types.varchar, unsaved.productName)}, ${Fragment.encode(ScalaDbTypes.Db2Types.integer, unsaved.quantity)}, ${Fragment.encode(ScalaDbTypes.Db2Types.decimal, unsaved.unitPrice)})) + VALUES (${Fragment.encode(OrdersId.db2Type, unsaved.orderId)}, ${Fragment.encode(ScalaDbTypes.Db2Types.integer, unsaved.itemNumber)}, ${Fragment.encode(Db2Types.varchar, unsaved.productName)}, ${Fragment.encode(ScalaDbTypes.Db2Types.integer, unsaved.quantity)}, ${Fragment.encode(ScalaDbTypes.Db2Types.decimal, unsaved.unitPrice)})) """ .updateReturning(OrderItemsRow.`_rowParser`.exactlyOne()).runUnchecked(c) } @@ -46,12 +46,12 @@ class OrderItemsRepoImpl extends OrderItemsRepo { override def selectById(compositeId: OrderItemsId)(using c: Connection): Option[OrderItemsRow] = { sql"""select "ORDER_ID", "ITEM_NUMBER", "PRODUCT_NAME", "QUANTITY", "UNIT_PRICE" from "ORDER_ITEMS" - where "ORDER_ID" = ${Fragment.encode(OrdersId.dbType, compositeId.orderId)} AND "ITEM_NUMBER" = ${Fragment.encode(ScalaDbTypes.Db2Types.integer, compositeId.itemNumber)}""".query(OrderItemsRow.`_rowParser`.first()).runUnchecked(c) + where "ORDER_ID" = ${Fragment.encode(OrdersId.db2Type, compositeId.orderId)} AND "ITEM_NUMBER" = ${Fragment.encode(ScalaDbTypes.Db2Types.integer, compositeId.itemNumber)}""".query(OrderItemsRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(compositeIds: Array[OrderItemsId])(using c: Connection): List[OrderItemsRow] = { val fragments: ListBuffer[Fragment] = ListBuffer() - compositeIds.foreach { id => fragments.addOne(Fragment.interpolate(Fragment.lit("("), Fragment.encode(OrdersId.dbType, id.orderId), Fragment.lit(", "), Fragment.encode(ScalaDbTypes.Db2Types.integer, id.itemNumber), Fragment.lit(")"))): @scala.annotation.nowarn } + compositeIds.foreach { id => fragments.addOne(Fragment.interpolate(Fragment.lit("("), Fragment.encode(OrdersId.db2Type, id.orderId), Fragment.lit(", "), Fragment.encode(ScalaDbTypes.Db2Types.integer, id.itemNumber), Fragment.lit(")"))): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("""select "ORDER_ID", "ITEM_NUMBER", "PRODUCT_NAME", "QUANTITY", "UNIT_PRICE" from "ORDER_ITEMS" where ("ORDER_ID", "ITEM_NUMBER") in ("""), Fragment.comma(fragments), Fragment.lit(")")).query(OrderItemsRow.`_rowParser`.all()).runUnchecked(c) } @@ -69,17 +69,17 @@ class OrderItemsRepoImpl extends OrderItemsRepo { set "PRODUCT_NAME" = ${Fragment.encode(Db2Types.varchar, row.productName)}, "QUANTITY" = ${Fragment.encode(ScalaDbTypes.Db2Types.integer, row.quantity)}, "UNIT_PRICE" = ${Fragment.encode(ScalaDbTypes.Db2Types.decimal, row.unitPrice)} - where "ORDER_ID" = ${Fragment.encode(OrdersId.dbType, compositeId.orderId)} AND "ITEM_NUMBER" = ${Fragment.encode(ScalaDbTypes.Db2Types.integer, compositeId.itemNumber)}""".update().runUnchecked(c) > 0 + where "ORDER_ID" = ${Fragment.encode(OrdersId.db2Type, compositeId.orderId)} AND "ITEM_NUMBER" = ${Fragment.encode(ScalaDbTypes.Db2Types.integer, compositeId.itemNumber)}""".update().runUnchecked(c) > 0 } override def upsert(unsaved: OrderItemsRow)(using c: Connection): Unit = { sql"""MERGE INTO "ORDER_ITEMS" AS t - USING (VALUES (${Fragment.encode(OrdersId.dbType, unsaved.orderId)}, ${Fragment.encode(ScalaDbTypes.Db2Types.integer, unsaved.itemNumber)}, ${Fragment.encode(Db2Types.varchar, unsaved.productName)}, ${Fragment.encode(ScalaDbTypes.Db2Types.integer, unsaved.quantity)}, ${Fragment.encode(ScalaDbTypes.Db2Types.decimal, unsaved.unitPrice)})) AS s("ORDER_ID", "ITEM_NUMBER", "PRODUCT_NAME", "QUANTITY", "UNIT_PRICE") + USING (VALUES (${Fragment.encode(OrdersId.db2Type, unsaved.orderId)}, ${Fragment.encode(ScalaDbTypes.Db2Types.integer, unsaved.itemNumber)}, ${Fragment.encode(Db2Types.varchar, unsaved.productName)}, ${Fragment.encode(ScalaDbTypes.Db2Types.integer, unsaved.quantity)}, ${Fragment.encode(ScalaDbTypes.Db2Types.decimal, unsaved.unitPrice)})) AS s("ORDER_ID", "ITEM_NUMBER", "PRODUCT_NAME", "QUANTITY", "UNIT_PRICE") ON t."ORDER_ID" = s."ORDER_ID" AND t."ITEM_NUMBER" = s."ITEM_NUMBER" WHEN MATCHED THEN UPDATE SET "PRODUCT_NAME" = s."PRODUCT_NAME", "QUANTITY" = s."QUANTITY", "UNIT_PRICE" = s."UNIT_PRICE" - WHEN NOT MATCHED THEN INSERT ("ORDER_ID", "ITEM_NUMBER", "PRODUCT_NAME", "QUANTITY", "UNIT_PRICE") VALUES (${Fragment.encode(OrdersId.dbType, unsaved.orderId)}, ${Fragment.encode(ScalaDbTypes.Db2Types.integer, unsaved.itemNumber)}, ${Fragment.encode(Db2Types.varchar, unsaved.productName)}, ${Fragment.encode(ScalaDbTypes.Db2Types.integer, unsaved.quantity)}, ${Fragment.encode(ScalaDbTypes.Db2Types.decimal, unsaved.unitPrice)})""" + WHEN NOT MATCHED THEN INSERT ("ORDER_ID", "ITEM_NUMBER", "PRODUCT_NAME", "QUANTITY", "UNIT_PRICE") VALUES (${Fragment.encode(OrdersId.db2Type, unsaved.orderId)}, ${Fragment.encode(ScalaDbTypes.Db2Types.integer, unsaved.itemNumber)}, ${Fragment.encode(Db2Types.varchar, unsaved.productName)}, ${Fragment.encode(ScalaDbTypes.Db2Types.integer, unsaved.quantity)}, ${Fragment.encode(ScalaDbTypes.Db2Types.decimal, unsaved.unitPrice)})""" .update() .runUnchecked(c): @scala.annotation.nowarn } diff --git a/testers/db2/scala/generated-and-checked-in/testdb/order_items/OrderItemsRow.scala b/testers/db2/scala/generated-and-checked-in/testdb/order_items/OrderItemsRow.scala index 49f685ef8b..d94ec795e5 100644 --- a/testers/db2/scala/generated-and-checked-in/testdb/order_items/OrderItemsRow.scala +++ b/testers/db2/scala/generated-and-checked-in/testdb/order_items/OrderItemsRow.scala @@ -40,7 +40,7 @@ case class OrderItemsRow( } object OrderItemsRow { - val `_rowParser`: RowParser[OrderItemsRow] = RowParsers.of(OrdersId.dbType, ScalaDbTypes.Db2Types.integer, Db2Types.varchar, ScalaDbTypes.Db2Types.integer, ScalaDbTypes.Db2Types.decimal)(OrderItemsRow.apply)(row => Array[Any](row.orderId, row.itemNumber, row.productName, row.quantity, row.unitPrice)) + val `_rowParser`: RowParser[OrderItemsRow] = RowParsers.of(OrdersId.db2Type, ScalaDbTypes.Db2Types.integer, Db2Types.varchar, ScalaDbTypes.Db2Types.integer, ScalaDbTypes.Db2Types.decimal)(OrderItemsRow.apply)(row => Array[Any](row.orderId, row.itemNumber, row.productName, row.quantity, row.unitPrice)) def apply( compositeId: OrderItemsId, diff --git a/testers/db2/scala/generated-and-checked-in/testdb/orders/OrdersFields.scala b/testers/db2/scala/generated-and-checked-in/testdb/orders/OrdersFields.scala index f1ecfa89c9..553f8230de 100644 --- a/testers/db2/scala/generated-and-checked-in/testdb/orders/OrdersFields.scala +++ b/testers/db2/scala/generated-and-checked-in/testdb/orders/OrdersFields.scala @@ -32,7 +32,7 @@ class OrdersFields(val `_path`: java.util.List[Path]) extends TupleExpr5[OrdersI None, None, (row, value) => row.copy(orderId = value), - OrdersId.dbType + OrdersId.db2Type ) } @@ -44,7 +44,7 @@ class OrdersFields(val `_path`: java.util.List[Path]) extends TupleExpr5[OrdersI None, None, (row, value) => row.copy(customerId = value), - CustomersId.dbType + CustomersId.db2Type ) } diff --git a/testers/db2/scala/generated-and-checked-in/testdb/orders/OrdersId.scala b/testers/db2/scala/generated-and-checked-in/testdb/orders/OrdersId.scala index cc1a8371c7..79b3504cfc 100644 --- a/testers/db2/scala/generated-and-checked-in/testdb/orders/OrdersId.scala +++ b/testers/db2/scala/generated-and-checked-in/testdb/orders/OrdersId.scala @@ -16,5 +16,5 @@ case class OrdersId(@JsonValue value: Int) extends scala.AnyVal object OrdersId { given bijection: Bijection[OrdersId, Int] = Bijection.apply[OrdersId, Int](_.value)(OrdersId.apply) - given dbType: Db2Type[OrdersId] = ScalaDbTypes.Db2Types.integer.bimap(OrdersId.apply, _.value) + given db2Type: Db2Type[OrdersId] = ScalaDbTypes.Db2Types.integer.bimap(OrdersId.apply, _.value) } \ No newline at end of file diff --git a/testers/db2/scala/generated-and-checked-in/testdb/orders/OrdersRepoImpl.scala b/testers/db2/scala/generated-and-checked-in/testdb/orders/OrdersRepoImpl.scala index 8e1e9966cb..7606afbc72 100644 --- a/testers/db2/scala/generated-and-checked-in/testdb/orders/OrdersRepoImpl.scala +++ b/testers/db2/scala/generated-and-checked-in/testdb/orders/OrdersRepoImpl.scala @@ -21,17 +21,17 @@ import dev.typr.foundations.scala.Fragment.sql class OrdersRepoImpl extends OrdersRepo { override def delete: DeleteBuilder[OrdersFields, OrdersRow] = DeleteBuilder.of(""""ORDERS"""", OrdersFields.structure, Dialect.DB2) - override def deleteById(orderId: OrdersId)(using c: Connection): Boolean = sql"""delete from "ORDERS" where "ORDER_ID" = ${Fragment.encode(OrdersId.dbType, orderId)}""".update().runUnchecked(c) > 0 + override def deleteById(orderId: OrdersId)(using c: Connection): Boolean = sql"""delete from "ORDERS" where "ORDER_ID" = ${Fragment.encode(OrdersId.db2Type, orderId)}""".update().runUnchecked(c) > 0 override def deleteByIds(orderIds: Array[OrdersId])(using c: Connection): Int = { val fragments: ListBuffer[Fragment] = ListBuffer() - orderIds.foreach { id => fragments.addOne(Fragment.encode(OrdersId.dbType, id)): @scala.annotation.nowarn } + orderIds.foreach { id => fragments.addOne(Fragment.encode(OrdersId.db2Type, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("""delete from "ORDERS" where "ORDER_ID" in ("""), Fragment.comma(fragments), Fragment.lit(")")).update().runUnchecked(c) } override def insert(unsaved: OrdersRow)(using c: Connection): OrdersRow = { sql"""SELECT "ORDER_ID", "CUSTOMER_ID", "ORDER_DATE", "TOTAL_AMOUNT", "STATUS" FROM FINAL TABLE (INSERT INTO "ORDERS"("CUSTOMER_ID", "ORDER_DATE", "TOTAL_AMOUNT", "STATUS") - VALUES (${Fragment.encode(CustomersId.dbType, unsaved.customerId)}, ${Fragment.encode(Db2Types.date, unsaved.orderDate)}, ${Fragment.encode(ScalaDbTypes.Db2Types.decimal.nullable, unsaved.totalAmount)}, ${Fragment.encode(Db2Types.varchar.nullable, unsaved.status)})) + VALUES (${Fragment.encode(CustomersId.db2Type, unsaved.customerId)}, ${Fragment.encode(Db2Types.date, unsaved.orderDate)}, ${Fragment.encode(ScalaDbTypes.Db2Types.decimal.nullable, unsaved.totalAmount)}, ${Fragment.encode(Db2Types.varchar.nullable, unsaved.status)})) """ .updateReturning(OrdersRow.`_rowParser`.exactlyOne()).runUnchecked(c) } @@ -40,7 +40,7 @@ class OrdersRepoImpl extends OrdersRepo { val columns: ListBuffer[Fragment] = ListBuffer() val values: ListBuffer[Fragment] = ListBuffer() columns.addOne(Fragment.lit(""""CUSTOMER_ID"""")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(CustomersId.dbType, unsaved.customerId)}"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(CustomersId.db2Type, unsaved.customerId)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""TOTAL_AMOUNT"""")): @scala.annotation.nowarn values.addOne(sql"${Fragment.encode(ScalaDbTypes.Db2Types.decimal.nullable, unsaved.totalAmount)}"): @scala.annotation.nowarn unsaved.orderDate.visit( @@ -70,12 +70,12 @@ class OrdersRepoImpl extends OrdersRepo { override def selectById(orderId: OrdersId)(using c: Connection): Option[OrdersRow] = { sql"""select "ORDER_ID", "CUSTOMER_ID", "ORDER_DATE", "TOTAL_AMOUNT", "STATUS" from "ORDERS" - where "ORDER_ID" = ${Fragment.encode(OrdersId.dbType, orderId)}""".query(OrdersRow.`_rowParser`.first()).runUnchecked(c) + where "ORDER_ID" = ${Fragment.encode(OrdersId.db2Type, orderId)}""".query(OrdersRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(orderIds: Array[OrdersId])(using c: Connection): List[OrdersRow] = { val fragments: ListBuffer[Fragment] = ListBuffer() - orderIds.foreach { id => fragments.addOne(Fragment.encode(OrdersId.dbType, id)): @scala.annotation.nowarn } + orderIds.foreach { id => fragments.addOne(Fragment.encode(OrdersId.db2Type, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("""select "ORDER_ID", "CUSTOMER_ID", "ORDER_DATE", "TOTAL_AMOUNT", "STATUS" from "ORDERS" where "ORDER_ID" in ("""), Fragment.comma(fragments), Fragment.lit(")")).query(OrdersRow.`_rowParser`.all()).runUnchecked(c) } @@ -90,22 +90,22 @@ class OrdersRepoImpl extends OrdersRepo { override def update(row: OrdersRow)(using c: Connection): Boolean = { val orderId: OrdersId = row.orderId return sql"""update "ORDERS" - set "CUSTOMER_ID" = ${Fragment.encode(CustomersId.dbType, row.customerId)}, + set "CUSTOMER_ID" = ${Fragment.encode(CustomersId.db2Type, row.customerId)}, "ORDER_DATE" = ${Fragment.encode(Db2Types.date, row.orderDate)}, "TOTAL_AMOUNT" = ${Fragment.encode(ScalaDbTypes.Db2Types.decimal.nullable, row.totalAmount)}, "STATUS" = ${Fragment.encode(Db2Types.varchar.nullable, row.status)} - where "ORDER_ID" = ${Fragment.encode(OrdersId.dbType, orderId)}""".update().runUnchecked(c) > 0 + where "ORDER_ID" = ${Fragment.encode(OrdersId.db2Type, orderId)}""".update().runUnchecked(c) > 0 } override def upsert(unsaved: OrdersRow)(using c: Connection): Unit = { sql"""MERGE INTO "ORDERS" AS t - USING (VALUES (${Fragment.encode(OrdersId.dbType, unsaved.orderId)}, ${Fragment.encode(CustomersId.dbType, unsaved.customerId)}, ${Fragment.encode(Db2Types.date, unsaved.orderDate)}, ${Fragment.encode(ScalaDbTypes.Db2Types.decimal.nullable, unsaved.totalAmount)}, ${Fragment.encode(Db2Types.varchar.nullable, unsaved.status)})) AS s("ORDER_ID", "CUSTOMER_ID", "ORDER_DATE", "TOTAL_AMOUNT", "STATUS") + USING (VALUES (${Fragment.encode(OrdersId.db2Type, unsaved.orderId)}, ${Fragment.encode(CustomersId.db2Type, unsaved.customerId)}, ${Fragment.encode(Db2Types.date, unsaved.orderDate)}, ${Fragment.encode(ScalaDbTypes.Db2Types.decimal.nullable, unsaved.totalAmount)}, ${Fragment.encode(Db2Types.varchar.nullable, unsaved.status)})) AS s("ORDER_ID", "CUSTOMER_ID", "ORDER_DATE", "TOTAL_AMOUNT", "STATUS") ON t."ORDER_ID" = s."ORDER_ID" WHEN MATCHED THEN UPDATE SET "CUSTOMER_ID" = s."CUSTOMER_ID", "ORDER_DATE" = s."ORDER_DATE", "TOTAL_AMOUNT" = s."TOTAL_AMOUNT", "STATUS" = s."STATUS" - WHEN NOT MATCHED THEN INSERT ("ORDER_ID", "CUSTOMER_ID", "ORDER_DATE", "TOTAL_AMOUNT", "STATUS") VALUES (${Fragment.encode(OrdersId.dbType, unsaved.orderId)}, ${Fragment.encode(CustomersId.dbType, unsaved.customerId)}, ${Fragment.encode(Db2Types.date, unsaved.orderDate)}, ${Fragment.encode(ScalaDbTypes.Db2Types.decimal.nullable, unsaved.totalAmount)}, ${Fragment.encode(Db2Types.varchar.nullable, unsaved.status)})""" + WHEN NOT MATCHED THEN INSERT ("ORDER_ID", "CUSTOMER_ID", "ORDER_DATE", "TOTAL_AMOUNT", "STATUS") VALUES (${Fragment.encode(OrdersId.db2Type, unsaved.orderId)}, ${Fragment.encode(CustomersId.db2Type, unsaved.customerId)}, ${Fragment.encode(Db2Types.date, unsaved.orderDate)}, ${Fragment.encode(ScalaDbTypes.Db2Types.decimal.nullable, unsaved.totalAmount)}, ${Fragment.encode(Db2Types.varchar.nullable, unsaved.status)})""" .update() .runUnchecked(c): @scala.annotation.nowarn } diff --git a/testers/db2/scala/generated-and-checked-in/testdb/orders/OrdersRow.scala b/testers/db2/scala/generated-and-checked-in/testdb/orders/OrdersRow.scala index b81b8a7627..03d682a2f7 100644 --- a/testers/db2/scala/generated-and-checked-in/testdb/orders/OrdersRow.scala +++ b/testers/db2/scala/generated-and-checked-in/testdb/orders/OrdersRow.scala @@ -60,5 +60,5 @@ case class OrdersRow( } object OrdersRow { - val `_rowParser`: RowParser[OrdersRow] = RowParsers.of(OrdersId.dbType, CustomersId.dbType, Db2Types.date, ScalaDbTypes.Db2Types.decimal.nullable, Db2Types.varchar.nullable)(OrdersRow.apply)(row => Array[Any](row.orderId, row.customerId, row.orderDate, row.totalAmount, row.status)) + val `_rowParser`: RowParser[OrdersRow] = RowParsers.of(OrdersId.db2Type, CustomersId.db2Type, Db2Types.date, ScalaDbTypes.Db2Types.decimal.nullable, Db2Types.varchar.nullable)(OrdersRow.apply)(row => Array[Any](row.orderId, row.customerId, row.orderDate, row.totalAmount, row.status)) } \ No newline at end of file diff --git a/testers/duckdb/java/generated-and-checked-in/testdb/Mood.java b/testers/duckdb/java/generated-and-checked-in/testdb/Mood.java index 4c8e047ce5..655f7e5e18 100644 --- a/testers/duckdb/java/generated-and-checked-in/testdb/Mood.java +++ b/testers/duckdb/java/generated-and-checked-in/testdb/Mood.java @@ -31,7 +31,7 @@ public java.lang.String value() { java.util.Arrays.stream(Mood.values()) .collect(java.util.stream.Collectors.toMap(n -> n.value, n -> n)); - public static DuckDbType dbTypeArray = + public static DuckDbType duckDbTypeArray = DuckDbTypes.varcharArray .bimap( xs -> arrayMap.map(xs, Mood::force, Mood.class), diff --git a/testers/duckdb/java/generated-and-checked-in/testdb/Priority.java b/testers/duckdb/java/generated-and-checked-in/testdb/Priority.java index d576dedbe1..0bec44b308 100644 --- a/testers/duckdb/java/generated-and-checked-in/testdb/Priority.java +++ b/testers/duckdb/java/generated-and-checked-in/testdb/Priority.java @@ -32,7 +32,7 @@ public java.lang.String value() { java.util.Arrays.stream(Priority.values()) .collect(java.util.stream.Collectors.toMap(n -> n.value, n -> n)); - public static DuckDbType dbTypeArray = + public static DuckDbType duckDbTypeArray = DuckDbTypes.varcharArray .bimap( xs -> arrayMap.map(xs, Priority::force, Priority.class), diff --git a/testers/duckdb/java/generated-and-checked-in/testdb/TestInsert.java b/testers/duckdb/java/generated-and-checked-in/testdb/TestInsert.java index 77316825b7..3d2cdf3c5b 100644 --- a/testers/duckdb/java/generated-and-checked-in/testdb/TestInsert.java +++ b/testers/duckdb/java/generated-and-checked-in/testdb/TestInsert.java @@ -58,6 +58,7 @@ import testdb.products.ProductsId; import testdb.products.ProductsRepoImpl; import testdb.products.ProductsRow; +import testdb.userdefined.Email; /** Methods to generate random data for `Ident(TestInsert)` */ public record TestInsert(Random random) { @@ -144,7 +145,7 @@ public Inserter Customers() { RandomHelper.alphanumeric(random, 20), (random.nextBoolean() ? Optional.empty() - : Optional.of(RandomHelper.alphanumeric(random, 20))), + : Optional.of(new Email(RandomHelper.alphanumeric(random, 20)))), new UseDefault(), new UseDefault()), (CustomersRowUnsaved row, Connection c) -> (new CustomersRepoImpl()).insert(row, c)); diff --git a/testers/duckdb/java/generated-and-checked-in/testdb/all_scalar_types/AllScalarTypesId.java b/testers/duckdb/java/generated-and-checked-in/testdb/all_scalar_types/AllScalarTypesId.java index 64b581fb71..9fcaa8e11b 100644 --- a/testers/duckdb/java/generated-and-checked-in/testdb/all_scalar_types/AllScalarTypesId.java +++ b/testers/duckdb/java/generated-and-checked-in/testdb/all_scalar_types/AllScalarTypesId.java @@ -27,11 +27,11 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(AllScalarTypesId::value, AllScalarTypesId::new); - public static DuckDbType dbTypeArray = + public static DuckDbType duckDbType = + DuckDbTypes.integer.bimap(AllScalarTypesId::new, AllScalarTypesId::value); + + public static DuckDbType duckDbTypeArray = DuckDbTypes.integerArray.bimap( xs -> arrayMap.map(xs, AllScalarTypesId::new, AllScalarTypesId.class), xs -> arrayMap.map(xs, AllScalarTypesId::value, Integer.class)); - - public static DuckDbType duckDbType = - DuckDbTypes.integer.bimap(AllScalarTypesId::new, AllScalarTypesId::value); } diff --git a/testers/duckdb/java/generated-and-checked-in/testdb/all_scalar_types/AllScalarTypesRepoImpl.java b/testers/duckdb/java/generated-and-checked-in/testdb/all_scalar_types/AllScalarTypesRepoImpl.java index e4319b6175..f92324f29e 100644 --- a/testers/duckdb/java/generated-and-checked-in/testdb/all_scalar_types/AllScalarTypesRepoImpl.java +++ b/testers/duckdb/java/generated-and-checked-in/testdb/all_scalar_types/AllScalarTypesRepoImpl.java @@ -42,7 +42,7 @@ public Boolean deleteById(AllScalarTypesId id, Connection c) { public Integer deleteByIds(AllScalarTypesId[] ids, Connection c) { return interpolate( Fragment.lit("delete\nfrom \"all_scalar_types\"\nwhere \"id\" = ANY("), - Fragment.encode(AllScalarTypesId.dbTypeArray, ids), + Fragment.encode(AllScalarTypesId.duckDbTypeArray, ids), Fragment.lit(")")) .update() .runUnchecked(c); @@ -178,7 +178,7 @@ public List selectByIds(AllScalarTypesId[] ids, Connection c) + " \"col_uuid\", \"col_json\", \"col_mood\", \"col_not_null\"\n" + "from \"all_scalar_types\"\n" + "where \"id\" = ANY("), - Fragment.encode(AllScalarTypesId.dbTypeArray, ids), + Fragment.encode(AllScalarTypesId.duckDbTypeArray, ids), Fragment.lit(")")) .query(AllScalarTypesRow._rowParser.all()) .runUnchecked(c); diff --git a/testers/duckdb/java/generated-and-checked-in/testdb/customer_search/CustomerSearchSqlRow.java b/testers/duckdb/java/generated-and-checked-in/testdb/customer_search/CustomerSearchSqlRow.java index f513c20c8d..1bea8a6439 100644 --- a/testers/duckdb/java/generated-and-checked-in/testdb/customer_search/CustomerSearchSqlRow.java +++ b/testers/duckdb/java/generated-and-checked-in/testdb/customer_search/CustomerSearchSqlRow.java @@ -14,6 +14,7 @@ import java.util.Optional; import testdb.Priority; import testdb.customers.CustomersId; +import testdb.userdefined.Email; /** SQL file: customer_search.sql */ public record CustomerSearchSqlRow( @@ -22,12 +23,13 @@ public record CustomerSearchSqlRow( /** Points to {@link testdb.customers.CustomersRow#name()} */ String name, /** Points to {@link testdb.customers.CustomersRow#email()} */ - Optional email, + Optional email, /** Points to {@link testdb.customers.CustomersRow#createdAt()} */ @JsonProperty("created_at") LocalDateTime createdAt, /** Points to {@link testdb.customers.CustomersRow#priority()} */ Optional priority) - implements Tuple5, LocalDateTime, Optional> { + implements Tuple5< + CustomersId, String, Optional, LocalDateTime, Optional> { /** Points to {@link testdb.customers.CustomersRow#customerId()} */ public CustomerSearchSqlRow withCustomerId(CustomersId customerId) { return new CustomerSearchSqlRow(customerId, name, email, createdAt, priority); @@ -41,7 +43,7 @@ public CustomerSearchSqlRow withName(String name) { ; /** Points to {@link testdb.customers.CustomersRow#email()} */ - public CustomerSearchSqlRow withEmail(Optional email) { + public CustomerSearchSqlRow withEmail(Optional email) { return new CustomerSearchSqlRow(customerId, name, email, createdAt, priority); } ; @@ -62,7 +64,7 @@ public CustomerSearchSqlRow withPriority(Optional priority) { RowParsers.of( CustomersId.duckDbType, DuckDbTypes.varchar, - DuckDbTypes.varchar.opt(), + Email.duckDbType.opt(), DuckDbTypes.timestamp, Priority.duckDbType.opt(), CustomerSearchSqlRow::new, @@ -85,7 +87,7 @@ public String _2() { ; @Override - public Optional _3() { + public Optional _3() { return email; } ; diff --git a/testers/duckdb/java/generated-and-checked-in/testdb/customers/CustomersFields.java b/testers/duckdb/java/generated-and-checked-in/testdb/customers/CustomersFields.java index 5fbe9a6814..2cd0f360c2 100644 --- a/testers/duckdb/java/generated-and-checked-in/testdb/customers/CustomersFields.java +++ b/testers/duckdb/java/generated-and-checked-in/testdb/customers/CustomersFields.java @@ -20,9 +20,10 @@ import java.util.List; import java.util.Optional; import testdb.Priority; +import testdb.userdefined.Email; public class CustomersFields - extends TupleExpr5 + extends TupleExpr5 implements RelationStructure, FieldsBase { List _path; @@ -54,15 +55,15 @@ public Field name() { DuckDbTypes.varchar); } - public OptField email() { - return new OptField( + public OptField email() { + return new OptField( _path, "email", CustomersRow::email, Optional.empty(), Optional.empty(), (row, value) -> row.withEmail(value), - DuckDbTypes.varchar); + Email.duckDbType); } public Field createdAt() { @@ -119,7 +120,7 @@ public SqlExpr _2() { } @Override - public SqlExpr _3() { + public SqlExpr _3() { return email(); } diff --git a/testers/duckdb/java/generated-and-checked-in/testdb/customers/CustomersId.java b/testers/duckdb/java/generated-and-checked-in/testdb/customers/CustomersId.java index 4aebc1d272..b10a925378 100644 --- a/testers/duckdb/java/generated-and-checked-in/testdb/customers/CustomersId.java +++ b/testers/duckdb/java/generated-and-checked-in/testdb/customers/CustomersId.java @@ -27,11 +27,11 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(CustomersId::value, CustomersId::new); - public static DuckDbType dbTypeArray = + public static DuckDbType duckDbType = + DuckDbTypes.integer.bimap(CustomersId::new, CustomersId::value); + + public static DuckDbType duckDbTypeArray = DuckDbTypes.integerArray.bimap( xs -> arrayMap.map(xs, CustomersId::new, CustomersId.class), xs -> arrayMap.map(xs, CustomersId::value, Integer.class)); - - public static DuckDbType duckDbType = - DuckDbTypes.integer.bimap(CustomersId::new, CustomersId::value); } diff --git a/testers/duckdb/java/generated-and-checked-in/testdb/customers/CustomersRepoImpl.java b/testers/duckdb/java/generated-and-checked-in/testdb/customers/CustomersRepoImpl.java index 586dc75b8b..a9e376e973 100644 --- a/testers/duckdb/java/generated-and-checked-in/testdb/customers/CustomersRepoImpl.java +++ b/testers/duckdb/java/generated-and-checked-in/testdb/customers/CustomersRepoImpl.java @@ -21,6 +21,7 @@ import java.util.Map; import java.util.Optional; import testdb.Priority; +import testdb.userdefined.Email; public class CustomersRepoImpl implements CustomersRepo { @Override @@ -43,7 +44,7 @@ public Boolean deleteById(CustomersId customerId, Connection c) { public Integer deleteByIds(CustomersId[] customerIds, Connection c) { return interpolate( Fragment.lit("delete\nfrom \"customers\"\nwhere \"customer_id\" = ANY("), - Fragment.encode(CustomersId.dbTypeArray, customerIds), + Fragment.encode(CustomersId.duckDbTypeArray, customerIds), Fragment.lit(")")) .update() .runUnchecked(c); @@ -60,7 +61,7 @@ public CustomersRow insert(CustomersRow unsaved, Connection c) { Fragment.lit(", "), Fragment.encode(DuckDbTypes.varchar, unsaved.name()), Fragment.lit(", "), - Fragment.encode(DuckDbTypes.varchar.opt(), unsaved.email()), + Fragment.encode(Email.duckDbType.opt(), unsaved.email()), Fragment.lit(", "), Fragment.encode(DuckDbTypes.timestamp, unsaved.createdAt()), Fragment.lit(", "), @@ -87,7 +88,7 @@ public CustomersRow insert(CustomersRowUnsaved unsaved, Connection c) { values.add(interpolate(Fragment.encode(DuckDbTypes.varchar, unsaved.name()), Fragment.lit(""))); columns.add(Fragment.lit("\"email\"")); values.add( - interpolate(Fragment.encode(DuckDbTypes.varchar.opt(), unsaved.email()), Fragment.lit(""))); + interpolate(Fragment.encode(Email.duckDbType.opt(), unsaved.email()), Fragment.lit(""))); unsaved .createdAt() .visit( @@ -158,7 +159,7 @@ public List selectByIds(CustomersId[] customerIds, Connection c) { "select \"customer_id\", \"name\", \"email\", \"created_at\", \"priority\"\n" + "from \"customers\"\n" + "where \"customer_id\" = ANY("), - Fragment.encode(CustomersId.dbTypeArray, customerIds), + Fragment.encode(CustomersId.duckDbTypeArray, customerIds), Fragment.lit(")")) .query(CustomersRow._rowParser.all()) .runUnchecked(c); @@ -186,7 +187,7 @@ public Boolean update(CustomersRow row, Connection c) { Fragment.lit("update \"customers\"\nset \"name\" = "), Fragment.encode(DuckDbTypes.varchar, row.name()), Fragment.lit(",\n\"email\" = "), - Fragment.encode(DuckDbTypes.varchar.opt(), row.email()), + Fragment.encode(Email.duckDbType.opt(), row.email()), Fragment.lit(",\n\"created_at\" = "), Fragment.encode(DuckDbTypes.timestamp, row.createdAt()), Fragment.lit(",\n\"priority\" = "), @@ -210,7 +211,7 @@ public CustomersRow upsert(CustomersRow unsaved, Connection c) { Fragment.lit(", "), Fragment.encode(DuckDbTypes.varchar, unsaved.name()), Fragment.lit(", "), - Fragment.encode(DuckDbTypes.varchar.opt(), unsaved.email()), + Fragment.encode(Email.duckDbType.opt(), unsaved.email()), Fragment.lit(", "), Fragment.encode(DuckDbTypes.timestamp, unsaved.createdAt()), Fragment.lit(", "), diff --git a/testers/duckdb/java/generated-and-checked-in/testdb/customers/CustomersRow.java b/testers/duckdb/java/generated-and-checked-in/testdb/customers/CustomersRow.java index e381800db9..f70212c2d0 100644 --- a/testers/duckdb/java/generated-and-checked-in/testdb/customers/CustomersRow.java +++ b/testers/duckdb/java/generated-and-checked-in/testdb/customers/CustomersRow.java @@ -14,17 +14,19 @@ import java.util.Optional; import testdb.Priority; import testdb.customtypes.Defaulted; +import testdb.userdefined.Email; /** Table: customers Primary key: customer_id */ public record CustomersRow( @JsonProperty("customer_id") CustomersId customerId, String name, - Optional email, + Optional email, /** Default: current_timestamp */ @JsonProperty("created_at") LocalDateTime createdAt, /** Default: 'medium' */ Optional priority) - implements Tuple5, LocalDateTime, Optional> { + implements Tuple5< + CustomersId, String, Optional, LocalDateTime, Optional> { public CustomersRow withCustomerId(CustomersId customerId) { return new CustomersRow(customerId, name, email, createdAt, priority); } @@ -35,7 +37,7 @@ public CustomersRow withName(String name) { } ; - public CustomersRow withEmail(Optional email) { + public CustomersRow withEmail(Optional email) { return new CustomersRow(customerId, name, email, createdAt, priority); } ; @@ -56,7 +58,7 @@ public CustomersRow withPriority(Optional priority) { RowParsers.of( CustomersId.duckDbType, DuckDbTypes.varchar, - DuckDbTypes.varchar.opt(), + Email.duckDbType.opt(), DuckDbTypes.timestamp, Priority.duckDbType.opt(), CustomersRow::new, @@ -79,7 +81,7 @@ public String _2() { ; @Override - public Optional _3() { + public Optional _3() { return email; } ; diff --git a/testers/duckdb/java/generated-and-checked-in/testdb/customers/CustomersRowUnsaved.java b/testers/duckdb/java/generated-and-checked-in/testdb/customers/CustomersRowUnsaved.java index 14e510051d..6af63a9302 100644 --- a/testers/duckdb/java/generated-and-checked-in/testdb/customers/CustomersRowUnsaved.java +++ b/testers/duckdb/java/generated-and-checked-in/testdb/customers/CustomersRowUnsaved.java @@ -11,12 +11,13 @@ import testdb.Priority; import testdb.customtypes.Defaulted; import testdb.customtypes.Defaulted.UseDefault; +import testdb.userdefined.Email; /** This class corresponds to a row in table `customers` which has not been persisted yet */ public record CustomersRowUnsaved( @JsonProperty("customer_id") CustomersId customerId, String name, - Optional email, + Optional email, /** Default: current_timestamp */ @JsonProperty("created_at") Defaulted createdAt, /** Default: 'medium' */ @@ -36,7 +37,7 @@ public CustomersRowUnsaved withName(String name) { } ; - public CustomersRowUnsaved withEmail(Optional email) { + public CustomersRowUnsaved withEmail(Optional email) { return new CustomersRowUnsaved(customerId, name, email, createdAt, priority); } ; diff --git a/testers/duckdb/java/generated-and-checked-in/testdb/order_summary_by_customer/OrderSummaryByCustomerSqlRow.java b/testers/duckdb/java/generated-and-checked-in/testdb/order_summary_by_customer/OrderSummaryByCustomerSqlRow.java index 36e384d47b..341a4b7d40 100644 --- a/testers/duckdb/java/generated-and-checked-in/testdb/order_summary_by_customer/OrderSummaryByCustomerSqlRow.java +++ b/testers/duckdb/java/generated-and-checked-in/testdb/order_summary_by_customer/OrderSummaryByCustomerSqlRow.java @@ -15,6 +15,7 @@ import java.util.Optional; import testdb.Priority; import testdb.customers.CustomersId; +import testdb.userdefined.Email; /** SQL file: order_summary_by_customer.sql */ public record OrderSummaryByCustomerSqlRow( @@ -23,7 +24,7 @@ public record OrderSummaryByCustomerSqlRow( /** Points to {@link testdb.customers.CustomersRow#name()} */ @JsonProperty("customer_name") String customerName, /** Points to {@link testdb.customers.CustomersRow#email()} */ - Optional email, + Optional email, /** Points to {@link testdb.customers.CustomersRow#priority()} */ Optional priority, /** Points to {@link testdb.orders.OrdersRow#orderId()} */ @@ -39,7 +40,7 @@ public record OrderSummaryByCustomerSqlRow( implements Tuple9< CustomersId, String, - Optional, + Optional, Optional, Optional, Optional, @@ -77,7 +78,7 @@ public OrderSummaryByCustomerSqlRow withCustomerName(String customerName) { ; /** Points to {@link testdb.customers.CustomersRow#email()} */ - public OrderSummaryByCustomerSqlRow withEmail(Optional email) { + public OrderSummaryByCustomerSqlRow withEmail(Optional email) { return new OrderSummaryByCustomerSqlRow( customerId, customerName, @@ -185,7 +186,7 @@ public OrderSummaryByCustomerSqlRow withAvgOrderAmount(Optional avgOrder RowParsers.of( CustomersId.duckDbType, DuckDbTypes.varchar, - DuckDbTypes.varchar.opt(), + Email.duckDbType.opt(), Priority.duckDbType.opt(), DuckDbTypes.bigint.opt(), DuckDbTypes.numeric.opt(), @@ -220,7 +221,7 @@ public String _2() { ; @Override - public Optional _3() { + public Optional _3() { return email; } ; diff --git a/testers/duckdb/java/generated-and-checked-in/testdb/orders/OrdersId.java b/testers/duckdb/java/generated-and-checked-in/testdb/orders/OrdersId.java index bf699df160..3c2fd13711 100644 --- a/testers/duckdb/java/generated-and-checked-in/testdb/orders/OrdersId.java +++ b/testers/duckdb/java/generated-and-checked-in/testdb/orders/OrdersId.java @@ -27,11 +27,11 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(OrdersId::value, OrdersId::new); - public static DuckDbType dbTypeArray = + public static DuckDbType duckDbType = + DuckDbTypes.integer.bimap(OrdersId::new, OrdersId::value); + + public static DuckDbType duckDbTypeArray = DuckDbTypes.integerArray.bimap( xs -> arrayMap.map(xs, OrdersId::new, OrdersId.class), xs -> arrayMap.map(xs, OrdersId::value, Integer.class)); - - public static DuckDbType duckDbType = - DuckDbTypes.integer.bimap(OrdersId::new, OrdersId::value); } diff --git a/testers/duckdb/java/generated-and-checked-in/testdb/orders/OrdersRepoImpl.java b/testers/duckdb/java/generated-and-checked-in/testdb/orders/OrdersRepoImpl.java index e630715c44..033226d26f 100644 --- a/testers/duckdb/java/generated-and-checked-in/testdb/orders/OrdersRepoImpl.java +++ b/testers/duckdb/java/generated-and-checked-in/testdb/orders/OrdersRepoImpl.java @@ -42,7 +42,7 @@ public Boolean deleteById(OrdersId orderId, Connection c) { public Integer deleteByIds(OrdersId[] orderIds, Connection c) { return interpolate( Fragment.lit("delete\nfrom \"orders\"\nwhere \"order_id\" = ANY("), - Fragment.encode(OrdersId.dbTypeArray, orderIds), + Fragment.encode(OrdersId.duckDbTypeArray, orderIds), Fragment.lit(")")) .update() .runUnchecked(c); @@ -160,7 +160,7 @@ public List selectByIds(OrdersId[] orderIds, Connection c) { + " \"status\"\n" + "from \"orders\"\n" + "where \"order_id\" = ANY("), - Fragment.encode(OrdersId.dbTypeArray, orderIds), + Fragment.encode(OrdersId.duckDbTypeArray, orderIds), Fragment.lit(")")) .query(OrdersRow._rowParser.all()) .runUnchecked(c); diff --git a/testers/duckdb/java/generated-and-checked-in/testdb/precisetypes/Decimal10_2.java b/testers/duckdb/java/generated-and-checked-in/testdb/precisetypes/Decimal10_2.java index 9ddcb33ef1..7f9ffc72a7 100644 --- a/testers/duckdb/java/generated-and-checked-in/testdb/precisetypes/Decimal10_2.java +++ b/testers/duckdb/java/generated-and-checked-in/testdb/precisetypes/Decimal10_2.java @@ -36,14 +36,14 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(Decimal10_2::value, Decimal10_2::new); - public static DuckDbType dbTypeArray = + public static DuckDbType duckDbType = + DuckDbTypes.numeric.bimap(Decimal10_2::new, Decimal10_2::value); + + public static DuckDbType duckDbTypeArray = DuckDbTypes.decimalArray.bimap( xs -> arrayMap.map(xs, Decimal10_2::new, Decimal10_2.class), xs -> arrayMap.map(xs, Decimal10_2::value, BigDecimal.class)); - public static DuckDbType duckDbType = - DuckDbTypes.numeric.bimap(Decimal10_2::new, Decimal10_2::value); - public static Optional of(BigDecimal value) { BigDecimal scaled = value.setScale(2, RoundingMode.HALF_UP); return scaled.precision() <= 10 ? Optional.of(new Decimal10_2(scaled)) : Optional.empty(); diff --git a/testers/duckdb/java/generated-and-checked-in/testdb/precisetypes/Decimal18_4.java b/testers/duckdb/java/generated-and-checked-in/testdb/precisetypes/Decimal18_4.java index ea91ed32ff..855eef562e 100644 --- a/testers/duckdb/java/generated-and-checked-in/testdb/precisetypes/Decimal18_4.java +++ b/testers/duckdb/java/generated-and-checked-in/testdb/precisetypes/Decimal18_4.java @@ -36,14 +36,14 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(Decimal18_4::value, Decimal18_4::new); - public static DuckDbType dbTypeArray = + public static DuckDbType duckDbType = + DuckDbTypes.numeric.bimap(Decimal18_4::new, Decimal18_4::value); + + public static DuckDbType duckDbTypeArray = DuckDbTypes.decimalArray.bimap( xs -> arrayMap.map(xs, Decimal18_4::new, Decimal18_4.class), xs -> arrayMap.map(xs, Decimal18_4::value, BigDecimal.class)); - public static DuckDbType duckDbType = - DuckDbTypes.numeric.bimap(Decimal18_4::new, Decimal18_4::value); - public static Optional of(BigDecimal value) { BigDecimal scaled = value.setScale(4, RoundingMode.HALF_UP); return scaled.precision() <= 18 ? Optional.of(new Decimal18_4(scaled)) : Optional.empty(); diff --git a/testers/duckdb/java/generated-and-checked-in/testdb/precisetypes/Decimal5_2.java b/testers/duckdb/java/generated-and-checked-in/testdb/precisetypes/Decimal5_2.java index c9cdd16fea..cbc750f231 100644 --- a/testers/duckdb/java/generated-and-checked-in/testdb/precisetypes/Decimal5_2.java +++ b/testers/duckdb/java/generated-and-checked-in/testdb/precisetypes/Decimal5_2.java @@ -36,14 +36,14 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(Decimal5_2::value, Decimal5_2::new); - public static DuckDbType dbTypeArray = + public static DuckDbType duckDbType = + DuckDbTypes.numeric.bimap(Decimal5_2::new, Decimal5_2::value); + + public static DuckDbType duckDbTypeArray = DuckDbTypes.decimalArray.bimap( xs -> arrayMap.map(xs, Decimal5_2::new, Decimal5_2.class), xs -> arrayMap.map(xs, Decimal5_2::value, BigDecimal.class)); - public static DuckDbType duckDbType = - DuckDbTypes.numeric.bimap(Decimal5_2::new, Decimal5_2::value); - public static Optional of(BigDecimal value) { BigDecimal scaled = value.setScale(2, RoundingMode.HALF_UP); return scaled.precision() <= 5 ? Optional.of(new Decimal5_2(scaled)) : Optional.empty(); diff --git a/testers/duckdb/java/generated-and-checked-in/testdb/precision_types/PrecisionTypesId.java b/testers/duckdb/java/generated-and-checked-in/testdb/precision_types/PrecisionTypesId.java index 3ad1e2e16c..fd3a3039e5 100644 --- a/testers/duckdb/java/generated-and-checked-in/testdb/precision_types/PrecisionTypesId.java +++ b/testers/duckdb/java/generated-and-checked-in/testdb/precision_types/PrecisionTypesId.java @@ -27,11 +27,11 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(PrecisionTypesId::value, PrecisionTypesId::new); - public static DuckDbType dbTypeArray = + public static DuckDbType duckDbType = + DuckDbTypes.integer.bimap(PrecisionTypesId::new, PrecisionTypesId::value); + + public static DuckDbType duckDbTypeArray = DuckDbTypes.integerArray.bimap( xs -> arrayMap.map(xs, PrecisionTypesId::new, PrecisionTypesId.class), xs -> arrayMap.map(xs, PrecisionTypesId::value, Integer.class)); - - public static DuckDbType duckDbType = - DuckDbTypes.integer.bimap(PrecisionTypesId::new, PrecisionTypesId::value); } diff --git a/testers/duckdb/java/generated-and-checked-in/testdb/precision_types/PrecisionTypesRepoImpl.java b/testers/duckdb/java/generated-and-checked-in/testdb/precision_types/PrecisionTypesRepoImpl.java index 9c3a5d459d..532c29c1f3 100644 --- a/testers/duckdb/java/generated-and-checked-in/testdb/precision_types/PrecisionTypesRepoImpl.java +++ b/testers/duckdb/java/generated-and-checked-in/testdb/precision_types/PrecisionTypesRepoImpl.java @@ -47,7 +47,7 @@ public Boolean deleteById(PrecisionTypesId id, Connection c) { public Integer deleteByIds(PrecisionTypesId[] ids, Connection c) { return interpolate( Fragment.lit("delete\nfrom \"precision_types\"\nwhere \"id\" = ANY("), - Fragment.encode(PrecisionTypesId.dbTypeArray, ids), + Fragment.encode(PrecisionTypesId.duckDbTypeArray, ids), Fragment.lit(")")) .update() .runUnchecked(c); @@ -138,7 +138,7 @@ public List selectByIds(PrecisionTypesId[] ids, Connection c) + " \"decimal5_0\", \"decimal10_0\", \"decimal18_0\"\n" + "from \"precision_types\"\n" + "where \"id\" = ANY("), - Fragment.encode(PrecisionTypesId.dbTypeArray, ids), + Fragment.encode(PrecisionTypesId.duckDbTypeArray, ids), Fragment.lit(")")) .query(PrecisionTypesRow._rowParser.all()) .runUnchecked(c); diff --git a/testers/duckdb/java/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullId.java b/testers/duckdb/java/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullId.java index 608da5264d..adbd6ab6c1 100644 --- a/testers/duckdb/java/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullId.java +++ b/testers/duckdb/java/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullId.java @@ -27,11 +27,11 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(PrecisionTypesNullId::value, PrecisionTypesNullId::new); - public static DuckDbType dbTypeArray = + public static DuckDbType duckDbType = + DuckDbTypes.integer.bimap(PrecisionTypesNullId::new, PrecisionTypesNullId::value); + + public static DuckDbType duckDbTypeArray = DuckDbTypes.integerArray.bimap( xs -> arrayMap.map(xs, PrecisionTypesNullId::new, PrecisionTypesNullId.class), xs -> arrayMap.map(xs, PrecisionTypesNullId::value, Integer.class)); - - public static DuckDbType duckDbType = - DuckDbTypes.integer.bimap(PrecisionTypesNullId::new, PrecisionTypesNullId::value); } diff --git a/testers/duckdb/java/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullRepoImpl.java b/testers/duckdb/java/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullRepoImpl.java index 3d166a098c..fa702ae2ac 100644 --- a/testers/duckdb/java/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullRepoImpl.java +++ b/testers/duckdb/java/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullRepoImpl.java @@ -48,7 +48,7 @@ public Boolean deleteById(PrecisionTypesNullId id, Connection c) { public Integer deleteByIds(PrecisionTypesNullId[] ids, Connection c) { return interpolate( Fragment.lit("delete\nfrom \"precision_types_null\"\nwhere \"id\" = ANY("), - Fragment.encode(PrecisionTypesNullId.dbTypeArray, ids), + Fragment.encode(PrecisionTypesNullId.duckDbTypeArray, ids), Fragment.lit(")")) .update() .runUnchecked(c); @@ -140,7 +140,7 @@ public List selectByIds(PrecisionTypesNullId[] ids, Conne + " \"decimal5_0\", \"decimal10_0\", \"decimal18_0\"\n" + "from \"precision_types_null\"\n" + "where \"id\" = ANY("), - Fragment.encode(PrecisionTypesNullId.dbTypeArray, ids), + Fragment.encode(PrecisionTypesNullId.duckDbTypeArray, ids), Fragment.lit(")")) .query(PrecisionTypesNullRow._rowParser.all()) .runUnchecked(c); diff --git a/testers/duckdb/java/generated-and-checked-in/testdb/product_summary/ProductSummarySqlRow.java b/testers/duckdb/java/generated-and-checked-in/testdb/product_summary/ProductSummarySqlRow.java index ef18e84e1d..214f83b1ec 100644 --- a/testers/duckdb/java/generated-and-checked-in/testdb/product_summary/ProductSummarySqlRow.java +++ b/testers/duckdb/java/generated-and-checked-in/testdb/product_summary/ProductSummarySqlRow.java @@ -27,7 +27,7 @@ public record ProductSummarySqlRow( @JsonProperty("order_count") Long orderCount, /** Points to {@link testdb.order_items.OrderItemsRow#quantity()} */ @JsonProperty("total_quantity") Optional totalQuantity, - /** Points to {@link testdb.order_items.OrderItemsRow#quantity()} */ + /** Points to {@link testdb.order_items.OrderItemsRow#unitPrice()} */ @JsonProperty("total_revenue") Optional totalRevenue) implements Tuple7< ProductsId, String, String, BigDecimal, Long, Optional, Optional> { @@ -72,7 +72,7 @@ public ProductSummarySqlRow withTotalQuantity(Optional totalQuantity) { } ; - /** Points to {@link testdb.order_items.OrderItemsRow#quantity()} */ + /** Points to {@link testdb.order_items.OrderItemsRow#unitPrice()} */ public ProductSummarySqlRow withTotalRevenue(Optional totalRevenue) { return new ProductSummarySqlRow( productId, productName, sku, price, orderCount, totalQuantity, totalRevenue); diff --git a/testers/duckdb/java/generated-and-checked-in/testdb/products/ProductsId.java b/testers/duckdb/java/generated-and-checked-in/testdb/products/ProductsId.java index 87c6581d58..080716c5de 100644 --- a/testers/duckdb/java/generated-and-checked-in/testdb/products/ProductsId.java +++ b/testers/duckdb/java/generated-and-checked-in/testdb/products/ProductsId.java @@ -27,11 +27,11 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(ProductsId::value, ProductsId::new); - public static DuckDbType dbTypeArray = + public static DuckDbType duckDbType = + DuckDbTypes.integer.bimap(ProductsId::new, ProductsId::value); + + public static DuckDbType duckDbTypeArray = DuckDbTypes.integerArray.bimap( xs -> arrayMap.map(xs, ProductsId::new, ProductsId.class), xs -> arrayMap.map(xs, ProductsId::value, Integer.class)); - - public static DuckDbType duckDbType = - DuckDbTypes.integer.bimap(ProductsId::new, ProductsId::value); } diff --git a/testers/duckdb/java/generated-and-checked-in/testdb/products/ProductsRepoImpl.java b/testers/duckdb/java/generated-and-checked-in/testdb/products/ProductsRepoImpl.java index 9090abe178..f3a5650cde 100644 --- a/testers/duckdb/java/generated-and-checked-in/testdb/products/ProductsRepoImpl.java +++ b/testers/duckdb/java/generated-and-checked-in/testdb/products/ProductsRepoImpl.java @@ -41,7 +41,7 @@ public Boolean deleteById(ProductsId productId, Connection c) { public Integer deleteByIds(ProductsId[] productIds, Connection c) { return interpolate( Fragment.lit("delete\nfrom \"products\"\nwhere \"product_id\" = ANY("), - Fragment.encode(ProductsId.dbTypeArray, productIds), + Fragment.encode(ProductsId.duckDbTypeArray, productIds), Fragment.lit(")")) .update() .runUnchecked(c); @@ -105,7 +105,7 @@ public List selectByIds(ProductsId[] productIds, Connection c) { "select \"product_id\", \"sku\", \"name\", \"price\", \"metadata\"\n" + "from \"products\"\n" + "where \"product_id\" = ANY("), - Fragment.encode(ProductsId.dbTypeArray, productIds), + Fragment.encode(ProductsId.duckDbTypeArray, productIds), Fragment.lit(")")) .query(ProductsRow._rowParser.all()) .runUnchecked(c); diff --git a/testers/duckdb/java/generated-and-checked-in/testdb/update_customer_priority/UpdateCustomerPrioritySqlRow.java b/testers/duckdb/java/generated-and-checked-in/testdb/update_customer_priority/UpdateCustomerPrioritySqlRow.java index a96712adbc..a72739db13 100644 --- a/testers/duckdb/java/generated-and-checked-in/testdb/update_customer_priority/UpdateCustomerPrioritySqlRow.java +++ b/testers/duckdb/java/generated-and-checked-in/testdb/update_customer_priority/UpdateCustomerPrioritySqlRow.java @@ -14,6 +14,7 @@ import java.util.Optional; import testdb.Priority; import testdb.customers.CustomersId; +import testdb.userdefined.Email; /** SQL file: update_customer_priority.sql */ public record UpdateCustomerPrioritySqlRow( @@ -22,12 +23,13 @@ public record UpdateCustomerPrioritySqlRow( /** Points to {@link testdb.customers.CustomersRow#name()} */ String name, /** Points to {@link testdb.customers.CustomersRow#email()} */ - Optional email, + Optional email, /** Points to {@link testdb.customers.CustomersRow#createdAt()} */ @JsonProperty("created_at") LocalDateTime createdAt, /** Points to {@link testdb.customers.CustomersRow#priority()} */ Optional priority) - implements Tuple5, LocalDateTime, Optional> { + implements Tuple5< + CustomersId, String, Optional, LocalDateTime, Optional> { /** Points to {@link testdb.customers.CustomersRow#customerId()} */ public UpdateCustomerPrioritySqlRow withCustomerId(CustomersId customerId) { return new UpdateCustomerPrioritySqlRow(customerId, name, email, createdAt, priority); @@ -41,7 +43,7 @@ public UpdateCustomerPrioritySqlRow withName(String name) { ; /** Points to {@link testdb.customers.CustomersRow#email()} */ - public UpdateCustomerPrioritySqlRow withEmail(Optional email) { + public UpdateCustomerPrioritySqlRow withEmail(Optional email) { return new UpdateCustomerPrioritySqlRow(customerId, name, email, createdAt, priority); } ; @@ -62,7 +64,7 @@ public UpdateCustomerPrioritySqlRow withPriority(Optional priority) { RowParsers.of( CustomersId.duckDbType, DuckDbTypes.varchar, - DuckDbTypes.varchar.opt(), + Email.duckDbType.opt(), DuckDbTypes.timestamp, Priority.duckDbType.opt(), UpdateCustomerPrioritySqlRow::new, @@ -85,7 +87,7 @@ public String _2() { ; @Override - public Optional _3() { + public Optional _3() { return email; } ; diff --git a/testers/duckdb/java/generated-and-checked-in/testdb/userdefined/Email.java b/testers/duckdb/java/generated-and-checked-in/testdb/userdefined/Email.java new file mode 100644 index 0000000000..90d5e93fe4 --- /dev/null +++ b/testers/duckdb/java/generated-and-checked-in/testdb/userdefined/Email.java @@ -0,0 +1,35 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package testdb.userdefined; + +import com.fasterxml.jackson.annotation.JsonValue; +import dev.typr.foundations.DuckDbType; +import dev.typr.foundations.DuckDbTypes; +import dev.typr.foundations.dsl.Bijection; +import dev.typr.foundations.internal.arrayMap; + +/** Shared type `Email` Generated from TypeDefinitions matching */ +public record Email(@JsonValue String value) { + public Email withValue(String value) { + return new Email(value); + } + ; + + @Override + public java.lang.String toString() { + return value.toString(); + } + ; + + public static Bijection bijection = Bijection.of(Email::value, Email::new); + + public static DuckDbType duckDbType = DuckDbTypes.varchar.bimap(Email::new, Email::value); + + public static DuckDbType duckDbTypeArray = + DuckDbTypes.varcharArray.bimap( + xs -> arrayMap.map(xs, Email::new, Email.class), + xs -> arrayMap.map(xs, Email::value, String.class)); +} diff --git a/testers/duckdb/java/src/java/testdb/DSLTest.java b/testers/duckdb/java/src/java/testdb/DSLTest.java index 484684687e..57034c7484 100644 --- a/testers/duckdb/java/src/java/testdb/DSLTest.java +++ b/testers/duckdb/java/src/java/testdb/DSLTest.java @@ -7,6 +7,7 @@ import java.util.Optional; import org.junit.Test; import testdb.customers.*; +import testdb.userdefined.Email; /** Tests for DSL query building in DuckDB. */ public class DSLTest { @@ -21,7 +22,7 @@ public void testSelectWithWhere() { new CustomersRow( new CustomersId(5001), "DSL Test User", - Optional.of("dsl@test.com"), + Optional.of(new Email("dsl@test.com")), LocalDateTime.now(), Optional.of(Priority.high)), c); @@ -364,7 +365,7 @@ public void testSelectWithProjection() { new CustomersRow( new CustomersId(5700), "ProjectionTest", - Optional.of("projection@test.com"), + Optional.of(new Email("projection@test.com")), LocalDateTime.now(), Optional.empty()), c); @@ -378,7 +379,7 @@ public void testSelectWithProjection() { assertEquals(1, results.size()); assertEquals("ProjectionTest", results.get(0)._1()); - assertEquals("projection@test.com", results.get(0)._2()); + assertEquals(new Email("projection@test.com"), results.get(0)._2()); }); } } diff --git a/testers/duckdb/java/src/java/testdb/ForeignKeyTest.java b/testers/duckdb/java/src/java/testdb/ForeignKeyTest.java index 7bbd8496f5..c9df88fcca 100644 --- a/testers/duckdb/java/src/java/testdb/ForeignKeyTest.java +++ b/testers/duckdb/java/src/java/testdb/ForeignKeyTest.java @@ -11,6 +11,7 @@ import testdb.order_items.*; import testdb.orders.*; import testdb.products.*; +import testdb.userdefined.Email; /** * Tests for foreign key relationships in DuckDB. Tests the ordering system: customers -> orders -> @@ -30,7 +31,7 @@ public void testCustomerInsert() { new CustomersRow( new CustomersId(100), "John Doe", - Optional.of("john@example.com"), + Optional.of(new Email("john@example.com")), LocalDateTime.now(), Optional.of(Priority.high)); @@ -38,7 +39,7 @@ public void testCustomerInsert() { assertNotNull(inserted); assertEquals("John Doe", inserted.name()); - assertEquals(Optional.of("john@example.com"), inserted.email()); + assertEquals(Optional.of(new Email("john@example.com")), inserted.email()); assertEquals(Optional.of(Priority.high), inserted.priority()); }); } @@ -73,7 +74,7 @@ public void testOrderWithCustomerFK() { new CustomersRow( new CustomersId(101), "Jane Smith", - Optional.of("jane@example.com"), + Optional.of(new Email("jane@example.com")), LocalDateTime.now(), Optional.empty()); var insertedCustomer = customersRepo.insert(customer, c); diff --git a/testers/duckdb/java/src/java/testdb/MockRepoTest.java b/testers/duckdb/java/src/java/testdb/MockRepoTest.java index 35ce42c830..c57e9116b9 100644 --- a/testers/duckdb/java/src/java/testdb/MockRepoTest.java +++ b/testers/duckdb/java/src/java/testdb/MockRepoTest.java @@ -10,6 +10,7 @@ import org.junit.Test; import testdb.customers.*; import testdb.departments.*; +import testdb.userdefined.Email; /** Tests for mock repository implementations in DuckDB. */ public class MockRepoTest { @@ -27,7 +28,7 @@ public void testMockInsertAndSelect() { new CustomersRow( new CustomersId(1), "Mock User", - Optional.of("mock@test.com"), + Optional.of(new Email("mock@test.com")), LocalDateTime.now(), Optional.of(Priority.medium)); diff --git a/testers/duckdb/java/src/java/testdb/SqlScriptTest.java b/testers/duckdb/java/src/java/testdb/SqlScriptTest.java index 6a2e983330..2c82efb2f3 100644 --- a/testers/duckdb/java/src/java/testdb/SqlScriptTest.java +++ b/testers/duckdb/java/src/java/testdb/SqlScriptTest.java @@ -18,6 +18,7 @@ import testdb.orders.*; import testdb.product_summary.*; import testdb.products.*; +import testdb.userdefined.Email; /** * Tests for SQL script generated repositories. These tests exercise the typed query classes @@ -62,7 +63,7 @@ public void testCustomerSearchWithEmailPattern() { var customer = testInsert .Customers() - .with(r -> r.withEmail(Optional.of("unique-search@example.com"))) + .with(r -> r.withEmail(Optional.of(new Email("unique-search@example.com")))) .insert(c); var results = diff --git a/testers/duckdb/kotlin/generated-and-checked-in/testdb/Mood.kt b/testers/duckdb/kotlin/generated-and-checked-in/testdb/Mood.kt index 4f142a8e30..40cc58bedd 100644 --- a/testers/duckdb/kotlin/generated-and-checked-in/testdb/Mood.kt +++ b/testers/duckdb/kotlin/generated-and-checked-in/testdb/Mood.kt @@ -17,7 +17,7 @@ enum class Mood(val value: kotlin.String) { companion object { val Names: kotlin.String = entries.joinToString(", ") { it.value } val ByName: kotlin.collections.Map = entries.associateBy { it.value } - val dbTypeArray: DuckDbType> = + val duckDbTypeArray: DuckDbType> = DuckDbTypes.varcharArray .bimap({ xs -> arrayMap.map(xs, Mood::force, Mood::class.java) }, { xs -> arrayMap.map(xs, Mood::value, String::class.java) }) .renamedDropPrecision("mood") diff --git a/testers/duckdb/kotlin/generated-and-checked-in/testdb/Priority.kt b/testers/duckdb/kotlin/generated-and-checked-in/testdb/Priority.kt index eb66a8a6df..bcebb0584d 100644 --- a/testers/duckdb/kotlin/generated-and-checked-in/testdb/Priority.kt +++ b/testers/duckdb/kotlin/generated-and-checked-in/testdb/Priority.kt @@ -18,7 +18,7 @@ enum class Priority(val value: kotlin.String) { companion object { val Names: kotlin.String = entries.joinToString(", ") { it.value } val ByName: kotlin.collections.Map = entries.associateBy { it.value } - val dbTypeArray: DuckDbType> = + val duckDbTypeArray: DuckDbType> = DuckDbTypes.varcharArray .bimap({ xs -> arrayMap.map(xs, Priority::force, Priority::class.java) }, { xs -> arrayMap.map(xs, Priority::value, String::class.java) }) .renamedDropPrecision("priority") diff --git a/testers/duckdb/kotlin/generated-and-checked-in/testdb/TestInsert.kt b/testers/duckdb/kotlin/generated-and-checked-in/testdb/TestInsert.kt index 5ad2a1934c..7759684be5 100644 --- a/testers/duckdb/kotlin/generated-and-checked-in/testdb/TestInsert.kt +++ b/testers/duckdb/kotlin/generated-and-checked-in/testdb/TestInsert.kt @@ -59,6 +59,7 @@ import testdb.precision_types_null.PrecisionTypesNullRow import testdb.products.ProductsId import testdb.products.ProductsRepoImpl import testdb.products.ProductsRow +import testdb.userdefined.Email /** Methods to generate random data for `Ident(TestInsert)` */ data class TestInsert(val random: Random) { @@ -95,7 +96,7 @@ data class TestInsert(val random: Random) { fun Customers( name: String, customerId: CustomersId = CustomersId(random.nextInt()), - email: String? = null, + email: /* user-picked */ Email? = null, createdAt: Defaulted = UseDefault(), priority: Defaulted = UseDefault(), c: Connection diff --git a/testers/duckdb/kotlin/generated-and-checked-in/testdb/all_scalar_types/AllScalarTypesId.kt b/testers/duckdb/kotlin/generated-and-checked-in/testdb/all_scalar_types/AllScalarTypesId.kt index 4d6143344c..1e3d689947 100644 --- a/testers/duckdb/kotlin/generated-and-checked-in/testdb/all_scalar_types/AllScalarTypesId.kt +++ b/testers/duckdb/kotlin/generated-and-checked-in/testdb/all_scalar_types/AllScalarTypesId.kt @@ -22,10 +22,10 @@ data class AllScalarTypesId(@field:JsonValue val value: Int) { val bijection: Bijection = Bijection.of(AllScalarTypesId::value, ::AllScalarTypesId) - val dbTypeArray: DuckDbType> = - DuckDbTypes.integerArray.bimap({ xs -> arrayMap.map(xs, ::AllScalarTypesId, AllScalarTypesId::class.java) }, { xs -> arrayMap.map(xs, AllScalarTypesId::value, Int::class.javaObjectType) }) - val duckDbType: DuckDbType = KotlinDbTypes.DuckDbTypes.integer.bimap(::AllScalarTypesId, AllScalarTypesId::value) + + val duckDbTypeArray: DuckDbType> = + DuckDbTypes.integerArray.bimap({ xs -> arrayMap.map(xs, ::AllScalarTypesId, AllScalarTypesId::class.java) }, { xs -> arrayMap.map(xs, AllScalarTypesId::value, Int::class.javaObjectType) }) } } \ No newline at end of file diff --git a/testers/duckdb/kotlin/generated-and-checked-in/testdb/all_scalar_types/AllScalarTypesRepoImpl.kt b/testers/duckdb/kotlin/generated-and-checked-in/testdb/all_scalar_types/AllScalarTypesRepoImpl.kt index f803b7d87d..52d628e9a5 100644 --- a/testers/duckdb/kotlin/generated-and-checked-in/testdb/all_scalar_types/AllScalarTypesRepoImpl.kt +++ b/testers/duckdb/kotlin/generated-and-checked-in/testdb/all_scalar_types/AllScalarTypesRepoImpl.kt @@ -31,7 +31,7 @@ class AllScalarTypesRepoImpl() : AllScalarTypesRepo { override fun deleteByIds( ids: Array, c: Connection - ): Int = Fragment.interpolate(Fragment.lit("delete\nfrom \"all_scalar_types\"\nwhere \"id\" = ANY("), Fragment.encode(AllScalarTypesId.dbTypeArray, ids), Fragment.lit(")")) + ): Int = Fragment.interpolate(Fragment.lit("delete\nfrom \"all_scalar_types\"\nwhere \"id\" = ANY("), Fragment.encode(AllScalarTypesId.duckDbTypeArray, ids), Fragment.lit(")")) .update() .runUnchecked(c) @@ -53,7 +53,7 @@ class AllScalarTypesRepoImpl() : AllScalarTypesRepo { override fun selectByIds( ids: Array, c: Connection - ): List = Fragment.interpolate(Fragment.lit("select \"id\", \"col_tinyint\", \"col_smallint\", \"col_integer\", \"col_bigint\", \"col_hugeint\", \"col_utinyint\", \"col_usmallint\", \"col_uinteger\", \"col_ubigint\", \"col_float\", \"col_double\", \"col_decimal\", \"col_boolean\", \"col_varchar\", \"col_text\", \"col_blob\", \"col_date\", \"col_time\", \"col_timestamp\", \"col_timestamptz\", \"col_interval\", \"col_uuid\", \"col_json\", \"col_mood\", \"col_not_null\"\nfrom \"all_scalar_types\"\nwhere \"id\" = ANY("), Fragment.encode(AllScalarTypesId.dbTypeArray, ids), Fragment.lit(")")).query(AllScalarTypesRow._rowParser.all()).runUnchecked(c) + ): List = Fragment.interpolate(Fragment.lit("select \"id\", \"col_tinyint\", \"col_smallint\", \"col_integer\", \"col_bigint\", \"col_hugeint\", \"col_utinyint\", \"col_usmallint\", \"col_uinteger\", \"col_ubigint\", \"col_float\", \"col_double\", \"col_decimal\", \"col_boolean\", \"col_varchar\", \"col_text\", \"col_blob\", \"col_date\", \"col_time\", \"col_timestamp\", \"col_timestamptz\", \"col_interval\", \"col_uuid\", \"col_json\", \"col_mood\", \"col_not_null\"\nfrom \"all_scalar_types\"\nwhere \"id\" = ANY("), Fragment.encode(AllScalarTypesId.duckDbTypeArray, ids), Fragment.lit(")")).query(AllScalarTypesRow._rowParser.all()).runUnchecked(c) override fun selectByIdsTracked( ids: Array, diff --git a/testers/duckdb/kotlin/generated-and-checked-in/testdb/customer_search/CustomerSearchSqlRow.kt b/testers/duckdb/kotlin/generated-and-checked-in/testdb/customer_search/CustomerSearchSqlRow.kt index 6d5bb55864..8dab9df22e 100644 --- a/testers/duckdb/kotlin/generated-and-checked-in/testdb/customer_search/CustomerSearchSqlRow.kt +++ b/testers/duckdb/kotlin/generated-and-checked-in/testdb/customer_search/CustomerSearchSqlRow.kt @@ -14,6 +14,7 @@ import dev.typr.foundations.kotlin.nullable import java.time.LocalDateTime import testdb.Priority import testdb.customers.CustomersId +import testdb.userdefined.Email /** SQL file: customer_search.sql */ data class CustomerSearchSqlRow( @@ -22,23 +23,23 @@ data class CustomerSearchSqlRow( /** Points to [testdb.customers.CustomersRow.name] */ val name: String, /** Points to [testdb.customers.CustomersRow.email] */ - val email: String?, + val email: /* user-picked */ Email?, /** Points to [testdb.customers.CustomersRow.createdAt] */ @field:JsonProperty("created_at") val createdAt: LocalDateTime, /** Points to [testdb.customers.CustomersRow.priority] */ val priority: Priority? -) : Tuple5 { +) : Tuple5 { override fun _1(): CustomersId = customerId override fun _2(): String = name - override fun _3(): String? = email + override fun _3(): /* user-picked */ Email? = email override fun _4(): LocalDateTime = createdAt override fun _5(): Priority? = priority companion object { - val _rowParser: RowParser = RowParsers.of(CustomersId.duckDbType, DuckDbTypes.varchar, DuckDbTypes.varchar.nullable(), DuckDbTypes.timestamp, Priority.duckDbType.nullable(), { t0, t1, t2, t3, t4 -> CustomerSearchSqlRow(t0, t1, t2, t3, t4) }, { row -> arrayOf(row.customerId, row.name, row.email, row.createdAt, row.priority) }) + val _rowParser: RowParser = RowParsers.of(CustomersId.duckDbType, DuckDbTypes.varchar, Email.duckDbType.nullable(), DuckDbTypes.timestamp, Priority.duckDbType.nullable(), { t0, t1, t2, t3, t4 -> CustomerSearchSqlRow(t0, t1, t2, t3, t4) }, { row -> arrayOf(row.customerId, row.name, row.email, row.createdAt, row.priority) }) } } \ No newline at end of file diff --git a/testers/duckdb/kotlin/generated-and-checked-in/testdb/customers/CustomersFields.kt b/testers/duckdb/kotlin/generated-and-checked-in/testdb/customers/CustomersFields.kt index 8d345176df..ddf5196148 100644 --- a/testers/duckdb/kotlin/generated-and-checked-in/testdb/customers/CustomersFields.kt +++ b/testers/duckdb/kotlin/generated-and-checked-in/testdb/customers/CustomersFields.kt @@ -19,13 +19,14 @@ import dev.typr.foundations.kotlin.TupleExpr5 import java.time.LocalDateTime import kotlin.collections.List import testdb.Priority +import testdb.userdefined.Email -data class CustomersFields(val _path: List) : TupleExpr5, RelationStructure, FieldsBase { +data class CustomersFields(val _path: List) : TupleExpr5, RelationStructure, FieldsBase { override fun _1(): SqlExpr = customerId() override fun _2(): SqlExpr = name() - override fun _3(): SqlExpr = email() + override fun _3(): SqlExpr = email() override fun _4(): SqlExpr = createdAt() @@ -39,7 +40,7 @@ data class CustomersFields(val _path: List) : TupleExpr5 = IdField(_path, "customer_id", CustomersRow::customerId, null, "INTEGER", { row, value -> row.copy(customerId = value) }, CustomersId.duckDbType) - fun email(): OptField = OptField(_path, "email", CustomersRow::email, null, null, { row, value -> row.copy(email = value) }, DuckDbTypes.varchar) + fun email(): OptField = OptField(_path, "email", CustomersRow::email, null, null, { row, value -> row.copy(email = value) }, Email.duckDbType) fun name(): Field = Field(_path, "name", CustomersRow::name, null, null, { row, value -> row.copy(name = value) }, DuckDbTypes.varchar) diff --git a/testers/duckdb/kotlin/generated-and-checked-in/testdb/customers/CustomersId.kt b/testers/duckdb/kotlin/generated-and-checked-in/testdb/customers/CustomersId.kt index 6a74950e2d..7bd2b93031 100644 --- a/testers/duckdb/kotlin/generated-and-checked-in/testdb/customers/CustomersId.kt +++ b/testers/duckdb/kotlin/generated-and-checked-in/testdb/customers/CustomersId.kt @@ -22,10 +22,10 @@ data class CustomersId(@field:JsonValue val value: Int) { val bijection: Bijection = Bijection.of(CustomersId::value, ::CustomersId) - val dbTypeArray: DuckDbType> = - DuckDbTypes.integerArray.bimap({ xs -> arrayMap.map(xs, ::CustomersId, CustomersId::class.java) }, { xs -> arrayMap.map(xs, CustomersId::value, Int::class.javaObjectType) }) - val duckDbType: DuckDbType = KotlinDbTypes.DuckDbTypes.integer.bimap(::CustomersId, CustomersId::value) + + val duckDbTypeArray: DuckDbType> = + DuckDbTypes.integerArray.bimap({ xs -> arrayMap.map(xs, ::CustomersId, CustomersId::class.java) }, { xs -> arrayMap.map(xs, CustomersId::value, Int::class.javaObjectType) }) } } \ No newline at end of file diff --git a/testers/duckdb/kotlin/generated-and-checked-in/testdb/customers/CustomersRepoImpl.kt b/testers/duckdb/kotlin/generated-and-checked-in/testdb/customers/CustomersRepoImpl.kt index eb9c3a56e0..458ddd475e 100644 --- a/testers/duckdb/kotlin/generated-and-checked-in/testdb/customers/CustomersRepoImpl.kt +++ b/testers/duckdb/kotlin/generated-and-checked-in/testdb/customers/CustomersRepoImpl.kt @@ -19,6 +19,7 @@ import kotlin.collections.List import kotlin.collections.Map import kotlin.collections.MutableMap import testdb.Priority +import testdb.userdefined.Email class CustomersRepoImpl() : CustomersRepo { override fun delete(): DeleteBuilder = DeleteBuilder.of("\"customers\"", CustomersFields.structure, Dialect.DUCKDB) @@ -31,14 +32,14 @@ class CustomersRepoImpl() : CustomersRepo { override fun deleteByIds( customerIds: Array, c: Connection - ): Int = Fragment.interpolate(Fragment.lit("delete\nfrom \"customers\"\nwhere \"customer_id\" = ANY("), Fragment.encode(CustomersId.dbTypeArray, customerIds), Fragment.lit(")")) + ): Int = Fragment.interpolate(Fragment.lit("delete\nfrom \"customers\"\nwhere \"customer_id\" = ANY("), Fragment.encode(CustomersId.duckDbTypeArray, customerIds), Fragment.lit(")")) .update() .runUnchecked(c) override fun insert( unsaved: CustomersRow, c: Connection - ): CustomersRow = Fragment.interpolate(Fragment.lit("insert into \"customers\"(\"customer_id\", \"name\", \"email\", \"created_at\", \"priority\")\nvalues ("), Fragment.encode(CustomersId.duckDbType, unsaved.customerId), Fragment.lit(", "), Fragment.encode(DuckDbTypes.varchar, unsaved.name), Fragment.lit(", "), Fragment.encode(DuckDbTypes.varchar.nullable(), unsaved.email), Fragment.lit(", "), Fragment.encode(DuckDbTypes.timestamp, unsaved.createdAt), Fragment.lit(", "), Fragment.encode(Priority.duckDbType.nullable(), unsaved.priority), Fragment.lit(")\nRETURNING \"customer_id\", \"name\", \"email\", \"created_at\", \"priority\"\n")) + ): CustomersRow = Fragment.interpolate(Fragment.lit("insert into \"customers\"(\"customer_id\", \"name\", \"email\", \"created_at\", \"priority\")\nvalues ("), Fragment.encode(CustomersId.duckDbType, unsaved.customerId), Fragment.lit(", "), Fragment.encode(DuckDbTypes.varchar, unsaved.name), Fragment.lit(", "), Fragment.encode(Email.duckDbType.nullable(), unsaved.email), Fragment.lit(", "), Fragment.encode(DuckDbTypes.timestamp, unsaved.createdAt), Fragment.lit(", "), Fragment.encode(Priority.duckDbType.nullable(), unsaved.priority), Fragment.lit(")\nRETURNING \"customer_id\", \"name\", \"email\", \"created_at\", \"priority\"\n")) .updateReturning(CustomersRow._rowParser.exactlyOne()).runUnchecked(c) override fun insert( @@ -52,7 +53,7 @@ class CustomersRepoImpl() : CustomersRepo { columns.add(Fragment.lit("\"name\"")) values.add(Fragment.interpolate(Fragment.encode(DuckDbTypes.varchar, unsaved.name), Fragment.lit(""))) columns.add(Fragment.lit("\"email\"")) - values.add(Fragment.interpolate(Fragment.encode(DuckDbTypes.varchar.nullable(), unsaved.email), Fragment.lit(""))) + values.add(Fragment.interpolate(Fragment.encode(Email.duckDbType.nullable(), unsaved.email), Fragment.lit(""))) unsaved.createdAt.visit( { }, { value -> columns.add(Fragment.lit("\"created_at\"")) @@ -79,7 +80,7 @@ class CustomersRepoImpl() : CustomersRepo { override fun selectByIds( customerIds: Array, c: Connection - ): List = Fragment.interpolate(Fragment.lit("select \"customer_id\", \"name\", \"email\", \"created_at\", \"priority\"\nfrom \"customers\"\nwhere \"customer_id\" = ANY("), Fragment.encode(CustomersId.dbTypeArray, customerIds), Fragment.lit(")")).query(CustomersRow._rowParser.all()).runUnchecked(c) + ): List = Fragment.interpolate(Fragment.lit("select \"customer_id\", \"name\", \"email\", \"created_at\", \"priority\"\nfrom \"customers\"\nwhere \"customer_id\" = ANY("), Fragment.encode(CustomersId.duckDbTypeArray, customerIds), Fragment.lit(")")).query(CustomersRow._rowParser.all()).runUnchecked(c) override fun selectByIdsTracked( customerIds: Array, @@ -97,13 +98,13 @@ class CustomersRepoImpl() : CustomersRepo { c: Connection ): Boolean { val customerId: CustomersId = row.customerId - return Fragment.interpolate(Fragment.lit("update \"customers\"\nset \"name\" = "), Fragment.encode(DuckDbTypes.varchar, row.name), Fragment.lit(",\n\"email\" = "), Fragment.encode(DuckDbTypes.varchar.nullable(), row.email), Fragment.lit(",\n\"created_at\" = "), Fragment.encode(DuckDbTypes.timestamp, row.createdAt), Fragment.lit(",\n\"priority\" = "), Fragment.encode(Priority.duckDbType.nullable(), row.priority), Fragment.lit("\nwhere \"customer_id\" = "), Fragment.encode(CustomersId.duckDbType, customerId), Fragment.lit("")).update().runUnchecked(c) > 0 + return Fragment.interpolate(Fragment.lit("update \"customers\"\nset \"name\" = "), Fragment.encode(DuckDbTypes.varchar, row.name), Fragment.lit(",\n\"email\" = "), Fragment.encode(Email.duckDbType.nullable(), row.email), Fragment.lit(",\n\"created_at\" = "), Fragment.encode(DuckDbTypes.timestamp, row.createdAt), Fragment.lit(",\n\"priority\" = "), Fragment.encode(Priority.duckDbType.nullable(), row.priority), Fragment.lit("\nwhere \"customer_id\" = "), Fragment.encode(CustomersId.duckDbType, customerId), Fragment.lit("")).update().runUnchecked(c) > 0 } override fun upsert( unsaved: CustomersRow, c: Connection - ): CustomersRow = Fragment.interpolate(Fragment.lit("INSERT INTO \"customers\"(\"customer_id\", \"name\", \"email\", \"created_at\", \"priority\")\nVALUES ("), Fragment.encode(CustomersId.duckDbType, unsaved.customerId), Fragment.lit(", "), Fragment.encode(DuckDbTypes.varchar, unsaved.name), Fragment.lit(", "), Fragment.encode(DuckDbTypes.varchar.nullable(), unsaved.email), Fragment.lit(", "), Fragment.encode(DuckDbTypes.timestamp, unsaved.createdAt), Fragment.lit(", "), Fragment.encode(Priority.duckDbType.nullable(), unsaved.priority), Fragment.lit(")\nON CONFLICT (\"customer_id\")\nDO UPDATE SET\n \"name\" = EXCLUDED.\"name\",\n\"email\" = EXCLUDED.\"email\",\n\"created_at\" = EXCLUDED.\"created_at\",\n\"priority\" = EXCLUDED.\"priority\"\nRETURNING \"customer_id\", \"name\", \"email\", \"created_at\", \"priority\"")) + ): CustomersRow = Fragment.interpolate(Fragment.lit("INSERT INTO \"customers\"(\"customer_id\", \"name\", \"email\", \"created_at\", \"priority\")\nVALUES ("), Fragment.encode(CustomersId.duckDbType, unsaved.customerId), Fragment.lit(", "), Fragment.encode(DuckDbTypes.varchar, unsaved.name), Fragment.lit(", "), Fragment.encode(Email.duckDbType.nullable(), unsaved.email), Fragment.lit(", "), Fragment.encode(DuckDbTypes.timestamp, unsaved.createdAt), Fragment.lit(", "), Fragment.encode(Priority.duckDbType.nullable(), unsaved.priority), Fragment.lit(")\nON CONFLICT (\"customer_id\")\nDO UPDATE SET\n \"name\" = EXCLUDED.\"name\",\n\"email\" = EXCLUDED.\"email\",\n\"created_at\" = EXCLUDED.\"created_at\",\n\"priority\" = EXCLUDED.\"priority\"\nRETURNING \"customer_id\", \"name\", \"email\", \"created_at\", \"priority\"")) .updateReturning(CustomersRow._rowParser.exactlyOne()) .runUnchecked(c) diff --git a/testers/duckdb/kotlin/generated-and-checked-in/testdb/customers/CustomersRow.kt b/testers/duckdb/kotlin/generated-and-checked-in/testdb/customers/CustomersRow.kt index 33f94e235c..4fc910425a 100644 --- a/testers/duckdb/kotlin/generated-and-checked-in/testdb/customers/CustomersRow.kt +++ b/testers/duckdb/kotlin/generated-and-checked-in/testdb/customers/CustomersRow.kt @@ -14,6 +14,7 @@ import dev.typr.foundations.kotlin.nullable import java.time.LocalDateTime import testdb.Priority import testdb.customtypes.Defaulted +import testdb.userdefined.Email /** Table: customers * Primary key: customer_id @@ -21,17 +22,17 @@ import testdb.customtypes.Defaulted data class CustomersRow( @field:JsonProperty("customer_id") val customerId: CustomersId, val name: String, - val email: String?, + val email: /* user-picked */ Email?, /** Default: current_timestamp */ @field:JsonProperty("created_at") val createdAt: LocalDateTime, /** Default: 'medium' */ val priority: Priority? -) : Tuple5 { +) : Tuple5 { override fun _1(): CustomersId = customerId override fun _2(): String = name - override fun _3(): String? = email + override fun _3(): /* user-picked */ Email? = email override fun _4(): LocalDateTime = createdAt @@ -45,6 +46,6 @@ data class CustomersRow( ): CustomersRowUnsaved = CustomersRowUnsaved(customerId, name, email, createdAt, priority) companion object { - val _rowParser: RowParser = RowParsers.of(CustomersId.duckDbType, DuckDbTypes.varchar, DuckDbTypes.varchar.nullable(), DuckDbTypes.timestamp, Priority.duckDbType.nullable(), { t0, t1, t2, t3, t4 -> CustomersRow(t0, t1, t2, t3, t4) }, { row -> arrayOf(row.customerId, row.name, row.email, row.createdAt, row.priority) }) + val _rowParser: RowParser = RowParsers.of(CustomersId.duckDbType, DuckDbTypes.varchar, Email.duckDbType.nullable(), DuckDbTypes.timestamp, Priority.duckDbType.nullable(), { t0, t1, t2, t3, t4 -> CustomersRow(t0, t1, t2, t3, t4) }, { row -> arrayOf(row.customerId, row.name, row.email, row.createdAt, row.priority) }) } } \ No newline at end of file diff --git a/testers/duckdb/kotlin/generated-and-checked-in/testdb/customers/CustomersRowUnsaved.kt b/testers/duckdb/kotlin/generated-and-checked-in/testdb/customers/CustomersRowUnsaved.kt index 9140dd472f..37294b66f9 100644 --- a/testers/duckdb/kotlin/generated-and-checked-in/testdb/customers/CustomersRowUnsaved.kt +++ b/testers/duckdb/kotlin/generated-and-checked-in/testdb/customers/CustomersRowUnsaved.kt @@ -10,12 +10,13 @@ import java.time.LocalDateTime import testdb.Priority import testdb.customtypes.Defaulted import testdb.customtypes.Defaulted.UseDefault +import testdb.userdefined.Email /** This class corresponds to a row in table `customers` which has not been persisted yet */ data class CustomersRowUnsaved( @field:JsonProperty("customer_id") val customerId: CustomersId, val name: String, - val email: String? = null, + val email: /* user-picked */ Email? = null, /** Default: current_timestamp */ @field:JsonProperty("created_at") val createdAt: Defaulted = UseDefault(), /** Default: 'medium' */ diff --git a/testers/duckdb/kotlin/generated-and-checked-in/testdb/order_summary_by_customer/OrderSummaryByCustomerSqlRow.kt b/testers/duckdb/kotlin/generated-and-checked-in/testdb/order_summary_by_customer/OrderSummaryByCustomerSqlRow.kt index 1b7904bf46..d31f5e315b 100644 --- a/testers/duckdb/kotlin/generated-and-checked-in/testdb/order_summary_by_customer/OrderSummaryByCustomerSqlRow.kt +++ b/testers/duckdb/kotlin/generated-and-checked-in/testdb/order_summary_by_customer/OrderSummaryByCustomerSqlRow.kt @@ -16,6 +16,7 @@ import java.math.BigDecimal import java.time.LocalDate import testdb.Priority import testdb.customers.CustomersId +import testdb.userdefined.Email /** SQL file: order_summary_by_customer.sql */ data class OrderSummaryByCustomerSqlRow( @@ -24,7 +25,7 @@ data class OrderSummaryByCustomerSqlRow( /** Points to [testdb.customers.CustomersRow.name] */ @field:JsonProperty("customer_name") val customerName: String, /** Points to [testdb.customers.CustomersRow.email] */ - val email: String?, + val email: /* user-picked */ Email?, /** Points to [testdb.customers.CustomersRow.priority] */ val priority: Priority?, /** Points to [testdb.orders.OrdersRow.orderId] */ @@ -37,12 +38,12 @@ data class OrderSummaryByCustomerSqlRow( @field:JsonProperty("first_order_date") val firstOrderDate: LocalDate?, /** Points to [testdb.orders.OrdersRow.totalAmount] */ @field:JsonProperty("avg_order_amount") val avgOrderAmount: Double? -) : Tuple9 { +) : Tuple9 { override fun _1(): CustomersId = customerId override fun _2(): String = customerName - override fun _3(): String? = email + override fun _3(): /* user-picked */ Email? = email override fun _4(): Priority? = priority @@ -57,6 +58,6 @@ data class OrderSummaryByCustomerSqlRow( override fun _9(): Double? = avgOrderAmount companion object { - val _rowParser: RowParser = RowParsers.of(CustomersId.duckDbType, DuckDbTypes.varchar, DuckDbTypes.varchar.nullable(), Priority.duckDbType.nullable(), KotlinDbTypes.DuckDbTypes.bigint.nullable(), DuckDbTypes.numeric.nullable(), DuckDbTypes.date.nullable(), DuckDbTypes.date.nullable(), KotlinDbTypes.DuckDbTypes.double_.nullable(), { t0, t1, t2, t3, t4, t5, t6, t7, t8 -> OrderSummaryByCustomerSqlRow(t0, t1, t2, t3, t4, t5, t6, t7, t8) }, { row -> arrayOf(row.customerId, row.customerName, row.email, row.priority, row.orderCount, row.totalSpent, row.lastOrderDate, row.firstOrderDate, row.avgOrderAmount) }) + val _rowParser: RowParser = RowParsers.of(CustomersId.duckDbType, DuckDbTypes.varchar, Email.duckDbType.nullable(), Priority.duckDbType.nullable(), KotlinDbTypes.DuckDbTypes.bigint.nullable(), DuckDbTypes.numeric.nullable(), DuckDbTypes.date.nullable(), DuckDbTypes.date.nullable(), KotlinDbTypes.DuckDbTypes.double_.nullable(), { t0, t1, t2, t3, t4, t5, t6, t7, t8 -> OrderSummaryByCustomerSqlRow(t0, t1, t2, t3, t4, t5, t6, t7, t8) }, { row -> arrayOf(row.customerId, row.customerName, row.email, row.priority, row.orderCount, row.totalSpent, row.lastOrderDate, row.firstOrderDate, row.avgOrderAmount) }) } } \ No newline at end of file diff --git a/testers/duckdb/kotlin/generated-and-checked-in/testdb/orders/OrdersId.kt b/testers/duckdb/kotlin/generated-and-checked-in/testdb/orders/OrdersId.kt index 0f61055ff5..5b22c98adb 100644 --- a/testers/duckdb/kotlin/generated-and-checked-in/testdb/orders/OrdersId.kt +++ b/testers/duckdb/kotlin/generated-and-checked-in/testdb/orders/OrdersId.kt @@ -22,10 +22,10 @@ data class OrdersId(@field:JsonValue val value: Int) { val bijection: Bijection = Bijection.of(OrdersId::value, ::OrdersId) - val dbTypeArray: DuckDbType> = - DuckDbTypes.integerArray.bimap({ xs -> arrayMap.map(xs, ::OrdersId, OrdersId::class.java) }, { xs -> arrayMap.map(xs, OrdersId::value, Int::class.javaObjectType) }) - val duckDbType: DuckDbType = KotlinDbTypes.DuckDbTypes.integer.bimap(::OrdersId, OrdersId::value) + + val duckDbTypeArray: DuckDbType> = + DuckDbTypes.integerArray.bimap({ xs -> arrayMap.map(xs, ::OrdersId, OrdersId::class.java) }, { xs -> arrayMap.map(xs, OrdersId::value, Int::class.javaObjectType) }) } } \ No newline at end of file diff --git a/testers/duckdb/kotlin/generated-and-checked-in/testdb/orders/OrdersRepoImpl.kt b/testers/duckdb/kotlin/generated-and-checked-in/testdb/orders/OrdersRepoImpl.kt index a40adcdeb9..eb892b4117 100644 --- a/testers/duckdb/kotlin/generated-and-checked-in/testdb/orders/OrdersRepoImpl.kt +++ b/testers/duckdb/kotlin/generated-and-checked-in/testdb/orders/OrdersRepoImpl.kt @@ -31,7 +31,7 @@ class OrdersRepoImpl() : OrdersRepo { override fun deleteByIds( orderIds: Array, c: Connection - ): Int = Fragment.interpolate(Fragment.lit("delete\nfrom \"orders\"\nwhere \"order_id\" = ANY("), Fragment.encode(OrdersId.dbTypeArray, orderIds), Fragment.lit(")")) + ): Int = Fragment.interpolate(Fragment.lit("delete\nfrom \"orders\"\nwhere \"order_id\" = ANY("), Fragment.encode(OrdersId.duckDbTypeArray, orderIds), Fragment.lit(")")) .update() .runUnchecked(c) @@ -79,7 +79,7 @@ class OrdersRepoImpl() : OrdersRepo { override fun selectByIds( orderIds: Array, c: Connection - ): List = Fragment.interpolate(Fragment.lit("select \"order_id\", \"customer_id\", \"order_date\", \"total_amount\", \"status\"\nfrom \"orders\"\nwhere \"order_id\" = ANY("), Fragment.encode(OrdersId.dbTypeArray, orderIds), Fragment.lit(")")).query(OrdersRow._rowParser.all()).runUnchecked(c) + ): List = Fragment.interpolate(Fragment.lit("select \"order_id\", \"customer_id\", \"order_date\", \"total_amount\", \"status\"\nfrom \"orders\"\nwhere \"order_id\" = ANY("), Fragment.encode(OrdersId.duckDbTypeArray, orderIds), Fragment.lit(")")).query(OrdersRow._rowParser.all()).runUnchecked(c) override fun selectByIdsTracked( orderIds: Array, diff --git a/testers/duckdb/kotlin/generated-and-checked-in/testdb/precisetypes/Decimal10_2.kt b/testers/duckdb/kotlin/generated-and-checked-in/testdb/precisetypes/Decimal10_2.kt index fb801410e6..10a654290c 100644 --- a/testers/duckdb/kotlin/generated-and-checked-in/testdb/precisetypes/Decimal10_2.kt +++ b/testers/duckdb/kotlin/generated-and-checked-in/testdb/precisetypes/Decimal10_2.kt @@ -46,12 +46,12 @@ data class Decimal10_2 private constructor(@field:JsonValue val value: BigDecima val bijection: Bijection = Bijection.of(Decimal10_2::value, ::Decimal10_2) - val dbTypeArray: DuckDbType> = - DuckDbTypes.decimalArray.bimap({ xs -> arrayMap.map(xs, ::Decimal10_2, Decimal10_2::class.java) }, { xs -> arrayMap.map(xs, Decimal10_2::value, BigDecimal::class.java) }) - val duckDbType: DuckDbType = DuckDbTypes.numeric.bimap(::Decimal10_2, Decimal10_2::value) + val duckDbTypeArray: DuckDbType> = + DuckDbTypes.decimalArray.bimap({ xs -> arrayMap.map(xs, ::Decimal10_2, Decimal10_2::class.java) }, { xs -> arrayMap.map(xs, Decimal10_2::value, BigDecimal::class.java) }) + fun of(value: BigDecimal): Decimal10_2? { val scaled = value.setScale(2, RoundingMode.HALF_UP) return if (scaled.precision() <= 10) Decimal10_2(scaled) else null diff --git a/testers/duckdb/kotlin/generated-and-checked-in/testdb/precisetypes/Decimal18_4.kt b/testers/duckdb/kotlin/generated-and-checked-in/testdb/precisetypes/Decimal18_4.kt index 8acb0e81f6..b8f361be46 100644 --- a/testers/duckdb/kotlin/generated-and-checked-in/testdb/precisetypes/Decimal18_4.kt +++ b/testers/duckdb/kotlin/generated-and-checked-in/testdb/precisetypes/Decimal18_4.kt @@ -46,12 +46,12 @@ data class Decimal18_4 private constructor(@field:JsonValue val value: BigDecima val bijection: Bijection = Bijection.of(Decimal18_4::value, ::Decimal18_4) - val dbTypeArray: DuckDbType> = - DuckDbTypes.decimalArray.bimap({ xs -> arrayMap.map(xs, ::Decimal18_4, Decimal18_4::class.java) }, { xs -> arrayMap.map(xs, Decimal18_4::value, BigDecimal::class.java) }) - val duckDbType: DuckDbType = DuckDbTypes.numeric.bimap(::Decimal18_4, Decimal18_4::value) + val duckDbTypeArray: DuckDbType> = + DuckDbTypes.decimalArray.bimap({ xs -> arrayMap.map(xs, ::Decimal18_4, Decimal18_4::class.java) }, { xs -> arrayMap.map(xs, Decimal18_4::value, BigDecimal::class.java) }) + fun of(value: BigDecimal): Decimal18_4? { val scaled = value.setScale(4, RoundingMode.HALF_UP) return if (scaled.precision() <= 18) Decimal18_4(scaled) else null diff --git a/testers/duckdb/kotlin/generated-and-checked-in/testdb/precisetypes/Decimal5_2.kt b/testers/duckdb/kotlin/generated-and-checked-in/testdb/precisetypes/Decimal5_2.kt index 830afd9a1c..bfcfe8c5e0 100644 --- a/testers/duckdb/kotlin/generated-and-checked-in/testdb/precisetypes/Decimal5_2.kt +++ b/testers/duckdb/kotlin/generated-and-checked-in/testdb/precisetypes/Decimal5_2.kt @@ -46,12 +46,12 @@ data class Decimal5_2 private constructor(@field:JsonValue val value: BigDecimal val bijection: Bijection = Bijection.of(Decimal5_2::value, ::Decimal5_2) - val dbTypeArray: DuckDbType> = - DuckDbTypes.decimalArray.bimap({ xs -> arrayMap.map(xs, ::Decimal5_2, Decimal5_2::class.java) }, { xs -> arrayMap.map(xs, Decimal5_2::value, BigDecimal::class.java) }) - val duckDbType: DuckDbType = DuckDbTypes.numeric.bimap(::Decimal5_2, Decimal5_2::value) + val duckDbTypeArray: DuckDbType> = + DuckDbTypes.decimalArray.bimap({ xs -> arrayMap.map(xs, ::Decimal5_2, Decimal5_2::class.java) }, { xs -> arrayMap.map(xs, Decimal5_2::value, BigDecimal::class.java) }) + fun of(value: BigDecimal): Decimal5_2? { val scaled = value.setScale(2, RoundingMode.HALF_UP) return if (scaled.precision() <= 5) Decimal5_2(scaled) else null diff --git a/testers/duckdb/kotlin/generated-and-checked-in/testdb/precision_types/PrecisionTypesId.kt b/testers/duckdb/kotlin/generated-and-checked-in/testdb/precision_types/PrecisionTypesId.kt index aca6e3f0e4..382390e858 100644 --- a/testers/duckdb/kotlin/generated-and-checked-in/testdb/precision_types/PrecisionTypesId.kt +++ b/testers/duckdb/kotlin/generated-and-checked-in/testdb/precision_types/PrecisionTypesId.kt @@ -22,10 +22,10 @@ data class PrecisionTypesId(@field:JsonValue val value: Int) { val bijection: Bijection = Bijection.of(PrecisionTypesId::value, ::PrecisionTypesId) - val dbTypeArray: DuckDbType> = - DuckDbTypes.integerArray.bimap({ xs -> arrayMap.map(xs, ::PrecisionTypesId, PrecisionTypesId::class.java) }, { xs -> arrayMap.map(xs, PrecisionTypesId::value, Int::class.javaObjectType) }) - val duckDbType: DuckDbType = KotlinDbTypes.DuckDbTypes.integer.bimap(::PrecisionTypesId, PrecisionTypesId::value) + + val duckDbTypeArray: DuckDbType> = + DuckDbTypes.integerArray.bimap({ xs -> arrayMap.map(xs, ::PrecisionTypesId, PrecisionTypesId::class.java) }, { xs -> arrayMap.map(xs, PrecisionTypesId::value, Int::class.javaObjectType) }) } } \ No newline at end of file diff --git a/testers/duckdb/kotlin/generated-and-checked-in/testdb/precision_types/PrecisionTypesRepoImpl.kt b/testers/duckdb/kotlin/generated-and-checked-in/testdb/precision_types/PrecisionTypesRepoImpl.kt index 09c0c42066..81f38e14b8 100644 --- a/testers/duckdb/kotlin/generated-and-checked-in/testdb/precision_types/PrecisionTypesRepoImpl.kt +++ b/testers/duckdb/kotlin/generated-and-checked-in/testdb/precision_types/PrecisionTypesRepoImpl.kt @@ -34,7 +34,7 @@ class PrecisionTypesRepoImpl() : PrecisionTypesRepo { override fun deleteByIds( ids: Array, c: Connection - ): Int = Fragment.interpolate(Fragment.lit("delete\nfrom \"precision_types\"\nwhere \"id\" = ANY("), Fragment.encode(PrecisionTypesId.dbTypeArray, ids), Fragment.lit(")")) + ): Int = Fragment.interpolate(Fragment.lit("delete\nfrom \"precision_types\"\nwhere \"id\" = ANY("), Fragment.encode(PrecisionTypesId.duckDbTypeArray, ids), Fragment.lit(")")) .update() .runUnchecked(c) @@ -56,7 +56,7 @@ class PrecisionTypesRepoImpl() : PrecisionTypesRepo { override fun selectByIds( ids: Array, c: Connection - ): List = Fragment.interpolate(Fragment.lit("select \"id\", \"string10\", \"string20\", \"string50\", \"string100\", \"string255\", \"decimal5_2\", \"decimal10_2\", \"decimal18_4\", \"decimal5_0\", \"decimal10_0\", \"decimal18_0\"\nfrom \"precision_types\"\nwhere \"id\" = ANY("), Fragment.encode(PrecisionTypesId.dbTypeArray, ids), Fragment.lit(")")).query(PrecisionTypesRow._rowParser.all()).runUnchecked(c) + ): List = Fragment.interpolate(Fragment.lit("select \"id\", \"string10\", \"string20\", \"string50\", \"string100\", \"string255\", \"decimal5_2\", \"decimal10_2\", \"decimal18_4\", \"decimal5_0\", \"decimal10_0\", \"decimal18_0\"\nfrom \"precision_types\"\nwhere \"id\" = ANY("), Fragment.encode(PrecisionTypesId.duckDbTypeArray, ids), Fragment.lit(")")).query(PrecisionTypesRow._rowParser.all()).runUnchecked(c) override fun selectByIdsTracked( ids: Array, diff --git a/testers/duckdb/kotlin/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullId.kt b/testers/duckdb/kotlin/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullId.kt index 504eb3c145..4cd1e3d586 100644 --- a/testers/duckdb/kotlin/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullId.kt +++ b/testers/duckdb/kotlin/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullId.kt @@ -22,10 +22,10 @@ data class PrecisionTypesNullId(@field:JsonValue val value: Int) { val bijection: Bijection = Bijection.of(PrecisionTypesNullId::value, ::PrecisionTypesNullId) - val dbTypeArray: DuckDbType> = - DuckDbTypes.integerArray.bimap({ xs -> arrayMap.map(xs, ::PrecisionTypesNullId, PrecisionTypesNullId::class.java) }, { xs -> arrayMap.map(xs, PrecisionTypesNullId::value, Int::class.javaObjectType) }) - val duckDbType: DuckDbType = KotlinDbTypes.DuckDbTypes.integer.bimap(::PrecisionTypesNullId, PrecisionTypesNullId::value) + + val duckDbTypeArray: DuckDbType> = + DuckDbTypes.integerArray.bimap({ xs -> arrayMap.map(xs, ::PrecisionTypesNullId, PrecisionTypesNullId::class.java) }, { xs -> arrayMap.map(xs, PrecisionTypesNullId::value, Int::class.javaObjectType) }) } } \ No newline at end of file diff --git a/testers/duckdb/kotlin/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullRepoImpl.kt b/testers/duckdb/kotlin/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullRepoImpl.kt index 0b728e890c..5b48054f16 100644 --- a/testers/duckdb/kotlin/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullRepoImpl.kt +++ b/testers/duckdb/kotlin/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullRepoImpl.kt @@ -35,7 +35,7 @@ class PrecisionTypesNullRepoImpl() : PrecisionTypesNullRepo { override fun deleteByIds( ids: Array, c: Connection - ): Int = Fragment.interpolate(Fragment.lit("delete\nfrom \"precision_types_null\"\nwhere \"id\" = ANY("), Fragment.encode(PrecisionTypesNullId.dbTypeArray, ids), Fragment.lit(")")) + ): Int = Fragment.interpolate(Fragment.lit("delete\nfrom \"precision_types_null\"\nwhere \"id\" = ANY("), Fragment.encode(PrecisionTypesNullId.duckDbTypeArray, ids), Fragment.lit(")")) .update() .runUnchecked(c) @@ -57,7 +57,7 @@ class PrecisionTypesNullRepoImpl() : PrecisionTypesNullRepo { override fun selectByIds( ids: Array, c: Connection - ): List = Fragment.interpolate(Fragment.lit("select \"id\", \"string10\", \"string20\", \"string50\", \"string100\", \"string255\", \"decimal5_2\", \"decimal10_2\", \"decimal18_4\", \"decimal5_0\", \"decimal10_0\", \"decimal18_0\"\nfrom \"precision_types_null\"\nwhere \"id\" = ANY("), Fragment.encode(PrecisionTypesNullId.dbTypeArray, ids), Fragment.lit(")")).query(PrecisionTypesNullRow._rowParser.all()).runUnchecked(c) + ): List = Fragment.interpolate(Fragment.lit("select \"id\", \"string10\", \"string20\", \"string50\", \"string100\", \"string255\", \"decimal5_2\", \"decimal10_2\", \"decimal18_4\", \"decimal5_0\", \"decimal10_0\", \"decimal18_0\"\nfrom \"precision_types_null\"\nwhere \"id\" = ANY("), Fragment.encode(PrecisionTypesNullId.duckDbTypeArray, ids), Fragment.lit(")")).query(PrecisionTypesNullRow._rowParser.all()).runUnchecked(c) override fun selectByIdsTracked( ids: Array, diff --git a/testers/duckdb/kotlin/generated-and-checked-in/testdb/product_summary/ProductSummarySqlRow.kt b/testers/duckdb/kotlin/generated-and-checked-in/testdb/product_summary/ProductSummarySqlRow.kt index 9c8bc7b919..b1628dc067 100644 --- a/testers/duckdb/kotlin/generated-and-checked-in/testdb/product_summary/ProductSummarySqlRow.kt +++ b/testers/duckdb/kotlin/generated-and-checked-in/testdb/product_summary/ProductSummarySqlRow.kt @@ -28,7 +28,7 @@ data class ProductSummarySqlRow( @field:JsonProperty("order_count") val orderCount: Long, /** Points to [testdb.order_items.OrderItemsRow.quantity] */ @field:JsonProperty("total_quantity") val totalQuantity: Long?, - /** Points to [testdb.order_items.OrderItemsRow.quantity] */ + /** Points to [testdb.order_items.OrderItemsRow.unitPrice] */ @field:JsonProperty("total_revenue") val totalRevenue: BigDecimal? ) : Tuple7 { override fun _1(): ProductsId = productId diff --git a/testers/duckdb/kotlin/generated-and-checked-in/testdb/products/ProductsId.kt b/testers/duckdb/kotlin/generated-and-checked-in/testdb/products/ProductsId.kt index 50edff82b4..6f82446b36 100644 --- a/testers/duckdb/kotlin/generated-and-checked-in/testdb/products/ProductsId.kt +++ b/testers/duckdb/kotlin/generated-and-checked-in/testdb/products/ProductsId.kt @@ -22,10 +22,10 @@ data class ProductsId(@field:JsonValue val value: Int) { val bijection: Bijection = Bijection.of(ProductsId::value, ::ProductsId) - val dbTypeArray: DuckDbType> = - DuckDbTypes.integerArray.bimap({ xs -> arrayMap.map(xs, ::ProductsId, ProductsId::class.java) }, { xs -> arrayMap.map(xs, ProductsId::value, Int::class.javaObjectType) }) - val duckDbType: DuckDbType = KotlinDbTypes.DuckDbTypes.integer.bimap(::ProductsId, ProductsId::value) + + val duckDbTypeArray: DuckDbType> = + DuckDbTypes.integerArray.bimap({ xs -> arrayMap.map(xs, ::ProductsId, ProductsId::class.java) }, { xs -> arrayMap.map(xs, ProductsId::value, Int::class.javaObjectType) }) } } \ No newline at end of file diff --git a/testers/duckdb/kotlin/generated-and-checked-in/testdb/products/ProductsRepoImpl.kt b/testers/duckdb/kotlin/generated-and-checked-in/testdb/products/ProductsRepoImpl.kt index 5897bacef0..83815daafe 100644 --- a/testers/duckdb/kotlin/generated-and-checked-in/testdb/products/ProductsRepoImpl.kt +++ b/testers/duckdb/kotlin/generated-and-checked-in/testdb/products/ProductsRepoImpl.kt @@ -29,7 +29,7 @@ class ProductsRepoImpl() : ProductsRepo { override fun deleteByIds( productIds: Array, c: Connection - ): Int = Fragment.interpolate(Fragment.lit("delete\nfrom \"products\"\nwhere \"product_id\" = ANY("), Fragment.encode(ProductsId.dbTypeArray, productIds), Fragment.lit(")")) + ): Int = Fragment.interpolate(Fragment.lit("delete\nfrom \"products\"\nwhere \"product_id\" = ANY("), Fragment.encode(ProductsId.duckDbTypeArray, productIds), Fragment.lit(")")) .update() .runUnchecked(c) @@ -51,7 +51,7 @@ class ProductsRepoImpl() : ProductsRepo { override fun selectByIds( productIds: Array, c: Connection - ): List = Fragment.interpolate(Fragment.lit("select \"product_id\", \"sku\", \"name\", \"price\", \"metadata\"\nfrom \"products\"\nwhere \"product_id\" = ANY("), Fragment.encode(ProductsId.dbTypeArray, productIds), Fragment.lit(")")).query(ProductsRow._rowParser.all()).runUnchecked(c) + ): List = Fragment.interpolate(Fragment.lit("select \"product_id\", \"sku\", \"name\", \"price\", \"metadata\"\nfrom \"products\"\nwhere \"product_id\" = ANY("), Fragment.encode(ProductsId.duckDbTypeArray, productIds), Fragment.lit(")")).query(ProductsRow._rowParser.all()).runUnchecked(c) override fun selectByIdsTracked( productIds: Array, diff --git a/testers/duckdb/kotlin/generated-and-checked-in/testdb/update_customer_priority/UpdateCustomerPrioritySqlRow.kt b/testers/duckdb/kotlin/generated-and-checked-in/testdb/update_customer_priority/UpdateCustomerPrioritySqlRow.kt index ab4e69b7cc..26faddaf3b 100644 --- a/testers/duckdb/kotlin/generated-and-checked-in/testdb/update_customer_priority/UpdateCustomerPrioritySqlRow.kt +++ b/testers/duckdb/kotlin/generated-and-checked-in/testdb/update_customer_priority/UpdateCustomerPrioritySqlRow.kt @@ -14,6 +14,7 @@ import dev.typr.foundations.kotlin.nullable import java.time.LocalDateTime import testdb.Priority import testdb.customers.CustomersId +import testdb.userdefined.Email /** SQL file: update_customer_priority.sql */ data class UpdateCustomerPrioritySqlRow( @@ -22,23 +23,23 @@ data class UpdateCustomerPrioritySqlRow( /** Points to [testdb.customers.CustomersRow.name] */ val name: String, /** Points to [testdb.customers.CustomersRow.email] */ - val email: String?, + val email: /* user-picked */ Email?, /** Points to [testdb.customers.CustomersRow.createdAt] */ @field:JsonProperty("created_at") val createdAt: LocalDateTime, /** Points to [testdb.customers.CustomersRow.priority] */ val priority: Priority? -) : Tuple5 { +) : Tuple5 { override fun _1(): CustomersId = customerId override fun _2(): String = name - override fun _3(): String? = email + override fun _3(): /* user-picked */ Email? = email override fun _4(): LocalDateTime = createdAt override fun _5(): Priority? = priority companion object { - val _rowParser: RowParser = RowParsers.of(CustomersId.duckDbType, DuckDbTypes.varchar, DuckDbTypes.varchar.nullable(), DuckDbTypes.timestamp, Priority.duckDbType.nullable(), { t0, t1, t2, t3, t4 -> UpdateCustomerPrioritySqlRow(t0, t1, t2, t3, t4) }, { row -> arrayOf(row.customerId, row.name, row.email, row.createdAt, row.priority) }) + val _rowParser: RowParser = RowParsers.of(CustomersId.duckDbType, DuckDbTypes.varchar, Email.duckDbType.nullable(), DuckDbTypes.timestamp, Priority.duckDbType.nullable(), { t0, t1, t2, t3, t4 -> UpdateCustomerPrioritySqlRow(t0, t1, t2, t3, t4) }, { row -> arrayOf(row.customerId, row.name, row.email, row.createdAt, row.priority) }) } } \ No newline at end of file diff --git a/testers/duckdb/kotlin/generated-and-checked-in/testdb/userdefined/Email.kt b/testers/duckdb/kotlin/generated-and-checked-in/testdb/userdefined/Email.kt new file mode 100644 index 0000000000..155a9d4b6d --- /dev/null +++ b/testers/duckdb/kotlin/generated-and-checked-in/testdb/userdefined/Email.kt @@ -0,0 +1,32 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package testdb.userdefined + +import com.fasterxml.jackson.annotation.JsonValue +import dev.typr.foundations.DuckDbType +import dev.typr.foundations.DuckDbTypes +import dev.typr.foundations.internal.arrayMap +import dev.typr.foundations.kotlin.Bijection + +/** Shared type `Email` + * Generated from TypeDefinitions matching + */ +data class Email(@field:JsonValue val value: String) { + override fun toString(): kotlin.String { + return value.toString() + } + + companion object { + val bijection: Bijection = + Bijection.of(Email::value, ::Email) + + val duckDbType: DuckDbType = + DuckDbTypes.varchar.bimap(::Email, Email::value) + + val duckDbTypeArray: DuckDbType> = + DuckDbTypes.varcharArray.bimap({ xs -> arrayMap.map(xs, ::Email, Email::class.java) }, { xs -> arrayMap.map(xs, Email::value, String::class.java) }) + } +} \ No newline at end of file diff --git a/testers/duckdb/kotlin/src/kotlin/testdb/DSLTest.kt b/testers/duckdb/kotlin/src/kotlin/testdb/DSLTest.kt index 291ca855da..69289bc66d 100644 --- a/testers/duckdb/kotlin/src/kotlin/testdb/DSLTest.kt +++ b/testers/duckdb/kotlin/src/kotlin/testdb/DSLTest.kt @@ -3,6 +3,7 @@ package testdb import org.junit.Assert.* import org.junit.Test import testdb.customers.* +import testdb.userdefined.Email import java.time.LocalDateTime class DSLTest { @@ -13,7 +14,7 @@ class DSLTest { DuckDbTestHelper.run { c -> customersRepo.insert( CustomersRow( - CustomersId(5001), "DSL Test User", "dsl@test.com", + CustomersId(5001), "DSL Test User", Email("dsl@test.com"), LocalDateTime.now(), Priority.high ), c ) @@ -97,7 +98,7 @@ class DSLTest { DuckDbTestHelper.run { c -> customersRepo.insert( CustomersRow( - CustomersId(5700), "ProjectionTest", "projection@test.com", + CustomersId(5700), "ProjectionTest", Email("projection@test.com"), LocalDateTime.now(), null ), c ) @@ -109,7 +110,7 @@ class DSLTest { assertEquals(1, results.size) assertEquals("ProjectionTest", results[0]._1()) - assertEquals("projection@test.com", results[0]._2()) + assertEquals(Email("projection@test.com"), results[0]._2()) } } } diff --git a/testers/duckdb/kotlin/src/kotlin/testdb/MockRepoTest.kt b/testers/duckdb/kotlin/src/kotlin/testdb/MockRepoTest.kt index 06ed0eca94..ddcc619155 100644 --- a/testers/duckdb/kotlin/src/kotlin/testdb/MockRepoTest.kt +++ b/testers/duckdb/kotlin/src/kotlin/testdb/MockRepoTest.kt @@ -5,6 +5,7 @@ import org.junit.Assert.* import org.junit.Test import testdb.customers.* import testdb.departments.* +import testdb.userdefined.Email import java.math.BigDecimal import java.time.LocalDateTime @@ -30,7 +31,7 @@ class MockRepoTest { fun testMockInsertAndSelect() { val mock = createCustomersMock() val customer = CustomersRow( - CustomersId(1), "Mock User", "mock@test.com", + CustomersId(1), "Mock User", Email("mock@test.com"), LocalDateTime.now(), Priority.medium ) diff --git a/testers/duckdb/kotlin/src/kotlin/testdb/SqlScriptTest.kt b/testers/duckdb/kotlin/src/kotlin/testdb/SqlScriptTest.kt index 4cb7af8737..2b52f9980e 100644 --- a/testers/duckdb/kotlin/src/kotlin/testdb/SqlScriptTest.kt +++ b/testers/duckdb/kotlin/src/kotlin/testdb/SqlScriptTest.kt @@ -9,6 +9,7 @@ import testdb.order_summary_by_customer.* import testdb.product_summary.* import testdb.customers.CustomersId import testdb.customtypes.Defaulted +import testdb.userdefined.Email import java.math.BigDecimal import java.time.LocalDateTime import java.util.Random @@ -49,7 +50,7 @@ class SqlScriptTest { DuckDbTestHelper.run { c -> val customer = testInsert.Customers( name = "Email Customer", - email = "unique-kotlin-search@example.com", + email = Email("unique-kotlin-search@example.com"), c = c ) diff --git a/testers/duckdb/scala/generated-and-checked-in/testdb/Mood.scala b/testers/duckdb/scala/generated-and-checked-in/testdb/Mood.scala index bc267880f1..4139756e39 100644 --- a/testers/duckdb/scala/generated-and-checked-in/testdb/Mood.scala +++ b/testers/duckdb/scala/generated-and-checked-in/testdb/Mood.scala @@ -17,7 +17,7 @@ import dev.typr.foundations.DuckDbTypes sealed abstract class Mood(val value: java.lang.String) object Mood { - given dbTypeArray: DuckDbType[Array[Mood]] = { + given duckDbTypeArray: DuckDbType[Array[Mood]] = { DuckDbTypes.varcharArray .bimap(xs => xs.map(Mood.force), xs => xs.map(_.value)) .renamedDropPrecision("mood") diff --git a/testers/duckdb/scala/generated-and-checked-in/testdb/Priority.scala b/testers/duckdb/scala/generated-and-checked-in/testdb/Priority.scala index 9ae60a3ce6..d4a660fbe9 100644 --- a/testers/duckdb/scala/generated-and-checked-in/testdb/Priority.scala +++ b/testers/duckdb/scala/generated-and-checked-in/testdb/Priority.scala @@ -18,7 +18,7 @@ import dev.typr.foundations.DuckDbTypes sealed abstract class Priority(val value: java.lang.String) object Priority { - given dbTypeArray: DuckDbType[Array[Priority]] = { + given duckDbTypeArray: DuckDbType[Array[Priority]] = { DuckDbTypes.varcharArray .bimap(xs => xs.map(Priority.force), xs => xs.map(_.value)) .renamedDropPrecision("priority") diff --git a/testers/duckdb/scala/generated-and-checked-in/testdb/TestInsert.scala b/testers/duckdb/scala/generated-and-checked-in/testdb/TestInsert.scala index 82e8775686..1ad64542fd 100644 --- a/testers/duckdb/scala/generated-and-checked-in/testdb/TestInsert.scala +++ b/testers/duckdb/scala/generated-and-checked-in/testdb/TestInsert.scala @@ -57,6 +57,7 @@ import testdb.precision_types_null.PrecisionTypesNullRow import testdb.products.ProductsId import testdb.products.ProductsRepoImpl import testdb.products.ProductsRow +import testdb.userdefined.Email /** Methods to generate random data for `Ident(TestInsert)` */ case class TestInsert(random: Random) { @@ -121,7 +122,7 @@ case class TestInsert(random: Random) { def Customers( customerId: CustomersId = new CustomersId(random.nextInt()), name: String = random.alphanumeric.take(20).mkString, - email: Option[String] = (if (random.nextBoolean()) None else Some(random.alphanumeric.take(20).mkString)), + email: Option[/* user-picked */ Email] = (if (random.nextBoolean()) None else Some(new Email(random.alphanumeric.take(20).mkString))), createdAt: Defaulted[LocalDateTime] = new UseDefault(), priority: Defaulted[Option[Priority]] = new UseDefault() )(using c: Connection): CustomersRow = { diff --git a/testers/duckdb/scala/generated-and-checked-in/testdb/all_scalar_types/AllScalarTypesId.scala b/testers/duckdb/scala/generated-and-checked-in/testdb/all_scalar_types/AllScalarTypesId.scala index 9587346919..66d516cb7f 100644 --- a/testers/duckdb/scala/generated-and-checked-in/testdb/all_scalar_types/AllScalarTypesId.scala +++ b/testers/duckdb/scala/generated-and-checked-in/testdb/all_scalar_types/AllScalarTypesId.scala @@ -17,7 +17,7 @@ case class AllScalarTypesId(@JsonValue value: Int) extends scala.AnyVal object AllScalarTypesId { given bijection: Bijection[AllScalarTypesId, Int] = Bijection.apply[AllScalarTypesId, Int](_.value)(AllScalarTypesId.apply) - given dbTypeArray: DuckDbType[Array[AllScalarTypesId]] = DuckDbTypes.integerArray.bimap(xs => xs.map(AllScalarTypesId.apply), xs => xs.map(_.value)) - given duckDbType: DuckDbType[AllScalarTypesId] = ScalaDbTypes.DuckDbTypes.integer.bimap(AllScalarTypesId.apply, _.value) + + given duckDbTypeArray: DuckDbType[Array[AllScalarTypesId]] = DuckDbTypes.integerArray.bimap(xs => xs.map(AllScalarTypesId.apply), xs => xs.map(_.value)) } \ No newline at end of file diff --git a/testers/duckdb/scala/generated-and-checked-in/testdb/all_scalar_types/AllScalarTypesRepoImpl.scala b/testers/duckdb/scala/generated-and-checked-in/testdb/all_scalar_types/AllScalarTypesRepoImpl.scala index 31cb4e5dbf..d9c457dc5c 100644 --- a/testers/duckdb/scala/generated-and-checked-in/testdb/all_scalar_types/AllScalarTypesRepoImpl.scala +++ b/testers/duckdb/scala/generated-and-checked-in/testdb/all_scalar_types/AllScalarTypesRepoImpl.scala @@ -25,7 +25,7 @@ class AllScalarTypesRepoImpl extends AllScalarTypesRepo { override def deleteByIds(ids: Array[AllScalarTypesId])(using c: Connection): Int = { sql"""delete from "all_scalar_types" - where "id" = ANY(${Fragment.encode(AllScalarTypesId.dbTypeArray, ids)})""" + where "id" = ANY(${Fragment.encode(AllScalarTypesId.duckDbTypeArray, ids)})""" .update() .runUnchecked(c) } @@ -55,7 +55,7 @@ class AllScalarTypesRepoImpl extends AllScalarTypesRepo { override def selectByIds(ids: Array[AllScalarTypesId])(using c: Connection): List[AllScalarTypesRow] = { sql"""select "id", "col_tinyint", "col_smallint", "col_integer", "col_bigint", "col_hugeint", "col_utinyint", "col_usmallint", "col_uinteger", "col_ubigint", "col_float", "col_double", "col_decimal", "col_boolean", "col_varchar", "col_text", "col_blob", "col_date", "col_time", "col_timestamp", "col_timestamptz", "col_interval", "col_uuid", "col_json", "col_mood", "col_not_null" from "all_scalar_types" - where "id" = ANY(${Fragment.encode(AllScalarTypesId.dbTypeArray, ids)})""".query(AllScalarTypesRow.`_rowParser`.all()).runUnchecked(c) + where "id" = ANY(${Fragment.encode(AllScalarTypesId.duckDbTypeArray, ids)})""".query(AllScalarTypesRow.`_rowParser`.all()).runUnchecked(c) } override def selectByIdsTracked(ids: Array[AllScalarTypesId])(using c: Connection): Map[AllScalarTypesId, AllScalarTypesRow] = { diff --git a/testers/duckdb/scala/generated-and-checked-in/testdb/customer_search/CustomerSearchSqlRow.scala b/testers/duckdb/scala/generated-and-checked-in/testdb/customer_search/CustomerSearchSqlRow.scala index 83c96b56dd..a829e3e779 100644 --- a/testers/duckdb/scala/generated-and-checked-in/testdb/customer_search/CustomerSearchSqlRow.scala +++ b/testers/duckdb/scala/generated-and-checked-in/testdb/customer_search/CustomerSearchSqlRow.scala @@ -14,6 +14,7 @@ import dev.typr.foundations.scala.RowParsers import java.time.LocalDateTime import testdb.Priority import testdb.customers.CustomersId +import testdb.userdefined.Email /** SQL file: customer_search.sql */ case class CustomerSearchSqlRow( @@ -22,17 +23,17 @@ case class CustomerSearchSqlRow( /** Points to [[testdb.customers.CustomersRow.name]] */ name: String, /** Points to [[testdb.customers.CustomersRow.email]] */ - email: Option[String], + email: Option[/* user-picked */ Email], /** Points to [[testdb.customers.CustomersRow.createdAt]] */ @JsonProperty("created_at") createdAt: LocalDateTime, /** Points to [[testdb.customers.CustomersRow.priority]] */ priority: Option[Priority] -) extends Tuple5[CustomersId, String, Option[String], LocalDateTime, Option[Priority]] { +) extends Tuple5[CustomersId, String, Option[/* user-picked */ Email], LocalDateTime, Option[Priority]] { override def `_1`: CustomersId = customerId override def `_2`: String = name - override def `_3`: Option[String] = email + override def `_3`: Option[/* user-picked */ Email] = email override def `_4`: LocalDateTime = createdAt @@ -40,5 +41,5 @@ case class CustomerSearchSqlRow( } object CustomerSearchSqlRow { - val `_rowParser`: RowParser[CustomerSearchSqlRow] = RowParsers.of(CustomersId.duckDbType, DuckDbTypes.varchar, DuckDbTypes.varchar.nullable, DuckDbTypes.timestamp, Priority.duckDbType.nullable)(CustomerSearchSqlRow.apply)(row => Array[Any](row.customerId, row.name, row.email, row.createdAt, row.priority)) + val `_rowParser`: RowParser[CustomerSearchSqlRow] = RowParsers.of(CustomersId.duckDbType, DuckDbTypes.varchar, Email.duckDbType.nullable, DuckDbTypes.timestamp, Priority.duckDbType.nullable)(CustomerSearchSqlRow.apply)(row => Array[Any](row.customerId, row.name, row.email, row.createdAt, row.priority)) } \ No newline at end of file diff --git a/testers/duckdb/scala/generated-and-checked-in/testdb/customers/CustomersFields.scala b/testers/duckdb/scala/generated-and-checked-in/testdb/customers/CustomersFields.scala index 91cfd8e128..7bb43a807a 100644 --- a/testers/duckdb/scala/generated-and-checked-in/testdb/customers/CustomersFields.scala +++ b/testers/duckdb/scala/generated-and-checked-in/testdb/customers/CustomersFields.scala @@ -18,8 +18,9 @@ import dev.typr.foundations.scala.SqlExpr.OptField import dev.typr.foundations.scala.TupleExpr5 import java.time.LocalDateTime import testdb.Priority +import testdb.userdefined.Email -class CustomersFields(val `_path`: java.util.List[Path]) extends TupleExpr5[CustomersId, String, String, LocalDateTime, Priority] with RelationStructure[CustomersFields, CustomersRow] with FieldsBase[CustomersRow] { +class CustomersFields(val `_path`: java.util.List[Path]) extends TupleExpr5[CustomersId, String, /* user-picked */ Email, LocalDateTime, Priority] with RelationStructure[CustomersFields, CustomersRow] with FieldsBase[CustomersRow] { def customerId: IdField[CustomersId, CustomersRow] = { new IdField[CustomersId, CustomersRow]( _path, @@ -44,15 +45,15 @@ class CustomersFields(val `_path`: java.util.List[Path]) extends TupleExpr5[Cust ) } - def email: OptField[String, CustomersRow] = { - new OptField[String, CustomersRow]( + def email: OptField[/* user-picked */ Email, CustomersRow] = { + new OptField[/* user-picked */ Email, CustomersRow]( _path, "email", _.email, None, None, (row, value) => row.copy(email = value), - DuckDbTypes.varchar + Email.duckDbType ) } @@ -90,7 +91,7 @@ class CustomersFields(val `_path`: java.util.List[Path]) extends TupleExpr5[Cust override def `_2`: SqlExpr[String] = name - override def `_3`: SqlExpr[String] = email + override def `_3`: SqlExpr[/* user-picked */ Email] = email override def `_4`: SqlExpr[LocalDateTime] = createdAt diff --git a/testers/duckdb/scala/generated-and-checked-in/testdb/customers/CustomersId.scala b/testers/duckdb/scala/generated-and-checked-in/testdb/customers/CustomersId.scala index 80f9609646..70366e71f6 100644 --- a/testers/duckdb/scala/generated-and-checked-in/testdb/customers/CustomersId.scala +++ b/testers/duckdb/scala/generated-and-checked-in/testdb/customers/CustomersId.scala @@ -17,7 +17,7 @@ case class CustomersId(@JsonValue value: Int) extends scala.AnyVal object CustomersId { given bijection: Bijection[CustomersId, Int] = Bijection.apply[CustomersId, Int](_.value)(CustomersId.apply) - given dbTypeArray: DuckDbType[Array[CustomersId]] = DuckDbTypes.integerArray.bimap(xs => xs.map(CustomersId.apply), xs => xs.map(_.value)) - given duckDbType: DuckDbType[CustomersId] = ScalaDbTypes.DuckDbTypes.integer.bimap(CustomersId.apply, _.value) + + given duckDbTypeArray: DuckDbType[Array[CustomersId]] = DuckDbTypes.integerArray.bimap(xs => xs.map(CustomersId.apply), xs => xs.map(_.value)) } \ No newline at end of file diff --git a/testers/duckdb/scala/generated-and-checked-in/testdb/customers/CustomersRepoImpl.scala b/testers/duckdb/scala/generated-and-checked-in/testdb/customers/CustomersRepoImpl.scala index 30d152939b..fe8717b22c 100644 --- a/testers/duckdb/scala/generated-and-checked-in/testdb/customers/CustomersRepoImpl.scala +++ b/testers/duckdb/scala/generated-and-checked-in/testdb/customers/CustomersRepoImpl.scala @@ -15,6 +15,7 @@ import dev.typr.foundations.scala.UpdateBuilder import java.sql.Connection import scala.collection.mutable.ListBuffer import testdb.Priority +import testdb.userdefined.Email import dev.typr.foundations.scala.Fragment.sql class CustomersRepoImpl extends CustomersRepo { @@ -25,14 +26,14 @@ class CustomersRepoImpl extends CustomersRepo { override def deleteByIds(customerIds: Array[CustomersId])(using c: Connection): Int = { sql"""delete from "customers" - where "customer_id" = ANY(${Fragment.encode(CustomersId.dbTypeArray, customerIds)})""" + where "customer_id" = ANY(${Fragment.encode(CustomersId.duckDbTypeArray, customerIds)})""" .update() .runUnchecked(c) } override def insert(unsaved: CustomersRow)(using c: Connection): CustomersRow = { sql"""insert into "customers"("customer_id", "name", "email", "created_at", "priority") - values (${Fragment.encode(CustomersId.duckDbType, unsaved.customerId)}, ${Fragment.encode(DuckDbTypes.varchar, unsaved.name)}, ${Fragment.encode(DuckDbTypes.varchar.nullable, unsaved.email)}, ${Fragment.encode(DuckDbTypes.timestamp, unsaved.createdAt)}, ${Fragment.encode(Priority.duckDbType.nullable, unsaved.priority)}) + values (${Fragment.encode(CustomersId.duckDbType, unsaved.customerId)}, ${Fragment.encode(DuckDbTypes.varchar, unsaved.name)}, ${Fragment.encode(Email.duckDbType.nullable, unsaved.email)}, ${Fragment.encode(DuckDbTypes.timestamp, unsaved.createdAt)}, ${Fragment.encode(Priority.duckDbType.nullable, unsaved.priority)}) RETURNING "customer_id", "name", "email", "created_at", "priority" """ .updateReturning(CustomersRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -46,7 +47,7 @@ class CustomersRepoImpl extends CustomersRepo { columns.addOne(Fragment.lit(""""name"""")): @scala.annotation.nowarn values.addOne(sql"${Fragment.encode(DuckDbTypes.varchar, unsaved.name)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""email"""")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(DuckDbTypes.varchar.nullable, unsaved.email)}"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(Email.duckDbType.nullable, unsaved.email)}"): @scala.annotation.nowarn unsaved.createdAt.visit( { }, value => { columns.addOne(Fragment.lit(""""created_at"""")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(DuckDbTypes.timestamp, value)}"): @scala.annotation.nowarn } @@ -81,7 +82,7 @@ class CustomersRepoImpl extends CustomersRepo { override def selectByIds(customerIds: Array[CustomersId])(using c: Connection): List[CustomersRow] = { sql"""select "customer_id", "name", "email", "created_at", "priority" from "customers" - where "customer_id" = ANY(${Fragment.encode(CustomersId.dbTypeArray, customerIds)})""".query(CustomersRow.`_rowParser`.all()).runUnchecked(c) + where "customer_id" = ANY(${Fragment.encode(CustomersId.duckDbTypeArray, customerIds)})""".query(CustomersRow.`_rowParser`.all()).runUnchecked(c) } override def selectByIdsTracked(customerIds: Array[CustomersId])(using c: Connection): Map[CustomersId, CustomersRow] = { @@ -96,7 +97,7 @@ class CustomersRepoImpl extends CustomersRepo { val customerId: CustomersId = row.customerId return sql"""update "customers" set "name" = ${Fragment.encode(DuckDbTypes.varchar, row.name)}, - "email" = ${Fragment.encode(DuckDbTypes.varchar.nullable, row.email)}, + "email" = ${Fragment.encode(Email.duckDbType.nullable, row.email)}, "created_at" = ${Fragment.encode(DuckDbTypes.timestamp, row.createdAt)}, "priority" = ${Fragment.encode(Priority.duckDbType.nullable, row.priority)} where "customer_id" = ${Fragment.encode(CustomersId.duckDbType, customerId)}""".update().runUnchecked(c) > 0 @@ -104,7 +105,7 @@ class CustomersRepoImpl extends CustomersRepo { override def upsert(unsaved: CustomersRow)(using c: Connection): CustomersRow = { sql"""INSERT INTO "customers"("customer_id", "name", "email", "created_at", "priority") - VALUES (${Fragment.encode(CustomersId.duckDbType, unsaved.customerId)}, ${Fragment.encode(DuckDbTypes.varchar, unsaved.name)}, ${Fragment.encode(DuckDbTypes.varchar.nullable, unsaved.email)}, ${Fragment.encode(DuckDbTypes.timestamp, unsaved.createdAt)}, ${Fragment.encode(Priority.duckDbType.nullable, unsaved.priority)}) + VALUES (${Fragment.encode(CustomersId.duckDbType, unsaved.customerId)}, ${Fragment.encode(DuckDbTypes.varchar, unsaved.name)}, ${Fragment.encode(Email.duckDbType.nullable, unsaved.email)}, ${Fragment.encode(DuckDbTypes.timestamp, unsaved.createdAt)}, ${Fragment.encode(Priority.duckDbType.nullable, unsaved.priority)}) ON CONFLICT ("customer_id") DO UPDATE SET "name" = EXCLUDED."name", diff --git a/testers/duckdb/scala/generated-and-checked-in/testdb/customers/CustomersRow.scala b/testers/duckdb/scala/generated-and-checked-in/testdb/customers/CustomersRow.scala index 79c690df4e..514aff829e 100644 --- a/testers/duckdb/scala/generated-and-checked-in/testdb/customers/CustomersRow.scala +++ b/testers/duckdb/scala/generated-and-checked-in/testdb/customers/CustomersRow.scala @@ -14,6 +14,7 @@ import dev.typr.foundations.scala.RowParsers import java.time.LocalDateTime import testdb.Priority import testdb.customtypes.Defaulted +import testdb.userdefined.Email /** Table: customers * Primary key: customer_id @@ -21,12 +22,12 @@ import testdb.customtypes.Defaulted case class CustomersRow( @JsonProperty("customer_id") customerId: CustomersId, name: String, - email: Option[String], + email: Option[/* user-picked */ Email], /** Default: current_timestamp */ @JsonProperty("created_at") createdAt: LocalDateTime, /** Default: 'medium' */ priority: Option[Priority] -) extends Tuple5[CustomersId, String, Option[String], LocalDateTime, Option[Priority]] { +) extends Tuple5[CustomersId, String, Option[/* user-picked */ Email], LocalDateTime, Option[Priority]] { def id: CustomersId = customerId def toUnsavedRow( @@ -46,7 +47,7 @@ case class CustomersRow( override def `_2`: String = name - override def `_3`: Option[String] = email + override def `_3`: Option[/* user-picked */ Email] = email override def `_4`: LocalDateTime = createdAt @@ -54,5 +55,5 @@ case class CustomersRow( } object CustomersRow { - val `_rowParser`: RowParser[CustomersRow] = RowParsers.of(CustomersId.duckDbType, DuckDbTypes.varchar, DuckDbTypes.varchar.nullable, DuckDbTypes.timestamp, Priority.duckDbType.nullable)(CustomersRow.apply)(row => Array[Any](row.customerId, row.name, row.email, row.createdAt, row.priority)) + val `_rowParser`: RowParser[CustomersRow] = RowParsers.of(CustomersId.duckDbType, DuckDbTypes.varchar, Email.duckDbType.nullable, DuckDbTypes.timestamp, Priority.duckDbType.nullable)(CustomersRow.apply)(row => Array[Any](row.customerId, row.name, row.email, row.createdAt, row.priority)) } \ No newline at end of file diff --git a/testers/duckdb/scala/generated-and-checked-in/testdb/customers/CustomersRowUnsaved.scala b/testers/duckdb/scala/generated-and-checked-in/testdb/customers/CustomersRowUnsaved.scala index bb042bd641..c4a4a9dddf 100644 --- a/testers/duckdb/scala/generated-and-checked-in/testdb/customers/CustomersRowUnsaved.scala +++ b/testers/duckdb/scala/generated-and-checked-in/testdb/customers/CustomersRowUnsaved.scala @@ -10,12 +10,13 @@ import java.time.LocalDateTime import testdb.Priority import testdb.customtypes.Defaulted import testdb.customtypes.Defaulted.UseDefault +import testdb.userdefined.Email /** This class corresponds to a row in table `customers` which has not been persisted yet */ case class CustomersRowUnsaved( @JsonProperty("customer_id") customerId: CustomersId, name: String, - email: Option[String] = None, + email: Option[/* user-picked */ Email] = None, /** Default: current_timestamp */ @JsonProperty("created_at") createdAt: Defaulted[LocalDateTime] = new UseDefault(), /** Default: 'medium' */ diff --git a/testers/duckdb/scala/generated-and-checked-in/testdb/order_summary_by_customer/OrderSummaryByCustomerSqlRow.scala b/testers/duckdb/scala/generated-and-checked-in/testdb/order_summary_by_customer/OrderSummaryByCustomerSqlRow.scala index 04e6ce37ef..67cf325b09 100644 --- a/testers/duckdb/scala/generated-and-checked-in/testdb/order_summary_by_customer/OrderSummaryByCustomerSqlRow.scala +++ b/testers/duckdb/scala/generated-and-checked-in/testdb/order_summary_by_customer/OrderSummaryByCustomerSqlRow.scala @@ -15,6 +15,7 @@ import dev.typr.foundations.scala.ScalaDbTypes import java.time.LocalDate import testdb.Priority import testdb.customers.CustomersId +import testdb.userdefined.Email /** SQL file: order_summary_by_customer.sql */ case class OrderSummaryByCustomerSqlRow( @@ -23,7 +24,7 @@ case class OrderSummaryByCustomerSqlRow( /** Points to [[testdb.customers.CustomersRow.name]] */ @JsonProperty("customer_name") customerName: String, /** Points to [[testdb.customers.CustomersRow.email]] */ - email: Option[String], + email: Option[/* user-picked */ Email], /** Points to [[testdb.customers.CustomersRow.priority]] */ priority: Option[Priority], /** Points to [[testdb.orders.OrdersRow.orderId]] */ @@ -36,12 +37,12 @@ case class OrderSummaryByCustomerSqlRow( @JsonProperty("first_order_date") firstOrderDate: Option[LocalDate], /** Points to [[testdb.orders.OrdersRow.totalAmount]] */ @JsonProperty("avg_order_amount") avgOrderAmount: Option[Double] -) extends Tuple9[CustomersId, String, Option[String], Option[Priority], Option[Long], Option[BigDecimal], Option[LocalDate], Option[LocalDate], Option[Double]] { +) extends Tuple9[CustomersId, String, Option[/* user-picked */ Email], Option[Priority], Option[Long], Option[BigDecimal], Option[LocalDate], Option[LocalDate], Option[Double]] { override def `_1`: CustomersId = customerId override def `_2`: String = customerName - override def `_3`: Option[String] = email + override def `_3`: Option[/* user-picked */ Email] = email override def `_4`: Option[Priority] = priority @@ -57,5 +58,5 @@ case class OrderSummaryByCustomerSqlRow( } object OrderSummaryByCustomerSqlRow { - val `_rowParser`: RowParser[OrderSummaryByCustomerSqlRow] = RowParsers.of(CustomersId.duckDbType, DuckDbTypes.varchar, DuckDbTypes.varchar.nullable, Priority.duckDbType.nullable, ScalaDbTypes.DuckDbTypes.bigint.nullable, ScalaDbTypes.DuckDbTypes.numeric.nullable, DuckDbTypes.date.nullable, DuckDbTypes.date.nullable, ScalaDbTypes.DuckDbTypes.double_.nullable)(OrderSummaryByCustomerSqlRow.apply)(row => Array[Any](row.customerId, row.customerName, row.email, row.priority, row.orderCount, row.totalSpent, row.lastOrderDate, row.firstOrderDate, row.avgOrderAmount)) + val `_rowParser`: RowParser[OrderSummaryByCustomerSqlRow] = RowParsers.of(CustomersId.duckDbType, DuckDbTypes.varchar, Email.duckDbType.nullable, Priority.duckDbType.nullable, ScalaDbTypes.DuckDbTypes.bigint.nullable, ScalaDbTypes.DuckDbTypes.numeric.nullable, DuckDbTypes.date.nullable, DuckDbTypes.date.nullable, ScalaDbTypes.DuckDbTypes.double_.nullable)(OrderSummaryByCustomerSqlRow.apply)(row => Array[Any](row.customerId, row.customerName, row.email, row.priority, row.orderCount, row.totalSpent, row.lastOrderDate, row.firstOrderDate, row.avgOrderAmount)) } \ No newline at end of file diff --git a/testers/duckdb/scala/generated-and-checked-in/testdb/orders/OrdersId.scala b/testers/duckdb/scala/generated-and-checked-in/testdb/orders/OrdersId.scala index 93dc4a2733..9b1b775355 100644 --- a/testers/duckdb/scala/generated-and-checked-in/testdb/orders/OrdersId.scala +++ b/testers/duckdb/scala/generated-and-checked-in/testdb/orders/OrdersId.scala @@ -17,7 +17,7 @@ case class OrdersId(@JsonValue value: Int) extends scala.AnyVal object OrdersId { given bijection: Bijection[OrdersId, Int] = Bijection.apply[OrdersId, Int](_.value)(OrdersId.apply) - given dbTypeArray: DuckDbType[Array[OrdersId]] = DuckDbTypes.integerArray.bimap(xs => xs.map(OrdersId.apply), xs => xs.map(_.value)) - given duckDbType: DuckDbType[OrdersId] = ScalaDbTypes.DuckDbTypes.integer.bimap(OrdersId.apply, _.value) + + given duckDbTypeArray: DuckDbType[Array[OrdersId]] = DuckDbTypes.integerArray.bimap(xs => xs.map(OrdersId.apply), xs => xs.map(_.value)) } \ No newline at end of file diff --git a/testers/duckdb/scala/generated-and-checked-in/testdb/orders/OrdersRepoImpl.scala b/testers/duckdb/scala/generated-and-checked-in/testdb/orders/OrdersRepoImpl.scala index 1fd9d545e5..86570ed991 100644 --- a/testers/duckdb/scala/generated-and-checked-in/testdb/orders/OrdersRepoImpl.scala +++ b/testers/duckdb/scala/generated-and-checked-in/testdb/orders/OrdersRepoImpl.scala @@ -25,7 +25,7 @@ class OrdersRepoImpl extends OrdersRepo { override def deleteByIds(orderIds: Array[OrdersId])(using c: Connection): Int = { sql"""delete from "orders" - where "order_id" = ANY(${Fragment.encode(OrdersId.dbTypeArray, orderIds)})""" + where "order_id" = ANY(${Fragment.encode(OrdersId.duckDbTypeArray, orderIds)})""" .update() .runUnchecked(c) } @@ -81,7 +81,7 @@ class OrdersRepoImpl extends OrdersRepo { override def selectByIds(orderIds: Array[OrdersId])(using c: Connection): List[OrdersRow] = { sql"""select "order_id", "customer_id", "order_date", "total_amount", "status" from "orders" - where "order_id" = ANY(${Fragment.encode(OrdersId.dbTypeArray, orderIds)})""".query(OrdersRow.`_rowParser`.all()).runUnchecked(c) + where "order_id" = ANY(${Fragment.encode(OrdersId.duckDbTypeArray, orderIds)})""".query(OrdersRow.`_rowParser`.all()).runUnchecked(c) } override def selectByIdsTracked(orderIds: Array[OrdersId])(using c: Connection): Map[OrdersId, OrdersRow] = { diff --git a/testers/duckdb/scala/generated-and-checked-in/testdb/precisetypes/Decimal10_2.scala b/testers/duckdb/scala/generated-and-checked-in/testdb/precisetypes/Decimal10_2.scala index 673ce4b7ac..b73f5d89b8 100644 --- a/testers/duckdb/scala/generated-and-checked-in/testdb/precisetypes/Decimal10_2.scala +++ b/testers/duckdb/scala/generated-and-checked-in/testdb/precisetypes/Decimal10_2.scala @@ -38,7 +38,7 @@ object Decimal10_2 { given duckDbType: DuckDbType[Decimal10_2] = ScalaDbTypes.DuckDbTypes.numeric.bimap(Decimal10_2.apply, _.value) - def of(value: BigDecimal): Option[Decimal10_2] = { val scaled = value.setScale(2, scala.math.BigDecimal.RoundingMode.HALF_UP); if (scaled.precision <= 10) Some(new Decimal10_2(scaled)) else None } + def of(value: BigDecimal): Option[Decimal10_2] = { val scaled = value.setScale(2, BigDecimal.RoundingMode.HALF_UP); if (scaled.precision <= 10) Some(new Decimal10_2(scaled)) else None } def of(value: Int): Decimal10_2 = new Decimal10_2(BigDecimal(value)) @@ -46,5 +46,5 @@ object Decimal10_2 { def of(value: Double): Option[Decimal10_2] = Decimal10_2.of(BigDecimal(value)) - def unsafeForce(value: BigDecimal): Decimal10_2 = { val scaled = value.setScale(2, scala.math.BigDecimal.RoundingMode.HALF_UP); if (scaled.precision > 10) throw new IllegalArgumentException("Value exceeds precision(10, 2)"); new Decimal10_2(scaled) } + def unsafeForce(value: BigDecimal): Decimal10_2 = { val scaled = value.setScale(2, BigDecimal.RoundingMode.HALF_UP); if (scaled.precision > 10) throw new IllegalArgumentException("Value exceeds precision(10, 2)"); new Decimal10_2(scaled) } } \ No newline at end of file diff --git a/testers/duckdb/scala/generated-and-checked-in/testdb/precisetypes/Decimal18_4.scala b/testers/duckdb/scala/generated-and-checked-in/testdb/precisetypes/Decimal18_4.scala index f0e810964c..bf0f0cb301 100644 --- a/testers/duckdb/scala/generated-and-checked-in/testdb/precisetypes/Decimal18_4.scala +++ b/testers/duckdb/scala/generated-and-checked-in/testdb/precisetypes/Decimal18_4.scala @@ -38,7 +38,7 @@ object Decimal18_4 { given duckDbType: DuckDbType[Decimal18_4] = ScalaDbTypes.DuckDbTypes.numeric.bimap(Decimal18_4.apply, _.value) - def of(value: BigDecimal): Option[Decimal18_4] = { val scaled = value.setScale(4, scala.math.BigDecimal.RoundingMode.HALF_UP); if (scaled.precision <= 18) Some(new Decimal18_4(scaled)) else None } + def of(value: BigDecimal): Option[Decimal18_4] = { val scaled = value.setScale(4, BigDecimal.RoundingMode.HALF_UP); if (scaled.precision <= 18) Some(new Decimal18_4(scaled)) else None } def of(value: Int): Decimal18_4 = new Decimal18_4(BigDecimal(value)) @@ -46,5 +46,5 @@ object Decimal18_4 { def of(value: Double): Option[Decimal18_4] = Decimal18_4.of(BigDecimal(value)) - def unsafeForce(value: BigDecimal): Decimal18_4 = { val scaled = value.setScale(4, scala.math.BigDecimal.RoundingMode.HALF_UP); if (scaled.precision > 18) throw new IllegalArgumentException("Value exceeds precision(18, 4)"); new Decimal18_4(scaled) } + def unsafeForce(value: BigDecimal): Decimal18_4 = { val scaled = value.setScale(4, BigDecimal.RoundingMode.HALF_UP); if (scaled.precision > 18) throw new IllegalArgumentException("Value exceeds precision(18, 4)"); new Decimal18_4(scaled) } } \ No newline at end of file diff --git a/testers/duckdb/scala/generated-and-checked-in/testdb/precisetypes/Decimal5_2.scala b/testers/duckdb/scala/generated-and-checked-in/testdb/precisetypes/Decimal5_2.scala index ed877fc2bf..a24f5ec461 100644 --- a/testers/duckdb/scala/generated-and-checked-in/testdb/precisetypes/Decimal5_2.scala +++ b/testers/duckdb/scala/generated-and-checked-in/testdb/precisetypes/Decimal5_2.scala @@ -38,7 +38,7 @@ object Decimal5_2 { given duckDbType: DuckDbType[Decimal5_2] = ScalaDbTypes.DuckDbTypes.numeric.bimap(Decimal5_2.apply, _.value) - def of(value: BigDecimal): Option[Decimal5_2] = { val scaled = value.setScale(2, scala.math.BigDecimal.RoundingMode.HALF_UP); if (scaled.precision <= 5) Some(new Decimal5_2(scaled)) else None } + def of(value: BigDecimal): Option[Decimal5_2] = { val scaled = value.setScale(2, BigDecimal.RoundingMode.HALF_UP); if (scaled.precision <= 5) Some(new Decimal5_2(scaled)) else None } def of(value: Int): Decimal5_2 = new Decimal5_2(BigDecimal(value)) @@ -46,5 +46,5 @@ object Decimal5_2 { def of(value: Double): Option[Decimal5_2] = Decimal5_2.of(BigDecimal(value)) - def unsafeForce(value: BigDecimal): Decimal5_2 = { val scaled = value.setScale(2, scala.math.BigDecimal.RoundingMode.HALF_UP); if (scaled.precision > 5) throw new IllegalArgumentException("Value exceeds precision(5, 2)"); new Decimal5_2(scaled) } + def unsafeForce(value: BigDecimal): Decimal5_2 = { val scaled = value.setScale(2, BigDecimal.RoundingMode.HALF_UP); if (scaled.precision > 5) throw new IllegalArgumentException("Value exceeds precision(5, 2)"); new Decimal5_2(scaled) } } \ No newline at end of file diff --git a/testers/duckdb/scala/generated-and-checked-in/testdb/precision_types/PrecisionTypesId.scala b/testers/duckdb/scala/generated-and-checked-in/testdb/precision_types/PrecisionTypesId.scala index 17281efb02..7af267f4e6 100644 --- a/testers/duckdb/scala/generated-and-checked-in/testdb/precision_types/PrecisionTypesId.scala +++ b/testers/duckdb/scala/generated-and-checked-in/testdb/precision_types/PrecisionTypesId.scala @@ -17,7 +17,7 @@ case class PrecisionTypesId(@JsonValue value: Int) extends scala.AnyVal object PrecisionTypesId { given bijection: Bijection[PrecisionTypesId, Int] = Bijection.apply[PrecisionTypesId, Int](_.value)(PrecisionTypesId.apply) - given dbTypeArray: DuckDbType[Array[PrecisionTypesId]] = DuckDbTypes.integerArray.bimap(xs => xs.map(PrecisionTypesId.apply), xs => xs.map(_.value)) - given duckDbType: DuckDbType[PrecisionTypesId] = ScalaDbTypes.DuckDbTypes.integer.bimap(PrecisionTypesId.apply, _.value) + + given duckDbTypeArray: DuckDbType[Array[PrecisionTypesId]] = DuckDbTypes.integerArray.bimap(xs => xs.map(PrecisionTypesId.apply), xs => xs.map(_.value)) } \ No newline at end of file diff --git a/testers/duckdb/scala/generated-and-checked-in/testdb/precision_types/PrecisionTypesRepoImpl.scala b/testers/duckdb/scala/generated-and-checked-in/testdb/precision_types/PrecisionTypesRepoImpl.scala index 27cc53f2eb..2456a412dc 100644 --- a/testers/duckdb/scala/generated-and-checked-in/testdb/precision_types/PrecisionTypesRepoImpl.scala +++ b/testers/duckdb/scala/generated-and-checked-in/testdb/precision_types/PrecisionTypesRepoImpl.scala @@ -28,7 +28,7 @@ class PrecisionTypesRepoImpl extends PrecisionTypesRepo { override def deleteByIds(ids: Array[PrecisionTypesId])(using c: Connection): Int = { sql"""delete from "precision_types" - where "id" = ANY(${Fragment.encode(PrecisionTypesId.dbTypeArray, ids)})""" + where "id" = ANY(${Fragment.encode(PrecisionTypesId.duckDbTypeArray, ids)})""" .update() .runUnchecked(c) } @@ -58,7 +58,7 @@ class PrecisionTypesRepoImpl extends PrecisionTypesRepo { override def selectByIds(ids: Array[PrecisionTypesId])(using c: Connection): List[PrecisionTypesRow] = { sql"""select "id", "string10", "string20", "string50", "string100", "string255", "decimal5_2", "decimal10_2", "decimal18_4", "decimal5_0", "decimal10_0", "decimal18_0" from "precision_types" - where "id" = ANY(${Fragment.encode(PrecisionTypesId.dbTypeArray, ids)})""".query(PrecisionTypesRow.`_rowParser`.all()).runUnchecked(c) + where "id" = ANY(${Fragment.encode(PrecisionTypesId.duckDbTypeArray, ids)})""".query(PrecisionTypesRow.`_rowParser`.all()).runUnchecked(c) } override def selectByIdsTracked(ids: Array[PrecisionTypesId])(using c: Connection): Map[PrecisionTypesId, PrecisionTypesRow] = { diff --git a/testers/duckdb/scala/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullId.scala b/testers/duckdb/scala/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullId.scala index 592faaa9a9..902dde8759 100644 --- a/testers/duckdb/scala/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullId.scala +++ b/testers/duckdb/scala/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullId.scala @@ -17,7 +17,7 @@ case class PrecisionTypesNullId(@JsonValue value: Int) extends scala.AnyVal object PrecisionTypesNullId { given bijection: Bijection[PrecisionTypesNullId, Int] = Bijection.apply[PrecisionTypesNullId, Int](_.value)(PrecisionTypesNullId.apply) - given dbTypeArray: DuckDbType[Array[PrecisionTypesNullId]] = DuckDbTypes.integerArray.bimap(xs => xs.map(PrecisionTypesNullId.apply), xs => xs.map(_.value)) - given duckDbType: DuckDbType[PrecisionTypesNullId] = ScalaDbTypes.DuckDbTypes.integer.bimap(PrecisionTypesNullId.apply, _.value) + + given duckDbTypeArray: DuckDbType[Array[PrecisionTypesNullId]] = DuckDbTypes.integerArray.bimap(xs => xs.map(PrecisionTypesNullId.apply), xs => xs.map(_.value)) } \ No newline at end of file diff --git a/testers/duckdb/scala/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullRepoImpl.scala b/testers/duckdb/scala/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullRepoImpl.scala index 76446fea82..94b766fcfd 100644 --- a/testers/duckdb/scala/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullRepoImpl.scala +++ b/testers/duckdb/scala/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullRepoImpl.scala @@ -29,7 +29,7 @@ class PrecisionTypesNullRepoImpl extends PrecisionTypesNullRepo { override def deleteByIds(ids: Array[PrecisionTypesNullId])(using c: Connection): Int = { sql"""delete from "precision_types_null" - where "id" = ANY(${Fragment.encode(PrecisionTypesNullId.dbTypeArray, ids)})""" + where "id" = ANY(${Fragment.encode(PrecisionTypesNullId.duckDbTypeArray, ids)})""" .update() .runUnchecked(c) } @@ -59,7 +59,7 @@ class PrecisionTypesNullRepoImpl extends PrecisionTypesNullRepo { override def selectByIds(ids: Array[PrecisionTypesNullId])(using c: Connection): List[PrecisionTypesNullRow] = { sql"""select "id", "string10", "string20", "string50", "string100", "string255", "decimal5_2", "decimal10_2", "decimal18_4", "decimal5_0", "decimal10_0", "decimal18_0" from "precision_types_null" - where "id" = ANY(${Fragment.encode(PrecisionTypesNullId.dbTypeArray, ids)})""".query(PrecisionTypesNullRow.`_rowParser`.all()).runUnchecked(c) + where "id" = ANY(${Fragment.encode(PrecisionTypesNullId.duckDbTypeArray, ids)})""".query(PrecisionTypesNullRow.`_rowParser`.all()).runUnchecked(c) } override def selectByIdsTracked(ids: Array[PrecisionTypesNullId])(using c: Connection): Map[PrecisionTypesNullId, PrecisionTypesNullRow] = { diff --git a/testers/duckdb/scala/generated-and-checked-in/testdb/product_summary/ProductSummarySqlRow.scala b/testers/duckdb/scala/generated-and-checked-in/testdb/product_summary/ProductSummarySqlRow.scala index a72b1e91c3..76618b9581 100644 --- a/testers/duckdb/scala/generated-and-checked-in/testdb/product_summary/ProductSummarySqlRow.scala +++ b/testers/duckdb/scala/generated-and-checked-in/testdb/product_summary/ProductSummarySqlRow.scala @@ -27,7 +27,7 @@ case class ProductSummarySqlRow( @JsonProperty("order_count") orderCount: Long, /** Points to [[testdb.order_items.OrderItemsRow.quantity]] */ @JsonProperty("total_quantity") totalQuantity: Option[Long], - /** Points to [[testdb.order_items.OrderItemsRow.quantity]] */ + /** Points to [[testdb.order_items.OrderItemsRow.unitPrice]] */ @JsonProperty("total_revenue") totalRevenue: Option[BigDecimal] ) extends Tuple7[ProductsId, String, String, BigDecimal, Long, Option[Long], Option[BigDecimal]] { override def `_1`: ProductsId = productId diff --git a/testers/duckdb/scala/generated-and-checked-in/testdb/products/ProductsId.scala b/testers/duckdb/scala/generated-and-checked-in/testdb/products/ProductsId.scala index 3d6f991c51..262c240dd7 100644 --- a/testers/duckdb/scala/generated-and-checked-in/testdb/products/ProductsId.scala +++ b/testers/duckdb/scala/generated-and-checked-in/testdb/products/ProductsId.scala @@ -17,7 +17,7 @@ case class ProductsId(@JsonValue value: Int) extends scala.AnyVal object ProductsId { given bijection: Bijection[ProductsId, Int] = Bijection.apply[ProductsId, Int](_.value)(ProductsId.apply) - given dbTypeArray: DuckDbType[Array[ProductsId]] = DuckDbTypes.integerArray.bimap(xs => xs.map(ProductsId.apply), xs => xs.map(_.value)) - given duckDbType: DuckDbType[ProductsId] = ScalaDbTypes.DuckDbTypes.integer.bimap(ProductsId.apply, _.value) + + given duckDbTypeArray: DuckDbType[Array[ProductsId]] = DuckDbTypes.integerArray.bimap(xs => xs.map(ProductsId.apply), xs => xs.map(_.value)) } \ No newline at end of file diff --git a/testers/duckdb/scala/generated-and-checked-in/testdb/products/ProductsRepoImpl.scala b/testers/duckdb/scala/generated-and-checked-in/testdb/products/ProductsRepoImpl.scala index 715bdf6e96..f9a235e274 100644 --- a/testers/duckdb/scala/generated-and-checked-in/testdb/products/ProductsRepoImpl.scala +++ b/testers/duckdb/scala/generated-and-checked-in/testdb/products/ProductsRepoImpl.scala @@ -24,7 +24,7 @@ class ProductsRepoImpl extends ProductsRepo { override def deleteByIds(productIds: Array[ProductsId])(using c: Connection): Int = { sql"""delete from "products" - where "product_id" = ANY(${Fragment.encode(ProductsId.dbTypeArray, productIds)})""" + where "product_id" = ANY(${Fragment.encode(ProductsId.duckDbTypeArray, productIds)})""" .update() .runUnchecked(c) } @@ -54,7 +54,7 @@ class ProductsRepoImpl extends ProductsRepo { override def selectByIds(productIds: Array[ProductsId])(using c: Connection): List[ProductsRow] = { sql"""select "product_id", "sku", "name", "price", "metadata" from "products" - where "product_id" = ANY(${Fragment.encode(ProductsId.dbTypeArray, productIds)})""".query(ProductsRow.`_rowParser`.all()).runUnchecked(c) + where "product_id" = ANY(${Fragment.encode(ProductsId.duckDbTypeArray, productIds)})""".query(ProductsRow.`_rowParser`.all()).runUnchecked(c) } override def selectByIdsTracked(productIds: Array[ProductsId])(using c: Connection): Map[ProductsId, ProductsRow] = { diff --git a/testers/duckdb/scala/generated-and-checked-in/testdb/update_customer_priority/UpdateCustomerPrioritySqlRow.scala b/testers/duckdb/scala/generated-and-checked-in/testdb/update_customer_priority/UpdateCustomerPrioritySqlRow.scala index 120bad1c2d..dd2d2e52be 100644 --- a/testers/duckdb/scala/generated-and-checked-in/testdb/update_customer_priority/UpdateCustomerPrioritySqlRow.scala +++ b/testers/duckdb/scala/generated-and-checked-in/testdb/update_customer_priority/UpdateCustomerPrioritySqlRow.scala @@ -14,6 +14,7 @@ import dev.typr.foundations.scala.RowParsers import java.time.LocalDateTime import testdb.Priority import testdb.customers.CustomersId +import testdb.userdefined.Email /** SQL file: update_customer_priority.sql */ case class UpdateCustomerPrioritySqlRow( @@ -22,17 +23,17 @@ case class UpdateCustomerPrioritySqlRow( /** Points to [[testdb.customers.CustomersRow.name]] */ name: String, /** Points to [[testdb.customers.CustomersRow.email]] */ - email: Option[String], + email: Option[/* user-picked */ Email], /** Points to [[testdb.customers.CustomersRow.createdAt]] */ @JsonProperty("created_at") createdAt: LocalDateTime, /** Points to [[testdb.customers.CustomersRow.priority]] */ priority: Option[Priority] -) extends Tuple5[CustomersId, String, Option[String], LocalDateTime, Option[Priority]] { +) extends Tuple5[CustomersId, String, Option[/* user-picked */ Email], LocalDateTime, Option[Priority]] { override def `_1`: CustomersId = customerId override def `_2`: String = name - override def `_3`: Option[String] = email + override def `_3`: Option[/* user-picked */ Email] = email override def `_4`: LocalDateTime = createdAt @@ -40,5 +41,5 @@ case class UpdateCustomerPrioritySqlRow( } object UpdateCustomerPrioritySqlRow { - val `_rowParser`: RowParser[UpdateCustomerPrioritySqlRow] = RowParsers.of(CustomersId.duckDbType, DuckDbTypes.varchar, DuckDbTypes.varchar.nullable, DuckDbTypes.timestamp, Priority.duckDbType.nullable)(UpdateCustomerPrioritySqlRow.apply)(row => Array[Any](row.customerId, row.name, row.email, row.createdAt, row.priority)) + val `_rowParser`: RowParser[UpdateCustomerPrioritySqlRow] = RowParsers.of(CustomersId.duckDbType, DuckDbTypes.varchar, Email.duckDbType.nullable, DuckDbTypes.timestamp, Priority.duckDbType.nullable)(UpdateCustomerPrioritySqlRow.apply)(row => Array[Any](row.customerId, row.name, row.email, row.createdAt, row.priority)) } \ No newline at end of file diff --git a/testers/duckdb/scala/generated-and-checked-in/testdb/userdefined/Email.scala b/testers/duckdb/scala/generated-and-checked-in/testdb/userdefined/Email.scala new file mode 100644 index 0000000000..05777fa450 --- /dev/null +++ b/testers/duckdb/scala/generated-and-checked-in/testdb/userdefined/Email.scala @@ -0,0 +1,24 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package testdb.userdefined + +import com.fasterxml.jackson.annotation.JsonValue +import dev.typr.foundations.DuckDbType +import dev.typr.foundations.DuckDbTypes +import dev.typr.foundations.scala.Bijection + +/** Shared type `Email` + * Generated from TypeDefinitions matching + */ +case class Email(@JsonValue value: String) extends scala.AnyVal + +object Email { + given bijection: Bijection[Email, String] = Bijection.apply[Email, String](_.value)(Email.apply) + + given duckDbType: DuckDbType[Email] = DuckDbTypes.varchar.bimap(Email.apply, _.value) + + given duckDbTypeArray: DuckDbType[Array[Email]] = DuckDbTypes.varcharArray.bimap(xs => xs.map(Email.apply), xs => xs.map(_.value)) +} \ No newline at end of file diff --git a/testers/duckdb/scala/src/scala/testdb/DSLTest.scala b/testers/duckdb/scala/src/scala/testdb/DSLTest.scala index 01c4bf5a20..6378528295 100644 --- a/testers/duckdb/scala/src/scala/testdb/DSLTest.scala +++ b/testers/duckdb/scala/src/scala/testdb/DSLTest.scala @@ -4,6 +4,7 @@ import dev.typr.foundations.dsl.Bijection import org.junit.Assert._ import org.junit.Test import testdb.customers._ +import testdb.userdefined.Email import java.time.LocalDateTime @@ -20,7 +21,7 @@ class DSLTest { CustomersRow( CustomersId(5001), "DSL Test User", - Some("dsl@test.com"), + Some(Email("dsl@test.com")), LocalDateTime.now(), Some(Priority.high) ) @@ -360,7 +361,7 @@ class DSLTest { CustomersRow( CustomersId(5700), "ProjectionTest", - Some("projection@test.com"), + Some(Email("projection@test.com")), LocalDateTime.now(), None ) @@ -373,6 +374,6 @@ class DSLTest { assertEquals(1, results.size) assertEquals("ProjectionTest", results.head._1) - assertEquals("projection@test.com", results.head._2) + assertEquals(Email("projection@test.com"), results.head._2) } } diff --git a/testers/duckdb/scala/src/scala/testdb/MockRepoTest.scala b/testers/duckdb/scala/src/scala/testdb/MockRepoTest.scala index f84b2a2a50..e555eb7bfc 100644 --- a/testers/duckdb/scala/src/scala/testdb/MockRepoTest.scala +++ b/testers/duckdb/scala/src/scala/testdb/MockRepoTest.scala @@ -5,6 +5,7 @@ import org.junit.Assert.* import org.junit.Test import testdb.customers.* import testdb.departments.* +import testdb.userdefined.Email import java.time.LocalDateTime @@ -17,7 +18,7 @@ class MockRepoTest { val customer = CustomersRow( CustomersId(1), "Mock User", - Some("mock@test.com"), + Some(Email("mock@test.com")), LocalDateTime.now(), Some(Priority.medium) ) diff --git a/testers/duckdb/scala/src/scala/testdb/SqlScriptTest.scala b/testers/duckdb/scala/src/scala/testdb/SqlScriptTest.scala index a2f4bbd65e..97ab178ef6 100644 --- a/testers/duckdb/scala/src/scala/testdb/SqlScriptTest.scala +++ b/testers/duckdb/scala/src/scala/testdb/SqlScriptTest.scala @@ -8,6 +8,7 @@ import testdb.department_employee_details._ import testdb.employee_salary_update._ import testdb.order_summary_by_customer._ import testdb.product_summary._ +import testdb.userdefined.Email import java.time.LocalDateTime import scala.util.Random @@ -44,7 +45,7 @@ class SqlScriptTest { def testCustomerSearchWithEmailPattern(): Unit = withConnection { c => given java.sql.Connection = c - val customer = testInsert.Customers(email = Some("unique-scala-search@example.com")) + val customer = testInsert.Customers(email = Some(Email("unique-scala-search@example.com"))) val results = customerSearchRepo( namePattern = None, diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/AllBrandsCategoriesCSet.java b/testers/mariadb/java/generated-and-checked-in/testdb/AllBrandsCategoriesCSet.java index 6fde9d8435..7e1c5411b5 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/AllBrandsCategoriesCSet.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/AllBrandsCategoriesCSet.java @@ -20,11 +20,6 @@ public AllBrandsCategoriesCSet withMembers(Set me } ; - public static MariaType dbType = - MariaTypes.set.bimap( - (MariaSet ms) -> AllBrandsCategoriesCSet.fromString(ms.toCommaSeparated()), - (AllBrandsCategoriesCSet s) -> MariaSet.fromString(s.toCommaSeparated())); - public static AllBrandsCategoriesCSet empty() { return new AllBrandsCategoriesCSet(EnumSet.noneOf(AllBrandsCategoriesCSetMember.class)); } @@ -47,6 +42,11 @@ public static AllBrandsCategoriesCSet fromString(String str) { } ; + public static MariaType mariaType = + MariaTypes.set.bimap( + (MariaSet ms) -> AllBrandsCategoriesCSet.fromString(ms.toCommaSeparated()), + (AllBrandsCategoriesCSet s) -> MariaSet.fromString(s.toCommaSeparated())); + public static AllBrandsCategoriesCSet of(List members) { if (members.isEmpty()) { return new AllBrandsCategoriesCSet(EnumSet.noneOf(AllBrandsCategoriesCSetMember.class)); diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/BestsellerClearanceFSet.java b/testers/mariadb/java/generated-and-checked-in/testdb/BestsellerClearanceFSet.java index bbebb447f5..1e241f0f25 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/BestsellerClearanceFSet.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/BestsellerClearanceFSet.java @@ -20,11 +20,6 @@ public BestsellerClearanceFSet withMembers(Set me } ; - public static MariaType dbType = - MariaTypes.set.bimap( - (MariaSet ms) -> BestsellerClearanceFSet.fromString(ms.toCommaSeparated()), - (BestsellerClearanceFSet s) -> MariaSet.fromString(s.toCommaSeparated())); - public static BestsellerClearanceFSet empty() { return new BestsellerClearanceFSet(EnumSet.noneOf(BestsellerClearanceFSetMember.class)); } @@ -47,6 +42,11 @@ public static BestsellerClearanceFSet fromString(String str) { } ; + public static MariaType mariaType = + MariaTypes.set.bimap( + (MariaSet ms) -> BestsellerClearanceFSet.fromString(ms.toCommaSeparated()), + (BestsellerClearanceFSet s) -> MariaSet.fromString(s.toCommaSeparated())); + public static BestsellerClearanceFSet of(List members) { if (members.isEmpty()) { return new BestsellerClearanceFSet(EnumSet.noneOf(BestsellerClearanceFSetMember.class)); diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/EmailMailPushSmsSet.java b/testers/mariadb/java/generated-and-checked-in/testdb/EmailMailPushSmsSet.java index 79c96305e3..d312c2260f 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/EmailMailPushSmsSet.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/EmailMailPushSmsSet.java @@ -20,11 +20,6 @@ public EmailMailPushSmsSet withMembers(Set members) { } ; - public static MariaType dbType = - MariaTypes.set.bimap( - (MariaSet ms) -> EmailMailPushSmsSet.fromString(ms.toCommaSeparated()), - (EmailMailPushSmsSet s) -> MariaSet.fromString(s.toCommaSeparated())); - public static EmailMailPushSmsSet empty() { return new EmailMailPushSmsSet(EnumSet.noneOf(EmailMailPushSmsSetMember.class)); } @@ -47,6 +42,11 @@ public static EmailMailPushSmsSet fromString(String str) { } ; + public static MariaType mariaType = + MariaTypes.set.bimap( + (MariaSet ms) -> EmailMailPushSmsSet.fromString(ms.toCommaSeparated()), + (EmailMailPushSmsSet s) -> MariaSet.fromString(s.toCommaSeparated())); + public static EmailMailPushSmsSet of(List members) { if (members.isEmpty()) { return new EmailMailPushSmsSet(EnumSet.noneOf(EmailMailPushSmsSetMember.class)); diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/TestInsert.java b/testers/mariadb/java/generated-and-checked-in/testdb/TestInsert.java index 46fe8b466f..f3e7a7bbbc 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/TestInsert.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/TestInsert.java @@ -144,6 +144,9 @@ import testdb.shipping_carriers.ShippingCarriersRepoImpl; import testdb.shipping_carriers.ShippingCarriersRow; import testdb.shipping_carriers.ShippingCarriersRowUnsaved; +import testdb.userdefined.Email; +import testdb.userdefined.FirstName; +import testdb.userdefined.LastName; import testdb.warehouses.WarehousesId; import testdb.warehouses.WarehousesRepoImpl; import testdb.warehouses.WarehousesRow; @@ -236,10 +239,10 @@ public Inserter CustomerStatus() { public Inserter Customers(byte[] passwordHash) { return Inserter.of( new CustomersRowUnsaved( - RandomHelper.alphanumeric(random, 20), + new Email(RandomHelper.alphanumeric(random, 20)), passwordHash, - RandomHelper.alphanumeric(random, 20), - RandomHelper.alphanumeric(random, 20), + new FirstName(RandomHelper.alphanumeric(random, 20)), + new LastName(RandomHelper.alphanumeric(random, 20)), new UseDefault(), new UseDefault(), new UseDefault(), @@ -385,7 +388,7 @@ public Inserter Mariate public Inserter MariatestUnique() { return Inserter.of( new MariatestUniqueRowUnsaved( - RandomHelper.alphanumeric(random, 20), + new Email(RandomHelper.alphanumeric(random, 20)), RandomHelper.alphanumeric(random, 20), RandomHelper.alphanumeric(random, 20)), (MariatestUniqueRowUnsaved row, Connection c) -> diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/XYZSet.java b/testers/mariadb/java/generated-and-checked-in/testdb/XYZSet.java index 1438eb7164..ebf28ac698 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/XYZSet.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/XYZSet.java @@ -20,11 +20,6 @@ public XYZSet withMembers(Set members) { } ; - public static MariaType dbType = - MariaTypes.set.bimap( - (MariaSet ms) -> XYZSet.fromString(ms.toCommaSeparated()), - (XYZSet s) -> MariaSet.fromString(s.toCommaSeparated())); - public static XYZSet empty() { return new XYZSet(EnumSet.noneOf(XYZSetMember.class)); } @@ -47,6 +42,11 @@ public static XYZSet fromString(String str) { } ; + public static MariaType mariaType = + MariaTypes.set.bimap( + (MariaSet ms) -> XYZSet.fromString(ms.toCommaSeparated()), + (XYZSet s) -> MariaSet.fromString(s.toCommaSeparated())); + public static XYZSet of(List members) { if (members.isEmpty()) { return new XYZSet(EnumSet.noneOf(XYZSetMember.class)); diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/audit_log/AuditLogFields.java b/testers/mariadb/java/generated-and-checked-in/testdb/audit_log/AuditLogFields.java index e0df7d900f..7fa8f5b640 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/audit_log/AuditLogFields.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/audit_log/AuditLogFields.java @@ -42,7 +42,7 @@ public IdField logId() { Optional.empty(), Optional.empty(), (row, value) -> row.withLogId(value), - AuditLogId.dbType); + AuditLogId.mariaType); } public Field tableName() { diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/audit_log/AuditLogId.java b/testers/mariadb/java/generated-and-checked-in/testdb/audit_log/AuditLogId.java index 7f0c29a95f..00da407585 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/audit_log/AuditLogId.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/audit_log/AuditLogId.java @@ -27,6 +27,6 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(AuditLogId::value, AuditLogId::new); - public static MariaType dbType = + public static MariaType mariaType = MariaTypes.bigintUnsigned.bimap(AuditLogId::new, AuditLogId::value); } diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/audit_log/AuditLogRepoImpl.java b/testers/mariadb/java/generated-and-checked-in/testdb/audit_log/AuditLogRepoImpl.java index 27b7186cee..aa11dff778 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/audit_log/AuditLogRepoImpl.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/audit_log/AuditLogRepoImpl.java @@ -31,7 +31,7 @@ public DeleteBuilder delete() { public Boolean deleteById(AuditLogId logId, Connection c) { return interpolate( Fragment.lit("delete from `audit_log` where `log_id` = "), - Fragment.encode(AuditLogId.dbType, logId), + Fragment.encode(AuditLogId.mariaType, logId), Fragment.lit("")) .update() .runUnchecked(c) @@ -42,7 +42,7 @@ public Boolean deleteById(AuditLogId logId, Connection c) { public Integer deleteByIds(AuditLogId[] logIds, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : logIds) { - fragments.add(Fragment.encode(AuditLogId.dbType, id)); + fragments.add(Fragment.encode(AuditLogId.mariaType, id)); } ; return Fragment.interpolate( @@ -199,7 +199,7 @@ public Optional selectById(AuditLogId logId, Connection c) { + " `changed_by`, `changed_at`, `client_ip`, `session_id`\n" + "from `audit_log`\n" + "where `log_id` = "), - Fragment.encode(AuditLogId.dbType, logId), + Fragment.encode(AuditLogId.mariaType, logId), Fragment.lit("")) .query(AuditLogRow._rowParser.first()) .runUnchecked(c); @@ -209,7 +209,7 @@ public Optional selectById(AuditLogId logId, Connection c) { public List selectByIds(AuditLogId[] logIds, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : logIds) { - fragments.add(Fragment.encode(AuditLogId.dbType, id)); + fragments.add(Fragment.encode(AuditLogId.mariaType, id)); } ; return Fragment.interpolate( @@ -260,7 +260,7 @@ public Boolean update(AuditLogRow row, Connection c) { Fragment.lit(",\n`session_id` = "), Fragment.encode(MariaTypes.varbinary.opt(), row.sessionId()), Fragment.lit("\nwhere `log_id` = "), - Fragment.encode(AuditLogId.dbType, logId), + Fragment.encode(AuditLogId.mariaType, logId), Fragment.lit("")) .update() .runUnchecked(c) @@ -275,7 +275,7 @@ public AuditLogRow upsert(AuditLogRow unsaved, Connection c) { + " `old_values`, `new_values`, `changed_by`, `changed_at`, `client_ip`," + " `session_id`)\n" + "VALUES ("), - Fragment.encode(AuditLogId.dbType, unsaved.logId()), + Fragment.encode(AuditLogId.mariaType, unsaved.logId()), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.tableName()), Fragment.lit(", "), diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/audit_log/AuditLogRow.java b/testers/mariadb/java/generated-and-checked-in/testdb/audit_log/AuditLogRow.java index bf1051aee6..a5716507b5 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/audit_log/AuditLogRow.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/audit_log/AuditLogRow.java @@ -131,7 +131,7 @@ public AuditLogRow withSessionId(Optional sessionId) { public static RowParser _rowParser = RowParsers.of( - AuditLogId.dbType, + AuditLogId.mariaType, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.text, diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/brands/BrandsFields.java b/testers/mariadb/java/generated-and-checked-in/testdb/brands/BrandsFields.java index d0217b8b82..4225488cf7 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/brands/BrandsFields.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/brands/BrandsFields.java @@ -18,9 +18,10 @@ import dev.typr.foundations.dsl.TupleExpr.TupleExpr7; import java.util.List; import java.util.Optional; +import testdb.userdefined.IsActive; public class BrandsFields - extends TupleExpr7 + extends TupleExpr7 implements RelationStructure, FieldsBase { List _path; @@ -38,7 +39,7 @@ public IdField brandId() { Optional.empty(), Optional.empty(), (row, value) -> row.withBrandId(value), - BrandsId.dbType); + BrandsId.mariaType); } public Field name() { @@ -96,15 +97,15 @@ public OptField countryOfOrigin() { MariaTypes.char_); } - public Field isActive() { - return new Field( + public Field isActive() { + return new Field( _path, "is_active", BrandsRow::isActive, Optional.empty(), Optional.empty(), (row, value) -> row.withIsActive(value), - MariaTypes.bool); + IsActive.mariaType); } @Override @@ -165,7 +166,7 @@ public SqlExpr _6() { } @Override - public SqlExpr _7() { + public SqlExpr _7() { return isActive(); } } diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/brands/BrandsId.java b/testers/mariadb/java/generated-and-checked-in/testdb/brands/BrandsId.java index 15012ef4d0..1934c08845 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/brands/BrandsId.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/brands/BrandsId.java @@ -26,6 +26,6 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(BrandsId::value, BrandsId::new); - public static MariaType dbType = + public static MariaType mariaType = MariaTypes.smallintUnsigned.bimap(BrandsId::new, BrandsId::value); } diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/brands/BrandsRepoImpl.java b/testers/mariadb/java/generated-and-checked-in/testdb/brands/BrandsRepoImpl.java index 156e3c05b4..0e6183eb75 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/brands/BrandsRepoImpl.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/brands/BrandsRepoImpl.java @@ -20,6 +20,7 @@ import java.util.List; import java.util.Map; import java.util.Optional; +import testdb.userdefined.IsActive; public class BrandsRepoImpl implements BrandsRepo { @Override @@ -31,7 +32,7 @@ public DeleteBuilder delete() { public Boolean deleteById(BrandsId brandId, Connection c) { return interpolate( Fragment.lit("delete from `brands` where `brand_id` = "), - Fragment.encode(BrandsId.dbType, brandId), + Fragment.encode(BrandsId.mariaType, brandId), Fragment.lit("")) .update() .runUnchecked(c) @@ -42,7 +43,7 @@ public Boolean deleteById(BrandsId brandId, Connection c) { public Integer deleteByIds(BrandsId[] brandIds, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : brandIds) { - fragments.add(Fragment.encode(BrandsId.dbType, id)); + fragments.add(Fragment.encode(BrandsId.mariaType, id)); } ; return Fragment.interpolate( @@ -70,7 +71,7 @@ public BrandsRow insert(BrandsRow unsaved, Connection c) { Fragment.lit(", "), Fragment.encode(MariaTypes.char_.opt(), unsaved.countryOfOrigin()), Fragment.lit(", "), - Fragment.encode(MariaTypes.bool, unsaved.isActive()), + Fragment.encode(IsActive.mariaType, unsaved.isActive()), Fragment.lit( ")\n" + "RETURNING `brand_id`, `name`, `slug`, `logo_blob`, `website_url`," @@ -126,7 +127,7 @@ public BrandsRow insert(BrandsRowUnsaved unsaved, Connection c) { () -> {}, value -> { columns.add(Fragment.lit("`is_active`")); - values.add(interpolate(Fragment.encode(MariaTypes.bool, value), Fragment.lit(""))); + values.add(interpolate(Fragment.encode(IsActive.mariaType, value), Fragment.lit(""))); }); ; Fragment q = @@ -168,7 +169,7 @@ public Optional selectById(BrandsId brandId, Connection c) { + " `country_of_origin`, `is_active`\n" + "from `brands`\n" + "where `brand_id` = "), - Fragment.encode(BrandsId.dbType, brandId), + Fragment.encode(BrandsId.mariaType, brandId), Fragment.lit("")) .query(BrandsRow._rowParser.first()) .runUnchecked(c); @@ -178,7 +179,7 @@ public Optional selectById(BrandsId brandId, Connection c) { public List selectByIds(BrandsId[] brandIds, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : brandIds) { - fragments.add(Fragment.encode(BrandsId.dbType, id)); + fragments.add(Fragment.encode(BrandsId.mariaType, id)); } ; return Fragment.interpolate( @@ -234,9 +235,9 @@ public Boolean update(BrandsRow row, Connection c) { Fragment.lit(",\n`country_of_origin` = "), Fragment.encode(MariaTypes.char_.opt(), row.countryOfOrigin()), Fragment.lit(",\n`is_active` = "), - Fragment.encode(MariaTypes.bool, row.isActive()), + Fragment.encode(IsActive.mariaType, row.isActive()), Fragment.lit("\nwhere `brand_id` = "), - Fragment.encode(BrandsId.dbType, brandId), + Fragment.encode(BrandsId.mariaType, brandId), Fragment.lit("")) .update() .runUnchecked(c) @@ -250,7 +251,7 @@ public BrandsRow upsert(BrandsRow unsaved, Connection c) { "INSERT INTO `brands`(`brand_id`, `name`, `slug`, `logo_blob`, `website_url`," + " `country_of_origin`, `is_active`)\n" + "VALUES ("), - Fragment.encode(BrandsId.dbType, unsaved.brandId()), + Fragment.encode(BrandsId.mariaType, unsaved.brandId()), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.name()), Fragment.lit(", "), @@ -262,7 +263,7 @@ public BrandsRow upsert(BrandsRow unsaved, Connection c) { Fragment.lit(", "), Fragment.encode(MariaTypes.char_.opt(), unsaved.countryOfOrigin()), Fragment.lit(", "), - Fragment.encode(MariaTypes.bool, unsaved.isActive()), + Fragment.encode(IsActive.mariaType, unsaved.isActive()), Fragment.lit( ")\n" + "ON DUPLICATE KEY UPDATE `name` = VALUES(`name`),\n" diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/brands/BrandsRow.java b/testers/mariadb/java/generated-and-checked-in/testdb/brands/BrandsRow.java index 254a8389d9..8d0f5ee9cc 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/brands/BrandsRow.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/brands/BrandsRow.java @@ -12,6 +12,7 @@ import dev.typr.foundations.Tuple.Tuple7; import java.util.Optional; import testdb.customtypes.Defaulted; +import testdb.userdefined.IsActive; /** Table: brands Primary key: brand_id */ public record BrandsRow( @@ -28,9 +29,15 @@ public record BrandsRow( /** Default: NULL */ @JsonProperty("country_of_origin") Optional countryOfOrigin, /** Default: 1 */ - @JsonProperty("is_active") Boolean isActive) + @JsonProperty("is_active") /* user-picked */ IsActive isActive) implements Tuple7< - BrandsId, String, String, Optional, Optional, Optional, Boolean> { + BrandsId, + String, + String, + Optional, + Optional, + Optional, /* user-picked */ + IsActive> { /** AUTO_INCREMENT */ public BrandsRow withBrandId(BrandsId brandId) { return new BrandsRow(brandId, name, slug, logoBlob, websiteUrl, countryOfOrigin, isActive); @@ -68,20 +75,20 @@ public BrandsRow withCountryOfOrigin(Optional countryOfOrigin) { ; /** Default: 1 */ - public BrandsRow withIsActive(Boolean isActive) { + public BrandsRow withIsActive(/* user-picked */ IsActive isActive) { return new BrandsRow(brandId, name, slug, logoBlob, websiteUrl, countryOfOrigin, isActive); } ; public static RowParser _rowParser = RowParsers.of( - BrandsId.dbType, + BrandsId.mariaType, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.mediumblob.opt(), MariaTypes.varchar.opt(), MariaTypes.char_.opt(), - MariaTypes.bool, + IsActive.mariaType, BrandsRow::new, row -> new Object[] { @@ -132,7 +139,7 @@ public Optional _6() { ; @Override - public Boolean _7() { + public /* user-picked */ IsActive _7() { return isActive; } ; @@ -146,7 +153,7 @@ public BrandsRowUnsaved toUnsavedRow( Defaulted> logoBlob, Defaulted> websiteUrl, Defaulted> countryOfOrigin, - Defaulted isActive) { + Defaulted isActive) { return new BrandsRowUnsaved(name, slug, logoBlob, websiteUrl, countryOfOrigin, isActive); } ; diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/brands/BrandsRowUnsaved.java b/testers/mariadb/java/generated-and-checked-in/testdb/brands/BrandsRowUnsaved.java index 3d60f8f087..d5d4a776eb 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/brands/BrandsRowUnsaved.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/brands/BrandsRowUnsaved.java @@ -9,6 +9,7 @@ import java.util.Optional; import testdb.customtypes.Defaulted; import testdb.customtypes.Defaulted.UseDefault; +import testdb.userdefined.IsActive; /** This class corresponds to a row in table `brands` which has not been persisted yet */ public record BrandsRowUnsaved( @@ -23,7 +24,7 @@ public record BrandsRowUnsaved( /** Default: NULL */ @JsonProperty("country_of_origin") Defaulted> countryOfOrigin, /** Default: 1 */ - @JsonProperty("is_active") Defaulted isActive) { + @JsonProperty("is_active") Defaulted isActive) { public BrandsRowUnsaved( /** */ String name, @@ -65,7 +66,7 @@ public BrandsRowUnsaved withCountryOfOrigin(Defaulted> countryO ; /** Default: 1 */ - public BrandsRowUnsaved withIsActive(Defaulted isActive) { + public BrandsRowUnsaved withIsActive(Defaulted isActive) { return new BrandsRowUnsaved(name, slug, logoBlob, websiteUrl, countryOfOrigin, isActive); } ; @@ -74,7 +75,7 @@ public BrandsRow toRow( java.util.function.Supplier> logoBlobDefault, java.util.function.Supplier> websiteUrlDefault, java.util.function.Supplier> countryOfOriginDefault, - java.util.function.Supplier isActiveDefault, + java.util.function.Supplier isActiveDefault, java.util.function.Supplier brandIdDefault) { return new BrandsRow( brandIdDefault.get(), diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/categories/CategoriesFields.java b/testers/mariadb/java/generated-and-checked-in/testdb/categories/CategoriesFields.java index 59cff13749..bc3e89f7dd 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/categories/CategoriesFields.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/categories/CategoriesFields.java @@ -42,7 +42,7 @@ public IdField categoryId() { Optional.empty(), Optional.empty(), (row, value) -> row.withCategoryId(value), - CategoriesId.dbType); + CategoriesId.mariaType); } public OptField parentId() { @@ -53,7 +53,7 @@ public OptField parentId() { Optional.empty(), Optional.empty(), (row, value) -> row.withParentId(value), - CategoriesId.dbType); + CategoriesId.mariaType); } public Field name() { diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/categories/CategoriesId.java b/testers/mariadb/java/generated-and-checked-in/testdb/categories/CategoriesId.java index 195bbdb8ec..14d4471b55 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/categories/CategoriesId.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/categories/CategoriesId.java @@ -27,6 +27,6 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(CategoriesId::value, CategoriesId::new); - public static MariaType dbType = + public static MariaType mariaType = MariaTypes.mediumintUnsigned.bimap(CategoriesId::new, CategoriesId::value); } diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/categories/CategoriesRepoImpl.java b/testers/mariadb/java/generated-and-checked-in/testdb/categories/CategoriesRepoImpl.java index 8313f82eac..d0be497b22 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/categories/CategoriesRepoImpl.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/categories/CategoriesRepoImpl.java @@ -31,7 +31,7 @@ public DeleteBuilder delete() { public Boolean deleteById(CategoriesId categoryId, Connection c) { return interpolate( Fragment.lit("delete from `categories` where `category_id` = "), - Fragment.encode(CategoriesId.dbType, categoryId), + Fragment.encode(CategoriesId.mariaType, categoryId), Fragment.lit("")) .update() .runUnchecked(c) @@ -42,7 +42,7 @@ public Boolean deleteById(CategoriesId categoryId, Connection c) { public Integer deleteByIds(CategoriesId[] categoryIds, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : categoryIds) { - fragments.add(Fragment.encode(CategoriesId.dbType, id)); + fragments.add(Fragment.encode(CategoriesId.mariaType, id)); } ; return Fragment.interpolate( @@ -60,7 +60,7 @@ public CategoriesRow insert(CategoriesRow unsaved, Connection c) { "insert into `categories`(`parent_id`, `name`, `slug`, `description`, `image_url`," + " `sort_order`, `is_visible`, `metadata`)\n" + "values ("), - Fragment.encode(CategoriesId.dbType.opt(), unsaved.parentId()), + Fragment.encode(CategoriesId.mariaType.opt(), unsaved.parentId()), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.name()), Fragment.lit(", "), @@ -100,7 +100,8 @@ public CategoriesRow insert(CategoriesRowUnsaved unsaved, Connection c) { value -> { columns.add(Fragment.lit("`parent_id`")); values.add( - interpolate(Fragment.encode(CategoriesId.dbType.opt(), value), Fragment.lit(""))); + interpolate( + Fragment.encode(CategoriesId.mariaType.opt(), value), Fragment.lit(""))); }); ; unsaved @@ -192,7 +193,7 @@ public Optional selectById(CategoriesId categoryId, Connection c) + " `sort_order`, `is_visible`, `metadata`\n" + "from `categories`\n" + "where `category_id` = "), - Fragment.encode(CategoriesId.dbType, categoryId), + Fragment.encode(CategoriesId.mariaType, categoryId), Fragment.lit("")) .query(CategoriesRow._rowParser.first()) .runUnchecked(c); @@ -202,7 +203,7 @@ public Optional selectById(CategoriesId categoryId, Connection c) public List selectByIds(CategoriesId[] categoryIds, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : categoryIds) { - fragments.add(Fragment.encode(CategoriesId.dbType, id)); + fragments.add(Fragment.encode(CategoriesId.mariaType, id)); } ; return Fragment.interpolate( @@ -250,7 +251,7 @@ public Boolean update(CategoriesRow row, Connection c) { ; return interpolate( Fragment.lit("update `categories`\nset `parent_id` = "), - Fragment.encode(CategoriesId.dbType.opt(), row.parentId()), + Fragment.encode(CategoriesId.mariaType.opt(), row.parentId()), Fragment.lit(",\n`name` = "), Fragment.encode(MariaTypes.varchar, row.name()), Fragment.lit(",\n`slug` = "), @@ -266,7 +267,7 @@ public Boolean update(CategoriesRow row, Connection c) { Fragment.lit(",\n`metadata` = "), Fragment.encode(MariaTypes.json.opt(), row.metadata()), Fragment.lit("\nwhere `category_id` = "), - Fragment.encode(CategoriesId.dbType, categoryId), + Fragment.encode(CategoriesId.mariaType, categoryId), Fragment.lit("")) .update() .runUnchecked(c) @@ -280,9 +281,9 @@ public CategoriesRow upsert(CategoriesRow unsaved, Connection c) { "INSERT INTO `categories`(`category_id`, `parent_id`, `name`, `slug`," + " `description`, `image_url`, `sort_order`, `is_visible`, `metadata`)\n" + "VALUES ("), - Fragment.encode(CategoriesId.dbType, unsaved.categoryId()), + Fragment.encode(CategoriesId.mariaType, unsaved.categoryId()), Fragment.lit(", "), - Fragment.encode(CategoriesId.dbType.opt(), unsaved.parentId()), + Fragment.encode(CategoriesId.mariaType.opt(), unsaved.parentId()), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.name()), Fragment.lit(", "), diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/categories/CategoriesRow.java b/testers/mariadb/java/generated-and-checked-in/testdb/categories/CategoriesRow.java index 2c2c5d9178..4d438f6d64 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/categories/CategoriesRow.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/categories/CategoriesRow.java @@ -109,8 +109,8 @@ public CategoriesRow withMetadata(Optional metadata) { public static RowParser _rowParser = RowParsers.of( - CategoriesId.dbType, - CategoriesId.dbType.opt(), + CategoriesId.mariaType, + CategoriesId.mariaType.opt(), MariaTypes.varchar, MariaTypes.varchar, MariaTypes.mediumtext.opt(), diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/customer_addresses/CustomerAddressesFields.java b/testers/mariadb/java/generated-and-checked-in/testdb/customer_addresses/CustomerAddressesFields.java index 73e3ec4c90..10362ecdc7 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/customer_addresses/CustomerAddressesFields.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/customer_addresses/CustomerAddressesFields.java @@ -24,13 +24,14 @@ import testdb.customers.CustomersFields; import testdb.customers.CustomersId; import testdb.customers.CustomersRow; +import testdb.userdefined.IsDefault; public class CustomerAddressesFields extends TupleExpr14< CustomerAddressesId, CustomersId, - String, - Boolean, + String, /* user-picked */ + IsDefault, String, String, String, @@ -60,7 +61,7 @@ public IdField addressId() { Optional.empty(), Optional.empty(), (row, value) -> row.withAddressId(value), - CustomerAddressesId.dbType); + CustomerAddressesId.mariaType); } public Field customerId() { @@ -71,7 +72,7 @@ public Field customerId() { Optional.empty(), Optional.empty(), (row, value) -> row.withCustomerId(value), - CustomersId.dbType); + CustomersId.mariaType); } public Field addressType() { @@ -85,15 +86,15 @@ public Field addressType() { MariaTypes.text); } - public Field isDefault() { - return new Field( + public Field isDefault() { + return new Field( _path, "is_default", CustomerAddressesRow::isDefault, Optional.empty(), Optional.empty(), (row, value) -> row.withIsDefault(value), - MariaTypes.bool); + IsDefault.mariaType); } public Field recipientName() { @@ -262,7 +263,7 @@ public SqlExpr _3() { } @Override - public SqlExpr _4() { + public SqlExpr _4() { return isDefault(); } diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/customer_addresses/CustomerAddressesId.java b/testers/mariadb/java/generated-and-checked-in/testdb/customer_addresses/CustomerAddressesId.java index 6b1f2ce532..0c0182ace3 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/customer_addresses/CustomerAddressesId.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/customer_addresses/CustomerAddressesId.java @@ -27,6 +27,6 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(CustomerAddressesId::value, CustomerAddressesId::new); - public static MariaType dbType = + public static MariaType mariaType = MariaTypes.intUnsigned.bimap(CustomerAddressesId::new, CustomerAddressesId::value); } diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/customer_addresses/CustomerAddressesRepoImpl.java b/testers/mariadb/java/generated-and-checked-in/testdb/customer_addresses/CustomerAddressesRepoImpl.java index 0573d6722c..5c58a710fc 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/customer_addresses/CustomerAddressesRepoImpl.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/customer_addresses/CustomerAddressesRepoImpl.java @@ -21,6 +21,7 @@ import java.util.Map; import java.util.Optional; import testdb.customers.CustomersId; +import testdb.userdefined.IsDefault; public class CustomerAddressesRepoImpl implements CustomerAddressesRepo { @Override @@ -33,7 +34,7 @@ public DeleteBuilder delete() { public Boolean deleteById(CustomerAddressesId addressId, Connection c) { return interpolate( Fragment.lit("delete from `customer_addresses` where `address_id` = "), - Fragment.encode(CustomerAddressesId.dbType, addressId), + Fragment.encode(CustomerAddressesId.mariaType, addressId), Fragment.lit("")) .update() .runUnchecked(c) @@ -44,7 +45,7 @@ public Boolean deleteById(CustomerAddressesId addressId, Connection c) { public Integer deleteByIds(CustomerAddressesId[] addressIds, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : addressIds) { - fragments.add(Fragment.encode(CustomerAddressesId.dbType, id)); + fragments.add(Fragment.encode(CustomerAddressesId.mariaType, id)); } ; return Fragment.interpolate( @@ -64,11 +65,11 @@ public CustomerAddressesRow insert(CustomerAddressesRow unsaved, Connection c) { + " `postal_code`, `country_code`, `location`, `delivery_notes`," + " `created_at`)\n" + "values ("), - Fragment.encode(CustomersId.dbType, unsaved.customerId()), + Fragment.encode(CustomersId.mariaType, unsaved.customerId()), Fragment.lit(", "), Fragment.encode(MariaTypes.text, unsaved.addressType()), Fragment.lit(", "), - Fragment.encode(MariaTypes.bool, unsaved.isDefault()), + Fragment.encode(IsDefault.mariaType, unsaved.isDefault()), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.recipientName()), Fragment.lit(", "), @@ -107,7 +108,8 @@ public CustomerAddressesRow insert(CustomerAddressesRowUnsaved unsaved, Connecti ; columns.add(Fragment.lit("`customer_id`")); values.add( - interpolate(Fragment.encode(CustomersId.dbType, unsaved.customerId()), Fragment.lit(""))); + interpolate( + Fragment.encode(CustomersId.mariaType, unsaved.customerId()), Fragment.lit(""))); columns.add(Fragment.lit("`address_type`")); values.add( interpolate(Fragment.encode(MariaTypes.text, unsaved.addressType()), Fragment.lit(""))); @@ -132,7 +134,8 @@ public CustomerAddressesRow insert(CustomerAddressesRowUnsaved unsaved, Connecti () -> {}, value -> { columns.add(Fragment.lit("`is_default`")); - values.add(interpolate(Fragment.encode(MariaTypes.bool, value), Fragment.lit(""))); + values.add( + interpolate(Fragment.encode(IsDefault.mariaType, value), Fragment.lit(""))); }); ; unsaved @@ -231,7 +234,7 @@ public Optional selectById(CustomerAddressesId addressId, + " `postal_code`, `country_code`, `location`, `delivery_notes`, `created_at`\n" + "from `customer_addresses`\n" + "where `address_id` = "), - Fragment.encode(CustomerAddressesId.dbType, addressId), + Fragment.encode(CustomerAddressesId.mariaType, addressId), Fragment.lit("")) .query(CustomerAddressesRow._rowParser.first()) .runUnchecked(c); @@ -241,7 +244,7 @@ public Optional selectById(CustomerAddressesId addressId, public List selectByIds(CustomerAddressesId[] addressIds, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : addressIds) { - fragments.add(Fragment.encode(CustomerAddressesId.dbType, id)); + fragments.add(Fragment.encode(CustomerAddressesId.mariaType, id)); } ; return Fragment.interpolate( @@ -280,11 +283,11 @@ public Boolean update(CustomerAddressesRow row, Connection c) { ; return interpolate( Fragment.lit("update `customer_addresses`\nset `customer_id` = "), - Fragment.encode(CustomersId.dbType, row.customerId()), + Fragment.encode(CustomersId.mariaType, row.customerId()), Fragment.lit(",\n`address_type` = "), Fragment.encode(MariaTypes.text, row.addressType()), Fragment.lit(",\n`is_default` = "), - Fragment.encode(MariaTypes.bool, row.isDefault()), + Fragment.encode(IsDefault.mariaType, row.isDefault()), Fragment.lit(",\n`recipient_name` = "), Fragment.encode(MariaTypes.varchar, row.recipientName()), Fragment.lit(",\n`street_line1` = "), @@ -306,7 +309,7 @@ public Boolean update(CustomerAddressesRow row, Connection c) { Fragment.lit(",\n`created_at` = "), Fragment.encode(MariaTypes.datetime, row.createdAt()), Fragment.lit("\nwhere `address_id` = "), - Fragment.encode(CustomerAddressesId.dbType, addressId), + Fragment.encode(CustomerAddressesId.mariaType, addressId), Fragment.lit("")) .update() .runUnchecked(c) @@ -322,13 +325,13 @@ public CustomerAddressesRow upsert(CustomerAddressesRow unsaved, Connection c) { + " `state_province`, `postal_code`, `country_code`, `location`," + " `delivery_notes`, `created_at`)\n" + "VALUES ("), - Fragment.encode(CustomerAddressesId.dbType, unsaved.addressId()), + Fragment.encode(CustomerAddressesId.mariaType, unsaved.addressId()), Fragment.lit(", "), - Fragment.encode(CustomersId.dbType, unsaved.customerId()), + Fragment.encode(CustomersId.mariaType, unsaved.customerId()), Fragment.lit(", "), Fragment.encode(MariaTypes.text, unsaved.addressType()), Fragment.lit(", "), - Fragment.encode(MariaTypes.bool, unsaved.isDefault()), + Fragment.encode(IsDefault.mariaType, unsaved.isDefault()), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.recipientName()), Fragment.lit(", "), diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/customer_addresses/CustomerAddressesRow.java b/testers/mariadb/java/generated-and-checked-in/testdb/customer_addresses/CustomerAddressesRow.java index 3836875621..8b95e6766d 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/customer_addresses/CustomerAddressesRow.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/customer_addresses/CustomerAddressesRow.java @@ -15,6 +15,7 @@ import org.mariadb.jdbc.type.Point; import testdb.customers.CustomersId; import testdb.customtypes.Defaulted; +import testdb.userdefined.IsDefault; /** Table: customer_addresses Primary key: address_id */ public record CustomerAddressesRow( @@ -25,7 +26,7 @@ public record CustomerAddressesRow( /** */ @JsonProperty("address_type") String addressType, /** Default: 0 */ - @JsonProperty("is_default") Boolean isDefault, + @JsonProperty("is_default") /* user-picked */ IsDefault isDefault, /** */ @JsonProperty("recipient_name") String recipientName, /** */ @@ -49,8 +50,8 @@ public record CustomerAddressesRow( implements Tuple14< CustomerAddressesId, CustomersId, - String, - Boolean, + String, /* user-picked */ + IsDefault, String, String, Optional, @@ -122,7 +123,7 @@ public CustomerAddressesRow withAddressType(String addressType) { ; /** Default: 0 */ - public CustomerAddressesRow withIsDefault(Boolean isDefault) { + public CustomerAddressesRow withIsDefault(/* user-picked */ IsDefault isDefault) { return new CustomerAddressesRow( addressId, customerId, @@ -343,10 +344,10 @@ public CustomerAddressesRow withCreatedAt(LocalDateTime createdAt) { public static RowParser _rowParser = RowParsers.of( - CustomerAddressesId.dbType, - CustomersId.dbType, + CustomerAddressesId.mariaType, + CustomersId.mariaType, MariaTypes.text, - MariaTypes.bool, + IsDefault.mariaType, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.varchar.opt(), @@ -426,7 +427,7 @@ public String _3() { ; @Override - public Boolean _4() { + public /* user-picked */ IsDefault _4() { return isDefault; } ; @@ -467,7 +468,7 @@ public CustomerAddressesId id() { ; public CustomerAddressesRowUnsaved toUnsavedRow( - Defaulted isDefault, + Defaulted isDefault, Defaulted> streetLine2, Defaulted> stateProvince, Defaulted> location, diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/customer_addresses/CustomerAddressesRowUnsaved.java b/testers/mariadb/java/generated-and-checked-in/testdb/customer_addresses/CustomerAddressesRowUnsaved.java index e20db18f94..8277b967f9 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/customer_addresses/CustomerAddressesRowUnsaved.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/customer_addresses/CustomerAddressesRowUnsaved.java @@ -12,6 +12,7 @@ import testdb.customers.CustomersId; import testdb.customtypes.Defaulted; import testdb.customtypes.Defaulted.UseDefault; +import testdb.userdefined.IsDefault; /** * This class corresponds to a row in table `customer_addresses` which has not been persisted yet @@ -32,7 +33,7 @@ public record CustomerAddressesRowUnsaved( /** */ @JsonProperty("country_code") String countryCode, /** Default: 0 */ - @JsonProperty("is_default") Defaulted isDefault, + @JsonProperty("is_default") Defaulted isDefault, /** Default: NULL */ @JsonProperty("street_line2") Defaulted> streetLine2, /** Default: NULL */ @@ -209,7 +210,8 @@ public CustomerAddressesRowUnsaved withCountryCode(String countryCode) { ; /** Default: 0 */ - public CustomerAddressesRowUnsaved withIsDefault(Defaulted isDefault) { + public CustomerAddressesRowUnsaved withIsDefault( + Defaulted isDefault) { return new CustomerAddressesRowUnsaved( customerId, addressType, @@ -323,7 +325,7 @@ public CustomerAddressesRowUnsaved withCreatedAt(Defaulted create ; public CustomerAddressesRow toRow( - java.util.function.Supplier isDefaultDefault, + java.util.function.Supplier isDefaultDefault, java.util.function.Supplier> streetLine2Default, java.util.function.Supplier> stateProvinceDefault, java.util.function.Supplier> locationDefault, diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/customer_orders/CustomerOrdersSqlRepoImpl.java b/testers/mariadb/java/generated-and-checked-in/testdb/customer_orders/CustomerOrdersSqlRepoImpl.java index f2ef0409b6..ccf1f9ff74 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/customer_orders/CustomerOrdersSqlRepoImpl.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/customer_orders/CustomerOrdersSqlRepoImpl.java @@ -34,7 +34,7 @@ public List apply( + "FROM customers c\n" + "LEFT JOIN orders o ON c.customer_id = o.customer_id\n" + "WHERE c.customer_id = "), - Fragment.encode(CustomersId.dbType, customerId), + Fragment.encode(CustomersId.mariaType, customerId), Fragment.lit("\n AND ("), Fragment.encode(MariaTypes.text.opt(), orderStatus), Fragment.lit(" IS NULL OR o.order_status = "), diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/customer_orders/CustomerOrdersSqlRow.java b/testers/mariadb/java/generated-and-checked-in/testdb/customer_orders/CustomerOrdersSqlRow.java index 41b7abf025..3596f8ae65 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/customer_orders/CustomerOrdersSqlRow.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/customer_orders/CustomerOrdersSqlRow.java @@ -15,17 +15,20 @@ import java.util.Optional; import testdb.customers.CustomersId; import testdb.orders.OrdersId; +import testdb.userdefined.Email; +import testdb.userdefined.FirstName; +import testdb.userdefined.LastName; /** SQL file: customer_orders.sql */ public record CustomerOrdersSqlRow( /** Points to {@link testdb.customers.CustomersRow#customerId()} */ @JsonProperty("customer_id") CustomersId customerId, /** Points to {@link testdb.customers.CustomersRow#email()} */ - String email, + /* user-picked */ Email email, /** Points to {@link testdb.customers.CustomersRow#firstName()} */ - @JsonProperty("first_name") String firstName, + @JsonProperty("first_name") /* user-picked */ FirstName firstName, /** Points to {@link testdb.customers.CustomersRow#lastName()} */ - @JsonProperty("last_name") String lastName, + @JsonProperty("last_name") /* user-picked */ LastName lastName, /** Points to {@link testdb.customers.CustomersRow#tier()} */ String tier, /** Points to {@link testdb.orders.OrdersRow#orderId()} */ @@ -39,10 +42,10 @@ public record CustomerOrdersSqlRow( /** Points to {@link testdb.orders.OrdersRow#orderedAt()} */ @JsonProperty("ordered_at") Optional orderedAt) implements Tuple10< - CustomersId, - String, - String, - String, + CustomersId, /* user-picked */ + Email, /* user-picked */ + FirstName, /* user-picked */ + LastName, String, Optional, Optional, @@ -66,7 +69,7 @@ public CustomerOrdersSqlRow withCustomerId(CustomersId customerId) { ; /** Points to {@link testdb.customers.CustomersRow#email()} */ - public CustomerOrdersSqlRow withEmail(String email) { + public CustomerOrdersSqlRow withEmail(/* user-picked */ Email email) { return new CustomerOrdersSqlRow( customerId, email, @@ -82,7 +85,7 @@ public CustomerOrdersSqlRow withEmail(String email) { ; /** Points to {@link testdb.customers.CustomersRow#firstName()} */ - public CustomerOrdersSqlRow withFirstName(String firstName) { + public CustomerOrdersSqlRow withFirstName(/* user-picked */ FirstName firstName) { return new CustomerOrdersSqlRow( customerId, email, @@ -98,7 +101,7 @@ public CustomerOrdersSqlRow withFirstName(String firstName) { ; /** Points to {@link testdb.customers.CustomersRow#lastName()} */ - public CustomerOrdersSqlRow withLastName(String lastName) { + public CustomerOrdersSqlRow withLastName(/* user-picked */ LastName lastName) { return new CustomerOrdersSqlRow( customerId, email, @@ -211,12 +214,12 @@ public CustomerOrdersSqlRow withOrderedAt(Optional orderedAt) { public static RowParser _rowParser = RowParsers.of( - CustomersId.dbType, - MariaTypes.varchar, - MariaTypes.varchar, - MariaTypes.varchar, + CustomersId.mariaType, + Email.mariaType, + FirstName.mariaType, + LastName.mariaType, MariaTypes.text, - OrdersId.dbType.opt(), + OrdersId.mariaType.opt(), MariaTypes.varchar.opt(), MariaTypes.text.opt(), MariaTypes.numeric.opt(), @@ -250,19 +253,19 @@ public Optional _10() { ; @Override - public String _2() { + public /* user-picked */ Email _2() { return email; } ; @Override - public String _3() { + public /* user-picked */ FirstName _3() { return firstName; } ; @Override - public String _4() { + public /* user-picked */ LastName _4() { return lastName; } ; diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/customer_status/CustomerStatusFields.java b/testers/mariadb/java/generated-and-checked-in/testdb/customer_status/CustomerStatusFields.java index b9b4980b82..3407549f9c 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/customer_status/CustomerStatusFields.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/customer_status/CustomerStatusFields.java @@ -17,8 +17,10 @@ import dev.typr.foundations.dsl.TupleExpr.TupleExpr3; import java.util.List; import java.util.Optional; +import testdb.userdefined.IsActive; -public class CustomerStatusFields extends TupleExpr3 +public class CustomerStatusFields + extends TupleExpr3 implements RelationStructure, FieldsBase { List _path; @@ -38,7 +40,7 @@ public IdField statusCode() { Optional.empty(), Optional.empty(), (row, value) -> row.withStatusCode(value), - CustomerStatusId.dbType); + CustomerStatusId.mariaType); } public Field description() { @@ -52,15 +54,15 @@ public Field description() { MariaTypes.varchar); } - public Field isActive() { - return new Field( + public Field isActive() { + return new Field( _path, "is_active", CustomerStatusRow::isActive, Optional.empty(), Optional.empty(), (row, value) -> row.withIsActive(value), - MariaTypes.bool); + IsActive.mariaType); } @Override @@ -94,7 +96,7 @@ public SqlExpr _2() { } @Override - public SqlExpr _3() { + public SqlExpr _3() { return isActive(); } } diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/customer_status/CustomerStatusId.java b/testers/mariadb/java/generated-and-checked-in/testdb/customer_status/CustomerStatusId.java index a91bebd2d5..b87d4ff95e 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/customer_status/CustomerStatusId.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/customer_status/CustomerStatusId.java @@ -26,6 +26,6 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(CustomerStatusId::value, CustomerStatusId::new); - public static MariaType dbType = + public static MariaType mariaType = MariaTypes.varchar.bimap(CustomerStatusId::new, CustomerStatusId::value); } diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/customer_status/CustomerStatusRepoImpl.java b/testers/mariadb/java/generated-and-checked-in/testdb/customer_status/CustomerStatusRepoImpl.java index 3eda671e7b..4980b3f5ff 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/customer_status/CustomerStatusRepoImpl.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/customer_status/CustomerStatusRepoImpl.java @@ -20,6 +20,7 @@ import java.util.List; import java.util.Map; import java.util.Optional; +import testdb.userdefined.IsActive; public class CustomerStatusRepoImpl implements CustomerStatusRepo { @Override @@ -31,7 +32,7 @@ public DeleteBuilder delete() { public Boolean deleteById(CustomerStatusId statusCode, Connection c) { return interpolate( Fragment.lit("delete from `customer_status` where `status_code` = "), - Fragment.encode(CustomerStatusId.dbType, statusCode), + Fragment.encode(CustomerStatusId.mariaType, statusCode), Fragment.lit("")) .update() .runUnchecked(c) @@ -42,7 +43,7 @@ public Boolean deleteById(CustomerStatusId statusCode, Connection c) { public Integer deleteByIds(CustomerStatusId[] statusCodes, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : statusCodes) { - fragments.add(Fragment.encode(CustomerStatusId.dbType, id)); + fragments.add(Fragment.encode(CustomerStatusId.mariaType, id)); } ; return Fragment.interpolate( @@ -59,11 +60,11 @@ public CustomerStatusRow insert(CustomerStatusRow unsaved, Connection c) { Fragment.lit( "insert into `customer_status`(`status_code`, `description`, `is_active`)\n" + "values ("), - Fragment.encode(CustomerStatusId.dbType, unsaved.statusCode()), + Fragment.encode(CustomerStatusId.mariaType, unsaved.statusCode()), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.description()), Fragment.lit(", "), - Fragment.encode(MariaTypes.bool, unsaved.isActive()), + Fragment.encode(IsActive.mariaType, unsaved.isActive()), Fragment.lit(")\nRETURNING `status_code`, `description`, `is_active`\n")) .updateReturning(CustomerStatusRow._rowParser.exactlyOne()) .runUnchecked(c); @@ -78,7 +79,7 @@ public CustomerStatusRow insert(CustomerStatusRowUnsaved unsaved, Connection c) columns.add(Fragment.lit("`status_code`")); values.add( interpolate( - Fragment.encode(CustomerStatusId.dbType, unsaved.statusCode()), Fragment.lit(""))); + Fragment.encode(CustomerStatusId.mariaType, unsaved.statusCode()), Fragment.lit(""))); columns.add(Fragment.lit("`description`")); values.add( interpolate(Fragment.encode(MariaTypes.varchar, unsaved.description()), Fragment.lit(""))); @@ -88,7 +89,7 @@ public CustomerStatusRow insert(CustomerStatusRowUnsaved unsaved, Connection c) () -> {}, value -> { columns.add(Fragment.lit("`is_active`")); - values.add(interpolate(Fragment.encode(MariaTypes.bool, value), Fragment.lit(""))); + values.add(interpolate(Fragment.encode(IsActive.mariaType, value), Fragment.lit(""))); }); ; Fragment q = @@ -127,7 +128,7 @@ public Optional selectById(CustomerStatusId statusCode, Conne "select `status_code`, `description`, `is_active`\n" + "from `customer_status`\n" + "where `status_code` = "), - Fragment.encode(CustomerStatusId.dbType, statusCode), + Fragment.encode(CustomerStatusId.mariaType, statusCode), Fragment.lit("")) .query(CustomerStatusRow._rowParser.first()) .runUnchecked(c); @@ -137,7 +138,7 @@ public Optional selectById(CustomerStatusId statusCode, Conne public List selectByIds(CustomerStatusId[] statusCodes, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : statusCodes) { - fragments.add(Fragment.encode(CustomerStatusId.dbType, id)); + fragments.add(Fragment.encode(CustomerStatusId.mariaType, id)); } ; return Fragment.interpolate( @@ -176,9 +177,9 @@ public Boolean update(CustomerStatusRow row, Connection c) { Fragment.lit("update `customer_status`\nset `description` = "), Fragment.encode(MariaTypes.varchar, row.description()), Fragment.lit(",\n`is_active` = "), - Fragment.encode(MariaTypes.bool, row.isActive()), + Fragment.encode(IsActive.mariaType, row.isActive()), Fragment.lit("\nwhere `status_code` = "), - Fragment.encode(CustomerStatusId.dbType, statusCode), + Fragment.encode(CustomerStatusId.mariaType, statusCode), Fragment.lit("")) .update() .runUnchecked(c) @@ -191,11 +192,11 @@ public CustomerStatusRow upsert(CustomerStatusRow unsaved, Connection c) { Fragment.lit( "INSERT INTO `customer_status`(`status_code`, `description`, `is_active`)\n" + "VALUES ("), - Fragment.encode(CustomerStatusId.dbType, unsaved.statusCode()), + Fragment.encode(CustomerStatusId.mariaType, unsaved.statusCode()), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.description()), Fragment.lit(", "), - Fragment.encode(MariaTypes.bool, unsaved.isActive()), + Fragment.encode(IsActive.mariaType, unsaved.isActive()), Fragment.lit( ")\n" + "ON DUPLICATE KEY UPDATE `description` = VALUES(`description`),\n" diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/customer_status/CustomerStatusRow.java b/testers/mariadb/java/generated-and-checked-in/testdb/customer_status/CustomerStatusRow.java index 024a0b63f6..936b06e89a 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/customer_status/CustomerStatusRow.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/customer_status/CustomerStatusRow.java @@ -11,6 +11,7 @@ import dev.typr.foundations.RowParsers; import dev.typr.foundations.Tuple.Tuple3; import testdb.customtypes.Defaulted; +import testdb.userdefined.IsActive; /** Table: customer_status Primary key: status_code */ public record CustomerStatusRow( @@ -19,8 +20,8 @@ public record CustomerStatusRow( /** */ String description, /** Default: 1 */ - @JsonProperty("is_active") Boolean isActive) - implements Tuple3 { + @JsonProperty("is_active") /* user-picked */ IsActive isActive) + implements Tuple3 { /** */ public CustomerStatusRow withStatusCode(CustomerStatusId statusCode) { return new CustomerStatusRow(statusCode, description, isActive); @@ -34,16 +35,16 @@ public CustomerStatusRow withDescription(String description) { ; /** Default: 1 */ - public CustomerStatusRow withIsActive(Boolean isActive) { + public CustomerStatusRow withIsActive(/* user-picked */ IsActive isActive) { return new CustomerStatusRow(statusCode, description, isActive); } ; public static RowParser _rowParser = RowParsers.of( - CustomerStatusId.dbType, + CustomerStatusId.mariaType, MariaTypes.varchar, - MariaTypes.bool, + IsActive.mariaType, CustomerStatusRow::new, row -> new Object[] {row.statusCode(), row.description(), row.isActive()}); ; @@ -61,7 +62,7 @@ public String _2() { ; @Override - public Boolean _3() { + public /* user-picked */ IsActive _3() { return isActive; } ; @@ -71,7 +72,7 @@ public CustomerStatusId id() { } ; - public CustomerStatusRowUnsaved toUnsavedRow(Defaulted isActive) { + public CustomerStatusRowUnsaved toUnsavedRow(Defaulted isActive) { return new CustomerStatusRowUnsaved(statusCode, description, isActive); } ; diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/customer_status/CustomerStatusRowUnsaved.java b/testers/mariadb/java/generated-and-checked-in/testdb/customer_status/CustomerStatusRowUnsaved.java index ab8dafe078..b915048506 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/customer_status/CustomerStatusRowUnsaved.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/customer_status/CustomerStatusRowUnsaved.java @@ -8,6 +8,7 @@ import com.fasterxml.jackson.annotation.JsonProperty; import testdb.customtypes.Defaulted; import testdb.customtypes.Defaulted.UseDefault; +import testdb.userdefined.IsActive; /** This class corresponds to a row in table `customer_status` which has not been persisted yet */ public record CustomerStatusRowUnsaved( @@ -16,7 +17,7 @@ public record CustomerStatusRowUnsaved( /** */ String description, /** Default: 1 */ - @JsonProperty("is_active") Defaulted isActive) { + @JsonProperty("is_active") Defaulted isActive) { public CustomerStatusRowUnsaved( /** */ @JsonProperty("status_code") CustomerStatusId statusCode, @@ -39,12 +40,13 @@ public CustomerStatusRowUnsaved withDescription(String description) { ; /** Default: 1 */ - public CustomerStatusRowUnsaved withIsActive(Defaulted isActive) { + public CustomerStatusRowUnsaved withIsActive(Defaulted isActive) { return new CustomerStatusRowUnsaved(statusCode, description, isActive); } ; - public CustomerStatusRow toRow(java.util.function.Supplier isActiveDefault) { + public CustomerStatusRow toRow( + java.util.function.Supplier isActiveDefault) { return new CustomerStatusRow(statusCode, description, isActive.getOrElse(isActiveDefault)); } ; diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/customers/CustomersFields.java b/testers/mariadb/java/generated-and-checked-in/testdb/customers/CustomersFields.java index 7997831955..5e3f1ae283 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/customers/CustomersFields.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/customers/CustomersFields.java @@ -25,14 +25,17 @@ import testdb.customer_status.CustomerStatusFields; import testdb.customer_status.CustomerStatusId; import testdb.customer_status.CustomerStatusRow; +import testdb.userdefined.Email; +import testdb.userdefined.FirstName; +import testdb.userdefined.LastName; public class CustomersFields extends TupleExpr14< - CustomersId, - String, - byte[], - String, - String, + CustomersId, /* user-picked */ + Email, + byte[], /* user-picked */ + FirstName, /* user-picked */ + LastName, String, CustomerStatusId, String, @@ -59,18 +62,18 @@ public IdField customerId() { Optional.empty(), Optional.empty(), (row, value) -> row.withCustomerId(value), - CustomersId.dbType); + CustomersId.mariaType); } - public Field email() { - return new Field( + public Field email() { + return new Field( _path, "email", CustomersRow::email, Optional.empty(), Optional.empty(), (row, value) -> row.withEmail(value), - MariaTypes.varchar); + Email.mariaType); } public Field passwordHash() { @@ -84,26 +87,26 @@ public Field passwordHash() { MariaTypes.binary); } - public Field firstName() { - return new Field( + public Field firstName() { + return new Field( _path, "first_name", CustomersRow::firstName, Optional.empty(), Optional.empty(), (row, value) -> row.withFirstName(value), - MariaTypes.varchar); + FirstName.mariaType); } - public Field lastName() { - return new Field( + public Field lastName() { + return new Field( _path, "last_name", CustomersRow::lastName, Optional.empty(), Optional.empty(), (row, value) -> row.withLastName(value), - MariaTypes.varchar); + LastName.mariaType); } public OptField phone() { @@ -125,7 +128,7 @@ public Field status() { Optional.empty(), Optional.empty(), (row, value) -> row.withStatus(value), - CustomerStatusId.dbType); + CustomerStatusId.mariaType); } public Field tier() { @@ -158,7 +161,7 @@ public OptField marketingFlags() { Optional.empty(), Optional.empty(), (row, value) -> row.withMarketingFlags(value), - EmailMailPushSmsSet.dbType); + EmailMailPushSmsSet.mariaType); } public OptField notes() { @@ -250,7 +253,7 @@ public SqlExpr _1() { } @Override - public SqlExpr _2() { + public SqlExpr _2() { return email(); } @@ -260,12 +263,12 @@ public SqlExpr _3() { } @Override - public SqlExpr _4() { + public SqlExpr _4() { return firstName(); } @Override - public SqlExpr _5() { + public SqlExpr _5() { return lastName(); } diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/customers/CustomersId.java b/testers/mariadb/java/generated-and-checked-in/testdb/customers/CustomersId.java index 29aff199b6..8bd814112a 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/customers/CustomersId.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/customers/CustomersId.java @@ -27,6 +27,6 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(CustomersId::value, CustomersId::new); - public static MariaType dbType = + public static MariaType mariaType = MariaTypes.bigintUnsigned.bimap(CustomersId::new, CustomersId::value); } diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/customers/CustomersRepo.java b/testers/mariadb/java/generated-and-checked-in/testdb/customers/CustomersRepo.java index a463267d4f..25d83b2c13 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/customers/CustomersRepo.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/customers/CustomersRepo.java @@ -13,6 +13,7 @@ import java.util.List; import java.util.Map; import java.util.Optional; +import testdb.userdefined.Email; public interface CustomersRepo { DeleteBuilder delete(); @@ -35,7 +36,7 @@ public interface CustomersRepo { Map selectByIdsTracked(CustomersId[] customerIds, Connection c); - Optional selectByUniqueEmail(String email, Connection c); + Optional selectByUniqueEmail(/* user-picked */ Email email, Connection c); UpdateBuilder update(); diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/customers/CustomersRepoImpl.java b/testers/mariadb/java/generated-and-checked-in/testdb/customers/CustomersRepoImpl.java index 8d0f6f6e5a..213c685b93 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/customers/CustomersRepoImpl.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/customers/CustomersRepoImpl.java @@ -22,6 +22,9 @@ import java.util.Optional; import testdb.EmailMailPushSmsSet; import testdb.customer_status.CustomerStatusId; +import testdb.userdefined.Email; +import testdb.userdefined.FirstName; +import testdb.userdefined.LastName; public class CustomersRepoImpl implements CustomersRepo { @Override @@ -33,7 +36,7 @@ public DeleteBuilder delete() { public Boolean deleteById(CustomersId customerId, Connection c) { return interpolate( Fragment.lit("delete from `customers` where `customer_id` = "), - Fragment.encode(CustomersId.dbType, customerId), + Fragment.encode(CustomersId.mariaType, customerId), Fragment.lit("")) .update() .runUnchecked(c) @@ -44,7 +47,7 @@ public Boolean deleteById(CustomersId customerId, Connection c) { public Integer deleteByIds(CustomersId[] customerIds, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : customerIds) { - fragments.add(Fragment.encode(CustomersId.dbType, id)); + fragments.add(Fragment.encode(CustomersId.mariaType, id)); } ; return Fragment.interpolate( @@ -63,23 +66,23 @@ public CustomersRow insert(CustomersRow unsaved, Connection c) { + " `phone`, `status`, `tier`, `preferences`, `marketing_flags`, `notes`," + " `created_at`, `updated_at`, `last_login_at`)\n" + "values ("), - Fragment.encode(MariaTypes.varchar, unsaved.email()), + Fragment.encode(Email.mariaType, unsaved.email()), Fragment.lit(", "), Fragment.encode(MariaTypes.binary, unsaved.passwordHash()), Fragment.lit(", "), - Fragment.encode(MariaTypes.varchar, unsaved.firstName()), + Fragment.encode(FirstName.mariaType, unsaved.firstName()), Fragment.lit(", "), - Fragment.encode(MariaTypes.varchar, unsaved.lastName()), + Fragment.encode(LastName.mariaType, unsaved.lastName()), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.opt(), unsaved.phone()), Fragment.lit(", "), - Fragment.encode(CustomerStatusId.dbType, unsaved.status()), + Fragment.encode(CustomerStatusId.mariaType, unsaved.status()), Fragment.lit(", "), Fragment.encode(MariaTypes.text, unsaved.tier()), Fragment.lit(", "), Fragment.encode(MariaTypes.json.opt(), unsaved.preferences()), Fragment.lit(", "), - Fragment.encode(EmailMailPushSmsSet.dbType.opt(), unsaved.marketingFlags()), + Fragment.encode(EmailMailPushSmsSet.mariaType.opt(), unsaved.marketingFlags()), Fragment.lit(", "), Fragment.encode(MariaTypes.text.opt(), unsaved.notes()), Fragment.lit(", "), @@ -104,16 +107,16 @@ public CustomersRow insert(CustomersRowUnsaved unsaved, Connection c) { ArrayList values = new ArrayList<>(); ; columns.add(Fragment.lit("`email`")); - values.add(interpolate(Fragment.encode(MariaTypes.varchar, unsaved.email()), Fragment.lit(""))); + values.add(interpolate(Fragment.encode(Email.mariaType, unsaved.email()), Fragment.lit(""))); columns.add(Fragment.lit("`password_hash`")); values.add( interpolate(Fragment.encode(MariaTypes.binary, unsaved.passwordHash()), Fragment.lit(""))); columns.add(Fragment.lit("`first_name`")); values.add( - interpolate(Fragment.encode(MariaTypes.varchar, unsaved.firstName()), Fragment.lit(""))); + interpolate(Fragment.encode(FirstName.mariaType, unsaved.firstName()), Fragment.lit(""))); columns.add(Fragment.lit("`last_name`")); values.add( - interpolate(Fragment.encode(MariaTypes.varchar, unsaved.lastName()), Fragment.lit(""))); + interpolate(Fragment.encode(LastName.mariaType, unsaved.lastName()), Fragment.lit(""))); unsaved .phone() .visit( @@ -131,7 +134,8 @@ public CustomersRow insert(CustomersRowUnsaved unsaved, Connection c) { value -> { columns.add(Fragment.lit("`status`")); values.add( - interpolate(Fragment.encode(CustomerStatusId.dbType, value), Fragment.lit(""))); + interpolate( + Fragment.encode(CustomerStatusId.mariaType, value), Fragment.lit(""))); }); ; unsaved @@ -161,7 +165,8 @@ public CustomersRow insert(CustomersRowUnsaved unsaved, Connection c) { columns.add(Fragment.lit("`marketing_flags`")); values.add( interpolate( - Fragment.encode(EmailMailPushSmsSet.dbType.opt(), value), Fragment.lit(""))); + Fragment.encode(EmailMailPushSmsSet.mariaType.opt(), value), + Fragment.lit(""))); }); ; unsaved @@ -246,7 +251,7 @@ public Optional selectById(CustomersId customerId, Connection c) { + " `created_at`, `updated_at`, `last_login_at`\n" + "from `customers`\n" + "where `customer_id` = "), - Fragment.encode(CustomersId.dbType, customerId), + Fragment.encode(CustomersId.mariaType, customerId), Fragment.lit("")) .query(CustomersRow._rowParser.first()) .runUnchecked(c); @@ -256,7 +261,7 @@ public Optional selectById(CustomersId customerId, Connection c) { public List selectByIds(CustomersId[] customerIds, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : customerIds) { - fragments.add(Fragment.encode(CustomersId.dbType, id)); + fragments.add(Fragment.encode(CustomersId.mariaType, id)); } ; return Fragment.interpolate( @@ -280,7 +285,7 @@ public Map selectByIdsTracked( } @Override - public Optional selectByUniqueEmail(String email, Connection c) { + public Optional selectByUniqueEmail(/* user-picked */ Email email, Connection c) { return interpolate( Fragment.lit( "select `customer_id`, `email`, `password_hash`, `first_name`, `last_name`," @@ -288,7 +293,7 @@ public Optional selectByUniqueEmail(String email, Connection c) { + " `created_at`, `updated_at`, `last_login_at`\n" + "from `customers`\n" + "where `email` = "), - Fragment.encode(MariaTypes.varchar, email), + Fragment.encode(Email.mariaType, email), Fragment.lit("\n")) .query(CustomersRow._rowParser.first()) .runUnchecked(c); @@ -306,23 +311,23 @@ public Boolean update(CustomersRow row, Connection c) { ; return interpolate( Fragment.lit("update `customers`\nset `email` = "), - Fragment.encode(MariaTypes.varchar, row.email()), + Fragment.encode(Email.mariaType, row.email()), Fragment.lit(",\n`password_hash` = "), Fragment.encode(MariaTypes.binary, row.passwordHash()), Fragment.lit(",\n`first_name` = "), - Fragment.encode(MariaTypes.varchar, row.firstName()), + Fragment.encode(FirstName.mariaType, row.firstName()), Fragment.lit(",\n`last_name` = "), - Fragment.encode(MariaTypes.varchar, row.lastName()), + Fragment.encode(LastName.mariaType, row.lastName()), Fragment.lit(",\n`phone` = "), Fragment.encode(MariaTypes.varchar.opt(), row.phone()), Fragment.lit(",\n`status` = "), - Fragment.encode(CustomerStatusId.dbType, row.status()), + Fragment.encode(CustomerStatusId.mariaType, row.status()), Fragment.lit(",\n`tier` = "), Fragment.encode(MariaTypes.text, row.tier()), Fragment.lit(",\n`preferences` = "), Fragment.encode(MariaTypes.json.opt(), row.preferences()), Fragment.lit(",\n`marketing_flags` = "), - Fragment.encode(EmailMailPushSmsSet.dbType.opt(), row.marketingFlags()), + Fragment.encode(EmailMailPushSmsSet.mariaType.opt(), row.marketingFlags()), Fragment.lit(",\n`notes` = "), Fragment.encode(MariaTypes.text.opt(), row.notes()), Fragment.lit(",\n`created_at` = "), @@ -332,7 +337,7 @@ public Boolean update(CustomersRow row, Connection c) { Fragment.lit(",\n`last_login_at` = "), Fragment.encode(MariaTypes.datetime.opt(), row.lastLoginAt()), Fragment.lit("\nwhere `customer_id` = "), - Fragment.encode(CustomersId.dbType, customerId), + Fragment.encode(CustomersId.mariaType, customerId), Fragment.lit("")) .update() .runUnchecked(c) @@ -347,25 +352,25 @@ public CustomersRow upsert(CustomersRow unsaved, Connection c) { + " `last_name`, `phone`, `status`, `tier`, `preferences`, `marketing_flags`," + " `notes`, `created_at`, `updated_at`, `last_login_at`)\n" + "VALUES ("), - Fragment.encode(CustomersId.dbType, unsaved.customerId()), + Fragment.encode(CustomersId.mariaType, unsaved.customerId()), Fragment.lit(", "), - Fragment.encode(MariaTypes.varchar, unsaved.email()), + Fragment.encode(Email.mariaType, unsaved.email()), Fragment.lit(", "), Fragment.encode(MariaTypes.binary, unsaved.passwordHash()), Fragment.lit(", "), - Fragment.encode(MariaTypes.varchar, unsaved.firstName()), + Fragment.encode(FirstName.mariaType, unsaved.firstName()), Fragment.lit(", "), - Fragment.encode(MariaTypes.varchar, unsaved.lastName()), + Fragment.encode(LastName.mariaType, unsaved.lastName()), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.opt(), unsaved.phone()), Fragment.lit(", "), - Fragment.encode(CustomerStatusId.dbType, unsaved.status()), + Fragment.encode(CustomerStatusId.mariaType, unsaved.status()), Fragment.lit(", "), Fragment.encode(MariaTypes.text, unsaved.tier()), Fragment.lit(", "), Fragment.encode(MariaTypes.json.opt(), unsaved.preferences()), Fragment.lit(", "), - Fragment.encode(EmailMailPushSmsSet.dbType.opt(), unsaved.marketingFlags()), + Fragment.encode(EmailMailPushSmsSet.mariaType.opt(), unsaved.marketingFlags()), Fragment.lit(", "), Fragment.encode(MariaTypes.text.opt(), unsaved.notes()), Fragment.lit(", "), diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/customers/CustomersRepoMock.java b/testers/mariadb/java/generated-and-checked-in/testdb/customers/CustomersRepoMock.java index 680c874a97..aaff9cc976 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/customers/CustomersRepoMock.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/customers/CustomersRepoMock.java @@ -23,6 +23,7 @@ import java.util.Optional; import java.util.function.Function; import java.util.stream.Collectors; +import testdb.userdefined.Email; public record CustomersRepoMock( java.util.function.Function toRow, @@ -136,7 +137,7 @@ public Map selectByIdsTracked( ; @Override - public Optional selectByUniqueEmail(String email, Connection c) { + public Optional selectByUniqueEmail(/* user-picked */ Email email, Connection c) { return new ArrayList<>(map.values()).stream().filter(v -> email.equals(v.email())).findFirst(); } ; diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/customers/CustomersRow.java b/testers/mariadb/java/generated-and-checked-in/testdb/customers/CustomersRow.java index 053f52177a..356717bc83 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/customers/CustomersRow.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/customers/CustomersRow.java @@ -16,19 +16,22 @@ import testdb.EmailMailPushSmsSet; import testdb.customer_status.CustomerStatusId; import testdb.customtypes.Defaulted; +import testdb.userdefined.Email; +import testdb.userdefined.FirstName; +import testdb.userdefined.LastName; /** Table: customers Primary key: customer_id */ public record CustomersRow( /** AUTO_INCREMENT */ @JsonProperty("customer_id") CustomersId customerId, /** */ - String email, + /* user-picked */ Email email, /** */ @JsonProperty("password_hash") byte[] passwordHash, /** */ - @JsonProperty("first_name") String firstName, + @JsonProperty("first_name") /* user-picked */ FirstName firstName, /** */ - @JsonProperty("last_name") String lastName, + @JsonProperty("last_name") /* user-picked */ LastName lastName, /** Default: NULL */ Optional phone, /** @@ -50,11 +53,11 @@ public record CustomersRow( /** Default: NULL */ @JsonProperty("last_login_at") Optional lastLoginAt) implements Tuple14< - CustomersId, - String, - byte[], - String, - String, + CustomersId, /* user-picked */ + Email, + byte[], /* user-picked */ + FirstName, /* user-picked */ + LastName, Optional, CustomerStatusId, String, @@ -85,7 +88,7 @@ public CustomersRow withCustomerId(CustomersId customerId) { ; /** */ - public CustomersRow withEmail(String email) { + public CustomersRow withEmail(/* user-picked */ Email email) { return new CustomersRow( customerId, email, @@ -125,7 +128,7 @@ public CustomersRow withPasswordHash(byte[] passwordHash) { ; /** */ - public CustomersRow withFirstName(String firstName) { + public CustomersRow withFirstName(/* user-picked */ FirstName firstName) { return new CustomersRow( customerId, email, @@ -145,7 +148,7 @@ public CustomersRow withFirstName(String firstName) { ; /** */ - public CustomersRow withLastName(String lastName) { + public CustomersRow withLastName(/* user-picked */ LastName lastName) { return new CustomersRow( customerId, email, @@ -346,16 +349,16 @@ public CustomersRow withLastLoginAt(Optional lastLoginAt) { public static RowParser _rowParser = RowParsers.of( - CustomersId.dbType, - MariaTypes.varchar, + CustomersId.mariaType, + Email.mariaType, MariaTypes.binary, - MariaTypes.varchar, - MariaTypes.varchar, + FirstName.mariaType, + LastName.mariaType, MariaTypes.varchar.opt(), - CustomerStatusId.dbType, + CustomerStatusId.mariaType, MariaTypes.text, MariaTypes.json.opt(), - EmailMailPushSmsSet.dbType.opt(), + EmailMailPushSmsSet.mariaType.opt(), MariaTypes.text.opt(), MariaTypes.datetime, MariaTypes.datetime, @@ -417,7 +420,7 @@ public Optional _14() { ; @Override - public String _2() { + public /* user-picked */ Email _2() { return email; } ; @@ -429,13 +432,13 @@ public byte[] _3() { ; @Override - public String _4() { + public /* user-picked */ FirstName _4() { return firstName; } ; @Override - public String _5() { + public /* user-picked */ LastName _5() { return lastName; } ; diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/customers/CustomersRowUnsaved.java b/testers/mariadb/java/generated-and-checked-in/testdb/customers/CustomersRowUnsaved.java index 01cd2c77c5..39eae38ab8 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/customers/CustomersRowUnsaved.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/customers/CustomersRowUnsaved.java @@ -13,17 +13,20 @@ import testdb.customer_status.CustomerStatusId; import testdb.customtypes.Defaulted; import testdb.customtypes.Defaulted.UseDefault; +import testdb.userdefined.Email; +import testdb.userdefined.FirstName; +import testdb.userdefined.LastName; /** This class corresponds to a row in table `customers` which has not been persisted yet */ public record CustomersRowUnsaved( /** */ - String email, + /* user-picked */ Email email, /** */ @JsonProperty("password_hash") byte[] passwordHash, /** */ - @JsonProperty("first_name") String firstName, + @JsonProperty("first_name") /* user-picked */ FirstName firstName, /** */ - @JsonProperty("last_name") String lastName, + @JsonProperty("last_name") /* user-picked */ LastName lastName, /** Default: NULL */ Defaulted> phone, /** @@ -46,13 +49,13 @@ public record CustomersRowUnsaved( @JsonProperty("last_login_at") Defaulted> lastLoginAt) { public CustomersRowUnsaved( /** */ - String email, + /* user-picked */ Email email, /** */ @JsonProperty("password_hash") byte[] passwordHash, /** */ - @JsonProperty("first_name") String firstName, + @JsonProperty("first_name") /* user-picked */ FirstName firstName, /** */ - @JsonProperty("last_name") String lastName) { + @JsonProperty("last_name") /* user-picked */ LastName lastName) { this( email, passwordHash, @@ -71,7 +74,7 @@ public CustomersRowUnsaved( ; /** */ - public CustomersRowUnsaved withEmail(String email) { + public CustomersRowUnsaved withEmail(/* user-picked */ Email email) { return new CustomersRowUnsaved( email, passwordHash, @@ -109,7 +112,7 @@ public CustomersRowUnsaved withPasswordHash(byte[] passwordHash) { ; /** */ - public CustomersRowUnsaved withFirstName(String firstName) { + public CustomersRowUnsaved withFirstName(/* user-picked */ FirstName firstName) { return new CustomersRowUnsaved( email, passwordHash, @@ -128,7 +131,7 @@ public CustomersRowUnsaved withFirstName(String firstName) { ; /** */ - public CustomersRowUnsaved withLastName(String lastName) { + public CustomersRowUnsaved withLastName(/* user-picked */ LastName lastName) { return new CustomersRowUnsaved( email, passwordHash, diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/inventory/InventoryFields.java b/testers/mariadb/java/generated-and-checked-in/testdb/inventory/InventoryFields.java index 7d72fee2ee..889379639a 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/inventory/InventoryFields.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/inventory/InventoryFields.java @@ -57,7 +57,7 @@ public IdField inventoryId() { Optional.empty(), Optional.empty(), (row, value) -> row.withInventoryId(value), - InventoryId.dbType); + InventoryId.mariaType); } public Field productId() { @@ -68,7 +68,7 @@ public Field productId() { Optional.empty(), Optional.empty(), (row, value) -> row.withProductId(value), - ProductsId.dbType); + ProductsId.mariaType); } public Field warehouseId() { @@ -79,7 +79,7 @@ public Field warehouseId() { Optional.empty(), Optional.empty(), (row, value) -> row.withWarehouseId(value), - WarehousesId.dbType); + WarehousesId.mariaType); } public Field quantityOnHand() { diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/inventory/InventoryId.java b/testers/mariadb/java/generated-and-checked-in/testdb/inventory/InventoryId.java index 280dfb4d56..dd4e2e69f3 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/inventory/InventoryId.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/inventory/InventoryId.java @@ -27,6 +27,6 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(InventoryId::value, InventoryId::new); - public static MariaType dbType = + public static MariaType mariaType = MariaTypes.bigintUnsigned.bimap(InventoryId::new, InventoryId::value); } diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/inventory/InventoryRepoImpl.java b/testers/mariadb/java/generated-and-checked-in/testdb/inventory/InventoryRepoImpl.java index e5c352b8a9..a4e2d24a18 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/inventory/InventoryRepoImpl.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/inventory/InventoryRepoImpl.java @@ -33,7 +33,7 @@ public DeleteBuilder delete() { public Boolean deleteById(InventoryId inventoryId, Connection c) { return interpolate( Fragment.lit("delete from `inventory` where `inventory_id` = "), - Fragment.encode(InventoryId.dbType, inventoryId), + Fragment.encode(InventoryId.mariaType, inventoryId), Fragment.lit("")) .update() .runUnchecked(c) @@ -44,7 +44,7 @@ public Boolean deleteById(InventoryId inventoryId, Connection c) { public Integer deleteByIds(InventoryId[] inventoryIds, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : inventoryIds) { - fragments.add(Fragment.encode(InventoryId.dbType, id)); + fragments.add(Fragment.encode(InventoryId.mariaType, id)); } ; return Fragment.interpolate( @@ -63,9 +63,9 @@ public InventoryRow insert(InventoryRow unsaved, Connection c) { + " `quantity_reserved`, `quantity_on_order`, `reorder_point`," + " `reorder_quantity`, `bin_location`, `last_counted_at`, `updated_at`)\n" + "values ("), - Fragment.encode(ProductsId.dbType, unsaved.productId()), + Fragment.encode(ProductsId.mariaType, unsaved.productId()), Fragment.lit(", "), - Fragment.encode(WarehousesId.dbType, unsaved.warehouseId()), + Fragment.encode(WarehousesId.mariaType, unsaved.warehouseId()), Fragment.lit(", "), Fragment.encode(MariaTypes.int_, unsaved.quantityOnHand()), Fragment.lit(", "), @@ -99,10 +99,11 @@ public InventoryRow insert(InventoryRowUnsaved unsaved, Connection c) { ; columns.add(Fragment.lit("`product_id`")); values.add( - interpolate(Fragment.encode(ProductsId.dbType, unsaved.productId()), Fragment.lit(""))); + interpolate(Fragment.encode(ProductsId.mariaType, unsaved.productId()), Fragment.lit(""))); columns.add(Fragment.lit("`warehouse_id`")); values.add( - interpolate(Fragment.encode(WarehousesId.dbType, unsaved.warehouseId()), Fragment.lit(""))); + interpolate( + Fragment.encode(WarehousesId.mariaType, unsaved.warehouseId()), Fragment.lit(""))); unsaved .quantityOnHand() .visit( @@ -220,7 +221,7 @@ public Optional selectById(InventoryId inventoryId, Connection c) + " `reorder_quantity`, `bin_location`, `last_counted_at`, `updated_at`\n" + "from `inventory`\n" + "where `inventory_id` = "), - Fragment.encode(InventoryId.dbType, inventoryId), + Fragment.encode(InventoryId.mariaType, inventoryId), Fragment.lit("")) .query(InventoryRow._rowParser.first()) .runUnchecked(c); @@ -230,7 +231,7 @@ public Optional selectById(InventoryId inventoryId, Connection c) public List selectByIds(InventoryId[] inventoryIds, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : inventoryIds) { - fragments.add(Fragment.encode(InventoryId.dbType, id)); + fragments.add(Fragment.encode(InventoryId.mariaType, id)); } ; return Fragment.interpolate( @@ -263,9 +264,9 @@ public Optional selectByUniqueProductIdAndWarehouseId( + " `reorder_quantity`, `bin_location`, `last_counted_at`, `updated_at`\n" + "from `inventory`\n" + "where `product_id` = "), - Fragment.encode(ProductsId.dbType, productId), + Fragment.encode(ProductsId.mariaType, productId), Fragment.lit(" AND `warehouse_id` = "), - Fragment.encode(WarehousesId.dbType, warehouseId), + Fragment.encode(WarehousesId.mariaType, warehouseId), Fragment.lit("\n")) .query(InventoryRow._rowParser.first()) .runUnchecked(c); @@ -283,9 +284,9 @@ public Boolean update(InventoryRow row, Connection c) { ; return interpolate( Fragment.lit("update `inventory`\nset `product_id` = "), - Fragment.encode(ProductsId.dbType, row.productId()), + Fragment.encode(ProductsId.mariaType, row.productId()), Fragment.lit(",\n`warehouse_id` = "), - Fragment.encode(WarehousesId.dbType, row.warehouseId()), + Fragment.encode(WarehousesId.mariaType, row.warehouseId()), Fragment.lit(",\n`quantity_on_hand` = "), Fragment.encode(MariaTypes.int_, row.quantityOnHand()), Fragment.lit(",\n`quantity_reserved` = "), @@ -303,7 +304,7 @@ public Boolean update(InventoryRow row, Connection c) { Fragment.lit(",\n`updated_at` = "), Fragment.encode(MariaTypes.datetime, row.updatedAt()), Fragment.lit("\nwhere `inventory_id` = "), - Fragment.encode(InventoryId.dbType, inventoryId), + Fragment.encode(InventoryId.mariaType, inventoryId), Fragment.lit("")) .update() .runUnchecked(c) @@ -319,11 +320,11 @@ public InventoryRow upsert(InventoryRow unsaved, Connection c) { + " `reorder_point`, `reorder_quantity`, `bin_location`, `last_counted_at`," + " `updated_at`)\n" + "VALUES ("), - Fragment.encode(InventoryId.dbType, unsaved.inventoryId()), + Fragment.encode(InventoryId.mariaType, unsaved.inventoryId()), Fragment.lit(", "), - Fragment.encode(ProductsId.dbType, unsaved.productId()), + Fragment.encode(ProductsId.mariaType, unsaved.productId()), Fragment.lit(", "), - Fragment.encode(WarehousesId.dbType, unsaved.warehouseId()), + Fragment.encode(WarehousesId.mariaType, unsaved.warehouseId()), Fragment.lit(", "), Fragment.encode(MariaTypes.int_, unsaved.quantityOnHand()), Fragment.lit(", "), diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/inventory/InventoryRow.java b/testers/mariadb/java/generated-and-checked-in/testdb/inventory/InventoryRow.java index c5fce41ec6..4916cfd880 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/inventory/InventoryRow.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/inventory/InventoryRow.java @@ -241,9 +241,9 @@ public InventoryRow withUpdatedAt(LocalDateTime updatedAt) { public static RowParser _rowParser = RowParsers.of( - InventoryId.dbType, - ProductsId.dbType, - WarehousesId.dbType, + InventoryId.mariaType, + ProductsId.mariaType, + WarehousesId.mariaType, MariaTypes.int_, MariaTypes.int_, MariaTypes.int_, diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/inventory_check/InventoryCheckSqlRow.java b/testers/mariadb/java/generated-and-checked-in/testdb/inventory_check/InventoryCheckSqlRow.java index 4afa8d2cff..cbbd8a6edd 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/inventory_check/InventoryCheckSqlRow.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/inventory_check/InventoryCheckSqlRow.java @@ -35,7 +35,7 @@ public record InventoryCheckSqlRow( @JsonProperty("quantity_on_hand") Integer quantityOnHand, /** Points to {@link testdb.inventory.InventoryRow#quantityReserved()} */ @JsonProperty("quantity_reserved") Integer quantityReserved, - /** Points to {@link testdb.inventory.InventoryRow#quantityOnHand()} */ + /** Points to {@link testdb.inventory.InventoryRow#quantityReserved()} */ Integer available, /** Points to {@link testdb.inventory.InventoryRow#reorderPoint()} */ @JsonProperty("reorder_point") Integer reorderPoint, @@ -216,7 +216,7 @@ public InventoryCheckSqlRow withQuantityReserved(Integer quantityReserved) { } ; - /** Points to {@link testdb.inventory.InventoryRow#quantityOnHand()} */ + /** Points to {@link testdb.inventory.InventoryRow#quantityReserved()} */ public InventoryCheckSqlRow withAvailable(Integer available) { return new InventoryCheckSqlRow( inventoryId, @@ -272,11 +272,11 @@ public InventoryCheckSqlRow withBinLocation(Optional binLocation) { public static RowParser _rowParser = RowParsers.of( - InventoryId.dbType, - ProductsId.dbType, + InventoryId.mariaType, + ProductsId.mariaType, MariaTypes.varchar, MariaTypes.varchar, - WarehousesId.dbType, + WarehousesId.mariaType, MariaTypes.char_, MariaTypes.varchar, MariaTypes.int_, diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/mariatest/MariatestFields.java b/testers/mariadb/java/generated-and-checked-in/testdb/mariatest/MariatestFields.java index 4252dc0bb5..970c20f141 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/mariatest/MariatestFields.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/mariatest/MariatestFields.java @@ -124,7 +124,7 @@ public IdField intCol() { Optional.empty(), Optional.empty(), (row, value) -> row.withIntCol(value), - MariatestId.dbType); + MariatestId.mariaType); } public Field bigintCol() { @@ -498,7 +498,7 @@ public Field setCol() { Optional.empty(), Optional.empty(), (row, value) -> row.withSetCol(value), - XYZSet.dbType); + XYZSet.mariaType); } public Field jsonCol() { diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/mariatest/MariatestId.java b/testers/mariadb/java/generated-and-checked-in/testdb/mariatest/MariatestId.java index 496e114f04..dfb08acc78 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/mariatest/MariatestId.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/mariatest/MariatestId.java @@ -26,6 +26,6 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(MariatestId::value, MariatestId::new); - public static MariaType dbType = + public static MariaType mariaType = MariaTypes.int_.bimap(MariatestId::new, MariatestId::value); } diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/mariatest/MariatestRepoImpl.java b/testers/mariadb/java/generated-and-checked-in/testdb/mariatest/MariatestRepoImpl.java index 3fa8a0c1c5..2e67da75c4 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/mariatest/MariatestRepoImpl.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/mariatest/MariatestRepoImpl.java @@ -32,7 +32,7 @@ public DeleteBuilder delete() { public Boolean deleteById(MariatestId intCol, Connection c) { return interpolate( Fragment.lit("delete from `mariatest` where `int_col` = "), - Fragment.encode(MariatestId.dbType, intCol), + Fragment.encode(MariatestId.mariaType, intCol), Fragment.lit("")) .update() .runUnchecked(c) @@ -43,7 +43,7 @@ public Boolean deleteById(MariatestId intCol, Connection c) { public Integer deleteByIds(MariatestId[] intCols, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : intCols) { - fragments.add(Fragment.encode(MariatestId.dbType, id)); + fragments.add(Fragment.encode(MariatestId.mariaType, id)); } ; return Fragment.interpolate( @@ -74,7 +74,7 @@ public MariatestRow insert(MariatestRow unsaved, Connection c) { Fragment.lit(", "), Fragment.encode(MariaTypes.mediumint, unsaved.mediumintCol()), Fragment.lit(", "), - Fragment.encode(MariatestId.dbType, unsaved.intCol()), + Fragment.encode(MariatestId.mariaType, unsaved.intCol()), Fragment.lit(", "), Fragment.encode(MariaTypes.bigint, unsaved.bigintCol()), Fragment.lit(", "), @@ -142,7 +142,7 @@ public MariatestRow insert(MariatestRow unsaved, Connection c) { Fragment.lit(", "), Fragment.encode(MariaTypes.year, unsaved.yearCol()), Fragment.lit(", "), - Fragment.encode(XYZSet.dbType, unsaved.setCol()), + Fragment.encode(XYZSet.mariaType, unsaved.setCol()), Fragment.lit(", "), Fragment.encode(MariaTypes.json, unsaved.jsonCol()), Fragment.lit(", "), @@ -182,7 +182,7 @@ public MariatestRow insert(MariatestRowUnsaved unsaved, Connection c) { Fragment.encode(MariaTypes.mediumint, unsaved.mediumintCol()), Fragment.lit(""))); columns.add(Fragment.lit("`int_col`")); values.add( - interpolate(Fragment.encode(MariatestId.dbType, unsaved.intCol()), Fragment.lit(""))); + interpolate(Fragment.encode(MariatestId.mariaType, unsaved.intCol()), Fragment.lit(""))); columns.add(Fragment.lit("`bigint_col`")); values.add( interpolate(Fragment.encode(MariaTypes.bigint, unsaved.bigintCol()), Fragment.lit(""))); @@ -278,7 +278,7 @@ public MariatestRow insert(MariatestRowUnsaved unsaved, Connection c) { columns.add(Fragment.lit("`year_col`")); values.add(interpolate(Fragment.encode(MariaTypes.year, unsaved.yearCol()), Fragment.lit(""))); columns.add(Fragment.lit("`set_col`")); - values.add(interpolate(Fragment.encode(XYZSet.dbType, unsaved.setCol()), Fragment.lit(""))); + values.add(interpolate(Fragment.encode(XYZSet.mariaType, unsaved.setCol()), Fragment.lit(""))); columns.add(Fragment.lit("`json_col`")); values.add(interpolate(Fragment.encode(MariaTypes.json, unsaved.jsonCol()), Fragment.lit(""))); columns.add(Fragment.lit("`inet4_col`")); @@ -367,7 +367,7 @@ public Optional selectById(MariatestId intCol, Connection c) { + " `set_col`, `json_col`, `inet4_col`, `inet6_col`\n" + "from `mariatest`\n" + "where `int_col` = "), - Fragment.encode(MariatestId.dbType, intCol), + Fragment.encode(MariatestId.mariaType, intCol), Fragment.lit("")) .query(MariatestRow._rowParser.first()) .runUnchecked(c); @@ -377,7 +377,7 @@ public Optional selectById(MariatestId intCol, Connection c) { public List selectByIds(MariatestId[] intCols, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : intCols) { - fragments.add(Fragment.encode(MariatestId.dbType, id)); + fragments.add(Fragment.encode(MariatestId.mariaType, id)); } ; return Fragment.interpolate( @@ -489,7 +489,7 @@ public Boolean update(MariatestRow row, Connection c) { Fragment.lit(",\n`year_col` = "), Fragment.encode(MariaTypes.year, row.yearCol()), Fragment.lit(",\n`set_col` = "), - Fragment.encode(XYZSet.dbType, row.setCol()), + Fragment.encode(XYZSet.mariaType, row.setCol()), Fragment.lit(",\n`json_col` = "), Fragment.encode(MariaTypes.json, row.jsonCol()), Fragment.lit(",\n`inet4_col` = "), @@ -497,7 +497,7 @@ public Boolean update(MariatestRow row, Connection c) { Fragment.lit(",\n`inet6_col` = "), Fragment.encode(MariaTypes.inet6, row.inet6Col()), Fragment.lit("\nwhere `int_col` = "), - Fragment.encode(MariatestId.dbType, intCol), + Fragment.encode(MariatestId.mariaType, intCol), Fragment.lit("")) .update() .runUnchecked(c) @@ -524,7 +524,7 @@ public MariatestRow upsert(MariatestRow unsaved, Connection c) { Fragment.lit(", "), Fragment.encode(MariaTypes.mediumint, unsaved.mediumintCol()), Fragment.lit(", "), - Fragment.encode(MariatestId.dbType, unsaved.intCol()), + Fragment.encode(MariatestId.mariaType, unsaved.intCol()), Fragment.lit(", "), Fragment.encode(MariaTypes.bigint, unsaved.bigintCol()), Fragment.lit(", "), @@ -592,7 +592,7 @@ public MariatestRow upsert(MariatestRow unsaved, Connection c) { Fragment.lit(", "), Fragment.encode(MariaTypes.year, unsaved.yearCol()), Fragment.lit(", "), - Fragment.encode(XYZSet.dbType, unsaved.setCol()), + Fragment.encode(XYZSet.mariaType, unsaved.setCol()), Fragment.lit(", "), Fragment.encode(MariaTypes.json, unsaved.jsonCol()), Fragment.lit(", "), diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/mariatest/MariatestRow.java b/testers/mariadb/java/generated-and-checked-in/testdb/mariatest/MariatestRow.java index 71ebdf58ae..09c451af73 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/mariatest/MariatestRow.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/mariatest/MariatestRow.java @@ -2083,7 +2083,7 @@ public MariatestRow withInet6Col(Inet6 inet6Col) { MariaTypes.tinyint, MariaTypes.smallint, MariaTypes.mediumint, - MariatestId.dbType, + MariatestId.mariaType, MariaTypes.bigint, MariaTypes.tinyintUnsigned, MariaTypes.smallintUnsigned, @@ -2117,7 +2117,7 @@ public MariatestRow withInet6Col(Inet6 inet6Col) { MariaTypes.timestamp, MariaTypes.timestamp, MariaTypes.year, - XYZSet.dbType, + XYZSet.mariaType, MariaTypes.json, MariaTypes.inet4, MariaTypes.inet6, diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_identity/MariatestIdentityFields.java b/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_identity/MariatestIdentityFields.java index 0f10cc0e6e..8ef8e53da8 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_identity/MariatestIdentityFields.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_identity/MariatestIdentityFields.java @@ -38,7 +38,7 @@ public IdField id() { Optional.empty(), Optional.empty(), (row, value) -> row.withId(value), - MariatestIdentityId.dbType); + MariatestIdentityId.mariaType); } public Field name() { diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_identity/MariatestIdentityId.java b/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_identity/MariatestIdentityId.java index c820eb47d2..68381e2506 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_identity/MariatestIdentityId.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_identity/MariatestIdentityId.java @@ -26,6 +26,6 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(MariatestIdentityId::value, MariatestIdentityId::new); - public static MariaType dbType = + public static MariaType mariaType = MariaTypes.int_.bimap(MariatestIdentityId::new, MariatestIdentityId::value); } diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_identity/MariatestIdentityRepoImpl.java b/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_identity/MariatestIdentityRepoImpl.java index 3d1af51526..7309c82560 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_identity/MariatestIdentityRepoImpl.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_identity/MariatestIdentityRepoImpl.java @@ -32,7 +32,7 @@ public DeleteBuilder delete() { public Boolean deleteById(MariatestIdentityId id, Connection c) { return interpolate( Fragment.lit("delete from `mariatest_identity` where `id` = "), - Fragment.encode(MariatestIdentityId.dbType, id), + Fragment.encode(MariatestIdentityId.mariaType, id), Fragment.lit("")) .update() .runUnchecked(c) @@ -43,7 +43,7 @@ public Boolean deleteById(MariatestIdentityId id, Connection c) { public Integer deleteByIds(MariatestIdentityId[] ids, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : ids) { - fragments.add(Fragment.encode(MariatestIdentityId.dbType, id)); + fragments.add(Fragment.encode(MariatestIdentityId.mariaType, id)); } ; return Fragment.interpolate( @@ -103,7 +103,7 @@ public List selectAll(Connection c) { public Optional selectById(MariatestIdentityId id, Connection c) { return interpolate( Fragment.lit("select `id`, `name`\nfrom `mariatest_identity`\nwhere `id` = "), - Fragment.encode(MariatestIdentityId.dbType, id), + Fragment.encode(MariatestIdentityId.mariaType, id), Fragment.lit("")) .query(MariatestIdentityRow._rowParser.first()) .runUnchecked(c); @@ -113,7 +113,7 @@ public Optional selectById(MariatestIdentityId id, Connect public List selectByIds(MariatestIdentityId[] ids, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : ids) { - fragments.add(Fragment.encode(MariatestIdentityId.dbType, id)); + fragments.add(Fragment.encode(MariatestIdentityId.mariaType, id)); } ; return Fragment.interpolate( @@ -150,7 +150,7 @@ public Boolean update(MariatestIdentityRow row, Connection c) { Fragment.lit("update `mariatest_identity`\nset `name` = "), Fragment.encode(MariaTypes.varchar, row.name()), Fragment.lit("\nwhere `id` = "), - Fragment.encode(MariatestIdentityId.dbType, id), + Fragment.encode(MariatestIdentityId.mariaType, id), Fragment.lit("")) .update() .runUnchecked(c) @@ -161,7 +161,7 @@ public Boolean update(MariatestIdentityRow row, Connection c) { public MariatestIdentityRow upsert(MariatestIdentityRow unsaved, Connection c) { return interpolate( Fragment.lit("INSERT INTO `mariatest_identity`(`id`, `name`)\nVALUES ("), - Fragment.encode(MariatestIdentityId.dbType, unsaved.id()), + Fragment.encode(MariatestIdentityId.mariaType, unsaved.id()), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.name()), Fragment.lit( diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_identity/MariatestIdentityRow.java b/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_identity/MariatestIdentityRow.java index 57b7458c71..32fe2012c1 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_identity/MariatestIdentityRow.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_identity/MariatestIdentityRow.java @@ -31,7 +31,7 @@ public MariatestIdentityRow withName(String name) { public static RowParser _rowParser = RowParsers.of( - MariatestIdentityId.dbType, + MariatestIdentityId.mariaType, MariaTypes.varchar, MariatestIdentityRow::new, row -> new Object[] {row.id(), row.name()}); diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_spatial/MariatestSpatialFields.java b/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_spatial/MariatestSpatialFields.java index 15fa333066..5c492c30d8 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_spatial/MariatestSpatialFields.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_spatial/MariatestSpatialFields.java @@ -56,7 +56,7 @@ public IdField id() { Optional.empty(), Optional.empty(), (row, value) -> row.withId(value), - MariatestSpatialId.dbType); + MariatestSpatialId.mariaType); } public Field geometryCol() { diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_spatial/MariatestSpatialId.java b/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_spatial/MariatestSpatialId.java index 969747274a..d13cf5082d 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_spatial/MariatestSpatialId.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_spatial/MariatestSpatialId.java @@ -26,6 +26,6 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(MariatestSpatialId::value, MariatestSpatialId::new); - public static MariaType dbType = + public static MariaType mariaType = MariaTypes.int_.bimap(MariatestSpatialId::new, MariatestSpatialId::value); } diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_spatial/MariatestSpatialRepoImpl.java b/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_spatial/MariatestSpatialRepoImpl.java index fcceae8898..b2d8ddd397 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_spatial/MariatestSpatialRepoImpl.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_spatial/MariatestSpatialRepoImpl.java @@ -32,7 +32,7 @@ public DeleteBuilder delete() { public Boolean deleteById(MariatestSpatialId id, Connection c) { return interpolate( Fragment.lit("delete from `mariatest_spatial` where `id` = "), - Fragment.encode(MariatestSpatialId.dbType, id), + Fragment.encode(MariatestSpatialId.mariaType, id), Fragment.lit("")) .update() .runUnchecked(c) @@ -43,7 +43,7 @@ public Boolean deleteById(MariatestSpatialId id, Connection c) { public Integer deleteByIds(MariatestSpatialId[] ids, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : ids) { - fragments.add(Fragment.encode(MariatestSpatialId.dbType, id)); + fragments.add(Fragment.encode(MariatestSpatialId.mariaType, id)); } ; return Fragment.interpolate( @@ -168,7 +168,7 @@ public Optional selectById(MariatestSpatialId id, Connectio + " `geometrycollection_col`\n" + "from `mariatest_spatial`\n" + "where `id` = "), - Fragment.encode(MariatestSpatialId.dbType, id), + Fragment.encode(MariatestSpatialId.mariaType, id), Fragment.lit("")) .query(MariatestSpatialRow._rowParser.first()) .runUnchecked(c); @@ -178,7 +178,7 @@ public Optional selectById(MariatestSpatialId id, Connectio public List selectByIds(MariatestSpatialId[] ids, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : ids) { - fragments.add(Fragment.encode(MariatestSpatialId.dbType, id)); + fragments.add(Fragment.encode(MariatestSpatialId.mariaType, id)); } ; return Fragment.interpolate( @@ -232,7 +232,7 @@ public Boolean update(MariatestSpatialRow row, Connection c) { Fragment.lit(",\n`geometrycollection_col` = "), Fragment.encode(MariaTypes.geometrycollection, row.geometrycollectionCol()), Fragment.lit("\nwhere `id` = "), - Fragment.encode(MariatestSpatialId.dbType, id), + Fragment.encode(MariatestSpatialId.mariaType, id), Fragment.lit("")) .update() .runUnchecked(c) @@ -247,7 +247,7 @@ public MariatestSpatialRow upsert(MariatestSpatialRow unsaved, Connection c) { + " `linestring_col`, `polygon_col`, `multipoint_col`, `multilinestring_col`," + " `multipolygon_col`, `geometrycollection_col`)\n" + "VALUES ("), - Fragment.encode(MariatestSpatialId.dbType, unsaved.id()), + Fragment.encode(MariatestSpatialId.mariaType, unsaved.id()), Fragment.lit(", "), Fragment.encode(MariaTypes.geometry, unsaved.geometryCol()), Fragment.lit(", "), diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_spatial/MariatestSpatialRow.java b/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_spatial/MariatestSpatialRow.java index 7cab8cac2b..8e1fcf929d 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_spatial/MariatestSpatialRow.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_spatial/MariatestSpatialRow.java @@ -186,7 +186,7 @@ public MariatestSpatialRow withGeometrycollectionCol(GeometryCollection geometry public static RowParser _rowParser = RowParsers.of( - MariatestSpatialId.dbType, + MariatestSpatialId.mariaType, MariaTypes.geometry, MariaTypes.point, MariaTypes.linestring, diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_spatial_null/MariatestSpatialNullFields.java b/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_spatial_null/MariatestSpatialNullFields.java index 1707b4a1cb..75e11b5e76 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_spatial_null/MariatestSpatialNullFields.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_spatial_null/MariatestSpatialNullFields.java @@ -56,7 +56,7 @@ public IdField id() { Optional.empty(), Optional.empty(), (row, value) -> row.withId(value), - MariatestSpatialNullId.dbType); + MariatestSpatialNullId.mariaType); } public OptField geometryCol() { diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_spatial_null/MariatestSpatialNullId.java b/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_spatial_null/MariatestSpatialNullId.java index a434885ace..09381cff7f 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_spatial_null/MariatestSpatialNullId.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_spatial_null/MariatestSpatialNullId.java @@ -26,6 +26,6 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(MariatestSpatialNullId::value, MariatestSpatialNullId::new); - public static MariaType dbType = + public static MariaType mariaType = MariaTypes.int_.bimap(MariatestSpatialNullId::new, MariatestSpatialNullId::value); } diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_spatial_null/MariatestSpatialNullRepoImpl.java b/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_spatial_null/MariatestSpatialNullRepoImpl.java index 696a67f24e..675ec02adc 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_spatial_null/MariatestSpatialNullRepoImpl.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_spatial_null/MariatestSpatialNullRepoImpl.java @@ -32,7 +32,7 @@ public DeleteBuilder delete public Boolean deleteById(MariatestSpatialNullId id, Connection c) { return interpolate( Fragment.lit("delete from `mariatest_spatial_null` where `id` = "), - Fragment.encode(MariatestSpatialNullId.dbType, id), + Fragment.encode(MariatestSpatialNullId.mariaType, id), Fragment.lit("")) .update() .runUnchecked(c) @@ -43,7 +43,7 @@ public Boolean deleteById(MariatestSpatialNullId id, Connection c) { public Integer deleteByIds(MariatestSpatialNullId[] ids, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : ids) { - fragments.add(Fragment.encode(MariatestSpatialNullId.dbType, id)); + fragments.add(Fragment.encode(MariatestSpatialNullId.mariaType, id)); } ; return Fragment.interpolate( @@ -230,7 +230,7 @@ public Optional selectById(MariatestSpatialNullId id, C + " `geometrycollection_col`\n" + "from `mariatest_spatial_null`\n" + "where `id` = "), - Fragment.encode(MariatestSpatialNullId.dbType, id), + Fragment.encode(MariatestSpatialNullId.mariaType, id), Fragment.lit("")) .query(MariatestSpatialNullRow._rowParser.first()) .runUnchecked(c); @@ -240,7 +240,7 @@ public Optional selectById(MariatestSpatialNullId id, C public List selectByIds(MariatestSpatialNullId[] ids, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : ids) { - fragments.add(Fragment.encode(MariatestSpatialNullId.dbType, id)); + fragments.add(Fragment.encode(MariatestSpatialNullId.mariaType, id)); } ; return Fragment.interpolate( @@ -294,7 +294,7 @@ public Boolean update(MariatestSpatialNullRow row, Connection c) { Fragment.lit(",\n`geometrycollection_col` = "), Fragment.encode(MariaTypes.geometrycollection.opt(), row.geometrycollectionCol()), Fragment.lit("\nwhere `id` = "), - Fragment.encode(MariatestSpatialNullId.dbType, id), + Fragment.encode(MariatestSpatialNullId.mariaType, id), Fragment.lit("")) .update() .runUnchecked(c) @@ -309,7 +309,7 @@ public MariatestSpatialNullRow upsert(MariatestSpatialNullRow unsaved, Connectio + " `linestring_col`, `polygon_col`, `multipoint_col`, `multilinestring_col`," + " `multipolygon_col`, `geometrycollection_col`)\n" + "VALUES ("), - Fragment.encode(MariatestSpatialNullId.dbType, unsaved.id()), + Fragment.encode(MariatestSpatialNullId.mariaType, unsaved.id()), Fragment.lit(", "), Fragment.encode(MariaTypes.geometry.opt(), unsaved.geometryCol()), Fragment.lit(", "), diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_spatial_null/MariatestSpatialNullRow.java b/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_spatial_null/MariatestSpatialNullRow.java index 09a4d734af..95ef34b1aa 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_spatial_null/MariatestSpatialNullRow.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_spatial_null/MariatestSpatialNullRow.java @@ -190,7 +190,7 @@ public MariatestSpatialNullRow withGeometrycollectionCol( public static RowParser _rowParser = RowParsers.of( - MariatestSpatialNullId.dbType, + MariatestSpatialNullId.mariaType, MariaTypes.geometry.opt(), MariaTypes.point.opt(), MariaTypes.linestring.opt(), diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueFields.java b/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueFields.java index 6d85999704..4d1fe3ba1c 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueFields.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueFields.java @@ -17,8 +17,10 @@ import dev.typr.foundations.dsl.TupleExpr.TupleExpr4; import java.util.List; import java.util.Optional; +import testdb.userdefined.Email; -public class MariatestUniqueFields extends TupleExpr4 +public class MariatestUniqueFields + extends TupleExpr4 implements RelationStructure, FieldsBase { List _path; @@ -38,18 +40,18 @@ public IdField id() { Optional.empty(), Optional.empty(), (row, value) -> row.withId(value), - MariatestUniqueId.dbType); + MariatestUniqueId.mariaType); } - public Field email() { - return new Field( + public Field email() { + return new Field( _path, "email", MariatestUniqueRow::email, Optional.empty(), Optional.empty(), (row, value) -> row.withEmail(value), - MariaTypes.varchar); + Email.mariaType); } public Field code() { @@ -100,7 +102,7 @@ public SqlExpr _1() { } @Override - public SqlExpr _2() { + public SqlExpr _2() { return email(); } diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueId.java b/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueId.java index 44fe3bb8dd..c26809c69a 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueId.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueId.java @@ -26,6 +26,6 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(MariatestUniqueId::value, MariatestUniqueId::new); - public static MariaType dbType = + public static MariaType mariaType = MariaTypes.int_.bimap(MariatestUniqueId::new, MariatestUniqueId::value); } diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueRepo.java b/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueRepo.java index ca0bdbdac3..8d0f20d0fa 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueRepo.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueRepo.java @@ -13,6 +13,7 @@ import java.util.List; import java.util.Map; import java.util.Optional; +import testdb.userdefined.Email; public interface MariatestUniqueRepo { DeleteBuilder delete(); @@ -39,7 +40,7 @@ Map selectByIdsTracked( Optional selectByUniqueCodeAndCategory( String code, String category, Connection c); - Optional selectByUniqueEmail(String email, Connection c); + Optional selectByUniqueEmail(/* user-picked */ Email email, Connection c); UpdateBuilder update(); diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueRepoImpl.java b/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueRepoImpl.java index e1396b10ec..fb993c0daa 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueRepoImpl.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueRepoImpl.java @@ -20,6 +20,7 @@ import java.util.List; import java.util.Map; import java.util.Optional; +import testdb.userdefined.Email; public class MariatestUniqueRepoImpl implements MariatestUniqueRepo { @Override @@ -31,7 +32,7 @@ public DeleteBuilder delete() { public Boolean deleteById(MariatestUniqueId id, Connection c) { return interpolate( Fragment.lit("delete from `mariatest_unique` where `id` = "), - Fragment.encode(MariatestUniqueId.dbType, id), + Fragment.encode(MariatestUniqueId.mariaType, id), Fragment.lit("")) .update() .runUnchecked(c) @@ -42,7 +43,7 @@ public Boolean deleteById(MariatestUniqueId id, Connection c) { public Integer deleteByIds(MariatestUniqueId[] ids, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : ids) { - fragments.add(Fragment.encode(MariatestUniqueId.dbType, id)); + fragments.add(Fragment.encode(MariatestUniqueId.mariaType, id)); } ; return Fragment.interpolate( @@ -57,7 +58,7 @@ public Integer deleteByIds(MariatestUniqueId[] ids, Connection c) { public MariatestUniqueRow insert(MariatestUniqueRow unsaved, Connection c) { return interpolate( Fragment.lit("insert into `mariatest_unique`(`email`, `code`, `category`)\nvalues ("), - Fragment.encode(MariaTypes.varchar, unsaved.email()), + Fragment.encode(Email.mariaType, unsaved.email()), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.code()), Fragment.lit(", "), @@ -74,7 +75,7 @@ public MariatestUniqueRow insert(MariatestUniqueRowUnsaved unsaved, Connection c ArrayList values = new ArrayList<>(); ; columns.add(Fragment.lit("`email`")); - values.add(interpolate(Fragment.encode(MariaTypes.varchar, unsaved.email()), Fragment.lit(""))); + values.add(interpolate(Fragment.encode(Email.mariaType, unsaved.email()), Fragment.lit(""))); columns.add(Fragment.lit("`code`")); values.add(interpolate(Fragment.encode(MariaTypes.varchar, unsaved.code()), Fragment.lit(""))); columns.add(Fragment.lit("`category`")); @@ -113,7 +114,7 @@ public Optional selectById(MariatestUniqueId id, Connection return interpolate( Fragment.lit( "select `id`, `email`, `code`, `category`\nfrom `mariatest_unique`\nwhere `id` = "), - Fragment.encode(MariatestUniqueId.dbType, id), + Fragment.encode(MariatestUniqueId.mariaType, id), Fragment.lit("")) .query(MariatestUniqueRow._rowParser.first()) .runUnchecked(c); @@ -123,7 +124,7 @@ public Optional selectById(MariatestUniqueId id, Connection public List selectByIds(MariatestUniqueId[] ids, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : ids) { - fragments.add(Fragment.encode(MariatestUniqueId.dbType, id)); + fragments.add(Fragment.encode(MariatestUniqueId.mariaType, id)); } ; return Fragment.interpolate( @@ -161,13 +162,14 @@ public Optional selectByUniqueCodeAndCategory( } @Override - public Optional selectByUniqueEmail(String email, Connection c) { + public Optional selectByUniqueEmail( + /* user-picked */ Email email, Connection c) { return interpolate( Fragment.lit( "select `id`, `email`, `code`, `category`\n" + "from `mariatest_unique`\n" + "where `email` = "), - Fragment.encode(MariaTypes.varchar, email), + Fragment.encode(Email.mariaType, email), Fragment.lit("\n")) .query(MariatestUniqueRow._rowParser.first()) .runUnchecked(c); @@ -188,13 +190,13 @@ public Boolean update(MariatestUniqueRow row, Connection c) { ; return interpolate( Fragment.lit("update `mariatest_unique`\nset `email` = "), - Fragment.encode(MariaTypes.varchar, row.email()), + Fragment.encode(Email.mariaType, row.email()), Fragment.lit(",\n`code` = "), Fragment.encode(MariaTypes.varchar, row.code()), Fragment.lit(",\n`category` = "), Fragment.encode(MariaTypes.varchar, row.category()), Fragment.lit("\nwhere `id` = "), - Fragment.encode(MariatestUniqueId.dbType, id), + Fragment.encode(MariatestUniqueId.mariaType, id), Fragment.lit("")) .update() .runUnchecked(c) @@ -206,9 +208,9 @@ public MariatestUniqueRow upsert(MariatestUniqueRow unsaved, Connection c) { return interpolate( Fragment.lit( "INSERT INTO `mariatest_unique`(`id`, `email`, `code`, `category`)\nVALUES ("), - Fragment.encode(MariatestUniqueId.dbType, unsaved.id()), + Fragment.encode(MariatestUniqueId.mariaType, unsaved.id()), Fragment.lit(", "), - Fragment.encode(MariaTypes.varchar, unsaved.email()), + Fragment.encode(Email.mariaType, unsaved.email()), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.code()), Fragment.lit(", "), diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueRepoMock.java b/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueRepoMock.java index f0bf23f8e5..14834cd846 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueRepoMock.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueRepoMock.java @@ -23,6 +23,7 @@ import java.util.Optional; import java.util.function.Function; import java.util.stream.Collectors; +import testdb.userdefined.Email; public record MariatestUniqueRepoMock( java.util.function.Function toRow, @@ -145,7 +146,8 @@ public Optional selectByUniqueCodeAndCategory( ; @Override - public Optional selectByUniqueEmail(String email, Connection c) { + public Optional selectByUniqueEmail( + /* user-picked */ Email email, Connection c) { return new ArrayList<>(map.values()).stream().filter(v -> email.equals(v.email())).findFirst(); } ; diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueRow.java b/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueRow.java index c531acdca6..9a385ceb0a 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueRow.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueRow.java @@ -9,18 +9,19 @@ import dev.typr.foundations.RowParser; import dev.typr.foundations.RowParsers; import dev.typr.foundations.Tuple.Tuple4; +import testdb.userdefined.Email; /** Table: mariatest_unique Primary key: id */ public record MariatestUniqueRow( /** AUTO_INCREMENT */ MariatestUniqueId id, /** */ - String email, + /* user-picked */ Email email, /** */ String code, /** */ String category) - implements Tuple4 { + implements Tuple4 { /** AUTO_INCREMENT */ public MariatestUniqueRow withId(MariatestUniqueId id) { return new MariatestUniqueRow(id, email, code, category); @@ -28,7 +29,7 @@ public MariatestUniqueRow withId(MariatestUniqueId id) { ; /** */ - public MariatestUniqueRow withEmail(String email) { + public MariatestUniqueRow withEmail(/* user-picked */ Email email) { return new MariatestUniqueRow(id, email, code, category); } ; @@ -47,8 +48,8 @@ public MariatestUniqueRow withCategory(String category) { public static RowParser _rowParser = RowParsers.of( - MariatestUniqueId.dbType, - MariaTypes.varchar, + MariatestUniqueId.mariaType, + Email.mariaType, MariaTypes.varchar, MariaTypes.varchar, MariatestUniqueRow::new, @@ -62,7 +63,7 @@ public MariatestUniqueId _1() { ; @Override - public String _2() { + public /* user-picked */ Email _2() { return email; } ; diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueRowUnsaved.java b/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueRowUnsaved.java index e405e18cc7..fbf64ba5c9 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueRowUnsaved.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueRowUnsaved.java @@ -5,16 +5,18 @@ */ package testdb.mariatest_unique; +import testdb.userdefined.Email; + /** This class corresponds to a row in table `mariatest_unique` which has not been persisted yet */ public record MariatestUniqueRowUnsaved( /** */ - String email, + /* user-picked */ Email email, /** */ String code, /** */ String category) { /** */ - public MariatestUniqueRowUnsaved withEmail(String email) { + public MariatestUniqueRowUnsaved withEmail(/* user-picked */ Email email) { return new MariatestUniqueRowUnsaved(email, code, category); } ; diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/mariatestnull/MariatestnullFields.java b/testers/mariadb/java/generated-and-checked-in/testdb/mariatestnull/MariatestnullFields.java index 495ee69fdf..2efea4473b 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/mariatestnull/MariatestnullFields.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/mariatestnull/MariatestnullFields.java @@ -499,7 +499,7 @@ public OptField setCol() { Optional.empty(), Optional.empty(), (row, value) -> row.withSetCol(value), - XYZSet.dbType); + XYZSet.mariaType); } public OptField jsonCol() { diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/mariatestnull/MariatestnullRepoImpl.java b/testers/mariadb/java/generated-and-checked-in/testdb/mariatestnull/MariatestnullRepoImpl.java index 0ed610fe84..47a0d6c6c3 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/mariatestnull/MariatestnullRepoImpl.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/mariatestnull/MariatestnullRepoImpl.java @@ -113,7 +113,7 @@ public MariatestnullRow insert(MariatestnullRow unsaved, Connection c) { Fragment.lit(", "), Fragment.encode(MariaTypes.year.opt(), unsaved.yearCol()), Fragment.lit(", "), - Fragment.encode(XYZSet.dbType.opt(), unsaved.setCol()), + Fragment.encode(XYZSet.mariaType.opt(), unsaved.setCol()), Fragment.lit(", "), Fragment.encode(MariaTypes.json.opt(), unsaved.jsonCol()), Fragment.lit(", "), @@ -530,7 +530,7 @@ public MariatestnullRow insert(MariatestnullRowUnsaved unsaved, Connection c) { value -> { columns.add(Fragment.lit("`set_col`")); values.add( - interpolate(Fragment.encode(XYZSet.dbType.opt(), value), Fragment.lit(""))); + interpolate(Fragment.encode(XYZSet.mariaType.opt(), value), Fragment.lit(""))); }); ; unsaved diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/mariatestnull/MariatestnullRow.java b/testers/mariadb/java/generated-and-checked-in/testdb/mariatestnull/MariatestnullRow.java index e20c4f4f76..486e1bd5b5 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/mariatestnull/MariatestnullRow.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/mariatestnull/MariatestnullRow.java @@ -2118,7 +2118,7 @@ public MariatestnullRow withInet6Col(Optional inet6Col) { MariaTypes.timestamp.opt(), MariaTypes.timestamp.opt(), MariaTypes.year.opt(), - XYZSet.dbType.opt(), + XYZSet.mariaType.opt(), MariaTypes.json.opt(), MariaTypes.inet4.opt(), MariaTypes.inet6.opt(), diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/order_details/OrderDetailsSqlRepoImpl.java b/testers/mariadb/java/generated-and-checked-in/testdb/order_details/OrderDetailsSqlRepoImpl.java index 4237146e9d..f82432b613 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/order_details/OrderDetailsSqlRepoImpl.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/order_details/OrderDetailsSqlRepoImpl.java @@ -38,7 +38,7 @@ public List apply(/* user-picked */ OrdersId orderId, Connec + "FROM orders o\n" + "JOIN order_items oi ON o.order_id = oi.order_id\n" + "WHERE o.order_id = "), - Fragment.encode(OrdersId.dbType, orderId), + Fragment.encode(OrdersId.mariaType, orderId), Fragment.lit("\n")) .query(OrderDetailsSqlRow._rowParser.all()) .runUnchecked(c); diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/order_details/OrderDetailsSqlRow.java b/testers/mariadb/java/generated-and-checked-in/testdb/order_details/OrderDetailsSqlRow.java index e4247bf109..1b776fde80 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/order_details/OrderDetailsSqlRow.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/order_details/OrderDetailsSqlRow.java @@ -464,7 +464,7 @@ public OrderDetailsSqlRow withLineTotal(BigDecimal lineTotal) { public static RowParser _rowParser = RowParsers.of( - OrdersId.dbType, + OrdersId.mariaType, MariaTypes.varchar, MariaTypes.text, MariaTypes.text, @@ -474,8 +474,8 @@ public OrderDetailsSqlRow withLineTotal(BigDecimal lineTotal) { MariaTypes.numeric, MariaTypes.numeric, MariaTypes.datetime, - OrderItemsId.dbType, - ProductsId.dbType, + OrderItemsId.mariaType, + ProductsId.mariaType, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.smallintUnsigned, diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/order_history/OrderHistoryFields.java b/testers/mariadb/java/generated-and-checked-in/testdb/order_history/OrderHistoryFields.java index 609f4cda57..4253e62d40 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/order_history/OrderHistoryFields.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/order_history/OrderHistoryFields.java @@ -46,7 +46,7 @@ public IdField historyId() { Optional.empty(), Optional.empty(), (row, value) -> row.withHistoryId(value), - OrderHistoryId.dbType); + OrderHistoryId.mariaType); } public Field orderId() { @@ -57,7 +57,7 @@ public Field orderId() { Optional.empty(), Optional.empty(), (row, value) -> row.withOrderId(value), - OrdersId.dbType); + OrdersId.mariaType); } public OptField previousStatus() { diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/order_history/OrderHistoryId.java b/testers/mariadb/java/generated-and-checked-in/testdb/order_history/OrderHistoryId.java index c74a12d5bc..f55be42e04 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/order_history/OrderHistoryId.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/order_history/OrderHistoryId.java @@ -27,6 +27,6 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(OrderHistoryId::value, OrderHistoryId::new); - public static MariaType dbType = + public static MariaType mariaType = MariaTypes.bigintUnsigned.bimap(OrderHistoryId::new, OrderHistoryId::value); } diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/order_history/OrderHistoryRepoImpl.java b/testers/mariadb/java/generated-and-checked-in/testdb/order_history/OrderHistoryRepoImpl.java index 30cdc35d77..c6ff15a8a7 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/order_history/OrderHistoryRepoImpl.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/order_history/OrderHistoryRepoImpl.java @@ -32,7 +32,7 @@ public DeleteBuilder delete() { public Boolean deleteById(OrderHistoryId historyId, Connection c) { return interpolate( Fragment.lit("delete from `order_history` where `history_id` = "), - Fragment.encode(OrderHistoryId.dbType, historyId), + Fragment.encode(OrderHistoryId.mariaType, historyId), Fragment.lit("")) .update() .runUnchecked(c) @@ -43,7 +43,7 @@ public Boolean deleteById(OrderHistoryId historyId, Connection c) { public Integer deleteByIds(OrderHistoryId[] historyIds, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : historyIds) { - fragments.add(Fragment.encode(OrderHistoryId.dbType, id)); + fragments.add(Fragment.encode(OrderHistoryId.mariaType, id)); } ; return Fragment.interpolate( @@ -61,7 +61,7 @@ public OrderHistoryRow insert(OrderHistoryRow unsaved, Connection c) { "insert into `order_history`(`order_id`, `previous_status`, `new_status`," + " `changed_by`, `change_reason`, `metadata`, `created_at`)\n" + "values ("), - Fragment.encode(OrdersId.dbType, unsaved.orderId()), + Fragment.encode(OrdersId.mariaType, unsaved.orderId()), Fragment.lit(", "), Fragment.encode(MariaTypes.text.opt(), unsaved.previousStatus()), Fragment.lit(", "), @@ -89,7 +89,8 @@ public OrderHistoryRow insert(OrderHistoryRowUnsaved unsaved, Connection c) { ArrayList values = new ArrayList<>(); ; columns.add(Fragment.lit("`order_id`")); - values.add(interpolate(Fragment.encode(OrdersId.dbType, unsaved.orderId()), Fragment.lit(""))); + values.add( + interpolate(Fragment.encode(OrdersId.mariaType, unsaved.orderId()), Fragment.lit(""))); columns.add(Fragment.lit("`new_status`")); values.add( interpolate(Fragment.encode(MariaTypes.text, unsaved.newStatus()), Fragment.lit(""))); @@ -185,7 +186,7 @@ public Optional selectById(OrderHistoryId historyId, Connection + " `change_reason`, `metadata`, `created_at`\n" + "from `order_history`\n" + "where `history_id` = "), - Fragment.encode(OrderHistoryId.dbType, historyId), + Fragment.encode(OrderHistoryId.mariaType, historyId), Fragment.lit("")) .query(OrderHistoryRow._rowParser.first()) .runUnchecked(c); @@ -195,7 +196,7 @@ public Optional selectById(OrderHistoryId historyId, Connection public List selectByIds(OrderHistoryId[] historyIds, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : historyIds) { - fragments.add(Fragment.encode(OrderHistoryId.dbType, id)); + fragments.add(Fragment.encode(OrderHistoryId.mariaType, id)); } ; return Fragment.interpolate( @@ -232,7 +233,7 @@ public Boolean update(OrderHistoryRow row, Connection c) { ; return interpolate( Fragment.lit("update `order_history`\nset `order_id` = "), - Fragment.encode(OrdersId.dbType, row.orderId()), + Fragment.encode(OrdersId.mariaType, row.orderId()), Fragment.lit(",\n`previous_status` = "), Fragment.encode(MariaTypes.text.opt(), row.previousStatus()), Fragment.lit(",\n`new_status` = "), @@ -246,7 +247,7 @@ public Boolean update(OrderHistoryRow row, Connection c) { Fragment.lit(",\n`created_at` = "), Fragment.encode(MariaTypes.datetime, row.createdAt()), Fragment.lit("\nwhere `history_id` = "), - Fragment.encode(OrderHistoryId.dbType, historyId), + Fragment.encode(OrderHistoryId.mariaType, historyId), Fragment.lit("")) .update() .runUnchecked(c) @@ -260,9 +261,9 @@ public OrderHistoryRow upsert(OrderHistoryRow unsaved, Connection c) { "INSERT INTO `order_history`(`history_id`, `order_id`, `previous_status`," + " `new_status`, `changed_by`, `change_reason`, `metadata`, `created_at`)\n" + "VALUES ("), - Fragment.encode(OrderHistoryId.dbType, unsaved.historyId()), + Fragment.encode(OrderHistoryId.mariaType, unsaved.historyId()), Fragment.lit(", "), - Fragment.encode(OrdersId.dbType, unsaved.orderId()), + Fragment.encode(OrdersId.mariaType, unsaved.orderId()), Fragment.lit(", "), Fragment.encode(MariaTypes.text.opt(), unsaved.previousStatus()), Fragment.lit(", "), diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/order_history/OrderHistoryRow.java b/testers/mariadb/java/generated-and-checked-in/testdb/order_history/OrderHistoryRow.java index 2896872796..a2d28abcc4 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/order_history/OrderHistoryRow.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/order_history/OrderHistoryRow.java @@ -157,8 +157,8 @@ public OrderHistoryRow withCreatedAt(LocalDateTime createdAt) { public static RowParser _rowParser = RowParsers.of( - OrderHistoryId.dbType, - OrdersId.dbType, + OrderHistoryId.mariaType, + OrdersId.mariaType, MariaTypes.text.opt(), MariaTypes.text, MariaTypes.varchar.opt(), diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/order_items/OrderItemsFields.java b/testers/mariadb/java/generated-and-checked-in/testdb/order_items/OrderItemsFields.java index 1e159d4a6b..180260af97 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/order_items/OrderItemsFields.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/order_items/OrderItemsFields.java @@ -64,7 +64,7 @@ public IdField itemId() { Optional.empty(), Optional.empty(), (row, value) -> row.withItemId(value), - OrderItemsId.dbType); + OrderItemsId.mariaType); } public Field orderId() { @@ -75,7 +75,7 @@ public Field orderId() { Optional.empty(), Optional.empty(), (row, value) -> row.withOrderId(value), - OrdersId.dbType); + OrdersId.mariaType); } public Field productId() { @@ -86,7 +86,7 @@ public Field productId() { Optional.empty(), Optional.empty(), (row, value) -> row.withProductId(value), - ProductsId.dbType); + ProductsId.mariaType); } public Field sku() { @@ -185,7 +185,7 @@ public OptField warehouseId() { Optional.empty(), Optional.empty(), (row, value) -> row.withWarehouseId(value), - WarehousesId.dbType); + WarehousesId.mariaType); } public OptField notes() { diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/order_items/OrderItemsId.java b/testers/mariadb/java/generated-and-checked-in/testdb/order_items/OrderItemsId.java index e53b5ba688..e547240053 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/order_items/OrderItemsId.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/order_items/OrderItemsId.java @@ -27,6 +27,6 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(OrderItemsId::value, OrderItemsId::new); - public static MariaType dbType = + public static MariaType mariaType = MariaTypes.bigintUnsigned.bimap(OrderItemsId::new, OrderItemsId::value); } diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/order_items/OrderItemsRepoImpl.java b/testers/mariadb/java/generated-and-checked-in/testdb/order_items/OrderItemsRepoImpl.java index 36044f1846..1598c3eb30 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/order_items/OrderItemsRepoImpl.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/order_items/OrderItemsRepoImpl.java @@ -34,7 +34,7 @@ public DeleteBuilder delete() { public Boolean deleteById(OrderItemsId itemId, Connection c) { return interpolate( Fragment.lit("delete from `order_items` where `item_id` = "), - Fragment.encode(OrderItemsId.dbType, itemId), + Fragment.encode(OrderItemsId.mariaType, itemId), Fragment.lit("")) .update() .runUnchecked(c) @@ -45,7 +45,7 @@ public Boolean deleteById(OrderItemsId itemId, Connection c) { public Integer deleteByIds(OrderItemsId[] itemIds, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : itemIds) { - fragments.add(Fragment.encode(OrderItemsId.dbType, id)); + fragments.add(Fragment.encode(OrderItemsId.mariaType, id)); } ; return Fragment.interpolate( @@ -64,9 +64,9 @@ public OrderItemsRow insert(OrderItemsRow unsaved, Connection c) { + " `quantity`, `unit_price`, `discount_amount`, `tax_amount`, `line_total`," + " `fulfillment_status`, `warehouse_id`, `notes`)\n" + "values ("), - Fragment.encode(OrdersId.dbType, unsaved.orderId()), + Fragment.encode(OrdersId.mariaType, unsaved.orderId()), Fragment.lit(", "), - Fragment.encode(ProductsId.dbType, unsaved.productId()), + Fragment.encode(ProductsId.mariaType, unsaved.productId()), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.sku()), Fragment.lit(", "), @@ -84,7 +84,7 @@ public OrderItemsRow insert(OrderItemsRow unsaved, Connection c) { Fragment.lit(", "), Fragment.encode(MariaTypes.text, unsaved.fulfillmentStatus()), Fragment.lit(", "), - Fragment.encode(WarehousesId.dbType.opt(), unsaved.warehouseId()), + Fragment.encode(WarehousesId.mariaType.opt(), unsaved.warehouseId()), Fragment.lit(", "), Fragment.encode(MariaTypes.tinytext.opt(), unsaved.notes()), Fragment.lit( @@ -103,10 +103,11 @@ public OrderItemsRow insert(OrderItemsRowUnsaved unsaved, Connection c) { ArrayList values = new ArrayList<>(); ; columns.add(Fragment.lit("`order_id`")); - values.add(interpolate(Fragment.encode(OrdersId.dbType, unsaved.orderId()), Fragment.lit(""))); + values.add( + interpolate(Fragment.encode(OrdersId.mariaType, unsaved.orderId()), Fragment.lit(""))); columns.add(Fragment.lit("`product_id`")); values.add( - interpolate(Fragment.encode(ProductsId.dbType, unsaved.productId()), Fragment.lit(""))); + interpolate(Fragment.encode(ProductsId.mariaType, unsaved.productId()), Fragment.lit(""))); columns.add(Fragment.lit("`sku`")); values.add(interpolate(Fragment.encode(MariaTypes.varchar, unsaved.sku()), Fragment.lit(""))); columns.add(Fragment.lit("`product_name`")); @@ -156,7 +157,8 @@ public OrderItemsRow insert(OrderItemsRowUnsaved unsaved, Connection c) { value -> { columns.add(Fragment.lit("`warehouse_id`")); values.add( - interpolate(Fragment.encode(WarehousesId.dbType.opt(), value), Fragment.lit(""))); + interpolate( + Fragment.encode(WarehousesId.mariaType.opt(), value), Fragment.lit(""))); }); ; unsaved @@ -211,7 +213,7 @@ public Optional selectById(OrderItemsId itemId, Connection c) { + " `fulfillment_status`, `warehouse_id`, `notes`\n" + "from `order_items`\n" + "where `item_id` = "), - Fragment.encode(OrderItemsId.dbType, itemId), + Fragment.encode(OrderItemsId.mariaType, itemId), Fragment.lit("")) .query(OrderItemsRow._rowParser.first()) .runUnchecked(c); @@ -221,7 +223,7 @@ public Optional selectById(OrderItemsId itemId, Connection c) { public List selectByIds(OrderItemsId[] itemIds, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : itemIds) { - fragments.add(Fragment.encode(OrderItemsId.dbType, id)); + fragments.add(Fragment.encode(OrderItemsId.mariaType, id)); } ; return Fragment.interpolate( @@ -255,9 +257,9 @@ public Boolean update(OrderItemsRow row, Connection c) { ; return interpolate( Fragment.lit("update `order_items`\nset `order_id` = "), - Fragment.encode(OrdersId.dbType, row.orderId()), + Fragment.encode(OrdersId.mariaType, row.orderId()), Fragment.lit(",\n`product_id` = "), - Fragment.encode(ProductsId.dbType, row.productId()), + Fragment.encode(ProductsId.mariaType, row.productId()), Fragment.lit(",\n`sku` = "), Fragment.encode(MariaTypes.varchar, row.sku()), Fragment.lit(",\n`product_name` = "), @@ -275,11 +277,11 @@ public Boolean update(OrderItemsRow row, Connection c) { Fragment.lit(",\n`fulfillment_status` = "), Fragment.encode(MariaTypes.text, row.fulfillmentStatus()), Fragment.lit(",\n`warehouse_id` = "), - Fragment.encode(WarehousesId.dbType.opt(), row.warehouseId()), + Fragment.encode(WarehousesId.mariaType.opt(), row.warehouseId()), Fragment.lit(",\n`notes` = "), Fragment.encode(MariaTypes.tinytext.opt(), row.notes()), Fragment.lit("\nwhere `item_id` = "), - Fragment.encode(OrderItemsId.dbType, itemId), + Fragment.encode(OrderItemsId.mariaType, itemId), Fragment.lit("")) .update() .runUnchecked(c) @@ -294,11 +296,11 @@ public OrderItemsRow upsert(OrderItemsRow unsaved, Connection c) { + " `product_name`, `quantity`, `unit_price`, `discount_amount`, `tax_amount`," + " `line_total`, `fulfillment_status`, `warehouse_id`, `notes`)\n" + "VALUES ("), - Fragment.encode(OrderItemsId.dbType, unsaved.itemId()), + Fragment.encode(OrderItemsId.mariaType, unsaved.itemId()), Fragment.lit(", "), - Fragment.encode(OrdersId.dbType, unsaved.orderId()), + Fragment.encode(OrdersId.mariaType, unsaved.orderId()), Fragment.lit(", "), - Fragment.encode(ProductsId.dbType, unsaved.productId()), + Fragment.encode(ProductsId.mariaType, unsaved.productId()), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.sku()), Fragment.lit(", "), @@ -316,7 +318,7 @@ public OrderItemsRow upsert(OrderItemsRow unsaved, Connection c) { Fragment.lit(", "), Fragment.encode(MariaTypes.text, unsaved.fulfillmentStatus()), Fragment.lit(", "), - Fragment.encode(WarehousesId.dbType.opt(), unsaved.warehouseId()), + Fragment.encode(WarehousesId.mariaType.opt(), unsaved.warehouseId()), Fragment.lit(", "), Fragment.encode(MariaTypes.tinytext.opt(), unsaved.notes()), Fragment.lit( diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/order_items/OrderItemsRow.java b/testers/mariadb/java/generated-and-checked-in/testdb/order_items/OrderItemsRow.java index 3518ffe6b8..7ab0f0a8fb 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/order_items/OrderItemsRow.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/order_items/OrderItemsRow.java @@ -309,9 +309,9 @@ public OrderItemsRow withNotes(Optional notes) { public static RowParser _rowParser = RowParsers.of( - OrderItemsId.dbType, - OrdersId.dbType, - ProductsId.dbType, + OrderItemsId.mariaType, + OrdersId.mariaType, + ProductsId.mariaType, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.smallintUnsigned, @@ -320,7 +320,7 @@ public OrderItemsRow withNotes(Optional notes) { MariaTypes.numeric, MariaTypes.numeric, MariaTypes.text, - WarehousesId.dbType.opt(), + WarehousesId.mariaType.opt(), MariaTypes.tinytext.opt(), OrderItemsRow::new, row -> diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/orders/OrdersFields.java b/testers/mariadb/java/generated-and-checked-in/testdb/orders/OrdersFields.java index eb39e648ab..e0aa845a38 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/orders/OrdersFields.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/orders/OrdersFields.java @@ -73,7 +73,7 @@ public IdField orderId() { Optional.empty(), Optional.empty(), (row, value) -> row.withOrderId(value), - OrdersId.dbType); + OrdersId.mariaType); } public Field orderNumber() { @@ -95,7 +95,7 @@ public Field customerId() { Optional.empty(), Optional.empty(), (row, value) -> row.withCustomerId(value), - CustomersId.dbType); + CustomersId.mariaType); } public Field orderStatus() { @@ -128,7 +128,7 @@ public OptField shippingAddressId() { Optional.empty(), Optional.empty(), (row, value) -> row.withShippingAddressId(value), - CustomerAddressesId.dbType); + CustomerAddressesId.mariaType); } public OptField billingAddressId() { @@ -139,7 +139,7 @@ public OptField billingAddressId() { Optional.empty(), Optional.empty(), (row, value) -> row.withBillingAddressId(value), - CustomerAddressesId.dbType); + CustomerAddressesId.mariaType); } public Field subtotal() { @@ -216,7 +216,7 @@ public OptField promotionId() { Optional.empty(), Optional.empty(), (row, value) -> row.withPromotionId(value), - PromotionsId.dbType); + PromotionsId.mariaType); } public OptField notes() { diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/orders/OrdersId.java b/testers/mariadb/java/generated-and-checked-in/testdb/orders/OrdersId.java index 81d1857564..671b97232e 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/orders/OrdersId.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/orders/OrdersId.java @@ -26,6 +26,6 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(OrdersId::value, OrdersId::new); - public static MariaType dbType = + public static MariaType mariaType = MariaTypes.bigintUnsigned.bimap(OrdersId::new, OrdersId::value); } diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/orders/OrdersRepoImpl.java b/testers/mariadb/java/generated-and-checked-in/testdb/orders/OrdersRepoImpl.java index e1b42be0e4..ba3f18ef07 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/orders/OrdersRepoImpl.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/orders/OrdersRepoImpl.java @@ -34,7 +34,7 @@ public DeleteBuilder delete() { public Boolean deleteById(OrdersId orderId, Connection c) { return interpolate( Fragment.lit("delete from `orders` where `order_id` = "), - Fragment.encode(OrdersId.dbType, orderId), + Fragment.encode(OrdersId.mariaType, orderId), Fragment.lit("")) .update() .runUnchecked(c) @@ -45,7 +45,7 @@ public Boolean deleteById(OrdersId orderId, Connection c) { public Integer deleteByIds(OrdersId[] orderIds, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : orderIds) { - fragments.add(Fragment.encode(OrdersId.dbType, id)); + fragments.add(Fragment.encode(OrdersId.mariaType, id)); } ; return Fragment.interpolate( @@ -68,15 +68,15 @@ public OrdersRow insert(OrdersRow unsaved, Connection c) { + "values ("), Fragment.encode(MariaTypes.varchar, unsaved.orderNumber()), Fragment.lit(", "), - Fragment.encode(CustomersId.dbType, unsaved.customerId()), + Fragment.encode(CustomersId.mariaType, unsaved.customerId()), Fragment.lit(", "), Fragment.encode(MariaTypes.text, unsaved.orderStatus()), Fragment.lit(", "), Fragment.encode(MariaTypes.text, unsaved.paymentStatus()), Fragment.lit(", "), - Fragment.encode(CustomerAddressesId.dbType.opt(), unsaved.shippingAddressId()), + Fragment.encode(CustomerAddressesId.mariaType.opt(), unsaved.shippingAddressId()), Fragment.lit(", "), - Fragment.encode(CustomerAddressesId.dbType.opt(), unsaved.billingAddressId()), + Fragment.encode(CustomerAddressesId.mariaType.opt(), unsaved.billingAddressId()), Fragment.lit(", "), Fragment.encode(MariaTypes.numeric, unsaved.subtotal()), Fragment.lit(", "), @@ -90,7 +90,7 @@ public OrdersRow insert(OrdersRow unsaved, Connection c) { Fragment.lit(", "), Fragment.encode(MariaTypes.char_, unsaved.currencyCode()), Fragment.lit(", "), - Fragment.encode(PromotionsId.dbType.opt(), unsaved.promotionId()), + Fragment.encode(PromotionsId.mariaType.opt(), unsaved.promotionId()), Fragment.lit(", "), Fragment.encode(MariaTypes.text.opt(), unsaved.notes()), Fragment.lit(", "), @@ -130,7 +130,8 @@ public OrdersRow insert(OrdersRowUnsaved unsaved, Connection c) { interpolate(Fragment.encode(MariaTypes.varchar, unsaved.orderNumber()), Fragment.lit(""))); columns.add(Fragment.lit("`customer_id`")); values.add( - interpolate(Fragment.encode(CustomersId.dbType, unsaved.customerId()), Fragment.lit(""))); + interpolate( + Fragment.encode(CustomersId.mariaType, unsaved.customerId()), Fragment.lit(""))); columns.add(Fragment.lit("`subtotal`")); values.add( interpolate(Fragment.encode(MariaTypes.numeric, unsaved.subtotal()), Fragment.lit(""))); @@ -163,7 +164,8 @@ public OrdersRow insert(OrdersRowUnsaved unsaved, Connection c) { columns.add(Fragment.lit("`shipping_address_id`")); values.add( interpolate( - Fragment.encode(CustomerAddressesId.dbType.opt(), value), Fragment.lit(""))); + Fragment.encode(CustomerAddressesId.mariaType.opt(), value), + Fragment.lit(""))); }); ; unsaved @@ -174,7 +176,8 @@ public OrdersRow insert(OrdersRowUnsaved unsaved, Connection c) { columns.add(Fragment.lit("`billing_address_id`")); values.add( interpolate( - Fragment.encode(CustomerAddressesId.dbType.opt(), value), Fragment.lit(""))); + Fragment.encode(CustomerAddressesId.mariaType.opt(), value), + Fragment.lit(""))); }); ; unsaved @@ -220,7 +223,8 @@ public OrdersRow insert(OrdersRowUnsaved unsaved, Connection c) { value -> { columns.add(Fragment.lit("`promotion_id`")); values.add( - interpolate(Fragment.encode(PromotionsId.dbType.opt(), value), Fragment.lit(""))); + interpolate( + Fragment.encode(PromotionsId.mariaType.opt(), value), Fragment.lit(""))); }); ; unsaved @@ -353,7 +357,7 @@ public Optional selectById(OrdersId orderId, Connection c) { + " `user_agent`, `ordered_at`, `confirmed_at`, `shipped_at`, `delivered_at`\n" + "from `orders`\n" + "where `order_id` = "), - Fragment.encode(OrdersId.dbType, orderId), + Fragment.encode(OrdersId.mariaType, orderId), Fragment.lit("")) .query(OrdersRow._rowParser.first()) .runUnchecked(c); @@ -363,7 +367,7 @@ public Optional selectById(OrdersId orderId, Connection c) { public List selectByIds(OrdersId[] orderIds, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : orderIds) { - fragments.add(Fragment.encode(OrdersId.dbType, id)); + fragments.add(Fragment.encode(OrdersId.mariaType, id)); } ; return Fragment.interpolate( @@ -418,15 +422,15 @@ public Boolean update(OrdersRow row, Connection c) { Fragment.lit("update `orders`\nset `order_number` = "), Fragment.encode(MariaTypes.varchar, row.orderNumber()), Fragment.lit(",\n`customer_id` = "), - Fragment.encode(CustomersId.dbType, row.customerId()), + Fragment.encode(CustomersId.mariaType, row.customerId()), Fragment.lit(",\n`order_status` = "), Fragment.encode(MariaTypes.text, row.orderStatus()), Fragment.lit(",\n`payment_status` = "), Fragment.encode(MariaTypes.text, row.paymentStatus()), Fragment.lit(",\n`shipping_address_id` = "), - Fragment.encode(CustomerAddressesId.dbType.opt(), row.shippingAddressId()), + Fragment.encode(CustomerAddressesId.mariaType.opt(), row.shippingAddressId()), Fragment.lit(",\n`billing_address_id` = "), - Fragment.encode(CustomerAddressesId.dbType.opt(), row.billingAddressId()), + Fragment.encode(CustomerAddressesId.mariaType.opt(), row.billingAddressId()), Fragment.lit(",\n`subtotal` = "), Fragment.encode(MariaTypes.numeric, row.subtotal()), Fragment.lit(",\n`shipping_cost` = "), @@ -440,7 +444,7 @@ public Boolean update(OrdersRow row, Connection c) { Fragment.lit(",\n`currency_code` = "), Fragment.encode(MariaTypes.char_, row.currencyCode()), Fragment.lit(",\n`promotion_id` = "), - Fragment.encode(PromotionsId.dbType.opt(), row.promotionId()), + Fragment.encode(PromotionsId.mariaType.opt(), row.promotionId()), Fragment.lit(",\n`notes` = "), Fragment.encode(MariaTypes.text.opt(), row.notes()), Fragment.lit(",\n`internal_notes` = "), @@ -458,7 +462,7 @@ public Boolean update(OrdersRow row, Connection c) { Fragment.lit(",\n`delivered_at` = "), Fragment.encode(MariaTypes.datetime.opt(), row.deliveredAt()), Fragment.lit("\nwhere `order_id` = "), - Fragment.encode(OrdersId.dbType, orderId), + Fragment.encode(OrdersId.mariaType, orderId), Fragment.lit("")) .update() .runUnchecked(c) @@ -475,19 +479,19 @@ public OrdersRow upsert(OrdersRow unsaved, Connection c) { + " `currency_code`, `promotion_id`, `notes`, `internal_notes`, `ip_address`," + " `user_agent`, `ordered_at`, `confirmed_at`, `shipped_at`, `delivered_at`)\n" + "VALUES ("), - Fragment.encode(OrdersId.dbType, unsaved.orderId()), + Fragment.encode(OrdersId.mariaType, unsaved.orderId()), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.orderNumber()), Fragment.lit(", "), - Fragment.encode(CustomersId.dbType, unsaved.customerId()), + Fragment.encode(CustomersId.mariaType, unsaved.customerId()), Fragment.lit(", "), Fragment.encode(MariaTypes.text, unsaved.orderStatus()), Fragment.lit(", "), Fragment.encode(MariaTypes.text, unsaved.paymentStatus()), Fragment.lit(", "), - Fragment.encode(CustomerAddressesId.dbType.opt(), unsaved.shippingAddressId()), + Fragment.encode(CustomerAddressesId.mariaType.opt(), unsaved.shippingAddressId()), Fragment.lit(", "), - Fragment.encode(CustomerAddressesId.dbType.opt(), unsaved.billingAddressId()), + Fragment.encode(CustomerAddressesId.mariaType.opt(), unsaved.billingAddressId()), Fragment.lit(", "), Fragment.encode(MariaTypes.numeric, unsaved.subtotal()), Fragment.lit(", "), @@ -501,7 +505,7 @@ public OrdersRow upsert(OrdersRow unsaved, Connection c) { Fragment.lit(", "), Fragment.encode(MariaTypes.char_, unsaved.currencyCode()), Fragment.lit(", "), - Fragment.encode(PromotionsId.dbType.opt(), unsaved.promotionId()), + Fragment.encode(PromotionsId.mariaType.opt(), unsaved.promotionId()), Fragment.lit(", "), Fragment.encode(MariaTypes.text.opt(), unsaved.notes()), Fragment.lit(", "), diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/orders/OrdersRow.java b/testers/mariadb/java/generated-and-checked-in/testdb/orders/OrdersRow.java index 7fe01c06cb..167f099c03 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/orders/OrdersRow.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/orders/OrdersRow.java @@ -710,20 +710,20 @@ public OrdersRow withDeliveredAt(Optional deliveredAt) { public static RowParser _rowParser = RowParsers.of( - OrdersId.dbType, + OrdersId.mariaType, MariaTypes.varchar, - CustomersId.dbType, + CustomersId.mariaType, MariaTypes.text, MariaTypes.text, - CustomerAddressesId.dbType.opt(), - CustomerAddressesId.dbType.opt(), + CustomerAddressesId.mariaType.opt(), + CustomerAddressesId.mariaType.opt(), MariaTypes.numeric, MariaTypes.numeric, MariaTypes.numeric, MariaTypes.numeric, MariaTypes.numeric, MariaTypes.char_, - PromotionsId.dbType.opt(), + PromotionsId.mariaType.opt(), MariaTypes.text.opt(), MariaTypes.mediumtext.opt(), MariaTypes.inet6.opt(), diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/payment_methods/PaymentMethodsFields.java b/testers/mariadb/java/generated-and-checked-in/testdb/payment_methods/PaymentMethodsFields.java index 9c0bd0920c..8230064260 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/payment_methods/PaymentMethodsFields.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/payment_methods/PaymentMethodsFields.java @@ -19,9 +19,11 @@ import dev.typr.foundations.dsl.TupleExpr.TupleExpr7; import java.util.List; import java.util.Optional; +import testdb.userdefined.IsActive; public class PaymentMethodsFields - extends TupleExpr7 + extends TupleExpr7< + PaymentMethodsId, String, String, String, Json, /* user-picked */ IsActive, Byte> implements RelationStructure, FieldsBase { List _path; @@ -41,7 +43,7 @@ public IdField methodId() { Optional.empty(), Optional.empty(), (row, value) -> row.withMethodId(value), - PaymentMethodsId.dbType); + PaymentMethodsId.mariaType); } public Field code() { @@ -88,15 +90,15 @@ public OptField processorConfig() { MariaTypes.json); } - public Field isActive() { - return new Field( + public Field isActive() { + return new Field( _path, "is_active", PaymentMethodsRow::isActive, Optional.empty(), Optional.empty(), (row, value) -> row.withIsActive(value), - MariaTypes.bool); + IsActive.mariaType); } public Field sortOrder() { @@ -163,7 +165,7 @@ public SqlExpr _5() { } @Override - public SqlExpr _6() { + public SqlExpr _6() { return isActive(); } diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/payment_methods/PaymentMethodsId.java b/testers/mariadb/java/generated-and-checked-in/testdb/payment_methods/PaymentMethodsId.java index 465a473060..e9352f005f 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/payment_methods/PaymentMethodsId.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/payment_methods/PaymentMethodsId.java @@ -27,6 +27,6 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(PaymentMethodsId::value, PaymentMethodsId::new); - public static MariaType dbType = + public static MariaType mariaType = MariaTypes.tinyintUnsigned.bimap(PaymentMethodsId::new, PaymentMethodsId::value); } diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/payment_methods/PaymentMethodsRepoImpl.java b/testers/mariadb/java/generated-and-checked-in/testdb/payment_methods/PaymentMethodsRepoImpl.java index 68f3fc44fa..fc82b3ae63 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/payment_methods/PaymentMethodsRepoImpl.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/payment_methods/PaymentMethodsRepoImpl.java @@ -20,6 +20,7 @@ import java.util.List; import java.util.Map; import java.util.Optional; +import testdb.userdefined.IsActive; public class PaymentMethodsRepoImpl implements PaymentMethodsRepo { @Override @@ -31,7 +32,7 @@ public DeleteBuilder delete() { public Boolean deleteById(PaymentMethodsId methodId, Connection c) { return interpolate( Fragment.lit("delete from `payment_methods` where `method_id` = "), - Fragment.encode(PaymentMethodsId.dbType, methodId), + Fragment.encode(PaymentMethodsId.mariaType, methodId), Fragment.lit("")) .update() .runUnchecked(c) @@ -42,7 +43,7 @@ public Boolean deleteById(PaymentMethodsId methodId, Connection c) { public Integer deleteByIds(PaymentMethodsId[] methodIds, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : methodIds) { - fragments.add(Fragment.encode(PaymentMethodsId.dbType, id)); + fragments.add(Fragment.encode(PaymentMethodsId.mariaType, id)); } ; return Fragment.interpolate( @@ -68,7 +69,7 @@ public PaymentMethodsRow insert(PaymentMethodsRow unsaved, Connection c) { Fragment.lit(", "), Fragment.encode(MariaTypes.json.opt(), unsaved.processorConfig()), Fragment.lit(", "), - Fragment.encode(MariaTypes.bool, unsaved.isActive()), + Fragment.encode(IsActive.mariaType, unsaved.isActive()), Fragment.lit(", "), Fragment.encode(MariaTypes.tinyint, unsaved.sortOrder()), Fragment.lit( @@ -108,7 +109,7 @@ public PaymentMethodsRow insert(PaymentMethodsRowUnsaved unsaved, Connection c) () -> {}, value -> { columns.add(Fragment.lit("`is_active`")); - values.add(interpolate(Fragment.encode(MariaTypes.bool, value), Fragment.lit(""))); + values.add(interpolate(Fragment.encode(IsActive.mariaType, value), Fragment.lit(""))); }); ; unsaved @@ -162,7 +163,7 @@ public Optional selectById(PaymentMethodsId methodId, Connect + " `is_active`, `sort_order`\n" + "from `payment_methods`\n" + "where `method_id` = "), - Fragment.encode(PaymentMethodsId.dbType, methodId), + Fragment.encode(PaymentMethodsId.mariaType, methodId), Fragment.lit("")) .query(PaymentMethodsRow._rowParser.first()) .runUnchecked(c); @@ -172,7 +173,7 @@ public Optional selectById(PaymentMethodsId methodId, Connect public List selectByIds(PaymentMethodsId[] methodIds, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : methodIds) { - fragments.add(Fragment.encode(PaymentMethodsId.dbType, id)); + fragments.add(Fragment.encode(PaymentMethodsId.mariaType, id)); } ; return Fragment.interpolate( @@ -231,11 +232,11 @@ public Boolean update(PaymentMethodsRow row, Connection c) { Fragment.lit(",\n`processor_config` = "), Fragment.encode(MariaTypes.json.opt(), row.processorConfig()), Fragment.lit(",\n`is_active` = "), - Fragment.encode(MariaTypes.bool, row.isActive()), + Fragment.encode(IsActive.mariaType, row.isActive()), Fragment.lit(",\n`sort_order` = "), Fragment.encode(MariaTypes.tinyint, row.sortOrder()), Fragment.lit("\nwhere `method_id` = "), - Fragment.encode(PaymentMethodsId.dbType, methodId), + Fragment.encode(PaymentMethodsId.mariaType, methodId), Fragment.lit("")) .update() .runUnchecked(c) @@ -249,7 +250,7 @@ public PaymentMethodsRow upsert(PaymentMethodsRow unsaved, Connection c) { "INSERT INTO `payment_methods`(`method_id`, `code`, `name`, `method_type`," + " `processor_config`, `is_active`, `sort_order`)\n" + "VALUES ("), - Fragment.encode(PaymentMethodsId.dbType, unsaved.methodId()), + Fragment.encode(PaymentMethodsId.mariaType, unsaved.methodId()), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.code()), Fragment.lit(", "), @@ -259,7 +260,7 @@ public PaymentMethodsRow upsert(PaymentMethodsRow unsaved, Connection c) { Fragment.lit(", "), Fragment.encode(MariaTypes.json.opt(), unsaved.processorConfig()), Fragment.lit(", "), - Fragment.encode(MariaTypes.bool, unsaved.isActive()), + Fragment.encode(IsActive.mariaType, unsaved.isActive()), Fragment.lit(", "), Fragment.encode(MariaTypes.tinyint, unsaved.sortOrder()), Fragment.lit( diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/payment_methods/PaymentMethodsRow.java b/testers/mariadb/java/generated-and-checked-in/testdb/payment_methods/PaymentMethodsRow.java index 54277ff02f..d4913737e6 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/payment_methods/PaymentMethodsRow.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/payment_methods/PaymentMethodsRow.java @@ -13,6 +13,7 @@ import dev.typr.foundations.data.Json; import java.util.Optional; import testdb.customtypes.Defaulted; +import testdb.userdefined.IsActive; /** Table: payment_methods Primary key: method_id */ public record PaymentMethodsRow( @@ -27,10 +28,17 @@ public record PaymentMethodsRow( /** Default: NULL */ @JsonProperty("processor_config") Optional processorConfig, /** Default: 1 */ - @JsonProperty("is_active") Boolean isActive, + @JsonProperty("is_active") /* user-picked */ IsActive isActive, /** Default: 0 */ @JsonProperty("sort_order") Byte sortOrder) - implements Tuple7, Boolean, Byte> { + implements Tuple7< + PaymentMethodsId, + String, + String, + String, + Optional, /* user-picked */ + IsActive, + Byte> { /** AUTO_INCREMENT */ public PaymentMethodsRow withMethodId(PaymentMethodsId methodId) { return new PaymentMethodsRow( @@ -67,7 +75,7 @@ public PaymentMethodsRow withProcessorConfig(Optional processorConfig) { ; /** Default: 1 */ - public PaymentMethodsRow withIsActive(Boolean isActive) { + public PaymentMethodsRow withIsActive(/* user-picked */ IsActive isActive) { return new PaymentMethodsRow( methodId, code, name, methodType, processorConfig, isActive, sortOrder); } @@ -82,12 +90,12 @@ public PaymentMethodsRow withSortOrder(Byte sortOrder) { public static RowParser _rowParser = RowParsers.of( - PaymentMethodsId.dbType, + PaymentMethodsId.mariaType, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.text, MariaTypes.json.opt(), - MariaTypes.bool, + IsActive.mariaType, MariaTypes.tinyint, PaymentMethodsRow::new, row -> @@ -133,7 +141,7 @@ public Optional _5() { ; @Override - public Boolean _6() { + public /* user-picked */ IsActive _6() { return isActive; } ; @@ -151,7 +159,7 @@ public PaymentMethodsId id() { public PaymentMethodsRowUnsaved toUnsavedRow( Defaulted> processorConfig, - Defaulted isActive, + Defaulted isActive, Defaulted sortOrder) { return new PaymentMethodsRowUnsaved( code, name, methodType, processorConfig, isActive, sortOrder); diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/payment_methods/PaymentMethodsRowUnsaved.java b/testers/mariadb/java/generated-and-checked-in/testdb/payment_methods/PaymentMethodsRowUnsaved.java index 5de95031e0..a9d4a4b5f9 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/payment_methods/PaymentMethodsRowUnsaved.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/payment_methods/PaymentMethodsRowUnsaved.java @@ -10,6 +10,7 @@ import java.util.Optional; import testdb.customtypes.Defaulted; import testdb.customtypes.Defaulted.UseDefault; +import testdb.userdefined.IsActive; /** This class corresponds to a row in table `payment_methods` which has not been persisted yet */ public record PaymentMethodsRowUnsaved( @@ -22,7 +23,7 @@ public record PaymentMethodsRowUnsaved( /** Default: NULL */ @JsonProperty("processor_config") Defaulted> processorConfig, /** Default: 1 */ - @JsonProperty("is_active") Defaulted isActive, + @JsonProperty("is_active") Defaulted isActive, /** Default: 0 */ @JsonProperty("sort_order") Defaulted sortOrder) { public PaymentMethodsRowUnsaved( @@ -65,7 +66,7 @@ public PaymentMethodsRowUnsaved withProcessorConfig(Defaulted> pr ; /** Default: 1 */ - public PaymentMethodsRowUnsaved withIsActive(Defaulted isActive) { + public PaymentMethodsRowUnsaved withIsActive(Defaulted isActive) { return new PaymentMethodsRowUnsaved( code, name, methodType, processorConfig, isActive, sortOrder); } @@ -80,7 +81,7 @@ public PaymentMethodsRowUnsaved withSortOrder(Defaulted sortOrder) { public PaymentMethodsRow toRow( java.util.function.Supplier> processorConfigDefault, - java.util.function.Supplier isActiveDefault, + java.util.function.Supplier isActiveDefault, java.util.function.Supplier sortOrderDefault, java.util.function.Supplier methodIdDefault) { return new PaymentMethodsRow( diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/payments/PaymentsFields.java b/testers/mariadb/java/generated-and-checked-in/testdb/payments/PaymentsFields.java index b039e258a1..14354b2bb7 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/payments/PaymentsFields.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/payments/PaymentsFields.java @@ -61,7 +61,7 @@ public IdField paymentId() { Optional.empty(), Optional.empty(), (row, value) -> row.withPaymentId(value), - PaymentsId.dbType); + PaymentsId.mariaType); } public Field orderId() { @@ -72,7 +72,7 @@ public Field orderId() { Optional.empty(), Optional.empty(), (row, value) -> row.withOrderId(value), - OrdersId.dbType); + OrdersId.mariaType); } public Field methodId() { @@ -83,7 +83,7 @@ public Field methodId() { Optional.empty(), Optional.empty(), (row, value) -> row.withMethodId(value), - PaymentMethodsId.dbType); + PaymentMethodsId.mariaType); } public OptField transactionId() { diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/payments/PaymentsId.java b/testers/mariadb/java/generated-and-checked-in/testdb/payments/PaymentsId.java index bf39a96df6..d9f8906c5c 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/payments/PaymentsId.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/payments/PaymentsId.java @@ -27,6 +27,6 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(PaymentsId::value, PaymentsId::new); - public static MariaType dbType = + public static MariaType mariaType = MariaTypes.bigintUnsigned.bimap(PaymentsId::new, PaymentsId::value); } diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/payments/PaymentsRepoImpl.java b/testers/mariadb/java/generated-and-checked-in/testdb/payments/PaymentsRepoImpl.java index a5a448769e..3a851afe8e 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/payments/PaymentsRepoImpl.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/payments/PaymentsRepoImpl.java @@ -33,7 +33,7 @@ public DeleteBuilder delete() { public Boolean deleteById(PaymentsId paymentId, Connection c) { return interpolate( Fragment.lit("delete from `payments` where `payment_id` = "), - Fragment.encode(PaymentsId.dbType, paymentId), + Fragment.encode(PaymentsId.mariaType, paymentId), Fragment.lit("")) .update() .runUnchecked(c) @@ -44,7 +44,7 @@ public Boolean deleteById(PaymentsId paymentId, Connection c) { public Integer deleteByIds(PaymentsId[] paymentIds, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : paymentIds) { - fragments.add(Fragment.encode(PaymentsId.dbType, id)); + fragments.add(Fragment.encode(PaymentsId.mariaType, id)); } ; return Fragment.interpolate( @@ -63,9 +63,9 @@ public PaymentsRow insert(PaymentsRow unsaved, Connection c) { + " `currency_code`, `status`, `processor_response`, `error_message`," + " `ip_address`, `created_at`, `processed_at`)\n" + "values ("), - Fragment.encode(OrdersId.dbType, unsaved.orderId()), + Fragment.encode(OrdersId.mariaType, unsaved.orderId()), Fragment.lit(", "), - Fragment.encode(PaymentMethodsId.dbType, unsaved.methodId()), + Fragment.encode(PaymentMethodsId.mariaType, unsaved.methodId()), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.opt(), unsaved.transactionId()), Fragment.lit(", "), @@ -100,11 +100,12 @@ public PaymentsRow insert(PaymentsRowUnsaved unsaved, Connection c) { ArrayList values = new ArrayList<>(); ; columns.add(Fragment.lit("`order_id`")); - values.add(interpolate(Fragment.encode(OrdersId.dbType, unsaved.orderId()), Fragment.lit(""))); + values.add( + interpolate(Fragment.encode(OrdersId.mariaType, unsaved.orderId()), Fragment.lit(""))); columns.add(Fragment.lit("`method_id`")); values.add( interpolate( - Fragment.encode(PaymentMethodsId.dbType, unsaved.methodId()), Fragment.lit(""))); + Fragment.encode(PaymentMethodsId.mariaType, unsaved.methodId()), Fragment.lit(""))); columns.add(Fragment.lit("`amount`")); values.add( interpolate(Fragment.encode(MariaTypes.numeric, unsaved.amount()), Fragment.lit(""))); @@ -228,7 +229,7 @@ public Optional selectById(PaymentsId paymentId, Connection c) { + " `ip_address`, `created_at`, `processed_at`\n" + "from `payments`\n" + "where `payment_id` = "), - Fragment.encode(PaymentsId.dbType, paymentId), + Fragment.encode(PaymentsId.mariaType, paymentId), Fragment.lit("")) .query(PaymentsRow._rowParser.first()) .runUnchecked(c); @@ -238,7 +239,7 @@ public Optional selectById(PaymentsId paymentId, Connection c) { public List selectByIds(PaymentsId[] paymentIds, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : paymentIds) { - fragments.add(Fragment.encode(PaymentsId.dbType, id)); + fragments.add(Fragment.encode(PaymentsId.mariaType, id)); } ; return Fragment.interpolate( @@ -272,9 +273,9 @@ public Boolean update(PaymentsRow row, Connection c) { ; return interpolate( Fragment.lit("update `payments`\nset `order_id` = "), - Fragment.encode(OrdersId.dbType, row.orderId()), + Fragment.encode(OrdersId.mariaType, row.orderId()), Fragment.lit(",\n`method_id` = "), - Fragment.encode(PaymentMethodsId.dbType, row.methodId()), + Fragment.encode(PaymentMethodsId.mariaType, row.methodId()), Fragment.lit(",\n`transaction_id` = "), Fragment.encode(MariaTypes.varchar.opt(), row.transactionId()), Fragment.lit(",\n`amount` = "), @@ -294,7 +295,7 @@ public Boolean update(PaymentsRow row, Connection c) { Fragment.lit(",\n`processed_at` = "), Fragment.encode(MariaTypes.datetime.opt(), row.processedAt()), Fragment.lit("\nwhere `payment_id` = "), - Fragment.encode(PaymentsId.dbType, paymentId), + Fragment.encode(PaymentsId.mariaType, paymentId), Fragment.lit("")) .update() .runUnchecked(c) @@ -309,11 +310,11 @@ public PaymentsRow upsert(PaymentsRow unsaved, Connection c) { + " `amount`, `currency_code`, `status`, `processor_response`, `error_message`," + " `ip_address`, `created_at`, `processed_at`)\n" + "VALUES ("), - Fragment.encode(PaymentsId.dbType, unsaved.paymentId()), + Fragment.encode(PaymentsId.mariaType, unsaved.paymentId()), Fragment.lit(", "), - Fragment.encode(OrdersId.dbType, unsaved.orderId()), + Fragment.encode(OrdersId.mariaType, unsaved.orderId()), Fragment.lit(", "), - Fragment.encode(PaymentMethodsId.dbType, unsaved.methodId()), + Fragment.encode(PaymentMethodsId.mariaType, unsaved.methodId()), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.opt(), unsaved.transactionId()), Fragment.lit(", "), diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/payments/PaymentsRow.java b/testers/mariadb/java/generated-and-checked-in/testdb/payments/PaymentsRow.java index fc92fe7324..88523f0631 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/payments/PaymentsRow.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/payments/PaymentsRow.java @@ -276,9 +276,9 @@ public PaymentsRow withProcessedAt(Optional processedAt) { public static RowParser _rowParser = RowParsers.of( - PaymentsId.dbType, - OrdersId.dbType, - PaymentMethodsId.dbType, + PaymentsId.mariaType, + OrdersId.mariaType, + PaymentMethodsId.mariaType, MariaTypes.varchar.opt(), MariaTypes.numeric, MariaTypes.char_, diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/Binary16.java b/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/Binary16.java index c9cf3248ea..7c52b1a6b7 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/Binary16.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/Binary16.java @@ -32,7 +32,7 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(Binary16::value, Binary16::new); - public static MariaType dbType = + public static MariaType mariaType = MariaTypes.binary.bimap(Binary16::new, Binary16::value); public static Optional of(byte[] value) { diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/Binary32.java b/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/Binary32.java index 3aba7aa5b8..57f4025b83 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/Binary32.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/Binary32.java @@ -32,7 +32,7 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(Binary32::value, Binary32::new); - public static MariaType dbType = + public static MariaType mariaType = MariaTypes.binary.bimap(Binary32::new, Binary32::value); public static Optional of(byte[] value) { diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/Binary64.java b/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/Binary64.java index f82f1f70b0..19eda42449 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/Binary64.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/Binary64.java @@ -32,7 +32,7 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(Binary64::value, Binary64::new); - public static MariaType dbType = + public static MariaType mariaType = MariaTypes.binary.bimap(Binary64::new, Binary64::value); public static Optional of(byte[] value) { diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/Decimal10_2.java b/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/Decimal10_2.java index 003cd767f8..8c2a6363f1 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/Decimal10_2.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/Decimal10_2.java @@ -35,7 +35,7 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(Decimal10_2::value, Decimal10_2::new); - public static MariaType dbType = + public static MariaType mariaType = MariaTypes.numeric.bimap(Decimal10_2::new, Decimal10_2::value); public static Optional of(BigDecimal value) { diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/Decimal12_4.java b/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/Decimal12_4.java index 37621529ea..f0e1b1c65b 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/Decimal12_4.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/Decimal12_4.java @@ -35,7 +35,7 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(Decimal12_4::value, Decimal12_4::new); - public static MariaType dbType = + public static MariaType mariaType = MariaTypes.numeric.bimap(Decimal12_4::new, Decimal12_4::value); public static Optional of(BigDecimal value) { diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/Decimal18_4.java b/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/Decimal18_4.java index 48ab916e8a..fa5a39c607 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/Decimal18_4.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/Decimal18_4.java @@ -35,7 +35,7 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(Decimal18_4::value, Decimal18_4::new); - public static MariaType dbType = + public static MariaType mariaType = MariaTypes.numeric.bimap(Decimal18_4::new, Decimal18_4::value); public static Optional of(BigDecimal value) { diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/Decimal5_2.java b/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/Decimal5_2.java index d510b27075..cf5177d010 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/Decimal5_2.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/Decimal5_2.java @@ -35,7 +35,7 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(Decimal5_2::value, Decimal5_2::new); - public static MariaType dbType = + public static MariaType mariaType = MariaTypes.numeric.bimap(Decimal5_2::new, Decimal5_2::value); public static Optional of(BigDecimal value) { diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/Decimal8_2.java b/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/Decimal8_2.java index cc8c43f32c..c87dc5c3eb 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/Decimal8_2.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/Decimal8_2.java @@ -35,7 +35,7 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(Decimal8_2::value, Decimal8_2::new); - public static MariaType dbType = + public static MariaType mariaType = MariaTypes.numeric.bimap(Decimal8_2::new, Decimal8_2::value); public static Optional of(BigDecimal value) { diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/LocalDateTime3.java b/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/LocalDateTime3.java index 0f22b45701..fd466110a6 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/LocalDateTime3.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/LocalDateTime3.java @@ -32,7 +32,7 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(LocalDateTime3::value, LocalDateTime3::new); - public static MariaType dbType = + public static MariaType mariaType = MariaTypes.datetime.bimap(LocalDateTime3::new, LocalDateTime3::value); public static LocalDateTime3 now() { diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/LocalDateTime6.java b/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/LocalDateTime6.java index 87ce3422a2..f3518462ac 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/LocalDateTime6.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/LocalDateTime6.java @@ -32,7 +32,7 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(LocalDateTime6::value, LocalDateTime6::new); - public static MariaType dbType = + public static MariaType mariaType = MariaTypes.timestamp.bimap(LocalDateTime6::new, LocalDateTime6::value); public static LocalDateTime6 now() { diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/LocalTime3.java b/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/LocalTime3.java index 4513eb3200..c0ee8c88aa 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/LocalTime3.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/LocalTime3.java @@ -32,7 +32,7 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(LocalTime3::value, LocalTime3::new); - public static MariaType dbType = + public static MariaType mariaType = MariaTypes.time.bimap(LocalTime3::new, LocalTime3::value); public static LocalTime3 now() { diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/LocalTime6.java b/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/LocalTime6.java index 62ee458968..0b7bc66dfb 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/LocalTime6.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/LocalTime6.java @@ -32,7 +32,7 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(LocalTime6::value, LocalTime6::new); - public static MariaType dbType = + public static MariaType mariaType = MariaTypes.time.bimap(LocalTime6::new, LocalTime6::value); public static LocalTime6 now() { diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/PaddedString10.java b/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/PaddedString10.java index b9bc36ea0c..d47fddfa0a 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/PaddedString10.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/PaddedString10.java @@ -31,7 +31,7 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(PaddedString10::value, PaddedString10::new); - public static MariaType dbType = + public static MariaType mariaType = MariaTypes.char_.bimap(PaddedString10::new, PaddedString10::value); public static Optional of(String value) { diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/String10.java b/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/String10.java index aa2ed1d666..53dd9df00f 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/String10.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/String10.java @@ -31,7 +31,7 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(String10::value, String10::new); - public static MariaType dbType = + public static MariaType mariaType = MariaTypes.varchar.bimap(String10::new, String10::value); public static Optional of(String value) { diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/String100.java b/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/String100.java index 0adceff7f6..6ff5078b00 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/String100.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/String100.java @@ -31,7 +31,7 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(String100::value, String100::new); - public static MariaType dbType = + public static MariaType mariaType = MariaTypes.varchar.bimap(String100::new, String100::value); public static Optional of(String value) { diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/String20.java b/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/String20.java index 0eebb37ac9..d5d039faaf 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/String20.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/String20.java @@ -31,7 +31,7 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(String20::value, String20::new); - public static MariaType dbType = + public static MariaType mariaType = MariaTypes.varchar.bimap(String20::new, String20::value); public static Optional of(String value) { diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/String255.java b/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/String255.java index 42e7c8cbd9..99798f4b83 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/String255.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/String255.java @@ -31,7 +31,7 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(String255::value, String255::new); - public static MariaType dbType = + public static MariaType mariaType = MariaTypes.varchar.bimap(String255::new, String255::value); public static Optional of(String value) { diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/String50.java b/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/String50.java index bf4687e356..e6d1338640 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/String50.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/precisetypes/String50.java @@ -31,7 +31,7 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(String50::value, String50::new); - public static MariaType dbType = + public static MariaType mariaType = MariaTypes.varchar.bimap(String50::new, String50::value); public static Optional of(String value) { diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/precision_types/PrecisionTypesFields.java b/testers/mariadb/java/generated-and-checked-in/testdb/precision_types/PrecisionTypesFields.java index 8879ac25ba..7137a40fa2 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/precision_types/PrecisionTypesFields.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/precision_types/PrecisionTypesFields.java @@ -83,7 +83,7 @@ public IdField id() { Optional.empty(), Optional.empty(), (row, value) -> row.withId(value), - PrecisionTypesId.dbType); + PrecisionTypesId.mariaType); } public Field string10() { @@ -94,7 +94,7 @@ public Field string10() { Optional.empty(), Optional.empty(), (row, value) -> row.withString10(value), - String10.dbType); + String10.mariaType); } public Field string20() { @@ -105,7 +105,7 @@ public Field string20() { Optional.empty(), Optional.empty(), (row, value) -> row.withString20(value), - String20.dbType); + String20.mariaType); } public Field string50() { @@ -116,7 +116,7 @@ public Field string50() { Optional.empty(), Optional.empty(), (row, value) -> row.withString50(value), - String50.dbType); + String50.mariaType); } public Field string100() { @@ -127,7 +127,7 @@ public Field string100() { Optional.empty(), Optional.empty(), (row, value) -> row.withString100(value), - String100.dbType); + String100.mariaType); } public Field string255() { @@ -138,7 +138,7 @@ public Field string255() { Optional.empty(), Optional.empty(), (row, value) -> row.withString255(value), - String255.dbType); + String255.mariaType); } public Field char10() { @@ -149,7 +149,7 @@ public Field char10() { Optional.empty(), Optional.empty(), (row, value) -> row.withChar10(value), - PaddedString10.dbType); + PaddedString10.mariaType); } public Field decimal52() { @@ -160,7 +160,7 @@ public Field decimal52() { Optional.empty(), Optional.empty(), (row, value) -> row.withDecimal52(value), - Decimal5_2.dbType); + Decimal5_2.mariaType); } public Field decimal102() { @@ -171,7 +171,7 @@ public Field decimal102() { Optional.empty(), Optional.empty(), (row, value) -> row.withDecimal102(value), - Decimal10_2.dbType); + Decimal10_2.mariaType); } public Field decimal184() { @@ -182,7 +182,7 @@ public Field decimal184() { Optional.empty(), Optional.empty(), (row, value) -> row.withDecimal184(value), - Decimal18_4.dbType); + Decimal18_4.mariaType); } public Field numeric82() { @@ -193,7 +193,7 @@ public Field numeric82() { Optional.empty(), Optional.empty(), (row, value) -> row.withNumeric82(value), - Decimal8_2.dbType); + Decimal8_2.mariaType); } public Field numeric124() { @@ -204,7 +204,7 @@ public Field numeric124() { Optional.empty(), Optional.empty(), (row, value) -> row.withNumeric124(value), - Decimal12_4.dbType); + Decimal12_4.mariaType); } public Field binary16() { @@ -215,7 +215,7 @@ public Field binary16() { Optional.empty(), Optional.empty(), (row, value) -> row.withBinary16(value), - Binary16.dbType); + Binary16.mariaType); } public Field binary32() { @@ -226,7 +226,7 @@ public Field binary32() { Optional.empty(), Optional.empty(), (row, value) -> row.withBinary32(value), - Binary32.dbType); + Binary32.mariaType); } public Field binary64() { @@ -237,7 +237,7 @@ public Field binary64() { Optional.empty(), Optional.empty(), (row, value) -> row.withBinary64(value), - Binary64.dbType); + Binary64.mariaType); } public Field time0() { @@ -259,7 +259,7 @@ public Field time3() { Optional.empty(), Optional.empty(), (row, value) -> row.withTime3(value), - LocalTime3.dbType); + LocalTime3.mariaType); } public Field time6() { @@ -270,7 +270,7 @@ public Field time6() { Optional.empty(), Optional.empty(), (row, value) -> row.withTime6(value), - LocalTime6.dbType); + LocalTime6.mariaType); } public Field datetime0() { @@ -292,7 +292,7 @@ public Field datetime3() { Optional.empty(), Optional.empty(), (row, value) -> row.withDatetime3(value), - LocalDateTime3.dbType); + LocalDateTime3.mariaType); } public Field datetime6() { @@ -303,7 +303,7 @@ public Field datetime6() { Optional.empty(), Optional.empty(), (row, value) -> row.withDatetime6(value), - LocalDateTime6.dbType); + LocalDateTime6.mariaType); } public Field ts0() { @@ -325,7 +325,7 @@ public Field ts3() { Optional.empty(), Optional.empty(), (row, value) -> row.withTs3(value), - LocalDateTime3.dbType); + LocalDateTime3.mariaType); } public Field ts6() { @@ -336,7 +336,7 @@ public Field ts6() { Optional.empty(), Optional.empty(), (row, value) -> row.withTs6(value), - LocalDateTime6.dbType); + LocalDateTime6.mariaType); } @Override diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/precision_types/PrecisionTypesId.java b/testers/mariadb/java/generated-and-checked-in/testdb/precision_types/PrecisionTypesId.java index da028d9573..9e7737d503 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/precision_types/PrecisionTypesId.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/precision_types/PrecisionTypesId.java @@ -26,6 +26,6 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(PrecisionTypesId::value, PrecisionTypesId::new); - public static MariaType dbType = + public static MariaType mariaType = MariaTypes.int_.bimap(PrecisionTypesId::new, PrecisionTypesId::value); } diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/precision_types/PrecisionTypesRepoImpl.java b/testers/mariadb/java/generated-and-checked-in/testdb/precision_types/PrecisionTypesRepoImpl.java index 29b20c73ff..5693cdbff8 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/precision_types/PrecisionTypesRepoImpl.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/precision_types/PrecisionTypesRepoImpl.java @@ -49,7 +49,7 @@ public DeleteBuilder delete() { public Boolean deleteById(PrecisionTypesId id, Connection c) { return interpolate( Fragment.lit("delete from `precision_types` where `id` = "), - Fragment.encode(PrecisionTypesId.dbType, id), + Fragment.encode(PrecisionTypesId.mariaType, id), Fragment.lit("")) .update() .runUnchecked(c) @@ -60,7 +60,7 @@ public Boolean deleteById(PrecisionTypesId id, Connection c) { public Integer deleteByIds(PrecisionTypesId[] ids, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : ids) { - fragments.add(Fragment.encode(PrecisionTypesId.dbType, id)); + fragments.add(Fragment.encode(PrecisionTypesId.mariaType, id)); } ; return Fragment.interpolate( @@ -81,51 +81,51 @@ public PrecisionTypesRow insert(PrecisionTypesRow unsaved, Connection c) { + " `time3`, `time6`, `datetime0`, `datetime3`, `datetime6`, `ts0`, `ts3`," + " `ts6`)\n" + "values ("), - Fragment.encode(String10.dbType, unsaved.string10()), + Fragment.encode(String10.mariaType, unsaved.string10()), Fragment.lit(", "), - Fragment.encode(String20.dbType, unsaved.string20()), + Fragment.encode(String20.mariaType, unsaved.string20()), Fragment.lit(", "), - Fragment.encode(String50.dbType, unsaved.string50()), + Fragment.encode(String50.mariaType, unsaved.string50()), Fragment.lit(", "), - Fragment.encode(String100.dbType, unsaved.string100()), + Fragment.encode(String100.mariaType, unsaved.string100()), Fragment.lit(", "), - Fragment.encode(String255.dbType, unsaved.string255()), + Fragment.encode(String255.mariaType, unsaved.string255()), Fragment.lit(", "), - Fragment.encode(PaddedString10.dbType, unsaved.char10()), + Fragment.encode(PaddedString10.mariaType, unsaved.char10()), Fragment.lit(", "), - Fragment.encode(Decimal5_2.dbType, unsaved.decimal52()), + Fragment.encode(Decimal5_2.mariaType, unsaved.decimal52()), Fragment.lit(", "), - Fragment.encode(Decimal10_2.dbType, unsaved.decimal102()), + Fragment.encode(Decimal10_2.mariaType, unsaved.decimal102()), Fragment.lit(", "), - Fragment.encode(Decimal18_4.dbType, unsaved.decimal184()), + Fragment.encode(Decimal18_4.mariaType, unsaved.decimal184()), Fragment.lit(", "), - Fragment.encode(Decimal8_2.dbType, unsaved.numeric82()), + Fragment.encode(Decimal8_2.mariaType, unsaved.numeric82()), Fragment.lit(", "), - Fragment.encode(Decimal12_4.dbType, unsaved.numeric124()), + Fragment.encode(Decimal12_4.mariaType, unsaved.numeric124()), Fragment.lit(", "), - Fragment.encode(Binary16.dbType, unsaved.binary16()), + Fragment.encode(Binary16.mariaType, unsaved.binary16()), Fragment.lit(", "), - Fragment.encode(Binary32.dbType, unsaved.binary32()), + Fragment.encode(Binary32.mariaType, unsaved.binary32()), Fragment.lit(", "), - Fragment.encode(Binary64.dbType, unsaved.binary64()), + Fragment.encode(Binary64.mariaType, unsaved.binary64()), Fragment.lit(", "), Fragment.encode(MariaTypes.time, unsaved.time0()), Fragment.lit(", "), - Fragment.encode(LocalTime3.dbType, unsaved.time3()), + Fragment.encode(LocalTime3.mariaType, unsaved.time3()), Fragment.lit(", "), - Fragment.encode(LocalTime6.dbType, unsaved.time6()), + Fragment.encode(LocalTime6.mariaType, unsaved.time6()), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.datetime0()), Fragment.lit(", "), - Fragment.encode(LocalDateTime3.dbType, unsaved.datetime3()), + Fragment.encode(LocalDateTime3.mariaType, unsaved.datetime3()), Fragment.lit(", "), - Fragment.encode(LocalDateTime6.dbType, unsaved.datetime6()), + Fragment.encode(LocalDateTime6.mariaType, unsaved.datetime6()), Fragment.lit(", "), Fragment.encode(MariaTypes.timestamp, unsaved.ts0()), Fragment.lit(", "), - Fragment.encode(LocalDateTime3.dbType, unsaved.ts3()), + Fragment.encode(LocalDateTime3.mariaType, unsaved.ts3()), Fragment.lit(", "), - Fragment.encode(LocalDateTime6.dbType, unsaved.ts6()), + Fragment.encode(LocalDateTime6.mariaType, unsaved.ts6()), Fragment.lit( ")\n" + "RETURNING `id`, `string10`, `string20`, `string50`, `string100`," @@ -144,56 +144,69 @@ public PrecisionTypesRow insert(PrecisionTypesRowUnsaved unsaved, Connection c) ArrayList values = new ArrayList<>(); ; columns.add(Fragment.lit("`string10`")); - values.add(interpolate(Fragment.encode(String10.dbType, unsaved.string10()), Fragment.lit(""))); + values.add( + interpolate(Fragment.encode(String10.mariaType, unsaved.string10()), Fragment.lit(""))); columns.add(Fragment.lit("`string20`")); - values.add(interpolate(Fragment.encode(String20.dbType, unsaved.string20()), Fragment.lit(""))); + values.add( + interpolate(Fragment.encode(String20.mariaType, unsaved.string20()), Fragment.lit(""))); columns.add(Fragment.lit("`string50`")); - values.add(interpolate(Fragment.encode(String50.dbType, unsaved.string50()), Fragment.lit(""))); + values.add( + interpolate(Fragment.encode(String50.mariaType, unsaved.string50()), Fragment.lit(""))); columns.add(Fragment.lit("`string100`")); values.add( - interpolate(Fragment.encode(String100.dbType, unsaved.string100()), Fragment.lit(""))); + interpolate(Fragment.encode(String100.mariaType, unsaved.string100()), Fragment.lit(""))); columns.add(Fragment.lit("`string255`")); values.add( - interpolate(Fragment.encode(String255.dbType, unsaved.string255()), Fragment.lit(""))); + interpolate(Fragment.encode(String255.mariaType, unsaved.string255()), Fragment.lit(""))); columns.add(Fragment.lit("`char10`")); values.add( - interpolate(Fragment.encode(PaddedString10.dbType, unsaved.char10()), Fragment.lit(""))); + interpolate(Fragment.encode(PaddedString10.mariaType, unsaved.char10()), Fragment.lit(""))); columns.add(Fragment.lit("`decimal5_2`")); values.add( - interpolate(Fragment.encode(Decimal5_2.dbType, unsaved.decimal52()), Fragment.lit(""))); + interpolate(Fragment.encode(Decimal5_2.mariaType, unsaved.decimal52()), Fragment.lit(""))); columns.add(Fragment.lit("`decimal10_2`")); values.add( - interpolate(Fragment.encode(Decimal10_2.dbType, unsaved.decimal102()), Fragment.lit(""))); + interpolate( + Fragment.encode(Decimal10_2.mariaType, unsaved.decimal102()), Fragment.lit(""))); columns.add(Fragment.lit("`decimal18_4`")); values.add( - interpolate(Fragment.encode(Decimal18_4.dbType, unsaved.decimal184()), Fragment.lit(""))); + interpolate( + Fragment.encode(Decimal18_4.mariaType, unsaved.decimal184()), Fragment.lit(""))); columns.add(Fragment.lit("`numeric8_2`")); values.add( - interpolate(Fragment.encode(Decimal8_2.dbType, unsaved.numeric82()), Fragment.lit(""))); + interpolate(Fragment.encode(Decimal8_2.mariaType, unsaved.numeric82()), Fragment.lit(""))); columns.add(Fragment.lit("`numeric12_4`")); values.add( - interpolate(Fragment.encode(Decimal12_4.dbType, unsaved.numeric124()), Fragment.lit(""))); + interpolate( + Fragment.encode(Decimal12_4.mariaType, unsaved.numeric124()), Fragment.lit(""))); columns.add(Fragment.lit("`binary16`")); - values.add(interpolate(Fragment.encode(Binary16.dbType, unsaved.binary16()), Fragment.lit(""))); + values.add( + interpolate(Fragment.encode(Binary16.mariaType, unsaved.binary16()), Fragment.lit(""))); columns.add(Fragment.lit("`binary32`")); - values.add(interpolate(Fragment.encode(Binary32.dbType, unsaved.binary32()), Fragment.lit(""))); + values.add( + interpolate(Fragment.encode(Binary32.mariaType, unsaved.binary32()), Fragment.lit(""))); columns.add(Fragment.lit("`binary64`")); - values.add(interpolate(Fragment.encode(Binary64.dbType, unsaved.binary64()), Fragment.lit(""))); + values.add( + interpolate(Fragment.encode(Binary64.mariaType, unsaved.binary64()), Fragment.lit(""))); columns.add(Fragment.lit("`time0`")); values.add(interpolate(Fragment.encode(MariaTypes.time, unsaved.time0()), Fragment.lit(""))); columns.add(Fragment.lit("`time3`")); - values.add(interpolate(Fragment.encode(LocalTime3.dbType, unsaved.time3()), Fragment.lit(""))); + values.add( + interpolate(Fragment.encode(LocalTime3.mariaType, unsaved.time3()), Fragment.lit(""))); columns.add(Fragment.lit("`time6`")); - values.add(interpolate(Fragment.encode(LocalTime6.dbType, unsaved.time6()), Fragment.lit(""))); + values.add( + interpolate(Fragment.encode(LocalTime6.mariaType, unsaved.time6()), Fragment.lit(""))); columns.add(Fragment.lit("`datetime0`")); values.add( interpolate(Fragment.encode(MariaTypes.datetime, unsaved.datetime0()), Fragment.lit(""))); columns.add(Fragment.lit("`datetime3`")); values.add( - interpolate(Fragment.encode(LocalDateTime3.dbType, unsaved.datetime3()), Fragment.lit(""))); + interpolate( + Fragment.encode(LocalDateTime3.mariaType, unsaved.datetime3()), Fragment.lit(""))); columns.add(Fragment.lit("`datetime6`")); values.add( - interpolate(Fragment.encode(LocalDateTime6.dbType, unsaved.datetime6()), Fragment.lit(""))); + interpolate( + Fragment.encode(LocalDateTime6.mariaType, unsaved.datetime6()), Fragment.lit(""))); unsaved .ts0() .visit( @@ -211,7 +224,7 @@ public PrecisionTypesRow insert(PrecisionTypesRowUnsaved unsaved, Connection c) value -> { columns.add(Fragment.lit("`ts3`")); values.add( - interpolate(Fragment.encode(LocalDateTime3.dbType, value), Fragment.lit(""))); + interpolate(Fragment.encode(LocalDateTime3.mariaType, value), Fragment.lit(""))); }); ; unsaved @@ -221,7 +234,7 @@ public PrecisionTypesRow insert(PrecisionTypesRowUnsaved unsaved, Connection c) value -> { columns.add(Fragment.lit("`ts6`")); values.add( - interpolate(Fragment.encode(LocalDateTime6.dbType, value), Fragment.lit(""))); + interpolate(Fragment.encode(LocalDateTime6.mariaType, value), Fragment.lit(""))); }); ; Fragment q = @@ -273,7 +286,7 @@ public Optional selectById(PrecisionTypesId id, Connection c) + " `time6`, `datetime0`, `datetime3`, `datetime6`, `ts0`, `ts3`, `ts6`\n" + "from `precision_types`\n" + "where `id` = "), - Fragment.encode(PrecisionTypesId.dbType, id), + Fragment.encode(PrecisionTypesId.mariaType, id), Fragment.lit("")) .query(PrecisionTypesRow._rowParser.first()) .runUnchecked(c); @@ -283,7 +296,7 @@ public Optional selectById(PrecisionTypesId id, Connection c) public List selectByIds(PrecisionTypesId[] ids, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : ids) { - fragments.add(Fragment.encode(PrecisionTypesId.dbType, id)); + fragments.add(Fragment.encode(PrecisionTypesId.mariaType, id)); } ; return Fragment.interpolate( @@ -323,53 +336,53 @@ public Boolean update(PrecisionTypesRow row, Connection c) { ; return interpolate( Fragment.lit("update `precision_types`\nset `string10` = "), - Fragment.encode(String10.dbType, row.string10()), + Fragment.encode(String10.mariaType, row.string10()), Fragment.lit(",\n`string20` = "), - Fragment.encode(String20.dbType, row.string20()), + Fragment.encode(String20.mariaType, row.string20()), Fragment.lit(",\n`string50` = "), - Fragment.encode(String50.dbType, row.string50()), + Fragment.encode(String50.mariaType, row.string50()), Fragment.lit(",\n`string100` = "), - Fragment.encode(String100.dbType, row.string100()), + Fragment.encode(String100.mariaType, row.string100()), Fragment.lit(",\n`string255` = "), - Fragment.encode(String255.dbType, row.string255()), + Fragment.encode(String255.mariaType, row.string255()), Fragment.lit(",\n`char10` = "), - Fragment.encode(PaddedString10.dbType, row.char10()), + Fragment.encode(PaddedString10.mariaType, row.char10()), Fragment.lit(",\n`decimal5_2` = "), - Fragment.encode(Decimal5_2.dbType, row.decimal52()), + Fragment.encode(Decimal5_2.mariaType, row.decimal52()), Fragment.lit(",\n`decimal10_2` = "), - Fragment.encode(Decimal10_2.dbType, row.decimal102()), + Fragment.encode(Decimal10_2.mariaType, row.decimal102()), Fragment.lit(",\n`decimal18_4` = "), - Fragment.encode(Decimal18_4.dbType, row.decimal184()), + Fragment.encode(Decimal18_4.mariaType, row.decimal184()), Fragment.lit(",\n`numeric8_2` = "), - Fragment.encode(Decimal8_2.dbType, row.numeric82()), + Fragment.encode(Decimal8_2.mariaType, row.numeric82()), Fragment.lit(",\n`numeric12_4` = "), - Fragment.encode(Decimal12_4.dbType, row.numeric124()), + Fragment.encode(Decimal12_4.mariaType, row.numeric124()), Fragment.lit(",\n`binary16` = "), - Fragment.encode(Binary16.dbType, row.binary16()), + Fragment.encode(Binary16.mariaType, row.binary16()), Fragment.lit(",\n`binary32` = "), - Fragment.encode(Binary32.dbType, row.binary32()), + Fragment.encode(Binary32.mariaType, row.binary32()), Fragment.lit(",\n`binary64` = "), - Fragment.encode(Binary64.dbType, row.binary64()), + Fragment.encode(Binary64.mariaType, row.binary64()), Fragment.lit(",\n`time0` = "), Fragment.encode(MariaTypes.time, row.time0()), Fragment.lit(",\n`time3` = "), - Fragment.encode(LocalTime3.dbType, row.time3()), + Fragment.encode(LocalTime3.mariaType, row.time3()), Fragment.lit(",\n`time6` = "), - Fragment.encode(LocalTime6.dbType, row.time6()), + Fragment.encode(LocalTime6.mariaType, row.time6()), Fragment.lit(",\n`datetime0` = "), Fragment.encode(MariaTypes.datetime, row.datetime0()), Fragment.lit(",\n`datetime3` = "), - Fragment.encode(LocalDateTime3.dbType, row.datetime3()), + Fragment.encode(LocalDateTime3.mariaType, row.datetime3()), Fragment.lit(",\n`datetime6` = "), - Fragment.encode(LocalDateTime6.dbType, row.datetime6()), + Fragment.encode(LocalDateTime6.mariaType, row.datetime6()), Fragment.lit(",\n`ts0` = "), Fragment.encode(MariaTypes.timestamp, row.ts0()), Fragment.lit(",\n`ts3` = "), - Fragment.encode(LocalDateTime3.dbType, row.ts3()), + Fragment.encode(LocalDateTime3.mariaType, row.ts3()), Fragment.lit(",\n`ts6` = "), - Fragment.encode(LocalDateTime6.dbType, row.ts6()), + Fragment.encode(LocalDateTime6.mariaType, row.ts6()), Fragment.lit("\nwhere `id` = "), - Fragment.encode(PrecisionTypesId.dbType, id), + Fragment.encode(PrecisionTypesId.mariaType, id), Fragment.lit("")) .update() .runUnchecked(c) @@ -386,53 +399,53 @@ public PrecisionTypesRow upsert(PrecisionTypesRow unsaved, Connection c) { + " `binary64`, `time0`, `time3`, `time6`, `datetime0`, `datetime3`," + " `datetime6`, `ts0`, `ts3`, `ts6`)\n" + "VALUES ("), - Fragment.encode(PrecisionTypesId.dbType, unsaved.id()), + Fragment.encode(PrecisionTypesId.mariaType, unsaved.id()), Fragment.lit(", "), - Fragment.encode(String10.dbType, unsaved.string10()), + Fragment.encode(String10.mariaType, unsaved.string10()), Fragment.lit(", "), - Fragment.encode(String20.dbType, unsaved.string20()), + Fragment.encode(String20.mariaType, unsaved.string20()), Fragment.lit(", "), - Fragment.encode(String50.dbType, unsaved.string50()), + Fragment.encode(String50.mariaType, unsaved.string50()), Fragment.lit(", "), - Fragment.encode(String100.dbType, unsaved.string100()), + Fragment.encode(String100.mariaType, unsaved.string100()), Fragment.lit(", "), - Fragment.encode(String255.dbType, unsaved.string255()), + Fragment.encode(String255.mariaType, unsaved.string255()), Fragment.lit(", "), - Fragment.encode(PaddedString10.dbType, unsaved.char10()), + Fragment.encode(PaddedString10.mariaType, unsaved.char10()), Fragment.lit(", "), - Fragment.encode(Decimal5_2.dbType, unsaved.decimal52()), + Fragment.encode(Decimal5_2.mariaType, unsaved.decimal52()), Fragment.lit(", "), - Fragment.encode(Decimal10_2.dbType, unsaved.decimal102()), + Fragment.encode(Decimal10_2.mariaType, unsaved.decimal102()), Fragment.lit(", "), - Fragment.encode(Decimal18_4.dbType, unsaved.decimal184()), + Fragment.encode(Decimal18_4.mariaType, unsaved.decimal184()), Fragment.lit(", "), - Fragment.encode(Decimal8_2.dbType, unsaved.numeric82()), + Fragment.encode(Decimal8_2.mariaType, unsaved.numeric82()), Fragment.lit(", "), - Fragment.encode(Decimal12_4.dbType, unsaved.numeric124()), + Fragment.encode(Decimal12_4.mariaType, unsaved.numeric124()), Fragment.lit(", "), - Fragment.encode(Binary16.dbType, unsaved.binary16()), + Fragment.encode(Binary16.mariaType, unsaved.binary16()), Fragment.lit(", "), - Fragment.encode(Binary32.dbType, unsaved.binary32()), + Fragment.encode(Binary32.mariaType, unsaved.binary32()), Fragment.lit(", "), - Fragment.encode(Binary64.dbType, unsaved.binary64()), + Fragment.encode(Binary64.mariaType, unsaved.binary64()), Fragment.lit(", "), Fragment.encode(MariaTypes.time, unsaved.time0()), Fragment.lit(", "), - Fragment.encode(LocalTime3.dbType, unsaved.time3()), + Fragment.encode(LocalTime3.mariaType, unsaved.time3()), Fragment.lit(", "), - Fragment.encode(LocalTime6.dbType, unsaved.time6()), + Fragment.encode(LocalTime6.mariaType, unsaved.time6()), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.datetime0()), Fragment.lit(", "), - Fragment.encode(LocalDateTime3.dbType, unsaved.datetime3()), + Fragment.encode(LocalDateTime3.mariaType, unsaved.datetime3()), Fragment.lit(", "), - Fragment.encode(LocalDateTime6.dbType, unsaved.datetime6()), + Fragment.encode(LocalDateTime6.mariaType, unsaved.datetime6()), Fragment.lit(", "), Fragment.encode(MariaTypes.timestamp, unsaved.ts0()), Fragment.lit(", "), - Fragment.encode(LocalDateTime3.dbType, unsaved.ts3()), + Fragment.encode(LocalDateTime3.mariaType, unsaved.ts3()), Fragment.lit(", "), - Fragment.encode(LocalDateTime6.dbType, unsaved.ts6()), + Fragment.encode(LocalDateTime6.mariaType, unsaved.ts6()), Fragment.lit( ")\n" + "ON DUPLICATE KEY UPDATE `string10` = VALUES(`string10`),\n" diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/precision_types/PrecisionTypesRow.java b/testers/mariadb/java/generated-and-checked-in/testdb/precision_types/PrecisionTypesRow.java index 16fd93c6e5..b9ded42eb9 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/precision_types/PrecisionTypesRow.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/precision_types/PrecisionTypesRow.java @@ -829,30 +829,30 @@ public PrecisionTypesRow withTs6(LocalDateTime6 ts6) { public static RowParser _rowParser = RowParsers.of( - PrecisionTypesId.dbType, - String10.dbType, - String20.dbType, - String50.dbType, - String100.dbType, - String255.dbType, - PaddedString10.dbType, - Decimal5_2.dbType, - Decimal10_2.dbType, - Decimal18_4.dbType, - Decimal8_2.dbType, - Decimal12_4.dbType, - Binary16.dbType, - Binary32.dbType, - Binary64.dbType, + PrecisionTypesId.mariaType, + String10.mariaType, + String20.mariaType, + String50.mariaType, + String100.mariaType, + String255.mariaType, + PaddedString10.mariaType, + Decimal5_2.mariaType, + Decimal10_2.mariaType, + Decimal18_4.mariaType, + Decimal8_2.mariaType, + Decimal12_4.mariaType, + Binary16.mariaType, + Binary32.mariaType, + Binary64.mariaType, MariaTypes.time, - LocalTime3.dbType, - LocalTime6.dbType, + LocalTime3.mariaType, + LocalTime6.mariaType, MariaTypes.datetime, - LocalDateTime3.dbType, - LocalDateTime6.dbType, + LocalDateTime3.mariaType, + LocalDateTime6.mariaType, MariaTypes.timestamp, - LocalDateTime3.dbType, - LocalDateTime6.dbType, + LocalDateTime3.mariaType, + LocalDateTime6.mariaType, PrecisionTypesRow::new, row -> new Object[] { diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullFields.java b/testers/mariadb/java/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullFields.java index e3ff023b8b..d707d90ed9 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullFields.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullFields.java @@ -83,7 +83,7 @@ public IdField id() { Optional.empty(), Optional.empty(), (row, value) -> row.withId(value), - PrecisionTypesNullId.dbType); + PrecisionTypesNullId.mariaType); } public OptField string10() { @@ -94,7 +94,7 @@ public OptField string10() { Optional.empty(), Optional.empty(), (row, value) -> row.withString10(value), - String10.dbType); + String10.mariaType); } public OptField string20() { @@ -105,7 +105,7 @@ public OptField string20() { Optional.empty(), Optional.empty(), (row, value) -> row.withString20(value), - String20.dbType); + String20.mariaType); } public OptField string50() { @@ -116,7 +116,7 @@ public OptField string50() { Optional.empty(), Optional.empty(), (row, value) -> row.withString50(value), - String50.dbType); + String50.mariaType); } public OptField string100() { @@ -127,7 +127,7 @@ public OptField string100() { Optional.empty(), Optional.empty(), (row, value) -> row.withString100(value), - String100.dbType); + String100.mariaType); } public OptField string255() { @@ -138,7 +138,7 @@ public OptField string255() { Optional.empty(), Optional.empty(), (row, value) -> row.withString255(value), - String255.dbType); + String255.mariaType); } public OptField char10() { @@ -149,7 +149,7 @@ public OptField char10() { Optional.empty(), Optional.empty(), (row, value) -> row.withChar10(value), - PaddedString10.dbType); + PaddedString10.mariaType); } public OptField decimal52() { @@ -160,7 +160,7 @@ public OptField decimal52() { Optional.empty(), Optional.empty(), (row, value) -> row.withDecimal52(value), - Decimal5_2.dbType); + Decimal5_2.mariaType); } public OptField decimal102() { @@ -171,7 +171,7 @@ public OptField decimal102() { Optional.empty(), Optional.empty(), (row, value) -> row.withDecimal102(value), - Decimal10_2.dbType); + Decimal10_2.mariaType); } public OptField decimal184() { @@ -182,7 +182,7 @@ public OptField decimal184() { Optional.empty(), Optional.empty(), (row, value) -> row.withDecimal184(value), - Decimal18_4.dbType); + Decimal18_4.mariaType); } public OptField numeric82() { @@ -193,7 +193,7 @@ public OptField numeric82() { Optional.empty(), Optional.empty(), (row, value) -> row.withNumeric82(value), - Decimal8_2.dbType); + Decimal8_2.mariaType); } public OptField numeric124() { @@ -204,7 +204,7 @@ public OptField numeric124() { Optional.empty(), Optional.empty(), (row, value) -> row.withNumeric124(value), - Decimal12_4.dbType); + Decimal12_4.mariaType); } public OptField binary16() { @@ -215,7 +215,7 @@ public OptField binary16() { Optional.empty(), Optional.empty(), (row, value) -> row.withBinary16(value), - Binary16.dbType); + Binary16.mariaType); } public OptField binary32() { @@ -226,7 +226,7 @@ public OptField binary32() { Optional.empty(), Optional.empty(), (row, value) -> row.withBinary32(value), - Binary32.dbType); + Binary32.mariaType); } public OptField binary64() { @@ -237,7 +237,7 @@ public OptField binary64() { Optional.empty(), Optional.empty(), (row, value) -> row.withBinary64(value), - Binary64.dbType); + Binary64.mariaType); } public OptField time0() { @@ -259,7 +259,7 @@ public OptField time3() { Optional.empty(), Optional.empty(), (row, value) -> row.withTime3(value), - LocalTime3.dbType); + LocalTime3.mariaType); } public OptField time6() { @@ -270,7 +270,7 @@ public OptField time6() { Optional.empty(), Optional.empty(), (row, value) -> row.withTime6(value), - LocalTime6.dbType); + LocalTime6.mariaType); } public OptField datetime0() { @@ -292,7 +292,7 @@ public OptField datetime3() { Optional.empty(), Optional.empty(), (row, value) -> row.withDatetime3(value), - LocalDateTime3.dbType); + LocalDateTime3.mariaType); } public OptField datetime6() { @@ -303,7 +303,7 @@ public OptField datetime6() { Optional.empty(), Optional.empty(), (row, value) -> row.withDatetime6(value), - LocalDateTime6.dbType); + LocalDateTime6.mariaType); } public OptField ts0() { @@ -325,7 +325,7 @@ public OptField ts3() { Optional.empty(), Optional.empty(), (row, value) -> row.withTs3(value), - LocalDateTime3.dbType); + LocalDateTime3.mariaType); } public OptField ts6() { @@ -336,7 +336,7 @@ public OptField ts6() { Optional.empty(), Optional.empty(), (row, value) -> row.withTs6(value), - LocalDateTime6.dbType); + LocalDateTime6.mariaType); } @Override diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullId.java b/testers/mariadb/java/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullId.java index 46f646d86d..e8a4a93988 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullId.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullId.java @@ -26,6 +26,6 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(PrecisionTypesNullId::value, PrecisionTypesNullId::new); - public static MariaType dbType = + public static MariaType mariaType = MariaTypes.int_.bimap(PrecisionTypesNullId::new, PrecisionTypesNullId::value); } diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullRepoImpl.java b/testers/mariadb/java/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullRepoImpl.java index b73ecf26e1..61d57a94fa 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullRepoImpl.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullRepoImpl.java @@ -50,7 +50,7 @@ public DeleteBuilder delete() { public Boolean deleteById(PrecisionTypesNullId id, Connection c) { return interpolate( Fragment.lit("delete from `precision_types_null` where `id` = "), - Fragment.encode(PrecisionTypesNullId.dbType, id), + Fragment.encode(PrecisionTypesNullId.mariaType, id), Fragment.lit("")) .update() .runUnchecked(c) @@ -61,7 +61,7 @@ public Boolean deleteById(PrecisionTypesNullId id, Connection c) { public Integer deleteByIds(PrecisionTypesNullId[] ids, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : ids) { - fragments.add(Fragment.encode(PrecisionTypesNullId.dbType, id)); + fragments.add(Fragment.encode(PrecisionTypesNullId.mariaType, id)); } ; return Fragment.interpolate( @@ -82,51 +82,51 @@ public PrecisionTypesNullRow insert(PrecisionTypesNullRow unsaved, Connection c) + " `binary64`, `time0`, `time3`, `time6`, `datetime0`, `datetime3`," + " `datetime6`, `ts0`, `ts3`, `ts6`)\n" + "values ("), - Fragment.encode(String10.dbType.opt(), unsaved.string10()), + Fragment.encode(String10.mariaType.opt(), unsaved.string10()), Fragment.lit(", "), - Fragment.encode(String20.dbType.opt(), unsaved.string20()), + Fragment.encode(String20.mariaType.opt(), unsaved.string20()), Fragment.lit(", "), - Fragment.encode(String50.dbType.opt(), unsaved.string50()), + Fragment.encode(String50.mariaType.opt(), unsaved.string50()), Fragment.lit(", "), - Fragment.encode(String100.dbType.opt(), unsaved.string100()), + Fragment.encode(String100.mariaType.opt(), unsaved.string100()), Fragment.lit(", "), - Fragment.encode(String255.dbType.opt(), unsaved.string255()), + Fragment.encode(String255.mariaType.opt(), unsaved.string255()), Fragment.lit(", "), - Fragment.encode(PaddedString10.dbType.opt(), unsaved.char10()), + Fragment.encode(PaddedString10.mariaType.opt(), unsaved.char10()), Fragment.lit(", "), - Fragment.encode(Decimal5_2.dbType.opt(), unsaved.decimal52()), + Fragment.encode(Decimal5_2.mariaType.opt(), unsaved.decimal52()), Fragment.lit(", "), - Fragment.encode(Decimal10_2.dbType.opt(), unsaved.decimal102()), + Fragment.encode(Decimal10_2.mariaType.opt(), unsaved.decimal102()), Fragment.lit(", "), - Fragment.encode(Decimal18_4.dbType.opt(), unsaved.decimal184()), + Fragment.encode(Decimal18_4.mariaType.opt(), unsaved.decimal184()), Fragment.lit(", "), - Fragment.encode(Decimal8_2.dbType.opt(), unsaved.numeric82()), + Fragment.encode(Decimal8_2.mariaType.opt(), unsaved.numeric82()), Fragment.lit(", "), - Fragment.encode(Decimal12_4.dbType.opt(), unsaved.numeric124()), + Fragment.encode(Decimal12_4.mariaType.opt(), unsaved.numeric124()), Fragment.lit(", "), - Fragment.encode(Binary16.dbType.opt(), unsaved.binary16()), + Fragment.encode(Binary16.mariaType.opt(), unsaved.binary16()), Fragment.lit(", "), - Fragment.encode(Binary32.dbType.opt(), unsaved.binary32()), + Fragment.encode(Binary32.mariaType.opt(), unsaved.binary32()), Fragment.lit(", "), - Fragment.encode(Binary64.dbType.opt(), unsaved.binary64()), + Fragment.encode(Binary64.mariaType.opt(), unsaved.binary64()), Fragment.lit(", "), Fragment.encode(MariaTypes.time.opt(), unsaved.time0()), Fragment.lit(", "), - Fragment.encode(LocalTime3.dbType.opt(), unsaved.time3()), + Fragment.encode(LocalTime3.mariaType.opt(), unsaved.time3()), Fragment.lit(", "), - Fragment.encode(LocalTime6.dbType.opt(), unsaved.time6()), + Fragment.encode(LocalTime6.mariaType.opt(), unsaved.time6()), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime.opt(), unsaved.datetime0()), Fragment.lit(", "), - Fragment.encode(LocalDateTime3.dbType.opt(), unsaved.datetime3()), + Fragment.encode(LocalDateTime3.mariaType.opt(), unsaved.datetime3()), Fragment.lit(", "), - Fragment.encode(LocalDateTime6.dbType.opt(), unsaved.datetime6()), + Fragment.encode(LocalDateTime6.mariaType.opt(), unsaved.datetime6()), Fragment.lit(", "), Fragment.encode(MariaTypes.timestamp.opt(), unsaved.ts0()), Fragment.lit(", "), - Fragment.encode(LocalDateTime3.dbType.opt(), unsaved.ts3()), + Fragment.encode(LocalDateTime3.mariaType.opt(), unsaved.ts3()), Fragment.lit(", "), - Fragment.encode(LocalDateTime6.dbType.opt(), unsaved.ts6()), + Fragment.encode(LocalDateTime6.mariaType.opt(), unsaved.ts6()), Fragment.lit( ")\n" + "RETURNING `id`, `string10`, `string20`, `string50`, `string100`," @@ -151,7 +151,7 @@ public PrecisionTypesNullRow insert(PrecisionTypesNullRowUnsaved unsaved, Connec value -> { columns.add(Fragment.lit("`string10`")); values.add( - interpolate(Fragment.encode(String10.dbType.opt(), value), Fragment.lit(""))); + interpolate(Fragment.encode(String10.mariaType.opt(), value), Fragment.lit(""))); }); ; unsaved @@ -161,7 +161,7 @@ public PrecisionTypesNullRow insert(PrecisionTypesNullRowUnsaved unsaved, Connec value -> { columns.add(Fragment.lit("`string20`")); values.add( - interpolate(Fragment.encode(String20.dbType.opt(), value), Fragment.lit(""))); + interpolate(Fragment.encode(String20.mariaType.opt(), value), Fragment.lit(""))); }); ; unsaved @@ -171,7 +171,7 @@ public PrecisionTypesNullRow insert(PrecisionTypesNullRowUnsaved unsaved, Connec value -> { columns.add(Fragment.lit("`string50`")); values.add( - interpolate(Fragment.encode(String50.dbType.opt(), value), Fragment.lit(""))); + interpolate(Fragment.encode(String50.mariaType.opt(), value), Fragment.lit(""))); }); ; unsaved @@ -181,7 +181,7 @@ public PrecisionTypesNullRow insert(PrecisionTypesNullRowUnsaved unsaved, Connec value -> { columns.add(Fragment.lit("`string100`")); values.add( - interpolate(Fragment.encode(String100.dbType.opt(), value), Fragment.lit(""))); + interpolate(Fragment.encode(String100.mariaType.opt(), value), Fragment.lit(""))); }); ; unsaved @@ -191,7 +191,7 @@ public PrecisionTypesNullRow insert(PrecisionTypesNullRowUnsaved unsaved, Connec value -> { columns.add(Fragment.lit("`string255`")); values.add( - interpolate(Fragment.encode(String255.dbType.opt(), value), Fragment.lit(""))); + interpolate(Fragment.encode(String255.mariaType.opt(), value), Fragment.lit(""))); }); ; unsaved @@ -202,7 +202,7 @@ public PrecisionTypesNullRow insert(PrecisionTypesNullRowUnsaved unsaved, Connec columns.add(Fragment.lit("`char10`")); values.add( interpolate( - Fragment.encode(PaddedString10.dbType.opt(), value), Fragment.lit(""))); + Fragment.encode(PaddedString10.mariaType.opt(), value), Fragment.lit(""))); }); ; unsaved @@ -212,7 +212,8 @@ public PrecisionTypesNullRow insert(PrecisionTypesNullRowUnsaved unsaved, Connec value -> { columns.add(Fragment.lit("`decimal5_2`")); values.add( - interpolate(Fragment.encode(Decimal5_2.dbType.opt(), value), Fragment.lit(""))); + interpolate( + Fragment.encode(Decimal5_2.mariaType.opt(), value), Fragment.lit(""))); }); ; unsaved @@ -222,7 +223,8 @@ public PrecisionTypesNullRow insert(PrecisionTypesNullRowUnsaved unsaved, Connec value -> { columns.add(Fragment.lit("`decimal10_2`")); values.add( - interpolate(Fragment.encode(Decimal10_2.dbType.opt(), value), Fragment.lit(""))); + interpolate( + Fragment.encode(Decimal10_2.mariaType.opt(), value), Fragment.lit(""))); }); ; unsaved @@ -232,7 +234,8 @@ public PrecisionTypesNullRow insert(PrecisionTypesNullRowUnsaved unsaved, Connec value -> { columns.add(Fragment.lit("`decimal18_4`")); values.add( - interpolate(Fragment.encode(Decimal18_4.dbType.opt(), value), Fragment.lit(""))); + interpolate( + Fragment.encode(Decimal18_4.mariaType.opt(), value), Fragment.lit(""))); }); ; unsaved @@ -242,7 +245,8 @@ public PrecisionTypesNullRow insert(PrecisionTypesNullRowUnsaved unsaved, Connec value -> { columns.add(Fragment.lit("`numeric8_2`")); values.add( - interpolate(Fragment.encode(Decimal8_2.dbType.opt(), value), Fragment.lit(""))); + interpolate( + Fragment.encode(Decimal8_2.mariaType.opt(), value), Fragment.lit(""))); }); ; unsaved @@ -252,7 +256,8 @@ public PrecisionTypesNullRow insert(PrecisionTypesNullRowUnsaved unsaved, Connec value -> { columns.add(Fragment.lit("`numeric12_4`")); values.add( - interpolate(Fragment.encode(Decimal12_4.dbType.opt(), value), Fragment.lit(""))); + interpolate( + Fragment.encode(Decimal12_4.mariaType.opt(), value), Fragment.lit(""))); }); ; unsaved @@ -262,7 +267,7 @@ public PrecisionTypesNullRow insert(PrecisionTypesNullRowUnsaved unsaved, Connec value -> { columns.add(Fragment.lit("`binary16`")); values.add( - interpolate(Fragment.encode(Binary16.dbType.opt(), value), Fragment.lit(""))); + interpolate(Fragment.encode(Binary16.mariaType.opt(), value), Fragment.lit(""))); }); ; unsaved @@ -272,7 +277,7 @@ public PrecisionTypesNullRow insert(PrecisionTypesNullRowUnsaved unsaved, Connec value -> { columns.add(Fragment.lit("`binary32`")); values.add( - interpolate(Fragment.encode(Binary32.dbType.opt(), value), Fragment.lit(""))); + interpolate(Fragment.encode(Binary32.mariaType.opt(), value), Fragment.lit(""))); }); ; unsaved @@ -282,7 +287,7 @@ public PrecisionTypesNullRow insert(PrecisionTypesNullRowUnsaved unsaved, Connec value -> { columns.add(Fragment.lit("`binary64`")); values.add( - interpolate(Fragment.encode(Binary64.dbType.opt(), value), Fragment.lit(""))); + interpolate(Fragment.encode(Binary64.mariaType.opt(), value), Fragment.lit(""))); }); ; unsaved @@ -302,7 +307,8 @@ public PrecisionTypesNullRow insert(PrecisionTypesNullRowUnsaved unsaved, Connec value -> { columns.add(Fragment.lit("`time3`")); values.add( - interpolate(Fragment.encode(LocalTime3.dbType.opt(), value), Fragment.lit(""))); + interpolate( + Fragment.encode(LocalTime3.mariaType.opt(), value), Fragment.lit(""))); }); ; unsaved @@ -312,7 +318,8 @@ public PrecisionTypesNullRow insert(PrecisionTypesNullRowUnsaved unsaved, Connec value -> { columns.add(Fragment.lit("`time6`")); values.add( - interpolate(Fragment.encode(LocalTime6.dbType.opt(), value), Fragment.lit(""))); + interpolate( + Fragment.encode(LocalTime6.mariaType.opt(), value), Fragment.lit(""))); }); ; unsaved @@ -333,7 +340,7 @@ public PrecisionTypesNullRow insert(PrecisionTypesNullRowUnsaved unsaved, Connec columns.add(Fragment.lit("`datetime3`")); values.add( interpolate( - Fragment.encode(LocalDateTime3.dbType.opt(), value), Fragment.lit(""))); + Fragment.encode(LocalDateTime3.mariaType.opt(), value), Fragment.lit(""))); }); ; unsaved @@ -344,7 +351,7 @@ public PrecisionTypesNullRow insert(PrecisionTypesNullRowUnsaved unsaved, Connec columns.add(Fragment.lit("`datetime6`")); values.add( interpolate( - Fragment.encode(LocalDateTime6.dbType.opt(), value), Fragment.lit(""))); + Fragment.encode(LocalDateTime6.mariaType.opt(), value), Fragment.lit(""))); }); ; unsaved @@ -366,7 +373,7 @@ public PrecisionTypesNullRow insert(PrecisionTypesNullRowUnsaved unsaved, Connec columns.add(Fragment.lit("`ts3`")); values.add( interpolate( - Fragment.encode(LocalDateTime3.dbType.opt(), value), Fragment.lit(""))); + Fragment.encode(LocalDateTime3.mariaType.opt(), value), Fragment.lit(""))); }); ; unsaved @@ -377,7 +384,7 @@ public PrecisionTypesNullRow insert(PrecisionTypesNullRowUnsaved unsaved, Connec columns.add(Fragment.lit("`ts6`")); values.add( interpolate( - Fragment.encode(LocalDateTime6.dbType.opt(), value), Fragment.lit(""))); + Fragment.encode(LocalDateTime6.mariaType.opt(), value), Fragment.lit(""))); }); ; Fragment q = @@ -438,7 +445,7 @@ public Optional selectById(PrecisionTypesNullId id, Conne + " `time6`, `datetime0`, `datetime3`, `datetime6`, `ts0`, `ts3`, `ts6`\n" + "from `precision_types_null`\n" + "where `id` = "), - Fragment.encode(PrecisionTypesNullId.dbType, id), + Fragment.encode(PrecisionTypesNullId.mariaType, id), Fragment.lit("")) .query(PrecisionTypesNullRow._rowParser.first()) .runUnchecked(c); @@ -448,7 +455,7 @@ public Optional selectById(PrecisionTypesNullId id, Conne public List selectByIds(PrecisionTypesNullId[] ids, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : ids) { - fragments.add(Fragment.encode(PrecisionTypesNullId.dbType, id)); + fragments.add(Fragment.encode(PrecisionTypesNullId.mariaType, id)); } ; return Fragment.interpolate( @@ -488,53 +495,53 @@ public Boolean update(PrecisionTypesNullRow row, Connection c) { ; return interpolate( Fragment.lit("update `precision_types_null`\nset `string10` = "), - Fragment.encode(String10.dbType.opt(), row.string10()), + Fragment.encode(String10.mariaType.opt(), row.string10()), Fragment.lit(",\n`string20` = "), - Fragment.encode(String20.dbType.opt(), row.string20()), + Fragment.encode(String20.mariaType.opt(), row.string20()), Fragment.lit(",\n`string50` = "), - Fragment.encode(String50.dbType.opt(), row.string50()), + Fragment.encode(String50.mariaType.opt(), row.string50()), Fragment.lit(",\n`string100` = "), - Fragment.encode(String100.dbType.opt(), row.string100()), + Fragment.encode(String100.mariaType.opt(), row.string100()), Fragment.lit(",\n`string255` = "), - Fragment.encode(String255.dbType.opt(), row.string255()), + Fragment.encode(String255.mariaType.opt(), row.string255()), Fragment.lit(",\n`char10` = "), - Fragment.encode(PaddedString10.dbType.opt(), row.char10()), + Fragment.encode(PaddedString10.mariaType.opt(), row.char10()), Fragment.lit(",\n`decimal5_2` = "), - Fragment.encode(Decimal5_2.dbType.opt(), row.decimal52()), + Fragment.encode(Decimal5_2.mariaType.opt(), row.decimal52()), Fragment.lit(",\n`decimal10_2` = "), - Fragment.encode(Decimal10_2.dbType.opt(), row.decimal102()), + Fragment.encode(Decimal10_2.mariaType.opt(), row.decimal102()), Fragment.lit(",\n`decimal18_4` = "), - Fragment.encode(Decimal18_4.dbType.opt(), row.decimal184()), + Fragment.encode(Decimal18_4.mariaType.opt(), row.decimal184()), Fragment.lit(",\n`numeric8_2` = "), - Fragment.encode(Decimal8_2.dbType.opt(), row.numeric82()), + Fragment.encode(Decimal8_2.mariaType.opt(), row.numeric82()), Fragment.lit(",\n`numeric12_4` = "), - Fragment.encode(Decimal12_4.dbType.opt(), row.numeric124()), + Fragment.encode(Decimal12_4.mariaType.opt(), row.numeric124()), Fragment.lit(",\n`binary16` = "), - Fragment.encode(Binary16.dbType.opt(), row.binary16()), + Fragment.encode(Binary16.mariaType.opt(), row.binary16()), Fragment.lit(",\n`binary32` = "), - Fragment.encode(Binary32.dbType.opt(), row.binary32()), + Fragment.encode(Binary32.mariaType.opt(), row.binary32()), Fragment.lit(",\n`binary64` = "), - Fragment.encode(Binary64.dbType.opt(), row.binary64()), + Fragment.encode(Binary64.mariaType.opt(), row.binary64()), Fragment.lit(",\n`time0` = "), Fragment.encode(MariaTypes.time.opt(), row.time0()), Fragment.lit(",\n`time3` = "), - Fragment.encode(LocalTime3.dbType.opt(), row.time3()), + Fragment.encode(LocalTime3.mariaType.opt(), row.time3()), Fragment.lit(",\n`time6` = "), - Fragment.encode(LocalTime6.dbType.opt(), row.time6()), + Fragment.encode(LocalTime6.mariaType.opt(), row.time6()), Fragment.lit(",\n`datetime0` = "), Fragment.encode(MariaTypes.datetime.opt(), row.datetime0()), Fragment.lit(",\n`datetime3` = "), - Fragment.encode(LocalDateTime3.dbType.opt(), row.datetime3()), + Fragment.encode(LocalDateTime3.mariaType.opt(), row.datetime3()), Fragment.lit(",\n`datetime6` = "), - Fragment.encode(LocalDateTime6.dbType.opt(), row.datetime6()), + Fragment.encode(LocalDateTime6.mariaType.opt(), row.datetime6()), Fragment.lit(",\n`ts0` = "), Fragment.encode(MariaTypes.timestamp.opt(), row.ts0()), Fragment.lit(",\n`ts3` = "), - Fragment.encode(LocalDateTime3.dbType.opt(), row.ts3()), + Fragment.encode(LocalDateTime3.mariaType.opt(), row.ts3()), Fragment.lit(",\n`ts6` = "), - Fragment.encode(LocalDateTime6.dbType.opt(), row.ts6()), + Fragment.encode(LocalDateTime6.mariaType.opt(), row.ts6()), Fragment.lit("\nwhere `id` = "), - Fragment.encode(PrecisionTypesNullId.dbType, id), + Fragment.encode(PrecisionTypesNullId.mariaType, id), Fragment.lit("")) .update() .runUnchecked(c) @@ -551,53 +558,53 @@ public PrecisionTypesNullRow upsert(PrecisionTypesNullRow unsaved, Connection c) + " `binary64`, `time0`, `time3`, `time6`, `datetime0`, `datetime3`," + " `datetime6`, `ts0`, `ts3`, `ts6`)\n" + "VALUES ("), - Fragment.encode(PrecisionTypesNullId.dbType, unsaved.id()), + Fragment.encode(PrecisionTypesNullId.mariaType, unsaved.id()), Fragment.lit(", "), - Fragment.encode(String10.dbType.opt(), unsaved.string10()), + Fragment.encode(String10.mariaType.opt(), unsaved.string10()), Fragment.lit(", "), - Fragment.encode(String20.dbType.opt(), unsaved.string20()), + Fragment.encode(String20.mariaType.opt(), unsaved.string20()), Fragment.lit(", "), - Fragment.encode(String50.dbType.opt(), unsaved.string50()), + Fragment.encode(String50.mariaType.opt(), unsaved.string50()), Fragment.lit(", "), - Fragment.encode(String100.dbType.opt(), unsaved.string100()), + Fragment.encode(String100.mariaType.opt(), unsaved.string100()), Fragment.lit(", "), - Fragment.encode(String255.dbType.opt(), unsaved.string255()), + Fragment.encode(String255.mariaType.opt(), unsaved.string255()), Fragment.lit(", "), - Fragment.encode(PaddedString10.dbType.opt(), unsaved.char10()), + Fragment.encode(PaddedString10.mariaType.opt(), unsaved.char10()), Fragment.lit(", "), - Fragment.encode(Decimal5_2.dbType.opt(), unsaved.decimal52()), + Fragment.encode(Decimal5_2.mariaType.opt(), unsaved.decimal52()), Fragment.lit(", "), - Fragment.encode(Decimal10_2.dbType.opt(), unsaved.decimal102()), + Fragment.encode(Decimal10_2.mariaType.opt(), unsaved.decimal102()), Fragment.lit(", "), - Fragment.encode(Decimal18_4.dbType.opt(), unsaved.decimal184()), + Fragment.encode(Decimal18_4.mariaType.opt(), unsaved.decimal184()), Fragment.lit(", "), - Fragment.encode(Decimal8_2.dbType.opt(), unsaved.numeric82()), + Fragment.encode(Decimal8_2.mariaType.opt(), unsaved.numeric82()), Fragment.lit(", "), - Fragment.encode(Decimal12_4.dbType.opt(), unsaved.numeric124()), + Fragment.encode(Decimal12_4.mariaType.opt(), unsaved.numeric124()), Fragment.lit(", "), - Fragment.encode(Binary16.dbType.opt(), unsaved.binary16()), + Fragment.encode(Binary16.mariaType.opt(), unsaved.binary16()), Fragment.lit(", "), - Fragment.encode(Binary32.dbType.opt(), unsaved.binary32()), + Fragment.encode(Binary32.mariaType.opt(), unsaved.binary32()), Fragment.lit(", "), - Fragment.encode(Binary64.dbType.opt(), unsaved.binary64()), + Fragment.encode(Binary64.mariaType.opt(), unsaved.binary64()), Fragment.lit(", "), Fragment.encode(MariaTypes.time.opt(), unsaved.time0()), Fragment.lit(", "), - Fragment.encode(LocalTime3.dbType.opt(), unsaved.time3()), + Fragment.encode(LocalTime3.mariaType.opt(), unsaved.time3()), Fragment.lit(", "), - Fragment.encode(LocalTime6.dbType.opt(), unsaved.time6()), + Fragment.encode(LocalTime6.mariaType.opt(), unsaved.time6()), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime.opt(), unsaved.datetime0()), Fragment.lit(", "), - Fragment.encode(LocalDateTime3.dbType.opt(), unsaved.datetime3()), + Fragment.encode(LocalDateTime3.mariaType.opt(), unsaved.datetime3()), Fragment.lit(", "), - Fragment.encode(LocalDateTime6.dbType.opt(), unsaved.datetime6()), + Fragment.encode(LocalDateTime6.mariaType.opt(), unsaved.datetime6()), Fragment.lit(", "), Fragment.encode(MariaTypes.timestamp.opt(), unsaved.ts0()), Fragment.lit(", "), - Fragment.encode(LocalDateTime3.dbType.opt(), unsaved.ts3()), + Fragment.encode(LocalDateTime3.mariaType.opt(), unsaved.ts3()), Fragment.lit(", "), - Fragment.encode(LocalDateTime6.dbType.opt(), unsaved.ts6()), + Fragment.encode(LocalDateTime6.mariaType.opt(), unsaved.ts6()), Fragment.lit( ")\n" + "ON DUPLICATE KEY UPDATE `string10` = VALUES(`string10`),\n" diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullRow.java b/testers/mariadb/java/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullRow.java index 715f070f74..e8e55def49 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullRow.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullRow.java @@ -830,30 +830,30 @@ public PrecisionTypesNullRow withTs6(Optional ts6) { public static RowParser _rowParser = RowParsers.of( - PrecisionTypesNullId.dbType, - String10.dbType.opt(), - String20.dbType.opt(), - String50.dbType.opt(), - String100.dbType.opt(), - String255.dbType.opt(), - PaddedString10.dbType.opt(), - Decimal5_2.dbType.opt(), - Decimal10_2.dbType.opt(), - Decimal18_4.dbType.opt(), - Decimal8_2.dbType.opt(), - Decimal12_4.dbType.opt(), - Binary16.dbType.opt(), - Binary32.dbType.opt(), - Binary64.dbType.opt(), + PrecisionTypesNullId.mariaType, + String10.mariaType.opt(), + String20.mariaType.opt(), + String50.mariaType.opt(), + String100.mariaType.opt(), + String255.mariaType.opt(), + PaddedString10.mariaType.opt(), + Decimal5_2.mariaType.opt(), + Decimal10_2.mariaType.opt(), + Decimal18_4.mariaType.opt(), + Decimal8_2.mariaType.opt(), + Decimal12_4.mariaType.opt(), + Binary16.mariaType.opt(), + Binary32.mariaType.opt(), + Binary64.mariaType.opt(), MariaTypes.time.opt(), - LocalTime3.dbType.opt(), - LocalTime6.dbType.opt(), + LocalTime3.mariaType.opt(), + LocalTime6.mariaType.opt(), MariaTypes.datetime.opt(), - LocalDateTime3.dbType.opt(), - LocalDateTime6.dbType.opt(), + LocalDateTime3.mariaType.opt(), + LocalDateTime6.mariaType.opt(), MariaTypes.timestamp.opt(), - LocalDateTime3.dbType.opt(), - LocalDateTime6.dbType.opt(), + LocalDateTime3.mariaType.opt(), + LocalDateTime6.mariaType.opt(), PrecisionTypesNullRow::new, row -> new Object[] { diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/price_tiers/PriceTiersFields.java b/testers/mariadb/java/generated-and-checked-in/testdb/price_tiers/PriceTiersFields.java index 0a4eabaa23..07e04148ad 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/price_tiers/PriceTiersFields.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/price_tiers/PriceTiersFields.java @@ -39,7 +39,7 @@ public IdField tierId() { Optional.empty(), Optional.empty(), (row, value) -> row.withTierId(value), - PriceTiersId.dbType); + PriceTiersId.mariaType); } public Field name() { diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/price_tiers/PriceTiersId.java b/testers/mariadb/java/generated-and-checked-in/testdb/price_tiers/PriceTiersId.java index 16b538cbc3..b1c6f13d70 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/price_tiers/PriceTiersId.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/price_tiers/PriceTiersId.java @@ -27,6 +27,6 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(PriceTiersId::value, PriceTiersId::new); - public static MariaType dbType = + public static MariaType mariaType = MariaTypes.tinyintUnsigned.bimap(PriceTiersId::new, PriceTiersId::value); } diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/price_tiers/PriceTiersRepoImpl.java b/testers/mariadb/java/generated-and-checked-in/testdb/price_tiers/PriceTiersRepoImpl.java index df42753622..f19261f75b 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/price_tiers/PriceTiersRepoImpl.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/price_tiers/PriceTiersRepoImpl.java @@ -31,7 +31,7 @@ public DeleteBuilder delete() { public Boolean deleteById(PriceTiersId tierId, Connection c) { return interpolate( Fragment.lit("delete from `price_tiers` where `tier_id` = "), - Fragment.encode(PriceTiersId.dbType, tierId), + Fragment.encode(PriceTiersId.mariaType, tierId), Fragment.lit("")) .update() .runUnchecked(c) @@ -42,7 +42,7 @@ public Boolean deleteById(PriceTiersId tierId, Connection c) { public Integer deleteByIds(PriceTiersId[] tierIds, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : tierIds) { - fragments.add(Fragment.encode(PriceTiersId.dbType, id)); + fragments.add(Fragment.encode(PriceTiersId.mariaType, id)); } ; return Fragment.interpolate( @@ -137,7 +137,7 @@ public Optional selectById(PriceTiersId tierId, Connection c) { "select `tier_id`, `name`, `min_quantity`, `discount_type`, `discount_value`\n" + "from `price_tiers`\n" + "where `tier_id` = "), - Fragment.encode(PriceTiersId.dbType, tierId), + Fragment.encode(PriceTiersId.mariaType, tierId), Fragment.lit("")) .query(PriceTiersRow._rowParser.first()) .runUnchecked(c); @@ -147,7 +147,7 @@ public Optional selectById(PriceTiersId tierId, Connection c) { public List selectByIds(PriceTiersId[] tierIds, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : tierIds) { - fragments.add(Fragment.encode(PriceTiersId.dbType, id)); + fragments.add(Fragment.encode(PriceTiersId.mariaType, id)); } ; return Fragment.interpolate( @@ -187,7 +187,7 @@ public Boolean update(PriceTiersRow row, Connection c) { Fragment.lit(",\n`discount_value` = "), Fragment.encode(MariaTypes.numeric, row.discountValue()), Fragment.lit("\nwhere `tier_id` = "), - Fragment.encode(PriceTiersId.dbType, tierId), + Fragment.encode(PriceTiersId.mariaType, tierId), Fragment.lit("")) .update() .runUnchecked(c) @@ -201,7 +201,7 @@ public PriceTiersRow upsert(PriceTiersRow unsaved, Connection c) { "INSERT INTO `price_tiers`(`tier_id`, `name`, `min_quantity`, `discount_type`," + " `discount_value`)\n" + "VALUES ("), - Fragment.encode(PriceTiersId.dbType, unsaved.tierId()), + Fragment.encode(PriceTiersId.mariaType, unsaved.tierId()), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.name()), Fragment.lit(", "), diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/price_tiers/PriceTiersRow.java b/testers/mariadb/java/generated-and-checked-in/testdb/price_tiers/PriceTiersRow.java index 955a284186..e06710d199 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/price_tiers/PriceTiersRow.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/price_tiers/PriceTiersRow.java @@ -59,7 +59,7 @@ public PriceTiersRow withDiscountValue(BigDecimal discountValue) { public static RowParser _rowParser = RowParsers.of( - PriceTiersId.dbType, + PriceTiersId.mariaType, MariaTypes.varchar, MariaTypes.intUnsigned, MariaTypes.text, diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/product_categories/ProductCategoriesFields.java b/testers/mariadb/java/generated-and-checked-in/testdb/product_categories/ProductCategoriesFields.java index 6bffece2eb..0e9ef131f9 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/product_categories/ProductCategoriesFields.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/product_categories/ProductCategoriesFields.java @@ -25,8 +25,10 @@ import testdb.products.ProductsFields; import testdb.products.ProductsId; import testdb.products.ProductsRow; +import testdb.userdefined.IsPrimary; -public class ProductCategoriesFields extends TupleExpr4 +public class ProductCategoriesFields + extends TupleExpr4 implements RelationStructure, FieldsBase { List _path; @@ -46,7 +48,7 @@ public IdField productId() { Optional.empty(), Optional.empty(), (row, value) -> row.withProductId(value), - ProductsId.dbType); + ProductsId.mariaType); } public IdField categoryId() { @@ -57,18 +59,18 @@ public IdField categoryId() { Optional.empty(), Optional.empty(), (row, value) -> row.withCategoryId(value), - CategoriesId.dbType); + CategoriesId.mariaType); } - public Field isPrimary() { - return new Field( + public Field isPrimary() { + return new Field( _path, "is_primary", ProductCategoriesRow::isPrimary, Optional.empty(), Optional.empty(), (row, value) -> row.withIsPrimary(value), - MariaTypes.bool); + IsPrimary.mariaType); } public Field sortOrder() { @@ -135,7 +137,7 @@ public SqlExpr _2() { } @Override - public SqlExpr _3() { + public SqlExpr _3() { return isPrimary(); } diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/product_categories/ProductCategoriesId.java b/testers/mariadb/java/generated-and-checked-in/testdb/product_categories/ProductCategoriesId.java index b3d413ce18..ce00465928 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/product_categories/ProductCategoriesId.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/product_categories/ProductCategoriesId.java @@ -29,8 +29,8 @@ public ProductCategoriesId withCategoryId(CategoriesId categoryId) { public static RowParser _rowParser = RowParsers.of( - ProductsId.dbType, - CategoriesId.dbType, + ProductsId.mariaType, + CategoriesId.mariaType, ProductCategoriesId::new, row -> new Object[] {row.productId(), row.categoryId()}); ; diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/product_categories/ProductCategoriesRepoImpl.java b/testers/mariadb/java/generated-and-checked-in/testdb/product_categories/ProductCategoriesRepoImpl.java index e05a1bd6fe..fceb89ceef 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/product_categories/ProductCategoriesRepoImpl.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/product_categories/ProductCategoriesRepoImpl.java @@ -22,6 +22,7 @@ import java.util.Optional; import testdb.categories.CategoriesId; import testdb.products.ProductsId; +import testdb.userdefined.IsPrimary; public class ProductCategoriesRepoImpl implements ProductCategoriesRepo { @Override @@ -34,9 +35,9 @@ public DeleteBuilder delete() { public Boolean deleteById(ProductCategoriesId compositeId, Connection c) { return interpolate( Fragment.lit("delete from `product_categories` where `product_id` = "), - Fragment.encode(ProductsId.dbType, compositeId.productId()), + Fragment.encode(ProductsId.mariaType, compositeId.productId()), Fragment.lit(" AND `category_id` = "), - Fragment.encode(CategoriesId.dbType, compositeId.categoryId()), + Fragment.encode(CategoriesId.mariaType, compositeId.categoryId()), Fragment.lit("")) .update() .runUnchecked(c) @@ -50,9 +51,9 @@ public Integer deleteByIds(ProductCategoriesId[] compositeIds, Connection c) { fragments.add( Fragment.interpolate( Fragment.lit("("), - Fragment.encode(ProductsId.dbType, id.productId()), + Fragment.encode(ProductsId.mariaType, id.productId()), Fragment.lit(", "), - Fragment.encode(CategoriesId.dbType, id.categoryId()), + Fragment.encode(CategoriesId.mariaType, id.categoryId()), Fragment.lit(")"))); } ; @@ -72,11 +73,11 @@ public ProductCategoriesRow insert(ProductCategoriesRow unsaved, Connection c) { "insert into `product_categories`(`product_id`, `category_id`, `is_primary`," + " `sort_order`)\n" + "values ("), - Fragment.encode(ProductsId.dbType, unsaved.productId()), + Fragment.encode(ProductsId.mariaType, unsaved.productId()), Fragment.lit(", "), - Fragment.encode(CategoriesId.dbType, unsaved.categoryId()), + Fragment.encode(CategoriesId.mariaType, unsaved.categoryId()), Fragment.lit(", "), - Fragment.encode(MariaTypes.bool, unsaved.isPrimary()), + Fragment.encode(IsPrimary.mariaType, unsaved.isPrimary()), Fragment.lit(", "), Fragment.encode(MariaTypes.smallint, unsaved.sortOrder()), Fragment.lit(")\nRETURNING `product_id`, `category_id`, `is_primary`, `sort_order`\n")) @@ -92,17 +93,19 @@ public ProductCategoriesRow insert(ProductCategoriesRowUnsaved unsaved, Connecti ; columns.add(Fragment.lit("`product_id`")); values.add( - interpolate(Fragment.encode(ProductsId.dbType, unsaved.productId()), Fragment.lit(""))); + interpolate(Fragment.encode(ProductsId.mariaType, unsaved.productId()), Fragment.lit(""))); columns.add(Fragment.lit("`category_id`")); values.add( - interpolate(Fragment.encode(CategoriesId.dbType, unsaved.categoryId()), Fragment.lit(""))); + interpolate( + Fragment.encode(CategoriesId.mariaType, unsaved.categoryId()), Fragment.lit(""))); unsaved .isPrimary() .visit( () -> {}, value -> { columns.add(Fragment.lit("`is_primary`")); - values.add(interpolate(Fragment.encode(MariaTypes.bool, value), Fragment.lit(""))); + values.add( + interpolate(Fragment.encode(IsPrimary.mariaType, value), Fragment.lit(""))); }); ; unsaved @@ -152,9 +155,9 @@ public Optional selectById(ProductCategoriesId compositeId "select `product_id`, `category_id`, `is_primary`, `sort_order`\n" + "from `product_categories`\n" + "where `product_id` = "), - Fragment.encode(ProductsId.dbType, compositeId.productId()), + Fragment.encode(ProductsId.mariaType, compositeId.productId()), Fragment.lit(" AND `category_id` = "), - Fragment.encode(CategoriesId.dbType, compositeId.categoryId()), + Fragment.encode(CategoriesId.mariaType, compositeId.categoryId()), Fragment.lit("")) .query(ProductCategoriesRow._rowParser.first()) .runUnchecked(c); @@ -167,9 +170,9 @@ public List selectByIds(ProductCategoriesId[] compositeIds fragments.add( Fragment.interpolate( Fragment.lit("("), - Fragment.encode(ProductsId.dbType, id.productId()), + Fragment.encode(ProductsId.mariaType, id.productId()), Fragment.lit(", "), - Fragment.encode(CategoriesId.dbType, id.categoryId()), + Fragment.encode(CategoriesId.mariaType, id.categoryId()), Fragment.lit(")"))); } ; @@ -207,13 +210,13 @@ public Boolean update(ProductCategoriesRow row, Connection c) { ; return interpolate( Fragment.lit("update `product_categories`\nset `is_primary` = "), - Fragment.encode(MariaTypes.bool, row.isPrimary()), + Fragment.encode(IsPrimary.mariaType, row.isPrimary()), Fragment.lit(",\n`sort_order` = "), Fragment.encode(MariaTypes.smallint, row.sortOrder()), Fragment.lit("\nwhere `product_id` = "), - Fragment.encode(ProductsId.dbType, compositeId.productId()), + Fragment.encode(ProductsId.mariaType, compositeId.productId()), Fragment.lit(" AND `category_id` = "), - Fragment.encode(CategoriesId.dbType, compositeId.categoryId()), + Fragment.encode(CategoriesId.mariaType, compositeId.categoryId()), Fragment.lit("")) .update() .runUnchecked(c) @@ -227,11 +230,11 @@ public ProductCategoriesRow upsert(ProductCategoriesRow unsaved, Connection c) { "INSERT INTO `product_categories`(`product_id`, `category_id`, `is_primary`," + " `sort_order`)\n" + "VALUES ("), - Fragment.encode(ProductsId.dbType, unsaved.productId()), + Fragment.encode(ProductsId.mariaType, unsaved.productId()), Fragment.lit(", "), - Fragment.encode(CategoriesId.dbType, unsaved.categoryId()), + Fragment.encode(CategoriesId.mariaType, unsaved.categoryId()), Fragment.lit(", "), - Fragment.encode(MariaTypes.bool, unsaved.isPrimary()), + Fragment.encode(IsPrimary.mariaType, unsaved.isPrimary()), Fragment.lit(", "), Fragment.encode(MariaTypes.smallint, unsaved.sortOrder()), Fragment.lit( diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/product_categories/ProductCategoriesRow.java b/testers/mariadb/java/generated-and-checked-in/testdb/product_categories/ProductCategoriesRow.java index 103ee07531..94e0a0590c 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/product_categories/ProductCategoriesRow.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/product_categories/ProductCategoriesRow.java @@ -13,6 +13,7 @@ import testdb.categories.CategoriesId; import testdb.customtypes.Defaulted; import testdb.products.ProductsId; +import testdb.userdefined.IsPrimary; /** Table: product_categories Composite primary key: product_id, category_id */ public record ProductCategoriesRow( @@ -21,10 +22,10 @@ public record ProductCategoriesRow( /** Points to {@link testdb.categories.CategoriesRow#categoryId()} */ @JsonProperty("category_id") CategoriesId categoryId, /** Default: 0 */ - @JsonProperty("is_primary") Boolean isPrimary, + @JsonProperty("is_primary") /* user-picked */ IsPrimary isPrimary, /** Default: 0 */ @JsonProperty("sort_order") Short sortOrder) - implements Tuple4 { + implements Tuple4 { /** Points to {@link testdb.products.ProductsRow#productId()} */ public ProductCategoriesRow withProductId(ProductsId productId) { return new ProductCategoriesRow(productId, categoryId, isPrimary, sortOrder); @@ -38,7 +39,7 @@ public ProductCategoriesRow withCategoryId(CategoriesId categoryId) { ; /** Default: 0 */ - public ProductCategoriesRow withIsPrimary(Boolean isPrimary) { + public ProductCategoriesRow withIsPrimary(/* user-picked */ IsPrimary isPrimary) { return new ProductCategoriesRow(productId, categoryId, isPrimary, sortOrder); } ; @@ -51,9 +52,9 @@ public ProductCategoriesRow withSortOrder(Short sortOrder) { public static RowParser _rowParser = RowParsers.of( - ProductsId.dbType, - CategoriesId.dbType, - MariaTypes.bool, + ProductsId.mariaType, + CategoriesId.mariaType, + IsPrimary.mariaType, MariaTypes.smallint, ProductCategoriesRow::new, row -> @@ -61,7 +62,7 @@ public ProductCategoriesRow withSortOrder(Short sortOrder) { ; public static ProductCategoriesRow apply( - ProductCategoriesId compositeId, Boolean isPrimary, Short sortOrder) { + ProductCategoriesId compositeId, /* user-picked */ IsPrimary isPrimary, Short sortOrder) { return new ProductCategoriesRow( compositeId.productId(), compositeId.categoryId(), isPrimary, sortOrder); } @@ -80,7 +81,7 @@ public CategoriesId _2() { ; @Override - public Boolean _3() { + public /* user-picked */ IsPrimary _3() { return isPrimary; } ; @@ -102,7 +103,7 @@ public ProductCategoriesId id() { ; public ProductCategoriesRowUnsaved toUnsavedRow( - Defaulted isPrimary, Defaulted sortOrder) { + Defaulted isPrimary, Defaulted sortOrder) { return new ProductCategoriesRowUnsaved(productId, categoryId, isPrimary, sortOrder); } ; diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/product_categories/ProductCategoriesRowUnsaved.java b/testers/mariadb/java/generated-and-checked-in/testdb/product_categories/ProductCategoriesRowUnsaved.java index c675bea322..3fa997d8e5 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/product_categories/ProductCategoriesRowUnsaved.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/product_categories/ProductCategoriesRowUnsaved.java @@ -10,6 +10,7 @@ import testdb.customtypes.Defaulted; import testdb.customtypes.Defaulted.UseDefault; import testdb.products.ProductsId; +import testdb.userdefined.IsPrimary; /** * This class corresponds to a row in table `product_categories` which has not been persisted yet @@ -20,7 +21,7 @@ public record ProductCategoriesRowUnsaved( /** Points to {@link testdb.categories.CategoriesRow#categoryId()} */ @JsonProperty("category_id") CategoriesId categoryId, /** Default: 0 */ - @JsonProperty("is_primary") Defaulted isPrimary, + @JsonProperty("is_primary") Defaulted isPrimary, /** Default: 0 */ @JsonProperty("sort_order") Defaulted sortOrder) { public ProductCategoriesRowUnsaved( @@ -45,7 +46,8 @@ public ProductCategoriesRowUnsaved withCategoryId(CategoriesId categoryId) { ; /** Default: 0 */ - public ProductCategoriesRowUnsaved withIsPrimary(Defaulted isPrimary) { + public ProductCategoriesRowUnsaved withIsPrimary( + Defaulted isPrimary) { return new ProductCategoriesRowUnsaved(productId, categoryId, isPrimary, sortOrder); } ; @@ -57,7 +59,7 @@ public ProductCategoriesRowUnsaved withSortOrder(Defaulted sortOrder) { ; public ProductCategoriesRow toRow( - java.util.function.Supplier isPrimaryDefault, + java.util.function.Supplier isPrimaryDefault, java.util.function.Supplier sortOrderDefault) { return new ProductCategoriesRow( productId, diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/product_images/ProductImagesFields.java b/testers/mariadb/java/generated-and-checked-in/testdb/product_images/ProductImagesFields.java index 9cc70dbbfd..def1c5d904 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/product_images/ProductImagesFields.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/product_images/ProductImagesFields.java @@ -23,9 +23,18 @@ import testdb.products.ProductsFields; import testdb.products.ProductsId; import testdb.products.ProductsRow; +import testdb.userdefined.IsPrimary; public class ProductImagesFields - extends TupleExpr8 + extends TupleExpr8< + ProductImagesId, + ProductsId, + String, + String, + String, + Uint1, /* user-picked */ + IsPrimary, + byte[]> implements RelationStructure, FieldsBase { List _path; @@ -45,7 +54,7 @@ public IdField imageId() { Optional.empty(), Optional.empty(), (row, value) -> row.withImageId(value), - ProductImagesId.dbType); + ProductImagesId.mariaType); } public Field productId() { @@ -56,7 +65,7 @@ public Field productId() { Optional.empty(), Optional.empty(), (row, value) -> row.withProductId(value), - ProductsId.dbType); + ProductsId.mariaType); } public Field imageUrl() { @@ -103,15 +112,15 @@ public Field sortOrder() { MariaTypes.tinyintUnsigned); } - public Field isPrimary() { - return new Field( + public Field isPrimary() { + return new Field( _path, "is_primary", ProductImagesRow::isPrimary, Optional.empty(), Optional.empty(), (row, value) -> row.withIsPrimary(value), - MariaTypes.bool); + IsPrimary.mariaType); } public OptField imageData() { @@ -189,7 +198,7 @@ public SqlExpr _6() { } @Override - public SqlExpr _7() { + public SqlExpr _7() { return isPrimary(); } diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/product_images/ProductImagesId.java b/testers/mariadb/java/generated-and-checked-in/testdb/product_images/ProductImagesId.java index 543076e682..775330040c 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/product_images/ProductImagesId.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/product_images/ProductImagesId.java @@ -27,6 +27,6 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(ProductImagesId::value, ProductImagesId::new); - public static MariaType dbType = + public static MariaType mariaType = MariaTypes.intUnsigned.bimap(ProductImagesId::new, ProductImagesId::value); } diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/product_images/ProductImagesRepoImpl.java b/testers/mariadb/java/generated-and-checked-in/testdb/product_images/ProductImagesRepoImpl.java index 1d7198ce61..b2ffa3c784 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/product_images/ProductImagesRepoImpl.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/product_images/ProductImagesRepoImpl.java @@ -21,6 +21,7 @@ import java.util.Map; import java.util.Optional; import testdb.products.ProductsId; +import testdb.userdefined.IsPrimary; public class ProductImagesRepoImpl implements ProductImagesRepo { @Override @@ -32,7 +33,7 @@ public DeleteBuilder delete() { public Boolean deleteById(ProductImagesId imageId, Connection c) { return interpolate( Fragment.lit("delete from `product_images` where `image_id` = "), - Fragment.encode(ProductImagesId.dbType, imageId), + Fragment.encode(ProductImagesId.mariaType, imageId), Fragment.lit("")) .update() .runUnchecked(c) @@ -43,7 +44,7 @@ public Boolean deleteById(ProductImagesId imageId, Connection c) { public Integer deleteByIds(ProductImagesId[] imageIds, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : imageIds) { - fragments.add(Fragment.encode(ProductImagesId.dbType, id)); + fragments.add(Fragment.encode(ProductImagesId.mariaType, id)); } ; return Fragment.interpolate( @@ -61,7 +62,7 @@ public ProductImagesRow insert(ProductImagesRow unsaved, Connection c) { "insert into `product_images`(`product_id`, `image_url`, `thumbnail_url`," + " `alt_text`, `sort_order`, `is_primary`, `image_data`)\n" + "values ("), - Fragment.encode(ProductsId.dbType, unsaved.productId()), + Fragment.encode(ProductsId.mariaType, unsaved.productId()), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.imageUrl()), Fragment.lit(", "), @@ -71,7 +72,7 @@ public ProductImagesRow insert(ProductImagesRow unsaved, Connection c) { Fragment.lit(", "), Fragment.encode(MariaTypes.tinyintUnsigned, unsaved.sortOrder()), Fragment.lit(", "), - Fragment.encode(MariaTypes.bool, unsaved.isPrimary()), + Fragment.encode(IsPrimary.mariaType, unsaved.isPrimary()), Fragment.lit(", "), Fragment.encode(MariaTypes.longblob.opt(), unsaved.imageData()), Fragment.lit( @@ -90,7 +91,7 @@ public ProductImagesRow insert(ProductImagesRowUnsaved unsaved, Connection c) { ; columns.add(Fragment.lit("`product_id`")); values.add( - interpolate(Fragment.encode(ProductsId.dbType, unsaved.productId()), Fragment.lit(""))); + interpolate(Fragment.encode(ProductsId.mariaType, unsaved.productId()), Fragment.lit(""))); columns.add(Fragment.lit("`image_url`")); values.add( interpolate(Fragment.encode(MariaTypes.varchar, unsaved.imageUrl()), Fragment.lit(""))); @@ -131,7 +132,8 @@ public ProductImagesRow insert(ProductImagesRowUnsaved unsaved, Connection c) { () -> {}, value -> { columns.add(Fragment.lit("`is_primary`")); - values.add(interpolate(Fragment.encode(MariaTypes.bool, value), Fragment.lit(""))); + values.add( + interpolate(Fragment.encode(IsPrimary.mariaType, value), Fragment.lit(""))); }); ; unsaved @@ -186,7 +188,7 @@ public Optional selectById(ProductImagesId imageId, Connection + " `sort_order`, `is_primary`, `image_data`\n" + "from `product_images`\n" + "where `image_id` = "), - Fragment.encode(ProductImagesId.dbType, imageId), + Fragment.encode(ProductImagesId.mariaType, imageId), Fragment.lit("")) .query(ProductImagesRow._rowParser.first()) .runUnchecked(c); @@ -196,7 +198,7 @@ public Optional selectById(ProductImagesId imageId, Connection public List selectByIds(ProductImagesId[] imageIds, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : imageIds) { - fragments.add(Fragment.encode(ProductImagesId.dbType, id)); + fragments.add(Fragment.encode(ProductImagesId.mariaType, id)); } ; return Fragment.interpolate( @@ -234,7 +236,7 @@ public Boolean update(ProductImagesRow row, Connection c) { ; return interpolate( Fragment.lit("update `product_images`\nset `product_id` = "), - Fragment.encode(ProductsId.dbType, row.productId()), + Fragment.encode(ProductsId.mariaType, row.productId()), Fragment.lit(",\n`image_url` = "), Fragment.encode(MariaTypes.varchar, row.imageUrl()), Fragment.lit(",\n`thumbnail_url` = "), @@ -244,11 +246,11 @@ public Boolean update(ProductImagesRow row, Connection c) { Fragment.lit(",\n`sort_order` = "), Fragment.encode(MariaTypes.tinyintUnsigned, row.sortOrder()), Fragment.lit(",\n`is_primary` = "), - Fragment.encode(MariaTypes.bool, row.isPrimary()), + Fragment.encode(IsPrimary.mariaType, row.isPrimary()), Fragment.lit(",\n`image_data` = "), Fragment.encode(MariaTypes.longblob.opt(), row.imageData()), Fragment.lit("\nwhere `image_id` = "), - Fragment.encode(ProductImagesId.dbType, imageId), + Fragment.encode(ProductImagesId.mariaType, imageId), Fragment.lit("")) .update() .runUnchecked(c) @@ -262,9 +264,9 @@ public ProductImagesRow upsert(ProductImagesRow unsaved, Connection c) { "INSERT INTO `product_images`(`image_id`, `product_id`, `image_url`," + " `thumbnail_url`, `alt_text`, `sort_order`, `is_primary`, `image_data`)\n" + "VALUES ("), - Fragment.encode(ProductImagesId.dbType, unsaved.imageId()), + Fragment.encode(ProductImagesId.mariaType, unsaved.imageId()), Fragment.lit(", "), - Fragment.encode(ProductsId.dbType, unsaved.productId()), + Fragment.encode(ProductsId.mariaType, unsaved.productId()), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.imageUrl()), Fragment.lit(", "), @@ -274,7 +276,7 @@ public ProductImagesRow upsert(ProductImagesRow unsaved, Connection c) { Fragment.lit(", "), Fragment.encode(MariaTypes.tinyintUnsigned, unsaved.sortOrder()), Fragment.lit(", "), - Fragment.encode(MariaTypes.bool, unsaved.isPrimary()), + Fragment.encode(IsPrimary.mariaType, unsaved.isPrimary()), Fragment.lit(", "), Fragment.encode(MariaTypes.longblob.opt(), unsaved.imageData()), Fragment.lit( diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/product_images/ProductImagesRow.java b/testers/mariadb/java/generated-and-checked-in/testdb/product_images/ProductImagesRow.java index 30679ca57c..05c1529779 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/product_images/ProductImagesRow.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/product_images/ProductImagesRow.java @@ -14,6 +14,7 @@ import java.util.Optional; import testdb.customtypes.Defaulted; import testdb.products.ProductsId; +import testdb.userdefined.IsPrimary; /** Table: product_images Primary key: image_id */ public record ProductImagesRow( @@ -30,7 +31,7 @@ public record ProductImagesRow( /** Default: 0 */ @JsonProperty("sort_order") Uint1 sortOrder, /** Default: 0 */ - @JsonProperty("is_primary") Boolean isPrimary, + @JsonProperty("is_primary") /* user-picked */ IsPrimary isPrimary, /** Optional embedded image data Default: NULL */ @JsonProperty("image_data") Optional imageData) implements Tuple8< @@ -39,8 +40,8 @@ public record ProductImagesRow( String, Optional, Optional, - Uint1, - Boolean, + Uint1, /* user-picked */ + IsPrimary, Optional> { /** AUTO_INCREMENT */ public ProductImagesRow withImageId(ProductImagesId imageId) { @@ -85,7 +86,7 @@ public ProductImagesRow withSortOrder(Uint1 sortOrder) { ; /** Default: 0 */ - public ProductImagesRow withIsPrimary(Boolean isPrimary) { + public ProductImagesRow withIsPrimary(/* user-picked */ IsPrimary isPrimary) { return new ProductImagesRow( imageId, productId, imageUrl, thumbnailUrl, altText, sortOrder, isPrimary, imageData); } @@ -100,13 +101,13 @@ public ProductImagesRow withImageData(Optional imageData) { public static RowParser _rowParser = RowParsers.of( - ProductImagesId.dbType, - ProductsId.dbType, + ProductImagesId.mariaType, + ProductsId.mariaType, MariaTypes.varchar, MariaTypes.varchar.opt(), MariaTypes.varchar.opt(), MariaTypes.tinyintUnsigned, - MariaTypes.bool, + IsPrimary.mariaType, MariaTypes.longblob.opt(), ProductImagesRow::new, row -> @@ -159,7 +160,7 @@ public Uint1 _6() { ; @Override - public Boolean _7() { + public /* user-picked */ IsPrimary _7() { return isPrimary; } ; @@ -179,7 +180,7 @@ public ProductImagesRowUnsaved toUnsavedRow( Defaulted> thumbnailUrl, Defaulted> altText, Defaulted sortOrder, - Defaulted isPrimary, + Defaulted isPrimary, Defaulted> imageData) { return new ProductImagesRowUnsaved( productId, imageUrl, thumbnailUrl, altText, sortOrder, isPrimary, imageData); diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/product_images/ProductImagesRowUnsaved.java b/testers/mariadb/java/generated-and-checked-in/testdb/product_images/ProductImagesRowUnsaved.java index bb3538b080..bba2cea959 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/product_images/ProductImagesRowUnsaved.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/product_images/ProductImagesRowUnsaved.java @@ -11,6 +11,7 @@ import testdb.customtypes.Defaulted; import testdb.customtypes.Defaulted.UseDefault; import testdb.products.ProductsId; +import testdb.userdefined.IsPrimary; /** This class corresponds to a row in table `product_images` which has not been persisted yet */ public record ProductImagesRowUnsaved( @@ -25,7 +26,7 @@ public record ProductImagesRowUnsaved( /** Default: 0 */ @JsonProperty("sort_order") Defaulted sortOrder, /** Default: 0 */ - @JsonProperty("is_primary") Defaulted isPrimary, + @JsonProperty("is_primary") Defaulted isPrimary, /** Default: NULL Optional embedded image data */ @JsonProperty("image_data") Defaulted> imageData) { public ProductImagesRowUnsaved( @@ -80,7 +81,7 @@ public ProductImagesRowUnsaved withSortOrder(Defaulted sortOrder) { ; /** Default: 0 */ - public ProductImagesRowUnsaved withIsPrimary(Defaulted isPrimary) { + public ProductImagesRowUnsaved withIsPrimary(Defaulted isPrimary) { return new ProductImagesRowUnsaved( productId, imageUrl, thumbnailUrl, altText, sortOrder, isPrimary, imageData); } @@ -97,7 +98,7 @@ public ProductImagesRow toRow( java.util.function.Supplier> thumbnailUrlDefault, java.util.function.Supplier> altTextDefault, java.util.function.Supplier sortOrderDefault, - java.util.function.Supplier isPrimaryDefault, + java.util.function.Supplier isPrimaryDefault, java.util.function.Supplier> imageDataDefault, java.util.function.Supplier imageIdDefault) { return new ProductImagesRow( diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/product_prices/ProductPricesFields.java b/testers/mariadb/java/generated-and-checked-in/testdb/product_prices/ProductPricesFields.java index 554ebf7510..66be2c0b85 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/product_prices/ProductPricesFields.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/product_prices/ProductPricesFields.java @@ -50,7 +50,7 @@ public IdField priceId() { Optional.empty(), Optional.empty(), (row, value) -> row.withPriceId(value), - ProductPricesId.dbType); + ProductPricesId.mariaType); } public Field productId() { @@ -61,7 +61,7 @@ public Field productId() { Optional.empty(), Optional.empty(), (row, value) -> row.withProductId(value), - ProductsId.dbType); + ProductsId.mariaType); } public OptField tierId() { @@ -72,7 +72,7 @@ public OptField tierId() { Optional.empty(), Optional.empty(), (row, value) -> row.withTierId(value), - PriceTiersId.dbType); + PriceTiersId.mariaType); } public Field price() { diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/product_prices/ProductPricesId.java b/testers/mariadb/java/generated-and-checked-in/testdb/product_prices/ProductPricesId.java index ecff94e190..05a216e907 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/product_prices/ProductPricesId.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/product_prices/ProductPricesId.java @@ -27,6 +27,6 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(ProductPricesId::value, ProductPricesId::new); - public static MariaType dbType = + public static MariaType mariaType = MariaTypes.bigintUnsigned.bimap(ProductPricesId::new, ProductPricesId::value); } diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/product_prices/ProductPricesRepoImpl.java b/testers/mariadb/java/generated-and-checked-in/testdb/product_prices/ProductPricesRepoImpl.java index 74f68cf872..b94bb80f09 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/product_prices/ProductPricesRepoImpl.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/product_prices/ProductPricesRepoImpl.java @@ -33,7 +33,7 @@ public DeleteBuilder delete() { public Boolean deleteById(ProductPricesId priceId, Connection c) { return interpolate( Fragment.lit("delete from `product_prices` where `price_id` = "), - Fragment.encode(ProductPricesId.dbType, priceId), + Fragment.encode(ProductPricesId.mariaType, priceId), Fragment.lit("")) .update() .runUnchecked(c) @@ -44,7 +44,7 @@ public Boolean deleteById(ProductPricesId priceId, Connection c) { public Integer deleteByIds(ProductPricesId[] priceIds, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : priceIds) { - fragments.add(Fragment.encode(ProductPricesId.dbType, id)); + fragments.add(Fragment.encode(ProductPricesId.mariaType, id)); } ; return Fragment.interpolate( @@ -62,9 +62,9 @@ public ProductPricesRow insert(ProductPricesRow unsaved, Connection c) { "insert into `product_prices`(`product_id`, `tier_id`, `price`, `currency_code`," + " `valid_from`, `valid_to`)\n" + "values ("), - Fragment.encode(ProductsId.dbType, unsaved.productId()), + Fragment.encode(ProductsId.mariaType, unsaved.productId()), Fragment.lit(", "), - Fragment.encode(PriceTiersId.dbType.opt(), unsaved.tierId()), + Fragment.encode(PriceTiersId.mariaType.opt(), unsaved.tierId()), Fragment.lit(", "), Fragment.encode(MariaTypes.numeric, unsaved.price()), Fragment.lit(", "), @@ -89,7 +89,7 @@ public ProductPricesRow insert(ProductPricesRowUnsaved unsaved, Connection c) { ; columns.add(Fragment.lit("`product_id`")); values.add( - interpolate(Fragment.encode(ProductsId.dbType, unsaved.productId()), Fragment.lit(""))); + interpolate(Fragment.encode(ProductsId.mariaType, unsaved.productId()), Fragment.lit(""))); columns.add(Fragment.lit("`price`")); values.add(interpolate(Fragment.encode(MariaTypes.numeric, unsaved.price()), Fragment.lit(""))); columns.add(Fragment.lit("`valid_from`")); @@ -102,7 +102,8 @@ public ProductPricesRow insert(ProductPricesRowUnsaved unsaved, Connection c) { value -> { columns.add(Fragment.lit("`tier_id`")); values.add( - interpolate(Fragment.encode(PriceTiersId.dbType.opt(), value), Fragment.lit(""))); + interpolate( + Fragment.encode(PriceTiersId.mariaType.opt(), value), Fragment.lit(""))); }); ; unsaved @@ -166,7 +167,7 @@ public Optional selectById(ProductPricesId priceId, Connection + " `valid_from`, `valid_to`\n" + "from `product_prices`\n" + "where `price_id` = "), - Fragment.encode(ProductPricesId.dbType, priceId), + Fragment.encode(ProductPricesId.mariaType, priceId), Fragment.lit("")) .query(ProductPricesRow._rowParser.first()) .runUnchecked(c); @@ -176,7 +177,7 @@ public Optional selectById(ProductPricesId priceId, Connection public List selectByIds(ProductPricesId[] priceIds, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : priceIds) { - fragments.add(Fragment.encode(ProductPricesId.dbType, id)); + fragments.add(Fragment.encode(ProductPricesId.mariaType, id)); } ; return Fragment.interpolate( @@ -213,9 +214,9 @@ public Boolean update(ProductPricesRow row, Connection c) { ; return interpolate( Fragment.lit("update `product_prices`\nset `product_id` = "), - Fragment.encode(ProductsId.dbType, row.productId()), + Fragment.encode(ProductsId.mariaType, row.productId()), Fragment.lit(",\n`tier_id` = "), - Fragment.encode(PriceTiersId.dbType.opt(), row.tierId()), + Fragment.encode(PriceTiersId.mariaType.opt(), row.tierId()), Fragment.lit(",\n`price` = "), Fragment.encode(MariaTypes.numeric, row.price()), Fragment.lit(",\n`currency_code` = "), @@ -225,7 +226,7 @@ public Boolean update(ProductPricesRow row, Connection c) { Fragment.lit(",\n`valid_to` = "), Fragment.encode(MariaTypes.date.opt(), row.validTo()), Fragment.lit("\nwhere `price_id` = "), - Fragment.encode(ProductPricesId.dbType, priceId), + Fragment.encode(ProductPricesId.mariaType, priceId), Fragment.lit("")) .update() .runUnchecked(c) @@ -239,11 +240,11 @@ public ProductPricesRow upsert(ProductPricesRow unsaved, Connection c) { "INSERT INTO `product_prices`(`price_id`, `product_id`, `tier_id`, `price`," + " `currency_code`, `valid_from`, `valid_to`)\n" + "VALUES ("), - Fragment.encode(ProductPricesId.dbType, unsaved.priceId()), + Fragment.encode(ProductPricesId.mariaType, unsaved.priceId()), Fragment.lit(", "), - Fragment.encode(ProductsId.dbType, unsaved.productId()), + Fragment.encode(ProductsId.mariaType, unsaved.productId()), Fragment.lit(", "), - Fragment.encode(PriceTiersId.dbType.opt(), unsaved.tierId()), + Fragment.encode(PriceTiersId.mariaType.opt(), unsaved.tierId()), Fragment.lit(", "), Fragment.encode(MariaTypes.numeric, unsaved.price()), Fragment.lit(", "), diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/product_prices/ProductPricesRow.java b/testers/mariadb/java/generated-and-checked-in/testdb/product_prices/ProductPricesRow.java index a6125cbced..804ea25823 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/product_prices/ProductPricesRow.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/product_prices/ProductPricesRow.java @@ -92,9 +92,9 @@ public ProductPricesRow withValidTo(Optional validTo) { public static RowParser _rowParser = RowParsers.of( - ProductPricesId.dbType, - ProductsId.dbType, - PriceTiersId.dbType.opt(), + ProductPricesId.mariaType, + ProductsId.mariaType, + PriceTiersId.mariaType.opt(), MariaTypes.numeric, MariaTypes.char_, MariaTypes.date, diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/product_search/ProductSearchSqlRow.java b/testers/mariadb/java/generated-and-checked-in/testdb/product_search/ProductSearchSqlRow.java index c3f21d355e..a4586695d4 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/product_search/ProductSearchSqlRow.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/product_search/ProductSearchSqlRow.java @@ -83,7 +83,7 @@ public ProductSearchSqlRow withBrandName(Optional brandName) { public static RowParser _rowParser = RowParsers.of( - ProductsId.dbType, + ProductsId.mariaType, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.varchar.opt(), diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/products/ProductsFields.java b/testers/mariadb/java/generated-and-checked-in/testdb/products/ProductsFields.java index ba248f3b90..778c7e1cee 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/products/ProductsFields.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/products/ProductsFields.java @@ -64,7 +64,7 @@ public IdField productId() { Optional.empty(), Optional.empty(), (row, value) -> row.withProductId(value), - ProductsId.dbType); + ProductsId.mariaType); } public Field sku() { @@ -86,7 +86,7 @@ public OptField brandId() { Optional.empty(), Optional.empty(), (row, value) -> row.withBrandId(value), - BrandsId.dbType); + BrandsId.mariaType); } public Field name() { @@ -196,7 +196,7 @@ public OptField tags() { Optional.empty(), Optional.empty(), (row, value) -> row.withTags(value), - BestsellerClearanceFSet.dbType); + BestsellerClearanceFSet.mariaType); } public OptField attributes() { diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/products/ProductsId.java b/testers/mariadb/java/generated-and-checked-in/testdb/products/ProductsId.java index 5425094474..ab17585ce9 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/products/ProductsId.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/products/ProductsId.java @@ -27,6 +27,6 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(ProductsId::value, ProductsId::new); - public static MariaType dbType = + public static MariaType mariaType = MariaTypes.bigintUnsigned.bimap(ProductsId::new, ProductsId::value); } diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/products/ProductsRepoImpl.java b/testers/mariadb/java/generated-and-checked-in/testdb/products/ProductsRepoImpl.java index 9cec0890b8..0f469f5cd5 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/products/ProductsRepoImpl.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/products/ProductsRepoImpl.java @@ -33,7 +33,7 @@ public DeleteBuilder delete() { public Boolean deleteById(ProductsId productId, Connection c) { return interpolate( Fragment.lit("delete from `products` where `product_id` = "), - Fragment.encode(ProductsId.dbType, productId), + Fragment.encode(ProductsId.mariaType, productId), Fragment.lit("")) .update() .runUnchecked(c) @@ -44,7 +44,7 @@ public Boolean deleteById(ProductsId productId, Connection c) { public Integer deleteByIds(ProductsId[] productIds, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : productIds) { - fragments.add(Fragment.encode(ProductsId.dbType, id)); + fragments.add(Fragment.encode(ProductsId.mariaType, id)); } ; return Fragment.interpolate( @@ -66,7 +66,7 @@ public ProductsRow insert(ProductsRow unsaved, Connection c) { + "values ("), Fragment.encode(MariaTypes.varchar, unsaved.sku()), Fragment.lit(", "), - Fragment.encode(BrandsId.dbType.opt(), unsaved.brandId()), + Fragment.encode(BrandsId.mariaType.opt(), unsaved.brandId()), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.name()), Fragment.lit(", "), @@ -86,7 +86,7 @@ public ProductsRow insert(ProductsRow unsaved, Connection c) { Fragment.lit(", "), Fragment.encode(MariaTypes.text, unsaved.taxClass()), Fragment.lit(", "), - Fragment.encode(BestsellerClearanceFSet.dbType.opt(), unsaved.tags()), + Fragment.encode(BestsellerClearanceFSet.mariaType.opt(), unsaved.tags()), Fragment.lit(", "), Fragment.encode(MariaTypes.json.opt(), unsaved.attributes()), Fragment.lit(", "), @@ -127,7 +127,7 @@ public ProductsRow insert(ProductsRowUnsaved unsaved, Connection c) { value -> { columns.add(Fragment.lit("`brand_id`")); values.add( - interpolate(Fragment.encode(BrandsId.dbType.opt(), value), Fragment.lit(""))); + interpolate(Fragment.encode(BrandsId.mariaType.opt(), value), Fragment.lit(""))); }); ; unsaved @@ -206,7 +206,7 @@ public ProductsRow insert(ProductsRowUnsaved unsaved, Connection c) { columns.add(Fragment.lit("`tags`")); values.add( interpolate( - Fragment.encode(BestsellerClearanceFSet.dbType.opt(), value), + Fragment.encode(BestsellerClearanceFSet.mariaType.opt(), value), Fragment.lit(""))); }); ; @@ -305,7 +305,7 @@ public Optional selectById(ProductsId productId, Connection c) { + " `seo_metadata`, `created_at`, `updated_at`, `published_at`\n" + "from `products`\n" + "where `product_id` = "), - Fragment.encode(ProductsId.dbType, productId), + Fragment.encode(ProductsId.mariaType, productId), Fragment.lit("")) .query(ProductsRow._rowParser.first()) .runUnchecked(c); @@ -315,7 +315,7 @@ public Optional selectById(ProductsId productId, Connection c) { public List selectByIds(ProductsId[] productIds, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : productIds) { - fragments.add(Fragment.encode(ProductsId.dbType, id)); + fragments.add(Fragment.encode(ProductsId.mariaType, id)); } ; return Fragment.interpolate( @@ -368,7 +368,7 @@ public Boolean update(ProductsRow row, Connection c) { Fragment.lit("update `products`\nset `sku` = "), Fragment.encode(MariaTypes.varchar, row.sku()), Fragment.lit(",\n`brand_id` = "), - Fragment.encode(BrandsId.dbType.opt(), row.brandId()), + Fragment.encode(BrandsId.mariaType.opt(), row.brandId()), Fragment.lit(",\n`name` = "), Fragment.encode(MariaTypes.varchar, row.name()), Fragment.lit(",\n`short_description` = "), @@ -388,7 +388,7 @@ public Boolean update(ProductsRow row, Connection c) { Fragment.lit(",\n`tax_class` = "), Fragment.encode(MariaTypes.text, row.taxClass()), Fragment.lit(",\n`tags` = "), - Fragment.encode(BestsellerClearanceFSet.dbType.opt(), row.tags()), + Fragment.encode(BestsellerClearanceFSet.mariaType.opt(), row.tags()), Fragment.lit(",\n`attributes` = "), Fragment.encode(MariaTypes.json.opt(), row.attributes()), Fragment.lit(",\n`seo_metadata` = "), @@ -400,7 +400,7 @@ public Boolean update(ProductsRow row, Connection c) { Fragment.lit(",\n`published_at` = "), Fragment.encode(MariaTypes.datetime.opt(), row.publishedAt()), Fragment.lit("\nwhere `product_id` = "), - Fragment.encode(ProductsId.dbType, productId), + Fragment.encode(ProductsId.mariaType, productId), Fragment.lit("")) .update() .runUnchecked(c) @@ -416,11 +416,11 @@ public ProductsRow upsert(ProductsRow unsaved, Connection c) { + " `weight_kg`, `dimensions_json`, `status`, `tax_class`, `tags`," + " `attributes`, `seo_metadata`, `created_at`, `updated_at`, `published_at`)\n" + "VALUES ("), - Fragment.encode(ProductsId.dbType, unsaved.productId()), + Fragment.encode(ProductsId.mariaType, unsaved.productId()), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.sku()), Fragment.lit(", "), - Fragment.encode(BrandsId.dbType.opt(), unsaved.brandId()), + Fragment.encode(BrandsId.mariaType.opt(), unsaved.brandId()), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.name()), Fragment.lit(", "), @@ -440,7 +440,7 @@ public ProductsRow upsert(ProductsRow unsaved, Connection c) { Fragment.lit(", "), Fragment.encode(MariaTypes.text, unsaved.taxClass()), Fragment.lit(", "), - Fragment.encode(BestsellerClearanceFSet.dbType.opt(), unsaved.tags()), + Fragment.encode(BestsellerClearanceFSet.mariaType.opt(), unsaved.tags()), Fragment.lit(", "), Fragment.encode(MariaTypes.json.opt(), unsaved.attributes()), Fragment.lit(", "), diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/products/ProductsRow.java b/testers/mariadb/java/generated-and-checked-in/testdb/products/ProductsRow.java index dd897b4108..8c8daddd49 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/products/ProductsRow.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/products/ProductsRow.java @@ -509,9 +509,9 @@ public ProductsRow withPublishedAt(Optional publishedAt) { public static RowParser _rowParser = RowParsers.of( - ProductsId.dbType, + ProductsId.mariaType, MariaTypes.varchar, - BrandsId.dbType.opt(), + BrandsId.mariaType.opt(), MariaTypes.varchar, MariaTypes.varchar.opt(), MariaTypes.longtext.opt(), @@ -521,7 +521,7 @@ public ProductsRow withPublishedAt(Optional publishedAt) { MariaTypes.json.opt(), MariaTypes.text, MariaTypes.text, - BestsellerClearanceFSet.dbType.opt(), + BestsellerClearanceFSet.mariaType.opt(), MariaTypes.json.opt(), MariaTypes.json.opt(), MariaTypes.datetime, diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/promotions/PromotionsFields.java b/testers/mariadb/java/generated-and-checked-in/testdb/promotions/PromotionsFields.java index 2bdfe4987b..3d27456182 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/promotions/PromotionsFields.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/promotions/PromotionsFields.java @@ -24,6 +24,7 @@ import java.util.List; import java.util.Optional; import testdb.AllBrandsCategoriesCSet; +import testdb.userdefined.IsActive; public class PromotionsFields extends TupleExpr16< @@ -40,8 +41,8 @@ public class PromotionsFields AllBrandsCategoriesCSet, Json, LocalDateTime, - LocalDateTime, - Boolean, + LocalDateTime, /* user-picked */ + IsActive, LocalDateTime> implements RelationStructure, FieldsBase { List _path; @@ -61,7 +62,7 @@ public IdField promotionId() { Optional.empty(), Optional.empty(), (row, value) -> row.withPromotionId(value), - PromotionsId.dbType); + PromotionsId.mariaType); } public Field code() { @@ -171,7 +172,7 @@ public OptField applicableTo() { Optional.empty(), Optional.empty(), (row, value) -> row.withApplicableTo(value), - AllBrandsCategoriesCSet.dbType); + AllBrandsCategoriesCSet.mariaType); } public OptField rulesJson() { @@ -207,15 +208,15 @@ public Field validTo() { MariaTypes.datetime); } - public Field isActive() { - return new Field( + public Field isActive() { + return new Field( _path, "is_active", PromotionsRow::isActive, Optional.empty(), Optional.empty(), (row, value) -> row.withIsActive(value), - MariaTypes.bool); + IsActive.mariaType); } public Field createdAt() { @@ -336,7 +337,7 @@ public SqlExpr _14() { } @Override - public SqlExpr _15() { + public SqlExpr _15() { return isActive(); } diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/promotions/PromotionsId.java b/testers/mariadb/java/generated-and-checked-in/testdb/promotions/PromotionsId.java index ccbb9f9785..407375ee67 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/promotions/PromotionsId.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/promotions/PromotionsId.java @@ -27,6 +27,6 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(PromotionsId::value, PromotionsId::new); - public static MariaType dbType = + public static MariaType mariaType = MariaTypes.intUnsigned.bimap(PromotionsId::new, PromotionsId::value); } diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/promotions/PromotionsRepoImpl.java b/testers/mariadb/java/generated-and-checked-in/testdb/promotions/PromotionsRepoImpl.java index 351a73d0c0..17ea77b0ee 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/promotions/PromotionsRepoImpl.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/promotions/PromotionsRepoImpl.java @@ -21,6 +21,7 @@ import java.util.Map; import java.util.Optional; import testdb.AllBrandsCategoriesCSet; +import testdb.userdefined.IsActive; public class PromotionsRepoImpl implements PromotionsRepo { @Override @@ -32,7 +33,7 @@ public DeleteBuilder delete() { public Boolean deleteById(PromotionsId promotionId, Connection c) { return interpolate( Fragment.lit("delete from `promotions` where `promotion_id` = "), - Fragment.encode(PromotionsId.dbType, promotionId), + Fragment.encode(PromotionsId.mariaType, promotionId), Fragment.lit("")) .update() .runUnchecked(c) @@ -43,7 +44,7 @@ public Boolean deleteById(PromotionsId promotionId, Connection c) { public Integer deleteByIds(PromotionsId[] promotionIds, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : promotionIds) { - fragments.add(Fragment.encode(PromotionsId.dbType, id)); + fragments.add(Fragment.encode(PromotionsId.mariaType, id)); } ; return Fragment.interpolate( @@ -81,7 +82,7 @@ public PromotionsRow insert(PromotionsRow unsaved, Connection c) { Fragment.lit(", "), Fragment.encode(MariaTypes.tinyintUnsigned.opt(), unsaved.maxUsesPerCustomer()), Fragment.lit(", "), - Fragment.encode(AllBrandsCategoriesCSet.dbType.opt(), unsaved.applicableTo()), + Fragment.encode(AllBrandsCategoriesCSet.mariaType.opt(), unsaved.applicableTo()), Fragment.lit(", "), Fragment.encode(MariaTypes.json.opt(), unsaved.rulesJson()), Fragment.lit(", "), @@ -89,7 +90,7 @@ public PromotionsRow insert(PromotionsRow unsaved, Connection c) { Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.validTo()), Fragment.lit(", "), - Fragment.encode(MariaTypes.bool, unsaved.isActive()), + Fragment.encode(IsActive.mariaType, unsaved.isActive()), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.createdAt()), Fragment.lit( @@ -185,7 +186,7 @@ public PromotionsRow insert(PromotionsRowUnsaved unsaved, Connection c) { columns.add(Fragment.lit("`applicable_to`")); values.add( interpolate( - Fragment.encode(AllBrandsCategoriesCSet.dbType.opt(), value), + Fragment.encode(AllBrandsCategoriesCSet.mariaType.opt(), value), Fragment.lit(""))); }); ; @@ -205,7 +206,7 @@ public PromotionsRow insert(PromotionsRowUnsaved unsaved, Connection c) { () -> {}, value -> { columns.add(Fragment.lit("`is_active`")); - values.add(interpolate(Fragment.encode(MariaTypes.bool, value), Fragment.lit(""))); + values.add(interpolate(Fragment.encode(IsActive.mariaType, value), Fragment.lit(""))); }); ; unsaved @@ -263,7 +264,7 @@ public Optional selectById(PromotionsId promotionId, Connection c + " `valid_to`, `is_active`, `created_at`\n" + "from `promotions`\n" + "where `promotion_id` = "), - Fragment.encode(PromotionsId.dbType, promotionId), + Fragment.encode(PromotionsId.mariaType, promotionId), Fragment.lit("")) .query(PromotionsRow._rowParser.first()) .runUnchecked(c); @@ -273,7 +274,7 @@ public Optional selectById(PromotionsId promotionId, Connection c public List selectByIds(PromotionsId[] promotionIds, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : promotionIds) { - fragments.add(Fragment.encode(PromotionsId.dbType, id)); + fragments.add(Fragment.encode(PromotionsId.mariaType, id)); } ; return Fragment.interpolate( @@ -343,7 +344,7 @@ public Boolean update(PromotionsRow row, Connection c) { Fragment.lit(",\n`max_uses_per_customer` = "), Fragment.encode(MariaTypes.tinyintUnsigned.opt(), row.maxUsesPerCustomer()), Fragment.lit(",\n`applicable_to` = "), - Fragment.encode(AllBrandsCategoriesCSet.dbType.opt(), row.applicableTo()), + Fragment.encode(AllBrandsCategoriesCSet.mariaType.opt(), row.applicableTo()), Fragment.lit(",\n`rules_json` = "), Fragment.encode(MariaTypes.json.opt(), row.rulesJson()), Fragment.lit(",\n`valid_from` = "), @@ -351,11 +352,11 @@ public Boolean update(PromotionsRow row, Connection c) { Fragment.lit(",\n`valid_to` = "), Fragment.encode(MariaTypes.datetime, row.validTo()), Fragment.lit(",\n`is_active` = "), - Fragment.encode(MariaTypes.bool, row.isActive()), + Fragment.encode(IsActive.mariaType, row.isActive()), Fragment.lit(",\n`created_at` = "), Fragment.encode(MariaTypes.datetime, row.createdAt()), Fragment.lit("\nwhere `promotion_id` = "), - Fragment.encode(PromotionsId.dbType, promotionId), + Fragment.encode(PromotionsId.mariaType, promotionId), Fragment.lit("")) .update() .runUnchecked(c) @@ -371,7 +372,7 @@ public PromotionsRow upsert(PromotionsRow unsaved, Connection c) { + " `uses_count`, `max_uses_per_customer`, `applicable_to`, `rules_json`," + " `valid_from`, `valid_to`, `is_active`, `created_at`)\n" + "VALUES ("), - Fragment.encode(PromotionsId.dbType, unsaved.promotionId()), + Fragment.encode(PromotionsId.mariaType, unsaved.promotionId()), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.code()), Fragment.lit(", "), @@ -391,7 +392,7 @@ public PromotionsRow upsert(PromotionsRow unsaved, Connection c) { Fragment.lit(", "), Fragment.encode(MariaTypes.tinyintUnsigned.opt(), unsaved.maxUsesPerCustomer()), Fragment.lit(", "), - Fragment.encode(AllBrandsCategoriesCSet.dbType.opt(), unsaved.applicableTo()), + Fragment.encode(AllBrandsCategoriesCSet.mariaType.opt(), unsaved.applicableTo()), Fragment.lit(", "), Fragment.encode(MariaTypes.json.opt(), unsaved.rulesJson()), Fragment.lit(", "), @@ -399,7 +400,7 @@ public PromotionsRow upsert(PromotionsRow unsaved, Connection c) { Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.validTo()), Fragment.lit(", "), - Fragment.encode(MariaTypes.bool, unsaved.isActive()), + Fragment.encode(IsActive.mariaType, unsaved.isActive()), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.createdAt()), Fragment.lit( diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/promotions/PromotionsRow.java b/testers/mariadb/java/generated-and-checked-in/testdb/promotions/PromotionsRow.java index 0d998ab24f..bc0e64869c 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/promotions/PromotionsRow.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/promotions/PromotionsRow.java @@ -18,6 +18,7 @@ import java.util.Optional; import testdb.AllBrandsCategoriesCSet; import testdb.customtypes.Defaulted; +import testdb.userdefined.IsActive; /** Table: promotions Primary key: promotion_id */ public record PromotionsRow( @@ -50,7 +51,7 @@ public record PromotionsRow( /** */ @JsonProperty("valid_to") LocalDateTime validTo, /** Default: 1 */ - @JsonProperty("is_active") Boolean isActive, + @JsonProperty("is_active") /* user-picked */ IsActive isActive, /** Default: current_timestamp() */ @JsonProperty("created_at") LocalDateTime createdAt) implements Tuple16< @@ -67,8 +68,8 @@ public record PromotionsRow( Optional, Optional, LocalDateTime, - LocalDateTime, - Boolean, + LocalDateTime, /* user-picked */ + IsActive, LocalDateTime> { /** AUTO_INCREMENT */ public PromotionsRow withPromotionId(PromotionsId promotionId) { @@ -379,7 +380,7 @@ public PromotionsRow withValidTo(LocalDateTime validTo) { ; /** Default: 1 */ - public PromotionsRow withIsActive(Boolean isActive) { + public PromotionsRow withIsActive(/* user-picked */ IsActive isActive) { return new PromotionsRow( promotionId, code, @@ -424,7 +425,7 @@ public PromotionsRow withCreatedAt(LocalDateTime createdAt) { public static RowParser _rowParser = RowParsers.of( - PromotionsId.dbType, + PromotionsId.mariaType, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.text.opt(), @@ -434,11 +435,11 @@ public PromotionsRow withCreatedAt(LocalDateTime createdAt) { MariaTypes.intUnsigned.opt(), MariaTypes.intUnsigned, MariaTypes.tinyintUnsigned.opt(), - AllBrandsCategoriesCSet.dbType.opt(), + AllBrandsCategoriesCSet.mariaType.opt(), MariaTypes.json.opt(), MariaTypes.datetime, MariaTypes.datetime, - MariaTypes.bool, + IsActive.mariaType, MariaTypes.datetime, PromotionsRow::new, row -> @@ -499,7 +500,7 @@ public LocalDateTime _14() { ; @Override - public Boolean _15() { + public /* user-picked */ IsActive _15() { return isActive; } ; @@ -571,7 +572,7 @@ public PromotionsRowUnsaved toUnsavedRow( Defaulted> maxUsesPerCustomer, Defaulted> applicableTo, Defaulted> rulesJson, - Defaulted isActive, + Defaulted isActive, Defaulted createdAt) { return new PromotionsRowUnsaved( code, diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/promotions/PromotionsRowUnsaved.java b/testers/mariadb/java/generated-and-checked-in/testdb/promotions/PromotionsRowUnsaved.java index 50f10c4565..535660aa3d 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/promotions/PromotionsRowUnsaved.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/promotions/PromotionsRowUnsaved.java @@ -15,6 +15,7 @@ import testdb.AllBrandsCategoriesCSet; import testdb.customtypes.Defaulted; import testdb.customtypes.Defaulted.UseDefault; +import testdb.userdefined.IsActive; /** This class corresponds to a row in table `promotions` which has not been persisted yet */ public record PromotionsRowUnsaved( @@ -45,7 +46,7 @@ public record PromotionsRowUnsaved( /** Default: NULL Complex eligibility rules */ @JsonProperty("rules_json") Defaulted> rulesJson, /** Default: 1 */ - @JsonProperty("is_active") Defaulted isActive, + @JsonProperty("is_active") Defaulted isActive, /** Default: current_timestamp() */ @JsonProperty("created_at") Defaulted createdAt) { public PromotionsRowUnsaved( @@ -356,7 +357,7 @@ public PromotionsRowUnsaved withRulesJson(Defaulted> rulesJson) { ; /** Default: 1 */ - public PromotionsRowUnsaved withIsActive(Defaulted isActive) { + public PromotionsRowUnsaved withIsActive(Defaulted isActive) { return new PromotionsRowUnsaved( code, name, @@ -405,7 +406,7 @@ public PromotionsRow toRow( java.util.function.Supplier> maxUsesPerCustomerDefault, java.util.function.Supplier> applicableToDefault, java.util.function.Supplier> rulesJsonDefault, - java.util.function.Supplier isActiveDefault, + java.util.function.Supplier isActiveDefault, java.util.function.Supplier createdAtDefault, java.util.function.Supplier promotionIdDefault) { return new PromotionsRow( diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/reviews/ReviewsFields.java b/testers/mariadb/java/generated-and-checked-in/testdb/reviews/ReviewsFields.java index d835a96dcc..6078f85aae 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/reviews/ReviewsFields.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/reviews/ReviewsFields.java @@ -32,6 +32,8 @@ import testdb.products.ProductsFields; import testdb.products.ProductsId; import testdb.products.ProductsRow; +import testdb.userdefined.IsApproved; +import testdb.userdefined.IsVerifiedPurchase; public class ReviewsFields extends TupleExpr18< @@ -44,9 +46,9 @@ public class ReviewsFields String, Json, Json, - Json, - Boolean, - Boolean, + Json, /* user-picked */ + IsVerifiedPurchase, /* user-picked */ + IsApproved, Uint4, Uint4, String, @@ -70,7 +72,7 @@ public IdField reviewId() { Optional.empty(), Optional.empty(), (row, value) -> row.withReviewId(value), - ReviewsId.dbType); + ReviewsId.mariaType); } public Field productId() { @@ -81,7 +83,7 @@ public Field productId() { Optional.empty(), Optional.empty(), (row, value) -> row.withProductId(value), - ProductsId.dbType); + ProductsId.mariaType); } public Field customerId() { @@ -92,7 +94,7 @@ public Field customerId() { Optional.empty(), Optional.empty(), (row, value) -> row.withCustomerId(value), - CustomersId.dbType); + CustomersId.mariaType); } public OptField orderItemId() { @@ -103,7 +105,7 @@ public OptField orderItemId() { Optional.empty(), Optional.empty(), (row, value) -> row.withOrderItemId(value), - OrderItemsId.dbType); + OrderItemsId.mariaType); } public Field rating() { @@ -172,26 +174,26 @@ public OptField images() { MariaTypes.json); } - public Field isVerifiedPurchase() { - return new Field( + public Field isVerifiedPurchase() { + return new Field( _path, "is_verified_purchase", ReviewsRow::isVerifiedPurchase, Optional.empty(), Optional.empty(), (row, value) -> row.withIsVerifiedPurchase(value), - MariaTypes.bool); + IsVerifiedPurchase.mariaType); } - public Field isApproved() { - return new Field( + public Field isApproved() { + return new Field( _path, "is_approved", ReviewsRow::isApproved, Optional.empty(), Optional.empty(), (row, value) -> row.withIsApproved(value), - MariaTypes.bool); + IsApproved.mariaType); } public Field helpfulVotes() { @@ -364,12 +366,12 @@ public SqlExpr _10() { } @Override - public SqlExpr _11() { + public SqlExpr _11() { return isVerifiedPurchase(); } @Override - public SqlExpr _12() { + public SqlExpr _12() { return isApproved(); } diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/reviews/ReviewsId.java b/testers/mariadb/java/generated-and-checked-in/testdb/reviews/ReviewsId.java index 8e7182ad1a..388c8bf206 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/reviews/ReviewsId.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/reviews/ReviewsId.java @@ -27,6 +27,6 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(ReviewsId::value, ReviewsId::new); - public static MariaType dbType = + public static MariaType mariaType = MariaTypes.bigintUnsigned.bimap(ReviewsId::new, ReviewsId::value); } diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/reviews/ReviewsRepoImpl.java b/testers/mariadb/java/generated-and-checked-in/testdb/reviews/ReviewsRepoImpl.java index 4476288117..fa574166c9 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/reviews/ReviewsRepoImpl.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/reviews/ReviewsRepoImpl.java @@ -23,6 +23,8 @@ import testdb.customers.CustomersId; import testdb.order_items.OrderItemsId; import testdb.products.ProductsId; +import testdb.userdefined.IsApproved; +import testdb.userdefined.IsVerifiedPurchase; public class ReviewsRepoImpl implements ReviewsRepo { @Override @@ -34,7 +36,7 @@ public DeleteBuilder delete() { public Boolean deleteById(ReviewsId reviewId, Connection c) { return interpolate( Fragment.lit("delete from `reviews` where `review_id` = "), - Fragment.encode(ReviewsId.dbType, reviewId), + Fragment.encode(ReviewsId.mariaType, reviewId), Fragment.lit("")) .update() .runUnchecked(c) @@ -45,7 +47,7 @@ public Boolean deleteById(ReviewsId reviewId, Connection c) { public Integer deleteByIds(ReviewsId[] reviewIds, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : reviewIds) { - fragments.add(Fragment.encode(ReviewsId.dbType, id)); + fragments.add(Fragment.encode(ReviewsId.mariaType, id)); } ; return Fragment.interpolate( @@ -65,11 +67,11 @@ public ReviewsRow insert(ReviewsRow unsaved, Connection c) { + " `is_approved`, `helpful_votes`, `unhelpful_votes`, `admin_response`," + " `responded_at`, `created_at`, `updated_at`)\n" + "values ("), - Fragment.encode(ProductsId.dbType, unsaved.productId()), + Fragment.encode(ProductsId.mariaType, unsaved.productId()), Fragment.lit(", "), - Fragment.encode(CustomersId.dbType, unsaved.customerId()), + Fragment.encode(CustomersId.mariaType, unsaved.customerId()), Fragment.lit(", "), - Fragment.encode(OrderItemsId.dbType.opt(), unsaved.orderItemId()), + Fragment.encode(OrderItemsId.mariaType.opt(), unsaved.orderItemId()), Fragment.lit(", "), Fragment.encode(MariaTypes.tinyintUnsigned, unsaved.rating()), Fragment.lit(", "), @@ -83,9 +85,9 @@ public ReviewsRow insert(ReviewsRow unsaved, Connection c) { Fragment.lit(", "), Fragment.encode(MariaTypes.json.opt(), unsaved.images()), Fragment.lit(", "), - Fragment.encode(MariaTypes.bool, unsaved.isVerifiedPurchase()), + Fragment.encode(IsVerifiedPurchase.mariaType, unsaved.isVerifiedPurchase()), Fragment.lit(", "), - Fragment.encode(MariaTypes.bool, unsaved.isApproved()), + Fragment.encode(IsApproved.mariaType, unsaved.isApproved()), Fragment.lit(", "), Fragment.encode(MariaTypes.intUnsigned, unsaved.helpfulVotes()), Fragment.lit(", "), @@ -116,10 +118,11 @@ public ReviewsRow insert(ReviewsRowUnsaved unsaved, Connection c) { ; columns.add(Fragment.lit("`product_id`")); values.add( - interpolate(Fragment.encode(ProductsId.dbType, unsaved.productId()), Fragment.lit(""))); + interpolate(Fragment.encode(ProductsId.mariaType, unsaved.productId()), Fragment.lit(""))); columns.add(Fragment.lit("`customer_id`")); values.add( - interpolate(Fragment.encode(CustomersId.dbType, unsaved.customerId()), Fragment.lit(""))); + interpolate( + Fragment.encode(CustomersId.mariaType, unsaved.customerId()), Fragment.lit(""))); columns.add(Fragment.lit("`rating`")); values.add( interpolate( @@ -131,7 +134,8 @@ public ReviewsRow insert(ReviewsRowUnsaved unsaved, Connection c) { value -> { columns.add(Fragment.lit("`order_item_id`")); values.add( - interpolate(Fragment.encode(OrderItemsId.dbType.opt(), value), Fragment.lit(""))); + interpolate( + Fragment.encode(OrderItemsId.mariaType.opt(), value), Fragment.lit(""))); }); ; unsaved @@ -190,7 +194,9 @@ public ReviewsRow insert(ReviewsRowUnsaved unsaved, Connection c) { () -> {}, value -> { columns.add(Fragment.lit("`is_verified_purchase`")); - values.add(interpolate(Fragment.encode(MariaTypes.bool, value), Fragment.lit(""))); + values.add( + interpolate( + Fragment.encode(IsVerifiedPurchase.mariaType, value), Fragment.lit(""))); }); ; unsaved @@ -199,7 +205,8 @@ public ReviewsRow insert(ReviewsRowUnsaved unsaved, Connection c) { () -> {}, value -> { columns.add(Fragment.lit("`is_approved`")); - values.add(interpolate(Fragment.encode(MariaTypes.bool, value), Fragment.lit(""))); + values.add( + interpolate(Fragment.encode(IsApproved.mariaType, value), Fragment.lit(""))); }); ; unsaved @@ -307,7 +314,7 @@ public Optional selectById(ReviewsId reviewId, Connection c) { + " `responded_at`, `created_at`, `updated_at`\n" + "from `reviews`\n" + "where `review_id` = "), - Fragment.encode(ReviewsId.dbType, reviewId), + Fragment.encode(ReviewsId.mariaType, reviewId), Fragment.lit("")) .query(ReviewsRow._rowParser.first()) .runUnchecked(c); @@ -317,7 +324,7 @@ public Optional selectById(ReviewsId reviewId, Connection c) { public List selectByIds(ReviewsId[] reviewIds, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : reviewIds) { - fragments.add(Fragment.encode(ReviewsId.dbType, id)); + fragments.add(Fragment.encode(ReviewsId.mariaType, id)); } ; return Fragment.interpolate( @@ -352,11 +359,11 @@ public Boolean update(ReviewsRow row, Connection c) { ; return interpolate( Fragment.lit("update `reviews`\nset `product_id` = "), - Fragment.encode(ProductsId.dbType, row.productId()), + Fragment.encode(ProductsId.mariaType, row.productId()), Fragment.lit(",\n`customer_id` = "), - Fragment.encode(CustomersId.dbType, row.customerId()), + Fragment.encode(CustomersId.mariaType, row.customerId()), Fragment.lit(",\n`order_item_id` = "), - Fragment.encode(OrderItemsId.dbType.opt(), row.orderItemId()), + Fragment.encode(OrderItemsId.mariaType.opt(), row.orderItemId()), Fragment.lit(",\n`rating` = "), Fragment.encode(MariaTypes.tinyintUnsigned, row.rating()), Fragment.lit(",\n`title` = "), @@ -370,9 +377,9 @@ public Boolean update(ReviewsRow row, Connection c) { Fragment.lit(",\n`images` = "), Fragment.encode(MariaTypes.json.opt(), row.images()), Fragment.lit(",\n`is_verified_purchase` = "), - Fragment.encode(MariaTypes.bool, row.isVerifiedPurchase()), + Fragment.encode(IsVerifiedPurchase.mariaType, row.isVerifiedPurchase()), Fragment.lit(",\n`is_approved` = "), - Fragment.encode(MariaTypes.bool, row.isApproved()), + Fragment.encode(IsApproved.mariaType, row.isApproved()), Fragment.lit(",\n`helpful_votes` = "), Fragment.encode(MariaTypes.intUnsigned, row.helpfulVotes()), Fragment.lit(",\n`unhelpful_votes` = "), @@ -386,7 +393,7 @@ public Boolean update(ReviewsRow row, Connection c) { Fragment.lit(",\n`updated_at` = "), Fragment.encode(MariaTypes.datetime, row.updatedAt()), Fragment.lit("\nwhere `review_id` = "), - Fragment.encode(ReviewsId.dbType, reviewId), + Fragment.encode(ReviewsId.mariaType, reviewId), Fragment.lit("")) .update() .runUnchecked(c) @@ -402,13 +409,13 @@ public ReviewsRow upsert(ReviewsRow unsaved, Connection c) { + " `is_verified_purchase`, `is_approved`, `helpful_votes`, `unhelpful_votes`," + " `admin_response`, `responded_at`, `created_at`, `updated_at`)\n" + "VALUES ("), - Fragment.encode(ReviewsId.dbType, unsaved.reviewId()), + Fragment.encode(ReviewsId.mariaType, unsaved.reviewId()), Fragment.lit(", "), - Fragment.encode(ProductsId.dbType, unsaved.productId()), + Fragment.encode(ProductsId.mariaType, unsaved.productId()), Fragment.lit(", "), - Fragment.encode(CustomersId.dbType, unsaved.customerId()), + Fragment.encode(CustomersId.mariaType, unsaved.customerId()), Fragment.lit(", "), - Fragment.encode(OrderItemsId.dbType.opt(), unsaved.orderItemId()), + Fragment.encode(OrderItemsId.mariaType.opt(), unsaved.orderItemId()), Fragment.lit(", "), Fragment.encode(MariaTypes.tinyintUnsigned, unsaved.rating()), Fragment.lit(", "), @@ -422,9 +429,9 @@ public ReviewsRow upsert(ReviewsRow unsaved, Connection c) { Fragment.lit(", "), Fragment.encode(MariaTypes.json.opt(), unsaved.images()), Fragment.lit(", "), - Fragment.encode(MariaTypes.bool, unsaved.isVerifiedPurchase()), + Fragment.encode(IsVerifiedPurchase.mariaType, unsaved.isVerifiedPurchase()), Fragment.lit(", "), - Fragment.encode(MariaTypes.bool, unsaved.isApproved()), + Fragment.encode(IsApproved.mariaType, unsaved.isApproved()), Fragment.lit(", "), Fragment.encode(MariaTypes.intUnsigned, unsaved.helpfulVotes()), Fragment.lit(", "), diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/reviews/ReviewsRow.java b/testers/mariadb/java/generated-and-checked-in/testdb/reviews/ReviewsRow.java index 232c1c8f62..5c3c1f6516 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/reviews/ReviewsRow.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/reviews/ReviewsRow.java @@ -19,6 +19,8 @@ import testdb.customtypes.Defaulted; import testdb.order_items.OrderItemsId; import testdb.products.ProductsId; +import testdb.userdefined.IsApproved; +import testdb.userdefined.IsVerifiedPurchase; /** Table: reviews Primary key: review_id */ public record ReviewsRow( @@ -43,9 +45,9 @@ public record ReviewsRow( /** Array of image URLs Default: NULL */ Optional images, /** Default: 0 */ - @JsonProperty("is_verified_purchase") Boolean isVerifiedPurchase, + @JsonProperty("is_verified_purchase") /* user-picked */ IsVerifiedPurchase isVerifiedPurchase, /** Default: 0 */ - @JsonProperty("is_approved") Boolean isApproved, + @JsonProperty("is_approved") /* user-picked */ IsApproved isApproved, /** Default: 0 */ @JsonProperty("helpful_votes") Uint4 helpfulVotes, /** Default: 0 */ @@ -68,9 +70,9 @@ public record ReviewsRow( Optional, Optional, Optional, - Optional, - Boolean, - Boolean, + Optional, /* user-picked */ + IsVerifiedPurchase, /* user-picked */ + IsApproved, Uint4, Uint4, Optional, @@ -318,7 +320,8 @@ public ReviewsRow withImages(Optional images) { ; /** Default: 0 */ - public ReviewsRow withIsVerifiedPurchase(Boolean isVerifiedPurchase) { + public ReviewsRow withIsVerifiedPurchase( + /* user-picked */ IsVerifiedPurchase isVerifiedPurchase) { return new ReviewsRow( reviewId, productId, @@ -342,7 +345,7 @@ public ReviewsRow withIsVerifiedPurchase(Boolean isVerifiedPurchase) { ; /** Default: 0 */ - public ReviewsRow withIsApproved(Boolean isApproved) { + public ReviewsRow withIsApproved(/* user-picked */ IsApproved isApproved) { return new ReviewsRow( reviewId, productId, @@ -511,18 +514,18 @@ public ReviewsRow withUpdatedAt(LocalDateTime updatedAt) { public static RowParser _rowParser = RowParsers.of( - ReviewsId.dbType, - ProductsId.dbType, - CustomersId.dbType, - OrderItemsId.dbType.opt(), + ReviewsId.mariaType, + ProductsId.mariaType, + CustomersId.mariaType, + OrderItemsId.mariaType.opt(), MariaTypes.tinyintUnsigned, MariaTypes.varchar.opt(), MariaTypes.text.opt(), MariaTypes.json.opt(), MariaTypes.json.opt(), MariaTypes.json.opt(), - MariaTypes.bool, - MariaTypes.bool, + IsVerifiedPurchase.mariaType, + IsApproved.mariaType, MariaTypes.intUnsigned, MariaTypes.intUnsigned, MariaTypes.text.opt(), @@ -566,13 +569,13 @@ public Optional _10() { ; @Override - public Boolean _11() { + public /* user-picked */ IsVerifiedPurchase _11() { return isVerifiedPurchase; } ; @Override - public Boolean _12() { + public /* user-picked */ IsApproved _12() { return isApproved; } ; @@ -673,8 +676,8 @@ public ReviewsRowUnsaved toUnsavedRow( Defaulted> pros, Defaulted> cons, Defaulted> images, - Defaulted isVerifiedPurchase, - Defaulted isApproved, + Defaulted isVerifiedPurchase, + Defaulted isApproved, Defaulted helpfulVotes, Defaulted unhelpfulVotes, Defaulted> adminResponse, diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/reviews/ReviewsRowUnsaved.java b/testers/mariadb/java/generated-and-checked-in/testdb/reviews/ReviewsRowUnsaved.java index c1310c8692..3eec2d2e3a 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/reviews/ReviewsRowUnsaved.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/reviews/ReviewsRowUnsaved.java @@ -16,6 +16,8 @@ import testdb.customtypes.Defaulted.UseDefault; import testdb.order_items.OrderItemsId; import testdb.products.ProductsId; +import testdb.userdefined.IsApproved; +import testdb.userdefined.IsVerifiedPurchase; /** This class corresponds to a row in table `reviews` which has not been persisted yet */ public record ReviewsRowUnsaved( @@ -38,9 +40,10 @@ public record ReviewsRowUnsaved( /** Default: NULL Array of image URLs */ Defaulted> images, /** Default: 0 */ - @JsonProperty("is_verified_purchase") Defaulted isVerifiedPurchase, + @JsonProperty("is_verified_purchase") + Defaulted isVerifiedPurchase, /** Default: 0 */ - @JsonProperty("is_approved") Defaulted isApproved, + @JsonProperty("is_approved") Defaulted isApproved, /** Default: 0 */ @JsonProperty("helpful_votes") Defaulted helpfulVotes, /** Default: 0 */ @@ -289,7 +292,8 @@ public ReviewsRowUnsaved withImages(Defaulted> images) { ; /** Default: 0 */ - public ReviewsRowUnsaved withIsVerifiedPurchase(Defaulted isVerifiedPurchase) { + public ReviewsRowUnsaved withIsVerifiedPurchase( + Defaulted isVerifiedPurchase) { return new ReviewsRowUnsaved( productId, customerId, @@ -312,7 +316,7 @@ public ReviewsRowUnsaved withIsVerifiedPurchase(Defaulted isVerifiedPur ; /** Default: 0 */ - public ReviewsRowUnsaved withIsApproved(Defaulted isApproved) { + public ReviewsRowUnsaved withIsApproved(Defaulted isApproved) { return new ReviewsRowUnsaved( productId, customerId, @@ -479,8 +483,8 @@ public ReviewsRow toRow( java.util.function.Supplier> prosDefault, java.util.function.Supplier> consDefault, java.util.function.Supplier> imagesDefault, - java.util.function.Supplier isVerifiedPurchaseDefault, - java.util.function.Supplier isApprovedDefault, + java.util.function.Supplier isVerifiedPurchaseDefault, + java.util.function.Supplier isApprovedDefault, java.util.function.Supplier helpfulVotesDefault, java.util.function.Supplier unhelpfulVotesDefault, java.util.function.Supplier> adminResponseDefault, diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/shipments/ShipmentsFields.java b/testers/mariadb/java/generated-and-checked-in/testdb/shipments/ShipmentsFields.java index 29a885538e..03d4084295 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/shipments/ShipmentsFields.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/shipments/ShipmentsFields.java @@ -69,7 +69,7 @@ public IdField shipmentId() { Optional.empty(), Optional.empty(), (row, value) -> row.withShipmentId(value), - ShipmentsId.dbType); + ShipmentsId.mariaType); } public Field orderId() { @@ -80,7 +80,7 @@ public Field orderId() { Optional.empty(), Optional.empty(), (row, value) -> row.withOrderId(value), - OrdersId.dbType); + OrdersId.mariaType); } public Field carrierId() { @@ -91,7 +91,7 @@ public Field carrierId() { Optional.empty(), Optional.empty(), (row, value) -> row.withCarrierId(value), - ShippingCarriersId.dbType); + ShippingCarriersId.mariaType); } public OptField trackingNumber() { @@ -212,7 +212,7 @@ public OptField originWarehouseId() { Optional.empty(), Optional.empty(), (row, value) -> row.withOriginWarehouseId(value), - WarehousesId.dbType); + WarehousesId.mariaType); } public OptField shippedAt() { diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/shipments/ShipmentsId.java b/testers/mariadb/java/generated-and-checked-in/testdb/shipments/ShipmentsId.java index db37b4c447..818a9e7b83 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/shipments/ShipmentsId.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/shipments/ShipmentsId.java @@ -27,6 +27,6 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(ShipmentsId::value, ShipmentsId::new); - public static MariaType dbType = + public static MariaType mariaType = MariaTypes.bigintUnsigned.bimap(ShipmentsId::new, ShipmentsId::value); } diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/shipments/ShipmentsRepoImpl.java b/testers/mariadb/java/generated-and-checked-in/testdb/shipments/ShipmentsRepoImpl.java index 3a82c86319..d5e5be03bd 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/shipments/ShipmentsRepoImpl.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/shipments/ShipmentsRepoImpl.java @@ -34,7 +34,7 @@ public DeleteBuilder delete() { public Boolean deleteById(ShipmentsId shipmentId, Connection c) { return interpolate( Fragment.lit("delete from `shipments` where `shipment_id` = "), - Fragment.encode(ShipmentsId.dbType, shipmentId), + Fragment.encode(ShipmentsId.mariaType, shipmentId), Fragment.lit("")) .update() .runUnchecked(c) @@ -45,7 +45,7 @@ public Boolean deleteById(ShipmentsId shipmentId, Connection c) { public Integer deleteByIds(ShipmentsId[] shipmentIds, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : shipmentIds) { - fragments.add(Fragment.encode(ShipmentsId.dbType, id)); + fragments.add(Fragment.encode(ShipmentsId.mariaType, id)); } ; return Fragment.interpolate( @@ -66,9 +66,9 @@ public ShipmentsRow insert(ShipmentsRow unsaved, Connection c) { + " `insurance_amount`, `origin_warehouse_id`, `shipped_at`, `created_at`," + " `updated_at`)\n" + "values ("), - Fragment.encode(OrdersId.dbType, unsaved.orderId()), + Fragment.encode(OrdersId.mariaType, unsaved.orderId()), Fragment.lit(", "), - Fragment.encode(ShippingCarriersId.dbType, unsaved.carrierId()), + Fragment.encode(ShippingCarriersId.mariaType, unsaved.carrierId()), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.opt(), unsaved.trackingNumber()), Fragment.lit(", "), @@ -90,7 +90,7 @@ public ShipmentsRow insert(ShipmentsRow unsaved, Connection c) { Fragment.lit(", "), Fragment.encode(MariaTypes.numeric.opt(), unsaved.insuranceAmount()), Fragment.lit(", "), - Fragment.encode(WarehousesId.dbType.opt(), unsaved.originWarehouseId()), + Fragment.encode(WarehousesId.mariaType.opt(), unsaved.originWarehouseId()), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime.opt(), unsaved.shippedAt()), Fragment.lit(", "), @@ -115,11 +115,12 @@ public ShipmentsRow insert(ShipmentsRowUnsaved unsaved, Connection c) { ArrayList values = new ArrayList<>(); ; columns.add(Fragment.lit("`order_id`")); - values.add(interpolate(Fragment.encode(OrdersId.dbType, unsaved.orderId()), Fragment.lit(""))); + values.add( + interpolate(Fragment.encode(OrdersId.mariaType, unsaved.orderId()), Fragment.lit(""))); columns.add(Fragment.lit("`carrier_id`")); values.add( interpolate( - Fragment.encode(ShippingCarriersId.dbType, unsaved.carrierId()), Fragment.lit(""))); + Fragment.encode(ShippingCarriersId.mariaType, unsaved.carrierId()), Fragment.lit(""))); columns.add(Fragment.lit("`shipping_method`")); values.add( interpolate( @@ -213,7 +214,8 @@ public ShipmentsRow insert(ShipmentsRowUnsaved unsaved, Connection c) { value -> { columns.add(Fragment.lit("`origin_warehouse_id`")); values.add( - interpolate(Fragment.encode(WarehousesId.dbType.opt(), value), Fragment.lit(""))); + interpolate( + Fragment.encode(WarehousesId.mariaType.opt(), value), Fragment.lit(""))); }); ; unsaved @@ -294,7 +296,7 @@ public Optional selectById(ShipmentsId shipmentId, Connection c) { + " `updated_at`\n" + "from `shipments`\n" + "where `shipment_id` = "), - Fragment.encode(ShipmentsId.dbType, shipmentId), + Fragment.encode(ShipmentsId.mariaType, shipmentId), Fragment.lit("")) .query(ShipmentsRow._rowParser.first()) .runUnchecked(c); @@ -304,7 +306,7 @@ public Optional selectById(ShipmentsId shipmentId, Connection c) { public List selectByIds(ShipmentsId[] shipmentIds, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : shipmentIds) { - fragments.add(Fragment.encode(ShipmentsId.dbType, id)); + fragments.add(Fragment.encode(ShipmentsId.mariaType, id)); } ; return Fragment.interpolate( @@ -340,9 +342,9 @@ public Boolean update(ShipmentsRow row, Connection c) { ; return interpolate( Fragment.lit("update `shipments`\nset `order_id` = "), - Fragment.encode(OrdersId.dbType, row.orderId()), + Fragment.encode(OrdersId.mariaType, row.orderId()), Fragment.lit(",\n`carrier_id` = "), - Fragment.encode(ShippingCarriersId.dbType, row.carrierId()), + Fragment.encode(ShippingCarriersId.mariaType, row.carrierId()), Fragment.lit(",\n`tracking_number` = "), Fragment.encode(MariaTypes.varchar.opt(), row.trackingNumber()), Fragment.lit(",\n`shipping_method` = "), @@ -364,7 +366,7 @@ public Boolean update(ShipmentsRow row, Connection c) { Fragment.lit(",\n`insurance_amount` = "), Fragment.encode(MariaTypes.numeric.opt(), row.insuranceAmount()), Fragment.lit(",\n`origin_warehouse_id` = "), - Fragment.encode(WarehousesId.dbType.opt(), row.originWarehouseId()), + Fragment.encode(WarehousesId.mariaType.opt(), row.originWarehouseId()), Fragment.lit(",\n`shipped_at` = "), Fragment.encode(MariaTypes.datetime.opt(), row.shippedAt()), Fragment.lit(",\n`created_at` = "), @@ -372,7 +374,7 @@ public Boolean update(ShipmentsRow row, Connection c) { Fragment.lit(",\n`updated_at` = "), Fragment.encode(MariaTypes.datetime, row.updatedAt()), Fragment.lit("\nwhere `shipment_id` = "), - Fragment.encode(ShipmentsId.dbType, shipmentId), + Fragment.encode(ShipmentsId.mariaType, shipmentId), Fragment.lit("")) .update() .runUnchecked(c) @@ -389,11 +391,11 @@ public ShipmentsRow upsert(ShipmentsRow unsaved, Connection c) { + " `shipping_cost`, `insurance_amount`, `origin_warehouse_id`, `shipped_at`," + " `created_at`, `updated_at`)\n" + "VALUES ("), - Fragment.encode(ShipmentsId.dbType, unsaved.shipmentId()), + Fragment.encode(ShipmentsId.mariaType, unsaved.shipmentId()), Fragment.lit(", "), - Fragment.encode(OrdersId.dbType, unsaved.orderId()), + Fragment.encode(OrdersId.mariaType, unsaved.orderId()), Fragment.lit(", "), - Fragment.encode(ShippingCarriersId.dbType, unsaved.carrierId()), + Fragment.encode(ShippingCarriersId.mariaType, unsaved.carrierId()), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.opt(), unsaved.trackingNumber()), Fragment.lit(", "), @@ -415,7 +417,7 @@ public ShipmentsRow upsert(ShipmentsRow unsaved, Connection c) { Fragment.lit(", "), Fragment.encode(MariaTypes.numeric.opt(), unsaved.insuranceAmount()), Fragment.lit(", "), - Fragment.encode(WarehousesId.dbType.opt(), unsaved.originWarehouseId()), + Fragment.encode(WarehousesId.mariaType.opt(), unsaved.originWarehouseId()), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime.opt(), unsaved.shippedAt()), Fragment.lit(", "), diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/shipments/ShipmentsRow.java b/testers/mariadb/java/generated-and-checked-in/testdb/shipments/ShipmentsRow.java index d35bbe4b7e..6e19db68e4 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/shipments/ShipmentsRow.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/shipments/ShipmentsRow.java @@ -467,9 +467,9 @@ public ShipmentsRow withUpdatedAt(LocalDateTime updatedAt) { public static RowParser _rowParser = RowParsers.of( - ShipmentsId.dbType, - OrdersId.dbType, - ShippingCarriersId.dbType, + ShipmentsId.mariaType, + OrdersId.mariaType, + ShippingCarriersId.mariaType, MariaTypes.varchar.opt(), MariaTypes.varchar, MariaTypes.numeric.opt(), @@ -480,7 +480,7 @@ public ShipmentsRow withUpdatedAt(LocalDateTime updatedAt) { MariaTypes.datetime.opt(), MariaTypes.numeric, MariaTypes.numeric.opt(), - WarehousesId.dbType.opt(), + WarehousesId.mariaType.opt(), MariaTypes.datetime.opt(), MariaTypes.datetime, MariaTypes.datetime, diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/shipping_carriers/ShippingCarriersFields.java b/testers/mariadb/java/generated-and-checked-in/testdb/shipping_carriers/ShippingCarriersFields.java index 8ef799ae6d..c1fdf2df59 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/shipping_carriers/ShippingCarriersFields.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/shipping_carriers/ShippingCarriersFields.java @@ -19,9 +19,10 @@ import dev.typr.foundations.dsl.TupleExpr.TupleExpr6; import java.util.List; import java.util.Optional; +import testdb.userdefined.IsActive; public class ShippingCarriersFields - extends TupleExpr6 + extends TupleExpr6 implements RelationStructure, FieldsBase { List _path; @@ -41,7 +42,7 @@ public IdField carrierId() { Optional.empty(), Optional.empty(), (row, value) -> row.withCarrierId(value), - ShippingCarriersId.dbType); + ShippingCarriersId.mariaType); } public Field code() { @@ -88,15 +89,15 @@ public OptField apiConfig() { MariaTypes.json); } - public Field isActive() { - return new Field( + public Field isActive() { + return new Field( _path, "is_active", ShippingCarriersRow::isActive, Optional.empty(), Optional.empty(), (row, value) -> row.withIsActive(value), - MariaTypes.bool); + IsActive.mariaType); } @Override @@ -152,7 +153,7 @@ public SqlExpr _5() { } @Override - public SqlExpr _6() { + public SqlExpr _6() { return isActive(); } } diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/shipping_carriers/ShippingCarriersId.java b/testers/mariadb/java/generated-and-checked-in/testdb/shipping_carriers/ShippingCarriersId.java index 4cec48c798..2eb978ba60 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/shipping_carriers/ShippingCarriersId.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/shipping_carriers/ShippingCarriersId.java @@ -27,6 +27,6 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(ShippingCarriersId::value, ShippingCarriersId::new); - public static MariaType dbType = + public static MariaType mariaType = MariaTypes.tinyintUnsigned.bimap(ShippingCarriersId::new, ShippingCarriersId::value); } diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/shipping_carriers/ShippingCarriersRepoImpl.java b/testers/mariadb/java/generated-and-checked-in/testdb/shipping_carriers/ShippingCarriersRepoImpl.java index e5a869a332..091a7179fc 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/shipping_carriers/ShippingCarriersRepoImpl.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/shipping_carriers/ShippingCarriersRepoImpl.java @@ -20,6 +20,7 @@ import java.util.List; import java.util.Map; import java.util.Optional; +import testdb.userdefined.IsActive; public class ShippingCarriersRepoImpl implements ShippingCarriersRepo { @Override @@ -32,7 +33,7 @@ public DeleteBuilder delete() { public Boolean deleteById(ShippingCarriersId carrierId, Connection c) { return interpolate( Fragment.lit("delete from `shipping_carriers` where `carrier_id` = "), - Fragment.encode(ShippingCarriersId.dbType, carrierId), + Fragment.encode(ShippingCarriersId.mariaType, carrierId), Fragment.lit("")) .update() .runUnchecked(c) @@ -43,7 +44,7 @@ public Boolean deleteById(ShippingCarriersId carrierId, Connection c) { public Integer deleteByIds(ShippingCarriersId[] carrierIds, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : carrierIds) { - fragments.add(Fragment.encode(ShippingCarriersId.dbType, id)); + fragments.add(Fragment.encode(ShippingCarriersId.mariaType, id)); } ; return Fragment.interpolate( @@ -69,7 +70,7 @@ public ShippingCarriersRow insert(ShippingCarriersRow unsaved, Connection c) { Fragment.lit(", "), Fragment.encode(MariaTypes.json.opt(), unsaved.apiConfig()), Fragment.lit(", "), - Fragment.encode(MariaTypes.bool, unsaved.isActive()), + Fragment.encode(IsActive.mariaType, unsaved.isActive()), Fragment.lit( ")\n" + "RETURNING `carrier_id`, `code`, `name`, `tracking_url_template`," @@ -114,7 +115,7 @@ public ShippingCarriersRow insert(ShippingCarriersRowUnsaved unsaved, Connection () -> {}, value -> { columns.add(Fragment.lit("`is_active`")); - values.add(interpolate(Fragment.encode(MariaTypes.bool, value), Fragment.lit(""))); + values.add(interpolate(Fragment.encode(IsActive.mariaType, value), Fragment.lit(""))); }); ; Fragment q = @@ -159,7 +160,7 @@ public Optional selectById(ShippingCarriersId carrierId, Co + " `is_active`\n" + "from `shipping_carriers`\n" + "where `carrier_id` = "), - Fragment.encode(ShippingCarriersId.dbType, carrierId), + Fragment.encode(ShippingCarriersId.mariaType, carrierId), Fragment.lit("")) .query(ShippingCarriersRow._rowParser.first()) .runUnchecked(c); @@ -169,7 +170,7 @@ public Optional selectById(ShippingCarriersId carrierId, Co public List selectByIds(ShippingCarriersId[] carrierIds, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : carrierIds) { - fragments.add(Fragment.encode(ShippingCarriersId.dbType, id)); + fragments.add(Fragment.encode(ShippingCarriersId.mariaType, id)); } ; return Fragment.interpolate( @@ -228,9 +229,9 @@ public Boolean update(ShippingCarriersRow row, Connection c) { Fragment.lit(",\n`api_config` = "), Fragment.encode(MariaTypes.json.opt(), row.apiConfig()), Fragment.lit(",\n`is_active` = "), - Fragment.encode(MariaTypes.bool, row.isActive()), + Fragment.encode(IsActive.mariaType, row.isActive()), Fragment.lit("\nwhere `carrier_id` = "), - Fragment.encode(ShippingCarriersId.dbType, carrierId), + Fragment.encode(ShippingCarriersId.mariaType, carrierId), Fragment.lit("")) .update() .runUnchecked(c) @@ -244,7 +245,7 @@ public ShippingCarriersRow upsert(ShippingCarriersRow unsaved, Connection c) { "INSERT INTO `shipping_carriers`(`carrier_id`, `code`, `name`," + " `tracking_url_template`, `api_config`, `is_active`)\n" + "VALUES ("), - Fragment.encode(ShippingCarriersId.dbType, unsaved.carrierId()), + Fragment.encode(ShippingCarriersId.mariaType, unsaved.carrierId()), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.code()), Fragment.lit(", "), @@ -254,7 +255,7 @@ public ShippingCarriersRow upsert(ShippingCarriersRow unsaved, Connection c) { Fragment.lit(", "), Fragment.encode(MariaTypes.json.opt(), unsaved.apiConfig()), Fragment.lit(", "), - Fragment.encode(MariaTypes.bool, unsaved.isActive()), + Fragment.encode(IsActive.mariaType, unsaved.isActive()), Fragment.lit( ")\n" + "ON DUPLICATE KEY UPDATE `code` = VALUES(`code`),\n" diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/shipping_carriers/ShippingCarriersRow.java b/testers/mariadb/java/generated-and-checked-in/testdb/shipping_carriers/ShippingCarriersRow.java index 491ab905a5..e800f45dfd 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/shipping_carriers/ShippingCarriersRow.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/shipping_carriers/ShippingCarriersRow.java @@ -13,6 +13,7 @@ import dev.typr.foundations.data.Json; import java.util.Optional; import testdb.customtypes.Defaulted; +import testdb.userdefined.IsActive; /** Table: shipping_carriers Primary key: carrier_id */ public record ShippingCarriersRow( @@ -27,9 +28,14 @@ public record ShippingCarriersRow( /** Default: NULL */ @JsonProperty("api_config") Optional apiConfig, /** Default: 1 */ - @JsonProperty("is_active") Boolean isActive) + @JsonProperty("is_active") /* user-picked */ IsActive isActive) implements Tuple6< - ShippingCarriersId, String, String, Optional, Optional, Boolean> { + ShippingCarriersId, + String, + String, + Optional, + Optional, /* user-picked */ + IsActive> { /** AUTO_INCREMENT */ public ShippingCarriersRow withCarrierId(ShippingCarriersId carrierId) { return new ShippingCarriersRow(carrierId, code, name, trackingUrlTemplate, apiConfig, isActive); @@ -61,19 +67,19 @@ public ShippingCarriersRow withApiConfig(Optional apiConfig) { ; /** Default: 1 */ - public ShippingCarriersRow withIsActive(Boolean isActive) { + public ShippingCarriersRow withIsActive(/* user-picked */ IsActive isActive) { return new ShippingCarriersRow(carrierId, code, name, trackingUrlTemplate, apiConfig, isActive); } ; public static RowParser _rowParser = RowParsers.of( - ShippingCarriersId.dbType, + ShippingCarriersId.mariaType, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.varchar.opt(), MariaTypes.json.opt(), - MariaTypes.bool, + IsActive.mariaType, ShippingCarriersRow::new, row -> new Object[] { @@ -117,7 +123,7 @@ public Optional _5() { ; @Override - public Boolean _6() { + public /* user-picked */ IsActive _6() { return isActive; } ; @@ -130,7 +136,7 @@ public ShippingCarriersId id() { public ShippingCarriersRowUnsaved toUnsavedRow( Defaulted> trackingUrlTemplate, Defaulted> apiConfig, - Defaulted isActive) { + Defaulted isActive) { return new ShippingCarriersRowUnsaved(code, name, trackingUrlTemplate, apiConfig, isActive); } ; diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/shipping_carriers/ShippingCarriersRowUnsaved.java b/testers/mariadb/java/generated-and-checked-in/testdb/shipping_carriers/ShippingCarriersRowUnsaved.java index 12f3ddc547..c906976492 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/shipping_carriers/ShippingCarriersRowUnsaved.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/shipping_carriers/ShippingCarriersRowUnsaved.java @@ -10,6 +10,7 @@ import java.util.Optional; import testdb.customtypes.Defaulted; import testdb.customtypes.Defaulted.UseDefault; +import testdb.userdefined.IsActive; /** This class corresponds to a row in table `shipping_carriers` which has not been persisted yet */ public record ShippingCarriersRowUnsaved( @@ -22,7 +23,7 @@ public record ShippingCarriersRowUnsaved( /** Default: NULL */ @JsonProperty("api_config") Defaulted> apiConfig, /** Default: 1 */ - @JsonProperty("is_active") Defaulted isActive) { + @JsonProperty("is_active") Defaulted isActive) { public ShippingCarriersRowUnsaved( /** */ String code, @@ -58,7 +59,7 @@ public ShippingCarriersRowUnsaved withApiConfig(Defaulted> apiCon ; /** Default: 1 */ - public ShippingCarriersRowUnsaved withIsActive(Defaulted isActive) { + public ShippingCarriersRowUnsaved withIsActive(Defaulted isActive) { return new ShippingCarriersRowUnsaved(code, name, trackingUrlTemplate, apiConfig, isActive); } ; @@ -66,7 +67,7 @@ public ShippingCarriersRowUnsaved withIsActive(Defaulted isActive) { public ShippingCarriersRow toRow( java.util.function.Supplier> trackingUrlTemplateDefault, java.util.function.Supplier> apiConfigDefault, - java.util.function.Supplier isActiveDefault, + java.util.function.Supplier isActiveDefault, java.util.function.Supplier carrierIdDefault) { return new ShippingCarriersRow( carrierIdDefault.get(), diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/simple_customer_lookup/SimpleCustomerLookupSqlRow.java b/testers/mariadb/java/generated-and-checked-in/testdb/simple_customer_lookup/SimpleCustomerLookupSqlRow.java index 0a9d6a9382..dc9ac738be 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/simple_customer_lookup/SimpleCustomerLookupSqlRow.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/simple_customer_lookup/SimpleCustomerLookupSqlRow.java @@ -13,17 +13,20 @@ import java.time.LocalDateTime; import testdb.customer_status.CustomerStatusId; import testdb.customers.CustomersId; +import testdb.userdefined.Email; +import testdb.userdefined.FirstName; +import testdb.userdefined.LastName; /** SQL file: simple_customer_lookup.sql */ public record SimpleCustomerLookupSqlRow( /** Points to {@link testdb.customers.CustomersRow#customerId()} */ @JsonProperty("customer_id") CustomersId customerId, /** Points to {@link testdb.customers.CustomersRow#email()} */ - String email, + /* user-picked */ Email email, /** Points to {@link testdb.customers.CustomersRow#firstName()} */ - @JsonProperty("first_name") String firstName, + @JsonProperty("first_name") /* user-picked */ FirstName firstName, /** Points to {@link testdb.customers.CustomersRow#lastName()} */ - @JsonProperty("last_name") String lastName, + @JsonProperty("last_name") /* user-picked */ LastName lastName, /** Points to {@link testdb.customers.CustomersRow#tier()} */ String tier, /** Points to {@link testdb.customers.CustomersRow#status()} */ @@ -31,7 +34,13 @@ public record SimpleCustomerLookupSqlRow( /** Points to {@link testdb.customers.CustomersRow#createdAt()} */ @JsonProperty("created_at") LocalDateTime createdAt) implements Tuple7< - CustomersId, String, String, String, String, CustomerStatusId, LocalDateTime> { + CustomersId, /* user-picked */ + Email, /* user-picked */ + FirstName, /* user-picked */ + LastName, + String, + CustomerStatusId, + LocalDateTime> { /** Points to {@link testdb.customers.CustomersRow#customerId()} */ public SimpleCustomerLookupSqlRow withCustomerId(CustomersId customerId) { return new SimpleCustomerLookupSqlRow( @@ -40,21 +49,21 @@ public SimpleCustomerLookupSqlRow withCustomerId(CustomersId customerId) { ; /** Points to {@link testdb.customers.CustomersRow#email()} */ - public SimpleCustomerLookupSqlRow withEmail(String email) { + public SimpleCustomerLookupSqlRow withEmail(/* user-picked */ Email email) { return new SimpleCustomerLookupSqlRow( customerId, email, firstName, lastName, tier, status, createdAt); } ; /** Points to {@link testdb.customers.CustomersRow#firstName()} */ - public SimpleCustomerLookupSqlRow withFirstName(String firstName) { + public SimpleCustomerLookupSqlRow withFirstName(/* user-picked */ FirstName firstName) { return new SimpleCustomerLookupSqlRow( customerId, email, firstName, lastName, tier, status, createdAt); } ; /** Points to {@link testdb.customers.CustomersRow#lastName()} */ - public SimpleCustomerLookupSqlRow withLastName(String lastName) { + public SimpleCustomerLookupSqlRow withLastName(/* user-picked */ LastName lastName) { return new SimpleCustomerLookupSqlRow( customerId, email, firstName, lastName, tier, status, createdAt); } @@ -83,12 +92,12 @@ public SimpleCustomerLookupSqlRow withCreatedAt(LocalDateTime createdAt) { public static RowParser _rowParser = RowParsers.of( - CustomersId.dbType, - MariaTypes.varchar, - MariaTypes.varchar, - MariaTypes.varchar, + CustomersId.mariaType, + Email.mariaType, + FirstName.mariaType, + LastName.mariaType, MariaTypes.text, - CustomerStatusId.dbType, + CustomerStatusId.mariaType, MariaTypes.datetime, SimpleCustomerLookupSqlRow::new, row -> @@ -110,19 +119,19 @@ public CustomersId _1() { ; @Override - public String _2() { + public /* user-picked */ Email _2() { return email; } ; @Override - public String _3() { + public /* user-picked */ FirstName _3() { return firstName; } ; @Override - public String _4() { + public /* user-picked */ LastName _4() { return lastName; } ; diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/subquery_test/SubqueryTestSqlRow.java b/testers/mariadb/java/generated-and-checked-in/testdb/subquery_test/SubqueryTestSqlRow.java index 53deab59ab..09b6af4d68 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/subquery_test/SubqueryTestSqlRow.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/subquery_test/SubqueryTestSqlRow.java @@ -13,20 +13,28 @@ import java.math.BigDecimal; import java.util.Optional; import testdb.customers.CustomersId; +import testdb.userdefined.Email; +import testdb.userdefined.FirstName; /** SQL file: subquery_test.sql */ public record SubqueryTestSqlRow( /** Points to {@link testdb.customers.CustomersRow#customerId()} */ @JsonProperty("customer_id") CustomersId customerId, /** Points to {@link testdb.customers.CustomersRow#email()} */ - String email, + /* user-picked */ Email email, /** Points to {@link testdb.customers.CustomersRow#firstName()} */ - @JsonProperty("first_name") String firstName, + @JsonProperty("first_name") /* user-picked */ FirstName firstName, @JsonProperty("order_count") Long orderCount, @JsonProperty("total_spent") BigDecimal totalSpent, /** Points to {@link testdb.brands.BrandsRow#name()} */ @JsonProperty("favorite_brand") Optional favoriteBrand) - implements Tuple6> { + implements Tuple6< + CustomersId, /* user-picked */ + Email, /* user-picked */ + FirstName, + Long, + BigDecimal, + Optional> { /** Points to {@link testdb.customers.CustomersRow#customerId()} */ public SubqueryTestSqlRow withCustomerId(CustomersId customerId) { return new SubqueryTestSqlRow( @@ -35,14 +43,14 @@ public SubqueryTestSqlRow withCustomerId(CustomersId customerId) { ; /** Points to {@link testdb.customers.CustomersRow#email()} */ - public SubqueryTestSqlRow withEmail(String email) { + public SubqueryTestSqlRow withEmail(/* user-picked */ Email email) { return new SubqueryTestSqlRow( customerId, email, firstName, orderCount, totalSpent, favoriteBrand); } ; /** Points to {@link testdb.customers.CustomersRow#firstName()} */ - public SubqueryTestSqlRow withFirstName(String firstName) { + public SubqueryTestSqlRow withFirstName(/* user-picked */ FirstName firstName) { return new SubqueryTestSqlRow( customerId, email, firstName, orderCount, totalSpent, favoriteBrand); } @@ -69,9 +77,9 @@ public SubqueryTestSqlRow withFavoriteBrand(Optional favoriteBrand) { public static RowParser _rowParser = RowParsers.of( - CustomersId.dbType, - MariaTypes.varchar, - MariaTypes.varchar, + CustomersId.mariaType, + Email.mariaType, + FirstName.mariaType, MariaTypes.bigint, MariaTypes.numeric, MariaTypes.varchar.opt(), @@ -94,13 +102,13 @@ public CustomersId _1() { ; @Override - public String _2() { + public /* user-picked */ Email _2() { return email; } ; @Override - public String _3() { + public /* user-picked */ FirstName _3() { return firstName; } ; diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/update_order_status/UpdateOrderStatusSqlRepoImpl.java b/testers/mariadb/java/generated-and-checked-in/testdb/update_order_status/UpdateOrderStatusSqlRepoImpl.java index 48ada3fa82..4cead18522 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/update_order_status/UpdateOrderStatusSqlRepoImpl.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/update_order_status/UpdateOrderStatusSqlRepoImpl.java @@ -27,7 +27,7 @@ public Integer apply(String newStatus, /* user-picked */ OrdersId orderId, Conne " = 'shipped' THEN NOW(6) ELSE shipped_at END,\n delivered_at = CASE WHEN "), Fragment.encode(MariaTypes.varchar, newStatus), Fragment.lit(" = 'delivered' THEN NOW(6) ELSE delivered_at END\nWHERE order_id = "), - Fragment.encode(OrdersId.dbType, orderId), + Fragment.encode(OrdersId.mariaType, orderId), Fragment.lit("\n")) .update() .runUnchecked(c); diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/userdefined/Email.java b/testers/mariadb/java/generated-and-checked-in/testdb/userdefined/Email.java new file mode 100644 index 0000000000..c69efed6a8 --- /dev/null +++ b/testers/mariadb/java/generated-and-checked-in/testdb/userdefined/Email.java @@ -0,0 +1,29 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package testdb.userdefined; + +import com.fasterxml.jackson.annotation.JsonValue; +import dev.typr.foundations.MariaType; +import dev.typr.foundations.MariaTypes; +import dev.typr.foundations.dsl.Bijection; + +/** Shared type `Email` Generated from TypeDefinitions matching */ +public record Email(@JsonValue String value) { + public Email withValue(String value) { + return new Email(value); + } + ; + + @Override + public java.lang.String toString() { + return value.toString(); + } + ; + + public static Bijection bijection = Bijection.of(Email::value, Email::new); + + public static MariaType mariaType = MariaTypes.varchar.bimap(Email::new, Email::value); +} diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/userdefined/FirstName.java b/testers/mariadb/java/generated-and-checked-in/testdb/userdefined/FirstName.java new file mode 100644 index 0000000000..2f6c7b22b2 --- /dev/null +++ b/testers/mariadb/java/generated-and-checked-in/testdb/userdefined/FirstName.java @@ -0,0 +1,31 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package testdb.userdefined; + +import com.fasterxml.jackson.annotation.JsonValue; +import dev.typr.foundations.MariaType; +import dev.typr.foundations.MariaTypes; +import dev.typr.foundations.dsl.Bijection; + +/** Shared type `FirstName` Generated from TypeDefinitions matching */ +public record FirstName(@JsonValue String value) { + public FirstName withValue(String value) { + return new FirstName(value); + } + ; + + @Override + public java.lang.String toString() { + return value.toString(); + } + ; + + public static Bijection bijection = + Bijection.of(FirstName::value, FirstName::new); + + public static MariaType mariaType = + MariaTypes.varchar.bimap(FirstName::new, FirstName::value); +} diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/userdefined/IsActive.java b/testers/mariadb/java/generated-and-checked-in/testdb/userdefined/IsActive.java new file mode 100644 index 0000000000..d58c23384e --- /dev/null +++ b/testers/mariadb/java/generated-and-checked-in/testdb/userdefined/IsActive.java @@ -0,0 +1,31 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package testdb.userdefined; + +import com.fasterxml.jackson.annotation.JsonValue; +import dev.typr.foundations.MariaType; +import dev.typr.foundations.MariaTypes; +import dev.typr.foundations.dsl.Bijection; + +/** Shared type `IsActive` Generated from TypeDefinitions matching */ +public record IsActive(@JsonValue Boolean value) { + public IsActive withValue(Boolean value) { + return new IsActive(value); + } + ; + + @Override + public java.lang.String toString() { + return value.toString(); + } + ; + + public static Bijection bijection = + Bijection.of(IsActive::value, IsActive::new); + + public static MariaType mariaType = + MariaTypes.bool.bimap(IsActive::new, IsActive::value); +} diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/userdefined/IsApproved.java b/testers/mariadb/java/generated-and-checked-in/testdb/userdefined/IsApproved.java new file mode 100644 index 0000000000..7e2fd30bb6 --- /dev/null +++ b/testers/mariadb/java/generated-and-checked-in/testdb/userdefined/IsApproved.java @@ -0,0 +1,31 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package testdb.userdefined; + +import com.fasterxml.jackson.annotation.JsonValue; +import dev.typr.foundations.MariaType; +import dev.typr.foundations.MariaTypes; +import dev.typr.foundations.dsl.Bijection; + +/** Shared type `IsApproved` Generated from TypeDefinitions matching */ +public record IsApproved(@JsonValue Boolean value) { + public IsApproved withValue(Boolean value) { + return new IsApproved(value); + } + ; + + @Override + public java.lang.String toString() { + return value.toString(); + } + ; + + public static Bijection bijection = + Bijection.of(IsApproved::value, IsApproved::new); + + public static MariaType mariaType = + MariaTypes.bool.bimap(IsApproved::new, IsApproved::value); +} diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/userdefined/IsDefault.java b/testers/mariadb/java/generated-and-checked-in/testdb/userdefined/IsDefault.java new file mode 100644 index 0000000000..6d9a8832fa --- /dev/null +++ b/testers/mariadb/java/generated-and-checked-in/testdb/userdefined/IsDefault.java @@ -0,0 +1,31 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package testdb.userdefined; + +import com.fasterxml.jackson.annotation.JsonValue; +import dev.typr.foundations.MariaType; +import dev.typr.foundations.MariaTypes; +import dev.typr.foundations.dsl.Bijection; + +/** Shared type `IsDefault` Generated from TypeDefinitions matching */ +public record IsDefault(@JsonValue Boolean value) { + public IsDefault withValue(Boolean value) { + return new IsDefault(value); + } + ; + + @Override + public java.lang.String toString() { + return value.toString(); + } + ; + + public static Bijection bijection = + Bijection.of(IsDefault::value, IsDefault::new); + + public static MariaType mariaType = + MariaTypes.bool.bimap(IsDefault::new, IsDefault::value); +} diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/userdefined/IsPrimary.java b/testers/mariadb/java/generated-and-checked-in/testdb/userdefined/IsPrimary.java new file mode 100644 index 0000000000..2ba8f1c781 --- /dev/null +++ b/testers/mariadb/java/generated-and-checked-in/testdb/userdefined/IsPrimary.java @@ -0,0 +1,31 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package testdb.userdefined; + +import com.fasterxml.jackson.annotation.JsonValue; +import dev.typr.foundations.MariaType; +import dev.typr.foundations.MariaTypes; +import dev.typr.foundations.dsl.Bijection; + +/** Shared type `IsPrimary` Generated from TypeDefinitions matching */ +public record IsPrimary(@JsonValue Boolean value) { + public IsPrimary withValue(Boolean value) { + return new IsPrimary(value); + } + ; + + @Override + public java.lang.String toString() { + return value.toString(); + } + ; + + public static Bijection bijection = + Bijection.of(IsPrimary::value, IsPrimary::new); + + public static MariaType mariaType = + MariaTypes.bool.bimap(IsPrimary::new, IsPrimary::value); +} diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/userdefined/IsVerifiedPurchase.java b/testers/mariadb/java/generated-and-checked-in/testdb/userdefined/IsVerifiedPurchase.java new file mode 100644 index 0000000000..f728aeb186 --- /dev/null +++ b/testers/mariadb/java/generated-and-checked-in/testdb/userdefined/IsVerifiedPurchase.java @@ -0,0 +1,31 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package testdb.userdefined; + +import com.fasterxml.jackson.annotation.JsonValue; +import dev.typr.foundations.MariaType; +import dev.typr.foundations.MariaTypes; +import dev.typr.foundations.dsl.Bijection; + +/** Shared type `IsVerifiedPurchase` Generated from TypeDefinitions matching */ +public record IsVerifiedPurchase(@JsonValue Boolean value) { + public IsVerifiedPurchase withValue(Boolean value) { + return new IsVerifiedPurchase(value); + } + ; + + @Override + public java.lang.String toString() { + return value.toString(); + } + ; + + public static Bijection bijection = + Bijection.of(IsVerifiedPurchase::value, IsVerifiedPurchase::new); + + public static MariaType mariaType = + MariaTypes.bool.bimap(IsVerifiedPurchase::new, IsVerifiedPurchase::value); +} diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/userdefined/LastName.java b/testers/mariadb/java/generated-and-checked-in/testdb/userdefined/LastName.java new file mode 100644 index 0000000000..b7d48e97d8 --- /dev/null +++ b/testers/mariadb/java/generated-and-checked-in/testdb/userdefined/LastName.java @@ -0,0 +1,31 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package testdb.userdefined; + +import com.fasterxml.jackson.annotation.JsonValue; +import dev.typr.foundations.MariaType; +import dev.typr.foundations.MariaTypes; +import dev.typr.foundations.dsl.Bijection; + +/** Shared type `LastName` Generated from TypeDefinitions matching */ +public record LastName(@JsonValue String value) { + public LastName withValue(String value) { + return new LastName(value); + } + ; + + @Override + public java.lang.String toString() { + return value.toString(); + } + ; + + public static Bijection bijection = + Bijection.of(LastName::value, LastName::new); + + public static MariaType mariaType = + MariaTypes.varchar.bimap(LastName::new, LastName::value); +} diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/v_customer_summary/VCustomerSummaryViewFields.java b/testers/mariadb/java/generated-and-checked-in/testdb/v_customer_summary/VCustomerSummaryViewFields.java index 77662e0245..2aae0c4ed9 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/v_customer_summary/VCustomerSummaryViewFields.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/v_customer_summary/VCustomerSummaryViewFields.java @@ -21,11 +21,12 @@ import java.util.Optional; import testdb.customer_status.CustomerStatusId; import testdb.customers.CustomersId; +import testdb.userdefined.Email; public class VCustomerSummaryViewFields extends TupleExpr10< - CustomersId, - String, + CustomersId, /* user-picked */ + Email, String, String, CustomerStatusId, @@ -53,18 +54,18 @@ public Field customerId() { Optional.empty(), Optional.empty(), (row, value) -> row.withCustomerId(value), - CustomersId.dbType); + CustomersId.mariaType); } - public Field email() { - return new Field( + public Field email() { + return new Field( _path, "email", VCustomerSummaryViewRow::email, Optional.empty(), Optional.empty(), (row, value) -> row.withEmail(value), - MariaTypes.varchar); + Email.mariaType); } public OptField fullName() { @@ -97,7 +98,7 @@ public Field status() { Optional.empty(), Optional.empty(), (row, value) -> row.withStatus(value), - CustomerStatusId.dbType); + CustomerStatusId.mariaType); } public Field createdAt() { @@ -192,7 +193,7 @@ public SqlExpr _1() { } @Override - public SqlExpr _2() { + public SqlExpr _2() { return email(); } diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/v_customer_summary/VCustomerSummaryViewRow.java b/testers/mariadb/java/generated-and-checked-in/testdb/v_customer_summary/VCustomerSummaryViewRow.java index 9cfd9d3898..2735b9a9ad 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/v_customer_summary/VCustomerSummaryViewRow.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/v_customer_summary/VCustomerSummaryViewRow.java @@ -15,13 +15,14 @@ import java.util.Optional; import testdb.customer_status.CustomerStatusId; import testdb.customers.CustomersId; +import testdb.userdefined.Email; /** View: v_customer_summary VIEW */ public record VCustomerSummaryViewRow( /** Default: 0 Points to {@link testdb.customers.CustomersRow#customerId()} */ @JsonProperty("customer_id") CustomersId customerId, /** Points to {@link testdb.customers.CustomersRow#email()} */ - String email, + /* user-picked */ Email email, /** Default: NULL */ @JsonProperty("full_name") Optional fullName, /** Default: 'bronze' Points to {@link testdb.customers.CustomersRow#tier()} */ @@ -39,8 +40,8 @@ public record VCustomerSummaryViewRow( /** Default: current_timestamp(6) */ @JsonProperty("last_order_date") Optional lastOrderDate) implements Tuple10< - CustomersId, - String, + CustomersId, /* user-picked */ + Email, Optional, String, CustomerStatusId, @@ -66,7 +67,7 @@ public VCustomerSummaryViewRow withCustomerId(CustomersId customerId) { ; /** Points to {@link testdb.customers.CustomersRow#email()} */ - public VCustomerSummaryViewRow withEmail(String email) { + public VCustomerSummaryViewRow withEmail(/* user-picked */ Email email) { return new VCustomerSummaryViewRow( customerId, email, @@ -211,11 +212,11 @@ public VCustomerSummaryViewRow withLastOrderDate(Optional lastOrd public static RowParser _rowParser = RowParsers.of( - CustomersId.dbType, - MariaTypes.varchar, + CustomersId.mariaType, + Email.mariaType, MariaTypes.varchar.opt(), MariaTypes.text, - CustomerStatusId.dbType, + CustomerStatusId.mariaType, MariaTypes.datetime, MariaTypes.datetime.opt(), MariaTypes.bigint, @@ -250,7 +251,7 @@ public Optional _10() { ; @Override - public String _2() { + public /* user-picked */ Email _2() { return email; } ; diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/v_inventory_status/VInventoryStatusViewFields.java b/testers/mariadb/java/generated-and-checked-in/testdb/v_inventory_status/VInventoryStatusViewFields.java index 2451e6cc38..a4637eae11 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/v_inventory_status/VInventoryStatusViewFields.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/v_inventory_status/VInventoryStatusViewFields.java @@ -56,7 +56,7 @@ public Field productId() { Optional.empty(), Optional.empty(), (row, value) -> row.withProductId(value), - ProductsId.dbType); + ProductsId.mariaType); } public Field sku() { @@ -89,7 +89,7 @@ public Field warehouseId() { Optional.empty(), Optional.empty(), (row, value) -> row.withWarehouseId(value), - WarehousesId.dbType); + WarehousesId.mariaType); } public Field warehouseCode() { diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/v_inventory_status/VInventoryStatusViewRow.java b/testers/mariadb/java/generated-and-checked-in/testdb/v_inventory_status/VInventoryStatusViewRow.java index f1f2f4cdc6..a8924c0a2d 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/v_inventory_status/VInventoryStatusViewRow.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/v_inventory_status/VInventoryStatusViewRow.java @@ -342,10 +342,10 @@ public VInventoryStatusViewRow withLastCountedAt(Optional lastCou public static RowParser _rowParser = RowParsers.of( - ProductsId.dbType, + ProductsId.mariaType, MariaTypes.varchar, MariaTypes.varchar, - WarehousesId.dbType, + WarehousesId.mariaType, MariaTypes.char_, MariaTypes.varchar, MariaTypes.int_, diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/v_order_details/VOrderDetailsViewFields.java b/testers/mariadb/java/generated-and-checked-in/testdb/v_order_details/VOrderDetailsViewFields.java index 8605003ada..b22e3e55b5 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/v_order_details/VOrderDetailsViewFields.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/v_order_details/VOrderDetailsViewFields.java @@ -20,6 +20,7 @@ import java.util.List; import java.util.Optional; import testdb.orders.OrdersId; +import testdb.userdefined.Email; public class VOrderDetailsViewFields extends TupleExpr14< @@ -29,8 +30,8 @@ public class VOrderDetailsViewFields String, BigDecimal, String, - LocalDateTime, - String, + LocalDateTime, /* user-picked */ + Email, String, Long, BigDecimal, @@ -56,7 +57,7 @@ public Field orderId() { Optional.empty(), Optional.empty(), (row, value) -> row.withOrderId(value), - OrdersId.dbType); + OrdersId.mariaType); } public Field orderNumber() { @@ -125,15 +126,15 @@ public Field orderedAt() { MariaTypes.datetime); } - public Field customerEmail() { - return new Field( + public Field customerEmail() { + return new Field( _path, "customer_email", VOrderDetailsViewRow::customerEmail, Optional.empty(), Optional.empty(), (row, value) -> row.withCustomerEmail(value), - MariaTypes.varchar); + Email.mariaType); } public OptField customerName() { @@ -273,7 +274,7 @@ public SqlExpr _7() { } @Override - public SqlExpr _8() { + public SqlExpr _8() { return customerEmail(); } diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/v_order_details/VOrderDetailsViewRow.java b/testers/mariadb/java/generated-and-checked-in/testdb/v_order_details/VOrderDetailsViewRow.java index 451a3bfdfd..c19844e10d 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/v_order_details/VOrderDetailsViewRow.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/v_order_details/VOrderDetailsViewRow.java @@ -14,6 +14,7 @@ import java.time.LocalDateTime; import java.util.Optional; import testdb.orders.OrdersId; +import testdb.userdefined.Email; /** View: v_order_details VIEW */ public record VOrderDetailsViewRow( @@ -32,7 +33,7 @@ public record VOrderDetailsViewRow( /** Default: current_timestamp(6) Points to {@link testdb.orders.OrdersRow#orderedAt()} */ @JsonProperty("ordered_at") LocalDateTime orderedAt, /** Points to {@link testdb.customers.CustomersRow#email()} */ - @JsonProperty("customer_email") String customerEmail, + @JsonProperty("customer_email") /* user-picked */ Email customerEmail, /** Default: NULL */ @JsonProperty("customer_name") Optional customerName, /** Default: 0 */ @@ -52,8 +53,8 @@ public record VOrderDetailsViewRow( String, BigDecimal, String, - LocalDateTime, - String, + LocalDateTime, /* user-picked */ + Email, Optional, Long, Optional, @@ -201,7 +202,7 @@ public VOrderDetailsViewRow withOrderedAt(LocalDateTime orderedAt) { ; /** Points to {@link testdb.customers.CustomersRow#email()} */ - public VOrderDetailsViewRow withCustomerEmail(String customerEmail) { + public VOrderDetailsViewRow withCustomerEmail(/* user-picked */ Email customerEmail) { return new VOrderDetailsViewRow( orderId, orderNumber, @@ -342,14 +343,14 @@ public VOrderDetailsViewRow withCarrierName(Optional carrierName) { public static RowParser _rowParser = RowParsers.of( - OrdersId.dbType, + OrdersId.mariaType, MariaTypes.varchar, MariaTypes.text, MariaTypes.text, MariaTypes.numeric, MariaTypes.char_, MariaTypes.datetime, - MariaTypes.varchar, + Email.mariaType, MariaTypes.varchar.opt(), MariaTypes.bigint, MariaTypes.numeric.opt(), @@ -449,7 +450,7 @@ public LocalDateTime _7() { ; @Override - public String _8() { + public /* user-picked */ Email _8() { return customerEmail; } ; diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/v_product_catalog/VProductCatalogViewFields.java b/testers/mariadb/java/generated-and-checked-in/testdb/v_product_catalog/VProductCatalogViewFields.java index aaea59ff88..b6cc7d45e0 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/v_product_catalog/VProductCatalogViewFields.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/v_product_catalog/VProductCatalogViewFields.java @@ -53,7 +53,7 @@ public Field productId() { Optional.empty(), Optional.empty(), (row, value) -> row.withProductId(value), - ProductsId.dbType); + ProductsId.mariaType); } public Field sku() { @@ -119,7 +119,7 @@ public OptField tags() { Optional.empty(), Optional.empty(), (row, value) -> row.withTags(value), - BestsellerClearanceFSet.dbType); + BestsellerClearanceFSet.mariaType); } public OptField brandName() { diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/v_product_catalog/VProductCatalogViewRow.java b/testers/mariadb/java/generated-and-checked-in/testdb/v_product_catalog/VProductCatalogViewRow.java index e34a252d18..ac49043407 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/v_product_catalog/VProductCatalogViewRow.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/v_product_catalog/VProductCatalogViewRow.java @@ -240,13 +240,13 @@ public VProductCatalogViewRow withReviewCount(Long reviewCount) { public static RowParser _rowParser = RowParsers.of( - ProductsId.dbType, + ProductsId.mariaType, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.varchar.opt(), MariaTypes.numeric, MariaTypes.text, - BestsellerClearanceFSet.dbType.opt(), + BestsellerClearanceFSet.mariaType.opt(), MariaTypes.varchar.opt(), MariaTypes.numeric, MariaTypes.numeric, diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/v_warehouse_coverage/VWarehouseCoverageViewFields.java b/testers/mariadb/java/generated-and-checked-in/testdb/v_warehouse_coverage/VWarehouseCoverageViewFields.java index eefb5c44f3..183d6fde4b 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/v_warehouse_coverage/VWarehouseCoverageViewFields.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/v_warehouse_coverage/VWarehouseCoverageViewFields.java @@ -18,11 +18,21 @@ import java.math.BigDecimal; import java.util.List; import java.util.Optional; +import testdb.userdefined.IsActive; import testdb.warehouses.WarehousesId; public class VWarehouseCoverageViewFields extends TupleExpr10< - WarehousesId, String, String, String, String, String, String, Boolean, Long, BigDecimal> + WarehousesId, + String, + String, + String, + String, + String, + String, /* user-picked */ + IsActive, + Long, + BigDecimal> implements RelationStructure, FieldsBase { List _path; @@ -42,7 +52,7 @@ public Field warehouseId() { Optional.empty(), Optional.empty(), (row, value) -> row.withWarehouseId(value), - WarehousesId.dbType); + WarehousesId.mariaType); } public Field code() { @@ -111,15 +121,15 @@ public Field timezone() { MariaTypes.varchar); } - public Field isActive() { - return new Field( + public Field isActive() { + return new Field( _path, "is_active", VWarehouseCoverageViewRow::isActive, Optional.empty(), Optional.empty(), (row, value) -> row.withIsActive(value), - MariaTypes.bool); + IsActive.mariaType); } public Field productsStocked() { @@ -211,7 +221,7 @@ public SqlExpr _7() { } @Override - public SqlExpr _8() { + public SqlExpr _8() { return isActive(); } diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/v_warehouse_coverage/VWarehouseCoverageViewRow.java b/testers/mariadb/java/generated-and-checked-in/testdb/v_warehouse_coverage/VWarehouseCoverageViewRow.java index af746563d2..947d233909 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/v_warehouse_coverage/VWarehouseCoverageViewRow.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/v_warehouse_coverage/VWarehouseCoverageViewRow.java @@ -12,6 +12,7 @@ import dev.typr.foundations.Tuple.Tuple10; import java.math.BigDecimal; import java.util.Optional; +import testdb.userdefined.IsActive; import testdb.warehouses.WarehousesId; /** View: v_warehouse_coverage VIEW */ @@ -31,7 +32,7 @@ public record VWarehouseCoverageViewRow( /** Default: 'UTC' Points to {@link testdb.warehouses.WarehousesRow#timezone()} */ String timezone, /** Default: 1 Points to {@link testdb.warehouses.WarehousesRow#isActive()} */ - @JsonProperty("is_active") Boolean isActive, + @JsonProperty("is_active") /* user-picked */ IsActive isActive, /** Default: 0 */ @JsonProperty("products_stocked") Long productsStocked, /** Default: NULL */ @@ -43,8 +44,8 @@ public record VWarehouseCoverageViewRow( String, Optional, Optional, - String, - Boolean, + String, /* user-picked */ + IsActive, Long, Optional> { /** Default: 0 Points to {@link testdb.warehouses.WarehousesRow#warehouseId()} */ @@ -160,7 +161,7 @@ public VWarehouseCoverageViewRow withTimezone(String timezone) { ; /** Default: 1 Points to {@link testdb.warehouses.WarehousesRow#isActive()} */ - public VWarehouseCoverageViewRow withIsActive(Boolean isActive) { + public VWarehouseCoverageViewRow withIsActive(/* user-picked */ IsActive isActive) { return new VWarehouseCoverageViewRow( warehouseId, code, @@ -209,14 +210,14 @@ public VWarehouseCoverageViewRow withTotalInventory(Optional totalIn public static RowParser _rowParser = RowParsers.of( - WarehousesId.dbType, + WarehousesId.mariaType, MariaTypes.char_, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.longtext.opt(), MariaTypes.longtext.opt(), MariaTypes.varchar, - MariaTypes.bool, + IsActive.mariaType, MariaTypes.bigint, MariaTypes.numeric.opt(), VWarehouseCoverageViewRow::new, @@ -284,7 +285,7 @@ public String _7() { ; @Override - public Boolean _8() { + public /* user-picked */ IsActive _8() { return isActive; } ; diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/warehouses/WarehousesFields.java b/testers/mariadb/java/generated-and-checked-in/testdb/warehouses/WarehousesFields.java index 0b6465e4f9..fe4e8ee085 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/warehouses/WarehousesFields.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/warehouses/WarehousesFields.java @@ -20,10 +20,21 @@ import java.util.Optional; import org.mariadb.jdbc.type.Point; import org.mariadb.jdbc.type.Polygon; +import testdb.userdefined.Email; +import testdb.userdefined.IsActive; public class WarehousesFields extends TupleExpr10< - WarehousesId, String, String, String, Point, Polygon, String, Boolean, String, String> + WarehousesId, + String, + String, + String, + Point, + Polygon, + String, /* user-picked */ + IsActive, /* user-picked */ + Email, + String> implements RelationStructure, FieldsBase { List _path; @@ -42,7 +53,7 @@ public IdField warehouseId() { Optional.empty(), Optional.empty(), (row, value) -> row.withWarehouseId(value), - WarehousesId.dbType); + WarehousesId.mariaType); } public Field code() { @@ -111,26 +122,26 @@ public Field timezone() { MariaTypes.varchar); } - public Field isActive() { - return new Field( + public Field isActive() { + return new Field( _path, "is_active", WarehousesRow::isActive, Optional.empty(), Optional.empty(), (row, value) -> row.withIsActive(value), - MariaTypes.bool); + IsActive.mariaType); } - public OptField contactEmail() { - return new OptField( + public OptField contactEmail() { + return new OptField( _path, "contact_email", WarehousesRow::contactEmail, Optional.empty(), Optional.empty(), (row, value) -> row.withContactEmail(value), - MariaTypes.varchar); + Email.mariaType); } public OptField contactPhone() { @@ -210,12 +221,12 @@ public SqlExpr _7() { } @Override - public SqlExpr _8() { + public SqlExpr _8() { return isActive(); } @Override - public SqlExpr _9() { + public SqlExpr _9() { return contactEmail(); } diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/warehouses/WarehousesId.java b/testers/mariadb/java/generated-and-checked-in/testdb/warehouses/WarehousesId.java index ad7b579012..90cb393497 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/warehouses/WarehousesId.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/warehouses/WarehousesId.java @@ -27,6 +27,6 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(WarehousesId::value, WarehousesId::new); - public static MariaType dbType = + public static MariaType mariaType = MariaTypes.tinyintUnsigned.bimap(WarehousesId::new, WarehousesId::value); } diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/warehouses/WarehousesRepoImpl.java b/testers/mariadb/java/generated-and-checked-in/testdb/warehouses/WarehousesRepoImpl.java index 28a40dc7de..50850bd3e6 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/warehouses/WarehousesRepoImpl.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/warehouses/WarehousesRepoImpl.java @@ -20,6 +20,8 @@ import java.util.List; import java.util.Map; import java.util.Optional; +import testdb.userdefined.Email; +import testdb.userdefined.IsActive; public class WarehousesRepoImpl implements WarehousesRepo { @Override @@ -31,7 +33,7 @@ public DeleteBuilder delete() { public Boolean deleteById(WarehousesId warehouseId, Connection c) { return interpolate( Fragment.lit("delete from `warehouses` where `warehouse_id` = "), - Fragment.encode(WarehousesId.dbType, warehouseId), + Fragment.encode(WarehousesId.mariaType, warehouseId), Fragment.lit("")) .update() .runUnchecked(c) @@ -42,7 +44,7 @@ public Boolean deleteById(WarehousesId warehouseId, Connection c) { public Integer deleteByIds(WarehousesId[] warehouseIds, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : warehouseIds) { - fragments.add(Fragment.encode(WarehousesId.dbType, id)); + fragments.add(Fragment.encode(WarehousesId.mariaType, id)); } ; return Fragment.interpolate( @@ -72,9 +74,9 @@ public WarehousesRow insert(WarehousesRow unsaved, Connection c) { Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.timezone()), Fragment.lit(", "), - Fragment.encode(MariaTypes.bool, unsaved.isActive()), + Fragment.encode(IsActive.mariaType, unsaved.isActive()), Fragment.lit(", "), - Fragment.encode(MariaTypes.varchar.opt(), unsaved.contactEmail()), + Fragment.encode(Email.mariaType.opt(), unsaved.contactEmail()), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.opt(), unsaved.contactPhone()), Fragment.lit( @@ -127,7 +129,7 @@ public WarehousesRow insert(WarehousesRowUnsaved unsaved, Connection c) { () -> {}, value -> { columns.add(Fragment.lit("`is_active`")); - values.add(interpolate(Fragment.encode(MariaTypes.bool, value), Fragment.lit(""))); + values.add(interpolate(Fragment.encode(IsActive.mariaType, value), Fragment.lit(""))); }); ; unsaved @@ -137,7 +139,7 @@ public WarehousesRow insert(WarehousesRowUnsaved unsaved, Connection c) { value -> { columns.add(Fragment.lit("`contact_email`")); values.add( - interpolate(Fragment.encode(MariaTypes.varchar.opt(), value), Fragment.lit(""))); + interpolate(Fragment.encode(Email.mariaType.opt(), value), Fragment.lit(""))); }); ; unsaved @@ -190,7 +192,7 @@ public Optional selectById(WarehousesId warehouseId, Connection c + " `timezone`, `is_active`, `contact_email`, `contact_phone`\n" + "from `warehouses`\n" + "where `warehouse_id` = "), - Fragment.encode(WarehousesId.dbType, warehouseId), + Fragment.encode(WarehousesId.mariaType, warehouseId), Fragment.lit("")) .query(WarehousesRow._rowParser.first()) .runUnchecked(c); @@ -200,7 +202,7 @@ public Optional selectById(WarehousesId warehouseId, Connection c public List selectByIds(WarehousesId[] warehouseIds, Connection c) { ArrayList fragments = new ArrayList<>(); for (var id : warehouseIds) { - fragments.add(Fragment.encode(WarehousesId.dbType, id)); + fragments.add(Fragment.encode(WarehousesId.mariaType, id)); } ; return Fragment.interpolate( @@ -260,13 +262,13 @@ public Boolean update(WarehousesRow row, Connection c) { Fragment.lit(",\n`timezone` = "), Fragment.encode(MariaTypes.varchar, row.timezone()), Fragment.lit(",\n`is_active` = "), - Fragment.encode(MariaTypes.bool, row.isActive()), + Fragment.encode(IsActive.mariaType, row.isActive()), Fragment.lit(",\n`contact_email` = "), - Fragment.encode(MariaTypes.varchar.opt(), row.contactEmail()), + Fragment.encode(Email.mariaType.opt(), row.contactEmail()), Fragment.lit(",\n`contact_phone` = "), Fragment.encode(MariaTypes.varchar.opt(), row.contactPhone()), Fragment.lit("\nwhere `warehouse_id` = "), - Fragment.encode(WarehousesId.dbType, warehouseId), + Fragment.encode(WarehousesId.mariaType, warehouseId), Fragment.lit("")) .update() .runUnchecked(c) @@ -281,7 +283,7 @@ public WarehousesRow upsert(WarehousesRow unsaved, Connection c) { + " `service_area`, `timezone`, `is_active`, `contact_email`," + " `contact_phone`)\n" + "VALUES ("), - Fragment.encode(WarehousesId.dbType, unsaved.warehouseId()), + Fragment.encode(WarehousesId.mariaType, unsaved.warehouseId()), Fragment.lit(", "), Fragment.encode(MariaTypes.char_, unsaved.code()), Fragment.lit(", "), @@ -295,9 +297,9 @@ public WarehousesRow upsert(WarehousesRow unsaved, Connection c) { Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.timezone()), Fragment.lit(", "), - Fragment.encode(MariaTypes.bool, unsaved.isActive()), + Fragment.encode(IsActive.mariaType, unsaved.isActive()), Fragment.lit(", "), - Fragment.encode(MariaTypes.varchar.opt(), unsaved.contactEmail()), + Fragment.encode(Email.mariaType.opt(), unsaved.contactEmail()), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.opt(), unsaved.contactPhone()), Fragment.lit( diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/warehouses/WarehousesRow.java b/testers/mariadb/java/generated-and-checked-in/testdb/warehouses/WarehousesRow.java index 2699525eb8..600a019f3f 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/warehouses/WarehousesRow.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/warehouses/WarehousesRow.java @@ -14,6 +14,8 @@ import org.mariadb.jdbc.type.Point; import org.mariadb.jdbc.type.Polygon; import testdb.customtypes.Defaulted; +import testdb.userdefined.Email; +import testdb.userdefined.IsActive; /** Table: warehouses Primary key: warehouse_id */ public record WarehousesRow( @@ -32,9 +34,9 @@ public record WarehousesRow( /** Default: 'UTC' */ String timezone, /** Default: 1 */ - @JsonProperty("is_active") Boolean isActive, + @JsonProperty("is_active") /* user-picked */ IsActive isActive, /** Default: NULL */ - @JsonProperty("contact_email") Optional contactEmail, + @JsonProperty("contact_email") Optional contactEmail, /** Default: NULL */ @JsonProperty("contact_phone") Optional contactPhone) implements Tuple10< @@ -44,9 +46,9 @@ public record WarehousesRow( String, Point, Optional, - String, - Boolean, - Optional, + String, /* user-picked */ + IsActive, + Optional, Optional> { /** AUTO_INCREMENT */ public WarehousesRow withWarehouseId(WarehousesId warehouseId) { @@ -161,7 +163,7 @@ public WarehousesRow withTimezone(String timezone) { ; /** Default: 1 */ - public WarehousesRow withIsActive(Boolean isActive) { + public WarehousesRow withIsActive(/* user-picked */ IsActive isActive) { return new WarehousesRow( warehouseId, code, @@ -177,7 +179,7 @@ public WarehousesRow withIsActive(Boolean isActive) { ; /** Default: NULL */ - public WarehousesRow withContactEmail(Optional contactEmail) { + public WarehousesRow withContactEmail(Optional contactEmail) { return new WarehousesRow( warehouseId, code, @@ -210,15 +212,15 @@ public WarehousesRow withContactPhone(Optional contactPhone) { public static RowParser _rowParser = RowParsers.of( - WarehousesId.dbType, + WarehousesId.mariaType, MariaTypes.char_, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.point, MariaTypes.polygon.opt(), MariaTypes.varchar, - MariaTypes.bool, - MariaTypes.varchar.opt(), + IsActive.mariaType, + Email.mariaType.opt(), MariaTypes.varchar.opt(), WarehousesRow::new, row -> @@ -285,13 +287,13 @@ public String _7() { ; @Override - public Boolean _8() { + public /* user-picked */ IsActive _8() { return isActive; } ; @Override - public Optional _9() { + public Optional _9() { return contactEmail; } ; @@ -304,8 +306,8 @@ public WarehousesId id() { public WarehousesRowUnsaved toUnsavedRow( Defaulted> serviceArea, Defaulted timezone, - Defaulted isActive, - Defaulted> contactEmail, + Defaulted isActive, + Defaulted> contactEmail, Defaulted> contactPhone) { return new WarehousesRowUnsaved( code, name, address, location, serviceArea, timezone, isActive, contactEmail, contactPhone); diff --git a/testers/mariadb/java/generated-and-checked-in/testdb/warehouses/WarehousesRowUnsaved.java b/testers/mariadb/java/generated-and-checked-in/testdb/warehouses/WarehousesRowUnsaved.java index 42026fdbfb..be7f0b4cc2 100644 --- a/testers/mariadb/java/generated-and-checked-in/testdb/warehouses/WarehousesRowUnsaved.java +++ b/testers/mariadb/java/generated-and-checked-in/testdb/warehouses/WarehousesRowUnsaved.java @@ -11,6 +11,8 @@ import org.mariadb.jdbc.type.Polygon; import testdb.customtypes.Defaulted; import testdb.customtypes.Defaulted.UseDefault; +import testdb.userdefined.Email; +import testdb.userdefined.IsActive; /** This class corresponds to a row in table `warehouses` which has not been persisted yet */ public record WarehousesRowUnsaved( @@ -27,9 +29,9 @@ public record WarehousesRowUnsaved( /** Default: 'UTC' */ Defaulted timezone, /** Default: 1 */ - @JsonProperty("is_active") Defaulted isActive, + @JsonProperty("is_active") Defaulted isActive, /** Default: NULL */ - @JsonProperty("contact_email") Defaulted> contactEmail, + @JsonProperty("contact_email") Defaulted> contactEmail, /** Default: NULL */ @JsonProperty("contact_phone") Defaulted> contactPhone) { public WarehousesRowUnsaved( @@ -97,14 +99,15 @@ public WarehousesRowUnsaved withTimezone(Defaulted timezone) { ; /** Default: 1 */ - public WarehousesRowUnsaved withIsActive(Defaulted isActive) { + public WarehousesRowUnsaved withIsActive(Defaulted isActive) { return new WarehousesRowUnsaved( code, name, address, location, serviceArea, timezone, isActive, contactEmail, contactPhone); } ; /** Default: NULL */ - public WarehousesRowUnsaved withContactEmail(Defaulted> contactEmail) { + public WarehousesRowUnsaved withContactEmail( + Defaulted> contactEmail) { return new WarehousesRowUnsaved( code, name, address, location, serviceArea, timezone, isActive, contactEmail, contactPhone); } @@ -120,8 +123,8 @@ public WarehousesRowUnsaved withContactPhone(Defaulted> contact public WarehousesRow toRow( java.util.function.Supplier> serviceAreaDefault, java.util.function.Supplier timezoneDefault, - java.util.function.Supplier isActiveDefault, - java.util.function.Supplier> contactEmailDefault, + java.util.function.Supplier isActiveDefault, + java.util.function.Supplier> contactEmailDefault, java.util.function.Supplier> contactPhoneDefault, java.util.function.Supplier warehouseIdDefault) { return new WarehousesRow( diff --git a/testers/mariadb/java/src/java/testdb/CompositeIdTest.java b/testers/mariadb/java/src/java/testdb/CompositeIdTest.java index 0060280bc4..a275740b4d 100644 --- a/testers/mariadb/java/src/java/testdb/CompositeIdTest.java +++ b/testers/mariadb/java/src/java/testdb/CompositeIdTest.java @@ -11,6 +11,7 @@ import testdb.customtypes.Defaulted.UseDefault; import testdb.product_categories.*; import testdb.products.*; +import testdb.userdefined.IsPrimary; /** Tests for composite primary keys using the product_categories table. */ public class CompositeIdTest { @@ -76,7 +77,7 @@ public void testSelectByCompositeId() { new ProductCategoriesRowUnsaved( product.productId(), category.categoryId(), - new Provided<>(true), + new Provided<>(new IsPrimary(true)), new Provided<>((short) 1)), c); @@ -86,7 +87,7 @@ public void testSelectByCompositeId() { assertTrue(selected.isPresent()); assertEquals(product.productId(), selected.get().productId()); assertEquals(category.categoryId(), selected.get().categoryId()); - assertTrue(selected.get().isPrimary()); + assertEquals(new IsPrimary(true), selected.get().isPrimary()); assertEquals((short) 1, (short) selected.get().sortOrder()); }); } @@ -137,14 +138,14 @@ public void testSelectByIdsTracked() { new ProductCategoriesRowUnsaved( product.productId(), category1.categoryId(), - new Provided<>(true), + new Provided<>(new IsPrimary(true)), new Provided<>((short) 1)), c); productCategoriesRepo.insert( new ProductCategoriesRowUnsaved( product.productId(), category2.categoryId(), - new Provided<>(false), + new Provided<>(new IsPrimary(false)), new Provided<>((short) 2)), c); @@ -155,8 +156,8 @@ public void testSelectByIdsTracked() { var tracked = productCategoriesRepo.selectByIdsTracked(ids, c); assertEquals(2, tracked.size()); - assertTrue(tracked.get(id1).isPrimary()); - assertFalse(tracked.get(id2).isPrimary()); + assertEquals(new IsPrimary(true), tracked.get(id1).isPrimary()); + assertEquals(new IsPrimary(false), tracked.get(id2).isPrimary()); }); } @@ -174,17 +175,17 @@ public void testUpdateWithCompositeId() { new ProductCategoriesRowUnsaved( product.productId(), category.categoryId(), - new Provided<>(false), + new Provided<>(new IsPrimary(false)), new Provided<>((short) 10)), c); - var updated = inserted.withIsPrimary(true).withSortOrder((short) 5); + var updated = inserted.withIsPrimary(new IsPrimary(true)).withSortOrder((short) 5); var success = productCategoriesRepo.update(updated, c); assertTrue(success); var selected = productCategoriesRepo.selectById(inserted.compositeId(), c); assertTrue(selected.isPresent()); - assertTrue(selected.get().isPrimary()); + assertEquals(new IsPrimary(true), selected.get().isPrimary()); assertEquals((short) 5, (short) selected.get().sortOrder()); }); } @@ -255,16 +256,16 @@ public void testUpsertWithCompositeId() { var row = new ProductCategoriesRow( - product.productId(), category.categoryId(), false, (short) 1); + product.productId(), category.categoryId(), new IsPrimary(false), (short) 1); var inserted = productCategoriesRepo.upsert(row, c); - assertFalse(inserted.isPrimary()); + assertEquals(new IsPrimary(false), inserted.isPrimary()); assertEquals((short) 1, (short) inserted.sortOrder()); var updatedRow = new ProductCategoriesRow( - product.productId(), category.categoryId(), true, (short) 99); + product.productId(), category.categoryId(), new IsPrimary(true), (short) 99); var updated = productCategoriesRepo.upsert(updatedRow, c); - assertTrue(updated.isPrimary()); + assertEquals(new IsPrimary(true), updated.isPrimary()); assertEquals((short) 99, (short) updated.sortOrder()); var all = productCategoriesRepo.selectAll(c); @@ -288,19 +289,22 @@ public void testDSLWithCompositeId() { new ProductCategoriesRowUnsaved( product1.productId(), category.categoryId(), - new Provided<>(true), + new Provided<>(new IsPrimary(true)), new Provided<>((short) 1)), c); productCategoriesRepo.insert( new ProductCategoriesRowUnsaved( product2.productId(), category.categoryId(), - new Provided<>(false), + new Provided<>(new IsPrimary(false)), new Provided<>((short) 2)), c); var primaries = - productCategoriesRepo.select().where(f -> f.isPrimary().isEqual(true)).toList(c); + productCategoriesRepo + .select() + .where(f -> f.isPrimary().isEqual(new IsPrimary(true))) + .toList(c); assertEquals(1, primaries.size()); assertEquals(product1.productId(), primaries.get(0).productId()); @@ -315,11 +319,14 @@ public void testDSLWithCompositeId() { new ProductCategoriesId(product2.productId(), category.categoryId()), c); assertEquals((short) 100, (short) updated.get().sortOrder()); - productCategoriesRepo.delete().where(f -> f.isPrimary().isEqual(false)).execute(c); + productCategoriesRepo + .delete() + .where(f -> f.isPrimary().isEqual(new IsPrimary(false))) + .execute(c); var remaining = productCategoriesRepo.selectAll(c); assertEquals(1, remaining.size()); - assertTrue(remaining.get(0).isPrimary()); + assertEquals(new IsPrimary(true), remaining.get(0).isPrimary()); }); } } diff --git a/testers/mariadb/java/src/java/testdb/ForeignKeyTest.java b/testers/mariadb/java/src/java/testdb/ForeignKeyTest.java index 12b9768c5c..a6a164bfc9 100644 --- a/testers/mariadb/java/src/java/testdb/ForeignKeyTest.java +++ b/testers/mariadb/java/src/java/testdb/ForeignKeyTest.java @@ -11,6 +11,9 @@ import testdb.customers.*; import testdb.customtypes.Defaulted.UseDefault; import testdb.orders.*; +import testdb.userdefined.Email; +import testdb.userdefined.FirstName; +import testdb.userdefined.LastName; /** * Tests for foreign key relationships in the MariaDB ordering system. Tests type-safe FK @@ -50,15 +53,19 @@ public void testCustomerWithForeignKeyToStatus() { // Create a customer with FK to the status - use short constructor var customer = - new CustomersRowUnsaved("test@example.com", new byte[] {1, 2, 3, 4}, "John", "Doe"); + new CustomersRowUnsaved( + new Email("test@example.com"), + new byte[] {1, 2, 3, 4}, + new FirstName("John"), + new LastName("Doe")); var insertedCustomer = customersRepo.insert(customer, c); assertNotNull(insertedCustomer); assertNotNull(insertedCustomer.customerId()); - assertEquals("test@example.com", insertedCustomer.email()); - assertEquals("John", insertedCustomer.firstName()); - assertEquals("Doe", insertedCustomer.lastName()); + assertEquals(new Email("test@example.com"), insertedCustomer.email()); + assertEquals(new FirstName("John"), insertedCustomer.firstName()); + assertEquals(new LastName("Doe"), insertedCustomer.lastName()); }); } diff --git a/testers/mariadb/java/src/java/testdb/SqlScriptTest.java b/testers/mariadb/java/src/java/testdb/SqlScriptTest.java index 9fc5115c15..ff35d06044 100644 --- a/testers/mariadb/java/src/java/testdb/SqlScriptTest.java +++ b/testers/mariadb/java/src/java/testdb/SqlScriptTest.java @@ -10,6 +10,9 @@ import testdb.customtypes.Defaulted; import testdb.product_search.*; import testdb.simple_customer_lookup.*; +import testdb.userdefined.Email; +import testdb.userdefined.FirstName; +import testdb.userdefined.LastName; /** * Tests for SQL script generated code. These tests verify that the code generated from SQL files in @@ -168,10 +171,18 @@ public void testSimpleCustomerLookup() { c -> { // Create a customer var status = testInsert.CustomerStatus().insert(c); - var customer = testInsert.Customers(new byte[] {1, 2, 3}).insert(c); + var customer = + testInsert + .Customers(new byte[] {1, 2, 3}) + .with( + r -> + r.withEmail(new Email("customer@example.com")) + .withFirstName(new FirstName("Test")) + .withLastName(new LastName("User"))) + .insert(c); // Look up by customer ID - var results = simpleCustomerLookupRepo.apply(customer.email(), c); + var results = simpleCustomerLookupRepo.apply(customer.email().value(), c); assertNotNull(results); assertEquals(1, results.size()); diff --git a/testers/mariadb/java/src/java/testdb/TestInsertTest.java b/testers/mariadb/java/src/java/testdb/TestInsertTest.java index ac24affd4c..bee07ac2df 100644 --- a/testers/mariadb/java/src/java/testdb/TestInsertTest.java +++ b/testers/mariadb/java/src/java/testdb/TestInsertTest.java @@ -7,6 +7,9 @@ import java.time.Year; import java.util.Random; import org.junit.Test; +import testdb.userdefined.Email; +import testdb.userdefined.FirstName; +import testdb.userdefined.LastName; /** Tests for TestInsert functionality - automatic random data generation for testing. */ public class TestInsertTest { @@ -87,7 +90,15 @@ public void testCustomersInsertWithForeignKey() { var status = testInsert.CustomerStatus().insert(c); // Now create a customer - requires password_hash - var customer = testInsert.Customers(new byte[] {1, 2, 3}).insert(c); + var customer = + testInsert + .Customers(new byte[] {1, 2, 3}) + .with( + r -> + r.withEmail(new Email("customer@example.com")) + .withFirstName(new FirstName("Test")) + .withLastName(new LastName("User"))) + .insert(c); assertNotNull(customer); assertNotNull(customer.customerId()); @@ -116,7 +127,8 @@ public void testOrdersInsertChain() { public void testMariatestUniqueInsert() { MariaDbTestHelper.run( c -> { - var inserter = testInsert.MariatestUnique(); + var inserter = + testInsert.MariatestUnique().with(r -> r.withEmail(new Email("unique@example.com"))); var row = inserter.insert(c); assertNotNull(row); diff --git a/testers/mariadb/java/src/java/testdb/TupleInTest.java b/testers/mariadb/java/src/java/testdb/TupleInTest.java index f0314d2f97..0b8bed846d 100644 --- a/testers/mariadb/java/src/java/testdb/TupleInTest.java +++ b/testers/mariadb/java/src/java/testdb/TupleInTest.java @@ -19,6 +19,7 @@ import testdb.categories.*; import testdb.product_categories.*; import testdb.products.*; +import testdb.userdefined.IsPrimary; /** * Comprehensive tests for tuple IN functionality on MariaDB. Tests cover: - Composite ID IN with @@ -200,11 +201,13 @@ public void productCategoriesCompositeIdInCombinedWithOtherConditions(Repos repo // Insert with different isPrimary values using full row var pc1 = repos.productCategoriesRepo.insert( - new ProductCategoriesRow(product1.productId(), category.categoryId(), true, (short) 1), + new ProductCategoriesRow( + product1.productId(), category.categoryId(), new IsPrimary(true), (short) 1), c); var pc2 = repos.productCategoriesRepo.insert( - new ProductCategoriesRow(product2.productId(), category.categoryId(), false, (short) 2), + new ProductCategoriesRow( + product2.productId(), category.categoryId(), new IsPrimary(false), (short) 2), c); // Query with compositeIdIn AND isPrimary condition using SqlExpr.all @@ -216,7 +219,7 @@ public void productCategoriesCompositeIdInCombinedWithOtherConditions(Repos repo pc -> SqlExpr.all( pc.compositeIdIn(List.of(pc1.compositeId(), pc2.compositeId())), - pc.isPrimary().isEqual(true))) + pc.isPrimary().isEqual(new IsPrimary(true)))) .toList(c); assertEquals(1, result.size()); @@ -416,7 +419,7 @@ public void tupleInSubqueryBasic(Repos repos, Connection c) { repos .productCategoriesRepo .select() - .where(inner -> inner.isPrimary().isEqual(false)) + .where(inner -> inner.isPrimary().isEqual(new IsPrimary(false))) .map(inner -> inner.productId().tupleWith(inner.categoryId())) .subquery())) .toList(c); @@ -455,7 +458,7 @@ public void tupleInSubqueryWithNoMatches(Repos repos, Connection c) { repos .productCategoriesRepo .select() - .where(inner -> inner.isPrimary().isEqual(true)) + .where(inner -> inner.isPrimary().isEqual(new IsPrimary(true))) .map(inner -> inner.productId().tupleWith(inner.categoryId())) .subquery())) .toList(c); @@ -486,11 +489,13 @@ public void tupleInSubqueryCombinedWithOtherConditions(Repos repos, Connection c // Insert with different sortOrder values var pc1 = repos.productCategoriesRepo.insert( - new ProductCategoriesRow(product1.productId(), category.categoryId(), false, (short) 1), + new ProductCategoriesRow( + product1.productId(), category.categoryId(), new IsPrimary(false), (short) 1), c); var pc2 = repos.productCategoriesRepo.insert( - new ProductCategoriesRow(product2.productId(), category.categoryId(), false, (short) 2), + new ProductCategoriesRow( + product2.productId(), category.categoryId(), new IsPrimary(false), (short) 2), c); // Combine tuple IN subquery with sortOrder condition @@ -507,7 +512,7 @@ public void tupleInSubqueryCombinedWithOtherConditions(Repos repos, Connection c repos .productCategoriesRepo .select() - .where(inner -> inner.isPrimary().isEqual(false)) + .where(inner -> inner.isPrimary().isEqual(new IsPrimary(false))) .map(inner -> inner.productId().tupleWith(inner.categoryId())) .subquery()), pc.sortOrder().greaterThan((short) 1))) @@ -814,12 +819,15 @@ public void nestedTupleIn_Real() { var pc1 = repos.productCategoriesRepo.insert( new ProductCategoriesRow( - product1.productId(), category1.categoryId(), true, (short) 1), + product1.productId(), category1.categoryId(), new IsPrimary(true), (short) 1), c); var pc2 = repos.productCategoriesRepo.insert( new ProductCategoriesRow( - product2.productId(), category2.categoryId(), false, (short) 2), + product2.productId(), + category2.categoryId(), + new IsPrimary(false), + (short) 2), c); // Test truly nested tuple: ((productId, categoryId), isPrimary) @@ -838,11 +846,11 @@ public void nestedTupleIn_Real() { dev.typr.foundations.Tuple.of( dev.typr.foundations.Tuple.of( product1.productId(), category1.categoryId()), - true), + new IsPrimary(true)), dev.typr.foundations.Tuple.of( dev.typr.foundations.Tuple.of( product2.productId(), category2.categoryId()), - false)))) + new IsPrimary(false))))) .toList(c); assertEquals("Should find 2 rows matching nested tuple pattern", 2, result.size()); @@ -863,7 +871,7 @@ public void nestedTupleIn_Real() { dev.typr.foundations.Tuple.of( dev.typr.foundations.Tuple.of( product1.productId(), category1.categoryId()), - false)))) // pc1 has isPrimary=true + new IsPrimary(false))))) // pc1 has isPrimary=true .toList(c); assertEquals("Should not match misaligned nested tuple", 0, resultNoMatch.size()); @@ -890,10 +898,12 @@ public void nestedTupleIn_Mock() { // Create associations with full row constructor to set isPrimary repos.productCategoriesRepo.insert( - new ProductCategoriesRow(product1.productId(), category1.categoryId(), true, (short) 1), + new ProductCategoriesRow( + product1.productId(), category1.categoryId(), new IsPrimary(true), (short) 1), null); repos.productCategoriesRepo.insert( - new ProductCategoriesRow(product2.productId(), category2.categoryId(), false, (short) 2), + new ProductCategoriesRow( + product2.productId(), category2.categoryId(), new IsPrimary(false), (short) 2), null); // Test truly nested tuple in mock @@ -911,11 +921,11 @@ public void nestedTupleIn_Mock() { dev.typr.foundations.Tuple.of( dev.typr.foundations.Tuple.of( product1.productId(), category1.categoryId()), - true), + new IsPrimary(true)), dev.typr.foundations.Tuple.of( dev.typr.foundations.Tuple.of( product2.productId(), category2.categoryId()), - false)))) + new IsPrimary(false))))) .toList(null); assertEquals("Should find 2 rows matching nested tuple pattern", 2, result.size()); @@ -1024,7 +1034,7 @@ private Repos createMockRepos() { new ProductCategoriesRepoMock( unsaved -> unsaved.toRow( - () -> false, // isPrimary + () -> new IsPrimary(false), // isPrimary () -> (short) 0 // sortOrder ))); } diff --git a/testers/mariadb/java/src/java/testdb/UniqueConstraintTest.java b/testers/mariadb/java/src/java/testdb/UniqueConstraintTest.java index d2eff161fe..a875de738f 100644 --- a/testers/mariadb/java/src/java/testdb/UniqueConstraintTest.java +++ b/testers/mariadb/java/src/java/testdb/UniqueConstraintTest.java @@ -4,6 +4,7 @@ import org.junit.Test; import testdb.mariatest_unique.*; +import testdb.userdefined.Email; /** Tests for unique constraint handling in MariaDB. */ public class UniqueConstraintTest { @@ -13,12 +14,13 @@ public class UniqueConstraintTest { public void testInsertWithUniqueEmail() { MariaDbTestHelper.run( c -> { - var row = new MariatestUniqueRowUnsaved("test@example.com", "CODE001", "CategoryA"); + var row = + new MariatestUniqueRowUnsaved(new Email("test@example.com"), "CODE001", "CategoryA"); var inserted = repo.insert(row, c); assertNotNull(inserted); assertNotNull(inserted.id()); - assertEquals("test@example.com", inserted.email()); + assertEquals(new Email("test@example.com"), inserted.email()); assertEquals("CODE001", inserted.code()); assertEquals("CategoryA", inserted.category()); }); @@ -29,12 +31,16 @@ public void testUniqueEmailConstraint() { MariaDbTestHelper.run( c -> { // Insert first row - var row1 = new MariatestUniqueRowUnsaved("unique@example.com", "CODE001", "CategoryA"); + var row1 = + new MariatestUniqueRowUnsaved( + new Email("unique@example.com"), "CODE001", "CategoryA"); repo.insert(row1, c); // Try to insert with same email (should fail in real db scenario) // Here we test with different codes/categories but same email - var row2 = new MariatestUniqueRowUnsaved("unique@example.com", "CODE002", "CategoryB"); + var row2 = + new MariatestUniqueRowUnsaved( + new Email("unique@example.com"), "CODE002", "CategoryB"); try { repo.insert(row2, c); @@ -51,21 +57,29 @@ public void testCompositeUniqueConstraint() { MariaDbTestHelper.run( c -> { // Insert first row - var row1 = new MariatestUniqueRowUnsaved("email1@example.com", "COMP001", "CategoryA"); + var row1 = + new MariatestUniqueRowUnsaved( + new Email("email1@example.com"), "COMP001", "CategoryA"); repo.insert(row1, c); // Same code, different category - should work (composite unique on code+category) - var row2 = new MariatestUniqueRowUnsaved("email2@example.com", "COMP001", "CategoryB"); + var row2 = + new MariatestUniqueRowUnsaved( + new Email("email2@example.com"), "COMP001", "CategoryB"); var inserted2 = repo.insert(row2, c); assertNotNull(inserted2); // Same category, different code - should work - var row3 = new MariatestUniqueRowUnsaved("email3@example.com", "COMP002", "CategoryA"); + var row3 = + new MariatestUniqueRowUnsaved( + new Email("email3@example.com"), "COMP002", "CategoryA"); var inserted3 = repo.insert(row3, c); assertNotNull(inserted3); // Same code AND category - should fail - var row4 = new MariatestUniqueRowUnsaved("email4@example.com", "COMP001", "CategoryA"); + var row4 = + new MariatestUniqueRowUnsaved( + new Email("email4@example.com"), "COMP001", "CategoryA"); try { repo.insert(row4, c); fail("Should have thrown exception for duplicate code+category"); @@ -81,7 +95,9 @@ public void testUpsertOnUniqueEmail() { MariaDbTestHelper.run( c -> { // Insert initial row - var row = new MariatestUniqueRowUnsaved("upsert@example.com", "UPSERT001", "CategoryA"); + var row = + new MariatestUniqueRowUnsaved( + new Email("upsert@example.com"), "UPSERT001", "CategoryA"); var inserted = repo.insert(row, c); // Upsert with same ID - should update @@ -98,7 +114,9 @@ public void testUpsertOnUniqueEmail() { public void testSelectByIdAfterUpdate() { MariaDbTestHelper.run( c -> { - var row = new MariatestUniqueRowUnsaved("select@example.com", "SELECT001", "CategoryA"); + var row = + new MariatestUniqueRowUnsaved( + new Email("select@example.com"), "SELECT001", "CategoryA"); var inserted = repo.insert(row, c); // Update @@ -108,7 +126,7 @@ public void testSelectByIdAfterUpdate() { // Select and verify var found = repo.selectById(inserted.id(), c).orElseThrow(); assertEquals("SELECT001-UPDATED", found.code()); - assertEquals("select@example.com", found.email()); // Email unchanged + assertEquals(new Email("select@example.com"), found.email()); // Email unchanged }); } @@ -117,7 +135,9 @@ public void testDeleteAndReuseUniqueValue() { MariaDbTestHelper.run( c -> { // Insert - var row = new MariatestUniqueRowUnsaved("reuse@example.com", "REUSE001", "CategoryA"); + var row = + new MariatestUniqueRowUnsaved( + new Email("reuse@example.com"), "REUSE001", "CategoryA"); var inserted = repo.insert(row, c); // Delete @@ -125,11 +145,13 @@ public void testDeleteAndReuseUniqueValue() { assertTrue(deleted); // Should now be able to reuse the email - var row2 = new MariatestUniqueRowUnsaved("reuse@example.com", "REUSE002", "CategoryB"); + var row2 = + new MariatestUniqueRowUnsaved( + new Email("reuse@example.com"), "REUSE002", "CategoryB"); var inserted2 = repo.insert(row2, c); assertNotNull(inserted2); - assertEquals("reuse@example.com", inserted2.email()); + assertEquals(new Email("reuse@example.com"), inserted2.email()); }); } @@ -138,9 +160,12 @@ public void testSelectAllWithUniqueRows() { MariaDbTestHelper.run( c -> { // Insert multiple unique rows - repo.insert(new MariatestUniqueRowUnsaved("all1@example.com", "ALL001", "CatA"), c); - repo.insert(new MariatestUniqueRowUnsaved("all2@example.com", "ALL002", "CatB"), c); - repo.insert(new MariatestUniqueRowUnsaved("all3@example.com", "ALL003", "CatC"), c); + repo.insert( + new MariatestUniqueRowUnsaved(new Email("all1@example.com"), "ALL001", "CatA"), c); + repo.insert( + new MariatestUniqueRowUnsaved(new Email("all2@example.com"), "ALL002", "CatB"), c); + repo.insert( + new MariatestUniqueRowUnsaved(new Email("all3@example.com"), "ALL003", "CatC"), c); var all = repo.selectAll(c); assertTrue(all.size() >= 3); diff --git a/testers/mariadb/java/src/java/testdb/ViewTest.java b/testers/mariadb/java/src/java/testdb/ViewTest.java index ea1886ca63..ace3dc5b81 100644 --- a/testers/mariadb/java/src/java/testdb/ViewTest.java +++ b/testers/mariadb/java/src/java/testdb/ViewTest.java @@ -18,6 +18,10 @@ import testdb.orders.*; import testdb.products.*; import testdb.reviews.*; +import testdb.userdefined.Email; +import testdb.userdefined.FirstName; +import testdb.userdefined.IsApproved; +import testdb.userdefined.LastName; import testdb.v_customer_summary.*; import testdb.v_product_catalog.*; import testdb.warehouses.*; @@ -45,10 +49,18 @@ public void testCustomerSummaryViewSelectAll() { MariaDbTestHelper.run( c -> { customersRepo.insert( - new CustomersRowUnsaved("view1@example.com", "hash1".getBytes(), "View", "Customer1"), + new CustomersRowUnsaved( + new Email("view1@example.com"), + "hash1".getBytes(), + new FirstName("View"), + new LastName("Customer1")), c); customersRepo.insert( - new CustomersRowUnsaved("view2@example.com", "hash2".getBytes(), "View", "Customer2"), + new CustomersRowUnsaved( + new Email("view2@example.com"), + "hash2".getBytes(), + new FirstName("View"), + new LastName("Customer2")), c); var summaries = customerSummaryRepo.selectAll(c); @@ -61,7 +73,11 @@ public void testCustomerSummaryViewFields() { MariaDbTestHelper.run( c -> { customersRepo.insert( - new CustomersRowUnsaved("summary@example.com", "hash".getBytes(), "Summary", "Test") + new CustomersRowUnsaved( + new Email("summary@example.com"), + "hash".getBytes(), + new FirstName("Summary"), + new LastName("Test")) .withStatus(new Provided<>(new CustomerStatusId("suspended"))) .withTier(new Provided<>("gold")), c); @@ -70,7 +86,7 @@ public void testCustomerSummaryViewFields() { assertEquals(1, summaries.size()); var summary = summaries.get(0); - assertEquals("summary@example.com", summary.email()); + assertEquals(new Email("summary@example.com"), summary.email()); assertEquals(Optional.of("Summary Test"), summary.fullName()); assertEquals("gold", summary.tier()); assertEquals("suspended", summary.status().value()); @@ -86,7 +102,10 @@ public void testCustomerSummaryViewWithOrders() { var customer = customersRepo.insert( new CustomersRowUnsaved( - "orders@example.com", "hash".getBytes(), "With", "Orders"), + new Email("orders@example.com"), + "hash".getBytes(), + new FirstName("With"), + new LastName("Orders")), c); var brand = brandsRepo.insert(new BrandsRowUnsaved("TestBrand", "test-brand"), c); @@ -278,7 +297,10 @@ public void testProductCatalogViewWithReviews() { var customer = customersRepo.insert( new CustomersRowUnsaved( - "reviewer@example.com", "hash".getBytes(), "Reviewer", "User"), + new Email("reviewer@example.com"), + "hash".getBytes(), + new FirstName("Reviewer"), + new LastName("User")), c); var product = @@ -315,7 +337,7 @@ public void testProductCatalogViewWithReviews() { new UseDefault<>(), new UseDefault<>(), new UseDefault<>(), - new Provided<>(true), + new Provided<>(new IsApproved(true)), new UseDefault<>(), new UseDefault<>(), new UseDefault<>(), @@ -335,7 +357,7 @@ public void testProductCatalogViewWithReviews() { new UseDefault<>(), new UseDefault<>(), new UseDefault<>(), - new Provided<>(true), + new Provided<>(new IsApproved(true)), new UseDefault<>(), new UseDefault<>(), new UseDefault<>(), @@ -356,15 +378,27 @@ public void testViewDSLSelect() { MariaDbTestHelper.run( c -> { customersRepo.insert( - new CustomersRowUnsaved("dsl1@example.com", "hash1".getBytes(), "DSL", "Bronze") + new CustomersRowUnsaved( + new Email("dsl1@example.com"), + "hash1".getBytes(), + new FirstName("DSL"), + new LastName("Bronze")) .withTier(new Provided<>("bronze")), c); customersRepo.insert( - new CustomersRowUnsaved("dsl2@example.com", "hash2".getBytes(), "DSL", "Gold") + new CustomersRowUnsaved( + new Email("dsl2@example.com"), + "hash2".getBytes(), + new FirstName("DSL"), + new LastName("Gold")) .withTier(new Provided<>("gold")), c); customersRepo.insert( - new CustomersRowUnsaved("dsl3@example.com", "hash3".getBytes(), "DSL", "Gold2") + new CustomersRowUnsaved( + new Email("dsl3@example.com"), + "hash3".getBytes(), + new FirstName("DSL"), + new LastName("Gold2")) .withTier(new Provided<>("gold")), c); @@ -375,7 +409,7 @@ public void testViewDSLSelect() { var specificCustomer = customerSummaryRepo .select() - .where(f -> f.email().isEqual("dsl1@example.com")) + .where(f -> f.email().isEqual(new Email("dsl1@example.com"))) .toList(c); assertEquals(1, specificCustomer.size()); assertEquals("bronze", specificCustomer.get(0).tier()); diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/AllBrandsCategoriesCSet.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/AllBrandsCategoriesCSet.kt index 74e4f34b21..50138ed7d9 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/AllBrandsCategoriesCSet.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/AllBrandsCategoriesCSet.kt @@ -25,9 +25,6 @@ data class AllBrandsCategoriesCSet(val members: Set = - MariaTypes.set.bimap({ ms: MariaSet -> AllBrandsCategoriesCSet.fromString(ms.toCommaSeparated()) }, { s: AllBrandsCategoriesCSet -> MariaSet.fromString(s.toCommaSeparated()) }) - fun empty(): AllBrandsCategoriesCSet = AllBrandsCategoriesCSet(EnumSet.noneOf(AllBrandsCategoriesCSetMember::class.java).toSet()) fun fromString(str: String): AllBrandsCategoriesCSet = run { @@ -41,6 +38,9 @@ data class AllBrandsCategoriesCSet(val members: Set = + MariaTypes.set.bimap({ ms: MariaSet -> AllBrandsCategoriesCSet.fromString(ms.toCommaSeparated()) }, { s: AllBrandsCategoriesCSet -> MariaSet.fromString(s.toCommaSeparated()) }) + fun of(members: List): AllBrandsCategoriesCSet = run { if (members.isEmpty()) AllBrandsCategoriesCSet(EnumSet.noneOf(AllBrandsCategoriesCSetMember::class.java).toSet()) else AllBrandsCategoriesCSet(EnumSet.copyOf(members).toSet()) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/BestsellerClearanceFSet.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/BestsellerClearanceFSet.kt index 5927954387..ed486cbdd1 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/BestsellerClearanceFSet.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/BestsellerClearanceFSet.kt @@ -25,9 +25,6 @@ data class BestsellerClearanceFSet(val members: Set = - MariaTypes.set.bimap({ ms: MariaSet -> BestsellerClearanceFSet.fromString(ms.toCommaSeparated()) }, { s: BestsellerClearanceFSet -> MariaSet.fromString(s.toCommaSeparated()) }) - fun empty(): BestsellerClearanceFSet = BestsellerClearanceFSet(EnumSet.noneOf(BestsellerClearanceFSetMember::class.java).toSet()) fun fromString(str: String): BestsellerClearanceFSet = run { @@ -41,6 +38,9 @@ data class BestsellerClearanceFSet(val members: Set = + MariaTypes.set.bimap({ ms: MariaSet -> BestsellerClearanceFSet.fromString(ms.toCommaSeparated()) }, { s: BestsellerClearanceFSet -> MariaSet.fromString(s.toCommaSeparated()) }) + fun of(members: List): BestsellerClearanceFSet = run { if (members.isEmpty()) BestsellerClearanceFSet(EnumSet.noneOf(BestsellerClearanceFSetMember::class.java).toSet()) else BestsellerClearanceFSet(EnumSet.copyOf(members).toSet()) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/EmailMailPushSmsSet.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/EmailMailPushSmsSet.kt index ea64a8a303..545b25549b 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/EmailMailPushSmsSet.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/EmailMailPushSmsSet.kt @@ -25,9 +25,6 @@ data class EmailMailPushSmsSet(val members: Set) { override fun toString(): String = toCommaSeparated() companion object { - val dbType: MariaType = - MariaTypes.set.bimap({ ms: MariaSet -> EmailMailPushSmsSet.fromString(ms.toCommaSeparated()) }, { s: EmailMailPushSmsSet -> MariaSet.fromString(s.toCommaSeparated()) }) - fun empty(): EmailMailPushSmsSet = EmailMailPushSmsSet(EnumSet.noneOf(EmailMailPushSmsSetMember::class.java).toSet()) fun fromString(str: String): EmailMailPushSmsSet = run { @@ -41,6 +38,9 @@ data class EmailMailPushSmsSet(val members: Set) { } } + val mariaType: MariaType = + MariaTypes.set.bimap({ ms: MariaSet -> EmailMailPushSmsSet.fromString(ms.toCommaSeparated()) }, { s: EmailMailPushSmsSet -> MariaSet.fromString(s.toCommaSeparated()) }) + fun of(members: List): EmailMailPushSmsSet = run { if (members.isEmpty()) EmailMailPushSmsSet(EnumSet.noneOf(EmailMailPushSmsSetMember::class.java).toSet()) else EmailMailPushSmsSet(EnumSet.copyOf(members).toSet()) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/TestInsert.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/TestInsert.kt index 8fa3e837a4..467c843e0e 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/TestInsert.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/TestInsert.kt @@ -149,6 +149,14 @@ import testdb.shipping_carriers.ShippingCarriersId import testdb.shipping_carriers.ShippingCarriersRepoImpl import testdb.shipping_carriers.ShippingCarriersRow import testdb.shipping_carriers.ShippingCarriersRowUnsaved +import testdb.userdefined.Email +import testdb.userdefined.FirstName +import testdb.userdefined.IsActive +import testdb.userdefined.IsApproved +import testdb.userdefined.IsDefault +import testdb.userdefined.IsPrimary +import testdb.userdefined.IsVerifiedPurchase +import testdb.userdefined.LastName import testdb.warehouses.WarehousesId import testdb.warehouses.WarehousesRepoImpl import testdb.warehouses.WarehousesRow @@ -175,7 +183,7 @@ data class TestInsert(val random: Random) { logoBlob: Defaulted = UseDefault(), websiteUrl: Defaulted = UseDefault(), countryOfOrigin: Defaulted = UseDefault(), - isActive: Defaulted = UseDefault(), + isActive: Defaulted = UseDefault(), c: Connection ): BrandsRow = (BrandsRepoImpl()).insert(BrandsRowUnsaved(name = name, slug = slug, logoBlob = logoBlob, websiteUrl = websiteUrl, countryOfOrigin = countryOfOrigin, isActive = isActive), c) @@ -199,7 +207,7 @@ data class TestInsert(val random: Random) { city: String, postalCode: String, countryCode: String, - isDefault: Defaulted = UseDefault(), + isDefault: Defaulted = UseDefault(), streetLine2: Defaulted = UseDefault(), stateProvince: Defaulted = UseDefault(), location: Defaulted = UseDefault(), @@ -211,15 +219,15 @@ data class TestInsert(val random: Random) { fun CustomerStatus( statusCode: CustomerStatusId, description: String, - isActive: Defaulted = UseDefault(), + isActive: Defaulted = UseDefault(), c: Connection ): CustomerStatusRow = (CustomerStatusRepoImpl()).insert(CustomerStatusRowUnsaved(statusCode = statusCode, description = description, isActive = isActive), c) fun Customers( - email: String, + email: /* user-picked */ Email, passwordHash: ByteArray, - firstName: String, - lastName: String, + firstName: /* user-picked */ FirstName, + lastName: /* user-picked */ LastName, phone: Defaulted = UseDefault(), status: Defaulted = UseDefault(), tier: Defaulted = UseDefault(), @@ -321,7 +329,7 @@ data class TestInsert(val random: Random) { ): MariatestSpatialNullRow = (MariatestSpatialNullRepoImpl()).insert(MariatestSpatialNullRowUnsaved(geometryCol = geometryCol, pointCol = pointCol, linestringCol = linestringCol, polygonCol = polygonCol, multipointCol = multipointCol, multilinestringCol = multilinestringCol, multipolygonCol = multipolygonCol, geometrycollectionCol = geometrycollectionCol), c) fun MariatestUnique( - email: String, + email: /* user-picked */ Email, code: String, category: String, c: Connection @@ -429,7 +437,7 @@ data class TestInsert(val random: Random) { name: String, methodType: String, processorConfig: Defaulted = UseDefault(), - isActive: Defaulted = UseDefault(), + isActive: Defaulted = UseDefault(), sortOrder: Defaulted = UseDefault(), c: Connection ): PaymentMethodsRow = (PaymentMethodsRepoImpl()).insert(PaymentMethodsRowUnsaved(code = code, name = name, methodType = methodType, processorConfig = processorConfig, isActive = isActive, sortOrder = sortOrder), c) @@ -514,7 +522,7 @@ data class TestInsert(val random: Random) { fun ProductCategories( productId: ProductsId, categoryId: CategoriesId, - isPrimary: Defaulted = UseDefault(), + isPrimary: Defaulted = UseDefault(), sortOrder: Defaulted = UseDefault(), c: Connection ): ProductCategoriesRow = (ProductCategoriesRepoImpl()).insert(ProductCategoriesRowUnsaved(productId = productId, categoryId = categoryId, isPrimary = isPrimary, sortOrder = sortOrder), c) @@ -525,7 +533,7 @@ data class TestInsert(val random: Random) { thumbnailUrl: Defaulted = UseDefault(), altText: Defaulted = UseDefault(), sortOrder: Defaulted = UseDefault(), - isPrimary: Defaulted = UseDefault(), + isPrimary: Defaulted = UseDefault(), imageData: Defaulted = UseDefault(), c: Connection ): ProductImagesRow = (ProductImagesRepoImpl()).insert(ProductImagesRowUnsaved(productId = productId, imageUrl = imageUrl, thumbnailUrl = thumbnailUrl, altText = altText, sortOrder = sortOrder, isPrimary = isPrimary, imageData = imageData), c) @@ -575,7 +583,7 @@ data class TestInsert(val random: Random) { maxUsesPerCustomer: Defaulted = UseDefault(), applicableTo: Defaulted = UseDefault(), rulesJson: Defaulted = UseDefault(), - isActive: Defaulted = UseDefault(), + isActive: Defaulted = UseDefault(), createdAt: Defaulted = UseDefault(), c: Connection ): PromotionsRow = (PromotionsRepoImpl()).insert(PromotionsRowUnsaved(code = code, name = name, discountType = discountType, discountValue = discountValue, validFrom = validFrom, validTo = validTo, description = description, minOrderAmount = minOrderAmount, maxUses = maxUses, usesCount = usesCount, maxUsesPerCustomer = maxUsesPerCustomer, applicableTo = applicableTo, rulesJson = rulesJson, isActive = isActive, createdAt = createdAt), c) @@ -590,8 +598,8 @@ data class TestInsert(val random: Random) { pros: Defaulted = UseDefault(), cons: Defaulted = UseDefault(), images: Defaulted = UseDefault(), - isVerifiedPurchase: Defaulted = UseDefault(), - isApproved: Defaulted = UseDefault(), + isVerifiedPurchase: Defaulted = UseDefault(), + isApproved: Defaulted = UseDefault(), helpfulVotes: Defaulted = UseDefault(), unhelpfulVotes: Defaulted = UseDefault(), adminResponse: Defaulted = UseDefault(), @@ -626,7 +634,7 @@ data class TestInsert(val random: Random) { name: String, trackingUrlTemplate: Defaulted = UseDefault(), apiConfig: Defaulted = UseDefault(), - isActive: Defaulted = UseDefault(), + isActive: Defaulted = UseDefault(), c: Connection ): ShippingCarriersRow = (ShippingCarriersRepoImpl()).insert(ShippingCarriersRowUnsaved(code = code, name = name, trackingUrlTemplate = trackingUrlTemplate, apiConfig = apiConfig, isActive = isActive), c) @@ -637,8 +645,8 @@ data class TestInsert(val random: Random) { location: Point, serviceArea: Defaulted = UseDefault(), timezone: Defaulted = UseDefault(), - isActive: Defaulted = UseDefault(), - contactEmail: Defaulted = UseDefault(), + isActive: Defaulted = UseDefault(), + contactEmail: Defaulted = UseDefault(), contactPhone: Defaulted = UseDefault(), c: Connection ): WarehousesRow = (WarehousesRepoImpl()).insert(WarehousesRowUnsaved(code = code, name = name, address = address, location = location, serviceArea = serviceArea, timezone = timezone, isActive = isActive, contactEmail = contactEmail, contactPhone = contactPhone), c) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/XYZSet.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/XYZSet.kt index 8a4dbc0c56..6d7bff84ef 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/XYZSet.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/XYZSet.kt @@ -25,9 +25,6 @@ data class XYZSet(val members: Set) { override fun toString(): String = toCommaSeparated() companion object { - val dbType: MariaType = - MariaTypes.set.bimap({ ms: MariaSet -> XYZSet.fromString(ms.toCommaSeparated()) }, { s: XYZSet -> MariaSet.fromString(s.toCommaSeparated()) }) - fun empty(): XYZSet = XYZSet(EnumSet.noneOf(XYZSetMember::class.java).toSet()) fun fromString(str: String): XYZSet = run { @@ -41,6 +38,9 @@ data class XYZSet(val members: Set) { } } + val mariaType: MariaType = + MariaTypes.set.bimap({ ms: MariaSet -> XYZSet.fromString(ms.toCommaSeparated()) }, { s: XYZSet -> MariaSet.fromString(s.toCommaSeparated()) }) + fun of(members: List): XYZSet = run { if (members.isEmpty()) XYZSet(EnumSet.noneOf(XYZSetMember::class.java).toSet()) else XYZSet(EnumSet.copyOf(members).toSet()) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/audit_log/AuditLogFields.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/audit_log/AuditLogFields.kt index 4838f11f7b..c12ded123f 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/audit_log/AuditLogFields.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/audit_log/AuditLogFields.kt @@ -54,7 +54,7 @@ data class AuditLogFields(val _path: List) : TupleExpr10> = listOf(this.logId().underlying, this.tableName().underlying, this.recordId().underlying, this.action().underlying, this.oldValues().underlying, this.newValues().underlying, this.changedBy().underlying, this.changedAt().underlying, this.clientIp().underlying, this.sessionId().underlying) - fun logId(): IdField = IdField(_path, "log_id", AuditLogRow::logId, null, null, { row, value -> row.copy(logId = value) }, AuditLogId.dbType) + fun logId(): IdField = IdField(_path, "log_id", AuditLogRow::logId, null, null, { row, value -> row.copy(logId = value) }, AuditLogId.mariaType) fun newValues(): OptField = OptField(_path, "new_values", AuditLogRow::newValues, null, null, { row, value -> row.copy(newValues = value) }, MariaTypes.json) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/audit_log/AuditLogId.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/audit_log/AuditLogId.kt index 79b9be2625..e8522bd8b6 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/audit_log/AuditLogId.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/audit_log/AuditLogId.kt @@ -21,7 +21,7 @@ data class AuditLogId(@field:JsonValue val value: Uint8) { val bijection: Bijection = Bijection.of(AuditLogId::value, ::AuditLogId) - val dbType: MariaType = + val mariaType: MariaType = MariaTypes.bigintUnsigned.bimap(::AuditLogId, AuditLogId::value) } } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/audit_log/AuditLogRepoImpl.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/audit_log/AuditLogRepoImpl.kt index b41dbe2cb4..a3b1a71788 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/audit_log/AuditLogRepoImpl.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/audit_log/AuditLogRepoImpl.kt @@ -25,14 +25,14 @@ class AuditLogRepoImpl() : AuditLogRepo { override fun deleteById( logId: AuditLogId, c: Connection - ): Boolean = Fragment.interpolate(Fragment.lit("delete from `audit_log` where `log_id` = "), Fragment.encode(AuditLogId.dbType, logId), Fragment.lit("")).update().runUnchecked(c) > 0 + ): Boolean = Fragment.interpolate(Fragment.lit("delete from `audit_log` where `log_id` = "), Fragment.encode(AuditLogId.mariaType, logId), Fragment.lit("")).update().runUnchecked(c) > 0 override fun deleteByIds( logIds: Array, c: Connection ): Int { val fragments: ArrayList = ArrayList() - for (id in logIds) { fragments.add(Fragment.encode(AuditLogId.dbType, id)) } + for (id in logIds) { fragments.add(Fragment.encode(AuditLogId.mariaType, id)) } return Fragment.interpolate(Fragment.lit("delete from `audit_log` where `log_id` in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).update().runUnchecked(c) } @@ -95,14 +95,14 @@ class AuditLogRepoImpl() : AuditLogRepo { override fun selectById( logId: AuditLogId, c: Connection - ): AuditLogRow? = Fragment.interpolate(Fragment.lit("select `log_id`, `table_name`, `record_id`, `action`, `old_values`, `new_values`, `changed_by`, `changed_at`, `client_ip`, `session_id`\nfrom `audit_log`\nwhere `log_id` = "), Fragment.encode(AuditLogId.dbType, logId), Fragment.lit("")).query(AuditLogRow._rowParser.first()).runUnchecked(c) + ): AuditLogRow? = Fragment.interpolate(Fragment.lit("select `log_id`, `table_name`, `record_id`, `action`, `old_values`, `new_values`, `changed_by`, `changed_at`, `client_ip`, `session_id`\nfrom `audit_log`\nwhere `log_id` = "), Fragment.encode(AuditLogId.mariaType, logId), Fragment.lit("")).query(AuditLogRow._rowParser.first()).runUnchecked(c) override fun selectByIds( logIds: Array, c: Connection ): List { val fragments: ArrayList = ArrayList() - for (id in logIds) { fragments.add(Fragment.encode(AuditLogId.dbType, id)) } + for (id in logIds) { fragments.add(Fragment.encode(AuditLogId.mariaType, id)) } return Fragment.interpolate(Fragment.lit("select `log_id`, `table_name`, `record_id`, `action`, `old_values`, `new_values`, `changed_by`, `changed_at`, `client_ip`, `session_id` from `audit_log` where `log_id` in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).query(AuditLogRow._rowParser.all()).runUnchecked(c) } @@ -122,13 +122,13 @@ class AuditLogRepoImpl() : AuditLogRepo { c: Connection ): Boolean { val logId: AuditLogId = row.logId - return Fragment.interpolate(Fragment.lit("update `audit_log`\nset `table_name` = "), Fragment.encode(MariaTypes.varchar, row.tableName), Fragment.lit(",\n`record_id` = "), Fragment.encode(MariaTypes.varchar, row.recordId), Fragment.lit(",\n`action` = "), Fragment.encode(MariaTypes.text, row.action), Fragment.lit(",\n`old_values` = "), Fragment.encode(MariaTypes.json.nullable(), row.oldValues), Fragment.lit(",\n`new_values` = "), Fragment.encode(MariaTypes.json.nullable(), row.newValues), Fragment.lit(",\n`changed_by` = "), Fragment.encode(MariaTypes.varchar.nullable(), row.changedBy), Fragment.lit(",\n`changed_at` = "), Fragment.encode(MariaTypes.datetime, row.changedAt), Fragment.lit(",\n`client_ip` = "), Fragment.encode(MariaTypes.inet6.nullable(), row.clientIp), Fragment.lit(",\n`session_id` = "), Fragment.encode(MariaTypes.varbinary.nullable(), row.sessionId), Fragment.lit("\nwhere `log_id` = "), Fragment.encode(AuditLogId.dbType, logId), Fragment.lit("")).update().runUnchecked(c) > 0 + return Fragment.interpolate(Fragment.lit("update `audit_log`\nset `table_name` = "), Fragment.encode(MariaTypes.varchar, row.tableName), Fragment.lit(",\n`record_id` = "), Fragment.encode(MariaTypes.varchar, row.recordId), Fragment.lit(",\n`action` = "), Fragment.encode(MariaTypes.text, row.action), Fragment.lit(",\n`old_values` = "), Fragment.encode(MariaTypes.json.nullable(), row.oldValues), Fragment.lit(",\n`new_values` = "), Fragment.encode(MariaTypes.json.nullable(), row.newValues), Fragment.lit(",\n`changed_by` = "), Fragment.encode(MariaTypes.varchar.nullable(), row.changedBy), Fragment.lit(",\n`changed_at` = "), Fragment.encode(MariaTypes.datetime, row.changedAt), Fragment.lit(",\n`client_ip` = "), Fragment.encode(MariaTypes.inet6.nullable(), row.clientIp), Fragment.lit(",\n`session_id` = "), Fragment.encode(MariaTypes.varbinary.nullable(), row.sessionId), Fragment.lit("\nwhere `log_id` = "), Fragment.encode(AuditLogId.mariaType, logId), Fragment.lit("")).update().runUnchecked(c) > 0 } override fun upsert( unsaved: AuditLogRow, c: Connection - ): AuditLogRow = Fragment.interpolate(Fragment.lit("INSERT INTO `audit_log`(`log_id`, `table_name`, `record_id`, `action`, `old_values`, `new_values`, `changed_by`, `changed_at`, `client_ip`, `session_id`)\nVALUES ("), Fragment.encode(AuditLogId.dbType, unsaved.logId), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.tableName), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.recordId), Fragment.lit(", "), Fragment.encode(MariaTypes.text, unsaved.action), Fragment.lit(", "), Fragment.encode(MariaTypes.json.nullable(), unsaved.oldValues), Fragment.lit(", "), Fragment.encode(MariaTypes.json.nullable(), unsaved.newValues), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.changedBy), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.changedAt), Fragment.lit(", "), Fragment.encode(MariaTypes.inet6.nullable(), unsaved.clientIp), Fragment.lit(", "), Fragment.encode(MariaTypes.varbinary.nullable(), unsaved.sessionId), Fragment.lit(")\nON DUPLICATE KEY UPDATE `table_name` = VALUES(`table_name`),\n`record_id` = VALUES(`record_id`),\n`action` = VALUES(`action`),\n`old_values` = VALUES(`old_values`),\n`new_values` = VALUES(`new_values`),\n`changed_by` = VALUES(`changed_by`),\n`changed_at` = VALUES(`changed_at`),\n`client_ip` = VALUES(`client_ip`),\n`session_id` = VALUES(`session_id`)\nRETURNING `log_id`, `table_name`, `record_id`, `action`, `old_values`, `new_values`, `changed_by`, `changed_at`, `client_ip`, `session_id`")) + ): AuditLogRow = Fragment.interpolate(Fragment.lit("INSERT INTO `audit_log`(`log_id`, `table_name`, `record_id`, `action`, `old_values`, `new_values`, `changed_by`, `changed_at`, `client_ip`, `session_id`)\nVALUES ("), Fragment.encode(AuditLogId.mariaType, unsaved.logId), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.tableName), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.recordId), Fragment.lit(", "), Fragment.encode(MariaTypes.text, unsaved.action), Fragment.lit(", "), Fragment.encode(MariaTypes.json.nullable(), unsaved.oldValues), Fragment.lit(", "), Fragment.encode(MariaTypes.json.nullable(), unsaved.newValues), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.changedBy), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.changedAt), Fragment.lit(", "), Fragment.encode(MariaTypes.inet6.nullable(), unsaved.clientIp), Fragment.lit(", "), Fragment.encode(MariaTypes.varbinary.nullable(), unsaved.sessionId), Fragment.lit(")\nON DUPLICATE KEY UPDATE `table_name` = VALUES(`table_name`),\n`record_id` = VALUES(`record_id`),\n`action` = VALUES(`action`),\n`old_values` = VALUES(`old_values`),\n`new_values` = VALUES(`new_values`),\n`changed_by` = VALUES(`changed_by`),\n`changed_at` = VALUES(`changed_at`),\n`client_ip` = VALUES(`client_ip`),\n`session_id` = VALUES(`session_id`)\nRETURNING `log_id`, `table_name`, `record_id`, `action`, `old_values`, `new_values`, `changed_by`, `changed_at`, `client_ip`, `session_id`")) .updateReturning(AuditLogRow._rowParser.exactlyOne()) .runUnchecked(c) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/audit_log/AuditLogRow.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/audit_log/AuditLogRow.kt index 57aaa79fea..cf3adbb77e 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/audit_log/AuditLogRow.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/audit_log/AuditLogRow.kt @@ -87,6 +87,6 @@ data class AuditLogRow( ): AuditLogRowUnsaved = AuditLogRowUnsaved(tableName, recordId, action, oldValues, newValues, changedBy, changedAt, clientIp, sessionId) companion object { - val _rowParser: RowParser = RowParsers.of(AuditLogId.dbType, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.text, MariaTypes.json.nullable(), MariaTypes.json.nullable(), MariaTypes.varchar.nullable(), MariaTypes.datetime, MariaTypes.inet6.nullable(), MariaTypes.varbinary.nullable(), { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9 -> AuditLogRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9) }, { row -> arrayOf(row.logId, row.tableName, row.recordId, row.action, row.oldValues, row.newValues, row.changedBy, row.changedAt, row.clientIp, row.sessionId) }) + val _rowParser: RowParser = RowParsers.of(AuditLogId.mariaType, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.text, MariaTypes.json.nullable(), MariaTypes.json.nullable(), MariaTypes.varchar.nullable(), MariaTypes.datetime, MariaTypes.inet6.nullable(), MariaTypes.varbinary.nullable(), { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9 -> AuditLogRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9) }, { row -> arrayOf(row.logId, row.tableName, row.recordId, row.action, row.oldValues, row.newValues, row.changedBy, row.changedAt, row.clientIp, row.sessionId) }) } } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/brands/BrandsFields.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/brands/BrandsFields.kt index c6b25a3201..19f0f402ed 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/brands/BrandsFields.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/brands/BrandsFields.kt @@ -10,7 +10,6 @@ import dev.typr.foundations.RowParser import dev.typr.foundations.dsl.FieldsBase import dev.typr.foundations.dsl.Path import dev.typr.foundations.dsl.SqlExpr.FieldLike -import dev.typr.foundations.kotlin.KotlinDbTypes import dev.typr.foundations.kotlin.RelationStructure import dev.typr.foundations.kotlin.SqlExpr import dev.typr.foundations.kotlin.SqlExpr.Field @@ -18,8 +17,9 @@ import dev.typr.foundations.kotlin.SqlExpr.IdField import dev.typr.foundations.kotlin.SqlExpr.OptField import dev.typr.foundations.kotlin.TupleExpr7 import kotlin.collections.List +import testdb.userdefined.IsActive -data class BrandsFields(val _path: List) : TupleExpr7, RelationStructure, FieldsBase { +data class BrandsFields(val _path: List) : TupleExpr7, RelationStructure, FieldsBase { override fun _1(): SqlExpr = brandId() override fun _2(): SqlExpr = name() @@ -32,17 +32,17 @@ data class BrandsFields(val _path: List) : TupleExpr7 = countryOfOrigin() - override fun _7(): SqlExpr = isActive() + override fun _7(): SqlExpr = isActive() override fun _path(): List = _path - fun brandId(): IdField = IdField(_path, "brand_id", BrandsRow::brandId, null, null, { row, value -> row.copy(brandId = value) }, BrandsId.dbType) + fun brandId(): IdField = IdField(_path, "brand_id", BrandsRow::brandId, null, null, { row, value -> row.copy(brandId = value) }, BrandsId.mariaType) override fun columns(): List> = listOf(this.brandId().underlying, this.name().underlying, this.slug().underlying, this.logoBlob().underlying, this.websiteUrl().underlying, this.countryOfOrigin().underlying, this.isActive().underlying) fun countryOfOrigin(): OptField = OptField(_path, "country_of_origin", BrandsRow::countryOfOrigin, null, null, { row, value -> row.copy(countryOfOrigin = value) }, MariaTypes.char_) - fun isActive(): Field = Field(_path, "is_active", BrandsRow::isActive, null, null, { row, value -> row.copy(isActive = value) }, KotlinDbTypes.MariaTypes.bool) + fun isActive(): Field = Field(_path, "is_active", BrandsRow::isActive, null, null, { row, value -> row.copy(isActive = value) }, IsActive.mariaType) fun logoBlob(): OptField = OptField(_path, "logo_blob", BrandsRow::logoBlob, null, null, { row, value -> row.copy(logoBlob = value) }, MariaTypes.mediumblob) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/brands/BrandsId.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/brands/BrandsId.kt index 55af9b734c..330487b6ac 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/brands/BrandsId.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/brands/BrandsId.kt @@ -21,7 +21,7 @@ data class BrandsId(@field:JsonValue val value: Uint2) { val bijection: Bijection = Bijection.of(BrandsId::value, ::BrandsId) - val dbType: MariaType = + val mariaType: MariaType = MariaTypes.smallintUnsigned.bimap(::BrandsId, BrandsId::value) } } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/brands/BrandsRepoImpl.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/brands/BrandsRepoImpl.kt index 3178b04127..cec55543eb 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/brands/BrandsRepoImpl.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/brands/BrandsRepoImpl.kt @@ -9,7 +9,6 @@ import dev.typr.foundations.MariaTypes import dev.typr.foundations.kotlin.DeleteBuilder import dev.typr.foundations.kotlin.Dialect import dev.typr.foundations.kotlin.Fragment -import dev.typr.foundations.kotlin.KotlinDbTypes import dev.typr.foundations.kotlin.SelectBuilder import dev.typr.foundations.kotlin.UpdateBuilder import dev.typr.foundations.kotlin.nullable @@ -19,6 +18,7 @@ import kotlin.collections.Iterator import kotlin.collections.List import kotlin.collections.Map import kotlin.collections.MutableMap +import testdb.userdefined.IsActive class BrandsRepoImpl() : BrandsRepo { override fun delete(): DeleteBuilder = DeleteBuilder.of("`brands`", BrandsFields.structure, Dialect.MARIADB) @@ -26,21 +26,21 @@ class BrandsRepoImpl() : BrandsRepo { override fun deleteById( brandId: BrandsId, c: Connection - ): Boolean = Fragment.interpolate(Fragment.lit("delete from `brands` where `brand_id` = "), Fragment.encode(BrandsId.dbType, brandId), Fragment.lit("")).update().runUnchecked(c) > 0 + ): Boolean = Fragment.interpolate(Fragment.lit("delete from `brands` where `brand_id` = "), Fragment.encode(BrandsId.mariaType, brandId), Fragment.lit("")).update().runUnchecked(c) > 0 override fun deleteByIds( brandIds: Array, c: Connection ): Int { val fragments: ArrayList = ArrayList() - for (id in brandIds) { fragments.add(Fragment.encode(BrandsId.dbType, id)) } + for (id in brandIds) { fragments.add(Fragment.encode(BrandsId.mariaType, id)) } return Fragment.interpolate(Fragment.lit("delete from `brands` where `brand_id` in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).update().runUnchecked(c) } override fun insert( unsaved: BrandsRow, c: Connection - ): BrandsRow = Fragment.interpolate(Fragment.lit("insert into `brands`(`name`, `slug`, `logo_blob`, `website_url`, `country_of_origin`, `is_active`)\nvalues ("), Fragment.encode(MariaTypes.varchar, unsaved.name), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.slug), Fragment.lit(", "), Fragment.encode(MariaTypes.mediumblob.nullable(), unsaved.logoBlob), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.websiteUrl), Fragment.lit(", "), Fragment.encode(MariaTypes.char_.nullable(), unsaved.countryOfOrigin), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.bool, unsaved.isActive), Fragment.lit(")\nRETURNING `brand_id`, `name`, `slug`, `logo_blob`, `website_url`, `country_of_origin`, `is_active`\n")) + ): BrandsRow = Fragment.interpolate(Fragment.lit("insert into `brands`(`name`, `slug`, `logo_blob`, `website_url`, `country_of_origin`, `is_active`)\nvalues ("), Fragment.encode(MariaTypes.varchar, unsaved.name), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.slug), Fragment.lit(", "), Fragment.encode(MariaTypes.mediumblob.nullable(), unsaved.logoBlob), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.websiteUrl), Fragment.lit(", "), Fragment.encode(MariaTypes.char_.nullable(), unsaved.countryOfOrigin), Fragment.lit(", "), Fragment.encode(IsActive.mariaType, unsaved.isActive), Fragment.lit(")\nRETURNING `brand_id`, `name`, `slug`, `logo_blob`, `website_url`, `country_of_origin`, `is_active`\n")) .updateReturning(BrandsRow._rowParser.exactlyOne()).runUnchecked(c) override fun insert( @@ -71,7 +71,7 @@ class BrandsRepoImpl() : BrandsRepo { unsaved.isActive.visit( { }, { value -> columns.add(Fragment.lit("`is_active`")) - values.add(Fragment.interpolate(Fragment.encode(KotlinDbTypes.MariaTypes.bool, value), Fragment.lit(""))) } + values.add(Fragment.interpolate(Fragment.encode(IsActive.mariaType, value), Fragment.lit(""))) } ); val q: Fragment = Fragment.interpolate(Fragment.lit("insert into `brands`("), Fragment.comma(columns.toMutableList()), Fragment.lit(")\nvalues ("), Fragment.comma(values.toMutableList()), Fragment.lit(")\nRETURNING `brand_id`, `name`, `slug`, `logo_blob`, `website_url`, `country_of_origin`, `is_active`\n")) return q.updateReturning(BrandsRow._rowParser.exactlyOne()).runUnchecked(c) @@ -84,14 +84,14 @@ class BrandsRepoImpl() : BrandsRepo { override fun selectById( brandId: BrandsId, c: Connection - ): BrandsRow? = Fragment.interpolate(Fragment.lit("select `brand_id`, `name`, `slug`, `logo_blob`, `website_url`, `country_of_origin`, `is_active`\nfrom `brands`\nwhere `brand_id` = "), Fragment.encode(BrandsId.dbType, brandId), Fragment.lit("")).query(BrandsRow._rowParser.first()).runUnchecked(c) + ): BrandsRow? = Fragment.interpolate(Fragment.lit("select `brand_id`, `name`, `slug`, `logo_blob`, `website_url`, `country_of_origin`, `is_active`\nfrom `brands`\nwhere `brand_id` = "), Fragment.encode(BrandsId.mariaType, brandId), Fragment.lit("")).query(BrandsRow._rowParser.first()).runUnchecked(c) override fun selectByIds( brandIds: Array, c: Connection ): List { val fragments: ArrayList = ArrayList() - for (id in brandIds) { fragments.add(Fragment.encode(BrandsId.dbType, id)) } + for (id in brandIds) { fragments.add(Fragment.encode(BrandsId.mariaType, id)) } return Fragment.interpolate(Fragment.lit("select `brand_id`, `name`, `slug`, `logo_blob`, `website_url`, `country_of_origin`, `is_active` from `brands` where `brand_id` in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).query(BrandsRow._rowParser.all()).runUnchecked(c) } @@ -116,13 +116,13 @@ class BrandsRepoImpl() : BrandsRepo { c: Connection ): Boolean { val brandId: BrandsId = row.brandId - return Fragment.interpolate(Fragment.lit("update `brands`\nset `name` = "), Fragment.encode(MariaTypes.varchar, row.name), Fragment.lit(",\n`slug` = "), Fragment.encode(MariaTypes.varchar, row.slug), Fragment.lit(",\n`logo_blob` = "), Fragment.encode(MariaTypes.mediumblob.nullable(), row.logoBlob), Fragment.lit(",\n`website_url` = "), Fragment.encode(MariaTypes.varchar.nullable(), row.websiteUrl), Fragment.lit(",\n`country_of_origin` = "), Fragment.encode(MariaTypes.char_.nullable(), row.countryOfOrigin), Fragment.lit(",\n`is_active` = "), Fragment.encode(KotlinDbTypes.MariaTypes.bool, row.isActive), Fragment.lit("\nwhere `brand_id` = "), Fragment.encode(BrandsId.dbType, brandId), Fragment.lit("")).update().runUnchecked(c) > 0 + return Fragment.interpolate(Fragment.lit("update `brands`\nset `name` = "), Fragment.encode(MariaTypes.varchar, row.name), Fragment.lit(",\n`slug` = "), Fragment.encode(MariaTypes.varchar, row.slug), Fragment.lit(",\n`logo_blob` = "), Fragment.encode(MariaTypes.mediumblob.nullable(), row.logoBlob), Fragment.lit(",\n`website_url` = "), Fragment.encode(MariaTypes.varchar.nullable(), row.websiteUrl), Fragment.lit(",\n`country_of_origin` = "), Fragment.encode(MariaTypes.char_.nullable(), row.countryOfOrigin), Fragment.lit(",\n`is_active` = "), Fragment.encode(IsActive.mariaType, row.isActive), Fragment.lit("\nwhere `brand_id` = "), Fragment.encode(BrandsId.mariaType, brandId), Fragment.lit("")).update().runUnchecked(c) > 0 } override fun upsert( unsaved: BrandsRow, c: Connection - ): BrandsRow = Fragment.interpolate(Fragment.lit("INSERT INTO `brands`(`brand_id`, `name`, `slug`, `logo_blob`, `website_url`, `country_of_origin`, `is_active`)\nVALUES ("), Fragment.encode(BrandsId.dbType, unsaved.brandId), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.name), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.slug), Fragment.lit(", "), Fragment.encode(MariaTypes.mediumblob.nullable(), unsaved.logoBlob), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.websiteUrl), Fragment.lit(", "), Fragment.encode(MariaTypes.char_.nullable(), unsaved.countryOfOrigin), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.bool, unsaved.isActive), Fragment.lit(")\nON DUPLICATE KEY UPDATE `name` = VALUES(`name`),\n`slug` = VALUES(`slug`),\n`logo_blob` = VALUES(`logo_blob`),\n`website_url` = VALUES(`website_url`),\n`country_of_origin` = VALUES(`country_of_origin`),\n`is_active` = VALUES(`is_active`)\nRETURNING `brand_id`, `name`, `slug`, `logo_blob`, `website_url`, `country_of_origin`, `is_active`")) + ): BrandsRow = Fragment.interpolate(Fragment.lit("INSERT INTO `brands`(`brand_id`, `name`, `slug`, `logo_blob`, `website_url`, `country_of_origin`, `is_active`)\nVALUES ("), Fragment.encode(BrandsId.mariaType, unsaved.brandId), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.name), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.slug), Fragment.lit(", "), Fragment.encode(MariaTypes.mediumblob.nullable(), unsaved.logoBlob), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.websiteUrl), Fragment.lit(", "), Fragment.encode(MariaTypes.char_.nullable(), unsaved.countryOfOrigin), Fragment.lit(", "), Fragment.encode(IsActive.mariaType, unsaved.isActive), Fragment.lit(")\nON DUPLICATE KEY UPDATE `name` = VALUES(`name`),\n`slug` = VALUES(`slug`),\n`logo_blob` = VALUES(`logo_blob`),\n`website_url` = VALUES(`website_url`),\n`country_of_origin` = VALUES(`country_of_origin`),\n`is_active` = VALUES(`is_active`)\nRETURNING `brand_id`, `name`, `slug`, `logo_blob`, `website_url`, `country_of_origin`, `is_active`")) .updateReturning(BrandsRow._rowParser.exactlyOne()) .runUnchecked(c) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/brands/BrandsRow.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/brands/BrandsRow.kt index 0ad28a16b3..714537b8e7 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/brands/BrandsRow.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/brands/BrandsRow.kt @@ -8,11 +8,11 @@ package testdb.brands import com.fasterxml.jackson.annotation.JsonProperty import dev.typr.foundations.MariaTypes import dev.typr.foundations.Tuple.Tuple7 -import dev.typr.foundations.kotlin.KotlinDbTypes import dev.typr.foundations.kotlin.RowParser import dev.typr.foundations.kotlin.RowParsers import dev.typr.foundations.kotlin.nullable import testdb.customtypes.Defaulted +import testdb.userdefined.IsActive /** Table: brands * Primary key: brand_id @@ -41,8 +41,8 @@ data class BrandsRow( /** * Default: 1 */ - @field:JsonProperty("is_active") val isActive: Boolean -) : Tuple7 { + @field:JsonProperty("is_active") val isActive: /* user-picked */ IsActive +) : Tuple7 { override fun _1(): BrandsId = brandId override fun _2(): String = name @@ -55,7 +55,7 @@ data class BrandsRow( override fun _6(): String? = countryOfOrigin - override fun _7(): Boolean = isActive + override fun _7(): /* user-picked */ IsActive = isActive fun id(): BrandsId = brandId @@ -63,10 +63,10 @@ data class BrandsRow( logoBlob: Defaulted = Defaulted.Provided(this.logoBlob), websiteUrl: Defaulted = Defaulted.Provided(this.websiteUrl), countryOfOrigin: Defaulted = Defaulted.Provided(this.countryOfOrigin), - isActive: Defaulted = Defaulted.Provided(this.isActive) + isActive: Defaulted = Defaulted.Provided(this.isActive) ): BrandsRowUnsaved = BrandsRowUnsaved(name, slug, logoBlob, websiteUrl, countryOfOrigin, isActive) companion object { - val _rowParser: RowParser = RowParsers.of(BrandsId.dbType, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.mediumblob.nullable(), MariaTypes.varchar.nullable(), MariaTypes.char_.nullable(), KotlinDbTypes.MariaTypes.bool, { t0, t1, t2, t3, t4, t5, t6 -> BrandsRow(t0, t1, t2, t3, t4, t5, t6) }, { row -> arrayOf(row.brandId, row.name, row.slug, row.logoBlob, row.websiteUrl, row.countryOfOrigin, row.isActive) }) + val _rowParser: RowParser = RowParsers.of(BrandsId.mariaType, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.mediumblob.nullable(), MariaTypes.varchar.nullable(), MariaTypes.char_.nullable(), IsActive.mariaType, { t0, t1, t2, t3, t4, t5, t6 -> BrandsRow(t0, t1, t2, t3, t4, t5, t6) }, { row -> arrayOf(row.brandId, row.name, row.slug, row.logoBlob, row.websiteUrl, row.countryOfOrigin, row.isActive) }) } } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/brands/BrandsRowUnsaved.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/brands/BrandsRowUnsaved.kt index be6a462f0b..b601f94c09 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/brands/BrandsRowUnsaved.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/brands/BrandsRowUnsaved.kt @@ -8,6 +8,7 @@ package testdb.brands import com.fasterxml.jackson.annotation.JsonProperty import testdb.customtypes.Defaulted import testdb.customtypes.Defaulted.UseDefault +import testdb.userdefined.IsActive /** This class corresponds to a row in table `brands` which has not been persisted yet */ data class BrandsRowUnsaved( @@ -30,13 +31,13 @@ data class BrandsRowUnsaved( /** Default: 1 */ - @field:JsonProperty("is_active") val isActive: Defaulted = UseDefault() + @field:JsonProperty("is_active") val isActive: Defaulted = UseDefault() ) { fun toRow( logoBlobDefault: () -> ByteArray?, websiteUrlDefault: () -> String?, countryOfOriginDefault: () -> String?, - isActiveDefault: () -> Boolean, + isActiveDefault: () -> /* user-picked */ IsActive, brandIdDefault: () -> BrandsId ): BrandsRow = BrandsRow(brandId = brandIdDefault(), name = name, slug = slug, logoBlob = logoBlob.getOrElse(logoBlobDefault), websiteUrl = websiteUrl.getOrElse(websiteUrlDefault), countryOfOrigin = countryOfOrigin.getOrElse(countryOfOriginDefault), isActive = isActive.getOrElse(isActiveDefault)) } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/categories/CategoriesFields.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/categories/CategoriesFields.kt index d3c9cbba1b..32d5a49841 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/categories/CategoriesFields.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/categories/CategoriesFields.kt @@ -42,7 +42,7 @@ data class CategoriesFields(val _path: List) : TupleExpr9 = _path - fun categoryId(): IdField = IdField(_path, "category_id", CategoriesRow::categoryId, null, null, { row, value -> row.copy(categoryId = value) }, CategoriesId.dbType) + fun categoryId(): IdField = IdField(_path, "category_id", CategoriesRow::categoryId, null, null, { row, value -> row.copy(categoryId = value) }, CategoriesId.mariaType) override fun columns(): List> = listOf(this.categoryId().underlying, this.parentId().underlying, this.name().underlying, this.slug().underlying, this.description().underlying, this.imageUrl().underlying, this.sortOrder().underlying, this.isVisible().underlying, this.metadata().underlying) @@ -58,7 +58,7 @@ data class CategoriesFields(val _path: List) : TupleExpr9 = Field(_path, "name", CategoriesRow::name, null, null, { row, value -> row.copy(name = value) }, MariaTypes.varchar) - fun parentId(): OptField = OptField(_path, "parent_id", CategoriesRow::parentId, null, null, { row, value -> row.copy(parentId = value) }, CategoriesId.dbType) + fun parentId(): OptField = OptField(_path, "parent_id", CategoriesRow::parentId, null, null, { row, value -> row.copy(parentId = value) }, CategoriesId.mariaType) override fun rowParser(): RowParser = CategoriesRow._rowParser.underlying diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/categories/CategoriesId.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/categories/CategoriesId.kt index c089101bd8..d7e9c5f8a9 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/categories/CategoriesId.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/categories/CategoriesId.kt @@ -21,7 +21,7 @@ data class CategoriesId(@field:JsonValue val value: Uint4) { val bijection: Bijection = Bijection.of(CategoriesId::value, ::CategoriesId) - val dbType: MariaType = + val mariaType: MariaType = MariaTypes.mediumintUnsigned.bimap(::CategoriesId, CategoriesId::value) } } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/categories/CategoriesRepoImpl.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/categories/CategoriesRepoImpl.kt index 1827f10440..afc3fd6d32 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/categories/CategoriesRepoImpl.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/categories/CategoriesRepoImpl.kt @@ -26,21 +26,21 @@ class CategoriesRepoImpl() : CategoriesRepo { override fun deleteById( categoryId: CategoriesId, c: Connection - ): Boolean = Fragment.interpolate(Fragment.lit("delete from `categories` where `category_id` = "), Fragment.encode(CategoriesId.dbType, categoryId), Fragment.lit("")).update().runUnchecked(c) > 0 + ): Boolean = Fragment.interpolate(Fragment.lit("delete from `categories` where `category_id` = "), Fragment.encode(CategoriesId.mariaType, categoryId), Fragment.lit("")).update().runUnchecked(c) > 0 override fun deleteByIds( categoryIds: Array, c: Connection ): Int { val fragments: ArrayList = ArrayList() - for (id in categoryIds) { fragments.add(Fragment.encode(CategoriesId.dbType, id)) } + for (id in categoryIds) { fragments.add(Fragment.encode(CategoriesId.mariaType, id)) } return Fragment.interpolate(Fragment.lit("delete from `categories` where `category_id` in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).update().runUnchecked(c) } override fun insert( unsaved: CategoriesRow, c: Connection - ): CategoriesRow = Fragment.interpolate(Fragment.lit("insert into `categories`(`parent_id`, `name`, `slug`, `description`, `image_url`, `sort_order`, `is_visible`, `metadata`)\nvalues ("), Fragment.encode(CategoriesId.dbType.nullable(), unsaved.parentId), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.name), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.slug), Fragment.lit(", "), Fragment.encode(MariaTypes.mediumtext.nullable(), unsaved.description), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.imageUrl), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.smallint, unsaved.sortOrder), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.bool, unsaved.isVisible), Fragment.lit(", "), Fragment.encode(MariaTypes.json.nullable(), unsaved.metadata), Fragment.lit(")\nRETURNING `category_id`, `parent_id`, `name`, `slug`, `description`, `image_url`, `sort_order`, `is_visible`, `metadata`\n")) + ): CategoriesRow = Fragment.interpolate(Fragment.lit("insert into `categories`(`parent_id`, `name`, `slug`, `description`, `image_url`, `sort_order`, `is_visible`, `metadata`)\nvalues ("), Fragment.encode(CategoriesId.mariaType.nullable(), unsaved.parentId), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.name), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.slug), Fragment.lit(", "), Fragment.encode(MariaTypes.mediumtext.nullable(), unsaved.description), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.imageUrl), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.smallint, unsaved.sortOrder), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.bool, unsaved.isVisible), Fragment.lit(", "), Fragment.encode(MariaTypes.json.nullable(), unsaved.metadata), Fragment.lit(")\nRETURNING `category_id`, `parent_id`, `name`, `slug`, `description`, `image_url`, `sort_order`, `is_visible`, `metadata`\n")) .updateReturning(CategoriesRow._rowParser.exactlyOne()).runUnchecked(c) override fun insert( @@ -56,7 +56,7 @@ class CategoriesRepoImpl() : CategoriesRepo { unsaved.parentId.visit( { }, { value -> columns.add(Fragment.lit("`parent_id`")) - values.add(Fragment.interpolate(Fragment.encode(CategoriesId.dbType.nullable(), value), Fragment.lit(""))) } + values.add(Fragment.interpolate(Fragment.encode(CategoriesId.mariaType.nullable(), value), Fragment.lit(""))) } ); unsaved.description.visit( { }, @@ -94,14 +94,14 @@ class CategoriesRepoImpl() : CategoriesRepo { override fun selectById( categoryId: CategoriesId, c: Connection - ): CategoriesRow? = Fragment.interpolate(Fragment.lit("select `category_id`, `parent_id`, `name`, `slug`, `description`, `image_url`, `sort_order`, `is_visible`, `metadata`\nfrom `categories`\nwhere `category_id` = "), Fragment.encode(CategoriesId.dbType, categoryId), Fragment.lit("")).query(CategoriesRow._rowParser.first()).runUnchecked(c) + ): CategoriesRow? = Fragment.interpolate(Fragment.lit("select `category_id`, `parent_id`, `name`, `slug`, `description`, `image_url`, `sort_order`, `is_visible`, `metadata`\nfrom `categories`\nwhere `category_id` = "), Fragment.encode(CategoriesId.mariaType, categoryId), Fragment.lit("")).query(CategoriesRow._rowParser.first()).runUnchecked(c) override fun selectByIds( categoryIds: Array, c: Connection ): List { val fragments: ArrayList = ArrayList() - for (id in categoryIds) { fragments.add(Fragment.encode(CategoriesId.dbType, id)) } + for (id in categoryIds) { fragments.add(Fragment.encode(CategoriesId.mariaType, id)) } return Fragment.interpolate(Fragment.lit("select `category_id`, `parent_id`, `name`, `slug`, `description`, `image_url`, `sort_order`, `is_visible`, `metadata` from `categories` where `category_id` in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).query(CategoriesRow._rowParser.all()).runUnchecked(c) } @@ -126,13 +126,13 @@ class CategoriesRepoImpl() : CategoriesRepo { c: Connection ): Boolean { val categoryId: CategoriesId = row.categoryId - return Fragment.interpolate(Fragment.lit("update `categories`\nset `parent_id` = "), Fragment.encode(CategoriesId.dbType.nullable(), row.parentId), Fragment.lit(",\n`name` = "), Fragment.encode(MariaTypes.varchar, row.name), Fragment.lit(",\n`slug` = "), Fragment.encode(MariaTypes.varchar, row.slug), Fragment.lit(",\n`description` = "), Fragment.encode(MariaTypes.mediumtext.nullable(), row.description), Fragment.lit(",\n`image_url` = "), Fragment.encode(MariaTypes.varchar.nullable(), row.imageUrl), Fragment.lit(",\n`sort_order` = "), Fragment.encode(KotlinDbTypes.MariaTypes.smallint, row.sortOrder), Fragment.lit(",\n`is_visible` = "), Fragment.encode(KotlinDbTypes.MariaTypes.bool, row.isVisible), Fragment.lit(",\n`metadata` = "), Fragment.encode(MariaTypes.json.nullable(), row.metadata), Fragment.lit("\nwhere `category_id` = "), Fragment.encode(CategoriesId.dbType, categoryId), Fragment.lit("")).update().runUnchecked(c) > 0 + return Fragment.interpolate(Fragment.lit("update `categories`\nset `parent_id` = "), Fragment.encode(CategoriesId.mariaType.nullable(), row.parentId), Fragment.lit(",\n`name` = "), Fragment.encode(MariaTypes.varchar, row.name), Fragment.lit(",\n`slug` = "), Fragment.encode(MariaTypes.varchar, row.slug), Fragment.lit(",\n`description` = "), Fragment.encode(MariaTypes.mediumtext.nullable(), row.description), Fragment.lit(",\n`image_url` = "), Fragment.encode(MariaTypes.varchar.nullable(), row.imageUrl), Fragment.lit(",\n`sort_order` = "), Fragment.encode(KotlinDbTypes.MariaTypes.smallint, row.sortOrder), Fragment.lit(",\n`is_visible` = "), Fragment.encode(KotlinDbTypes.MariaTypes.bool, row.isVisible), Fragment.lit(",\n`metadata` = "), Fragment.encode(MariaTypes.json.nullable(), row.metadata), Fragment.lit("\nwhere `category_id` = "), Fragment.encode(CategoriesId.mariaType, categoryId), Fragment.lit("")).update().runUnchecked(c) > 0 } override fun upsert( unsaved: CategoriesRow, c: Connection - ): CategoriesRow = Fragment.interpolate(Fragment.lit("INSERT INTO `categories`(`category_id`, `parent_id`, `name`, `slug`, `description`, `image_url`, `sort_order`, `is_visible`, `metadata`)\nVALUES ("), Fragment.encode(CategoriesId.dbType, unsaved.categoryId), Fragment.lit(", "), Fragment.encode(CategoriesId.dbType.nullable(), unsaved.parentId), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.name), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.slug), Fragment.lit(", "), Fragment.encode(MariaTypes.mediumtext.nullable(), unsaved.description), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.imageUrl), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.smallint, unsaved.sortOrder), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.bool, unsaved.isVisible), Fragment.lit(", "), Fragment.encode(MariaTypes.json.nullable(), unsaved.metadata), Fragment.lit(")\nON DUPLICATE KEY UPDATE `parent_id` = VALUES(`parent_id`),\n`name` = VALUES(`name`),\n`slug` = VALUES(`slug`),\n`description` = VALUES(`description`),\n`image_url` = VALUES(`image_url`),\n`sort_order` = VALUES(`sort_order`),\n`is_visible` = VALUES(`is_visible`),\n`metadata` = VALUES(`metadata`)\nRETURNING `category_id`, `parent_id`, `name`, `slug`, `description`, `image_url`, `sort_order`, `is_visible`, `metadata`")) + ): CategoriesRow = Fragment.interpolate(Fragment.lit("INSERT INTO `categories`(`category_id`, `parent_id`, `name`, `slug`, `description`, `image_url`, `sort_order`, `is_visible`, `metadata`)\nVALUES ("), Fragment.encode(CategoriesId.mariaType, unsaved.categoryId), Fragment.lit(", "), Fragment.encode(CategoriesId.mariaType.nullable(), unsaved.parentId), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.name), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.slug), Fragment.lit(", "), Fragment.encode(MariaTypes.mediumtext.nullable(), unsaved.description), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.imageUrl), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.smallint, unsaved.sortOrder), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.bool, unsaved.isVisible), Fragment.lit(", "), Fragment.encode(MariaTypes.json.nullable(), unsaved.metadata), Fragment.lit(")\nON DUPLICATE KEY UPDATE `parent_id` = VALUES(`parent_id`),\n`name` = VALUES(`name`),\n`slug` = VALUES(`slug`),\n`description` = VALUES(`description`),\n`image_url` = VALUES(`image_url`),\n`sort_order` = VALUES(`sort_order`),\n`is_visible` = VALUES(`is_visible`),\n`metadata` = VALUES(`metadata`)\nRETURNING `category_id`, `parent_id`, `name`, `slug`, `description`, `image_url`, `sort_order`, `is_visible`, `metadata`")) .updateReturning(CategoriesRow._rowParser.exactlyOne()) .runUnchecked(c) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/categories/CategoriesRow.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/categories/CategoriesRow.kt index dbc2da1ff0..49c488a9ea 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/categories/CategoriesRow.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/categories/CategoriesRow.kt @@ -83,6 +83,6 @@ data class CategoriesRow( ): CategoriesRowUnsaved = CategoriesRowUnsaved(name, slug, parentId, description, imageUrl, sortOrder, isVisible, metadata) companion object { - val _rowParser: RowParser = RowParsers.of(CategoriesId.dbType, CategoriesId.dbType.nullable(), MariaTypes.varchar, MariaTypes.varchar, MariaTypes.mediumtext.nullable(), MariaTypes.varchar.nullable(), KotlinDbTypes.MariaTypes.smallint, KotlinDbTypes.MariaTypes.bool, MariaTypes.json.nullable(), { t0, t1, t2, t3, t4, t5, t6, t7, t8 -> CategoriesRow(t0, t1, t2, t3, t4, t5, t6, t7, t8) }, { row -> arrayOf(row.categoryId, row.parentId, row.name, row.slug, row.description, row.imageUrl, row.sortOrder, row.isVisible, row.metadata) }) + val _rowParser: RowParser = RowParsers.of(CategoriesId.mariaType, CategoriesId.mariaType.nullable(), MariaTypes.varchar, MariaTypes.varchar, MariaTypes.mediumtext.nullable(), MariaTypes.varchar.nullable(), KotlinDbTypes.MariaTypes.smallint, KotlinDbTypes.MariaTypes.bool, MariaTypes.json.nullable(), { t0, t1, t2, t3, t4, t5, t6, t7, t8 -> CategoriesRow(t0, t1, t2, t3, t4, t5, t6, t7, t8) }, { row -> arrayOf(row.categoryId, row.parentId, row.name, row.slug, row.description, row.imageUrl, row.sortOrder, row.isVisible, row.metadata) }) } } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/customer_addresses/CustomerAddressesFields.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/customer_addresses/CustomerAddressesFields.kt index 815f226510..2dd0a36d7b 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/customer_addresses/CustomerAddressesFields.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/customer_addresses/CustomerAddressesFields.kt @@ -11,7 +11,6 @@ import dev.typr.foundations.dsl.FieldsBase import dev.typr.foundations.dsl.Path import dev.typr.foundations.dsl.SqlExpr.FieldLike import dev.typr.foundations.kotlin.ForeignKey -import dev.typr.foundations.kotlin.KotlinDbTypes import dev.typr.foundations.kotlin.RelationStructure import dev.typr.foundations.kotlin.SqlExpr import dev.typr.foundations.kotlin.SqlExpr.Field @@ -24,8 +23,9 @@ import org.mariadb.jdbc.type.Point import testdb.customers.CustomersFields import testdb.customers.CustomersId import testdb.customers.CustomersRow +import testdb.userdefined.IsDefault -data class CustomerAddressesFields(val _path: List) : TupleExpr14, RelationStructure, FieldsBase { +data class CustomerAddressesFields(val _path: List) : TupleExpr14, RelationStructure, FieldsBase { override fun _1(): SqlExpr = addressId() override fun _10(): SqlExpr = postalCode() @@ -42,7 +42,7 @@ data class CustomerAddressesFields(val _path: List) : TupleExpr14 = addressType() - override fun _4(): SqlExpr = isDefault() + override fun _4(): SqlExpr = isDefault() override fun _5(): SqlExpr = recipientName() @@ -56,7 +56,7 @@ data class CustomerAddressesFields(val _path: List) : TupleExpr14 = _path - fun addressId(): IdField = IdField(_path, "address_id", CustomerAddressesRow::addressId, null, null, { row, value -> row.copy(addressId = value) }, CustomerAddressesId.dbType) + fun addressId(): IdField = IdField(_path, "address_id", CustomerAddressesRow::addressId, null, null, { row, value -> row.copy(addressId = value) }, CustomerAddressesId.mariaType) fun addressType(): Field = Field(_path, "address_type", CustomerAddressesRow::addressType, null, null, { row, value -> row.copy(addressType = value) }, MariaTypes.text) @@ -68,13 +68,13 @@ data class CustomerAddressesFields(val _path: List) : TupleExpr14 = Field(_path, "created_at", CustomerAddressesRow::createdAt, null, null, { row, value -> row.copy(createdAt = value) }, MariaTypes.datetime) - fun customerId(): Field = Field(_path, "customer_id", CustomerAddressesRow::customerId, null, null, { row, value -> row.copy(customerId = value) }, CustomersId.dbType) + fun customerId(): Field = Field(_path, "customer_id", CustomerAddressesRow::customerId, null, null, { row, value -> row.copy(customerId = value) }, CustomersId.mariaType) fun deliveryNotes(): OptField = OptField(_path, "delivery_notes", CustomerAddressesRow::deliveryNotes, null, null, { row, value -> row.copy(deliveryNotes = value) }, MariaTypes.tinytext) fun fkCustomers(): ForeignKey = ForeignKey.of("fk_address_customer").withColumnPair(customerId(), CustomersFields::customerId) - fun isDefault(): Field = Field(_path, "is_default", CustomerAddressesRow::isDefault, null, null, { row, value -> row.copy(isDefault = value) }, KotlinDbTypes.MariaTypes.bool) + fun isDefault(): Field = Field(_path, "is_default", CustomerAddressesRow::isDefault, null, null, { row, value -> row.copy(isDefault = value) }, IsDefault.mariaType) fun location(): OptField = OptField(_path, "location", CustomerAddressesRow::location, null, null, { row, value -> row.copy(location = value) }, MariaTypes.point) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/customer_addresses/CustomerAddressesId.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/customer_addresses/CustomerAddressesId.kt index dbcd6715ba..c4e6da58b9 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/customer_addresses/CustomerAddressesId.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/customer_addresses/CustomerAddressesId.kt @@ -21,7 +21,7 @@ data class CustomerAddressesId(@field:JsonValue val value: Uint4) { val bijection: Bijection = Bijection.of(CustomerAddressesId::value, ::CustomerAddressesId) - val dbType: MariaType = + val mariaType: MariaType = MariaTypes.intUnsigned.bimap(::CustomerAddressesId, CustomerAddressesId::value) } } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/customer_addresses/CustomerAddressesRepoImpl.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/customer_addresses/CustomerAddressesRepoImpl.kt index 29a11d9d1c..965f0005fe 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/customer_addresses/CustomerAddressesRepoImpl.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/customer_addresses/CustomerAddressesRepoImpl.kt @@ -9,7 +9,6 @@ import dev.typr.foundations.MariaTypes import dev.typr.foundations.kotlin.DeleteBuilder import dev.typr.foundations.kotlin.Dialect import dev.typr.foundations.kotlin.Fragment -import dev.typr.foundations.kotlin.KotlinDbTypes import dev.typr.foundations.kotlin.SelectBuilder import dev.typr.foundations.kotlin.UpdateBuilder import dev.typr.foundations.kotlin.nullable @@ -20,6 +19,7 @@ import kotlin.collections.List import kotlin.collections.Map import kotlin.collections.MutableMap import testdb.customers.CustomersId +import testdb.userdefined.IsDefault class CustomerAddressesRepoImpl() : CustomerAddressesRepo { override fun delete(): DeleteBuilder = DeleteBuilder.of("`customer_addresses`", CustomerAddressesFields.structure, Dialect.MARIADB) @@ -27,21 +27,21 @@ class CustomerAddressesRepoImpl() : CustomerAddressesRepo { override fun deleteById( addressId: CustomerAddressesId, c: Connection - ): Boolean = Fragment.interpolate(Fragment.lit("delete from `customer_addresses` where `address_id` = "), Fragment.encode(CustomerAddressesId.dbType, addressId), Fragment.lit("")).update().runUnchecked(c) > 0 + ): Boolean = Fragment.interpolate(Fragment.lit("delete from `customer_addresses` where `address_id` = "), Fragment.encode(CustomerAddressesId.mariaType, addressId), Fragment.lit("")).update().runUnchecked(c) > 0 override fun deleteByIds( addressIds: Array, c: Connection ): Int { val fragments: ArrayList = ArrayList() - for (id in addressIds) { fragments.add(Fragment.encode(CustomerAddressesId.dbType, id)) } + for (id in addressIds) { fragments.add(Fragment.encode(CustomerAddressesId.mariaType, id)) } return Fragment.interpolate(Fragment.lit("delete from `customer_addresses` where `address_id` in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).update().runUnchecked(c) } override fun insert( unsaved: CustomerAddressesRow, c: Connection - ): CustomerAddressesRow = Fragment.interpolate(Fragment.lit("insert into `customer_addresses`(`customer_id`, `address_type`, `is_default`, `recipient_name`, `street_line1`, `street_line2`, `city`, `state_province`, `postal_code`, `country_code`, `location`, `delivery_notes`, `created_at`)\nvalues ("), Fragment.encode(CustomersId.dbType, unsaved.customerId), Fragment.lit(", "), Fragment.encode(MariaTypes.text, unsaved.addressType), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.bool, unsaved.isDefault), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.recipientName), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.streetLine1), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.streetLine2), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.city), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.stateProvince), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.postalCode), Fragment.lit(", "), Fragment.encode(MariaTypes.char_, unsaved.countryCode), Fragment.lit(", "), Fragment.encode(MariaTypes.point.nullable(), unsaved.location), Fragment.lit(", "), Fragment.encode(MariaTypes.tinytext.nullable(), unsaved.deliveryNotes), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.createdAt), Fragment.lit(")\nRETURNING `address_id`, `customer_id`, `address_type`, `is_default`, `recipient_name`, `street_line1`, `street_line2`, `city`, `state_province`, `postal_code`, `country_code`, `location`, `delivery_notes`, `created_at`\n")) + ): CustomerAddressesRow = Fragment.interpolate(Fragment.lit("insert into `customer_addresses`(`customer_id`, `address_type`, `is_default`, `recipient_name`, `street_line1`, `street_line2`, `city`, `state_province`, `postal_code`, `country_code`, `location`, `delivery_notes`, `created_at`)\nvalues ("), Fragment.encode(CustomersId.mariaType, unsaved.customerId), Fragment.lit(", "), Fragment.encode(MariaTypes.text, unsaved.addressType), Fragment.lit(", "), Fragment.encode(IsDefault.mariaType, unsaved.isDefault), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.recipientName), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.streetLine1), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.streetLine2), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.city), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.stateProvince), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.postalCode), Fragment.lit(", "), Fragment.encode(MariaTypes.char_, unsaved.countryCode), Fragment.lit(", "), Fragment.encode(MariaTypes.point.nullable(), unsaved.location), Fragment.lit(", "), Fragment.encode(MariaTypes.tinytext.nullable(), unsaved.deliveryNotes), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.createdAt), Fragment.lit(")\nRETURNING `address_id`, `customer_id`, `address_type`, `is_default`, `recipient_name`, `street_line1`, `street_line2`, `city`, `state_province`, `postal_code`, `country_code`, `location`, `delivery_notes`, `created_at`\n")) .updateReturning(CustomerAddressesRow._rowParser.exactlyOne()).runUnchecked(c) override fun insert( @@ -51,7 +51,7 @@ class CustomerAddressesRepoImpl() : CustomerAddressesRepo { val columns: ArrayList = ArrayList() val values: ArrayList = ArrayList() columns.add(Fragment.lit("`customer_id`")) - values.add(Fragment.interpolate(Fragment.encode(CustomersId.dbType, unsaved.customerId), Fragment.lit(""))) + values.add(Fragment.interpolate(Fragment.encode(CustomersId.mariaType, unsaved.customerId), Fragment.lit(""))) columns.add(Fragment.lit("`address_type`")) values.add(Fragment.interpolate(Fragment.encode(MariaTypes.text, unsaved.addressType), Fragment.lit(""))) columns.add(Fragment.lit("`recipient_name`")) @@ -67,7 +67,7 @@ class CustomerAddressesRepoImpl() : CustomerAddressesRepo { unsaved.isDefault.visit( { }, { value -> columns.add(Fragment.lit("`is_default`")) - values.add(Fragment.interpolate(Fragment.encode(KotlinDbTypes.MariaTypes.bool, value), Fragment.lit(""))) } + values.add(Fragment.interpolate(Fragment.encode(IsDefault.mariaType, value), Fragment.lit(""))) } ); unsaved.streetLine2.visit( { }, @@ -105,14 +105,14 @@ class CustomerAddressesRepoImpl() : CustomerAddressesRepo { override fun selectById( addressId: CustomerAddressesId, c: Connection - ): CustomerAddressesRow? = Fragment.interpolate(Fragment.lit("select `address_id`, `customer_id`, `address_type`, `is_default`, `recipient_name`, `street_line1`, `street_line2`, `city`, `state_province`, `postal_code`, `country_code`, `location`, `delivery_notes`, `created_at`\nfrom `customer_addresses`\nwhere `address_id` = "), Fragment.encode(CustomerAddressesId.dbType, addressId), Fragment.lit("")).query(CustomerAddressesRow._rowParser.first()).runUnchecked(c) + ): CustomerAddressesRow? = Fragment.interpolate(Fragment.lit("select `address_id`, `customer_id`, `address_type`, `is_default`, `recipient_name`, `street_line1`, `street_line2`, `city`, `state_province`, `postal_code`, `country_code`, `location`, `delivery_notes`, `created_at`\nfrom `customer_addresses`\nwhere `address_id` = "), Fragment.encode(CustomerAddressesId.mariaType, addressId), Fragment.lit("")).query(CustomerAddressesRow._rowParser.first()).runUnchecked(c) override fun selectByIds( addressIds: Array, c: Connection ): List { val fragments: ArrayList = ArrayList() - for (id in addressIds) { fragments.add(Fragment.encode(CustomerAddressesId.dbType, id)) } + for (id in addressIds) { fragments.add(Fragment.encode(CustomerAddressesId.mariaType, id)) } return Fragment.interpolate(Fragment.lit("select `address_id`, `customer_id`, `address_type`, `is_default`, `recipient_name`, `street_line1`, `street_line2`, `city`, `state_province`, `postal_code`, `country_code`, `location`, `delivery_notes`, `created_at` from `customer_addresses` where `address_id` in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).query(CustomerAddressesRow._rowParser.all()).runUnchecked(c) } @@ -132,13 +132,13 @@ class CustomerAddressesRepoImpl() : CustomerAddressesRepo { c: Connection ): Boolean { val addressId: CustomerAddressesId = row.addressId - return Fragment.interpolate(Fragment.lit("update `customer_addresses`\nset `customer_id` = "), Fragment.encode(CustomersId.dbType, row.customerId), Fragment.lit(",\n`address_type` = "), Fragment.encode(MariaTypes.text, row.addressType), Fragment.lit(",\n`is_default` = "), Fragment.encode(KotlinDbTypes.MariaTypes.bool, row.isDefault), Fragment.lit(",\n`recipient_name` = "), Fragment.encode(MariaTypes.varchar, row.recipientName), Fragment.lit(",\n`street_line1` = "), Fragment.encode(MariaTypes.varchar, row.streetLine1), Fragment.lit(",\n`street_line2` = "), Fragment.encode(MariaTypes.varchar.nullable(), row.streetLine2), Fragment.lit(",\n`city` = "), Fragment.encode(MariaTypes.varchar, row.city), Fragment.lit(",\n`state_province` = "), Fragment.encode(MariaTypes.varchar.nullable(), row.stateProvince), Fragment.lit(",\n`postal_code` = "), Fragment.encode(MariaTypes.varchar, row.postalCode), Fragment.lit(",\n`country_code` = "), Fragment.encode(MariaTypes.char_, row.countryCode), Fragment.lit(",\n`location` = "), Fragment.encode(MariaTypes.point.nullable(), row.location), Fragment.lit(",\n`delivery_notes` = "), Fragment.encode(MariaTypes.tinytext.nullable(), row.deliveryNotes), Fragment.lit(",\n`created_at` = "), Fragment.encode(MariaTypes.datetime, row.createdAt), Fragment.lit("\nwhere `address_id` = "), Fragment.encode(CustomerAddressesId.dbType, addressId), Fragment.lit("")).update().runUnchecked(c) > 0 + return Fragment.interpolate(Fragment.lit("update `customer_addresses`\nset `customer_id` = "), Fragment.encode(CustomersId.mariaType, row.customerId), Fragment.lit(",\n`address_type` = "), Fragment.encode(MariaTypes.text, row.addressType), Fragment.lit(",\n`is_default` = "), Fragment.encode(IsDefault.mariaType, row.isDefault), Fragment.lit(",\n`recipient_name` = "), Fragment.encode(MariaTypes.varchar, row.recipientName), Fragment.lit(",\n`street_line1` = "), Fragment.encode(MariaTypes.varchar, row.streetLine1), Fragment.lit(",\n`street_line2` = "), Fragment.encode(MariaTypes.varchar.nullable(), row.streetLine2), Fragment.lit(",\n`city` = "), Fragment.encode(MariaTypes.varchar, row.city), Fragment.lit(",\n`state_province` = "), Fragment.encode(MariaTypes.varchar.nullable(), row.stateProvince), Fragment.lit(",\n`postal_code` = "), Fragment.encode(MariaTypes.varchar, row.postalCode), Fragment.lit(",\n`country_code` = "), Fragment.encode(MariaTypes.char_, row.countryCode), Fragment.lit(",\n`location` = "), Fragment.encode(MariaTypes.point.nullable(), row.location), Fragment.lit(",\n`delivery_notes` = "), Fragment.encode(MariaTypes.tinytext.nullable(), row.deliveryNotes), Fragment.lit(",\n`created_at` = "), Fragment.encode(MariaTypes.datetime, row.createdAt), Fragment.lit("\nwhere `address_id` = "), Fragment.encode(CustomerAddressesId.mariaType, addressId), Fragment.lit("")).update().runUnchecked(c) > 0 } override fun upsert( unsaved: CustomerAddressesRow, c: Connection - ): CustomerAddressesRow = Fragment.interpolate(Fragment.lit("INSERT INTO `customer_addresses`(`address_id`, `customer_id`, `address_type`, `is_default`, `recipient_name`, `street_line1`, `street_line2`, `city`, `state_province`, `postal_code`, `country_code`, `location`, `delivery_notes`, `created_at`)\nVALUES ("), Fragment.encode(CustomerAddressesId.dbType, unsaved.addressId), Fragment.lit(", "), Fragment.encode(CustomersId.dbType, unsaved.customerId), Fragment.lit(", "), Fragment.encode(MariaTypes.text, unsaved.addressType), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.bool, unsaved.isDefault), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.recipientName), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.streetLine1), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.streetLine2), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.city), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.stateProvince), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.postalCode), Fragment.lit(", "), Fragment.encode(MariaTypes.char_, unsaved.countryCode), Fragment.lit(", "), Fragment.encode(MariaTypes.point.nullable(), unsaved.location), Fragment.lit(", "), Fragment.encode(MariaTypes.tinytext.nullable(), unsaved.deliveryNotes), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.createdAt), Fragment.lit(")\nON DUPLICATE KEY UPDATE `customer_id` = VALUES(`customer_id`),\n`address_type` = VALUES(`address_type`),\n`is_default` = VALUES(`is_default`),\n`recipient_name` = VALUES(`recipient_name`),\n`street_line1` = VALUES(`street_line1`),\n`street_line2` = VALUES(`street_line2`),\n`city` = VALUES(`city`),\n`state_province` = VALUES(`state_province`),\n`postal_code` = VALUES(`postal_code`),\n`country_code` = VALUES(`country_code`),\n`location` = VALUES(`location`),\n`delivery_notes` = VALUES(`delivery_notes`),\n`created_at` = VALUES(`created_at`)\nRETURNING `address_id`, `customer_id`, `address_type`, `is_default`, `recipient_name`, `street_line1`, `street_line2`, `city`, `state_province`, `postal_code`, `country_code`, `location`, `delivery_notes`, `created_at`")) + ): CustomerAddressesRow = Fragment.interpolate(Fragment.lit("INSERT INTO `customer_addresses`(`address_id`, `customer_id`, `address_type`, `is_default`, `recipient_name`, `street_line1`, `street_line2`, `city`, `state_province`, `postal_code`, `country_code`, `location`, `delivery_notes`, `created_at`)\nVALUES ("), Fragment.encode(CustomerAddressesId.mariaType, unsaved.addressId), Fragment.lit(", "), Fragment.encode(CustomersId.mariaType, unsaved.customerId), Fragment.lit(", "), Fragment.encode(MariaTypes.text, unsaved.addressType), Fragment.lit(", "), Fragment.encode(IsDefault.mariaType, unsaved.isDefault), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.recipientName), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.streetLine1), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.streetLine2), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.city), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.stateProvince), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.postalCode), Fragment.lit(", "), Fragment.encode(MariaTypes.char_, unsaved.countryCode), Fragment.lit(", "), Fragment.encode(MariaTypes.point.nullable(), unsaved.location), Fragment.lit(", "), Fragment.encode(MariaTypes.tinytext.nullable(), unsaved.deliveryNotes), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.createdAt), Fragment.lit(")\nON DUPLICATE KEY UPDATE `customer_id` = VALUES(`customer_id`),\n`address_type` = VALUES(`address_type`),\n`is_default` = VALUES(`is_default`),\n`recipient_name` = VALUES(`recipient_name`),\n`street_line1` = VALUES(`street_line1`),\n`street_line2` = VALUES(`street_line2`),\n`city` = VALUES(`city`),\n`state_province` = VALUES(`state_province`),\n`postal_code` = VALUES(`postal_code`),\n`country_code` = VALUES(`country_code`),\n`location` = VALUES(`location`),\n`delivery_notes` = VALUES(`delivery_notes`),\n`created_at` = VALUES(`created_at`)\nRETURNING `address_id`, `customer_id`, `address_type`, `is_default`, `recipient_name`, `street_line1`, `street_line2`, `city`, `state_province`, `postal_code`, `country_code`, `location`, `delivery_notes`, `created_at`")) .updateReturning(CustomerAddressesRow._rowParser.exactlyOne()) .runUnchecked(c) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/customer_addresses/CustomerAddressesRow.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/customer_addresses/CustomerAddressesRow.kt index 44c5361007..53018482bc 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/customer_addresses/CustomerAddressesRow.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/customer_addresses/CustomerAddressesRow.kt @@ -8,7 +8,6 @@ package testdb.customer_addresses import com.fasterxml.jackson.annotation.JsonProperty import dev.typr.foundations.MariaTypes import dev.typr.foundations.Tuple.Tuple14 -import dev.typr.foundations.kotlin.KotlinDbTypes import dev.typr.foundations.kotlin.RowParser import dev.typr.foundations.kotlin.RowParsers import dev.typr.foundations.kotlin.nullable @@ -16,6 +15,7 @@ import java.time.LocalDateTime import org.mariadb.jdbc.type.Point import testdb.customers.CustomersId import testdb.customtypes.Defaulted +import testdb.userdefined.IsDefault /** Table: customer_addresses * Primary key: address_id @@ -34,7 +34,7 @@ data class CustomerAddressesRow( /** * Default: 0 */ - @field:JsonProperty("is_default") val isDefault: Boolean, + @field:JsonProperty("is_default") val isDefault: /* user-picked */ IsDefault, /** */ @field:JsonProperty("recipient_name") val recipientName: String, /** */ @@ -65,7 +65,7 @@ data class CustomerAddressesRow( * Default: current_timestamp() */ @field:JsonProperty("created_at") val createdAt: LocalDateTime -) : Tuple14 { +) : Tuple14 { override fun _1(): CustomerAddressesId = addressId override fun _10(): String = postalCode @@ -82,7 +82,7 @@ data class CustomerAddressesRow( override fun _3(): String = addressType - override fun _4(): Boolean = isDefault + override fun _4(): /* user-picked */ IsDefault = isDefault override fun _5(): String = recipientName @@ -97,7 +97,7 @@ data class CustomerAddressesRow( fun id(): CustomerAddressesId = addressId fun toUnsavedRow( - isDefault: Defaulted = Defaulted.Provided(this.isDefault), + isDefault: Defaulted = Defaulted.Provided(this.isDefault), streetLine2: Defaulted = Defaulted.Provided(this.streetLine2), stateProvince: Defaulted = Defaulted.Provided(this.stateProvince), location: Defaulted = Defaulted.Provided(this.location), @@ -106,6 +106,6 @@ data class CustomerAddressesRow( ): CustomerAddressesRowUnsaved = CustomerAddressesRowUnsaved(customerId, addressType, recipientName, streetLine1, city, postalCode, countryCode, isDefault, streetLine2, stateProvince, location, deliveryNotes, createdAt) companion object { - val _rowParser: RowParser = RowParsers.of(CustomerAddressesId.dbType, CustomersId.dbType, MariaTypes.text, KotlinDbTypes.MariaTypes.bool, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.varchar.nullable(), MariaTypes.varchar, MariaTypes.varchar.nullable(), MariaTypes.varchar, MariaTypes.char_, MariaTypes.point.nullable(), MariaTypes.tinytext.nullable(), MariaTypes.datetime, { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13 -> CustomerAddressesRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13) }, { row -> arrayOf(row.addressId, row.customerId, row.addressType, row.isDefault, row.recipientName, row.streetLine1, row.streetLine2, row.city, row.stateProvince, row.postalCode, row.countryCode, row.location, row.deliveryNotes, row.createdAt) }) + val _rowParser: RowParser = RowParsers.of(CustomerAddressesId.mariaType, CustomersId.mariaType, MariaTypes.text, IsDefault.mariaType, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.varchar.nullable(), MariaTypes.varchar, MariaTypes.varchar.nullable(), MariaTypes.varchar, MariaTypes.char_, MariaTypes.point.nullable(), MariaTypes.tinytext.nullable(), MariaTypes.datetime, { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13 -> CustomerAddressesRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13) }, { row -> arrayOf(row.addressId, row.customerId, row.addressType, row.isDefault, row.recipientName, row.streetLine1, row.streetLine2, row.city, row.stateProvince, row.postalCode, row.countryCode, row.location, row.deliveryNotes, row.createdAt) }) } } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/customer_addresses/CustomerAddressesRowUnsaved.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/customer_addresses/CustomerAddressesRowUnsaved.kt index a7697de595..d3b1ff60c6 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/customer_addresses/CustomerAddressesRowUnsaved.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/customer_addresses/CustomerAddressesRowUnsaved.kt @@ -11,6 +11,7 @@ import org.mariadb.jdbc.type.Point import testdb.customers.CustomersId import testdb.customtypes.Defaulted import testdb.customtypes.Defaulted.UseDefault +import testdb.userdefined.IsDefault /** This class corresponds to a row in table `customer_addresses` which has not been persisted yet */ data class CustomerAddressesRowUnsaved( @@ -33,7 +34,7 @@ data class CustomerAddressesRowUnsaved( /** Default: 0 */ - @field:JsonProperty("is_default") val isDefault: Defaulted = UseDefault(), + @field:JsonProperty("is_default") val isDefault: Defaulted = UseDefault(), /** Default: NULL */ @@ -56,7 +57,7 @@ data class CustomerAddressesRowUnsaved( @field:JsonProperty("created_at") val createdAt: Defaulted = UseDefault() ) { fun toRow( - isDefaultDefault: () -> Boolean, + isDefaultDefault: () -> /* user-picked */ IsDefault, streetLine2Default: () -> String?, stateProvinceDefault: () -> String?, locationDefault: () -> Point?, diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/customer_orders/CustomerOrdersSqlRepoImpl.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/customer_orders/CustomerOrdersSqlRepoImpl.kt index 40f8daa290..9eac48f1e8 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/customer_orders/CustomerOrdersSqlRepoImpl.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/customer_orders/CustomerOrdersSqlRepoImpl.kt @@ -17,5 +17,5 @@ class CustomerOrdersSqlRepoImpl() : CustomerOrdersSqlRepo { customerId: /* user-picked */ CustomersId, orderStatus: String?, c: Connection - ): List = Fragment.interpolate(Fragment.lit("-- Query customers with their orders\nSELECT c.customer_id,\n c.email,\n c.first_name,\n c.last_name,\n c.tier,\n o.order_id,\n o.order_number,\n o.order_status,\n o.total_amount,\n o.ordered_at\nFROM customers c\nLEFT JOIN orders o ON c.customer_id = o.customer_id\nWHERE c.customer_id = "), Fragment.encode(CustomersId.dbType, customerId), Fragment.lit("\n AND ("), Fragment.encode(MariaTypes.text.nullable(), orderStatus), Fragment.lit(" IS NULL OR o.order_status = "), Fragment.encode(MariaTypes.text.nullable(), orderStatus), Fragment.lit(")\n")).query(CustomerOrdersSqlRow._rowParser.all()).runUnchecked(c) + ): List = Fragment.interpolate(Fragment.lit("-- Query customers with their orders\nSELECT c.customer_id,\n c.email,\n c.first_name,\n c.last_name,\n c.tier,\n o.order_id,\n o.order_number,\n o.order_status,\n o.total_amount,\n o.ordered_at\nFROM customers c\nLEFT JOIN orders o ON c.customer_id = o.customer_id\nWHERE c.customer_id = "), Fragment.encode(CustomersId.mariaType, customerId), Fragment.lit("\n AND ("), Fragment.encode(MariaTypes.text.nullable(), orderStatus), Fragment.lit(" IS NULL OR o.order_status = "), Fragment.encode(MariaTypes.text.nullable(), orderStatus), Fragment.lit(")\n")).query(CustomerOrdersSqlRow._rowParser.all()).runUnchecked(c) } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/customer_orders/CustomerOrdersSqlRow.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/customer_orders/CustomerOrdersSqlRow.kt index 173c7c001a..83be3c9b4c 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/customer_orders/CustomerOrdersSqlRow.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/customer_orders/CustomerOrdersSqlRow.kt @@ -16,17 +16,20 @@ import java.math.BigDecimal import java.time.LocalDateTime import testdb.customers.CustomersId import testdb.orders.OrdersId +import testdb.userdefined.Email +import testdb.userdefined.FirstName +import testdb.userdefined.LastName /** SQL file: customer_orders.sql */ data class CustomerOrdersSqlRow( /** Points to [testdb.customers.CustomersRow.customerId] */ @field:JsonProperty("customer_id") val customerId: CustomersId, /** Points to [testdb.customers.CustomersRow.email] */ - val email: String, + val email: /* user-picked */ Email, /** Points to [testdb.customers.CustomersRow.firstName] */ - @field:JsonProperty("first_name") val firstName: String, + @field:JsonProperty("first_name") val firstName: /* user-picked */ FirstName, /** Points to [testdb.customers.CustomersRow.lastName] */ - @field:JsonProperty("last_name") val lastName: String, + @field:JsonProperty("last_name") val lastName: /* user-picked */ LastName, /** Points to [testdb.customers.CustomersRow.tier] */ val tier: String, /** Points to [testdb.orders.OrdersRow.orderId] */ @@ -39,16 +42,16 @@ data class CustomerOrdersSqlRow( @field:JsonProperty("total_amount") val totalAmount: BigDecimal?, /** Points to [testdb.orders.OrdersRow.orderedAt] */ @field:JsonProperty("ordered_at") val orderedAt: LocalDateTime? -) : Tuple10 { +) : Tuple10 { override fun _1(): CustomersId = customerId override fun _10(): LocalDateTime? = orderedAt - override fun _2(): String = email + override fun _2(): /* user-picked */ Email = email - override fun _3(): String = firstName + override fun _3(): /* user-picked */ FirstName = firstName - override fun _4(): String = lastName + override fun _4(): /* user-picked */ LastName = lastName override fun _5(): String = tier @@ -61,6 +64,6 @@ data class CustomerOrdersSqlRow( override fun _9(): BigDecimal? = totalAmount companion object { - val _rowParser: RowParser = RowParsers.of(CustomersId.dbType, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.text, OrdersId.dbType.nullable(), MariaTypes.varchar.nullable(), MariaTypes.text.nullable(), KotlinDbTypes.MariaTypes.numeric.nullable(), MariaTypes.datetime.nullable(), { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9 -> CustomerOrdersSqlRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9) }, { row -> arrayOf(row.customerId, row.email, row.firstName, row.lastName, row.tier, row.orderId, row.orderNumber, row.orderStatus, row.totalAmount, row.orderedAt) }) + val _rowParser: RowParser = RowParsers.of(CustomersId.mariaType, Email.mariaType, FirstName.mariaType, LastName.mariaType, MariaTypes.text, OrdersId.mariaType.nullable(), MariaTypes.varchar.nullable(), MariaTypes.text.nullable(), KotlinDbTypes.MariaTypes.numeric.nullable(), MariaTypes.datetime.nullable(), { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9 -> CustomerOrdersSqlRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9) }, { row -> arrayOf(row.customerId, row.email, row.firstName, row.lastName, row.tier, row.orderId, row.orderNumber, row.orderStatus, row.totalAmount, row.orderedAt) }) } } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/customer_status/CustomerStatusFields.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/customer_status/CustomerStatusFields.kt index 9949e48f5f..3ef45cb903 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/customer_status/CustomerStatusFields.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/customer_status/CustomerStatusFields.kt @@ -10,20 +10,20 @@ import dev.typr.foundations.RowParser import dev.typr.foundations.dsl.FieldsBase import dev.typr.foundations.dsl.Path import dev.typr.foundations.dsl.SqlExpr.FieldLike -import dev.typr.foundations.kotlin.KotlinDbTypes import dev.typr.foundations.kotlin.RelationStructure import dev.typr.foundations.kotlin.SqlExpr import dev.typr.foundations.kotlin.SqlExpr.Field import dev.typr.foundations.kotlin.SqlExpr.IdField import dev.typr.foundations.kotlin.TupleExpr3 import kotlin.collections.List +import testdb.userdefined.IsActive -data class CustomerStatusFields(val _path: List) : TupleExpr3, RelationStructure, FieldsBase { +data class CustomerStatusFields(val _path: List) : TupleExpr3, RelationStructure, FieldsBase { override fun _1(): SqlExpr = statusCode() override fun _2(): SqlExpr = description() - override fun _3(): SqlExpr = isActive() + override fun _3(): SqlExpr = isActive() override fun _path(): List = _path @@ -31,11 +31,11 @@ data class CustomerStatusFields(val _path: List) : TupleExpr3 = Field(_path, "description", CustomerStatusRow::description, null, null, { row, value -> row.copy(description = value) }, MariaTypes.varchar) - fun isActive(): Field = Field(_path, "is_active", CustomerStatusRow::isActive, null, null, { row, value -> row.copy(isActive = value) }, KotlinDbTypes.MariaTypes.bool) + fun isActive(): Field = Field(_path, "is_active", CustomerStatusRow::isActive, null, null, { row, value -> row.copy(isActive = value) }, IsActive.mariaType) override fun rowParser(): RowParser = CustomerStatusRow._rowParser.underlying - fun statusCode(): IdField = IdField(_path, "status_code", CustomerStatusRow::statusCode, null, null, { row, value -> row.copy(statusCode = value) }, CustomerStatusId.dbType) + fun statusCode(): IdField = IdField(_path, "status_code", CustomerStatusRow::statusCode, null, null, { row, value -> row.copy(statusCode = value) }, CustomerStatusId.mariaType) override fun withPaths(_path: List): RelationStructure = CustomerStatusFields(_path) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/customer_status/CustomerStatusId.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/customer_status/CustomerStatusId.kt index 5b48051cdb..fe7c16fb6a 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/customer_status/CustomerStatusId.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/customer_status/CustomerStatusId.kt @@ -20,7 +20,7 @@ data class CustomerStatusId(@field:JsonValue val value: String) { val bijection: Bijection = Bijection.of(CustomerStatusId::value, ::CustomerStatusId) - val dbType: MariaType = + val mariaType: MariaType = MariaTypes.varchar.bimap(::CustomerStatusId, CustomerStatusId::value) } } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/customer_status/CustomerStatusRepoImpl.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/customer_status/CustomerStatusRepoImpl.kt index 7e114cde35..ad20a58d70 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/customer_status/CustomerStatusRepoImpl.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/customer_status/CustomerStatusRepoImpl.kt @@ -9,7 +9,6 @@ import dev.typr.foundations.MariaTypes import dev.typr.foundations.kotlin.DeleteBuilder import dev.typr.foundations.kotlin.Dialect import dev.typr.foundations.kotlin.Fragment -import dev.typr.foundations.kotlin.KotlinDbTypes import dev.typr.foundations.kotlin.SelectBuilder import dev.typr.foundations.kotlin.UpdateBuilder import java.sql.Connection @@ -18,6 +17,7 @@ import kotlin.collections.Iterator import kotlin.collections.List import kotlin.collections.Map import kotlin.collections.MutableMap +import testdb.userdefined.IsActive class CustomerStatusRepoImpl() : CustomerStatusRepo { override fun delete(): DeleteBuilder = DeleteBuilder.of("`customer_status`", CustomerStatusFields.structure, Dialect.MARIADB) @@ -25,21 +25,21 @@ class CustomerStatusRepoImpl() : CustomerStatusRepo { override fun deleteById( statusCode: CustomerStatusId, c: Connection - ): Boolean = Fragment.interpolate(Fragment.lit("delete from `customer_status` where `status_code` = "), Fragment.encode(CustomerStatusId.dbType, statusCode), Fragment.lit("")).update().runUnchecked(c) > 0 + ): Boolean = Fragment.interpolate(Fragment.lit("delete from `customer_status` where `status_code` = "), Fragment.encode(CustomerStatusId.mariaType, statusCode), Fragment.lit("")).update().runUnchecked(c) > 0 override fun deleteByIds( statusCodes: Array, c: Connection ): Int { val fragments: ArrayList = ArrayList() - for (id in statusCodes) { fragments.add(Fragment.encode(CustomerStatusId.dbType, id)) } + for (id in statusCodes) { fragments.add(Fragment.encode(CustomerStatusId.mariaType, id)) } return Fragment.interpolate(Fragment.lit("delete from `customer_status` where `status_code` in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).update().runUnchecked(c) } override fun insert( unsaved: CustomerStatusRow, c: Connection - ): CustomerStatusRow = Fragment.interpolate(Fragment.lit("insert into `customer_status`(`status_code`, `description`, `is_active`)\nvalues ("), Fragment.encode(CustomerStatusId.dbType, unsaved.statusCode), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.description), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.bool, unsaved.isActive), Fragment.lit(")\nRETURNING `status_code`, `description`, `is_active`\n")) + ): CustomerStatusRow = Fragment.interpolate(Fragment.lit("insert into `customer_status`(`status_code`, `description`, `is_active`)\nvalues ("), Fragment.encode(CustomerStatusId.mariaType, unsaved.statusCode), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.description), Fragment.lit(", "), Fragment.encode(IsActive.mariaType, unsaved.isActive), Fragment.lit(")\nRETURNING `status_code`, `description`, `is_active`\n")) .updateReturning(CustomerStatusRow._rowParser.exactlyOne()).runUnchecked(c) override fun insert( @@ -49,13 +49,13 @@ class CustomerStatusRepoImpl() : CustomerStatusRepo { val columns: ArrayList = ArrayList() val values: ArrayList = ArrayList() columns.add(Fragment.lit("`status_code`")) - values.add(Fragment.interpolate(Fragment.encode(CustomerStatusId.dbType, unsaved.statusCode), Fragment.lit(""))) + values.add(Fragment.interpolate(Fragment.encode(CustomerStatusId.mariaType, unsaved.statusCode), Fragment.lit(""))) columns.add(Fragment.lit("`description`")) values.add(Fragment.interpolate(Fragment.encode(MariaTypes.varchar, unsaved.description), Fragment.lit(""))) unsaved.isActive.visit( { }, { value -> columns.add(Fragment.lit("`is_active`")) - values.add(Fragment.interpolate(Fragment.encode(KotlinDbTypes.MariaTypes.bool, value), Fragment.lit(""))) } + values.add(Fragment.interpolate(Fragment.encode(IsActive.mariaType, value), Fragment.lit(""))) } ); val q: Fragment = Fragment.interpolate(Fragment.lit("insert into `customer_status`("), Fragment.comma(columns.toMutableList()), Fragment.lit(")\nvalues ("), Fragment.comma(values.toMutableList()), Fragment.lit(")\nRETURNING `status_code`, `description`, `is_active`\n")) return q.updateReturning(CustomerStatusRow._rowParser.exactlyOne()).runUnchecked(c) @@ -68,14 +68,14 @@ class CustomerStatusRepoImpl() : CustomerStatusRepo { override fun selectById( statusCode: CustomerStatusId, c: Connection - ): CustomerStatusRow? = Fragment.interpolate(Fragment.lit("select `status_code`, `description`, `is_active`\nfrom `customer_status`\nwhere `status_code` = "), Fragment.encode(CustomerStatusId.dbType, statusCode), Fragment.lit("")).query(CustomerStatusRow._rowParser.first()).runUnchecked(c) + ): CustomerStatusRow? = Fragment.interpolate(Fragment.lit("select `status_code`, `description`, `is_active`\nfrom `customer_status`\nwhere `status_code` = "), Fragment.encode(CustomerStatusId.mariaType, statusCode), Fragment.lit("")).query(CustomerStatusRow._rowParser.first()).runUnchecked(c) override fun selectByIds( statusCodes: Array, c: Connection ): List { val fragments: ArrayList = ArrayList() - for (id in statusCodes) { fragments.add(Fragment.encode(CustomerStatusId.dbType, id)) } + for (id in statusCodes) { fragments.add(Fragment.encode(CustomerStatusId.mariaType, id)) } return Fragment.interpolate(Fragment.lit("select `status_code`, `description`, `is_active` from `customer_status` where `status_code` in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).query(CustomerStatusRow._rowParser.all()).runUnchecked(c) } @@ -95,13 +95,13 @@ class CustomerStatusRepoImpl() : CustomerStatusRepo { c: Connection ): Boolean { val statusCode: CustomerStatusId = row.statusCode - return Fragment.interpolate(Fragment.lit("update `customer_status`\nset `description` = "), Fragment.encode(MariaTypes.varchar, row.description), Fragment.lit(",\n`is_active` = "), Fragment.encode(KotlinDbTypes.MariaTypes.bool, row.isActive), Fragment.lit("\nwhere `status_code` = "), Fragment.encode(CustomerStatusId.dbType, statusCode), Fragment.lit("")).update().runUnchecked(c) > 0 + return Fragment.interpolate(Fragment.lit("update `customer_status`\nset `description` = "), Fragment.encode(MariaTypes.varchar, row.description), Fragment.lit(",\n`is_active` = "), Fragment.encode(IsActive.mariaType, row.isActive), Fragment.lit("\nwhere `status_code` = "), Fragment.encode(CustomerStatusId.mariaType, statusCode), Fragment.lit("")).update().runUnchecked(c) > 0 } override fun upsert( unsaved: CustomerStatusRow, c: Connection - ): CustomerStatusRow = Fragment.interpolate(Fragment.lit("INSERT INTO `customer_status`(`status_code`, `description`, `is_active`)\nVALUES ("), Fragment.encode(CustomerStatusId.dbType, unsaved.statusCode), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.description), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.bool, unsaved.isActive), Fragment.lit(")\nON DUPLICATE KEY UPDATE `description` = VALUES(`description`),\n`is_active` = VALUES(`is_active`)\nRETURNING `status_code`, `description`, `is_active`")) + ): CustomerStatusRow = Fragment.interpolate(Fragment.lit("INSERT INTO `customer_status`(`status_code`, `description`, `is_active`)\nVALUES ("), Fragment.encode(CustomerStatusId.mariaType, unsaved.statusCode), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.description), Fragment.lit(", "), Fragment.encode(IsActive.mariaType, unsaved.isActive), Fragment.lit(")\nON DUPLICATE KEY UPDATE `description` = VALUES(`description`),\n`is_active` = VALUES(`is_active`)\nRETURNING `status_code`, `description`, `is_active`")) .updateReturning(CustomerStatusRow._rowParser.exactlyOne()) .runUnchecked(c) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/customer_status/CustomerStatusRow.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/customer_status/CustomerStatusRow.kt index a8e055daa8..ba232449c6 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/customer_status/CustomerStatusRow.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/customer_status/CustomerStatusRow.kt @@ -8,10 +8,10 @@ package testdb.customer_status import com.fasterxml.jackson.annotation.JsonProperty import dev.typr.foundations.MariaTypes import dev.typr.foundations.Tuple.Tuple3 -import dev.typr.foundations.kotlin.KotlinDbTypes import dev.typr.foundations.kotlin.RowParser import dev.typr.foundations.kotlin.RowParsers import testdb.customtypes.Defaulted +import testdb.userdefined.IsActive /** Table: customer_status * Primary key: status_code @@ -24,19 +24,19 @@ data class CustomerStatusRow( /** * Default: 1 */ - @field:JsonProperty("is_active") val isActive: Boolean -) : Tuple3 { + @field:JsonProperty("is_active") val isActive: /* user-picked */ IsActive +) : Tuple3 { override fun _1(): CustomerStatusId = statusCode override fun _2(): String = description - override fun _3(): Boolean = isActive + override fun _3(): /* user-picked */ IsActive = isActive fun id(): CustomerStatusId = statusCode - fun toUnsavedRow(isActive: Defaulted = Defaulted.Provided(this.isActive)): CustomerStatusRowUnsaved = CustomerStatusRowUnsaved(statusCode, description, isActive) + fun toUnsavedRow(isActive: Defaulted = Defaulted.Provided(this.isActive)): CustomerStatusRowUnsaved = CustomerStatusRowUnsaved(statusCode, description, isActive) companion object { - val _rowParser: RowParser = RowParsers.of(CustomerStatusId.dbType, MariaTypes.varchar, KotlinDbTypes.MariaTypes.bool, { t0, t1, t2 -> CustomerStatusRow(t0, t1, t2) }, { row -> arrayOf(row.statusCode, row.description, row.isActive) }) + val _rowParser: RowParser = RowParsers.of(CustomerStatusId.mariaType, MariaTypes.varchar, IsActive.mariaType, { t0, t1, t2 -> CustomerStatusRow(t0, t1, t2) }, { row -> arrayOf(row.statusCode, row.description, row.isActive) }) } } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/customer_status/CustomerStatusRowUnsaved.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/customer_status/CustomerStatusRowUnsaved.kt index 17e2a85650..644c96b15d 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/customer_status/CustomerStatusRowUnsaved.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/customer_status/CustomerStatusRowUnsaved.kt @@ -8,6 +8,7 @@ package testdb.customer_status import com.fasterxml.jackson.annotation.JsonProperty import testdb.customtypes.Defaulted import testdb.customtypes.Defaulted.UseDefault +import testdb.userdefined.IsActive /** This class corresponds to a row in table `customer_status` which has not been persisted yet */ data class CustomerStatusRowUnsaved( @@ -18,7 +19,7 @@ data class CustomerStatusRowUnsaved( /** Default: 1 */ - @field:JsonProperty("is_active") val isActive: Defaulted = UseDefault() + @field:JsonProperty("is_active") val isActive: Defaulted = UseDefault() ) { - fun toRow(isActiveDefault: () -> Boolean): CustomerStatusRow = CustomerStatusRow(statusCode = statusCode, description = description, isActive = isActive.getOrElse(isActiveDefault)) + fun toRow(isActiveDefault: () -> /* user-picked */ IsActive): CustomerStatusRow = CustomerStatusRow(statusCode = statusCode, description = description, isActive = isActive.getOrElse(isActiveDefault)) } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/customers/CustomersFields.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/customers/CustomersFields.kt index f9a7e5fefd..5ca2fb5733 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/customers/CustomersFields.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/customers/CustomersFields.kt @@ -24,8 +24,11 @@ import testdb.EmailMailPushSmsSet import testdb.customer_status.CustomerStatusFields import testdb.customer_status.CustomerStatusId import testdb.customer_status.CustomerStatusRow +import testdb.userdefined.Email +import testdb.userdefined.FirstName +import testdb.userdefined.LastName -data class CustomersFields(val _path: List) : TupleExpr14, RelationStructure, FieldsBase { +data class CustomersFields(val _path: List) : TupleExpr14, RelationStructure, FieldsBase { override fun _1(): SqlExpr = customerId() override fun _10(): SqlExpr = marketingFlags() @@ -38,13 +41,13 @@ data class CustomersFields(val _path: List) : TupleExpr14 = lastLoginAt() - override fun _2(): SqlExpr = email() + override fun _2(): SqlExpr = email() override fun _3(): SqlExpr = passwordHash() - override fun _4(): SqlExpr = firstName() + override fun _4(): SqlExpr = firstName() - override fun _5(): SqlExpr = lastName() + override fun _5(): SqlExpr = lastName() override fun _6(): SqlExpr = phone() @@ -60,19 +63,19 @@ data class CustomersFields(val _path: List) : TupleExpr14 = Field(_path, "created_at", CustomersRow::createdAt, null, null, { row, value -> row.copy(createdAt = value) }, MariaTypes.datetime) - fun customerId(): IdField = IdField(_path, "customer_id", CustomersRow::customerId, null, null, { row, value -> row.copy(customerId = value) }, CustomersId.dbType) + fun customerId(): IdField = IdField(_path, "customer_id", CustomersRow::customerId, null, null, { row, value -> row.copy(customerId = value) }, CustomersId.mariaType) - fun email(): Field = Field(_path, "email", CustomersRow::email, null, null, { row, value -> row.copy(email = value) }, MariaTypes.varchar) + fun email(): Field = Field(_path, "email", CustomersRow::email, null, null, { row, value -> row.copy(email = value) }, Email.mariaType) - fun firstName(): Field = Field(_path, "first_name", CustomersRow::firstName, null, null, { row, value -> row.copy(firstName = value) }, MariaTypes.varchar) + fun firstName(): Field = Field(_path, "first_name", CustomersRow::firstName, null, null, { row, value -> row.copy(firstName = value) }, FirstName.mariaType) fun fkCustomerStatus(): ForeignKey = ForeignKey.of("fk_customer_status").withColumnPair(status(), CustomerStatusFields::statusCode) fun lastLoginAt(): OptField = OptField(_path, "last_login_at", CustomersRow::lastLoginAt, null, null, { row, value -> row.copy(lastLoginAt = value) }, MariaTypes.datetime) - fun lastName(): Field = Field(_path, "last_name", CustomersRow::lastName, null, null, { row, value -> row.copy(lastName = value) }, MariaTypes.varchar) + fun lastName(): Field = Field(_path, "last_name", CustomersRow::lastName, null, null, { row, value -> row.copy(lastName = value) }, LastName.mariaType) - fun marketingFlags(): OptField = OptField(_path, "marketing_flags", CustomersRow::marketingFlags, null, null, { row, value -> row.copy(marketingFlags = value) }, EmailMailPushSmsSet.dbType) + fun marketingFlags(): OptField = OptField(_path, "marketing_flags", CustomersRow::marketingFlags, null, null, { row, value -> row.copy(marketingFlags = value) }, EmailMailPushSmsSet.mariaType) fun notes(): OptField = OptField(_path, "notes", CustomersRow::notes, null, null, { row, value -> row.copy(notes = value) }, MariaTypes.text) @@ -84,7 +87,7 @@ data class CustomersFields(val _path: List) : TupleExpr14 = CustomersRow._rowParser.underlying - fun status(): Field = Field(_path, "status", CustomersRow::status, null, null, { row, value -> row.copy(status = value) }, CustomerStatusId.dbType) + fun status(): Field = Field(_path, "status", CustomersRow::status, null, null, { row, value -> row.copy(status = value) }, CustomerStatusId.mariaType) fun tier(): Field = Field(_path, "tier", CustomersRow::tier, null, null, { row, value -> row.copy(tier = value) }, MariaTypes.text) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/customers/CustomersId.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/customers/CustomersId.kt index 23c3ba5e3a..c7caaeab75 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/customers/CustomersId.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/customers/CustomersId.kt @@ -21,7 +21,7 @@ data class CustomersId(@field:JsonValue val value: Uint8) { val bijection: Bijection = Bijection.of(CustomersId::value, ::CustomersId) - val dbType: MariaType = + val mariaType: MariaType = MariaTypes.bigintUnsigned.bimap(::CustomersId, CustomersId::value) } } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/customers/CustomersRepo.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/customers/CustomersRepo.kt index d7ef6aa564..7bfa17cc13 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/customers/CustomersRepo.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/customers/CustomersRepo.kt @@ -12,6 +12,7 @@ import java.sql.Connection import kotlin.collections.Iterator import kotlin.collections.List import kotlin.collections.Map +import testdb.userdefined.Email interface CustomersRepo { abstract fun delete(): DeleteBuilder @@ -56,7 +57,7 @@ interface CustomersRepo { ): Map abstract fun selectByUniqueEmail( - email: String, + email: /* user-picked */ Email, c: Connection ): CustomersRow? diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/customers/CustomersRepoImpl.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/customers/CustomersRepoImpl.kt index 1b3eadb2f7..43a52ddd8a 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/customers/CustomersRepoImpl.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/customers/CustomersRepoImpl.kt @@ -20,6 +20,9 @@ import kotlin.collections.Map import kotlin.collections.MutableMap import testdb.EmailMailPushSmsSet import testdb.customer_status.CustomerStatusId +import testdb.userdefined.Email +import testdb.userdefined.FirstName +import testdb.userdefined.LastName class CustomersRepoImpl() : CustomersRepo { override fun delete(): DeleteBuilder = DeleteBuilder.of("`customers`", CustomersFields.structure, Dialect.MARIADB) @@ -27,21 +30,21 @@ class CustomersRepoImpl() : CustomersRepo { override fun deleteById( customerId: CustomersId, c: Connection - ): Boolean = Fragment.interpolate(Fragment.lit("delete from `customers` where `customer_id` = "), Fragment.encode(CustomersId.dbType, customerId), Fragment.lit("")).update().runUnchecked(c) > 0 + ): Boolean = Fragment.interpolate(Fragment.lit("delete from `customers` where `customer_id` = "), Fragment.encode(CustomersId.mariaType, customerId), Fragment.lit("")).update().runUnchecked(c) > 0 override fun deleteByIds( customerIds: Array, c: Connection ): Int { val fragments: ArrayList = ArrayList() - for (id in customerIds) { fragments.add(Fragment.encode(CustomersId.dbType, id)) } + for (id in customerIds) { fragments.add(Fragment.encode(CustomersId.mariaType, id)) } return Fragment.interpolate(Fragment.lit("delete from `customers` where `customer_id` in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).update().runUnchecked(c) } override fun insert( unsaved: CustomersRow, c: Connection - ): CustomersRow = Fragment.interpolate(Fragment.lit("insert into `customers`(`email`, `password_hash`, `first_name`, `last_name`, `phone`, `status`, `tier`, `preferences`, `marketing_flags`, `notes`, `created_at`, `updated_at`, `last_login_at`)\nvalues ("), Fragment.encode(MariaTypes.varchar, unsaved.email), Fragment.lit(", "), Fragment.encode(MariaTypes.binary, unsaved.passwordHash), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.firstName), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.lastName), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.phone), Fragment.lit(", "), Fragment.encode(CustomerStatusId.dbType, unsaved.status), Fragment.lit(", "), Fragment.encode(MariaTypes.text, unsaved.tier), Fragment.lit(", "), Fragment.encode(MariaTypes.json.nullable(), unsaved.preferences), Fragment.lit(", "), Fragment.encode(EmailMailPushSmsSet.dbType.nullable(), unsaved.marketingFlags), Fragment.lit(", "), Fragment.encode(MariaTypes.text.nullable(), unsaved.notes), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.createdAt), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.updatedAt), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime.nullable(), unsaved.lastLoginAt), Fragment.lit(")\nRETURNING `customer_id`, `email`, `password_hash`, `first_name`, `last_name`, `phone`, `status`, `tier`, `preferences`, `marketing_flags`, `notes`, `created_at`, `updated_at`, `last_login_at`\n")) + ): CustomersRow = Fragment.interpolate(Fragment.lit("insert into `customers`(`email`, `password_hash`, `first_name`, `last_name`, `phone`, `status`, `tier`, `preferences`, `marketing_flags`, `notes`, `created_at`, `updated_at`, `last_login_at`)\nvalues ("), Fragment.encode(Email.mariaType, unsaved.email), Fragment.lit(", "), Fragment.encode(MariaTypes.binary, unsaved.passwordHash), Fragment.lit(", "), Fragment.encode(FirstName.mariaType, unsaved.firstName), Fragment.lit(", "), Fragment.encode(LastName.mariaType, unsaved.lastName), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.phone), Fragment.lit(", "), Fragment.encode(CustomerStatusId.mariaType, unsaved.status), Fragment.lit(", "), Fragment.encode(MariaTypes.text, unsaved.tier), Fragment.lit(", "), Fragment.encode(MariaTypes.json.nullable(), unsaved.preferences), Fragment.lit(", "), Fragment.encode(EmailMailPushSmsSet.mariaType.nullable(), unsaved.marketingFlags), Fragment.lit(", "), Fragment.encode(MariaTypes.text.nullable(), unsaved.notes), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.createdAt), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.updatedAt), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime.nullable(), unsaved.lastLoginAt), Fragment.lit(")\nRETURNING `customer_id`, `email`, `password_hash`, `first_name`, `last_name`, `phone`, `status`, `tier`, `preferences`, `marketing_flags`, `notes`, `created_at`, `updated_at`, `last_login_at`\n")) .updateReturning(CustomersRow._rowParser.exactlyOne()).runUnchecked(c) override fun insert( @@ -51,13 +54,13 @@ class CustomersRepoImpl() : CustomersRepo { val columns: ArrayList = ArrayList() val values: ArrayList = ArrayList() columns.add(Fragment.lit("`email`")) - values.add(Fragment.interpolate(Fragment.encode(MariaTypes.varchar, unsaved.email), Fragment.lit(""))) + values.add(Fragment.interpolate(Fragment.encode(Email.mariaType, unsaved.email), Fragment.lit(""))) columns.add(Fragment.lit("`password_hash`")) values.add(Fragment.interpolate(Fragment.encode(MariaTypes.binary, unsaved.passwordHash), Fragment.lit(""))) columns.add(Fragment.lit("`first_name`")) - values.add(Fragment.interpolate(Fragment.encode(MariaTypes.varchar, unsaved.firstName), Fragment.lit(""))) + values.add(Fragment.interpolate(Fragment.encode(FirstName.mariaType, unsaved.firstName), Fragment.lit(""))) columns.add(Fragment.lit("`last_name`")) - values.add(Fragment.interpolate(Fragment.encode(MariaTypes.varchar, unsaved.lastName), Fragment.lit(""))) + values.add(Fragment.interpolate(Fragment.encode(LastName.mariaType, unsaved.lastName), Fragment.lit(""))) unsaved.phone.visit( { }, { value -> columns.add(Fragment.lit("`phone`")) @@ -66,7 +69,7 @@ class CustomersRepoImpl() : CustomersRepo { unsaved.status.visit( { }, { value -> columns.add(Fragment.lit("`status`")) - values.add(Fragment.interpolate(Fragment.encode(CustomerStatusId.dbType, value), Fragment.lit(""))) } + values.add(Fragment.interpolate(Fragment.encode(CustomerStatusId.mariaType, value), Fragment.lit(""))) } ); unsaved.tier.visit( { }, @@ -81,7 +84,7 @@ class CustomersRepoImpl() : CustomersRepo { unsaved.marketingFlags.visit( { }, { value -> columns.add(Fragment.lit("`marketing_flags`")) - values.add(Fragment.interpolate(Fragment.encode(EmailMailPushSmsSet.dbType.nullable(), value), Fragment.lit(""))) } + values.add(Fragment.interpolate(Fragment.encode(EmailMailPushSmsSet.mariaType.nullable(), value), Fragment.lit(""))) } ); unsaved.notes.visit( { }, @@ -114,14 +117,14 @@ class CustomersRepoImpl() : CustomersRepo { override fun selectById( customerId: CustomersId, c: Connection - ): CustomersRow? = Fragment.interpolate(Fragment.lit("select `customer_id`, `email`, `password_hash`, `first_name`, `last_name`, `phone`, `status`, `tier`, `preferences`, `marketing_flags`, `notes`, `created_at`, `updated_at`, `last_login_at`\nfrom `customers`\nwhere `customer_id` = "), Fragment.encode(CustomersId.dbType, customerId), Fragment.lit("")).query(CustomersRow._rowParser.first()).runUnchecked(c) + ): CustomersRow? = Fragment.interpolate(Fragment.lit("select `customer_id`, `email`, `password_hash`, `first_name`, `last_name`, `phone`, `status`, `tier`, `preferences`, `marketing_flags`, `notes`, `created_at`, `updated_at`, `last_login_at`\nfrom `customers`\nwhere `customer_id` = "), Fragment.encode(CustomersId.mariaType, customerId), Fragment.lit("")).query(CustomersRow._rowParser.first()).runUnchecked(c) override fun selectByIds( customerIds: Array, c: Connection ): List { val fragments: ArrayList = ArrayList() - for (id in customerIds) { fragments.add(Fragment.encode(CustomersId.dbType, id)) } + for (id in customerIds) { fragments.add(Fragment.encode(CustomersId.mariaType, id)) } return Fragment.interpolate(Fragment.lit("select `customer_id`, `email`, `password_hash`, `first_name`, `last_name`, `phone`, `status`, `tier`, `preferences`, `marketing_flags`, `notes`, `created_at`, `updated_at`, `last_login_at` from `customers` where `customer_id` in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).query(CustomersRow._rowParser.all()).runUnchecked(c) } @@ -135,9 +138,9 @@ class CustomersRepoImpl() : CustomersRepo { } override fun selectByUniqueEmail( - email: String, + email: /* user-picked */ Email, c: Connection - ): CustomersRow? = Fragment.interpolate(Fragment.lit("select `customer_id`, `email`, `password_hash`, `first_name`, `last_name`, `phone`, `status`, `tier`, `preferences`, `marketing_flags`, `notes`, `created_at`, `updated_at`, `last_login_at`\nfrom `customers`\nwhere `email` = "), Fragment.encode(MariaTypes.varchar, email), Fragment.lit("\n")).query(CustomersRow._rowParser.first()).runUnchecked(c) + ): CustomersRow? = Fragment.interpolate(Fragment.lit("select `customer_id`, `email`, `password_hash`, `first_name`, `last_name`, `phone`, `status`, `tier`, `preferences`, `marketing_flags`, `notes`, `created_at`, `updated_at`, `last_login_at`\nfrom `customers`\nwhere `email` = "), Fragment.encode(Email.mariaType, email), Fragment.lit("\n")).query(CustomersRow._rowParser.first()).runUnchecked(c) override fun update(): UpdateBuilder = UpdateBuilder.of("`customers`", CustomersFields.structure, CustomersRow._rowParser, Dialect.MARIADB) @@ -146,13 +149,13 @@ class CustomersRepoImpl() : CustomersRepo { c: Connection ): Boolean { val customerId: CustomersId = row.customerId - return Fragment.interpolate(Fragment.lit("update `customers`\nset `email` = "), Fragment.encode(MariaTypes.varchar, row.email), Fragment.lit(",\n`password_hash` = "), Fragment.encode(MariaTypes.binary, row.passwordHash), Fragment.lit(",\n`first_name` = "), Fragment.encode(MariaTypes.varchar, row.firstName), Fragment.lit(",\n`last_name` = "), Fragment.encode(MariaTypes.varchar, row.lastName), Fragment.lit(",\n`phone` = "), Fragment.encode(MariaTypes.varchar.nullable(), row.phone), Fragment.lit(",\n`status` = "), Fragment.encode(CustomerStatusId.dbType, row.status), Fragment.lit(",\n`tier` = "), Fragment.encode(MariaTypes.text, row.tier), Fragment.lit(",\n`preferences` = "), Fragment.encode(MariaTypes.json.nullable(), row.preferences), Fragment.lit(",\n`marketing_flags` = "), Fragment.encode(EmailMailPushSmsSet.dbType.nullable(), row.marketingFlags), Fragment.lit(",\n`notes` = "), Fragment.encode(MariaTypes.text.nullable(), row.notes), Fragment.lit(",\n`created_at` = "), Fragment.encode(MariaTypes.datetime, row.createdAt), Fragment.lit(",\n`updated_at` = "), Fragment.encode(MariaTypes.datetime, row.updatedAt), Fragment.lit(",\n`last_login_at` = "), Fragment.encode(MariaTypes.datetime.nullable(), row.lastLoginAt), Fragment.lit("\nwhere `customer_id` = "), Fragment.encode(CustomersId.dbType, customerId), Fragment.lit("")).update().runUnchecked(c) > 0 + return Fragment.interpolate(Fragment.lit("update `customers`\nset `email` = "), Fragment.encode(Email.mariaType, row.email), Fragment.lit(",\n`password_hash` = "), Fragment.encode(MariaTypes.binary, row.passwordHash), Fragment.lit(",\n`first_name` = "), Fragment.encode(FirstName.mariaType, row.firstName), Fragment.lit(",\n`last_name` = "), Fragment.encode(LastName.mariaType, row.lastName), Fragment.lit(",\n`phone` = "), Fragment.encode(MariaTypes.varchar.nullable(), row.phone), Fragment.lit(",\n`status` = "), Fragment.encode(CustomerStatusId.mariaType, row.status), Fragment.lit(",\n`tier` = "), Fragment.encode(MariaTypes.text, row.tier), Fragment.lit(",\n`preferences` = "), Fragment.encode(MariaTypes.json.nullable(), row.preferences), Fragment.lit(",\n`marketing_flags` = "), Fragment.encode(EmailMailPushSmsSet.mariaType.nullable(), row.marketingFlags), Fragment.lit(",\n`notes` = "), Fragment.encode(MariaTypes.text.nullable(), row.notes), Fragment.lit(",\n`created_at` = "), Fragment.encode(MariaTypes.datetime, row.createdAt), Fragment.lit(",\n`updated_at` = "), Fragment.encode(MariaTypes.datetime, row.updatedAt), Fragment.lit(",\n`last_login_at` = "), Fragment.encode(MariaTypes.datetime.nullable(), row.lastLoginAt), Fragment.lit("\nwhere `customer_id` = "), Fragment.encode(CustomersId.mariaType, customerId), Fragment.lit("")).update().runUnchecked(c) > 0 } override fun upsert( unsaved: CustomersRow, c: Connection - ): CustomersRow = Fragment.interpolate(Fragment.lit("INSERT INTO `customers`(`customer_id`, `email`, `password_hash`, `first_name`, `last_name`, `phone`, `status`, `tier`, `preferences`, `marketing_flags`, `notes`, `created_at`, `updated_at`, `last_login_at`)\nVALUES ("), Fragment.encode(CustomersId.dbType, unsaved.customerId), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.email), Fragment.lit(", "), Fragment.encode(MariaTypes.binary, unsaved.passwordHash), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.firstName), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.lastName), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.phone), Fragment.lit(", "), Fragment.encode(CustomerStatusId.dbType, unsaved.status), Fragment.lit(", "), Fragment.encode(MariaTypes.text, unsaved.tier), Fragment.lit(", "), Fragment.encode(MariaTypes.json.nullable(), unsaved.preferences), Fragment.lit(", "), Fragment.encode(EmailMailPushSmsSet.dbType.nullable(), unsaved.marketingFlags), Fragment.lit(", "), Fragment.encode(MariaTypes.text.nullable(), unsaved.notes), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.createdAt), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.updatedAt), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime.nullable(), unsaved.lastLoginAt), Fragment.lit(")\nON DUPLICATE KEY UPDATE `email` = VALUES(`email`),\n`password_hash` = VALUES(`password_hash`),\n`first_name` = VALUES(`first_name`),\n`last_name` = VALUES(`last_name`),\n`phone` = VALUES(`phone`),\n`status` = VALUES(`status`),\n`tier` = VALUES(`tier`),\n`preferences` = VALUES(`preferences`),\n`marketing_flags` = VALUES(`marketing_flags`),\n`notes` = VALUES(`notes`),\n`created_at` = VALUES(`created_at`),\n`updated_at` = VALUES(`updated_at`),\n`last_login_at` = VALUES(`last_login_at`)\nRETURNING `customer_id`, `email`, `password_hash`, `first_name`, `last_name`, `phone`, `status`, `tier`, `preferences`, `marketing_flags`, `notes`, `created_at`, `updated_at`, `last_login_at`")) + ): CustomersRow = Fragment.interpolate(Fragment.lit("INSERT INTO `customers`(`customer_id`, `email`, `password_hash`, `first_name`, `last_name`, `phone`, `status`, `tier`, `preferences`, `marketing_flags`, `notes`, `created_at`, `updated_at`, `last_login_at`)\nVALUES ("), Fragment.encode(CustomersId.mariaType, unsaved.customerId), Fragment.lit(", "), Fragment.encode(Email.mariaType, unsaved.email), Fragment.lit(", "), Fragment.encode(MariaTypes.binary, unsaved.passwordHash), Fragment.lit(", "), Fragment.encode(FirstName.mariaType, unsaved.firstName), Fragment.lit(", "), Fragment.encode(LastName.mariaType, unsaved.lastName), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.phone), Fragment.lit(", "), Fragment.encode(CustomerStatusId.mariaType, unsaved.status), Fragment.lit(", "), Fragment.encode(MariaTypes.text, unsaved.tier), Fragment.lit(", "), Fragment.encode(MariaTypes.json.nullable(), unsaved.preferences), Fragment.lit(", "), Fragment.encode(EmailMailPushSmsSet.mariaType.nullable(), unsaved.marketingFlags), Fragment.lit(", "), Fragment.encode(MariaTypes.text.nullable(), unsaved.notes), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.createdAt), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.updatedAt), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime.nullable(), unsaved.lastLoginAt), Fragment.lit(")\nON DUPLICATE KEY UPDATE `email` = VALUES(`email`),\n`password_hash` = VALUES(`password_hash`),\n`first_name` = VALUES(`first_name`),\n`last_name` = VALUES(`last_name`),\n`phone` = VALUES(`phone`),\n`status` = VALUES(`status`),\n`tier` = VALUES(`tier`),\n`preferences` = VALUES(`preferences`),\n`marketing_flags` = VALUES(`marketing_flags`),\n`notes` = VALUES(`notes`),\n`created_at` = VALUES(`created_at`),\n`updated_at` = VALUES(`updated_at`),\n`last_login_at` = VALUES(`last_login_at`)\nRETURNING `customer_id`, `email`, `password_hash`, `first_name`, `last_name`, `phone`, `status`, `tier`, `preferences`, `marketing_flags`, `notes`, `created_at`, `updated_at`, `last_login_at`")) .updateReturning(CustomersRow._rowParser.exactlyOne()) .runUnchecked(c) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/customers/CustomersRepoMock.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/customers/CustomersRepoMock.kt index a7230ccc90..cae7bd3c7b 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/customers/CustomersRepoMock.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/customers/CustomersRepoMock.kt @@ -21,6 +21,7 @@ import kotlin.collections.Iterator import kotlin.collections.List import kotlin.collections.Map import kotlin.collections.MutableMap +import testdb.userdefined.Email data class CustomersRepoMock( val toRow: (CustomersRowUnsaved) -> CustomersRow, @@ -91,7 +92,7 @@ data class CustomersRepoMock( ): Map = selectByIds(customerIds, c).associateBy({ row: CustomersRow -> row.customerId }) override fun selectByUniqueEmail( - email: String, + email: /* user-picked */ Email, c: Connection ): CustomersRow? = map.values.toList().find({ v -> (email == v.email) }) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/customers/CustomersRow.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/customers/CustomersRow.kt index 535341401d..c417489cdd 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/customers/CustomersRow.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/customers/CustomersRow.kt @@ -16,6 +16,9 @@ import java.time.LocalDateTime import testdb.EmailMailPushSmsSet import testdb.customer_status.CustomerStatusId import testdb.customtypes.Defaulted +import testdb.userdefined.Email +import testdb.userdefined.FirstName +import testdb.userdefined.LastName /** Table: customers * Primary key: customer_id @@ -26,13 +29,13 @@ data class CustomersRow( */ @field:JsonProperty("customer_id") val customerId: CustomersId, /** */ - val email: String, + val email: /* user-picked */ Email, /** */ @field:JsonProperty("password_hash") val passwordHash: ByteArray, /** */ - @field:JsonProperty("first_name") val firstName: String, + @field:JsonProperty("first_name") val firstName: /* user-picked */ FirstName, /** */ - @field:JsonProperty("last_name") val lastName: String, + @field:JsonProperty("last_name") val lastName: /* user-picked */ LastName, /** * Default: NULL */ @@ -70,7 +73,7 @@ data class CustomersRow( * Default: NULL */ @field:JsonProperty("last_login_at") val lastLoginAt: LocalDateTime? -) : Tuple14 { +) : Tuple14 { override fun _1(): CustomersId = customerId override fun _10(): EmailMailPushSmsSet? = marketingFlags @@ -83,13 +86,13 @@ data class CustomersRow( override fun _14(): LocalDateTime? = lastLoginAt - override fun _2(): String = email + override fun _2(): /* user-picked */ Email = email override fun _3(): ByteArray = passwordHash - override fun _4(): String = firstName + override fun _4(): /* user-picked */ FirstName = firstName - override fun _5(): String = lastName + override fun _5(): /* user-picked */ LastName = lastName override fun _6(): String? = phone @@ -114,6 +117,6 @@ data class CustomersRow( ): CustomersRowUnsaved = CustomersRowUnsaved(email, passwordHash, firstName, lastName, phone, status, tier, preferences, marketingFlags, notes, createdAt, updatedAt, lastLoginAt) companion object { - val _rowParser: RowParser = RowParsers.of(CustomersId.dbType, MariaTypes.varchar, MariaTypes.binary, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.varchar.nullable(), CustomerStatusId.dbType, MariaTypes.text, MariaTypes.json.nullable(), EmailMailPushSmsSet.dbType.nullable(), MariaTypes.text.nullable(), MariaTypes.datetime, MariaTypes.datetime, MariaTypes.datetime.nullable(), { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13 -> CustomersRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13) }, { row -> arrayOf(row.customerId, row.email, row.passwordHash, row.firstName, row.lastName, row.phone, row.status, row.tier, row.preferences, row.marketingFlags, row.notes, row.createdAt, row.updatedAt, row.lastLoginAt) }) + val _rowParser: RowParser = RowParsers.of(CustomersId.mariaType, Email.mariaType, MariaTypes.binary, FirstName.mariaType, LastName.mariaType, MariaTypes.varchar.nullable(), CustomerStatusId.mariaType, MariaTypes.text, MariaTypes.json.nullable(), EmailMailPushSmsSet.mariaType.nullable(), MariaTypes.text.nullable(), MariaTypes.datetime, MariaTypes.datetime, MariaTypes.datetime.nullable(), { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13 -> CustomersRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13) }, { row -> arrayOf(row.customerId, row.email, row.passwordHash, row.firstName, row.lastName, row.phone, row.status, row.tier, row.preferences, row.marketingFlags, row.notes, row.createdAt, row.updatedAt, row.lastLoginAt) }) } } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/customers/CustomersRowUnsaved.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/customers/CustomersRowUnsaved.kt index 198090fed5..f2d44e5a13 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/customers/CustomersRowUnsaved.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/customers/CustomersRowUnsaved.kt @@ -12,17 +12,20 @@ import testdb.EmailMailPushSmsSet import testdb.customer_status.CustomerStatusId import testdb.customtypes.Defaulted import testdb.customtypes.Defaulted.UseDefault +import testdb.userdefined.Email +import testdb.userdefined.FirstName +import testdb.userdefined.LastName /** This class corresponds to a row in table `customers` which has not been persisted yet */ data class CustomersRowUnsaved( /** */ - val email: String, + val email: /* user-picked */ Email, /** */ @field:JsonProperty("password_hash") val passwordHash: ByteArray, /** */ - @field:JsonProperty("first_name") val firstName: String, + @field:JsonProperty("first_name") val firstName: /* user-picked */ FirstName, /** */ - @field:JsonProperty("last_name") val lastName: String, + @field:JsonProperty("last_name") val lastName: /* user-picked */ LastName, /** Default: NULL */ diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/inventory/InventoryFields.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/inventory/InventoryFields.kt index 413eb4b8a7..bdd266d1b1 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/inventory/InventoryFields.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/inventory/InventoryFields.kt @@ -60,11 +60,11 @@ data class InventoryFields(val _path: List) : TupleExpr11 = ForeignKey.of("fk_inventory_warehouse").withColumnPair(warehouseId(), WarehousesFields::warehouseId) - fun inventoryId(): IdField = IdField(_path, "inventory_id", InventoryRow::inventoryId, null, null, { row, value -> row.copy(inventoryId = value) }, InventoryId.dbType) + fun inventoryId(): IdField = IdField(_path, "inventory_id", InventoryRow::inventoryId, null, null, { row, value -> row.copy(inventoryId = value) }, InventoryId.mariaType) fun lastCountedAt(): OptField = OptField(_path, "last_counted_at", InventoryRow::lastCountedAt, null, null, { row, value -> row.copy(lastCountedAt = value) }, MariaTypes.datetime) - fun productId(): Field = Field(_path, "product_id", InventoryRow::productId, null, null, { row, value -> row.copy(productId = value) }, ProductsId.dbType) + fun productId(): Field = Field(_path, "product_id", InventoryRow::productId, null, null, { row, value -> row.copy(productId = value) }, ProductsId.mariaType) fun quantityOnHand(): Field = Field(_path, "quantity_on_hand", InventoryRow::quantityOnHand, null, null, { row, value -> row.copy(quantityOnHand = value) }, KotlinDbTypes.MariaTypes.int_) @@ -80,7 +80,7 @@ data class InventoryFields(val _path: List) : TupleExpr11 = Field(_path, "updated_at", InventoryRow::updatedAt, null, null, { row, value -> row.copy(updatedAt = value) }, MariaTypes.datetime) - fun warehouseId(): Field = Field(_path, "warehouse_id", InventoryRow::warehouseId, null, null, { row, value -> row.copy(warehouseId = value) }, WarehousesId.dbType) + fun warehouseId(): Field = Field(_path, "warehouse_id", InventoryRow::warehouseId, null, null, { row, value -> row.copy(warehouseId = value) }, WarehousesId.mariaType) override fun withPaths(_path: List): RelationStructure = InventoryFields(_path) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/inventory/InventoryId.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/inventory/InventoryId.kt index 495c50988f..e0e9c9eb5e 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/inventory/InventoryId.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/inventory/InventoryId.kt @@ -21,7 +21,7 @@ data class InventoryId(@field:JsonValue val value: Uint8) { val bijection: Bijection = Bijection.of(InventoryId::value, ::InventoryId) - val dbType: MariaType = + val mariaType: MariaType = MariaTypes.bigintUnsigned.bimap(::InventoryId, InventoryId::value) } } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/inventory/InventoryRepoImpl.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/inventory/InventoryRepoImpl.kt index 9b2d4b0ae7..674fa4af85 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/inventory/InventoryRepoImpl.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/inventory/InventoryRepoImpl.kt @@ -28,21 +28,21 @@ class InventoryRepoImpl() : InventoryRepo { override fun deleteById( inventoryId: InventoryId, c: Connection - ): Boolean = Fragment.interpolate(Fragment.lit("delete from `inventory` where `inventory_id` = "), Fragment.encode(InventoryId.dbType, inventoryId), Fragment.lit("")).update().runUnchecked(c) > 0 + ): Boolean = Fragment.interpolate(Fragment.lit("delete from `inventory` where `inventory_id` = "), Fragment.encode(InventoryId.mariaType, inventoryId), Fragment.lit("")).update().runUnchecked(c) > 0 override fun deleteByIds( inventoryIds: Array, c: Connection ): Int { val fragments: ArrayList = ArrayList() - for (id in inventoryIds) { fragments.add(Fragment.encode(InventoryId.dbType, id)) } + for (id in inventoryIds) { fragments.add(Fragment.encode(InventoryId.mariaType, id)) } return Fragment.interpolate(Fragment.lit("delete from `inventory` where `inventory_id` in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).update().runUnchecked(c) } override fun insert( unsaved: InventoryRow, c: Connection - ): InventoryRow = Fragment.interpolate(Fragment.lit("insert into `inventory`(`product_id`, `warehouse_id`, `quantity_on_hand`, `quantity_reserved`, `quantity_on_order`, `reorder_point`, `reorder_quantity`, `bin_location`, `last_counted_at`, `updated_at`)\nvalues ("), Fragment.encode(ProductsId.dbType, unsaved.productId), Fragment.lit(", "), Fragment.encode(WarehousesId.dbType, unsaved.warehouseId), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.int_, unsaved.quantityOnHand), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.int_, unsaved.quantityReserved), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.int_, unsaved.quantityOnOrder), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.int_, unsaved.reorderPoint), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.int_, unsaved.reorderQuantity), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.binLocation), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime.nullable(), unsaved.lastCountedAt), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.updatedAt), Fragment.lit(")\nRETURNING `inventory_id`, `product_id`, `warehouse_id`, `quantity_on_hand`, `quantity_reserved`, `quantity_on_order`, `reorder_point`, `reorder_quantity`, `bin_location`, `last_counted_at`, `updated_at`\n")) + ): InventoryRow = Fragment.interpolate(Fragment.lit("insert into `inventory`(`product_id`, `warehouse_id`, `quantity_on_hand`, `quantity_reserved`, `quantity_on_order`, `reorder_point`, `reorder_quantity`, `bin_location`, `last_counted_at`, `updated_at`)\nvalues ("), Fragment.encode(ProductsId.mariaType, unsaved.productId), Fragment.lit(", "), Fragment.encode(WarehousesId.mariaType, unsaved.warehouseId), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.int_, unsaved.quantityOnHand), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.int_, unsaved.quantityReserved), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.int_, unsaved.quantityOnOrder), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.int_, unsaved.reorderPoint), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.int_, unsaved.reorderQuantity), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.binLocation), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime.nullable(), unsaved.lastCountedAt), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.updatedAt), Fragment.lit(")\nRETURNING `inventory_id`, `product_id`, `warehouse_id`, `quantity_on_hand`, `quantity_reserved`, `quantity_on_order`, `reorder_point`, `reorder_quantity`, `bin_location`, `last_counted_at`, `updated_at`\n")) .updateReturning(InventoryRow._rowParser.exactlyOne()).runUnchecked(c) override fun insert( @@ -52,9 +52,9 @@ class InventoryRepoImpl() : InventoryRepo { val columns: ArrayList = ArrayList() val values: ArrayList = ArrayList() columns.add(Fragment.lit("`product_id`")) - values.add(Fragment.interpolate(Fragment.encode(ProductsId.dbType, unsaved.productId), Fragment.lit(""))) + values.add(Fragment.interpolate(Fragment.encode(ProductsId.mariaType, unsaved.productId), Fragment.lit(""))) columns.add(Fragment.lit("`warehouse_id`")) - values.add(Fragment.interpolate(Fragment.encode(WarehousesId.dbType, unsaved.warehouseId), Fragment.lit(""))) + values.add(Fragment.interpolate(Fragment.encode(WarehousesId.mariaType, unsaved.warehouseId), Fragment.lit(""))) unsaved.quantityOnHand.visit( { }, { value -> columns.add(Fragment.lit("`quantity_on_hand`")) @@ -106,14 +106,14 @@ class InventoryRepoImpl() : InventoryRepo { override fun selectById( inventoryId: InventoryId, c: Connection - ): InventoryRow? = Fragment.interpolate(Fragment.lit("select `inventory_id`, `product_id`, `warehouse_id`, `quantity_on_hand`, `quantity_reserved`, `quantity_on_order`, `reorder_point`, `reorder_quantity`, `bin_location`, `last_counted_at`, `updated_at`\nfrom `inventory`\nwhere `inventory_id` = "), Fragment.encode(InventoryId.dbType, inventoryId), Fragment.lit("")).query(InventoryRow._rowParser.first()).runUnchecked(c) + ): InventoryRow? = Fragment.interpolate(Fragment.lit("select `inventory_id`, `product_id`, `warehouse_id`, `quantity_on_hand`, `quantity_reserved`, `quantity_on_order`, `reorder_point`, `reorder_quantity`, `bin_location`, `last_counted_at`, `updated_at`\nfrom `inventory`\nwhere `inventory_id` = "), Fragment.encode(InventoryId.mariaType, inventoryId), Fragment.lit("")).query(InventoryRow._rowParser.first()).runUnchecked(c) override fun selectByIds( inventoryIds: Array, c: Connection ): List { val fragments: ArrayList = ArrayList() - for (id in inventoryIds) { fragments.add(Fragment.encode(InventoryId.dbType, id)) } + for (id in inventoryIds) { fragments.add(Fragment.encode(InventoryId.mariaType, id)) } return Fragment.interpolate(Fragment.lit("select `inventory_id`, `product_id`, `warehouse_id`, `quantity_on_hand`, `quantity_reserved`, `quantity_on_order`, `reorder_point`, `reorder_quantity`, `bin_location`, `last_counted_at`, `updated_at` from `inventory` where `inventory_id` in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).query(InventoryRow._rowParser.all()).runUnchecked(c) } @@ -130,7 +130,7 @@ class InventoryRepoImpl() : InventoryRepo { productId: ProductsId, warehouseId: WarehousesId, c: Connection - ): InventoryRow? = Fragment.interpolate(Fragment.lit("select `inventory_id`, `product_id`, `warehouse_id`, `quantity_on_hand`, `quantity_reserved`, `quantity_on_order`, `reorder_point`, `reorder_quantity`, `bin_location`, `last_counted_at`, `updated_at`\nfrom `inventory`\nwhere `product_id` = "), Fragment.encode(ProductsId.dbType, productId), Fragment.lit(" AND `warehouse_id` = "), Fragment.encode(WarehousesId.dbType, warehouseId), Fragment.lit("\n")).query(InventoryRow._rowParser.first()).runUnchecked(c) + ): InventoryRow? = Fragment.interpolate(Fragment.lit("select `inventory_id`, `product_id`, `warehouse_id`, `quantity_on_hand`, `quantity_reserved`, `quantity_on_order`, `reorder_point`, `reorder_quantity`, `bin_location`, `last_counted_at`, `updated_at`\nfrom `inventory`\nwhere `product_id` = "), Fragment.encode(ProductsId.mariaType, productId), Fragment.lit(" AND `warehouse_id` = "), Fragment.encode(WarehousesId.mariaType, warehouseId), Fragment.lit("\n")).query(InventoryRow._rowParser.first()).runUnchecked(c) override fun update(): UpdateBuilder = UpdateBuilder.of("`inventory`", InventoryFields.structure, InventoryRow._rowParser, Dialect.MARIADB) @@ -139,13 +139,13 @@ class InventoryRepoImpl() : InventoryRepo { c: Connection ): Boolean { val inventoryId: InventoryId = row.inventoryId - return Fragment.interpolate(Fragment.lit("update `inventory`\nset `product_id` = "), Fragment.encode(ProductsId.dbType, row.productId), Fragment.lit(",\n`warehouse_id` = "), Fragment.encode(WarehousesId.dbType, row.warehouseId), Fragment.lit(",\n`quantity_on_hand` = "), Fragment.encode(KotlinDbTypes.MariaTypes.int_, row.quantityOnHand), Fragment.lit(",\n`quantity_reserved` = "), Fragment.encode(KotlinDbTypes.MariaTypes.int_, row.quantityReserved), Fragment.lit(",\n`quantity_on_order` = "), Fragment.encode(KotlinDbTypes.MariaTypes.int_, row.quantityOnOrder), Fragment.lit(",\n`reorder_point` = "), Fragment.encode(KotlinDbTypes.MariaTypes.int_, row.reorderPoint), Fragment.lit(",\n`reorder_quantity` = "), Fragment.encode(KotlinDbTypes.MariaTypes.int_, row.reorderQuantity), Fragment.lit(",\n`bin_location` = "), Fragment.encode(MariaTypes.varchar.nullable(), row.binLocation), Fragment.lit(",\n`last_counted_at` = "), Fragment.encode(MariaTypes.datetime.nullable(), row.lastCountedAt), Fragment.lit(",\n`updated_at` = "), Fragment.encode(MariaTypes.datetime, row.updatedAt), Fragment.lit("\nwhere `inventory_id` = "), Fragment.encode(InventoryId.dbType, inventoryId), Fragment.lit("")).update().runUnchecked(c) > 0 + return Fragment.interpolate(Fragment.lit("update `inventory`\nset `product_id` = "), Fragment.encode(ProductsId.mariaType, row.productId), Fragment.lit(",\n`warehouse_id` = "), Fragment.encode(WarehousesId.mariaType, row.warehouseId), Fragment.lit(",\n`quantity_on_hand` = "), Fragment.encode(KotlinDbTypes.MariaTypes.int_, row.quantityOnHand), Fragment.lit(",\n`quantity_reserved` = "), Fragment.encode(KotlinDbTypes.MariaTypes.int_, row.quantityReserved), Fragment.lit(",\n`quantity_on_order` = "), Fragment.encode(KotlinDbTypes.MariaTypes.int_, row.quantityOnOrder), Fragment.lit(",\n`reorder_point` = "), Fragment.encode(KotlinDbTypes.MariaTypes.int_, row.reorderPoint), Fragment.lit(",\n`reorder_quantity` = "), Fragment.encode(KotlinDbTypes.MariaTypes.int_, row.reorderQuantity), Fragment.lit(",\n`bin_location` = "), Fragment.encode(MariaTypes.varchar.nullable(), row.binLocation), Fragment.lit(",\n`last_counted_at` = "), Fragment.encode(MariaTypes.datetime.nullable(), row.lastCountedAt), Fragment.lit(",\n`updated_at` = "), Fragment.encode(MariaTypes.datetime, row.updatedAt), Fragment.lit("\nwhere `inventory_id` = "), Fragment.encode(InventoryId.mariaType, inventoryId), Fragment.lit("")).update().runUnchecked(c) > 0 } override fun upsert( unsaved: InventoryRow, c: Connection - ): InventoryRow = Fragment.interpolate(Fragment.lit("INSERT INTO `inventory`(`inventory_id`, `product_id`, `warehouse_id`, `quantity_on_hand`, `quantity_reserved`, `quantity_on_order`, `reorder_point`, `reorder_quantity`, `bin_location`, `last_counted_at`, `updated_at`)\nVALUES ("), Fragment.encode(InventoryId.dbType, unsaved.inventoryId), Fragment.lit(", "), Fragment.encode(ProductsId.dbType, unsaved.productId), Fragment.lit(", "), Fragment.encode(WarehousesId.dbType, unsaved.warehouseId), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.int_, unsaved.quantityOnHand), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.int_, unsaved.quantityReserved), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.int_, unsaved.quantityOnOrder), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.int_, unsaved.reorderPoint), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.int_, unsaved.reorderQuantity), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.binLocation), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime.nullable(), unsaved.lastCountedAt), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.updatedAt), Fragment.lit(")\nON DUPLICATE KEY UPDATE `product_id` = VALUES(`product_id`),\n`warehouse_id` = VALUES(`warehouse_id`),\n`quantity_on_hand` = VALUES(`quantity_on_hand`),\n`quantity_reserved` = VALUES(`quantity_reserved`),\n`quantity_on_order` = VALUES(`quantity_on_order`),\n`reorder_point` = VALUES(`reorder_point`),\n`reorder_quantity` = VALUES(`reorder_quantity`),\n`bin_location` = VALUES(`bin_location`),\n`last_counted_at` = VALUES(`last_counted_at`),\n`updated_at` = VALUES(`updated_at`)\nRETURNING `inventory_id`, `product_id`, `warehouse_id`, `quantity_on_hand`, `quantity_reserved`, `quantity_on_order`, `reorder_point`, `reorder_quantity`, `bin_location`, `last_counted_at`, `updated_at`")) + ): InventoryRow = Fragment.interpolate(Fragment.lit("INSERT INTO `inventory`(`inventory_id`, `product_id`, `warehouse_id`, `quantity_on_hand`, `quantity_reserved`, `quantity_on_order`, `reorder_point`, `reorder_quantity`, `bin_location`, `last_counted_at`, `updated_at`)\nVALUES ("), Fragment.encode(InventoryId.mariaType, unsaved.inventoryId), Fragment.lit(", "), Fragment.encode(ProductsId.mariaType, unsaved.productId), Fragment.lit(", "), Fragment.encode(WarehousesId.mariaType, unsaved.warehouseId), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.int_, unsaved.quantityOnHand), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.int_, unsaved.quantityReserved), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.int_, unsaved.quantityOnOrder), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.int_, unsaved.reorderPoint), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.int_, unsaved.reorderQuantity), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.binLocation), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime.nullable(), unsaved.lastCountedAt), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.updatedAt), Fragment.lit(")\nON DUPLICATE KEY UPDATE `product_id` = VALUES(`product_id`),\n`warehouse_id` = VALUES(`warehouse_id`),\n`quantity_on_hand` = VALUES(`quantity_on_hand`),\n`quantity_reserved` = VALUES(`quantity_reserved`),\n`quantity_on_order` = VALUES(`quantity_on_order`),\n`reorder_point` = VALUES(`reorder_point`),\n`reorder_quantity` = VALUES(`reorder_quantity`),\n`bin_location` = VALUES(`bin_location`),\n`last_counted_at` = VALUES(`last_counted_at`),\n`updated_at` = VALUES(`updated_at`)\nRETURNING `inventory_id`, `product_id`, `warehouse_id`, `quantity_on_hand`, `quantity_reserved`, `quantity_on_order`, `reorder_point`, `reorder_quantity`, `bin_location`, `last_counted_at`, `updated_at`")) .updateReturning(InventoryRow._rowParser.exactlyOne()) .runUnchecked(c) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/inventory/InventoryRow.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/inventory/InventoryRow.kt index b968450469..e4b497139e 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/inventory/InventoryRow.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/inventory/InventoryRow.kt @@ -102,6 +102,6 @@ data class InventoryRow( ): InventoryRowUnsaved = InventoryRowUnsaved(productId, warehouseId, quantityOnHand, quantityReserved, quantityOnOrder, reorderPoint, reorderQuantity, binLocation, lastCountedAt, updatedAt) companion object { - val _rowParser: RowParser = RowParsers.of(InventoryId.dbType, ProductsId.dbType, WarehousesId.dbType, KotlinDbTypes.MariaTypes.int_, KotlinDbTypes.MariaTypes.int_, KotlinDbTypes.MariaTypes.int_, KotlinDbTypes.MariaTypes.int_, KotlinDbTypes.MariaTypes.int_, MariaTypes.varchar.nullable(), MariaTypes.datetime.nullable(), MariaTypes.datetime, { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10 -> InventoryRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10) }, { row -> arrayOf(row.inventoryId, row.productId, row.warehouseId, row.quantityOnHand, row.quantityReserved, row.quantityOnOrder, row.reorderPoint, row.reorderQuantity, row.binLocation, row.lastCountedAt, row.updatedAt) }) + val _rowParser: RowParser = RowParsers.of(InventoryId.mariaType, ProductsId.mariaType, WarehousesId.mariaType, KotlinDbTypes.MariaTypes.int_, KotlinDbTypes.MariaTypes.int_, KotlinDbTypes.MariaTypes.int_, KotlinDbTypes.MariaTypes.int_, KotlinDbTypes.MariaTypes.int_, MariaTypes.varchar.nullable(), MariaTypes.datetime.nullable(), MariaTypes.datetime, { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10 -> InventoryRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10) }, { row -> arrayOf(row.inventoryId, row.productId, row.warehouseId, row.quantityOnHand, row.quantityReserved, row.quantityOnOrder, row.reorderPoint, row.reorderQuantity, row.binLocation, row.lastCountedAt, row.updatedAt) }) } } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/inventory_check/InventoryCheckSqlRow.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/inventory_check/InventoryCheckSqlRow.kt index 9a53f7428c..956e89a206 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/inventory_check/InventoryCheckSqlRow.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/inventory_check/InventoryCheckSqlRow.kt @@ -36,7 +36,7 @@ data class InventoryCheckSqlRow( @field:JsonProperty("quantity_on_hand") val quantityOnHand: Int, /** Points to [testdb.inventory.InventoryRow.quantityReserved] */ @field:JsonProperty("quantity_reserved") val quantityReserved: Int, - /** Points to [testdb.inventory.InventoryRow.quantityOnHand] */ + /** Points to [testdb.inventory.InventoryRow.quantityReserved] */ val available: Int, /** Points to [testdb.inventory.InventoryRow.reorderPoint] */ @field:JsonProperty("reorder_point") val reorderPoint: Int, @@ -68,6 +68,6 @@ data class InventoryCheckSqlRow( override fun _9(): Int = quantityReserved companion object { - val _rowParser: RowParser = RowParsers.of(InventoryId.dbType, ProductsId.dbType, MariaTypes.varchar, MariaTypes.varchar, WarehousesId.dbType, MariaTypes.char_, MariaTypes.varchar, KotlinDbTypes.MariaTypes.int_, KotlinDbTypes.MariaTypes.int_, KotlinDbTypes.MariaTypes.int_, KotlinDbTypes.MariaTypes.int_, MariaTypes.varchar.nullable(), { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11 -> InventoryCheckSqlRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11) }, { row -> arrayOf(row.inventoryId, row.productId, row.sku, row.productName, row.warehouseId, row.warehouseCode, row.warehouseName, row.quantityOnHand, row.quantityReserved, row.available, row.reorderPoint, row.binLocation) }) + val _rowParser: RowParser = RowParsers.of(InventoryId.mariaType, ProductsId.mariaType, MariaTypes.varchar, MariaTypes.varchar, WarehousesId.mariaType, MariaTypes.char_, MariaTypes.varchar, KotlinDbTypes.MariaTypes.int_, KotlinDbTypes.MariaTypes.int_, KotlinDbTypes.MariaTypes.int_, KotlinDbTypes.MariaTypes.int_, MariaTypes.varchar.nullable(), { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11 -> InventoryCheckSqlRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11) }, { row -> arrayOf(row.inventoryId, row.productId, row.sku, row.productName, row.warehouseId, row.warehouseCode, row.warehouseName, row.quantityOnHand, row.quantityReserved, row.available, row.reorderPoint, row.binLocation) }) } } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest/MariatestFields.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest/MariatestFields.kt index 0f2ce76734..bf88cec601 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest/MariatestFields.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest/MariatestFields.kt @@ -150,7 +150,7 @@ data class MariatestFields(val _path: List) : TupleExpr41 = Field(_path, "inet6_col", MariatestRow::inet6Col, null, null, { row, value -> row.copy(inet6Col = value) }, MariaTypes.inet6) - fun intCol(): IdField = IdField(_path, "int_col", MariatestRow::intCol, null, null, { row, value -> row.copy(intCol = value) }, MariatestId.dbType) + fun intCol(): IdField = IdField(_path, "int_col", MariatestRow::intCol, null, null, { row, value -> row.copy(intCol = value) }, MariatestId.mariaType) fun intUCol(): Field = Field(_path, "int_u_col", MariatestRow::intUCol, null, null, { row, value -> row.copy(intUCol = value) }, MariaTypes.intUnsigned) @@ -172,7 +172,7 @@ data class MariatestFields(val _path: List) : TupleExpr41 = MariatestRow._rowParser.underlying - fun setCol(): Field = Field(_path, "set_col", MariatestRow::setCol, null, null, { row, value -> row.copy(setCol = value) }, XYZSet.dbType) + fun setCol(): Field = Field(_path, "set_col", MariatestRow::setCol, null, null, { row, value -> row.copy(setCol = value) }, XYZSet.mariaType) fun smallintCol(): Field = Field(_path, "smallint_col", MariatestRow::smallintCol, null, null, { row, value -> row.copy(smallintCol = value) }, KotlinDbTypes.MariaTypes.smallint) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest/MariatestId.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest/MariatestId.kt index 761931f468..9662f60848 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest/MariatestId.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest/MariatestId.kt @@ -20,7 +20,7 @@ data class MariatestId(@field:JsonValue val value: Int) { val bijection: Bijection = Bijection.of(MariatestId::value, ::MariatestId) - val dbType: MariaType = + val mariaType: MariaType = KotlinDbTypes.MariaTypes.int_.bimap(::MariatestId, MariatestId::value) } } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest/MariatestRepoImpl.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest/MariatestRepoImpl.kt index 4fb73b1d78..012427a4f1 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest/MariatestRepoImpl.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest/MariatestRepoImpl.kt @@ -26,21 +26,21 @@ class MariatestRepoImpl() : MariatestRepo { override fun deleteById( intCol: MariatestId, c: Connection - ): Boolean = Fragment.interpolate(Fragment.lit("delete from `mariatest` where `int_col` = "), Fragment.encode(MariatestId.dbType, intCol), Fragment.lit("")).update().runUnchecked(c) > 0 + ): Boolean = Fragment.interpolate(Fragment.lit("delete from `mariatest` where `int_col` = "), Fragment.encode(MariatestId.mariaType, intCol), Fragment.lit("")).update().runUnchecked(c) > 0 override fun deleteByIds( intCols: Array, c: Connection ): Int { val fragments: ArrayList = ArrayList() - for (id in intCols) { fragments.add(Fragment.encode(MariatestId.dbType, id)) } + for (id in intCols) { fragments.add(Fragment.encode(MariatestId.mariaType, id)) } return Fragment.interpolate(Fragment.lit("delete from `mariatest` where `int_col` in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).update().runUnchecked(c) } override fun insert( unsaved: MariatestRow, c: Connection - ): MariatestRow = Fragment.interpolate(Fragment.lit("insert into `mariatest`(`tinyint_col`, `smallint_col`, `mediumint_col`, `int_col`, `bigint_col`, `tinyint_u_col`, `smallint_u_col`, `mediumint_u_col`, `int_u_col`, `bigint_u_col`, `decimal_col`, `numeric_col`, `float_col`, `double_col`, `bool_col`, `bit_col`, `bit1_col`, `char_col`, `varchar_col`, `tinytext_col`, `text_col`, `mediumtext_col`, `longtext_col`, `binary_col`, `varbinary_col`, `tinyblob_col`, `blob_col`, `mediumblob_col`, `longblob_col`, `date_col`, `time_col`, `time_fsp_col`, `datetime_col`, `datetime_fsp_col`, `timestamp_col`, `timestamp_fsp_col`, `year_col`, `set_col`, `json_col`, `inet4_col`, `inet6_col`)\nvalues ("), Fragment.encode(KotlinDbTypes.MariaTypes.tinyint, unsaved.tinyintCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.smallint, unsaved.smallintCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.mediumint, unsaved.mediumintCol), Fragment.lit(", "), Fragment.encode(MariatestId.dbType, unsaved.intCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.bigint, unsaved.bigintCol), Fragment.lit(", "), Fragment.encode(MariaTypes.tinyintUnsigned, unsaved.tinyintUCol), Fragment.lit(", "), Fragment.encode(MariaTypes.smallintUnsigned, unsaved.smallintUCol), Fragment.lit(", "), Fragment.encode(MariaTypes.mediumintUnsigned, unsaved.mediumintUCol), Fragment.lit(", "), Fragment.encode(MariaTypes.intUnsigned, unsaved.intUCol), Fragment.lit(", "), Fragment.encode(MariaTypes.bigintUnsigned, unsaved.bigintUCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, unsaved.decimalCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, unsaved.numericCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.float_, unsaved.floatCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.double_, unsaved.doubleCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.bool, unsaved.boolCol), Fragment.lit(", "), Fragment.encode(MariaTypes.bit, unsaved.bitCol), Fragment.lit(", "), Fragment.encode(MariaTypes.bit, unsaved.bit1Col), Fragment.lit(", "), Fragment.encode(MariaTypes.char_, unsaved.charCol), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.varcharCol), Fragment.lit(", "), Fragment.encode(MariaTypes.tinytext, unsaved.tinytextCol), Fragment.lit(", "), Fragment.encode(MariaTypes.text, unsaved.textCol), Fragment.lit(", "), Fragment.encode(MariaTypes.mediumtext, unsaved.mediumtextCol), Fragment.lit(", "), Fragment.encode(MariaTypes.longtext, unsaved.longtextCol), Fragment.lit(", "), Fragment.encode(MariaTypes.binary, unsaved.binaryCol), Fragment.lit(", "), Fragment.encode(MariaTypes.varbinary, unsaved.varbinaryCol), Fragment.lit(", "), Fragment.encode(MariaTypes.tinyblob, unsaved.tinyblobCol), Fragment.lit(", "), Fragment.encode(MariaTypes.blob, unsaved.blobCol), Fragment.lit(", "), Fragment.encode(MariaTypes.mediumblob, unsaved.mediumblobCol), Fragment.lit(", "), Fragment.encode(MariaTypes.longblob, unsaved.longblobCol), Fragment.lit(", "), Fragment.encode(MariaTypes.date, unsaved.dateCol), Fragment.lit(", "), Fragment.encode(MariaTypes.time, unsaved.timeCol), Fragment.lit(", "), Fragment.encode(MariaTypes.time, unsaved.timeFspCol), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.datetimeCol), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.datetimeFspCol), Fragment.lit(", "), Fragment.encode(MariaTypes.timestamp, unsaved.timestampCol), Fragment.lit(", "), Fragment.encode(MariaTypes.timestamp, unsaved.timestampFspCol), Fragment.lit(", "), Fragment.encode(MariaTypes.year, unsaved.yearCol), Fragment.lit(", "), Fragment.encode(XYZSet.dbType, unsaved.setCol), Fragment.lit(", "), Fragment.encode(MariaTypes.json, unsaved.jsonCol), Fragment.lit(", "), Fragment.encode(MariaTypes.inet4, unsaved.inet4Col), Fragment.lit(", "), Fragment.encode(MariaTypes.inet6, unsaved.inet6Col), Fragment.lit(")\nRETURNING `tinyint_col`, `smallint_col`, `mediumint_col`, `int_col`, `bigint_col`, `tinyint_u_col`, `smallint_u_col`, `mediumint_u_col`, `int_u_col`, `bigint_u_col`, `decimal_col`, `numeric_col`, `float_col`, `double_col`, `bool_col`, `bit_col`, `bit1_col`, `char_col`, `varchar_col`, `tinytext_col`, `text_col`, `mediumtext_col`, `longtext_col`, `binary_col`, `varbinary_col`, `tinyblob_col`, `blob_col`, `mediumblob_col`, `longblob_col`, `date_col`, `time_col`, `time_fsp_col`, `datetime_col`, `datetime_fsp_col`, `timestamp_col`, `timestamp_fsp_col`, `year_col`, `set_col`, `json_col`, `inet4_col`, `inet6_col`\n")) + ): MariatestRow = Fragment.interpolate(Fragment.lit("insert into `mariatest`(`tinyint_col`, `smallint_col`, `mediumint_col`, `int_col`, `bigint_col`, `tinyint_u_col`, `smallint_u_col`, `mediumint_u_col`, `int_u_col`, `bigint_u_col`, `decimal_col`, `numeric_col`, `float_col`, `double_col`, `bool_col`, `bit_col`, `bit1_col`, `char_col`, `varchar_col`, `tinytext_col`, `text_col`, `mediumtext_col`, `longtext_col`, `binary_col`, `varbinary_col`, `tinyblob_col`, `blob_col`, `mediumblob_col`, `longblob_col`, `date_col`, `time_col`, `time_fsp_col`, `datetime_col`, `datetime_fsp_col`, `timestamp_col`, `timestamp_fsp_col`, `year_col`, `set_col`, `json_col`, `inet4_col`, `inet6_col`)\nvalues ("), Fragment.encode(KotlinDbTypes.MariaTypes.tinyint, unsaved.tinyintCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.smallint, unsaved.smallintCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.mediumint, unsaved.mediumintCol), Fragment.lit(", "), Fragment.encode(MariatestId.mariaType, unsaved.intCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.bigint, unsaved.bigintCol), Fragment.lit(", "), Fragment.encode(MariaTypes.tinyintUnsigned, unsaved.tinyintUCol), Fragment.lit(", "), Fragment.encode(MariaTypes.smallintUnsigned, unsaved.smallintUCol), Fragment.lit(", "), Fragment.encode(MariaTypes.mediumintUnsigned, unsaved.mediumintUCol), Fragment.lit(", "), Fragment.encode(MariaTypes.intUnsigned, unsaved.intUCol), Fragment.lit(", "), Fragment.encode(MariaTypes.bigintUnsigned, unsaved.bigintUCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, unsaved.decimalCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, unsaved.numericCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.float_, unsaved.floatCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.double_, unsaved.doubleCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.bool, unsaved.boolCol), Fragment.lit(", "), Fragment.encode(MariaTypes.bit, unsaved.bitCol), Fragment.lit(", "), Fragment.encode(MariaTypes.bit, unsaved.bit1Col), Fragment.lit(", "), Fragment.encode(MariaTypes.char_, unsaved.charCol), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.varcharCol), Fragment.lit(", "), Fragment.encode(MariaTypes.tinytext, unsaved.tinytextCol), Fragment.lit(", "), Fragment.encode(MariaTypes.text, unsaved.textCol), Fragment.lit(", "), Fragment.encode(MariaTypes.mediumtext, unsaved.mediumtextCol), Fragment.lit(", "), Fragment.encode(MariaTypes.longtext, unsaved.longtextCol), Fragment.lit(", "), Fragment.encode(MariaTypes.binary, unsaved.binaryCol), Fragment.lit(", "), Fragment.encode(MariaTypes.varbinary, unsaved.varbinaryCol), Fragment.lit(", "), Fragment.encode(MariaTypes.tinyblob, unsaved.tinyblobCol), Fragment.lit(", "), Fragment.encode(MariaTypes.blob, unsaved.blobCol), Fragment.lit(", "), Fragment.encode(MariaTypes.mediumblob, unsaved.mediumblobCol), Fragment.lit(", "), Fragment.encode(MariaTypes.longblob, unsaved.longblobCol), Fragment.lit(", "), Fragment.encode(MariaTypes.date, unsaved.dateCol), Fragment.lit(", "), Fragment.encode(MariaTypes.time, unsaved.timeCol), Fragment.lit(", "), Fragment.encode(MariaTypes.time, unsaved.timeFspCol), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.datetimeCol), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.datetimeFspCol), Fragment.lit(", "), Fragment.encode(MariaTypes.timestamp, unsaved.timestampCol), Fragment.lit(", "), Fragment.encode(MariaTypes.timestamp, unsaved.timestampFspCol), Fragment.lit(", "), Fragment.encode(MariaTypes.year, unsaved.yearCol), Fragment.lit(", "), Fragment.encode(XYZSet.mariaType, unsaved.setCol), Fragment.lit(", "), Fragment.encode(MariaTypes.json, unsaved.jsonCol), Fragment.lit(", "), Fragment.encode(MariaTypes.inet4, unsaved.inet4Col), Fragment.lit(", "), Fragment.encode(MariaTypes.inet6, unsaved.inet6Col), Fragment.lit(")\nRETURNING `tinyint_col`, `smallint_col`, `mediumint_col`, `int_col`, `bigint_col`, `tinyint_u_col`, `smallint_u_col`, `mediumint_u_col`, `int_u_col`, `bigint_u_col`, `decimal_col`, `numeric_col`, `float_col`, `double_col`, `bool_col`, `bit_col`, `bit1_col`, `char_col`, `varchar_col`, `tinytext_col`, `text_col`, `mediumtext_col`, `longtext_col`, `binary_col`, `varbinary_col`, `tinyblob_col`, `blob_col`, `mediumblob_col`, `longblob_col`, `date_col`, `time_col`, `time_fsp_col`, `datetime_col`, `datetime_fsp_col`, `timestamp_col`, `timestamp_fsp_col`, `year_col`, `set_col`, `json_col`, `inet4_col`, `inet6_col`\n")) .updateReturning(MariatestRow._rowParser.exactlyOne()).runUnchecked(c) override fun insert( @@ -56,7 +56,7 @@ class MariatestRepoImpl() : MariatestRepo { columns.add(Fragment.lit("`mediumint_col`")) values.add(Fragment.interpolate(Fragment.encode(KotlinDbTypes.MariaTypes.mediumint, unsaved.mediumintCol), Fragment.lit(""))) columns.add(Fragment.lit("`int_col`")) - values.add(Fragment.interpolate(Fragment.encode(MariatestId.dbType, unsaved.intCol), Fragment.lit(""))) + values.add(Fragment.interpolate(Fragment.encode(MariatestId.mariaType, unsaved.intCol), Fragment.lit(""))) columns.add(Fragment.lit("`bigint_col`")) values.add(Fragment.interpolate(Fragment.encode(KotlinDbTypes.MariaTypes.bigint, unsaved.bigintCol), Fragment.lit(""))) columns.add(Fragment.lit("`tinyint_u_col`")) @@ -120,7 +120,7 @@ class MariatestRepoImpl() : MariatestRepo { columns.add(Fragment.lit("`year_col`")) values.add(Fragment.interpolate(Fragment.encode(MariaTypes.year, unsaved.yearCol), Fragment.lit(""))) columns.add(Fragment.lit("`set_col`")) - values.add(Fragment.interpolate(Fragment.encode(XYZSet.dbType, unsaved.setCol), Fragment.lit(""))) + values.add(Fragment.interpolate(Fragment.encode(XYZSet.mariaType, unsaved.setCol), Fragment.lit(""))) columns.add(Fragment.lit("`json_col`")) values.add(Fragment.interpolate(Fragment.encode(MariaTypes.json, unsaved.jsonCol), Fragment.lit(""))) columns.add(Fragment.lit("`inet4_col`")) @@ -148,14 +148,14 @@ class MariatestRepoImpl() : MariatestRepo { override fun selectById( intCol: MariatestId, c: Connection - ): MariatestRow? = Fragment.interpolate(Fragment.lit("select `tinyint_col`, `smallint_col`, `mediumint_col`, `int_col`, `bigint_col`, `tinyint_u_col`, `smallint_u_col`, `mediumint_u_col`, `int_u_col`, `bigint_u_col`, `decimal_col`, `numeric_col`, `float_col`, `double_col`, `bool_col`, `bit_col`, `bit1_col`, `char_col`, `varchar_col`, `tinytext_col`, `text_col`, `mediumtext_col`, `longtext_col`, `binary_col`, `varbinary_col`, `tinyblob_col`, `blob_col`, `mediumblob_col`, `longblob_col`, `date_col`, `time_col`, `time_fsp_col`, `datetime_col`, `datetime_fsp_col`, `timestamp_col`, `timestamp_fsp_col`, `year_col`, `set_col`, `json_col`, `inet4_col`, `inet6_col`\nfrom `mariatest`\nwhere `int_col` = "), Fragment.encode(MariatestId.dbType, intCol), Fragment.lit("")).query(MariatestRow._rowParser.first()).runUnchecked(c) + ): MariatestRow? = Fragment.interpolate(Fragment.lit("select `tinyint_col`, `smallint_col`, `mediumint_col`, `int_col`, `bigint_col`, `tinyint_u_col`, `smallint_u_col`, `mediumint_u_col`, `int_u_col`, `bigint_u_col`, `decimal_col`, `numeric_col`, `float_col`, `double_col`, `bool_col`, `bit_col`, `bit1_col`, `char_col`, `varchar_col`, `tinytext_col`, `text_col`, `mediumtext_col`, `longtext_col`, `binary_col`, `varbinary_col`, `tinyblob_col`, `blob_col`, `mediumblob_col`, `longblob_col`, `date_col`, `time_col`, `time_fsp_col`, `datetime_col`, `datetime_fsp_col`, `timestamp_col`, `timestamp_fsp_col`, `year_col`, `set_col`, `json_col`, `inet4_col`, `inet6_col`\nfrom `mariatest`\nwhere `int_col` = "), Fragment.encode(MariatestId.mariaType, intCol), Fragment.lit("")).query(MariatestRow._rowParser.first()).runUnchecked(c) override fun selectByIds( intCols: Array, c: Connection ): List { val fragments: ArrayList = ArrayList() - for (id in intCols) { fragments.add(Fragment.encode(MariatestId.dbType, id)) } + for (id in intCols) { fragments.add(Fragment.encode(MariatestId.mariaType, id)) } return Fragment.interpolate(Fragment.lit("select `tinyint_col`, `smallint_col`, `mediumint_col`, `int_col`, `bigint_col`, `tinyint_u_col`, `smallint_u_col`, `mediumint_u_col`, `int_u_col`, `bigint_u_col`, `decimal_col`, `numeric_col`, `float_col`, `double_col`, `bool_col`, `bit_col`, `bit1_col`, `char_col`, `varchar_col`, `tinytext_col`, `text_col`, `mediumtext_col`, `longtext_col`, `binary_col`, `varbinary_col`, `tinyblob_col`, `blob_col`, `mediumblob_col`, `longblob_col`, `date_col`, `time_col`, `time_fsp_col`, `datetime_col`, `datetime_fsp_col`, `timestamp_col`, `timestamp_fsp_col`, `year_col`, `set_col`, `json_col`, `inet4_col`, `inet6_col` from `mariatest` where `int_col` in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).query(MariatestRow._rowParser.all()).runUnchecked(c) } @@ -175,13 +175,13 @@ class MariatestRepoImpl() : MariatestRepo { c: Connection ): Boolean { val intCol: MariatestId = row.intCol - return Fragment.interpolate(Fragment.lit("update `mariatest`\nset `tinyint_col` = "), Fragment.encode(KotlinDbTypes.MariaTypes.tinyint, row.tinyintCol), Fragment.lit(",\n`smallint_col` = "), Fragment.encode(KotlinDbTypes.MariaTypes.smallint, row.smallintCol), Fragment.lit(",\n`mediumint_col` = "), Fragment.encode(KotlinDbTypes.MariaTypes.mediumint, row.mediumintCol), Fragment.lit(",\n`bigint_col` = "), Fragment.encode(KotlinDbTypes.MariaTypes.bigint, row.bigintCol), Fragment.lit(",\n`tinyint_u_col` = "), Fragment.encode(MariaTypes.tinyintUnsigned, row.tinyintUCol), Fragment.lit(",\n`smallint_u_col` = "), Fragment.encode(MariaTypes.smallintUnsigned, row.smallintUCol), Fragment.lit(",\n`mediumint_u_col` = "), Fragment.encode(MariaTypes.mediumintUnsigned, row.mediumintUCol), Fragment.lit(",\n`int_u_col` = "), Fragment.encode(MariaTypes.intUnsigned, row.intUCol), Fragment.lit(",\n`bigint_u_col` = "), Fragment.encode(MariaTypes.bigintUnsigned, row.bigintUCol), Fragment.lit(",\n`decimal_col` = "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, row.decimalCol), Fragment.lit(",\n`numeric_col` = "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, row.numericCol), Fragment.lit(",\n`float_col` = "), Fragment.encode(KotlinDbTypes.MariaTypes.float_, row.floatCol), Fragment.lit(",\n`double_col` = "), Fragment.encode(KotlinDbTypes.MariaTypes.double_, row.doubleCol), Fragment.lit(",\n`bool_col` = "), Fragment.encode(KotlinDbTypes.MariaTypes.bool, row.boolCol), Fragment.lit(",\n`bit_col` = "), Fragment.encode(MariaTypes.bit, row.bitCol), Fragment.lit(",\n`bit1_col` = "), Fragment.encode(MariaTypes.bit, row.bit1Col), Fragment.lit(",\n`char_col` = "), Fragment.encode(MariaTypes.char_, row.charCol), Fragment.lit(",\n`varchar_col` = "), Fragment.encode(MariaTypes.varchar, row.varcharCol), Fragment.lit(",\n`tinytext_col` = "), Fragment.encode(MariaTypes.tinytext, row.tinytextCol), Fragment.lit(",\n`text_col` = "), Fragment.encode(MariaTypes.text, row.textCol), Fragment.lit(",\n`mediumtext_col` = "), Fragment.encode(MariaTypes.mediumtext, row.mediumtextCol), Fragment.lit(",\n`longtext_col` = "), Fragment.encode(MariaTypes.longtext, row.longtextCol), Fragment.lit(",\n`binary_col` = "), Fragment.encode(MariaTypes.binary, row.binaryCol), Fragment.lit(",\n`varbinary_col` = "), Fragment.encode(MariaTypes.varbinary, row.varbinaryCol), Fragment.lit(",\n`tinyblob_col` = "), Fragment.encode(MariaTypes.tinyblob, row.tinyblobCol), Fragment.lit(",\n`blob_col` = "), Fragment.encode(MariaTypes.blob, row.blobCol), Fragment.lit(",\n`mediumblob_col` = "), Fragment.encode(MariaTypes.mediumblob, row.mediumblobCol), Fragment.lit(",\n`longblob_col` = "), Fragment.encode(MariaTypes.longblob, row.longblobCol), Fragment.lit(",\n`date_col` = "), Fragment.encode(MariaTypes.date, row.dateCol), Fragment.lit(",\n`time_col` = "), Fragment.encode(MariaTypes.time, row.timeCol), Fragment.lit(",\n`time_fsp_col` = "), Fragment.encode(MariaTypes.time, row.timeFspCol), Fragment.lit(",\n`datetime_col` = "), Fragment.encode(MariaTypes.datetime, row.datetimeCol), Fragment.lit(",\n`datetime_fsp_col` = "), Fragment.encode(MariaTypes.datetime, row.datetimeFspCol), Fragment.lit(",\n`timestamp_col` = "), Fragment.encode(MariaTypes.timestamp, row.timestampCol), Fragment.lit(",\n`timestamp_fsp_col` = "), Fragment.encode(MariaTypes.timestamp, row.timestampFspCol), Fragment.lit(",\n`year_col` = "), Fragment.encode(MariaTypes.year, row.yearCol), Fragment.lit(",\n`set_col` = "), Fragment.encode(XYZSet.dbType, row.setCol), Fragment.lit(",\n`json_col` = "), Fragment.encode(MariaTypes.json, row.jsonCol), Fragment.lit(",\n`inet4_col` = "), Fragment.encode(MariaTypes.inet4, row.inet4Col), Fragment.lit(",\n`inet6_col` = "), Fragment.encode(MariaTypes.inet6, row.inet6Col), Fragment.lit("\nwhere `int_col` = "), Fragment.encode(MariatestId.dbType, intCol), Fragment.lit("")).update().runUnchecked(c) > 0 + return Fragment.interpolate(Fragment.lit("update `mariatest`\nset `tinyint_col` = "), Fragment.encode(KotlinDbTypes.MariaTypes.tinyint, row.tinyintCol), Fragment.lit(",\n`smallint_col` = "), Fragment.encode(KotlinDbTypes.MariaTypes.smallint, row.smallintCol), Fragment.lit(",\n`mediumint_col` = "), Fragment.encode(KotlinDbTypes.MariaTypes.mediumint, row.mediumintCol), Fragment.lit(",\n`bigint_col` = "), Fragment.encode(KotlinDbTypes.MariaTypes.bigint, row.bigintCol), Fragment.lit(",\n`tinyint_u_col` = "), Fragment.encode(MariaTypes.tinyintUnsigned, row.tinyintUCol), Fragment.lit(",\n`smallint_u_col` = "), Fragment.encode(MariaTypes.smallintUnsigned, row.smallintUCol), Fragment.lit(",\n`mediumint_u_col` = "), Fragment.encode(MariaTypes.mediumintUnsigned, row.mediumintUCol), Fragment.lit(",\n`int_u_col` = "), Fragment.encode(MariaTypes.intUnsigned, row.intUCol), Fragment.lit(",\n`bigint_u_col` = "), Fragment.encode(MariaTypes.bigintUnsigned, row.bigintUCol), Fragment.lit(",\n`decimal_col` = "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, row.decimalCol), Fragment.lit(",\n`numeric_col` = "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, row.numericCol), Fragment.lit(",\n`float_col` = "), Fragment.encode(KotlinDbTypes.MariaTypes.float_, row.floatCol), Fragment.lit(",\n`double_col` = "), Fragment.encode(KotlinDbTypes.MariaTypes.double_, row.doubleCol), Fragment.lit(",\n`bool_col` = "), Fragment.encode(KotlinDbTypes.MariaTypes.bool, row.boolCol), Fragment.lit(",\n`bit_col` = "), Fragment.encode(MariaTypes.bit, row.bitCol), Fragment.lit(",\n`bit1_col` = "), Fragment.encode(MariaTypes.bit, row.bit1Col), Fragment.lit(",\n`char_col` = "), Fragment.encode(MariaTypes.char_, row.charCol), Fragment.lit(",\n`varchar_col` = "), Fragment.encode(MariaTypes.varchar, row.varcharCol), Fragment.lit(",\n`tinytext_col` = "), Fragment.encode(MariaTypes.tinytext, row.tinytextCol), Fragment.lit(",\n`text_col` = "), Fragment.encode(MariaTypes.text, row.textCol), Fragment.lit(",\n`mediumtext_col` = "), Fragment.encode(MariaTypes.mediumtext, row.mediumtextCol), Fragment.lit(",\n`longtext_col` = "), Fragment.encode(MariaTypes.longtext, row.longtextCol), Fragment.lit(",\n`binary_col` = "), Fragment.encode(MariaTypes.binary, row.binaryCol), Fragment.lit(",\n`varbinary_col` = "), Fragment.encode(MariaTypes.varbinary, row.varbinaryCol), Fragment.lit(",\n`tinyblob_col` = "), Fragment.encode(MariaTypes.tinyblob, row.tinyblobCol), Fragment.lit(",\n`blob_col` = "), Fragment.encode(MariaTypes.blob, row.blobCol), Fragment.lit(",\n`mediumblob_col` = "), Fragment.encode(MariaTypes.mediumblob, row.mediumblobCol), Fragment.lit(",\n`longblob_col` = "), Fragment.encode(MariaTypes.longblob, row.longblobCol), Fragment.lit(",\n`date_col` = "), Fragment.encode(MariaTypes.date, row.dateCol), Fragment.lit(",\n`time_col` = "), Fragment.encode(MariaTypes.time, row.timeCol), Fragment.lit(",\n`time_fsp_col` = "), Fragment.encode(MariaTypes.time, row.timeFspCol), Fragment.lit(",\n`datetime_col` = "), Fragment.encode(MariaTypes.datetime, row.datetimeCol), Fragment.lit(",\n`datetime_fsp_col` = "), Fragment.encode(MariaTypes.datetime, row.datetimeFspCol), Fragment.lit(",\n`timestamp_col` = "), Fragment.encode(MariaTypes.timestamp, row.timestampCol), Fragment.lit(",\n`timestamp_fsp_col` = "), Fragment.encode(MariaTypes.timestamp, row.timestampFspCol), Fragment.lit(",\n`year_col` = "), Fragment.encode(MariaTypes.year, row.yearCol), Fragment.lit(",\n`set_col` = "), Fragment.encode(XYZSet.mariaType, row.setCol), Fragment.lit(",\n`json_col` = "), Fragment.encode(MariaTypes.json, row.jsonCol), Fragment.lit(",\n`inet4_col` = "), Fragment.encode(MariaTypes.inet4, row.inet4Col), Fragment.lit(",\n`inet6_col` = "), Fragment.encode(MariaTypes.inet6, row.inet6Col), Fragment.lit("\nwhere `int_col` = "), Fragment.encode(MariatestId.mariaType, intCol), Fragment.lit("")).update().runUnchecked(c) > 0 } override fun upsert( unsaved: MariatestRow, c: Connection - ): MariatestRow = Fragment.interpolate(Fragment.lit("INSERT INTO `mariatest`(`tinyint_col`, `smallint_col`, `mediumint_col`, `int_col`, `bigint_col`, `tinyint_u_col`, `smallint_u_col`, `mediumint_u_col`, `int_u_col`, `bigint_u_col`, `decimal_col`, `numeric_col`, `float_col`, `double_col`, `bool_col`, `bit_col`, `bit1_col`, `char_col`, `varchar_col`, `tinytext_col`, `text_col`, `mediumtext_col`, `longtext_col`, `binary_col`, `varbinary_col`, `tinyblob_col`, `blob_col`, `mediumblob_col`, `longblob_col`, `date_col`, `time_col`, `time_fsp_col`, `datetime_col`, `datetime_fsp_col`, `timestamp_col`, `timestamp_fsp_col`, `year_col`, `set_col`, `json_col`, `inet4_col`, `inet6_col`)\nVALUES ("), Fragment.encode(KotlinDbTypes.MariaTypes.tinyint, unsaved.tinyintCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.smallint, unsaved.smallintCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.mediumint, unsaved.mediumintCol), Fragment.lit(", "), Fragment.encode(MariatestId.dbType, unsaved.intCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.bigint, unsaved.bigintCol), Fragment.lit(", "), Fragment.encode(MariaTypes.tinyintUnsigned, unsaved.tinyintUCol), Fragment.lit(", "), Fragment.encode(MariaTypes.smallintUnsigned, unsaved.smallintUCol), Fragment.lit(", "), Fragment.encode(MariaTypes.mediumintUnsigned, unsaved.mediumintUCol), Fragment.lit(", "), Fragment.encode(MariaTypes.intUnsigned, unsaved.intUCol), Fragment.lit(", "), Fragment.encode(MariaTypes.bigintUnsigned, unsaved.bigintUCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, unsaved.decimalCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, unsaved.numericCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.float_, unsaved.floatCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.double_, unsaved.doubleCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.bool, unsaved.boolCol), Fragment.lit(", "), Fragment.encode(MariaTypes.bit, unsaved.bitCol), Fragment.lit(", "), Fragment.encode(MariaTypes.bit, unsaved.bit1Col), Fragment.lit(", "), Fragment.encode(MariaTypes.char_, unsaved.charCol), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.varcharCol), Fragment.lit(", "), Fragment.encode(MariaTypes.tinytext, unsaved.tinytextCol), Fragment.lit(", "), Fragment.encode(MariaTypes.text, unsaved.textCol), Fragment.lit(", "), Fragment.encode(MariaTypes.mediumtext, unsaved.mediumtextCol), Fragment.lit(", "), Fragment.encode(MariaTypes.longtext, unsaved.longtextCol), Fragment.lit(", "), Fragment.encode(MariaTypes.binary, unsaved.binaryCol), Fragment.lit(", "), Fragment.encode(MariaTypes.varbinary, unsaved.varbinaryCol), Fragment.lit(", "), Fragment.encode(MariaTypes.tinyblob, unsaved.tinyblobCol), Fragment.lit(", "), Fragment.encode(MariaTypes.blob, unsaved.blobCol), Fragment.lit(", "), Fragment.encode(MariaTypes.mediumblob, unsaved.mediumblobCol), Fragment.lit(", "), Fragment.encode(MariaTypes.longblob, unsaved.longblobCol), Fragment.lit(", "), Fragment.encode(MariaTypes.date, unsaved.dateCol), Fragment.lit(", "), Fragment.encode(MariaTypes.time, unsaved.timeCol), Fragment.lit(", "), Fragment.encode(MariaTypes.time, unsaved.timeFspCol), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.datetimeCol), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.datetimeFspCol), Fragment.lit(", "), Fragment.encode(MariaTypes.timestamp, unsaved.timestampCol), Fragment.lit(", "), Fragment.encode(MariaTypes.timestamp, unsaved.timestampFspCol), Fragment.lit(", "), Fragment.encode(MariaTypes.year, unsaved.yearCol), Fragment.lit(", "), Fragment.encode(XYZSet.dbType, unsaved.setCol), Fragment.lit(", "), Fragment.encode(MariaTypes.json, unsaved.jsonCol), Fragment.lit(", "), Fragment.encode(MariaTypes.inet4, unsaved.inet4Col), Fragment.lit(", "), Fragment.encode(MariaTypes.inet6, unsaved.inet6Col), Fragment.lit(")\nON DUPLICATE KEY UPDATE `tinyint_col` = VALUES(`tinyint_col`),\n`smallint_col` = VALUES(`smallint_col`),\n`mediumint_col` = VALUES(`mediumint_col`),\n`bigint_col` = VALUES(`bigint_col`),\n`tinyint_u_col` = VALUES(`tinyint_u_col`),\n`smallint_u_col` = VALUES(`smallint_u_col`),\n`mediumint_u_col` = VALUES(`mediumint_u_col`),\n`int_u_col` = VALUES(`int_u_col`),\n`bigint_u_col` = VALUES(`bigint_u_col`),\n`decimal_col` = VALUES(`decimal_col`),\n`numeric_col` = VALUES(`numeric_col`),\n`float_col` = VALUES(`float_col`),\n`double_col` = VALUES(`double_col`),\n`bool_col` = VALUES(`bool_col`),\n`bit_col` = VALUES(`bit_col`),\n`bit1_col` = VALUES(`bit1_col`),\n`char_col` = VALUES(`char_col`),\n`varchar_col` = VALUES(`varchar_col`),\n`tinytext_col` = VALUES(`tinytext_col`),\n`text_col` = VALUES(`text_col`),\n`mediumtext_col` = VALUES(`mediumtext_col`),\n`longtext_col` = VALUES(`longtext_col`),\n`binary_col` = VALUES(`binary_col`),\n`varbinary_col` = VALUES(`varbinary_col`),\n`tinyblob_col` = VALUES(`tinyblob_col`),\n`blob_col` = VALUES(`blob_col`),\n`mediumblob_col` = VALUES(`mediumblob_col`),\n`longblob_col` = VALUES(`longblob_col`),\n`date_col` = VALUES(`date_col`),\n`time_col` = VALUES(`time_col`),\n`time_fsp_col` = VALUES(`time_fsp_col`),\n`datetime_col` = VALUES(`datetime_col`),\n`datetime_fsp_col` = VALUES(`datetime_fsp_col`),\n`timestamp_col` = VALUES(`timestamp_col`),\n`timestamp_fsp_col` = VALUES(`timestamp_fsp_col`),\n`year_col` = VALUES(`year_col`),\n`set_col` = VALUES(`set_col`),\n`json_col` = VALUES(`json_col`),\n`inet4_col` = VALUES(`inet4_col`),\n`inet6_col` = VALUES(`inet6_col`)\nRETURNING `tinyint_col`, `smallint_col`, `mediumint_col`, `int_col`, `bigint_col`, `tinyint_u_col`, `smallint_u_col`, `mediumint_u_col`, `int_u_col`, `bigint_u_col`, `decimal_col`, `numeric_col`, `float_col`, `double_col`, `bool_col`, `bit_col`, `bit1_col`, `char_col`, `varchar_col`, `tinytext_col`, `text_col`, `mediumtext_col`, `longtext_col`, `binary_col`, `varbinary_col`, `tinyblob_col`, `blob_col`, `mediumblob_col`, `longblob_col`, `date_col`, `time_col`, `time_fsp_col`, `datetime_col`, `datetime_fsp_col`, `timestamp_col`, `timestamp_fsp_col`, `year_col`, `set_col`, `json_col`, `inet4_col`, `inet6_col`")) + ): MariatestRow = Fragment.interpolate(Fragment.lit("INSERT INTO `mariatest`(`tinyint_col`, `smallint_col`, `mediumint_col`, `int_col`, `bigint_col`, `tinyint_u_col`, `smallint_u_col`, `mediumint_u_col`, `int_u_col`, `bigint_u_col`, `decimal_col`, `numeric_col`, `float_col`, `double_col`, `bool_col`, `bit_col`, `bit1_col`, `char_col`, `varchar_col`, `tinytext_col`, `text_col`, `mediumtext_col`, `longtext_col`, `binary_col`, `varbinary_col`, `tinyblob_col`, `blob_col`, `mediumblob_col`, `longblob_col`, `date_col`, `time_col`, `time_fsp_col`, `datetime_col`, `datetime_fsp_col`, `timestamp_col`, `timestamp_fsp_col`, `year_col`, `set_col`, `json_col`, `inet4_col`, `inet6_col`)\nVALUES ("), Fragment.encode(KotlinDbTypes.MariaTypes.tinyint, unsaved.tinyintCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.smallint, unsaved.smallintCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.mediumint, unsaved.mediumintCol), Fragment.lit(", "), Fragment.encode(MariatestId.mariaType, unsaved.intCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.bigint, unsaved.bigintCol), Fragment.lit(", "), Fragment.encode(MariaTypes.tinyintUnsigned, unsaved.tinyintUCol), Fragment.lit(", "), Fragment.encode(MariaTypes.smallintUnsigned, unsaved.smallintUCol), Fragment.lit(", "), Fragment.encode(MariaTypes.mediumintUnsigned, unsaved.mediumintUCol), Fragment.lit(", "), Fragment.encode(MariaTypes.intUnsigned, unsaved.intUCol), Fragment.lit(", "), Fragment.encode(MariaTypes.bigintUnsigned, unsaved.bigintUCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, unsaved.decimalCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, unsaved.numericCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.float_, unsaved.floatCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.double_, unsaved.doubleCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.bool, unsaved.boolCol), Fragment.lit(", "), Fragment.encode(MariaTypes.bit, unsaved.bitCol), Fragment.lit(", "), Fragment.encode(MariaTypes.bit, unsaved.bit1Col), Fragment.lit(", "), Fragment.encode(MariaTypes.char_, unsaved.charCol), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.varcharCol), Fragment.lit(", "), Fragment.encode(MariaTypes.tinytext, unsaved.tinytextCol), Fragment.lit(", "), Fragment.encode(MariaTypes.text, unsaved.textCol), Fragment.lit(", "), Fragment.encode(MariaTypes.mediumtext, unsaved.mediumtextCol), Fragment.lit(", "), Fragment.encode(MariaTypes.longtext, unsaved.longtextCol), Fragment.lit(", "), Fragment.encode(MariaTypes.binary, unsaved.binaryCol), Fragment.lit(", "), Fragment.encode(MariaTypes.varbinary, unsaved.varbinaryCol), Fragment.lit(", "), Fragment.encode(MariaTypes.tinyblob, unsaved.tinyblobCol), Fragment.lit(", "), Fragment.encode(MariaTypes.blob, unsaved.blobCol), Fragment.lit(", "), Fragment.encode(MariaTypes.mediumblob, unsaved.mediumblobCol), Fragment.lit(", "), Fragment.encode(MariaTypes.longblob, unsaved.longblobCol), Fragment.lit(", "), Fragment.encode(MariaTypes.date, unsaved.dateCol), Fragment.lit(", "), Fragment.encode(MariaTypes.time, unsaved.timeCol), Fragment.lit(", "), Fragment.encode(MariaTypes.time, unsaved.timeFspCol), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.datetimeCol), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.datetimeFspCol), Fragment.lit(", "), Fragment.encode(MariaTypes.timestamp, unsaved.timestampCol), Fragment.lit(", "), Fragment.encode(MariaTypes.timestamp, unsaved.timestampFspCol), Fragment.lit(", "), Fragment.encode(MariaTypes.year, unsaved.yearCol), Fragment.lit(", "), Fragment.encode(XYZSet.mariaType, unsaved.setCol), Fragment.lit(", "), Fragment.encode(MariaTypes.json, unsaved.jsonCol), Fragment.lit(", "), Fragment.encode(MariaTypes.inet4, unsaved.inet4Col), Fragment.lit(", "), Fragment.encode(MariaTypes.inet6, unsaved.inet6Col), Fragment.lit(")\nON DUPLICATE KEY UPDATE `tinyint_col` = VALUES(`tinyint_col`),\n`smallint_col` = VALUES(`smallint_col`),\n`mediumint_col` = VALUES(`mediumint_col`),\n`bigint_col` = VALUES(`bigint_col`),\n`tinyint_u_col` = VALUES(`tinyint_u_col`),\n`smallint_u_col` = VALUES(`smallint_u_col`),\n`mediumint_u_col` = VALUES(`mediumint_u_col`),\n`int_u_col` = VALUES(`int_u_col`),\n`bigint_u_col` = VALUES(`bigint_u_col`),\n`decimal_col` = VALUES(`decimal_col`),\n`numeric_col` = VALUES(`numeric_col`),\n`float_col` = VALUES(`float_col`),\n`double_col` = VALUES(`double_col`),\n`bool_col` = VALUES(`bool_col`),\n`bit_col` = VALUES(`bit_col`),\n`bit1_col` = VALUES(`bit1_col`),\n`char_col` = VALUES(`char_col`),\n`varchar_col` = VALUES(`varchar_col`),\n`tinytext_col` = VALUES(`tinytext_col`),\n`text_col` = VALUES(`text_col`),\n`mediumtext_col` = VALUES(`mediumtext_col`),\n`longtext_col` = VALUES(`longtext_col`),\n`binary_col` = VALUES(`binary_col`),\n`varbinary_col` = VALUES(`varbinary_col`),\n`tinyblob_col` = VALUES(`tinyblob_col`),\n`blob_col` = VALUES(`blob_col`),\n`mediumblob_col` = VALUES(`mediumblob_col`),\n`longblob_col` = VALUES(`longblob_col`),\n`date_col` = VALUES(`date_col`),\n`time_col` = VALUES(`time_col`),\n`time_fsp_col` = VALUES(`time_fsp_col`),\n`datetime_col` = VALUES(`datetime_col`),\n`datetime_fsp_col` = VALUES(`datetime_fsp_col`),\n`timestamp_col` = VALUES(`timestamp_col`),\n`timestamp_fsp_col` = VALUES(`timestamp_fsp_col`),\n`year_col` = VALUES(`year_col`),\n`set_col` = VALUES(`set_col`),\n`json_col` = VALUES(`json_col`),\n`inet4_col` = VALUES(`inet4_col`),\n`inet6_col` = VALUES(`inet6_col`)\nRETURNING `tinyint_col`, `smallint_col`, `mediumint_col`, `int_col`, `bigint_col`, `tinyint_u_col`, `smallint_u_col`, `mediumint_u_col`, `int_u_col`, `bigint_u_col`, `decimal_col`, `numeric_col`, `float_col`, `double_col`, `bool_col`, `bit_col`, `bit1_col`, `char_col`, `varchar_col`, `tinytext_col`, `text_col`, `mediumtext_col`, `longtext_col`, `binary_col`, `varbinary_col`, `tinyblob_col`, `blob_col`, `mediumblob_col`, `longblob_col`, `date_col`, `time_col`, `time_fsp_col`, `datetime_col`, `datetime_fsp_col`, `timestamp_col`, `timestamp_fsp_col`, `year_col`, `set_col`, `json_col`, `inet4_col`, `inet6_col`")) .updateReturning(MariatestRow._rowParser.exactlyOne()) .runUnchecked(c) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest/MariatestRow.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest/MariatestRow.kt index 040382b7f3..8b5182255e 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest/MariatestRow.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest/MariatestRow.kt @@ -207,6 +207,6 @@ data class MariatestRow( ): MariatestRowUnsaved = MariatestRowUnsaved(tinyintCol, smallintCol, mediumintCol, intCol, bigintCol, tinyintUCol, smallintUCol, mediumintUCol, intUCol, bigintUCol, decimalCol, numericCol, floatCol, doubleCol, boolCol, bitCol, bit1Col, charCol, varcharCol, tinytextCol, textCol, mediumtextCol, longtextCol, binaryCol, varbinaryCol, tinyblobCol, blobCol, mediumblobCol, longblobCol, dateCol, timeCol, timeFspCol, datetimeCol, datetimeFspCol, yearCol, setCol, jsonCol, inet4Col, inet6Col, timestampCol, timestampFspCol) companion object { - val _rowParser: RowParser = RowParsers.of(KotlinDbTypes.MariaTypes.tinyint, KotlinDbTypes.MariaTypes.smallint, KotlinDbTypes.MariaTypes.mediumint, MariatestId.dbType, KotlinDbTypes.MariaTypes.bigint, MariaTypes.tinyintUnsigned, MariaTypes.smallintUnsigned, MariaTypes.mediumintUnsigned, MariaTypes.intUnsigned, MariaTypes.bigintUnsigned, KotlinDbTypes.MariaTypes.numeric, KotlinDbTypes.MariaTypes.numeric, KotlinDbTypes.MariaTypes.float_, KotlinDbTypes.MariaTypes.double_, KotlinDbTypes.MariaTypes.bool, MariaTypes.bit, MariaTypes.bit, MariaTypes.char_, MariaTypes.varchar, MariaTypes.tinytext, MariaTypes.text, MariaTypes.mediumtext, MariaTypes.longtext, MariaTypes.binary, MariaTypes.varbinary, MariaTypes.tinyblob, MariaTypes.blob, MariaTypes.mediumblob, MariaTypes.longblob, MariaTypes.date, MariaTypes.time, MariaTypes.time, MariaTypes.datetime, MariaTypes.datetime, MariaTypes.timestamp, MariaTypes.timestamp, MariaTypes.year, XYZSet.dbType, MariaTypes.json, MariaTypes.inet4, MariaTypes.inet6, { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40 -> MariatestRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40) }, { row -> arrayOf(row.tinyintCol, row.smallintCol, row.mediumintCol, row.intCol, row.bigintCol, row.tinyintUCol, row.smallintUCol, row.mediumintUCol, row.intUCol, row.bigintUCol, row.decimalCol, row.numericCol, row.floatCol, row.doubleCol, row.boolCol, row.bitCol, row.bit1Col, row.charCol, row.varcharCol, row.tinytextCol, row.textCol, row.mediumtextCol, row.longtextCol, row.binaryCol, row.varbinaryCol, row.tinyblobCol, row.blobCol, row.mediumblobCol, row.longblobCol, row.dateCol, row.timeCol, row.timeFspCol, row.datetimeCol, row.datetimeFspCol, row.timestampCol, row.timestampFspCol, row.yearCol, row.setCol, row.jsonCol, row.inet4Col, row.inet6Col) }) + val _rowParser: RowParser = RowParsers.of(KotlinDbTypes.MariaTypes.tinyint, KotlinDbTypes.MariaTypes.smallint, KotlinDbTypes.MariaTypes.mediumint, MariatestId.mariaType, KotlinDbTypes.MariaTypes.bigint, MariaTypes.tinyintUnsigned, MariaTypes.smallintUnsigned, MariaTypes.mediumintUnsigned, MariaTypes.intUnsigned, MariaTypes.bigintUnsigned, KotlinDbTypes.MariaTypes.numeric, KotlinDbTypes.MariaTypes.numeric, KotlinDbTypes.MariaTypes.float_, KotlinDbTypes.MariaTypes.double_, KotlinDbTypes.MariaTypes.bool, MariaTypes.bit, MariaTypes.bit, MariaTypes.char_, MariaTypes.varchar, MariaTypes.tinytext, MariaTypes.text, MariaTypes.mediumtext, MariaTypes.longtext, MariaTypes.binary, MariaTypes.varbinary, MariaTypes.tinyblob, MariaTypes.blob, MariaTypes.mediumblob, MariaTypes.longblob, MariaTypes.date, MariaTypes.time, MariaTypes.time, MariaTypes.datetime, MariaTypes.datetime, MariaTypes.timestamp, MariaTypes.timestamp, MariaTypes.year, XYZSet.mariaType, MariaTypes.json, MariaTypes.inet4, MariaTypes.inet6, { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40 -> MariatestRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40) }, { row -> arrayOf(row.tinyintCol, row.smallintCol, row.mediumintCol, row.intCol, row.bigintCol, row.tinyintUCol, row.smallintUCol, row.mediumintUCol, row.intUCol, row.bigintUCol, row.decimalCol, row.numericCol, row.floatCol, row.doubleCol, row.boolCol, row.bitCol, row.bit1Col, row.charCol, row.varcharCol, row.tinytextCol, row.textCol, row.mediumtextCol, row.longtextCol, row.binaryCol, row.varbinaryCol, row.tinyblobCol, row.blobCol, row.mediumblobCol, row.longblobCol, row.dateCol, row.timeCol, row.timeFspCol, row.datetimeCol, row.datetimeFspCol, row.timestampCol, row.timestampFspCol, row.yearCol, row.setCol, row.jsonCol, row.inet4Col, row.inet6Col) }) } } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_identity/MariatestIdentityFields.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_identity/MariatestIdentityFields.kt index cd34689ed8..7d38eaad5c 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_identity/MariatestIdentityFields.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_identity/MariatestIdentityFields.kt @@ -26,7 +26,7 @@ data class MariatestIdentityFields(val _path: List) : TupleExpr2> = listOf(this.id().underlying, this.name().underlying) - fun id(): IdField = IdField(_path, "id", MariatestIdentityRow::id, null, null, { row, value -> row.copy(id = value) }, MariatestIdentityId.dbType) + fun id(): IdField = IdField(_path, "id", MariatestIdentityRow::id, null, null, { row, value -> row.copy(id = value) }, MariatestIdentityId.mariaType) fun name(): Field = Field(_path, "name", MariatestIdentityRow::name, null, null, { row, value -> row.copy(name = value) }, MariaTypes.varchar) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_identity/MariatestIdentityId.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_identity/MariatestIdentityId.kt index 14c7fbe4ab..d87916d2c0 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_identity/MariatestIdentityId.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_identity/MariatestIdentityId.kt @@ -20,7 +20,7 @@ data class MariatestIdentityId(@field:JsonValue val value: Int) { val bijection: Bijection = Bijection.of(MariatestIdentityId::value, ::MariatestIdentityId) - val dbType: MariaType = + val mariaType: MariaType = KotlinDbTypes.MariaTypes.int_.bimap(::MariatestIdentityId, MariatestIdentityId::value) } } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_identity/MariatestIdentityRepoImpl.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_identity/MariatestIdentityRepoImpl.kt index 48b80abaaa..b256e55d83 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_identity/MariatestIdentityRepoImpl.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_identity/MariatestIdentityRepoImpl.kt @@ -24,14 +24,14 @@ class MariatestIdentityRepoImpl() : MariatestIdentityRepo { override fun deleteById( id: MariatestIdentityId, c: Connection - ): Boolean = Fragment.interpolate(Fragment.lit("delete from `mariatest_identity` where `id` = "), Fragment.encode(MariatestIdentityId.dbType, id), Fragment.lit("")).update().runUnchecked(c) > 0 + ): Boolean = Fragment.interpolate(Fragment.lit("delete from `mariatest_identity` where `id` = "), Fragment.encode(MariatestIdentityId.mariaType, id), Fragment.lit("")).update().runUnchecked(c) > 0 override fun deleteByIds( ids: Array, c: Connection ): Int { val fragments: ArrayList = ArrayList() - for (id in ids) { fragments.add(Fragment.encode(MariatestIdentityId.dbType, id)) } + for (id in ids) { fragments.add(Fragment.encode(MariatestIdentityId.mariaType, id)) } return Fragment.interpolate(Fragment.lit("delete from `mariatest_identity` where `id` in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).update().runUnchecked(c) } @@ -60,14 +60,14 @@ class MariatestIdentityRepoImpl() : MariatestIdentityRepo { override fun selectById( id: MariatestIdentityId, c: Connection - ): MariatestIdentityRow? = Fragment.interpolate(Fragment.lit("select `id`, `name`\nfrom `mariatest_identity`\nwhere `id` = "), Fragment.encode(MariatestIdentityId.dbType, id), Fragment.lit("")).query(MariatestIdentityRow._rowParser.first()).runUnchecked(c) + ): MariatestIdentityRow? = Fragment.interpolate(Fragment.lit("select `id`, `name`\nfrom `mariatest_identity`\nwhere `id` = "), Fragment.encode(MariatestIdentityId.mariaType, id), Fragment.lit("")).query(MariatestIdentityRow._rowParser.first()).runUnchecked(c) override fun selectByIds( ids: Array, c: Connection ): List { val fragments: ArrayList = ArrayList() - for (id in ids) { fragments.add(Fragment.encode(MariatestIdentityId.dbType, id)) } + for (id in ids) { fragments.add(Fragment.encode(MariatestIdentityId.mariaType, id)) } return Fragment.interpolate(Fragment.lit("select `id`, `name` from `mariatest_identity` where `id` in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).query(MariatestIdentityRow._rowParser.all()).runUnchecked(c) } @@ -87,13 +87,13 @@ class MariatestIdentityRepoImpl() : MariatestIdentityRepo { c: Connection ): Boolean { val id: MariatestIdentityId = row.id - return Fragment.interpolate(Fragment.lit("update `mariatest_identity`\nset `name` = "), Fragment.encode(MariaTypes.varchar, row.name), Fragment.lit("\nwhere `id` = "), Fragment.encode(MariatestIdentityId.dbType, id), Fragment.lit("")).update().runUnchecked(c) > 0 + return Fragment.interpolate(Fragment.lit("update `mariatest_identity`\nset `name` = "), Fragment.encode(MariaTypes.varchar, row.name), Fragment.lit("\nwhere `id` = "), Fragment.encode(MariatestIdentityId.mariaType, id), Fragment.lit("")).update().runUnchecked(c) > 0 } override fun upsert( unsaved: MariatestIdentityRow, c: Connection - ): MariatestIdentityRow = Fragment.interpolate(Fragment.lit("INSERT INTO `mariatest_identity`(`id`, `name`)\nVALUES ("), Fragment.encode(MariatestIdentityId.dbType, unsaved.id), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.name), Fragment.lit(")\nON DUPLICATE KEY UPDATE `name` = VALUES(`name`)\nRETURNING `id`, `name`")) + ): MariatestIdentityRow = Fragment.interpolate(Fragment.lit("INSERT INTO `mariatest_identity`(`id`, `name`)\nVALUES ("), Fragment.encode(MariatestIdentityId.mariaType, unsaved.id), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.name), Fragment.lit(")\nON DUPLICATE KEY UPDATE `name` = VALUES(`name`)\nRETURNING `id`, `name`")) .updateReturning(MariatestIdentityRow._rowParser.exactlyOne()) .runUnchecked(c) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_identity/MariatestIdentityRow.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_identity/MariatestIdentityRow.kt index 10ed3ea309..475f69e60b 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_identity/MariatestIdentityRow.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_identity/MariatestIdentityRow.kt @@ -28,6 +28,6 @@ data class MariatestIdentityRow( fun toUnsavedRow(): MariatestIdentityRowUnsaved = MariatestIdentityRowUnsaved(name) companion object { - val _rowParser: RowParser = RowParsers.of(MariatestIdentityId.dbType, MariaTypes.varchar, { t0, t1 -> MariatestIdentityRow(t0, t1) }, { row -> arrayOf(row.id, row.name) }) + val _rowParser: RowParser = RowParsers.of(MariatestIdentityId.mariaType, MariaTypes.varchar, { t0, t1 -> MariatestIdentityRow(t0, t1) }, { row -> arrayOf(row.id, row.name) }) } } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_spatial/MariatestSpatialFields.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_spatial/MariatestSpatialFields.kt index a73274d114..bf4a5c2b37 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_spatial/MariatestSpatialFields.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_spatial/MariatestSpatialFields.kt @@ -52,7 +52,7 @@ data class MariatestSpatialFields(val _path: List) : TupleExpr9 = Field(_path, "geometrycollection_col", MariatestSpatialRow::geometrycollectionCol, null, null, { row, value -> row.copy(geometrycollectionCol = value) }, MariaTypes.geometrycollection) - fun id(): IdField = IdField(_path, "id", MariatestSpatialRow::id, null, null, { row, value -> row.copy(id = value) }, MariatestSpatialId.dbType) + fun id(): IdField = IdField(_path, "id", MariatestSpatialRow::id, null, null, { row, value -> row.copy(id = value) }, MariatestSpatialId.mariaType) fun linestringCol(): Field = Field(_path, "linestring_col", MariatestSpatialRow::linestringCol, null, null, { row, value -> row.copy(linestringCol = value) }, MariaTypes.linestring) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_spatial/MariatestSpatialId.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_spatial/MariatestSpatialId.kt index ce45652c92..8ec750cfac 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_spatial/MariatestSpatialId.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_spatial/MariatestSpatialId.kt @@ -20,7 +20,7 @@ data class MariatestSpatialId(@field:JsonValue val value: Int) { val bijection: Bijection = Bijection.of(MariatestSpatialId::value, ::MariatestSpatialId) - val dbType: MariaType = + val mariaType: MariaType = KotlinDbTypes.MariaTypes.int_.bimap(::MariatestSpatialId, MariatestSpatialId::value) } } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_spatial/MariatestSpatialRepoImpl.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_spatial/MariatestSpatialRepoImpl.kt index 63937f7ad9..941889e7ec 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_spatial/MariatestSpatialRepoImpl.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_spatial/MariatestSpatialRepoImpl.kt @@ -24,14 +24,14 @@ class MariatestSpatialRepoImpl() : MariatestSpatialRepo { override fun deleteById( id: MariatestSpatialId, c: Connection - ): Boolean = Fragment.interpolate(Fragment.lit("delete from `mariatest_spatial` where `id` = "), Fragment.encode(MariatestSpatialId.dbType, id), Fragment.lit("")).update().runUnchecked(c) > 0 + ): Boolean = Fragment.interpolate(Fragment.lit("delete from `mariatest_spatial` where `id` = "), Fragment.encode(MariatestSpatialId.mariaType, id), Fragment.lit("")).update().runUnchecked(c) > 0 override fun deleteByIds( ids: Array, c: Connection ): Int { val fragments: ArrayList = ArrayList() - for (id in ids) { fragments.add(Fragment.encode(MariatestSpatialId.dbType, id)) } + for (id in ids) { fragments.add(Fragment.encode(MariatestSpatialId.mariaType, id)) } return Fragment.interpolate(Fragment.lit("delete from `mariatest_spatial` where `id` in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).update().runUnchecked(c) } @@ -74,14 +74,14 @@ class MariatestSpatialRepoImpl() : MariatestSpatialRepo { override fun selectById( id: MariatestSpatialId, c: Connection - ): MariatestSpatialRow? = Fragment.interpolate(Fragment.lit("select `id`, `geometry_col`, `point_col`, `linestring_col`, `polygon_col`, `multipoint_col`, `multilinestring_col`, `multipolygon_col`, `geometrycollection_col`\nfrom `mariatest_spatial`\nwhere `id` = "), Fragment.encode(MariatestSpatialId.dbType, id), Fragment.lit("")).query(MariatestSpatialRow._rowParser.first()).runUnchecked(c) + ): MariatestSpatialRow? = Fragment.interpolate(Fragment.lit("select `id`, `geometry_col`, `point_col`, `linestring_col`, `polygon_col`, `multipoint_col`, `multilinestring_col`, `multipolygon_col`, `geometrycollection_col`\nfrom `mariatest_spatial`\nwhere `id` = "), Fragment.encode(MariatestSpatialId.mariaType, id), Fragment.lit("")).query(MariatestSpatialRow._rowParser.first()).runUnchecked(c) override fun selectByIds( ids: Array, c: Connection ): List { val fragments: ArrayList = ArrayList() - for (id in ids) { fragments.add(Fragment.encode(MariatestSpatialId.dbType, id)) } + for (id in ids) { fragments.add(Fragment.encode(MariatestSpatialId.mariaType, id)) } return Fragment.interpolate(Fragment.lit("select `id`, `geometry_col`, `point_col`, `linestring_col`, `polygon_col`, `multipoint_col`, `multilinestring_col`, `multipolygon_col`, `geometrycollection_col` from `mariatest_spatial` where `id` in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).query(MariatestSpatialRow._rowParser.all()).runUnchecked(c) } @@ -101,13 +101,13 @@ class MariatestSpatialRepoImpl() : MariatestSpatialRepo { c: Connection ): Boolean { val id: MariatestSpatialId = row.id - return Fragment.interpolate(Fragment.lit("update `mariatest_spatial`\nset `geometry_col` = "), Fragment.encode(MariaTypes.geometry, row.geometryCol), Fragment.lit(",\n`point_col` = "), Fragment.encode(MariaTypes.point, row.pointCol), Fragment.lit(",\n`linestring_col` = "), Fragment.encode(MariaTypes.linestring, row.linestringCol), Fragment.lit(",\n`polygon_col` = "), Fragment.encode(MariaTypes.polygon, row.polygonCol), Fragment.lit(",\n`multipoint_col` = "), Fragment.encode(MariaTypes.multipoint, row.multipointCol), Fragment.lit(",\n`multilinestring_col` = "), Fragment.encode(MariaTypes.multilinestring, row.multilinestringCol), Fragment.lit(",\n`multipolygon_col` = "), Fragment.encode(MariaTypes.multipolygon, row.multipolygonCol), Fragment.lit(",\n`geometrycollection_col` = "), Fragment.encode(MariaTypes.geometrycollection, row.geometrycollectionCol), Fragment.lit("\nwhere `id` = "), Fragment.encode(MariatestSpatialId.dbType, id), Fragment.lit("")).update().runUnchecked(c) > 0 + return Fragment.interpolate(Fragment.lit("update `mariatest_spatial`\nset `geometry_col` = "), Fragment.encode(MariaTypes.geometry, row.geometryCol), Fragment.lit(",\n`point_col` = "), Fragment.encode(MariaTypes.point, row.pointCol), Fragment.lit(",\n`linestring_col` = "), Fragment.encode(MariaTypes.linestring, row.linestringCol), Fragment.lit(",\n`polygon_col` = "), Fragment.encode(MariaTypes.polygon, row.polygonCol), Fragment.lit(",\n`multipoint_col` = "), Fragment.encode(MariaTypes.multipoint, row.multipointCol), Fragment.lit(",\n`multilinestring_col` = "), Fragment.encode(MariaTypes.multilinestring, row.multilinestringCol), Fragment.lit(",\n`multipolygon_col` = "), Fragment.encode(MariaTypes.multipolygon, row.multipolygonCol), Fragment.lit(",\n`geometrycollection_col` = "), Fragment.encode(MariaTypes.geometrycollection, row.geometrycollectionCol), Fragment.lit("\nwhere `id` = "), Fragment.encode(MariatestSpatialId.mariaType, id), Fragment.lit("")).update().runUnchecked(c) > 0 } override fun upsert( unsaved: MariatestSpatialRow, c: Connection - ): MariatestSpatialRow = Fragment.interpolate(Fragment.lit("INSERT INTO `mariatest_spatial`(`id`, `geometry_col`, `point_col`, `linestring_col`, `polygon_col`, `multipoint_col`, `multilinestring_col`, `multipolygon_col`, `geometrycollection_col`)\nVALUES ("), Fragment.encode(MariatestSpatialId.dbType, unsaved.id), Fragment.lit(", "), Fragment.encode(MariaTypes.geometry, unsaved.geometryCol), Fragment.lit(", "), Fragment.encode(MariaTypes.point, unsaved.pointCol), Fragment.lit(", "), Fragment.encode(MariaTypes.linestring, unsaved.linestringCol), Fragment.lit(", "), Fragment.encode(MariaTypes.polygon, unsaved.polygonCol), Fragment.lit(", "), Fragment.encode(MariaTypes.multipoint, unsaved.multipointCol), Fragment.lit(", "), Fragment.encode(MariaTypes.multilinestring, unsaved.multilinestringCol), Fragment.lit(", "), Fragment.encode(MariaTypes.multipolygon, unsaved.multipolygonCol), Fragment.lit(", "), Fragment.encode(MariaTypes.geometrycollection, unsaved.geometrycollectionCol), Fragment.lit(")\nON DUPLICATE KEY UPDATE `geometry_col` = VALUES(`geometry_col`),\n`point_col` = VALUES(`point_col`),\n`linestring_col` = VALUES(`linestring_col`),\n`polygon_col` = VALUES(`polygon_col`),\n`multipoint_col` = VALUES(`multipoint_col`),\n`multilinestring_col` = VALUES(`multilinestring_col`),\n`multipolygon_col` = VALUES(`multipolygon_col`),\n`geometrycollection_col` = VALUES(`geometrycollection_col`)\nRETURNING `id`, `geometry_col`, `point_col`, `linestring_col`, `polygon_col`, `multipoint_col`, `multilinestring_col`, `multipolygon_col`, `geometrycollection_col`")) + ): MariatestSpatialRow = Fragment.interpolate(Fragment.lit("INSERT INTO `mariatest_spatial`(`id`, `geometry_col`, `point_col`, `linestring_col`, `polygon_col`, `multipoint_col`, `multilinestring_col`, `multipolygon_col`, `geometrycollection_col`)\nVALUES ("), Fragment.encode(MariatestSpatialId.mariaType, unsaved.id), Fragment.lit(", "), Fragment.encode(MariaTypes.geometry, unsaved.geometryCol), Fragment.lit(", "), Fragment.encode(MariaTypes.point, unsaved.pointCol), Fragment.lit(", "), Fragment.encode(MariaTypes.linestring, unsaved.linestringCol), Fragment.lit(", "), Fragment.encode(MariaTypes.polygon, unsaved.polygonCol), Fragment.lit(", "), Fragment.encode(MariaTypes.multipoint, unsaved.multipointCol), Fragment.lit(", "), Fragment.encode(MariaTypes.multilinestring, unsaved.multilinestringCol), Fragment.lit(", "), Fragment.encode(MariaTypes.multipolygon, unsaved.multipolygonCol), Fragment.lit(", "), Fragment.encode(MariaTypes.geometrycollection, unsaved.geometrycollectionCol), Fragment.lit(")\nON DUPLICATE KEY UPDATE `geometry_col` = VALUES(`geometry_col`),\n`point_col` = VALUES(`point_col`),\n`linestring_col` = VALUES(`linestring_col`),\n`polygon_col` = VALUES(`polygon_col`),\n`multipoint_col` = VALUES(`multipoint_col`),\n`multilinestring_col` = VALUES(`multilinestring_col`),\n`multipolygon_col` = VALUES(`multipolygon_col`),\n`geometrycollection_col` = VALUES(`geometrycollection_col`)\nRETURNING `id`, `geometry_col`, `point_col`, `linestring_col`, `polygon_col`, `multipoint_col`, `multilinestring_col`, `multipolygon_col`, `geometrycollection_col`")) .updateReturning(MariatestSpatialRow._rowParser.exactlyOne()) .runUnchecked(c) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_spatial/MariatestSpatialRow.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_spatial/MariatestSpatialRow.kt index 50622cedd4..46bdb104a4 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_spatial/MariatestSpatialRow.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_spatial/MariatestSpatialRow.kt @@ -65,6 +65,6 @@ data class MariatestSpatialRow( fun toUnsavedRow(): MariatestSpatialRowUnsaved = MariatestSpatialRowUnsaved(geometryCol, pointCol, linestringCol, polygonCol, multipointCol, multilinestringCol, multipolygonCol, geometrycollectionCol) companion object { - val _rowParser: RowParser = RowParsers.of(MariatestSpatialId.dbType, MariaTypes.geometry, MariaTypes.point, MariaTypes.linestring, MariaTypes.polygon, MariaTypes.multipoint, MariaTypes.multilinestring, MariaTypes.multipolygon, MariaTypes.geometrycollection, { t0, t1, t2, t3, t4, t5, t6, t7, t8 -> MariatestSpatialRow(t0, t1, t2, t3, t4, t5, t6, t7, t8) }, { row -> arrayOf(row.id, row.geometryCol, row.pointCol, row.linestringCol, row.polygonCol, row.multipointCol, row.multilinestringCol, row.multipolygonCol, row.geometrycollectionCol) }) + val _rowParser: RowParser = RowParsers.of(MariatestSpatialId.mariaType, MariaTypes.geometry, MariaTypes.point, MariaTypes.linestring, MariaTypes.polygon, MariaTypes.multipoint, MariaTypes.multilinestring, MariaTypes.multipolygon, MariaTypes.geometrycollection, { t0, t1, t2, t3, t4, t5, t6, t7, t8 -> MariatestSpatialRow(t0, t1, t2, t3, t4, t5, t6, t7, t8) }, { row -> arrayOf(row.id, row.geometryCol, row.pointCol, row.linestringCol, row.polygonCol, row.multipointCol, row.multilinestringCol, row.multipolygonCol, row.geometrycollectionCol) }) } } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_spatial_null/MariatestSpatialNullFields.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_spatial_null/MariatestSpatialNullFields.kt index f43405bc14..a620405fb4 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_spatial_null/MariatestSpatialNullFields.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_spatial_null/MariatestSpatialNullFields.kt @@ -52,7 +52,7 @@ data class MariatestSpatialNullFields(val _path: List) : TupleExpr9 = OptField(_path, "geometrycollection_col", MariatestSpatialNullRow::geometrycollectionCol, null, null, { row, value -> row.copy(geometrycollectionCol = value) }, MariaTypes.geometrycollection) - fun id(): IdField = IdField(_path, "id", MariatestSpatialNullRow::id, null, null, { row, value -> row.copy(id = value) }, MariatestSpatialNullId.dbType) + fun id(): IdField = IdField(_path, "id", MariatestSpatialNullRow::id, null, null, { row, value -> row.copy(id = value) }, MariatestSpatialNullId.mariaType) fun linestringCol(): OptField = OptField(_path, "linestring_col", MariatestSpatialNullRow::linestringCol, null, null, { row, value -> row.copy(linestringCol = value) }, MariaTypes.linestring) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_spatial_null/MariatestSpatialNullId.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_spatial_null/MariatestSpatialNullId.kt index 42011902c7..1ff46c0e74 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_spatial_null/MariatestSpatialNullId.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_spatial_null/MariatestSpatialNullId.kt @@ -20,7 +20,7 @@ data class MariatestSpatialNullId(@field:JsonValue val value: Int) { val bijection: Bijection = Bijection.of(MariatestSpatialNullId::value, ::MariatestSpatialNullId) - val dbType: MariaType = + val mariaType: MariaType = KotlinDbTypes.MariaTypes.int_.bimap(::MariatestSpatialNullId, MariatestSpatialNullId::value) } } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_spatial_null/MariatestSpatialNullRepoImpl.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_spatial_null/MariatestSpatialNullRepoImpl.kt index 0ffc231d07..37c4e86a1f 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_spatial_null/MariatestSpatialNullRepoImpl.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_spatial_null/MariatestSpatialNullRepoImpl.kt @@ -25,14 +25,14 @@ class MariatestSpatialNullRepoImpl() : MariatestSpatialNullRepo { override fun deleteById( id: MariatestSpatialNullId, c: Connection - ): Boolean = Fragment.interpolate(Fragment.lit("delete from `mariatest_spatial_null` where `id` = "), Fragment.encode(MariatestSpatialNullId.dbType, id), Fragment.lit("")).update().runUnchecked(c) > 0 + ): Boolean = Fragment.interpolate(Fragment.lit("delete from `mariatest_spatial_null` where `id` = "), Fragment.encode(MariatestSpatialNullId.mariaType, id), Fragment.lit("")).update().runUnchecked(c) > 0 override fun deleteByIds( ids: Array, c: Connection ): Int { val fragments: ArrayList = ArrayList() - for (id in ids) { fragments.add(Fragment.encode(MariatestSpatialNullId.dbType, id)) } + for (id in ids) { fragments.add(Fragment.encode(MariatestSpatialNullId.mariaType, id)) } return Fragment.interpolate(Fragment.lit("delete from `mariatest_spatial_null` where `id` in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).update().runUnchecked(c) } @@ -99,14 +99,14 @@ class MariatestSpatialNullRepoImpl() : MariatestSpatialNullRepo { override fun selectById( id: MariatestSpatialNullId, c: Connection - ): MariatestSpatialNullRow? = Fragment.interpolate(Fragment.lit("select `id`, `geometry_col`, `point_col`, `linestring_col`, `polygon_col`, `multipoint_col`, `multilinestring_col`, `multipolygon_col`, `geometrycollection_col`\nfrom `mariatest_spatial_null`\nwhere `id` = "), Fragment.encode(MariatestSpatialNullId.dbType, id), Fragment.lit("")).query(MariatestSpatialNullRow._rowParser.first()).runUnchecked(c) + ): MariatestSpatialNullRow? = Fragment.interpolate(Fragment.lit("select `id`, `geometry_col`, `point_col`, `linestring_col`, `polygon_col`, `multipoint_col`, `multilinestring_col`, `multipolygon_col`, `geometrycollection_col`\nfrom `mariatest_spatial_null`\nwhere `id` = "), Fragment.encode(MariatestSpatialNullId.mariaType, id), Fragment.lit("")).query(MariatestSpatialNullRow._rowParser.first()).runUnchecked(c) override fun selectByIds( ids: Array, c: Connection ): List { val fragments: ArrayList = ArrayList() - for (id in ids) { fragments.add(Fragment.encode(MariatestSpatialNullId.dbType, id)) } + for (id in ids) { fragments.add(Fragment.encode(MariatestSpatialNullId.mariaType, id)) } return Fragment.interpolate(Fragment.lit("select `id`, `geometry_col`, `point_col`, `linestring_col`, `polygon_col`, `multipoint_col`, `multilinestring_col`, `multipolygon_col`, `geometrycollection_col` from `mariatest_spatial_null` where `id` in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).query(MariatestSpatialNullRow._rowParser.all()).runUnchecked(c) } @@ -126,13 +126,13 @@ class MariatestSpatialNullRepoImpl() : MariatestSpatialNullRepo { c: Connection ): Boolean { val id: MariatestSpatialNullId = row.id - return Fragment.interpolate(Fragment.lit("update `mariatest_spatial_null`\nset `geometry_col` = "), Fragment.encode(MariaTypes.geometry.nullable(), row.geometryCol), Fragment.lit(",\n`point_col` = "), Fragment.encode(MariaTypes.point.nullable(), row.pointCol), Fragment.lit(",\n`linestring_col` = "), Fragment.encode(MariaTypes.linestring.nullable(), row.linestringCol), Fragment.lit(",\n`polygon_col` = "), Fragment.encode(MariaTypes.polygon.nullable(), row.polygonCol), Fragment.lit(",\n`multipoint_col` = "), Fragment.encode(MariaTypes.multipoint.nullable(), row.multipointCol), Fragment.lit(",\n`multilinestring_col` = "), Fragment.encode(MariaTypes.multilinestring.nullable(), row.multilinestringCol), Fragment.lit(",\n`multipolygon_col` = "), Fragment.encode(MariaTypes.multipolygon.nullable(), row.multipolygonCol), Fragment.lit(",\n`geometrycollection_col` = "), Fragment.encode(MariaTypes.geometrycollection.nullable(), row.geometrycollectionCol), Fragment.lit("\nwhere `id` = "), Fragment.encode(MariatestSpatialNullId.dbType, id), Fragment.lit("")).update().runUnchecked(c) > 0 + return Fragment.interpolate(Fragment.lit("update `mariatest_spatial_null`\nset `geometry_col` = "), Fragment.encode(MariaTypes.geometry.nullable(), row.geometryCol), Fragment.lit(",\n`point_col` = "), Fragment.encode(MariaTypes.point.nullable(), row.pointCol), Fragment.lit(",\n`linestring_col` = "), Fragment.encode(MariaTypes.linestring.nullable(), row.linestringCol), Fragment.lit(",\n`polygon_col` = "), Fragment.encode(MariaTypes.polygon.nullable(), row.polygonCol), Fragment.lit(",\n`multipoint_col` = "), Fragment.encode(MariaTypes.multipoint.nullable(), row.multipointCol), Fragment.lit(",\n`multilinestring_col` = "), Fragment.encode(MariaTypes.multilinestring.nullable(), row.multilinestringCol), Fragment.lit(",\n`multipolygon_col` = "), Fragment.encode(MariaTypes.multipolygon.nullable(), row.multipolygonCol), Fragment.lit(",\n`geometrycollection_col` = "), Fragment.encode(MariaTypes.geometrycollection.nullable(), row.geometrycollectionCol), Fragment.lit("\nwhere `id` = "), Fragment.encode(MariatestSpatialNullId.mariaType, id), Fragment.lit("")).update().runUnchecked(c) > 0 } override fun upsert( unsaved: MariatestSpatialNullRow, c: Connection - ): MariatestSpatialNullRow = Fragment.interpolate(Fragment.lit("INSERT INTO `mariatest_spatial_null`(`id`, `geometry_col`, `point_col`, `linestring_col`, `polygon_col`, `multipoint_col`, `multilinestring_col`, `multipolygon_col`, `geometrycollection_col`)\nVALUES ("), Fragment.encode(MariatestSpatialNullId.dbType, unsaved.id), Fragment.lit(", "), Fragment.encode(MariaTypes.geometry.nullable(), unsaved.geometryCol), Fragment.lit(", "), Fragment.encode(MariaTypes.point.nullable(), unsaved.pointCol), Fragment.lit(", "), Fragment.encode(MariaTypes.linestring.nullable(), unsaved.linestringCol), Fragment.lit(", "), Fragment.encode(MariaTypes.polygon.nullable(), unsaved.polygonCol), Fragment.lit(", "), Fragment.encode(MariaTypes.multipoint.nullable(), unsaved.multipointCol), Fragment.lit(", "), Fragment.encode(MariaTypes.multilinestring.nullable(), unsaved.multilinestringCol), Fragment.lit(", "), Fragment.encode(MariaTypes.multipolygon.nullable(), unsaved.multipolygonCol), Fragment.lit(", "), Fragment.encode(MariaTypes.geometrycollection.nullable(), unsaved.geometrycollectionCol), Fragment.lit(")\nON DUPLICATE KEY UPDATE `geometry_col` = VALUES(`geometry_col`),\n`point_col` = VALUES(`point_col`),\n`linestring_col` = VALUES(`linestring_col`),\n`polygon_col` = VALUES(`polygon_col`),\n`multipoint_col` = VALUES(`multipoint_col`),\n`multilinestring_col` = VALUES(`multilinestring_col`),\n`multipolygon_col` = VALUES(`multipolygon_col`),\n`geometrycollection_col` = VALUES(`geometrycollection_col`)\nRETURNING `id`, `geometry_col`, `point_col`, `linestring_col`, `polygon_col`, `multipoint_col`, `multilinestring_col`, `multipolygon_col`, `geometrycollection_col`")) + ): MariatestSpatialNullRow = Fragment.interpolate(Fragment.lit("INSERT INTO `mariatest_spatial_null`(`id`, `geometry_col`, `point_col`, `linestring_col`, `polygon_col`, `multipoint_col`, `multilinestring_col`, `multipolygon_col`, `geometrycollection_col`)\nVALUES ("), Fragment.encode(MariatestSpatialNullId.mariaType, unsaved.id), Fragment.lit(", "), Fragment.encode(MariaTypes.geometry.nullable(), unsaved.geometryCol), Fragment.lit(", "), Fragment.encode(MariaTypes.point.nullable(), unsaved.pointCol), Fragment.lit(", "), Fragment.encode(MariaTypes.linestring.nullable(), unsaved.linestringCol), Fragment.lit(", "), Fragment.encode(MariaTypes.polygon.nullable(), unsaved.polygonCol), Fragment.lit(", "), Fragment.encode(MariaTypes.multipoint.nullable(), unsaved.multipointCol), Fragment.lit(", "), Fragment.encode(MariaTypes.multilinestring.nullable(), unsaved.multilinestringCol), Fragment.lit(", "), Fragment.encode(MariaTypes.multipolygon.nullable(), unsaved.multipolygonCol), Fragment.lit(", "), Fragment.encode(MariaTypes.geometrycollection.nullable(), unsaved.geometrycollectionCol), Fragment.lit(")\nON DUPLICATE KEY UPDATE `geometry_col` = VALUES(`geometry_col`),\n`point_col` = VALUES(`point_col`),\n`linestring_col` = VALUES(`linestring_col`),\n`polygon_col` = VALUES(`polygon_col`),\n`multipoint_col` = VALUES(`multipoint_col`),\n`multilinestring_col` = VALUES(`multilinestring_col`),\n`multipolygon_col` = VALUES(`multipolygon_col`),\n`geometrycollection_col` = VALUES(`geometrycollection_col`)\nRETURNING `id`, `geometry_col`, `point_col`, `linestring_col`, `polygon_col`, `multipoint_col`, `multilinestring_col`, `multipolygon_col`, `geometrycollection_col`")) .updateReturning(MariatestSpatialNullRow._rowParser.exactlyOne()) .runUnchecked(c) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_spatial_null/MariatestSpatialNullRow.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_spatial_null/MariatestSpatialNullRow.kt index 1a9adc46f5..a2021e3ea9 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_spatial_null/MariatestSpatialNullRow.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_spatial_null/MariatestSpatialNullRow.kt @@ -92,6 +92,6 @@ data class MariatestSpatialNullRow( ): MariatestSpatialNullRowUnsaved = MariatestSpatialNullRowUnsaved(geometryCol, pointCol, linestringCol, polygonCol, multipointCol, multilinestringCol, multipolygonCol, geometrycollectionCol) companion object { - val _rowParser: RowParser = RowParsers.of(MariatestSpatialNullId.dbType, MariaTypes.geometry.nullable(), MariaTypes.point.nullable(), MariaTypes.linestring.nullable(), MariaTypes.polygon.nullable(), MariaTypes.multipoint.nullable(), MariaTypes.multilinestring.nullable(), MariaTypes.multipolygon.nullable(), MariaTypes.geometrycollection.nullable(), { t0, t1, t2, t3, t4, t5, t6, t7, t8 -> MariatestSpatialNullRow(t0, t1, t2, t3, t4, t5, t6, t7, t8) }, { row -> arrayOf(row.id, row.geometryCol, row.pointCol, row.linestringCol, row.polygonCol, row.multipointCol, row.multilinestringCol, row.multipolygonCol, row.geometrycollectionCol) }) + val _rowParser: RowParser = RowParsers.of(MariatestSpatialNullId.mariaType, MariaTypes.geometry.nullable(), MariaTypes.point.nullable(), MariaTypes.linestring.nullable(), MariaTypes.polygon.nullable(), MariaTypes.multipoint.nullable(), MariaTypes.multilinestring.nullable(), MariaTypes.multipolygon.nullable(), MariaTypes.geometrycollection.nullable(), { t0, t1, t2, t3, t4, t5, t6, t7, t8 -> MariatestSpatialNullRow(t0, t1, t2, t3, t4, t5, t6, t7, t8) }, { row -> arrayOf(row.id, row.geometryCol, row.pointCol, row.linestringCol, row.polygonCol, row.multipointCol, row.multilinestringCol, row.multipolygonCol, row.geometrycollectionCol) }) } } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueFields.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueFields.kt index f2888beafc..4268078d0f 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueFields.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueFields.kt @@ -16,11 +16,12 @@ import dev.typr.foundations.kotlin.SqlExpr.Field import dev.typr.foundations.kotlin.SqlExpr.IdField import dev.typr.foundations.kotlin.TupleExpr4 import kotlin.collections.List +import testdb.userdefined.Email -data class MariatestUniqueFields(val _path: List) : TupleExpr4, RelationStructure, FieldsBase { +data class MariatestUniqueFields(val _path: List) : TupleExpr4, RelationStructure, FieldsBase { override fun _1(): SqlExpr = id() - override fun _2(): SqlExpr = email() + override fun _2(): SqlExpr = email() override fun _3(): SqlExpr = code() @@ -34,9 +35,9 @@ data class MariatestUniqueFields(val _path: List) : TupleExpr4> = listOf(this.id().underlying, this.email().underlying, this.code().underlying, this.category().underlying) - fun email(): Field = Field(_path, "email", MariatestUniqueRow::email, null, null, { row, value -> row.copy(email = value) }, MariaTypes.varchar) + fun email(): Field = Field(_path, "email", MariatestUniqueRow::email, null, null, { row, value -> row.copy(email = value) }, Email.mariaType) - fun id(): IdField = IdField(_path, "id", MariatestUniqueRow::id, null, null, { row, value -> row.copy(id = value) }, MariatestUniqueId.dbType) + fun id(): IdField = IdField(_path, "id", MariatestUniqueRow::id, null, null, { row, value -> row.copy(id = value) }, MariatestUniqueId.mariaType) override fun rowParser(): RowParser = MariatestUniqueRow._rowParser.underlying diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueId.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueId.kt index 70c4ba0d87..0a25a0310e 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueId.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueId.kt @@ -20,7 +20,7 @@ data class MariatestUniqueId(@field:JsonValue val value: Int) { val bijection: Bijection = Bijection.of(MariatestUniqueId::value, ::MariatestUniqueId) - val dbType: MariaType = + val mariaType: MariaType = KotlinDbTypes.MariaTypes.int_.bimap(::MariatestUniqueId, MariatestUniqueId::value) } } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueRepo.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueRepo.kt index f7be6c089c..da80c6fc70 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueRepo.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueRepo.kt @@ -12,6 +12,7 @@ import java.sql.Connection import kotlin.collections.Iterator import kotlin.collections.List import kotlin.collections.Map +import testdb.userdefined.Email interface MariatestUniqueRepo { abstract fun delete(): DeleteBuilder @@ -62,7 +63,7 @@ interface MariatestUniqueRepo { ): MariatestUniqueRow? abstract fun selectByUniqueEmail( - email: String, + email: /* user-picked */ Email, c: Connection ): MariatestUniqueRow? diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueRepoImpl.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueRepoImpl.kt index 1ecf1e154f..30b75aa3fd 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueRepoImpl.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueRepoImpl.kt @@ -17,6 +17,7 @@ import kotlin.collections.Iterator import kotlin.collections.List import kotlin.collections.Map import kotlin.collections.MutableMap +import testdb.userdefined.Email class MariatestUniqueRepoImpl() : MariatestUniqueRepo { override fun delete(): DeleteBuilder = DeleteBuilder.of("`mariatest_unique`", MariatestUniqueFields.structure, Dialect.MARIADB) @@ -24,21 +25,21 @@ class MariatestUniqueRepoImpl() : MariatestUniqueRepo { override fun deleteById( id: MariatestUniqueId, c: Connection - ): Boolean = Fragment.interpolate(Fragment.lit("delete from `mariatest_unique` where `id` = "), Fragment.encode(MariatestUniqueId.dbType, id), Fragment.lit("")).update().runUnchecked(c) > 0 + ): Boolean = Fragment.interpolate(Fragment.lit("delete from `mariatest_unique` where `id` = "), Fragment.encode(MariatestUniqueId.mariaType, id), Fragment.lit("")).update().runUnchecked(c) > 0 override fun deleteByIds( ids: Array, c: Connection ): Int { val fragments: ArrayList = ArrayList() - for (id in ids) { fragments.add(Fragment.encode(MariatestUniqueId.dbType, id)) } + for (id in ids) { fragments.add(Fragment.encode(MariatestUniqueId.mariaType, id)) } return Fragment.interpolate(Fragment.lit("delete from `mariatest_unique` where `id` in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).update().runUnchecked(c) } override fun insert( unsaved: MariatestUniqueRow, c: Connection - ): MariatestUniqueRow = Fragment.interpolate(Fragment.lit("insert into `mariatest_unique`(`email`, `code`, `category`)\nvalues ("), Fragment.encode(MariaTypes.varchar, unsaved.email), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.code), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.category), Fragment.lit(")\nRETURNING `id`, `email`, `code`, `category`\n")) + ): MariatestUniqueRow = Fragment.interpolate(Fragment.lit("insert into `mariatest_unique`(`email`, `code`, `category`)\nvalues ("), Fragment.encode(Email.mariaType, unsaved.email), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.code), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.category), Fragment.lit(")\nRETURNING `id`, `email`, `code`, `category`\n")) .updateReturning(MariatestUniqueRow._rowParser.exactlyOne()).runUnchecked(c) override fun insert( @@ -48,7 +49,7 @@ class MariatestUniqueRepoImpl() : MariatestUniqueRepo { val columns: ArrayList = ArrayList() val values: ArrayList = ArrayList() columns.add(Fragment.lit("`email`")) - values.add(Fragment.interpolate(Fragment.encode(MariaTypes.varchar, unsaved.email), Fragment.lit(""))) + values.add(Fragment.interpolate(Fragment.encode(Email.mariaType, unsaved.email), Fragment.lit(""))) columns.add(Fragment.lit("`code`")) values.add(Fragment.interpolate(Fragment.encode(MariaTypes.varchar, unsaved.code), Fragment.lit(""))) columns.add(Fragment.lit("`category`")) @@ -64,14 +65,14 @@ class MariatestUniqueRepoImpl() : MariatestUniqueRepo { override fun selectById( id: MariatestUniqueId, c: Connection - ): MariatestUniqueRow? = Fragment.interpolate(Fragment.lit("select `id`, `email`, `code`, `category`\nfrom `mariatest_unique`\nwhere `id` = "), Fragment.encode(MariatestUniqueId.dbType, id), Fragment.lit("")).query(MariatestUniqueRow._rowParser.first()).runUnchecked(c) + ): MariatestUniqueRow? = Fragment.interpolate(Fragment.lit("select `id`, `email`, `code`, `category`\nfrom `mariatest_unique`\nwhere `id` = "), Fragment.encode(MariatestUniqueId.mariaType, id), Fragment.lit("")).query(MariatestUniqueRow._rowParser.first()).runUnchecked(c) override fun selectByIds( ids: Array, c: Connection ): List { val fragments: ArrayList = ArrayList() - for (id in ids) { fragments.add(Fragment.encode(MariatestUniqueId.dbType, id)) } + for (id in ids) { fragments.add(Fragment.encode(MariatestUniqueId.mariaType, id)) } return Fragment.interpolate(Fragment.lit("select `id`, `email`, `code`, `category` from `mariatest_unique` where `id` in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).query(MariatestUniqueRow._rowParser.all()).runUnchecked(c) } @@ -91,9 +92,9 @@ class MariatestUniqueRepoImpl() : MariatestUniqueRepo { ): MariatestUniqueRow? = Fragment.interpolate(Fragment.lit("select `id`, `email`, `code`, `category`\nfrom `mariatest_unique`\nwhere `code` = "), Fragment.encode(MariaTypes.varchar, code), Fragment.lit(" AND `category` = "), Fragment.encode(MariaTypes.varchar, category), Fragment.lit("\n")).query(MariatestUniqueRow._rowParser.first()).runUnchecked(c) override fun selectByUniqueEmail( - email: String, + email: /* user-picked */ Email, c: Connection - ): MariatestUniqueRow? = Fragment.interpolate(Fragment.lit("select `id`, `email`, `code`, `category`\nfrom `mariatest_unique`\nwhere `email` = "), Fragment.encode(MariaTypes.varchar, email), Fragment.lit("\n")).query(MariatestUniqueRow._rowParser.first()).runUnchecked(c) + ): MariatestUniqueRow? = Fragment.interpolate(Fragment.lit("select `id`, `email`, `code`, `category`\nfrom `mariatest_unique`\nwhere `email` = "), Fragment.encode(Email.mariaType, email), Fragment.lit("\n")).query(MariatestUniqueRow._rowParser.first()).runUnchecked(c) override fun update(): UpdateBuilder = UpdateBuilder.of("`mariatest_unique`", MariatestUniqueFields.structure, MariatestUniqueRow._rowParser, Dialect.MARIADB) @@ -102,13 +103,13 @@ class MariatestUniqueRepoImpl() : MariatestUniqueRepo { c: Connection ): Boolean { val id: MariatestUniqueId = row.id - return Fragment.interpolate(Fragment.lit("update `mariatest_unique`\nset `email` = "), Fragment.encode(MariaTypes.varchar, row.email), Fragment.lit(",\n`code` = "), Fragment.encode(MariaTypes.varchar, row.code), Fragment.lit(",\n`category` = "), Fragment.encode(MariaTypes.varchar, row.category), Fragment.lit("\nwhere `id` = "), Fragment.encode(MariatestUniqueId.dbType, id), Fragment.lit("")).update().runUnchecked(c) > 0 + return Fragment.interpolate(Fragment.lit("update `mariatest_unique`\nset `email` = "), Fragment.encode(Email.mariaType, row.email), Fragment.lit(",\n`code` = "), Fragment.encode(MariaTypes.varchar, row.code), Fragment.lit(",\n`category` = "), Fragment.encode(MariaTypes.varchar, row.category), Fragment.lit("\nwhere `id` = "), Fragment.encode(MariatestUniqueId.mariaType, id), Fragment.lit("")).update().runUnchecked(c) > 0 } override fun upsert( unsaved: MariatestUniqueRow, c: Connection - ): MariatestUniqueRow = Fragment.interpolate(Fragment.lit("INSERT INTO `mariatest_unique`(`id`, `email`, `code`, `category`)\nVALUES ("), Fragment.encode(MariatestUniqueId.dbType, unsaved.id), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.email), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.code), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.category), Fragment.lit(")\nON DUPLICATE KEY UPDATE `email` = VALUES(`email`),\n`code` = VALUES(`code`),\n`category` = VALUES(`category`)\nRETURNING `id`, `email`, `code`, `category`")) + ): MariatestUniqueRow = Fragment.interpolate(Fragment.lit("INSERT INTO `mariatest_unique`(`id`, `email`, `code`, `category`)\nVALUES ("), Fragment.encode(MariatestUniqueId.mariaType, unsaved.id), Fragment.lit(", "), Fragment.encode(Email.mariaType, unsaved.email), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.code), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.category), Fragment.lit(")\nON DUPLICATE KEY UPDATE `email` = VALUES(`email`),\n`code` = VALUES(`code`),\n`category` = VALUES(`category`)\nRETURNING `id`, `email`, `code`, `category`")) .updateReturning(MariatestUniqueRow._rowParser.exactlyOne()) .runUnchecked(c) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueRepoMock.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueRepoMock.kt index 21bdba2f6b..0849119581 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueRepoMock.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueRepoMock.kt @@ -21,6 +21,7 @@ import kotlin.collections.Iterator import kotlin.collections.List import kotlin.collections.Map import kotlin.collections.MutableMap +import testdb.userdefined.Email data class MariatestUniqueRepoMock( val toRow: (MariatestUniqueRowUnsaved) -> MariatestUniqueRow, @@ -97,7 +98,7 @@ data class MariatestUniqueRepoMock( ): MariatestUniqueRow? = map.values.toList().find({ v -> (code == v.code) && (category == v.category) }) override fun selectByUniqueEmail( - email: String, + email: /* user-picked */ Email, c: Connection ): MariatestUniqueRow? = map.values.toList().find({ v -> (email == v.email) }) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueRow.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueRow.kt index d5b8a72636..cf42e34c2b 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueRow.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueRow.kt @@ -9,6 +9,7 @@ import dev.typr.foundations.MariaTypes import dev.typr.foundations.Tuple.Tuple4 import dev.typr.foundations.kotlin.RowParser import dev.typr.foundations.kotlin.RowParsers +import testdb.userdefined.Email /** Table: mariatest_unique * Primary key: id @@ -19,15 +20,15 @@ data class MariatestUniqueRow( */ val id: MariatestUniqueId, /** */ - val email: String, + val email: /* user-picked */ Email, /** */ val code: String, /** */ val category: String -) : Tuple4 { +) : Tuple4 { override fun _1(): MariatestUniqueId = id - override fun _2(): String = email + override fun _2(): /* user-picked */ Email = email override fun _3(): String = code @@ -36,6 +37,6 @@ data class MariatestUniqueRow( fun toUnsavedRow(): MariatestUniqueRowUnsaved = MariatestUniqueRowUnsaved(email, code, category) companion object { - val _rowParser: RowParser = RowParsers.of(MariatestUniqueId.dbType, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.varchar, { t0, t1, t2, t3 -> MariatestUniqueRow(t0, t1, t2, t3) }, { row -> arrayOf(row.id, row.email, row.code, row.category) }) + val _rowParser: RowParser = RowParsers.of(MariatestUniqueId.mariaType, Email.mariaType, MariaTypes.varchar, MariaTypes.varchar, { t0, t1, t2, t3 -> MariatestUniqueRow(t0, t1, t2, t3) }, { row -> arrayOf(row.id, row.email, row.code, row.category) }) } } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueRowUnsaved.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueRowUnsaved.kt index 34601744f6..ce0e592cb5 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueRowUnsaved.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueRowUnsaved.kt @@ -5,12 +5,12 @@ */ package testdb.mariatest_unique - +import testdb.userdefined.Email /** This class corresponds to a row in table `mariatest_unique` which has not been persisted yet */ data class MariatestUniqueRowUnsaved( /** */ - val email: String, + val email: /* user-picked */ Email, /** */ val code: String, /** */ diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatestnull/MariatestnullFields.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatestnull/MariatestnullFields.kt index fe9872674c..156df7b104 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatestnull/MariatestnullFields.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatestnull/MariatestnullFields.kt @@ -171,7 +171,7 @@ data class MariatestnullFields(val _path: List) : TupleExpr41 = MariatestnullRow._rowParser.underlying - fun setCol(): OptField = OptField(_path, "set_col", MariatestnullRow::setCol, null, null, { row, value -> row.copy(setCol = value) }, XYZSet.dbType) + fun setCol(): OptField = OptField(_path, "set_col", MariatestnullRow::setCol, null, null, { row, value -> row.copy(setCol = value) }, XYZSet.mariaType) fun smallintCol(): OptField = OptField(_path, "smallint_col", MariatestnullRow::smallintCol, null, null, { row, value -> row.copy(smallintCol = value) }, KotlinDbTypes.MariaTypes.smallint) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatestnull/MariatestnullRepoImpl.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatestnull/MariatestnullRepoImpl.kt index 32ddf9b58e..b069110bdd 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatestnull/MariatestnullRepoImpl.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatestnull/MariatestnullRepoImpl.kt @@ -24,7 +24,7 @@ class MariatestnullRepoImpl() : MariatestnullRepo { override fun insert( unsaved: MariatestnullRow, c: Connection - ): MariatestnullRow = Fragment.interpolate(Fragment.lit("insert into `mariatestnull`(`tinyint_col`, `smallint_col`, `mediumint_col`, `int_col`, `bigint_col`, `tinyint_u_col`, `smallint_u_col`, `mediumint_u_col`, `int_u_col`, `bigint_u_col`, `decimal_col`, `numeric_col`, `float_col`, `double_col`, `bool_col`, `bit_col`, `bit1_col`, `char_col`, `varchar_col`, `tinytext_col`, `text_col`, `mediumtext_col`, `longtext_col`, `binary_col`, `varbinary_col`, `tinyblob_col`, `blob_col`, `mediumblob_col`, `longblob_col`, `date_col`, `time_col`, `time_fsp_col`, `datetime_col`, `datetime_fsp_col`, `timestamp_col`, `timestamp_fsp_col`, `year_col`, `set_col`, `json_col`, `inet4_col`, `inet6_col`)\nvalues ("), Fragment.encode(KotlinDbTypes.MariaTypes.tinyint.nullable(), unsaved.tinyintCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.smallint.nullable(), unsaved.smallintCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.mediumint.nullable(), unsaved.mediumintCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.int_.nullable(), unsaved.intCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.bigint.nullable(), unsaved.bigintCol), Fragment.lit(", "), Fragment.encode(MariaTypes.tinyintUnsigned.nullable(), unsaved.tinyintUCol), Fragment.lit(", "), Fragment.encode(MariaTypes.smallintUnsigned.nullable(), unsaved.smallintUCol), Fragment.lit(", "), Fragment.encode(MariaTypes.mediumintUnsigned.nullable(), unsaved.mediumintUCol), Fragment.lit(", "), Fragment.encode(MariaTypes.intUnsigned.nullable(), unsaved.intUCol), Fragment.lit(", "), Fragment.encode(MariaTypes.bigintUnsigned.nullable(), unsaved.bigintUCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric.nullable(), unsaved.decimalCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric.nullable(), unsaved.numericCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.float_.nullable(), unsaved.floatCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.double_.nullable(), unsaved.doubleCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.bool.nullable(), unsaved.boolCol), Fragment.lit(", "), Fragment.encode(MariaTypes.bit.nullable(), unsaved.bitCol), Fragment.lit(", "), Fragment.encode(MariaTypes.bit.nullable(), unsaved.bit1Col), Fragment.lit(", "), Fragment.encode(MariaTypes.char_.nullable(), unsaved.charCol), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.varcharCol), Fragment.lit(", "), Fragment.encode(MariaTypes.tinytext.nullable(), unsaved.tinytextCol), Fragment.lit(", "), Fragment.encode(MariaTypes.text.nullable(), unsaved.textCol), Fragment.lit(", "), Fragment.encode(MariaTypes.mediumtext.nullable(), unsaved.mediumtextCol), Fragment.lit(", "), Fragment.encode(MariaTypes.longtext.nullable(), unsaved.longtextCol), Fragment.lit(", "), Fragment.encode(MariaTypes.binary.nullable(), unsaved.binaryCol), Fragment.lit(", "), Fragment.encode(MariaTypes.varbinary.nullable(), unsaved.varbinaryCol), Fragment.lit(", "), Fragment.encode(MariaTypes.tinyblob.nullable(), unsaved.tinyblobCol), Fragment.lit(", "), Fragment.encode(MariaTypes.blob.nullable(), unsaved.blobCol), Fragment.lit(", "), Fragment.encode(MariaTypes.mediumblob.nullable(), unsaved.mediumblobCol), Fragment.lit(", "), Fragment.encode(MariaTypes.longblob.nullable(), unsaved.longblobCol), Fragment.lit(", "), Fragment.encode(MariaTypes.date.nullable(), unsaved.dateCol), Fragment.lit(", "), Fragment.encode(MariaTypes.time.nullable(), unsaved.timeCol), Fragment.lit(", "), Fragment.encode(MariaTypes.time.nullable(), unsaved.timeFspCol), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime.nullable(), unsaved.datetimeCol), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime.nullable(), unsaved.datetimeFspCol), Fragment.lit(", "), Fragment.encode(MariaTypes.timestamp.nullable(), unsaved.timestampCol), Fragment.lit(", "), Fragment.encode(MariaTypes.timestamp.nullable(), unsaved.timestampFspCol), Fragment.lit(", "), Fragment.encode(MariaTypes.year.nullable(), unsaved.yearCol), Fragment.lit(", "), Fragment.encode(XYZSet.dbType.nullable(), unsaved.setCol), Fragment.lit(", "), Fragment.encode(MariaTypes.json.nullable(), unsaved.jsonCol), Fragment.lit(", "), Fragment.encode(MariaTypes.inet4.nullable(), unsaved.inet4Col), Fragment.lit(", "), Fragment.encode(MariaTypes.inet6.nullable(), unsaved.inet6Col), Fragment.lit(")\nRETURNING `tinyint_col`, `smallint_col`, `mediumint_col`, `int_col`, `bigint_col`, `tinyint_u_col`, `smallint_u_col`, `mediumint_u_col`, `int_u_col`, `bigint_u_col`, `decimal_col`, `numeric_col`, `float_col`, `double_col`, `bool_col`, `bit_col`, `bit1_col`, `char_col`, `varchar_col`, `tinytext_col`, `text_col`, `mediumtext_col`, `longtext_col`, `binary_col`, `varbinary_col`, `tinyblob_col`, `blob_col`, `mediumblob_col`, `longblob_col`, `date_col`, `time_col`, `time_fsp_col`, `datetime_col`, `datetime_fsp_col`, `timestamp_col`, `timestamp_fsp_col`, `year_col`, `set_col`, `json_col`, `inet4_col`, `inet6_col`\n")) + ): MariatestnullRow = Fragment.interpolate(Fragment.lit("insert into `mariatestnull`(`tinyint_col`, `smallint_col`, `mediumint_col`, `int_col`, `bigint_col`, `tinyint_u_col`, `smallint_u_col`, `mediumint_u_col`, `int_u_col`, `bigint_u_col`, `decimal_col`, `numeric_col`, `float_col`, `double_col`, `bool_col`, `bit_col`, `bit1_col`, `char_col`, `varchar_col`, `tinytext_col`, `text_col`, `mediumtext_col`, `longtext_col`, `binary_col`, `varbinary_col`, `tinyblob_col`, `blob_col`, `mediumblob_col`, `longblob_col`, `date_col`, `time_col`, `time_fsp_col`, `datetime_col`, `datetime_fsp_col`, `timestamp_col`, `timestamp_fsp_col`, `year_col`, `set_col`, `json_col`, `inet4_col`, `inet6_col`)\nvalues ("), Fragment.encode(KotlinDbTypes.MariaTypes.tinyint.nullable(), unsaved.tinyintCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.smallint.nullable(), unsaved.smallintCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.mediumint.nullable(), unsaved.mediumintCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.int_.nullable(), unsaved.intCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.bigint.nullable(), unsaved.bigintCol), Fragment.lit(", "), Fragment.encode(MariaTypes.tinyintUnsigned.nullable(), unsaved.tinyintUCol), Fragment.lit(", "), Fragment.encode(MariaTypes.smallintUnsigned.nullable(), unsaved.smallintUCol), Fragment.lit(", "), Fragment.encode(MariaTypes.mediumintUnsigned.nullable(), unsaved.mediumintUCol), Fragment.lit(", "), Fragment.encode(MariaTypes.intUnsigned.nullable(), unsaved.intUCol), Fragment.lit(", "), Fragment.encode(MariaTypes.bigintUnsigned.nullable(), unsaved.bigintUCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric.nullable(), unsaved.decimalCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric.nullable(), unsaved.numericCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.float_.nullable(), unsaved.floatCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.double_.nullable(), unsaved.doubleCol), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.bool.nullable(), unsaved.boolCol), Fragment.lit(", "), Fragment.encode(MariaTypes.bit.nullable(), unsaved.bitCol), Fragment.lit(", "), Fragment.encode(MariaTypes.bit.nullable(), unsaved.bit1Col), Fragment.lit(", "), Fragment.encode(MariaTypes.char_.nullable(), unsaved.charCol), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.varcharCol), Fragment.lit(", "), Fragment.encode(MariaTypes.tinytext.nullable(), unsaved.tinytextCol), Fragment.lit(", "), Fragment.encode(MariaTypes.text.nullable(), unsaved.textCol), Fragment.lit(", "), Fragment.encode(MariaTypes.mediumtext.nullable(), unsaved.mediumtextCol), Fragment.lit(", "), Fragment.encode(MariaTypes.longtext.nullable(), unsaved.longtextCol), Fragment.lit(", "), Fragment.encode(MariaTypes.binary.nullable(), unsaved.binaryCol), Fragment.lit(", "), Fragment.encode(MariaTypes.varbinary.nullable(), unsaved.varbinaryCol), Fragment.lit(", "), Fragment.encode(MariaTypes.tinyblob.nullable(), unsaved.tinyblobCol), Fragment.lit(", "), Fragment.encode(MariaTypes.blob.nullable(), unsaved.blobCol), Fragment.lit(", "), Fragment.encode(MariaTypes.mediumblob.nullable(), unsaved.mediumblobCol), Fragment.lit(", "), Fragment.encode(MariaTypes.longblob.nullable(), unsaved.longblobCol), Fragment.lit(", "), Fragment.encode(MariaTypes.date.nullable(), unsaved.dateCol), Fragment.lit(", "), Fragment.encode(MariaTypes.time.nullable(), unsaved.timeCol), Fragment.lit(", "), Fragment.encode(MariaTypes.time.nullable(), unsaved.timeFspCol), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime.nullable(), unsaved.datetimeCol), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime.nullable(), unsaved.datetimeFspCol), Fragment.lit(", "), Fragment.encode(MariaTypes.timestamp.nullable(), unsaved.timestampCol), Fragment.lit(", "), Fragment.encode(MariaTypes.timestamp.nullable(), unsaved.timestampFspCol), Fragment.lit(", "), Fragment.encode(MariaTypes.year.nullable(), unsaved.yearCol), Fragment.lit(", "), Fragment.encode(XYZSet.mariaType.nullable(), unsaved.setCol), Fragment.lit(", "), Fragment.encode(MariaTypes.json.nullable(), unsaved.jsonCol), Fragment.lit(", "), Fragment.encode(MariaTypes.inet4.nullable(), unsaved.inet4Col), Fragment.lit(", "), Fragment.encode(MariaTypes.inet6.nullable(), unsaved.inet6Col), Fragment.lit(")\nRETURNING `tinyint_col`, `smallint_col`, `mediumint_col`, `int_col`, `bigint_col`, `tinyint_u_col`, `smallint_u_col`, `mediumint_u_col`, `int_u_col`, `bigint_u_col`, `decimal_col`, `numeric_col`, `float_col`, `double_col`, `bool_col`, `bit_col`, `bit1_col`, `char_col`, `varchar_col`, `tinytext_col`, `text_col`, `mediumtext_col`, `longtext_col`, `binary_col`, `varbinary_col`, `tinyblob_col`, `blob_col`, `mediumblob_col`, `longblob_col`, `date_col`, `time_col`, `time_fsp_col`, `datetime_col`, `datetime_fsp_col`, `timestamp_col`, `timestamp_fsp_col`, `year_col`, `set_col`, `json_col`, `inet4_col`, `inet6_col`\n")) .updateReturning(MariatestnullRow._rowParser.exactlyOne()).runUnchecked(c) override fun insert( @@ -221,7 +221,7 @@ class MariatestnullRepoImpl() : MariatestnullRepo { unsaved.setCol.visit( { }, { value -> columns.add(Fragment.lit("`set_col`")) - values.add(Fragment.interpolate(Fragment.encode(XYZSet.dbType.nullable(), value), Fragment.lit(""))) } + values.add(Fragment.interpolate(Fragment.encode(XYZSet.mariaType.nullable(), value), Fragment.lit(""))) } ); unsaved.jsonCol.visit( { }, diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatestnull/MariatestnullRow.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatestnull/MariatestnullRow.kt index ef1153c9c4..6056ffd573 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatestnull/MariatestnullRow.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/mariatestnull/MariatestnullRow.kt @@ -323,6 +323,6 @@ data class MariatestnullRow( ): MariatestnullRowUnsaved = MariatestnullRowUnsaved(tinyintCol, smallintCol, mediumintCol, intCol, bigintCol, tinyintUCol, smallintUCol, mediumintUCol, intUCol, bigintUCol, decimalCol, numericCol, floatCol, doubleCol, boolCol, bitCol, bit1Col, charCol, varcharCol, tinytextCol, textCol, mediumtextCol, longtextCol, binaryCol, varbinaryCol, tinyblobCol, blobCol, mediumblobCol, longblobCol, dateCol, timeCol, timeFspCol, datetimeCol, datetimeFspCol, timestampCol, timestampFspCol, yearCol, setCol, jsonCol, inet4Col, inet6Col) companion object { - val _rowParser: RowParser = RowParsers.of(KotlinDbTypes.MariaTypes.tinyint.nullable(), KotlinDbTypes.MariaTypes.smallint.nullable(), KotlinDbTypes.MariaTypes.mediumint.nullable(), KotlinDbTypes.MariaTypes.int_.nullable(), KotlinDbTypes.MariaTypes.bigint.nullable(), MariaTypes.tinyintUnsigned.nullable(), MariaTypes.smallintUnsigned.nullable(), MariaTypes.mediumintUnsigned.nullable(), MariaTypes.intUnsigned.nullable(), MariaTypes.bigintUnsigned.nullable(), KotlinDbTypes.MariaTypes.numeric.nullable(), KotlinDbTypes.MariaTypes.numeric.nullable(), KotlinDbTypes.MariaTypes.float_.nullable(), KotlinDbTypes.MariaTypes.double_.nullable(), KotlinDbTypes.MariaTypes.bool.nullable(), MariaTypes.bit.nullable(), MariaTypes.bit.nullable(), MariaTypes.char_.nullable(), MariaTypes.varchar.nullable(), MariaTypes.tinytext.nullable(), MariaTypes.text.nullable(), MariaTypes.mediumtext.nullable(), MariaTypes.longtext.nullable(), MariaTypes.binary.nullable(), MariaTypes.varbinary.nullable(), MariaTypes.tinyblob.nullable(), MariaTypes.blob.nullable(), MariaTypes.mediumblob.nullable(), MariaTypes.longblob.nullable(), MariaTypes.date.nullable(), MariaTypes.time.nullable(), MariaTypes.time.nullable(), MariaTypes.datetime.nullable(), MariaTypes.datetime.nullable(), MariaTypes.timestamp.nullable(), MariaTypes.timestamp.nullable(), MariaTypes.year.nullable(), XYZSet.dbType.nullable(), MariaTypes.json.nullable(), MariaTypes.inet4.nullable(), MariaTypes.inet6.nullable(), { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40 -> MariatestnullRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40) }, { row -> arrayOf(row.tinyintCol, row.smallintCol, row.mediumintCol, row.intCol, row.bigintCol, row.tinyintUCol, row.smallintUCol, row.mediumintUCol, row.intUCol, row.bigintUCol, row.decimalCol, row.numericCol, row.floatCol, row.doubleCol, row.boolCol, row.bitCol, row.bit1Col, row.charCol, row.varcharCol, row.tinytextCol, row.textCol, row.mediumtextCol, row.longtextCol, row.binaryCol, row.varbinaryCol, row.tinyblobCol, row.blobCol, row.mediumblobCol, row.longblobCol, row.dateCol, row.timeCol, row.timeFspCol, row.datetimeCol, row.datetimeFspCol, row.timestampCol, row.timestampFspCol, row.yearCol, row.setCol, row.jsonCol, row.inet4Col, row.inet6Col) }) + val _rowParser: RowParser = RowParsers.of(KotlinDbTypes.MariaTypes.tinyint.nullable(), KotlinDbTypes.MariaTypes.smallint.nullable(), KotlinDbTypes.MariaTypes.mediumint.nullable(), KotlinDbTypes.MariaTypes.int_.nullable(), KotlinDbTypes.MariaTypes.bigint.nullable(), MariaTypes.tinyintUnsigned.nullable(), MariaTypes.smallintUnsigned.nullable(), MariaTypes.mediumintUnsigned.nullable(), MariaTypes.intUnsigned.nullable(), MariaTypes.bigintUnsigned.nullable(), KotlinDbTypes.MariaTypes.numeric.nullable(), KotlinDbTypes.MariaTypes.numeric.nullable(), KotlinDbTypes.MariaTypes.float_.nullable(), KotlinDbTypes.MariaTypes.double_.nullable(), KotlinDbTypes.MariaTypes.bool.nullable(), MariaTypes.bit.nullable(), MariaTypes.bit.nullable(), MariaTypes.char_.nullable(), MariaTypes.varchar.nullable(), MariaTypes.tinytext.nullable(), MariaTypes.text.nullable(), MariaTypes.mediumtext.nullable(), MariaTypes.longtext.nullable(), MariaTypes.binary.nullable(), MariaTypes.varbinary.nullable(), MariaTypes.tinyblob.nullable(), MariaTypes.blob.nullable(), MariaTypes.mediumblob.nullable(), MariaTypes.longblob.nullable(), MariaTypes.date.nullable(), MariaTypes.time.nullable(), MariaTypes.time.nullable(), MariaTypes.datetime.nullable(), MariaTypes.datetime.nullable(), MariaTypes.timestamp.nullable(), MariaTypes.timestamp.nullable(), MariaTypes.year.nullable(), XYZSet.mariaType.nullable(), MariaTypes.json.nullable(), MariaTypes.inet4.nullable(), MariaTypes.inet6.nullable(), { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40 -> MariatestnullRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40) }, { row -> arrayOf(row.tinyintCol, row.smallintCol, row.mediumintCol, row.intCol, row.bigintCol, row.tinyintUCol, row.smallintUCol, row.mediumintUCol, row.intUCol, row.bigintUCol, row.decimalCol, row.numericCol, row.floatCol, row.doubleCol, row.boolCol, row.bitCol, row.bit1Col, row.charCol, row.varcharCol, row.tinytextCol, row.textCol, row.mediumtextCol, row.longtextCol, row.binaryCol, row.varbinaryCol, row.tinyblobCol, row.blobCol, row.mediumblobCol, row.longblobCol, row.dateCol, row.timeCol, row.timeFspCol, row.datetimeCol, row.datetimeFspCol, row.timestampCol, row.timestampFspCol, row.yearCol, row.setCol, row.jsonCol, row.inet4Col, row.inet6Col) }) } } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/order_details/OrderDetailsSqlRepoImpl.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/order_details/OrderDetailsSqlRepoImpl.kt index 4ac3933e70..5c885632e2 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/order_details/OrderDetailsSqlRepoImpl.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/order_details/OrderDetailsSqlRepoImpl.kt @@ -14,5 +14,5 @@ class OrderDetailsSqlRepoImpl() : OrderDetailsSqlRepo { override fun apply( orderId: /* user-picked */ OrdersId, c: Connection - ): List = Fragment.interpolate(Fragment.lit("-- Get order with all items\nSELECT o.order_id,\n o.order_number,\n o.order_status,\n o.payment_status,\n o.subtotal,\n o.shipping_cost,\n o.tax_amount,\n o.discount_amount,\n o.total_amount,\n o.ordered_at,\n oi.item_id,\n oi.product_id,\n oi.sku,\n oi.product_name,\n oi.quantity,\n oi.unit_price,\n oi.line_total\nFROM orders o\nJOIN order_items oi ON o.order_id = oi.order_id\nWHERE o.order_id = "), Fragment.encode(OrdersId.dbType, orderId), Fragment.lit("\n")).query(OrderDetailsSqlRow._rowParser.all()).runUnchecked(c) + ): List = Fragment.interpolate(Fragment.lit("-- Get order with all items\nSELECT o.order_id,\n o.order_number,\n o.order_status,\n o.payment_status,\n o.subtotal,\n o.shipping_cost,\n o.tax_amount,\n o.discount_amount,\n o.total_amount,\n o.ordered_at,\n oi.item_id,\n oi.product_id,\n oi.sku,\n oi.product_name,\n oi.quantity,\n oi.unit_price,\n oi.line_total\nFROM orders o\nJOIN order_items oi ON o.order_id = oi.order_id\nWHERE o.order_id = "), Fragment.encode(OrdersId.mariaType, orderId), Fragment.lit("\n")).query(OrderDetailsSqlRow._rowParser.all()).runUnchecked(c) } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/order_details/OrderDetailsSqlRow.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/order_details/OrderDetailsSqlRow.kt index a4a831644d..1d1e5b680b 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/order_details/OrderDetailsSqlRow.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/order_details/OrderDetailsSqlRow.kt @@ -90,6 +90,6 @@ data class OrderDetailsSqlRow( override fun _9(): BigDecimal = totalAmount companion object { - val _rowParser: RowParser = RowParsers.of(OrdersId.dbType, MariaTypes.varchar, MariaTypes.text, MariaTypes.text, KotlinDbTypes.MariaTypes.numeric, KotlinDbTypes.MariaTypes.numeric, KotlinDbTypes.MariaTypes.numeric, KotlinDbTypes.MariaTypes.numeric, KotlinDbTypes.MariaTypes.numeric, MariaTypes.datetime, OrderItemsId.dbType, ProductsId.dbType, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.smallintUnsigned, KotlinDbTypes.MariaTypes.numeric, KotlinDbTypes.MariaTypes.numeric, { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16 -> OrderDetailsSqlRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16) }, { row -> arrayOf(row.orderId, row.orderNumber, row.orderStatus, row.paymentStatus, row.subtotal, row.shippingCost, row.taxAmount, row.discountAmount, row.totalAmount, row.orderedAt, row.itemId, row.productId, row.sku, row.productName, row.quantity, row.unitPrice, row.lineTotal) }) + val _rowParser: RowParser = RowParsers.of(OrdersId.mariaType, MariaTypes.varchar, MariaTypes.text, MariaTypes.text, KotlinDbTypes.MariaTypes.numeric, KotlinDbTypes.MariaTypes.numeric, KotlinDbTypes.MariaTypes.numeric, KotlinDbTypes.MariaTypes.numeric, KotlinDbTypes.MariaTypes.numeric, MariaTypes.datetime, OrderItemsId.mariaType, ProductsId.mariaType, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.smallintUnsigned, KotlinDbTypes.MariaTypes.numeric, KotlinDbTypes.MariaTypes.numeric, { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16 -> OrderDetailsSqlRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16) }, { row -> arrayOf(row.orderId, row.orderNumber, row.orderStatus, row.paymentStatus, row.subtotal, row.shippingCost, row.taxAmount, row.discountAmount, row.totalAmount, row.orderedAt, row.itemId, row.productId, row.sku, row.productName, row.quantity, row.unitPrice, row.lineTotal) }) } } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/order_history/OrderHistoryFields.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/order_history/OrderHistoryFields.kt index b83ba9ee5b..3179bcf930 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/order_history/OrderHistoryFields.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/order_history/OrderHistoryFields.kt @@ -53,13 +53,13 @@ data class OrderHistoryFields(val _path: List) : TupleExpr8 = ForeignKey.of("fk_oh_order").withColumnPair(orderId(), OrdersFields::orderId) - fun historyId(): IdField = IdField(_path, "history_id", OrderHistoryRow::historyId, null, null, { row, value -> row.copy(historyId = value) }, OrderHistoryId.dbType) + fun historyId(): IdField = IdField(_path, "history_id", OrderHistoryRow::historyId, null, null, { row, value -> row.copy(historyId = value) }, OrderHistoryId.mariaType) fun metadata(): OptField = OptField(_path, "metadata", OrderHistoryRow::metadata, null, null, { row, value -> row.copy(metadata = value) }, MariaTypes.json) fun newStatus(): Field = Field(_path, "new_status", OrderHistoryRow::newStatus, null, null, { row, value -> row.copy(newStatus = value) }, MariaTypes.text) - fun orderId(): Field = Field(_path, "order_id", OrderHistoryRow::orderId, null, null, { row, value -> row.copy(orderId = value) }, OrdersId.dbType) + fun orderId(): Field = Field(_path, "order_id", OrderHistoryRow::orderId, null, null, { row, value -> row.copy(orderId = value) }, OrdersId.mariaType) fun previousStatus(): OptField = OptField(_path, "previous_status", OrderHistoryRow::previousStatus, null, null, { row, value -> row.copy(previousStatus = value) }, MariaTypes.text) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/order_history/OrderHistoryId.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/order_history/OrderHistoryId.kt index a56868afc1..a866037081 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/order_history/OrderHistoryId.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/order_history/OrderHistoryId.kt @@ -21,7 +21,7 @@ data class OrderHistoryId(@field:JsonValue val value: Uint8) { val bijection: Bijection = Bijection.of(OrderHistoryId::value, ::OrderHistoryId) - val dbType: MariaType = + val mariaType: MariaType = MariaTypes.bigintUnsigned.bimap(::OrderHistoryId, OrderHistoryId::value) } } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/order_history/OrderHistoryRepoImpl.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/order_history/OrderHistoryRepoImpl.kt index 360d644ee4..a06cef656c 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/order_history/OrderHistoryRepoImpl.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/order_history/OrderHistoryRepoImpl.kt @@ -26,21 +26,21 @@ class OrderHistoryRepoImpl() : OrderHistoryRepo { override fun deleteById( historyId: OrderHistoryId, c: Connection - ): Boolean = Fragment.interpolate(Fragment.lit("delete from `order_history` where `history_id` = "), Fragment.encode(OrderHistoryId.dbType, historyId), Fragment.lit("")).update().runUnchecked(c) > 0 + ): Boolean = Fragment.interpolate(Fragment.lit("delete from `order_history` where `history_id` = "), Fragment.encode(OrderHistoryId.mariaType, historyId), Fragment.lit("")).update().runUnchecked(c) > 0 override fun deleteByIds( historyIds: Array, c: Connection ): Int { val fragments: ArrayList = ArrayList() - for (id in historyIds) { fragments.add(Fragment.encode(OrderHistoryId.dbType, id)) } + for (id in historyIds) { fragments.add(Fragment.encode(OrderHistoryId.mariaType, id)) } return Fragment.interpolate(Fragment.lit("delete from `order_history` where `history_id` in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).update().runUnchecked(c) } override fun insert( unsaved: OrderHistoryRow, c: Connection - ): OrderHistoryRow = Fragment.interpolate(Fragment.lit("insert into `order_history`(`order_id`, `previous_status`, `new_status`, `changed_by`, `change_reason`, `metadata`, `created_at`)\nvalues ("), Fragment.encode(OrdersId.dbType, unsaved.orderId), Fragment.lit(", "), Fragment.encode(MariaTypes.text.nullable(), unsaved.previousStatus), Fragment.lit(", "), Fragment.encode(MariaTypes.text, unsaved.newStatus), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.changedBy), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.changeReason), Fragment.lit(", "), Fragment.encode(MariaTypes.json.nullable(), unsaved.metadata), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.createdAt), Fragment.lit(")\nRETURNING `history_id`, `order_id`, `previous_status`, `new_status`, `changed_by`, `change_reason`, `metadata`, `created_at`\n")) + ): OrderHistoryRow = Fragment.interpolate(Fragment.lit("insert into `order_history`(`order_id`, `previous_status`, `new_status`, `changed_by`, `change_reason`, `metadata`, `created_at`)\nvalues ("), Fragment.encode(OrdersId.mariaType, unsaved.orderId), Fragment.lit(", "), Fragment.encode(MariaTypes.text.nullable(), unsaved.previousStatus), Fragment.lit(", "), Fragment.encode(MariaTypes.text, unsaved.newStatus), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.changedBy), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.changeReason), Fragment.lit(", "), Fragment.encode(MariaTypes.json.nullable(), unsaved.metadata), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.createdAt), Fragment.lit(")\nRETURNING `history_id`, `order_id`, `previous_status`, `new_status`, `changed_by`, `change_reason`, `metadata`, `created_at`\n")) .updateReturning(OrderHistoryRow._rowParser.exactlyOne()).runUnchecked(c) override fun insert( @@ -50,7 +50,7 @@ class OrderHistoryRepoImpl() : OrderHistoryRepo { val columns: ArrayList = ArrayList() val values: ArrayList = ArrayList() columns.add(Fragment.lit("`order_id`")) - values.add(Fragment.interpolate(Fragment.encode(OrdersId.dbType, unsaved.orderId), Fragment.lit(""))) + values.add(Fragment.interpolate(Fragment.encode(OrdersId.mariaType, unsaved.orderId), Fragment.lit(""))) columns.add(Fragment.lit("`new_status`")) values.add(Fragment.interpolate(Fragment.encode(MariaTypes.text, unsaved.newStatus), Fragment.lit(""))) unsaved.previousStatus.visit( @@ -89,14 +89,14 @@ class OrderHistoryRepoImpl() : OrderHistoryRepo { override fun selectById( historyId: OrderHistoryId, c: Connection - ): OrderHistoryRow? = Fragment.interpolate(Fragment.lit("select `history_id`, `order_id`, `previous_status`, `new_status`, `changed_by`, `change_reason`, `metadata`, `created_at`\nfrom `order_history`\nwhere `history_id` = "), Fragment.encode(OrderHistoryId.dbType, historyId), Fragment.lit("")).query(OrderHistoryRow._rowParser.first()).runUnchecked(c) + ): OrderHistoryRow? = Fragment.interpolate(Fragment.lit("select `history_id`, `order_id`, `previous_status`, `new_status`, `changed_by`, `change_reason`, `metadata`, `created_at`\nfrom `order_history`\nwhere `history_id` = "), Fragment.encode(OrderHistoryId.mariaType, historyId), Fragment.lit("")).query(OrderHistoryRow._rowParser.first()).runUnchecked(c) override fun selectByIds( historyIds: Array, c: Connection ): List { val fragments: ArrayList = ArrayList() - for (id in historyIds) { fragments.add(Fragment.encode(OrderHistoryId.dbType, id)) } + for (id in historyIds) { fragments.add(Fragment.encode(OrderHistoryId.mariaType, id)) } return Fragment.interpolate(Fragment.lit("select `history_id`, `order_id`, `previous_status`, `new_status`, `changed_by`, `change_reason`, `metadata`, `created_at` from `order_history` where `history_id` in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).query(OrderHistoryRow._rowParser.all()).runUnchecked(c) } @@ -116,13 +116,13 @@ class OrderHistoryRepoImpl() : OrderHistoryRepo { c: Connection ): Boolean { val historyId: OrderHistoryId = row.historyId - return Fragment.interpolate(Fragment.lit("update `order_history`\nset `order_id` = "), Fragment.encode(OrdersId.dbType, row.orderId), Fragment.lit(",\n`previous_status` = "), Fragment.encode(MariaTypes.text.nullable(), row.previousStatus), Fragment.lit(",\n`new_status` = "), Fragment.encode(MariaTypes.text, row.newStatus), Fragment.lit(",\n`changed_by` = "), Fragment.encode(MariaTypes.varchar.nullable(), row.changedBy), Fragment.lit(",\n`change_reason` = "), Fragment.encode(MariaTypes.varchar.nullable(), row.changeReason), Fragment.lit(",\n`metadata` = "), Fragment.encode(MariaTypes.json.nullable(), row.metadata), Fragment.lit(",\n`created_at` = "), Fragment.encode(MariaTypes.datetime, row.createdAt), Fragment.lit("\nwhere `history_id` = "), Fragment.encode(OrderHistoryId.dbType, historyId), Fragment.lit("")).update().runUnchecked(c) > 0 + return Fragment.interpolate(Fragment.lit("update `order_history`\nset `order_id` = "), Fragment.encode(OrdersId.mariaType, row.orderId), Fragment.lit(",\n`previous_status` = "), Fragment.encode(MariaTypes.text.nullable(), row.previousStatus), Fragment.lit(",\n`new_status` = "), Fragment.encode(MariaTypes.text, row.newStatus), Fragment.lit(",\n`changed_by` = "), Fragment.encode(MariaTypes.varchar.nullable(), row.changedBy), Fragment.lit(",\n`change_reason` = "), Fragment.encode(MariaTypes.varchar.nullable(), row.changeReason), Fragment.lit(",\n`metadata` = "), Fragment.encode(MariaTypes.json.nullable(), row.metadata), Fragment.lit(",\n`created_at` = "), Fragment.encode(MariaTypes.datetime, row.createdAt), Fragment.lit("\nwhere `history_id` = "), Fragment.encode(OrderHistoryId.mariaType, historyId), Fragment.lit("")).update().runUnchecked(c) > 0 } override fun upsert( unsaved: OrderHistoryRow, c: Connection - ): OrderHistoryRow = Fragment.interpolate(Fragment.lit("INSERT INTO `order_history`(`history_id`, `order_id`, `previous_status`, `new_status`, `changed_by`, `change_reason`, `metadata`, `created_at`)\nVALUES ("), Fragment.encode(OrderHistoryId.dbType, unsaved.historyId), Fragment.lit(", "), Fragment.encode(OrdersId.dbType, unsaved.orderId), Fragment.lit(", "), Fragment.encode(MariaTypes.text.nullable(), unsaved.previousStatus), Fragment.lit(", "), Fragment.encode(MariaTypes.text, unsaved.newStatus), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.changedBy), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.changeReason), Fragment.lit(", "), Fragment.encode(MariaTypes.json.nullable(), unsaved.metadata), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.createdAt), Fragment.lit(")\nON DUPLICATE KEY UPDATE `order_id` = VALUES(`order_id`),\n`previous_status` = VALUES(`previous_status`),\n`new_status` = VALUES(`new_status`),\n`changed_by` = VALUES(`changed_by`),\n`change_reason` = VALUES(`change_reason`),\n`metadata` = VALUES(`metadata`),\n`created_at` = VALUES(`created_at`)\nRETURNING `history_id`, `order_id`, `previous_status`, `new_status`, `changed_by`, `change_reason`, `metadata`, `created_at`")) + ): OrderHistoryRow = Fragment.interpolate(Fragment.lit("INSERT INTO `order_history`(`history_id`, `order_id`, `previous_status`, `new_status`, `changed_by`, `change_reason`, `metadata`, `created_at`)\nVALUES ("), Fragment.encode(OrderHistoryId.mariaType, unsaved.historyId), Fragment.lit(", "), Fragment.encode(OrdersId.mariaType, unsaved.orderId), Fragment.lit(", "), Fragment.encode(MariaTypes.text.nullable(), unsaved.previousStatus), Fragment.lit(", "), Fragment.encode(MariaTypes.text, unsaved.newStatus), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.changedBy), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.changeReason), Fragment.lit(", "), Fragment.encode(MariaTypes.json.nullable(), unsaved.metadata), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.createdAt), Fragment.lit(")\nON DUPLICATE KEY UPDATE `order_id` = VALUES(`order_id`),\n`previous_status` = VALUES(`previous_status`),\n`new_status` = VALUES(`new_status`),\n`changed_by` = VALUES(`changed_by`),\n`change_reason` = VALUES(`change_reason`),\n`metadata` = VALUES(`metadata`),\n`created_at` = VALUES(`created_at`)\nRETURNING `history_id`, `order_id`, `previous_status`, `new_status`, `changed_by`, `change_reason`, `metadata`, `created_at`")) .updateReturning(OrderHistoryRow._rowParser.exactlyOne()) .runUnchecked(c) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/order_history/OrderHistoryRow.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/order_history/OrderHistoryRow.kt index 354844dac2..8ff41e4cb1 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/order_history/OrderHistoryRow.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/order_history/OrderHistoryRow.kt @@ -78,6 +78,6 @@ data class OrderHistoryRow( ): OrderHistoryRowUnsaved = OrderHistoryRowUnsaved(orderId, newStatus, previousStatus, changedBy, changeReason, metadata, createdAt) companion object { - val _rowParser: RowParser = RowParsers.of(OrderHistoryId.dbType, OrdersId.dbType, MariaTypes.text.nullable(), MariaTypes.text, MariaTypes.varchar.nullable(), MariaTypes.varchar.nullable(), MariaTypes.json.nullable(), MariaTypes.datetime, { t0, t1, t2, t3, t4, t5, t6, t7 -> OrderHistoryRow(t0, t1, t2, t3, t4, t5, t6, t7) }, { row -> arrayOf(row.historyId, row.orderId, row.previousStatus, row.newStatus, row.changedBy, row.changeReason, row.metadata, row.createdAt) }) + val _rowParser: RowParser = RowParsers.of(OrderHistoryId.mariaType, OrdersId.mariaType, MariaTypes.text.nullable(), MariaTypes.text, MariaTypes.varchar.nullable(), MariaTypes.varchar.nullable(), MariaTypes.json.nullable(), MariaTypes.datetime, { t0, t1, t2, t3, t4, t5, t6, t7 -> OrderHistoryRow(t0, t1, t2, t3, t4, t5, t6, t7) }, { row -> arrayOf(row.historyId, row.orderId, row.previousStatus, row.newStatus, row.changedBy, row.changeReason, row.metadata, row.createdAt) }) } } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/order_items/OrderItemsFields.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/order_items/OrderItemsFields.kt index fb7b9bd73c..81f5fc6d20 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/order_items/OrderItemsFields.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/order_items/OrderItemsFields.kt @@ -72,15 +72,15 @@ data class OrderItemsFields(val _path: List) : TupleExpr13 = Field(_path, "fulfillment_status", OrderItemsRow::fulfillmentStatus, null, null, { row, value -> row.copy(fulfillmentStatus = value) }, MariaTypes.text) - fun itemId(): IdField = IdField(_path, "item_id", OrderItemsRow::itemId, null, null, { row, value -> row.copy(itemId = value) }, OrderItemsId.dbType) + fun itemId(): IdField = IdField(_path, "item_id", OrderItemsRow::itemId, null, null, { row, value -> row.copy(itemId = value) }, OrderItemsId.mariaType) fun lineTotal(): Field = Field(_path, "line_total", OrderItemsRow::lineTotal, null, null, { row, value -> row.copy(lineTotal = value) }, KotlinDbTypes.MariaTypes.numeric) fun notes(): OptField = OptField(_path, "notes", OrderItemsRow::notes, null, null, { row, value -> row.copy(notes = value) }, MariaTypes.tinytext) - fun orderId(): Field = Field(_path, "order_id", OrderItemsRow::orderId, null, null, { row, value -> row.copy(orderId = value) }, OrdersId.dbType) + fun orderId(): Field = Field(_path, "order_id", OrderItemsRow::orderId, null, null, { row, value -> row.copy(orderId = value) }, OrdersId.mariaType) - fun productId(): Field = Field(_path, "product_id", OrderItemsRow::productId, null, null, { row, value -> row.copy(productId = value) }, ProductsId.dbType) + fun productId(): Field = Field(_path, "product_id", OrderItemsRow::productId, null, null, { row, value -> row.copy(productId = value) }, ProductsId.mariaType) fun productName(): Field = Field(_path, "product_name", OrderItemsRow::productName, null, null, { row, value -> row.copy(productName = value) }, MariaTypes.varchar) @@ -94,7 +94,7 @@ data class OrderItemsFields(val _path: List) : TupleExpr13 = Field(_path, "unit_price", OrderItemsRow::unitPrice, null, null, { row, value -> row.copy(unitPrice = value) }, KotlinDbTypes.MariaTypes.numeric) - fun warehouseId(): OptField = OptField(_path, "warehouse_id", OrderItemsRow::warehouseId, null, null, { row, value -> row.copy(warehouseId = value) }, WarehousesId.dbType) + fun warehouseId(): OptField = OptField(_path, "warehouse_id", OrderItemsRow::warehouseId, null, null, { row, value -> row.copy(warehouseId = value) }, WarehousesId.mariaType) override fun withPaths(_path: List): RelationStructure = OrderItemsFields(_path) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/order_items/OrderItemsId.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/order_items/OrderItemsId.kt index a2bd49c320..74408bd248 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/order_items/OrderItemsId.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/order_items/OrderItemsId.kt @@ -21,7 +21,7 @@ data class OrderItemsId(@field:JsonValue val value: Uint8) { val bijection: Bijection = Bijection.of(OrderItemsId::value, ::OrderItemsId) - val dbType: MariaType = + val mariaType: MariaType = MariaTypes.bigintUnsigned.bimap(::OrderItemsId, OrderItemsId::value) } } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/order_items/OrderItemsRepoImpl.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/order_items/OrderItemsRepoImpl.kt index 8bd49b69f4..01d7ddfcd4 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/order_items/OrderItemsRepoImpl.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/order_items/OrderItemsRepoImpl.kt @@ -29,21 +29,21 @@ class OrderItemsRepoImpl() : OrderItemsRepo { override fun deleteById( itemId: OrderItemsId, c: Connection - ): Boolean = Fragment.interpolate(Fragment.lit("delete from `order_items` where `item_id` = "), Fragment.encode(OrderItemsId.dbType, itemId), Fragment.lit("")).update().runUnchecked(c) > 0 + ): Boolean = Fragment.interpolate(Fragment.lit("delete from `order_items` where `item_id` = "), Fragment.encode(OrderItemsId.mariaType, itemId), Fragment.lit("")).update().runUnchecked(c) > 0 override fun deleteByIds( itemIds: Array, c: Connection ): Int { val fragments: ArrayList = ArrayList() - for (id in itemIds) { fragments.add(Fragment.encode(OrderItemsId.dbType, id)) } + for (id in itemIds) { fragments.add(Fragment.encode(OrderItemsId.mariaType, id)) } return Fragment.interpolate(Fragment.lit("delete from `order_items` where `item_id` in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).update().runUnchecked(c) } override fun insert( unsaved: OrderItemsRow, c: Connection - ): OrderItemsRow = Fragment.interpolate(Fragment.lit("insert into `order_items`(`order_id`, `product_id`, `sku`, `product_name`, `quantity`, `unit_price`, `discount_amount`, `tax_amount`, `line_total`, `fulfillment_status`, `warehouse_id`, `notes`)\nvalues ("), Fragment.encode(OrdersId.dbType, unsaved.orderId), Fragment.lit(", "), Fragment.encode(ProductsId.dbType, unsaved.productId), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.sku), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.productName), Fragment.lit(", "), Fragment.encode(MariaTypes.smallintUnsigned, unsaved.quantity), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, unsaved.unitPrice), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, unsaved.discountAmount), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, unsaved.taxAmount), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, unsaved.lineTotal), Fragment.lit(", "), Fragment.encode(MariaTypes.text, unsaved.fulfillmentStatus), Fragment.lit(", "), Fragment.encode(WarehousesId.dbType.nullable(), unsaved.warehouseId), Fragment.lit(", "), Fragment.encode(MariaTypes.tinytext.nullable(), unsaved.notes), Fragment.lit(")\nRETURNING `item_id`, `order_id`, `product_id`, `sku`, `product_name`, `quantity`, `unit_price`, `discount_amount`, `tax_amount`, `line_total`, `fulfillment_status`, `warehouse_id`, `notes`\n")) + ): OrderItemsRow = Fragment.interpolate(Fragment.lit("insert into `order_items`(`order_id`, `product_id`, `sku`, `product_name`, `quantity`, `unit_price`, `discount_amount`, `tax_amount`, `line_total`, `fulfillment_status`, `warehouse_id`, `notes`)\nvalues ("), Fragment.encode(OrdersId.mariaType, unsaved.orderId), Fragment.lit(", "), Fragment.encode(ProductsId.mariaType, unsaved.productId), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.sku), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.productName), Fragment.lit(", "), Fragment.encode(MariaTypes.smallintUnsigned, unsaved.quantity), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, unsaved.unitPrice), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, unsaved.discountAmount), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, unsaved.taxAmount), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, unsaved.lineTotal), Fragment.lit(", "), Fragment.encode(MariaTypes.text, unsaved.fulfillmentStatus), Fragment.lit(", "), Fragment.encode(WarehousesId.mariaType.nullable(), unsaved.warehouseId), Fragment.lit(", "), Fragment.encode(MariaTypes.tinytext.nullable(), unsaved.notes), Fragment.lit(")\nRETURNING `item_id`, `order_id`, `product_id`, `sku`, `product_name`, `quantity`, `unit_price`, `discount_amount`, `tax_amount`, `line_total`, `fulfillment_status`, `warehouse_id`, `notes`\n")) .updateReturning(OrderItemsRow._rowParser.exactlyOne()).runUnchecked(c) override fun insert( @@ -53,9 +53,9 @@ class OrderItemsRepoImpl() : OrderItemsRepo { val columns: ArrayList = ArrayList() val values: ArrayList = ArrayList() columns.add(Fragment.lit("`order_id`")) - values.add(Fragment.interpolate(Fragment.encode(OrdersId.dbType, unsaved.orderId), Fragment.lit(""))) + values.add(Fragment.interpolate(Fragment.encode(OrdersId.mariaType, unsaved.orderId), Fragment.lit(""))) columns.add(Fragment.lit("`product_id`")) - values.add(Fragment.interpolate(Fragment.encode(ProductsId.dbType, unsaved.productId), Fragment.lit(""))) + values.add(Fragment.interpolate(Fragment.encode(ProductsId.mariaType, unsaved.productId), Fragment.lit(""))) columns.add(Fragment.lit("`sku`")) values.add(Fragment.interpolate(Fragment.encode(MariaTypes.varchar, unsaved.sku), Fragment.lit(""))) columns.add(Fragment.lit("`product_name`")) @@ -84,7 +84,7 @@ class OrderItemsRepoImpl() : OrderItemsRepo { unsaved.warehouseId.visit( { }, { value -> columns.add(Fragment.lit("`warehouse_id`")) - values.add(Fragment.interpolate(Fragment.encode(WarehousesId.dbType.nullable(), value), Fragment.lit(""))) } + values.add(Fragment.interpolate(Fragment.encode(WarehousesId.mariaType.nullable(), value), Fragment.lit(""))) } ); unsaved.notes.visit( { }, @@ -102,14 +102,14 @@ class OrderItemsRepoImpl() : OrderItemsRepo { override fun selectById( itemId: OrderItemsId, c: Connection - ): OrderItemsRow? = Fragment.interpolate(Fragment.lit("select `item_id`, `order_id`, `product_id`, `sku`, `product_name`, `quantity`, `unit_price`, `discount_amount`, `tax_amount`, `line_total`, `fulfillment_status`, `warehouse_id`, `notes`\nfrom `order_items`\nwhere `item_id` = "), Fragment.encode(OrderItemsId.dbType, itemId), Fragment.lit("")).query(OrderItemsRow._rowParser.first()).runUnchecked(c) + ): OrderItemsRow? = Fragment.interpolate(Fragment.lit("select `item_id`, `order_id`, `product_id`, `sku`, `product_name`, `quantity`, `unit_price`, `discount_amount`, `tax_amount`, `line_total`, `fulfillment_status`, `warehouse_id`, `notes`\nfrom `order_items`\nwhere `item_id` = "), Fragment.encode(OrderItemsId.mariaType, itemId), Fragment.lit("")).query(OrderItemsRow._rowParser.first()).runUnchecked(c) override fun selectByIds( itemIds: Array, c: Connection ): List { val fragments: ArrayList = ArrayList() - for (id in itemIds) { fragments.add(Fragment.encode(OrderItemsId.dbType, id)) } + for (id in itemIds) { fragments.add(Fragment.encode(OrderItemsId.mariaType, id)) } return Fragment.interpolate(Fragment.lit("select `item_id`, `order_id`, `product_id`, `sku`, `product_name`, `quantity`, `unit_price`, `discount_amount`, `tax_amount`, `line_total`, `fulfillment_status`, `warehouse_id`, `notes` from `order_items` where `item_id` in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).query(OrderItemsRow._rowParser.all()).runUnchecked(c) } @@ -129,13 +129,13 @@ class OrderItemsRepoImpl() : OrderItemsRepo { c: Connection ): Boolean { val itemId: OrderItemsId = row.itemId - return Fragment.interpolate(Fragment.lit("update `order_items`\nset `order_id` = "), Fragment.encode(OrdersId.dbType, row.orderId), Fragment.lit(",\n`product_id` = "), Fragment.encode(ProductsId.dbType, row.productId), Fragment.lit(",\n`sku` = "), Fragment.encode(MariaTypes.varchar, row.sku), Fragment.lit(",\n`product_name` = "), Fragment.encode(MariaTypes.varchar, row.productName), Fragment.lit(",\n`quantity` = "), Fragment.encode(MariaTypes.smallintUnsigned, row.quantity), Fragment.lit(",\n`unit_price` = "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, row.unitPrice), Fragment.lit(",\n`discount_amount` = "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, row.discountAmount), Fragment.lit(",\n`tax_amount` = "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, row.taxAmount), Fragment.lit(",\n`line_total` = "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, row.lineTotal), Fragment.lit(",\n`fulfillment_status` = "), Fragment.encode(MariaTypes.text, row.fulfillmentStatus), Fragment.lit(",\n`warehouse_id` = "), Fragment.encode(WarehousesId.dbType.nullable(), row.warehouseId), Fragment.lit(",\n`notes` = "), Fragment.encode(MariaTypes.tinytext.nullable(), row.notes), Fragment.lit("\nwhere `item_id` = "), Fragment.encode(OrderItemsId.dbType, itemId), Fragment.lit("")).update().runUnchecked(c) > 0 + return Fragment.interpolate(Fragment.lit("update `order_items`\nset `order_id` = "), Fragment.encode(OrdersId.mariaType, row.orderId), Fragment.lit(",\n`product_id` = "), Fragment.encode(ProductsId.mariaType, row.productId), Fragment.lit(",\n`sku` = "), Fragment.encode(MariaTypes.varchar, row.sku), Fragment.lit(",\n`product_name` = "), Fragment.encode(MariaTypes.varchar, row.productName), Fragment.lit(",\n`quantity` = "), Fragment.encode(MariaTypes.smallintUnsigned, row.quantity), Fragment.lit(",\n`unit_price` = "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, row.unitPrice), Fragment.lit(",\n`discount_amount` = "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, row.discountAmount), Fragment.lit(",\n`tax_amount` = "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, row.taxAmount), Fragment.lit(",\n`line_total` = "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, row.lineTotal), Fragment.lit(",\n`fulfillment_status` = "), Fragment.encode(MariaTypes.text, row.fulfillmentStatus), Fragment.lit(",\n`warehouse_id` = "), Fragment.encode(WarehousesId.mariaType.nullable(), row.warehouseId), Fragment.lit(",\n`notes` = "), Fragment.encode(MariaTypes.tinytext.nullable(), row.notes), Fragment.lit("\nwhere `item_id` = "), Fragment.encode(OrderItemsId.mariaType, itemId), Fragment.lit("")).update().runUnchecked(c) > 0 } override fun upsert( unsaved: OrderItemsRow, c: Connection - ): OrderItemsRow = Fragment.interpolate(Fragment.lit("INSERT INTO `order_items`(`item_id`, `order_id`, `product_id`, `sku`, `product_name`, `quantity`, `unit_price`, `discount_amount`, `tax_amount`, `line_total`, `fulfillment_status`, `warehouse_id`, `notes`)\nVALUES ("), Fragment.encode(OrderItemsId.dbType, unsaved.itemId), Fragment.lit(", "), Fragment.encode(OrdersId.dbType, unsaved.orderId), Fragment.lit(", "), Fragment.encode(ProductsId.dbType, unsaved.productId), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.sku), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.productName), Fragment.lit(", "), Fragment.encode(MariaTypes.smallintUnsigned, unsaved.quantity), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, unsaved.unitPrice), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, unsaved.discountAmount), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, unsaved.taxAmount), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, unsaved.lineTotal), Fragment.lit(", "), Fragment.encode(MariaTypes.text, unsaved.fulfillmentStatus), Fragment.lit(", "), Fragment.encode(WarehousesId.dbType.nullable(), unsaved.warehouseId), Fragment.lit(", "), Fragment.encode(MariaTypes.tinytext.nullable(), unsaved.notes), Fragment.lit(")\nON DUPLICATE KEY UPDATE `order_id` = VALUES(`order_id`),\n`product_id` = VALUES(`product_id`),\n`sku` = VALUES(`sku`),\n`product_name` = VALUES(`product_name`),\n`quantity` = VALUES(`quantity`),\n`unit_price` = VALUES(`unit_price`),\n`discount_amount` = VALUES(`discount_amount`),\n`tax_amount` = VALUES(`tax_amount`),\n`line_total` = VALUES(`line_total`),\n`fulfillment_status` = VALUES(`fulfillment_status`),\n`warehouse_id` = VALUES(`warehouse_id`),\n`notes` = VALUES(`notes`)\nRETURNING `item_id`, `order_id`, `product_id`, `sku`, `product_name`, `quantity`, `unit_price`, `discount_amount`, `tax_amount`, `line_total`, `fulfillment_status`, `warehouse_id`, `notes`")) + ): OrderItemsRow = Fragment.interpolate(Fragment.lit("INSERT INTO `order_items`(`item_id`, `order_id`, `product_id`, `sku`, `product_name`, `quantity`, `unit_price`, `discount_amount`, `tax_amount`, `line_total`, `fulfillment_status`, `warehouse_id`, `notes`)\nVALUES ("), Fragment.encode(OrderItemsId.mariaType, unsaved.itemId), Fragment.lit(", "), Fragment.encode(OrdersId.mariaType, unsaved.orderId), Fragment.lit(", "), Fragment.encode(ProductsId.mariaType, unsaved.productId), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.sku), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.productName), Fragment.lit(", "), Fragment.encode(MariaTypes.smallintUnsigned, unsaved.quantity), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, unsaved.unitPrice), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, unsaved.discountAmount), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, unsaved.taxAmount), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, unsaved.lineTotal), Fragment.lit(", "), Fragment.encode(MariaTypes.text, unsaved.fulfillmentStatus), Fragment.lit(", "), Fragment.encode(WarehousesId.mariaType.nullable(), unsaved.warehouseId), Fragment.lit(", "), Fragment.encode(MariaTypes.tinytext.nullable(), unsaved.notes), Fragment.lit(")\nON DUPLICATE KEY UPDATE `order_id` = VALUES(`order_id`),\n`product_id` = VALUES(`product_id`),\n`sku` = VALUES(`sku`),\n`product_name` = VALUES(`product_name`),\n`quantity` = VALUES(`quantity`),\n`unit_price` = VALUES(`unit_price`),\n`discount_amount` = VALUES(`discount_amount`),\n`tax_amount` = VALUES(`tax_amount`),\n`line_total` = VALUES(`line_total`),\n`fulfillment_status` = VALUES(`fulfillment_status`),\n`warehouse_id` = VALUES(`warehouse_id`),\n`notes` = VALUES(`notes`)\nRETURNING `item_id`, `order_id`, `product_id`, `sku`, `product_name`, `quantity`, `unit_price`, `discount_amount`, `tax_amount`, `line_total`, `fulfillment_status`, `warehouse_id`, `notes`")) .updateReturning(OrderItemsRow._rowParser.exactlyOne()) .runUnchecked(c) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/order_items/OrderItemsRow.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/order_items/OrderItemsRow.kt index 882b812533..f3fcb32d68 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/order_items/OrderItemsRow.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/order_items/OrderItemsRow.kt @@ -104,6 +104,6 @@ data class OrderItemsRow( ): OrderItemsRowUnsaved = OrderItemsRowUnsaved(orderId, productId, sku, productName, quantity, unitPrice, lineTotal, discountAmount, taxAmount, fulfillmentStatus, warehouseId, notes) companion object { - val _rowParser: RowParser = RowParsers.of(OrderItemsId.dbType, OrdersId.dbType, ProductsId.dbType, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.smallintUnsigned, KotlinDbTypes.MariaTypes.numeric, KotlinDbTypes.MariaTypes.numeric, KotlinDbTypes.MariaTypes.numeric, KotlinDbTypes.MariaTypes.numeric, MariaTypes.text, WarehousesId.dbType.nullable(), MariaTypes.tinytext.nullable(), { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12 -> OrderItemsRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12) }, { row -> arrayOf(row.itemId, row.orderId, row.productId, row.sku, row.productName, row.quantity, row.unitPrice, row.discountAmount, row.taxAmount, row.lineTotal, row.fulfillmentStatus, row.warehouseId, row.notes) }) + val _rowParser: RowParser = RowParsers.of(OrderItemsId.mariaType, OrdersId.mariaType, ProductsId.mariaType, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.smallintUnsigned, KotlinDbTypes.MariaTypes.numeric, KotlinDbTypes.MariaTypes.numeric, KotlinDbTypes.MariaTypes.numeric, KotlinDbTypes.MariaTypes.numeric, MariaTypes.text, WarehousesId.mariaType.nullable(), MariaTypes.tinytext.nullable(), { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12 -> OrderItemsRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12) }, { row -> arrayOf(row.itemId, row.orderId, row.productId, row.sku, row.productName, row.quantity, row.unitPrice, row.discountAmount, row.taxAmount, row.lineTotal, row.fulfillmentStatus, row.warehouseId, row.notes) }) } } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/orders/OrdersFields.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/orders/OrdersFields.kt index 32ec8150f0..fda9982303 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/orders/OrdersFields.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/orders/OrdersFields.kt @@ -79,7 +79,7 @@ data class OrdersFields(val _path: List) : TupleExpr22 = _path - fun billingAddressId(): OptField = OptField(_path, "billing_address_id", OrdersRow::billingAddressId, null, null, { row, value -> row.copy(billingAddressId = value) }, CustomerAddressesId.dbType) + fun billingAddressId(): OptField = OptField(_path, "billing_address_id", OrdersRow::billingAddressId, null, null, { row, value -> row.copy(billingAddressId = value) }, CustomerAddressesId.mariaType) override fun columns(): List> = listOf(this.orderId().underlying, this.orderNumber().underlying, this.customerId().underlying, this.orderStatus().underlying, this.paymentStatus().underlying, this.shippingAddressId().underlying, this.billingAddressId().underlying, this.subtotal().underlying, this.shippingCost().underlying, this.taxAmount().underlying, this.discountAmount().underlying, this.totalAmount().underlying, this.currencyCode().underlying, this.promotionId().underlying, this.notes().underlying, this.internalNotes().underlying, this.ipAddress().underlying, this.userAgent().underlying, this.orderedAt().underlying, this.confirmedAt().underlying, this.shippedAt().underlying, this.deliveredAt().underlying) @@ -87,7 +87,7 @@ data class OrdersFields(val _path: List) : TupleExpr22 = Field(_path, "currency_code", OrdersRow::currencyCode, null, null, { row, value -> row.copy(currencyCode = value) }, MariaTypes.char_) - fun customerId(): Field = Field(_path, "customer_id", OrdersRow::customerId, null, null, { row, value -> row.copy(customerId = value) }, CustomersId.dbType) + fun customerId(): Field = Field(_path, "customer_id", OrdersRow::customerId, null, null, { row, value -> row.copy(customerId = value) }, CustomersId.mariaType) fun deliveredAt(): OptField = OptField(_path, "delivered_at", OrdersRow::deliveredAt, null, null, { row, value -> row.copy(deliveredAt = value) }, MariaTypes.datetime) @@ -107,7 +107,7 @@ data class OrdersFields(val _path: List) : TupleExpr22 = OptField(_path, "notes", OrdersRow::notes, null, null, { row, value -> row.copy(notes = value) }, MariaTypes.text) - fun orderId(): IdField = IdField(_path, "order_id", OrdersRow::orderId, null, null, { row, value -> row.copy(orderId = value) }, OrdersId.dbType) + fun orderId(): IdField = IdField(_path, "order_id", OrdersRow::orderId, null, null, { row, value -> row.copy(orderId = value) }, OrdersId.mariaType) fun orderNumber(): Field = Field(_path, "order_number", OrdersRow::orderNumber, null, null, { row, value -> row.copy(orderNumber = value) }, MariaTypes.varchar) @@ -117,13 +117,13 @@ data class OrdersFields(val _path: List) : TupleExpr22 = Field(_path, "payment_status", OrdersRow::paymentStatus, null, null, { row, value -> row.copy(paymentStatus = value) }, MariaTypes.text) - fun promotionId(): OptField = OptField(_path, "promotion_id", OrdersRow::promotionId, null, null, { row, value -> row.copy(promotionId = value) }, PromotionsId.dbType) + fun promotionId(): OptField = OptField(_path, "promotion_id", OrdersRow::promotionId, null, null, { row, value -> row.copy(promotionId = value) }, PromotionsId.mariaType) override fun rowParser(): RowParser = OrdersRow._rowParser.underlying fun shippedAt(): OptField = OptField(_path, "shipped_at", OrdersRow::shippedAt, null, null, { row, value -> row.copy(shippedAt = value) }, MariaTypes.datetime) - fun shippingAddressId(): OptField = OptField(_path, "shipping_address_id", OrdersRow::shippingAddressId, null, null, { row, value -> row.copy(shippingAddressId = value) }, CustomerAddressesId.dbType) + fun shippingAddressId(): OptField = OptField(_path, "shipping_address_id", OrdersRow::shippingAddressId, null, null, { row, value -> row.copy(shippingAddressId = value) }, CustomerAddressesId.mariaType) fun shippingCost(): Field = Field(_path, "shipping_cost", OrdersRow::shippingCost, null, null, { row, value -> row.copy(shippingCost = value) }, KotlinDbTypes.MariaTypes.numeric) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/orders/OrdersId.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/orders/OrdersId.kt index 6abb394b2b..4fe66a6579 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/orders/OrdersId.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/orders/OrdersId.kt @@ -21,7 +21,7 @@ data class OrdersId(@field:JsonValue val value: Uint8) { val bijection: Bijection = Bijection.of(OrdersId::value, ::OrdersId) - val dbType: MariaType = + val mariaType: MariaType = MariaTypes.bigintUnsigned.bimap(::OrdersId, OrdersId::value) } } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/orders/OrdersRepoImpl.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/orders/OrdersRepoImpl.kt index 43b35854a0..63d1d8d2ae 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/orders/OrdersRepoImpl.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/orders/OrdersRepoImpl.kt @@ -29,21 +29,21 @@ class OrdersRepoImpl() : OrdersRepo { override fun deleteById( orderId: OrdersId, c: Connection - ): Boolean = Fragment.interpolate(Fragment.lit("delete from `orders` where `order_id` = "), Fragment.encode(OrdersId.dbType, orderId), Fragment.lit("")).update().runUnchecked(c) > 0 + ): Boolean = Fragment.interpolate(Fragment.lit("delete from `orders` where `order_id` = "), Fragment.encode(OrdersId.mariaType, orderId), Fragment.lit("")).update().runUnchecked(c) > 0 override fun deleteByIds( orderIds: Array, c: Connection ): Int { val fragments: ArrayList = ArrayList() - for (id in orderIds) { fragments.add(Fragment.encode(OrdersId.dbType, id)) } + for (id in orderIds) { fragments.add(Fragment.encode(OrdersId.mariaType, id)) } return Fragment.interpolate(Fragment.lit("delete from `orders` where `order_id` in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).update().runUnchecked(c) } override fun insert( unsaved: OrdersRow, c: Connection - ): OrdersRow = Fragment.interpolate(Fragment.lit("insert into `orders`(`order_number`, `customer_id`, `order_status`, `payment_status`, `shipping_address_id`, `billing_address_id`, `subtotal`, `shipping_cost`, `tax_amount`, `discount_amount`, `total_amount`, `currency_code`, `promotion_id`, `notes`, `internal_notes`, `ip_address`, `user_agent`, `ordered_at`, `confirmed_at`, `shipped_at`, `delivered_at`)\nvalues ("), Fragment.encode(MariaTypes.varchar, unsaved.orderNumber), Fragment.lit(", "), Fragment.encode(CustomersId.dbType, unsaved.customerId), Fragment.lit(", "), Fragment.encode(MariaTypes.text, unsaved.orderStatus), Fragment.lit(", "), Fragment.encode(MariaTypes.text, unsaved.paymentStatus), Fragment.lit(", "), Fragment.encode(CustomerAddressesId.dbType.nullable(), unsaved.shippingAddressId), Fragment.lit(", "), Fragment.encode(CustomerAddressesId.dbType.nullable(), unsaved.billingAddressId), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, unsaved.subtotal), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, unsaved.shippingCost), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, unsaved.taxAmount), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, unsaved.discountAmount), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, unsaved.totalAmount), Fragment.lit(", "), Fragment.encode(MariaTypes.char_, unsaved.currencyCode), Fragment.lit(", "), Fragment.encode(PromotionsId.dbType.nullable(), unsaved.promotionId), Fragment.lit(", "), Fragment.encode(MariaTypes.text.nullable(), unsaved.notes), Fragment.lit(", "), Fragment.encode(MariaTypes.mediumtext.nullable(), unsaved.internalNotes), Fragment.lit(", "), Fragment.encode(MariaTypes.inet6.nullable(), unsaved.ipAddress), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.userAgent), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.orderedAt), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime.nullable(), unsaved.confirmedAt), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime.nullable(), unsaved.shippedAt), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime.nullable(), unsaved.deliveredAt), Fragment.lit(")\nRETURNING `order_id`, `order_number`, `customer_id`, `order_status`, `payment_status`, `shipping_address_id`, `billing_address_id`, `subtotal`, `shipping_cost`, `tax_amount`, `discount_amount`, `total_amount`, `currency_code`, `promotion_id`, `notes`, `internal_notes`, `ip_address`, `user_agent`, `ordered_at`, `confirmed_at`, `shipped_at`, `delivered_at`\n")) + ): OrdersRow = Fragment.interpolate(Fragment.lit("insert into `orders`(`order_number`, `customer_id`, `order_status`, `payment_status`, `shipping_address_id`, `billing_address_id`, `subtotal`, `shipping_cost`, `tax_amount`, `discount_amount`, `total_amount`, `currency_code`, `promotion_id`, `notes`, `internal_notes`, `ip_address`, `user_agent`, `ordered_at`, `confirmed_at`, `shipped_at`, `delivered_at`)\nvalues ("), Fragment.encode(MariaTypes.varchar, unsaved.orderNumber), Fragment.lit(", "), Fragment.encode(CustomersId.mariaType, unsaved.customerId), Fragment.lit(", "), Fragment.encode(MariaTypes.text, unsaved.orderStatus), Fragment.lit(", "), Fragment.encode(MariaTypes.text, unsaved.paymentStatus), Fragment.lit(", "), Fragment.encode(CustomerAddressesId.mariaType.nullable(), unsaved.shippingAddressId), Fragment.lit(", "), Fragment.encode(CustomerAddressesId.mariaType.nullable(), unsaved.billingAddressId), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, unsaved.subtotal), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, unsaved.shippingCost), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, unsaved.taxAmount), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, unsaved.discountAmount), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, unsaved.totalAmount), Fragment.lit(", "), Fragment.encode(MariaTypes.char_, unsaved.currencyCode), Fragment.lit(", "), Fragment.encode(PromotionsId.mariaType.nullable(), unsaved.promotionId), Fragment.lit(", "), Fragment.encode(MariaTypes.text.nullable(), unsaved.notes), Fragment.lit(", "), Fragment.encode(MariaTypes.mediumtext.nullable(), unsaved.internalNotes), Fragment.lit(", "), Fragment.encode(MariaTypes.inet6.nullable(), unsaved.ipAddress), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.userAgent), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.orderedAt), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime.nullable(), unsaved.confirmedAt), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime.nullable(), unsaved.shippedAt), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime.nullable(), unsaved.deliveredAt), Fragment.lit(")\nRETURNING `order_id`, `order_number`, `customer_id`, `order_status`, `payment_status`, `shipping_address_id`, `billing_address_id`, `subtotal`, `shipping_cost`, `tax_amount`, `discount_amount`, `total_amount`, `currency_code`, `promotion_id`, `notes`, `internal_notes`, `ip_address`, `user_agent`, `ordered_at`, `confirmed_at`, `shipped_at`, `delivered_at`\n")) .updateReturning(OrdersRow._rowParser.exactlyOne()).runUnchecked(c) override fun insert( @@ -55,7 +55,7 @@ class OrdersRepoImpl() : OrdersRepo { columns.add(Fragment.lit("`order_number`")) values.add(Fragment.interpolate(Fragment.encode(MariaTypes.varchar, unsaved.orderNumber), Fragment.lit(""))) columns.add(Fragment.lit("`customer_id`")) - values.add(Fragment.interpolate(Fragment.encode(CustomersId.dbType, unsaved.customerId), Fragment.lit(""))) + values.add(Fragment.interpolate(Fragment.encode(CustomersId.mariaType, unsaved.customerId), Fragment.lit(""))) columns.add(Fragment.lit("`subtotal`")) values.add(Fragment.interpolate(Fragment.encode(KotlinDbTypes.MariaTypes.numeric, unsaved.subtotal), Fragment.lit(""))) columns.add(Fragment.lit("`total_amount`")) @@ -73,12 +73,12 @@ class OrdersRepoImpl() : OrdersRepo { unsaved.shippingAddressId.visit( { }, { value -> columns.add(Fragment.lit("`shipping_address_id`")) - values.add(Fragment.interpolate(Fragment.encode(CustomerAddressesId.dbType.nullable(), value), Fragment.lit(""))) } + values.add(Fragment.interpolate(Fragment.encode(CustomerAddressesId.mariaType.nullable(), value), Fragment.lit(""))) } ); unsaved.billingAddressId.visit( { }, { value -> columns.add(Fragment.lit("`billing_address_id`")) - values.add(Fragment.interpolate(Fragment.encode(CustomerAddressesId.dbType.nullable(), value), Fragment.lit(""))) } + values.add(Fragment.interpolate(Fragment.encode(CustomerAddressesId.mariaType.nullable(), value), Fragment.lit(""))) } ); unsaved.shippingCost.visit( { }, @@ -103,7 +103,7 @@ class OrdersRepoImpl() : OrdersRepo { unsaved.promotionId.visit( { }, { value -> columns.add(Fragment.lit("`promotion_id`")) - values.add(Fragment.interpolate(Fragment.encode(PromotionsId.dbType.nullable(), value), Fragment.lit(""))) } + values.add(Fragment.interpolate(Fragment.encode(PromotionsId.mariaType.nullable(), value), Fragment.lit(""))) } ); unsaved.notes.visit( { }, @@ -156,14 +156,14 @@ class OrdersRepoImpl() : OrdersRepo { override fun selectById( orderId: OrdersId, c: Connection - ): OrdersRow? = Fragment.interpolate(Fragment.lit("select `order_id`, `order_number`, `customer_id`, `order_status`, `payment_status`, `shipping_address_id`, `billing_address_id`, `subtotal`, `shipping_cost`, `tax_amount`, `discount_amount`, `total_amount`, `currency_code`, `promotion_id`, `notes`, `internal_notes`, `ip_address`, `user_agent`, `ordered_at`, `confirmed_at`, `shipped_at`, `delivered_at`\nfrom `orders`\nwhere `order_id` = "), Fragment.encode(OrdersId.dbType, orderId), Fragment.lit("")).query(OrdersRow._rowParser.first()).runUnchecked(c) + ): OrdersRow? = Fragment.interpolate(Fragment.lit("select `order_id`, `order_number`, `customer_id`, `order_status`, `payment_status`, `shipping_address_id`, `billing_address_id`, `subtotal`, `shipping_cost`, `tax_amount`, `discount_amount`, `total_amount`, `currency_code`, `promotion_id`, `notes`, `internal_notes`, `ip_address`, `user_agent`, `ordered_at`, `confirmed_at`, `shipped_at`, `delivered_at`\nfrom `orders`\nwhere `order_id` = "), Fragment.encode(OrdersId.mariaType, orderId), Fragment.lit("")).query(OrdersRow._rowParser.first()).runUnchecked(c) override fun selectByIds( orderIds: Array, c: Connection ): List { val fragments: ArrayList = ArrayList() - for (id in orderIds) { fragments.add(Fragment.encode(OrdersId.dbType, id)) } + for (id in orderIds) { fragments.add(Fragment.encode(OrdersId.mariaType, id)) } return Fragment.interpolate(Fragment.lit("select `order_id`, `order_number`, `customer_id`, `order_status`, `payment_status`, `shipping_address_id`, `billing_address_id`, `subtotal`, `shipping_cost`, `tax_amount`, `discount_amount`, `total_amount`, `currency_code`, `promotion_id`, `notes`, `internal_notes`, `ip_address`, `user_agent`, `ordered_at`, `confirmed_at`, `shipped_at`, `delivered_at` from `orders` where `order_id` in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).query(OrdersRow._rowParser.all()).runUnchecked(c) } @@ -188,13 +188,13 @@ class OrdersRepoImpl() : OrdersRepo { c: Connection ): Boolean { val orderId: OrdersId = row.orderId - return Fragment.interpolate(Fragment.lit("update `orders`\nset `order_number` = "), Fragment.encode(MariaTypes.varchar, row.orderNumber), Fragment.lit(",\n`customer_id` = "), Fragment.encode(CustomersId.dbType, row.customerId), Fragment.lit(",\n`order_status` = "), Fragment.encode(MariaTypes.text, row.orderStatus), Fragment.lit(",\n`payment_status` = "), Fragment.encode(MariaTypes.text, row.paymentStatus), Fragment.lit(",\n`shipping_address_id` = "), Fragment.encode(CustomerAddressesId.dbType.nullable(), row.shippingAddressId), Fragment.lit(",\n`billing_address_id` = "), Fragment.encode(CustomerAddressesId.dbType.nullable(), row.billingAddressId), Fragment.lit(",\n`subtotal` = "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, row.subtotal), Fragment.lit(",\n`shipping_cost` = "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, row.shippingCost), Fragment.lit(",\n`tax_amount` = "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, row.taxAmount), Fragment.lit(",\n`discount_amount` = "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, row.discountAmount), Fragment.lit(",\n`total_amount` = "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, row.totalAmount), Fragment.lit(",\n`currency_code` = "), Fragment.encode(MariaTypes.char_, row.currencyCode), Fragment.lit(",\n`promotion_id` = "), Fragment.encode(PromotionsId.dbType.nullable(), row.promotionId), Fragment.lit(",\n`notes` = "), Fragment.encode(MariaTypes.text.nullable(), row.notes), Fragment.lit(",\n`internal_notes` = "), Fragment.encode(MariaTypes.mediumtext.nullable(), row.internalNotes), Fragment.lit(",\n`ip_address` = "), Fragment.encode(MariaTypes.inet6.nullable(), row.ipAddress), Fragment.lit(",\n`user_agent` = "), Fragment.encode(MariaTypes.varchar.nullable(), row.userAgent), Fragment.lit(",\n`ordered_at` = "), Fragment.encode(MariaTypes.datetime, row.orderedAt), Fragment.lit(",\n`confirmed_at` = "), Fragment.encode(MariaTypes.datetime.nullable(), row.confirmedAt), Fragment.lit(",\n`shipped_at` = "), Fragment.encode(MariaTypes.datetime.nullable(), row.shippedAt), Fragment.lit(",\n`delivered_at` = "), Fragment.encode(MariaTypes.datetime.nullable(), row.deliveredAt), Fragment.lit("\nwhere `order_id` = "), Fragment.encode(OrdersId.dbType, orderId), Fragment.lit("")).update().runUnchecked(c) > 0 + return Fragment.interpolate(Fragment.lit("update `orders`\nset `order_number` = "), Fragment.encode(MariaTypes.varchar, row.orderNumber), Fragment.lit(",\n`customer_id` = "), Fragment.encode(CustomersId.mariaType, row.customerId), Fragment.lit(",\n`order_status` = "), Fragment.encode(MariaTypes.text, row.orderStatus), Fragment.lit(",\n`payment_status` = "), Fragment.encode(MariaTypes.text, row.paymentStatus), Fragment.lit(",\n`shipping_address_id` = "), Fragment.encode(CustomerAddressesId.mariaType.nullable(), row.shippingAddressId), Fragment.lit(",\n`billing_address_id` = "), Fragment.encode(CustomerAddressesId.mariaType.nullable(), row.billingAddressId), Fragment.lit(",\n`subtotal` = "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, row.subtotal), Fragment.lit(",\n`shipping_cost` = "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, row.shippingCost), Fragment.lit(",\n`tax_amount` = "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, row.taxAmount), Fragment.lit(",\n`discount_amount` = "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, row.discountAmount), Fragment.lit(",\n`total_amount` = "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, row.totalAmount), Fragment.lit(",\n`currency_code` = "), Fragment.encode(MariaTypes.char_, row.currencyCode), Fragment.lit(",\n`promotion_id` = "), Fragment.encode(PromotionsId.mariaType.nullable(), row.promotionId), Fragment.lit(",\n`notes` = "), Fragment.encode(MariaTypes.text.nullable(), row.notes), Fragment.lit(",\n`internal_notes` = "), Fragment.encode(MariaTypes.mediumtext.nullable(), row.internalNotes), Fragment.lit(",\n`ip_address` = "), Fragment.encode(MariaTypes.inet6.nullable(), row.ipAddress), Fragment.lit(",\n`user_agent` = "), Fragment.encode(MariaTypes.varchar.nullable(), row.userAgent), Fragment.lit(",\n`ordered_at` = "), Fragment.encode(MariaTypes.datetime, row.orderedAt), Fragment.lit(",\n`confirmed_at` = "), Fragment.encode(MariaTypes.datetime.nullable(), row.confirmedAt), Fragment.lit(",\n`shipped_at` = "), Fragment.encode(MariaTypes.datetime.nullable(), row.shippedAt), Fragment.lit(",\n`delivered_at` = "), Fragment.encode(MariaTypes.datetime.nullable(), row.deliveredAt), Fragment.lit("\nwhere `order_id` = "), Fragment.encode(OrdersId.mariaType, orderId), Fragment.lit("")).update().runUnchecked(c) > 0 } override fun upsert( unsaved: OrdersRow, c: Connection - ): OrdersRow = Fragment.interpolate(Fragment.lit("INSERT INTO `orders`(`order_id`, `order_number`, `customer_id`, `order_status`, `payment_status`, `shipping_address_id`, `billing_address_id`, `subtotal`, `shipping_cost`, `tax_amount`, `discount_amount`, `total_amount`, `currency_code`, `promotion_id`, `notes`, `internal_notes`, `ip_address`, `user_agent`, `ordered_at`, `confirmed_at`, `shipped_at`, `delivered_at`)\nVALUES ("), Fragment.encode(OrdersId.dbType, unsaved.orderId), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.orderNumber), Fragment.lit(", "), Fragment.encode(CustomersId.dbType, unsaved.customerId), Fragment.lit(", "), Fragment.encode(MariaTypes.text, unsaved.orderStatus), Fragment.lit(", "), Fragment.encode(MariaTypes.text, unsaved.paymentStatus), Fragment.lit(", "), Fragment.encode(CustomerAddressesId.dbType.nullable(), unsaved.shippingAddressId), Fragment.lit(", "), Fragment.encode(CustomerAddressesId.dbType.nullable(), unsaved.billingAddressId), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, unsaved.subtotal), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, unsaved.shippingCost), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, unsaved.taxAmount), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, unsaved.discountAmount), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, unsaved.totalAmount), Fragment.lit(", "), Fragment.encode(MariaTypes.char_, unsaved.currencyCode), Fragment.lit(", "), Fragment.encode(PromotionsId.dbType.nullable(), unsaved.promotionId), Fragment.lit(", "), Fragment.encode(MariaTypes.text.nullable(), unsaved.notes), Fragment.lit(", "), Fragment.encode(MariaTypes.mediumtext.nullable(), unsaved.internalNotes), Fragment.lit(", "), Fragment.encode(MariaTypes.inet6.nullable(), unsaved.ipAddress), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.userAgent), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.orderedAt), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime.nullable(), unsaved.confirmedAt), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime.nullable(), unsaved.shippedAt), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime.nullable(), unsaved.deliveredAt), Fragment.lit(")\nON DUPLICATE KEY UPDATE `order_number` = VALUES(`order_number`),\n`customer_id` = VALUES(`customer_id`),\n`order_status` = VALUES(`order_status`),\n`payment_status` = VALUES(`payment_status`),\n`shipping_address_id` = VALUES(`shipping_address_id`),\n`billing_address_id` = VALUES(`billing_address_id`),\n`subtotal` = VALUES(`subtotal`),\n`shipping_cost` = VALUES(`shipping_cost`),\n`tax_amount` = VALUES(`tax_amount`),\n`discount_amount` = VALUES(`discount_amount`),\n`total_amount` = VALUES(`total_amount`),\n`currency_code` = VALUES(`currency_code`),\n`promotion_id` = VALUES(`promotion_id`),\n`notes` = VALUES(`notes`),\n`internal_notes` = VALUES(`internal_notes`),\n`ip_address` = VALUES(`ip_address`),\n`user_agent` = VALUES(`user_agent`),\n`ordered_at` = VALUES(`ordered_at`),\n`confirmed_at` = VALUES(`confirmed_at`),\n`shipped_at` = VALUES(`shipped_at`),\n`delivered_at` = VALUES(`delivered_at`)\nRETURNING `order_id`, `order_number`, `customer_id`, `order_status`, `payment_status`, `shipping_address_id`, `billing_address_id`, `subtotal`, `shipping_cost`, `tax_amount`, `discount_amount`, `total_amount`, `currency_code`, `promotion_id`, `notes`, `internal_notes`, `ip_address`, `user_agent`, `ordered_at`, `confirmed_at`, `shipped_at`, `delivered_at`")) + ): OrdersRow = Fragment.interpolate(Fragment.lit("INSERT INTO `orders`(`order_id`, `order_number`, `customer_id`, `order_status`, `payment_status`, `shipping_address_id`, `billing_address_id`, `subtotal`, `shipping_cost`, `tax_amount`, `discount_amount`, `total_amount`, `currency_code`, `promotion_id`, `notes`, `internal_notes`, `ip_address`, `user_agent`, `ordered_at`, `confirmed_at`, `shipped_at`, `delivered_at`)\nVALUES ("), Fragment.encode(OrdersId.mariaType, unsaved.orderId), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.orderNumber), Fragment.lit(", "), Fragment.encode(CustomersId.mariaType, unsaved.customerId), Fragment.lit(", "), Fragment.encode(MariaTypes.text, unsaved.orderStatus), Fragment.lit(", "), Fragment.encode(MariaTypes.text, unsaved.paymentStatus), Fragment.lit(", "), Fragment.encode(CustomerAddressesId.mariaType.nullable(), unsaved.shippingAddressId), Fragment.lit(", "), Fragment.encode(CustomerAddressesId.mariaType.nullable(), unsaved.billingAddressId), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, unsaved.subtotal), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, unsaved.shippingCost), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, unsaved.taxAmount), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, unsaved.discountAmount), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, unsaved.totalAmount), Fragment.lit(", "), Fragment.encode(MariaTypes.char_, unsaved.currencyCode), Fragment.lit(", "), Fragment.encode(PromotionsId.mariaType.nullable(), unsaved.promotionId), Fragment.lit(", "), Fragment.encode(MariaTypes.text.nullable(), unsaved.notes), Fragment.lit(", "), Fragment.encode(MariaTypes.mediumtext.nullable(), unsaved.internalNotes), Fragment.lit(", "), Fragment.encode(MariaTypes.inet6.nullable(), unsaved.ipAddress), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.userAgent), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.orderedAt), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime.nullable(), unsaved.confirmedAt), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime.nullable(), unsaved.shippedAt), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime.nullable(), unsaved.deliveredAt), Fragment.lit(")\nON DUPLICATE KEY UPDATE `order_number` = VALUES(`order_number`),\n`customer_id` = VALUES(`customer_id`),\n`order_status` = VALUES(`order_status`),\n`payment_status` = VALUES(`payment_status`),\n`shipping_address_id` = VALUES(`shipping_address_id`),\n`billing_address_id` = VALUES(`billing_address_id`),\n`subtotal` = VALUES(`subtotal`),\n`shipping_cost` = VALUES(`shipping_cost`),\n`tax_amount` = VALUES(`tax_amount`),\n`discount_amount` = VALUES(`discount_amount`),\n`total_amount` = VALUES(`total_amount`),\n`currency_code` = VALUES(`currency_code`),\n`promotion_id` = VALUES(`promotion_id`),\n`notes` = VALUES(`notes`),\n`internal_notes` = VALUES(`internal_notes`),\n`ip_address` = VALUES(`ip_address`),\n`user_agent` = VALUES(`user_agent`),\n`ordered_at` = VALUES(`ordered_at`),\n`confirmed_at` = VALUES(`confirmed_at`),\n`shipped_at` = VALUES(`shipped_at`),\n`delivered_at` = VALUES(`delivered_at`)\nRETURNING `order_id`, `order_number`, `customer_id`, `order_status`, `payment_status`, `shipping_address_id`, `billing_address_id`, `subtotal`, `shipping_cost`, `tax_amount`, `discount_amount`, `total_amount`, `currency_code`, `promotion_id`, `notes`, `internal_notes`, `ip_address`, `user_agent`, `ordered_at`, `confirmed_at`, `shipped_at`, `delivered_at`")) .updateReturning(OrdersRow._rowParser.exactlyOne()) .runUnchecked(c) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/orders/OrdersRow.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/orders/OrdersRow.kt index e4a75c5e91..2c2406a697 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/orders/OrdersRow.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/orders/OrdersRow.kt @@ -177,6 +177,6 @@ data class OrdersRow( ): OrdersRowUnsaved = OrdersRowUnsaved(orderNumber, customerId, subtotal, totalAmount, orderStatus, paymentStatus, shippingAddressId, billingAddressId, shippingCost, taxAmount, discountAmount, currencyCode, promotionId, notes, internalNotes, ipAddress, userAgent, orderedAt, confirmedAt, shippedAt, deliveredAt) companion object { - val _rowParser: RowParser = RowParsers.of(OrdersId.dbType, MariaTypes.varchar, CustomersId.dbType, MariaTypes.text, MariaTypes.text, CustomerAddressesId.dbType.nullable(), CustomerAddressesId.dbType.nullable(), KotlinDbTypes.MariaTypes.numeric, KotlinDbTypes.MariaTypes.numeric, KotlinDbTypes.MariaTypes.numeric, KotlinDbTypes.MariaTypes.numeric, KotlinDbTypes.MariaTypes.numeric, MariaTypes.char_, PromotionsId.dbType.nullable(), MariaTypes.text.nullable(), MariaTypes.mediumtext.nullable(), MariaTypes.inet6.nullable(), MariaTypes.varchar.nullable(), MariaTypes.datetime, MariaTypes.datetime.nullable(), MariaTypes.datetime.nullable(), MariaTypes.datetime.nullable(), { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21 -> OrdersRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21) }, { row -> arrayOf(row.orderId, row.orderNumber, row.customerId, row.orderStatus, row.paymentStatus, row.shippingAddressId, row.billingAddressId, row.subtotal, row.shippingCost, row.taxAmount, row.discountAmount, row.totalAmount, row.currencyCode, row.promotionId, row.notes, row.internalNotes, row.ipAddress, row.userAgent, row.orderedAt, row.confirmedAt, row.shippedAt, row.deliveredAt) }) + val _rowParser: RowParser = RowParsers.of(OrdersId.mariaType, MariaTypes.varchar, CustomersId.mariaType, MariaTypes.text, MariaTypes.text, CustomerAddressesId.mariaType.nullable(), CustomerAddressesId.mariaType.nullable(), KotlinDbTypes.MariaTypes.numeric, KotlinDbTypes.MariaTypes.numeric, KotlinDbTypes.MariaTypes.numeric, KotlinDbTypes.MariaTypes.numeric, KotlinDbTypes.MariaTypes.numeric, MariaTypes.char_, PromotionsId.mariaType.nullable(), MariaTypes.text.nullable(), MariaTypes.mediumtext.nullable(), MariaTypes.inet6.nullable(), MariaTypes.varchar.nullable(), MariaTypes.datetime, MariaTypes.datetime.nullable(), MariaTypes.datetime.nullable(), MariaTypes.datetime.nullable(), { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21 -> OrdersRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21) }, { row -> arrayOf(row.orderId, row.orderNumber, row.customerId, row.orderStatus, row.paymentStatus, row.shippingAddressId, row.billingAddressId, row.subtotal, row.shippingCost, row.taxAmount, row.discountAmount, row.totalAmount, row.currencyCode, row.promotionId, row.notes, row.internalNotes, row.ipAddress, row.userAgent, row.orderedAt, row.confirmedAt, row.shippedAt, row.deliveredAt) }) } } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/payment_methods/PaymentMethodsFields.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/payment_methods/PaymentMethodsFields.kt index b4108e0391..f02c2b29a2 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/payment_methods/PaymentMethodsFields.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/payment_methods/PaymentMethodsFields.kt @@ -19,8 +19,9 @@ import dev.typr.foundations.kotlin.SqlExpr.IdField import dev.typr.foundations.kotlin.SqlExpr.OptField import dev.typr.foundations.kotlin.TupleExpr7 import kotlin.collections.List +import testdb.userdefined.IsActive -data class PaymentMethodsFields(val _path: List) : TupleExpr7, RelationStructure, FieldsBase { +data class PaymentMethodsFields(val _path: List) : TupleExpr7, RelationStructure, FieldsBase { override fun _1(): SqlExpr = methodId() override fun _2(): SqlExpr = code() @@ -31,7 +32,7 @@ data class PaymentMethodsFields(val _path: List) : TupleExpr7 = processorConfig() - override fun _6(): SqlExpr = isActive() + override fun _6(): SqlExpr = isActive() override fun _7(): SqlExpr = sortOrder() @@ -41,9 +42,9 @@ data class PaymentMethodsFields(val _path: List) : TupleExpr7> = listOf(this.methodId().underlying, this.code().underlying, this.name().underlying, this.methodType().underlying, this.processorConfig().underlying, this.isActive().underlying, this.sortOrder().underlying) - fun isActive(): Field = Field(_path, "is_active", PaymentMethodsRow::isActive, null, null, { row, value -> row.copy(isActive = value) }, KotlinDbTypes.MariaTypes.bool) + fun isActive(): Field = Field(_path, "is_active", PaymentMethodsRow::isActive, null, null, { row, value -> row.copy(isActive = value) }, IsActive.mariaType) - fun methodId(): IdField = IdField(_path, "method_id", PaymentMethodsRow::methodId, null, null, { row, value -> row.copy(methodId = value) }, PaymentMethodsId.dbType) + fun methodId(): IdField = IdField(_path, "method_id", PaymentMethodsRow::methodId, null, null, { row, value -> row.copy(methodId = value) }, PaymentMethodsId.mariaType) fun methodType(): Field = Field(_path, "method_type", PaymentMethodsRow::methodType, null, null, { row, value -> row.copy(methodType = value) }, MariaTypes.text) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/payment_methods/PaymentMethodsId.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/payment_methods/PaymentMethodsId.kt index d0e3291a0b..bcc4b11a22 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/payment_methods/PaymentMethodsId.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/payment_methods/PaymentMethodsId.kt @@ -21,7 +21,7 @@ data class PaymentMethodsId(@field:JsonValue val value: Uint1) { val bijection: Bijection = Bijection.of(PaymentMethodsId::value, ::PaymentMethodsId) - val dbType: MariaType = + val mariaType: MariaType = MariaTypes.tinyintUnsigned.bimap(::PaymentMethodsId, PaymentMethodsId::value) } } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/payment_methods/PaymentMethodsRepoImpl.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/payment_methods/PaymentMethodsRepoImpl.kt index 26c42b05c3..ef24ae7ba1 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/payment_methods/PaymentMethodsRepoImpl.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/payment_methods/PaymentMethodsRepoImpl.kt @@ -19,6 +19,7 @@ import kotlin.collections.Iterator import kotlin.collections.List import kotlin.collections.Map import kotlin.collections.MutableMap +import testdb.userdefined.IsActive class PaymentMethodsRepoImpl() : PaymentMethodsRepo { override fun delete(): DeleteBuilder = DeleteBuilder.of("`payment_methods`", PaymentMethodsFields.structure, Dialect.MARIADB) @@ -26,21 +27,21 @@ class PaymentMethodsRepoImpl() : PaymentMethodsRepo { override fun deleteById( methodId: PaymentMethodsId, c: Connection - ): Boolean = Fragment.interpolate(Fragment.lit("delete from `payment_methods` where `method_id` = "), Fragment.encode(PaymentMethodsId.dbType, methodId), Fragment.lit("")).update().runUnchecked(c) > 0 + ): Boolean = Fragment.interpolate(Fragment.lit("delete from `payment_methods` where `method_id` = "), Fragment.encode(PaymentMethodsId.mariaType, methodId), Fragment.lit("")).update().runUnchecked(c) > 0 override fun deleteByIds( methodIds: Array, c: Connection ): Int { val fragments: ArrayList = ArrayList() - for (id in methodIds) { fragments.add(Fragment.encode(PaymentMethodsId.dbType, id)) } + for (id in methodIds) { fragments.add(Fragment.encode(PaymentMethodsId.mariaType, id)) } return Fragment.interpolate(Fragment.lit("delete from `payment_methods` where `method_id` in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).update().runUnchecked(c) } override fun insert( unsaved: PaymentMethodsRow, c: Connection - ): PaymentMethodsRow = Fragment.interpolate(Fragment.lit("insert into `payment_methods`(`code`, `name`, `method_type`, `processor_config`, `is_active`, `sort_order`)\nvalues ("), Fragment.encode(MariaTypes.varchar, unsaved.code), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.name), Fragment.lit(", "), Fragment.encode(MariaTypes.text, unsaved.methodType), Fragment.lit(", "), Fragment.encode(MariaTypes.json.nullable(), unsaved.processorConfig), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.bool, unsaved.isActive), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.tinyint, unsaved.sortOrder), Fragment.lit(")\nRETURNING `method_id`, `code`, `name`, `method_type`, `processor_config`, `is_active`, `sort_order`\n")) + ): PaymentMethodsRow = Fragment.interpolate(Fragment.lit("insert into `payment_methods`(`code`, `name`, `method_type`, `processor_config`, `is_active`, `sort_order`)\nvalues ("), Fragment.encode(MariaTypes.varchar, unsaved.code), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.name), Fragment.lit(", "), Fragment.encode(MariaTypes.text, unsaved.methodType), Fragment.lit(", "), Fragment.encode(MariaTypes.json.nullable(), unsaved.processorConfig), Fragment.lit(", "), Fragment.encode(IsActive.mariaType, unsaved.isActive), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.tinyint, unsaved.sortOrder), Fragment.lit(")\nRETURNING `method_id`, `code`, `name`, `method_type`, `processor_config`, `is_active`, `sort_order`\n")) .updateReturning(PaymentMethodsRow._rowParser.exactlyOne()).runUnchecked(c) override fun insert( @@ -63,7 +64,7 @@ class PaymentMethodsRepoImpl() : PaymentMethodsRepo { unsaved.isActive.visit( { }, { value -> columns.add(Fragment.lit("`is_active`")) - values.add(Fragment.interpolate(Fragment.encode(KotlinDbTypes.MariaTypes.bool, value), Fragment.lit(""))) } + values.add(Fragment.interpolate(Fragment.encode(IsActive.mariaType, value), Fragment.lit(""))) } ); unsaved.sortOrder.visit( { }, @@ -81,14 +82,14 @@ class PaymentMethodsRepoImpl() : PaymentMethodsRepo { override fun selectById( methodId: PaymentMethodsId, c: Connection - ): PaymentMethodsRow? = Fragment.interpolate(Fragment.lit("select `method_id`, `code`, `name`, `method_type`, `processor_config`, `is_active`, `sort_order`\nfrom `payment_methods`\nwhere `method_id` = "), Fragment.encode(PaymentMethodsId.dbType, methodId), Fragment.lit("")).query(PaymentMethodsRow._rowParser.first()).runUnchecked(c) + ): PaymentMethodsRow? = Fragment.interpolate(Fragment.lit("select `method_id`, `code`, `name`, `method_type`, `processor_config`, `is_active`, `sort_order`\nfrom `payment_methods`\nwhere `method_id` = "), Fragment.encode(PaymentMethodsId.mariaType, methodId), Fragment.lit("")).query(PaymentMethodsRow._rowParser.first()).runUnchecked(c) override fun selectByIds( methodIds: Array, c: Connection ): List { val fragments: ArrayList = ArrayList() - for (id in methodIds) { fragments.add(Fragment.encode(PaymentMethodsId.dbType, id)) } + for (id in methodIds) { fragments.add(Fragment.encode(PaymentMethodsId.mariaType, id)) } return Fragment.interpolate(Fragment.lit("select `method_id`, `code`, `name`, `method_type`, `processor_config`, `is_active`, `sort_order` from `payment_methods` where `method_id` in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).query(PaymentMethodsRow._rowParser.all()).runUnchecked(c) } @@ -113,13 +114,13 @@ class PaymentMethodsRepoImpl() : PaymentMethodsRepo { c: Connection ): Boolean { val methodId: PaymentMethodsId = row.methodId - return Fragment.interpolate(Fragment.lit("update `payment_methods`\nset `code` = "), Fragment.encode(MariaTypes.varchar, row.code), Fragment.lit(",\n`name` = "), Fragment.encode(MariaTypes.varchar, row.name), Fragment.lit(",\n`method_type` = "), Fragment.encode(MariaTypes.text, row.methodType), Fragment.lit(",\n`processor_config` = "), Fragment.encode(MariaTypes.json.nullable(), row.processorConfig), Fragment.lit(",\n`is_active` = "), Fragment.encode(KotlinDbTypes.MariaTypes.bool, row.isActive), Fragment.lit(",\n`sort_order` = "), Fragment.encode(KotlinDbTypes.MariaTypes.tinyint, row.sortOrder), Fragment.lit("\nwhere `method_id` = "), Fragment.encode(PaymentMethodsId.dbType, methodId), Fragment.lit("")).update().runUnchecked(c) > 0 + return Fragment.interpolate(Fragment.lit("update `payment_methods`\nset `code` = "), Fragment.encode(MariaTypes.varchar, row.code), Fragment.lit(",\n`name` = "), Fragment.encode(MariaTypes.varchar, row.name), Fragment.lit(",\n`method_type` = "), Fragment.encode(MariaTypes.text, row.methodType), Fragment.lit(",\n`processor_config` = "), Fragment.encode(MariaTypes.json.nullable(), row.processorConfig), Fragment.lit(",\n`is_active` = "), Fragment.encode(IsActive.mariaType, row.isActive), Fragment.lit(",\n`sort_order` = "), Fragment.encode(KotlinDbTypes.MariaTypes.tinyint, row.sortOrder), Fragment.lit("\nwhere `method_id` = "), Fragment.encode(PaymentMethodsId.mariaType, methodId), Fragment.lit("")).update().runUnchecked(c) > 0 } override fun upsert( unsaved: PaymentMethodsRow, c: Connection - ): PaymentMethodsRow = Fragment.interpolate(Fragment.lit("INSERT INTO `payment_methods`(`method_id`, `code`, `name`, `method_type`, `processor_config`, `is_active`, `sort_order`)\nVALUES ("), Fragment.encode(PaymentMethodsId.dbType, unsaved.methodId), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.code), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.name), Fragment.lit(", "), Fragment.encode(MariaTypes.text, unsaved.methodType), Fragment.lit(", "), Fragment.encode(MariaTypes.json.nullable(), unsaved.processorConfig), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.bool, unsaved.isActive), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.tinyint, unsaved.sortOrder), Fragment.lit(")\nON DUPLICATE KEY UPDATE `code` = VALUES(`code`),\n`name` = VALUES(`name`),\n`method_type` = VALUES(`method_type`),\n`processor_config` = VALUES(`processor_config`),\n`is_active` = VALUES(`is_active`),\n`sort_order` = VALUES(`sort_order`)\nRETURNING `method_id`, `code`, `name`, `method_type`, `processor_config`, `is_active`, `sort_order`")) + ): PaymentMethodsRow = Fragment.interpolate(Fragment.lit("INSERT INTO `payment_methods`(`method_id`, `code`, `name`, `method_type`, `processor_config`, `is_active`, `sort_order`)\nVALUES ("), Fragment.encode(PaymentMethodsId.mariaType, unsaved.methodId), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.code), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.name), Fragment.lit(", "), Fragment.encode(MariaTypes.text, unsaved.methodType), Fragment.lit(", "), Fragment.encode(MariaTypes.json.nullable(), unsaved.processorConfig), Fragment.lit(", "), Fragment.encode(IsActive.mariaType, unsaved.isActive), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.tinyint, unsaved.sortOrder), Fragment.lit(")\nON DUPLICATE KEY UPDATE `code` = VALUES(`code`),\n`name` = VALUES(`name`),\n`method_type` = VALUES(`method_type`),\n`processor_config` = VALUES(`processor_config`),\n`is_active` = VALUES(`is_active`),\n`sort_order` = VALUES(`sort_order`)\nRETURNING `method_id`, `code`, `name`, `method_type`, `processor_config`, `is_active`, `sort_order`")) .updateReturning(PaymentMethodsRow._rowParser.exactlyOne()) .runUnchecked(c) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/payment_methods/PaymentMethodsRow.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/payment_methods/PaymentMethodsRow.kt index a823108fb0..bab3ad8b6a 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/payment_methods/PaymentMethodsRow.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/payment_methods/PaymentMethodsRow.kt @@ -14,6 +14,7 @@ import dev.typr.foundations.kotlin.RowParser import dev.typr.foundations.kotlin.RowParsers import dev.typr.foundations.kotlin.nullable import testdb.customtypes.Defaulted +import testdb.userdefined.IsActive /** Table: payment_methods * Primary key: method_id @@ -36,12 +37,12 @@ data class PaymentMethodsRow( /** * Default: 1 */ - @field:JsonProperty("is_active") val isActive: Boolean, + @field:JsonProperty("is_active") val isActive: /* user-picked */ IsActive, /** * Default: 0 */ @field:JsonProperty("sort_order") val sortOrder: Byte -) : Tuple7 { +) : Tuple7 { override fun _1(): PaymentMethodsId = methodId override fun _2(): String = code @@ -52,7 +53,7 @@ data class PaymentMethodsRow( override fun _5(): Json? = processorConfig - override fun _6(): Boolean = isActive + override fun _6(): /* user-picked */ IsActive = isActive override fun _7(): Byte = sortOrder @@ -60,11 +61,11 @@ data class PaymentMethodsRow( fun toUnsavedRow( processorConfig: Defaulted = Defaulted.Provided(this.processorConfig), - isActive: Defaulted = Defaulted.Provided(this.isActive), + isActive: Defaulted = Defaulted.Provided(this.isActive), sortOrder: Defaulted = Defaulted.Provided(this.sortOrder) ): PaymentMethodsRowUnsaved = PaymentMethodsRowUnsaved(code, name, methodType, processorConfig, isActive, sortOrder) companion object { - val _rowParser: RowParser = RowParsers.of(PaymentMethodsId.dbType, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.text, MariaTypes.json.nullable(), KotlinDbTypes.MariaTypes.bool, KotlinDbTypes.MariaTypes.tinyint, { t0, t1, t2, t3, t4, t5, t6 -> PaymentMethodsRow(t0, t1, t2, t3, t4, t5, t6) }, { row -> arrayOf(row.methodId, row.code, row.name, row.methodType, row.processorConfig, row.isActive, row.sortOrder) }) + val _rowParser: RowParser = RowParsers.of(PaymentMethodsId.mariaType, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.text, MariaTypes.json.nullable(), IsActive.mariaType, KotlinDbTypes.MariaTypes.tinyint, { t0, t1, t2, t3, t4, t5, t6 -> PaymentMethodsRow(t0, t1, t2, t3, t4, t5, t6) }, { row -> arrayOf(row.methodId, row.code, row.name, row.methodType, row.processorConfig, row.isActive, row.sortOrder) }) } } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/payment_methods/PaymentMethodsRowUnsaved.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/payment_methods/PaymentMethodsRowUnsaved.kt index ed093975a6..6b45da42cc 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/payment_methods/PaymentMethodsRowUnsaved.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/payment_methods/PaymentMethodsRowUnsaved.kt @@ -9,6 +9,7 @@ import com.fasterxml.jackson.annotation.JsonProperty import dev.typr.foundations.data.Json import testdb.customtypes.Defaulted import testdb.customtypes.Defaulted.UseDefault +import testdb.userdefined.IsActive /** This class corresponds to a row in table `payment_methods` which has not been persisted yet */ data class PaymentMethodsRowUnsaved( @@ -25,7 +26,7 @@ data class PaymentMethodsRowUnsaved( /** Default: 1 */ - @field:JsonProperty("is_active") val isActive: Defaulted = UseDefault(), + @field:JsonProperty("is_active") val isActive: Defaulted = UseDefault(), /** Default: 0 */ @@ -33,7 +34,7 @@ data class PaymentMethodsRowUnsaved( ) { fun toRow( processorConfigDefault: () -> Json?, - isActiveDefault: () -> Boolean, + isActiveDefault: () -> /* user-picked */ IsActive, sortOrderDefault: () -> Byte, methodIdDefault: () -> PaymentMethodsId ): PaymentMethodsRow = PaymentMethodsRow(methodId = methodIdDefault(), code = code, name = name, methodType = methodType, processorConfig = processorConfig.getOrElse(processorConfigDefault), isActive = isActive.getOrElse(isActiveDefault), sortOrder = sortOrder.getOrElse(sortOrderDefault)) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/payments/PaymentsFields.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/payments/PaymentsFields.kt index 2db51c7188..a4277de11f 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/payments/PaymentsFields.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/payments/PaymentsFields.kt @@ -73,11 +73,11 @@ data class PaymentsFields(val _path: List) : TupleExpr12 = OptField(_path, "ip_address", PaymentsRow::ipAddress, null, null, { row, value -> row.copy(ipAddress = value) }, MariaTypes.inet6) - fun methodId(): Field = Field(_path, "method_id", PaymentsRow::methodId, null, null, { row, value -> row.copy(methodId = value) }, PaymentMethodsId.dbType) + fun methodId(): Field = Field(_path, "method_id", PaymentsRow::methodId, null, null, { row, value -> row.copy(methodId = value) }, PaymentMethodsId.mariaType) - fun orderId(): Field = Field(_path, "order_id", PaymentsRow::orderId, null, null, { row, value -> row.copy(orderId = value) }, OrdersId.dbType) + fun orderId(): Field = Field(_path, "order_id", PaymentsRow::orderId, null, null, { row, value -> row.copy(orderId = value) }, OrdersId.mariaType) - fun paymentId(): IdField = IdField(_path, "payment_id", PaymentsRow::paymentId, null, null, { row, value -> row.copy(paymentId = value) }, PaymentsId.dbType) + fun paymentId(): IdField = IdField(_path, "payment_id", PaymentsRow::paymentId, null, null, { row, value -> row.copy(paymentId = value) }, PaymentsId.mariaType) fun processedAt(): OptField = OptField(_path, "processed_at", PaymentsRow::processedAt, null, null, { row, value -> row.copy(processedAt = value) }, MariaTypes.datetime) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/payments/PaymentsId.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/payments/PaymentsId.kt index 3f2e466d34..032427bfb6 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/payments/PaymentsId.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/payments/PaymentsId.kt @@ -21,7 +21,7 @@ data class PaymentsId(@field:JsonValue val value: Uint8) { val bijection: Bijection = Bijection.of(PaymentsId::value, ::PaymentsId) - val dbType: MariaType = + val mariaType: MariaType = MariaTypes.bigintUnsigned.bimap(::PaymentsId, PaymentsId::value) } } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/payments/PaymentsRepoImpl.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/payments/PaymentsRepoImpl.kt index d68fd3ca56..e1f4bec997 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/payments/PaymentsRepoImpl.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/payments/PaymentsRepoImpl.kt @@ -28,21 +28,21 @@ class PaymentsRepoImpl() : PaymentsRepo { override fun deleteById( paymentId: PaymentsId, c: Connection - ): Boolean = Fragment.interpolate(Fragment.lit("delete from `payments` where `payment_id` = "), Fragment.encode(PaymentsId.dbType, paymentId), Fragment.lit("")).update().runUnchecked(c) > 0 + ): Boolean = Fragment.interpolate(Fragment.lit("delete from `payments` where `payment_id` = "), Fragment.encode(PaymentsId.mariaType, paymentId), Fragment.lit("")).update().runUnchecked(c) > 0 override fun deleteByIds( paymentIds: Array, c: Connection ): Int { val fragments: ArrayList = ArrayList() - for (id in paymentIds) { fragments.add(Fragment.encode(PaymentsId.dbType, id)) } + for (id in paymentIds) { fragments.add(Fragment.encode(PaymentsId.mariaType, id)) } return Fragment.interpolate(Fragment.lit("delete from `payments` where `payment_id` in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).update().runUnchecked(c) } override fun insert( unsaved: PaymentsRow, c: Connection - ): PaymentsRow = Fragment.interpolate(Fragment.lit("insert into `payments`(`order_id`, `method_id`, `transaction_id`, `amount`, `currency_code`, `status`, `processor_response`, `error_message`, `ip_address`, `created_at`, `processed_at`)\nvalues ("), Fragment.encode(OrdersId.dbType, unsaved.orderId), Fragment.lit(", "), Fragment.encode(PaymentMethodsId.dbType, unsaved.methodId), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.transactionId), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, unsaved.amount), Fragment.lit(", "), Fragment.encode(MariaTypes.char_, unsaved.currencyCode), Fragment.lit(", "), Fragment.encode(MariaTypes.text, unsaved.status), Fragment.lit(", "), Fragment.encode(MariaTypes.json.nullable(), unsaved.processorResponse), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.errorMessage), Fragment.lit(", "), Fragment.encode(MariaTypes.inet6.nullable(), unsaved.ipAddress), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.createdAt), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime.nullable(), unsaved.processedAt), Fragment.lit(")\nRETURNING `payment_id`, `order_id`, `method_id`, `transaction_id`, `amount`, `currency_code`, `status`, `processor_response`, `error_message`, `ip_address`, `created_at`, `processed_at`\n")) + ): PaymentsRow = Fragment.interpolate(Fragment.lit("insert into `payments`(`order_id`, `method_id`, `transaction_id`, `amount`, `currency_code`, `status`, `processor_response`, `error_message`, `ip_address`, `created_at`, `processed_at`)\nvalues ("), Fragment.encode(OrdersId.mariaType, unsaved.orderId), Fragment.lit(", "), Fragment.encode(PaymentMethodsId.mariaType, unsaved.methodId), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.transactionId), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, unsaved.amount), Fragment.lit(", "), Fragment.encode(MariaTypes.char_, unsaved.currencyCode), Fragment.lit(", "), Fragment.encode(MariaTypes.text, unsaved.status), Fragment.lit(", "), Fragment.encode(MariaTypes.json.nullable(), unsaved.processorResponse), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.errorMessage), Fragment.lit(", "), Fragment.encode(MariaTypes.inet6.nullable(), unsaved.ipAddress), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.createdAt), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime.nullable(), unsaved.processedAt), Fragment.lit(")\nRETURNING `payment_id`, `order_id`, `method_id`, `transaction_id`, `amount`, `currency_code`, `status`, `processor_response`, `error_message`, `ip_address`, `created_at`, `processed_at`\n")) .updateReturning(PaymentsRow._rowParser.exactlyOne()).runUnchecked(c) override fun insert( @@ -52,9 +52,9 @@ class PaymentsRepoImpl() : PaymentsRepo { val columns: ArrayList = ArrayList() val values: ArrayList = ArrayList() columns.add(Fragment.lit("`order_id`")) - values.add(Fragment.interpolate(Fragment.encode(OrdersId.dbType, unsaved.orderId), Fragment.lit(""))) + values.add(Fragment.interpolate(Fragment.encode(OrdersId.mariaType, unsaved.orderId), Fragment.lit(""))) columns.add(Fragment.lit("`method_id`")) - values.add(Fragment.interpolate(Fragment.encode(PaymentMethodsId.dbType, unsaved.methodId), Fragment.lit(""))) + values.add(Fragment.interpolate(Fragment.encode(PaymentMethodsId.mariaType, unsaved.methodId), Fragment.lit(""))) columns.add(Fragment.lit("`amount`")) values.add(Fragment.interpolate(Fragment.encode(KotlinDbTypes.MariaTypes.numeric, unsaved.amount), Fragment.lit(""))) unsaved.transactionId.visit( @@ -108,14 +108,14 @@ class PaymentsRepoImpl() : PaymentsRepo { override fun selectById( paymentId: PaymentsId, c: Connection - ): PaymentsRow? = Fragment.interpolate(Fragment.lit("select `payment_id`, `order_id`, `method_id`, `transaction_id`, `amount`, `currency_code`, `status`, `processor_response`, `error_message`, `ip_address`, `created_at`, `processed_at`\nfrom `payments`\nwhere `payment_id` = "), Fragment.encode(PaymentsId.dbType, paymentId), Fragment.lit("")).query(PaymentsRow._rowParser.first()).runUnchecked(c) + ): PaymentsRow? = Fragment.interpolate(Fragment.lit("select `payment_id`, `order_id`, `method_id`, `transaction_id`, `amount`, `currency_code`, `status`, `processor_response`, `error_message`, `ip_address`, `created_at`, `processed_at`\nfrom `payments`\nwhere `payment_id` = "), Fragment.encode(PaymentsId.mariaType, paymentId), Fragment.lit("")).query(PaymentsRow._rowParser.first()).runUnchecked(c) override fun selectByIds( paymentIds: Array, c: Connection ): List { val fragments: ArrayList = ArrayList() - for (id in paymentIds) { fragments.add(Fragment.encode(PaymentsId.dbType, id)) } + for (id in paymentIds) { fragments.add(Fragment.encode(PaymentsId.mariaType, id)) } return Fragment.interpolate(Fragment.lit("select `payment_id`, `order_id`, `method_id`, `transaction_id`, `amount`, `currency_code`, `status`, `processor_response`, `error_message`, `ip_address`, `created_at`, `processed_at` from `payments` where `payment_id` in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).query(PaymentsRow._rowParser.all()).runUnchecked(c) } @@ -135,13 +135,13 @@ class PaymentsRepoImpl() : PaymentsRepo { c: Connection ): Boolean { val paymentId: PaymentsId = row.paymentId - return Fragment.interpolate(Fragment.lit("update `payments`\nset `order_id` = "), Fragment.encode(OrdersId.dbType, row.orderId), Fragment.lit(",\n`method_id` = "), Fragment.encode(PaymentMethodsId.dbType, row.methodId), Fragment.lit(",\n`transaction_id` = "), Fragment.encode(MariaTypes.varchar.nullable(), row.transactionId), Fragment.lit(",\n`amount` = "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, row.amount), Fragment.lit(",\n`currency_code` = "), Fragment.encode(MariaTypes.char_, row.currencyCode), Fragment.lit(",\n`status` = "), Fragment.encode(MariaTypes.text, row.status), Fragment.lit(",\n`processor_response` = "), Fragment.encode(MariaTypes.json.nullable(), row.processorResponse), Fragment.lit(",\n`error_message` = "), Fragment.encode(MariaTypes.varchar.nullable(), row.errorMessage), Fragment.lit(",\n`ip_address` = "), Fragment.encode(MariaTypes.inet6.nullable(), row.ipAddress), Fragment.lit(",\n`created_at` = "), Fragment.encode(MariaTypes.datetime, row.createdAt), Fragment.lit(",\n`processed_at` = "), Fragment.encode(MariaTypes.datetime.nullable(), row.processedAt), Fragment.lit("\nwhere `payment_id` = "), Fragment.encode(PaymentsId.dbType, paymentId), Fragment.lit("")).update().runUnchecked(c) > 0 + return Fragment.interpolate(Fragment.lit("update `payments`\nset `order_id` = "), Fragment.encode(OrdersId.mariaType, row.orderId), Fragment.lit(",\n`method_id` = "), Fragment.encode(PaymentMethodsId.mariaType, row.methodId), Fragment.lit(",\n`transaction_id` = "), Fragment.encode(MariaTypes.varchar.nullable(), row.transactionId), Fragment.lit(",\n`amount` = "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, row.amount), Fragment.lit(",\n`currency_code` = "), Fragment.encode(MariaTypes.char_, row.currencyCode), Fragment.lit(",\n`status` = "), Fragment.encode(MariaTypes.text, row.status), Fragment.lit(",\n`processor_response` = "), Fragment.encode(MariaTypes.json.nullable(), row.processorResponse), Fragment.lit(",\n`error_message` = "), Fragment.encode(MariaTypes.varchar.nullable(), row.errorMessage), Fragment.lit(",\n`ip_address` = "), Fragment.encode(MariaTypes.inet6.nullable(), row.ipAddress), Fragment.lit(",\n`created_at` = "), Fragment.encode(MariaTypes.datetime, row.createdAt), Fragment.lit(",\n`processed_at` = "), Fragment.encode(MariaTypes.datetime.nullable(), row.processedAt), Fragment.lit("\nwhere `payment_id` = "), Fragment.encode(PaymentsId.mariaType, paymentId), Fragment.lit("")).update().runUnchecked(c) > 0 } override fun upsert( unsaved: PaymentsRow, c: Connection - ): PaymentsRow = Fragment.interpolate(Fragment.lit("INSERT INTO `payments`(`payment_id`, `order_id`, `method_id`, `transaction_id`, `amount`, `currency_code`, `status`, `processor_response`, `error_message`, `ip_address`, `created_at`, `processed_at`)\nVALUES ("), Fragment.encode(PaymentsId.dbType, unsaved.paymentId), Fragment.lit(", "), Fragment.encode(OrdersId.dbType, unsaved.orderId), Fragment.lit(", "), Fragment.encode(PaymentMethodsId.dbType, unsaved.methodId), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.transactionId), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, unsaved.amount), Fragment.lit(", "), Fragment.encode(MariaTypes.char_, unsaved.currencyCode), Fragment.lit(", "), Fragment.encode(MariaTypes.text, unsaved.status), Fragment.lit(", "), Fragment.encode(MariaTypes.json.nullable(), unsaved.processorResponse), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.errorMessage), Fragment.lit(", "), Fragment.encode(MariaTypes.inet6.nullable(), unsaved.ipAddress), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.createdAt), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime.nullable(), unsaved.processedAt), Fragment.lit(")\nON DUPLICATE KEY UPDATE `order_id` = VALUES(`order_id`),\n`method_id` = VALUES(`method_id`),\n`transaction_id` = VALUES(`transaction_id`),\n`amount` = VALUES(`amount`),\n`currency_code` = VALUES(`currency_code`),\n`status` = VALUES(`status`),\n`processor_response` = VALUES(`processor_response`),\n`error_message` = VALUES(`error_message`),\n`ip_address` = VALUES(`ip_address`),\n`created_at` = VALUES(`created_at`),\n`processed_at` = VALUES(`processed_at`)\nRETURNING `payment_id`, `order_id`, `method_id`, `transaction_id`, `amount`, `currency_code`, `status`, `processor_response`, `error_message`, `ip_address`, `created_at`, `processed_at`")) + ): PaymentsRow = Fragment.interpolate(Fragment.lit("INSERT INTO `payments`(`payment_id`, `order_id`, `method_id`, `transaction_id`, `amount`, `currency_code`, `status`, `processor_response`, `error_message`, `ip_address`, `created_at`, `processed_at`)\nVALUES ("), Fragment.encode(PaymentsId.mariaType, unsaved.paymentId), Fragment.lit(", "), Fragment.encode(OrdersId.mariaType, unsaved.orderId), Fragment.lit(", "), Fragment.encode(PaymentMethodsId.mariaType, unsaved.methodId), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.transactionId), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, unsaved.amount), Fragment.lit(", "), Fragment.encode(MariaTypes.char_, unsaved.currencyCode), Fragment.lit(", "), Fragment.encode(MariaTypes.text, unsaved.status), Fragment.lit(", "), Fragment.encode(MariaTypes.json.nullable(), unsaved.processorResponse), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.errorMessage), Fragment.lit(", "), Fragment.encode(MariaTypes.inet6.nullable(), unsaved.ipAddress), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.createdAt), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime.nullable(), unsaved.processedAt), Fragment.lit(")\nON DUPLICATE KEY UPDATE `order_id` = VALUES(`order_id`),\n`method_id` = VALUES(`method_id`),\n`transaction_id` = VALUES(`transaction_id`),\n`amount` = VALUES(`amount`),\n`currency_code` = VALUES(`currency_code`),\n`status` = VALUES(`status`),\n`processor_response` = VALUES(`processor_response`),\n`error_message` = VALUES(`error_message`),\n`ip_address` = VALUES(`ip_address`),\n`created_at` = VALUES(`created_at`),\n`processed_at` = VALUES(`processed_at`)\nRETURNING `payment_id`, `order_id`, `method_id`, `transaction_id`, `amount`, `currency_code`, `status`, `processor_response`, `error_message`, `ip_address`, `created_at`, `processed_at`")) .updateReturning(PaymentsRow._rowParser.exactlyOne()) .runUnchecked(c) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/payments/PaymentsRow.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/payments/PaymentsRow.kt index 82723f5930..948874ca4c 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/payments/PaymentsRow.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/payments/PaymentsRow.kt @@ -109,6 +109,6 @@ data class PaymentsRow( ): PaymentsRowUnsaved = PaymentsRowUnsaved(orderId, methodId, amount, transactionId, currencyCode, status, processorResponse, errorMessage, ipAddress, createdAt, processedAt) companion object { - val _rowParser: RowParser = RowParsers.of(PaymentsId.dbType, OrdersId.dbType, PaymentMethodsId.dbType, MariaTypes.varchar.nullable(), KotlinDbTypes.MariaTypes.numeric, MariaTypes.char_, MariaTypes.text, MariaTypes.json.nullable(), MariaTypes.varchar.nullable(), MariaTypes.inet6.nullable(), MariaTypes.datetime, MariaTypes.datetime.nullable(), { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11 -> PaymentsRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11) }, { row -> arrayOf(row.paymentId, row.orderId, row.methodId, row.transactionId, row.amount, row.currencyCode, row.status, row.processorResponse, row.errorMessage, row.ipAddress, row.createdAt, row.processedAt) }) + val _rowParser: RowParser = RowParsers.of(PaymentsId.mariaType, OrdersId.mariaType, PaymentMethodsId.mariaType, MariaTypes.varchar.nullable(), KotlinDbTypes.MariaTypes.numeric, MariaTypes.char_, MariaTypes.text, MariaTypes.json.nullable(), MariaTypes.varchar.nullable(), MariaTypes.inet6.nullable(), MariaTypes.datetime, MariaTypes.datetime.nullable(), { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11 -> PaymentsRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11) }, { row -> arrayOf(row.paymentId, row.orderId, row.methodId, row.transactionId, row.amount, row.currencyCode, row.status, row.processorResponse, row.errorMessage, row.ipAddress, row.createdAt, row.processedAt) }) } } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/Binary16.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/Binary16.kt index 0203c92fb6..24bc2a77dd 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/Binary16.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/Binary16.kt @@ -38,7 +38,7 @@ data class Binary16 private constructor(@field:JsonValue val value: ByteArray) : val bijection: Bijection = Bijection.of(Binary16::value, ::Binary16) - val dbType: MariaType = + val mariaType: MariaType = MariaTypes.binary.bimap(::Binary16, Binary16::value) fun of(value: ByteArray): Binary16? = if (value.size <= 16) Binary16(value) else null diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/Binary32.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/Binary32.kt index f3c15d0ece..068ee56591 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/Binary32.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/Binary32.kt @@ -38,7 +38,7 @@ data class Binary32 private constructor(@field:JsonValue val value: ByteArray) : val bijection: Bijection = Bijection.of(Binary32::value, ::Binary32) - val dbType: MariaType = + val mariaType: MariaType = MariaTypes.binary.bimap(::Binary32, Binary32::value) fun of(value: ByteArray): Binary32? = if (value.size <= 32) Binary32(value) else null diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/Binary64.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/Binary64.kt index 2ec13107c8..63dea71855 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/Binary64.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/Binary64.kt @@ -38,7 +38,7 @@ data class Binary64 private constructor(@field:JsonValue val value: ByteArray) : val bijection: Bijection = Bijection.of(Binary64::value, ::Binary64) - val dbType: MariaType = + val mariaType: MariaType = MariaTypes.binary.bimap(::Binary64, Binary64::value) fun of(value: ByteArray): Binary64? = if (value.size <= 64) Binary64(value) else null diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/Decimal10_2.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/Decimal10_2.kt index d3a6d1762a..95cd3912da 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/Decimal10_2.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/Decimal10_2.kt @@ -45,7 +45,7 @@ data class Decimal10_2 private constructor(@field:JsonValue val value: BigDecima val bijection: Bijection = Bijection.of(Decimal10_2::value, ::Decimal10_2) - val dbType: MariaType = + val mariaType: MariaType = KotlinDbTypes.MariaTypes.numeric.bimap(::Decimal10_2, Decimal10_2::value) fun of(value: BigDecimal): Decimal10_2? { diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/Decimal12_4.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/Decimal12_4.kt index cd914261f7..b15f4bda93 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/Decimal12_4.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/Decimal12_4.kt @@ -45,7 +45,7 @@ data class Decimal12_4 private constructor(@field:JsonValue val value: BigDecima val bijection: Bijection = Bijection.of(Decimal12_4::value, ::Decimal12_4) - val dbType: MariaType = + val mariaType: MariaType = KotlinDbTypes.MariaTypes.numeric.bimap(::Decimal12_4, Decimal12_4::value) fun of(value: BigDecimal): Decimal12_4? { diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/Decimal18_4.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/Decimal18_4.kt index 9143a152d5..bf29d10fdf 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/Decimal18_4.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/Decimal18_4.kt @@ -45,7 +45,7 @@ data class Decimal18_4 private constructor(@field:JsonValue val value: BigDecima val bijection: Bijection = Bijection.of(Decimal18_4::value, ::Decimal18_4) - val dbType: MariaType = + val mariaType: MariaType = KotlinDbTypes.MariaTypes.numeric.bimap(::Decimal18_4, Decimal18_4::value) fun of(value: BigDecimal): Decimal18_4? { diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/Decimal5_2.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/Decimal5_2.kt index 3c2b0c5dc1..c0e747290a 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/Decimal5_2.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/Decimal5_2.kt @@ -45,7 +45,7 @@ data class Decimal5_2 private constructor(@field:JsonValue val value: BigDecimal val bijection: Bijection = Bijection.of(Decimal5_2::value, ::Decimal5_2) - val dbType: MariaType = + val mariaType: MariaType = KotlinDbTypes.MariaTypes.numeric.bimap(::Decimal5_2, Decimal5_2::value) fun of(value: BigDecimal): Decimal5_2? { diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/Decimal8_2.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/Decimal8_2.kt index f1ba85b242..e56f57ed8f 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/Decimal8_2.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/Decimal8_2.kt @@ -45,7 +45,7 @@ data class Decimal8_2 private constructor(@field:JsonValue val value: BigDecimal val bijection: Bijection = Bijection.of(Decimal8_2::value, ::Decimal8_2) - val dbType: MariaType = + val mariaType: MariaType = KotlinDbTypes.MariaTypes.numeric.bimap(::Decimal8_2, Decimal8_2::value) fun of(value: BigDecimal): Decimal8_2? { diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/LocalDateTime3.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/LocalDateTime3.kt index 6bafeb5519..6721849fe5 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/LocalDateTime3.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/LocalDateTime3.kt @@ -39,7 +39,7 @@ data class LocalDateTime3 private constructor(@field:JsonValue val value: LocalD val bijection: Bijection = Bijection.of(LocalDateTime3::value, ::LocalDateTime3) - val dbType: MariaType = + val mariaType: MariaType = MariaTypes.datetime.bimap(::LocalDateTime3, LocalDateTime3::value) fun now(): LocalDateTime3 = LocalDateTime3(LocalDateTime.now().truncatedTo(ChronoUnit.MILLIS)) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/LocalDateTime6.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/LocalDateTime6.kt index a75ba2c2ae..1ec6eb41f5 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/LocalDateTime6.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/LocalDateTime6.kt @@ -39,7 +39,7 @@ data class LocalDateTime6 private constructor(@field:JsonValue val value: LocalD val bijection: Bijection = Bijection.of(LocalDateTime6::value, ::LocalDateTime6) - val dbType: MariaType = + val mariaType: MariaType = MariaTypes.timestamp.bimap(::LocalDateTime6, LocalDateTime6::value) fun now(): LocalDateTime6 = LocalDateTime6(LocalDateTime.now().truncatedTo(ChronoUnit.MICROS)) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/LocalTime3.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/LocalTime3.kt index 005a923443..9274121965 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/LocalTime3.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/LocalTime3.kt @@ -39,7 +39,7 @@ data class LocalTime3 private constructor(@field:JsonValue val value: LocalTime) val bijection: Bijection = Bijection.of(LocalTime3::value, ::LocalTime3) - val dbType: MariaType = + val mariaType: MariaType = MariaTypes.time.bimap(::LocalTime3, LocalTime3::value) fun now(): LocalTime3 = LocalTime3(LocalTime.now().truncatedTo(ChronoUnit.MILLIS)) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/LocalTime6.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/LocalTime6.kt index 393cc7a60f..e075817ccd 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/LocalTime6.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/LocalTime6.kt @@ -39,7 +39,7 @@ data class LocalTime6 private constructor(@field:JsonValue val value: LocalTime) val bijection: Bijection = Bijection.of(LocalTime6::value, ::LocalTime6) - val dbType: MariaType = + val mariaType: MariaType = MariaTypes.time.bimap(::LocalTime6, LocalTime6::value) fun now(): LocalTime6 = LocalTime6(LocalTime.now().truncatedTo(ChronoUnit.MICROS)) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/PaddedString10.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/PaddedString10.kt index 4ad49f54d9..f614dade38 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/PaddedString10.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/PaddedString10.kt @@ -40,7 +40,7 @@ data class PaddedString10 private constructor(@field:JsonValue val value: String val bijection: Bijection = Bijection.of(PaddedString10::value, ::PaddedString10) - val dbType: MariaType = + val mariaType: MariaType = MariaTypes.char_.bimap(::PaddedString10, PaddedString10::value) fun of(value: String): PaddedString10? = if (value.length <= 10) PaddedString10(String.format("%-10s", value)) else null diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/String10.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/String10.kt index 0253f6908e..e1ad237b25 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/String10.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/String10.kt @@ -38,7 +38,7 @@ data class String10 private constructor(@field:JsonValue val value: String) : St val bijection: Bijection = Bijection.of(String10::value, ::String10) - val dbType: MariaType = + val mariaType: MariaType = MariaTypes.varchar.bimap(::String10, String10::value) fun of(value: String): String10? = if (value.length <= 10) String10(value) else null diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/String100.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/String100.kt index fad0a5fd5f..3eed693c43 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/String100.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/String100.kt @@ -38,7 +38,7 @@ data class String100 private constructor(@field:JsonValue val value: String) : S val bijection: Bijection = Bijection.of(String100::value, ::String100) - val dbType: MariaType = + val mariaType: MariaType = MariaTypes.varchar.bimap(::String100, String100::value) fun of(value: String): String100? = if (value.length <= 100) String100(value) else null diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/String20.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/String20.kt index 48e8c26d93..b73a065409 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/String20.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/String20.kt @@ -38,7 +38,7 @@ data class String20 private constructor(@field:JsonValue val value: String) : St val bijection: Bijection = Bijection.of(String20::value, ::String20) - val dbType: MariaType = + val mariaType: MariaType = MariaTypes.varchar.bimap(::String20, String20::value) fun of(value: String): String20? = if (value.length <= 20) String20(value) else null diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/String255.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/String255.kt index 3a02b9a962..cd919fae79 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/String255.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/String255.kt @@ -38,7 +38,7 @@ data class String255 private constructor(@field:JsonValue val value: String) : S val bijection: Bijection = Bijection.of(String255::value, ::String255) - val dbType: MariaType = + val mariaType: MariaType = MariaTypes.varchar.bimap(::String255, String255::value) fun of(value: String): String255? = if (value.length <= 255) String255(value) else null diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/String50.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/String50.kt index b5bf7e48e7..cb97d85740 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/String50.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/precisetypes/String50.kt @@ -38,7 +38,7 @@ data class String50 private constructor(@field:JsonValue val value: String) : St val bijection: Bijection = Bijection.of(String50::value, ::String50) - val dbType: MariaType = + val mariaType: MariaType = MariaTypes.varchar.bimap(::String50, String50::value) fun of(value: String): String50? = if (value.length <= 50) String50(value) else null diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/precision_types/PrecisionTypesFields.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/precision_types/PrecisionTypesFields.kt index 058f8385e4..64d76fe96c 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/precision_types/PrecisionTypesFields.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/precision_types/PrecisionTypesFields.kt @@ -88,57 +88,57 @@ data class PrecisionTypesFields(val _path: List) : TupleExpr24 = _path - fun binary16(): Field = Field(_path, "binary16", PrecisionTypesRow::binary16, null, null, { row, value -> row.copy(binary16 = value) }, Binary16.dbType) + fun binary16(): Field = Field(_path, "binary16", PrecisionTypesRow::binary16, null, null, { row, value -> row.copy(binary16 = value) }, Binary16.mariaType) - fun binary32(): Field = Field(_path, "binary32", PrecisionTypesRow::binary32, null, null, { row, value -> row.copy(binary32 = value) }, Binary32.dbType) + fun binary32(): Field = Field(_path, "binary32", PrecisionTypesRow::binary32, null, null, { row, value -> row.copy(binary32 = value) }, Binary32.mariaType) - fun binary64(): Field = Field(_path, "binary64", PrecisionTypesRow::binary64, null, null, { row, value -> row.copy(binary64 = value) }, Binary64.dbType) + fun binary64(): Field = Field(_path, "binary64", PrecisionTypesRow::binary64, null, null, { row, value -> row.copy(binary64 = value) }, Binary64.mariaType) - fun char10(): Field = Field(_path, "char10", PrecisionTypesRow::char10, null, null, { row, value -> row.copy(char10 = value) }, PaddedString10.dbType) + fun char10(): Field = Field(_path, "char10", PrecisionTypesRow::char10, null, null, { row, value -> row.copy(char10 = value) }, PaddedString10.mariaType) override fun columns(): List> = listOf(this.id().underlying, this.string10().underlying, this.string20().underlying, this.string50().underlying, this.string100().underlying, this.string255().underlying, this.char10().underlying, this.decimal52().underlying, this.decimal102().underlying, this.decimal184().underlying, this.numeric82().underlying, this.numeric124().underlying, this.binary16().underlying, this.binary32().underlying, this.binary64().underlying, this.time0().underlying, this.time3().underlying, this.time6().underlying, this.datetime0().underlying, this.datetime3().underlying, this.datetime6().underlying, this.ts0().underlying, this.ts3().underlying, this.ts6().underlying) fun datetime0(): Field = Field(_path, "datetime0", PrecisionTypesRow::datetime0, null, null, { row, value -> row.copy(datetime0 = value) }, MariaTypes.datetime) - fun datetime3(): Field = Field(_path, "datetime3", PrecisionTypesRow::datetime3, null, null, { row, value -> row.copy(datetime3 = value) }, LocalDateTime3.dbType) + fun datetime3(): Field = Field(_path, "datetime3", PrecisionTypesRow::datetime3, null, null, { row, value -> row.copy(datetime3 = value) }, LocalDateTime3.mariaType) - fun datetime6(): Field = Field(_path, "datetime6", PrecisionTypesRow::datetime6, null, null, { row, value -> row.copy(datetime6 = value) }, LocalDateTime6.dbType) + fun datetime6(): Field = Field(_path, "datetime6", PrecisionTypesRow::datetime6, null, null, { row, value -> row.copy(datetime6 = value) }, LocalDateTime6.mariaType) - fun decimal102(): Field = Field(_path, "decimal10_2", PrecisionTypesRow::decimal102, null, null, { row, value -> row.copy(decimal102 = value) }, Decimal10_2.dbType) + fun decimal102(): Field = Field(_path, "decimal10_2", PrecisionTypesRow::decimal102, null, null, { row, value -> row.copy(decimal102 = value) }, Decimal10_2.mariaType) - fun decimal184(): Field = Field(_path, "decimal18_4", PrecisionTypesRow::decimal184, null, null, { row, value -> row.copy(decimal184 = value) }, Decimal18_4.dbType) + fun decimal184(): Field = Field(_path, "decimal18_4", PrecisionTypesRow::decimal184, null, null, { row, value -> row.copy(decimal184 = value) }, Decimal18_4.mariaType) - fun decimal52(): Field = Field(_path, "decimal5_2", PrecisionTypesRow::decimal52, null, null, { row, value -> row.copy(decimal52 = value) }, Decimal5_2.dbType) + fun decimal52(): Field = Field(_path, "decimal5_2", PrecisionTypesRow::decimal52, null, null, { row, value -> row.copy(decimal52 = value) }, Decimal5_2.mariaType) - fun id(): IdField = IdField(_path, "id", PrecisionTypesRow::id, null, null, { row, value -> row.copy(id = value) }, PrecisionTypesId.dbType) + fun id(): IdField = IdField(_path, "id", PrecisionTypesRow::id, null, null, { row, value -> row.copy(id = value) }, PrecisionTypesId.mariaType) - fun numeric124(): Field = Field(_path, "numeric12_4", PrecisionTypesRow::numeric124, null, null, { row, value -> row.copy(numeric124 = value) }, Decimal12_4.dbType) + fun numeric124(): Field = Field(_path, "numeric12_4", PrecisionTypesRow::numeric124, null, null, { row, value -> row.copy(numeric124 = value) }, Decimal12_4.mariaType) - fun numeric82(): Field = Field(_path, "numeric8_2", PrecisionTypesRow::numeric82, null, null, { row, value -> row.copy(numeric82 = value) }, Decimal8_2.dbType) + fun numeric82(): Field = Field(_path, "numeric8_2", PrecisionTypesRow::numeric82, null, null, { row, value -> row.copy(numeric82 = value) }, Decimal8_2.mariaType) override fun rowParser(): RowParser = PrecisionTypesRow._rowParser.underlying - fun string10(): Field = Field(_path, "string10", PrecisionTypesRow::string10, null, null, { row, value -> row.copy(string10 = value) }, String10.dbType) + fun string10(): Field = Field(_path, "string10", PrecisionTypesRow::string10, null, null, { row, value -> row.copy(string10 = value) }, String10.mariaType) - fun string100(): Field = Field(_path, "string100", PrecisionTypesRow::string100, null, null, { row, value -> row.copy(string100 = value) }, String100.dbType) + fun string100(): Field = Field(_path, "string100", PrecisionTypesRow::string100, null, null, { row, value -> row.copy(string100 = value) }, String100.mariaType) - fun string20(): Field = Field(_path, "string20", PrecisionTypesRow::string20, null, null, { row, value -> row.copy(string20 = value) }, String20.dbType) + fun string20(): Field = Field(_path, "string20", PrecisionTypesRow::string20, null, null, { row, value -> row.copy(string20 = value) }, String20.mariaType) - fun string255(): Field = Field(_path, "string255", PrecisionTypesRow::string255, null, null, { row, value -> row.copy(string255 = value) }, String255.dbType) + fun string255(): Field = Field(_path, "string255", PrecisionTypesRow::string255, null, null, { row, value -> row.copy(string255 = value) }, String255.mariaType) - fun string50(): Field = Field(_path, "string50", PrecisionTypesRow::string50, null, null, { row, value -> row.copy(string50 = value) }, String50.dbType) + fun string50(): Field = Field(_path, "string50", PrecisionTypesRow::string50, null, null, { row, value -> row.copy(string50 = value) }, String50.mariaType) fun time0(): Field = Field(_path, "time0", PrecisionTypesRow::time0, null, null, { row, value -> row.copy(time0 = value) }, MariaTypes.time) - fun time3(): Field = Field(_path, "time3", PrecisionTypesRow::time3, null, null, { row, value -> row.copy(time3 = value) }, LocalTime3.dbType) + fun time3(): Field = Field(_path, "time3", PrecisionTypesRow::time3, null, null, { row, value -> row.copy(time3 = value) }, LocalTime3.mariaType) - fun time6(): Field = Field(_path, "time6", PrecisionTypesRow::time6, null, null, { row, value -> row.copy(time6 = value) }, LocalTime6.dbType) + fun time6(): Field = Field(_path, "time6", PrecisionTypesRow::time6, null, null, { row, value -> row.copy(time6 = value) }, LocalTime6.mariaType) fun ts0(): Field = Field(_path, "ts0", PrecisionTypesRow::ts0, null, null, { row, value -> row.copy(ts0 = value) }, MariaTypes.timestamp) - fun ts3(): Field = Field(_path, "ts3", PrecisionTypesRow::ts3, null, null, { row, value -> row.copy(ts3 = value) }, LocalDateTime3.dbType) + fun ts3(): Field = Field(_path, "ts3", PrecisionTypesRow::ts3, null, null, { row, value -> row.copy(ts3 = value) }, LocalDateTime3.mariaType) - fun ts6(): Field = Field(_path, "ts6", PrecisionTypesRow::ts6, null, null, { row, value -> row.copy(ts6 = value) }, LocalDateTime6.dbType) + fun ts6(): Field = Field(_path, "ts6", PrecisionTypesRow::ts6, null, null, { row, value -> row.copy(ts6 = value) }, LocalDateTime6.mariaType) override fun withPaths(_path: List): RelationStructure = PrecisionTypesFields(_path) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/precision_types/PrecisionTypesId.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/precision_types/PrecisionTypesId.kt index 493c4eb162..02c280af25 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/precision_types/PrecisionTypesId.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/precision_types/PrecisionTypesId.kt @@ -20,7 +20,7 @@ data class PrecisionTypesId(@field:JsonValue val value: Int) { val bijection: Bijection = Bijection.of(PrecisionTypesId::value, ::PrecisionTypesId) - val dbType: MariaType = + val mariaType: MariaType = KotlinDbTypes.MariaTypes.int_.bimap(::PrecisionTypesId, PrecisionTypesId::value) } } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/precision_types/PrecisionTypesRepoImpl.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/precision_types/PrecisionTypesRepoImpl.kt index 88e4aae9c6..0355379f39 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/precision_types/PrecisionTypesRepoImpl.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/precision_types/PrecisionTypesRepoImpl.kt @@ -42,21 +42,21 @@ class PrecisionTypesRepoImpl() : PrecisionTypesRepo { override fun deleteById( id: PrecisionTypesId, c: Connection - ): Boolean = Fragment.interpolate(Fragment.lit("delete from `precision_types` where `id` = "), Fragment.encode(PrecisionTypesId.dbType, id), Fragment.lit("")).update().runUnchecked(c) > 0 + ): Boolean = Fragment.interpolate(Fragment.lit("delete from `precision_types` where `id` = "), Fragment.encode(PrecisionTypesId.mariaType, id), Fragment.lit("")).update().runUnchecked(c) > 0 override fun deleteByIds( ids: Array, c: Connection ): Int { val fragments: ArrayList = ArrayList() - for (id in ids) { fragments.add(Fragment.encode(PrecisionTypesId.dbType, id)) } + for (id in ids) { fragments.add(Fragment.encode(PrecisionTypesId.mariaType, id)) } return Fragment.interpolate(Fragment.lit("delete from `precision_types` where `id` in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).update().runUnchecked(c) } override fun insert( unsaved: PrecisionTypesRow, c: Connection - ): PrecisionTypesRow = Fragment.interpolate(Fragment.lit("insert into `precision_types`(`string10`, `string20`, `string50`, `string100`, `string255`, `char10`, `decimal5_2`, `decimal10_2`, `decimal18_4`, `numeric8_2`, `numeric12_4`, `binary16`, `binary32`, `binary64`, `time0`, `time3`, `time6`, `datetime0`, `datetime3`, `datetime6`, `ts0`, `ts3`, `ts6`)\nvalues ("), Fragment.encode(String10.dbType, unsaved.string10), Fragment.lit(", "), Fragment.encode(String20.dbType, unsaved.string20), Fragment.lit(", "), Fragment.encode(String50.dbType, unsaved.string50), Fragment.lit(", "), Fragment.encode(String100.dbType, unsaved.string100), Fragment.lit(", "), Fragment.encode(String255.dbType, unsaved.string255), Fragment.lit(", "), Fragment.encode(PaddedString10.dbType, unsaved.char10), Fragment.lit(", "), Fragment.encode(Decimal5_2.dbType, unsaved.decimal52), Fragment.lit(", "), Fragment.encode(Decimal10_2.dbType, unsaved.decimal102), Fragment.lit(", "), Fragment.encode(Decimal18_4.dbType, unsaved.decimal184), Fragment.lit(", "), Fragment.encode(Decimal8_2.dbType, unsaved.numeric82), Fragment.lit(", "), Fragment.encode(Decimal12_4.dbType, unsaved.numeric124), Fragment.lit(", "), Fragment.encode(Binary16.dbType, unsaved.binary16), Fragment.lit(", "), Fragment.encode(Binary32.dbType, unsaved.binary32), Fragment.lit(", "), Fragment.encode(Binary64.dbType, unsaved.binary64), Fragment.lit(", "), Fragment.encode(MariaTypes.time, unsaved.time0), Fragment.lit(", "), Fragment.encode(LocalTime3.dbType, unsaved.time3), Fragment.lit(", "), Fragment.encode(LocalTime6.dbType, unsaved.time6), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.datetime0), Fragment.lit(", "), Fragment.encode(LocalDateTime3.dbType, unsaved.datetime3), Fragment.lit(", "), Fragment.encode(LocalDateTime6.dbType, unsaved.datetime6), Fragment.lit(", "), Fragment.encode(MariaTypes.timestamp, unsaved.ts0), Fragment.lit(", "), Fragment.encode(LocalDateTime3.dbType, unsaved.ts3), Fragment.lit(", "), Fragment.encode(LocalDateTime6.dbType, unsaved.ts6), Fragment.lit(")\nRETURNING `id`, `string10`, `string20`, `string50`, `string100`, `string255`, `char10`, `decimal5_2`, `decimal10_2`, `decimal18_4`, `numeric8_2`, `numeric12_4`, `binary16`, `binary32`, `binary64`, `time0`, `time3`, `time6`, `datetime0`, `datetime3`, `datetime6`, `ts0`, `ts3`, `ts6`\n")) + ): PrecisionTypesRow = Fragment.interpolate(Fragment.lit("insert into `precision_types`(`string10`, `string20`, `string50`, `string100`, `string255`, `char10`, `decimal5_2`, `decimal10_2`, `decimal18_4`, `numeric8_2`, `numeric12_4`, `binary16`, `binary32`, `binary64`, `time0`, `time3`, `time6`, `datetime0`, `datetime3`, `datetime6`, `ts0`, `ts3`, `ts6`)\nvalues ("), Fragment.encode(String10.mariaType, unsaved.string10), Fragment.lit(", "), Fragment.encode(String20.mariaType, unsaved.string20), Fragment.lit(", "), Fragment.encode(String50.mariaType, unsaved.string50), Fragment.lit(", "), Fragment.encode(String100.mariaType, unsaved.string100), Fragment.lit(", "), Fragment.encode(String255.mariaType, unsaved.string255), Fragment.lit(", "), Fragment.encode(PaddedString10.mariaType, unsaved.char10), Fragment.lit(", "), Fragment.encode(Decimal5_2.mariaType, unsaved.decimal52), Fragment.lit(", "), Fragment.encode(Decimal10_2.mariaType, unsaved.decimal102), Fragment.lit(", "), Fragment.encode(Decimal18_4.mariaType, unsaved.decimal184), Fragment.lit(", "), Fragment.encode(Decimal8_2.mariaType, unsaved.numeric82), Fragment.lit(", "), Fragment.encode(Decimal12_4.mariaType, unsaved.numeric124), Fragment.lit(", "), Fragment.encode(Binary16.mariaType, unsaved.binary16), Fragment.lit(", "), Fragment.encode(Binary32.mariaType, unsaved.binary32), Fragment.lit(", "), Fragment.encode(Binary64.mariaType, unsaved.binary64), Fragment.lit(", "), Fragment.encode(MariaTypes.time, unsaved.time0), Fragment.lit(", "), Fragment.encode(LocalTime3.mariaType, unsaved.time3), Fragment.lit(", "), Fragment.encode(LocalTime6.mariaType, unsaved.time6), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.datetime0), Fragment.lit(", "), Fragment.encode(LocalDateTime3.mariaType, unsaved.datetime3), Fragment.lit(", "), Fragment.encode(LocalDateTime6.mariaType, unsaved.datetime6), Fragment.lit(", "), Fragment.encode(MariaTypes.timestamp, unsaved.ts0), Fragment.lit(", "), Fragment.encode(LocalDateTime3.mariaType, unsaved.ts3), Fragment.lit(", "), Fragment.encode(LocalDateTime6.mariaType, unsaved.ts6), Fragment.lit(")\nRETURNING `id`, `string10`, `string20`, `string50`, `string100`, `string255`, `char10`, `decimal5_2`, `decimal10_2`, `decimal18_4`, `numeric8_2`, `numeric12_4`, `binary16`, `binary32`, `binary64`, `time0`, `time3`, `time6`, `datetime0`, `datetime3`, `datetime6`, `ts0`, `ts3`, `ts6`\n")) .updateReturning(PrecisionTypesRow._rowParser.exactlyOne()).runUnchecked(c) override fun insert( @@ -66,45 +66,45 @@ class PrecisionTypesRepoImpl() : PrecisionTypesRepo { val columns: ArrayList = ArrayList() val values: ArrayList = ArrayList() columns.add(Fragment.lit("`string10`")) - values.add(Fragment.interpolate(Fragment.encode(String10.dbType, unsaved.string10), Fragment.lit(""))) + values.add(Fragment.interpolate(Fragment.encode(String10.mariaType, unsaved.string10), Fragment.lit(""))) columns.add(Fragment.lit("`string20`")) - values.add(Fragment.interpolate(Fragment.encode(String20.dbType, unsaved.string20), Fragment.lit(""))) + values.add(Fragment.interpolate(Fragment.encode(String20.mariaType, unsaved.string20), Fragment.lit(""))) columns.add(Fragment.lit("`string50`")) - values.add(Fragment.interpolate(Fragment.encode(String50.dbType, unsaved.string50), Fragment.lit(""))) + values.add(Fragment.interpolate(Fragment.encode(String50.mariaType, unsaved.string50), Fragment.lit(""))) columns.add(Fragment.lit("`string100`")) - values.add(Fragment.interpolate(Fragment.encode(String100.dbType, unsaved.string100), Fragment.lit(""))) + values.add(Fragment.interpolate(Fragment.encode(String100.mariaType, unsaved.string100), Fragment.lit(""))) columns.add(Fragment.lit("`string255`")) - values.add(Fragment.interpolate(Fragment.encode(String255.dbType, unsaved.string255), Fragment.lit(""))) + values.add(Fragment.interpolate(Fragment.encode(String255.mariaType, unsaved.string255), Fragment.lit(""))) columns.add(Fragment.lit("`char10`")) - values.add(Fragment.interpolate(Fragment.encode(PaddedString10.dbType, unsaved.char10), Fragment.lit(""))) + values.add(Fragment.interpolate(Fragment.encode(PaddedString10.mariaType, unsaved.char10), Fragment.lit(""))) columns.add(Fragment.lit("`decimal5_2`")) - values.add(Fragment.interpolate(Fragment.encode(Decimal5_2.dbType, unsaved.decimal52), Fragment.lit(""))) + values.add(Fragment.interpolate(Fragment.encode(Decimal5_2.mariaType, unsaved.decimal52), Fragment.lit(""))) columns.add(Fragment.lit("`decimal10_2`")) - values.add(Fragment.interpolate(Fragment.encode(Decimal10_2.dbType, unsaved.decimal102), Fragment.lit(""))) + values.add(Fragment.interpolate(Fragment.encode(Decimal10_2.mariaType, unsaved.decimal102), Fragment.lit(""))) columns.add(Fragment.lit("`decimal18_4`")) - values.add(Fragment.interpolate(Fragment.encode(Decimal18_4.dbType, unsaved.decimal184), Fragment.lit(""))) + values.add(Fragment.interpolate(Fragment.encode(Decimal18_4.mariaType, unsaved.decimal184), Fragment.lit(""))) columns.add(Fragment.lit("`numeric8_2`")) - values.add(Fragment.interpolate(Fragment.encode(Decimal8_2.dbType, unsaved.numeric82), Fragment.lit(""))) + values.add(Fragment.interpolate(Fragment.encode(Decimal8_2.mariaType, unsaved.numeric82), Fragment.lit(""))) columns.add(Fragment.lit("`numeric12_4`")) - values.add(Fragment.interpolate(Fragment.encode(Decimal12_4.dbType, unsaved.numeric124), Fragment.lit(""))) + values.add(Fragment.interpolate(Fragment.encode(Decimal12_4.mariaType, unsaved.numeric124), Fragment.lit(""))) columns.add(Fragment.lit("`binary16`")) - values.add(Fragment.interpolate(Fragment.encode(Binary16.dbType, unsaved.binary16), Fragment.lit(""))) + values.add(Fragment.interpolate(Fragment.encode(Binary16.mariaType, unsaved.binary16), Fragment.lit(""))) columns.add(Fragment.lit("`binary32`")) - values.add(Fragment.interpolate(Fragment.encode(Binary32.dbType, unsaved.binary32), Fragment.lit(""))) + values.add(Fragment.interpolate(Fragment.encode(Binary32.mariaType, unsaved.binary32), Fragment.lit(""))) columns.add(Fragment.lit("`binary64`")) - values.add(Fragment.interpolate(Fragment.encode(Binary64.dbType, unsaved.binary64), Fragment.lit(""))) + values.add(Fragment.interpolate(Fragment.encode(Binary64.mariaType, unsaved.binary64), Fragment.lit(""))) columns.add(Fragment.lit("`time0`")) values.add(Fragment.interpolate(Fragment.encode(MariaTypes.time, unsaved.time0), Fragment.lit(""))) columns.add(Fragment.lit("`time3`")) - values.add(Fragment.interpolate(Fragment.encode(LocalTime3.dbType, unsaved.time3), Fragment.lit(""))) + values.add(Fragment.interpolate(Fragment.encode(LocalTime3.mariaType, unsaved.time3), Fragment.lit(""))) columns.add(Fragment.lit("`time6`")) - values.add(Fragment.interpolate(Fragment.encode(LocalTime6.dbType, unsaved.time6), Fragment.lit(""))) + values.add(Fragment.interpolate(Fragment.encode(LocalTime6.mariaType, unsaved.time6), Fragment.lit(""))) columns.add(Fragment.lit("`datetime0`")) values.add(Fragment.interpolate(Fragment.encode(MariaTypes.datetime, unsaved.datetime0), Fragment.lit(""))) columns.add(Fragment.lit("`datetime3`")) - values.add(Fragment.interpolate(Fragment.encode(LocalDateTime3.dbType, unsaved.datetime3), Fragment.lit(""))) + values.add(Fragment.interpolate(Fragment.encode(LocalDateTime3.mariaType, unsaved.datetime3), Fragment.lit(""))) columns.add(Fragment.lit("`datetime6`")) - values.add(Fragment.interpolate(Fragment.encode(LocalDateTime6.dbType, unsaved.datetime6), Fragment.lit(""))) + values.add(Fragment.interpolate(Fragment.encode(LocalDateTime6.mariaType, unsaved.datetime6), Fragment.lit(""))) unsaved.ts0.visit( { }, { value -> columns.add(Fragment.lit("`ts0`")) @@ -113,12 +113,12 @@ class PrecisionTypesRepoImpl() : PrecisionTypesRepo { unsaved.ts3.visit( { }, { value -> columns.add(Fragment.lit("`ts3`")) - values.add(Fragment.interpolate(Fragment.encode(LocalDateTime3.dbType, value), Fragment.lit(""))) } + values.add(Fragment.interpolate(Fragment.encode(LocalDateTime3.mariaType, value), Fragment.lit(""))) } ); unsaved.ts6.visit( { }, { value -> columns.add(Fragment.lit("`ts6`")) - values.add(Fragment.interpolate(Fragment.encode(LocalDateTime6.dbType, value), Fragment.lit(""))) } + values.add(Fragment.interpolate(Fragment.encode(LocalDateTime6.mariaType, value), Fragment.lit(""))) } ); val q: Fragment = Fragment.interpolate(Fragment.lit("insert into `precision_types`("), Fragment.comma(columns.toMutableList()), Fragment.lit(")\nvalues ("), Fragment.comma(values.toMutableList()), Fragment.lit(")\nRETURNING `id`, `string10`, `string20`, `string50`, `string100`, `string255`, `char10`, `decimal5_2`, `decimal10_2`, `decimal18_4`, `numeric8_2`, `numeric12_4`, `binary16`, `binary32`, `binary64`, `time0`, `time3`, `time6`, `datetime0`, `datetime3`, `datetime6`, `ts0`, `ts3`, `ts6`\n")) return q.updateReturning(PrecisionTypesRow._rowParser.exactlyOne()).runUnchecked(c) @@ -131,14 +131,14 @@ class PrecisionTypesRepoImpl() : PrecisionTypesRepo { override fun selectById( id: PrecisionTypesId, c: Connection - ): PrecisionTypesRow? = Fragment.interpolate(Fragment.lit("select `id`, `string10`, `string20`, `string50`, `string100`, `string255`, `char10`, `decimal5_2`, `decimal10_2`, `decimal18_4`, `numeric8_2`, `numeric12_4`, `binary16`, `binary32`, `binary64`, `time0`, `time3`, `time6`, `datetime0`, `datetime3`, `datetime6`, `ts0`, `ts3`, `ts6`\nfrom `precision_types`\nwhere `id` = "), Fragment.encode(PrecisionTypesId.dbType, id), Fragment.lit("")).query(PrecisionTypesRow._rowParser.first()).runUnchecked(c) + ): PrecisionTypesRow? = Fragment.interpolate(Fragment.lit("select `id`, `string10`, `string20`, `string50`, `string100`, `string255`, `char10`, `decimal5_2`, `decimal10_2`, `decimal18_4`, `numeric8_2`, `numeric12_4`, `binary16`, `binary32`, `binary64`, `time0`, `time3`, `time6`, `datetime0`, `datetime3`, `datetime6`, `ts0`, `ts3`, `ts6`\nfrom `precision_types`\nwhere `id` = "), Fragment.encode(PrecisionTypesId.mariaType, id), Fragment.lit("")).query(PrecisionTypesRow._rowParser.first()).runUnchecked(c) override fun selectByIds( ids: Array, c: Connection ): List { val fragments: ArrayList = ArrayList() - for (id in ids) { fragments.add(Fragment.encode(PrecisionTypesId.dbType, id)) } + for (id in ids) { fragments.add(Fragment.encode(PrecisionTypesId.mariaType, id)) } return Fragment.interpolate(Fragment.lit("select `id`, `string10`, `string20`, `string50`, `string100`, `string255`, `char10`, `decimal5_2`, `decimal10_2`, `decimal18_4`, `numeric8_2`, `numeric12_4`, `binary16`, `binary32`, `binary64`, `time0`, `time3`, `time6`, `datetime0`, `datetime3`, `datetime6`, `ts0`, `ts3`, `ts6` from `precision_types` where `id` in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).query(PrecisionTypesRow._rowParser.all()).runUnchecked(c) } @@ -158,13 +158,13 @@ class PrecisionTypesRepoImpl() : PrecisionTypesRepo { c: Connection ): Boolean { val id: PrecisionTypesId = row.id - return Fragment.interpolate(Fragment.lit("update `precision_types`\nset `string10` = "), Fragment.encode(String10.dbType, row.string10), Fragment.lit(",\n`string20` = "), Fragment.encode(String20.dbType, row.string20), Fragment.lit(",\n`string50` = "), Fragment.encode(String50.dbType, row.string50), Fragment.lit(",\n`string100` = "), Fragment.encode(String100.dbType, row.string100), Fragment.lit(",\n`string255` = "), Fragment.encode(String255.dbType, row.string255), Fragment.lit(",\n`char10` = "), Fragment.encode(PaddedString10.dbType, row.char10), Fragment.lit(",\n`decimal5_2` = "), Fragment.encode(Decimal5_2.dbType, row.decimal52), Fragment.lit(",\n`decimal10_2` = "), Fragment.encode(Decimal10_2.dbType, row.decimal102), Fragment.lit(",\n`decimal18_4` = "), Fragment.encode(Decimal18_4.dbType, row.decimal184), Fragment.lit(",\n`numeric8_2` = "), Fragment.encode(Decimal8_2.dbType, row.numeric82), Fragment.lit(",\n`numeric12_4` = "), Fragment.encode(Decimal12_4.dbType, row.numeric124), Fragment.lit(",\n`binary16` = "), Fragment.encode(Binary16.dbType, row.binary16), Fragment.lit(",\n`binary32` = "), Fragment.encode(Binary32.dbType, row.binary32), Fragment.lit(",\n`binary64` = "), Fragment.encode(Binary64.dbType, row.binary64), Fragment.lit(",\n`time0` = "), Fragment.encode(MariaTypes.time, row.time0), Fragment.lit(",\n`time3` = "), Fragment.encode(LocalTime3.dbType, row.time3), Fragment.lit(",\n`time6` = "), Fragment.encode(LocalTime6.dbType, row.time6), Fragment.lit(",\n`datetime0` = "), Fragment.encode(MariaTypes.datetime, row.datetime0), Fragment.lit(",\n`datetime3` = "), Fragment.encode(LocalDateTime3.dbType, row.datetime3), Fragment.lit(",\n`datetime6` = "), Fragment.encode(LocalDateTime6.dbType, row.datetime6), Fragment.lit(",\n`ts0` = "), Fragment.encode(MariaTypes.timestamp, row.ts0), Fragment.lit(",\n`ts3` = "), Fragment.encode(LocalDateTime3.dbType, row.ts3), Fragment.lit(",\n`ts6` = "), Fragment.encode(LocalDateTime6.dbType, row.ts6), Fragment.lit("\nwhere `id` = "), Fragment.encode(PrecisionTypesId.dbType, id), Fragment.lit("")).update().runUnchecked(c) > 0 + return Fragment.interpolate(Fragment.lit("update `precision_types`\nset `string10` = "), Fragment.encode(String10.mariaType, row.string10), Fragment.lit(",\n`string20` = "), Fragment.encode(String20.mariaType, row.string20), Fragment.lit(",\n`string50` = "), Fragment.encode(String50.mariaType, row.string50), Fragment.lit(",\n`string100` = "), Fragment.encode(String100.mariaType, row.string100), Fragment.lit(",\n`string255` = "), Fragment.encode(String255.mariaType, row.string255), Fragment.lit(",\n`char10` = "), Fragment.encode(PaddedString10.mariaType, row.char10), Fragment.lit(",\n`decimal5_2` = "), Fragment.encode(Decimal5_2.mariaType, row.decimal52), Fragment.lit(",\n`decimal10_2` = "), Fragment.encode(Decimal10_2.mariaType, row.decimal102), Fragment.lit(",\n`decimal18_4` = "), Fragment.encode(Decimal18_4.mariaType, row.decimal184), Fragment.lit(",\n`numeric8_2` = "), Fragment.encode(Decimal8_2.mariaType, row.numeric82), Fragment.lit(",\n`numeric12_4` = "), Fragment.encode(Decimal12_4.mariaType, row.numeric124), Fragment.lit(",\n`binary16` = "), Fragment.encode(Binary16.mariaType, row.binary16), Fragment.lit(",\n`binary32` = "), Fragment.encode(Binary32.mariaType, row.binary32), Fragment.lit(",\n`binary64` = "), Fragment.encode(Binary64.mariaType, row.binary64), Fragment.lit(",\n`time0` = "), Fragment.encode(MariaTypes.time, row.time0), Fragment.lit(",\n`time3` = "), Fragment.encode(LocalTime3.mariaType, row.time3), Fragment.lit(",\n`time6` = "), Fragment.encode(LocalTime6.mariaType, row.time6), Fragment.lit(",\n`datetime0` = "), Fragment.encode(MariaTypes.datetime, row.datetime0), Fragment.lit(",\n`datetime3` = "), Fragment.encode(LocalDateTime3.mariaType, row.datetime3), Fragment.lit(",\n`datetime6` = "), Fragment.encode(LocalDateTime6.mariaType, row.datetime6), Fragment.lit(",\n`ts0` = "), Fragment.encode(MariaTypes.timestamp, row.ts0), Fragment.lit(",\n`ts3` = "), Fragment.encode(LocalDateTime3.mariaType, row.ts3), Fragment.lit(",\n`ts6` = "), Fragment.encode(LocalDateTime6.mariaType, row.ts6), Fragment.lit("\nwhere `id` = "), Fragment.encode(PrecisionTypesId.mariaType, id), Fragment.lit("")).update().runUnchecked(c) > 0 } override fun upsert( unsaved: PrecisionTypesRow, c: Connection - ): PrecisionTypesRow = Fragment.interpolate(Fragment.lit("INSERT INTO `precision_types`(`id`, `string10`, `string20`, `string50`, `string100`, `string255`, `char10`, `decimal5_2`, `decimal10_2`, `decimal18_4`, `numeric8_2`, `numeric12_4`, `binary16`, `binary32`, `binary64`, `time0`, `time3`, `time6`, `datetime0`, `datetime3`, `datetime6`, `ts0`, `ts3`, `ts6`)\nVALUES ("), Fragment.encode(PrecisionTypesId.dbType, unsaved.id), Fragment.lit(", "), Fragment.encode(String10.dbType, unsaved.string10), Fragment.lit(", "), Fragment.encode(String20.dbType, unsaved.string20), Fragment.lit(", "), Fragment.encode(String50.dbType, unsaved.string50), Fragment.lit(", "), Fragment.encode(String100.dbType, unsaved.string100), Fragment.lit(", "), Fragment.encode(String255.dbType, unsaved.string255), Fragment.lit(", "), Fragment.encode(PaddedString10.dbType, unsaved.char10), Fragment.lit(", "), Fragment.encode(Decimal5_2.dbType, unsaved.decimal52), Fragment.lit(", "), Fragment.encode(Decimal10_2.dbType, unsaved.decimal102), Fragment.lit(", "), Fragment.encode(Decimal18_4.dbType, unsaved.decimal184), Fragment.lit(", "), Fragment.encode(Decimal8_2.dbType, unsaved.numeric82), Fragment.lit(", "), Fragment.encode(Decimal12_4.dbType, unsaved.numeric124), Fragment.lit(", "), Fragment.encode(Binary16.dbType, unsaved.binary16), Fragment.lit(", "), Fragment.encode(Binary32.dbType, unsaved.binary32), Fragment.lit(", "), Fragment.encode(Binary64.dbType, unsaved.binary64), Fragment.lit(", "), Fragment.encode(MariaTypes.time, unsaved.time0), Fragment.lit(", "), Fragment.encode(LocalTime3.dbType, unsaved.time3), Fragment.lit(", "), Fragment.encode(LocalTime6.dbType, unsaved.time6), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.datetime0), Fragment.lit(", "), Fragment.encode(LocalDateTime3.dbType, unsaved.datetime3), Fragment.lit(", "), Fragment.encode(LocalDateTime6.dbType, unsaved.datetime6), Fragment.lit(", "), Fragment.encode(MariaTypes.timestamp, unsaved.ts0), Fragment.lit(", "), Fragment.encode(LocalDateTime3.dbType, unsaved.ts3), Fragment.lit(", "), Fragment.encode(LocalDateTime6.dbType, unsaved.ts6), Fragment.lit(")\nON DUPLICATE KEY UPDATE `string10` = VALUES(`string10`),\n`string20` = VALUES(`string20`),\n`string50` = VALUES(`string50`),\n`string100` = VALUES(`string100`),\n`string255` = VALUES(`string255`),\n`char10` = VALUES(`char10`),\n`decimal5_2` = VALUES(`decimal5_2`),\n`decimal10_2` = VALUES(`decimal10_2`),\n`decimal18_4` = VALUES(`decimal18_4`),\n`numeric8_2` = VALUES(`numeric8_2`),\n`numeric12_4` = VALUES(`numeric12_4`),\n`binary16` = VALUES(`binary16`),\n`binary32` = VALUES(`binary32`),\n`binary64` = VALUES(`binary64`),\n`time0` = VALUES(`time0`),\n`time3` = VALUES(`time3`),\n`time6` = VALUES(`time6`),\n`datetime0` = VALUES(`datetime0`),\n`datetime3` = VALUES(`datetime3`),\n`datetime6` = VALUES(`datetime6`),\n`ts0` = VALUES(`ts0`),\n`ts3` = VALUES(`ts3`),\n`ts6` = VALUES(`ts6`)\nRETURNING `id`, `string10`, `string20`, `string50`, `string100`, `string255`, `char10`, `decimal5_2`, `decimal10_2`, `decimal18_4`, `numeric8_2`, `numeric12_4`, `binary16`, `binary32`, `binary64`, `time0`, `time3`, `time6`, `datetime0`, `datetime3`, `datetime6`, `ts0`, `ts3`, `ts6`")) + ): PrecisionTypesRow = Fragment.interpolate(Fragment.lit("INSERT INTO `precision_types`(`id`, `string10`, `string20`, `string50`, `string100`, `string255`, `char10`, `decimal5_2`, `decimal10_2`, `decimal18_4`, `numeric8_2`, `numeric12_4`, `binary16`, `binary32`, `binary64`, `time0`, `time3`, `time6`, `datetime0`, `datetime3`, `datetime6`, `ts0`, `ts3`, `ts6`)\nVALUES ("), Fragment.encode(PrecisionTypesId.mariaType, unsaved.id), Fragment.lit(", "), Fragment.encode(String10.mariaType, unsaved.string10), Fragment.lit(", "), Fragment.encode(String20.mariaType, unsaved.string20), Fragment.lit(", "), Fragment.encode(String50.mariaType, unsaved.string50), Fragment.lit(", "), Fragment.encode(String100.mariaType, unsaved.string100), Fragment.lit(", "), Fragment.encode(String255.mariaType, unsaved.string255), Fragment.lit(", "), Fragment.encode(PaddedString10.mariaType, unsaved.char10), Fragment.lit(", "), Fragment.encode(Decimal5_2.mariaType, unsaved.decimal52), Fragment.lit(", "), Fragment.encode(Decimal10_2.mariaType, unsaved.decimal102), Fragment.lit(", "), Fragment.encode(Decimal18_4.mariaType, unsaved.decimal184), Fragment.lit(", "), Fragment.encode(Decimal8_2.mariaType, unsaved.numeric82), Fragment.lit(", "), Fragment.encode(Decimal12_4.mariaType, unsaved.numeric124), Fragment.lit(", "), Fragment.encode(Binary16.mariaType, unsaved.binary16), Fragment.lit(", "), Fragment.encode(Binary32.mariaType, unsaved.binary32), Fragment.lit(", "), Fragment.encode(Binary64.mariaType, unsaved.binary64), Fragment.lit(", "), Fragment.encode(MariaTypes.time, unsaved.time0), Fragment.lit(", "), Fragment.encode(LocalTime3.mariaType, unsaved.time3), Fragment.lit(", "), Fragment.encode(LocalTime6.mariaType, unsaved.time6), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.datetime0), Fragment.lit(", "), Fragment.encode(LocalDateTime3.mariaType, unsaved.datetime3), Fragment.lit(", "), Fragment.encode(LocalDateTime6.mariaType, unsaved.datetime6), Fragment.lit(", "), Fragment.encode(MariaTypes.timestamp, unsaved.ts0), Fragment.lit(", "), Fragment.encode(LocalDateTime3.mariaType, unsaved.ts3), Fragment.lit(", "), Fragment.encode(LocalDateTime6.mariaType, unsaved.ts6), Fragment.lit(")\nON DUPLICATE KEY UPDATE `string10` = VALUES(`string10`),\n`string20` = VALUES(`string20`),\n`string50` = VALUES(`string50`),\n`string100` = VALUES(`string100`),\n`string255` = VALUES(`string255`),\n`char10` = VALUES(`char10`),\n`decimal5_2` = VALUES(`decimal5_2`),\n`decimal10_2` = VALUES(`decimal10_2`),\n`decimal18_4` = VALUES(`decimal18_4`),\n`numeric8_2` = VALUES(`numeric8_2`),\n`numeric12_4` = VALUES(`numeric12_4`),\n`binary16` = VALUES(`binary16`),\n`binary32` = VALUES(`binary32`),\n`binary64` = VALUES(`binary64`),\n`time0` = VALUES(`time0`),\n`time3` = VALUES(`time3`),\n`time6` = VALUES(`time6`),\n`datetime0` = VALUES(`datetime0`),\n`datetime3` = VALUES(`datetime3`),\n`datetime6` = VALUES(`datetime6`),\n`ts0` = VALUES(`ts0`),\n`ts3` = VALUES(`ts3`),\n`ts6` = VALUES(`ts6`)\nRETURNING `id`, `string10`, `string20`, `string50`, `string100`, `string255`, `char10`, `decimal5_2`, `decimal10_2`, `decimal18_4`, `numeric8_2`, `numeric12_4`, `binary16`, `binary32`, `binary64`, `time0`, `time3`, `time6`, `datetime0`, `datetime3`, `datetime6`, `ts0`, `ts3`, `ts6`")) .updateReturning(PrecisionTypesRow._rowParser.exactlyOne()) .runUnchecked(c) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/precision_types/PrecisionTypesRow.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/precision_types/PrecisionTypesRow.kt index 90b41b322c..e39fe0a064 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/precision_types/PrecisionTypesRow.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/precision_types/PrecisionTypesRow.kt @@ -148,6 +148,6 @@ data class PrecisionTypesRow( ): PrecisionTypesRowUnsaved = PrecisionTypesRowUnsaved(string10, string20, string50, string100, string255, char10, decimal52, decimal102, decimal184, numeric82, numeric124, binary16, binary32, binary64, time0, time3, time6, datetime0, datetime3, datetime6, ts0, ts3, ts6) companion object { - val _rowParser: RowParser = RowParsers.of(PrecisionTypesId.dbType, String10.dbType, String20.dbType, String50.dbType, String100.dbType, String255.dbType, PaddedString10.dbType, Decimal5_2.dbType, Decimal10_2.dbType, Decimal18_4.dbType, Decimal8_2.dbType, Decimal12_4.dbType, Binary16.dbType, Binary32.dbType, Binary64.dbType, MariaTypes.time, LocalTime3.dbType, LocalTime6.dbType, MariaTypes.datetime, LocalDateTime3.dbType, LocalDateTime6.dbType, MariaTypes.timestamp, LocalDateTime3.dbType, LocalDateTime6.dbType, { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23 -> PrecisionTypesRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23) }, { row -> arrayOf(row.id, row.string10, row.string20, row.string50, row.string100, row.string255, row.char10, row.decimal52, row.decimal102, row.decimal184, row.numeric82, row.numeric124, row.binary16, row.binary32, row.binary64, row.time0, row.time3, row.time6, row.datetime0, row.datetime3, row.datetime6, row.ts0, row.ts3, row.ts6) }) + val _rowParser: RowParser = RowParsers.of(PrecisionTypesId.mariaType, String10.mariaType, String20.mariaType, String50.mariaType, String100.mariaType, String255.mariaType, PaddedString10.mariaType, Decimal5_2.mariaType, Decimal10_2.mariaType, Decimal18_4.mariaType, Decimal8_2.mariaType, Decimal12_4.mariaType, Binary16.mariaType, Binary32.mariaType, Binary64.mariaType, MariaTypes.time, LocalTime3.mariaType, LocalTime6.mariaType, MariaTypes.datetime, LocalDateTime3.mariaType, LocalDateTime6.mariaType, MariaTypes.timestamp, LocalDateTime3.mariaType, LocalDateTime6.mariaType, { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23 -> PrecisionTypesRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23) }, { row -> arrayOf(row.id, row.string10, row.string20, row.string50, row.string100, row.string255, row.char10, row.decimal52, row.decimal102, row.decimal184, row.numeric82, row.numeric124, row.binary16, row.binary32, row.binary64, row.time0, row.time3, row.time6, row.datetime0, row.datetime3, row.datetime6, row.ts0, row.ts3, row.ts6) }) } } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullFields.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullFields.kt index ef1f650799..886f1d345b 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullFields.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullFields.kt @@ -88,57 +88,57 @@ data class PrecisionTypesNullFields(val _path: List) : TupleExpr24 = _path - fun binary16(): OptField = OptField(_path, "binary16", PrecisionTypesNullRow::binary16, null, null, { row, value -> row.copy(binary16 = value) }, Binary16.dbType) + fun binary16(): OptField = OptField(_path, "binary16", PrecisionTypesNullRow::binary16, null, null, { row, value -> row.copy(binary16 = value) }, Binary16.mariaType) - fun binary32(): OptField = OptField(_path, "binary32", PrecisionTypesNullRow::binary32, null, null, { row, value -> row.copy(binary32 = value) }, Binary32.dbType) + fun binary32(): OptField = OptField(_path, "binary32", PrecisionTypesNullRow::binary32, null, null, { row, value -> row.copy(binary32 = value) }, Binary32.mariaType) - fun binary64(): OptField = OptField(_path, "binary64", PrecisionTypesNullRow::binary64, null, null, { row, value -> row.copy(binary64 = value) }, Binary64.dbType) + fun binary64(): OptField = OptField(_path, "binary64", PrecisionTypesNullRow::binary64, null, null, { row, value -> row.copy(binary64 = value) }, Binary64.mariaType) - fun char10(): OptField = OptField(_path, "char10", PrecisionTypesNullRow::char10, null, null, { row, value -> row.copy(char10 = value) }, PaddedString10.dbType) + fun char10(): OptField = OptField(_path, "char10", PrecisionTypesNullRow::char10, null, null, { row, value -> row.copy(char10 = value) }, PaddedString10.mariaType) override fun columns(): List> = listOf(this.id().underlying, this.string10().underlying, this.string20().underlying, this.string50().underlying, this.string100().underlying, this.string255().underlying, this.char10().underlying, this.decimal52().underlying, this.decimal102().underlying, this.decimal184().underlying, this.numeric82().underlying, this.numeric124().underlying, this.binary16().underlying, this.binary32().underlying, this.binary64().underlying, this.time0().underlying, this.time3().underlying, this.time6().underlying, this.datetime0().underlying, this.datetime3().underlying, this.datetime6().underlying, this.ts0().underlying, this.ts3().underlying, this.ts6().underlying) fun datetime0(): OptField = OptField(_path, "datetime0", PrecisionTypesNullRow::datetime0, null, null, { row, value -> row.copy(datetime0 = value) }, MariaTypes.datetime) - fun datetime3(): OptField = OptField(_path, "datetime3", PrecisionTypesNullRow::datetime3, null, null, { row, value -> row.copy(datetime3 = value) }, LocalDateTime3.dbType) + fun datetime3(): OptField = OptField(_path, "datetime3", PrecisionTypesNullRow::datetime3, null, null, { row, value -> row.copy(datetime3 = value) }, LocalDateTime3.mariaType) - fun datetime6(): OptField = OptField(_path, "datetime6", PrecisionTypesNullRow::datetime6, null, null, { row, value -> row.copy(datetime6 = value) }, LocalDateTime6.dbType) + fun datetime6(): OptField = OptField(_path, "datetime6", PrecisionTypesNullRow::datetime6, null, null, { row, value -> row.copy(datetime6 = value) }, LocalDateTime6.mariaType) - fun decimal102(): OptField = OptField(_path, "decimal10_2", PrecisionTypesNullRow::decimal102, null, null, { row, value -> row.copy(decimal102 = value) }, Decimal10_2.dbType) + fun decimal102(): OptField = OptField(_path, "decimal10_2", PrecisionTypesNullRow::decimal102, null, null, { row, value -> row.copy(decimal102 = value) }, Decimal10_2.mariaType) - fun decimal184(): OptField = OptField(_path, "decimal18_4", PrecisionTypesNullRow::decimal184, null, null, { row, value -> row.copy(decimal184 = value) }, Decimal18_4.dbType) + fun decimal184(): OptField = OptField(_path, "decimal18_4", PrecisionTypesNullRow::decimal184, null, null, { row, value -> row.copy(decimal184 = value) }, Decimal18_4.mariaType) - fun decimal52(): OptField = OptField(_path, "decimal5_2", PrecisionTypesNullRow::decimal52, null, null, { row, value -> row.copy(decimal52 = value) }, Decimal5_2.dbType) + fun decimal52(): OptField = OptField(_path, "decimal5_2", PrecisionTypesNullRow::decimal52, null, null, { row, value -> row.copy(decimal52 = value) }, Decimal5_2.mariaType) - fun id(): IdField = IdField(_path, "id", PrecisionTypesNullRow::id, null, null, { row, value -> row.copy(id = value) }, PrecisionTypesNullId.dbType) + fun id(): IdField = IdField(_path, "id", PrecisionTypesNullRow::id, null, null, { row, value -> row.copy(id = value) }, PrecisionTypesNullId.mariaType) - fun numeric124(): OptField = OptField(_path, "numeric12_4", PrecisionTypesNullRow::numeric124, null, null, { row, value -> row.copy(numeric124 = value) }, Decimal12_4.dbType) + fun numeric124(): OptField = OptField(_path, "numeric12_4", PrecisionTypesNullRow::numeric124, null, null, { row, value -> row.copy(numeric124 = value) }, Decimal12_4.mariaType) - fun numeric82(): OptField = OptField(_path, "numeric8_2", PrecisionTypesNullRow::numeric82, null, null, { row, value -> row.copy(numeric82 = value) }, Decimal8_2.dbType) + fun numeric82(): OptField = OptField(_path, "numeric8_2", PrecisionTypesNullRow::numeric82, null, null, { row, value -> row.copy(numeric82 = value) }, Decimal8_2.mariaType) override fun rowParser(): RowParser = PrecisionTypesNullRow._rowParser.underlying - fun string10(): OptField = OptField(_path, "string10", PrecisionTypesNullRow::string10, null, null, { row, value -> row.copy(string10 = value) }, String10.dbType) + fun string10(): OptField = OptField(_path, "string10", PrecisionTypesNullRow::string10, null, null, { row, value -> row.copy(string10 = value) }, String10.mariaType) - fun string100(): OptField = OptField(_path, "string100", PrecisionTypesNullRow::string100, null, null, { row, value -> row.copy(string100 = value) }, String100.dbType) + fun string100(): OptField = OptField(_path, "string100", PrecisionTypesNullRow::string100, null, null, { row, value -> row.copy(string100 = value) }, String100.mariaType) - fun string20(): OptField = OptField(_path, "string20", PrecisionTypesNullRow::string20, null, null, { row, value -> row.copy(string20 = value) }, String20.dbType) + fun string20(): OptField = OptField(_path, "string20", PrecisionTypesNullRow::string20, null, null, { row, value -> row.copy(string20 = value) }, String20.mariaType) - fun string255(): OptField = OptField(_path, "string255", PrecisionTypesNullRow::string255, null, null, { row, value -> row.copy(string255 = value) }, String255.dbType) + fun string255(): OptField = OptField(_path, "string255", PrecisionTypesNullRow::string255, null, null, { row, value -> row.copy(string255 = value) }, String255.mariaType) - fun string50(): OptField = OptField(_path, "string50", PrecisionTypesNullRow::string50, null, null, { row, value -> row.copy(string50 = value) }, String50.dbType) + fun string50(): OptField = OptField(_path, "string50", PrecisionTypesNullRow::string50, null, null, { row, value -> row.copy(string50 = value) }, String50.mariaType) fun time0(): OptField = OptField(_path, "time0", PrecisionTypesNullRow::time0, null, null, { row, value -> row.copy(time0 = value) }, MariaTypes.time) - fun time3(): OptField = OptField(_path, "time3", PrecisionTypesNullRow::time3, null, null, { row, value -> row.copy(time3 = value) }, LocalTime3.dbType) + fun time3(): OptField = OptField(_path, "time3", PrecisionTypesNullRow::time3, null, null, { row, value -> row.copy(time3 = value) }, LocalTime3.mariaType) - fun time6(): OptField = OptField(_path, "time6", PrecisionTypesNullRow::time6, null, null, { row, value -> row.copy(time6 = value) }, LocalTime6.dbType) + fun time6(): OptField = OptField(_path, "time6", PrecisionTypesNullRow::time6, null, null, { row, value -> row.copy(time6 = value) }, LocalTime6.mariaType) fun ts0(): OptField = OptField(_path, "ts0", PrecisionTypesNullRow::ts0, null, null, { row, value -> row.copy(ts0 = value) }, MariaTypes.timestamp) - fun ts3(): OptField = OptField(_path, "ts3", PrecisionTypesNullRow::ts3, null, null, { row, value -> row.copy(ts3 = value) }, LocalDateTime3.dbType) + fun ts3(): OptField = OptField(_path, "ts3", PrecisionTypesNullRow::ts3, null, null, { row, value -> row.copy(ts3 = value) }, LocalDateTime3.mariaType) - fun ts6(): OptField = OptField(_path, "ts6", PrecisionTypesNullRow::ts6, null, null, { row, value -> row.copy(ts6 = value) }, LocalDateTime6.dbType) + fun ts6(): OptField = OptField(_path, "ts6", PrecisionTypesNullRow::ts6, null, null, { row, value -> row.copy(ts6 = value) }, LocalDateTime6.mariaType) override fun withPaths(_path: List): RelationStructure = PrecisionTypesNullFields(_path) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullId.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullId.kt index 650c067b33..6a92b593a8 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullId.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullId.kt @@ -20,7 +20,7 @@ data class PrecisionTypesNullId(@field:JsonValue val value: Int) { val bijection: Bijection = Bijection.of(PrecisionTypesNullId::value, ::PrecisionTypesNullId) - val dbType: MariaType = + val mariaType: MariaType = KotlinDbTypes.MariaTypes.int_.bimap(::PrecisionTypesNullId, PrecisionTypesNullId::value) } } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullRepoImpl.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullRepoImpl.kt index d6bee6566f..3a3213249f 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullRepoImpl.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullRepoImpl.kt @@ -43,21 +43,21 @@ class PrecisionTypesNullRepoImpl() : PrecisionTypesNullRepo { override fun deleteById( id: PrecisionTypesNullId, c: Connection - ): Boolean = Fragment.interpolate(Fragment.lit("delete from `precision_types_null` where `id` = "), Fragment.encode(PrecisionTypesNullId.dbType, id), Fragment.lit("")).update().runUnchecked(c) > 0 + ): Boolean = Fragment.interpolate(Fragment.lit("delete from `precision_types_null` where `id` = "), Fragment.encode(PrecisionTypesNullId.mariaType, id), Fragment.lit("")).update().runUnchecked(c) > 0 override fun deleteByIds( ids: Array, c: Connection ): Int { val fragments: ArrayList = ArrayList() - for (id in ids) { fragments.add(Fragment.encode(PrecisionTypesNullId.dbType, id)) } + for (id in ids) { fragments.add(Fragment.encode(PrecisionTypesNullId.mariaType, id)) } return Fragment.interpolate(Fragment.lit("delete from `precision_types_null` where `id` in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).update().runUnchecked(c) } override fun insert( unsaved: PrecisionTypesNullRow, c: Connection - ): PrecisionTypesNullRow = Fragment.interpolate(Fragment.lit("insert into `precision_types_null`(`string10`, `string20`, `string50`, `string100`, `string255`, `char10`, `decimal5_2`, `decimal10_2`, `decimal18_4`, `numeric8_2`, `numeric12_4`, `binary16`, `binary32`, `binary64`, `time0`, `time3`, `time6`, `datetime0`, `datetime3`, `datetime6`, `ts0`, `ts3`, `ts6`)\nvalues ("), Fragment.encode(String10.dbType.nullable(), unsaved.string10), Fragment.lit(", "), Fragment.encode(String20.dbType.nullable(), unsaved.string20), Fragment.lit(", "), Fragment.encode(String50.dbType.nullable(), unsaved.string50), Fragment.lit(", "), Fragment.encode(String100.dbType.nullable(), unsaved.string100), Fragment.lit(", "), Fragment.encode(String255.dbType.nullable(), unsaved.string255), Fragment.lit(", "), Fragment.encode(PaddedString10.dbType.nullable(), unsaved.char10), Fragment.lit(", "), Fragment.encode(Decimal5_2.dbType.nullable(), unsaved.decimal52), Fragment.lit(", "), Fragment.encode(Decimal10_2.dbType.nullable(), unsaved.decimal102), Fragment.lit(", "), Fragment.encode(Decimal18_4.dbType.nullable(), unsaved.decimal184), Fragment.lit(", "), Fragment.encode(Decimal8_2.dbType.nullable(), unsaved.numeric82), Fragment.lit(", "), Fragment.encode(Decimal12_4.dbType.nullable(), unsaved.numeric124), Fragment.lit(", "), Fragment.encode(Binary16.dbType.nullable(), unsaved.binary16), Fragment.lit(", "), Fragment.encode(Binary32.dbType.nullable(), unsaved.binary32), Fragment.lit(", "), Fragment.encode(Binary64.dbType.nullable(), unsaved.binary64), Fragment.lit(", "), Fragment.encode(MariaTypes.time.nullable(), unsaved.time0), Fragment.lit(", "), Fragment.encode(LocalTime3.dbType.nullable(), unsaved.time3), Fragment.lit(", "), Fragment.encode(LocalTime6.dbType.nullable(), unsaved.time6), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime.nullable(), unsaved.datetime0), Fragment.lit(", "), Fragment.encode(LocalDateTime3.dbType.nullable(), unsaved.datetime3), Fragment.lit(", "), Fragment.encode(LocalDateTime6.dbType.nullable(), unsaved.datetime6), Fragment.lit(", "), Fragment.encode(MariaTypes.timestamp.nullable(), unsaved.ts0), Fragment.lit(", "), Fragment.encode(LocalDateTime3.dbType.nullable(), unsaved.ts3), Fragment.lit(", "), Fragment.encode(LocalDateTime6.dbType.nullable(), unsaved.ts6), Fragment.lit(")\nRETURNING `id`, `string10`, `string20`, `string50`, `string100`, `string255`, `char10`, `decimal5_2`, `decimal10_2`, `decimal18_4`, `numeric8_2`, `numeric12_4`, `binary16`, `binary32`, `binary64`, `time0`, `time3`, `time6`, `datetime0`, `datetime3`, `datetime6`, `ts0`, `ts3`, `ts6`\n")) + ): PrecisionTypesNullRow = Fragment.interpolate(Fragment.lit("insert into `precision_types_null`(`string10`, `string20`, `string50`, `string100`, `string255`, `char10`, `decimal5_2`, `decimal10_2`, `decimal18_4`, `numeric8_2`, `numeric12_4`, `binary16`, `binary32`, `binary64`, `time0`, `time3`, `time6`, `datetime0`, `datetime3`, `datetime6`, `ts0`, `ts3`, `ts6`)\nvalues ("), Fragment.encode(String10.mariaType.nullable(), unsaved.string10), Fragment.lit(", "), Fragment.encode(String20.mariaType.nullable(), unsaved.string20), Fragment.lit(", "), Fragment.encode(String50.mariaType.nullable(), unsaved.string50), Fragment.lit(", "), Fragment.encode(String100.mariaType.nullable(), unsaved.string100), Fragment.lit(", "), Fragment.encode(String255.mariaType.nullable(), unsaved.string255), Fragment.lit(", "), Fragment.encode(PaddedString10.mariaType.nullable(), unsaved.char10), Fragment.lit(", "), Fragment.encode(Decimal5_2.mariaType.nullable(), unsaved.decimal52), Fragment.lit(", "), Fragment.encode(Decimal10_2.mariaType.nullable(), unsaved.decimal102), Fragment.lit(", "), Fragment.encode(Decimal18_4.mariaType.nullable(), unsaved.decimal184), Fragment.lit(", "), Fragment.encode(Decimal8_2.mariaType.nullable(), unsaved.numeric82), Fragment.lit(", "), Fragment.encode(Decimal12_4.mariaType.nullable(), unsaved.numeric124), Fragment.lit(", "), Fragment.encode(Binary16.mariaType.nullable(), unsaved.binary16), Fragment.lit(", "), Fragment.encode(Binary32.mariaType.nullable(), unsaved.binary32), Fragment.lit(", "), Fragment.encode(Binary64.mariaType.nullable(), unsaved.binary64), Fragment.lit(", "), Fragment.encode(MariaTypes.time.nullable(), unsaved.time0), Fragment.lit(", "), Fragment.encode(LocalTime3.mariaType.nullable(), unsaved.time3), Fragment.lit(", "), Fragment.encode(LocalTime6.mariaType.nullable(), unsaved.time6), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime.nullable(), unsaved.datetime0), Fragment.lit(", "), Fragment.encode(LocalDateTime3.mariaType.nullable(), unsaved.datetime3), Fragment.lit(", "), Fragment.encode(LocalDateTime6.mariaType.nullable(), unsaved.datetime6), Fragment.lit(", "), Fragment.encode(MariaTypes.timestamp.nullable(), unsaved.ts0), Fragment.lit(", "), Fragment.encode(LocalDateTime3.mariaType.nullable(), unsaved.ts3), Fragment.lit(", "), Fragment.encode(LocalDateTime6.mariaType.nullable(), unsaved.ts6), Fragment.lit(")\nRETURNING `id`, `string10`, `string20`, `string50`, `string100`, `string255`, `char10`, `decimal5_2`, `decimal10_2`, `decimal18_4`, `numeric8_2`, `numeric12_4`, `binary16`, `binary32`, `binary64`, `time0`, `time3`, `time6`, `datetime0`, `datetime3`, `datetime6`, `ts0`, `ts3`, `ts6`\n")) .updateReturning(PrecisionTypesNullRow._rowParser.exactlyOne()).runUnchecked(c) override fun insert( @@ -69,72 +69,72 @@ class PrecisionTypesNullRepoImpl() : PrecisionTypesNullRepo { unsaved.string10.visit( { }, { value -> columns.add(Fragment.lit("`string10`")) - values.add(Fragment.interpolate(Fragment.encode(String10.dbType.nullable(), value), Fragment.lit(""))) } + values.add(Fragment.interpolate(Fragment.encode(String10.mariaType.nullable(), value), Fragment.lit(""))) } ); unsaved.string20.visit( { }, { value -> columns.add(Fragment.lit("`string20`")) - values.add(Fragment.interpolate(Fragment.encode(String20.dbType.nullable(), value), Fragment.lit(""))) } + values.add(Fragment.interpolate(Fragment.encode(String20.mariaType.nullable(), value), Fragment.lit(""))) } ); unsaved.string50.visit( { }, { value -> columns.add(Fragment.lit("`string50`")) - values.add(Fragment.interpolate(Fragment.encode(String50.dbType.nullable(), value), Fragment.lit(""))) } + values.add(Fragment.interpolate(Fragment.encode(String50.mariaType.nullable(), value), Fragment.lit(""))) } ); unsaved.string100.visit( { }, { value -> columns.add(Fragment.lit("`string100`")) - values.add(Fragment.interpolate(Fragment.encode(String100.dbType.nullable(), value), Fragment.lit(""))) } + values.add(Fragment.interpolate(Fragment.encode(String100.mariaType.nullable(), value), Fragment.lit(""))) } ); unsaved.string255.visit( { }, { value -> columns.add(Fragment.lit("`string255`")) - values.add(Fragment.interpolate(Fragment.encode(String255.dbType.nullable(), value), Fragment.lit(""))) } + values.add(Fragment.interpolate(Fragment.encode(String255.mariaType.nullable(), value), Fragment.lit(""))) } ); unsaved.char10.visit( { }, { value -> columns.add(Fragment.lit("`char10`")) - values.add(Fragment.interpolate(Fragment.encode(PaddedString10.dbType.nullable(), value), Fragment.lit(""))) } + values.add(Fragment.interpolate(Fragment.encode(PaddedString10.mariaType.nullable(), value), Fragment.lit(""))) } ); unsaved.decimal52.visit( { }, { value -> columns.add(Fragment.lit("`decimal5_2`")) - values.add(Fragment.interpolate(Fragment.encode(Decimal5_2.dbType.nullable(), value), Fragment.lit(""))) } + values.add(Fragment.interpolate(Fragment.encode(Decimal5_2.mariaType.nullable(), value), Fragment.lit(""))) } ); unsaved.decimal102.visit( { }, { value -> columns.add(Fragment.lit("`decimal10_2`")) - values.add(Fragment.interpolate(Fragment.encode(Decimal10_2.dbType.nullable(), value), Fragment.lit(""))) } + values.add(Fragment.interpolate(Fragment.encode(Decimal10_2.mariaType.nullable(), value), Fragment.lit(""))) } ); unsaved.decimal184.visit( { }, { value -> columns.add(Fragment.lit("`decimal18_4`")) - values.add(Fragment.interpolate(Fragment.encode(Decimal18_4.dbType.nullable(), value), Fragment.lit(""))) } + values.add(Fragment.interpolate(Fragment.encode(Decimal18_4.mariaType.nullable(), value), Fragment.lit(""))) } ); unsaved.numeric82.visit( { }, { value -> columns.add(Fragment.lit("`numeric8_2`")) - values.add(Fragment.interpolate(Fragment.encode(Decimal8_2.dbType.nullable(), value), Fragment.lit(""))) } + values.add(Fragment.interpolate(Fragment.encode(Decimal8_2.mariaType.nullable(), value), Fragment.lit(""))) } ); unsaved.numeric124.visit( { }, { value -> columns.add(Fragment.lit("`numeric12_4`")) - values.add(Fragment.interpolate(Fragment.encode(Decimal12_4.dbType.nullable(), value), Fragment.lit(""))) } + values.add(Fragment.interpolate(Fragment.encode(Decimal12_4.mariaType.nullable(), value), Fragment.lit(""))) } ); unsaved.binary16.visit( { }, { value -> columns.add(Fragment.lit("`binary16`")) - values.add(Fragment.interpolate(Fragment.encode(Binary16.dbType.nullable(), value), Fragment.lit(""))) } + values.add(Fragment.interpolate(Fragment.encode(Binary16.mariaType.nullable(), value), Fragment.lit(""))) } ); unsaved.binary32.visit( { }, { value -> columns.add(Fragment.lit("`binary32`")) - values.add(Fragment.interpolate(Fragment.encode(Binary32.dbType.nullable(), value), Fragment.lit(""))) } + values.add(Fragment.interpolate(Fragment.encode(Binary32.mariaType.nullable(), value), Fragment.lit(""))) } ); unsaved.binary64.visit( { }, { value -> columns.add(Fragment.lit("`binary64`")) - values.add(Fragment.interpolate(Fragment.encode(Binary64.dbType.nullable(), value), Fragment.lit(""))) } + values.add(Fragment.interpolate(Fragment.encode(Binary64.mariaType.nullable(), value), Fragment.lit(""))) } ); unsaved.time0.visit( { }, @@ -144,12 +144,12 @@ class PrecisionTypesNullRepoImpl() : PrecisionTypesNullRepo { unsaved.time3.visit( { }, { value -> columns.add(Fragment.lit("`time3`")) - values.add(Fragment.interpolate(Fragment.encode(LocalTime3.dbType.nullable(), value), Fragment.lit(""))) } + values.add(Fragment.interpolate(Fragment.encode(LocalTime3.mariaType.nullable(), value), Fragment.lit(""))) } ); unsaved.time6.visit( { }, { value -> columns.add(Fragment.lit("`time6`")) - values.add(Fragment.interpolate(Fragment.encode(LocalTime6.dbType.nullable(), value), Fragment.lit(""))) } + values.add(Fragment.interpolate(Fragment.encode(LocalTime6.mariaType.nullable(), value), Fragment.lit(""))) } ); unsaved.datetime0.visit( { }, @@ -159,12 +159,12 @@ class PrecisionTypesNullRepoImpl() : PrecisionTypesNullRepo { unsaved.datetime3.visit( { }, { value -> columns.add(Fragment.lit("`datetime3`")) - values.add(Fragment.interpolate(Fragment.encode(LocalDateTime3.dbType.nullable(), value), Fragment.lit(""))) } + values.add(Fragment.interpolate(Fragment.encode(LocalDateTime3.mariaType.nullable(), value), Fragment.lit(""))) } ); unsaved.datetime6.visit( { }, { value -> columns.add(Fragment.lit("`datetime6`")) - values.add(Fragment.interpolate(Fragment.encode(LocalDateTime6.dbType.nullable(), value), Fragment.lit(""))) } + values.add(Fragment.interpolate(Fragment.encode(LocalDateTime6.mariaType.nullable(), value), Fragment.lit(""))) } ); unsaved.ts0.visit( { }, @@ -174,12 +174,12 @@ class PrecisionTypesNullRepoImpl() : PrecisionTypesNullRepo { unsaved.ts3.visit( { }, { value -> columns.add(Fragment.lit("`ts3`")) - values.add(Fragment.interpolate(Fragment.encode(LocalDateTime3.dbType.nullable(), value), Fragment.lit(""))) } + values.add(Fragment.interpolate(Fragment.encode(LocalDateTime3.mariaType.nullable(), value), Fragment.lit(""))) } ); unsaved.ts6.visit( { }, { value -> columns.add(Fragment.lit("`ts6`")) - values.add(Fragment.interpolate(Fragment.encode(LocalDateTime6.dbType.nullable(), value), Fragment.lit(""))) } + values.add(Fragment.interpolate(Fragment.encode(LocalDateTime6.mariaType.nullable(), value), Fragment.lit(""))) } ); val q: Fragment = (if (columns.isEmpty()) Fragment.interpolate(Fragment.lit("insert into `precision_types_null`() values ()\nRETURNING `id`, `string10`, `string20`, `string50`, `string100`, `string255`, `char10`, `decimal5_2`, `decimal10_2`, `decimal18_4`, `numeric8_2`, `numeric12_4`, `binary16`, `binary32`, `binary64`, `time0`, `time3`, `time6`, `datetime0`, `datetime3`, `datetime6`, `ts0`, `ts3`, `ts6`\n")) else Fragment.interpolate(Fragment.lit("insert into `precision_types_null`("), Fragment.comma(columns.toMutableList()), Fragment.lit(")\nvalues ("), Fragment.comma(values.toMutableList()), Fragment.lit(")\nRETURNING `id`, `string10`, `string20`, `string50`, `string100`, `string255`, `char10`, `decimal5_2`, `decimal10_2`, `decimal18_4`, `numeric8_2`, `numeric12_4`, `binary16`, `binary32`, `binary64`, `time0`, `time3`, `time6`, `datetime0`, `datetime3`, `datetime6`, `ts0`, `ts3`, `ts6`\n"))) return q.updateReturning(PrecisionTypesNullRow._rowParser.exactlyOne()).runUnchecked(c) @@ -192,14 +192,14 @@ class PrecisionTypesNullRepoImpl() : PrecisionTypesNullRepo { override fun selectById( id: PrecisionTypesNullId, c: Connection - ): PrecisionTypesNullRow? = Fragment.interpolate(Fragment.lit("select `id`, `string10`, `string20`, `string50`, `string100`, `string255`, `char10`, `decimal5_2`, `decimal10_2`, `decimal18_4`, `numeric8_2`, `numeric12_4`, `binary16`, `binary32`, `binary64`, `time0`, `time3`, `time6`, `datetime0`, `datetime3`, `datetime6`, `ts0`, `ts3`, `ts6`\nfrom `precision_types_null`\nwhere `id` = "), Fragment.encode(PrecisionTypesNullId.dbType, id), Fragment.lit("")).query(PrecisionTypesNullRow._rowParser.first()).runUnchecked(c) + ): PrecisionTypesNullRow? = Fragment.interpolate(Fragment.lit("select `id`, `string10`, `string20`, `string50`, `string100`, `string255`, `char10`, `decimal5_2`, `decimal10_2`, `decimal18_4`, `numeric8_2`, `numeric12_4`, `binary16`, `binary32`, `binary64`, `time0`, `time3`, `time6`, `datetime0`, `datetime3`, `datetime6`, `ts0`, `ts3`, `ts6`\nfrom `precision_types_null`\nwhere `id` = "), Fragment.encode(PrecisionTypesNullId.mariaType, id), Fragment.lit("")).query(PrecisionTypesNullRow._rowParser.first()).runUnchecked(c) override fun selectByIds( ids: Array, c: Connection ): List { val fragments: ArrayList = ArrayList() - for (id in ids) { fragments.add(Fragment.encode(PrecisionTypesNullId.dbType, id)) } + for (id in ids) { fragments.add(Fragment.encode(PrecisionTypesNullId.mariaType, id)) } return Fragment.interpolate(Fragment.lit("select `id`, `string10`, `string20`, `string50`, `string100`, `string255`, `char10`, `decimal5_2`, `decimal10_2`, `decimal18_4`, `numeric8_2`, `numeric12_4`, `binary16`, `binary32`, `binary64`, `time0`, `time3`, `time6`, `datetime0`, `datetime3`, `datetime6`, `ts0`, `ts3`, `ts6` from `precision_types_null` where `id` in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).query(PrecisionTypesNullRow._rowParser.all()).runUnchecked(c) } @@ -219,13 +219,13 @@ class PrecisionTypesNullRepoImpl() : PrecisionTypesNullRepo { c: Connection ): Boolean { val id: PrecisionTypesNullId = row.id - return Fragment.interpolate(Fragment.lit("update `precision_types_null`\nset `string10` = "), Fragment.encode(String10.dbType.nullable(), row.string10), Fragment.lit(",\n`string20` = "), Fragment.encode(String20.dbType.nullable(), row.string20), Fragment.lit(",\n`string50` = "), Fragment.encode(String50.dbType.nullable(), row.string50), Fragment.lit(",\n`string100` = "), Fragment.encode(String100.dbType.nullable(), row.string100), Fragment.lit(",\n`string255` = "), Fragment.encode(String255.dbType.nullable(), row.string255), Fragment.lit(",\n`char10` = "), Fragment.encode(PaddedString10.dbType.nullable(), row.char10), Fragment.lit(",\n`decimal5_2` = "), Fragment.encode(Decimal5_2.dbType.nullable(), row.decimal52), Fragment.lit(",\n`decimal10_2` = "), Fragment.encode(Decimal10_2.dbType.nullable(), row.decimal102), Fragment.lit(",\n`decimal18_4` = "), Fragment.encode(Decimal18_4.dbType.nullable(), row.decimal184), Fragment.lit(",\n`numeric8_2` = "), Fragment.encode(Decimal8_2.dbType.nullable(), row.numeric82), Fragment.lit(",\n`numeric12_4` = "), Fragment.encode(Decimal12_4.dbType.nullable(), row.numeric124), Fragment.lit(",\n`binary16` = "), Fragment.encode(Binary16.dbType.nullable(), row.binary16), Fragment.lit(",\n`binary32` = "), Fragment.encode(Binary32.dbType.nullable(), row.binary32), Fragment.lit(",\n`binary64` = "), Fragment.encode(Binary64.dbType.nullable(), row.binary64), Fragment.lit(",\n`time0` = "), Fragment.encode(MariaTypes.time.nullable(), row.time0), Fragment.lit(",\n`time3` = "), Fragment.encode(LocalTime3.dbType.nullable(), row.time3), Fragment.lit(",\n`time6` = "), Fragment.encode(LocalTime6.dbType.nullable(), row.time6), Fragment.lit(",\n`datetime0` = "), Fragment.encode(MariaTypes.datetime.nullable(), row.datetime0), Fragment.lit(",\n`datetime3` = "), Fragment.encode(LocalDateTime3.dbType.nullable(), row.datetime3), Fragment.lit(",\n`datetime6` = "), Fragment.encode(LocalDateTime6.dbType.nullable(), row.datetime6), Fragment.lit(",\n`ts0` = "), Fragment.encode(MariaTypes.timestamp.nullable(), row.ts0), Fragment.lit(",\n`ts3` = "), Fragment.encode(LocalDateTime3.dbType.nullable(), row.ts3), Fragment.lit(",\n`ts6` = "), Fragment.encode(LocalDateTime6.dbType.nullable(), row.ts6), Fragment.lit("\nwhere `id` = "), Fragment.encode(PrecisionTypesNullId.dbType, id), Fragment.lit("")).update().runUnchecked(c) > 0 + return Fragment.interpolate(Fragment.lit("update `precision_types_null`\nset `string10` = "), Fragment.encode(String10.mariaType.nullable(), row.string10), Fragment.lit(",\n`string20` = "), Fragment.encode(String20.mariaType.nullable(), row.string20), Fragment.lit(",\n`string50` = "), Fragment.encode(String50.mariaType.nullable(), row.string50), Fragment.lit(",\n`string100` = "), Fragment.encode(String100.mariaType.nullable(), row.string100), Fragment.lit(",\n`string255` = "), Fragment.encode(String255.mariaType.nullable(), row.string255), Fragment.lit(",\n`char10` = "), Fragment.encode(PaddedString10.mariaType.nullable(), row.char10), Fragment.lit(",\n`decimal5_2` = "), Fragment.encode(Decimal5_2.mariaType.nullable(), row.decimal52), Fragment.lit(",\n`decimal10_2` = "), Fragment.encode(Decimal10_2.mariaType.nullable(), row.decimal102), Fragment.lit(",\n`decimal18_4` = "), Fragment.encode(Decimal18_4.mariaType.nullable(), row.decimal184), Fragment.lit(",\n`numeric8_2` = "), Fragment.encode(Decimal8_2.mariaType.nullable(), row.numeric82), Fragment.lit(",\n`numeric12_4` = "), Fragment.encode(Decimal12_4.mariaType.nullable(), row.numeric124), Fragment.lit(",\n`binary16` = "), Fragment.encode(Binary16.mariaType.nullable(), row.binary16), Fragment.lit(",\n`binary32` = "), Fragment.encode(Binary32.mariaType.nullable(), row.binary32), Fragment.lit(",\n`binary64` = "), Fragment.encode(Binary64.mariaType.nullable(), row.binary64), Fragment.lit(",\n`time0` = "), Fragment.encode(MariaTypes.time.nullable(), row.time0), Fragment.lit(",\n`time3` = "), Fragment.encode(LocalTime3.mariaType.nullable(), row.time3), Fragment.lit(",\n`time6` = "), Fragment.encode(LocalTime6.mariaType.nullable(), row.time6), Fragment.lit(",\n`datetime0` = "), Fragment.encode(MariaTypes.datetime.nullable(), row.datetime0), Fragment.lit(",\n`datetime3` = "), Fragment.encode(LocalDateTime3.mariaType.nullable(), row.datetime3), Fragment.lit(",\n`datetime6` = "), Fragment.encode(LocalDateTime6.mariaType.nullable(), row.datetime6), Fragment.lit(",\n`ts0` = "), Fragment.encode(MariaTypes.timestamp.nullable(), row.ts0), Fragment.lit(",\n`ts3` = "), Fragment.encode(LocalDateTime3.mariaType.nullable(), row.ts3), Fragment.lit(",\n`ts6` = "), Fragment.encode(LocalDateTime6.mariaType.nullable(), row.ts6), Fragment.lit("\nwhere `id` = "), Fragment.encode(PrecisionTypesNullId.mariaType, id), Fragment.lit("")).update().runUnchecked(c) > 0 } override fun upsert( unsaved: PrecisionTypesNullRow, c: Connection - ): PrecisionTypesNullRow = Fragment.interpolate(Fragment.lit("INSERT INTO `precision_types_null`(`id`, `string10`, `string20`, `string50`, `string100`, `string255`, `char10`, `decimal5_2`, `decimal10_2`, `decimal18_4`, `numeric8_2`, `numeric12_4`, `binary16`, `binary32`, `binary64`, `time0`, `time3`, `time6`, `datetime0`, `datetime3`, `datetime6`, `ts0`, `ts3`, `ts6`)\nVALUES ("), Fragment.encode(PrecisionTypesNullId.dbType, unsaved.id), Fragment.lit(", "), Fragment.encode(String10.dbType.nullable(), unsaved.string10), Fragment.lit(", "), Fragment.encode(String20.dbType.nullable(), unsaved.string20), Fragment.lit(", "), Fragment.encode(String50.dbType.nullable(), unsaved.string50), Fragment.lit(", "), Fragment.encode(String100.dbType.nullable(), unsaved.string100), Fragment.lit(", "), Fragment.encode(String255.dbType.nullable(), unsaved.string255), Fragment.lit(", "), Fragment.encode(PaddedString10.dbType.nullable(), unsaved.char10), Fragment.lit(", "), Fragment.encode(Decimal5_2.dbType.nullable(), unsaved.decimal52), Fragment.lit(", "), Fragment.encode(Decimal10_2.dbType.nullable(), unsaved.decimal102), Fragment.lit(", "), Fragment.encode(Decimal18_4.dbType.nullable(), unsaved.decimal184), Fragment.lit(", "), Fragment.encode(Decimal8_2.dbType.nullable(), unsaved.numeric82), Fragment.lit(", "), Fragment.encode(Decimal12_4.dbType.nullable(), unsaved.numeric124), Fragment.lit(", "), Fragment.encode(Binary16.dbType.nullable(), unsaved.binary16), Fragment.lit(", "), Fragment.encode(Binary32.dbType.nullable(), unsaved.binary32), Fragment.lit(", "), Fragment.encode(Binary64.dbType.nullable(), unsaved.binary64), Fragment.lit(", "), Fragment.encode(MariaTypes.time.nullable(), unsaved.time0), Fragment.lit(", "), Fragment.encode(LocalTime3.dbType.nullable(), unsaved.time3), Fragment.lit(", "), Fragment.encode(LocalTime6.dbType.nullable(), unsaved.time6), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime.nullable(), unsaved.datetime0), Fragment.lit(", "), Fragment.encode(LocalDateTime3.dbType.nullable(), unsaved.datetime3), Fragment.lit(", "), Fragment.encode(LocalDateTime6.dbType.nullable(), unsaved.datetime6), Fragment.lit(", "), Fragment.encode(MariaTypes.timestamp.nullable(), unsaved.ts0), Fragment.lit(", "), Fragment.encode(LocalDateTime3.dbType.nullable(), unsaved.ts3), Fragment.lit(", "), Fragment.encode(LocalDateTime6.dbType.nullable(), unsaved.ts6), Fragment.lit(")\nON DUPLICATE KEY UPDATE `string10` = VALUES(`string10`),\n`string20` = VALUES(`string20`),\n`string50` = VALUES(`string50`),\n`string100` = VALUES(`string100`),\n`string255` = VALUES(`string255`),\n`char10` = VALUES(`char10`),\n`decimal5_2` = VALUES(`decimal5_2`),\n`decimal10_2` = VALUES(`decimal10_2`),\n`decimal18_4` = VALUES(`decimal18_4`),\n`numeric8_2` = VALUES(`numeric8_2`),\n`numeric12_4` = VALUES(`numeric12_4`),\n`binary16` = VALUES(`binary16`),\n`binary32` = VALUES(`binary32`),\n`binary64` = VALUES(`binary64`),\n`time0` = VALUES(`time0`),\n`time3` = VALUES(`time3`),\n`time6` = VALUES(`time6`),\n`datetime0` = VALUES(`datetime0`),\n`datetime3` = VALUES(`datetime3`),\n`datetime6` = VALUES(`datetime6`),\n`ts0` = VALUES(`ts0`),\n`ts3` = VALUES(`ts3`),\n`ts6` = VALUES(`ts6`)\nRETURNING `id`, `string10`, `string20`, `string50`, `string100`, `string255`, `char10`, `decimal5_2`, `decimal10_2`, `decimal18_4`, `numeric8_2`, `numeric12_4`, `binary16`, `binary32`, `binary64`, `time0`, `time3`, `time6`, `datetime0`, `datetime3`, `datetime6`, `ts0`, `ts3`, `ts6`")) + ): PrecisionTypesNullRow = Fragment.interpolate(Fragment.lit("INSERT INTO `precision_types_null`(`id`, `string10`, `string20`, `string50`, `string100`, `string255`, `char10`, `decimal5_2`, `decimal10_2`, `decimal18_4`, `numeric8_2`, `numeric12_4`, `binary16`, `binary32`, `binary64`, `time0`, `time3`, `time6`, `datetime0`, `datetime3`, `datetime6`, `ts0`, `ts3`, `ts6`)\nVALUES ("), Fragment.encode(PrecisionTypesNullId.mariaType, unsaved.id), Fragment.lit(", "), Fragment.encode(String10.mariaType.nullable(), unsaved.string10), Fragment.lit(", "), Fragment.encode(String20.mariaType.nullable(), unsaved.string20), Fragment.lit(", "), Fragment.encode(String50.mariaType.nullable(), unsaved.string50), Fragment.lit(", "), Fragment.encode(String100.mariaType.nullable(), unsaved.string100), Fragment.lit(", "), Fragment.encode(String255.mariaType.nullable(), unsaved.string255), Fragment.lit(", "), Fragment.encode(PaddedString10.mariaType.nullable(), unsaved.char10), Fragment.lit(", "), Fragment.encode(Decimal5_2.mariaType.nullable(), unsaved.decimal52), Fragment.lit(", "), Fragment.encode(Decimal10_2.mariaType.nullable(), unsaved.decimal102), Fragment.lit(", "), Fragment.encode(Decimal18_4.mariaType.nullable(), unsaved.decimal184), Fragment.lit(", "), Fragment.encode(Decimal8_2.mariaType.nullable(), unsaved.numeric82), Fragment.lit(", "), Fragment.encode(Decimal12_4.mariaType.nullable(), unsaved.numeric124), Fragment.lit(", "), Fragment.encode(Binary16.mariaType.nullable(), unsaved.binary16), Fragment.lit(", "), Fragment.encode(Binary32.mariaType.nullable(), unsaved.binary32), Fragment.lit(", "), Fragment.encode(Binary64.mariaType.nullable(), unsaved.binary64), Fragment.lit(", "), Fragment.encode(MariaTypes.time.nullable(), unsaved.time0), Fragment.lit(", "), Fragment.encode(LocalTime3.mariaType.nullable(), unsaved.time3), Fragment.lit(", "), Fragment.encode(LocalTime6.mariaType.nullable(), unsaved.time6), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime.nullable(), unsaved.datetime0), Fragment.lit(", "), Fragment.encode(LocalDateTime3.mariaType.nullable(), unsaved.datetime3), Fragment.lit(", "), Fragment.encode(LocalDateTime6.mariaType.nullable(), unsaved.datetime6), Fragment.lit(", "), Fragment.encode(MariaTypes.timestamp.nullable(), unsaved.ts0), Fragment.lit(", "), Fragment.encode(LocalDateTime3.mariaType.nullable(), unsaved.ts3), Fragment.lit(", "), Fragment.encode(LocalDateTime6.mariaType.nullable(), unsaved.ts6), Fragment.lit(")\nON DUPLICATE KEY UPDATE `string10` = VALUES(`string10`),\n`string20` = VALUES(`string20`),\n`string50` = VALUES(`string50`),\n`string100` = VALUES(`string100`),\n`string255` = VALUES(`string255`),\n`char10` = VALUES(`char10`),\n`decimal5_2` = VALUES(`decimal5_2`),\n`decimal10_2` = VALUES(`decimal10_2`),\n`decimal18_4` = VALUES(`decimal18_4`),\n`numeric8_2` = VALUES(`numeric8_2`),\n`numeric12_4` = VALUES(`numeric12_4`),\n`binary16` = VALUES(`binary16`),\n`binary32` = VALUES(`binary32`),\n`binary64` = VALUES(`binary64`),\n`time0` = VALUES(`time0`),\n`time3` = VALUES(`time3`),\n`time6` = VALUES(`time6`),\n`datetime0` = VALUES(`datetime0`),\n`datetime3` = VALUES(`datetime3`),\n`datetime6` = VALUES(`datetime6`),\n`ts0` = VALUES(`ts0`),\n`ts3` = VALUES(`ts3`),\n`ts6` = VALUES(`ts6`)\nRETURNING `id`, `string10`, `string20`, `string50`, `string100`, `string255`, `char10`, `decimal5_2`, `decimal10_2`, `decimal18_4`, `numeric8_2`, `numeric12_4`, `binary16`, `binary32`, `binary64`, `time0`, `time3`, `time6`, `datetime0`, `datetime3`, `datetime6`, `ts0`, `ts3`, `ts6`")) .updateReturning(PrecisionTypesNullRow._rowParser.exactlyOne()) .runUnchecked(c) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullRow.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullRow.kt index a8eb5b52ac..e996ac2318 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullRow.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullRow.kt @@ -209,6 +209,6 @@ data class PrecisionTypesNullRow( ): PrecisionTypesNullRowUnsaved = PrecisionTypesNullRowUnsaved(string10, string20, string50, string100, string255, char10, decimal52, decimal102, decimal184, numeric82, numeric124, binary16, binary32, binary64, time0, time3, time6, datetime0, datetime3, datetime6, ts0, ts3, ts6) companion object { - val _rowParser: RowParser = RowParsers.of(PrecisionTypesNullId.dbType, String10.dbType.nullable(), String20.dbType.nullable(), String50.dbType.nullable(), String100.dbType.nullable(), String255.dbType.nullable(), PaddedString10.dbType.nullable(), Decimal5_2.dbType.nullable(), Decimal10_2.dbType.nullable(), Decimal18_4.dbType.nullable(), Decimal8_2.dbType.nullable(), Decimal12_4.dbType.nullable(), Binary16.dbType.nullable(), Binary32.dbType.nullable(), Binary64.dbType.nullable(), MariaTypes.time.nullable(), LocalTime3.dbType.nullable(), LocalTime6.dbType.nullable(), MariaTypes.datetime.nullable(), LocalDateTime3.dbType.nullable(), LocalDateTime6.dbType.nullable(), MariaTypes.timestamp.nullable(), LocalDateTime3.dbType.nullable(), LocalDateTime6.dbType.nullable(), { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23 -> PrecisionTypesNullRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23) }, { row -> arrayOf(row.id, row.string10, row.string20, row.string50, row.string100, row.string255, row.char10, row.decimal52, row.decimal102, row.decimal184, row.numeric82, row.numeric124, row.binary16, row.binary32, row.binary64, row.time0, row.time3, row.time6, row.datetime0, row.datetime3, row.datetime6, row.ts0, row.ts3, row.ts6) }) + val _rowParser: RowParser = RowParsers.of(PrecisionTypesNullId.mariaType, String10.mariaType.nullable(), String20.mariaType.nullable(), String50.mariaType.nullable(), String100.mariaType.nullable(), String255.mariaType.nullable(), PaddedString10.mariaType.nullable(), Decimal5_2.mariaType.nullable(), Decimal10_2.mariaType.nullable(), Decimal18_4.mariaType.nullable(), Decimal8_2.mariaType.nullable(), Decimal12_4.mariaType.nullable(), Binary16.mariaType.nullable(), Binary32.mariaType.nullable(), Binary64.mariaType.nullable(), MariaTypes.time.nullable(), LocalTime3.mariaType.nullable(), LocalTime6.mariaType.nullable(), MariaTypes.datetime.nullable(), LocalDateTime3.mariaType.nullable(), LocalDateTime6.mariaType.nullable(), MariaTypes.timestamp.nullable(), LocalDateTime3.mariaType.nullable(), LocalDateTime6.mariaType.nullable(), { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23 -> PrecisionTypesNullRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23) }, { row -> arrayOf(row.id, row.string10, row.string20, row.string50, row.string100, row.string255, row.char10, row.decimal52, row.decimal102, row.decimal184, row.numeric82, row.numeric124, row.binary16, row.binary32, row.binary64, row.time0, row.time3, row.time6, row.datetime0, row.datetime3, row.datetime6, row.ts0, row.ts3, row.ts6) }) } } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/price_tiers/PriceTiersFields.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/price_tiers/PriceTiersFields.kt index 3766d21a6d..c8b3cf0b57 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/price_tiers/PriceTiersFields.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/price_tiers/PriceTiersFields.kt @@ -45,7 +45,7 @@ data class PriceTiersFields(val _path: List) : TupleExpr5 = PriceTiersRow._rowParser.underlying - fun tierId(): IdField = IdField(_path, "tier_id", PriceTiersRow::tierId, null, null, { row, value -> row.copy(tierId = value) }, PriceTiersId.dbType) + fun tierId(): IdField = IdField(_path, "tier_id", PriceTiersRow::tierId, null, null, { row, value -> row.copy(tierId = value) }, PriceTiersId.mariaType) override fun withPaths(_path: List): RelationStructure = PriceTiersFields(_path) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/price_tiers/PriceTiersId.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/price_tiers/PriceTiersId.kt index c0e2aa6727..d5828f78e0 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/price_tiers/PriceTiersId.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/price_tiers/PriceTiersId.kt @@ -21,7 +21,7 @@ data class PriceTiersId(@field:JsonValue val value: Uint1) { val bijection: Bijection = Bijection.of(PriceTiersId::value, ::PriceTiersId) - val dbType: MariaType = + val mariaType: MariaType = MariaTypes.tinyintUnsigned.bimap(::PriceTiersId, PriceTiersId::value) } } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/price_tiers/PriceTiersRepoImpl.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/price_tiers/PriceTiersRepoImpl.kt index 7b6f200fca..2d8e5303ea 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/price_tiers/PriceTiersRepoImpl.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/price_tiers/PriceTiersRepoImpl.kt @@ -25,14 +25,14 @@ class PriceTiersRepoImpl() : PriceTiersRepo { override fun deleteById( tierId: PriceTiersId, c: Connection - ): Boolean = Fragment.interpolate(Fragment.lit("delete from `price_tiers` where `tier_id` = "), Fragment.encode(PriceTiersId.dbType, tierId), Fragment.lit("")).update().runUnchecked(c) > 0 + ): Boolean = Fragment.interpolate(Fragment.lit("delete from `price_tiers` where `tier_id` = "), Fragment.encode(PriceTiersId.mariaType, tierId), Fragment.lit("")).update().runUnchecked(c) > 0 override fun deleteByIds( tierIds: Array, c: Connection ): Int { val fragments: ArrayList = ArrayList() - for (id in tierIds) { fragments.add(Fragment.encode(PriceTiersId.dbType, id)) } + for (id in tierIds) { fragments.add(Fragment.encode(PriceTiersId.mariaType, id)) } return Fragment.interpolate(Fragment.lit("delete from `price_tiers` where `tier_id` in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).update().runUnchecked(c) } @@ -70,14 +70,14 @@ class PriceTiersRepoImpl() : PriceTiersRepo { override fun selectById( tierId: PriceTiersId, c: Connection - ): PriceTiersRow? = Fragment.interpolate(Fragment.lit("select `tier_id`, `name`, `min_quantity`, `discount_type`, `discount_value`\nfrom `price_tiers`\nwhere `tier_id` = "), Fragment.encode(PriceTiersId.dbType, tierId), Fragment.lit("")).query(PriceTiersRow._rowParser.first()).runUnchecked(c) + ): PriceTiersRow? = Fragment.interpolate(Fragment.lit("select `tier_id`, `name`, `min_quantity`, `discount_type`, `discount_value`\nfrom `price_tiers`\nwhere `tier_id` = "), Fragment.encode(PriceTiersId.mariaType, tierId), Fragment.lit("")).query(PriceTiersRow._rowParser.first()).runUnchecked(c) override fun selectByIds( tierIds: Array, c: Connection ): List { val fragments: ArrayList = ArrayList() - for (id in tierIds) { fragments.add(Fragment.encode(PriceTiersId.dbType, id)) } + for (id in tierIds) { fragments.add(Fragment.encode(PriceTiersId.mariaType, id)) } return Fragment.interpolate(Fragment.lit("select `tier_id`, `name`, `min_quantity`, `discount_type`, `discount_value` from `price_tiers` where `tier_id` in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).query(PriceTiersRow._rowParser.all()).runUnchecked(c) } @@ -97,13 +97,13 @@ class PriceTiersRepoImpl() : PriceTiersRepo { c: Connection ): Boolean { val tierId: PriceTiersId = row.tierId - return Fragment.interpolate(Fragment.lit("update `price_tiers`\nset `name` = "), Fragment.encode(MariaTypes.varchar, row.name), Fragment.lit(",\n`min_quantity` = "), Fragment.encode(MariaTypes.intUnsigned, row.minQuantity), Fragment.lit(",\n`discount_type` = "), Fragment.encode(MariaTypes.text, row.discountType), Fragment.lit(",\n`discount_value` = "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, row.discountValue), Fragment.lit("\nwhere `tier_id` = "), Fragment.encode(PriceTiersId.dbType, tierId), Fragment.lit("")).update().runUnchecked(c) > 0 + return Fragment.interpolate(Fragment.lit("update `price_tiers`\nset `name` = "), Fragment.encode(MariaTypes.varchar, row.name), Fragment.lit(",\n`min_quantity` = "), Fragment.encode(MariaTypes.intUnsigned, row.minQuantity), Fragment.lit(",\n`discount_type` = "), Fragment.encode(MariaTypes.text, row.discountType), Fragment.lit(",\n`discount_value` = "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, row.discountValue), Fragment.lit("\nwhere `tier_id` = "), Fragment.encode(PriceTiersId.mariaType, tierId), Fragment.lit("")).update().runUnchecked(c) > 0 } override fun upsert( unsaved: PriceTiersRow, c: Connection - ): PriceTiersRow = Fragment.interpolate(Fragment.lit("INSERT INTO `price_tiers`(`tier_id`, `name`, `min_quantity`, `discount_type`, `discount_value`)\nVALUES ("), Fragment.encode(PriceTiersId.dbType, unsaved.tierId), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.name), Fragment.lit(", "), Fragment.encode(MariaTypes.intUnsigned, unsaved.minQuantity), Fragment.lit(", "), Fragment.encode(MariaTypes.text, unsaved.discountType), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, unsaved.discountValue), Fragment.lit(")\nON DUPLICATE KEY UPDATE `name` = VALUES(`name`),\n`min_quantity` = VALUES(`min_quantity`),\n`discount_type` = VALUES(`discount_type`),\n`discount_value` = VALUES(`discount_value`)\nRETURNING `tier_id`, `name`, `min_quantity`, `discount_type`, `discount_value`")) + ): PriceTiersRow = Fragment.interpolate(Fragment.lit("INSERT INTO `price_tiers`(`tier_id`, `name`, `min_quantity`, `discount_type`, `discount_value`)\nVALUES ("), Fragment.encode(PriceTiersId.mariaType, unsaved.tierId), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.name), Fragment.lit(", "), Fragment.encode(MariaTypes.intUnsigned, unsaved.minQuantity), Fragment.lit(", "), Fragment.encode(MariaTypes.text, unsaved.discountType), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, unsaved.discountValue), Fragment.lit(")\nON DUPLICATE KEY UPDATE `name` = VALUES(`name`),\n`min_quantity` = VALUES(`min_quantity`),\n`discount_type` = VALUES(`discount_type`),\n`discount_value` = VALUES(`discount_value`)\nRETURNING `tier_id`, `name`, `min_quantity`, `discount_type`, `discount_value`")) .updateReturning(PriceTiersRow._rowParser.exactlyOne()) .runUnchecked(c) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/price_tiers/PriceTiersRow.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/price_tiers/PriceTiersRow.kt index 1deef0f6f8..ae29bc5f22 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/price_tiers/PriceTiersRow.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/price_tiers/PriceTiersRow.kt @@ -49,6 +49,6 @@ data class PriceTiersRow( fun toUnsavedRow(minQuantity: Defaulted = Defaulted.Provided(this.minQuantity)): PriceTiersRowUnsaved = PriceTiersRowUnsaved(name, discountType, discountValue, minQuantity) companion object { - val _rowParser: RowParser = RowParsers.of(PriceTiersId.dbType, MariaTypes.varchar, MariaTypes.intUnsigned, MariaTypes.text, KotlinDbTypes.MariaTypes.numeric, { t0, t1, t2, t3, t4 -> PriceTiersRow(t0, t1, t2, t3, t4) }, { row -> arrayOf(row.tierId, row.name, row.minQuantity, row.discountType, row.discountValue) }) + val _rowParser: RowParser = RowParsers.of(PriceTiersId.mariaType, MariaTypes.varchar, MariaTypes.intUnsigned, MariaTypes.text, KotlinDbTypes.MariaTypes.numeric, { t0, t1, t2, t3, t4 -> PriceTiersRow(t0, t1, t2, t3, t4) }, { row -> arrayOf(row.tierId, row.name, row.minQuantity, row.discountType, row.discountValue) }) } } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/product_categories/ProductCategoriesFields.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/product_categories/ProductCategoriesFields.kt index 1437dc8cf2..136c5c671b 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/product_categories/ProductCategoriesFields.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/product_categories/ProductCategoriesFields.kt @@ -24,19 +24,20 @@ import testdb.categories.CategoriesRow import testdb.products.ProductsFields import testdb.products.ProductsId import testdb.products.ProductsRow +import testdb.userdefined.IsPrimary -data class ProductCategoriesFields(val _path: List) : TupleExpr4, RelationStructure, FieldsBase { +data class ProductCategoriesFields(val _path: List) : TupleExpr4, RelationStructure, FieldsBase { override fun _1(): SqlExpr = productId() override fun _2(): SqlExpr = categoryId() - override fun _3(): SqlExpr = isPrimary() + override fun _3(): SqlExpr = isPrimary() override fun _4(): SqlExpr = sortOrder() override fun _path(): List = _path - fun categoryId(): IdField = IdField(_path, "category_id", ProductCategoriesRow::categoryId, null, null, { row, value -> row.copy(categoryId = value) }, CategoriesId.dbType) + fun categoryId(): IdField = IdField(_path, "category_id", ProductCategoriesRow::categoryId, null, null, { row, value -> row.copy(categoryId = value) }, CategoriesId.mariaType) override fun columns(): List> = listOf(this.productId().underlying, this.categoryId().underlying, this.isPrimary().underlying, this.sortOrder().underlying) @@ -48,9 +49,9 @@ data class ProductCategoriesFields(val _path: List) : TupleExpr4 = ForeignKey.of("fk_pc_product").withColumnPair(productId(), ProductsFields::productId) - fun isPrimary(): Field = Field(_path, "is_primary", ProductCategoriesRow::isPrimary, null, null, { row, value -> row.copy(isPrimary = value) }, KotlinDbTypes.MariaTypes.bool) + fun isPrimary(): Field = Field(_path, "is_primary", ProductCategoriesRow::isPrimary, null, null, { row, value -> row.copy(isPrimary = value) }, IsPrimary.mariaType) - fun productId(): IdField = IdField(_path, "product_id", ProductCategoriesRow::productId, null, null, { row, value -> row.copy(productId = value) }, ProductsId.dbType) + fun productId(): IdField = IdField(_path, "product_id", ProductCategoriesRow::productId, null, null, { row, value -> row.copy(productId = value) }, ProductsId.mariaType) override fun rowParser(): RowParser = ProductCategoriesRow._rowParser.underlying diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/product_categories/ProductCategoriesId.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/product_categories/ProductCategoriesId.kt index c0a0506180..8bee368bd2 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/product_categories/ProductCategoriesId.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/product_categories/ProductCategoriesId.kt @@ -22,6 +22,6 @@ data class ProductCategoriesId( override fun _2(): CategoriesId = categoryId companion object { - val _rowParser: RowParser = RowParsers.of(ProductsId.dbType, CategoriesId.dbType, { t0, t1 -> ProductCategoriesId(t0, t1) }, { row -> arrayOf(row.productId, row.categoryId) }) + val _rowParser: RowParser = RowParsers.of(ProductsId.mariaType, CategoriesId.mariaType, { t0, t1 -> ProductCategoriesId(t0, t1) }, { row -> arrayOf(row.productId, row.categoryId) }) } } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/product_categories/ProductCategoriesRepoImpl.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/product_categories/ProductCategoriesRepoImpl.kt index 5a28c96b5f..e9f06c614a 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/product_categories/ProductCategoriesRepoImpl.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/product_categories/ProductCategoriesRepoImpl.kt @@ -19,6 +19,7 @@ import kotlin.collections.Map import kotlin.collections.MutableMap import testdb.categories.CategoriesId import testdb.products.ProductsId +import testdb.userdefined.IsPrimary class ProductCategoriesRepoImpl() : ProductCategoriesRepo { override fun delete(): DeleteBuilder = DeleteBuilder.of("`product_categories`", ProductCategoriesFields.structure, Dialect.MARIADB) @@ -26,21 +27,21 @@ class ProductCategoriesRepoImpl() : ProductCategoriesRepo { override fun deleteById( compositeId: ProductCategoriesId, c: Connection - ): Boolean = Fragment.interpolate(Fragment.lit("delete from `product_categories` where `product_id` = "), Fragment.encode(ProductsId.dbType, compositeId.productId), Fragment.lit(" AND `category_id` = "), Fragment.encode(CategoriesId.dbType, compositeId.categoryId), Fragment.lit("")).update().runUnchecked(c) > 0 + ): Boolean = Fragment.interpolate(Fragment.lit("delete from `product_categories` where `product_id` = "), Fragment.encode(ProductsId.mariaType, compositeId.productId), Fragment.lit(" AND `category_id` = "), Fragment.encode(CategoriesId.mariaType, compositeId.categoryId), Fragment.lit("")).update().runUnchecked(c) > 0 override fun deleteByIds( compositeIds: Array, c: Connection ): Int { val fragments: ArrayList = ArrayList() - for (id in compositeIds) { fragments.add(Fragment.interpolate(Fragment.lit("("), Fragment.encode(ProductsId.dbType, id.productId), Fragment.lit(", "), Fragment.encode(CategoriesId.dbType, id.categoryId), Fragment.lit(")"))) } + for (id in compositeIds) { fragments.add(Fragment.interpolate(Fragment.lit("("), Fragment.encode(ProductsId.mariaType, id.productId), Fragment.lit(", "), Fragment.encode(CategoriesId.mariaType, id.categoryId), Fragment.lit(")"))) } return Fragment.interpolate(Fragment.lit("delete from `product_categories` where (`product_id`, `category_id`) in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).update().runUnchecked(c) } override fun insert( unsaved: ProductCategoriesRow, c: Connection - ): ProductCategoriesRow = Fragment.interpolate(Fragment.lit("insert into `product_categories`(`product_id`, `category_id`, `is_primary`, `sort_order`)\nvalues ("), Fragment.encode(ProductsId.dbType, unsaved.productId), Fragment.lit(", "), Fragment.encode(CategoriesId.dbType, unsaved.categoryId), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.bool, unsaved.isPrimary), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.smallint, unsaved.sortOrder), Fragment.lit(")\nRETURNING `product_id`, `category_id`, `is_primary`, `sort_order`\n")) + ): ProductCategoriesRow = Fragment.interpolate(Fragment.lit("insert into `product_categories`(`product_id`, `category_id`, `is_primary`, `sort_order`)\nvalues ("), Fragment.encode(ProductsId.mariaType, unsaved.productId), Fragment.lit(", "), Fragment.encode(CategoriesId.mariaType, unsaved.categoryId), Fragment.lit(", "), Fragment.encode(IsPrimary.mariaType, unsaved.isPrimary), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.smallint, unsaved.sortOrder), Fragment.lit(")\nRETURNING `product_id`, `category_id`, `is_primary`, `sort_order`\n")) .updateReturning(ProductCategoriesRow._rowParser.exactlyOne()).runUnchecked(c) override fun insert( @@ -50,13 +51,13 @@ class ProductCategoriesRepoImpl() : ProductCategoriesRepo { val columns: ArrayList = ArrayList() val values: ArrayList = ArrayList() columns.add(Fragment.lit("`product_id`")) - values.add(Fragment.interpolate(Fragment.encode(ProductsId.dbType, unsaved.productId), Fragment.lit(""))) + values.add(Fragment.interpolate(Fragment.encode(ProductsId.mariaType, unsaved.productId), Fragment.lit(""))) columns.add(Fragment.lit("`category_id`")) - values.add(Fragment.interpolate(Fragment.encode(CategoriesId.dbType, unsaved.categoryId), Fragment.lit(""))) + values.add(Fragment.interpolate(Fragment.encode(CategoriesId.mariaType, unsaved.categoryId), Fragment.lit(""))) unsaved.isPrimary.visit( { }, { value -> columns.add(Fragment.lit("`is_primary`")) - values.add(Fragment.interpolate(Fragment.encode(KotlinDbTypes.MariaTypes.bool, value), Fragment.lit(""))) } + values.add(Fragment.interpolate(Fragment.encode(IsPrimary.mariaType, value), Fragment.lit(""))) } ); unsaved.sortOrder.visit( { }, @@ -74,14 +75,14 @@ class ProductCategoriesRepoImpl() : ProductCategoriesRepo { override fun selectById( compositeId: ProductCategoriesId, c: Connection - ): ProductCategoriesRow? = Fragment.interpolate(Fragment.lit("select `product_id`, `category_id`, `is_primary`, `sort_order`\nfrom `product_categories`\nwhere `product_id` = "), Fragment.encode(ProductsId.dbType, compositeId.productId), Fragment.lit(" AND `category_id` = "), Fragment.encode(CategoriesId.dbType, compositeId.categoryId), Fragment.lit("")).query(ProductCategoriesRow._rowParser.first()).runUnchecked(c) + ): ProductCategoriesRow? = Fragment.interpolate(Fragment.lit("select `product_id`, `category_id`, `is_primary`, `sort_order`\nfrom `product_categories`\nwhere `product_id` = "), Fragment.encode(ProductsId.mariaType, compositeId.productId), Fragment.lit(" AND `category_id` = "), Fragment.encode(CategoriesId.mariaType, compositeId.categoryId), Fragment.lit("")).query(ProductCategoriesRow._rowParser.first()).runUnchecked(c) override fun selectByIds( compositeIds: Array, c: Connection ): List { val fragments: ArrayList = ArrayList() - for (id in compositeIds) { fragments.add(Fragment.interpolate(Fragment.lit("("), Fragment.encode(ProductsId.dbType, id.productId), Fragment.lit(", "), Fragment.encode(CategoriesId.dbType, id.categoryId), Fragment.lit(")"))) } + for (id in compositeIds) { fragments.add(Fragment.interpolate(Fragment.lit("("), Fragment.encode(ProductsId.mariaType, id.productId), Fragment.lit(", "), Fragment.encode(CategoriesId.mariaType, id.categoryId), Fragment.lit(")"))) } return Fragment.interpolate(Fragment.lit("select `product_id`, `category_id`, `is_primary`, `sort_order` from `product_categories` where (`product_id`, `category_id`) in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).query(ProductCategoriesRow._rowParser.all()).runUnchecked(c) } @@ -101,13 +102,13 @@ class ProductCategoriesRepoImpl() : ProductCategoriesRepo { c: Connection ): Boolean { val compositeId: ProductCategoriesId = row.compositeId() - return Fragment.interpolate(Fragment.lit("update `product_categories`\nset `is_primary` = "), Fragment.encode(KotlinDbTypes.MariaTypes.bool, row.isPrimary), Fragment.lit(",\n`sort_order` = "), Fragment.encode(KotlinDbTypes.MariaTypes.smallint, row.sortOrder), Fragment.lit("\nwhere `product_id` = "), Fragment.encode(ProductsId.dbType, compositeId.productId), Fragment.lit(" AND `category_id` = "), Fragment.encode(CategoriesId.dbType, compositeId.categoryId), Fragment.lit("")).update().runUnchecked(c) > 0 + return Fragment.interpolate(Fragment.lit("update `product_categories`\nset `is_primary` = "), Fragment.encode(IsPrimary.mariaType, row.isPrimary), Fragment.lit(",\n`sort_order` = "), Fragment.encode(KotlinDbTypes.MariaTypes.smallint, row.sortOrder), Fragment.lit("\nwhere `product_id` = "), Fragment.encode(ProductsId.mariaType, compositeId.productId), Fragment.lit(" AND `category_id` = "), Fragment.encode(CategoriesId.mariaType, compositeId.categoryId), Fragment.lit("")).update().runUnchecked(c) > 0 } override fun upsert( unsaved: ProductCategoriesRow, c: Connection - ): ProductCategoriesRow = Fragment.interpolate(Fragment.lit("INSERT INTO `product_categories`(`product_id`, `category_id`, `is_primary`, `sort_order`)\nVALUES ("), Fragment.encode(ProductsId.dbType, unsaved.productId), Fragment.lit(", "), Fragment.encode(CategoriesId.dbType, unsaved.categoryId), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.bool, unsaved.isPrimary), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.smallint, unsaved.sortOrder), Fragment.lit(")\nON DUPLICATE KEY UPDATE `is_primary` = VALUES(`is_primary`),\n`sort_order` = VALUES(`sort_order`)\nRETURNING `product_id`, `category_id`, `is_primary`, `sort_order`")) + ): ProductCategoriesRow = Fragment.interpolate(Fragment.lit("INSERT INTO `product_categories`(`product_id`, `category_id`, `is_primary`, `sort_order`)\nVALUES ("), Fragment.encode(ProductsId.mariaType, unsaved.productId), Fragment.lit(", "), Fragment.encode(CategoriesId.mariaType, unsaved.categoryId), Fragment.lit(", "), Fragment.encode(IsPrimary.mariaType, unsaved.isPrimary), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.smallint, unsaved.sortOrder), Fragment.lit(")\nON DUPLICATE KEY UPDATE `is_primary` = VALUES(`is_primary`),\n`sort_order` = VALUES(`sort_order`)\nRETURNING `product_id`, `category_id`, `is_primary`, `sort_order`")) .updateReturning(ProductCategoriesRow._rowParser.exactlyOne()) .runUnchecked(c) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/product_categories/ProductCategoriesRow.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/product_categories/ProductCategoriesRow.kt index af7c1198a4..01af80f2cd 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/product_categories/ProductCategoriesRow.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/product_categories/ProductCategoriesRow.kt @@ -13,6 +13,7 @@ import dev.typr.foundations.kotlin.RowParsers import testdb.categories.CategoriesId import testdb.customtypes.Defaulted import testdb.products.ProductsId +import testdb.userdefined.IsPrimary /** Table: product_categories * Composite primary key: product_id, category_id @@ -29,17 +30,17 @@ data class ProductCategoriesRow( /** * Default: 0 */ - @field:JsonProperty("is_primary") val isPrimary: Boolean, + @field:JsonProperty("is_primary") val isPrimary: /* user-picked */ IsPrimary, /** * Default: 0 */ @field:JsonProperty("sort_order") val sortOrder: Short -) : Tuple4 { +) : Tuple4 { override fun _1(): ProductsId = productId override fun _2(): CategoriesId = categoryId - override fun _3(): Boolean = isPrimary + override fun _3(): /* user-picked */ IsPrimary = isPrimary override fun _4(): Short = sortOrder @@ -48,16 +49,16 @@ data class ProductCategoriesRow( fun id(): ProductCategoriesId = this.compositeId() fun toUnsavedRow( - isPrimary: Defaulted = Defaulted.Provided(this.isPrimary), + isPrimary: Defaulted = Defaulted.Provided(this.isPrimary), sortOrder: Defaulted = Defaulted.Provided(this.sortOrder) ): ProductCategoriesRowUnsaved = ProductCategoriesRowUnsaved(productId, categoryId, isPrimary, sortOrder) companion object { - val _rowParser: RowParser = RowParsers.of(ProductsId.dbType, CategoriesId.dbType, KotlinDbTypes.MariaTypes.bool, KotlinDbTypes.MariaTypes.smallint, { t0, t1, t2, t3 -> ProductCategoriesRow(t0, t1, t2, t3) }, { row -> arrayOf(row.productId, row.categoryId, row.isPrimary, row.sortOrder) }) + val _rowParser: RowParser = RowParsers.of(ProductsId.mariaType, CategoriesId.mariaType, IsPrimary.mariaType, KotlinDbTypes.MariaTypes.smallint, { t0, t1, t2, t3 -> ProductCategoriesRow(t0, t1, t2, t3) }, { row -> arrayOf(row.productId, row.categoryId, row.isPrimary, row.sortOrder) }) fun apply( compositeId: ProductCategoriesId, - isPrimary: Boolean, + isPrimary: /* user-picked */ IsPrimary, sortOrder: Short ): ProductCategoriesRow = ProductCategoriesRow(compositeId.productId, compositeId.categoryId, isPrimary, sortOrder) } diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/product_categories/ProductCategoriesRowUnsaved.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/product_categories/ProductCategoriesRowUnsaved.kt index 73cd867687..901e65a63f 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/product_categories/ProductCategoriesRowUnsaved.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/product_categories/ProductCategoriesRowUnsaved.kt @@ -10,6 +10,7 @@ import testdb.categories.CategoriesId import testdb.customtypes.Defaulted import testdb.customtypes.Defaulted.UseDefault import testdb.products.ProductsId +import testdb.userdefined.IsPrimary /** This class corresponds to a row in table `product_categories` which has not been persisted yet */ data class ProductCategoriesRowUnsaved( @@ -24,14 +25,14 @@ data class ProductCategoriesRowUnsaved( /** Default: 0 */ - @field:JsonProperty("is_primary") val isPrimary: Defaulted = UseDefault(), + @field:JsonProperty("is_primary") val isPrimary: Defaulted = UseDefault(), /** Default: 0 */ @field:JsonProperty("sort_order") val sortOrder: Defaulted = UseDefault() ) { fun toRow( - isPrimaryDefault: () -> Boolean, + isPrimaryDefault: () -> /* user-picked */ IsPrimary, sortOrderDefault: () -> Short ): ProductCategoriesRow = ProductCategoriesRow(productId = productId, categoryId = categoryId, isPrimary = isPrimary.getOrElse(isPrimaryDefault), sortOrder = sortOrder.getOrElse(sortOrderDefault)) } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/product_images/ProductImagesFields.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/product_images/ProductImagesFields.kt index d5ee7680b2..093e333a3f 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/product_images/ProductImagesFields.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/product_images/ProductImagesFields.kt @@ -12,7 +12,6 @@ import dev.typr.foundations.dsl.FieldsBase import dev.typr.foundations.dsl.Path import dev.typr.foundations.dsl.SqlExpr.FieldLike import dev.typr.foundations.kotlin.ForeignKey -import dev.typr.foundations.kotlin.KotlinDbTypes import dev.typr.foundations.kotlin.RelationStructure import dev.typr.foundations.kotlin.SqlExpr import dev.typr.foundations.kotlin.SqlExpr.Field @@ -23,8 +22,9 @@ import kotlin.collections.List import testdb.products.ProductsFields import testdb.products.ProductsId import testdb.products.ProductsRow +import testdb.userdefined.IsPrimary -data class ProductImagesFields(val _path: List) : TupleExpr8, RelationStructure, FieldsBase { +data class ProductImagesFields(val _path: List) : TupleExpr8, RelationStructure, FieldsBase { override fun _1(): SqlExpr = imageId() override fun _2(): SqlExpr = productId() @@ -37,7 +37,7 @@ data class ProductImagesFields(val _path: List) : TupleExpr8 = sortOrder() - override fun _7(): SqlExpr = isPrimary() + override fun _7(): SqlExpr = isPrimary() override fun _8(): SqlExpr = imageData() @@ -51,13 +51,13 @@ data class ProductImagesFields(val _path: List) : TupleExpr8 = OptField(_path, "image_data", ProductImagesRow::imageData, null, null, { row, value -> row.copy(imageData = value) }, MariaTypes.longblob) - fun imageId(): IdField = IdField(_path, "image_id", ProductImagesRow::imageId, null, null, { row, value -> row.copy(imageId = value) }, ProductImagesId.dbType) + fun imageId(): IdField = IdField(_path, "image_id", ProductImagesRow::imageId, null, null, { row, value -> row.copy(imageId = value) }, ProductImagesId.mariaType) fun imageUrl(): Field = Field(_path, "image_url", ProductImagesRow::imageUrl, null, null, { row, value -> row.copy(imageUrl = value) }, MariaTypes.varchar) - fun isPrimary(): Field = Field(_path, "is_primary", ProductImagesRow::isPrimary, null, null, { row, value -> row.copy(isPrimary = value) }, KotlinDbTypes.MariaTypes.bool) + fun isPrimary(): Field = Field(_path, "is_primary", ProductImagesRow::isPrimary, null, null, { row, value -> row.copy(isPrimary = value) }, IsPrimary.mariaType) - fun productId(): Field = Field(_path, "product_id", ProductImagesRow::productId, null, null, { row, value -> row.copy(productId = value) }, ProductsId.dbType) + fun productId(): Field = Field(_path, "product_id", ProductImagesRow::productId, null, null, { row, value -> row.copy(productId = value) }, ProductsId.mariaType) override fun rowParser(): RowParser = ProductImagesRow._rowParser.underlying diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/product_images/ProductImagesId.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/product_images/ProductImagesId.kt index 1f79e01d57..1f7f8a9dda 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/product_images/ProductImagesId.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/product_images/ProductImagesId.kt @@ -21,7 +21,7 @@ data class ProductImagesId(@field:JsonValue val value: Uint4) { val bijection: Bijection = Bijection.of(ProductImagesId::value, ::ProductImagesId) - val dbType: MariaType = + val mariaType: MariaType = MariaTypes.intUnsigned.bimap(::ProductImagesId, ProductImagesId::value) } } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/product_images/ProductImagesRepoImpl.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/product_images/ProductImagesRepoImpl.kt index 41a2f58ac4..5ee4e32d8e 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/product_images/ProductImagesRepoImpl.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/product_images/ProductImagesRepoImpl.kt @@ -9,7 +9,6 @@ import dev.typr.foundations.MariaTypes import dev.typr.foundations.kotlin.DeleteBuilder import dev.typr.foundations.kotlin.Dialect import dev.typr.foundations.kotlin.Fragment -import dev.typr.foundations.kotlin.KotlinDbTypes import dev.typr.foundations.kotlin.SelectBuilder import dev.typr.foundations.kotlin.UpdateBuilder import dev.typr.foundations.kotlin.nullable @@ -20,6 +19,7 @@ import kotlin.collections.List import kotlin.collections.Map import kotlin.collections.MutableMap import testdb.products.ProductsId +import testdb.userdefined.IsPrimary class ProductImagesRepoImpl() : ProductImagesRepo { override fun delete(): DeleteBuilder = DeleteBuilder.of("`product_images`", ProductImagesFields.structure, Dialect.MARIADB) @@ -27,21 +27,21 @@ class ProductImagesRepoImpl() : ProductImagesRepo { override fun deleteById( imageId: ProductImagesId, c: Connection - ): Boolean = Fragment.interpolate(Fragment.lit("delete from `product_images` where `image_id` = "), Fragment.encode(ProductImagesId.dbType, imageId), Fragment.lit("")).update().runUnchecked(c) > 0 + ): Boolean = Fragment.interpolate(Fragment.lit("delete from `product_images` where `image_id` = "), Fragment.encode(ProductImagesId.mariaType, imageId), Fragment.lit("")).update().runUnchecked(c) > 0 override fun deleteByIds( imageIds: Array, c: Connection ): Int { val fragments: ArrayList = ArrayList() - for (id in imageIds) { fragments.add(Fragment.encode(ProductImagesId.dbType, id)) } + for (id in imageIds) { fragments.add(Fragment.encode(ProductImagesId.mariaType, id)) } return Fragment.interpolate(Fragment.lit("delete from `product_images` where `image_id` in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).update().runUnchecked(c) } override fun insert( unsaved: ProductImagesRow, c: Connection - ): ProductImagesRow = Fragment.interpolate(Fragment.lit("insert into `product_images`(`product_id`, `image_url`, `thumbnail_url`, `alt_text`, `sort_order`, `is_primary`, `image_data`)\nvalues ("), Fragment.encode(ProductsId.dbType, unsaved.productId), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.imageUrl), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.thumbnailUrl), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.altText), Fragment.lit(", "), Fragment.encode(MariaTypes.tinyintUnsigned, unsaved.sortOrder), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.bool, unsaved.isPrimary), Fragment.lit(", "), Fragment.encode(MariaTypes.longblob.nullable(), unsaved.imageData), Fragment.lit(")\nRETURNING `image_id`, `product_id`, `image_url`, `thumbnail_url`, `alt_text`, `sort_order`, `is_primary`, `image_data`\n")) + ): ProductImagesRow = Fragment.interpolate(Fragment.lit("insert into `product_images`(`product_id`, `image_url`, `thumbnail_url`, `alt_text`, `sort_order`, `is_primary`, `image_data`)\nvalues ("), Fragment.encode(ProductsId.mariaType, unsaved.productId), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.imageUrl), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.thumbnailUrl), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.altText), Fragment.lit(", "), Fragment.encode(MariaTypes.tinyintUnsigned, unsaved.sortOrder), Fragment.lit(", "), Fragment.encode(IsPrimary.mariaType, unsaved.isPrimary), Fragment.lit(", "), Fragment.encode(MariaTypes.longblob.nullable(), unsaved.imageData), Fragment.lit(")\nRETURNING `image_id`, `product_id`, `image_url`, `thumbnail_url`, `alt_text`, `sort_order`, `is_primary`, `image_data`\n")) .updateReturning(ProductImagesRow._rowParser.exactlyOne()).runUnchecked(c) override fun insert( @@ -51,7 +51,7 @@ class ProductImagesRepoImpl() : ProductImagesRepo { val columns: ArrayList = ArrayList() val values: ArrayList = ArrayList() columns.add(Fragment.lit("`product_id`")) - values.add(Fragment.interpolate(Fragment.encode(ProductsId.dbType, unsaved.productId), Fragment.lit(""))) + values.add(Fragment.interpolate(Fragment.encode(ProductsId.mariaType, unsaved.productId), Fragment.lit(""))) columns.add(Fragment.lit("`image_url`")) values.add(Fragment.interpolate(Fragment.encode(MariaTypes.varchar, unsaved.imageUrl), Fragment.lit(""))) unsaved.thumbnailUrl.visit( @@ -72,7 +72,7 @@ class ProductImagesRepoImpl() : ProductImagesRepo { unsaved.isPrimary.visit( { }, { value -> columns.add(Fragment.lit("`is_primary`")) - values.add(Fragment.interpolate(Fragment.encode(KotlinDbTypes.MariaTypes.bool, value), Fragment.lit(""))) } + values.add(Fragment.interpolate(Fragment.encode(IsPrimary.mariaType, value), Fragment.lit(""))) } ); unsaved.imageData.visit( { }, @@ -90,14 +90,14 @@ class ProductImagesRepoImpl() : ProductImagesRepo { override fun selectById( imageId: ProductImagesId, c: Connection - ): ProductImagesRow? = Fragment.interpolate(Fragment.lit("select `image_id`, `product_id`, `image_url`, `thumbnail_url`, `alt_text`, `sort_order`, `is_primary`, `image_data`\nfrom `product_images`\nwhere `image_id` = "), Fragment.encode(ProductImagesId.dbType, imageId), Fragment.lit("")).query(ProductImagesRow._rowParser.first()).runUnchecked(c) + ): ProductImagesRow? = Fragment.interpolate(Fragment.lit("select `image_id`, `product_id`, `image_url`, `thumbnail_url`, `alt_text`, `sort_order`, `is_primary`, `image_data`\nfrom `product_images`\nwhere `image_id` = "), Fragment.encode(ProductImagesId.mariaType, imageId), Fragment.lit("")).query(ProductImagesRow._rowParser.first()).runUnchecked(c) override fun selectByIds( imageIds: Array, c: Connection ): List { val fragments: ArrayList = ArrayList() - for (id in imageIds) { fragments.add(Fragment.encode(ProductImagesId.dbType, id)) } + for (id in imageIds) { fragments.add(Fragment.encode(ProductImagesId.mariaType, id)) } return Fragment.interpolate(Fragment.lit("select `image_id`, `product_id`, `image_url`, `thumbnail_url`, `alt_text`, `sort_order`, `is_primary`, `image_data` from `product_images` where `image_id` in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).query(ProductImagesRow._rowParser.all()).runUnchecked(c) } @@ -117,13 +117,13 @@ class ProductImagesRepoImpl() : ProductImagesRepo { c: Connection ): Boolean { val imageId: ProductImagesId = row.imageId - return Fragment.interpolate(Fragment.lit("update `product_images`\nset `product_id` = "), Fragment.encode(ProductsId.dbType, row.productId), Fragment.lit(",\n`image_url` = "), Fragment.encode(MariaTypes.varchar, row.imageUrl), Fragment.lit(",\n`thumbnail_url` = "), Fragment.encode(MariaTypes.varchar.nullable(), row.thumbnailUrl), Fragment.lit(",\n`alt_text` = "), Fragment.encode(MariaTypes.varchar.nullable(), row.altText), Fragment.lit(",\n`sort_order` = "), Fragment.encode(MariaTypes.tinyintUnsigned, row.sortOrder), Fragment.lit(",\n`is_primary` = "), Fragment.encode(KotlinDbTypes.MariaTypes.bool, row.isPrimary), Fragment.lit(",\n`image_data` = "), Fragment.encode(MariaTypes.longblob.nullable(), row.imageData), Fragment.lit("\nwhere `image_id` = "), Fragment.encode(ProductImagesId.dbType, imageId), Fragment.lit("")).update().runUnchecked(c) > 0 + return Fragment.interpolate(Fragment.lit("update `product_images`\nset `product_id` = "), Fragment.encode(ProductsId.mariaType, row.productId), Fragment.lit(",\n`image_url` = "), Fragment.encode(MariaTypes.varchar, row.imageUrl), Fragment.lit(",\n`thumbnail_url` = "), Fragment.encode(MariaTypes.varchar.nullable(), row.thumbnailUrl), Fragment.lit(",\n`alt_text` = "), Fragment.encode(MariaTypes.varchar.nullable(), row.altText), Fragment.lit(",\n`sort_order` = "), Fragment.encode(MariaTypes.tinyintUnsigned, row.sortOrder), Fragment.lit(",\n`is_primary` = "), Fragment.encode(IsPrimary.mariaType, row.isPrimary), Fragment.lit(",\n`image_data` = "), Fragment.encode(MariaTypes.longblob.nullable(), row.imageData), Fragment.lit("\nwhere `image_id` = "), Fragment.encode(ProductImagesId.mariaType, imageId), Fragment.lit("")).update().runUnchecked(c) > 0 } override fun upsert( unsaved: ProductImagesRow, c: Connection - ): ProductImagesRow = Fragment.interpolate(Fragment.lit("INSERT INTO `product_images`(`image_id`, `product_id`, `image_url`, `thumbnail_url`, `alt_text`, `sort_order`, `is_primary`, `image_data`)\nVALUES ("), Fragment.encode(ProductImagesId.dbType, unsaved.imageId), Fragment.lit(", "), Fragment.encode(ProductsId.dbType, unsaved.productId), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.imageUrl), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.thumbnailUrl), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.altText), Fragment.lit(", "), Fragment.encode(MariaTypes.tinyintUnsigned, unsaved.sortOrder), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.bool, unsaved.isPrimary), Fragment.lit(", "), Fragment.encode(MariaTypes.longblob.nullable(), unsaved.imageData), Fragment.lit(")\nON DUPLICATE KEY UPDATE `product_id` = VALUES(`product_id`),\n`image_url` = VALUES(`image_url`),\n`thumbnail_url` = VALUES(`thumbnail_url`),\n`alt_text` = VALUES(`alt_text`),\n`sort_order` = VALUES(`sort_order`),\n`is_primary` = VALUES(`is_primary`),\n`image_data` = VALUES(`image_data`)\nRETURNING `image_id`, `product_id`, `image_url`, `thumbnail_url`, `alt_text`, `sort_order`, `is_primary`, `image_data`")) + ): ProductImagesRow = Fragment.interpolate(Fragment.lit("INSERT INTO `product_images`(`image_id`, `product_id`, `image_url`, `thumbnail_url`, `alt_text`, `sort_order`, `is_primary`, `image_data`)\nVALUES ("), Fragment.encode(ProductImagesId.mariaType, unsaved.imageId), Fragment.lit(", "), Fragment.encode(ProductsId.mariaType, unsaved.productId), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.imageUrl), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.thumbnailUrl), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.altText), Fragment.lit(", "), Fragment.encode(MariaTypes.tinyintUnsigned, unsaved.sortOrder), Fragment.lit(", "), Fragment.encode(IsPrimary.mariaType, unsaved.isPrimary), Fragment.lit(", "), Fragment.encode(MariaTypes.longblob.nullable(), unsaved.imageData), Fragment.lit(")\nON DUPLICATE KEY UPDATE `product_id` = VALUES(`product_id`),\n`image_url` = VALUES(`image_url`),\n`thumbnail_url` = VALUES(`thumbnail_url`),\n`alt_text` = VALUES(`alt_text`),\n`sort_order` = VALUES(`sort_order`),\n`is_primary` = VALUES(`is_primary`),\n`image_data` = VALUES(`image_data`)\nRETURNING `image_id`, `product_id`, `image_url`, `thumbnail_url`, `alt_text`, `sort_order`, `is_primary`, `image_data`")) .updateReturning(ProductImagesRow._rowParser.exactlyOne()) .runUnchecked(c) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/product_images/ProductImagesRow.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/product_images/ProductImagesRow.kt index 55265ab22c..601ef6f6d0 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/product_images/ProductImagesRow.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/product_images/ProductImagesRow.kt @@ -9,12 +9,12 @@ import com.fasterxml.jackson.annotation.JsonProperty import dev.typr.foundations.MariaTypes import dev.typr.foundations.Tuple.Tuple8 import dev.typr.foundations.data.Uint1 -import dev.typr.foundations.kotlin.KotlinDbTypes import dev.typr.foundations.kotlin.RowParser import dev.typr.foundations.kotlin.RowParsers import dev.typr.foundations.kotlin.nullable import testdb.customtypes.Defaulted import testdb.products.ProductsId +import testdb.userdefined.IsPrimary /** Table: product_images * Primary key: image_id @@ -45,12 +45,12 @@ data class ProductImagesRow( /** * Default: 0 */ - @field:JsonProperty("is_primary") val isPrimary: Boolean, + @field:JsonProperty("is_primary") val isPrimary: /* user-picked */ IsPrimary, /** Optional embedded image data * Default: NULL */ @field:JsonProperty("image_data") val imageData: ByteArray? -) : Tuple8 { +) : Tuple8 { override fun _1(): ProductImagesId = imageId override fun _2(): ProductsId = productId @@ -63,7 +63,7 @@ data class ProductImagesRow( override fun _6(): Uint1 = sortOrder - override fun _7(): Boolean = isPrimary + override fun _7(): /* user-picked */ IsPrimary = isPrimary override fun _8(): ByteArray? = imageData @@ -73,11 +73,11 @@ data class ProductImagesRow( thumbnailUrl: Defaulted = Defaulted.Provided(this.thumbnailUrl), altText: Defaulted = Defaulted.Provided(this.altText), sortOrder: Defaulted = Defaulted.Provided(this.sortOrder), - isPrimary: Defaulted = Defaulted.Provided(this.isPrimary), + isPrimary: Defaulted = Defaulted.Provided(this.isPrimary), imageData: Defaulted = Defaulted.Provided(this.imageData) ): ProductImagesRowUnsaved = ProductImagesRowUnsaved(productId, imageUrl, thumbnailUrl, altText, sortOrder, isPrimary, imageData) companion object { - val _rowParser: RowParser = RowParsers.of(ProductImagesId.dbType, ProductsId.dbType, MariaTypes.varchar, MariaTypes.varchar.nullable(), MariaTypes.varchar.nullable(), MariaTypes.tinyintUnsigned, KotlinDbTypes.MariaTypes.bool, MariaTypes.longblob.nullable(), { t0, t1, t2, t3, t4, t5, t6, t7 -> ProductImagesRow(t0, t1, t2, t3, t4, t5, t6, t7) }, { row -> arrayOf(row.imageId, row.productId, row.imageUrl, row.thumbnailUrl, row.altText, row.sortOrder, row.isPrimary, row.imageData) }) + val _rowParser: RowParser = RowParsers.of(ProductImagesId.mariaType, ProductsId.mariaType, MariaTypes.varchar, MariaTypes.varchar.nullable(), MariaTypes.varchar.nullable(), MariaTypes.tinyintUnsigned, IsPrimary.mariaType, MariaTypes.longblob.nullable(), { t0, t1, t2, t3, t4, t5, t6, t7 -> ProductImagesRow(t0, t1, t2, t3, t4, t5, t6, t7) }, { row -> arrayOf(row.imageId, row.productId, row.imageUrl, row.thumbnailUrl, row.altText, row.sortOrder, row.isPrimary, row.imageData) }) } } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/product_images/ProductImagesRowUnsaved.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/product_images/ProductImagesRowUnsaved.kt index ae75151245..588e944c9b 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/product_images/ProductImagesRowUnsaved.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/product_images/ProductImagesRowUnsaved.kt @@ -10,6 +10,7 @@ import dev.typr.foundations.data.Uint1 import testdb.customtypes.Defaulted import testdb.customtypes.Defaulted.UseDefault import testdb.products.ProductsId +import testdb.userdefined.IsPrimary /** This class corresponds to a row in table `product_images` which has not been persisted yet */ data class ProductImagesRowUnsaved( @@ -34,7 +35,7 @@ data class ProductImagesRowUnsaved( /** Default: 0 */ - @field:JsonProperty("is_primary") val isPrimary: Defaulted = UseDefault(), + @field:JsonProperty("is_primary") val isPrimary: Defaulted = UseDefault(), /** Default: NULL * Optional embedded image data */ @@ -44,7 +45,7 @@ data class ProductImagesRowUnsaved( thumbnailUrlDefault: () -> String?, altTextDefault: () -> String?, sortOrderDefault: () -> Uint1, - isPrimaryDefault: () -> Boolean, + isPrimaryDefault: () -> /* user-picked */ IsPrimary, imageDataDefault: () -> ByteArray?, imageIdDefault: () -> ProductImagesId ): ProductImagesRow = ProductImagesRow(imageId = imageIdDefault(), productId = productId, imageUrl = imageUrl, thumbnailUrl = thumbnailUrl.getOrElse(thumbnailUrlDefault), altText = altText.getOrElse(altTextDefault), sortOrder = sortOrder.getOrElse(sortOrderDefault), isPrimary = isPrimary.getOrElse(isPrimaryDefault), imageData = imageData.getOrElse(imageDataDefault)) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/product_prices/ProductPricesFields.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/product_prices/ProductPricesFields.kt index 90ea2ef275..9b4a039259 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/product_prices/ProductPricesFields.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/product_prices/ProductPricesFields.kt @@ -55,13 +55,13 @@ data class ProductPricesFields(val _path: List) : TupleExpr7 = Field(_path, "price", ProductPricesRow::price, null, null, { row, value -> row.copy(price = value) }, KotlinDbTypes.MariaTypes.numeric) - fun priceId(): IdField = IdField(_path, "price_id", ProductPricesRow::priceId, null, null, { row, value -> row.copy(priceId = value) }, ProductPricesId.dbType) + fun priceId(): IdField = IdField(_path, "price_id", ProductPricesRow::priceId, null, null, { row, value -> row.copy(priceId = value) }, ProductPricesId.mariaType) - fun productId(): Field = Field(_path, "product_id", ProductPricesRow::productId, null, null, { row, value -> row.copy(productId = value) }, ProductsId.dbType) + fun productId(): Field = Field(_path, "product_id", ProductPricesRow::productId, null, null, { row, value -> row.copy(productId = value) }, ProductsId.mariaType) override fun rowParser(): RowParser = ProductPricesRow._rowParser.underlying - fun tierId(): OptField = OptField(_path, "tier_id", ProductPricesRow::tierId, null, null, { row, value -> row.copy(tierId = value) }, PriceTiersId.dbType) + fun tierId(): OptField = OptField(_path, "tier_id", ProductPricesRow::tierId, null, null, { row, value -> row.copy(tierId = value) }, PriceTiersId.mariaType) fun validFrom(): Field = Field(_path, "valid_from", ProductPricesRow::validFrom, null, null, { row, value -> row.copy(validFrom = value) }, MariaTypes.date) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/product_prices/ProductPricesId.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/product_prices/ProductPricesId.kt index db23d1a8d2..fb1ac0e725 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/product_prices/ProductPricesId.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/product_prices/ProductPricesId.kt @@ -21,7 +21,7 @@ data class ProductPricesId(@field:JsonValue val value: Uint8) { val bijection: Bijection = Bijection.of(ProductPricesId::value, ::ProductPricesId) - val dbType: MariaType = + val mariaType: MariaType = MariaTypes.bigintUnsigned.bimap(::ProductPricesId, ProductPricesId::value) } } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/product_prices/ProductPricesRepoImpl.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/product_prices/ProductPricesRepoImpl.kt index f73456bcdc..8b9f3a79f5 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/product_prices/ProductPricesRepoImpl.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/product_prices/ProductPricesRepoImpl.kt @@ -28,21 +28,21 @@ class ProductPricesRepoImpl() : ProductPricesRepo { override fun deleteById( priceId: ProductPricesId, c: Connection - ): Boolean = Fragment.interpolate(Fragment.lit("delete from `product_prices` where `price_id` = "), Fragment.encode(ProductPricesId.dbType, priceId), Fragment.lit("")).update().runUnchecked(c) > 0 + ): Boolean = Fragment.interpolate(Fragment.lit("delete from `product_prices` where `price_id` = "), Fragment.encode(ProductPricesId.mariaType, priceId), Fragment.lit("")).update().runUnchecked(c) > 0 override fun deleteByIds( priceIds: Array, c: Connection ): Int { val fragments: ArrayList = ArrayList() - for (id in priceIds) { fragments.add(Fragment.encode(ProductPricesId.dbType, id)) } + for (id in priceIds) { fragments.add(Fragment.encode(ProductPricesId.mariaType, id)) } return Fragment.interpolate(Fragment.lit("delete from `product_prices` where `price_id` in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).update().runUnchecked(c) } override fun insert( unsaved: ProductPricesRow, c: Connection - ): ProductPricesRow = Fragment.interpolate(Fragment.lit("insert into `product_prices`(`product_id`, `tier_id`, `price`, `currency_code`, `valid_from`, `valid_to`)\nvalues ("), Fragment.encode(ProductsId.dbType, unsaved.productId), Fragment.lit(", "), Fragment.encode(PriceTiersId.dbType.nullable(), unsaved.tierId), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, unsaved.price), Fragment.lit(", "), Fragment.encode(MariaTypes.char_, unsaved.currencyCode), Fragment.lit(", "), Fragment.encode(MariaTypes.date, unsaved.validFrom), Fragment.lit(", "), Fragment.encode(MariaTypes.date.nullable(), unsaved.validTo), Fragment.lit(")\nRETURNING `price_id`, `product_id`, `tier_id`, `price`, `currency_code`, `valid_from`, `valid_to`\n")) + ): ProductPricesRow = Fragment.interpolate(Fragment.lit("insert into `product_prices`(`product_id`, `tier_id`, `price`, `currency_code`, `valid_from`, `valid_to`)\nvalues ("), Fragment.encode(ProductsId.mariaType, unsaved.productId), Fragment.lit(", "), Fragment.encode(PriceTiersId.mariaType.nullable(), unsaved.tierId), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, unsaved.price), Fragment.lit(", "), Fragment.encode(MariaTypes.char_, unsaved.currencyCode), Fragment.lit(", "), Fragment.encode(MariaTypes.date, unsaved.validFrom), Fragment.lit(", "), Fragment.encode(MariaTypes.date.nullable(), unsaved.validTo), Fragment.lit(")\nRETURNING `price_id`, `product_id`, `tier_id`, `price`, `currency_code`, `valid_from`, `valid_to`\n")) .updateReturning(ProductPricesRow._rowParser.exactlyOne()).runUnchecked(c) override fun insert( @@ -52,7 +52,7 @@ class ProductPricesRepoImpl() : ProductPricesRepo { val columns: ArrayList = ArrayList() val values: ArrayList = ArrayList() columns.add(Fragment.lit("`product_id`")) - values.add(Fragment.interpolate(Fragment.encode(ProductsId.dbType, unsaved.productId), Fragment.lit(""))) + values.add(Fragment.interpolate(Fragment.encode(ProductsId.mariaType, unsaved.productId), Fragment.lit(""))) columns.add(Fragment.lit("`price`")) values.add(Fragment.interpolate(Fragment.encode(KotlinDbTypes.MariaTypes.numeric, unsaved.price), Fragment.lit(""))) columns.add(Fragment.lit("`valid_from`")) @@ -60,7 +60,7 @@ class ProductPricesRepoImpl() : ProductPricesRepo { unsaved.tierId.visit( { }, { value -> columns.add(Fragment.lit("`tier_id`")) - values.add(Fragment.interpolate(Fragment.encode(PriceTiersId.dbType.nullable(), value), Fragment.lit(""))) } + values.add(Fragment.interpolate(Fragment.encode(PriceTiersId.mariaType.nullable(), value), Fragment.lit(""))) } ); unsaved.currencyCode.visit( { }, @@ -83,14 +83,14 @@ class ProductPricesRepoImpl() : ProductPricesRepo { override fun selectById( priceId: ProductPricesId, c: Connection - ): ProductPricesRow? = Fragment.interpolate(Fragment.lit("select `price_id`, `product_id`, `tier_id`, `price`, `currency_code`, `valid_from`, `valid_to`\nfrom `product_prices`\nwhere `price_id` = "), Fragment.encode(ProductPricesId.dbType, priceId), Fragment.lit("")).query(ProductPricesRow._rowParser.first()).runUnchecked(c) + ): ProductPricesRow? = Fragment.interpolate(Fragment.lit("select `price_id`, `product_id`, `tier_id`, `price`, `currency_code`, `valid_from`, `valid_to`\nfrom `product_prices`\nwhere `price_id` = "), Fragment.encode(ProductPricesId.mariaType, priceId), Fragment.lit("")).query(ProductPricesRow._rowParser.first()).runUnchecked(c) override fun selectByIds( priceIds: Array, c: Connection ): List { val fragments: ArrayList = ArrayList() - for (id in priceIds) { fragments.add(Fragment.encode(ProductPricesId.dbType, id)) } + for (id in priceIds) { fragments.add(Fragment.encode(ProductPricesId.mariaType, id)) } return Fragment.interpolate(Fragment.lit("select `price_id`, `product_id`, `tier_id`, `price`, `currency_code`, `valid_from`, `valid_to` from `product_prices` where `price_id` in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).query(ProductPricesRow._rowParser.all()).runUnchecked(c) } @@ -110,13 +110,13 @@ class ProductPricesRepoImpl() : ProductPricesRepo { c: Connection ): Boolean { val priceId: ProductPricesId = row.priceId - return Fragment.interpolate(Fragment.lit("update `product_prices`\nset `product_id` = "), Fragment.encode(ProductsId.dbType, row.productId), Fragment.lit(",\n`tier_id` = "), Fragment.encode(PriceTiersId.dbType.nullable(), row.tierId), Fragment.lit(",\n`price` = "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, row.price), Fragment.lit(",\n`currency_code` = "), Fragment.encode(MariaTypes.char_, row.currencyCode), Fragment.lit(",\n`valid_from` = "), Fragment.encode(MariaTypes.date, row.validFrom), Fragment.lit(",\n`valid_to` = "), Fragment.encode(MariaTypes.date.nullable(), row.validTo), Fragment.lit("\nwhere `price_id` = "), Fragment.encode(ProductPricesId.dbType, priceId), Fragment.lit("")).update().runUnchecked(c) > 0 + return Fragment.interpolate(Fragment.lit("update `product_prices`\nset `product_id` = "), Fragment.encode(ProductsId.mariaType, row.productId), Fragment.lit(",\n`tier_id` = "), Fragment.encode(PriceTiersId.mariaType.nullable(), row.tierId), Fragment.lit(",\n`price` = "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, row.price), Fragment.lit(",\n`currency_code` = "), Fragment.encode(MariaTypes.char_, row.currencyCode), Fragment.lit(",\n`valid_from` = "), Fragment.encode(MariaTypes.date, row.validFrom), Fragment.lit(",\n`valid_to` = "), Fragment.encode(MariaTypes.date.nullable(), row.validTo), Fragment.lit("\nwhere `price_id` = "), Fragment.encode(ProductPricesId.mariaType, priceId), Fragment.lit("")).update().runUnchecked(c) > 0 } override fun upsert( unsaved: ProductPricesRow, c: Connection - ): ProductPricesRow = Fragment.interpolate(Fragment.lit("INSERT INTO `product_prices`(`price_id`, `product_id`, `tier_id`, `price`, `currency_code`, `valid_from`, `valid_to`)\nVALUES ("), Fragment.encode(ProductPricesId.dbType, unsaved.priceId), Fragment.lit(", "), Fragment.encode(ProductsId.dbType, unsaved.productId), Fragment.lit(", "), Fragment.encode(PriceTiersId.dbType.nullable(), unsaved.tierId), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, unsaved.price), Fragment.lit(", "), Fragment.encode(MariaTypes.char_, unsaved.currencyCode), Fragment.lit(", "), Fragment.encode(MariaTypes.date, unsaved.validFrom), Fragment.lit(", "), Fragment.encode(MariaTypes.date.nullable(), unsaved.validTo), Fragment.lit(")\nON DUPLICATE KEY UPDATE `product_id` = VALUES(`product_id`),\n`tier_id` = VALUES(`tier_id`),\n`price` = VALUES(`price`),\n`currency_code` = VALUES(`currency_code`),\n`valid_from` = VALUES(`valid_from`),\n`valid_to` = VALUES(`valid_to`)\nRETURNING `price_id`, `product_id`, `tier_id`, `price`, `currency_code`, `valid_from`, `valid_to`")) + ): ProductPricesRow = Fragment.interpolate(Fragment.lit("INSERT INTO `product_prices`(`price_id`, `product_id`, `tier_id`, `price`, `currency_code`, `valid_from`, `valid_to`)\nVALUES ("), Fragment.encode(ProductPricesId.mariaType, unsaved.priceId), Fragment.lit(", "), Fragment.encode(ProductsId.mariaType, unsaved.productId), Fragment.lit(", "), Fragment.encode(PriceTiersId.mariaType.nullable(), unsaved.tierId), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, unsaved.price), Fragment.lit(", "), Fragment.encode(MariaTypes.char_, unsaved.currencyCode), Fragment.lit(", "), Fragment.encode(MariaTypes.date, unsaved.validFrom), Fragment.lit(", "), Fragment.encode(MariaTypes.date.nullable(), unsaved.validTo), Fragment.lit(")\nON DUPLICATE KEY UPDATE `product_id` = VALUES(`product_id`),\n`tier_id` = VALUES(`tier_id`),\n`price` = VALUES(`price`),\n`currency_code` = VALUES(`currency_code`),\n`valid_from` = VALUES(`valid_from`),\n`valid_to` = VALUES(`valid_to`)\nRETURNING `price_id`, `product_id`, `tier_id`, `price`, `currency_code`, `valid_from`, `valid_to`")) .updateReturning(ProductPricesRow._rowParser.exactlyOne()) .runUnchecked(c) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/product_prices/ProductPricesRow.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/product_prices/ProductPricesRow.kt index c58c0ed9a9..52fe464664 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/product_prices/ProductPricesRow.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/product_prices/ProductPricesRow.kt @@ -71,6 +71,6 @@ data class ProductPricesRow( ): ProductPricesRowUnsaved = ProductPricesRowUnsaved(productId, price, validFrom, tierId, currencyCode, validTo) companion object { - val _rowParser: RowParser = RowParsers.of(ProductPricesId.dbType, ProductsId.dbType, PriceTiersId.dbType.nullable(), KotlinDbTypes.MariaTypes.numeric, MariaTypes.char_, MariaTypes.date, MariaTypes.date.nullable(), { t0, t1, t2, t3, t4, t5, t6 -> ProductPricesRow(t0, t1, t2, t3, t4, t5, t6) }, { row -> arrayOf(row.priceId, row.productId, row.tierId, row.price, row.currencyCode, row.validFrom, row.validTo) }) + val _rowParser: RowParser = RowParsers.of(ProductPricesId.mariaType, ProductsId.mariaType, PriceTiersId.mariaType.nullable(), KotlinDbTypes.MariaTypes.numeric, MariaTypes.char_, MariaTypes.date, MariaTypes.date.nullable(), { t0, t1, t2, t3, t4, t5, t6 -> ProductPricesRow(t0, t1, t2, t3, t4, t5, t6) }, { row -> arrayOf(row.priceId, row.productId, row.tierId, row.price, row.currencyCode, row.validFrom, row.validTo) }) } } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/product_search/ProductSearchSqlRow.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/product_search/ProductSearchSqlRow.kt index ed338bc4ea..f45359ff07 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/product_search/ProductSearchSqlRow.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/product_search/ProductSearchSqlRow.kt @@ -47,6 +47,6 @@ data class ProductSearchSqlRow( override fun _7(): String? = brandName companion object { - val _rowParser: RowParser = RowParsers.of(ProductsId.dbType, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.varchar.nullable(), KotlinDbTypes.MariaTypes.numeric, MariaTypes.text, MariaTypes.varchar.nullable(), { t0, t1, t2, t3, t4, t5, t6 -> ProductSearchSqlRow(t0, t1, t2, t3, t4, t5, t6) }, { row -> arrayOf(row.productId, row.sku, row.name, row.shortDescription, row.basePrice, row.status, row.brandName) }) + val _rowParser: RowParser = RowParsers.of(ProductsId.mariaType, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.varchar.nullable(), KotlinDbTypes.MariaTypes.numeric, MariaTypes.text, MariaTypes.varchar.nullable(), { t0, t1, t2, t3, t4, t5, t6 -> ProductSearchSqlRow(t0, t1, t2, t3, t4, t5, t6) }, { row -> arrayOf(row.productId, row.sku, row.name, row.shortDescription, row.basePrice, row.status, row.brandName) }) } } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/products/ProductsFields.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/products/ProductsFields.kt index 0f0f6d0e4d..e68a844def 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/products/ProductsFields.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/products/ProductsFields.kt @@ -70,7 +70,7 @@ data class ProductsFields(val _path: List) : TupleExpr18 = Field(_path, "base_price", ProductsRow::basePrice, null, null, { row, value -> row.copy(basePrice = value) }, KotlinDbTypes.MariaTypes.numeric) - fun brandId(): OptField = OptField(_path, "brand_id", ProductsRow::brandId, null, null, { row, value -> row.copy(brandId = value) }, BrandsId.dbType) + fun brandId(): OptField = OptField(_path, "brand_id", ProductsRow::brandId, null, null, { row, value -> row.copy(brandId = value) }, BrandsId.mariaType) override fun columns(): List> = listOf(this.productId().underlying, this.sku().underlying, this.brandId().underlying, this.name().underlying, this.shortDescription().underlying, this.fullDescription().underlying, this.basePrice().underlying, this.costPrice().underlying, this.weightKg().underlying, this.dimensionsJson().underlying, this.status().underlying, this.taxClass().underlying, this.tags().underlying, this.attributes().underlying, this.seoMetadata().underlying, this.createdAt().underlying, this.updatedAt().underlying, this.publishedAt().underlying) @@ -86,7 +86,7 @@ data class ProductsFields(val _path: List) : TupleExpr18 = Field(_path, "name", ProductsRow::name, null, null, { row, value -> row.copy(name = value) }, MariaTypes.varchar) - fun productId(): IdField = IdField(_path, "product_id", ProductsRow::productId, null, null, { row, value -> row.copy(productId = value) }, ProductsId.dbType) + fun productId(): IdField = IdField(_path, "product_id", ProductsRow::productId, null, null, { row, value -> row.copy(productId = value) }, ProductsId.mariaType) fun publishedAt(): OptField = OptField(_path, "published_at", ProductsRow::publishedAt, null, null, { row, value -> row.copy(publishedAt = value) }, MariaTypes.datetime) @@ -100,7 +100,7 @@ data class ProductsFields(val _path: List) : TupleExpr18 = Field(_path, "status", ProductsRow::status, null, null, { row, value -> row.copy(status = value) }, MariaTypes.text) - fun tags(): OptField = OptField(_path, "tags", ProductsRow::tags, null, null, { row, value -> row.copy(tags = value) }, BestsellerClearanceFSet.dbType) + fun tags(): OptField = OptField(_path, "tags", ProductsRow::tags, null, null, { row, value -> row.copy(tags = value) }, BestsellerClearanceFSet.mariaType) fun taxClass(): Field = Field(_path, "tax_class", ProductsRow::taxClass, null, null, { row, value -> row.copy(taxClass = value) }, MariaTypes.text) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/products/ProductsId.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/products/ProductsId.kt index 4f2a32fc4a..29d3a6b0b8 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/products/ProductsId.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/products/ProductsId.kt @@ -21,7 +21,7 @@ data class ProductsId(@field:JsonValue val value: Uint8) { val bijection: Bijection = Bijection.of(ProductsId::value, ::ProductsId) - val dbType: MariaType = + val mariaType: MariaType = MariaTypes.bigintUnsigned.bimap(::ProductsId, ProductsId::value) } } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/products/ProductsRepoImpl.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/products/ProductsRepoImpl.kt index aad827aa69..2c99bddb7b 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/products/ProductsRepoImpl.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/products/ProductsRepoImpl.kt @@ -28,21 +28,21 @@ class ProductsRepoImpl() : ProductsRepo { override fun deleteById( productId: ProductsId, c: Connection - ): Boolean = Fragment.interpolate(Fragment.lit("delete from `products` where `product_id` = "), Fragment.encode(ProductsId.dbType, productId), Fragment.lit("")).update().runUnchecked(c) > 0 + ): Boolean = Fragment.interpolate(Fragment.lit("delete from `products` where `product_id` = "), Fragment.encode(ProductsId.mariaType, productId), Fragment.lit("")).update().runUnchecked(c) > 0 override fun deleteByIds( productIds: Array, c: Connection ): Int { val fragments: ArrayList = ArrayList() - for (id in productIds) { fragments.add(Fragment.encode(ProductsId.dbType, id)) } + for (id in productIds) { fragments.add(Fragment.encode(ProductsId.mariaType, id)) } return Fragment.interpolate(Fragment.lit("delete from `products` where `product_id` in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).update().runUnchecked(c) } override fun insert( unsaved: ProductsRow, c: Connection - ): ProductsRow = Fragment.interpolate(Fragment.lit("insert into `products`(`sku`, `brand_id`, `name`, `short_description`, `full_description`, `base_price`, `cost_price`, `weight_kg`, `dimensions_json`, `status`, `tax_class`, `tags`, `attributes`, `seo_metadata`, `created_at`, `updated_at`, `published_at`)\nvalues ("), Fragment.encode(MariaTypes.varchar, unsaved.sku), Fragment.lit(", "), Fragment.encode(BrandsId.dbType.nullable(), unsaved.brandId), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.name), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.shortDescription), Fragment.lit(", "), Fragment.encode(MariaTypes.longtext.nullable(), unsaved.fullDescription), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, unsaved.basePrice), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric.nullable(), unsaved.costPrice), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric.nullable(), unsaved.weightKg), Fragment.lit(", "), Fragment.encode(MariaTypes.json.nullable(), unsaved.dimensionsJson), Fragment.lit(", "), Fragment.encode(MariaTypes.text, unsaved.status), Fragment.lit(", "), Fragment.encode(MariaTypes.text, unsaved.taxClass), Fragment.lit(", "), Fragment.encode(BestsellerClearanceFSet.dbType.nullable(), unsaved.tags), Fragment.lit(", "), Fragment.encode(MariaTypes.json.nullable(), unsaved.attributes), Fragment.lit(", "), Fragment.encode(MariaTypes.json.nullable(), unsaved.seoMetadata), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.createdAt), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.updatedAt), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime.nullable(), unsaved.publishedAt), Fragment.lit(")\nRETURNING `product_id`, `sku`, `brand_id`, `name`, `short_description`, `full_description`, `base_price`, `cost_price`, `weight_kg`, `dimensions_json`, `status`, `tax_class`, `tags`, `attributes`, `seo_metadata`, `created_at`, `updated_at`, `published_at`\n")) + ): ProductsRow = Fragment.interpolate(Fragment.lit("insert into `products`(`sku`, `brand_id`, `name`, `short_description`, `full_description`, `base_price`, `cost_price`, `weight_kg`, `dimensions_json`, `status`, `tax_class`, `tags`, `attributes`, `seo_metadata`, `created_at`, `updated_at`, `published_at`)\nvalues ("), Fragment.encode(MariaTypes.varchar, unsaved.sku), Fragment.lit(", "), Fragment.encode(BrandsId.mariaType.nullable(), unsaved.brandId), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.name), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.shortDescription), Fragment.lit(", "), Fragment.encode(MariaTypes.longtext.nullable(), unsaved.fullDescription), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, unsaved.basePrice), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric.nullable(), unsaved.costPrice), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric.nullable(), unsaved.weightKg), Fragment.lit(", "), Fragment.encode(MariaTypes.json.nullable(), unsaved.dimensionsJson), Fragment.lit(", "), Fragment.encode(MariaTypes.text, unsaved.status), Fragment.lit(", "), Fragment.encode(MariaTypes.text, unsaved.taxClass), Fragment.lit(", "), Fragment.encode(BestsellerClearanceFSet.mariaType.nullable(), unsaved.tags), Fragment.lit(", "), Fragment.encode(MariaTypes.json.nullable(), unsaved.attributes), Fragment.lit(", "), Fragment.encode(MariaTypes.json.nullable(), unsaved.seoMetadata), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.createdAt), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.updatedAt), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime.nullable(), unsaved.publishedAt), Fragment.lit(")\nRETURNING `product_id`, `sku`, `brand_id`, `name`, `short_description`, `full_description`, `base_price`, `cost_price`, `weight_kg`, `dimensions_json`, `status`, `tax_class`, `tags`, `attributes`, `seo_metadata`, `created_at`, `updated_at`, `published_at`\n")) .updateReturning(ProductsRow._rowParser.exactlyOne()).runUnchecked(c) override fun insert( @@ -60,7 +60,7 @@ class ProductsRepoImpl() : ProductsRepo { unsaved.brandId.visit( { }, { value -> columns.add(Fragment.lit("`brand_id`")) - values.add(Fragment.interpolate(Fragment.encode(BrandsId.dbType.nullable(), value), Fragment.lit(""))) } + values.add(Fragment.interpolate(Fragment.encode(BrandsId.mariaType.nullable(), value), Fragment.lit(""))) } ); unsaved.shortDescription.visit( { }, @@ -100,7 +100,7 @@ class ProductsRepoImpl() : ProductsRepo { unsaved.tags.visit( { }, { value -> columns.add(Fragment.lit("`tags`")) - values.add(Fragment.interpolate(Fragment.encode(BestsellerClearanceFSet.dbType.nullable(), value), Fragment.lit(""))) } + values.add(Fragment.interpolate(Fragment.encode(BestsellerClearanceFSet.mariaType.nullable(), value), Fragment.lit(""))) } ); unsaved.attributes.visit( { }, @@ -138,14 +138,14 @@ class ProductsRepoImpl() : ProductsRepo { override fun selectById( productId: ProductsId, c: Connection - ): ProductsRow? = Fragment.interpolate(Fragment.lit("select `product_id`, `sku`, `brand_id`, `name`, `short_description`, `full_description`, `base_price`, `cost_price`, `weight_kg`, `dimensions_json`, `status`, `tax_class`, `tags`, `attributes`, `seo_metadata`, `created_at`, `updated_at`, `published_at`\nfrom `products`\nwhere `product_id` = "), Fragment.encode(ProductsId.dbType, productId), Fragment.lit("")).query(ProductsRow._rowParser.first()).runUnchecked(c) + ): ProductsRow? = Fragment.interpolate(Fragment.lit("select `product_id`, `sku`, `brand_id`, `name`, `short_description`, `full_description`, `base_price`, `cost_price`, `weight_kg`, `dimensions_json`, `status`, `tax_class`, `tags`, `attributes`, `seo_metadata`, `created_at`, `updated_at`, `published_at`\nfrom `products`\nwhere `product_id` = "), Fragment.encode(ProductsId.mariaType, productId), Fragment.lit("")).query(ProductsRow._rowParser.first()).runUnchecked(c) override fun selectByIds( productIds: Array, c: Connection ): List { val fragments: ArrayList = ArrayList() - for (id in productIds) { fragments.add(Fragment.encode(ProductsId.dbType, id)) } + for (id in productIds) { fragments.add(Fragment.encode(ProductsId.mariaType, id)) } return Fragment.interpolate(Fragment.lit("select `product_id`, `sku`, `brand_id`, `name`, `short_description`, `full_description`, `base_price`, `cost_price`, `weight_kg`, `dimensions_json`, `status`, `tax_class`, `tags`, `attributes`, `seo_metadata`, `created_at`, `updated_at`, `published_at` from `products` where `product_id` in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).query(ProductsRow._rowParser.all()).runUnchecked(c) } @@ -170,13 +170,13 @@ class ProductsRepoImpl() : ProductsRepo { c: Connection ): Boolean { val productId: ProductsId = row.productId - return Fragment.interpolate(Fragment.lit("update `products`\nset `sku` = "), Fragment.encode(MariaTypes.varchar, row.sku), Fragment.lit(",\n`brand_id` = "), Fragment.encode(BrandsId.dbType.nullable(), row.brandId), Fragment.lit(",\n`name` = "), Fragment.encode(MariaTypes.varchar, row.name), Fragment.lit(",\n`short_description` = "), Fragment.encode(MariaTypes.varchar.nullable(), row.shortDescription), Fragment.lit(",\n`full_description` = "), Fragment.encode(MariaTypes.longtext.nullable(), row.fullDescription), Fragment.lit(",\n`base_price` = "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, row.basePrice), Fragment.lit(",\n`cost_price` = "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric.nullable(), row.costPrice), Fragment.lit(",\n`weight_kg` = "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric.nullable(), row.weightKg), Fragment.lit(",\n`dimensions_json` = "), Fragment.encode(MariaTypes.json.nullable(), row.dimensionsJson), Fragment.lit(",\n`status` = "), Fragment.encode(MariaTypes.text, row.status), Fragment.lit(",\n`tax_class` = "), Fragment.encode(MariaTypes.text, row.taxClass), Fragment.lit(",\n`tags` = "), Fragment.encode(BestsellerClearanceFSet.dbType.nullable(), row.tags), Fragment.lit(",\n`attributes` = "), Fragment.encode(MariaTypes.json.nullable(), row.attributes), Fragment.lit(",\n`seo_metadata` = "), Fragment.encode(MariaTypes.json.nullable(), row.seoMetadata), Fragment.lit(",\n`created_at` = "), Fragment.encode(MariaTypes.datetime, row.createdAt), Fragment.lit(",\n`updated_at` = "), Fragment.encode(MariaTypes.datetime, row.updatedAt), Fragment.lit(",\n`published_at` = "), Fragment.encode(MariaTypes.datetime.nullable(), row.publishedAt), Fragment.lit("\nwhere `product_id` = "), Fragment.encode(ProductsId.dbType, productId), Fragment.lit("")).update().runUnchecked(c) > 0 + return Fragment.interpolate(Fragment.lit("update `products`\nset `sku` = "), Fragment.encode(MariaTypes.varchar, row.sku), Fragment.lit(",\n`brand_id` = "), Fragment.encode(BrandsId.mariaType.nullable(), row.brandId), Fragment.lit(",\n`name` = "), Fragment.encode(MariaTypes.varchar, row.name), Fragment.lit(",\n`short_description` = "), Fragment.encode(MariaTypes.varchar.nullable(), row.shortDescription), Fragment.lit(",\n`full_description` = "), Fragment.encode(MariaTypes.longtext.nullable(), row.fullDescription), Fragment.lit(",\n`base_price` = "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, row.basePrice), Fragment.lit(",\n`cost_price` = "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric.nullable(), row.costPrice), Fragment.lit(",\n`weight_kg` = "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric.nullable(), row.weightKg), Fragment.lit(",\n`dimensions_json` = "), Fragment.encode(MariaTypes.json.nullable(), row.dimensionsJson), Fragment.lit(",\n`status` = "), Fragment.encode(MariaTypes.text, row.status), Fragment.lit(",\n`tax_class` = "), Fragment.encode(MariaTypes.text, row.taxClass), Fragment.lit(",\n`tags` = "), Fragment.encode(BestsellerClearanceFSet.mariaType.nullable(), row.tags), Fragment.lit(",\n`attributes` = "), Fragment.encode(MariaTypes.json.nullable(), row.attributes), Fragment.lit(",\n`seo_metadata` = "), Fragment.encode(MariaTypes.json.nullable(), row.seoMetadata), Fragment.lit(",\n`created_at` = "), Fragment.encode(MariaTypes.datetime, row.createdAt), Fragment.lit(",\n`updated_at` = "), Fragment.encode(MariaTypes.datetime, row.updatedAt), Fragment.lit(",\n`published_at` = "), Fragment.encode(MariaTypes.datetime.nullable(), row.publishedAt), Fragment.lit("\nwhere `product_id` = "), Fragment.encode(ProductsId.mariaType, productId), Fragment.lit("")).update().runUnchecked(c) > 0 } override fun upsert( unsaved: ProductsRow, c: Connection - ): ProductsRow = Fragment.interpolate(Fragment.lit("INSERT INTO `products`(`product_id`, `sku`, `brand_id`, `name`, `short_description`, `full_description`, `base_price`, `cost_price`, `weight_kg`, `dimensions_json`, `status`, `tax_class`, `tags`, `attributes`, `seo_metadata`, `created_at`, `updated_at`, `published_at`)\nVALUES ("), Fragment.encode(ProductsId.dbType, unsaved.productId), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.sku), Fragment.lit(", "), Fragment.encode(BrandsId.dbType.nullable(), unsaved.brandId), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.name), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.shortDescription), Fragment.lit(", "), Fragment.encode(MariaTypes.longtext.nullable(), unsaved.fullDescription), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, unsaved.basePrice), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric.nullable(), unsaved.costPrice), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric.nullable(), unsaved.weightKg), Fragment.lit(", "), Fragment.encode(MariaTypes.json.nullable(), unsaved.dimensionsJson), Fragment.lit(", "), Fragment.encode(MariaTypes.text, unsaved.status), Fragment.lit(", "), Fragment.encode(MariaTypes.text, unsaved.taxClass), Fragment.lit(", "), Fragment.encode(BestsellerClearanceFSet.dbType.nullable(), unsaved.tags), Fragment.lit(", "), Fragment.encode(MariaTypes.json.nullable(), unsaved.attributes), Fragment.lit(", "), Fragment.encode(MariaTypes.json.nullable(), unsaved.seoMetadata), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.createdAt), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.updatedAt), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime.nullable(), unsaved.publishedAt), Fragment.lit(")\nON DUPLICATE KEY UPDATE `sku` = VALUES(`sku`),\n`brand_id` = VALUES(`brand_id`),\n`name` = VALUES(`name`),\n`short_description` = VALUES(`short_description`),\n`full_description` = VALUES(`full_description`),\n`base_price` = VALUES(`base_price`),\n`cost_price` = VALUES(`cost_price`),\n`weight_kg` = VALUES(`weight_kg`),\n`dimensions_json` = VALUES(`dimensions_json`),\n`status` = VALUES(`status`),\n`tax_class` = VALUES(`tax_class`),\n`tags` = VALUES(`tags`),\n`attributes` = VALUES(`attributes`),\n`seo_metadata` = VALUES(`seo_metadata`),\n`created_at` = VALUES(`created_at`),\n`updated_at` = VALUES(`updated_at`),\n`published_at` = VALUES(`published_at`)\nRETURNING `product_id`, `sku`, `brand_id`, `name`, `short_description`, `full_description`, `base_price`, `cost_price`, `weight_kg`, `dimensions_json`, `status`, `tax_class`, `tags`, `attributes`, `seo_metadata`, `created_at`, `updated_at`, `published_at`")) + ): ProductsRow = Fragment.interpolate(Fragment.lit("INSERT INTO `products`(`product_id`, `sku`, `brand_id`, `name`, `short_description`, `full_description`, `base_price`, `cost_price`, `weight_kg`, `dimensions_json`, `status`, `tax_class`, `tags`, `attributes`, `seo_metadata`, `created_at`, `updated_at`, `published_at`)\nVALUES ("), Fragment.encode(ProductsId.mariaType, unsaved.productId), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.sku), Fragment.lit(", "), Fragment.encode(BrandsId.mariaType.nullable(), unsaved.brandId), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.name), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.shortDescription), Fragment.lit(", "), Fragment.encode(MariaTypes.longtext.nullable(), unsaved.fullDescription), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, unsaved.basePrice), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric.nullable(), unsaved.costPrice), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric.nullable(), unsaved.weightKg), Fragment.lit(", "), Fragment.encode(MariaTypes.json.nullable(), unsaved.dimensionsJson), Fragment.lit(", "), Fragment.encode(MariaTypes.text, unsaved.status), Fragment.lit(", "), Fragment.encode(MariaTypes.text, unsaved.taxClass), Fragment.lit(", "), Fragment.encode(BestsellerClearanceFSet.mariaType.nullable(), unsaved.tags), Fragment.lit(", "), Fragment.encode(MariaTypes.json.nullable(), unsaved.attributes), Fragment.lit(", "), Fragment.encode(MariaTypes.json.nullable(), unsaved.seoMetadata), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.createdAt), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.updatedAt), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime.nullable(), unsaved.publishedAt), Fragment.lit(")\nON DUPLICATE KEY UPDATE `sku` = VALUES(`sku`),\n`brand_id` = VALUES(`brand_id`),\n`name` = VALUES(`name`),\n`short_description` = VALUES(`short_description`),\n`full_description` = VALUES(`full_description`),\n`base_price` = VALUES(`base_price`),\n`cost_price` = VALUES(`cost_price`),\n`weight_kg` = VALUES(`weight_kg`),\n`dimensions_json` = VALUES(`dimensions_json`),\n`status` = VALUES(`status`),\n`tax_class` = VALUES(`tax_class`),\n`tags` = VALUES(`tags`),\n`attributes` = VALUES(`attributes`),\n`seo_metadata` = VALUES(`seo_metadata`),\n`created_at` = VALUES(`created_at`),\n`updated_at` = VALUES(`updated_at`),\n`published_at` = VALUES(`published_at`)\nRETURNING `product_id`, `sku`, `brand_id`, `name`, `short_description`, `full_description`, `base_price`, `cost_price`, `weight_kg`, `dimensions_json`, `status`, `tax_class`, `tags`, `attributes`, `seo_metadata`, `created_at`, `updated_at`, `published_at`")) .updateReturning(ProductsRow._rowParser.exactlyOne()) .runUnchecked(c) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/products/ProductsRow.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/products/ProductsRow.kt index 25fa5100fc..ac7d90f751 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/products/ProductsRow.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/products/ProductsRow.kt @@ -147,6 +147,6 @@ data class ProductsRow( ): ProductsRowUnsaved = ProductsRowUnsaved(sku, name, basePrice, brandId, shortDescription, fullDescription, costPrice, weightKg, dimensionsJson, status, taxClass, tags, attributes, seoMetadata, createdAt, updatedAt, publishedAt) companion object { - val _rowParser: RowParser = RowParsers.of(ProductsId.dbType, MariaTypes.varchar, BrandsId.dbType.nullable(), MariaTypes.varchar, MariaTypes.varchar.nullable(), MariaTypes.longtext.nullable(), KotlinDbTypes.MariaTypes.numeric, KotlinDbTypes.MariaTypes.numeric.nullable(), KotlinDbTypes.MariaTypes.numeric.nullable(), MariaTypes.json.nullable(), MariaTypes.text, MariaTypes.text, BestsellerClearanceFSet.dbType.nullable(), MariaTypes.json.nullable(), MariaTypes.json.nullable(), MariaTypes.datetime, MariaTypes.datetime, MariaTypes.datetime.nullable(), { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17 -> ProductsRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17) }, { row -> arrayOf(row.productId, row.sku, row.brandId, row.name, row.shortDescription, row.fullDescription, row.basePrice, row.costPrice, row.weightKg, row.dimensionsJson, row.status, row.taxClass, row.tags, row.attributes, row.seoMetadata, row.createdAt, row.updatedAt, row.publishedAt) }) + val _rowParser: RowParser = RowParsers.of(ProductsId.mariaType, MariaTypes.varchar, BrandsId.mariaType.nullable(), MariaTypes.varchar, MariaTypes.varchar.nullable(), MariaTypes.longtext.nullable(), KotlinDbTypes.MariaTypes.numeric, KotlinDbTypes.MariaTypes.numeric.nullable(), KotlinDbTypes.MariaTypes.numeric.nullable(), MariaTypes.json.nullable(), MariaTypes.text, MariaTypes.text, BestsellerClearanceFSet.mariaType.nullable(), MariaTypes.json.nullable(), MariaTypes.json.nullable(), MariaTypes.datetime, MariaTypes.datetime, MariaTypes.datetime.nullable(), { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17 -> ProductsRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17) }, { row -> arrayOf(row.productId, row.sku, row.brandId, row.name, row.shortDescription, row.fullDescription, row.basePrice, row.costPrice, row.weightKg, row.dimensionsJson, row.status, row.taxClass, row.tags, row.attributes, row.seoMetadata, row.createdAt, row.updatedAt, row.publishedAt) }) } } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/promotions/PromotionsFields.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/promotions/PromotionsFields.kt index ed264a8d63..7796233d7b 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/promotions/PromotionsFields.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/promotions/PromotionsFields.kt @@ -24,8 +24,9 @@ import java.math.BigDecimal import java.time.LocalDateTime import kotlin.collections.List import testdb.AllBrandsCategoriesCSet +import testdb.userdefined.IsActive -data class PromotionsFields(val _path: List) : TupleExpr16, RelationStructure, FieldsBase { +data class PromotionsFields(val _path: List) : TupleExpr16, RelationStructure, FieldsBase { override fun _1(): SqlExpr = promotionId() override fun _10(): SqlExpr = maxUsesPerCustomer() @@ -38,7 +39,7 @@ data class PromotionsFields(val _path: List) : TupleExpr16 = validTo() - override fun _15(): SqlExpr = isActive() + override fun _15(): SqlExpr = isActive() override fun _16(): SqlExpr = createdAt() @@ -60,7 +61,7 @@ data class PromotionsFields(val _path: List) : TupleExpr16 = _path - fun applicableTo(): OptField = OptField(_path, "applicable_to", PromotionsRow::applicableTo, null, null, { row, value -> row.copy(applicableTo = value) }, AllBrandsCategoriesCSet.dbType) + fun applicableTo(): OptField = OptField(_path, "applicable_to", PromotionsRow::applicableTo, null, null, { row, value -> row.copy(applicableTo = value) }, AllBrandsCategoriesCSet.mariaType) fun code(): Field = Field(_path, "code", PromotionsRow::code, null, null, { row, value -> row.copy(code = value) }, MariaTypes.varchar) @@ -74,7 +75,7 @@ data class PromotionsFields(val _path: List) : TupleExpr16 = Field(_path, "discount_value", PromotionsRow::discountValue, null, null, { row, value -> row.copy(discountValue = value) }, KotlinDbTypes.MariaTypes.numeric) - fun isActive(): Field = Field(_path, "is_active", PromotionsRow::isActive, null, null, { row, value -> row.copy(isActive = value) }, KotlinDbTypes.MariaTypes.bool) + fun isActive(): Field = Field(_path, "is_active", PromotionsRow::isActive, null, null, { row, value -> row.copy(isActive = value) }, IsActive.mariaType) fun maxUses(): OptField = OptField(_path, "max_uses", PromotionsRow::maxUses, null, null, { row, value -> row.copy(maxUses = value) }, MariaTypes.intUnsigned) @@ -84,7 +85,7 @@ data class PromotionsFields(val _path: List) : TupleExpr16 = Field(_path, "name", PromotionsRow::name, null, null, { row, value -> row.copy(name = value) }, MariaTypes.varchar) - fun promotionId(): IdField = IdField(_path, "promotion_id", PromotionsRow::promotionId, null, null, { row, value -> row.copy(promotionId = value) }, PromotionsId.dbType) + fun promotionId(): IdField = IdField(_path, "promotion_id", PromotionsRow::promotionId, null, null, { row, value -> row.copy(promotionId = value) }, PromotionsId.mariaType) override fun rowParser(): RowParser = PromotionsRow._rowParser.underlying diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/promotions/PromotionsId.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/promotions/PromotionsId.kt index 1ffca579df..acc94bfbd9 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/promotions/PromotionsId.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/promotions/PromotionsId.kt @@ -21,7 +21,7 @@ data class PromotionsId(@field:JsonValue val value: Uint4) { val bijection: Bijection = Bijection.of(PromotionsId::value, ::PromotionsId) - val dbType: MariaType = + val mariaType: MariaType = MariaTypes.intUnsigned.bimap(::PromotionsId, PromotionsId::value) } } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/promotions/PromotionsRepoImpl.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/promotions/PromotionsRepoImpl.kt index 88f4d3b3b1..1cb982bd80 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/promotions/PromotionsRepoImpl.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/promotions/PromotionsRepoImpl.kt @@ -20,6 +20,7 @@ import kotlin.collections.List import kotlin.collections.Map import kotlin.collections.MutableMap import testdb.AllBrandsCategoriesCSet +import testdb.userdefined.IsActive class PromotionsRepoImpl() : PromotionsRepo { override fun delete(): DeleteBuilder = DeleteBuilder.of("`promotions`", PromotionsFields.structure, Dialect.MARIADB) @@ -27,21 +28,21 @@ class PromotionsRepoImpl() : PromotionsRepo { override fun deleteById( promotionId: PromotionsId, c: Connection - ): Boolean = Fragment.interpolate(Fragment.lit("delete from `promotions` where `promotion_id` = "), Fragment.encode(PromotionsId.dbType, promotionId), Fragment.lit("")).update().runUnchecked(c) > 0 + ): Boolean = Fragment.interpolate(Fragment.lit("delete from `promotions` where `promotion_id` = "), Fragment.encode(PromotionsId.mariaType, promotionId), Fragment.lit("")).update().runUnchecked(c) > 0 override fun deleteByIds( promotionIds: Array, c: Connection ): Int { val fragments: ArrayList = ArrayList() - for (id in promotionIds) { fragments.add(Fragment.encode(PromotionsId.dbType, id)) } + for (id in promotionIds) { fragments.add(Fragment.encode(PromotionsId.mariaType, id)) } return Fragment.interpolate(Fragment.lit("delete from `promotions` where `promotion_id` in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).update().runUnchecked(c) } override fun insert( unsaved: PromotionsRow, c: Connection - ): PromotionsRow = Fragment.interpolate(Fragment.lit("insert into `promotions`(`code`, `name`, `description`, `discount_type`, `discount_value`, `min_order_amount`, `max_uses`, `uses_count`, `max_uses_per_customer`, `applicable_to`, `rules_json`, `valid_from`, `valid_to`, `is_active`, `created_at`)\nvalues ("), Fragment.encode(MariaTypes.varchar, unsaved.code), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.name), Fragment.lit(", "), Fragment.encode(MariaTypes.text.nullable(), unsaved.description), Fragment.lit(", "), Fragment.encode(MariaTypes.text, unsaved.discountType), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, unsaved.discountValue), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric.nullable(), unsaved.minOrderAmount), Fragment.lit(", "), Fragment.encode(MariaTypes.intUnsigned.nullable(), unsaved.maxUses), Fragment.lit(", "), Fragment.encode(MariaTypes.intUnsigned, unsaved.usesCount), Fragment.lit(", "), Fragment.encode(MariaTypes.tinyintUnsigned.nullable(), unsaved.maxUsesPerCustomer), Fragment.lit(", "), Fragment.encode(AllBrandsCategoriesCSet.dbType.nullable(), unsaved.applicableTo), Fragment.lit(", "), Fragment.encode(MariaTypes.json.nullable(), unsaved.rulesJson), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.validFrom), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.validTo), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.bool, unsaved.isActive), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.createdAt), Fragment.lit(")\nRETURNING `promotion_id`, `code`, `name`, `description`, `discount_type`, `discount_value`, `min_order_amount`, `max_uses`, `uses_count`, `max_uses_per_customer`, `applicable_to`, `rules_json`, `valid_from`, `valid_to`, `is_active`, `created_at`\n")) + ): PromotionsRow = Fragment.interpolate(Fragment.lit("insert into `promotions`(`code`, `name`, `description`, `discount_type`, `discount_value`, `min_order_amount`, `max_uses`, `uses_count`, `max_uses_per_customer`, `applicable_to`, `rules_json`, `valid_from`, `valid_to`, `is_active`, `created_at`)\nvalues ("), Fragment.encode(MariaTypes.varchar, unsaved.code), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.name), Fragment.lit(", "), Fragment.encode(MariaTypes.text.nullable(), unsaved.description), Fragment.lit(", "), Fragment.encode(MariaTypes.text, unsaved.discountType), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, unsaved.discountValue), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric.nullable(), unsaved.minOrderAmount), Fragment.lit(", "), Fragment.encode(MariaTypes.intUnsigned.nullable(), unsaved.maxUses), Fragment.lit(", "), Fragment.encode(MariaTypes.intUnsigned, unsaved.usesCount), Fragment.lit(", "), Fragment.encode(MariaTypes.tinyintUnsigned.nullable(), unsaved.maxUsesPerCustomer), Fragment.lit(", "), Fragment.encode(AllBrandsCategoriesCSet.mariaType.nullable(), unsaved.applicableTo), Fragment.lit(", "), Fragment.encode(MariaTypes.json.nullable(), unsaved.rulesJson), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.validFrom), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.validTo), Fragment.lit(", "), Fragment.encode(IsActive.mariaType, unsaved.isActive), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.createdAt), Fragment.lit(")\nRETURNING `promotion_id`, `code`, `name`, `description`, `discount_type`, `discount_value`, `min_order_amount`, `max_uses`, `uses_count`, `max_uses_per_customer`, `applicable_to`, `rules_json`, `valid_from`, `valid_to`, `is_active`, `created_at`\n")) .updateReturning(PromotionsRow._rowParser.exactlyOne()).runUnchecked(c) override fun insert( @@ -90,7 +91,7 @@ class PromotionsRepoImpl() : PromotionsRepo { unsaved.applicableTo.visit( { }, { value -> columns.add(Fragment.lit("`applicable_to`")) - values.add(Fragment.interpolate(Fragment.encode(AllBrandsCategoriesCSet.dbType.nullable(), value), Fragment.lit(""))) } + values.add(Fragment.interpolate(Fragment.encode(AllBrandsCategoriesCSet.mariaType.nullable(), value), Fragment.lit(""))) } ); unsaved.rulesJson.visit( { }, @@ -100,7 +101,7 @@ class PromotionsRepoImpl() : PromotionsRepo { unsaved.isActive.visit( { }, { value -> columns.add(Fragment.lit("`is_active`")) - values.add(Fragment.interpolate(Fragment.encode(KotlinDbTypes.MariaTypes.bool, value), Fragment.lit(""))) } + values.add(Fragment.interpolate(Fragment.encode(IsActive.mariaType, value), Fragment.lit(""))) } ); unsaved.createdAt.visit( { }, @@ -118,14 +119,14 @@ class PromotionsRepoImpl() : PromotionsRepo { override fun selectById( promotionId: PromotionsId, c: Connection - ): PromotionsRow? = Fragment.interpolate(Fragment.lit("select `promotion_id`, `code`, `name`, `description`, `discount_type`, `discount_value`, `min_order_amount`, `max_uses`, `uses_count`, `max_uses_per_customer`, `applicable_to`, `rules_json`, `valid_from`, `valid_to`, `is_active`, `created_at`\nfrom `promotions`\nwhere `promotion_id` = "), Fragment.encode(PromotionsId.dbType, promotionId), Fragment.lit("")).query(PromotionsRow._rowParser.first()).runUnchecked(c) + ): PromotionsRow? = Fragment.interpolate(Fragment.lit("select `promotion_id`, `code`, `name`, `description`, `discount_type`, `discount_value`, `min_order_amount`, `max_uses`, `uses_count`, `max_uses_per_customer`, `applicable_to`, `rules_json`, `valid_from`, `valid_to`, `is_active`, `created_at`\nfrom `promotions`\nwhere `promotion_id` = "), Fragment.encode(PromotionsId.mariaType, promotionId), Fragment.lit("")).query(PromotionsRow._rowParser.first()).runUnchecked(c) override fun selectByIds( promotionIds: Array, c: Connection ): List { val fragments: ArrayList = ArrayList() - for (id in promotionIds) { fragments.add(Fragment.encode(PromotionsId.dbType, id)) } + for (id in promotionIds) { fragments.add(Fragment.encode(PromotionsId.mariaType, id)) } return Fragment.interpolate(Fragment.lit("select `promotion_id`, `code`, `name`, `description`, `discount_type`, `discount_value`, `min_order_amount`, `max_uses`, `uses_count`, `max_uses_per_customer`, `applicable_to`, `rules_json`, `valid_from`, `valid_to`, `is_active`, `created_at` from `promotions` where `promotion_id` in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).query(PromotionsRow._rowParser.all()).runUnchecked(c) } @@ -150,13 +151,13 @@ class PromotionsRepoImpl() : PromotionsRepo { c: Connection ): Boolean { val promotionId: PromotionsId = row.promotionId - return Fragment.interpolate(Fragment.lit("update `promotions`\nset `code` = "), Fragment.encode(MariaTypes.varchar, row.code), Fragment.lit(",\n`name` = "), Fragment.encode(MariaTypes.varchar, row.name), Fragment.lit(",\n`description` = "), Fragment.encode(MariaTypes.text.nullable(), row.description), Fragment.lit(",\n`discount_type` = "), Fragment.encode(MariaTypes.text, row.discountType), Fragment.lit(",\n`discount_value` = "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, row.discountValue), Fragment.lit(",\n`min_order_amount` = "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric.nullable(), row.minOrderAmount), Fragment.lit(",\n`max_uses` = "), Fragment.encode(MariaTypes.intUnsigned.nullable(), row.maxUses), Fragment.lit(",\n`uses_count` = "), Fragment.encode(MariaTypes.intUnsigned, row.usesCount), Fragment.lit(",\n`max_uses_per_customer` = "), Fragment.encode(MariaTypes.tinyintUnsigned.nullable(), row.maxUsesPerCustomer), Fragment.lit(",\n`applicable_to` = "), Fragment.encode(AllBrandsCategoriesCSet.dbType.nullable(), row.applicableTo), Fragment.lit(",\n`rules_json` = "), Fragment.encode(MariaTypes.json.nullable(), row.rulesJson), Fragment.lit(",\n`valid_from` = "), Fragment.encode(MariaTypes.datetime, row.validFrom), Fragment.lit(",\n`valid_to` = "), Fragment.encode(MariaTypes.datetime, row.validTo), Fragment.lit(",\n`is_active` = "), Fragment.encode(KotlinDbTypes.MariaTypes.bool, row.isActive), Fragment.lit(",\n`created_at` = "), Fragment.encode(MariaTypes.datetime, row.createdAt), Fragment.lit("\nwhere `promotion_id` = "), Fragment.encode(PromotionsId.dbType, promotionId), Fragment.lit("")).update().runUnchecked(c) > 0 + return Fragment.interpolate(Fragment.lit("update `promotions`\nset `code` = "), Fragment.encode(MariaTypes.varchar, row.code), Fragment.lit(",\n`name` = "), Fragment.encode(MariaTypes.varchar, row.name), Fragment.lit(",\n`description` = "), Fragment.encode(MariaTypes.text.nullable(), row.description), Fragment.lit(",\n`discount_type` = "), Fragment.encode(MariaTypes.text, row.discountType), Fragment.lit(",\n`discount_value` = "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, row.discountValue), Fragment.lit(",\n`min_order_amount` = "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric.nullable(), row.minOrderAmount), Fragment.lit(",\n`max_uses` = "), Fragment.encode(MariaTypes.intUnsigned.nullable(), row.maxUses), Fragment.lit(",\n`uses_count` = "), Fragment.encode(MariaTypes.intUnsigned, row.usesCount), Fragment.lit(",\n`max_uses_per_customer` = "), Fragment.encode(MariaTypes.tinyintUnsigned.nullable(), row.maxUsesPerCustomer), Fragment.lit(",\n`applicable_to` = "), Fragment.encode(AllBrandsCategoriesCSet.mariaType.nullable(), row.applicableTo), Fragment.lit(",\n`rules_json` = "), Fragment.encode(MariaTypes.json.nullable(), row.rulesJson), Fragment.lit(",\n`valid_from` = "), Fragment.encode(MariaTypes.datetime, row.validFrom), Fragment.lit(",\n`valid_to` = "), Fragment.encode(MariaTypes.datetime, row.validTo), Fragment.lit(",\n`is_active` = "), Fragment.encode(IsActive.mariaType, row.isActive), Fragment.lit(",\n`created_at` = "), Fragment.encode(MariaTypes.datetime, row.createdAt), Fragment.lit("\nwhere `promotion_id` = "), Fragment.encode(PromotionsId.mariaType, promotionId), Fragment.lit("")).update().runUnchecked(c) > 0 } override fun upsert( unsaved: PromotionsRow, c: Connection - ): PromotionsRow = Fragment.interpolate(Fragment.lit("INSERT INTO `promotions`(`promotion_id`, `code`, `name`, `description`, `discount_type`, `discount_value`, `min_order_amount`, `max_uses`, `uses_count`, `max_uses_per_customer`, `applicable_to`, `rules_json`, `valid_from`, `valid_to`, `is_active`, `created_at`)\nVALUES ("), Fragment.encode(PromotionsId.dbType, unsaved.promotionId), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.code), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.name), Fragment.lit(", "), Fragment.encode(MariaTypes.text.nullable(), unsaved.description), Fragment.lit(", "), Fragment.encode(MariaTypes.text, unsaved.discountType), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, unsaved.discountValue), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric.nullable(), unsaved.minOrderAmount), Fragment.lit(", "), Fragment.encode(MariaTypes.intUnsigned.nullable(), unsaved.maxUses), Fragment.lit(", "), Fragment.encode(MariaTypes.intUnsigned, unsaved.usesCount), Fragment.lit(", "), Fragment.encode(MariaTypes.tinyintUnsigned.nullable(), unsaved.maxUsesPerCustomer), Fragment.lit(", "), Fragment.encode(AllBrandsCategoriesCSet.dbType.nullable(), unsaved.applicableTo), Fragment.lit(", "), Fragment.encode(MariaTypes.json.nullable(), unsaved.rulesJson), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.validFrom), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.validTo), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.bool, unsaved.isActive), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.createdAt), Fragment.lit(")\nON DUPLICATE KEY UPDATE `code` = VALUES(`code`),\n`name` = VALUES(`name`),\n`description` = VALUES(`description`),\n`discount_type` = VALUES(`discount_type`),\n`discount_value` = VALUES(`discount_value`),\n`min_order_amount` = VALUES(`min_order_amount`),\n`max_uses` = VALUES(`max_uses`),\n`uses_count` = VALUES(`uses_count`),\n`max_uses_per_customer` = VALUES(`max_uses_per_customer`),\n`applicable_to` = VALUES(`applicable_to`),\n`rules_json` = VALUES(`rules_json`),\n`valid_from` = VALUES(`valid_from`),\n`valid_to` = VALUES(`valid_to`),\n`is_active` = VALUES(`is_active`),\n`created_at` = VALUES(`created_at`)\nRETURNING `promotion_id`, `code`, `name`, `description`, `discount_type`, `discount_value`, `min_order_amount`, `max_uses`, `uses_count`, `max_uses_per_customer`, `applicable_to`, `rules_json`, `valid_from`, `valid_to`, `is_active`, `created_at`")) + ): PromotionsRow = Fragment.interpolate(Fragment.lit("INSERT INTO `promotions`(`promotion_id`, `code`, `name`, `description`, `discount_type`, `discount_value`, `min_order_amount`, `max_uses`, `uses_count`, `max_uses_per_customer`, `applicable_to`, `rules_json`, `valid_from`, `valid_to`, `is_active`, `created_at`)\nVALUES ("), Fragment.encode(PromotionsId.mariaType, unsaved.promotionId), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.code), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.name), Fragment.lit(", "), Fragment.encode(MariaTypes.text.nullable(), unsaved.description), Fragment.lit(", "), Fragment.encode(MariaTypes.text, unsaved.discountType), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, unsaved.discountValue), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric.nullable(), unsaved.minOrderAmount), Fragment.lit(", "), Fragment.encode(MariaTypes.intUnsigned.nullable(), unsaved.maxUses), Fragment.lit(", "), Fragment.encode(MariaTypes.intUnsigned, unsaved.usesCount), Fragment.lit(", "), Fragment.encode(MariaTypes.tinyintUnsigned.nullable(), unsaved.maxUsesPerCustomer), Fragment.lit(", "), Fragment.encode(AllBrandsCategoriesCSet.mariaType.nullable(), unsaved.applicableTo), Fragment.lit(", "), Fragment.encode(MariaTypes.json.nullable(), unsaved.rulesJson), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.validFrom), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.validTo), Fragment.lit(", "), Fragment.encode(IsActive.mariaType, unsaved.isActive), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.createdAt), Fragment.lit(")\nON DUPLICATE KEY UPDATE `code` = VALUES(`code`),\n`name` = VALUES(`name`),\n`description` = VALUES(`description`),\n`discount_type` = VALUES(`discount_type`),\n`discount_value` = VALUES(`discount_value`),\n`min_order_amount` = VALUES(`min_order_amount`),\n`max_uses` = VALUES(`max_uses`),\n`uses_count` = VALUES(`uses_count`),\n`max_uses_per_customer` = VALUES(`max_uses_per_customer`),\n`applicable_to` = VALUES(`applicable_to`),\n`rules_json` = VALUES(`rules_json`),\n`valid_from` = VALUES(`valid_from`),\n`valid_to` = VALUES(`valid_to`),\n`is_active` = VALUES(`is_active`),\n`created_at` = VALUES(`created_at`)\nRETURNING `promotion_id`, `code`, `name`, `description`, `discount_type`, `discount_value`, `min_order_amount`, `max_uses`, `uses_count`, `max_uses_per_customer`, `applicable_to`, `rules_json`, `valid_from`, `valid_to`, `is_active`, `created_at`")) .updateReturning(PromotionsRow._rowParser.exactlyOne()) .runUnchecked(c) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/promotions/PromotionsRow.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/promotions/PromotionsRow.kt index 6d656de673..41542243ad 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/promotions/PromotionsRow.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/promotions/PromotionsRow.kt @@ -19,6 +19,7 @@ import java.math.BigDecimal import java.time.LocalDateTime import testdb.AllBrandsCategoriesCSet import testdb.customtypes.Defaulted +import testdb.userdefined.IsActive /** Table: promotions * Primary key: promotion_id @@ -71,12 +72,12 @@ data class PromotionsRow( /** * Default: 1 */ - @field:JsonProperty("is_active") val isActive: Boolean, + @field:JsonProperty("is_active") val isActive: /* user-picked */ IsActive, /** * Default: current_timestamp() */ @field:JsonProperty("created_at") val createdAt: LocalDateTime -) : Tuple16 { +) : Tuple16 { override fun _1(): PromotionsId = promotionId override fun _10(): Uint1? = maxUsesPerCustomer @@ -89,7 +90,7 @@ data class PromotionsRow( override fun _14(): LocalDateTime = validTo - override fun _15(): Boolean = isActive + override fun _15(): /* user-picked */ IsActive = isActive override fun _16(): LocalDateTime = createdAt @@ -119,11 +120,11 @@ data class PromotionsRow( maxUsesPerCustomer: Defaulted = Defaulted.Provided(this.maxUsesPerCustomer), applicableTo: Defaulted = Defaulted.Provided(this.applicableTo), rulesJson: Defaulted = Defaulted.Provided(this.rulesJson), - isActive: Defaulted = Defaulted.Provided(this.isActive), + isActive: Defaulted = Defaulted.Provided(this.isActive), createdAt: Defaulted = Defaulted.Provided(this.createdAt) ): PromotionsRowUnsaved = PromotionsRowUnsaved(code, name, discountType, discountValue, validFrom, validTo, description, minOrderAmount, maxUses, usesCount, maxUsesPerCustomer, applicableTo, rulesJson, isActive, createdAt) companion object { - val _rowParser: RowParser = RowParsers.of(PromotionsId.dbType, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.text.nullable(), MariaTypes.text, KotlinDbTypes.MariaTypes.numeric, KotlinDbTypes.MariaTypes.numeric.nullable(), MariaTypes.intUnsigned.nullable(), MariaTypes.intUnsigned, MariaTypes.tinyintUnsigned.nullable(), AllBrandsCategoriesCSet.dbType.nullable(), MariaTypes.json.nullable(), MariaTypes.datetime, MariaTypes.datetime, KotlinDbTypes.MariaTypes.bool, MariaTypes.datetime, { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15 -> PromotionsRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15) }, { row -> arrayOf(row.promotionId, row.code, row.name, row.description, row.discountType, row.discountValue, row.minOrderAmount, row.maxUses, row.usesCount, row.maxUsesPerCustomer, row.applicableTo, row.rulesJson, row.validFrom, row.validTo, row.isActive, row.createdAt) }) + val _rowParser: RowParser = RowParsers.of(PromotionsId.mariaType, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.text.nullable(), MariaTypes.text, KotlinDbTypes.MariaTypes.numeric, KotlinDbTypes.MariaTypes.numeric.nullable(), MariaTypes.intUnsigned.nullable(), MariaTypes.intUnsigned, MariaTypes.tinyintUnsigned.nullable(), AllBrandsCategoriesCSet.mariaType.nullable(), MariaTypes.json.nullable(), MariaTypes.datetime, MariaTypes.datetime, IsActive.mariaType, MariaTypes.datetime, { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15 -> PromotionsRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15) }, { row -> arrayOf(row.promotionId, row.code, row.name, row.description, row.discountType, row.discountValue, row.minOrderAmount, row.maxUses, row.usesCount, row.maxUsesPerCustomer, row.applicableTo, row.rulesJson, row.validFrom, row.validTo, row.isActive, row.createdAt) }) } } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/promotions/PromotionsRowUnsaved.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/promotions/PromotionsRowUnsaved.kt index 6a87e8349e..314f02d0c2 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/promotions/PromotionsRowUnsaved.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/promotions/PromotionsRowUnsaved.kt @@ -14,6 +14,7 @@ import java.time.LocalDateTime import testdb.AllBrandsCategoriesCSet import testdb.customtypes.Defaulted import testdb.customtypes.Defaulted.UseDefault +import testdb.userdefined.IsActive /** This class corresponds to a row in table `promotions` which has not been persisted yet */ data class PromotionsRowUnsaved( @@ -60,7 +61,7 @@ data class PromotionsRowUnsaved( /** Default: 1 */ - @field:JsonProperty("is_active") val isActive: Defaulted = UseDefault(), + @field:JsonProperty("is_active") val isActive: Defaulted = UseDefault(), /** Default: current_timestamp() */ @@ -74,7 +75,7 @@ data class PromotionsRowUnsaved( maxUsesPerCustomerDefault: () -> Uint1?, applicableToDefault: () -> AllBrandsCategoriesCSet?, rulesJsonDefault: () -> Json?, - isActiveDefault: () -> Boolean, + isActiveDefault: () -> /* user-picked */ IsActive, createdAtDefault: () -> LocalDateTime, promotionIdDefault: () -> PromotionsId ): PromotionsRow = PromotionsRow(promotionId = promotionIdDefault(), code = code, name = name, description = description.getOrElse(descriptionDefault), discountType = discountType, discountValue = discountValue, minOrderAmount = minOrderAmount.getOrElse(minOrderAmountDefault), maxUses = maxUses.getOrElse(maxUsesDefault), usesCount = usesCount.getOrElse(usesCountDefault), maxUsesPerCustomer = maxUsesPerCustomer.getOrElse(maxUsesPerCustomerDefault), applicableTo = applicableTo.getOrElse(applicableToDefault), rulesJson = rulesJson.getOrElse(rulesJsonDefault), validFrom = validFrom, validTo = validTo, isActive = isActive.getOrElse(isActiveDefault), createdAt = createdAt.getOrElse(createdAtDefault)) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/reviews/ReviewsFields.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/reviews/ReviewsFields.kt index 99be56b1c3..281978dcf8 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/reviews/ReviewsFields.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/reviews/ReviewsFields.kt @@ -14,7 +14,6 @@ import dev.typr.foundations.dsl.FieldsBase import dev.typr.foundations.dsl.Path import dev.typr.foundations.dsl.SqlExpr.FieldLike import dev.typr.foundations.kotlin.ForeignKey -import dev.typr.foundations.kotlin.KotlinDbTypes import dev.typr.foundations.kotlin.RelationStructure import dev.typr.foundations.kotlin.SqlExpr import dev.typr.foundations.kotlin.SqlExpr.Field @@ -32,15 +31,17 @@ import testdb.order_items.OrderItemsRow import testdb.products.ProductsFields import testdb.products.ProductsId import testdb.products.ProductsRow +import testdb.userdefined.IsApproved +import testdb.userdefined.IsVerifiedPurchase -data class ReviewsFields(val _path: List) : TupleExpr18, RelationStructure, FieldsBase { +data class ReviewsFields(val _path: List) : TupleExpr18, RelationStructure, FieldsBase { override fun _1(): SqlExpr = reviewId() override fun _10(): SqlExpr = images() - override fun _11(): SqlExpr = isVerifiedPurchase() + override fun _11(): SqlExpr = isVerifiedPurchase() - override fun _12(): SqlExpr = isApproved() + override fun _12(): SqlExpr = isApproved() override fun _13(): SqlExpr = helpfulVotes() @@ -82,7 +83,7 @@ data class ReviewsFields(val _path: List) : TupleExpr18 = Field(_path, "created_at", ReviewsRow::createdAt, null, null, { row, value -> row.copy(createdAt = value) }, MariaTypes.datetime) - fun customerId(): Field = Field(_path, "customer_id", ReviewsRow::customerId, null, null, { row, value -> row.copy(customerId = value) }, CustomersId.dbType) + fun customerId(): Field = Field(_path, "customer_id", ReviewsRow::customerId, null, null, { row, value -> row.copy(customerId = value) }, CustomersId.mariaType) fun fkCustomers(): ForeignKey = ForeignKey.of("fk_rev_customer").withColumnPair(customerId(), CustomersFields::customerId) @@ -94,13 +95,13 @@ data class ReviewsFields(val _path: List) : TupleExpr18 = OptField(_path, "images", ReviewsRow::images, null, null, { row, value -> row.copy(images = value) }, MariaTypes.json) - fun isApproved(): Field = Field(_path, "is_approved", ReviewsRow::isApproved, null, null, { row, value -> row.copy(isApproved = value) }, KotlinDbTypes.MariaTypes.bool) + fun isApproved(): Field = Field(_path, "is_approved", ReviewsRow::isApproved, null, null, { row, value -> row.copy(isApproved = value) }, IsApproved.mariaType) - fun isVerifiedPurchase(): Field = Field(_path, "is_verified_purchase", ReviewsRow::isVerifiedPurchase, null, null, { row, value -> row.copy(isVerifiedPurchase = value) }, KotlinDbTypes.MariaTypes.bool) + fun isVerifiedPurchase(): Field = Field(_path, "is_verified_purchase", ReviewsRow::isVerifiedPurchase, null, null, { row, value -> row.copy(isVerifiedPurchase = value) }, IsVerifiedPurchase.mariaType) - fun orderItemId(): OptField = OptField(_path, "order_item_id", ReviewsRow::orderItemId, null, null, { row, value -> row.copy(orderItemId = value) }, OrderItemsId.dbType) + fun orderItemId(): OptField = OptField(_path, "order_item_id", ReviewsRow::orderItemId, null, null, { row, value -> row.copy(orderItemId = value) }, OrderItemsId.mariaType) - fun productId(): Field = Field(_path, "product_id", ReviewsRow::productId, null, null, { row, value -> row.copy(productId = value) }, ProductsId.dbType) + fun productId(): Field = Field(_path, "product_id", ReviewsRow::productId, null, null, { row, value -> row.copy(productId = value) }, ProductsId.mariaType) fun pros(): OptField = OptField(_path, "pros", ReviewsRow::pros, null, null, { row, value -> row.copy(pros = value) }, MariaTypes.json) @@ -108,7 +109,7 @@ data class ReviewsFields(val _path: List) : TupleExpr18 = OptField(_path, "responded_at", ReviewsRow::respondedAt, null, null, { row, value -> row.copy(respondedAt = value) }, MariaTypes.datetime) - fun reviewId(): IdField = IdField(_path, "review_id", ReviewsRow::reviewId, null, null, { row, value -> row.copy(reviewId = value) }, ReviewsId.dbType) + fun reviewId(): IdField = IdField(_path, "review_id", ReviewsRow::reviewId, null, null, { row, value -> row.copy(reviewId = value) }, ReviewsId.mariaType) override fun rowParser(): RowParser = ReviewsRow._rowParser.underlying diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/reviews/ReviewsId.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/reviews/ReviewsId.kt index 406e3fe43c..30e82afcef 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/reviews/ReviewsId.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/reviews/ReviewsId.kt @@ -21,7 +21,7 @@ data class ReviewsId(@field:JsonValue val value: Uint8) { val bijection: Bijection = Bijection.of(ReviewsId::value, ::ReviewsId) - val dbType: MariaType = + val mariaType: MariaType = MariaTypes.bigintUnsigned.bimap(::ReviewsId, ReviewsId::value) } } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/reviews/ReviewsRepoImpl.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/reviews/ReviewsRepoImpl.kt index d42fbf3bbd..ea202ed433 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/reviews/ReviewsRepoImpl.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/reviews/ReviewsRepoImpl.kt @@ -9,7 +9,6 @@ import dev.typr.foundations.MariaTypes import dev.typr.foundations.kotlin.DeleteBuilder import dev.typr.foundations.kotlin.Dialect import dev.typr.foundations.kotlin.Fragment -import dev.typr.foundations.kotlin.KotlinDbTypes import dev.typr.foundations.kotlin.SelectBuilder import dev.typr.foundations.kotlin.UpdateBuilder import dev.typr.foundations.kotlin.nullable @@ -22,6 +21,8 @@ import kotlin.collections.MutableMap import testdb.customers.CustomersId import testdb.order_items.OrderItemsId import testdb.products.ProductsId +import testdb.userdefined.IsApproved +import testdb.userdefined.IsVerifiedPurchase class ReviewsRepoImpl() : ReviewsRepo { override fun delete(): DeleteBuilder = DeleteBuilder.of("`reviews`", ReviewsFields.structure, Dialect.MARIADB) @@ -29,21 +30,21 @@ class ReviewsRepoImpl() : ReviewsRepo { override fun deleteById( reviewId: ReviewsId, c: Connection - ): Boolean = Fragment.interpolate(Fragment.lit("delete from `reviews` where `review_id` = "), Fragment.encode(ReviewsId.dbType, reviewId), Fragment.lit("")).update().runUnchecked(c) > 0 + ): Boolean = Fragment.interpolate(Fragment.lit("delete from `reviews` where `review_id` = "), Fragment.encode(ReviewsId.mariaType, reviewId), Fragment.lit("")).update().runUnchecked(c) > 0 override fun deleteByIds( reviewIds: Array, c: Connection ): Int { val fragments: ArrayList = ArrayList() - for (id in reviewIds) { fragments.add(Fragment.encode(ReviewsId.dbType, id)) } + for (id in reviewIds) { fragments.add(Fragment.encode(ReviewsId.mariaType, id)) } return Fragment.interpolate(Fragment.lit("delete from `reviews` where `review_id` in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).update().runUnchecked(c) } override fun insert( unsaved: ReviewsRow, c: Connection - ): ReviewsRow = Fragment.interpolate(Fragment.lit("insert into `reviews`(`product_id`, `customer_id`, `order_item_id`, `rating`, `title`, `content`, `pros`, `cons`, `images`, `is_verified_purchase`, `is_approved`, `helpful_votes`, `unhelpful_votes`, `admin_response`, `responded_at`, `created_at`, `updated_at`)\nvalues ("), Fragment.encode(ProductsId.dbType, unsaved.productId), Fragment.lit(", "), Fragment.encode(CustomersId.dbType, unsaved.customerId), Fragment.lit(", "), Fragment.encode(OrderItemsId.dbType.nullable(), unsaved.orderItemId), Fragment.lit(", "), Fragment.encode(MariaTypes.tinyintUnsigned, unsaved.rating), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.title), Fragment.lit(", "), Fragment.encode(MariaTypes.text.nullable(), unsaved.content), Fragment.lit(", "), Fragment.encode(MariaTypes.json.nullable(), unsaved.pros), Fragment.lit(", "), Fragment.encode(MariaTypes.json.nullable(), unsaved.cons), Fragment.lit(", "), Fragment.encode(MariaTypes.json.nullable(), unsaved.images), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.bool, unsaved.isVerifiedPurchase), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.bool, unsaved.isApproved), Fragment.lit(", "), Fragment.encode(MariaTypes.intUnsigned, unsaved.helpfulVotes), Fragment.lit(", "), Fragment.encode(MariaTypes.intUnsigned, unsaved.unhelpfulVotes), Fragment.lit(", "), Fragment.encode(MariaTypes.text.nullable(), unsaved.adminResponse), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime.nullable(), unsaved.respondedAt), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.createdAt), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.updatedAt), Fragment.lit(")\nRETURNING `review_id`, `product_id`, `customer_id`, `order_item_id`, `rating`, `title`, `content`, `pros`, `cons`, `images`, `is_verified_purchase`, `is_approved`, `helpful_votes`, `unhelpful_votes`, `admin_response`, `responded_at`, `created_at`, `updated_at`\n")) + ): ReviewsRow = Fragment.interpolate(Fragment.lit("insert into `reviews`(`product_id`, `customer_id`, `order_item_id`, `rating`, `title`, `content`, `pros`, `cons`, `images`, `is_verified_purchase`, `is_approved`, `helpful_votes`, `unhelpful_votes`, `admin_response`, `responded_at`, `created_at`, `updated_at`)\nvalues ("), Fragment.encode(ProductsId.mariaType, unsaved.productId), Fragment.lit(", "), Fragment.encode(CustomersId.mariaType, unsaved.customerId), Fragment.lit(", "), Fragment.encode(OrderItemsId.mariaType.nullable(), unsaved.orderItemId), Fragment.lit(", "), Fragment.encode(MariaTypes.tinyintUnsigned, unsaved.rating), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.title), Fragment.lit(", "), Fragment.encode(MariaTypes.text.nullable(), unsaved.content), Fragment.lit(", "), Fragment.encode(MariaTypes.json.nullable(), unsaved.pros), Fragment.lit(", "), Fragment.encode(MariaTypes.json.nullable(), unsaved.cons), Fragment.lit(", "), Fragment.encode(MariaTypes.json.nullable(), unsaved.images), Fragment.lit(", "), Fragment.encode(IsVerifiedPurchase.mariaType, unsaved.isVerifiedPurchase), Fragment.lit(", "), Fragment.encode(IsApproved.mariaType, unsaved.isApproved), Fragment.lit(", "), Fragment.encode(MariaTypes.intUnsigned, unsaved.helpfulVotes), Fragment.lit(", "), Fragment.encode(MariaTypes.intUnsigned, unsaved.unhelpfulVotes), Fragment.lit(", "), Fragment.encode(MariaTypes.text.nullable(), unsaved.adminResponse), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime.nullable(), unsaved.respondedAt), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.createdAt), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.updatedAt), Fragment.lit(")\nRETURNING `review_id`, `product_id`, `customer_id`, `order_item_id`, `rating`, `title`, `content`, `pros`, `cons`, `images`, `is_verified_purchase`, `is_approved`, `helpful_votes`, `unhelpful_votes`, `admin_response`, `responded_at`, `created_at`, `updated_at`\n")) .updateReturning(ReviewsRow._rowParser.exactlyOne()).runUnchecked(c) override fun insert( @@ -53,15 +54,15 @@ class ReviewsRepoImpl() : ReviewsRepo { val columns: ArrayList = ArrayList() val values: ArrayList = ArrayList() columns.add(Fragment.lit("`product_id`")) - values.add(Fragment.interpolate(Fragment.encode(ProductsId.dbType, unsaved.productId), Fragment.lit(""))) + values.add(Fragment.interpolate(Fragment.encode(ProductsId.mariaType, unsaved.productId), Fragment.lit(""))) columns.add(Fragment.lit("`customer_id`")) - values.add(Fragment.interpolate(Fragment.encode(CustomersId.dbType, unsaved.customerId), Fragment.lit(""))) + values.add(Fragment.interpolate(Fragment.encode(CustomersId.mariaType, unsaved.customerId), Fragment.lit(""))) columns.add(Fragment.lit("`rating`")) values.add(Fragment.interpolate(Fragment.encode(MariaTypes.tinyintUnsigned, unsaved.rating), Fragment.lit(""))) unsaved.orderItemId.visit( { }, { value -> columns.add(Fragment.lit("`order_item_id`")) - values.add(Fragment.interpolate(Fragment.encode(OrderItemsId.dbType.nullable(), value), Fragment.lit(""))) } + values.add(Fragment.interpolate(Fragment.encode(OrderItemsId.mariaType.nullable(), value), Fragment.lit(""))) } ); unsaved.title.visit( { }, @@ -91,12 +92,12 @@ class ReviewsRepoImpl() : ReviewsRepo { unsaved.isVerifiedPurchase.visit( { }, { value -> columns.add(Fragment.lit("`is_verified_purchase`")) - values.add(Fragment.interpolate(Fragment.encode(KotlinDbTypes.MariaTypes.bool, value), Fragment.lit(""))) } + values.add(Fragment.interpolate(Fragment.encode(IsVerifiedPurchase.mariaType, value), Fragment.lit(""))) } ); unsaved.isApproved.visit( { }, { value -> columns.add(Fragment.lit("`is_approved`")) - values.add(Fragment.interpolate(Fragment.encode(KotlinDbTypes.MariaTypes.bool, value), Fragment.lit(""))) } + values.add(Fragment.interpolate(Fragment.encode(IsApproved.mariaType, value), Fragment.lit(""))) } ); unsaved.helpfulVotes.visit( { }, @@ -139,14 +140,14 @@ class ReviewsRepoImpl() : ReviewsRepo { override fun selectById( reviewId: ReviewsId, c: Connection - ): ReviewsRow? = Fragment.interpolate(Fragment.lit("select `review_id`, `product_id`, `customer_id`, `order_item_id`, `rating`, `title`, `content`, `pros`, `cons`, `images`, `is_verified_purchase`, `is_approved`, `helpful_votes`, `unhelpful_votes`, `admin_response`, `responded_at`, `created_at`, `updated_at`\nfrom `reviews`\nwhere `review_id` = "), Fragment.encode(ReviewsId.dbType, reviewId), Fragment.lit("")).query(ReviewsRow._rowParser.first()).runUnchecked(c) + ): ReviewsRow? = Fragment.interpolate(Fragment.lit("select `review_id`, `product_id`, `customer_id`, `order_item_id`, `rating`, `title`, `content`, `pros`, `cons`, `images`, `is_verified_purchase`, `is_approved`, `helpful_votes`, `unhelpful_votes`, `admin_response`, `responded_at`, `created_at`, `updated_at`\nfrom `reviews`\nwhere `review_id` = "), Fragment.encode(ReviewsId.mariaType, reviewId), Fragment.lit("")).query(ReviewsRow._rowParser.first()).runUnchecked(c) override fun selectByIds( reviewIds: Array, c: Connection ): List { val fragments: ArrayList = ArrayList() - for (id in reviewIds) { fragments.add(Fragment.encode(ReviewsId.dbType, id)) } + for (id in reviewIds) { fragments.add(Fragment.encode(ReviewsId.mariaType, id)) } return Fragment.interpolate(Fragment.lit("select `review_id`, `product_id`, `customer_id`, `order_item_id`, `rating`, `title`, `content`, `pros`, `cons`, `images`, `is_verified_purchase`, `is_approved`, `helpful_votes`, `unhelpful_votes`, `admin_response`, `responded_at`, `created_at`, `updated_at` from `reviews` where `review_id` in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).query(ReviewsRow._rowParser.all()).runUnchecked(c) } @@ -166,13 +167,13 @@ class ReviewsRepoImpl() : ReviewsRepo { c: Connection ): Boolean { val reviewId: ReviewsId = row.reviewId - return Fragment.interpolate(Fragment.lit("update `reviews`\nset `product_id` = "), Fragment.encode(ProductsId.dbType, row.productId), Fragment.lit(",\n`customer_id` = "), Fragment.encode(CustomersId.dbType, row.customerId), Fragment.lit(",\n`order_item_id` = "), Fragment.encode(OrderItemsId.dbType.nullable(), row.orderItemId), Fragment.lit(",\n`rating` = "), Fragment.encode(MariaTypes.tinyintUnsigned, row.rating), Fragment.lit(",\n`title` = "), Fragment.encode(MariaTypes.varchar.nullable(), row.title), Fragment.lit(",\n`content` = "), Fragment.encode(MariaTypes.text.nullable(), row.content), Fragment.lit(",\n`pros` = "), Fragment.encode(MariaTypes.json.nullable(), row.pros), Fragment.lit(",\n`cons` = "), Fragment.encode(MariaTypes.json.nullable(), row.cons), Fragment.lit(",\n`images` = "), Fragment.encode(MariaTypes.json.nullable(), row.images), Fragment.lit(",\n`is_verified_purchase` = "), Fragment.encode(KotlinDbTypes.MariaTypes.bool, row.isVerifiedPurchase), Fragment.lit(",\n`is_approved` = "), Fragment.encode(KotlinDbTypes.MariaTypes.bool, row.isApproved), Fragment.lit(",\n`helpful_votes` = "), Fragment.encode(MariaTypes.intUnsigned, row.helpfulVotes), Fragment.lit(",\n`unhelpful_votes` = "), Fragment.encode(MariaTypes.intUnsigned, row.unhelpfulVotes), Fragment.lit(",\n`admin_response` = "), Fragment.encode(MariaTypes.text.nullable(), row.adminResponse), Fragment.lit(",\n`responded_at` = "), Fragment.encode(MariaTypes.datetime.nullable(), row.respondedAt), Fragment.lit(",\n`created_at` = "), Fragment.encode(MariaTypes.datetime, row.createdAt), Fragment.lit(",\n`updated_at` = "), Fragment.encode(MariaTypes.datetime, row.updatedAt), Fragment.lit("\nwhere `review_id` = "), Fragment.encode(ReviewsId.dbType, reviewId), Fragment.lit("")).update().runUnchecked(c) > 0 + return Fragment.interpolate(Fragment.lit("update `reviews`\nset `product_id` = "), Fragment.encode(ProductsId.mariaType, row.productId), Fragment.lit(",\n`customer_id` = "), Fragment.encode(CustomersId.mariaType, row.customerId), Fragment.lit(",\n`order_item_id` = "), Fragment.encode(OrderItemsId.mariaType.nullable(), row.orderItemId), Fragment.lit(",\n`rating` = "), Fragment.encode(MariaTypes.tinyintUnsigned, row.rating), Fragment.lit(",\n`title` = "), Fragment.encode(MariaTypes.varchar.nullable(), row.title), Fragment.lit(",\n`content` = "), Fragment.encode(MariaTypes.text.nullable(), row.content), Fragment.lit(",\n`pros` = "), Fragment.encode(MariaTypes.json.nullable(), row.pros), Fragment.lit(",\n`cons` = "), Fragment.encode(MariaTypes.json.nullable(), row.cons), Fragment.lit(",\n`images` = "), Fragment.encode(MariaTypes.json.nullable(), row.images), Fragment.lit(",\n`is_verified_purchase` = "), Fragment.encode(IsVerifiedPurchase.mariaType, row.isVerifiedPurchase), Fragment.lit(",\n`is_approved` = "), Fragment.encode(IsApproved.mariaType, row.isApproved), Fragment.lit(",\n`helpful_votes` = "), Fragment.encode(MariaTypes.intUnsigned, row.helpfulVotes), Fragment.lit(",\n`unhelpful_votes` = "), Fragment.encode(MariaTypes.intUnsigned, row.unhelpfulVotes), Fragment.lit(",\n`admin_response` = "), Fragment.encode(MariaTypes.text.nullable(), row.adminResponse), Fragment.lit(",\n`responded_at` = "), Fragment.encode(MariaTypes.datetime.nullable(), row.respondedAt), Fragment.lit(",\n`created_at` = "), Fragment.encode(MariaTypes.datetime, row.createdAt), Fragment.lit(",\n`updated_at` = "), Fragment.encode(MariaTypes.datetime, row.updatedAt), Fragment.lit("\nwhere `review_id` = "), Fragment.encode(ReviewsId.mariaType, reviewId), Fragment.lit("")).update().runUnchecked(c) > 0 } override fun upsert( unsaved: ReviewsRow, c: Connection - ): ReviewsRow = Fragment.interpolate(Fragment.lit("INSERT INTO `reviews`(`review_id`, `product_id`, `customer_id`, `order_item_id`, `rating`, `title`, `content`, `pros`, `cons`, `images`, `is_verified_purchase`, `is_approved`, `helpful_votes`, `unhelpful_votes`, `admin_response`, `responded_at`, `created_at`, `updated_at`)\nVALUES ("), Fragment.encode(ReviewsId.dbType, unsaved.reviewId), Fragment.lit(", "), Fragment.encode(ProductsId.dbType, unsaved.productId), Fragment.lit(", "), Fragment.encode(CustomersId.dbType, unsaved.customerId), Fragment.lit(", "), Fragment.encode(OrderItemsId.dbType.nullable(), unsaved.orderItemId), Fragment.lit(", "), Fragment.encode(MariaTypes.tinyintUnsigned, unsaved.rating), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.title), Fragment.lit(", "), Fragment.encode(MariaTypes.text.nullable(), unsaved.content), Fragment.lit(", "), Fragment.encode(MariaTypes.json.nullable(), unsaved.pros), Fragment.lit(", "), Fragment.encode(MariaTypes.json.nullable(), unsaved.cons), Fragment.lit(", "), Fragment.encode(MariaTypes.json.nullable(), unsaved.images), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.bool, unsaved.isVerifiedPurchase), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.bool, unsaved.isApproved), Fragment.lit(", "), Fragment.encode(MariaTypes.intUnsigned, unsaved.helpfulVotes), Fragment.lit(", "), Fragment.encode(MariaTypes.intUnsigned, unsaved.unhelpfulVotes), Fragment.lit(", "), Fragment.encode(MariaTypes.text.nullable(), unsaved.adminResponse), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime.nullable(), unsaved.respondedAt), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.createdAt), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.updatedAt), Fragment.lit(")\nON DUPLICATE KEY UPDATE `product_id` = VALUES(`product_id`),\n`customer_id` = VALUES(`customer_id`),\n`order_item_id` = VALUES(`order_item_id`),\n`rating` = VALUES(`rating`),\n`title` = VALUES(`title`),\n`content` = VALUES(`content`),\n`pros` = VALUES(`pros`),\n`cons` = VALUES(`cons`),\n`images` = VALUES(`images`),\n`is_verified_purchase` = VALUES(`is_verified_purchase`),\n`is_approved` = VALUES(`is_approved`),\n`helpful_votes` = VALUES(`helpful_votes`),\n`unhelpful_votes` = VALUES(`unhelpful_votes`),\n`admin_response` = VALUES(`admin_response`),\n`responded_at` = VALUES(`responded_at`),\n`created_at` = VALUES(`created_at`),\n`updated_at` = VALUES(`updated_at`)\nRETURNING `review_id`, `product_id`, `customer_id`, `order_item_id`, `rating`, `title`, `content`, `pros`, `cons`, `images`, `is_verified_purchase`, `is_approved`, `helpful_votes`, `unhelpful_votes`, `admin_response`, `responded_at`, `created_at`, `updated_at`")) + ): ReviewsRow = Fragment.interpolate(Fragment.lit("INSERT INTO `reviews`(`review_id`, `product_id`, `customer_id`, `order_item_id`, `rating`, `title`, `content`, `pros`, `cons`, `images`, `is_verified_purchase`, `is_approved`, `helpful_votes`, `unhelpful_votes`, `admin_response`, `responded_at`, `created_at`, `updated_at`)\nVALUES ("), Fragment.encode(ReviewsId.mariaType, unsaved.reviewId), Fragment.lit(", "), Fragment.encode(ProductsId.mariaType, unsaved.productId), Fragment.lit(", "), Fragment.encode(CustomersId.mariaType, unsaved.customerId), Fragment.lit(", "), Fragment.encode(OrderItemsId.mariaType.nullable(), unsaved.orderItemId), Fragment.lit(", "), Fragment.encode(MariaTypes.tinyintUnsigned, unsaved.rating), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.title), Fragment.lit(", "), Fragment.encode(MariaTypes.text.nullable(), unsaved.content), Fragment.lit(", "), Fragment.encode(MariaTypes.json.nullable(), unsaved.pros), Fragment.lit(", "), Fragment.encode(MariaTypes.json.nullable(), unsaved.cons), Fragment.lit(", "), Fragment.encode(MariaTypes.json.nullable(), unsaved.images), Fragment.lit(", "), Fragment.encode(IsVerifiedPurchase.mariaType, unsaved.isVerifiedPurchase), Fragment.lit(", "), Fragment.encode(IsApproved.mariaType, unsaved.isApproved), Fragment.lit(", "), Fragment.encode(MariaTypes.intUnsigned, unsaved.helpfulVotes), Fragment.lit(", "), Fragment.encode(MariaTypes.intUnsigned, unsaved.unhelpfulVotes), Fragment.lit(", "), Fragment.encode(MariaTypes.text.nullable(), unsaved.adminResponse), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime.nullable(), unsaved.respondedAt), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.createdAt), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.updatedAt), Fragment.lit(")\nON DUPLICATE KEY UPDATE `product_id` = VALUES(`product_id`),\n`customer_id` = VALUES(`customer_id`),\n`order_item_id` = VALUES(`order_item_id`),\n`rating` = VALUES(`rating`),\n`title` = VALUES(`title`),\n`content` = VALUES(`content`),\n`pros` = VALUES(`pros`),\n`cons` = VALUES(`cons`),\n`images` = VALUES(`images`),\n`is_verified_purchase` = VALUES(`is_verified_purchase`),\n`is_approved` = VALUES(`is_approved`),\n`helpful_votes` = VALUES(`helpful_votes`),\n`unhelpful_votes` = VALUES(`unhelpful_votes`),\n`admin_response` = VALUES(`admin_response`),\n`responded_at` = VALUES(`responded_at`),\n`created_at` = VALUES(`created_at`),\n`updated_at` = VALUES(`updated_at`)\nRETURNING `review_id`, `product_id`, `customer_id`, `order_item_id`, `rating`, `title`, `content`, `pros`, `cons`, `images`, `is_verified_purchase`, `is_approved`, `helpful_votes`, `unhelpful_votes`, `admin_response`, `responded_at`, `created_at`, `updated_at`")) .updateReturning(ReviewsRow._rowParser.exactlyOne()) .runUnchecked(c) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/reviews/ReviewsRow.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/reviews/ReviewsRow.kt index 25c9adcbfa..38d1a013ac 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/reviews/ReviewsRow.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/reviews/ReviewsRow.kt @@ -11,7 +11,6 @@ import dev.typr.foundations.Tuple.Tuple18 import dev.typr.foundations.data.Json import dev.typr.foundations.data.Uint1 import dev.typr.foundations.data.Uint4 -import dev.typr.foundations.kotlin.KotlinDbTypes import dev.typr.foundations.kotlin.RowParser import dev.typr.foundations.kotlin.RowParsers import dev.typr.foundations.kotlin.nullable @@ -20,6 +19,8 @@ import testdb.customers.CustomersId import testdb.customtypes.Defaulted import testdb.order_items.OrderItemsId import testdb.products.ProductsId +import testdb.userdefined.IsApproved +import testdb.userdefined.IsVerifiedPurchase /** Table: reviews * Primary key: review_id @@ -67,11 +68,11 @@ data class ReviewsRow( /** * Default: 0 */ - @field:JsonProperty("is_verified_purchase") val isVerifiedPurchase: Boolean, + @field:JsonProperty("is_verified_purchase") val isVerifiedPurchase: /* user-picked */ IsVerifiedPurchase, /** * Default: 0 */ - @field:JsonProperty("is_approved") val isApproved: Boolean, + @field:JsonProperty("is_approved") val isApproved: /* user-picked */ IsApproved, /** * Default: 0 */ @@ -96,14 +97,14 @@ data class ReviewsRow( * Default: current_timestamp(6) */ @field:JsonProperty("updated_at") val updatedAt: LocalDateTime -) : Tuple18 { +) : Tuple18 { override fun _1(): ReviewsId = reviewId override fun _10(): Json? = images - override fun _11(): Boolean = isVerifiedPurchase + override fun _11(): /* user-picked */ IsVerifiedPurchase = isVerifiedPurchase - override fun _12(): Boolean = isApproved + override fun _12(): /* user-picked */ IsApproved = isApproved override fun _13(): Uint4 = helpfulVotes @@ -142,8 +143,8 @@ data class ReviewsRow( pros: Defaulted = Defaulted.Provided(this.pros), cons: Defaulted = Defaulted.Provided(this.cons), images: Defaulted = Defaulted.Provided(this.images), - isVerifiedPurchase: Defaulted = Defaulted.Provided(this.isVerifiedPurchase), - isApproved: Defaulted = Defaulted.Provided(this.isApproved), + isVerifiedPurchase: Defaulted = Defaulted.Provided(this.isVerifiedPurchase), + isApproved: Defaulted = Defaulted.Provided(this.isApproved), helpfulVotes: Defaulted = Defaulted.Provided(this.helpfulVotes), unhelpfulVotes: Defaulted = Defaulted.Provided(this.unhelpfulVotes), adminResponse: Defaulted = Defaulted.Provided(this.adminResponse), @@ -153,6 +154,6 @@ data class ReviewsRow( ): ReviewsRowUnsaved = ReviewsRowUnsaved(productId, customerId, rating, orderItemId, title, content, pros, cons, images, isVerifiedPurchase, isApproved, helpfulVotes, unhelpfulVotes, adminResponse, respondedAt, createdAt, updatedAt) companion object { - val _rowParser: RowParser = RowParsers.of(ReviewsId.dbType, ProductsId.dbType, CustomersId.dbType, OrderItemsId.dbType.nullable(), MariaTypes.tinyintUnsigned, MariaTypes.varchar.nullable(), MariaTypes.text.nullable(), MariaTypes.json.nullable(), MariaTypes.json.nullable(), MariaTypes.json.nullable(), KotlinDbTypes.MariaTypes.bool, KotlinDbTypes.MariaTypes.bool, MariaTypes.intUnsigned, MariaTypes.intUnsigned, MariaTypes.text.nullable(), MariaTypes.datetime.nullable(), MariaTypes.datetime, MariaTypes.datetime, { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17 -> ReviewsRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17) }, { row -> arrayOf(row.reviewId, row.productId, row.customerId, row.orderItemId, row.rating, row.title, row.content, row.pros, row.cons, row.images, row.isVerifiedPurchase, row.isApproved, row.helpfulVotes, row.unhelpfulVotes, row.adminResponse, row.respondedAt, row.createdAt, row.updatedAt) }) + val _rowParser: RowParser = RowParsers.of(ReviewsId.mariaType, ProductsId.mariaType, CustomersId.mariaType, OrderItemsId.mariaType.nullable(), MariaTypes.tinyintUnsigned, MariaTypes.varchar.nullable(), MariaTypes.text.nullable(), MariaTypes.json.nullable(), MariaTypes.json.nullable(), MariaTypes.json.nullable(), IsVerifiedPurchase.mariaType, IsApproved.mariaType, MariaTypes.intUnsigned, MariaTypes.intUnsigned, MariaTypes.text.nullable(), MariaTypes.datetime.nullable(), MariaTypes.datetime, MariaTypes.datetime, { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17 -> ReviewsRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17) }, { row -> arrayOf(row.reviewId, row.productId, row.customerId, row.orderItemId, row.rating, row.title, row.content, row.pros, row.cons, row.images, row.isVerifiedPurchase, row.isApproved, row.helpfulVotes, row.unhelpfulVotes, row.adminResponse, row.respondedAt, row.createdAt, row.updatedAt) }) } } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/reviews/ReviewsRowUnsaved.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/reviews/ReviewsRowUnsaved.kt index efaab44e8d..aa694206f3 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/reviews/ReviewsRowUnsaved.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/reviews/ReviewsRowUnsaved.kt @@ -15,6 +15,8 @@ import testdb.customtypes.Defaulted import testdb.customtypes.Defaulted.UseDefault import testdb.order_items.OrderItemsId import testdb.products.ProductsId +import testdb.userdefined.IsApproved +import testdb.userdefined.IsVerifiedPurchase /** This class corresponds to a row in table `reviews` which has not been persisted yet */ data class ReviewsRowUnsaved( @@ -55,11 +57,11 @@ data class ReviewsRowUnsaved( /** Default: 0 */ - @field:JsonProperty("is_verified_purchase") val isVerifiedPurchase: Defaulted = UseDefault(), + @field:JsonProperty("is_verified_purchase") val isVerifiedPurchase: Defaulted = UseDefault(), /** Default: 0 */ - @field:JsonProperty("is_approved") val isApproved: Defaulted = UseDefault(), + @field:JsonProperty("is_approved") val isApproved: Defaulted = UseDefault(), /** Default: 0 */ @@ -92,8 +94,8 @@ data class ReviewsRowUnsaved( prosDefault: () -> Json?, consDefault: () -> Json?, imagesDefault: () -> Json?, - isVerifiedPurchaseDefault: () -> Boolean, - isApprovedDefault: () -> Boolean, + isVerifiedPurchaseDefault: () -> /* user-picked */ IsVerifiedPurchase, + isApprovedDefault: () -> /* user-picked */ IsApproved, helpfulVotesDefault: () -> Uint4, unhelpfulVotesDefault: () -> Uint4, adminResponseDefault: () -> String?, diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/shipments/ShipmentsFields.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/shipments/ShipmentsFields.kt index fdd271030a..8e0b0faf90 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/shipments/ShipmentsFields.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/shipments/ShipmentsFields.kt @@ -72,7 +72,7 @@ data class ShipmentsFields(val _path: List) : TupleExpr17 = OptField(_path, "actual_delivery_at", ShipmentsRow::actualDeliveryAt, null, null, { row, value -> row.copy(actualDeliveryAt = value) }, MariaTypes.datetime) - fun carrierId(): Field = Field(_path, "carrier_id", ShipmentsRow::carrierId, null, null, { row, value -> row.copy(carrierId = value) }, ShippingCarriersId.dbType) + fun carrierId(): Field = Field(_path, "carrier_id", ShipmentsRow::carrierId, null, null, { row, value -> row.copy(carrierId = value) }, ShippingCarriersId.mariaType) override fun columns(): List> = listOf(this.shipmentId().underlying, this.orderId().underlying, this.carrierId().underlying, this.trackingNumber().underlying, this.shippingMethod().underlying, this.weightKg().underlying, this.dimensionsJson().underlying, this.labelData().underlying, this.status().underlying, this.estimatedDeliveryDate().underlying, this.actualDeliveryAt().underlying, this.shippingCost().underlying, this.insuranceAmount().underlying, this.originWarehouseId().underlying, this.shippedAt().underlying, this.createdAt().underlying, this.updatedAt().underlying) @@ -92,13 +92,13 @@ data class ShipmentsFields(val _path: List) : TupleExpr17 = OptField(_path, "label_data", ShipmentsRow::labelData, null, null, { row, value -> row.copy(labelData = value) }, MariaTypes.longblob) - fun orderId(): Field = Field(_path, "order_id", ShipmentsRow::orderId, null, null, { row, value -> row.copy(orderId = value) }, OrdersId.dbType) + fun orderId(): Field = Field(_path, "order_id", ShipmentsRow::orderId, null, null, { row, value -> row.copy(orderId = value) }, OrdersId.mariaType) - fun originWarehouseId(): OptField = OptField(_path, "origin_warehouse_id", ShipmentsRow::originWarehouseId, null, null, { row, value -> row.copy(originWarehouseId = value) }, WarehousesId.dbType) + fun originWarehouseId(): OptField = OptField(_path, "origin_warehouse_id", ShipmentsRow::originWarehouseId, null, null, { row, value -> row.copy(originWarehouseId = value) }, WarehousesId.mariaType) override fun rowParser(): RowParser = ShipmentsRow._rowParser.underlying - fun shipmentId(): IdField = IdField(_path, "shipment_id", ShipmentsRow::shipmentId, null, null, { row, value -> row.copy(shipmentId = value) }, ShipmentsId.dbType) + fun shipmentId(): IdField = IdField(_path, "shipment_id", ShipmentsRow::shipmentId, null, null, { row, value -> row.copy(shipmentId = value) }, ShipmentsId.mariaType) fun shippedAt(): OptField = OptField(_path, "shipped_at", ShipmentsRow::shippedAt, null, null, { row, value -> row.copy(shippedAt = value) }, MariaTypes.datetime) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/shipments/ShipmentsId.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/shipments/ShipmentsId.kt index 9453203a5f..b77dfe5d67 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/shipments/ShipmentsId.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/shipments/ShipmentsId.kt @@ -21,7 +21,7 @@ data class ShipmentsId(@field:JsonValue val value: Uint8) { val bijection: Bijection = Bijection.of(ShipmentsId::value, ::ShipmentsId) - val dbType: MariaType = + val mariaType: MariaType = MariaTypes.bigintUnsigned.bimap(::ShipmentsId, ShipmentsId::value) } } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/shipments/ShipmentsRepoImpl.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/shipments/ShipmentsRepoImpl.kt index 7c0ae69dd6..30a7f47064 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/shipments/ShipmentsRepoImpl.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/shipments/ShipmentsRepoImpl.kt @@ -29,21 +29,21 @@ class ShipmentsRepoImpl() : ShipmentsRepo { override fun deleteById( shipmentId: ShipmentsId, c: Connection - ): Boolean = Fragment.interpolate(Fragment.lit("delete from `shipments` where `shipment_id` = "), Fragment.encode(ShipmentsId.dbType, shipmentId), Fragment.lit("")).update().runUnchecked(c) > 0 + ): Boolean = Fragment.interpolate(Fragment.lit("delete from `shipments` where `shipment_id` = "), Fragment.encode(ShipmentsId.mariaType, shipmentId), Fragment.lit("")).update().runUnchecked(c) > 0 override fun deleteByIds( shipmentIds: Array, c: Connection ): Int { val fragments: ArrayList = ArrayList() - for (id in shipmentIds) { fragments.add(Fragment.encode(ShipmentsId.dbType, id)) } + for (id in shipmentIds) { fragments.add(Fragment.encode(ShipmentsId.mariaType, id)) } return Fragment.interpolate(Fragment.lit("delete from `shipments` where `shipment_id` in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).update().runUnchecked(c) } override fun insert( unsaved: ShipmentsRow, c: Connection - ): ShipmentsRow = Fragment.interpolate(Fragment.lit("insert into `shipments`(`order_id`, `carrier_id`, `tracking_number`, `shipping_method`, `weight_kg`, `dimensions_json`, `label_data`, `status`, `estimated_delivery_date`, `actual_delivery_at`, `shipping_cost`, `insurance_amount`, `origin_warehouse_id`, `shipped_at`, `created_at`, `updated_at`)\nvalues ("), Fragment.encode(OrdersId.dbType, unsaved.orderId), Fragment.lit(", "), Fragment.encode(ShippingCarriersId.dbType, unsaved.carrierId), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.trackingNumber), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.shippingMethod), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric.nullable(), unsaved.weightKg), Fragment.lit(", "), Fragment.encode(MariaTypes.json.nullable(), unsaved.dimensionsJson), Fragment.lit(", "), Fragment.encode(MariaTypes.longblob.nullable(), unsaved.labelData), Fragment.lit(", "), Fragment.encode(MariaTypes.text, unsaved.status), Fragment.lit(", "), Fragment.encode(MariaTypes.date.nullable(), unsaved.estimatedDeliveryDate), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime.nullable(), unsaved.actualDeliveryAt), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, unsaved.shippingCost), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric.nullable(), unsaved.insuranceAmount), Fragment.lit(", "), Fragment.encode(WarehousesId.dbType.nullable(), unsaved.originWarehouseId), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime.nullable(), unsaved.shippedAt), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.createdAt), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.updatedAt), Fragment.lit(")\nRETURNING `shipment_id`, `order_id`, `carrier_id`, `tracking_number`, `shipping_method`, `weight_kg`, `dimensions_json`, `label_data`, `status`, `estimated_delivery_date`, `actual_delivery_at`, `shipping_cost`, `insurance_amount`, `origin_warehouse_id`, `shipped_at`, `created_at`, `updated_at`\n")) + ): ShipmentsRow = Fragment.interpolate(Fragment.lit("insert into `shipments`(`order_id`, `carrier_id`, `tracking_number`, `shipping_method`, `weight_kg`, `dimensions_json`, `label_data`, `status`, `estimated_delivery_date`, `actual_delivery_at`, `shipping_cost`, `insurance_amount`, `origin_warehouse_id`, `shipped_at`, `created_at`, `updated_at`)\nvalues ("), Fragment.encode(OrdersId.mariaType, unsaved.orderId), Fragment.lit(", "), Fragment.encode(ShippingCarriersId.mariaType, unsaved.carrierId), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.trackingNumber), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.shippingMethod), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric.nullable(), unsaved.weightKg), Fragment.lit(", "), Fragment.encode(MariaTypes.json.nullable(), unsaved.dimensionsJson), Fragment.lit(", "), Fragment.encode(MariaTypes.longblob.nullable(), unsaved.labelData), Fragment.lit(", "), Fragment.encode(MariaTypes.text, unsaved.status), Fragment.lit(", "), Fragment.encode(MariaTypes.date.nullable(), unsaved.estimatedDeliveryDate), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime.nullable(), unsaved.actualDeliveryAt), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, unsaved.shippingCost), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric.nullable(), unsaved.insuranceAmount), Fragment.lit(", "), Fragment.encode(WarehousesId.mariaType.nullable(), unsaved.originWarehouseId), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime.nullable(), unsaved.shippedAt), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.createdAt), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.updatedAt), Fragment.lit(")\nRETURNING `shipment_id`, `order_id`, `carrier_id`, `tracking_number`, `shipping_method`, `weight_kg`, `dimensions_json`, `label_data`, `status`, `estimated_delivery_date`, `actual_delivery_at`, `shipping_cost`, `insurance_amount`, `origin_warehouse_id`, `shipped_at`, `created_at`, `updated_at`\n")) .updateReturning(ShipmentsRow._rowParser.exactlyOne()).runUnchecked(c) override fun insert( @@ -53,9 +53,9 @@ class ShipmentsRepoImpl() : ShipmentsRepo { val columns: ArrayList = ArrayList() val values: ArrayList = ArrayList() columns.add(Fragment.lit("`order_id`")) - values.add(Fragment.interpolate(Fragment.encode(OrdersId.dbType, unsaved.orderId), Fragment.lit(""))) + values.add(Fragment.interpolate(Fragment.encode(OrdersId.mariaType, unsaved.orderId), Fragment.lit(""))) columns.add(Fragment.lit("`carrier_id`")) - values.add(Fragment.interpolate(Fragment.encode(ShippingCarriersId.dbType, unsaved.carrierId), Fragment.lit(""))) + values.add(Fragment.interpolate(Fragment.encode(ShippingCarriersId.mariaType, unsaved.carrierId), Fragment.lit(""))) columns.add(Fragment.lit("`shipping_method`")) values.add(Fragment.interpolate(Fragment.encode(MariaTypes.varchar, unsaved.shippingMethod), Fragment.lit(""))) columns.add(Fragment.lit("`shipping_cost`")) @@ -103,7 +103,7 @@ class ShipmentsRepoImpl() : ShipmentsRepo { unsaved.originWarehouseId.visit( { }, { value -> columns.add(Fragment.lit("`origin_warehouse_id`")) - values.add(Fragment.interpolate(Fragment.encode(WarehousesId.dbType.nullable(), value), Fragment.lit(""))) } + values.add(Fragment.interpolate(Fragment.encode(WarehousesId.mariaType.nullable(), value), Fragment.lit(""))) } ); unsaved.shippedAt.visit( { }, @@ -131,14 +131,14 @@ class ShipmentsRepoImpl() : ShipmentsRepo { override fun selectById( shipmentId: ShipmentsId, c: Connection - ): ShipmentsRow? = Fragment.interpolate(Fragment.lit("select `shipment_id`, `order_id`, `carrier_id`, `tracking_number`, `shipping_method`, `weight_kg`, `dimensions_json`, `label_data`, `status`, `estimated_delivery_date`, `actual_delivery_at`, `shipping_cost`, `insurance_amount`, `origin_warehouse_id`, `shipped_at`, `created_at`, `updated_at`\nfrom `shipments`\nwhere `shipment_id` = "), Fragment.encode(ShipmentsId.dbType, shipmentId), Fragment.lit("")).query(ShipmentsRow._rowParser.first()).runUnchecked(c) + ): ShipmentsRow? = Fragment.interpolate(Fragment.lit("select `shipment_id`, `order_id`, `carrier_id`, `tracking_number`, `shipping_method`, `weight_kg`, `dimensions_json`, `label_data`, `status`, `estimated_delivery_date`, `actual_delivery_at`, `shipping_cost`, `insurance_amount`, `origin_warehouse_id`, `shipped_at`, `created_at`, `updated_at`\nfrom `shipments`\nwhere `shipment_id` = "), Fragment.encode(ShipmentsId.mariaType, shipmentId), Fragment.lit("")).query(ShipmentsRow._rowParser.first()).runUnchecked(c) override fun selectByIds( shipmentIds: Array, c: Connection ): List { val fragments: ArrayList = ArrayList() - for (id in shipmentIds) { fragments.add(Fragment.encode(ShipmentsId.dbType, id)) } + for (id in shipmentIds) { fragments.add(Fragment.encode(ShipmentsId.mariaType, id)) } return Fragment.interpolate(Fragment.lit("select `shipment_id`, `order_id`, `carrier_id`, `tracking_number`, `shipping_method`, `weight_kg`, `dimensions_json`, `label_data`, `status`, `estimated_delivery_date`, `actual_delivery_at`, `shipping_cost`, `insurance_amount`, `origin_warehouse_id`, `shipped_at`, `created_at`, `updated_at` from `shipments` where `shipment_id` in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).query(ShipmentsRow._rowParser.all()).runUnchecked(c) } @@ -158,13 +158,13 @@ class ShipmentsRepoImpl() : ShipmentsRepo { c: Connection ): Boolean { val shipmentId: ShipmentsId = row.shipmentId - return Fragment.interpolate(Fragment.lit("update `shipments`\nset `order_id` = "), Fragment.encode(OrdersId.dbType, row.orderId), Fragment.lit(",\n`carrier_id` = "), Fragment.encode(ShippingCarriersId.dbType, row.carrierId), Fragment.lit(",\n`tracking_number` = "), Fragment.encode(MariaTypes.varchar.nullable(), row.trackingNumber), Fragment.lit(",\n`shipping_method` = "), Fragment.encode(MariaTypes.varchar, row.shippingMethod), Fragment.lit(",\n`weight_kg` = "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric.nullable(), row.weightKg), Fragment.lit(",\n`dimensions_json` = "), Fragment.encode(MariaTypes.json.nullable(), row.dimensionsJson), Fragment.lit(",\n`label_data` = "), Fragment.encode(MariaTypes.longblob.nullable(), row.labelData), Fragment.lit(",\n`status` = "), Fragment.encode(MariaTypes.text, row.status), Fragment.lit(",\n`estimated_delivery_date` = "), Fragment.encode(MariaTypes.date.nullable(), row.estimatedDeliveryDate), Fragment.lit(",\n`actual_delivery_at` = "), Fragment.encode(MariaTypes.datetime.nullable(), row.actualDeliveryAt), Fragment.lit(",\n`shipping_cost` = "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, row.shippingCost), Fragment.lit(",\n`insurance_amount` = "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric.nullable(), row.insuranceAmount), Fragment.lit(",\n`origin_warehouse_id` = "), Fragment.encode(WarehousesId.dbType.nullable(), row.originWarehouseId), Fragment.lit(",\n`shipped_at` = "), Fragment.encode(MariaTypes.datetime.nullable(), row.shippedAt), Fragment.lit(",\n`created_at` = "), Fragment.encode(MariaTypes.datetime, row.createdAt), Fragment.lit(",\n`updated_at` = "), Fragment.encode(MariaTypes.datetime, row.updatedAt), Fragment.lit("\nwhere `shipment_id` = "), Fragment.encode(ShipmentsId.dbType, shipmentId), Fragment.lit("")).update().runUnchecked(c) > 0 + return Fragment.interpolate(Fragment.lit("update `shipments`\nset `order_id` = "), Fragment.encode(OrdersId.mariaType, row.orderId), Fragment.lit(",\n`carrier_id` = "), Fragment.encode(ShippingCarriersId.mariaType, row.carrierId), Fragment.lit(",\n`tracking_number` = "), Fragment.encode(MariaTypes.varchar.nullable(), row.trackingNumber), Fragment.lit(",\n`shipping_method` = "), Fragment.encode(MariaTypes.varchar, row.shippingMethod), Fragment.lit(",\n`weight_kg` = "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric.nullable(), row.weightKg), Fragment.lit(",\n`dimensions_json` = "), Fragment.encode(MariaTypes.json.nullable(), row.dimensionsJson), Fragment.lit(",\n`label_data` = "), Fragment.encode(MariaTypes.longblob.nullable(), row.labelData), Fragment.lit(",\n`status` = "), Fragment.encode(MariaTypes.text, row.status), Fragment.lit(",\n`estimated_delivery_date` = "), Fragment.encode(MariaTypes.date.nullable(), row.estimatedDeliveryDate), Fragment.lit(",\n`actual_delivery_at` = "), Fragment.encode(MariaTypes.datetime.nullable(), row.actualDeliveryAt), Fragment.lit(",\n`shipping_cost` = "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, row.shippingCost), Fragment.lit(",\n`insurance_amount` = "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric.nullable(), row.insuranceAmount), Fragment.lit(",\n`origin_warehouse_id` = "), Fragment.encode(WarehousesId.mariaType.nullable(), row.originWarehouseId), Fragment.lit(",\n`shipped_at` = "), Fragment.encode(MariaTypes.datetime.nullable(), row.shippedAt), Fragment.lit(",\n`created_at` = "), Fragment.encode(MariaTypes.datetime, row.createdAt), Fragment.lit(",\n`updated_at` = "), Fragment.encode(MariaTypes.datetime, row.updatedAt), Fragment.lit("\nwhere `shipment_id` = "), Fragment.encode(ShipmentsId.mariaType, shipmentId), Fragment.lit("")).update().runUnchecked(c) > 0 } override fun upsert( unsaved: ShipmentsRow, c: Connection - ): ShipmentsRow = Fragment.interpolate(Fragment.lit("INSERT INTO `shipments`(`shipment_id`, `order_id`, `carrier_id`, `tracking_number`, `shipping_method`, `weight_kg`, `dimensions_json`, `label_data`, `status`, `estimated_delivery_date`, `actual_delivery_at`, `shipping_cost`, `insurance_amount`, `origin_warehouse_id`, `shipped_at`, `created_at`, `updated_at`)\nVALUES ("), Fragment.encode(ShipmentsId.dbType, unsaved.shipmentId), Fragment.lit(", "), Fragment.encode(OrdersId.dbType, unsaved.orderId), Fragment.lit(", "), Fragment.encode(ShippingCarriersId.dbType, unsaved.carrierId), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.trackingNumber), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.shippingMethod), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric.nullable(), unsaved.weightKg), Fragment.lit(", "), Fragment.encode(MariaTypes.json.nullable(), unsaved.dimensionsJson), Fragment.lit(", "), Fragment.encode(MariaTypes.longblob.nullable(), unsaved.labelData), Fragment.lit(", "), Fragment.encode(MariaTypes.text, unsaved.status), Fragment.lit(", "), Fragment.encode(MariaTypes.date.nullable(), unsaved.estimatedDeliveryDate), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime.nullable(), unsaved.actualDeliveryAt), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, unsaved.shippingCost), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric.nullable(), unsaved.insuranceAmount), Fragment.lit(", "), Fragment.encode(WarehousesId.dbType.nullable(), unsaved.originWarehouseId), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime.nullable(), unsaved.shippedAt), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.createdAt), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.updatedAt), Fragment.lit(")\nON DUPLICATE KEY UPDATE `order_id` = VALUES(`order_id`),\n`carrier_id` = VALUES(`carrier_id`),\n`tracking_number` = VALUES(`tracking_number`),\n`shipping_method` = VALUES(`shipping_method`),\n`weight_kg` = VALUES(`weight_kg`),\n`dimensions_json` = VALUES(`dimensions_json`),\n`label_data` = VALUES(`label_data`),\n`status` = VALUES(`status`),\n`estimated_delivery_date` = VALUES(`estimated_delivery_date`),\n`actual_delivery_at` = VALUES(`actual_delivery_at`),\n`shipping_cost` = VALUES(`shipping_cost`),\n`insurance_amount` = VALUES(`insurance_amount`),\n`origin_warehouse_id` = VALUES(`origin_warehouse_id`),\n`shipped_at` = VALUES(`shipped_at`),\n`created_at` = VALUES(`created_at`),\n`updated_at` = VALUES(`updated_at`)\nRETURNING `shipment_id`, `order_id`, `carrier_id`, `tracking_number`, `shipping_method`, `weight_kg`, `dimensions_json`, `label_data`, `status`, `estimated_delivery_date`, `actual_delivery_at`, `shipping_cost`, `insurance_amount`, `origin_warehouse_id`, `shipped_at`, `created_at`, `updated_at`")) + ): ShipmentsRow = Fragment.interpolate(Fragment.lit("INSERT INTO `shipments`(`shipment_id`, `order_id`, `carrier_id`, `tracking_number`, `shipping_method`, `weight_kg`, `dimensions_json`, `label_data`, `status`, `estimated_delivery_date`, `actual_delivery_at`, `shipping_cost`, `insurance_amount`, `origin_warehouse_id`, `shipped_at`, `created_at`, `updated_at`)\nVALUES ("), Fragment.encode(ShipmentsId.mariaType, unsaved.shipmentId), Fragment.lit(", "), Fragment.encode(OrdersId.mariaType, unsaved.orderId), Fragment.lit(", "), Fragment.encode(ShippingCarriersId.mariaType, unsaved.carrierId), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.trackingNumber), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.shippingMethod), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric.nullable(), unsaved.weightKg), Fragment.lit(", "), Fragment.encode(MariaTypes.json.nullable(), unsaved.dimensionsJson), Fragment.lit(", "), Fragment.encode(MariaTypes.longblob.nullable(), unsaved.labelData), Fragment.lit(", "), Fragment.encode(MariaTypes.text, unsaved.status), Fragment.lit(", "), Fragment.encode(MariaTypes.date.nullable(), unsaved.estimatedDeliveryDate), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime.nullable(), unsaved.actualDeliveryAt), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric, unsaved.shippingCost), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.numeric.nullable(), unsaved.insuranceAmount), Fragment.lit(", "), Fragment.encode(WarehousesId.mariaType.nullable(), unsaved.originWarehouseId), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime.nullable(), unsaved.shippedAt), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.createdAt), Fragment.lit(", "), Fragment.encode(MariaTypes.datetime, unsaved.updatedAt), Fragment.lit(")\nON DUPLICATE KEY UPDATE `order_id` = VALUES(`order_id`),\n`carrier_id` = VALUES(`carrier_id`),\n`tracking_number` = VALUES(`tracking_number`),\n`shipping_method` = VALUES(`shipping_method`),\n`weight_kg` = VALUES(`weight_kg`),\n`dimensions_json` = VALUES(`dimensions_json`),\n`label_data` = VALUES(`label_data`),\n`status` = VALUES(`status`),\n`estimated_delivery_date` = VALUES(`estimated_delivery_date`),\n`actual_delivery_at` = VALUES(`actual_delivery_at`),\n`shipping_cost` = VALUES(`shipping_cost`),\n`insurance_amount` = VALUES(`insurance_amount`),\n`origin_warehouse_id` = VALUES(`origin_warehouse_id`),\n`shipped_at` = VALUES(`shipped_at`),\n`created_at` = VALUES(`created_at`),\n`updated_at` = VALUES(`updated_at`)\nRETURNING `shipment_id`, `order_id`, `carrier_id`, `tracking_number`, `shipping_method`, `weight_kg`, `dimensions_json`, `label_data`, `status`, `estimated_delivery_date`, `actual_delivery_at`, `shipping_cost`, `insurance_amount`, `origin_warehouse_id`, `shipped_at`, `created_at`, `updated_at`")) .updateReturning(ShipmentsRow._rowParser.exactlyOne()) .runUnchecked(c) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/shipments/ShipmentsRow.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/shipments/ShipmentsRow.kt index 8c47d43a6d..0759f08b68 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/shipments/ShipmentsRow.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/shipments/ShipmentsRow.kt @@ -143,6 +143,6 @@ data class ShipmentsRow( ): ShipmentsRowUnsaved = ShipmentsRowUnsaved(orderId, carrierId, shippingMethod, shippingCost, trackingNumber, weightKg, dimensionsJson, labelData, status, estimatedDeliveryDate, actualDeliveryAt, insuranceAmount, originWarehouseId, shippedAt, createdAt, updatedAt) companion object { - val _rowParser: RowParser = RowParsers.of(ShipmentsId.dbType, OrdersId.dbType, ShippingCarriersId.dbType, MariaTypes.varchar.nullable(), MariaTypes.varchar, KotlinDbTypes.MariaTypes.numeric.nullable(), MariaTypes.json.nullable(), MariaTypes.longblob.nullable(), MariaTypes.text, MariaTypes.date.nullable(), MariaTypes.datetime.nullable(), KotlinDbTypes.MariaTypes.numeric, KotlinDbTypes.MariaTypes.numeric.nullable(), WarehousesId.dbType.nullable(), MariaTypes.datetime.nullable(), MariaTypes.datetime, MariaTypes.datetime, { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16 -> ShipmentsRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16) }, { row -> arrayOf(row.shipmentId, row.orderId, row.carrierId, row.trackingNumber, row.shippingMethod, row.weightKg, row.dimensionsJson, row.labelData, row.status, row.estimatedDeliveryDate, row.actualDeliveryAt, row.shippingCost, row.insuranceAmount, row.originWarehouseId, row.shippedAt, row.createdAt, row.updatedAt) }) + val _rowParser: RowParser = RowParsers.of(ShipmentsId.mariaType, OrdersId.mariaType, ShippingCarriersId.mariaType, MariaTypes.varchar.nullable(), MariaTypes.varchar, KotlinDbTypes.MariaTypes.numeric.nullable(), MariaTypes.json.nullable(), MariaTypes.longblob.nullable(), MariaTypes.text, MariaTypes.date.nullable(), MariaTypes.datetime.nullable(), KotlinDbTypes.MariaTypes.numeric, KotlinDbTypes.MariaTypes.numeric.nullable(), WarehousesId.mariaType.nullable(), MariaTypes.datetime.nullable(), MariaTypes.datetime, MariaTypes.datetime, { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16 -> ShipmentsRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16) }, { row -> arrayOf(row.shipmentId, row.orderId, row.carrierId, row.trackingNumber, row.shippingMethod, row.weightKg, row.dimensionsJson, row.labelData, row.status, row.estimatedDeliveryDate, row.actualDeliveryAt, row.shippingCost, row.insuranceAmount, row.originWarehouseId, row.shippedAt, row.createdAt, row.updatedAt) }) } } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/shipping_carriers/ShippingCarriersFields.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/shipping_carriers/ShippingCarriersFields.kt index 647eae6c17..864a3ad02a 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/shipping_carriers/ShippingCarriersFields.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/shipping_carriers/ShippingCarriersFields.kt @@ -11,7 +11,6 @@ import dev.typr.foundations.data.Json import dev.typr.foundations.dsl.FieldsBase import dev.typr.foundations.dsl.Path import dev.typr.foundations.dsl.SqlExpr.FieldLike -import dev.typr.foundations.kotlin.KotlinDbTypes import dev.typr.foundations.kotlin.RelationStructure import dev.typr.foundations.kotlin.SqlExpr import dev.typr.foundations.kotlin.SqlExpr.Field @@ -19,8 +18,9 @@ import dev.typr.foundations.kotlin.SqlExpr.IdField import dev.typr.foundations.kotlin.SqlExpr.OptField import dev.typr.foundations.kotlin.TupleExpr6 import kotlin.collections.List +import testdb.userdefined.IsActive -data class ShippingCarriersFields(val _path: List) : TupleExpr6, RelationStructure, FieldsBase { +data class ShippingCarriersFields(val _path: List) : TupleExpr6, RelationStructure, FieldsBase { override fun _1(): SqlExpr = carrierId() override fun _2(): SqlExpr = code() @@ -31,19 +31,19 @@ data class ShippingCarriersFields(val _path: List) : TupleExpr6 = apiConfig() - override fun _6(): SqlExpr = isActive() + override fun _6(): SqlExpr = isActive() override fun _path(): List = _path fun apiConfig(): OptField = OptField(_path, "api_config", ShippingCarriersRow::apiConfig, null, null, { row, value -> row.copy(apiConfig = value) }, MariaTypes.json) - fun carrierId(): IdField = IdField(_path, "carrier_id", ShippingCarriersRow::carrierId, null, null, { row, value -> row.copy(carrierId = value) }, ShippingCarriersId.dbType) + fun carrierId(): IdField = IdField(_path, "carrier_id", ShippingCarriersRow::carrierId, null, null, { row, value -> row.copy(carrierId = value) }, ShippingCarriersId.mariaType) fun code(): Field = Field(_path, "code", ShippingCarriersRow::code, null, null, { row, value -> row.copy(code = value) }, MariaTypes.varchar) override fun columns(): List> = listOf(this.carrierId().underlying, this.code().underlying, this.name().underlying, this.trackingUrlTemplate().underlying, this.apiConfig().underlying, this.isActive().underlying) - fun isActive(): Field = Field(_path, "is_active", ShippingCarriersRow::isActive, null, null, { row, value -> row.copy(isActive = value) }, KotlinDbTypes.MariaTypes.bool) + fun isActive(): Field = Field(_path, "is_active", ShippingCarriersRow::isActive, null, null, { row, value -> row.copy(isActive = value) }, IsActive.mariaType) fun name(): Field = Field(_path, "name", ShippingCarriersRow::name, null, null, { row, value -> row.copy(name = value) }, MariaTypes.varchar) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/shipping_carriers/ShippingCarriersId.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/shipping_carriers/ShippingCarriersId.kt index fed02da26f..ea0b9fbc0c 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/shipping_carriers/ShippingCarriersId.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/shipping_carriers/ShippingCarriersId.kt @@ -21,7 +21,7 @@ data class ShippingCarriersId(@field:JsonValue val value: Uint1) { val bijection: Bijection = Bijection.of(ShippingCarriersId::value, ::ShippingCarriersId) - val dbType: MariaType = + val mariaType: MariaType = MariaTypes.tinyintUnsigned.bimap(::ShippingCarriersId, ShippingCarriersId::value) } } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/shipping_carriers/ShippingCarriersRepoImpl.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/shipping_carriers/ShippingCarriersRepoImpl.kt index e8a2256464..01c35f7082 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/shipping_carriers/ShippingCarriersRepoImpl.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/shipping_carriers/ShippingCarriersRepoImpl.kt @@ -9,7 +9,6 @@ import dev.typr.foundations.MariaTypes import dev.typr.foundations.kotlin.DeleteBuilder import dev.typr.foundations.kotlin.Dialect import dev.typr.foundations.kotlin.Fragment -import dev.typr.foundations.kotlin.KotlinDbTypes import dev.typr.foundations.kotlin.SelectBuilder import dev.typr.foundations.kotlin.UpdateBuilder import dev.typr.foundations.kotlin.nullable @@ -19,6 +18,7 @@ import kotlin.collections.Iterator import kotlin.collections.List import kotlin.collections.Map import kotlin.collections.MutableMap +import testdb.userdefined.IsActive class ShippingCarriersRepoImpl() : ShippingCarriersRepo { override fun delete(): DeleteBuilder = DeleteBuilder.of("`shipping_carriers`", ShippingCarriersFields.structure, Dialect.MARIADB) @@ -26,21 +26,21 @@ class ShippingCarriersRepoImpl() : ShippingCarriersRepo { override fun deleteById( carrierId: ShippingCarriersId, c: Connection - ): Boolean = Fragment.interpolate(Fragment.lit("delete from `shipping_carriers` where `carrier_id` = "), Fragment.encode(ShippingCarriersId.dbType, carrierId), Fragment.lit("")).update().runUnchecked(c) > 0 + ): Boolean = Fragment.interpolate(Fragment.lit("delete from `shipping_carriers` where `carrier_id` = "), Fragment.encode(ShippingCarriersId.mariaType, carrierId), Fragment.lit("")).update().runUnchecked(c) > 0 override fun deleteByIds( carrierIds: Array, c: Connection ): Int { val fragments: ArrayList = ArrayList() - for (id in carrierIds) { fragments.add(Fragment.encode(ShippingCarriersId.dbType, id)) } + for (id in carrierIds) { fragments.add(Fragment.encode(ShippingCarriersId.mariaType, id)) } return Fragment.interpolate(Fragment.lit("delete from `shipping_carriers` where `carrier_id` in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).update().runUnchecked(c) } override fun insert( unsaved: ShippingCarriersRow, c: Connection - ): ShippingCarriersRow = Fragment.interpolate(Fragment.lit("insert into `shipping_carriers`(`code`, `name`, `tracking_url_template`, `api_config`, `is_active`)\nvalues ("), Fragment.encode(MariaTypes.varchar, unsaved.code), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.name), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.trackingUrlTemplate), Fragment.lit(", "), Fragment.encode(MariaTypes.json.nullable(), unsaved.apiConfig), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.bool, unsaved.isActive), Fragment.lit(")\nRETURNING `carrier_id`, `code`, `name`, `tracking_url_template`, `api_config`, `is_active`\n")) + ): ShippingCarriersRow = Fragment.interpolate(Fragment.lit("insert into `shipping_carriers`(`code`, `name`, `tracking_url_template`, `api_config`, `is_active`)\nvalues ("), Fragment.encode(MariaTypes.varchar, unsaved.code), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.name), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.trackingUrlTemplate), Fragment.lit(", "), Fragment.encode(MariaTypes.json.nullable(), unsaved.apiConfig), Fragment.lit(", "), Fragment.encode(IsActive.mariaType, unsaved.isActive), Fragment.lit(")\nRETURNING `carrier_id`, `code`, `name`, `tracking_url_template`, `api_config`, `is_active`\n")) .updateReturning(ShippingCarriersRow._rowParser.exactlyOne()).runUnchecked(c) override fun insert( @@ -66,7 +66,7 @@ class ShippingCarriersRepoImpl() : ShippingCarriersRepo { unsaved.isActive.visit( { }, { value -> columns.add(Fragment.lit("`is_active`")) - values.add(Fragment.interpolate(Fragment.encode(KotlinDbTypes.MariaTypes.bool, value), Fragment.lit(""))) } + values.add(Fragment.interpolate(Fragment.encode(IsActive.mariaType, value), Fragment.lit(""))) } ); val q: Fragment = Fragment.interpolate(Fragment.lit("insert into `shipping_carriers`("), Fragment.comma(columns.toMutableList()), Fragment.lit(")\nvalues ("), Fragment.comma(values.toMutableList()), Fragment.lit(")\nRETURNING `carrier_id`, `code`, `name`, `tracking_url_template`, `api_config`, `is_active`\n")) return q.updateReturning(ShippingCarriersRow._rowParser.exactlyOne()).runUnchecked(c) @@ -79,14 +79,14 @@ class ShippingCarriersRepoImpl() : ShippingCarriersRepo { override fun selectById( carrierId: ShippingCarriersId, c: Connection - ): ShippingCarriersRow? = Fragment.interpolate(Fragment.lit("select `carrier_id`, `code`, `name`, `tracking_url_template`, `api_config`, `is_active`\nfrom `shipping_carriers`\nwhere `carrier_id` = "), Fragment.encode(ShippingCarriersId.dbType, carrierId), Fragment.lit("")).query(ShippingCarriersRow._rowParser.first()).runUnchecked(c) + ): ShippingCarriersRow? = Fragment.interpolate(Fragment.lit("select `carrier_id`, `code`, `name`, `tracking_url_template`, `api_config`, `is_active`\nfrom `shipping_carriers`\nwhere `carrier_id` = "), Fragment.encode(ShippingCarriersId.mariaType, carrierId), Fragment.lit("")).query(ShippingCarriersRow._rowParser.first()).runUnchecked(c) override fun selectByIds( carrierIds: Array, c: Connection ): List { val fragments: ArrayList = ArrayList() - for (id in carrierIds) { fragments.add(Fragment.encode(ShippingCarriersId.dbType, id)) } + for (id in carrierIds) { fragments.add(Fragment.encode(ShippingCarriersId.mariaType, id)) } return Fragment.interpolate(Fragment.lit("select `carrier_id`, `code`, `name`, `tracking_url_template`, `api_config`, `is_active` from `shipping_carriers` where `carrier_id` in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).query(ShippingCarriersRow._rowParser.all()).runUnchecked(c) } @@ -111,13 +111,13 @@ class ShippingCarriersRepoImpl() : ShippingCarriersRepo { c: Connection ): Boolean { val carrierId: ShippingCarriersId = row.carrierId - return Fragment.interpolate(Fragment.lit("update `shipping_carriers`\nset `code` = "), Fragment.encode(MariaTypes.varchar, row.code), Fragment.lit(",\n`name` = "), Fragment.encode(MariaTypes.varchar, row.name), Fragment.lit(",\n`tracking_url_template` = "), Fragment.encode(MariaTypes.varchar.nullable(), row.trackingUrlTemplate), Fragment.lit(",\n`api_config` = "), Fragment.encode(MariaTypes.json.nullable(), row.apiConfig), Fragment.lit(",\n`is_active` = "), Fragment.encode(KotlinDbTypes.MariaTypes.bool, row.isActive), Fragment.lit("\nwhere `carrier_id` = "), Fragment.encode(ShippingCarriersId.dbType, carrierId), Fragment.lit("")).update().runUnchecked(c) > 0 + return Fragment.interpolate(Fragment.lit("update `shipping_carriers`\nset `code` = "), Fragment.encode(MariaTypes.varchar, row.code), Fragment.lit(",\n`name` = "), Fragment.encode(MariaTypes.varchar, row.name), Fragment.lit(",\n`tracking_url_template` = "), Fragment.encode(MariaTypes.varchar.nullable(), row.trackingUrlTemplate), Fragment.lit(",\n`api_config` = "), Fragment.encode(MariaTypes.json.nullable(), row.apiConfig), Fragment.lit(",\n`is_active` = "), Fragment.encode(IsActive.mariaType, row.isActive), Fragment.lit("\nwhere `carrier_id` = "), Fragment.encode(ShippingCarriersId.mariaType, carrierId), Fragment.lit("")).update().runUnchecked(c) > 0 } override fun upsert( unsaved: ShippingCarriersRow, c: Connection - ): ShippingCarriersRow = Fragment.interpolate(Fragment.lit("INSERT INTO `shipping_carriers`(`carrier_id`, `code`, `name`, `tracking_url_template`, `api_config`, `is_active`)\nVALUES ("), Fragment.encode(ShippingCarriersId.dbType, unsaved.carrierId), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.code), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.name), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.trackingUrlTemplate), Fragment.lit(", "), Fragment.encode(MariaTypes.json.nullable(), unsaved.apiConfig), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.bool, unsaved.isActive), Fragment.lit(")\nON DUPLICATE KEY UPDATE `code` = VALUES(`code`),\n`name` = VALUES(`name`),\n`tracking_url_template` = VALUES(`tracking_url_template`),\n`api_config` = VALUES(`api_config`),\n`is_active` = VALUES(`is_active`)\nRETURNING `carrier_id`, `code`, `name`, `tracking_url_template`, `api_config`, `is_active`")) + ): ShippingCarriersRow = Fragment.interpolate(Fragment.lit("INSERT INTO `shipping_carriers`(`carrier_id`, `code`, `name`, `tracking_url_template`, `api_config`, `is_active`)\nVALUES ("), Fragment.encode(ShippingCarriersId.mariaType, unsaved.carrierId), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.code), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.name), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.trackingUrlTemplate), Fragment.lit(", "), Fragment.encode(MariaTypes.json.nullable(), unsaved.apiConfig), Fragment.lit(", "), Fragment.encode(IsActive.mariaType, unsaved.isActive), Fragment.lit(")\nON DUPLICATE KEY UPDATE `code` = VALUES(`code`),\n`name` = VALUES(`name`),\n`tracking_url_template` = VALUES(`tracking_url_template`),\n`api_config` = VALUES(`api_config`),\n`is_active` = VALUES(`is_active`)\nRETURNING `carrier_id`, `code`, `name`, `tracking_url_template`, `api_config`, `is_active`")) .updateReturning(ShippingCarriersRow._rowParser.exactlyOne()) .runUnchecked(c) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/shipping_carriers/ShippingCarriersRow.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/shipping_carriers/ShippingCarriersRow.kt index a49dce2aca..52e163f3ee 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/shipping_carriers/ShippingCarriersRow.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/shipping_carriers/ShippingCarriersRow.kt @@ -9,11 +9,11 @@ import com.fasterxml.jackson.annotation.JsonProperty import dev.typr.foundations.MariaTypes import dev.typr.foundations.Tuple.Tuple6 import dev.typr.foundations.data.Json -import dev.typr.foundations.kotlin.KotlinDbTypes import dev.typr.foundations.kotlin.RowParser import dev.typr.foundations.kotlin.RowParsers import dev.typr.foundations.kotlin.nullable import testdb.customtypes.Defaulted +import testdb.userdefined.IsActive /** Table: shipping_carriers * Primary key: carrier_id @@ -38,8 +38,8 @@ data class ShippingCarriersRow( /** * Default: 1 */ - @field:JsonProperty("is_active") val isActive: Boolean -) : Tuple6 { + @field:JsonProperty("is_active") val isActive: /* user-picked */ IsActive +) : Tuple6 { override fun _1(): ShippingCarriersId = carrierId override fun _2(): String = code @@ -50,17 +50,17 @@ data class ShippingCarriersRow( override fun _5(): Json? = apiConfig - override fun _6(): Boolean = isActive + override fun _6(): /* user-picked */ IsActive = isActive fun id(): ShippingCarriersId = carrierId fun toUnsavedRow( trackingUrlTemplate: Defaulted = Defaulted.Provided(this.trackingUrlTemplate), apiConfig: Defaulted = Defaulted.Provided(this.apiConfig), - isActive: Defaulted = Defaulted.Provided(this.isActive) + isActive: Defaulted = Defaulted.Provided(this.isActive) ): ShippingCarriersRowUnsaved = ShippingCarriersRowUnsaved(code, name, trackingUrlTemplate, apiConfig, isActive) companion object { - val _rowParser: RowParser = RowParsers.of(ShippingCarriersId.dbType, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.varchar.nullable(), MariaTypes.json.nullable(), KotlinDbTypes.MariaTypes.bool, { t0, t1, t2, t3, t4, t5 -> ShippingCarriersRow(t0, t1, t2, t3, t4, t5) }, { row -> arrayOf(row.carrierId, row.code, row.name, row.trackingUrlTemplate, row.apiConfig, row.isActive) }) + val _rowParser: RowParser = RowParsers.of(ShippingCarriersId.mariaType, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.varchar.nullable(), MariaTypes.json.nullable(), IsActive.mariaType, { t0, t1, t2, t3, t4, t5 -> ShippingCarriersRow(t0, t1, t2, t3, t4, t5) }, { row -> arrayOf(row.carrierId, row.code, row.name, row.trackingUrlTemplate, row.apiConfig, row.isActive) }) } } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/shipping_carriers/ShippingCarriersRowUnsaved.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/shipping_carriers/ShippingCarriersRowUnsaved.kt index ff1acb4ccd..dc6faa0b49 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/shipping_carriers/ShippingCarriersRowUnsaved.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/shipping_carriers/ShippingCarriersRowUnsaved.kt @@ -9,6 +9,7 @@ import com.fasterxml.jackson.annotation.JsonProperty import dev.typr.foundations.data.Json import testdb.customtypes.Defaulted import testdb.customtypes.Defaulted.UseDefault +import testdb.userdefined.IsActive /** This class corresponds to a row in table `shipping_carriers` which has not been persisted yet */ data class ShippingCarriersRowUnsaved( @@ -27,12 +28,12 @@ data class ShippingCarriersRowUnsaved( /** Default: 1 */ - @field:JsonProperty("is_active") val isActive: Defaulted = UseDefault() + @field:JsonProperty("is_active") val isActive: Defaulted = UseDefault() ) { fun toRow( trackingUrlTemplateDefault: () -> String?, apiConfigDefault: () -> Json?, - isActiveDefault: () -> Boolean, + isActiveDefault: () -> /* user-picked */ IsActive, carrierIdDefault: () -> ShippingCarriersId ): ShippingCarriersRow = ShippingCarriersRow(carrierId = carrierIdDefault(), code = code, name = name, trackingUrlTemplate = trackingUrlTemplate.getOrElse(trackingUrlTemplateDefault), apiConfig = apiConfig.getOrElse(apiConfigDefault), isActive = isActive.getOrElse(isActiveDefault)) } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/simple_customer_lookup/SimpleCustomerLookupSqlRow.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/simple_customer_lookup/SimpleCustomerLookupSqlRow.kt index 3a1b6fef43..d23e256b0d 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/simple_customer_lookup/SimpleCustomerLookupSqlRow.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/simple_customer_lookup/SimpleCustomerLookupSqlRow.kt @@ -13,31 +13,34 @@ import dev.typr.foundations.kotlin.RowParsers import java.time.LocalDateTime import testdb.customer_status.CustomerStatusId import testdb.customers.CustomersId +import testdb.userdefined.Email +import testdb.userdefined.FirstName +import testdb.userdefined.LastName /** SQL file: simple_customer_lookup.sql */ data class SimpleCustomerLookupSqlRow( /** Points to [testdb.customers.CustomersRow.customerId] */ @field:JsonProperty("customer_id") val customerId: CustomersId, /** Points to [testdb.customers.CustomersRow.email] */ - val email: String, + val email: /* user-picked */ Email, /** Points to [testdb.customers.CustomersRow.firstName] */ - @field:JsonProperty("first_name") val firstName: String, + @field:JsonProperty("first_name") val firstName: /* user-picked */ FirstName, /** Points to [testdb.customers.CustomersRow.lastName] */ - @field:JsonProperty("last_name") val lastName: String, + @field:JsonProperty("last_name") val lastName: /* user-picked */ LastName, /** Points to [testdb.customers.CustomersRow.tier] */ val tier: String, /** Points to [testdb.customers.CustomersRow.status] */ val status: CustomerStatusId, /** Points to [testdb.customers.CustomersRow.createdAt] */ @field:JsonProperty("created_at") val createdAt: LocalDateTime -) : Tuple7 { +) : Tuple7 { override fun _1(): CustomersId = customerId - override fun _2(): String = email + override fun _2(): /* user-picked */ Email = email - override fun _3(): String = firstName + override fun _3(): /* user-picked */ FirstName = firstName - override fun _4(): String = lastName + override fun _4(): /* user-picked */ LastName = lastName override fun _5(): String = tier @@ -46,6 +49,6 @@ data class SimpleCustomerLookupSqlRow( override fun _7(): LocalDateTime = createdAt companion object { - val _rowParser: RowParser = RowParsers.of(CustomersId.dbType, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.text, CustomerStatusId.dbType, MariaTypes.datetime, { t0, t1, t2, t3, t4, t5, t6 -> SimpleCustomerLookupSqlRow(t0, t1, t2, t3, t4, t5, t6) }, { row -> arrayOf(row.customerId, row.email, row.firstName, row.lastName, row.tier, row.status, row.createdAt) }) + val _rowParser: RowParser = RowParsers.of(CustomersId.mariaType, Email.mariaType, FirstName.mariaType, LastName.mariaType, MariaTypes.text, CustomerStatusId.mariaType, MariaTypes.datetime, { t0, t1, t2, t3, t4, t5, t6 -> SimpleCustomerLookupSqlRow(t0, t1, t2, t3, t4, t5, t6) }, { row -> arrayOf(row.customerId, row.email, row.firstName, row.lastName, row.tier, row.status, row.createdAt) }) } } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/subquery_test/SubqueryTestSqlRow.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/subquery_test/SubqueryTestSqlRow.kt index 9be467efe3..50bb68e0a3 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/subquery_test/SubqueryTestSqlRow.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/subquery_test/SubqueryTestSqlRow.kt @@ -14,25 +14,27 @@ import dev.typr.foundations.kotlin.RowParsers import dev.typr.foundations.kotlin.nullable import java.math.BigDecimal import testdb.customers.CustomersId +import testdb.userdefined.Email +import testdb.userdefined.FirstName /** SQL file: subquery_test.sql */ data class SubqueryTestSqlRow( /** Points to [testdb.customers.CustomersRow.customerId] */ @field:JsonProperty("customer_id") val customerId: CustomersId, /** Points to [testdb.customers.CustomersRow.email] */ - val email: String, + val email: /* user-picked */ Email, /** Points to [testdb.customers.CustomersRow.firstName] */ - @field:JsonProperty("first_name") val firstName: String, + @field:JsonProperty("first_name") val firstName: /* user-picked */ FirstName, @field:JsonProperty("order_count") val orderCount: Long, @field:JsonProperty("total_spent") val totalSpent: BigDecimal, /** Points to [testdb.brands.BrandsRow.name] */ @field:JsonProperty("favorite_brand") val favoriteBrand: String? -) : Tuple6 { +) : Tuple6 { override fun _1(): CustomersId = customerId - override fun _2(): String = email + override fun _2(): /* user-picked */ Email = email - override fun _3(): String = firstName + override fun _3(): /* user-picked */ FirstName = firstName override fun _4(): Long = orderCount @@ -41,6 +43,6 @@ data class SubqueryTestSqlRow( override fun _6(): String? = favoriteBrand companion object { - val _rowParser: RowParser = RowParsers.of(CustomersId.dbType, MariaTypes.varchar, MariaTypes.varchar, KotlinDbTypes.MariaTypes.bigint, KotlinDbTypes.MariaTypes.numeric, MariaTypes.varchar.nullable(), { t0, t1, t2, t3, t4, t5 -> SubqueryTestSqlRow(t0, t1, t2, t3, t4, t5) }, { row -> arrayOf(row.customerId, row.email, row.firstName, row.orderCount, row.totalSpent, row.favoriteBrand) }) + val _rowParser: RowParser = RowParsers.of(CustomersId.mariaType, Email.mariaType, FirstName.mariaType, KotlinDbTypes.MariaTypes.bigint, KotlinDbTypes.MariaTypes.numeric, MariaTypes.varchar.nullable(), { t0, t1, t2, t3, t4, t5 -> SubqueryTestSqlRow(t0, t1, t2, t3, t4, t5) }, { row -> arrayOf(row.customerId, row.email, row.firstName, row.orderCount, row.totalSpent, row.favoriteBrand) }) } } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/update_order_status/UpdateOrderStatusSqlRepoImpl.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/update_order_status/UpdateOrderStatusSqlRepoImpl.kt index 437c8b5e22..5dcdb2c97c 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/update_order_status/UpdateOrderStatusSqlRepoImpl.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/update_order_status/UpdateOrderStatusSqlRepoImpl.kt @@ -15,5 +15,5 @@ class UpdateOrderStatusSqlRepoImpl() : UpdateOrderStatusSqlRepo { newStatus: String, orderId: /* user-picked */ OrdersId, c: Connection - ): Int = Fragment.interpolate(Fragment.lit("-- Update order status\nUPDATE orders\nSET order_status = "), Fragment.encode(MariaTypes.varchar, newStatus), Fragment.lit(",\n confirmed_at = CASE WHEN "), Fragment.encode(MariaTypes.varchar, newStatus), Fragment.lit(" = 'confirmed' THEN NOW(6) ELSE confirmed_at END,\n shipped_at = CASE WHEN "), Fragment.encode(MariaTypes.varchar, newStatus), Fragment.lit(" = 'shipped' THEN NOW(6) ELSE shipped_at END,\n delivered_at = CASE WHEN "), Fragment.encode(MariaTypes.varchar, newStatus), Fragment.lit(" = 'delivered' THEN NOW(6) ELSE delivered_at END\nWHERE order_id = "), Fragment.encode(OrdersId.dbType, orderId), Fragment.lit("\n")).update().runUnchecked(c) + ): Int = Fragment.interpolate(Fragment.lit("-- Update order status\nUPDATE orders\nSET order_status = "), Fragment.encode(MariaTypes.varchar, newStatus), Fragment.lit(",\n confirmed_at = CASE WHEN "), Fragment.encode(MariaTypes.varchar, newStatus), Fragment.lit(" = 'confirmed' THEN NOW(6) ELSE confirmed_at END,\n shipped_at = CASE WHEN "), Fragment.encode(MariaTypes.varchar, newStatus), Fragment.lit(" = 'shipped' THEN NOW(6) ELSE shipped_at END,\n delivered_at = CASE WHEN "), Fragment.encode(MariaTypes.varchar, newStatus), Fragment.lit(" = 'delivered' THEN NOW(6) ELSE delivered_at END\nWHERE order_id = "), Fragment.encode(OrdersId.mariaType, orderId), Fragment.lit("\n")).update().runUnchecked(c) } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/userdefined/Email.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/userdefined/Email.kt new file mode 100644 index 0000000000..e0f7ba196f --- /dev/null +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/userdefined/Email.kt @@ -0,0 +1,28 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package testdb.userdefined + +import com.fasterxml.jackson.annotation.JsonValue +import dev.typr.foundations.MariaType +import dev.typr.foundations.MariaTypes +import dev.typr.foundations.kotlin.Bijection + +/** Shared type `Email` + * Generated from TypeDefinitions matching + */ +data class Email(@field:JsonValue val value: String) { + override fun toString(): kotlin.String { + return value.toString() + } + + companion object { + val bijection: Bijection = + Bijection.of(Email::value, ::Email) + + val mariaType: MariaType = + MariaTypes.varchar.bimap(::Email, Email::value) + } +} \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/userdefined/FirstName.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/userdefined/FirstName.kt new file mode 100644 index 0000000000..58f05c691e --- /dev/null +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/userdefined/FirstName.kt @@ -0,0 +1,28 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package testdb.userdefined + +import com.fasterxml.jackson.annotation.JsonValue +import dev.typr.foundations.MariaType +import dev.typr.foundations.MariaTypes +import dev.typr.foundations.kotlin.Bijection + +/** Shared type `FirstName` + * Generated from TypeDefinitions matching + */ +data class FirstName(@field:JsonValue val value: String) { + override fun toString(): kotlin.String { + return value.toString() + } + + companion object { + val bijection: Bijection = + Bijection.of(FirstName::value, ::FirstName) + + val mariaType: MariaType = + MariaTypes.varchar.bimap(::FirstName, FirstName::value) + } +} \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/userdefined/IsActive.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/userdefined/IsActive.kt new file mode 100644 index 0000000000..6fe82dc2dc --- /dev/null +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/userdefined/IsActive.kt @@ -0,0 +1,28 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package testdb.userdefined + +import com.fasterxml.jackson.annotation.JsonValue +import dev.typr.foundations.MariaType +import dev.typr.foundations.kotlin.Bijection +import dev.typr.foundations.kotlin.KotlinDbTypes + +/** Shared type `IsActive` + * Generated from TypeDefinitions matching + */ +data class IsActive(@field:JsonValue val value: Boolean) { + override fun toString(): kotlin.String { + return value.toString() + } + + companion object { + val bijection: Bijection = + Bijection.of(IsActive::value, ::IsActive) + + val mariaType: MariaType = + KotlinDbTypes.MariaTypes.bool.bimap(::IsActive, IsActive::value) + } +} \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/userdefined/IsApproved.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/userdefined/IsApproved.kt new file mode 100644 index 0000000000..1011af505e --- /dev/null +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/userdefined/IsApproved.kt @@ -0,0 +1,28 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package testdb.userdefined + +import com.fasterxml.jackson.annotation.JsonValue +import dev.typr.foundations.MariaType +import dev.typr.foundations.kotlin.Bijection +import dev.typr.foundations.kotlin.KotlinDbTypes + +/** Shared type `IsApproved` + * Generated from TypeDefinitions matching + */ +data class IsApproved(@field:JsonValue val value: Boolean) { + override fun toString(): kotlin.String { + return value.toString() + } + + companion object { + val bijection: Bijection = + Bijection.of(IsApproved::value, ::IsApproved) + + val mariaType: MariaType = + KotlinDbTypes.MariaTypes.bool.bimap(::IsApproved, IsApproved::value) + } +} \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/userdefined/IsDefault.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/userdefined/IsDefault.kt new file mode 100644 index 0000000000..0955738255 --- /dev/null +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/userdefined/IsDefault.kt @@ -0,0 +1,28 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package testdb.userdefined + +import com.fasterxml.jackson.annotation.JsonValue +import dev.typr.foundations.MariaType +import dev.typr.foundations.kotlin.Bijection +import dev.typr.foundations.kotlin.KotlinDbTypes + +/** Shared type `IsDefault` + * Generated from TypeDefinitions matching + */ +data class IsDefault(@field:JsonValue val value: Boolean) { + override fun toString(): kotlin.String { + return value.toString() + } + + companion object { + val bijection: Bijection = + Bijection.of(IsDefault::value, ::IsDefault) + + val mariaType: MariaType = + KotlinDbTypes.MariaTypes.bool.bimap(::IsDefault, IsDefault::value) + } +} \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/userdefined/IsPrimary.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/userdefined/IsPrimary.kt new file mode 100644 index 0000000000..183d67b6e0 --- /dev/null +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/userdefined/IsPrimary.kt @@ -0,0 +1,28 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package testdb.userdefined + +import com.fasterxml.jackson.annotation.JsonValue +import dev.typr.foundations.MariaType +import dev.typr.foundations.kotlin.Bijection +import dev.typr.foundations.kotlin.KotlinDbTypes + +/** Shared type `IsPrimary` + * Generated from TypeDefinitions matching + */ +data class IsPrimary(@field:JsonValue val value: Boolean) { + override fun toString(): kotlin.String { + return value.toString() + } + + companion object { + val bijection: Bijection = + Bijection.of(IsPrimary::value, ::IsPrimary) + + val mariaType: MariaType = + KotlinDbTypes.MariaTypes.bool.bimap(::IsPrimary, IsPrimary::value) + } +} \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/userdefined/IsVerifiedPurchase.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/userdefined/IsVerifiedPurchase.kt new file mode 100644 index 0000000000..5f61c30ef6 --- /dev/null +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/userdefined/IsVerifiedPurchase.kt @@ -0,0 +1,28 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package testdb.userdefined + +import com.fasterxml.jackson.annotation.JsonValue +import dev.typr.foundations.MariaType +import dev.typr.foundations.kotlin.Bijection +import dev.typr.foundations.kotlin.KotlinDbTypes + +/** Shared type `IsVerifiedPurchase` + * Generated from TypeDefinitions matching + */ +data class IsVerifiedPurchase(@field:JsonValue val value: Boolean) { + override fun toString(): kotlin.String { + return value.toString() + } + + companion object { + val bijection: Bijection = + Bijection.of(IsVerifiedPurchase::value, ::IsVerifiedPurchase) + + val mariaType: MariaType = + KotlinDbTypes.MariaTypes.bool.bimap(::IsVerifiedPurchase, IsVerifiedPurchase::value) + } +} \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/userdefined/LastName.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/userdefined/LastName.kt new file mode 100644 index 0000000000..4907b5b08f --- /dev/null +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/userdefined/LastName.kt @@ -0,0 +1,28 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package testdb.userdefined + +import com.fasterxml.jackson.annotation.JsonValue +import dev.typr.foundations.MariaType +import dev.typr.foundations.MariaTypes +import dev.typr.foundations.kotlin.Bijection + +/** Shared type `LastName` + * Generated from TypeDefinitions matching + */ +data class LastName(@field:JsonValue val value: String) { + override fun toString(): kotlin.String { + return value.toString() + } + + companion object { + val bijection: Bijection = + Bijection.of(LastName::value, ::LastName) + + val mariaType: MariaType = + MariaTypes.varchar.bimap(::LastName, LastName::value) + } +} \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/v_customer_summary/VCustomerSummaryViewFields.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/v_customer_summary/VCustomerSummaryViewFields.kt index 9a67868d3c..b1c0b6ec0a 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/v_customer_summary/VCustomerSummaryViewFields.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/v_customer_summary/VCustomerSummaryViewFields.kt @@ -21,13 +21,14 @@ import java.time.LocalDateTime import kotlin.collections.List import testdb.customer_status.CustomerStatusId import testdb.customers.CustomersId +import testdb.userdefined.Email -data class VCustomerSummaryViewFields(val _path: List) : TupleExpr10, RelationStructure, FieldsBase { +data class VCustomerSummaryViewFields(val _path: List) : TupleExpr10, RelationStructure, FieldsBase { override fun _1(): SqlExpr = customerId() override fun _10(): SqlExpr = lastOrderDate() - override fun _2(): SqlExpr = email() + override fun _2(): SqlExpr = email() override fun _3(): SqlExpr = fullName() @@ -49,9 +50,9 @@ data class VCustomerSummaryViewFields(val _path: List) : TupleExpr10 = Field(_path, "created_at", VCustomerSummaryViewRow::createdAt, null, null, { row, value -> row.copy(createdAt = value) }, MariaTypes.datetime) - fun customerId(): Field = Field(_path, "customer_id", VCustomerSummaryViewRow::customerId, null, null, { row, value -> row.copy(customerId = value) }, CustomersId.dbType) + fun customerId(): Field = Field(_path, "customer_id", VCustomerSummaryViewRow::customerId, null, null, { row, value -> row.copy(customerId = value) }, CustomersId.mariaType) - fun email(): Field = Field(_path, "email", VCustomerSummaryViewRow::email, null, null, { row, value -> row.copy(email = value) }, MariaTypes.varchar) + fun email(): Field = Field(_path, "email", VCustomerSummaryViewRow::email, null, null, { row, value -> row.copy(email = value) }, Email.mariaType) fun fullName(): OptField = OptField(_path, "full_name", VCustomerSummaryViewRow::fullName, null, null, { row, value -> row.copy(fullName = value) }, MariaTypes.varchar) @@ -63,7 +64,7 @@ data class VCustomerSummaryViewFields(val _path: List) : TupleExpr10 = VCustomerSummaryViewRow._rowParser.underlying - fun status(): Field = Field(_path, "status", VCustomerSummaryViewRow::status, null, null, { row, value -> row.copy(status = value) }, CustomerStatusId.dbType) + fun status(): Field = Field(_path, "status", VCustomerSummaryViewRow::status, null, null, { row, value -> row.copy(status = value) }, CustomerStatusId.mariaType) fun tier(): Field = Field(_path, "tier", VCustomerSummaryViewRow::tier, null, null, { row, value -> row.copy(tier = value) }, MariaTypes.text) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/v_customer_summary/VCustomerSummaryViewRow.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/v_customer_summary/VCustomerSummaryViewRow.kt index 4e417a2b30..5a6f92357f 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/v_customer_summary/VCustomerSummaryViewRow.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/v_customer_summary/VCustomerSummaryViewRow.kt @@ -16,6 +16,7 @@ import java.math.BigDecimal import java.time.LocalDateTime import testdb.customer_status.CustomerStatusId import testdb.customers.CustomersId +import testdb.userdefined.Email /** View: v_customer_summary * VIEW @@ -29,7 +30,7 @@ data class VCustomerSummaryViewRow( /** * Points to [testdb.customers.CustomersRow.email] */ - val email: String, + val email: /* user-picked */ Email, /** * Default: NULL */ @@ -66,12 +67,12 @@ data class VCustomerSummaryViewRow( * Default: current_timestamp(6) */ @field:JsonProperty("last_order_date") val lastOrderDate: LocalDateTime? -) : Tuple10 { +) : Tuple10 { override fun _1(): CustomersId = customerId override fun _10(): LocalDateTime? = lastOrderDate - override fun _2(): String = email + override fun _2(): /* user-picked */ Email = email override fun _3(): String? = fullName @@ -88,6 +89,6 @@ data class VCustomerSummaryViewRow( override fun _9(): BigDecimal = lifetimeValue companion object { - val _rowParser: RowParser = RowParsers.of(CustomersId.dbType, MariaTypes.varchar, MariaTypes.varchar.nullable(), MariaTypes.text, CustomerStatusId.dbType, MariaTypes.datetime, MariaTypes.datetime.nullable(), KotlinDbTypes.MariaTypes.bigint, KotlinDbTypes.MariaTypes.numeric, MariaTypes.datetime.nullable(), { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9 -> VCustomerSummaryViewRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9) }, { row -> arrayOf(row.customerId, row.email, row.fullName, row.tier, row.status, row.createdAt, row.lastLoginAt, row.totalOrders, row.lifetimeValue, row.lastOrderDate) }) + val _rowParser: RowParser = RowParsers.of(CustomersId.mariaType, Email.mariaType, MariaTypes.varchar.nullable(), MariaTypes.text, CustomerStatusId.mariaType, MariaTypes.datetime, MariaTypes.datetime.nullable(), KotlinDbTypes.MariaTypes.bigint, KotlinDbTypes.MariaTypes.numeric, MariaTypes.datetime.nullable(), { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9 -> VCustomerSummaryViewRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9) }, { row -> arrayOf(row.customerId, row.email, row.fullName, row.tier, row.status, row.createdAt, row.lastLoginAt, row.totalOrders, row.lifetimeValue, row.lastOrderDate) }) } } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/v_inventory_status/VInventoryStatusViewFields.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/v_inventory_status/VInventoryStatusViewFields.kt index 821da86c00..562e3efc74 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/v_inventory_status/VInventoryStatusViewFields.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/v_inventory_status/VInventoryStatusViewFields.kt @@ -60,7 +60,7 @@ data class VInventoryStatusViewFields(val _path: List) : TupleExpr14 = OptField(_path, "last_counted_at", VInventoryStatusViewRow::lastCountedAt, null, null, { row, value -> row.copy(lastCountedAt = value) }, MariaTypes.datetime) - fun productId(): Field = Field(_path, "product_id", VInventoryStatusViewRow::productId, null, null, { row, value -> row.copy(productId = value) }, ProductsId.dbType) + fun productId(): Field = Field(_path, "product_id", VInventoryStatusViewRow::productId, null, null, { row, value -> row.copy(productId = value) }, ProductsId.mariaType) fun productName(): Field = Field(_path, "product_name", VInventoryStatusViewRow::productName, null, null, { row, value -> row.copy(productName = value) }, MariaTypes.varchar) @@ -80,7 +80,7 @@ data class VInventoryStatusViewFields(val _path: List) : TupleExpr14 = Field(_path, "warehouse_code", VInventoryStatusViewRow::warehouseCode, null, null, { row, value -> row.copy(warehouseCode = value) }, MariaTypes.char_) - fun warehouseId(): Field = Field(_path, "warehouse_id", VInventoryStatusViewRow::warehouseId, null, null, { row, value -> row.copy(warehouseId = value) }, WarehousesId.dbType) + fun warehouseId(): Field = Field(_path, "warehouse_id", VInventoryStatusViewRow::warehouseId, null, null, { row, value -> row.copy(warehouseId = value) }, WarehousesId.mariaType) fun warehouseName(): Field = Field(_path, "warehouse_name", VInventoryStatusViewRow::warehouseName, null, null, { row, value -> row.copy(warehouseName = value) }, MariaTypes.varchar) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/v_inventory_status/VInventoryStatusViewRow.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/v_inventory_status/VInventoryStatusViewRow.kt index 70fe608485..7fb88cdeaf 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/v_inventory_status/VInventoryStatusViewRow.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/v_inventory_status/VInventoryStatusViewRow.kt @@ -114,6 +114,6 @@ data class VInventoryStatusViewRow( override fun _9(): Int = quantityOnOrder companion object { - val _rowParser: RowParser = RowParsers.of(ProductsId.dbType, MariaTypes.varchar, MariaTypes.varchar, WarehousesId.dbType, MariaTypes.char_, MariaTypes.varchar, KotlinDbTypes.MariaTypes.int_, KotlinDbTypes.MariaTypes.int_, KotlinDbTypes.MariaTypes.int_, KotlinDbTypes.MariaTypes.bigint, KotlinDbTypes.MariaTypes.int_, MariaTypes.varchar, MariaTypes.varchar.nullable(), MariaTypes.datetime.nullable(), { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13 -> VInventoryStatusViewRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13) }, { row -> arrayOf(row.productId, row.sku, row.productName, row.warehouseId, row.warehouseCode, row.warehouseName, row.quantityOnHand, row.quantityReserved, row.quantityOnOrder, row.available, row.reorderPoint, row.stockStatus, row.binLocation, row.lastCountedAt) }) + val _rowParser: RowParser = RowParsers.of(ProductsId.mariaType, MariaTypes.varchar, MariaTypes.varchar, WarehousesId.mariaType, MariaTypes.char_, MariaTypes.varchar, KotlinDbTypes.MariaTypes.int_, KotlinDbTypes.MariaTypes.int_, KotlinDbTypes.MariaTypes.int_, KotlinDbTypes.MariaTypes.bigint, KotlinDbTypes.MariaTypes.int_, MariaTypes.varchar, MariaTypes.varchar.nullable(), MariaTypes.datetime.nullable(), { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13 -> VInventoryStatusViewRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13) }, { row -> arrayOf(row.productId, row.sku, row.productName, row.warehouseId, row.warehouseCode, row.warehouseName, row.quantityOnHand, row.quantityReserved, row.quantityOnOrder, row.available, row.reorderPoint, row.stockStatus, row.binLocation, row.lastCountedAt) }) } } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/v_order_details/VOrderDetailsViewFields.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/v_order_details/VOrderDetailsViewFields.kt index dffba7579c..77708b72af 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/v_order_details/VOrderDetailsViewFields.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/v_order_details/VOrderDetailsViewFields.kt @@ -20,8 +20,9 @@ import java.math.BigDecimal import java.time.LocalDateTime import kotlin.collections.List import testdb.orders.OrdersId +import testdb.userdefined.Email -data class VOrderDetailsViewFields(val _path: List) : TupleExpr14, RelationStructure, FieldsBase { +data class VOrderDetailsViewFields(val _path: List) : TupleExpr14, RelationStructure, FieldsBase { override fun _1(): SqlExpr = orderId() override fun _10(): SqlExpr = itemCount() @@ -46,7 +47,7 @@ data class VOrderDetailsViewFields(val _path: List) : TupleExpr14 = orderedAt() - override fun _8(): SqlExpr = customerEmail() + override fun _8(): SqlExpr = customerEmail() override fun _9(): SqlExpr = customerName() @@ -58,13 +59,13 @@ data class VOrderDetailsViewFields(val _path: List) : TupleExpr14 = Field(_path, "currency_code", VOrderDetailsViewRow::currencyCode, null, null, { row, value -> row.copy(currencyCode = value) }, MariaTypes.char_) - fun customerEmail(): Field = Field(_path, "customer_email", VOrderDetailsViewRow::customerEmail, null, null, { row, value -> row.copy(customerEmail = value) }, MariaTypes.varchar) + fun customerEmail(): Field = Field(_path, "customer_email", VOrderDetailsViewRow::customerEmail, null, null, { row, value -> row.copy(customerEmail = value) }, Email.mariaType) fun customerName(): OptField = OptField(_path, "customer_name", VOrderDetailsViewRow::customerName, null, null, { row, value -> row.copy(customerName = value) }, MariaTypes.varchar) fun itemCount(): Field = Field(_path, "item_count", VOrderDetailsViewRow::itemCount, null, null, { row, value -> row.copy(itemCount = value) }, KotlinDbTypes.MariaTypes.bigint) - fun orderId(): Field = Field(_path, "order_id", VOrderDetailsViewRow::orderId, null, null, { row, value -> row.copy(orderId = value) }, OrdersId.dbType) + fun orderId(): Field = Field(_path, "order_id", VOrderDetailsViewRow::orderId, null, null, { row, value -> row.copy(orderId = value) }, OrdersId.mariaType) fun orderNumber(): Field = Field(_path, "order_number", VOrderDetailsViewRow::orderNumber, null, null, { row, value -> row.copy(orderNumber = value) }, MariaTypes.varchar) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/v_order_details/VOrderDetailsViewRow.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/v_order_details/VOrderDetailsViewRow.kt index 23ad066095..94ed6884b6 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/v_order_details/VOrderDetailsViewRow.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/v_order_details/VOrderDetailsViewRow.kt @@ -15,6 +15,7 @@ import dev.typr.foundations.kotlin.nullable import java.math.BigDecimal import java.time.LocalDateTime import testdb.orders.OrdersId +import testdb.userdefined.Email /** View: v_order_details * VIEW @@ -56,7 +57,7 @@ data class VOrderDetailsViewRow( /** * Points to [testdb.customers.CustomersRow.email] */ - @field:JsonProperty("customer_email") val customerEmail: String, + @field:JsonProperty("customer_email") val customerEmail: /* user-picked */ Email, /** * Default: NULL */ @@ -83,7 +84,7 @@ data class VOrderDetailsViewRow( * Points to [testdb.shipping_carriers.ShippingCarriersRow.name] */ @field:JsonProperty("carrier_name") val carrierName: String? -) : Tuple14 { +) : Tuple14 { override fun _1(): OrdersId = orderId override fun _10(): Long = itemCount @@ -108,11 +109,11 @@ data class VOrderDetailsViewRow( override fun _7(): LocalDateTime = orderedAt - override fun _8(): String = customerEmail + override fun _8(): /* user-picked */ Email = customerEmail override fun _9(): String? = customerName companion object { - val _rowParser: RowParser = RowParsers.of(OrdersId.dbType, MariaTypes.varchar, MariaTypes.text, MariaTypes.text, KotlinDbTypes.MariaTypes.numeric, MariaTypes.char_, MariaTypes.datetime, MariaTypes.varchar, MariaTypes.varchar.nullable(), KotlinDbTypes.MariaTypes.bigint, KotlinDbTypes.MariaTypes.numeric.nullable(), MariaTypes.varchar.nullable(), MariaTypes.text.nullable(), MariaTypes.varchar.nullable(), { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13 -> VOrderDetailsViewRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13) }, { row -> arrayOf(row.orderId, row.orderNumber, row.orderStatus, row.paymentStatus, row.totalAmount, row.currencyCode, row.orderedAt, row.customerEmail, row.customerName, row.itemCount, row.totalQuantity, row.trackingNumber, row.shippingStatus, row.carrierName) }) + val _rowParser: RowParser = RowParsers.of(OrdersId.mariaType, MariaTypes.varchar, MariaTypes.text, MariaTypes.text, KotlinDbTypes.MariaTypes.numeric, MariaTypes.char_, MariaTypes.datetime, Email.mariaType, MariaTypes.varchar.nullable(), KotlinDbTypes.MariaTypes.bigint, KotlinDbTypes.MariaTypes.numeric.nullable(), MariaTypes.varchar.nullable(), MariaTypes.text.nullable(), MariaTypes.varchar.nullable(), { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13 -> VOrderDetailsViewRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13) }, { row -> arrayOf(row.orderId, row.orderNumber, row.orderStatus, row.paymentStatus, row.totalAmount, row.currencyCode, row.orderedAt, row.customerEmail, row.customerName, row.itemCount, row.totalQuantity, row.trackingNumber, row.shippingStatus, row.carrierName) }) } } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/v_product_catalog/VProductCatalogViewFields.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/v_product_catalog/VProductCatalogViewFields.kt index d9f7ce80f3..49d072f206 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/v_product_catalog/VProductCatalogViewFields.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/v_product_catalog/VProductCatalogViewFields.kt @@ -58,7 +58,7 @@ data class VProductCatalogViewFields(val _path: List) : TupleExpr11 = Field(_path, "name", VProductCatalogViewRow::name, null, null, { row, value -> row.copy(name = value) }, MariaTypes.varchar) - fun productId(): Field = Field(_path, "product_id", VProductCatalogViewRow::productId, null, null, { row, value -> row.copy(productId = value) }, ProductsId.dbType) + fun productId(): Field = Field(_path, "product_id", VProductCatalogViewRow::productId, null, null, { row, value -> row.copy(productId = value) }, ProductsId.mariaType) fun reviewCount(): Field = Field(_path, "review_count", VProductCatalogViewRow::reviewCount, null, null, { row, value -> row.copy(reviewCount = value) }, KotlinDbTypes.MariaTypes.bigint) @@ -70,7 +70,7 @@ data class VProductCatalogViewFields(val _path: List) : TupleExpr11 = Field(_path, "status", VProductCatalogViewRow::status, null, null, { row, value -> row.copy(status = value) }, MariaTypes.text) - fun tags(): OptField = OptField(_path, "tags", VProductCatalogViewRow::tags, null, null, { row, value -> row.copy(tags = value) }, BestsellerClearanceFSet.dbType) + fun tags(): OptField = OptField(_path, "tags", VProductCatalogViewRow::tags, null, null, { row, value -> row.copy(tags = value) }, BestsellerClearanceFSet.mariaType) override fun withPaths(_path: List): RelationStructure = VProductCatalogViewFields(_path) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/v_product_catalog/VProductCatalogViewRow.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/v_product_catalog/VProductCatalogViewRow.kt index d7caaf979e..1cd49d3765 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/v_product_catalog/VProductCatalogViewRow.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/v_product_catalog/VProductCatalogViewRow.kt @@ -92,6 +92,6 @@ data class VProductCatalogViewRow( override fun _9(): BigDecimal = availableQuantity companion object { - val _rowParser: RowParser = RowParsers.of(ProductsId.dbType, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.varchar.nullable(), KotlinDbTypes.MariaTypes.numeric, MariaTypes.text, BestsellerClearanceFSet.dbType.nullable(), MariaTypes.varchar.nullable(), KotlinDbTypes.MariaTypes.numeric, KotlinDbTypes.MariaTypes.numeric, KotlinDbTypes.MariaTypes.bigint, { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10 -> VProductCatalogViewRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10) }, { row -> arrayOf(row.productId, row.sku, row.name, row.shortDescription, row.basePrice, row.status, row.tags, row.brandName, row.availableQuantity, row.avgRating, row.reviewCount) }) + val _rowParser: RowParser = RowParsers.of(ProductsId.mariaType, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.varchar.nullable(), KotlinDbTypes.MariaTypes.numeric, MariaTypes.text, BestsellerClearanceFSet.mariaType.nullable(), MariaTypes.varchar.nullable(), KotlinDbTypes.MariaTypes.numeric, KotlinDbTypes.MariaTypes.numeric, KotlinDbTypes.MariaTypes.bigint, { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10 -> VProductCatalogViewRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10) }, { row -> arrayOf(row.productId, row.sku, row.name, row.shortDescription, row.basePrice, row.status, row.tags, row.brandName, row.availableQuantity, row.avgRating, row.reviewCount) }) } } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/v_warehouse_coverage/VWarehouseCoverageViewFields.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/v_warehouse_coverage/VWarehouseCoverageViewFields.kt index 6159be025d..65a27f2947 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/v_warehouse_coverage/VWarehouseCoverageViewFields.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/v_warehouse_coverage/VWarehouseCoverageViewFields.kt @@ -18,9 +18,10 @@ import dev.typr.foundations.kotlin.SqlExpr.OptField import dev.typr.foundations.kotlin.TupleExpr10 import java.math.BigDecimal import kotlin.collections.List +import testdb.userdefined.IsActive import testdb.warehouses.WarehousesId -data class VWarehouseCoverageViewFields(val _path: List) : TupleExpr10, RelationStructure, FieldsBase { +data class VWarehouseCoverageViewFields(val _path: List) : TupleExpr10, RelationStructure, FieldsBase { override fun _1(): SqlExpr = warehouseId() override fun _10(): SqlExpr = totalInventory() @@ -37,7 +38,7 @@ data class VWarehouseCoverageViewFields(val _path: List) : TupleExpr10 = timezone() - override fun _8(): SqlExpr = isActive() + override fun _8(): SqlExpr = isActive() override fun _9(): SqlExpr = productsStocked() @@ -49,7 +50,7 @@ data class VWarehouseCoverageViewFields(val _path: List) : TupleExpr10> = listOf(this.warehouseId().underlying, this.code().underlying, this.name().underlying, this.address().underlying, this.locationWkt().underlying, this.serviceAreaWkt().underlying, this.timezone().underlying, this.isActive().underlying, this.productsStocked().underlying, this.totalInventory().underlying) - fun isActive(): Field = Field(_path, "is_active", VWarehouseCoverageViewRow::isActive, null, null, { row, value -> row.copy(isActive = value) }, KotlinDbTypes.MariaTypes.bool) + fun isActive(): Field = Field(_path, "is_active", VWarehouseCoverageViewRow::isActive, null, null, { row, value -> row.copy(isActive = value) }, IsActive.mariaType) fun locationWkt(): OptField = OptField(_path, "location_wkt", VWarehouseCoverageViewRow::locationWkt, null, null, { row, value -> row.copy(locationWkt = value) }, MariaTypes.longtext) @@ -65,7 +66,7 @@ data class VWarehouseCoverageViewFields(val _path: List) : TupleExpr10 = OptField(_path, "total_inventory", VWarehouseCoverageViewRow::totalInventory, null, null, { row, value -> row.copy(totalInventory = value) }, KotlinDbTypes.MariaTypes.numeric) - fun warehouseId(): Field = Field(_path, "warehouse_id", VWarehouseCoverageViewRow::warehouseId, null, null, { row, value -> row.copy(warehouseId = value) }, WarehousesId.dbType) + fun warehouseId(): Field = Field(_path, "warehouse_id", VWarehouseCoverageViewRow::warehouseId, null, null, { row, value -> row.copy(warehouseId = value) }, WarehousesId.mariaType) override fun withPaths(_path: List): RelationStructure = VWarehouseCoverageViewFields(_path) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/v_warehouse_coverage/VWarehouseCoverageViewRow.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/v_warehouse_coverage/VWarehouseCoverageViewRow.kt index d3c83e3ded..36bc21f502 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/v_warehouse_coverage/VWarehouseCoverageViewRow.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/v_warehouse_coverage/VWarehouseCoverageViewRow.kt @@ -13,6 +13,7 @@ import dev.typr.foundations.kotlin.RowParser import dev.typr.foundations.kotlin.RowParsers import dev.typr.foundations.kotlin.nullable import java.math.BigDecimal +import testdb.userdefined.IsActive import testdb.warehouses.WarehousesId /** View: v_warehouse_coverage @@ -53,7 +54,7 @@ data class VWarehouseCoverageViewRow( * Default: 1 * Points to [testdb.warehouses.WarehousesRow.isActive] */ - @field:JsonProperty("is_active") val isActive: Boolean, + @field:JsonProperty("is_active") val isActive: /* user-picked */ IsActive, /** * Default: 0 */ @@ -62,7 +63,7 @@ data class VWarehouseCoverageViewRow( * Default: NULL */ @field:JsonProperty("total_inventory") val totalInventory: BigDecimal? -) : Tuple10 { +) : Tuple10 { override fun _1(): WarehousesId = warehouseId override fun _10(): BigDecimal? = totalInventory @@ -79,11 +80,11 @@ data class VWarehouseCoverageViewRow( override fun _7(): String = timezone - override fun _8(): Boolean = isActive + override fun _8(): /* user-picked */ IsActive = isActive override fun _9(): Long = productsStocked companion object { - val _rowParser: RowParser = RowParsers.of(WarehousesId.dbType, MariaTypes.char_, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.longtext.nullable(), MariaTypes.longtext.nullable(), MariaTypes.varchar, KotlinDbTypes.MariaTypes.bool, KotlinDbTypes.MariaTypes.bigint, KotlinDbTypes.MariaTypes.numeric.nullable(), { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9 -> VWarehouseCoverageViewRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9) }, { row -> arrayOf(row.warehouseId, row.code, row.name, row.address, row.locationWkt, row.serviceAreaWkt, row.timezone, row.isActive, row.productsStocked, row.totalInventory) }) + val _rowParser: RowParser = RowParsers.of(WarehousesId.mariaType, MariaTypes.char_, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.longtext.nullable(), MariaTypes.longtext.nullable(), MariaTypes.varchar, IsActive.mariaType, KotlinDbTypes.MariaTypes.bigint, KotlinDbTypes.MariaTypes.numeric.nullable(), { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9 -> VWarehouseCoverageViewRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9) }, { row -> arrayOf(row.warehouseId, row.code, row.name, row.address, row.locationWkt, row.serviceAreaWkt, row.timezone, row.isActive, row.productsStocked, row.totalInventory) }) } } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/warehouses/WarehousesFields.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/warehouses/WarehousesFields.kt index 4fe4757886..44262479d6 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/warehouses/WarehousesFields.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/warehouses/WarehousesFields.kt @@ -10,7 +10,6 @@ import dev.typr.foundations.RowParser import dev.typr.foundations.dsl.FieldsBase import dev.typr.foundations.dsl.Path import dev.typr.foundations.dsl.SqlExpr.FieldLike -import dev.typr.foundations.kotlin.KotlinDbTypes import dev.typr.foundations.kotlin.RelationStructure import dev.typr.foundations.kotlin.SqlExpr import dev.typr.foundations.kotlin.SqlExpr.Field @@ -20,8 +19,10 @@ import dev.typr.foundations.kotlin.TupleExpr10 import kotlin.collections.List import org.mariadb.jdbc.type.Point import org.mariadb.jdbc.type.Polygon +import testdb.userdefined.Email +import testdb.userdefined.IsActive -data class WarehousesFields(val _path: List) : TupleExpr10, RelationStructure, FieldsBase { +data class WarehousesFields(val _path: List) : TupleExpr10, RelationStructure, FieldsBase { override fun _1(): SqlExpr = warehouseId() override fun _10(): SqlExpr = contactPhone() @@ -38,9 +39,9 @@ data class WarehousesFields(val _path: List) : TupleExpr10 = timezone() - override fun _8(): SqlExpr = isActive() + override fun _8(): SqlExpr = isActive() - override fun _9(): SqlExpr = contactEmail() + override fun _9(): SqlExpr = contactEmail() override fun _path(): List = _path @@ -50,11 +51,11 @@ data class WarehousesFields(val _path: List) : TupleExpr10> = listOf(this.warehouseId().underlying, this.code().underlying, this.name().underlying, this.address().underlying, this.location().underlying, this.serviceArea().underlying, this.timezone().underlying, this.isActive().underlying, this.contactEmail().underlying, this.contactPhone().underlying) - fun contactEmail(): OptField = OptField(_path, "contact_email", WarehousesRow::contactEmail, null, null, { row, value -> row.copy(contactEmail = value) }, MariaTypes.varchar) + fun contactEmail(): OptField = OptField(_path, "contact_email", WarehousesRow::contactEmail, null, null, { row, value -> row.copy(contactEmail = value) }, Email.mariaType) fun contactPhone(): OptField = OptField(_path, "contact_phone", WarehousesRow::contactPhone, null, null, { row, value -> row.copy(contactPhone = value) }, MariaTypes.varchar) - fun isActive(): Field = Field(_path, "is_active", WarehousesRow::isActive, null, null, { row, value -> row.copy(isActive = value) }, KotlinDbTypes.MariaTypes.bool) + fun isActive(): Field = Field(_path, "is_active", WarehousesRow::isActive, null, null, { row, value -> row.copy(isActive = value) }, IsActive.mariaType) fun location(): Field = Field(_path, "location", WarehousesRow::location, null, null, { row, value -> row.copy(location = value) }, MariaTypes.point) @@ -66,7 +67,7 @@ data class WarehousesFields(val _path: List) : TupleExpr10 = Field(_path, "timezone", WarehousesRow::timezone, null, null, { row, value -> row.copy(timezone = value) }, MariaTypes.varchar) - fun warehouseId(): IdField = IdField(_path, "warehouse_id", WarehousesRow::warehouseId, null, null, { row, value -> row.copy(warehouseId = value) }, WarehousesId.dbType) + fun warehouseId(): IdField = IdField(_path, "warehouse_id", WarehousesRow::warehouseId, null, null, { row, value -> row.copy(warehouseId = value) }, WarehousesId.mariaType) override fun withPaths(_path: List): RelationStructure = WarehousesFields(_path) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/warehouses/WarehousesId.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/warehouses/WarehousesId.kt index 3efb98bf85..9214eddf06 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/warehouses/WarehousesId.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/warehouses/WarehousesId.kt @@ -21,7 +21,7 @@ data class WarehousesId(@field:JsonValue val value: Uint1) { val bijection: Bijection = Bijection.of(WarehousesId::value, ::WarehousesId) - val dbType: MariaType = + val mariaType: MariaType = MariaTypes.tinyintUnsigned.bimap(::WarehousesId, WarehousesId::value) } } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/warehouses/WarehousesRepoImpl.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/warehouses/WarehousesRepoImpl.kt index df16df9120..50fa554a3f 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/warehouses/WarehousesRepoImpl.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/warehouses/WarehousesRepoImpl.kt @@ -9,7 +9,6 @@ import dev.typr.foundations.MariaTypes import dev.typr.foundations.kotlin.DeleteBuilder import dev.typr.foundations.kotlin.Dialect import dev.typr.foundations.kotlin.Fragment -import dev.typr.foundations.kotlin.KotlinDbTypes import dev.typr.foundations.kotlin.SelectBuilder import dev.typr.foundations.kotlin.UpdateBuilder import dev.typr.foundations.kotlin.nullable @@ -19,6 +18,8 @@ import kotlin.collections.Iterator import kotlin.collections.List import kotlin.collections.Map import kotlin.collections.MutableMap +import testdb.userdefined.Email +import testdb.userdefined.IsActive class WarehousesRepoImpl() : WarehousesRepo { override fun delete(): DeleteBuilder = DeleteBuilder.of("`warehouses`", WarehousesFields.structure, Dialect.MARIADB) @@ -26,21 +27,21 @@ class WarehousesRepoImpl() : WarehousesRepo { override fun deleteById( warehouseId: WarehousesId, c: Connection - ): Boolean = Fragment.interpolate(Fragment.lit("delete from `warehouses` where `warehouse_id` = "), Fragment.encode(WarehousesId.dbType, warehouseId), Fragment.lit("")).update().runUnchecked(c) > 0 + ): Boolean = Fragment.interpolate(Fragment.lit("delete from `warehouses` where `warehouse_id` = "), Fragment.encode(WarehousesId.mariaType, warehouseId), Fragment.lit("")).update().runUnchecked(c) > 0 override fun deleteByIds( warehouseIds: Array, c: Connection ): Int { val fragments: ArrayList = ArrayList() - for (id in warehouseIds) { fragments.add(Fragment.encode(WarehousesId.dbType, id)) } + for (id in warehouseIds) { fragments.add(Fragment.encode(WarehousesId.mariaType, id)) } return Fragment.interpolate(Fragment.lit("delete from `warehouses` where `warehouse_id` in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).update().runUnchecked(c) } override fun insert( unsaved: WarehousesRow, c: Connection - ): WarehousesRow = Fragment.interpolate(Fragment.lit("insert into `warehouses`(`code`, `name`, `address`, `location`, `service_area`, `timezone`, `is_active`, `contact_email`, `contact_phone`)\nvalues ("), Fragment.encode(MariaTypes.char_, unsaved.code), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.name), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.address), Fragment.lit(", "), Fragment.encode(MariaTypes.point, unsaved.location), Fragment.lit(", "), Fragment.encode(MariaTypes.polygon.nullable(), unsaved.serviceArea), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.timezone), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.bool, unsaved.isActive), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.contactEmail), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.contactPhone), Fragment.lit(")\nRETURNING `warehouse_id`, `code`, `name`, `address`, `location`, `service_area`, `timezone`, `is_active`, `contact_email`, `contact_phone`\n")) + ): WarehousesRow = Fragment.interpolate(Fragment.lit("insert into `warehouses`(`code`, `name`, `address`, `location`, `service_area`, `timezone`, `is_active`, `contact_email`, `contact_phone`)\nvalues ("), Fragment.encode(MariaTypes.char_, unsaved.code), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.name), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.address), Fragment.lit(", "), Fragment.encode(MariaTypes.point, unsaved.location), Fragment.lit(", "), Fragment.encode(MariaTypes.polygon.nullable(), unsaved.serviceArea), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.timezone), Fragment.lit(", "), Fragment.encode(IsActive.mariaType, unsaved.isActive), Fragment.lit(", "), Fragment.encode(Email.mariaType.nullable(), unsaved.contactEmail), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.contactPhone), Fragment.lit(")\nRETURNING `warehouse_id`, `code`, `name`, `address`, `location`, `service_area`, `timezone`, `is_active`, `contact_email`, `contact_phone`\n")) .updateReturning(WarehousesRow._rowParser.exactlyOne()).runUnchecked(c) override fun insert( @@ -70,12 +71,12 @@ class WarehousesRepoImpl() : WarehousesRepo { unsaved.isActive.visit( { }, { value -> columns.add(Fragment.lit("`is_active`")) - values.add(Fragment.interpolate(Fragment.encode(KotlinDbTypes.MariaTypes.bool, value), Fragment.lit(""))) } + values.add(Fragment.interpolate(Fragment.encode(IsActive.mariaType, value), Fragment.lit(""))) } ); unsaved.contactEmail.visit( { }, { value -> columns.add(Fragment.lit("`contact_email`")) - values.add(Fragment.interpolate(Fragment.encode(MariaTypes.varchar.nullable(), value), Fragment.lit(""))) } + values.add(Fragment.interpolate(Fragment.encode(Email.mariaType.nullable(), value), Fragment.lit(""))) } ); unsaved.contactPhone.visit( { }, @@ -93,14 +94,14 @@ class WarehousesRepoImpl() : WarehousesRepo { override fun selectById( warehouseId: WarehousesId, c: Connection - ): WarehousesRow? = Fragment.interpolate(Fragment.lit("select `warehouse_id`, `code`, `name`, `address`, `location`, `service_area`, `timezone`, `is_active`, `contact_email`, `contact_phone`\nfrom `warehouses`\nwhere `warehouse_id` = "), Fragment.encode(WarehousesId.dbType, warehouseId), Fragment.lit("")).query(WarehousesRow._rowParser.first()).runUnchecked(c) + ): WarehousesRow? = Fragment.interpolate(Fragment.lit("select `warehouse_id`, `code`, `name`, `address`, `location`, `service_area`, `timezone`, `is_active`, `contact_email`, `contact_phone`\nfrom `warehouses`\nwhere `warehouse_id` = "), Fragment.encode(WarehousesId.mariaType, warehouseId), Fragment.lit("")).query(WarehousesRow._rowParser.first()).runUnchecked(c) override fun selectByIds( warehouseIds: Array, c: Connection ): List { val fragments: ArrayList = ArrayList() - for (id in warehouseIds) { fragments.add(Fragment.encode(WarehousesId.dbType, id)) } + for (id in warehouseIds) { fragments.add(Fragment.encode(WarehousesId.mariaType, id)) } return Fragment.interpolate(Fragment.lit("select `warehouse_id`, `code`, `name`, `address`, `location`, `service_area`, `timezone`, `is_active`, `contact_email`, `contact_phone` from `warehouses` where `warehouse_id` in ("), Fragment.comma(fragments.toMutableList()), Fragment.lit(")")).query(WarehousesRow._rowParser.all()).runUnchecked(c) } @@ -125,13 +126,13 @@ class WarehousesRepoImpl() : WarehousesRepo { c: Connection ): Boolean { val warehouseId: WarehousesId = row.warehouseId - return Fragment.interpolate(Fragment.lit("update `warehouses`\nset `code` = "), Fragment.encode(MariaTypes.char_, row.code), Fragment.lit(",\n`name` = "), Fragment.encode(MariaTypes.varchar, row.name), Fragment.lit(",\n`address` = "), Fragment.encode(MariaTypes.varchar, row.address), Fragment.lit(",\n`location` = "), Fragment.encode(MariaTypes.point, row.location), Fragment.lit(",\n`service_area` = "), Fragment.encode(MariaTypes.polygon.nullable(), row.serviceArea), Fragment.lit(",\n`timezone` = "), Fragment.encode(MariaTypes.varchar, row.timezone), Fragment.lit(",\n`is_active` = "), Fragment.encode(KotlinDbTypes.MariaTypes.bool, row.isActive), Fragment.lit(",\n`contact_email` = "), Fragment.encode(MariaTypes.varchar.nullable(), row.contactEmail), Fragment.lit(",\n`contact_phone` = "), Fragment.encode(MariaTypes.varchar.nullable(), row.contactPhone), Fragment.lit("\nwhere `warehouse_id` = "), Fragment.encode(WarehousesId.dbType, warehouseId), Fragment.lit("")).update().runUnchecked(c) > 0 + return Fragment.interpolate(Fragment.lit("update `warehouses`\nset `code` = "), Fragment.encode(MariaTypes.char_, row.code), Fragment.lit(",\n`name` = "), Fragment.encode(MariaTypes.varchar, row.name), Fragment.lit(",\n`address` = "), Fragment.encode(MariaTypes.varchar, row.address), Fragment.lit(",\n`location` = "), Fragment.encode(MariaTypes.point, row.location), Fragment.lit(",\n`service_area` = "), Fragment.encode(MariaTypes.polygon.nullable(), row.serviceArea), Fragment.lit(",\n`timezone` = "), Fragment.encode(MariaTypes.varchar, row.timezone), Fragment.lit(",\n`is_active` = "), Fragment.encode(IsActive.mariaType, row.isActive), Fragment.lit(",\n`contact_email` = "), Fragment.encode(Email.mariaType.nullable(), row.contactEmail), Fragment.lit(",\n`contact_phone` = "), Fragment.encode(MariaTypes.varchar.nullable(), row.contactPhone), Fragment.lit("\nwhere `warehouse_id` = "), Fragment.encode(WarehousesId.mariaType, warehouseId), Fragment.lit("")).update().runUnchecked(c) > 0 } override fun upsert( unsaved: WarehousesRow, c: Connection - ): WarehousesRow = Fragment.interpolate(Fragment.lit("INSERT INTO `warehouses`(`warehouse_id`, `code`, `name`, `address`, `location`, `service_area`, `timezone`, `is_active`, `contact_email`, `contact_phone`)\nVALUES ("), Fragment.encode(WarehousesId.dbType, unsaved.warehouseId), Fragment.lit(", "), Fragment.encode(MariaTypes.char_, unsaved.code), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.name), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.address), Fragment.lit(", "), Fragment.encode(MariaTypes.point, unsaved.location), Fragment.lit(", "), Fragment.encode(MariaTypes.polygon.nullable(), unsaved.serviceArea), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.timezone), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.MariaTypes.bool, unsaved.isActive), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.contactEmail), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.contactPhone), Fragment.lit(")\nON DUPLICATE KEY UPDATE `code` = VALUES(`code`),\n`name` = VALUES(`name`),\n`address` = VALUES(`address`),\n`location` = VALUES(`location`),\n`service_area` = VALUES(`service_area`),\n`timezone` = VALUES(`timezone`),\n`is_active` = VALUES(`is_active`),\n`contact_email` = VALUES(`contact_email`),\n`contact_phone` = VALUES(`contact_phone`)\nRETURNING `warehouse_id`, `code`, `name`, `address`, `location`, `service_area`, `timezone`, `is_active`, `contact_email`, `contact_phone`")) + ): WarehousesRow = Fragment.interpolate(Fragment.lit("INSERT INTO `warehouses`(`warehouse_id`, `code`, `name`, `address`, `location`, `service_area`, `timezone`, `is_active`, `contact_email`, `contact_phone`)\nVALUES ("), Fragment.encode(WarehousesId.mariaType, unsaved.warehouseId), Fragment.lit(", "), Fragment.encode(MariaTypes.char_, unsaved.code), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.name), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.address), Fragment.lit(", "), Fragment.encode(MariaTypes.point, unsaved.location), Fragment.lit(", "), Fragment.encode(MariaTypes.polygon.nullable(), unsaved.serviceArea), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar, unsaved.timezone), Fragment.lit(", "), Fragment.encode(IsActive.mariaType, unsaved.isActive), Fragment.lit(", "), Fragment.encode(Email.mariaType.nullable(), unsaved.contactEmail), Fragment.lit(", "), Fragment.encode(MariaTypes.varchar.nullable(), unsaved.contactPhone), Fragment.lit(")\nON DUPLICATE KEY UPDATE `code` = VALUES(`code`),\n`name` = VALUES(`name`),\n`address` = VALUES(`address`),\n`location` = VALUES(`location`),\n`service_area` = VALUES(`service_area`),\n`timezone` = VALUES(`timezone`),\n`is_active` = VALUES(`is_active`),\n`contact_email` = VALUES(`contact_email`),\n`contact_phone` = VALUES(`contact_phone`)\nRETURNING `warehouse_id`, `code`, `name`, `address`, `location`, `service_area`, `timezone`, `is_active`, `contact_email`, `contact_phone`")) .updateReturning(WarehousesRow._rowParser.exactlyOne()) .runUnchecked(c) diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/warehouses/WarehousesRow.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/warehouses/WarehousesRow.kt index 62478ae0b6..6c0adab98f 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/warehouses/WarehousesRow.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/warehouses/WarehousesRow.kt @@ -8,13 +8,14 @@ package testdb.warehouses import com.fasterxml.jackson.annotation.JsonProperty import dev.typr.foundations.MariaTypes import dev.typr.foundations.Tuple.Tuple10 -import dev.typr.foundations.kotlin.KotlinDbTypes import dev.typr.foundations.kotlin.RowParser import dev.typr.foundations.kotlin.RowParsers import dev.typr.foundations.kotlin.nullable import org.mariadb.jdbc.type.Point import org.mariadb.jdbc.type.Polygon import testdb.customtypes.Defaulted +import testdb.userdefined.Email +import testdb.userdefined.IsActive /** Table: warehouses * Primary key: warehouse_id @@ -43,16 +44,16 @@ data class WarehousesRow( /** * Default: 1 */ - @field:JsonProperty("is_active") val isActive: Boolean, + @field:JsonProperty("is_active") val isActive: /* user-picked */ IsActive, /** * Default: NULL */ - @field:JsonProperty("contact_email") val contactEmail: String?, + @field:JsonProperty("contact_email") val contactEmail: /* user-picked */ Email?, /** * Default: NULL */ @field:JsonProperty("contact_phone") val contactPhone: String? -) : Tuple10 { +) : Tuple10 { override fun _1(): WarehousesId = warehouseId override fun _10(): String? = contactPhone @@ -69,21 +70,21 @@ data class WarehousesRow( override fun _7(): String = timezone - override fun _8(): Boolean = isActive + override fun _8(): /* user-picked */ IsActive = isActive - override fun _9(): String? = contactEmail + override fun _9(): /* user-picked */ Email? = contactEmail fun id(): WarehousesId = warehouseId fun toUnsavedRow( serviceArea: Defaulted = Defaulted.Provided(this.serviceArea), timezone: Defaulted = Defaulted.Provided(this.timezone), - isActive: Defaulted = Defaulted.Provided(this.isActive), - contactEmail: Defaulted = Defaulted.Provided(this.contactEmail), + isActive: Defaulted = Defaulted.Provided(this.isActive), + contactEmail: Defaulted = Defaulted.Provided(this.contactEmail), contactPhone: Defaulted = Defaulted.Provided(this.contactPhone) ): WarehousesRowUnsaved = WarehousesRowUnsaved(code, name, address, location, serviceArea, timezone, isActive, contactEmail, contactPhone) companion object { - val _rowParser: RowParser = RowParsers.of(WarehousesId.dbType, MariaTypes.char_, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.point, MariaTypes.polygon.nullable(), MariaTypes.varchar, KotlinDbTypes.MariaTypes.bool, MariaTypes.varchar.nullable(), MariaTypes.varchar.nullable(), { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9 -> WarehousesRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9) }, { row -> arrayOf(row.warehouseId, row.code, row.name, row.address, row.location, row.serviceArea, row.timezone, row.isActive, row.contactEmail, row.contactPhone) }) + val _rowParser: RowParser = RowParsers.of(WarehousesId.mariaType, MariaTypes.char_, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.point, MariaTypes.polygon.nullable(), MariaTypes.varchar, IsActive.mariaType, Email.mariaType.nullable(), MariaTypes.varchar.nullable(), { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9 -> WarehousesRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9) }, { row -> arrayOf(row.warehouseId, row.code, row.name, row.address, row.location, row.serviceArea, row.timezone, row.isActive, row.contactEmail, row.contactPhone) }) } } \ No newline at end of file diff --git a/testers/mariadb/kotlin/generated-and-checked-in/testdb/warehouses/WarehousesRowUnsaved.kt b/testers/mariadb/kotlin/generated-and-checked-in/testdb/warehouses/WarehousesRowUnsaved.kt index 37ce602ee3..d48693c6bd 100644 --- a/testers/mariadb/kotlin/generated-and-checked-in/testdb/warehouses/WarehousesRowUnsaved.kt +++ b/testers/mariadb/kotlin/generated-and-checked-in/testdb/warehouses/WarehousesRowUnsaved.kt @@ -10,6 +10,8 @@ import org.mariadb.jdbc.type.Point import org.mariadb.jdbc.type.Polygon import testdb.customtypes.Defaulted import testdb.customtypes.Defaulted.UseDefault +import testdb.userdefined.Email +import testdb.userdefined.IsActive /** This class corresponds to a row in table `warehouses` which has not been persisted yet */ data class WarehousesRowUnsaved( @@ -32,11 +34,11 @@ data class WarehousesRowUnsaved( /** Default: 1 */ - @field:JsonProperty("is_active") val isActive: Defaulted = UseDefault(), + @field:JsonProperty("is_active") val isActive: Defaulted = UseDefault(), /** Default: NULL */ - @field:JsonProperty("contact_email") val contactEmail: Defaulted = UseDefault(), + @field:JsonProperty("contact_email") val contactEmail: Defaulted = UseDefault(), /** Default: NULL */ @@ -45,8 +47,8 @@ data class WarehousesRowUnsaved( fun toRow( serviceAreaDefault: () -> Polygon?, timezoneDefault: () -> String, - isActiveDefault: () -> Boolean, - contactEmailDefault: () -> String?, + isActiveDefault: () -> /* user-picked */ IsActive, + contactEmailDefault: () -> /* user-picked */ Email?, contactPhoneDefault: () -> String?, warehouseIdDefault: () -> WarehousesId ): WarehousesRow = WarehousesRow(warehouseId = warehouseIdDefault(), code = code, name = name, address = address, location = location, serviceArea = serviceArea.getOrElse(serviceAreaDefault), timezone = timezone.getOrElse(timezoneDefault), isActive = isActive.getOrElse(isActiveDefault), contactEmail = contactEmail.getOrElse(contactEmailDefault), contactPhone = contactPhone.getOrElse(contactPhoneDefault)) diff --git a/testers/mariadb/kotlin/src/kotlin/testdb/CompositeIdTest.kt b/testers/mariadb/kotlin/src/kotlin/testdb/CompositeIdTest.kt index adcec04325..dbf76e75f7 100644 --- a/testers/mariadb/kotlin/src/kotlin/testdb/CompositeIdTest.kt +++ b/testers/mariadb/kotlin/src/kotlin/testdb/CompositeIdTest.kt @@ -13,6 +13,7 @@ import testdb.product_categories.ProductCategoriesRow import testdb.product_categories.ProductCategoriesRowUnsaved import testdb.products.ProductsRepoImpl import testdb.products.ProductsRowUnsaved +import testdb.userdefined.IsPrimary import java.math.BigDecimal /** @@ -77,7 +78,7 @@ class CompositeIdTest { ProductCategoriesRowUnsaved( productId = product.productId, categoryId = category.categoryId, - isPrimary = Provided(true), + isPrimary = Provided(IsPrimary(true)), sortOrder = Provided(1.toShort()) ), c @@ -89,7 +90,7 @@ class CompositeIdTest { assertNotNull(selected) assertEquals(product.productId, selected!!.productId) assertEquals(category.categoryId, selected.categoryId) - assertTrue(selected.isPrimary) + assertTrue(selected.isPrimary.value) assertEquals(1.toShort(), selected.sortOrder) } } @@ -157,7 +158,7 @@ class CompositeIdTest { ProductCategoriesRowUnsaved( productId = product.productId, categoryId = category1.categoryId, - isPrimary = Provided(true), + isPrimary = Provided(IsPrimary(true)), sortOrder = Provided(1.toShort()) ), c @@ -166,7 +167,7 @@ class CompositeIdTest { ProductCategoriesRowUnsaved( productId = product.productId, categoryId = category2.categoryId, - isPrimary = Provided(false), + isPrimary = Provided(IsPrimary(false)), sortOrder = Provided(2.toShort()) ), c @@ -179,8 +180,8 @@ class CompositeIdTest { val tracked = productCategoriesRepo.selectByIdsTracked(ids, c) assertEquals(2, tracked.size) - assertTrue(tracked[id1]!!.isPrimary) - assertFalse(tracked[id2]!!.isPrimary) + assertTrue(tracked[id1]!!.isPrimary.value) + assertFalse(tracked[id2]!!.isPrimary.value) } } @@ -200,19 +201,19 @@ class CompositeIdTest { ProductCategoriesRowUnsaved( productId = product.productId, categoryId = category.categoryId, - isPrimary = Provided(false), + isPrimary = Provided(IsPrimary(false)), sortOrder = Provided(10.toShort()) ), c ) - val updated = inserted.copy(isPrimary = true, sortOrder = 5.toShort()) + val updated = inserted.copy(isPrimary = IsPrimary(true), sortOrder = 5.toShort()) val success = productCategoriesRepo.update(updated, c) assertTrue(success) val selected = productCategoriesRepo.selectById(inserted.compositeId(), c) assertNotNull(selected) - assertTrue(selected!!.isPrimary) + assertTrue(selected!!.isPrimary.value) assertEquals(5.toShort(), selected.sortOrder) } } @@ -304,16 +305,16 @@ class CompositeIdTest { val row = ProductCategoriesRow( productId = product.productId, categoryId = category.categoryId, - isPrimary = false, + isPrimary = IsPrimary(false), sortOrder = 1.toShort() ) val inserted = productCategoriesRepo.upsert(row, c) - assertFalse(inserted.isPrimary) + assertFalse(inserted.isPrimary.value) assertEquals(1.toShort(), inserted.sortOrder) - val updatedRow = row.copy(isPrimary = true, sortOrder = 99.toShort()) + val updatedRow = row.copy(isPrimary = IsPrimary(true), sortOrder = 99.toShort()) val updated = productCategoriesRepo.upsert(updatedRow, c) - assertTrue(updated.isPrimary) + assertTrue(updated.isPrimary.value) assertEquals(99.toShort(), updated.sortOrder) val all = productCategoriesRepo.selectAll(c) @@ -341,7 +342,7 @@ class CompositeIdTest { ProductCategoriesRowUnsaved( productId = product1.productId, categoryId = category.categoryId, - isPrimary = Provided(true), + isPrimary = Provided(IsPrimary(true)), sortOrder = Provided(1.toShort()) ), c @@ -350,14 +351,14 @@ class CompositeIdTest { ProductCategoriesRowUnsaved( productId = product2.productId, categoryId = category.categoryId, - isPrimary = Provided(false), + isPrimary = Provided(IsPrimary(false)), sortOrder = Provided(2.toShort()) ), c ) val primaries = productCategoriesRepo.select() - .where { f -> f.isPrimary().isEqual(true) } + .where { f -> f.isPrimary().isEqual(IsPrimary(true)) } .toList(c) assertEquals(1, primaries.size) assertEquals(product1.productId, primaries[0].productId) @@ -374,12 +375,12 @@ class CompositeIdTest { assertEquals(100.toShort(), updated!!.sortOrder) productCategoriesRepo.delete() - .where { f -> f.isPrimary().isEqual(false) } + .where { f -> f.isPrimary().isEqual(IsPrimary(false)) } .execute(c) val remaining = productCategoriesRepo.selectAll(c) assertEquals(1, remaining.size) - assertTrue(remaining[0].isPrimary) + assertTrue(remaining[0].isPrimary.value) } } } diff --git a/testers/mariadb/kotlin/src/kotlin/testdb/ForeignKeyTest.kt b/testers/mariadb/kotlin/src/kotlin/testdb/ForeignKeyTest.kt index c1a3c509fa..e6a4de2580 100644 --- a/testers/mariadb/kotlin/src/kotlin/testdb/ForeignKeyTest.kt +++ b/testers/mariadb/kotlin/src/kotlin/testdb/ForeignKeyTest.kt @@ -7,6 +7,9 @@ import testdb.customer_status.* import testdb.customers.* import testdb.orders.* import testdb.customtypes.Defaulted.UseDefault +import testdb.userdefined.Email +import testdb.userdefined.FirstName +import testdb.userdefined.LastName import java.math.BigDecimal import java.util.Random @@ -51,19 +54,19 @@ class ForeignKeyTest { // Create a customer with FK to the status - use short constructor val customer = CustomersRowUnsaved( - "test@example.com", + Email("test@example.com"), byteArrayOf(1, 2, 3, 4), - "John", - "Doe" + FirstName("John"), + LastName("Doe") ) val insertedCustomer = customersRepo.insert(customer, c) assertNotNull(insertedCustomer) assertNotNull(insertedCustomer.customerId) - assertEquals("test@example.com", insertedCustomer.email) - assertEquals("John", insertedCustomer.firstName) - assertEquals("Doe", insertedCustomer.lastName) + assertEquals(Email("test@example.com"), insertedCustomer.email) + assertEquals(FirstName("John"), insertedCustomer.firstName) + assertEquals(LastName("Doe"), insertedCustomer.lastName) } } @@ -79,10 +82,10 @@ class ForeignKeyTest { // Create a customer val customer = testInsert.Customers( - email = "test@example.com", + email = Email("test@example.com"), passwordHash = byteArrayOf(1, 2, 3), - firstName = "Test", - lastName = "User", + firstName = FirstName("Test"), + lastName = LastName("User"), c = c ) @@ -113,10 +116,10 @@ class ForeignKeyTest { c = c ) val customer = testInsert.Customers( - email = "lookup@example.com", + email = Email("lookup@example.com"), passwordHash = byteArrayOf(1, 2, 3), - firstName = "Lookup", - lastName = "User", + firstName = FirstName("Lookup"), + lastName = LastName("User"), c = c ) @@ -145,10 +148,10 @@ class ForeignKeyTest { c = c ) val customer = testInsert.Customers( - email = "typesafe@example.com", + email = Email("typesafe@example.com"), passwordHash = byteArrayOf(1, 2, 3), - firstName = "TypeSafe", - lastName = "User", + firstName = FirstName("TypeSafe"), + lastName = LastName("User"), c = c ) val order = testInsert.Orders(orderNumber = "ORD-TS", customerId = customer.customerId, subtotal = BigDecimal("100.00"), totalAmount = BigDecimal("110.00"), c = c) @@ -178,10 +181,10 @@ class ForeignKeyTest { c = c ) val customer = testInsert.Customers( - email = "update_${Random().nextInt(10000)}@example.com", + email = Email("update_${Random().nextInt(10000)}@example.com"), passwordHash = byteArrayOf(1, 2, 3), - firstName = "Update", - lastName = "User", + firstName = FirstName("Update"), + lastName = LastName("User"), c = c ) @@ -214,10 +217,10 @@ class ForeignKeyTest { c = c ) val customer = testInsert.Customers( - email = "optional_${Random().nextInt(10000)}@example.com", + email = Email("optional_${Random().nextInt(10000)}@example.com"), passwordHash = byteArrayOf(1, 2, 3), - firstName = "Optional", - lastName = "User", + firstName = FirstName("Optional"), + lastName = LastName("User"), c = c ) diff --git a/testers/mariadb/kotlin/src/kotlin/testdb/SqlScriptTest.kt b/testers/mariadb/kotlin/src/kotlin/testdb/SqlScriptTest.kt index 8cb3027223..4ad94eefb5 100644 --- a/testers/mariadb/kotlin/src/kotlin/testdb/SqlScriptTest.kt +++ b/testers/mariadb/kotlin/src/kotlin/testdb/SqlScriptTest.kt @@ -7,6 +7,9 @@ import testdb.customer_orders.* import testdb.simple_customer_lookup.* import testdb.customer_status.CustomerStatusId import testdb.customtypes.Defaulted +import testdb.userdefined.Email +import testdb.userdefined.FirstName +import testdb.userdefined.LastName import java.math.BigDecimal import java.util.Random @@ -206,7 +209,7 @@ class SqlScriptTest { fun testSimpleCustomerLookup() { MariaDbTestHelper.run { c -> // Create a customer - val email = "lookup_${Random().nextInt(10000)}@example.com" + val email = Email("lookup_${Random().nextInt(10000)}@example.com") val status = testInsert.CustomerStatus( statusCode = CustomerStatusId("lookup_status_${Random().nextInt(10000)}"), description = "Lookup Status", @@ -215,13 +218,13 @@ class SqlScriptTest { val customer = testInsert.Customers( email = email, passwordHash = byteArrayOf(1, 2, 3), - firstName = "Lookup", - lastName = "Customer", + firstName = FirstName("Lookup"), + lastName = LastName("Customer"), c = c ) // Look up by email - val results = simpleCustomerLookupRepo.apply(email, c) + val results = simpleCustomerLookupRepo.apply(email.value, c) assertNotNull(results) assertEquals(1, results.size) @@ -241,10 +244,10 @@ class SqlScriptTest { c = c ) val customer = testInsert.Customers( - email = "orders_${Random().nextInt(10000)}@example.com", + email = Email("orders_${Random().nextInt(10000)}@example.com"), passwordHash = byteArrayOf(1, 2, 3), - firstName = "Orders", - lastName = "Customer", + firstName = FirstName("Orders"), + lastName = LastName("Customer"), c = c ) diff --git a/testers/mariadb/kotlin/src/kotlin/testdb/TestInsertTest.kt b/testers/mariadb/kotlin/src/kotlin/testdb/TestInsertTest.kt index 36e7ed8a82..f8ff0562e0 100644 --- a/testers/mariadb/kotlin/src/kotlin/testdb/TestInsertTest.kt +++ b/testers/mariadb/kotlin/src/kotlin/testdb/TestInsertTest.kt @@ -5,6 +5,9 @@ import dev.typr.foundations.data.maria.Inet6 import org.junit.Assert.* import org.junit.Test import testdb.customer_status.CustomerStatusId +import testdb.userdefined.Email +import testdb.userdefined.FirstName +import testdb.userdefined.LastName import java.time.Year import java.util.Random @@ -100,10 +103,10 @@ class TestInsertTest { // Now create a customer - requires password_hash val customer = testInsert.Customers( - email = "test_${Random().nextInt(10000)}@example.com", + email = Email("test_${Random().nextInt(10000)}@example.com"), passwordHash = byteArrayOf(1, 2, 3), - firstName = "John", - lastName = "Doe", + firstName = FirstName("John"), + lastName = LastName("Doe"), c = c ) @@ -123,10 +126,10 @@ class TestInsertTest { c = c ) val customer = testInsert.Customers( - email = "order_${Random().nextInt(10000)}@example.com", + email = Email("order_${Random().nextInt(10000)}@example.com"), passwordHash = byteArrayOf(1, 2, 3), - firstName = "Jane", - lastName = "Smith", + firstName = FirstName("Jane"), + lastName = LastName("Smith"), c = c ) @@ -150,7 +153,7 @@ class TestInsertTest { MariaDbTestHelper.run { c -> val uniqueId = Random().nextInt(100000) val row = testInsert.MariatestUnique( - email = "unique_$uniqueId@example.com", + email = Email("unique_$uniqueId@example.com"), code = "CODE$uniqueId", category = "CAT$uniqueId", c = c diff --git a/testers/mariadb/kotlin/src/kotlin/testdb/TupleInTest.kt b/testers/mariadb/kotlin/src/kotlin/testdb/TupleInTest.kt index ae2e219056..e335ba2a1d 100644 --- a/testers/mariadb/kotlin/src/kotlin/testdb/TupleInTest.kt +++ b/testers/mariadb/kotlin/src/kotlin/testdb/TupleInTest.kt @@ -10,6 +10,7 @@ import org.junit.Test import testdb.categories.* import testdb.product_categories.* import testdb.products.* +import testdb.userdefined.IsPrimary import java.math.BigDecimal import java.sql.Connection import java.time.LocalDateTime @@ -186,10 +187,10 @@ class TupleInTest { ) val pc1 = repos.productCategoriesRepo.insert( - ProductCategoriesRow(product1.productId, category.categoryId, true, 1.toShort()), c + ProductCategoriesRow(product1.productId, category.categoryId, IsPrimary(true), 1.toShort()), c ) val pc2 = repos.productCategoriesRepo.insert( - ProductCategoriesRow(product2.productId, category.categoryId, false, 2.toShort()), c + ProductCategoriesRow(product2.productId, category.categoryId, IsPrimary(false), 2.toShort()), c ) val result = repos.productCategoriesRepo @@ -197,7 +198,7 @@ class TupleInTest { .where { pc -> SqlExpr.all( pc.compositeIdIn(listOf(pc1.compositeId(), pc2.compositeId())), - pc.isPrimary().isEqual(true) + pc.isPrimary().isEqual(IsPrimary(true)) ) } .toList(c) @@ -378,7 +379,7 @@ class TupleInTest { .among( repos.productCategoriesRepo .select() - .where { inner -> inner.isPrimary().isEqual(false) } + .where { inner -> inner.isPrimary().isEqual(IsPrimary(false)) } .map { inner -> inner.productId().tupleWith(inner.categoryId()) } .subquery() ) @@ -415,7 +416,7 @@ class TupleInTest { .among( repos.productCategoriesRepo .select() - .where { inner -> inner.isPrimary().isEqual(true) } + .where { inner -> inner.isPrimary().isEqual(IsPrimary(true)) } .map { inner -> inner.productId().tupleWith(inner.categoryId()) } .subquery() ) @@ -446,10 +447,10 @@ class TupleInTest { ) val pc1 = repos.productCategoriesRepo.insert( - ProductCategoriesRow(product1.productId, category.categoryId, false, 1.toShort()), c + ProductCategoriesRow(product1.productId, category.categoryId, IsPrimary(false), 1.toShort()), c ) val pc2 = repos.productCategoriesRepo.insert( - ProductCategoriesRow(product2.productId, category.categoryId, false, 2.toShort()), c + ProductCategoriesRow(product2.productId, category.categoryId, IsPrimary(false), 2.toShort()), c ) val result = repos.productCategoriesRepo @@ -461,7 +462,7 @@ class TupleInTest { .among( repos.productCategoriesRepo .select() - .where { inner -> inner.isPrimary().isEqual(false) } + .where { inner -> inner.isPrimary().isEqual(IsPrimary(false)) } .map { inner -> inner.productId().tupleWith(inner.categoryId()) } .subquery() ), @@ -554,13 +555,13 @@ class TupleInTest { ) val pc1 = repos.productCategoriesRepo.insert( - ProductCategoriesRow(product1.productId, category1.categoryId, true, 1.toShort()), c + ProductCategoriesRow(product1.productId, category1.categoryId, IsPrimary(true), 1.toShort()), c ) val pc2 = repos.productCategoriesRepo.insert( - ProductCategoriesRow(product2.productId, category1.categoryId, false, 2.toShort()), c + ProductCategoriesRow(product2.productId, category1.categoryId, IsPrimary(false), 2.toShort()), c ) val pc3 = repos.productCategoriesRepo.insert( - ProductCategoriesRow(product3.productId, category1.categoryId, true, 3.toShort()), c + ProductCategoriesRow(product3.productId, category1.categoryId, IsPrimary(true), 3.toShort()), c ) // Test truly nested tuple: ((productId, categoryId), isPrimary) @@ -573,10 +574,10 @@ class TupleInTest { .among(listOf( dev.typr.foundations.Tuple.of( dev.typr.foundations.Tuple.of(product1.productId, category1.categoryId), - true), + IsPrimary(true)), dev.typr.foundations.Tuple.of( dev.typr.foundations.Tuple.of(product3.productId, category1.categoryId), - true) + IsPrimary(true)) )) } .toList(c) @@ -593,7 +594,7 @@ class TupleInTest { .among(listOf( dev.typr.foundations.Tuple.of( dev.typr.foundations.Tuple.of(product1.productId, category1.categoryId), - false) // Wrong: isPrimary doesn't match + IsPrimary(false)) // Wrong: isPrimary doesn't match )) } .toList(c) @@ -692,7 +693,7 @@ class TupleInTest { }), ProductCategoriesRepoMock({ unsaved -> unsaved.toRow( - { false }, // isPrimary + { IsPrimary(false) }, // isPrimary { 0.toShort() } // sortOrder ) }) diff --git a/testers/mariadb/kotlin/src/kotlin/testdb/ViewTest.kt b/testers/mariadb/kotlin/src/kotlin/testdb/ViewTest.kt index e393038111..23a76a4d46 100644 --- a/testers/mariadb/kotlin/src/kotlin/testdb/ViewTest.kt +++ b/testers/mariadb/kotlin/src/kotlin/testdb/ViewTest.kt @@ -11,6 +11,10 @@ import testdb.customer_status.CustomerStatusId import testdb.customers.CustomersRepoImpl import testdb.customers.CustomersRowUnsaved import testdb.customtypes.Defaulted.Provided +import testdb.userdefined.Email +import testdb.userdefined.FirstName +import testdb.userdefined.IsApproved +import testdb.userdefined.LastName import testdb.inventory.InventoryRepoImpl import testdb.inventory.InventoryRowUnsaved import testdb.order_items.OrderItemsRepoImpl @@ -49,19 +53,19 @@ class ViewTest { WithConnection.run { c -> customersRepo.insert( CustomersRowUnsaved( - email = "view1@example.com", + email = Email("view1@example.com"), passwordHash = "hash1".toByteArray(), - firstName = "View", - lastName = "Customer1" + firstName = FirstName("View"), + lastName = LastName("Customer1") ), c ) customersRepo.insert( CustomersRowUnsaved( - email = "view2@example.com", + email = Email("view2@example.com"), passwordHash = "hash2".toByteArray(), - firstName = "View", - lastName = "Customer2" + firstName = FirstName("View"), + lastName = LastName("Customer2") ), c ) @@ -76,10 +80,10 @@ class ViewTest { WithConnection.run { c -> customersRepo.insert( CustomersRowUnsaved( - email = "summary@example.com", + email = Email("summary@example.com"), passwordHash = "hash".toByteArray(), - firstName = "Summary", - lastName = "Test", + firstName = FirstName("Summary"), + lastName = LastName("Test"), status = Provided(CustomerStatusId("suspended")), tier = Provided("gold") ), @@ -90,7 +94,7 @@ class ViewTest { assertEquals(1, summaries.size) val summary = summaries[0] - assertEquals("summary@example.com", summary.email) + assertEquals(Email("summary@example.com"), summary.email) assertEquals("Summary Test", summary.fullName) assertEquals("gold", summary.tier) assertEquals("suspended", summary.status.value) @@ -104,10 +108,10 @@ class ViewTest { WithConnection.run { c -> val customer = customersRepo.insert( CustomersRowUnsaved( - email = "orders@example.com", + email = Email("orders@example.com"), passwordHash = "hash".toByteArray(), - firstName = "With", - lastName = "Orders" + firstName = FirstName("With"), + lastName = LastName("Orders") ), c ) @@ -265,10 +269,10 @@ class ViewTest { WithConnection.run { c -> val customer = customersRepo.insert( CustomersRowUnsaved( - email = "reviewer@example.com", + email = Email("reviewer@example.com"), passwordHash = "hash".toByteArray(), - firstName = "Reviewer", - lastName = "User" + firstName = FirstName("Reviewer"), + lastName = LastName("User") ), c ) @@ -288,7 +292,7 @@ class ViewTest { productId = product.productId, customerId = customer.customerId, rating = Uint1.of(5), - isApproved = Provided(true) + isApproved = Provided(IsApproved(true)) ), c ) @@ -297,7 +301,7 @@ class ViewTest { productId = product.productId, customerId = customer.customerId, rating = Uint1.of(4), - isApproved = Provided(true) + isApproved = Provided(IsApproved(true)) ), c ) @@ -314,30 +318,30 @@ class ViewTest { WithConnection.run { c -> customersRepo.insert( CustomersRowUnsaved( - email = "dsl1@example.com", + email = Email("dsl1@example.com"), passwordHash = "hash1".toByteArray(), - firstName = "DSL", - lastName = "Bronze", + firstName = FirstName("DSL"), + lastName = LastName("Bronze"), tier = Provided("bronze") ), c ) customersRepo.insert( CustomersRowUnsaved( - email = "dsl2@example.com", + email = Email("dsl2@example.com"), passwordHash = "hash2".toByteArray(), - firstName = "DSL", - lastName = "Gold", + firstName = FirstName("DSL"), + lastName = LastName("Gold"), tier = Provided("gold") ), c ) customersRepo.insert( CustomersRowUnsaved( - email = "dsl3@example.com", + email = Email("dsl3@example.com"), passwordHash = "hash3".toByteArray(), - firstName = "DSL", - lastName = "Gold2", + firstName = FirstName("DSL"), + lastName = LastName("Gold2"), tier = Provided("gold") ), c @@ -349,7 +353,7 @@ class ViewTest { assertEquals(2, goldCustomers.size) val specificCustomer = customerSummaryRepo.select() - .where { f -> f.email().isEqual("dsl1@example.com") } + .where { f -> f.email().isEqual(Email("dsl1@example.com")) } .toList(c) assertEquals(1, specificCustomer.size) assertEquals("bronze", specificCustomer[0].tier) diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/AllBrandsCategoriesCSet.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/AllBrandsCategoriesCSet.scala index 51c3fbe2eb..7517b3e022 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/AllBrandsCategoriesCSet.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/AllBrandsCategoriesCSet.scala @@ -24,8 +24,6 @@ case class AllBrandsCategoriesCSet(members: Set[AllBrandsCategoriesCSetMember]) } object AllBrandsCategoriesCSet { - given dbType: MariaType[AllBrandsCategoriesCSet] = MariaTypes.set.bimap((ms: MariaSet) => AllBrandsCategoriesCSet.fromString(ms.toCommaSeparated), (s: AllBrandsCategoriesCSet) => MariaSet.fromString(s.toCommaSeparated)) - def empty: AllBrandsCategoriesCSet = AllBrandsCategoriesCSet(Set.empty) def fromString(str: String): AllBrandsCategoriesCSet = { @@ -35,5 +33,7 @@ object AllBrandsCategoriesCSet { } } + given mariaType: MariaType[AllBrandsCategoriesCSet] = MariaTypes.set.bimap((ms: MariaSet) => AllBrandsCategoriesCSet.fromString(ms.toCommaSeparated), (s: AllBrandsCategoriesCSet) => MariaSet.fromString(s.toCommaSeparated)) + def of(members: List[AllBrandsCategoriesCSetMember]): AllBrandsCategoriesCSet = AllBrandsCategoriesCSet(members.toSet) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/BestsellerClearanceFSet.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/BestsellerClearanceFSet.scala index ad733eba18..299c81ab98 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/BestsellerClearanceFSet.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/BestsellerClearanceFSet.scala @@ -24,8 +24,6 @@ case class BestsellerClearanceFSet(members: Set[BestsellerClearanceFSetMember]) } object BestsellerClearanceFSet { - given dbType: MariaType[BestsellerClearanceFSet] = MariaTypes.set.bimap((ms: MariaSet) => BestsellerClearanceFSet.fromString(ms.toCommaSeparated), (s: BestsellerClearanceFSet) => MariaSet.fromString(s.toCommaSeparated)) - def empty: BestsellerClearanceFSet = BestsellerClearanceFSet(Set.empty) def fromString(str: String): BestsellerClearanceFSet = { @@ -35,5 +33,7 @@ object BestsellerClearanceFSet { } } + given mariaType: MariaType[BestsellerClearanceFSet] = MariaTypes.set.bimap((ms: MariaSet) => BestsellerClearanceFSet.fromString(ms.toCommaSeparated), (s: BestsellerClearanceFSet) => MariaSet.fromString(s.toCommaSeparated)) + def of(members: List[BestsellerClearanceFSetMember]): BestsellerClearanceFSet = BestsellerClearanceFSet(members.toSet) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/EmailMailPushSmsSet.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/EmailMailPushSmsSet.scala index 83649ca5de..7d52b34994 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/EmailMailPushSmsSet.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/EmailMailPushSmsSet.scala @@ -24,8 +24,6 @@ case class EmailMailPushSmsSet(members: Set[EmailMailPushSmsSetMember]) { } object EmailMailPushSmsSet { - given dbType: MariaType[EmailMailPushSmsSet] = MariaTypes.set.bimap((ms: MariaSet) => EmailMailPushSmsSet.fromString(ms.toCommaSeparated), (s: EmailMailPushSmsSet) => MariaSet.fromString(s.toCommaSeparated)) - def empty: EmailMailPushSmsSet = EmailMailPushSmsSet(Set.empty) def fromString(str: String): EmailMailPushSmsSet = { @@ -35,5 +33,7 @@ object EmailMailPushSmsSet { } } + given mariaType: MariaType[EmailMailPushSmsSet] = MariaTypes.set.bimap((ms: MariaSet) => EmailMailPushSmsSet.fromString(ms.toCommaSeparated), (s: EmailMailPushSmsSet) => MariaSet.fromString(s.toCommaSeparated)) + def of(members: List[EmailMailPushSmsSetMember]): EmailMailPushSmsSet = EmailMailPushSmsSet(members.toSet) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/TestInsert.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/TestInsert.scala index f8551a731b..d59fb94e7c 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/TestInsert.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/TestInsert.scala @@ -147,6 +147,14 @@ import testdb.shipping_carriers.ShippingCarriersId import testdb.shipping_carriers.ShippingCarriersRepoImpl import testdb.shipping_carriers.ShippingCarriersRow import testdb.shipping_carriers.ShippingCarriersRowUnsaved +import testdb.userdefined.Email +import testdb.userdefined.FirstName +import testdb.userdefined.IsActive +import testdb.userdefined.IsApproved +import testdb.userdefined.IsDefault +import testdb.userdefined.IsPrimary +import testdb.userdefined.IsVerifiedPurchase +import testdb.userdefined.LastName import testdb.warehouses.WarehousesId import testdb.warehouses.WarehousesRepoImpl import testdb.warehouses.WarehousesRow @@ -184,7 +192,7 @@ case class TestInsert(random: Random) { logoBlob: Defaulted[Option[Array[Byte]]] = new UseDefault(), websiteUrl: Defaulted[Option[String]] = new UseDefault(), countryOfOrigin: Defaulted[Option[String]] = new UseDefault(), - isActive: Defaulted[Boolean] = new UseDefault() + isActive: Defaulted[/* user-picked */ IsActive] = new UseDefault() )(using c: Connection): BrandsRow = { (new BrandsRepoImpl()).insert(new BrandsRowUnsaved( name = name, @@ -226,7 +234,7 @@ case class TestInsert(random: Random) { city: String = random.alphanumeric.take(20).mkString, postalCode: String = random.alphanumeric.take(20).mkString, countryCode: String = random.alphanumeric.take(2).mkString, - isDefault: Defaulted[Boolean] = new UseDefault(), + isDefault: Defaulted[/* user-picked */ IsDefault] = new UseDefault(), streetLine2: Defaulted[Option[String]] = new UseDefault(), stateProvince: Defaulted[Option[String]] = new UseDefault(), location: Defaulted[Option[Point]] = new UseDefault(), @@ -253,14 +261,14 @@ case class TestInsert(random: Random) { def CustomerStatus( statusCode: CustomerStatusId = new CustomerStatusId(random.alphanumeric.take(20).mkString), description: String = random.alphanumeric.take(20).mkString, - isActive: Defaulted[Boolean] = new UseDefault() + isActive: Defaulted[/* user-picked */ IsActive] = new UseDefault() )(using c: Connection): CustomerStatusRow = (new CustomerStatusRepoImpl()).insert(new CustomerStatusRowUnsaved(statusCode = statusCode, description = description, isActive = isActive))(using c) def Customers( passwordHash: Array[Byte], - email: String = random.alphanumeric.take(20).mkString, - firstName: String = random.alphanumeric.take(20).mkString, - lastName: String = random.alphanumeric.take(20).mkString, + email: /* user-picked */ Email = new Email(random.alphanumeric.take(20).mkString), + firstName: /* user-picked */ FirstName = new FirstName(random.alphanumeric.take(20).mkString), + lastName: /* user-picked */ LastName = new LastName(random.alphanumeric.take(20).mkString), phone: Defaulted[Option[String]] = new UseDefault(), status: Defaulted[CustomerStatusId] = new UseDefault(), tier: Defaulted[String] = new UseDefault(), @@ -449,7 +457,7 @@ case class TestInsert(random: Random) { } def MariatestUnique( - email: String = random.alphanumeric.take(20).mkString, + email: /* user-picked */ Email = new Email(random.alphanumeric.take(20).mkString), code: String = random.alphanumeric.take(20).mkString, category: String = random.alphanumeric.take(20).mkString )(using c: Connection): MariatestUniqueRow = (new MariatestUniqueRepoImpl()).insert(new MariatestUniqueRowUnsaved(email = email, code = code, category = category))(using c) @@ -645,7 +653,7 @@ case class TestInsert(random: Random) { name: String = random.alphanumeric.take(20).mkString, methodType: String = random.alphanumeric.take(20).mkString, processorConfig: Defaulted[Option[Json]] = new UseDefault(), - isActive: Defaulted[Boolean] = new UseDefault(), + isActive: Defaulted[/* user-picked */ IsActive] = new UseDefault(), sortOrder: Defaulted[Byte] = new UseDefault() )(using c: Connection): PaymentMethodsRow = { (new PaymentMethodsRepoImpl()).insert(new PaymentMethodsRowUnsaved( @@ -807,7 +815,7 @@ case class TestInsert(random: Random) { def ProductCategories( productId: ProductsId, categoryId: CategoriesId, - isPrimary: Defaulted[Boolean] = new UseDefault(), + isPrimary: Defaulted[/* user-picked */ IsPrimary] = new UseDefault(), sortOrder: Defaulted[Short] = new UseDefault() )(using c: Connection): ProductCategoriesRow = { (new ProductCategoriesRepoImpl()).insert(new ProductCategoriesRowUnsaved( @@ -824,7 +832,7 @@ case class TestInsert(random: Random) { thumbnailUrl: Defaulted[Option[String]] = new UseDefault(), altText: Defaulted[Option[String]] = new UseDefault(), sortOrder: Defaulted[Uint1] = new UseDefault(), - isPrimary: Defaulted[Boolean] = new UseDefault(), + isPrimary: Defaulted[/* user-picked */ IsPrimary] = new UseDefault(), imageData: Defaulted[Option[Array[Byte]]] = new UseDefault() )(using c: Connection): ProductImagesRow = { (new ProductImagesRepoImpl()).insert(new ProductImagesRowUnsaved( @@ -910,7 +918,7 @@ case class TestInsert(random: Random) { maxUsesPerCustomer: Defaulted[Option[Uint1]] = new UseDefault(), applicableTo: Defaulted[Option[AllBrandsCategoriesCSet]] = new UseDefault(), rulesJson: Defaulted[Option[Json]] = new UseDefault(), - isActive: Defaulted[Boolean] = new UseDefault(), + isActive: Defaulted[/* user-picked */ IsActive] = new UseDefault(), createdAt: Defaulted[LocalDateTime] = new UseDefault() )(using c: Connection): PromotionsRow = { (new PromotionsRepoImpl()).insert(new PromotionsRowUnsaved( @@ -942,8 +950,8 @@ case class TestInsert(random: Random) { pros: Defaulted[Option[Json]] = new UseDefault(), cons: Defaulted[Option[Json]] = new UseDefault(), images: Defaulted[Option[Json]] = new UseDefault(), - isVerifiedPurchase: Defaulted[Boolean] = new UseDefault(), - isApproved: Defaulted[Boolean] = new UseDefault(), + isVerifiedPurchase: Defaulted[/* user-picked */ IsVerifiedPurchase] = new UseDefault(), + isApproved: Defaulted[/* user-picked */ IsApproved] = new UseDefault(), helpfulVotes: Defaulted[Uint4] = new UseDefault(), unhelpfulVotes: Defaulted[Uint4] = new UseDefault(), adminResponse: Defaulted[Option[String]] = new UseDefault(), @@ -1015,7 +1023,7 @@ case class TestInsert(random: Random) { name: String = random.alphanumeric.take(20).mkString, trackingUrlTemplate: Defaulted[Option[String]] = new UseDefault(), apiConfig: Defaulted[Option[Json]] = new UseDefault(), - isActive: Defaulted[Boolean] = new UseDefault() + isActive: Defaulted[/* user-picked */ IsActive] = new UseDefault() )(using c: Connection): ShippingCarriersRow = { (new ShippingCarriersRepoImpl()).insert(new ShippingCarriersRowUnsaved( code = code, @@ -1033,8 +1041,8 @@ case class TestInsert(random: Random) { address: String = random.alphanumeric.take(20).mkString, serviceArea: Defaulted[Option[Polygon]] = new UseDefault(), timezone: Defaulted[String] = new UseDefault(), - isActive: Defaulted[Boolean] = new UseDefault(), - contactEmail: Defaulted[Option[String]] = new UseDefault(), + isActive: Defaulted[/* user-picked */ IsActive] = new UseDefault(), + contactEmail: Defaulted[Option[/* user-picked */ Email]] = new UseDefault(), contactPhone: Defaulted[Option[String]] = new UseDefault() )(using c: Connection): WarehousesRow = { (new WarehousesRepoImpl()).insert(new WarehousesRowUnsaved( diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/XYZSet.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/XYZSet.scala index 2a75a7eab7..7060e759c5 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/XYZSet.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/XYZSet.scala @@ -24,8 +24,6 @@ case class XYZSet(members: Set[XYZSetMember]) { } object XYZSet { - given dbType: MariaType[XYZSet] = MariaTypes.set.bimap((ms: MariaSet) => XYZSet.fromString(ms.toCommaSeparated), (s: XYZSet) => MariaSet.fromString(s.toCommaSeparated)) - def empty: XYZSet = XYZSet(Set.empty) def fromString(str: String): XYZSet = { @@ -35,5 +33,7 @@ object XYZSet { } } + given mariaType: MariaType[XYZSet] = MariaTypes.set.bimap((ms: MariaSet) => XYZSet.fromString(ms.toCommaSeparated), (s: XYZSet) => MariaSet.fromString(s.toCommaSeparated)) + def of(members: List[XYZSetMember]): XYZSet = XYZSet(members.toSet) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/audit_log/AuditLogFields.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/audit_log/AuditLogFields.scala index 07bc883fe4..71d8df1448 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/audit_log/AuditLogFields.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/audit_log/AuditLogFields.scala @@ -29,7 +29,7 @@ class AuditLogFields(val `_path`: java.util.List[Path]) extends TupleExpr10[Audi None, None, (row, value) => row.copy(logId = value), - AuditLogId.dbType + AuditLogId.mariaType ) } diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/audit_log/AuditLogId.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/audit_log/AuditLogId.scala index c4d67e0111..bee1f89fbf 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/audit_log/AuditLogId.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/audit_log/AuditLogId.scala @@ -17,5 +17,5 @@ case class AuditLogId(@JsonValue value: Uint8) extends scala.AnyVal object AuditLogId { given bijection: Bijection[AuditLogId, Uint8] = Bijection.apply[AuditLogId, Uint8](_.value)(AuditLogId.apply) - given dbType: MariaType[AuditLogId] = MariaTypes.bigintUnsigned.bimap(AuditLogId.apply, _.value) + given mariaType: MariaType[AuditLogId] = MariaTypes.bigintUnsigned.bimap(AuditLogId.apply, _.value) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/audit_log/AuditLogRepoImpl.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/audit_log/AuditLogRepoImpl.scala index 9549c30605..5932e1466b 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/audit_log/AuditLogRepoImpl.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/audit_log/AuditLogRepoImpl.scala @@ -19,11 +19,11 @@ import dev.typr.foundations.scala.Fragment.sql class AuditLogRepoImpl extends AuditLogRepo { override def delete: DeleteBuilder[AuditLogFields, AuditLogRow] = DeleteBuilder.of("`audit_log`", AuditLogFields.structure, Dialect.MARIADB) - override def deleteById(logId: AuditLogId)(using c: Connection): Boolean = sql"delete from `audit_log` where `log_id` = ${Fragment.encode(AuditLogId.dbType, logId)}".update().runUnchecked(c) > 0 + override def deleteById(logId: AuditLogId)(using c: Connection): Boolean = sql"delete from `audit_log` where `log_id` = ${Fragment.encode(AuditLogId.mariaType, logId)}".update().runUnchecked(c) > 0 override def deleteByIds(logIds: Array[AuditLogId])(using c: Connection): Int = { val fragments: ListBuffer[Fragment] = ListBuffer() - logIds.foreach { id => fragments.addOne(Fragment.encode(AuditLogId.dbType, id)): @scala.annotation.nowarn } + logIds.foreach { id => fragments.addOne(Fragment.encode(AuditLogId.mariaType, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("delete from `audit_log` where `log_id` in ("), Fragment.comma(fragments), Fragment.lit(")")).update().runUnchecked(c) } @@ -88,12 +88,12 @@ class AuditLogRepoImpl extends AuditLogRepo { override def selectById(logId: AuditLogId)(using c: Connection): Option[AuditLogRow] = { sql"""select `log_id`, `table_name`, `record_id`, `action`, `old_values`, `new_values`, `changed_by`, `changed_at`, `client_ip`, `session_id` from `audit_log` - where `log_id` = ${Fragment.encode(AuditLogId.dbType, logId)}""".query(AuditLogRow.`_rowParser`.first()).runUnchecked(c) + where `log_id` = ${Fragment.encode(AuditLogId.mariaType, logId)}""".query(AuditLogRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(logIds: Array[AuditLogId])(using c: Connection): List[AuditLogRow] = { val fragments: ListBuffer[Fragment] = ListBuffer() - logIds.foreach { id => fragments.addOne(Fragment.encode(AuditLogId.dbType, id)): @scala.annotation.nowarn } + logIds.foreach { id => fragments.addOne(Fragment.encode(AuditLogId.mariaType, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("select `log_id`, `table_name`, `record_id`, `action`, `old_values`, `new_values`, `changed_by`, `changed_at`, `client_ip`, `session_id` from `audit_log` where `log_id` in ("), Fragment.comma(fragments), Fragment.lit(")")).query(AuditLogRow.`_rowParser`.all()).runUnchecked(c) } @@ -117,12 +117,12 @@ class AuditLogRepoImpl extends AuditLogRepo { `changed_at` = ${Fragment.encode(MariaTypes.datetime, row.changedAt)}, `client_ip` = ${Fragment.encode(MariaTypes.inet6.nullable, row.clientIp)}, `session_id` = ${Fragment.encode(MariaTypes.varbinary.nullable, row.sessionId)} - where `log_id` = ${Fragment.encode(AuditLogId.dbType, logId)}""".update().runUnchecked(c) > 0 + where `log_id` = ${Fragment.encode(AuditLogId.mariaType, logId)}""".update().runUnchecked(c) > 0 } override def upsert(unsaved: AuditLogRow)(using c: Connection): AuditLogRow = { sql"""INSERT INTO `audit_log`(`log_id`, `table_name`, `record_id`, `action`, `old_values`, `new_values`, `changed_by`, `changed_at`, `client_ip`, `session_id`) - VALUES (${Fragment.encode(AuditLogId.dbType, unsaved.logId)}, ${Fragment.encode(MariaTypes.varchar, unsaved.tableName)}, ${Fragment.encode(MariaTypes.varchar, unsaved.recordId)}, ${Fragment.encode(MariaTypes.text, unsaved.action)}, ${Fragment.encode(MariaTypes.json.nullable, unsaved.oldValues)}, ${Fragment.encode(MariaTypes.json.nullable, unsaved.newValues)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.changedBy)}, ${Fragment.encode(MariaTypes.datetime, unsaved.changedAt)}, ${Fragment.encode(MariaTypes.inet6.nullable, unsaved.clientIp)}, ${Fragment.encode(MariaTypes.varbinary.nullable, unsaved.sessionId)}) + VALUES (${Fragment.encode(AuditLogId.mariaType, unsaved.logId)}, ${Fragment.encode(MariaTypes.varchar, unsaved.tableName)}, ${Fragment.encode(MariaTypes.varchar, unsaved.recordId)}, ${Fragment.encode(MariaTypes.text, unsaved.action)}, ${Fragment.encode(MariaTypes.json.nullable, unsaved.oldValues)}, ${Fragment.encode(MariaTypes.json.nullable, unsaved.newValues)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.changedBy)}, ${Fragment.encode(MariaTypes.datetime, unsaved.changedAt)}, ${Fragment.encode(MariaTypes.inet6.nullable, unsaved.clientIp)}, ${Fragment.encode(MariaTypes.varbinary.nullable, unsaved.sessionId)}) ON DUPLICATE KEY UPDATE `table_name` = VALUES(`table_name`), `record_id` = VALUES(`record_id`), `action` = VALUES(`action`), diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/audit_log/AuditLogRow.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/audit_log/AuditLogRow.scala index 3452f974b6..991b9586f7 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/audit_log/AuditLogRow.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/audit_log/AuditLogRow.scala @@ -100,5 +100,5 @@ case class AuditLogRow( } object AuditLogRow { - val `_rowParser`: RowParser[AuditLogRow] = RowParsers.of(AuditLogId.dbType, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.text, MariaTypes.json.nullable, MariaTypes.json.nullable, MariaTypes.varchar.nullable, MariaTypes.datetime, MariaTypes.inet6.nullable, MariaTypes.varbinary.nullable)(AuditLogRow.apply)(row => Array[Any](row.logId, row.tableName, row.recordId, row.action, row.oldValues, row.newValues, row.changedBy, row.changedAt, row.clientIp, row.sessionId)) + val `_rowParser`: RowParser[AuditLogRow] = RowParsers.of(AuditLogId.mariaType, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.text, MariaTypes.json.nullable, MariaTypes.json.nullable, MariaTypes.varchar.nullable, MariaTypes.datetime, MariaTypes.inet6.nullable, MariaTypes.varbinary.nullable)(AuditLogRow.apply)(row => Array[Any](row.logId, row.tableName, row.recordId, row.action, row.oldValues, row.newValues, row.changedBy, row.changedAt, row.clientIp, row.sessionId)) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/brands/BrandsFields.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/brands/BrandsFields.scala index 28b78c9034..dd30e79604 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/brands/BrandsFields.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/brands/BrandsFields.scala @@ -11,14 +11,14 @@ import dev.typr.foundations.dsl.FieldsBase import dev.typr.foundations.dsl.Path import dev.typr.foundations.dsl.SqlExpr.FieldLike import dev.typr.foundations.scala.RelationStructure -import dev.typr.foundations.scala.ScalaDbTypes import dev.typr.foundations.scala.SqlExpr import dev.typr.foundations.scala.SqlExpr.Field import dev.typr.foundations.scala.SqlExpr.IdField import dev.typr.foundations.scala.SqlExpr.OptField import dev.typr.foundations.scala.TupleExpr7 +import testdb.userdefined.IsActive -class BrandsFields(val `_path`: java.util.List[Path]) extends TupleExpr7[BrandsId, String, String, Array[Byte], String, String, Boolean] with RelationStructure[BrandsFields, BrandsRow] with FieldsBase[BrandsRow] { +class BrandsFields(val `_path`: java.util.List[Path]) extends TupleExpr7[BrandsId, String, String, Array[Byte], String, String, /* user-picked */ IsActive] with RelationStructure[BrandsFields, BrandsRow] with FieldsBase[BrandsRow] { def brandId: IdField[BrandsId, BrandsRow] = { new IdField[BrandsId, BrandsRow]( _path, @@ -27,7 +27,7 @@ class BrandsFields(val `_path`: java.util.List[Path]) extends TupleExpr7[BrandsI None, None, (row, value) => row.copy(brandId = value), - BrandsId.dbType + BrandsId.mariaType ) } @@ -91,15 +91,15 @@ class BrandsFields(val `_path`: java.util.List[Path]) extends TupleExpr7[BrandsI ) } - def isActive: Field[Boolean, BrandsRow] = { - new Field[Boolean, BrandsRow]( + def isActive: Field[/* user-picked */ IsActive, BrandsRow] = { + new Field[/* user-picked */ IsActive, BrandsRow]( _path, "is_active", _.isActive, None, None, (row, value) => row.copy(isActive = value), - ScalaDbTypes.MariaTypes.bool + IsActive.mariaType ) } @@ -121,7 +121,7 @@ class BrandsFields(val `_path`: java.util.List[Path]) extends TupleExpr7[BrandsI override def `_6`: SqlExpr[String] = countryOfOrigin - override def `_7`: SqlExpr[Boolean] = isActive + override def `_7`: SqlExpr[/* user-picked */ IsActive] = isActive } object BrandsFields { diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/brands/BrandsId.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/brands/BrandsId.scala index b413b8b7a9..7f5587a854 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/brands/BrandsId.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/brands/BrandsId.scala @@ -17,5 +17,5 @@ case class BrandsId(@JsonValue value: Uint2) extends scala.AnyVal object BrandsId { given bijection: Bijection[BrandsId, Uint2] = Bijection.apply[BrandsId, Uint2](_.value)(BrandsId.apply) - given dbType: MariaType[BrandsId] = MariaTypes.smallintUnsigned.bimap(BrandsId.apply, _.value) + given mariaType: MariaType[BrandsId] = MariaTypes.smallintUnsigned.bimap(BrandsId.apply, _.value) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/brands/BrandsRepoImpl.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/brands/BrandsRepoImpl.scala index 742c0bf9b8..195bd87763 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/brands/BrandsRepoImpl.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/brands/BrandsRepoImpl.scala @@ -10,27 +10,27 @@ import dev.typr.foundations.scala.DbTypeOps import dev.typr.foundations.scala.DeleteBuilder import dev.typr.foundations.scala.Dialect import dev.typr.foundations.scala.Fragment -import dev.typr.foundations.scala.ScalaDbTypes import dev.typr.foundations.scala.SelectBuilder import dev.typr.foundations.scala.UpdateBuilder import java.sql.Connection import scala.collection.mutable.ListBuffer +import testdb.userdefined.IsActive import dev.typr.foundations.scala.Fragment.sql class BrandsRepoImpl extends BrandsRepo { override def delete: DeleteBuilder[BrandsFields, BrandsRow] = DeleteBuilder.of("`brands`", BrandsFields.structure, Dialect.MARIADB) - override def deleteById(brandId: BrandsId)(using c: Connection): Boolean = sql"delete from `brands` where `brand_id` = ${Fragment.encode(BrandsId.dbType, brandId)}".update().runUnchecked(c) > 0 + override def deleteById(brandId: BrandsId)(using c: Connection): Boolean = sql"delete from `brands` where `brand_id` = ${Fragment.encode(BrandsId.mariaType, brandId)}".update().runUnchecked(c) > 0 override def deleteByIds(brandIds: Array[BrandsId])(using c: Connection): Int = { val fragments: ListBuffer[Fragment] = ListBuffer() - brandIds.foreach { id => fragments.addOne(Fragment.encode(BrandsId.dbType, id)): @scala.annotation.nowarn } + brandIds.foreach { id => fragments.addOne(Fragment.encode(BrandsId.mariaType, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("delete from `brands` where `brand_id` in ("), Fragment.comma(fragments), Fragment.lit(")")).update().runUnchecked(c) } override def insert(unsaved: BrandsRow)(using c: Connection): BrandsRow = { sql"""insert into `brands`(`name`, `slug`, `logo_blob`, `website_url`, `country_of_origin`, `is_active`) - values (${Fragment.encode(MariaTypes.varchar, unsaved.name)}, ${Fragment.encode(MariaTypes.varchar, unsaved.slug)}, ${Fragment.encode(MariaTypes.mediumblob.nullable, unsaved.logoBlob)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.websiteUrl)}, ${Fragment.encode(MariaTypes.char_.nullable, unsaved.countryOfOrigin)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.bool, unsaved.isActive)}) + values (${Fragment.encode(MariaTypes.varchar, unsaved.name)}, ${Fragment.encode(MariaTypes.varchar, unsaved.slug)}, ${Fragment.encode(MariaTypes.mediumblob.nullable, unsaved.logoBlob)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.websiteUrl)}, ${Fragment.encode(MariaTypes.char_.nullable, unsaved.countryOfOrigin)}, ${Fragment.encode(IsActive.mariaType, unsaved.isActive)}) RETURNING `brand_id`, `name`, `slug`, `logo_blob`, `website_url`, `country_of_origin`, `is_active` """ .updateReturning(BrandsRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -57,7 +57,7 @@ class BrandsRepoImpl extends BrandsRepo { ); unsaved.isActive.visit( { }, - value => { columns.addOne(Fragment.lit("`is_active`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(ScalaDbTypes.MariaTypes.bool, value)}"): @scala.annotation.nowarn } + value => { columns.addOne(Fragment.lit("`is_active`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(IsActive.mariaType, value)}"): @scala.annotation.nowarn } ); val q: Fragment = { sql"""insert into `brands`(${Fragment.comma(columns)}) @@ -79,12 +79,12 @@ class BrandsRepoImpl extends BrandsRepo { override def selectById(brandId: BrandsId)(using c: Connection): Option[BrandsRow] = { sql"""select `brand_id`, `name`, `slug`, `logo_blob`, `website_url`, `country_of_origin`, `is_active` from `brands` - where `brand_id` = ${Fragment.encode(BrandsId.dbType, brandId)}""".query(BrandsRow.`_rowParser`.first()).runUnchecked(c) + where `brand_id` = ${Fragment.encode(BrandsId.mariaType, brandId)}""".query(BrandsRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(brandIds: Array[BrandsId])(using c: Connection): List[BrandsRow] = { val fragments: ListBuffer[Fragment] = ListBuffer() - brandIds.foreach { id => fragments.addOne(Fragment.encode(BrandsId.dbType, id)): @scala.annotation.nowarn } + brandIds.foreach { id => fragments.addOne(Fragment.encode(BrandsId.mariaType, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("select `brand_id`, `name`, `slug`, `logo_blob`, `website_url`, `country_of_origin`, `is_active` from `brands` where `brand_id` in ("), Fragment.comma(fragments), Fragment.lit(")")).query(BrandsRow.`_rowParser`.all()).runUnchecked(c) } @@ -111,13 +111,13 @@ class BrandsRepoImpl extends BrandsRepo { `logo_blob` = ${Fragment.encode(MariaTypes.mediumblob.nullable, row.logoBlob)}, `website_url` = ${Fragment.encode(MariaTypes.varchar.nullable, row.websiteUrl)}, `country_of_origin` = ${Fragment.encode(MariaTypes.char_.nullable, row.countryOfOrigin)}, - `is_active` = ${Fragment.encode(ScalaDbTypes.MariaTypes.bool, row.isActive)} - where `brand_id` = ${Fragment.encode(BrandsId.dbType, brandId)}""".update().runUnchecked(c) > 0 + `is_active` = ${Fragment.encode(IsActive.mariaType, row.isActive)} + where `brand_id` = ${Fragment.encode(BrandsId.mariaType, brandId)}""".update().runUnchecked(c) > 0 } override def upsert(unsaved: BrandsRow)(using c: Connection): BrandsRow = { sql"""INSERT INTO `brands`(`brand_id`, `name`, `slug`, `logo_blob`, `website_url`, `country_of_origin`, `is_active`) - VALUES (${Fragment.encode(BrandsId.dbType, unsaved.brandId)}, ${Fragment.encode(MariaTypes.varchar, unsaved.name)}, ${Fragment.encode(MariaTypes.varchar, unsaved.slug)}, ${Fragment.encode(MariaTypes.mediumblob.nullable, unsaved.logoBlob)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.websiteUrl)}, ${Fragment.encode(MariaTypes.char_.nullable, unsaved.countryOfOrigin)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.bool, unsaved.isActive)}) + VALUES (${Fragment.encode(BrandsId.mariaType, unsaved.brandId)}, ${Fragment.encode(MariaTypes.varchar, unsaved.name)}, ${Fragment.encode(MariaTypes.varchar, unsaved.slug)}, ${Fragment.encode(MariaTypes.mediumblob.nullable, unsaved.logoBlob)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.websiteUrl)}, ${Fragment.encode(MariaTypes.char_.nullable, unsaved.countryOfOrigin)}, ${Fragment.encode(IsActive.mariaType, unsaved.isActive)}) ON DUPLICATE KEY UPDATE `name` = VALUES(`name`), `slug` = VALUES(`slug`), `logo_blob` = VALUES(`logo_blob`), diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/brands/BrandsRow.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/brands/BrandsRow.scala index 6d5493b0c5..0518ab35e8 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/brands/BrandsRow.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/brands/BrandsRow.scala @@ -11,8 +11,8 @@ import dev.typr.foundations.Tuple.Tuple7 import dev.typr.foundations.scala.DbTypeOps import dev.typr.foundations.scala.RowParser import dev.typr.foundations.scala.RowParsers -import dev.typr.foundations.scala.ScalaDbTypes import testdb.customtypes.Defaulted +import testdb.userdefined.IsActive /** Table: brands * Primary key: brand_id @@ -41,15 +41,15 @@ case class BrandsRow( /** * Default: 1 */ - @JsonProperty("is_active") isActive: Boolean -) extends Tuple7[BrandsId, String, String, Option[Array[Byte]], Option[String], Option[String], Boolean] { + @JsonProperty("is_active") isActive: /* user-picked */ IsActive +) extends Tuple7[BrandsId, String, String, Option[Array[Byte]], Option[String], Option[String], /* user-picked */ IsActive] { def id: BrandsId = brandId def toUnsavedRow( logoBlob: Defaulted[Option[Array[Byte]]] = Defaulted.Provided(this.logoBlob), websiteUrl: Defaulted[Option[String]] = Defaulted.Provided(this.websiteUrl), countryOfOrigin: Defaulted[Option[String]] = Defaulted.Provided(this.countryOfOrigin), - isActive: Defaulted[Boolean] = Defaulted.Provided(this.isActive) + isActive: Defaulted[/* user-picked */ IsActive] = Defaulted.Provided(this.isActive) ): BrandsRowUnsaved = { new BrandsRowUnsaved( name, @@ -73,9 +73,9 @@ case class BrandsRow( override def `_6`: Option[String] = countryOfOrigin - override def `_7`: Boolean = isActive + override def `_7`: /* user-picked */ IsActive = isActive } object BrandsRow { - val `_rowParser`: RowParser[BrandsRow] = RowParsers.of(BrandsId.dbType, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.mediumblob.nullable, MariaTypes.varchar.nullable, MariaTypes.char_.nullable, ScalaDbTypes.MariaTypes.bool)(BrandsRow.apply)(row => Array[Any](row.brandId, row.name, row.slug, row.logoBlob, row.websiteUrl, row.countryOfOrigin, row.isActive)) + val `_rowParser`: RowParser[BrandsRow] = RowParsers.of(BrandsId.mariaType, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.mediumblob.nullable, MariaTypes.varchar.nullable, MariaTypes.char_.nullable, IsActive.mariaType)(BrandsRow.apply)(row => Array[Any](row.brandId, row.name, row.slug, row.logoBlob, row.websiteUrl, row.countryOfOrigin, row.isActive)) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/brands/BrandsRowUnsaved.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/brands/BrandsRowUnsaved.scala index 9d79044636..ed7c6370c8 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/brands/BrandsRowUnsaved.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/brands/BrandsRowUnsaved.scala @@ -8,6 +8,7 @@ package testdb.brands import com.fasterxml.jackson.annotation.JsonProperty import testdb.customtypes.Defaulted import testdb.customtypes.Defaulted.UseDefault +import testdb.userdefined.IsActive /** This class corresponds to a row in table `brands` which has not been persisted yet */ case class BrandsRowUnsaved( @@ -30,13 +31,13 @@ case class BrandsRowUnsaved( /** Default: 1 */ - @JsonProperty("is_active") isActive: Defaulted[Boolean] = new UseDefault() + @JsonProperty("is_active") isActive: Defaulted[/* user-picked */ IsActive] = new UseDefault() ) { def toRow( logoBlobDefault: => Option[Array[Byte]], websiteUrlDefault: => Option[String], countryOfOriginDefault: => Option[String], - isActiveDefault: => Boolean, + isActiveDefault: => /* user-picked */ IsActive, brandIdDefault: => BrandsId ): BrandsRow = { new BrandsRow( diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/categories/CategoriesFields.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/categories/CategoriesFields.scala index fcb531dc84..4360142d26 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/categories/CategoriesFields.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/categories/CategoriesFields.scala @@ -29,7 +29,7 @@ class CategoriesFields(val `_path`: java.util.List[Path]) extends TupleExpr9[Cat None, None, (row, value) => row.copy(categoryId = value), - CategoriesId.dbType + CategoriesId.mariaType ) } @@ -41,7 +41,7 @@ class CategoriesFields(val `_path`: java.util.List[Path]) extends TupleExpr9[Cat None, None, (row, value) => row.copy(parentId = value), - CategoriesId.dbType + CategoriesId.mariaType ) } diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/categories/CategoriesId.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/categories/CategoriesId.scala index 6d4c5f735d..bfb245b67d 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/categories/CategoriesId.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/categories/CategoriesId.scala @@ -17,5 +17,5 @@ case class CategoriesId(@JsonValue value: Uint4) extends scala.AnyVal object CategoriesId { given bijection: Bijection[CategoriesId, Uint4] = Bijection.apply[CategoriesId, Uint4](_.value)(CategoriesId.apply) - given dbType: MariaType[CategoriesId] = MariaTypes.mediumintUnsigned.bimap(CategoriesId.apply, _.value) + given mariaType: MariaType[CategoriesId] = MariaTypes.mediumintUnsigned.bimap(CategoriesId.apply, _.value) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/categories/CategoriesRepoImpl.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/categories/CategoriesRepoImpl.scala index 940a1c361b..9b398c54b1 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/categories/CategoriesRepoImpl.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/categories/CategoriesRepoImpl.scala @@ -20,17 +20,17 @@ import dev.typr.foundations.scala.Fragment.sql class CategoriesRepoImpl extends CategoriesRepo { override def delete: DeleteBuilder[CategoriesFields, CategoriesRow] = DeleteBuilder.of("`categories`", CategoriesFields.structure, Dialect.MARIADB) - override def deleteById(categoryId: CategoriesId)(using c: Connection): Boolean = sql"delete from `categories` where `category_id` = ${Fragment.encode(CategoriesId.dbType, categoryId)}".update().runUnchecked(c) > 0 + override def deleteById(categoryId: CategoriesId)(using c: Connection): Boolean = sql"delete from `categories` where `category_id` = ${Fragment.encode(CategoriesId.mariaType, categoryId)}".update().runUnchecked(c) > 0 override def deleteByIds(categoryIds: Array[CategoriesId])(using c: Connection): Int = { val fragments: ListBuffer[Fragment] = ListBuffer() - categoryIds.foreach { id => fragments.addOne(Fragment.encode(CategoriesId.dbType, id)): @scala.annotation.nowarn } + categoryIds.foreach { id => fragments.addOne(Fragment.encode(CategoriesId.mariaType, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("delete from `categories` where `category_id` in ("), Fragment.comma(fragments), Fragment.lit(")")).update().runUnchecked(c) } override def insert(unsaved: CategoriesRow)(using c: Connection): CategoriesRow = { sql"""insert into `categories`(`parent_id`, `name`, `slug`, `description`, `image_url`, `sort_order`, `is_visible`, `metadata`) - values (${Fragment.encode(CategoriesId.dbType.nullable, unsaved.parentId)}, ${Fragment.encode(MariaTypes.varchar, unsaved.name)}, ${Fragment.encode(MariaTypes.varchar, unsaved.slug)}, ${Fragment.encode(MariaTypes.mediumtext.nullable, unsaved.description)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.imageUrl)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.smallint, unsaved.sortOrder)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.bool, unsaved.isVisible)}, ${Fragment.encode(MariaTypes.json.nullable, unsaved.metadata)}) + values (${Fragment.encode(CategoriesId.mariaType.nullable, unsaved.parentId)}, ${Fragment.encode(MariaTypes.varchar, unsaved.name)}, ${Fragment.encode(MariaTypes.varchar, unsaved.slug)}, ${Fragment.encode(MariaTypes.mediumtext.nullable, unsaved.description)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.imageUrl)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.smallint, unsaved.sortOrder)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.bool, unsaved.isVisible)}, ${Fragment.encode(MariaTypes.json.nullable, unsaved.metadata)}) RETURNING `category_id`, `parent_id`, `name`, `slug`, `description`, `image_url`, `sort_order`, `is_visible`, `metadata` """ .updateReturning(CategoriesRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -45,7 +45,7 @@ class CategoriesRepoImpl extends CategoriesRepo { values.addOne(sql"${Fragment.encode(MariaTypes.varchar, unsaved.slug)}"): @scala.annotation.nowarn unsaved.parentId.visit( { }, - value => { columns.addOne(Fragment.lit("`parent_id`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(CategoriesId.dbType.nullable, value)}"): @scala.annotation.nowarn } + value => { columns.addOne(Fragment.lit("`parent_id`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(CategoriesId.mariaType.nullable, value)}"): @scala.annotation.nowarn } ); unsaved.description.visit( { }, @@ -87,12 +87,12 @@ class CategoriesRepoImpl extends CategoriesRepo { override def selectById(categoryId: CategoriesId)(using c: Connection): Option[CategoriesRow] = { sql"""select `category_id`, `parent_id`, `name`, `slug`, `description`, `image_url`, `sort_order`, `is_visible`, `metadata` from `categories` - where `category_id` = ${Fragment.encode(CategoriesId.dbType, categoryId)}""".query(CategoriesRow.`_rowParser`.first()).runUnchecked(c) + where `category_id` = ${Fragment.encode(CategoriesId.mariaType, categoryId)}""".query(CategoriesRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(categoryIds: Array[CategoriesId])(using c: Connection): List[CategoriesRow] = { val fragments: ListBuffer[Fragment] = ListBuffer() - categoryIds.foreach { id => fragments.addOne(Fragment.encode(CategoriesId.dbType, id)): @scala.annotation.nowarn } + categoryIds.foreach { id => fragments.addOne(Fragment.encode(CategoriesId.mariaType, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("select `category_id`, `parent_id`, `name`, `slug`, `description`, `image_url`, `sort_order`, `is_visible`, `metadata` from `categories` where `category_id` in ("), Fragment.comma(fragments), Fragment.lit(")")).query(CategoriesRow.`_rowParser`.all()).runUnchecked(c) } @@ -114,7 +114,7 @@ class CategoriesRepoImpl extends CategoriesRepo { override def update(row: CategoriesRow)(using c: Connection): Boolean = { val categoryId: CategoriesId = row.categoryId return sql"""update `categories` - set `parent_id` = ${Fragment.encode(CategoriesId.dbType.nullable, row.parentId)}, + set `parent_id` = ${Fragment.encode(CategoriesId.mariaType.nullable, row.parentId)}, `name` = ${Fragment.encode(MariaTypes.varchar, row.name)}, `slug` = ${Fragment.encode(MariaTypes.varchar, row.slug)}, `description` = ${Fragment.encode(MariaTypes.mediumtext.nullable, row.description)}, @@ -122,12 +122,12 @@ class CategoriesRepoImpl extends CategoriesRepo { `sort_order` = ${Fragment.encode(ScalaDbTypes.MariaTypes.smallint, row.sortOrder)}, `is_visible` = ${Fragment.encode(ScalaDbTypes.MariaTypes.bool, row.isVisible)}, `metadata` = ${Fragment.encode(MariaTypes.json.nullable, row.metadata)} - where `category_id` = ${Fragment.encode(CategoriesId.dbType, categoryId)}""".update().runUnchecked(c) > 0 + where `category_id` = ${Fragment.encode(CategoriesId.mariaType, categoryId)}""".update().runUnchecked(c) > 0 } override def upsert(unsaved: CategoriesRow)(using c: Connection): CategoriesRow = { sql"""INSERT INTO `categories`(`category_id`, `parent_id`, `name`, `slug`, `description`, `image_url`, `sort_order`, `is_visible`, `metadata`) - VALUES (${Fragment.encode(CategoriesId.dbType, unsaved.categoryId)}, ${Fragment.encode(CategoriesId.dbType.nullable, unsaved.parentId)}, ${Fragment.encode(MariaTypes.varchar, unsaved.name)}, ${Fragment.encode(MariaTypes.varchar, unsaved.slug)}, ${Fragment.encode(MariaTypes.mediumtext.nullable, unsaved.description)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.imageUrl)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.smallint, unsaved.sortOrder)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.bool, unsaved.isVisible)}, ${Fragment.encode(MariaTypes.json.nullable, unsaved.metadata)}) + VALUES (${Fragment.encode(CategoriesId.mariaType, unsaved.categoryId)}, ${Fragment.encode(CategoriesId.mariaType.nullable, unsaved.parentId)}, ${Fragment.encode(MariaTypes.varchar, unsaved.name)}, ${Fragment.encode(MariaTypes.varchar, unsaved.slug)}, ${Fragment.encode(MariaTypes.mediumtext.nullable, unsaved.description)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.imageUrl)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.smallint, unsaved.sortOrder)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.bool, unsaved.isVisible)}, ${Fragment.encode(MariaTypes.json.nullable, unsaved.metadata)}) ON DUPLICATE KEY UPDATE `parent_id` = VALUES(`parent_id`), `name` = VALUES(`name`), `slug` = VALUES(`slug`), diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/categories/CategoriesRow.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/categories/CategoriesRow.scala index 3480b2fd99..71fe5f1939 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/categories/CategoriesRow.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/categories/CategoriesRow.scala @@ -95,5 +95,5 @@ case class CategoriesRow( } object CategoriesRow { - val `_rowParser`: RowParser[CategoriesRow] = RowParsers.of(CategoriesId.dbType, CategoriesId.dbType.nullable, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.mediumtext.nullable, MariaTypes.varchar.nullable, ScalaDbTypes.MariaTypes.smallint, ScalaDbTypes.MariaTypes.bool, MariaTypes.json.nullable)(CategoriesRow.apply)(row => Array[Any](row.categoryId, row.parentId, row.name, row.slug, row.description, row.imageUrl, row.sortOrder, row.isVisible, row.metadata)) + val `_rowParser`: RowParser[CategoriesRow] = RowParsers.of(CategoriesId.mariaType, CategoriesId.mariaType.nullable, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.mediumtext.nullable, MariaTypes.varchar.nullable, ScalaDbTypes.MariaTypes.smallint, ScalaDbTypes.MariaTypes.bool, MariaTypes.json.nullable)(CategoriesRow.apply)(row => Array[Any](row.categoryId, row.parentId, row.name, row.slug, row.description, row.imageUrl, row.sortOrder, row.isVisible, row.metadata)) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/customer_addresses/CustomerAddressesFields.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/customer_addresses/CustomerAddressesFields.scala index 07bb7baae5..bf5eb4b745 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/customer_addresses/CustomerAddressesFields.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/customer_addresses/CustomerAddressesFields.scala @@ -12,7 +12,6 @@ import dev.typr.foundations.dsl.Path import dev.typr.foundations.dsl.SqlExpr.FieldLike import dev.typr.foundations.scala.ForeignKey import dev.typr.foundations.scala.RelationStructure -import dev.typr.foundations.scala.ScalaDbTypes import dev.typr.foundations.scala.SqlExpr import dev.typr.foundations.scala.SqlExpr.Field import dev.typr.foundations.scala.SqlExpr.IdField @@ -23,8 +22,9 @@ import org.mariadb.jdbc.`type`.Point import testdb.customers.CustomersFields import testdb.customers.CustomersId import testdb.customers.CustomersRow +import testdb.userdefined.IsDefault -class CustomerAddressesFields(val `_path`: java.util.List[Path]) extends TupleExpr14[CustomerAddressesId, CustomersId, String, Boolean, String, String, String, String, String, String, String, Point, String, LocalDateTime] with RelationStructure[CustomerAddressesFields, CustomerAddressesRow] with FieldsBase[CustomerAddressesRow] { +class CustomerAddressesFields(val `_path`: java.util.List[Path]) extends TupleExpr14[CustomerAddressesId, CustomersId, String, /* user-picked */ IsDefault, String, String, String, String, String, String, String, Point, String, LocalDateTime] with RelationStructure[CustomerAddressesFields, CustomerAddressesRow] with FieldsBase[CustomerAddressesRow] { def addressId: IdField[CustomerAddressesId, CustomerAddressesRow] = { new IdField[CustomerAddressesId, CustomerAddressesRow]( _path, @@ -33,7 +33,7 @@ class CustomerAddressesFields(val `_path`: java.util.List[Path]) extends TupleEx None, None, (row, value) => row.copy(addressId = value), - CustomerAddressesId.dbType + CustomerAddressesId.mariaType ) } @@ -45,7 +45,7 @@ class CustomerAddressesFields(val `_path`: java.util.List[Path]) extends TupleEx None, None, (row, value) => row.copy(customerId = value), - CustomersId.dbType + CustomersId.mariaType ) } @@ -61,15 +61,15 @@ class CustomerAddressesFields(val `_path`: java.util.List[Path]) extends TupleEx ) } - def isDefault: Field[Boolean, CustomerAddressesRow] = { - new Field[Boolean, CustomerAddressesRow]( + def isDefault: Field[/* user-picked */ IsDefault, CustomerAddressesRow] = { + new Field[/* user-picked */ IsDefault, CustomerAddressesRow]( _path, "is_default", _.isDefault, None, None, (row, value) => row.copy(isDefault = value), - ScalaDbTypes.MariaTypes.bool + IsDefault.mariaType ) } @@ -207,7 +207,7 @@ class CustomerAddressesFields(val `_path`: java.util.List[Path]) extends TupleEx override def `_3`: SqlExpr[String] = addressType - override def `_4`: SqlExpr[Boolean] = isDefault + override def `_4`: SqlExpr[/* user-picked */ IsDefault] = isDefault override def `_5`: SqlExpr[String] = recipientName diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/customer_addresses/CustomerAddressesId.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/customer_addresses/CustomerAddressesId.scala index 91e7f4c308..cd3ba525af 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/customer_addresses/CustomerAddressesId.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/customer_addresses/CustomerAddressesId.scala @@ -17,5 +17,5 @@ case class CustomerAddressesId(@JsonValue value: Uint4) extends scala.AnyVal object CustomerAddressesId { given bijection: Bijection[CustomerAddressesId, Uint4] = Bijection.apply[CustomerAddressesId, Uint4](_.value)(CustomerAddressesId.apply) - given dbType: MariaType[CustomerAddressesId] = MariaTypes.intUnsigned.bimap(CustomerAddressesId.apply, _.value) + given mariaType: MariaType[CustomerAddressesId] = MariaTypes.intUnsigned.bimap(CustomerAddressesId.apply, _.value) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/customer_addresses/CustomerAddressesRepoImpl.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/customer_addresses/CustomerAddressesRepoImpl.scala index d74225edfc..2f0dae0764 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/customer_addresses/CustomerAddressesRepoImpl.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/customer_addresses/CustomerAddressesRepoImpl.scala @@ -10,28 +10,28 @@ import dev.typr.foundations.scala.DbTypeOps import dev.typr.foundations.scala.DeleteBuilder import dev.typr.foundations.scala.Dialect import dev.typr.foundations.scala.Fragment -import dev.typr.foundations.scala.ScalaDbTypes import dev.typr.foundations.scala.SelectBuilder import dev.typr.foundations.scala.UpdateBuilder import java.sql.Connection import scala.collection.mutable.ListBuffer import testdb.customers.CustomersId +import testdb.userdefined.IsDefault import dev.typr.foundations.scala.Fragment.sql class CustomerAddressesRepoImpl extends CustomerAddressesRepo { override def delete: DeleteBuilder[CustomerAddressesFields, CustomerAddressesRow] = DeleteBuilder.of("`customer_addresses`", CustomerAddressesFields.structure, Dialect.MARIADB) - override def deleteById(addressId: CustomerAddressesId)(using c: Connection): Boolean = sql"delete from `customer_addresses` where `address_id` = ${Fragment.encode(CustomerAddressesId.dbType, addressId)}".update().runUnchecked(c) > 0 + override def deleteById(addressId: CustomerAddressesId)(using c: Connection): Boolean = sql"delete from `customer_addresses` where `address_id` = ${Fragment.encode(CustomerAddressesId.mariaType, addressId)}".update().runUnchecked(c) > 0 override def deleteByIds(addressIds: Array[CustomerAddressesId])(using c: Connection): Int = { val fragments: ListBuffer[Fragment] = ListBuffer() - addressIds.foreach { id => fragments.addOne(Fragment.encode(CustomerAddressesId.dbType, id)): @scala.annotation.nowarn } + addressIds.foreach { id => fragments.addOne(Fragment.encode(CustomerAddressesId.mariaType, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("delete from `customer_addresses` where `address_id` in ("), Fragment.comma(fragments), Fragment.lit(")")).update().runUnchecked(c) } override def insert(unsaved: CustomerAddressesRow)(using c: Connection): CustomerAddressesRow = { sql"""insert into `customer_addresses`(`customer_id`, `address_type`, `is_default`, `recipient_name`, `street_line1`, `street_line2`, `city`, `state_province`, `postal_code`, `country_code`, `location`, `delivery_notes`, `created_at`) - values (${Fragment.encode(CustomersId.dbType, unsaved.customerId)}, ${Fragment.encode(MariaTypes.text, unsaved.addressType)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.bool, unsaved.isDefault)}, ${Fragment.encode(MariaTypes.varchar, unsaved.recipientName)}, ${Fragment.encode(MariaTypes.varchar, unsaved.streetLine1)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.streetLine2)}, ${Fragment.encode(MariaTypes.varchar, unsaved.city)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.stateProvince)}, ${Fragment.encode(MariaTypes.varchar, unsaved.postalCode)}, ${Fragment.encode(MariaTypes.char_, unsaved.countryCode)}, ${Fragment.encode(MariaTypes.point.nullable, unsaved.location)}, ${Fragment.encode(MariaTypes.tinytext.nullable, unsaved.deliveryNotes)}, ${Fragment.encode(MariaTypes.datetime, unsaved.createdAt)}) + values (${Fragment.encode(CustomersId.mariaType, unsaved.customerId)}, ${Fragment.encode(MariaTypes.text, unsaved.addressType)}, ${Fragment.encode(IsDefault.mariaType, unsaved.isDefault)}, ${Fragment.encode(MariaTypes.varchar, unsaved.recipientName)}, ${Fragment.encode(MariaTypes.varchar, unsaved.streetLine1)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.streetLine2)}, ${Fragment.encode(MariaTypes.varchar, unsaved.city)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.stateProvince)}, ${Fragment.encode(MariaTypes.varchar, unsaved.postalCode)}, ${Fragment.encode(MariaTypes.char_, unsaved.countryCode)}, ${Fragment.encode(MariaTypes.point.nullable, unsaved.location)}, ${Fragment.encode(MariaTypes.tinytext.nullable, unsaved.deliveryNotes)}, ${Fragment.encode(MariaTypes.datetime, unsaved.createdAt)}) RETURNING `address_id`, `customer_id`, `address_type`, `is_default`, `recipient_name`, `street_line1`, `street_line2`, `city`, `state_province`, `postal_code`, `country_code`, `location`, `delivery_notes`, `created_at` """ .updateReturning(CustomerAddressesRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -41,7 +41,7 @@ class CustomerAddressesRepoImpl extends CustomerAddressesRepo { val columns: ListBuffer[Fragment] = ListBuffer() val values: ListBuffer[Fragment] = ListBuffer() columns.addOne(Fragment.lit("`customer_id`")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(CustomersId.dbType, unsaved.customerId)}"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(CustomersId.mariaType, unsaved.customerId)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit("`address_type`")): @scala.annotation.nowarn values.addOne(sql"${Fragment.encode(MariaTypes.text, unsaved.addressType)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit("`recipient_name`")): @scala.annotation.nowarn @@ -56,7 +56,7 @@ class CustomerAddressesRepoImpl extends CustomerAddressesRepo { values.addOne(sql"${Fragment.encode(MariaTypes.char_, unsaved.countryCode)}"): @scala.annotation.nowarn unsaved.isDefault.visit( { }, - value => { columns.addOne(Fragment.lit("`is_default`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(ScalaDbTypes.MariaTypes.bool, value)}"): @scala.annotation.nowarn } + value => { columns.addOne(Fragment.lit("`is_default`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(IsDefault.mariaType, value)}"): @scala.annotation.nowarn } ); unsaved.streetLine2.visit( { }, @@ -98,12 +98,12 @@ class CustomerAddressesRepoImpl extends CustomerAddressesRepo { override def selectById(addressId: CustomerAddressesId)(using c: Connection): Option[CustomerAddressesRow] = { sql"""select `address_id`, `customer_id`, `address_type`, `is_default`, `recipient_name`, `street_line1`, `street_line2`, `city`, `state_province`, `postal_code`, `country_code`, `location`, `delivery_notes`, `created_at` from `customer_addresses` - where `address_id` = ${Fragment.encode(CustomerAddressesId.dbType, addressId)}""".query(CustomerAddressesRow.`_rowParser`.first()).runUnchecked(c) + where `address_id` = ${Fragment.encode(CustomerAddressesId.mariaType, addressId)}""".query(CustomerAddressesRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(addressIds: Array[CustomerAddressesId])(using c: Connection): List[CustomerAddressesRow] = { val fragments: ListBuffer[Fragment] = ListBuffer() - addressIds.foreach { id => fragments.addOne(Fragment.encode(CustomerAddressesId.dbType, id)): @scala.annotation.nowarn } + addressIds.foreach { id => fragments.addOne(Fragment.encode(CustomerAddressesId.mariaType, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("select `address_id`, `customer_id`, `address_type`, `is_default`, `recipient_name`, `street_line1`, `street_line2`, `city`, `state_province`, `postal_code`, `country_code`, `location`, `delivery_notes`, `created_at` from `customer_addresses` where `address_id` in ("), Fragment.comma(fragments), Fragment.lit(")")).query(CustomerAddressesRow.`_rowParser`.all()).runUnchecked(c) } @@ -118,9 +118,9 @@ class CustomerAddressesRepoImpl extends CustomerAddressesRepo { override def update(row: CustomerAddressesRow)(using c: Connection): Boolean = { val addressId: CustomerAddressesId = row.addressId return sql"""update `customer_addresses` - set `customer_id` = ${Fragment.encode(CustomersId.dbType, row.customerId)}, + set `customer_id` = ${Fragment.encode(CustomersId.mariaType, row.customerId)}, `address_type` = ${Fragment.encode(MariaTypes.text, row.addressType)}, - `is_default` = ${Fragment.encode(ScalaDbTypes.MariaTypes.bool, row.isDefault)}, + `is_default` = ${Fragment.encode(IsDefault.mariaType, row.isDefault)}, `recipient_name` = ${Fragment.encode(MariaTypes.varchar, row.recipientName)}, `street_line1` = ${Fragment.encode(MariaTypes.varchar, row.streetLine1)}, `street_line2` = ${Fragment.encode(MariaTypes.varchar.nullable, row.streetLine2)}, @@ -131,12 +131,12 @@ class CustomerAddressesRepoImpl extends CustomerAddressesRepo { `location` = ${Fragment.encode(MariaTypes.point.nullable, row.location)}, `delivery_notes` = ${Fragment.encode(MariaTypes.tinytext.nullable, row.deliveryNotes)}, `created_at` = ${Fragment.encode(MariaTypes.datetime, row.createdAt)} - where `address_id` = ${Fragment.encode(CustomerAddressesId.dbType, addressId)}""".update().runUnchecked(c) > 0 + where `address_id` = ${Fragment.encode(CustomerAddressesId.mariaType, addressId)}""".update().runUnchecked(c) > 0 } override def upsert(unsaved: CustomerAddressesRow)(using c: Connection): CustomerAddressesRow = { sql"""INSERT INTO `customer_addresses`(`address_id`, `customer_id`, `address_type`, `is_default`, `recipient_name`, `street_line1`, `street_line2`, `city`, `state_province`, `postal_code`, `country_code`, `location`, `delivery_notes`, `created_at`) - VALUES (${Fragment.encode(CustomerAddressesId.dbType, unsaved.addressId)}, ${Fragment.encode(CustomersId.dbType, unsaved.customerId)}, ${Fragment.encode(MariaTypes.text, unsaved.addressType)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.bool, unsaved.isDefault)}, ${Fragment.encode(MariaTypes.varchar, unsaved.recipientName)}, ${Fragment.encode(MariaTypes.varchar, unsaved.streetLine1)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.streetLine2)}, ${Fragment.encode(MariaTypes.varchar, unsaved.city)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.stateProvince)}, ${Fragment.encode(MariaTypes.varchar, unsaved.postalCode)}, ${Fragment.encode(MariaTypes.char_, unsaved.countryCode)}, ${Fragment.encode(MariaTypes.point.nullable, unsaved.location)}, ${Fragment.encode(MariaTypes.tinytext.nullable, unsaved.deliveryNotes)}, ${Fragment.encode(MariaTypes.datetime, unsaved.createdAt)}) + VALUES (${Fragment.encode(CustomerAddressesId.mariaType, unsaved.addressId)}, ${Fragment.encode(CustomersId.mariaType, unsaved.customerId)}, ${Fragment.encode(MariaTypes.text, unsaved.addressType)}, ${Fragment.encode(IsDefault.mariaType, unsaved.isDefault)}, ${Fragment.encode(MariaTypes.varchar, unsaved.recipientName)}, ${Fragment.encode(MariaTypes.varchar, unsaved.streetLine1)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.streetLine2)}, ${Fragment.encode(MariaTypes.varchar, unsaved.city)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.stateProvince)}, ${Fragment.encode(MariaTypes.varchar, unsaved.postalCode)}, ${Fragment.encode(MariaTypes.char_, unsaved.countryCode)}, ${Fragment.encode(MariaTypes.point.nullable, unsaved.location)}, ${Fragment.encode(MariaTypes.tinytext.nullable, unsaved.deliveryNotes)}, ${Fragment.encode(MariaTypes.datetime, unsaved.createdAt)}) ON DUPLICATE KEY UPDATE `customer_id` = VALUES(`customer_id`), `address_type` = VALUES(`address_type`), `is_default` = VALUES(`is_default`), diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/customer_addresses/CustomerAddressesRow.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/customer_addresses/CustomerAddressesRow.scala index 53ece036e5..3b2e5c2fbe 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/customer_addresses/CustomerAddressesRow.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/customer_addresses/CustomerAddressesRow.scala @@ -11,11 +11,11 @@ import dev.typr.foundations.Tuple.Tuple14 import dev.typr.foundations.scala.DbTypeOps import dev.typr.foundations.scala.RowParser import dev.typr.foundations.scala.RowParsers -import dev.typr.foundations.scala.ScalaDbTypes import java.time.LocalDateTime import org.mariadb.jdbc.`type`.Point import testdb.customers.CustomersId import testdb.customtypes.Defaulted +import testdb.userdefined.IsDefault /** Table: customer_addresses * Primary key: address_id @@ -34,7 +34,7 @@ case class CustomerAddressesRow( /** * Default: 0 */ - @JsonProperty("is_default") isDefault: Boolean, + @JsonProperty("is_default") isDefault: /* user-picked */ IsDefault, /** */ @JsonProperty("recipient_name") recipientName: String, /** */ @@ -65,11 +65,11 @@ case class CustomerAddressesRow( * Default: current_timestamp() */ @JsonProperty("created_at") createdAt: LocalDateTime -) extends Tuple14[CustomerAddressesId, CustomersId, String, Boolean, String, String, Option[String], String, Option[String], String, String, Option[Point], Option[String], LocalDateTime] { +) extends Tuple14[CustomerAddressesId, CustomersId, String, /* user-picked */ IsDefault, String, String, Option[String], String, Option[String], String, String, Option[Point], Option[String], LocalDateTime] { def id: CustomerAddressesId = addressId def toUnsavedRow( - isDefault: Defaulted[Boolean] = Defaulted.Provided(this.isDefault), + isDefault: Defaulted[/* user-picked */ IsDefault] = Defaulted.Provided(this.isDefault), streetLine2: Defaulted[Option[String]] = Defaulted.Provided(this.streetLine2), stateProvince: Defaulted[Option[String]] = Defaulted.Provided(this.stateProvince), location: Defaulted[Option[Point]] = Defaulted.Provided(this.location), @@ -99,7 +99,7 @@ case class CustomerAddressesRow( override def `_3`: String = addressType - override def `_4`: Boolean = isDefault + override def `_4`: /* user-picked */ IsDefault = isDefault override def `_5`: String = recipientName @@ -123,5 +123,5 @@ case class CustomerAddressesRow( } object CustomerAddressesRow { - val `_rowParser`: RowParser[CustomerAddressesRow] = RowParsers.of(CustomerAddressesId.dbType, CustomersId.dbType, MariaTypes.text, ScalaDbTypes.MariaTypes.bool, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.varchar.nullable, MariaTypes.varchar, MariaTypes.varchar.nullable, MariaTypes.varchar, MariaTypes.char_, MariaTypes.point.nullable, MariaTypes.tinytext.nullable, MariaTypes.datetime)(CustomerAddressesRow.apply)(row => Array[Any](row.addressId, row.customerId, row.addressType, row.isDefault, row.recipientName, row.streetLine1, row.streetLine2, row.city, row.stateProvince, row.postalCode, row.countryCode, row.location, row.deliveryNotes, row.createdAt)) + val `_rowParser`: RowParser[CustomerAddressesRow] = RowParsers.of(CustomerAddressesId.mariaType, CustomersId.mariaType, MariaTypes.text, IsDefault.mariaType, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.varchar.nullable, MariaTypes.varchar, MariaTypes.varchar.nullable, MariaTypes.varchar, MariaTypes.char_, MariaTypes.point.nullable, MariaTypes.tinytext.nullable, MariaTypes.datetime)(CustomerAddressesRow.apply)(row => Array[Any](row.addressId, row.customerId, row.addressType, row.isDefault, row.recipientName, row.streetLine1, row.streetLine2, row.city, row.stateProvince, row.postalCode, row.countryCode, row.location, row.deliveryNotes, row.createdAt)) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/customer_addresses/CustomerAddressesRowUnsaved.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/customer_addresses/CustomerAddressesRowUnsaved.scala index 9106103013..3b2044ec62 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/customer_addresses/CustomerAddressesRowUnsaved.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/customer_addresses/CustomerAddressesRowUnsaved.scala @@ -11,6 +11,7 @@ import org.mariadb.jdbc.`type`.Point import testdb.customers.CustomersId import testdb.customtypes.Defaulted import testdb.customtypes.Defaulted.UseDefault +import testdb.userdefined.IsDefault /** This class corresponds to a row in table `customer_addresses` which has not been persisted yet */ case class CustomerAddressesRowUnsaved( @@ -33,7 +34,7 @@ case class CustomerAddressesRowUnsaved( /** Default: 0 */ - @JsonProperty("is_default") isDefault: Defaulted[Boolean] = new UseDefault(), + @JsonProperty("is_default") isDefault: Defaulted[/* user-picked */ IsDefault] = new UseDefault(), /** Default: NULL */ @@ -56,7 +57,7 @@ case class CustomerAddressesRowUnsaved( @JsonProperty("created_at") createdAt: Defaulted[LocalDateTime] = new UseDefault() ) { def toRow( - isDefaultDefault: => Boolean, + isDefaultDefault: => /* user-picked */ IsDefault, streetLine2Default: => Option[String], stateProvinceDefault: => Option[String], locationDefault: => Option[Point], diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/customer_orders/CustomerOrdersSqlRepoImpl.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/customer_orders/CustomerOrdersSqlRepoImpl.scala index a3418374c0..079a26cf39 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/customer_orders/CustomerOrdersSqlRepoImpl.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/customer_orders/CustomerOrdersSqlRepoImpl.scala @@ -30,7 +30,7 @@ class CustomerOrdersSqlRepoImpl extends CustomerOrdersSqlRepo { o.ordered_at FROM customers c LEFT JOIN orders o ON c.customer_id = o.customer_id - WHERE c.customer_id = ${Fragment.encode(CustomersId.dbType, customerId)} + WHERE c.customer_id = ${Fragment.encode(CustomersId.mariaType, customerId)} AND (${Fragment.encode(MariaTypes.text.nullable, orderStatus)} IS NULL OR o.order_status = ${Fragment.encode(MariaTypes.text.nullable, orderStatus)}) """.query(CustomerOrdersSqlRow.`_rowParser`.all()).runUnchecked(c) } diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/customer_orders/CustomerOrdersSqlRow.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/customer_orders/CustomerOrdersSqlRow.scala index 295fc9186b..f8cd77236e 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/customer_orders/CustomerOrdersSqlRow.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/customer_orders/CustomerOrdersSqlRow.scala @@ -15,17 +15,20 @@ import dev.typr.foundations.scala.ScalaDbTypes import java.time.LocalDateTime import testdb.customers.CustomersId import testdb.orders.OrdersId +import testdb.userdefined.Email +import testdb.userdefined.FirstName +import testdb.userdefined.LastName /** SQL file: customer_orders.sql */ case class CustomerOrdersSqlRow( /** Points to [[testdb.customers.CustomersRow.customerId]] */ @JsonProperty("customer_id") customerId: CustomersId, /** Points to [[testdb.customers.CustomersRow.email]] */ - email: String, + email: /* user-picked */ Email, /** Points to [[testdb.customers.CustomersRow.firstName]] */ - @JsonProperty("first_name") firstName: String, + @JsonProperty("first_name") firstName: /* user-picked */ FirstName, /** Points to [[testdb.customers.CustomersRow.lastName]] */ - @JsonProperty("last_name") lastName: String, + @JsonProperty("last_name") lastName: /* user-picked */ LastName, /** Points to [[testdb.customers.CustomersRow.tier]] */ tier: String, /** Points to [[testdb.orders.OrdersRow.orderId]] */ @@ -38,14 +41,14 @@ case class CustomerOrdersSqlRow( @JsonProperty("total_amount") totalAmount: Option[BigDecimal], /** Points to [[testdb.orders.OrdersRow.orderedAt]] */ @JsonProperty("ordered_at") orderedAt: Option[LocalDateTime] -) extends Tuple10[CustomersId, String, String, String, String, Option[OrdersId], Option[String], Option[String], Option[BigDecimal], Option[LocalDateTime]] { +) extends Tuple10[CustomersId, /* user-picked */ Email, /* user-picked */ FirstName, /* user-picked */ LastName, String, Option[OrdersId], Option[String], Option[String], Option[BigDecimal], Option[LocalDateTime]] { override def `_1`: CustomersId = customerId - override def `_2`: String = email + override def `_2`: /* user-picked */ Email = email - override def `_3`: String = firstName + override def `_3`: /* user-picked */ FirstName = firstName - override def `_4`: String = lastName + override def `_4`: /* user-picked */ LastName = lastName override def `_5`: String = tier @@ -61,5 +64,5 @@ case class CustomerOrdersSqlRow( } object CustomerOrdersSqlRow { - val `_rowParser`: RowParser[CustomerOrdersSqlRow] = RowParsers.of(CustomersId.dbType, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.text, OrdersId.dbType.nullable, MariaTypes.varchar.nullable, MariaTypes.text.nullable, ScalaDbTypes.MariaTypes.numeric.nullable, MariaTypes.datetime.nullable)(CustomerOrdersSqlRow.apply)(row => Array[Any](row.customerId, row.email, row.firstName, row.lastName, row.tier, row.orderId, row.orderNumber, row.orderStatus, row.totalAmount, row.orderedAt)) + val `_rowParser`: RowParser[CustomerOrdersSqlRow] = RowParsers.of(CustomersId.mariaType, Email.mariaType, FirstName.mariaType, LastName.mariaType, MariaTypes.text, OrdersId.mariaType.nullable, MariaTypes.varchar.nullable, MariaTypes.text.nullable, ScalaDbTypes.MariaTypes.numeric.nullable, MariaTypes.datetime.nullable)(CustomerOrdersSqlRow.apply)(row => Array[Any](row.customerId, row.email, row.firstName, row.lastName, row.tier, row.orderId, row.orderNumber, row.orderStatus, row.totalAmount, row.orderedAt)) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/customer_status/CustomerStatusFields.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/customer_status/CustomerStatusFields.scala index a3c0b6ee14..6616a6d6f0 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/customer_status/CustomerStatusFields.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/customer_status/CustomerStatusFields.scala @@ -11,13 +11,13 @@ import dev.typr.foundations.dsl.FieldsBase import dev.typr.foundations.dsl.Path import dev.typr.foundations.dsl.SqlExpr.FieldLike import dev.typr.foundations.scala.RelationStructure -import dev.typr.foundations.scala.ScalaDbTypes import dev.typr.foundations.scala.SqlExpr import dev.typr.foundations.scala.SqlExpr.Field import dev.typr.foundations.scala.SqlExpr.IdField import dev.typr.foundations.scala.TupleExpr3 +import testdb.userdefined.IsActive -class CustomerStatusFields(val `_path`: java.util.List[Path]) extends TupleExpr3[CustomerStatusId, String, Boolean] with RelationStructure[CustomerStatusFields, CustomerStatusRow] with FieldsBase[CustomerStatusRow] { +class CustomerStatusFields(val `_path`: java.util.List[Path]) extends TupleExpr3[CustomerStatusId, String, /* user-picked */ IsActive] with RelationStructure[CustomerStatusFields, CustomerStatusRow] with FieldsBase[CustomerStatusRow] { def statusCode: IdField[CustomerStatusId, CustomerStatusRow] = { new IdField[CustomerStatusId, CustomerStatusRow]( _path, @@ -26,7 +26,7 @@ class CustomerStatusFields(val `_path`: java.util.List[Path]) extends TupleExpr3 None, None, (row, value) => row.copy(statusCode = value), - CustomerStatusId.dbType + CustomerStatusId.mariaType ) } @@ -42,15 +42,15 @@ class CustomerStatusFields(val `_path`: java.util.List[Path]) extends TupleExpr3 ) } - def isActive: Field[Boolean, CustomerStatusRow] = { - new Field[Boolean, CustomerStatusRow]( + def isActive: Field[/* user-picked */ IsActive, CustomerStatusRow] = { + new Field[/* user-picked */ IsActive, CustomerStatusRow]( _path, "is_active", _.isActive, None, None, (row, value) => row.copy(isActive = value), - ScalaDbTypes.MariaTypes.bool + IsActive.mariaType ) } @@ -64,7 +64,7 @@ class CustomerStatusFields(val `_path`: java.util.List[Path]) extends TupleExpr3 override def `_2`: SqlExpr[String] = description - override def `_3`: SqlExpr[Boolean] = isActive + override def `_3`: SqlExpr[/* user-picked */ IsActive] = isActive } object CustomerStatusFields { diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/customer_status/CustomerStatusId.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/customer_status/CustomerStatusId.scala index 9435f66e97..d843778c0c 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/customer_status/CustomerStatusId.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/customer_status/CustomerStatusId.scala @@ -16,5 +16,5 @@ case class CustomerStatusId(@JsonValue value: String) extends scala.AnyVal object CustomerStatusId { given bijection: Bijection[CustomerStatusId, String] = Bijection.apply[CustomerStatusId, String](_.value)(CustomerStatusId.apply) - given dbType: MariaType[CustomerStatusId] = MariaTypes.varchar.bimap(CustomerStatusId.apply, _.value) + given mariaType: MariaType[CustomerStatusId] = MariaTypes.varchar.bimap(CustomerStatusId.apply, _.value) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/customer_status/CustomerStatusRepoImpl.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/customer_status/CustomerStatusRepoImpl.scala index ec8bc02d49..6162352048 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/customer_status/CustomerStatusRepoImpl.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/customer_status/CustomerStatusRepoImpl.scala @@ -9,27 +9,27 @@ import dev.typr.foundations.MariaTypes import dev.typr.foundations.scala.DeleteBuilder import dev.typr.foundations.scala.Dialect import dev.typr.foundations.scala.Fragment -import dev.typr.foundations.scala.ScalaDbTypes import dev.typr.foundations.scala.SelectBuilder import dev.typr.foundations.scala.UpdateBuilder import java.sql.Connection import scala.collection.mutable.ListBuffer +import testdb.userdefined.IsActive import dev.typr.foundations.scala.Fragment.sql class CustomerStatusRepoImpl extends CustomerStatusRepo { override def delete: DeleteBuilder[CustomerStatusFields, CustomerStatusRow] = DeleteBuilder.of("`customer_status`", CustomerStatusFields.structure, Dialect.MARIADB) - override def deleteById(statusCode: CustomerStatusId)(using c: Connection): Boolean = sql"delete from `customer_status` where `status_code` = ${Fragment.encode(CustomerStatusId.dbType, statusCode)}".update().runUnchecked(c) > 0 + override def deleteById(statusCode: CustomerStatusId)(using c: Connection): Boolean = sql"delete from `customer_status` where `status_code` = ${Fragment.encode(CustomerStatusId.mariaType, statusCode)}".update().runUnchecked(c) > 0 override def deleteByIds(statusCodes: Array[CustomerStatusId])(using c: Connection): Int = { val fragments: ListBuffer[Fragment] = ListBuffer() - statusCodes.foreach { id => fragments.addOne(Fragment.encode(CustomerStatusId.dbType, id)): @scala.annotation.nowarn } + statusCodes.foreach { id => fragments.addOne(Fragment.encode(CustomerStatusId.mariaType, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("delete from `customer_status` where `status_code` in ("), Fragment.comma(fragments), Fragment.lit(")")).update().runUnchecked(c) } override def insert(unsaved: CustomerStatusRow)(using c: Connection): CustomerStatusRow = { sql"""insert into `customer_status`(`status_code`, `description`, `is_active`) - values (${Fragment.encode(CustomerStatusId.dbType, unsaved.statusCode)}, ${Fragment.encode(MariaTypes.varchar, unsaved.description)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.bool, unsaved.isActive)}) + values (${Fragment.encode(CustomerStatusId.mariaType, unsaved.statusCode)}, ${Fragment.encode(MariaTypes.varchar, unsaved.description)}, ${Fragment.encode(IsActive.mariaType, unsaved.isActive)}) RETURNING `status_code`, `description`, `is_active` """ .updateReturning(CustomerStatusRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -39,12 +39,12 @@ class CustomerStatusRepoImpl extends CustomerStatusRepo { val columns: ListBuffer[Fragment] = ListBuffer() val values: ListBuffer[Fragment] = ListBuffer() columns.addOne(Fragment.lit("`status_code`")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(CustomerStatusId.dbType, unsaved.statusCode)}"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(CustomerStatusId.mariaType, unsaved.statusCode)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit("`description`")): @scala.annotation.nowarn values.addOne(sql"${Fragment.encode(MariaTypes.varchar, unsaved.description)}"): @scala.annotation.nowarn unsaved.isActive.visit( { }, - value => { columns.addOne(Fragment.lit("`is_active`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(ScalaDbTypes.MariaTypes.bool, value)}"): @scala.annotation.nowarn } + value => { columns.addOne(Fragment.lit("`is_active`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(IsActive.mariaType, value)}"): @scala.annotation.nowarn } ); val q: Fragment = { sql"""insert into `customer_status`(${Fragment.comma(columns)}) @@ -66,12 +66,12 @@ class CustomerStatusRepoImpl extends CustomerStatusRepo { override def selectById(statusCode: CustomerStatusId)(using c: Connection): Option[CustomerStatusRow] = { sql"""select `status_code`, `description`, `is_active` from `customer_status` - where `status_code` = ${Fragment.encode(CustomerStatusId.dbType, statusCode)}""".query(CustomerStatusRow.`_rowParser`.first()).runUnchecked(c) + where `status_code` = ${Fragment.encode(CustomerStatusId.mariaType, statusCode)}""".query(CustomerStatusRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(statusCodes: Array[CustomerStatusId])(using c: Connection): List[CustomerStatusRow] = { val fragments: ListBuffer[Fragment] = ListBuffer() - statusCodes.foreach { id => fragments.addOne(Fragment.encode(CustomerStatusId.dbType, id)): @scala.annotation.nowarn } + statusCodes.foreach { id => fragments.addOne(Fragment.encode(CustomerStatusId.mariaType, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("select `status_code`, `description`, `is_active` from `customer_status` where `status_code` in ("), Fragment.comma(fragments), Fragment.lit(")")).query(CustomerStatusRow.`_rowParser`.all()).runUnchecked(c) } @@ -87,13 +87,13 @@ class CustomerStatusRepoImpl extends CustomerStatusRepo { val statusCode: CustomerStatusId = row.statusCode return sql"""update `customer_status` set `description` = ${Fragment.encode(MariaTypes.varchar, row.description)}, - `is_active` = ${Fragment.encode(ScalaDbTypes.MariaTypes.bool, row.isActive)} - where `status_code` = ${Fragment.encode(CustomerStatusId.dbType, statusCode)}""".update().runUnchecked(c) > 0 + `is_active` = ${Fragment.encode(IsActive.mariaType, row.isActive)} + where `status_code` = ${Fragment.encode(CustomerStatusId.mariaType, statusCode)}""".update().runUnchecked(c) > 0 } override def upsert(unsaved: CustomerStatusRow)(using c: Connection): CustomerStatusRow = { sql"""INSERT INTO `customer_status`(`status_code`, `description`, `is_active`) - VALUES (${Fragment.encode(CustomerStatusId.dbType, unsaved.statusCode)}, ${Fragment.encode(MariaTypes.varchar, unsaved.description)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.bool, unsaved.isActive)}) + VALUES (${Fragment.encode(CustomerStatusId.mariaType, unsaved.statusCode)}, ${Fragment.encode(MariaTypes.varchar, unsaved.description)}, ${Fragment.encode(IsActive.mariaType, unsaved.isActive)}) ON DUPLICATE KEY UPDATE `description` = VALUES(`description`), `is_active` = VALUES(`is_active`) RETURNING `status_code`, `description`, `is_active`""" diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/customer_status/CustomerStatusRow.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/customer_status/CustomerStatusRow.scala index b0449833b4..7f5e28604a 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/customer_status/CustomerStatusRow.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/customer_status/CustomerStatusRow.scala @@ -10,8 +10,8 @@ import dev.typr.foundations.MariaTypes import dev.typr.foundations.Tuple.Tuple3 import dev.typr.foundations.scala.RowParser import dev.typr.foundations.scala.RowParsers -import dev.typr.foundations.scala.ScalaDbTypes import testdb.customtypes.Defaulted +import testdb.userdefined.IsActive /** Table: customer_status * Primary key: status_code @@ -24,19 +24,19 @@ case class CustomerStatusRow( /** * Default: 1 */ - @JsonProperty("is_active") isActive: Boolean -) extends Tuple3[CustomerStatusId, String, Boolean] { + @JsonProperty("is_active") isActive: /* user-picked */ IsActive +) extends Tuple3[CustomerStatusId, String, /* user-picked */ IsActive] { def id: CustomerStatusId = statusCode - def toUnsavedRow(isActive: Defaulted[Boolean] = Defaulted.Provided(this.isActive)): CustomerStatusRowUnsaved = new CustomerStatusRowUnsaved(statusCode, description, isActive) + def toUnsavedRow(isActive: Defaulted[/* user-picked */ IsActive] = Defaulted.Provided(this.isActive)): CustomerStatusRowUnsaved = new CustomerStatusRowUnsaved(statusCode, description, isActive) override def `_1`: CustomerStatusId = statusCode override def `_2`: String = description - override def `_3`: Boolean = isActive + override def `_3`: /* user-picked */ IsActive = isActive } object CustomerStatusRow { - val `_rowParser`: RowParser[CustomerStatusRow] = RowParsers.of(CustomerStatusId.dbType, MariaTypes.varchar, ScalaDbTypes.MariaTypes.bool)(CustomerStatusRow.apply)(row => Array[Any](row.statusCode, row.description, row.isActive)) + val `_rowParser`: RowParser[CustomerStatusRow] = RowParsers.of(CustomerStatusId.mariaType, MariaTypes.varchar, IsActive.mariaType)(CustomerStatusRow.apply)(row => Array[Any](row.statusCode, row.description, row.isActive)) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/customer_status/CustomerStatusRowUnsaved.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/customer_status/CustomerStatusRowUnsaved.scala index 68246f0625..45da77a7c2 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/customer_status/CustomerStatusRowUnsaved.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/customer_status/CustomerStatusRowUnsaved.scala @@ -8,6 +8,7 @@ package testdb.customer_status import com.fasterxml.jackson.annotation.JsonProperty import testdb.customtypes.Defaulted import testdb.customtypes.Defaulted.UseDefault +import testdb.userdefined.IsActive /** This class corresponds to a row in table `customer_status` which has not been persisted yet */ case class CustomerStatusRowUnsaved( @@ -18,7 +19,7 @@ case class CustomerStatusRowUnsaved( /** Default: 1 */ - @JsonProperty("is_active") isActive: Defaulted[Boolean] = new UseDefault() + @JsonProperty("is_active") isActive: Defaulted[/* user-picked */ IsActive] = new UseDefault() ) { - def toRow(isActiveDefault: => Boolean): CustomerStatusRow = new CustomerStatusRow(statusCode = statusCode, description = description, isActive = isActive.getOrElse(isActiveDefault)) + def toRow(isActiveDefault: => /* user-picked */ IsActive): CustomerStatusRow = new CustomerStatusRow(statusCode = statusCode, description = description, isActive = isActive.getOrElse(isActiveDefault)) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/customers/CustomersFields.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/customers/CustomersFields.scala index 21a514b5e7..8dcb830ba6 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/customers/CustomersFields.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/customers/CustomersFields.scala @@ -23,8 +23,11 @@ import testdb.EmailMailPushSmsSet import testdb.customer_status.CustomerStatusFields import testdb.customer_status.CustomerStatusId import testdb.customer_status.CustomerStatusRow +import testdb.userdefined.Email +import testdb.userdefined.FirstName +import testdb.userdefined.LastName -class CustomersFields(val `_path`: java.util.List[Path]) extends TupleExpr14[CustomersId, String, Array[Byte], String, String, String, CustomerStatusId, String, Json, EmailMailPushSmsSet, String, LocalDateTime, LocalDateTime, LocalDateTime] with RelationStructure[CustomersFields, CustomersRow] with FieldsBase[CustomersRow] { +class CustomersFields(val `_path`: java.util.List[Path]) extends TupleExpr14[CustomersId, /* user-picked */ Email, Array[Byte], /* user-picked */ FirstName, /* user-picked */ LastName, String, CustomerStatusId, String, Json, EmailMailPushSmsSet, String, LocalDateTime, LocalDateTime, LocalDateTime] with RelationStructure[CustomersFields, CustomersRow] with FieldsBase[CustomersRow] { def customerId: IdField[CustomersId, CustomersRow] = { new IdField[CustomersId, CustomersRow]( _path, @@ -33,19 +36,19 @@ class CustomersFields(val `_path`: java.util.List[Path]) extends TupleExpr14[Cus None, None, (row, value) => row.copy(customerId = value), - CustomersId.dbType + CustomersId.mariaType ) } - def email: Field[String, CustomersRow] = { - new Field[String, CustomersRow]( + def email: Field[/* user-picked */ Email, CustomersRow] = { + new Field[/* user-picked */ Email, CustomersRow]( _path, "email", _.email, None, None, (row, value) => row.copy(email = value), - MariaTypes.varchar + Email.mariaType ) } @@ -61,27 +64,27 @@ class CustomersFields(val `_path`: java.util.List[Path]) extends TupleExpr14[Cus ) } - def firstName: Field[String, CustomersRow] = { - new Field[String, CustomersRow]( + def firstName: Field[/* user-picked */ FirstName, CustomersRow] = { + new Field[/* user-picked */ FirstName, CustomersRow]( _path, "first_name", _.firstName, None, None, (row, value) => row.copy(firstName = value), - MariaTypes.varchar + FirstName.mariaType ) } - def lastName: Field[String, CustomersRow] = { - new Field[String, CustomersRow]( + def lastName: Field[/* user-picked */ LastName, CustomersRow] = { + new Field[/* user-picked */ LastName, CustomersRow]( _path, "last_name", _.lastName, None, None, (row, value) => row.copy(lastName = value), - MariaTypes.varchar + LastName.mariaType ) } @@ -105,7 +108,7 @@ class CustomersFields(val `_path`: java.util.List[Path]) extends TupleExpr14[Cus None, None, (row, value) => row.copy(status = value), - CustomerStatusId.dbType + CustomerStatusId.mariaType ) } @@ -141,7 +144,7 @@ class CustomersFields(val `_path`: java.util.List[Path]) extends TupleExpr14[Cus None, None, (row, value) => row.copy(marketingFlags = value), - EmailMailPushSmsSet.dbType + EmailMailPushSmsSet.mariaType ) } @@ -203,13 +206,13 @@ class CustomersFields(val `_path`: java.util.List[Path]) extends TupleExpr14[Cus override def `_1`: SqlExpr[CustomersId] = customerId - override def `_2`: SqlExpr[String] = email + override def `_2`: SqlExpr[/* user-picked */ Email] = email override def `_3`: SqlExpr[Array[Byte]] = passwordHash - override def `_4`: SqlExpr[String] = firstName + override def `_4`: SqlExpr[/* user-picked */ FirstName] = firstName - override def `_5`: SqlExpr[String] = lastName + override def `_5`: SqlExpr[/* user-picked */ LastName] = lastName override def `_6`: SqlExpr[String] = phone diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/customers/CustomersId.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/customers/CustomersId.scala index 54b9d9cbb8..ab03d26ca1 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/customers/CustomersId.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/customers/CustomersId.scala @@ -17,5 +17,5 @@ case class CustomersId(@JsonValue value: Uint8) extends scala.AnyVal object CustomersId { given bijection: Bijection[CustomersId, Uint8] = Bijection.apply[CustomersId, Uint8](_.value)(CustomersId.apply) - given dbType: MariaType[CustomersId] = MariaTypes.bigintUnsigned.bimap(CustomersId.apply, _.value) + given mariaType: MariaType[CustomersId] = MariaTypes.bigintUnsigned.bimap(CustomersId.apply, _.value) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/customers/CustomersRepo.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/customers/CustomersRepo.scala index 32a3be5e13..0c49d96cb1 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/customers/CustomersRepo.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/customers/CustomersRepo.scala @@ -9,6 +9,7 @@ import dev.typr.foundations.scala.DeleteBuilder import dev.typr.foundations.scala.SelectBuilder import dev.typr.foundations.scala.UpdateBuilder import java.sql.Connection +import testdb.userdefined.Email trait CustomersRepo { def delete: DeleteBuilder[CustomersFields, CustomersRow] @@ -31,7 +32,7 @@ trait CustomersRepo { def selectByIdsTracked(customerIds: Array[CustomersId])(using c: Connection): Map[CustomersId, CustomersRow] - def selectByUniqueEmail(email: String)(using c: Connection): Option[CustomersRow] + def selectByUniqueEmail(email: /* user-picked */ Email)(using c: Connection): Option[CustomersRow] def update: UpdateBuilder[CustomersFields, CustomersRow] diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/customers/CustomersRepoImpl.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/customers/CustomersRepoImpl.scala index 2c7fe0490a..5dd7093a2a 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/customers/CustomersRepoImpl.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/customers/CustomersRepoImpl.scala @@ -16,22 +16,25 @@ import java.sql.Connection import scala.collection.mutable.ListBuffer import testdb.EmailMailPushSmsSet import testdb.customer_status.CustomerStatusId +import testdb.userdefined.Email +import testdb.userdefined.FirstName +import testdb.userdefined.LastName import dev.typr.foundations.scala.Fragment.sql class CustomersRepoImpl extends CustomersRepo { override def delete: DeleteBuilder[CustomersFields, CustomersRow] = DeleteBuilder.of("`customers`", CustomersFields.structure, Dialect.MARIADB) - override def deleteById(customerId: CustomersId)(using c: Connection): Boolean = sql"delete from `customers` where `customer_id` = ${Fragment.encode(CustomersId.dbType, customerId)}".update().runUnchecked(c) > 0 + override def deleteById(customerId: CustomersId)(using c: Connection): Boolean = sql"delete from `customers` where `customer_id` = ${Fragment.encode(CustomersId.mariaType, customerId)}".update().runUnchecked(c) > 0 override def deleteByIds(customerIds: Array[CustomersId])(using c: Connection): Int = { val fragments: ListBuffer[Fragment] = ListBuffer() - customerIds.foreach { id => fragments.addOne(Fragment.encode(CustomersId.dbType, id)): @scala.annotation.nowarn } + customerIds.foreach { id => fragments.addOne(Fragment.encode(CustomersId.mariaType, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("delete from `customers` where `customer_id` in ("), Fragment.comma(fragments), Fragment.lit(")")).update().runUnchecked(c) } override def insert(unsaved: CustomersRow)(using c: Connection): CustomersRow = { sql"""insert into `customers`(`email`, `password_hash`, `first_name`, `last_name`, `phone`, `status`, `tier`, `preferences`, `marketing_flags`, `notes`, `created_at`, `updated_at`, `last_login_at`) - values (${Fragment.encode(MariaTypes.varchar, unsaved.email)}, ${Fragment.encode(MariaTypes.binary, unsaved.passwordHash)}, ${Fragment.encode(MariaTypes.varchar, unsaved.firstName)}, ${Fragment.encode(MariaTypes.varchar, unsaved.lastName)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.phone)}, ${Fragment.encode(CustomerStatusId.dbType, unsaved.status)}, ${Fragment.encode(MariaTypes.text, unsaved.tier)}, ${Fragment.encode(MariaTypes.json.nullable, unsaved.preferences)}, ${Fragment.encode(EmailMailPushSmsSet.dbType.nullable, unsaved.marketingFlags)}, ${Fragment.encode(MariaTypes.text.nullable, unsaved.notes)}, ${Fragment.encode(MariaTypes.datetime, unsaved.createdAt)}, ${Fragment.encode(MariaTypes.datetime, unsaved.updatedAt)}, ${Fragment.encode(MariaTypes.datetime.nullable, unsaved.lastLoginAt)}) + values (${Fragment.encode(Email.mariaType, unsaved.email)}, ${Fragment.encode(MariaTypes.binary, unsaved.passwordHash)}, ${Fragment.encode(FirstName.mariaType, unsaved.firstName)}, ${Fragment.encode(LastName.mariaType, unsaved.lastName)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.phone)}, ${Fragment.encode(CustomerStatusId.mariaType, unsaved.status)}, ${Fragment.encode(MariaTypes.text, unsaved.tier)}, ${Fragment.encode(MariaTypes.json.nullable, unsaved.preferences)}, ${Fragment.encode(EmailMailPushSmsSet.mariaType.nullable, unsaved.marketingFlags)}, ${Fragment.encode(MariaTypes.text.nullable, unsaved.notes)}, ${Fragment.encode(MariaTypes.datetime, unsaved.createdAt)}, ${Fragment.encode(MariaTypes.datetime, unsaved.updatedAt)}, ${Fragment.encode(MariaTypes.datetime.nullable, unsaved.lastLoginAt)}) RETURNING `customer_id`, `email`, `password_hash`, `first_name`, `last_name`, `phone`, `status`, `tier`, `preferences`, `marketing_flags`, `notes`, `created_at`, `updated_at`, `last_login_at` """ .updateReturning(CustomersRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -41,20 +44,20 @@ class CustomersRepoImpl extends CustomersRepo { val columns: ListBuffer[Fragment] = ListBuffer() val values: ListBuffer[Fragment] = ListBuffer() columns.addOne(Fragment.lit("`email`")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(MariaTypes.varchar, unsaved.email)}"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(Email.mariaType, unsaved.email)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit("`password_hash`")): @scala.annotation.nowarn values.addOne(sql"${Fragment.encode(MariaTypes.binary, unsaved.passwordHash)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit("`first_name`")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(MariaTypes.varchar, unsaved.firstName)}"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(FirstName.mariaType, unsaved.firstName)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit("`last_name`")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(MariaTypes.varchar, unsaved.lastName)}"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(LastName.mariaType, unsaved.lastName)}"): @scala.annotation.nowarn unsaved.phone.visit( { }, value => { columns.addOne(Fragment.lit("`phone`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(MariaTypes.varchar.nullable, value)}"): @scala.annotation.nowarn } ); unsaved.status.visit( { }, - value => { columns.addOne(Fragment.lit("`status`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(CustomerStatusId.dbType, value)}"): @scala.annotation.nowarn } + value => { columns.addOne(Fragment.lit("`status`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(CustomerStatusId.mariaType, value)}"): @scala.annotation.nowarn } ); unsaved.tier.visit( { }, @@ -66,7 +69,7 @@ class CustomersRepoImpl extends CustomersRepo { ); unsaved.marketingFlags.visit( { }, - value => { columns.addOne(Fragment.lit("`marketing_flags`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(EmailMailPushSmsSet.dbType.nullable, value)}"): @scala.annotation.nowarn } + value => { columns.addOne(Fragment.lit("`marketing_flags`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(EmailMailPushSmsSet.mariaType.nullable, value)}"): @scala.annotation.nowarn } ); unsaved.notes.visit( { }, @@ -104,12 +107,12 @@ class CustomersRepoImpl extends CustomersRepo { override def selectById(customerId: CustomersId)(using c: Connection): Option[CustomersRow] = { sql"""select `customer_id`, `email`, `password_hash`, `first_name`, `last_name`, `phone`, `status`, `tier`, `preferences`, `marketing_flags`, `notes`, `created_at`, `updated_at`, `last_login_at` from `customers` - where `customer_id` = ${Fragment.encode(CustomersId.dbType, customerId)}""".query(CustomersRow.`_rowParser`.first()).runUnchecked(c) + where `customer_id` = ${Fragment.encode(CustomersId.mariaType, customerId)}""".query(CustomersRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(customerIds: Array[CustomersId])(using c: Connection): List[CustomersRow] = { val fragments: ListBuffer[Fragment] = ListBuffer() - customerIds.foreach { id => fragments.addOne(Fragment.encode(CustomersId.dbType, id)): @scala.annotation.nowarn } + customerIds.foreach { id => fragments.addOne(Fragment.encode(CustomersId.mariaType, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("select `customer_id`, `email`, `password_hash`, `first_name`, `last_name`, `phone`, `status`, `tier`, `preferences`, `marketing_flags`, `notes`, `created_at`, `updated_at`, `last_login_at` from `customers` where `customer_id` in ("), Fragment.comma(fragments), Fragment.lit(")")).query(CustomersRow.`_rowParser`.all()).runUnchecked(c) } @@ -119,10 +122,10 @@ class CustomersRepoImpl extends CustomersRepo { return ret.toMap } - override def selectByUniqueEmail(email: String)(using c: Connection): Option[CustomersRow] = { + override def selectByUniqueEmail(email: /* user-picked */ Email)(using c: Connection): Option[CustomersRow] = { sql"""select `customer_id`, `email`, `password_hash`, `first_name`, `last_name`, `phone`, `status`, `tier`, `preferences`, `marketing_flags`, `notes`, `created_at`, `updated_at`, `last_login_at` from `customers` - where `email` = ${Fragment.encode(MariaTypes.varchar, email)} + where `email` = ${Fragment.encode(Email.mariaType, email)} """.query(CustomersRow.`_rowParser`.first()).runUnchecked(c) } @@ -131,25 +134,25 @@ class CustomersRepoImpl extends CustomersRepo { override def update(row: CustomersRow)(using c: Connection): Boolean = { val customerId: CustomersId = row.customerId return sql"""update `customers` - set `email` = ${Fragment.encode(MariaTypes.varchar, row.email)}, + set `email` = ${Fragment.encode(Email.mariaType, row.email)}, `password_hash` = ${Fragment.encode(MariaTypes.binary, row.passwordHash)}, - `first_name` = ${Fragment.encode(MariaTypes.varchar, row.firstName)}, - `last_name` = ${Fragment.encode(MariaTypes.varchar, row.lastName)}, + `first_name` = ${Fragment.encode(FirstName.mariaType, row.firstName)}, + `last_name` = ${Fragment.encode(LastName.mariaType, row.lastName)}, `phone` = ${Fragment.encode(MariaTypes.varchar.nullable, row.phone)}, - `status` = ${Fragment.encode(CustomerStatusId.dbType, row.status)}, + `status` = ${Fragment.encode(CustomerStatusId.mariaType, row.status)}, `tier` = ${Fragment.encode(MariaTypes.text, row.tier)}, `preferences` = ${Fragment.encode(MariaTypes.json.nullable, row.preferences)}, - `marketing_flags` = ${Fragment.encode(EmailMailPushSmsSet.dbType.nullable, row.marketingFlags)}, + `marketing_flags` = ${Fragment.encode(EmailMailPushSmsSet.mariaType.nullable, row.marketingFlags)}, `notes` = ${Fragment.encode(MariaTypes.text.nullable, row.notes)}, `created_at` = ${Fragment.encode(MariaTypes.datetime, row.createdAt)}, `updated_at` = ${Fragment.encode(MariaTypes.datetime, row.updatedAt)}, `last_login_at` = ${Fragment.encode(MariaTypes.datetime.nullable, row.lastLoginAt)} - where `customer_id` = ${Fragment.encode(CustomersId.dbType, customerId)}""".update().runUnchecked(c) > 0 + where `customer_id` = ${Fragment.encode(CustomersId.mariaType, customerId)}""".update().runUnchecked(c) > 0 } override def upsert(unsaved: CustomersRow)(using c: Connection): CustomersRow = { sql"""INSERT INTO `customers`(`customer_id`, `email`, `password_hash`, `first_name`, `last_name`, `phone`, `status`, `tier`, `preferences`, `marketing_flags`, `notes`, `created_at`, `updated_at`, `last_login_at`) - VALUES (${Fragment.encode(CustomersId.dbType, unsaved.customerId)}, ${Fragment.encode(MariaTypes.varchar, unsaved.email)}, ${Fragment.encode(MariaTypes.binary, unsaved.passwordHash)}, ${Fragment.encode(MariaTypes.varchar, unsaved.firstName)}, ${Fragment.encode(MariaTypes.varchar, unsaved.lastName)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.phone)}, ${Fragment.encode(CustomerStatusId.dbType, unsaved.status)}, ${Fragment.encode(MariaTypes.text, unsaved.tier)}, ${Fragment.encode(MariaTypes.json.nullable, unsaved.preferences)}, ${Fragment.encode(EmailMailPushSmsSet.dbType.nullable, unsaved.marketingFlags)}, ${Fragment.encode(MariaTypes.text.nullable, unsaved.notes)}, ${Fragment.encode(MariaTypes.datetime, unsaved.createdAt)}, ${Fragment.encode(MariaTypes.datetime, unsaved.updatedAt)}, ${Fragment.encode(MariaTypes.datetime.nullable, unsaved.lastLoginAt)}) + VALUES (${Fragment.encode(CustomersId.mariaType, unsaved.customerId)}, ${Fragment.encode(Email.mariaType, unsaved.email)}, ${Fragment.encode(MariaTypes.binary, unsaved.passwordHash)}, ${Fragment.encode(FirstName.mariaType, unsaved.firstName)}, ${Fragment.encode(LastName.mariaType, unsaved.lastName)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.phone)}, ${Fragment.encode(CustomerStatusId.mariaType, unsaved.status)}, ${Fragment.encode(MariaTypes.text, unsaved.tier)}, ${Fragment.encode(MariaTypes.json.nullable, unsaved.preferences)}, ${Fragment.encode(EmailMailPushSmsSet.mariaType.nullable, unsaved.marketingFlags)}, ${Fragment.encode(MariaTypes.text.nullable, unsaved.notes)}, ${Fragment.encode(MariaTypes.datetime, unsaved.createdAt)}, ${Fragment.encode(MariaTypes.datetime, unsaved.updatedAt)}, ${Fragment.encode(MariaTypes.datetime.nullable, unsaved.lastLoginAt)}) ON DUPLICATE KEY UPDATE `email` = VALUES(`email`), `password_hash` = VALUES(`password_hash`), `first_name` = VALUES(`first_name`), diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/customers/CustomersRepoMock.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/customers/CustomersRepoMock.scala index 20eea5f1ca..6cdf10f02e 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/customers/CustomersRepoMock.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/customers/CustomersRepoMock.scala @@ -16,6 +16,7 @@ import dev.typr.foundations.scala.UpdateBuilderMock import dev.typr.foundations.scala.UpdateParams import java.lang.RuntimeException import java.sql.Connection +import testdb.userdefined.Email case class CustomersRepoMock( toRow: CustomersRowUnsaved => CustomersRow, @@ -53,7 +54,7 @@ case class CustomersRepoMock( override def selectByIdsTracked(customerIds: Array[CustomersId])(using c: Connection): Map[CustomersId, CustomersRow] = selectByIds(customerIds)(using c).map(x => (((row: CustomersRow) => row.customerId).apply(x), x)).toMap - override def selectByUniqueEmail(email: String)(using c: Connection): Option[CustomersRow] = map.values.toList.find(v => (email == v.email)) + override def selectByUniqueEmail(email: /* user-picked */ Email)(using c: Connection): Option[CustomersRow] = map.values.toList.find(v => (email == v.email)) override def update: UpdateBuilder[CustomersFields, CustomersRow] = UpdateBuilderMock(CustomersFields.structure, () => map.values.toList, UpdateParams.empty(), row => row) diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/customers/CustomersRow.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/customers/CustomersRow.scala index b190d2638c..9727fece87 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/customers/CustomersRow.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/customers/CustomersRow.scala @@ -16,6 +16,9 @@ import java.time.LocalDateTime import testdb.EmailMailPushSmsSet import testdb.customer_status.CustomerStatusId import testdb.customtypes.Defaulted +import testdb.userdefined.Email +import testdb.userdefined.FirstName +import testdb.userdefined.LastName /** Table: customers * Primary key: customer_id @@ -26,13 +29,13 @@ case class CustomersRow( */ @JsonProperty("customer_id") customerId: CustomersId, /** */ - email: String, + email: /* user-picked */ Email, /** */ @JsonProperty("password_hash") passwordHash: Array[Byte], /** */ - @JsonProperty("first_name") firstName: String, + @JsonProperty("first_name") firstName: /* user-picked */ FirstName, /** */ - @JsonProperty("last_name") lastName: String, + @JsonProperty("last_name") lastName: /* user-picked */ LastName, /** * Default: NULL */ @@ -70,7 +73,7 @@ case class CustomersRow( * Default: NULL */ @JsonProperty("last_login_at") lastLoginAt: Option[LocalDateTime] -) extends Tuple14[CustomersId, String, Array[Byte], String, String, Option[String], CustomerStatusId, String, Option[Json], Option[EmailMailPushSmsSet], Option[String], LocalDateTime, LocalDateTime, Option[LocalDateTime]] { +) extends Tuple14[CustomersId, /* user-picked */ Email, Array[Byte], /* user-picked */ FirstName, /* user-picked */ LastName, Option[String], CustomerStatusId, String, Option[Json], Option[EmailMailPushSmsSet], Option[String], LocalDateTime, LocalDateTime, Option[LocalDateTime]] { def id: CustomersId = customerId def toUnsavedRow( @@ -103,13 +106,13 @@ case class CustomersRow( override def `_1`: CustomersId = customerId - override def `_2`: String = email + override def `_2`: /* user-picked */ Email = email override def `_3`: Array[Byte] = passwordHash - override def `_4`: String = firstName + override def `_4`: /* user-picked */ FirstName = firstName - override def `_5`: String = lastName + override def `_5`: /* user-picked */ LastName = lastName override def `_6`: Option[String] = phone @@ -131,5 +134,5 @@ case class CustomersRow( } object CustomersRow { - val `_rowParser`: RowParser[CustomersRow] = RowParsers.of(CustomersId.dbType, MariaTypes.varchar, MariaTypes.binary, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.varchar.nullable, CustomerStatusId.dbType, MariaTypes.text, MariaTypes.json.nullable, EmailMailPushSmsSet.dbType.nullable, MariaTypes.text.nullable, MariaTypes.datetime, MariaTypes.datetime, MariaTypes.datetime.nullable)(CustomersRow.apply)(row => Array[Any](row.customerId, row.email, row.passwordHash, row.firstName, row.lastName, row.phone, row.status, row.tier, row.preferences, row.marketingFlags, row.notes, row.createdAt, row.updatedAt, row.lastLoginAt)) + val `_rowParser`: RowParser[CustomersRow] = RowParsers.of(CustomersId.mariaType, Email.mariaType, MariaTypes.binary, FirstName.mariaType, LastName.mariaType, MariaTypes.varchar.nullable, CustomerStatusId.mariaType, MariaTypes.text, MariaTypes.json.nullable, EmailMailPushSmsSet.mariaType.nullable, MariaTypes.text.nullable, MariaTypes.datetime, MariaTypes.datetime, MariaTypes.datetime.nullable)(CustomersRow.apply)(row => Array[Any](row.customerId, row.email, row.passwordHash, row.firstName, row.lastName, row.phone, row.status, row.tier, row.preferences, row.marketingFlags, row.notes, row.createdAt, row.updatedAt, row.lastLoginAt)) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/customers/CustomersRowUnsaved.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/customers/CustomersRowUnsaved.scala index 726452bccd..b1b512502f 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/customers/CustomersRowUnsaved.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/customers/CustomersRowUnsaved.scala @@ -12,17 +12,20 @@ import testdb.EmailMailPushSmsSet import testdb.customer_status.CustomerStatusId import testdb.customtypes.Defaulted import testdb.customtypes.Defaulted.UseDefault +import testdb.userdefined.Email +import testdb.userdefined.FirstName +import testdb.userdefined.LastName /** This class corresponds to a row in table `customers` which has not been persisted yet */ case class CustomersRowUnsaved( /** */ - email: String, + email: /* user-picked */ Email, /** */ @JsonProperty("password_hash") passwordHash: Array[Byte], /** */ - @JsonProperty("first_name") firstName: String, + @JsonProperty("first_name") firstName: /* user-picked */ FirstName, /** */ - @JsonProperty("last_name") lastName: String, + @JsonProperty("last_name") lastName: /* user-picked */ LastName, /** Default: NULL */ diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/inventory/InventoryFields.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/inventory/InventoryFields.scala index 8c8031c427..23aa8a04f7 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/inventory/InventoryFields.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/inventory/InventoryFields.scala @@ -35,7 +35,7 @@ class InventoryFields(val `_path`: java.util.List[Path]) extends TupleExpr11[Inv None, None, (row, value) => row.copy(inventoryId = value), - InventoryId.dbType + InventoryId.mariaType ) } @@ -47,7 +47,7 @@ class InventoryFields(val `_path`: java.util.List[Path]) extends TupleExpr11[Inv None, None, (row, value) => row.copy(productId = value), - ProductsId.dbType + ProductsId.mariaType ) } @@ -59,7 +59,7 @@ class InventoryFields(val `_path`: java.util.List[Path]) extends TupleExpr11[Inv None, None, (row, value) => row.copy(warehouseId = value), - WarehousesId.dbType + WarehousesId.mariaType ) } diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/inventory/InventoryId.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/inventory/InventoryId.scala index 1eb690b455..6aaff38e71 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/inventory/InventoryId.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/inventory/InventoryId.scala @@ -17,5 +17,5 @@ case class InventoryId(@JsonValue value: Uint8) extends scala.AnyVal object InventoryId { given bijection: Bijection[InventoryId, Uint8] = Bijection.apply[InventoryId, Uint8](_.value)(InventoryId.apply) - given dbType: MariaType[InventoryId] = MariaTypes.bigintUnsigned.bimap(InventoryId.apply, _.value) + given mariaType: MariaType[InventoryId] = MariaTypes.bigintUnsigned.bimap(InventoryId.apply, _.value) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/inventory/InventoryRepoImpl.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/inventory/InventoryRepoImpl.scala index 63c9c98cb4..aeb717c598 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/inventory/InventoryRepoImpl.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/inventory/InventoryRepoImpl.scala @@ -22,17 +22,17 @@ import dev.typr.foundations.scala.Fragment.sql class InventoryRepoImpl extends InventoryRepo { override def delete: DeleteBuilder[InventoryFields, InventoryRow] = DeleteBuilder.of("`inventory`", InventoryFields.structure, Dialect.MARIADB) - override def deleteById(inventoryId: InventoryId)(using c: Connection): Boolean = sql"delete from `inventory` where `inventory_id` = ${Fragment.encode(InventoryId.dbType, inventoryId)}".update().runUnchecked(c) > 0 + override def deleteById(inventoryId: InventoryId)(using c: Connection): Boolean = sql"delete from `inventory` where `inventory_id` = ${Fragment.encode(InventoryId.mariaType, inventoryId)}".update().runUnchecked(c) > 0 override def deleteByIds(inventoryIds: Array[InventoryId])(using c: Connection): Int = { val fragments: ListBuffer[Fragment] = ListBuffer() - inventoryIds.foreach { id => fragments.addOne(Fragment.encode(InventoryId.dbType, id)): @scala.annotation.nowarn } + inventoryIds.foreach { id => fragments.addOne(Fragment.encode(InventoryId.mariaType, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("delete from `inventory` where `inventory_id` in ("), Fragment.comma(fragments), Fragment.lit(")")).update().runUnchecked(c) } override def insert(unsaved: InventoryRow)(using c: Connection): InventoryRow = { sql"""insert into `inventory`(`product_id`, `warehouse_id`, `quantity_on_hand`, `quantity_reserved`, `quantity_on_order`, `reorder_point`, `reorder_quantity`, `bin_location`, `last_counted_at`, `updated_at`) - values (${Fragment.encode(ProductsId.dbType, unsaved.productId)}, ${Fragment.encode(WarehousesId.dbType, unsaved.warehouseId)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.int_, unsaved.quantityOnHand)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.int_, unsaved.quantityReserved)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.int_, unsaved.quantityOnOrder)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.int_, unsaved.reorderPoint)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.int_, unsaved.reorderQuantity)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.binLocation)}, ${Fragment.encode(MariaTypes.datetime.nullable, unsaved.lastCountedAt)}, ${Fragment.encode(MariaTypes.datetime, unsaved.updatedAt)}) + values (${Fragment.encode(ProductsId.mariaType, unsaved.productId)}, ${Fragment.encode(WarehousesId.mariaType, unsaved.warehouseId)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.int_, unsaved.quantityOnHand)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.int_, unsaved.quantityReserved)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.int_, unsaved.quantityOnOrder)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.int_, unsaved.reorderPoint)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.int_, unsaved.reorderQuantity)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.binLocation)}, ${Fragment.encode(MariaTypes.datetime.nullable, unsaved.lastCountedAt)}, ${Fragment.encode(MariaTypes.datetime, unsaved.updatedAt)}) RETURNING `inventory_id`, `product_id`, `warehouse_id`, `quantity_on_hand`, `quantity_reserved`, `quantity_on_order`, `reorder_point`, `reorder_quantity`, `bin_location`, `last_counted_at`, `updated_at` """ .updateReturning(InventoryRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -42,9 +42,9 @@ class InventoryRepoImpl extends InventoryRepo { val columns: ListBuffer[Fragment] = ListBuffer() val values: ListBuffer[Fragment] = ListBuffer() columns.addOne(Fragment.lit("`product_id`")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(ProductsId.dbType, unsaved.productId)}"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(ProductsId.mariaType, unsaved.productId)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit("`warehouse_id`")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(WarehousesId.dbType, unsaved.warehouseId)}"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(WarehousesId.mariaType, unsaved.warehouseId)}"): @scala.annotation.nowarn unsaved.quantityOnHand.visit( { }, value => { columns.addOne(Fragment.lit("`quantity_on_hand`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(ScalaDbTypes.MariaTypes.int_, value)}"): @scala.annotation.nowarn } @@ -97,12 +97,12 @@ class InventoryRepoImpl extends InventoryRepo { override def selectById(inventoryId: InventoryId)(using c: Connection): Option[InventoryRow] = { sql"""select `inventory_id`, `product_id`, `warehouse_id`, `quantity_on_hand`, `quantity_reserved`, `quantity_on_order`, `reorder_point`, `reorder_quantity`, `bin_location`, `last_counted_at`, `updated_at` from `inventory` - where `inventory_id` = ${Fragment.encode(InventoryId.dbType, inventoryId)}""".query(InventoryRow.`_rowParser`.first()).runUnchecked(c) + where `inventory_id` = ${Fragment.encode(InventoryId.mariaType, inventoryId)}""".query(InventoryRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(inventoryIds: Array[InventoryId])(using c: Connection): List[InventoryRow] = { val fragments: ListBuffer[Fragment] = ListBuffer() - inventoryIds.foreach { id => fragments.addOne(Fragment.encode(InventoryId.dbType, id)): @scala.annotation.nowarn } + inventoryIds.foreach { id => fragments.addOne(Fragment.encode(InventoryId.mariaType, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("select `inventory_id`, `product_id`, `warehouse_id`, `quantity_on_hand`, `quantity_reserved`, `quantity_on_order`, `reorder_point`, `reorder_quantity`, `bin_location`, `last_counted_at`, `updated_at` from `inventory` where `inventory_id` in ("), Fragment.comma(fragments), Fragment.lit(")")).query(InventoryRow.`_rowParser`.all()).runUnchecked(c) } @@ -118,7 +118,7 @@ class InventoryRepoImpl extends InventoryRepo { )(using c: Connection): Option[InventoryRow] = { sql"""select `inventory_id`, `product_id`, `warehouse_id`, `quantity_on_hand`, `quantity_reserved`, `quantity_on_order`, `reorder_point`, `reorder_quantity`, `bin_location`, `last_counted_at`, `updated_at` from `inventory` - where `product_id` = ${Fragment.encode(ProductsId.dbType, productId)} AND `warehouse_id` = ${Fragment.encode(WarehousesId.dbType, warehouseId)} + where `product_id` = ${Fragment.encode(ProductsId.mariaType, productId)} AND `warehouse_id` = ${Fragment.encode(WarehousesId.mariaType, warehouseId)} """.query(InventoryRow.`_rowParser`.first()).runUnchecked(c) } @@ -127,8 +127,8 @@ class InventoryRepoImpl extends InventoryRepo { override def update(row: InventoryRow)(using c: Connection): Boolean = { val inventoryId: InventoryId = row.inventoryId return sql"""update `inventory` - set `product_id` = ${Fragment.encode(ProductsId.dbType, row.productId)}, - `warehouse_id` = ${Fragment.encode(WarehousesId.dbType, row.warehouseId)}, + set `product_id` = ${Fragment.encode(ProductsId.mariaType, row.productId)}, + `warehouse_id` = ${Fragment.encode(WarehousesId.mariaType, row.warehouseId)}, `quantity_on_hand` = ${Fragment.encode(ScalaDbTypes.MariaTypes.int_, row.quantityOnHand)}, `quantity_reserved` = ${Fragment.encode(ScalaDbTypes.MariaTypes.int_, row.quantityReserved)}, `quantity_on_order` = ${Fragment.encode(ScalaDbTypes.MariaTypes.int_, row.quantityOnOrder)}, @@ -137,12 +137,12 @@ class InventoryRepoImpl extends InventoryRepo { `bin_location` = ${Fragment.encode(MariaTypes.varchar.nullable, row.binLocation)}, `last_counted_at` = ${Fragment.encode(MariaTypes.datetime.nullable, row.lastCountedAt)}, `updated_at` = ${Fragment.encode(MariaTypes.datetime, row.updatedAt)} - where `inventory_id` = ${Fragment.encode(InventoryId.dbType, inventoryId)}""".update().runUnchecked(c) > 0 + where `inventory_id` = ${Fragment.encode(InventoryId.mariaType, inventoryId)}""".update().runUnchecked(c) > 0 } override def upsert(unsaved: InventoryRow)(using c: Connection): InventoryRow = { sql"""INSERT INTO `inventory`(`inventory_id`, `product_id`, `warehouse_id`, `quantity_on_hand`, `quantity_reserved`, `quantity_on_order`, `reorder_point`, `reorder_quantity`, `bin_location`, `last_counted_at`, `updated_at`) - VALUES (${Fragment.encode(InventoryId.dbType, unsaved.inventoryId)}, ${Fragment.encode(ProductsId.dbType, unsaved.productId)}, ${Fragment.encode(WarehousesId.dbType, unsaved.warehouseId)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.int_, unsaved.quantityOnHand)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.int_, unsaved.quantityReserved)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.int_, unsaved.quantityOnOrder)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.int_, unsaved.reorderPoint)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.int_, unsaved.reorderQuantity)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.binLocation)}, ${Fragment.encode(MariaTypes.datetime.nullable, unsaved.lastCountedAt)}, ${Fragment.encode(MariaTypes.datetime, unsaved.updatedAt)}) + VALUES (${Fragment.encode(InventoryId.mariaType, unsaved.inventoryId)}, ${Fragment.encode(ProductsId.mariaType, unsaved.productId)}, ${Fragment.encode(WarehousesId.mariaType, unsaved.warehouseId)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.int_, unsaved.quantityOnHand)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.int_, unsaved.quantityReserved)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.int_, unsaved.quantityOnOrder)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.int_, unsaved.reorderPoint)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.int_, unsaved.reorderQuantity)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.binLocation)}, ${Fragment.encode(MariaTypes.datetime.nullable, unsaved.lastCountedAt)}, ${Fragment.encode(MariaTypes.datetime, unsaved.updatedAt)}) ON DUPLICATE KEY UPDATE `product_id` = VALUES(`product_id`), `warehouse_id` = VALUES(`warehouse_id`), `quantity_on_hand` = VALUES(`quantity_on_hand`), diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/inventory/InventoryRow.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/inventory/InventoryRow.scala index 6cc52b3032..c2d1fd3124 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/inventory/InventoryRow.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/inventory/InventoryRow.scala @@ -116,5 +116,5 @@ case class InventoryRow( } object InventoryRow { - val `_rowParser`: RowParser[InventoryRow] = RowParsers.of(InventoryId.dbType, ProductsId.dbType, WarehousesId.dbType, ScalaDbTypes.MariaTypes.int_, ScalaDbTypes.MariaTypes.int_, ScalaDbTypes.MariaTypes.int_, ScalaDbTypes.MariaTypes.int_, ScalaDbTypes.MariaTypes.int_, MariaTypes.varchar.nullable, MariaTypes.datetime.nullable, MariaTypes.datetime)(InventoryRow.apply)(row => Array[Any](row.inventoryId, row.productId, row.warehouseId, row.quantityOnHand, row.quantityReserved, row.quantityOnOrder, row.reorderPoint, row.reorderQuantity, row.binLocation, row.lastCountedAt, row.updatedAt)) + val `_rowParser`: RowParser[InventoryRow] = RowParsers.of(InventoryId.mariaType, ProductsId.mariaType, WarehousesId.mariaType, ScalaDbTypes.MariaTypes.int_, ScalaDbTypes.MariaTypes.int_, ScalaDbTypes.MariaTypes.int_, ScalaDbTypes.MariaTypes.int_, ScalaDbTypes.MariaTypes.int_, MariaTypes.varchar.nullable, MariaTypes.datetime.nullable, MariaTypes.datetime)(InventoryRow.apply)(row => Array[Any](row.inventoryId, row.productId, row.warehouseId, row.quantityOnHand, row.quantityReserved, row.quantityOnOrder, row.reorderPoint, row.reorderQuantity, row.binLocation, row.lastCountedAt, row.updatedAt)) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/inventory_check/InventoryCheckSqlRow.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/inventory_check/InventoryCheckSqlRow.scala index dcfdaa8bed..712ec67d51 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/inventory_check/InventoryCheckSqlRow.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/inventory_check/InventoryCheckSqlRow.scala @@ -36,7 +36,7 @@ case class InventoryCheckSqlRow( @JsonProperty("quantity_on_hand") quantityOnHand: Int, /** Points to [[testdb.inventory.InventoryRow.quantityReserved]] */ @JsonProperty("quantity_reserved") quantityReserved: Int, - /** Points to [[testdb.inventory.InventoryRow.quantityOnHand]] */ + /** Points to [[testdb.inventory.InventoryRow.quantityReserved]] */ available: Int, /** Points to [[testdb.inventory.InventoryRow.reorderPoint]] */ @JsonProperty("reorder_point") reorderPoint: Int, @@ -69,5 +69,5 @@ case class InventoryCheckSqlRow( } object InventoryCheckSqlRow { - val `_rowParser`: RowParser[InventoryCheckSqlRow] = RowParsers.of(InventoryId.dbType, ProductsId.dbType, MariaTypes.varchar, MariaTypes.varchar, WarehousesId.dbType, MariaTypes.char_, MariaTypes.varchar, ScalaDbTypes.MariaTypes.int_, ScalaDbTypes.MariaTypes.int_, ScalaDbTypes.MariaTypes.int_, ScalaDbTypes.MariaTypes.int_, MariaTypes.varchar.nullable)(InventoryCheckSqlRow.apply)(row => Array[Any](row.inventoryId, row.productId, row.sku, row.productName, row.warehouseId, row.warehouseCode, row.warehouseName, row.quantityOnHand, row.quantityReserved, row.available, row.reorderPoint, row.binLocation)) + val `_rowParser`: RowParser[InventoryCheckSqlRow] = RowParsers.of(InventoryId.mariaType, ProductsId.mariaType, MariaTypes.varchar, MariaTypes.varchar, WarehousesId.mariaType, MariaTypes.char_, MariaTypes.varchar, ScalaDbTypes.MariaTypes.int_, ScalaDbTypes.MariaTypes.int_, ScalaDbTypes.MariaTypes.int_, ScalaDbTypes.MariaTypes.int_, MariaTypes.varchar.nullable)(InventoryCheckSqlRow.apply)(row => Array[Any](row.inventoryId, row.productId, row.sku, row.productName, row.warehouseId, row.warehouseCode, row.warehouseName, row.quantityOnHand, row.quantityReserved, row.available, row.reorderPoint, row.binLocation)) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest/MariatestFields.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest/MariatestFields.scala index 0f2886ce4d..4b910790e8 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest/MariatestFields.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest/MariatestFields.scala @@ -74,7 +74,7 @@ class MariatestFields(val `_path`: java.util.List[Path]) extends TupleExpr41[Byt None, None, (row, value) => row.copy(intCol = value), - MariatestId.dbType + MariatestId.mariaType ) } @@ -482,7 +482,7 @@ class MariatestFields(val `_path`: java.util.List[Path]) extends TupleExpr41[Byt None, None, (row, value) => row.copy(setCol = value), - XYZSet.dbType + XYZSet.mariaType ) } diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest/MariatestId.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest/MariatestId.scala index 5af2fa7da0..37bbea09b6 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest/MariatestId.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest/MariatestId.scala @@ -16,5 +16,5 @@ case class MariatestId(@JsonValue value: Int) extends scala.AnyVal object MariatestId { given bijection: Bijection[MariatestId, Int] = Bijection.apply[MariatestId, Int](_.value)(MariatestId.apply) - given dbType: MariaType[MariatestId] = ScalaDbTypes.MariaTypes.int_.bimap(MariatestId.apply, _.value) + given mariaType: MariaType[MariatestId] = ScalaDbTypes.MariaTypes.int_.bimap(MariatestId.apply, _.value) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest/MariatestRepoImpl.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest/MariatestRepoImpl.scala index e111d3b1a3..4e71c7a436 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest/MariatestRepoImpl.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest/MariatestRepoImpl.scala @@ -20,17 +20,17 @@ import dev.typr.foundations.scala.Fragment.sql class MariatestRepoImpl extends MariatestRepo { override def delete: DeleteBuilder[MariatestFields, MariatestRow] = DeleteBuilder.of("`mariatest`", MariatestFields.structure, Dialect.MARIADB) - override def deleteById(intCol: MariatestId)(using c: Connection): Boolean = sql"delete from `mariatest` where `int_col` = ${Fragment.encode(MariatestId.dbType, intCol)}".update().runUnchecked(c) > 0 + override def deleteById(intCol: MariatestId)(using c: Connection): Boolean = sql"delete from `mariatest` where `int_col` = ${Fragment.encode(MariatestId.mariaType, intCol)}".update().runUnchecked(c) > 0 override def deleteByIds(intCols: Array[MariatestId])(using c: Connection): Int = { val fragments: ListBuffer[Fragment] = ListBuffer() - intCols.foreach { id => fragments.addOne(Fragment.encode(MariatestId.dbType, id)): @scala.annotation.nowarn } + intCols.foreach { id => fragments.addOne(Fragment.encode(MariatestId.mariaType, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("delete from `mariatest` where `int_col` in ("), Fragment.comma(fragments), Fragment.lit(")")).update().runUnchecked(c) } override def insert(unsaved: MariatestRow)(using c: Connection): MariatestRow = { sql"""insert into `mariatest`(`tinyint_col`, `smallint_col`, `mediumint_col`, `int_col`, `bigint_col`, `tinyint_u_col`, `smallint_u_col`, `mediumint_u_col`, `int_u_col`, `bigint_u_col`, `decimal_col`, `numeric_col`, `float_col`, `double_col`, `bool_col`, `bit_col`, `bit1_col`, `char_col`, `varchar_col`, `tinytext_col`, `text_col`, `mediumtext_col`, `longtext_col`, `binary_col`, `varbinary_col`, `tinyblob_col`, `blob_col`, `mediumblob_col`, `longblob_col`, `date_col`, `time_col`, `time_fsp_col`, `datetime_col`, `datetime_fsp_col`, `timestamp_col`, `timestamp_fsp_col`, `year_col`, `set_col`, `json_col`, `inet4_col`, `inet6_col`) - values (${Fragment.encode(ScalaDbTypes.MariaTypes.tinyint, unsaved.tinyintCol)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.smallint, unsaved.smallintCol)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.mediumint, unsaved.mediumintCol)}, ${Fragment.encode(MariatestId.dbType, unsaved.intCol)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.bigint, unsaved.bigintCol)}, ${Fragment.encode(MariaTypes.tinyintUnsigned, unsaved.tinyintUCol)}, ${Fragment.encode(MariaTypes.smallintUnsigned, unsaved.smallintUCol)}, ${Fragment.encode(MariaTypes.mediumintUnsigned, unsaved.mediumintUCol)}, ${Fragment.encode(MariaTypes.intUnsigned, unsaved.intUCol)}, ${Fragment.encode(MariaTypes.bigintUnsigned, unsaved.bigintUCol)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.decimalCol)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.numericCol)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.float_, unsaved.floatCol)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.double_, unsaved.doubleCol)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.bool, unsaved.boolCol)}, ${Fragment.encode(MariaTypes.bit, unsaved.bitCol)}, ${Fragment.encode(MariaTypes.bit, unsaved.bit1Col)}, ${Fragment.encode(MariaTypes.char_, unsaved.charCol)}, ${Fragment.encode(MariaTypes.varchar, unsaved.varcharCol)}, ${Fragment.encode(MariaTypes.tinytext, unsaved.tinytextCol)}, ${Fragment.encode(MariaTypes.text, unsaved.textCol)}, ${Fragment.encode(MariaTypes.mediumtext, unsaved.mediumtextCol)}, ${Fragment.encode(MariaTypes.longtext, unsaved.longtextCol)}, ${Fragment.encode(MariaTypes.binary, unsaved.binaryCol)}, ${Fragment.encode(MariaTypes.varbinary, unsaved.varbinaryCol)}, ${Fragment.encode(MariaTypes.tinyblob, unsaved.tinyblobCol)}, ${Fragment.encode(MariaTypes.blob, unsaved.blobCol)}, ${Fragment.encode(MariaTypes.mediumblob, unsaved.mediumblobCol)}, ${Fragment.encode(MariaTypes.longblob, unsaved.longblobCol)}, ${Fragment.encode(MariaTypes.date, unsaved.dateCol)}, ${Fragment.encode(MariaTypes.time, unsaved.timeCol)}, ${Fragment.encode(MariaTypes.time, unsaved.timeFspCol)}, ${Fragment.encode(MariaTypes.datetime, unsaved.datetimeCol)}, ${Fragment.encode(MariaTypes.datetime, unsaved.datetimeFspCol)}, ${Fragment.encode(MariaTypes.timestamp, unsaved.timestampCol)}, ${Fragment.encode(MariaTypes.timestamp, unsaved.timestampFspCol)}, ${Fragment.encode(MariaTypes.year, unsaved.yearCol)}, ${Fragment.encode(XYZSet.dbType, unsaved.setCol)}, ${Fragment.encode(MariaTypes.json, unsaved.jsonCol)}, ${Fragment.encode(MariaTypes.inet4, unsaved.inet4Col)}, ${Fragment.encode(MariaTypes.inet6, unsaved.inet6Col)}) + values (${Fragment.encode(ScalaDbTypes.MariaTypes.tinyint, unsaved.tinyintCol)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.smallint, unsaved.smallintCol)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.mediumint, unsaved.mediumintCol)}, ${Fragment.encode(MariatestId.mariaType, unsaved.intCol)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.bigint, unsaved.bigintCol)}, ${Fragment.encode(MariaTypes.tinyintUnsigned, unsaved.tinyintUCol)}, ${Fragment.encode(MariaTypes.smallintUnsigned, unsaved.smallintUCol)}, ${Fragment.encode(MariaTypes.mediumintUnsigned, unsaved.mediumintUCol)}, ${Fragment.encode(MariaTypes.intUnsigned, unsaved.intUCol)}, ${Fragment.encode(MariaTypes.bigintUnsigned, unsaved.bigintUCol)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.decimalCol)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.numericCol)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.float_, unsaved.floatCol)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.double_, unsaved.doubleCol)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.bool, unsaved.boolCol)}, ${Fragment.encode(MariaTypes.bit, unsaved.bitCol)}, ${Fragment.encode(MariaTypes.bit, unsaved.bit1Col)}, ${Fragment.encode(MariaTypes.char_, unsaved.charCol)}, ${Fragment.encode(MariaTypes.varchar, unsaved.varcharCol)}, ${Fragment.encode(MariaTypes.tinytext, unsaved.tinytextCol)}, ${Fragment.encode(MariaTypes.text, unsaved.textCol)}, ${Fragment.encode(MariaTypes.mediumtext, unsaved.mediumtextCol)}, ${Fragment.encode(MariaTypes.longtext, unsaved.longtextCol)}, ${Fragment.encode(MariaTypes.binary, unsaved.binaryCol)}, ${Fragment.encode(MariaTypes.varbinary, unsaved.varbinaryCol)}, ${Fragment.encode(MariaTypes.tinyblob, unsaved.tinyblobCol)}, ${Fragment.encode(MariaTypes.blob, unsaved.blobCol)}, ${Fragment.encode(MariaTypes.mediumblob, unsaved.mediumblobCol)}, ${Fragment.encode(MariaTypes.longblob, unsaved.longblobCol)}, ${Fragment.encode(MariaTypes.date, unsaved.dateCol)}, ${Fragment.encode(MariaTypes.time, unsaved.timeCol)}, ${Fragment.encode(MariaTypes.time, unsaved.timeFspCol)}, ${Fragment.encode(MariaTypes.datetime, unsaved.datetimeCol)}, ${Fragment.encode(MariaTypes.datetime, unsaved.datetimeFspCol)}, ${Fragment.encode(MariaTypes.timestamp, unsaved.timestampCol)}, ${Fragment.encode(MariaTypes.timestamp, unsaved.timestampFspCol)}, ${Fragment.encode(MariaTypes.year, unsaved.yearCol)}, ${Fragment.encode(XYZSet.mariaType, unsaved.setCol)}, ${Fragment.encode(MariaTypes.json, unsaved.jsonCol)}, ${Fragment.encode(MariaTypes.inet4, unsaved.inet4Col)}, ${Fragment.encode(MariaTypes.inet6, unsaved.inet6Col)}) RETURNING `tinyint_col`, `smallint_col`, `mediumint_col`, `int_col`, `bigint_col`, `tinyint_u_col`, `smallint_u_col`, `mediumint_u_col`, `int_u_col`, `bigint_u_col`, `decimal_col`, `numeric_col`, `float_col`, `double_col`, `bool_col`, `bit_col`, `bit1_col`, `char_col`, `varchar_col`, `tinytext_col`, `text_col`, `mediumtext_col`, `longtext_col`, `binary_col`, `varbinary_col`, `tinyblob_col`, `blob_col`, `mediumblob_col`, `longblob_col`, `date_col`, `time_col`, `time_fsp_col`, `datetime_col`, `datetime_fsp_col`, `timestamp_col`, `timestamp_fsp_col`, `year_col`, `set_col`, `json_col`, `inet4_col`, `inet6_col` """ .updateReturning(MariatestRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -46,7 +46,7 @@ class MariatestRepoImpl extends MariatestRepo { columns.addOne(Fragment.lit("`mediumint_col`")): @scala.annotation.nowarn values.addOne(sql"${Fragment.encode(ScalaDbTypes.MariaTypes.mediumint, unsaved.mediumintCol)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit("`int_col`")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(MariatestId.dbType, unsaved.intCol)}"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(MariatestId.mariaType, unsaved.intCol)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit("`bigint_col`")): @scala.annotation.nowarn values.addOne(sql"${Fragment.encode(ScalaDbTypes.MariaTypes.bigint, unsaved.bigintCol)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit("`tinyint_u_col`")): @scala.annotation.nowarn @@ -110,7 +110,7 @@ class MariatestRepoImpl extends MariatestRepo { columns.addOne(Fragment.lit("`year_col`")): @scala.annotation.nowarn values.addOne(sql"${Fragment.encode(MariaTypes.year, unsaved.yearCol)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit("`set_col`")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(XYZSet.dbType, unsaved.setCol)}"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(XYZSet.mariaType, unsaved.setCol)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit("`json_col`")): @scala.annotation.nowarn values.addOne(sql"${Fragment.encode(MariaTypes.json, unsaved.jsonCol)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit("`inet4_col`")): @scala.annotation.nowarn @@ -145,12 +145,12 @@ class MariatestRepoImpl extends MariatestRepo { override def selectById(intCol: MariatestId)(using c: Connection): Option[MariatestRow] = { sql"""select `tinyint_col`, `smallint_col`, `mediumint_col`, `int_col`, `bigint_col`, `tinyint_u_col`, `smallint_u_col`, `mediumint_u_col`, `int_u_col`, `bigint_u_col`, `decimal_col`, `numeric_col`, `float_col`, `double_col`, `bool_col`, `bit_col`, `bit1_col`, `char_col`, `varchar_col`, `tinytext_col`, `text_col`, `mediumtext_col`, `longtext_col`, `binary_col`, `varbinary_col`, `tinyblob_col`, `blob_col`, `mediumblob_col`, `longblob_col`, `date_col`, `time_col`, `time_fsp_col`, `datetime_col`, `datetime_fsp_col`, `timestamp_col`, `timestamp_fsp_col`, `year_col`, `set_col`, `json_col`, `inet4_col`, `inet6_col` from `mariatest` - where `int_col` = ${Fragment.encode(MariatestId.dbType, intCol)}""".query(MariatestRow.`_rowParser`.first()).runUnchecked(c) + where `int_col` = ${Fragment.encode(MariatestId.mariaType, intCol)}""".query(MariatestRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(intCols: Array[MariatestId])(using c: Connection): List[MariatestRow] = { val fragments: ListBuffer[Fragment] = ListBuffer() - intCols.foreach { id => fragments.addOne(Fragment.encode(MariatestId.dbType, id)): @scala.annotation.nowarn } + intCols.foreach { id => fragments.addOne(Fragment.encode(MariatestId.mariaType, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("select `tinyint_col`, `smallint_col`, `mediumint_col`, `int_col`, `bigint_col`, `tinyint_u_col`, `smallint_u_col`, `mediumint_u_col`, `int_u_col`, `bigint_u_col`, `decimal_col`, `numeric_col`, `float_col`, `double_col`, `bool_col`, `bit_col`, `bit1_col`, `char_col`, `varchar_col`, `tinytext_col`, `text_col`, `mediumtext_col`, `longtext_col`, `binary_col`, `varbinary_col`, `tinyblob_col`, `blob_col`, `mediumblob_col`, `longblob_col`, `date_col`, `time_col`, `time_fsp_col`, `datetime_col`, `datetime_fsp_col`, `timestamp_col`, `timestamp_fsp_col`, `year_col`, `set_col`, `json_col`, `inet4_col`, `inet6_col` from `mariatest` where `int_col` in ("), Fragment.comma(fragments), Fragment.lit(")")).query(MariatestRow.`_rowParser`.all()).runUnchecked(c) } @@ -201,16 +201,16 @@ class MariatestRepoImpl extends MariatestRepo { `timestamp_col` = ${Fragment.encode(MariaTypes.timestamp, row.timestampCol)}, `timestamp_fsp_col` = ${Fragment.encode(MariaTypes.timestamp, row.timestampFspCol)}, `year_col` = ${Fragment.encode(MariaTypes.year, row.yearCol)}, - `set_col` = ${Fragment.encode(XYZSet.dbType, row.setCol)}, + `set_col` = ${Fragment.encode(XYZSet.mariaType, row.setCol)}, `json_col` = ${Fragment.encode(MariaTypes.json, row.jsonCol)}, `inet4_col` = ${Fragment.encode(MariaTypes.inet4, row.inet4Col)}, `inet6_col` = ${Fragment.encode(MariaTypes.inet6, row.inet6Col)} - where `int_col` = ${Fragment.encode(MariatestId.dbType, intCol)}""".update().runUnchecked(c) > 0 + where `int_col` = ${Fragment.encode(MariatestId.mariaType, intCol)}""".update().runUnchecked(c) > 0 } override def upsert(unsaved: MariatestRow)(using c: Connection): MariatestRow = { sql"""INSERT INTO `mariatest`(`tinyint_col`, `smallint_col`, `mediumint_col`, `int_col`, `bigint_col`, `tinyint_u_col`, `smallint_u_col`, `mediumint_u_col`, `int_u_col`, `bigint_u_col`, `decimal_col`, `numeric_col`, `float_col`, `double_col`, `bool_col`, `bit_col`, `bit1_col`, `char_col`, `varchar_col`, `tinytext_col`, `text_col`, `mediumtext_col`, `longtext_col`, `binary_col`, `varbinary_col`, `tinyblob_col`, `blob_col`, `mediumblob_col`, `longblob_col`, `date_col`, `time_col`, `time_fsp_col`, `datetime_col`, `datetime_fsp_col`, `timestamp_col`, `timestamp_fsp_col`, `year_col`, `set_col`, `json_col`, `inet4_col`, `inet6_col`) - VALUES (${Fragment.encode(ScalaDbTypes.MariaTypes.tinyint, unsaved.tinyintCol)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.smallint, unsaved.smallintCol)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.mediumint, unsaved.mediumintCol)}, ${Fragment.encode(MariatestId.dbType, unsaved.intCol)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.bigint, unsaved.bigintCol)}, ${Fragment.encode(MariaTypes.tinyintUnsigned, unsaved.tinyintUCol)}, ${Fragment.encode(MariaTypes.smallintUnsigned, unsaved.smallintUCol)}, ${Fragment.encode(MariaTypes.mediumintUnsigned, unsaved.mediumintUCol)}, ${Fragment.encode(MariaTypes.intUnsigned, unsaved.intUCol)}, ${Fragment.encode(MariaTypes.bigintUnsigned, unsaved.bigintUCol)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.decimalCol)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.numericCol)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.float_, unsaved.floatCol)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.double_, unsaved.doubleCol)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.bool, unsaved.boolCol)}, ${Fragment.encode(MariaTypes.bit, unsaved.bitCol)}, ${Fragment.encode(MariaTypes.bit, unsaved.bit1Col)}, ${Fragment.encode(MariaTypes.char_, unsaved.charCol)}, ${Fragment.encode(MariaTypes.varchar, unsaved.varcharCol)}, ${Fragment.encode(MariaTypes.tinytext, unsaved.tinytextCol)}, ${Fragment.encode(MariaTypes.text, unsaved.textCol)}, ${Fragment.encode(MariaTypes.mediumtext, unsaved.mediumtextCol)}, ${Fragment.encode(MariaTypes.longtext, unsaved.longtextCol)}, ${Fragment.encode(MariaTypes.binary, unsaved.binaryCol)}, ${Fragment.encode(MariaTypes.varbinary, unsaved.varbinaryCol)}, ${Fragment.encode(MariaTypes.tinyblob, unsaved.tinyblobCol)}, ${Fragment.encode(MariaTypes.blob, unsaved.blobCol)}, ${Fragment.encode(MariaTypes.mediumblob, unsaved.mediumblobCol)}, ${Fragment.encode(MariaTypes.longblob, unsaved.longblobCol)}, ${Fragment.encode(MariaTypes.date, unsaved.dateCol)}, ${Fragment.encode(MariaTypes.time, unsaved.timeCol)}, ${Fragment.encode(MariaTypes.time, unsaved.timeFspCol)}, ${Fragment.encode(MariaTypes.datetime, unsaved.datetimeCol)}, ${Fragment.encode(MariaTypes.datetime, unsaved.datetimeFspCol)}, ${Fragment.encode(MariaTypes.timestamp, unsaved.timestampCol)}, ${Fragment.encode(MariaTypes.timestamp, unsaved.timestampFspCol)}, ${Fragment.encode(MariaTypes.year, unsaved.yearCol)}, ${Fragment.encode(XYZSet.dbType, unsaved.setCol)}, ${Fragment.encode(MariaTypes.json, unsaved.jsonCol)}, ${Fragment.encode(MariaTypes.inet4, unsaved.inet4Col)}, ${Fragment.encode(MariaTypes.inet6, unsaved.inet6Col)}) + VALUES (${Fragment.encode(ScalaDbTypes.MariaTypes.tinyint, unsaved.tinyintCol)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.smallint, unsaved.smallintCol)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.mediumint, unsaved.mediumintCol)}, ${Fragment.encode(MariatestId.mariaType, unsaved.intCol)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.bigint, unsaved.bigintCol)}, ${Fragment.encode(MariaTypes.tinyintUnsigned, unsaved.tinyintUCol)}, ${Fragment.encode(MariaTypes.smallintUnsigned, unsaved.smallintUCol)}, ${Fragment.encode(MariaTypes.mediumintUnsigned, unsaved.mediumintUCol)}, ${Fragment.encode(MariaTypes.intUnsigned, unsaved.intUCol)}, ${Fragment.encode(MariaTypes.bigintUnsigned, unsaved.bigintUCol)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.decimalCol)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.numericCol)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.float_, unsaved.floatCol)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.double_, unsaved.doubleCol)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.bool, unsaved.boolCol)}, ${Fragment.encode(MariaTypes.bit, unsaved.bitCol)}, ${Fragment.encode(MariaTypes.bit, unsaved.bit1Col)}, ${Fragment.encode(MariaTypes.char_, unsaved.charCol)}, ${Fragment.encode(MariaTypes.varchar, unsaved.varcharCol)}, ${Fragment.encode(MariaTypes.tinytext, unsaved.tinytextCol)}, ${Fragment.encode(MariaTypes.text, unsaved.textCol)}, ${Fragment.encode(MariaTypes.mediumtext, unsaved.mediumtextCol)}, ${Fragment.encode(MariaTypes.longtext, unsaved.longtextCol)}, ${Fragment.encode(MariaTypes.binary, unsaved.binaryCol)}, ${Fragment.encode(MariaTypes.varbinary, unsaved.varbinaryCol)}, ${Fragment.encode(MariaTypes.tinyblob, unsaved.tinyblobCol)}, ${Fragment.encode(MariaTypes.blob, unsaved.blobCol)}, ${Fragment.encode(MariaTypes.mediumblob, unsaved.mediumblobCol)}, ${Fragment.encode(MariaTypes.longblob, unsaved.longblobCol)}, ${Fragment.encode(MariaTypes.date, unsaved.dateCol)}, ${Fragment.encode(MariaTypes.time, unsaved.timeCol)}, ${Fragment.encode(MariaTypes.time, unsaved.timeFspCol)}, ${Fragment.encode(MariaTypes.datetime, unsaved.datetimeCol)}, ${Fragment.encode(MariaTypes.datetime, unsaved.datetimeFspCol)}, ${Fragment.encode(MariaTypes.timestamp, unsaved.timestampCol)}, ${Fragment.encode(MariaTypes.timestamp, unsaved.timestampFspCol)}, ${Fragment.encode(MariaTypes.year, unsaved.yearCol)}, ${Fragment.encode(XYZSet.mariaType, unsaved.setCol)}, ${Fragment.encode(MariaTypes.json, unsaved.jsonCol)}, ${Fragment.encode(MariaTypes.inet4, unsaved.inet4Col)}, ${Fragment.encode(MariaTypes.inet6, unsaved.inet6Col)}) ON DUPLICATE KEY UPDATE `tinyint_col` = VALUES(`tinyint_col`), `smallint_col` = VALUES(`smallint_col`), `mediumint_col` = VALUES(`mediumint_col`), diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest/MariatestRow.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest/MariatestRow.scala index 7540fac960..05ebf8cd66 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest/MariatestRow.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest/MariatestRow.scala @@ -251,5 +251,5 @@ case class MariatestRow( } object MariatestRow { - val `_rowParser`: RowParser[MariatestRow] = RowParsers.of(ScalaDbTypes.MariaTypes.tinyint, ScalaDbTypes.MariaTypes.smallint, ScalaDbTypes.MariaTypes.mediumint, MariatestId.dbType, ScalaDbTypes.MariaTypes.bigint, MariaTypes.tinyintUnsigned, MariaTypes.smallintUnsigned, MariaTypes.mediumintUnsigned, MariaTypes.intUnsigned, MariaTypes.bigintUnsigned, ScalaDbTypes.MariaTypes.numeric, ScalaDbTypes.MariaTypes.numeric, ScalaDbTypes.MariaTypes.float_, ScalaDbTypes.MariaTypes.double_, ScalaDbTypes.MariaTypes.bool, MariaTypes.bit, MariaTypes.bit, MariaTypes.char_, MariaTypes.varchar, MariaTypes.tinytext, MariaTypes.text, MariaTypes.mediumtext, MariaTypes.longtext, MariaTypes.binary, MariaTypes.varbinary, MariaTypes.tinyblob, MariaTypes.blob, MariaTypes.mediumblob, MariaTypes.longblob, MariaTypes.date, MariaTypes.time, MariaTypes.time, MariaTypes.datetime, MariaTypes.datetime, MariaTypes.timestamp, MariaTypes.timestamp, MariaTypes.year, XYZSet.dbType, MariaTypes.json, MariaTypes.inet4, MariaTypes.inet6)(MariatestRow.apply)(row => Array[Any](row.tinyintCol, row.smallintCol, row.mediumintCol, row.intCol, row.bigintCol, row.tinyintUCol, row.smallintUCol, row.mediumintUCol, row.intUCol, row.bigintUCol, row.decimalCol, row.numericCol, row.floatCol, row.doubleCol, row.boolCol, row.bitCol, row.bit1Col, row.charCol, row.varcharCol, row.tinytextCol, row.textCol, row.mediumtextCol, row.longtextCol, row.binaryCol, row.varbinaryCol, row.tinyblobCol, row.blobCol, row.mediumblobCol, row.longblobCol, row.dateCol, row.timeCol, row.timeFspCol, row.datetimeCol, row.datetimeFspCol, row.timestampCol, row.timestampFspCol, row.yearCol, row.setCol, row.jsonCol, row.inet4Col, row.inet6Col)) + val `_rowParser`: RowParser[MariatestRow] = RowParsers.of(ScalaDbTypes.MariaTypes.tinyint, ScalaDbTypes.MariaTypes.smallint, ScalaDbTypes.MariaTypes.mediumint, MariatestId.mariaType, ScalaDbTypes.MariaTypes.bigint, MariaTypes.tinyintUnsigned, MariaTypes.smallintUnsigned, MariaTypes.mediumintUnsigned, MariaTypes.intUnsigned, MariaTypes.bigintUnsigned, ScalaDbTypes.MariaTypes.numeric, ScalaDbTypes.MariaTypes.numeric, ScalaDbTypes.MariaTypes.float_, ScalaDbTypes.MariaTypes.double_, ScalaDbTypes.MariaTypes.bool, MariaTypes.bit, MariaTypes.bit, MariaTypes.char_, MariaTypes.varchar, MariaTypes.tinytext, MariaTypes.text, MariaTypes.mediumtext, MariaTypes.longtext, MariaTypes.binary, MariaTypes.varbinary, MariaTypes.tinyblob, MariaTypes.blob, MariaTypes.mediumblob, MariaTypes.longblob, MariaTypes.date, MariaTypes.time, MariaTypes.time, MariaTypes.datetime, MariaTypes.datetime, MariaTypes.timestamp, MariaTypes.timestamp, MariaTypes.year, XYZSet.mariaType, MariaTypes.json, MariaTypes.inet4, MariaTypes.inet6)(MariatestRow.apply)(row => Array[Any](row.tinyintCol, row.smallintCol, row.mediumintCol, row.intCol, row.bigintCol, row.tinyintUCol, row.smallintUCol, row.mediumintUCol, row.intUCol, row.bigintUCol, row.decimalCol, row.numericCol, row.floatCol, row.doubleCol, row.boolCol, row.bitCol, row.bit1Col, row.charCol, row.varcharCol, row.tinytextCol, row.textCol, row.mediumtextCol, row.longtextCol, row.binaryCol, row.varbinaryCol, row.tinyblobCol, row.blobCol, row.mediumblobCol, row.longblobCol, row.dateCol, row.timeCol, row.timeFspCol, row.datetimeCol, row.datetimeFspCol, row.timestampCol, row.timestampFspCol, row.yearCol, row.setCol, row.jsonCol, row.inet4Col, row.inet6Col)) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_identity/MariatestIdentityFields.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_identity/MariatestIdentityFields.scala index 9d1a93811c..34009c38f3 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_identity/MariatestIdentityFields.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_identity/MariatestIdentityFields.scala @@ -25,7 +25,7 @@ class MariatestIdentityFields(val `_path`: java.util.List[Path]) extends TupleEx None, None, (row, value) => row.copy(id = value), - MariatestIdentityId.dbType + MariatestIdentityId.mariaType ) } diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_identity/MariatestIdentityId.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_identity/MariatestIdentityId.scala index 1fe9fdf43e..772b2aec75 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_identity/MariatestIdentityId.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_identity/MariatestIdentityId.scala @@ -16,5 +16,5 @@ case class MariatestIdentityId(@JsonValue value: Int) extends scala.AnyVal object MariatestIdentityId { given bijection: Bijection[MariatestIdentityId, Int] = Bijection.apply[MariatestIdentityId, Int](_.value)(MariatestIdentityId.apply) - given dbType: MariaType[MariatestIdentityId] = ScalaDbTypes.MariaTypes.int_.bimap(MariatestIdentityId.apply, _.value) + given mariaType: MariaType[MariatestIdentityId] = ScalaDbTypes.MariaTypes.int_.bimap(MariatestIdentityId.apply, _.value) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_identity/MariatestIdentityRepoImpl.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_identity/MariatestIdentityRepoImpl.scala index fbae15a6c5..cf3483c95d 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_identity/MariatestIdentityRepoImpl.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_identity/MariatestIdentityRepoImpl.scala @@ -18,11 +18,11 @@ import dev.typr.foundations.scala.Fragment.sql class MariatestIdentityRepoImpl extends MariatestIdentityRepo { override def delete: DeleteBuilder[MariatestIdentityFields, MariatestIdentityRow] = DeleteBuilder.of("`mariatest_identity`", MariatestIdentityFields.structure, Dialect.MARIADB) - override def deleteById(id: MariatestIdentityId)(using c: Connection): Boolean = sql"delete from `mariatest_identity` where `id` = ${Fragment.encode(MariatestIdentityId.dbType, id)}".update().runUnchecked(c) > 0 + override def deleteById(id: MariatestIdentityId)(using c: Connection): Boolean = sql"delete from `mariatest_identity` where `id` = ${Fragment.encode(MariatestIdentityId.mariaType, id)}".update().runUnchecked(c) > 0 override def deleteByIds(ids: Array[MariatestIdentityId])(using c: Connection): Int = { val fragments: ListBuffer[Fragment] = ListBuffer() - ids.foreach { id => fragments.addOne(Fragment.encode(MariatestIdentityId.dbType, id)): @scala.annotation.nowarn } + ids.foreach { id => fragments.addOne(Fragment.encode(MariatestIdentityId.mariaType, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("delete from `mariatest_identity` where `id` in ("), Fragment.comma(fragments), Fragment.lit(")")).update().runUnchecked(c) } @@ -59,12 +59,12 @@ class MariatestIdentityRepoImpl extends MariatestIdentityRepo { override def selectById(id: MariatestIdentityId)(using c: Connection): Option[MariatestIdentityRow] = { sql"""select `id`, `name` from `mariatest_identity` - where `id` = ${Fragment.encode(MariatestIdentityId.dbType, id)}""".query(MariatestIdentityRow.`_rowParser`.first()).runUnchecked(c) + where `id` = ${Fragment.encode(MariatestIdentityId.mariaType, id)}""".query(MariatestIdentityRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(ids: Array[MariatestIdentityId])(using c: Connection): List[MariatestIdentityRow] = { val fragments: ListBuffer[Fragment] = ListBuffer() - ids.foreach { id => fragments.addOne(Fragment.encode(MariatestIdentityId.dbType, id)): @scala.annotation.nowarn } + ids.foreach { id => fragments.addOne(Fragment.encode(MariatestIdentityId.mariaType, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("select `id`, `name` from `mariatest_identity` where `id` in ("), Fragment.comma(fragments), Fragment.lit(")")).query(MariatestIdentityRow.`_rowParser`.all()).runUnchecked(c) } @@ -80,12 +80,12 @@ class MariatestIdentityRepoImpl extends MariatestIdentityRepo { val id: MariatestIdentityId = row.id return sql"""update `mariatest_identity` set `name` = ${Fragment.encode(MariaTypes.varchar, row.name)} - where `id` = ${Fragment.encode(MariatestIdentityId.dbType, id)}""".update().runUnchecked(c) > 0 + where `id` = ${Fragment.encode(MariatestIdentityId.mariaType, id)}""".update().runUnchecked(c) > 0 } override def upsert(unsaved: MariatestIdentityRow)(using c: Connection): MariatestIdentityRow = { sql"""INSERT INTO `mariatest_identity`(`id`, `name`) - VALUES (${Fragment.encode(MariatestIdentityId.dbType, unsaved.id)}, ${Fragment.encode(MariaTypes.varchar, unsaved.name)}) + VALUES (${Fragment.encode(MariatestIdentityId.mariaType, unsaved.id)}, ${Fragment.encode(MariaTypes.varchar, unsaved.name)}) ON DUPLICATE KEY UPDATE `name` = VALUES(`name`) RETURNING `id`, `name`""" .updateReturning(MariatestIdentityRow.`_rowParser`.exactlyOne()) diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_identity/MariatestIdentityRow.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_identity/MariatestIdentityRow.scala index 5343647175..97a8e2544a 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_identity/MariatestIdentityRow.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_identity/MariatestIdentityRow.scala @@ -29,5 +29,5 @@ case class MariatestIdentityRow( } object MariatestIdentityRow { - val `_rowParser`: RowParser[MariatestIdentityRow] = RowParsers.of(MariatestIdentityId.dbType, MariaTypes.varchar)(MariatestIdentityRow.apply)(row => Array[Any](row.id, row.name)) + val `_rowParser`: RowParser[MariatestIdentityRow] = RowParsers.of(MariatestIdentityId.mariaType, MariaTypes.varchar)(MariatestIdentityRow.apply)(row => Array[Any](row.id, row.name)) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_spatial/MariatestSpatialFields.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_spatial/MariatestSpatialFields.scala index 7c14fab09a..de99916bc6 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_spatial/MariatestSpatialFields.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_spatial/MariatestSpatialFields.scala @@ -33,7 +33,7 @@ class MariatestSpatialFields(val `_path`: java.util.List[Path]) extends TupleExp None, None, (row, value) => row.copy(id = value), - MariatestSpatialId.dbType + MariatestSpatialId.mariaType ) } diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_spatial/MariatestSpatialId.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_spatial/MariatestSpatialId.scala index 3ee94860cd..25ea33687e 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_spatial/MariatestSpatialId.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_spatial/MariatestSpatialId.scala @@ -16,5 +16,5 @@ case class MariatestSpatialId(@JsonValue value: Int) extends scala.AnyVal object MariatestSpatialId { given bijection: Bijection[MariatestSpatialId, Int] = Bijection.apply[MariatestSpatialId, Int](_.value)(MariatestSpatialId.apply) - given dbType: MariaType[MariatestSpatialId] = ScalaDbTypes.MariaTypes.int_.bimap(MariatestSpatialId.apply, _.value) + given mariaType: MariaType[MariatestSpatialId] = ScalaDbTypes.MariaTypes.int_.bimap(MariatestSpatialId.apply, _.value) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_spatial/MariatestSpatialRepoImpl.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_spatial/MariatestSpatialRepoImpl.scala index ada2a63f5a..e8faf2f623 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_spatial/MariatestSpatialRepoImpl.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_spatial/MariatestSpatialRepoImpl.scala @@ -18,11 +18,11 @@ import dev.typr.foundations.scala.Fragment.sql class MariatestSpatialRepoImpl extends MariatestSpatialRepo { override def delete: DeleteBuilder[MariatestSpatialFields, MariatestSpatialRow] = DeleteBuilder.of("`mariatest_spatial`", MariatestSpatialFields.structure, Dialect.MARIADB) - override def deleteById(id: MariatestSpatialId)(using c: Connection): Boolean = sql"delete from `mariatest_spatial` where `id` = ${Fragment.encode(MariatestSpatialId.dbType, id)}".update().runUnchecked(c) > 0 + override def deleteById(id: MariatestSpatialId)(using c: Connection): Boolean = sql"delete from `mariatest_spatial` where `id` = ${Fragment.encode(MariatestSpatialId.mariaType, id)}".update().runUnchecked(c) > 0 override def deleteByIds(ids: Array[MariatestSpatialId])(using c: Connection): Int = { val fragments: ListBuffer[Fragment] = ListBuffer() - ids.foreach { id => fragments.addOne(Fragment.encode(MariatestSpatialId.dbType, id)): @scala.annotation.nowarn } + ids.foreach { id => fragments.addOne(Fragment.encode(MariatestSpatialId.mariaType, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("delete from `mariatest_spatial` where `id` in ("), Fragment.comma(fragments), Fragment.lit(")")).update().runUnchecked(c) } @@ -73,12 +73,12 @@ class MariatestSpatialRepoImpl extends MariatestSpatialRepo { override def selectById(id: MariatestSpatialId)(using c: Connection): Option[MariatestSpatialRow] = { sql"""select `id`, `geometry_col`, `point_col`, `linestring_col`, `polygon_col`, `multipoint_col`, `multilinestring_col`, `multipolygon_col`, `geometrycollection_col` from `mariatest_spatial` - where `id` = ${Fragment.encode(MariatestSpatialId.dbType, id)}""".query(MariatestSpatialRow.`_rowParser`.first()).runUnchecked(c) + where `id` = ${Fragment.encode(MariatestSpatialId.mariaType, id)}""".query(MariatestSpatialRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(ids: Array[MariatestSpatialId])(using c: Connection): List[MariatestSpatialRow] = { val fragments: ListBuffer[Fragment] = ListBuffer() - ids.foreach { id => fragments.addOne(Fragment.encode(MariatestSpatialId.dbType, id)): @scala.annotation.nowarn } + ids.foreach { id => fragments.addOne(Fragment.encode(MariatestSpatialId.mariaType, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("select `id`, `geometry_col`, `point_col`, `linestring_col`, `polygon_col`, `multipoint_col`, `multilinestring_col`, `multipolygon_col`, `geometrycollection_col` from `mariatest_spatial` where `id` in ("), Fragment.comma(fragments), Fragment.lit(")")).query(MariatestSpatialRow.`_rowParser`.all()).runUnchecked(c) } @@ -101,12 +101,12 @@ class MariatestSpatialRepoImpl extends MariatestSpatialRepo { `multilinestring_col` = ${Fragment.encode(MariaTypes.multilinestring, row.multilinestringCol)}, `multipolygon_col` = ${Fragment.encode(MariaTypes.multipolygon, row.multipolygonCol)}, `geometrycollection_col` = ${Fragment.encode(MariaTypes.geometrycollection, row.geometrycollectionCol)} - where `id` = ${Fragment.encode(MariatestSpatialId.dbType, id)}""".update().runUnchecked(c) > 0 + where `id` = ${Fragment.encode(MariatestSpatialId.mariaType, id)}""".update().runUnchecked(c) > 0 } override def upsert(unsaved: MariatestSpatialRow)(using c: Connection): MariatestSpatialRow = { sql"""INSERT INTO `mariatest_spatial`(`id`, `geometry_col`, `point_col`, `linestring_col`, `polygon_col`, `multipoint_col`, `multilinestring_col`, `multipolygon_col`, `geometrycollection_col`) - VALUES (${Fragment.encode(MariatestSpatialId.dbType, unsaved.id)}, ${Fragment.encode(MariaTypes.geometry, unsaved.geometryCol)}, ${Fragment.encode(MariaTypes.point, unsaved.pointCol)}, ${Fragment.encode(MariaTypes.linestring, unsaved.linestringCol)}, ${Fragment.encode(MariaTypes.polygon, unsaved.polygonCol)}, ${Fragment.encode(MariaTypes.multipoint, unsaved.multipointCol)}, ${Fragment.encode(MariaTypes.multilinestring, unsaved.multilinestringCol)}, ${Fragment.encode(MariaTypes.multipolygon, unsaved.multipolygonCol)}, ${Fragment.encode(MariaTypes.geometrycollection, unsaved.geometrycollectionCol)}) + VALUES (${Fragment.encode(MariatestSpatialId.mariaType, unsaved.id)}, ${Fragment.encode(MariaTypes.geometry, unsaved.geometryCol)}, ${Fragment.encode(MariaTypes.point, unsaved.pointCol)}, ${Fragment.encode(MariaTypes.linestring, unsaved.linestringCol)}, ${Fragment.encode(MariaTypes.polygon, unsaved.polygonCol)}, ${Fragment.encode(MariaTypes.multipoint, unsaved.multipointCol)}, ${Fragment.encode(MariaTypes.multilinestring, unsaved.multilinestringCol)}, ${Fragment.encode(MariaTypes.multipolygon, unsaved.multipolygonCol)}, ${Fragment.encode(MariaTypes.geometrycollection, unsaved.geometrycollectionCol)}) ON DUPLICATE KEY UPDATE `geometry_col` = VALUES(`geometry_col`), `point_col` = VALUES(`point_col`), `linestring_col` = VALUES(`linestring_col`), diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_spatial/MariatestSpatialRow.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_spatial/MariatestSpatialRow.scala index 6ebcfc1440..8a785be8ca 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_spatial/MariatestSpatialRow.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_spatial/MariatestSpatialRow.scala @@ -77,5 +77,5 @@ case class MariatestSpatialRow( } object MariatestSpatialRow { - val `_rowParser`: RowParser[MariatestSpatialRow] = RowParsers.of(MariatestSpatialId.dbType, MariaTypes.geometry, MariaTypes.point, MariaTypes.linestring, MariaTypes.polygon, MariaTypes.multipoint, MariaTypes.multilinestring, MariaTypes.multipolygon, MariaTypes.geometrycollection)(MariatestSpatialRow.apply)(row => Array[Any](row.id, row.geometryCol, row.pointCol, row.linestringCol, row.polygonCol, row.multipointCol, row.multilinestringCol, row.multipolygonCol, row.geometrycollectionCol)) + val `_rowParser`: RowParser[MariatestSpatialRow] = RowParsers.of(MariatestSpatialId.mariaType, MariaTypes.geometry, MariaTypes.point, MariaTypes.linestring, MariaTypes.polygon, MariaTypes.multipoint, MariaTypes.multilinestring, MariaTypes.multipolygon, MariaTypes.geometrycollection)(MariatestSpatialRow.apply)(row => Array[Any](row.id, row.geometryCol, row.pointCol, row.linestringCol, row.polygonCol, row.multipointCol, row.multilinestringCol, row.multipolygonCol, row.geometrycollectionCol)) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_spatial_null/MariatestSpatialNullFields.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_spatial_null/MariatestSpatialNullFields.scala index 3c1068a2aa..21243dc89b 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_spatial_null/MariatestSpatialNullFields.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_spatial_null/MariatestSpatialNullFields.scala @@ -33,7 +33,7 @@ class MariatestSpatialNullFields(val `_path`: java.util.List[Path]) extends Tupl None, None, (row, value) => row.copy(id = value), - MariatestSpatialNullId.dbType + MariatestSpatialNullId.mariaType ) } diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_spatial_null/MariatestSpatialNullId.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_spatial_null/MariatestSpatialNullId.scala index dc079d1599..1bffbfc312 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_spatial_null/MariatestSpatialNullId.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_spatial_null/MariatestSpatialNullId.scala @@ -16,5 +16,5 @@ case class MariatestSpatialNullId(@JsonValue value: Int) extends scala.AnyVal object MariatestSpatialNullId { given bijection: Bijection[MariatestSpatialNullId, Int] = Bijection.apply[MariatestSpatialNullId, Int](_.value)(MariatestSpatialNullId.apply) - given dbType: MariaType[MariatestSpatialNullId] = ScalaDbTypes.MariaTypes.int_.bimap(MariatestSpatialNullId.apply, _.value) + given mariaType: MariaType[MariatestSpatialNullId] = ScalaDbTypes.MariaTypes.int_.bimap(MariatestSpatialNullId.apply, _.value) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_spatial_null/MariatestSpatialNullRepoImpl.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_spatial_null/MariatestSpatialNullRepoImpl.scala index 0bcc98a75d..bb09861988 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_spatial_null/MariatestSpatialNullRepoImpl.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_spatial_null/MariatestSpatialNullRepoImpl.scala @@ -19,11 +19,11 @@ import dev.typr.foundations.scala.Fragment.sql class MariatestSpatialNullRepoImpl extends MariatestSpatialNullRepo { override def delete: DeleteBuilder[MariatestSpatialNullFields, MariatestSpatialNullRow] = DeleteBuilder.of("`mariatest_spatial_null`", MariatestSpatialNullFields.structure, Dialect.MARIADB) - override def deleteById(id: MariatestSpatialNullId)(using c: Connection): Boolean = sql"delete from `mariatest_spatial_null` where `id` = ${Fragment.encode(MariatestSpatialNullId.dbType, id)}".update().runUnchecked(c) > 0 + override def deleteById(id: MariatestSpatialNullId)(using c: Connection): Boolean = sql"delete from `mariatest_spatial_null` where `id` = ${Fragment.encode(MariatestSpatialNullId.mariaType, id)}".update().runUnchecked(c) > 0 override def deleteByIds(ids: Array[MariatestSpatialNullId])(using c: Connection): Int = { val fragments: ListBuffer[Fragment] = ListBuffer() - ids.foreach { id => fragments.addOne(Fragment.encode(MariatestSpatialNullId.dbType, id)): @scala.annotation.nowarn } + ids.foreach { id => fragments.addOne(Fragment.encode(MariatestSpatialNullId.mariaType, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("delete from `mariatest_spatial_null` where `id` in ("), Fragment.comma(fragments), Fragment.lit(")")).update().runUnchecked(c) } @@ -92,12 +92,12 @@ class MariatestSpatialNullRepoImpl extends MariatestSpatialNullRepo { override def selectById(id: MariatestSpatialNullId)(using c: Connection): Option[MariatestSpatialNullRow] = { sql"""select `id`, `geometry_col`, `point_col`, `linestring_col`, `polygon_col`, `multipoint_col`, `multilinestring_col`, `multipolygon_col`, `geometrycollection_col` from `mariatest_spatial_null` - where `id` = ${Fragment.encode(MariatestSpatialNullId.dbType, id)}""".query(MariatestSpatialNullRow.`_rowParser`.first()).runUnchecked(c) + where `id` = ${Fragment.encode(MariatestSpatialNullId.mariaType, id)}""".query(MariatestSpatialNullRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(ids: Array[MariatestSpatialNullId])(using c: Connection): List[MariatestSpatialNullRow] = { val fragments: ListBuffer[Fragment] = ListBuffer() - ids.foreach { id => fragments.addOne(Fragment.encode(MariatestSpatialNullId.dbType, id)): @scala.annotation.nowarn } + ids.foreach { id => fragments.addOne(Fragment.encode(MariatestSpatialNullId.mariaType, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("select `id`, `geometry_col`, `point_col`, `linestring_col`, `polygon_col`, `multipoint_col`, `multilinestring_col`, `multipolygon_col`, `geometrycollection_col` from `mariatest_spatial_null` where `id` in ("), Fragment.comma(fragments), Fragment.lit(")")).query(MariatestSpatialNullRow.`_rowParser`.all()).runUnchecked(c) } @@ -120,12 +120,12 @@ class MariatestSpatialNullRepoImpl extends MariatestSpatialNullRepo { `multilinestring_col` = ${Fragment.encode(MariaTypes.multilinestring.nullable, row.multilinestringCol)}, `multipolygon_col` = ${Fragment.encode(MariaTypes.multipolygon.nullable, row.multipolygonCol)}, `geometrycollection_col` = ${Fragment.encode(MariaTypes.geometrycollection.nullable, row.geometrycollectionCol)} - where `id` = ${Fragment.encode(MariatestSpatialNullId.dbType, id)}""".update().runUnchecked(c) > 0 + where `id` = ${Fragment.encode(MariatestSpatialNullId.mariaType, id)}""".update().runUnchecked(c) > 0 } override def upsert(unsaved: MariatestSpatialNullRow)(using c: Connection): MariatestSpatialNullRow = { sql"""INSERT INTO `mariatest_spatial_null`(`id`, `geometry_col`, `point_col`, `linestring_col`, `polygon_col`, `multipoint_col`, `multilinestring_col`, `multipolygon_col`, `geometrycollection_col`) - VALUES (${Fragment.encode(MariatestSpatialNullId.dbType, unsaved.id)}, ${Fragment.encode(MariaTypes.geometry.nullable, unsaved.geometryCol)}, ${Fragment.encode(MariaTypes.point.nullable, unsaved.pointCol)}, ${Fragment.encode(MariaTypes.linestring.nullable, unsaved.linestringCol)}, ${Fragment.encode(MariaTypes.polygon.nullable, unsaved.polygonCol)}, ${Fragment.encode(MariaTypes.multipoint.nullable, unsaved.multipointCol)}, ${Fragment.encode(MariaTypes.multilinestring.nullable, unsaved.multilinestringCol)}, ${Fragment.encode(MariaTypes.multipolygon.nullable, unsaved.multipolygonCol)}, ${Fragment.encode(MariaTypes.geometrycollection.nullable, unsaved.geometrycollectionCol)}) + VALUES (${Fragment.encode(MariatestSpatialNullId.mariaType, unsaved.id)}, ${Fragment.encode(MariaTypes.geometry.nullable, unsaved.geometryCol)}, ${Fragment.encode(MariaTypes.point.nullable, unsaved.pointCol)}, ${Fragment.encode(MariaTypes.linestring.nullable, unsaved.linestringCol)}, ${Fragment.encode(MariaTypes.polygon.nullable, unsaved.polygonCol)}, ${Fragment.encode(MariaTypes.multipoint.nullable, unsaved.multipointCol)}, ${Fragment.encode(MariaTypes.multilinestring.nullable, unsaved.multilinestringCol)}, ${Fragment.encode(MariaTypes.multipolygon.nullable, unsaved.multipolygonCol)}, ${Fragment.encode(MariaTypes.geometrycollection.nullable, unsaved.geometrycollectionCol)}) ON DUPLICATE KEY UPDATE `geometry_col` = VALUES(`geometry_col`), `point_col` = VALUES(`point_col`), `linestring_col` = VALUES(`linestring_col`), diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_spatial_null/MariatestSpatialNullRow.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_spatial_null/MariatestSpatialNullRow.scala index 58b7763d90..e0abac3f8a 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_spatial_null/MariatestSpatialNullRow.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_spatial_null/MariatestSpatialNullRow.scala @@ -104,5 +104,5 @@ case class MariatestSpatialNullRow( } object MariatestSpatialNullRow { - val `_rowParser`: RowParser[MariatestSpatialNullRow] = RowParsers.of(MariatestSpatialNullId.dbType, MariaTypes.geometry.nullable, MariaTypes.point.nullable, MariaTypes.linestring.nullable, MariaTypes.polygon.nullable, MariaTypes.multipoint.nullable, MariaTypes.multilinestring.nullable, MariaTypes.multipolygon.nullable, MariaTypes.geometrycollection.nullable)(MariatestSpatialNullRow.apply)(row => Array[Any](row.id, row.geometryCol, row.pointCol, row.linestringCol, row.polygonCol, row.multipointCol, row.multilinestringCol, row.multipolygonCol, row.geometrycollectionCol)) + val `_rowParser`: RowParser[MariatestSpatialNullRow] = RowParsers.of(MariatestSpatialNullId.mariaType, MariaTypes.geometry.nullable, MariaTypes.point.nullable, MariaTypes.linestring.nullable, MariaTypes.polygon.nullable, MariaTypes.multipoint.nullable, MariaTypes.multilinestring.nullable, MariaTypes.multipolygon.nullable, MariaTypes.geometrycollection.nullable)(MariatestSpatialNullRow.apply)(row => Array[Any](row.id, row.geometryCol, row.pointCol, row.linestringCol, row.polygonCol, row.multipointCol, row.multilinestringCol, row.multipolygonCol, row.geometrycollectionCol)) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueFields.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueFields.scala index cbbf02ab65..bac961d41d 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueFields.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueFields.scala @@ -15,8 +15,9 @@ import dev.typr.foundations.scala.SqlExpr import dev.typr.foundations.scala.SqlExpr.Field import dev.typr.foundations.scala.SqlExpr.IdField import dev.typr.foundations.scala.TupleExpr4 +import testdb.userdefined.Email -class MariatestUniqueFields(val `_path`: java.util.List[Path]) extends TupleExpr4[MariatestUniqueId, String, String, String] with RelationStructure[MariatestUniqueFields, MariatestUniqueRow] with FieldsBase[MariatestUniqueRow] { +class MariatestUniqueFields(val `_path`: java.util.List[Path]) extends TupleExpr4[MariatestUniqueId, /* user-picked */ Email, String, String] with RelationStructure[MariatestUniqueFields, MariatestUniqueRow] with FieldsBase[MariatestUniqueRow] { def id: IdField[MariatestUniqueId, MariatestUniqueRow] = { new IdField[MariatestUniqueId, MariatestUniqueRow]( _path, @@ -25,19 +26,19 @@ class MariatestUniqueFields(val `_path`: java.util.List[Path]) extends TupleExpr None, None, (row, value) => row.copy(id = value), - MariatestUniqueId.dbType + MariatestUniqueId.mariaType ) } - def email: Field[String, MariatestUniqueRow] = { - new Field[String, MariatestUniqueRow]( + def email: Field[/* user-picked */ Email, MariatestUniqueRow] = { + new Field[/* user-picked */ Email, MariatestUniqueRow]( _path, "email", _.email, None, None, (row, value) => row.copy(email = value), - MariaTypes.varchar + Email.mariaType ) } @@ -73,7 +74,7 @@ class MariatestUniqueFields(val `_path`: java.util.List[Path]) extends TupleExpr override def `_1`: SqlExpr[MariatestUniqueId] = id - override def `_2`: SqlExpr[String] = email + override def `_2`: SqlExpr[/* user-picked */ Email] = email override def `_3`: SqlExpr[String] = code diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueId.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueId.scala index 27e751aac9..5c668ca384 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueId.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueId.scala @@ -16,5 +16,5 @@ case class MariatestUniqueId(@JsonValue value: Int) extends scala.AnyVal object MariatestUniqueId { given bijection: Bijection[MariatestUniqueId, Int] = Bijection.apply[MariatestUniqueId, Int](_.value)(MariatestUniqueId.apply) - given dbType: MariaType[MariatestUniqueId] = ScalaDbTypes.MariaTypes.int_.bimap(MariatestUniqueId.apply, _.value) + given mariaType: MariaType[MariatestUniqueId] = ScalaDbTypes.MariaTypes.int_.bimap(MariatestUniqueId.apply, _.value) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueRepo.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueRepo.scala index f7d04a11c2..f84f540470 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueRepo.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueRepo.scala @@ -9,6 +9,7 @@ import dev.typr.foundations.scala.DeleteBuilder import dev.typr.foundations.scala.SelectBuilder import dev.typr.foundations.scala.UpdateBuilder import java.sql.Connection +import testdb.userdefined.Email trait MariatestUniqueRepo { def delete: DeleteBuilder[MariatestUniqueFields, MariatestUniqueRow] @@ -36,7 +37,7 @@ trait MariatestUniqueRepo { category: String )(using c: Connection): Option[MariatestUniqueRow] - def selectByUniqueEmail(email: String)(using c: Connection): Option[MariatestUniqueRow] + def selectByUniqueEmail(email: /* user-picked */ Email)(using c: Connection): Option[MariatestUniqueRow] def update: UpdateBuilder[MariatestUniqueFields, MariatestUniqueRow] diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueRepoImpl.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueRepoImpl.scala index 82bd492526..eaf07be14c 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueRepoImpl.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueRepoImpl.scala @@ -13,22 +13,23 @@ import dev.typr.foundations.scala.SelectBuilder import dev.typr.foundations.scala.UpdateBuilder import java.sql.Connection import scala.collection.mutable.ListBuffer +import testdb.userdefined.Email import dev.typr.foundations.scala.Fragment.sql class MariatestUniqueRepoImpl extends MariatestUniqueRepo { override def delete: DeleteBuilder[MariatestUniqueFields, MariatestUniqueRow] = DeleteBuilder.of("`mariatest_unique`", MariatestUniqueFields.structure, Dialect.MARIADB) - override def deleteById(id: MariatestUniqueId)(using c: Connection): Boolean = sql"delete from `mariatest_unique` where `id` = ${Fragment.encode(MariatestUniqueId.dbType, id)}".update().runUnchecked(c) > 0 + override def deleteById(id: MariatestUniqueId)(using c: Connection): Boolean = sql"delete from `mariatest_unique` where `id` = ${Fragment.encode(MariatestUniqueId.mariaType, id)}".update().runUnchecked(c) > 0 override def deleteByIds(ids: Array[MariatestUniqueId])(using c: Connection): Int = { val fragments: ListBuffer[Fragment] = ListBuffer() - ids.foreach { id => fragments.addOne(Fragment.encode(MariatestUniqueId.dbType, id)): @scala.annotation.nowarn } + ids.foreach { id => fragments.addOne(Fragment.encode(MariatestUniqueId.mariaType, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("delete from `mariatest_unique` where `id` in ("), Fragment.comma(fragments), Fragment.lit(")")).update().runUnchecked(c) } override def insert(unsaved: MariatestUniqueRow)(using c: Connection): MariatestUniqueRow = { sql"""insert into `mariatest_unique`(`email`, `code`, `category`) - values (${Fragment.encode(MariaTypes.varchar, unsaved.email)}, ${Fragment.encode(MariaTypes.varchar, unsaved.code)}, ${Fragment.encode(MariaTypes.varchar, unsaved.category)}) + values (${Fragment.encode(Email.mariaType, unsaved.email)}, ${Fragment.encode(MariaTypes.varchar, unsaved.code)}, ${Fragment.encode(MariaTypes.varchar, unsaved.category)}) RETURNING `id`, `email`, `code`, `category` """ .updateReturning(MariatestUniqueRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -38,7 +39,7 @@ class MariatestUniqueRepoImpl extends MariatestUniqueRepo { val columns: ListBuffer[Fragment] = ListBuffer() val values: ListBuffer[Fragment] = ListBuffer() columns.addOne(Fragment.lit("`email`")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(MariaTypes.varchar, unsaved.email)}"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(Email.mariaType, unsaved.email)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit("`code`")): @scala.annotation.nowarn values.addOne(sql"${Fragment.encode(MariaTypes.varchar, unsaved.code)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit("`category`")): @scala.annotation.nowarn @@ -63,12 +64,12 @@ class MariatestUniqueRepoImpl extends MariatestUniqueRepo { override def selectById(id: MariatestUniqueId)(using c: Connection): Option[MariatestUniqueRow] = { sql"""select `id`, `email`, `code`, `category` from `mariatest_unique` - where `id` = ${Fragment.encode(MariatestUniqueId.dbType, id)}""".query(MariatestUniqueRow.`_rowParser`.first()).runUnchecked(c) + where `id` = ${Fragment.encode(MariatestUniqueId.mariaType, id)}""".query(MariatestUniqueRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(ids: Array[MariatestUniqueId])(using c: Connection): List[MariatestUniqueRow] = { val fragments: ListBuffer[Fragment] = ListBuffer() - ids.foreach { id => fragments.addOne(Fragment.encode(MariatestUniqueId.dbType, id)): @scala.annotation.nowarn } + ids.foreach { id => fragments.addOne(Fragment.encode(MariatestUniqueId.mariaType, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("select `id`, `email`, `code`, `category` from `mariatest_unique` where `id` in ("), Fragment.comma(fragments), Fragment.lit(")")).query(MariatestUniqueRow.`_rowParser`.all()).runUnchecked(c) } @@ -88,10 +89,10 @@ class MariatestUniqueRepoImpl extends MariatestUniqueRepo { """.query(MariatestUniqueRow.`_rowParser`.first()).runUnchecked(c) } - override def selectByUniqueEmail(email: String)(using c: Connection): Option[MariatestUniqueRow] = { + override def selectByUniqueEmail(email: /* user-picked */ Email)(using c: Connection): Option[MariatestUniqueRow] = { sql"""select `id`, `email`, `code`, `category` from `mariatest_unique` - where `email` = ${Fragment.encode(MariaTypes.varchar, email)} + where `email` = ${Fragment.encode(Email.mariaType, email)} """.query(MariatestUniqueRow.`_rowParser`.first()).runUnchecked(c) } @@ -100,15 +101,15 @@ class MariatestUniqueRepoImpl extends MariatestUniqueRepo { override def update(row: MariatestUniqueRow)(using c: Connection): Boolean = { val id: MariatestUniqueId = row.id return sql"""update `mariatest_unique` - set `email` = ${Fragment.encode(MariaTypes.varchar, row.email)}, + set `email` = ${Fragment.encode(Email.mariaType, row.email)}, `code` = ${Fragment.encode(MariaTypes.varchar, row.code)}, `category` = ${Fragment.encode(MariaTypes.varchar, row.category)} - where `id` = ${Fragment.encode(MariatestUniqueId.dbType, id)}""".update().runUnchecked(c) > 0 + where `id` = ${Fragment.encode(MariatestUniqueId.mariaType, id)}""".update().runUnchecked(c) > 0 } override def upsert(unsaved: MariatestUniqueRow)(using c: Connection): MariatestUniqueRow = { sql"""INSERT INTO `mariatest_unique`(`id`, `email`, `code`, `category`) - VALUES (${Fragment.encode(MariatestUniqueId.dbType, unsaved.id)}, ${Fragment.encode(MariaTypes.varchar, unsaved.email)}, ${Fragment.encode(MariaTypes.varchar, unsaved.code)}, ${Fragment.encode(MariaTypes.varchar, unsaved.category)}) + VALUES (${Fragment.encode(MariatestUniqueId.mariaType, unsaved.id)}, ${Fragment.encode(Email.mariaType, unsaved.email)}, ${Fragment.encode(MariaTypes.varchar, unsaved.code)}, ${Fragment.encode(MariaTypes.varchar, unsaved.category)}) ON DUPLICATE KEY UPDATE `email` = VALUES(`email`), `code` = VALUES(`code`), `category` = VALUES(`category`) diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueRepoMock.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueRepoMock.scala index 2714893dd0..dd853ead94 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueRepoMock.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueRepoMock.scala @@ -16,6 +16,7 @@ import dev.typr.foundations.scala.UpdateBuilderMock import dev.typr.foundations.scala.UpdateParams import java.lang.RuntimeException import java.sql.Connection +import testdb.userdefined.Email case class MariatestUniqueRepoMock( toRow: MariatestUniqueRowUnsaved => MariatestUniqueRow, @@ -58,7 +59,7 @@ case class MariatestUniqueRepoMock( category: String )(using c: Connection): Option[MariatestUniqueRow] = map.values.toList.find(v => (code == v.code) && (category == v.category)) - override def selectByUniqueEmail(email: String)(using c: Connection): Option[MariatestUniqueRow] = map.values.toList.find(v => (email == v.email)) + override def selectByUniqueEmail(email: /* user-picked */ Email)(using c: Connection): Option[MariatestUniqueRow] = map.values.toList.find(v => (email == v.email)) override def update: UpdateBuilder[MariatestUniqueFields, MariatestUniqueRow] = UpdateBuilderMock(MariatestUniqueFields.structure, () => map.values.toList, UpdateParams.empty(), row => row) diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueRow.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueRow.scala index f0ed50a6c1..9e0602626d 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueRow.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueRow.scala @@ -9,6 +9,7 @@ import dev.typr.foundations.MariaTypes import dev.typr.foundations.Tuple.Tuple4 import dev.typr.foundations.scala.RowParser import dev.typr.foundations.scala.RowParsers +import testdb.userdefined.Email /** Table: mariatest_unique * Primary key: id @@ -19,17 +20,17 @@ case class MariatestUniqueRow( */ id: MariatestUniqueId, /** */ - email: String, + email: /* user-picked */ Email, /** */ code: String, /** */ category: String -) extends Tuple4[MariatestUniqueId, String, String, String] { +) extends Tuple4[MariatestUniqueId, /* user-picked */ Email, String, String] { def toUnsavedRow: MariatestUniqueRowUnsaved = new MariatestUniqueRowUnsaved(email, code, category) override def `_1`: MariatestUniqueId = id - override def `_2`: String = email + override def `_2`: /* user-picked */ Email = email override def `_3`: String = code @@ -37,5 +38,5 @@ case class MariatestUniqueRow( } object MariatestUniqueRow { - val `_rowParser`: RowParser[MariatestUniqueRow] = RowParsers.of(MariatestUniqueId.dbType, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.varchar)(MariatestUniqueRow.apply)(row => Array[Any](row.id, row.email, row.code, row.category)) + val `_rowParser`: RowParser[MariatestUniqueRow] = RowParsers.of(MariatestUniqueId.mariaType, Email.mariaType, MariaTypes.varchar, MariaTypes.varchar)(MariatestUniqueRow.apply)(row => Array[Any](row.id, row.email, row.code, row.category)) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueRowUnsaved.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueRowUnsaved.scala index 7b112910de..dbb5c58c5a 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueRowUnsaved.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/mariatest_unique/MariatestUniqueRowUnsaved.scala @@ -5,12 +5,12 @@ */ package testdb.mariatest_unique - +import testdb.userdefined.Email /** This class corresponds to a row in table `mariatest_unique` which has not been persisted yet */ case class MariatestUniqueRowUnsaved( /** */ - email: String, + email: /* user-picked */ Email, /** */ code: String, /** */ diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/mariatestnull/MariatestnullFields.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/mariatestnull/MariatestnullFields.scala index b93d97a67b..7679f3a848 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/mariatestnull/MariatestnullFields.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/mariatestnull/MariatestnullFields.scala @@ -481,7 +481,7 @@ class MariatestnullFields(val `_path`: java.util.List[Path]) extends TupleExpr41 None, None, (row, value) => row.copy(setCol = value), - XYZSet.dbType + XYZSet.mariaType ) } diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/mariatestnull/MariatestnullRepoImpl.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/mariatestnull/MariatestnullRepoImpl.scala index 29b0faebbe..4d5a4d0f3c 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/mariatestnull/MariatestnullRepoImpl.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/mariatestnull/MariatestnullRepoImpl.scala @@ -23,7 +23,7 @@ class MariatestnullRepoImpl extends MariatestnullRepo { override def insert(unsaved: MariatestnullRow)(using c: Connection): MariatestnullRow = { sql"""insert into `mariatestnull`(`tinyint_col`, `smallint_col`, `mediumint_col`, `int_col`, `bigint_col`, `tinyint_u_col`, `smallint_u_col`, `mediumint_u_col`, `int_u_col`, `bigint_u_col`, `decimal_col`, `numeric_col`, `float_col`, `double_col`, `bool_col`, `bit_col`, `bit1_col`, `char_col`, `varchar_col`, `tinytext_col`, `text_col`, `mediumtext_col`, `longtext_col`, `binary_col`, `varbinary_col`, `tinyblob_col`, `blob_col`, `mediumblob_col`, `longblob_col`, `date_col`, `time_col`, `time_fsp_col`, `datetime_col`, `datetime_fsp_col`, `timestamp_col`, `timestamp_fsp_col`, `year_col`, `set_col`, `json_col`, `inet4_col`, `inet6_col`) - values (${Fragment.encode(ScalaDbTypes.MariaTypes.tinyint.nullable, unsaved.tinyintCol)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.smallint.nullable, unsaved.smallintCol)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.mediumint.nullable, unsaved.mediumintCol)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.int_.nullable, unsaved.intCol)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.bigint.nullable, unsaved.bigintCol)}, ${Fragment.encode(MariaTypes.tinyintUnsigned.nullable, unsaved.tinyintUCol)}, ${Fragment.encode(MariaTypes.smallintUnsigned.nullable, unsaved.smallintUCol)}, ${Fragment.encode(MariaTypes.mediumintUnsigned.nullable, unsaved.mediumintUCol)}, ${Fragment.encode(MariaTypes.intUnsigned.nullable, unsaved.intUCol)}, ${Fragment.encode(MariaTypes.bigintUnsigned.nullable, unsaved.bigintUCol)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric.nullable, unsaved.decimalCol)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric.nullable, unsaved.numericCol)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.float_.nullable, unsaved.floatCol)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.double_.nullable, unsaved.doubleCol)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.bool.nullable, unsaved.boolCol)}, ${Fragment.encode(MariaTypes.bit.nullable, unsaved.bitCol)}, ${Fragment.encode(MariaTypes.bit.nullable, unsaved.bit1Col)}, ${Fragment.encode(MariaTypes.char_.nullable, unsaved.charCol)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.varcharCol)}, ${Fragment.encode(MariaTypes.tinytext.nullable, unsaved.tinytextCol)}, ${Fragment.encode(MariaTypes.text.nullable, unsaved.textCol)}, ${Fragment.encode(MariaTypes.mediumtext.nullable, unsaved.mediumtextCol)}, ${Fragment.encode(MariaTypes.longtext.nullable, unsaved.longtextCol)}, ${Fragment.encode(MariaTypes.binary.nullable, unsaved.binaryCol)}, ${Fragment.encode(MariaTypes.varbinary.nullable, unsaved.varbinaryCol)}, ${Fragment.encode(MariaTypes.tinyblob.nullable, unsaved.tinyblobCol)}, ${Fragment.encode(MariaTypes.blob.nullable, unsaved.blobCol)}, ${Fragment.encode(MariaTypes.mediumblob.nullable, unsaved.mediumblobCol)}, ${Fragment.encode(MariaTypes.longblob.nullable, unsaved.longblobCol)}, ${Fragment.encode(MariaTypes.date.nullable, unsaved.dateCol)}, ${Fragment.encode(MariaTypes.time.nullable, unsaved.timeCol)}, ${Fragment.encode(MariaTypes.time.nullable, unsaved.timeFspCol)}, ${Fragment.encode(MariaTypes.datetime.nullable, unsaved.datetimeCol)}, ${Fragment.encode(MariaTypes.datetime.nullable, unsaved.datetimeFspCol)}, ${Fragment.encode(MariaTypes.timestamp.nullable, unsaved.timestampCol)}, ${Fragment.encode(MariaTypes.timestamp.nullable, unsaved.timestampFspCol)}, ${Fragment.encode(MariaTypes.year.nullable, unsaved.yearCol)}, ${Fragment.encode(XYZSet.dbType.nullable, unsaved.setCol)}, ${Fragment.encode(MariaTypes.json.nullable, unsaved.jsonCol)}, ${Fragment.encode(MariaTypes.inet4.nullable, unsaved.inet4Col)}, ${Fragment.encode(MariaTypes.inet6.nullable, unsaved.inet6Col)}) + values (${Fragment.encode(ScalaDbTypes.MariaTypes.tinyint.nullable, unsaved.tinyintCol)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.smallint.nullable, unsaved.smallintCol)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.mediumint.nullable, unsaved.mediumintCol)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.int_.nullable, unsaved.intCol)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.bigint.nullable, unsaved.bigintCol)}, ${Fragment.encode(MariaTypes.tinyintUnsigned.nullable, unsaved.tinyintUCol)}, ${Fragment.encode(MariaTypes.smallintUnsigned.nullable, unsaved.smallintUCol)}, ${Fragment.encode(MariaTypes.mediumintUnsigned.nullable, unsaved.mediumintUCol)}, ${Fragment.encode(MariaTypes.intUnsigned.nullable, unsaved.intUCol)}, ${Fragment.encode(MariaTypes.bigintUnsigned.nullable, unsaved.bigintUCol)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric.nullable, unsaved.decimalCol)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric.nullable, unsaved.numericCol)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.float_.nullable, unsaved.floatCol)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.double_.nullable, unsaved.doubleCol)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.bool.nullable, unsaved.boolCol)}, ${Fragment.encode(MariaTypes.bit.nullable, unsaved.bitCol)}, ${Fragment.encode(MariaTypes.bit.nullable, unsaved.bit1Col)}, ${Fragment.encode(MariaTypes.char_.nullable, unsaved.charCol)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.varcharCol)}, ${Fragment.encode(MariaTypes.tinytext.nullable, unsaved.tinytextCol)}, ${Fragment.encode(MariaTypes.text.nullable, unsaved.textCol)}, ${Fragment.encode(MariaTypes.mediumtext.nullable, unsaved.mediumtextCol)}, ${Fragment.encode(MariaTypes.longtext.nullable, unsaved.longtextCol)}, ${Fragment.encode(MariaTypes.binary.nullable, unsaved.binaryCol)}, ${Fragment.encode(MariaTypes.varbinary.nullable, unsaved.varbinaryCol)}, ${Fragment.encode(MariaTypes.tinyblob.nullable, unsaved.tinyblobCol)}, ${Fragment.encode(MariaTypes.blob.nullable, unsaved.blobCol)}, ${Fragment.encode(MariaTypes.mediumblob.nullable, unsaved.mediumblobCol)}, ${Fragment.encode(MariaTypes.longblob.nullable, unsaved.longblobCol)}, ${Fragment.encode(MariaTypes.date.nullable, unsaved.dateCol)}, ${Fragment.encode(MariaTypes.time.nullable, unsaved.timeCol)}, ${Fragment.encode(MariaTypes.time.nullable, unsaved.timeFspCol)}, ${Fragment.encode(MariaTypes.datetime.nullable, unsaved.datetimeCol)}, ${Fragment.encode(MariaTypes.datetime.nullable, unsaved.datetimeFspCol)}, ${Fragment.encode(MariaTypes.timestamp.nullable, unsaved.timestampCol)}, ${Fragment.encode(MariaTypes.timestamp.nullable, unsaved.timestampFspCol)}, ${Fragment.encode(MariaTypes.year.nullable, unsaved.yearCol)}, ${Fragment.encode(XYZSet.mariaType.nullable, unsaved.setCol)}, ${Fragment.encode(MariaTypes.json.nullable, unsaved.jsonCol)}, ${Fragment.encode(MariaTypes.inet4.nullable, unsaved.inet4Col)}, ${Fragment.encode(MariaTypes.inet6.nullable, unsaved.inet6Col)}) RETURNING `tinyint_col`, `smallint_col`, `mediumint_col`, `int_col`, `bigint_col`, `tinyint_u_col`, `smallint_u_col`, `mediumint_u_col`, `int_u_col`, `bigint_u_col`, `decimal_col`, `numeric_col`, `float_col`, `double_col`, `bool_col`, `bit_col`, `bit1_col`, `char_col`, `varchar_col`, `tinytext_col`, `text_col`, `mediumtext_col`, `longtext_col`, `binary_col`, `varbinary_col`, `tinyblob_col`, `blob_col`, `mediumblob_col`, `longblob_col`, `date_col`, `time_col`, `time_fsp_col`, `datetime_col`, `datetime_fsp_col`, `timestamp_col`, `timestamp_fsp_col`, `year_col`, `set_col`, `json_col`, `inet4_col`, `inet6_col` """ .updateReturning(MariatestnullRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -182,7 +182,7 @@ class MariatestnullRepoImpl extends MariatestnullRepo { ); unsaved.setCol.visit( { }, - value => { columns.addOne(Fragment.lit("`set_col`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(XYZSet.dbType.nullable, value)}"): @scala.annotation.nowarn } + value => { columns.addOne(Fragment.lit("`set_col`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(XYZSet.mariaType.nullable, value)}"): @scala.annotation.nowarn } ); unsaved.jsonCol.visit( { }, diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/mariatestnull/MariatestnullRow.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/mariatestnull/MariatestnullRow.scala index b8a22bfcda..4a29058c18 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/mariatestnull/MariatestnullRow.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/mariatestnull/MariatestnullRow.scala @@ -367,5 +367,5 @@ case class MariatestnullRow( } object MariatestnullRow { - val `_rowParser`: RowParser[MariatestnullRow] = RowParsers.of(ScalaDbTypes.MariaTypes.tinyint.nullable, ScalaDbTypes.MariaTypes.smallint.nullable, ScalaDbTypes.MariaTypes.mediumint.nullable, ScalaDbTypes.MariaTypes.int_.nullable, ScalaDbTypes.MariaTypes.bigint.nullable, MariaTypes.tinyintUnsigned.nullable, MariaTypes.smallintUnsigned.nullable, MariaTypes.mediumintUnsigned.nullable, MariaTypes.intUnsigned.nullable, MariaTypes.bigintUnsigned.nullable, ScalaDbTypes.MariaTypes.numeric.nullable, ScalaDbTypes.MariaTypes.numeric.nullable, ScalaDbTypes.MariaTypes.float_.nullable, ScalaDbTypes.MariaTypes.double_.nullable, ScalaDbTypes.MariaTypes.bool.nullable, MariaTypes.bit.nullable, MariaTypes.bit.nullable, MariaTypes.char_.nullable, MariaTypes.varchar.nullable, MariaTypes.tinytext.nullable, MariaTypes.text.nullable, MariaTypes.mediumtext.nullable, MariaTypes.longtext.nullable, MariaTypes.binary.nullable, MariaTypes.varbinary.nullable, MariaTypes.tinyblob.nullable, MariaTypes.blob.nullable, MariaTypes.mediumblob.nullable, MariaTypes.longblob.nullable, MariaTypes.date.nullable, MariaTypes.time.nullable, MariaTypes.time.nullable, MariaTypes.datetime.nullable, MariaTypes.datetime.nullable, MariaTypes.timestamp.nullable, MariaTypes.timestamp.nullable, MariaTypes.year.nullable, XYZSet.dbType.nullable, MariaTypes.json.nullable, MariaTypes.inet4.nullable, MariaTypes.inet6.nullable)(MariatestnullRow.apply)(row => Array[Any](row.tinyintCol, row.smallintCol, row.mediumintCol, row.intCol, row.bigintCol, row.tinyintUCol, row.smallintUCol, row.mediumintUCol, row.intUCol, row.bigintUCol, row.decimalCol, row.numericCol, row.floatCol, row.doubleCol, row.boolCol, row.bitCol, row.bit1Col, row.charCol, row.varcharCol, row.tinytextCol, row.textCol, row.mediumtextCol, row.longtextCol, row.binaryCol, row.varbinaryCol, row.tinyblobCol, row.blobCol, row.mediumblobCol, row.longblobCol, row.dateCol, row.timeCol, row.timeFspCol, row.datetimeCol, row.datetimeFspCol, row.timestampCol, row.timestampFspCol, row.yearCol, row.setCol, row.jsonCol, row.inet4Col, row.inet6Col)) + val `_rowParser`: RowParser[MariatestnullRow] = RowParsers.of(ScalaDbTypes.MariaTypes.tinyint.nullable, ScalaDbTypes.MariaTypes.smallint.nullable, ScalaDbTypes.MariaTypes.mediumint.nullable, ScalaDbTypes.MariaTypes.int_.nullable, ScalaDbTypes.MariaTypes.bigint.nullable, MariaTypes.tinyintUnsigned.nullable, MariaTypes.smallintUnsigned.nullable, MariaTypes.mediumintUnsigned.nullable, MariaTypes.intUnsigned.nullable, MariaTypes.bigintUnsigned.nullable, ScalaDbTypes.MariaTypes.numeric.nullable, ScalaDbTypes.MariaTypes.numeric.nullable, ScalaDbTypes.MariaTypes.float_.nullable, ScalaDbTypes.MariaTypes.double_.nullable, ScalaDbTypes.MariaTypes.bool.nullable, MariaTypes.bit.nullable, MariaTypes.bit.nullable, MariaTypes.char_.nullable, MariaTypes.varchar.nullable, MariaTypes.tinytext.nullable, MariaTypes.text.nullable, MariaTypes.mediumtext.nullable, MariaTypes.longtext.nullable, MariaTypes.binary.nullable, MariaTypes.varbinary.nullable, MariaTypes.tinyblob.nullable, MariaTypes.blob.nullable, MariaTypes.mediumblob.nullable, MariaTypes.longblob.nullable, MariaTypes.date.nullable, MariaTypes.time.nullable, MariaTypes.time.nullable, MariaTypes.datetime.nullable, MariaTypes.datetime.nullable, MariaTypes.timestamp.nullable, MariaTypes.timestamp.nullable, MariaTypes.year.nullable, XYZSet.mariaType.nullable, MariaTypes.json.nullable, MariaTypes.inet4.nullable, MariaTypes.inet6.nullable)(MariatestnullRow.apply)(row => Array[Any](row.tinyintCol, row.smallintCol, row.mediumintCol, row.intCol, row.bigintCol, row.tinyintUCol, row.smallintUCol, row.mediumintUCol, row.intUCol, row.bigintUCol, row.decimalCol, row.numericCol, row.floatCol, row.doubleCol, row.boolCol, row.bitCol, row.bit1Col, row.charCol, row.varcharCol, row.tinytextCol, row.textCol, row.mediumtextCol, row.longtextCol, row.binaryCol, row.varbinaryCol, row.tinyblobCol, row.blobCol, row.mediumblobCol, row.longblobCol, row.dateCol, row.timeCol, row.timeFspCol, row.datetimeCol, row.datetimeFspCol, row.timestampCol, row.timestampFspCol, row.yearCol, row.setCol, row.jsonCol, row.inet4Col, row.inet6Col)) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/order_details/OrderDetailsSqlRepoImpl.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/order_details/OrderDetailsSqlRepoImpl.scala index 4e22855777..f1e9de6650 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/order_details/OrderDetailsSqlRepoImpl.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/order_details/OrderDetailsSqlRepoImpl.scala @@ -32,7 +32,7 @@ class OrderDetailsSqlRepoImpl extends OrderDetailsSqlRepo { oi.line_total FROM orders o JOIN order_items oi ON o.order_id = oi.order_id - WHERE o.order_id = ${Fragment.encode(OrdersId.dbType, orderId)} + WHERE o.order_id = ${Fragment.encode(OrdersId.mariaType, orderId)} """.query(OrderDetailsSqlRow.`_rowParser`.all()).runUnchecked(c) } } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/order_details/OrderDetailsSqlRow.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/order_details/OrderDetailsSqlRow.scala index 54208521f4..6dc65efe53 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/order_details/OrderDetailsSqlRow.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/order_details/OrderDetailsSqlRow.scala @@ -90,5 +90,5 @@ case class OrderDetailsSqlRow( } object OrderDetailsSqlRow { - val `_rowParser`: RowParser[OrderDetailsSqlRow] = RowParsers.of(OrdersId.dbType, MariaTypes.varchar, MariaTypes.text, MariaTypes.text, ScalaDbTypes.MariaTypes.numeric, ScalaDbTypes.MariaTypes.numeric, ScalaDbTypes.MariaTypes.numeric, ScalaDbTypes.MariaTypes.numeric, ScalaDbTypes.MariaTypes.numeric, MariaTypes.datetime, OrderItemsId.dbType, ProductsId.dbType, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.smallintUnsigned, ScalaDbTypes.MariaTypes.numeric, ScalaDbTypes.MariaTypes.numeric)(OrderDetailsSqlRow.apply)(row => Array[Any](row.orderId, row.orderNumber, row.orderStatus, row.paymentStatus, row.subtotal, row.shippingCost, row.taxAmount, row.discountAmount, row.totalAmount, row.orderedAt, row.itemId, row.productId, row.sku, row.productName, row.quantity, row.unitPrice, row.lineTotal)) + val `_rowParser`: RowParser[OrderDetailsSqlRow] = RowParsers.of(OrdersId.mariaType, MariaTypes.varchar, MariaTypes.text, MariaTypes.text, ScalaDbTypes.MariaTypes.numeric, ScalaDbTypes.MariaTypes.numeric, ScalaDbTypes.MariaTypes.numeric, ScalaDbTypes.MariaTypes.numeric, ScalaDbTypes.MariaTypes.numeric, MariaTypes.datetime, OrderItemsId.mariaType, ProductsId.mariaType, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.smallintUnsigned, ScalaDbTypes.MariaTypes.numeric, ScalaDbTypes.MariaTypes.numeric)(OrderDetailsSqlRow.apply)(row => Array[Any](row.orderId, row.orderNumber, row.orderStatus, row.paymentStatus, row.subtotal, row.shippingCost, row.taxAmount, row.discountAmount, row.totalAmount, row.orderedAt, row.itemId, row.productId, row.sku, row.productName, row.quantity, row.unitPrice, row.lineTotal)) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/order_history/OrderHistoryFields.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/order_history/OrderHistoryFields.scala index 00b146b901..c87be1682f 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/order_history/OrderHistoryFields.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/order_history/OrderHistoryFields.scala @@ -32,7 +32,7 @@ class OrderHistoryFields(val `_path`: java.util.List[Path]) extends TupleExpr8[O None, None, (row, value) => row.copy(historyId = value), - OrderHistoryId.dbType + OrderHistoryId.mariaType ) } @@ -44,7 +44,7 @@ class OrderHistoryFields(val `_path`: java.util.List[Path]) extends TupleExpr8[O None, None, (row, value) => row.copy(orderId = value), - OrdersId.dbType + OrdersId.mariaType ) } diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/order_history/OrderHistoryId.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/order_history/OrderHistoryId.scala index 6748da54dd..9686367351 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/order_history/OrderHistoryId.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/order_history/OrderHistoryId.scala @@ -17,5 +17,5 @@ case class OrderHistoryId(@JsonValue value: Uint8) extends scala.AnyVal object OrderHistoryId { given bijection: Bijection[OrderHistoryId, Uint8] = Bijection.apply[OrderHistoryId, Uint8](_.value)(OrderHistoryId.apply) - given dbType: MariaType[OrderHistoryId] = MariaTypes.bigintUnsigned.bimap(OrderHistoryId.apply, _.value) + given mariaType: MariaType[OrderHistoryId] = MariaTypes.bigintUnsigned.bimap(OrderHistoryId.apply, _.value) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/order_history/OrderHistoryRepoImpl.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/order_history/OrderHistoryRepoImpl.scala index 8a1b25b1a5..ce8c222401 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/order_history/OrderHistoryRepoImpl.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/order_history/OrderHistoryRepoImpl.scala @@ -20,17 +20,17 @@ import dev.typr.foundations.scala.Fragment.sql class OrderHistoryRepoImpl extends OrderHistoryRepo { override def delete: DeleteBuilder[OrderHistoryFields, OrderHistoryRow] = DeleteBuilder.of("`order_history`", OrderHistoryFields.structure, Dialect.MARIADB) - override def deleteById(historyId: OrderHistoryId)(using c: Connection): Boolean = sql"delete from `order_history` where `history_id` = ${Fragment.encode(OrderHistoryId.dbType, historyId)}".update().runUnchecked(c) > 0 + override def deleteById(historyId: OrderHistoryId)(using c: Connection): Boolean = sql"delete from `order_history` where `history_id` = ${Fragment.encode(OrderHistoryId.mariaType, historyId)}".update().runUnchecked(c) > 0 override def deleteByIds(historyIds: Array[OrderHistoryId])(using c: Connection): Int = { val fragments: ListBuffer[Fragment] = ListBuffer() - historyIds.foreach { id => fragments.addOne(Fragment.encode(OrderHistoryId.dbType, id)): @scala.annotation.nowarn } + historyIds.foreach { id => fragments.addOne(Fragment.encode(OrderHistoryId.mariaType, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("delete from `order_history` where `history_id` in ("), Fragment.comma(fragments), Fragment.lit(")")).update().runUnchecked(c) } override def insert(unsaved: OrderHistoryRow)(using c: Connection): OrderHistoryRow = { sql"""insert into `order_history`(`order_id`, `previous_status`, `new_status`, `changed_by`, `change_reason`, `metadata`, `created_at`) - values (${Fragment.encode(OrdersId.dbType, unsaved.orderId)}, ${Fragment.encode(MariaTypes.text.nullable, unsaved.previousStatus)}, ${Fragment.encode(MariaTypes.text, unsaved.newStatus)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.changedBy)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.changeReason)}, ${Fragment.encode(MariaTypes.json.nullable, unsaved.metadata)}, ${Fragment.encode(MariaTypes.datetime, unsaved.createdAt)}) + values (${Fragment.encode(OrdersId.mariaType, unsaved.orderId)}, ${Fragment.encode(MariaTypes.text.nullable, unsaved.previousStatus)}, ${Fragment.encode(MariaTypes.text, unsaved.newStatus)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.changedBy)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.changeReason)}, ${Fragment.encode(MariaTypes.json.nullable, unsaved.metadata)}, ${Fragment.encode(MariaTypes.datetime, unsaved.createdAt)}) RETURNING `history_id`, `order_id`, `previous_status`, `new_status`, `changed_by`, `change_reason`, `metadata`, `created_at` """ .updateReturning(OrderHistoryRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -40,7 +40,7 @@ class OrderHistoryRepoImpl extends OrderHistoryRepo { val columns: ListBuffer[Fragment] = ListBuffer() val values: ListBuffer[Fragment] = ListBuffer() columns.addOne(Fragment.lit("`order_id`")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(OrdersId.dbType, unsaved.orderId)}"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(OrdersId.mariaType, unsaved.orderId)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit("`new_status`")): @scala.annotation.nowarn values.addOne(sql"${Fragment.encode(MariaTypes.text, unsaved.newStatus)}"): @scala.annotation.nowarn unsaved.previousStatus.visit( @@ -83,12 +83,12 @@ class OrderHistoryRepoImpl extends OrderHistoryRepo { override def selectById(historyId: OrderHistoryId)(using c: Connection): Option[OrderHistoryRow] = { sql"""select `history_id`, `order_id`, `previous_status`, `new_status`, `changed_by`, `change_reason`, `metadata`, `created_at` from `order_history` - where `history_id` = ${Fragment.encode(OrderHistoryId.dbType, historyId)}""".query(OrderHistoryRow.`_rowParser`.first()).runUnchecked(c) + where `history_id` = ${Fragment.encode(OrderHistoryId.mariaType, historyId)}""".query(OrderHistoryRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(historyIds: Array[OrderHistoryId])(using c: Connection): List[OrderHistoryRow] = { val fragments: ListBuffer[Fragment] = ListBuffer() - historyIds.foreach { id => fragments.addOne(Fragment.encode(OrderHistoryId.dbType, id)): @scala.annotation.nowarn } + historyIds.foreach { id => fragments.addOne(Fragment.encode(OrderHistoryId.mariaType, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("select `history_id`, `order_id`, `previous_status`, `new_status`, `changed_by`, `change_reason`, `metadata`, `created_at` from `order_history` where `history_id` in ("), Fragment.comma(fragments), Fragment.lit(")")).query(OrderHistoryRow.`_rowParser`.all()).runUnchecked(c) } @@ -103,19 +103,19 @@ class OrderHistoryRepoImpl extends OrderHistoryRepo { override def update(row: OrderHistoryRow)(using c: Connection): Boolean = { val historyId: OrderHistoryId = row.historyId return sql"""update `order_history` - set `order_id` = ${Fragment.encode(OrdersId.dbType, row.orderId)}, + set `order_id` = ${Fragment.encode(OrdersId.mariaType, row.orderId)}, `previous_status` = ${Fragment.encode(MariaTypes.text.nullable, row.previousStatus)}, `new_status` = ${Fragment.encode(MariaTypes.text, row.newStatus)}, `changed_by` = ${Fragment.encode(MariaTypes.varchar.nullable, row.changedBy)}, `change_reason` = ${Fragment.encode(MariaTypes.varchar.nullable, row.changeReason)}, `metadata` = ${Fragment.encode(MariaTypes.json.nullable, row.metadata)}, `created_at` = ${Fragment.encode(MariaTypes.datetime, row.createdAt)} - where `history_id` = ${Fragment.encode(OrderHistoryId.dbType, historyId)}""".update().runUnchecked(c) > 0 + where `history_id` = ${Fragment.encode(OrderHistoryId.mariaType, historyId)}""".update().runUnchecked(c) > 0 } override def upsert(unsaved: OrderHistoryRow)(using c: Connection): OrderHistoryRow = { sql"""INSERT INTO `order_history`(`history_id`, `order_id`, `previous_status`, `new_status`, `changed_by`, `change_reason`, `metadata`, `created_at`) - VALUES (${Fragment.encode(OrderHistoryId.dbType, unsaved.historyId)}, ${Fragment.encode(OrdersId.dbType, unsaved.orderId)}, ${Fragment.encode(MariaTypes.text.nullable, unsaved.previousStatus)}, ${Fragment.encode(MariaTypes.text, unsaved.newStatus)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.changedBy)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.changeReason)}, ${Fragment.encode(MariaTypes.json.nullable, unsaved.metadata)}, ${Fragment.encode(MariaTypes.datetime, unsaved.createdAt)}) + VALUES (${Fragment.encode(OrderHistoryId.mariaType, unsaved.historyId)}, ${Fragment.encode(OrdersId.mariaType, unsaved.orderId)}, ${Fragment.encode(MariaTypes.text.nullable, unsaved.previousStatus)}, ${Fragment.encode(MariaTypes.text, unsaved.newStatus)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.changedBy)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.changeReason)}, ${Fragment.encode(MariaTypes.json.nullable, unsaved.metadata)}, ${Fragment.encode(MariaTypes.datetime, unsaved.createdAt)}) ON DUPLICATE KEY UPDATE `order_id` = VALUES(`order_id`), `previous_status` = VALUES(`previous_status`), `new_status` = VALUES(`new_status`), diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/order_history/OrderHistoryRow.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/order_history/OrderHistoryRow.scala index a3d620b76e..218cb6ea19 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/order_history/OrderHistoryRow.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/order_history/OrderHistoryRow.scala @@ -89,5 +89,5 @@ case class OrderHistoryRow( } object OrderHistoryRow { - val `_rowParser`: RowParser[OrderHistoryRow] = RowParsers.of(OrderHistoryId.dbType, OrdersId.dbType, MariaTypes.text.nullable, MariaTypes.text, MariaTypes.varchar.nullable, MariaTypes.varchar.nullable, MariaTypes.json.nullable, MariaTypes.datetime)(OrderHistoryRow.apply)(row => Array[Any](row.historyId, row.orderId, row.previousStatus, row.newStatus, row.changedBy, row.changeReason, row.metadata, row.createdAt)) + val `_rowParser`: RowParser[OrderHistoryRow] = RowParsers.of(OrderHistoryId.mariaType, OrdersId.mariaType, MariaTypes.text.nullable, MariaTypes.text, MariaTypes.varchar.nullable, MariaTypes.varchar.nullable, MariaTypes.json.nullable, MariaTypes.datetime)(OrderHistoryRow.apply)(row => Array[Any](row.historyId, row.orderId, row.previousStatus, row.newStatus, row.changedBy, row.changeReason, row.metadata, row.createdAt)) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/order_items/OrderItemsFields.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/order_items/OrderItemsFields.scala index 5bf913cfa8..659cecccfb 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/order_items/OrderItemsFields.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/order_items/OrderItemsFields.scala @@ -38,7 +38,7 @@ class OrderItemsFields(val `_path`: java.util.List[Path]) extends TupleExpr13[Or None, None, (row, value) => row.copy(itemId = value), - OrderItemsId.dbType + OrderItemsId.mariaType ) } @@ -50,7 +50,7 @@ class OrderItemsFields(val `_path`: java.util.List[Path]) extends TupleExpr13[Or None, None, (row, value) => row.copy(orderId = value), - OrdersId.dbType + OrdersId.mariaType ) } @@ -62,7 +62,7 @@ class OrderItemsFields(val `_path`: java.util.List[Path]) extends TupleExpr13[Or None, None, (row, value) => row.copy(productId = value), - ProductsId.dbType + ProductsId.mariaType ) } @@ -170,7 +170,7 @@ class OrderItemsFields(val `_path`: java.util.List[Path]) extends TupleExpr13[Or None, None, (row, value) => row.copy(warehouseId = value), - WarehousesId.dbType + WarehousesId.mariaType ) } diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/order_items/OrderItemsId.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/order_items/OrderItemsId.scala index 14deb4d1fa..0dd75a5d58 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/order_items/OrderItemsId.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/order_items/OrderItemsId.scala @@ -17,5 +17,5 @@ case class OrderItemsId(@JsonValue value: Uint8) extends scala.AnyVal object OrderItemsId { given bijection: Bijection[OrderItemsId, Uint8] = Bijection.apply[OrderItemsId, Uint8](_.value)(OrderItemsId.apply) - given dbType: MariaType[OrderItemsId] = MariaTypes.bigintUnsigned.bimap(OrderItemsId.apply, _.value) + given mariaType: MariaType[OrderItemsId] = MariaTypes.bigintUnsigned.bimap(OrderItemsId.apply, _.value) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/order_items/OrderItemsRepoImpl.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/order_items/OrderItemsRepoImpl.scala index 1281ce5ab8..0d562d056c 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/order_items/OrderItemsRepoImpl.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/order_items/OrderItemsRepoImpl.scala @@ -23,17 +23,17 @@ import dev.typr.foundations.scala.Fragment.sql class OrderItemsRepoImpl extends OrderItemsRepo { override def delete: DeleteBuilder[OrderItemsFields, OrderItemsRow] = DeleteBuilder.of("`order_items`", OrderItemsFields.structure, Dialect.MARIADB) - override def deleteById(itemId: OrderItemsId)(using c: Connection): Boolean = sql"delete from `order_items` where `item_id` = ${Fragment.encode(OrderItemsId.dbType, itemId)}".update().runUnchecked(c) > 0 + override def deleteById(itemId: OrderItemsId)(using c: Connection): Boolean = sql"delete from `order_items` where `item_id` = ${Fragment.encode(OrderItemsId.mariaType, itemId)}".update().runUnchecked(c) > 0 override def deleteByIds(itemIds: Array[OrderItemsId])(using c: Connection): Int = { val fragments: ListBuffer[Fragment] = ListBuffer() - itemIds.foreach { id => fragments.addOne(Fragment.encode(OrderItemsId.dbType, id)): @scala.annotation.nowarn } + itemIds.foreach { id => fragments.addOne(Fragment.encode(OrderItemsId.mariaType, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("delete from `order_items` where `item_id` in ("), Fragment.comma(fragments), Fragment.lit(")")).update().runUnchecked(c) } override def insert(unsaved: OrderItemsRow)(using c: Connection): OrderItemsRow = { sql"""insert into `order_items`(`order_id`, `product_id`, `sku`, `product_name`, `quantity`, `unit_price`, `discount_amount`, `tax_amount`, `line_total`, `fulfillment_status`, `warehouse_id`, `notes`) - values (${Fragment.encode(OrdersId.dbType, unsaved.orderId)}, ${Fragment.encode(ProductsId.dbType, unsaved.productId)}, ${Fragment.encode(MariaTypes.varchar, unsaved.sku)}, ${Fragment.encode(MariaTypes.varchar, unsaved.productName)}, ${Fragment.encode(MariaTypes.smallintUnsigned, unsaved.quantity)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.unitPrice)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.discountAmount)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.taxAmount)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.lineTotal)}, ${Fragment.encode(MariaTypes.text, unsaved.fulfillmentStatus)}, ${Fragment.encode(WarehousesId.dbType.nullable, unsaved.warehouseId)}, ${Fragment.encode(MariaTypes.tinytext.nullable, unsaved.notes)}) + values (${Fragment.encode(OrdersId.mariaType, unsaved.orderId)}, ${Fragment.encode(ProductsId.mariaType, unsaved.productId)}, ${Fragment.encode(MariaTypes.varchar, unsaved.sku)}, ${Fragment.encode(MariaTypes.varchar, unsaved.productName)}, ${Fragment.encode(MariaTypes.smallintUnsigned, unsaved.quantity)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.unitPrice)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.discountAmount)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.taxAmount)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.lineTotal)}, ${Fragment.encode(MariaTypes.text, unsaved.fulfillmentStatus)}, ${Fragment.encode(WarehousesId.mariaType.nullable, unsaved.warehouseId)}, ${Fragment.encode(MariaTypes.tinytext.nullable, unsaved.notes)}) RETURNING `item_id`, `order_id`, `product_id`, `sku`, `product_name`, `quantity`, `unit_price`, `discount_amount`, `tax_amount`, `line_total`, `fulfillment_status`, `warehouse_id`, `notes` """ .updateReturning(OrderItemsRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -43,9 +43,9 @@ class OrderItemsRepoImpl extends OrderItemsRepo { val columns: ListBuffer[Fragment] = ListBuffer() val values: ListBuffer[Fragment] = ListBuffer() columns.addOne(Fragment.lit("`order_id`")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(OrdersId.dbType, unsaved.orderId)}"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(OrdersId.mariaType, unsaved.orderId)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit("`product_id`")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(ProductsId.dbType, unsaved.productId)}"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(ProductsId.mariaType, unsaved.productId)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit("`sku`")): @scala.annotation.nowarn values.addOne(sql"${Fragment.encode(MariaTypes.varchar, unsaved.sku)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit("`product_name`")): @scala.annotation.nowarn @@ -70,7 +70,7 @@ class OrderItemsRepoImpl extends OrderItemsRepo { ); unsaved.warehouseId.visit( { }, - value => { columns.addOne(Fragment.lit("`warehouse_id`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(WarehousesId.dbType.nullable, value)}"): @scala.annotation.nowarn } + value => { columns.addOne(Fragment.lit("`warehouse_id`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(WarehousesId.mariaType.nullable, value)}"): @scala.annotation.nowarn } ); unsaved.notes.visit( { }, @@ -96,12 +96,12 @@ class OrderItemsRepoImpl extends OrderItemsRepo { override def selectById(itemId: OrderItemsId)(using c: Connection): Option[OrderItemsRow] = { sql"""select `item_id`, `order_id`, `product_id`, `sku`, `product_name`, `quantity`, `unit_price`, `discount_amount`, `tax_amount`, `line_total`, `fulfillment_status`, `warehouse_id`, `notes` from `order_items` - where `item_id` = ${Fragment.encode(OrderItemsId.dbType, itemId)}""".query(OrderItemsRow.`_rowParser`.first()).runUnchecked(c) + where `item_id` = ${Fragment.encode(OrderItemsId.mariaType, itemId)}""".query(OrderItemsRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(itemIds: Array[OrderItemsId])(using c: Connection): List[OrderItemsRow] = { val fragments: ListBuffer[Fragment] = ListBuffer() - itemIds.foreach { id => fragments.addOne(Fragment.encode(OrderItemsId.dbType, id)): @scala.annotation.nowarn } + itemIds.foreach { id => fragments.addOne(Fragment.encode(OrderItemsId.mariaType, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("select `item_id`, `order_id`, `product_id`, `sku`, `product_name`, `quantity`, `unit_price`, `discount_amount`, `tax_amount`, `line_total`, `fulfillment_status`, `warehouse_id`, `notes` from `order_items` where `item_id` in ("), Fragment.comma(fragments), Fragment.lit(")")).query(OrderItemsRow.`_rowParser`.all()).runUnchecked(c) } @@ -116,8 +116,8 @@ class OrderItemsRepoImpl extends OrderItemsRepo { override def update(row: OrderItemsRow)(using c: Connection): Boolean = { val itemId: OrderItemsId = row.itemId return sql"""update `order_items` - set `order_id` = ${Fragment.encode(OrdersId.dbType, row.orderId)}, - `product_id` = ${Fragment.encode(ProductsId.dbType, row.productId)}, + set `order_id` = ${Fragment.encode(OrdersId.mariaType, row.orderId)}, + `product_id` = ${Fragment.encode(ProductsId.mariaType, row.productId)}, `sku` = ${Fragment.encode(MariaTypes.varchar, row.sku)}, `product_name` = ${Fragment.encode(MariaTypes.varchar, row.productName)}, `quantity` = ${Fragment.encode(MariaTypes.smallintUnsigned, row.quantity)}, @@ -126,14 +126,14 @@ class OrderItemsRepoImpl extends OrderItemsRepo { `tax_amount` = ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, row.taxAmount)}, `line_total` = ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, row.lineTotal)}, `fulfillment_status` = ${Fragment.encode(MariaTypes.text, row.fulfillmentStatus)}, - `warehouse_id` = ${Fragment.encode(WarehousesId.dbType.nullable, row.warehouseId)}, + `warehouse_id` = ${Fragment.encode(WarehousesId.mariaType.nullable, row.warehouseId)}, `notes` = ${Fragment.encode(MariaTypes.tinytext.nullable, row.notes)} - where `item_id` = ${Fragment.encode(OrderItemsId.dbType, itemId)}""".update().runUnchecked(c) > 0 + where `item_id` = ${Fragment.encode(OrderItemsId.mariaType, itemId)}""".update().runUnchecked(c) > 0 } override def upsert(unsaved: OrderItemsRow)(using c: Connection): OrderItemsRow = { sql"""INSERT INTO `order_items`(`item_id`, `order_id`, `product_id`, `sku`, `product_name`, `quantity`, `unit_price`, `discount_amount`, `tax_amount`, `line_total`, `fulfillment_status`, `warehouse_id`, `notes`) - VALUES (${Fragment.encode(OrderItemsId.dbType, unsaved.itemId)}, ${Fragment.encode(OrdersId.dbType, unsaved.orderId)}, ${Fragment.encode(ProductsId.dbType, unsaved.productId)}, ${Fragment.encode(MariaTypes.varchar, unsaved.sku)}, ${Fragment.encode(MariaTypes.varchar, unsaved.productName)}, ${Fragment.encode(MariaTypes.smallintUnsigned, unsaved.quantity)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.unitPrice)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.discountAmount)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.taxAmount)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.lineTotal)}, ${Fragment.encode(MariaTypes.text, unsaved.fulfillmentStatus)}, ${Fragment.encode(WarehousesId.dbType.nullable, unsaved.warehouseId)}, ${Fragment.encode(MariaTypes.tinytext.nullable, unsaved.notes)}) + VALUES (${Fragment.encode(OrderItemsId.mariaType, unsaved.itemId)}, ${Fragment.encode(OrdersId.mariaType, unsaved.orderId)}, ${Fragment.encode(ProductsId.mariaType, unsaved.productId)}, ${Fragment.encode(MariaTypes.varchar, unsaved.sku)}, ${Fragment.encode(MariaTypes.varchar, unsaved.productName)}, ${Fragment.encode(MariaTypes.smallintUnsigned, unsaved.quantity)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.unitPrice)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.discountAmount)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.taxAmount)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.lineTotal)}, ${Fragment.encode(MariaTypes.text, unsaved.fulfillmentStatus)}, ${Fragment.encode(WarehousesId.mariaType.nullable, unsaved.warehouseId)}, ${Fragment.encode(MariaTypes.tinytext.nullable, unsaved.notes)}) ON DUPLICATE KEY UPDATE `order_id` = VALUES(`order_id`), `product_id` = VALUES(`product_id`), `sku` = VALUES(`sku`), diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/order_items/OrderItemsRow.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/order_items/OrderItemsRow.scala index 9ca965c935..99dbd95e69 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/order_items/OrderItemsRow.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/order_items/OrderItemsRow.scala @@ -119,5 +119,5 @@ case class OrderItemsRow( } object OrderItemsRow { - val `_rowParser`: RowParser[OrderItemsRow] = RowParsers.of(OrderItemsId.dbType, OrdersId.dbType, ProductsId.dbType, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.smallintUnsigned, ScalaDbTypes.MariaTypes.numeric, ScalaDbTypes.MariaTypes.numeric, ScalaDbTypes.MariaTypes.numeric, ScalaDbTypes.MariaTypes.numeric, MariaTypes.text, WarehousesId.dbType.nullable, MariaTypes.tinytext.nullable)(OrderItemsRow.apply)(row => Array[Any](row.itemId, row.orderId, row.productId, row.sku, row.productName, row.quantity, row.unitPrice, row.discountAmount, row.taxAmount, row.lineTotal, row.fulfillmentStatus, row.warehouseId, row.notes)) + val `_rowParser`: RowParser[OrderItemsRow] = RowParsers.of(OrderItemsId.mariaType, OrdersId.mariaType, ProductsId.mariaType, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.smallintUnsigned, ScalaDbTypes.MariaTypes.numeric, ScalaDbTypes.MariaTypes.numeric, ScalaDbTypes.MariaTypes.numeric, ScalaDbTypes.MariaTypes.numeric, MariaTypes.text, WarehousesId.mariaType.nullable, MariaTypes.tinytext.nullable)(OrderItemsRow.apply)(row => Array[Any](row.itemId, row.orderId, row.productId, row.sku, row.productName, row.quantity, row.unitPrice, row.discountAmount, row.taxAmount, row.lineTotal, row.fulfillmentStatus, row.warehouseId, row.notes)) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/orders/OrdersFields.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/orders/OrdersFields.scala index fcf2a02e0f..37b28a4358 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/orders/OrdersFields.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/orders/OrdersFields.scala @@ -39,7 +39,7 @@ class OrdersFields(val `_path`: java.util.List[Path]) extends TupleExpr22[Orders None, None, (row, value) => row.copy(orderId = value), - OrdersId.dbType + OrdersId.mariaType ) } @@ -63,7 +63,7 @@ class OrdersFields(val `_path`: java.util.List[Path]) extends TupleExpr22[Orders None, None, (row, value) => row.copy(customerId = value), - CustomersId.dbType + CustomersId.mariaType ) } @@ -99,7 +99,7 @@ class OrdersFields(val `_path`: java.util.List[Path]) extends TupleExpr22[Orders None, None, (row, value) => row.copy(shippingAddressId = value), - CustomerAddressesId.dbType + CustomerAddressesId.mariaType ) } @@ -111,7 +111,7 @@ class OrdersFields(val `_path`: java.util.List[Path]) extends TupleExpr22[Orders None, None, (row, value) => row.copy(billingAddressId = value), - CustomerAddressesId.dbType + CustomerAddressesId.mariaType ) } @@ -195,7 +195,7 @@ class OrdersFields(val `_path`: java.util.List[Path]) extends TupleExpr22[Orders None, None, (row, value) => row.copy(promotionId = value), - PromotionsId.dbType + PromotionsId.mariaType ) } diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/orders/OrdersId.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/orders/OrdersId.scala index c32fec31b9..d557f017fb 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/orders/OrdersId.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/orders/OrdersId.scala @@ -17,5 +17,5 @@ case class OrdersId(@JsonValue value: Uint8) extends scala.AnyVal object OrdersId { given bijection: Bijection[OrdersId, Uint8] = Bijection.apply[OrdersId, Uint8](_.value)(OrdersId.apply) - given dbType: MariaType[OrdersId] = MariaTypes.bigintUnsigned.bimap(OrdersId.apply, _.value) + given mariaType: MariaType[OrdersId] = MariaTypes.bigintUnsigned.bimap(OrdersId.apply, _.value) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/orders/OrdersRepoImpl.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/orders/OrdersRepoImpl.scala index f5faeeb99d..77a6078084 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/orders/OrdersRepoImpl.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/orders/OrdersRepoImpl.scala @@ -23,17 +23,17 @@ import dev.typr.foundations.scala.Fragment.sql class OrdersRepoImpl extends OrdersRepo { override def delete: DeleteBuilder[OrdersFields, OrdersRow] = DeleteBuilder.of("`orders`", OrdersFields.structure, Dialect.MARIADB) - override def deleteById(orderId: OrdersId)(using c: Connection): Boolean = sql"delete from `orders` where `order_id` = ${Fragment.encode(OrdersId.dbType, orderId)}".update().runUnchecked(c) > 0 + override def deleteById(orderId: OrdersId)(using c: Connection): Boolean = sql"delete from `orders` where `order_id` = ${Fragment.encode(OrdersId.mariaType, orderId)}".update().runUnchecked(c) > 0 override def deleteByIds(orderIds: Array[OrdersId])(using c: Connection): Int = { val fragments: ListBuffer[Fragment] = ListBuffer() - orderIds.foreach { id => fragments.addOne(Fragment.encode(OrdersId.dbType, id)): @scala.annotation.nowarn } + orderIds.foreach { id => fragments.addOne(Fragment.encode(OrdersId.mariaType, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("delete from `orders` where `order_id` in ("), Fragment.comma(fragments), Fragment.lit(")")).update().runUnchecked(c) } override def insert(unsaved: OrdersRow)(using c: Connection): OrdersRow = { sql"""insert into `orders`(`order_number`, `customer_id`, `order_status`, `payment_status`, `shipping_address_id`, `billing_address_id`, `subtotal`, `shipping_cost`, `tax_amount`, `discount_amount`, `total_amount`, `currency_code`, `promotion_id`, `notes`, `internal_notes`, `ip_address`, `user_agent`, `ordered_at`, `confirmed_at`, `shipped_at`, `delivered_at`) - values (${Fragment.encode(MariaTypes.varchar, unsaved.orderNumber)}, ${Fragment.encode(CustomersId.dbType, unsaved.customerId)}, ${Fragment.encode(MariaTypes.text, unsaved.orderStatus)}, ${Fragment.encode(MariaTypes.text, unsaved.paymentStatus)}, ${Fragment.encode(CustomerAddressesId.dbType.nullable, unsaved.shippingAddressId)}, ${Fragment.encode(CustomerAddressesId.dbType.nullable, unsaved.billingAddressId)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.subtotal)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.shippingCost)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.taxAmount)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.discountAmount)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.totalAmount)}, ${Fragment.encode(MariaTypes.char_, unsaved.currencyCode)}, ${Fragment.encode(PromotionsId.dbType.nullable, unsaved.promotionId)}, ${Fragment.encode(MariaTypes.text.nullable, unsaved.notes)}, ${Fragment.encode(MariaTypes.mediumtext.nullable, unsaved.internalNotes)}, ${Fragment.encode(MariaTypes.inet6.nullable, unsaved.ipAddress)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.userAgent)}, ${Fragment.encode(MariaTypes.datetime, unsaved.orderedAt)}, ${Fragment.encode(MariaTypes.datetime.nullable, unsaved.confirmedAt)}, ${Fragment.encode(MariaTypes.datetime.nullable, unsaved.shippedAt)}, ${Fragment.encode(MariaTypes.datetime.nullable, unsaved.deliveredAt)}) + values (${Fragment.encode(MariaTypes.varchar, unsaved.orderNumber)}, ${Fragment.encode(CustomersId.mariaType, unsaved.customerId)}, ${Fragment.encode(MariaTypes.text, unsaved.orderStatus)}, ${Fragment.encode(MariaTypes.text, unsaved.paymentStatus)}, ${Fragment.encode(CustomerAddressesId.mariaType.nullable, unsaved.shippingAddressId)}, ${Fragment.encode(CustomerAddressesId.mariaType.nullable, unsaved.billingAddressId)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.subtotal)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.shippingCost)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.taxAmount)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.discountAmount)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.totalAmount)}, ${Fragment.encode(MariaTypes.char_, unsaved.currencyCode)}, ${Fragment.encode(PromotionsId.mariaType.nullable, unsaved.promotionId)}, ${Fragment.encode(MariaTypes.text.nullable, unsaved.notes)}, ${Fragment.encode(MariaTypes.mediumtext.nullable, unsaved.internalNotes)}, ${Fragment.encode(MariaTypes.inet6.nullable, unsaved.ipAddress)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.userAgent)}, ${Fragment.encode(MariaTypes.datetime, unsaved.orderedAt)}, ${Fragment.encode(MariaTypes.datetime.nullable, unsaved.confirmedAt)}, ${Fragment.encode(MariaTypes.datetime.nullable, unsaved.shippedAt)}, ${Fragment.encode(MariaTypes.datetime.nullable, unsaved.deliveredAt)}) RETURNING `order_id`, `order_number`, `customer_id`, `order_status`, `payment_status`, `shipping_address_id`, `billing_address_id`, `subtotal`, `shipping_cost`, `tax_amount`, `discount_amount`, `total_amount`, `currency_code`, `promotion_id`, `notes`, `internal_notes`, `ip_address`, `user_agent`, `ordered_at`, `confirmed_at`, `shipped_at`, `delivered_at` """ .updateReturning(OrdersRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -45,7 +45,7 @@ class OrdersRepoImpl extends OrdersRepo { columns.addOne(Fragment.lit("`order_number`")): @scala.annotation.nowarn values.addOne(sql"${Fragment.encode(MariaTypes.varchar, unsaved.orderNumber)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit("`customer_id`")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(CustomersId.dbType, unsaved.customerId)}"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(CustomersId.mariaType, unsaved.customerId)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit("`subtotal`")): @scala.annotation.nowarn values.addOne(sql"${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.subtotal)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit("`total_amount`")): @scala.annotation.nowarn @@ -60,11 +60,11 @@ class OrdersRepoImpl extends OrdersRepo { ); unsaved.shippingAddressId.visit( { }, - value => { columns.addOne(Fragment.lit("`shipping_address_id`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(CustomerAddressesId.dbType.nullable, value)}"): @scala.annotation.nowarn } + value => { columns.addOne(Fragment.lit("`shipping_address_id`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(CustomerAddressesId.mariaType.nullable, value)}"): @scala.annotation.nowarn } ); unsaved.billingAddressId.visit( { }, - value => { columns.addOne(Fragment.lit("`billing_address_id`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(CustomerAddressesId.dbType.nullable, value)}"): @scala.annotation.nowarn } + value => { columns.addOne(Fragment.lit("`billing_address_id`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(CustomerAddressesId.mariaType.nullable, value)}"): @scala.annotation.nowarn } ); unsaved.shippingCost.visit( { }, @@ -84,7 +84,7 @@ class OrdersRepoImpl extends OrdersRepo { ); unsaved.promotionId.visit( { }, - value => { columns.addOne(Fragment.lit("`promotion_id`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(PromotionsId.dbType.nullable, value)}"): @scala.annotation.nowarn } + value => { columns.addOne(Fragment.lit("`promotion_id`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(PromotionsId.mariaType.nullable, value)}"): @scala.annotation.nowarn } ); unsaved.notes.visit( { }, @@ -138,12 +138,12 @@ class OrdersRepoImpl extends OrdersRepo { override def selectById(orderId: OrdersId)(using c: Connection): Option[OrdersRow] = { sql"""select `order_id`, `order_number`, `customer_id`, `order_status`, `payment_status`, `shipping_address_id`, `billing_address_id`, `subtotal`, `shipping_cost`, `tax_amount`, `discount_amount`, `total_amount`, `currency_code`, `promotion_id`, `notes`, `internal_notes`, `ip_address`, `user_agent`, `ordered_at`, `confirmed_at`, `shipped_at`, `delivered_at` from `orders` - where `order_id` = ${Fragment.encode(OrdersId.dbType, orderId)}""".query(OrdersRow.`_rowParser`.first()).runUnchecked(c) + where `order_id` = ${Fragment.encode(OrdersId.mariaType, orderId)}""".query(OrdersRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(orderIds: Array[OrdersId])(using c: Connection): List[OrdersRow] = { val fragments: ListBuffer[Fragment] = ListBuffer() - orderIds.foreach { id => fragments.addOne(Fragment.encode(OrdersId.dbType, id)): @scala.annotation.nowarn } + orderIds.foreach { id => fragments.addOne(Fragment.encode(OrdersId.mariaType, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("select `order_id`, `order_number`, `customer_id`, `order_status`, `payment_status`, `shipping_address_id`, `billing_address_id`, `subtotal`, `shipping_cost`, `tax_amount`, `discount_amount`, `total_amount`, `currency_code`, `promotion_id`, `notes`, `internal_notes`, `ip_address`, `user_agent`, `ordered_at`, `confirmed_at`, `shipped_at`, `delivered_at` from `orders` where `order_id` in ("), Fragment.comma(fragments), Fragment.lit(")")).query(OrdersRow.`_rowParser`.all()).runUnchecked(c) } @@ -166,18 +166,18 @@ class OrdersRepoImpl extends OrdersRepo { val orderId: OrdersId = row.orderId return sql"""update `orders` set `order_number` = ${Fragment.encode(MariaTypes.varchar, row.orderNumber)}, - `customer_id` = ${Fragment.encode(CustomersId.dbType, row.customerId)}, + `customer_id` = ${Fragment.encode(CustomersId.mariaType, row.customerId)}, `order_status` = ${Fragment.encode(MariaTypes.text, row.orderStatus)}, `payment_status` = ${Fragment.encode(MariaTypes.text, row.paymentStatus)}, - `shipping_address_id` = ${Fragment.encode(CustomerAddressesId.dbType.nullable, row.shippingAddressId)}, - `billing_address_id` = ${Fragment.encode(CustomerAddressesId.dbType.nullable, row.billingAddressId)}, + `shipping_address_id` = ${Fragment.encode(CustomerAddressesId.mariaType.nullable, row.shippingAddressId)}, + `billing_address_id` = ${Fragment.encode(CustomerAddressesId.mariaType.nullable, row.billingAddressId)}, `subtotal` = ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, row.subtotal)}, `shipping_cost` = ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, row.shippingCost)}, `tax_amount` = ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, row.taxAmount)}, `discount_amount` = ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, row.discountAmount)}, `total_amount` = ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, row.totalAmount)}, `currency_code` = ${Fragment.encode(MariaTypes.char_, row.currencyCode)}, - `promotion_id` = ${Fragment.encode(PromotionsId.dbType.nullable, row.promotionId)}, + `promotion_id` = ${Fragment.encode(PromotionsId.mariaType.nullable, row.promotionId)}, `notes` = ${Fragment.encode(MariaTypes.text.nullable, row.notes)}, `internal_notes` = ${Fragment.encode(MariaTypes.mediumtext.nullable, row.internalNotes)}, `ip_address` = ${Fragment.encode(MariaTypes.inet6.nullable, row.ipAddress)}, @@ -186,12 +186,12 @@ class OrdersRepoImpl extends OrdersRepo { `confirmed_at` = ${Fragment.encode(MariaTypes.datetime.nullable, row.confirmedAt)}, `shipped_at` = ${Fragment.encode(MariaTypes.datetime.nullable, row.shippedAt)}, `delivered_at` = ${Fragment.encode(MariaTypes.datetime.nullable, row.deliveredAt)} - where `order_id` = ${Fragment.encode(OrdersId.dbType, orderId)}""".update().runUnchecked(c) > 0 + where `order_id` = ${Fragment.encode(OrdersId.mariaType, orderId)}""".update().runUnchecked(c) > 0 } override def upsert(unsaved: OrdersRow)(using c: Connection): OrdersRow = { sql"""INSERT INTO `orders`(`order_id`, `order_number`, `customer_id`, `order_status`, `payment_status`, `shipping_address_id`, `billing_address_id`, `subtotal`, `shipping_cost`, `tax_amount`, `discount_amount`, `total_amount`, `currency_code`, `promotion_id`, `notes`, `internal_notes`, `ip_address`, `user_agent`, `ordered_at`, `confirmed_at`, `shipped_at`, `delivered_at`) - VALUES (${Fragment.encode(OrdersId.dbType, unsaved.orderId)}, ${Fragment.encode(MariaTypes.varchar, unsaved.orderNumber)}, ${Fragment.encode(CustomersId.dbType, unsaved.customerId)}, ${Fragment.encode(MariaTypes.text, unsaved.orderStatus)}, ${Fragment.encode(MariaTypes.text, unsaved.paymentStatus)}, ${Fragment.encode(CustomerAddressesId.dbType.nullable, unsaved.shippingAddressId)}, ${Fragment.encode(CustomerAddressesId.dbType.nullable, unsaved.billingAddressId)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.subtotal)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.shippingCost)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.taxAmount)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.discountAmount)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.totalAmount)}, ${Fragment.encode(MariaTypes.char_, unsaved.currencyCode)}, ${Fragment.encode(PromotionsId.dbType.nullable, unsaved.promotionId)}, ${Fragment.encode(MariaTypes.text.nullable, unsaved.notes)}, ${Fragment.encode(MariaTypes.mediumtext.nullable, unsaved.internalNotes)}, ${Fragment.encode(MariaTypes.inet6.nullable, unsaved.ipAddress)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.userAgent)}, ${Fragment.encode(MariaTypes.datetime, unsaved.orderedAt)}, ${Fragment.encode(MariaTypes.datetime.nullable, unsaved.confirmedAt)}, ${Fragment.encode(MariaTypes.datetime.nullable, unsaved.shippedAt)}, ${Fragment.encode(MariaTypes.datetime.nullable, unsaved.deliveredAt)}) + VALUES (${Fragment.encode(OrdersId.mariaType, unsaved.orderId)}, ${Fragment.encode(MariaTypes.varchar, unsaved.orderNumber)}, ${Fragment.encode(CustomersId.mariaType, unsaved.customerId)}, ${Fragment.encode(MariaTypes.text, unsaved.orderStatus)}, ${Fragment.encode(MariaTypes.text, unsaved.paymentStatus)}, ${Fragment.encode(CustomerAddressesId.mariaType.nullable, unsaved.shippingAddressId)}, ${Fragment.encode(CustomerAddressesId.mariaType.nullable, unsaved.billingAddressId)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.subtotal)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.shippingCost)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.taxAmount)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.discountAmount)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.totalAmount)}, ${Fragment.encode(MariaTypes.char_, unsaved.currencyCode)}, ${Fragment.encode(PromotionsId.mariaType.nullable, unsaved.promotionId)}, ${Fragment.encode(MariaTypes.text.nullable, unsaved.notes)}, ${Fragment.encode(MariaTypes.mediumtext.nullable, unsaved.internalNotes)}, ${Fragment.encode(MariaTypes.inet6.nullable, unsaved.ipAddress)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.userAgent)}, ${Fragment.encode(MariaTypes.datetime, unsaved.orderedAt)}, ${Fragment.encode(MariaTypes.datetime.nullable, unsaved.confirmedAt)}, ${Fragment.encode(MariaTypes.datetime.nullable, unsaved.shippedAt)}, ${Fragment.encode(MariaTypes.datetime.nullable, unsaved.deliveredAt)}) ON DUPLICATE KEY UPDATE `order_number` = VALUES(`order_number`), `customer_id` = VALUES(`customer_id`), `order_status` = VALUES(`order_status`), diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/orders/OrdersRow.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/orders/OrdersRow.scala index 10928a1d92..ca313cb632 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/orders/OrdersRow.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/orders/OrdersRow.scala @@ -201,5 +201,5 @@ case class OrdersRow( } object OrdersRow { - val `_rowParser`: RowParser[OrdersRow] = RowParsers.of(OrdersId.dbType, MariaTypes.varchar, CustomersId.dbType, MariaTypes.text, MariaTypes.text, CustomerAddressesId.dbType.nullable, CustomerAddressesId.dbType.nullable, ScalaDbTypes.MariaTypes.numeric, ScalaDbTypes.MariaTypes.numeric, ScalaDbTypes.MariaTypes.numeric, ScalaDbTypes.MariaTypes.numeric, ScalaDbTypes.MariaTypes.numeric, MariaTypes.char_, PromotionsId.dbType.nullable, MariaTypes.text.nullable, MariaTypes.mediumtext.nullable, MariaTypes.inet6.nullable, MariaTypes.varchar.nullable, MariaTypes.datetime, MariaTypes.datetime.nullable, MariaTypes.datetime.nullable, MariaTypes.datetime.nullable)(OrdersRow.apply)(row => Array[Any](row.orderId, row.orderNumber, row.customerId, row.orderStatus, row.paymentStatus, row.shippingAddressId, row.billingAddressId, row.subtotal, row.shippingCost, row.taxAmount, row.discountAmount, row.totalAmount, row.currencyCode, row.promotionId, row.notes, row.internalNotes, row.ipAddress, row.userAgent, row.orderedAt, row.confirmedAt, row.shippedAt, row.deliveredAt)) + val `_rowParser`: RowParser[OrdersRow] = RowParsers.of(OrdersId.mariaType, MariaTypes.varchar, CustomersId.mariaType, MariaTypes.text, MariaTypes.text, CustomerAddressesId.mariaType.nullable, CustomerAddressesId.mariaType.nullable, ScalaDbTypes.MariaTypes.numeric, ScalaDbTypes.MariaTypes.numeric, ScalaDbTypes.MariaTypes.numeric, ScalaDbTypes.MariaTypes.numeric, ScalaDbTypes.MariaTypes.numeric, MariaTypes.char_, PromotionsId.mariaType.nullable, MariaTypes.text.nullable, MariaTypes.mediumtext.nullable, MariaTypes.inet6.nullable, MariaTypes.varchar.nullable, MariaTypes.datetime, MariaTypes.datetime.nullable, MariaTypes.datetime.nullable, MariaTypes.datetime.nullable)(OrdersRow.apply)(row => Array[Any](row.orderId, row.orderNumber, row.customerId, row.orderStatus, row.paymentStatus, row.shippingAddressId, row.billingAddressId, row.subtotal, row.shippingCost, row.taxAmount, row.discountAmount, row.totalAmount, row.currencyCode, row.promotionId, row.notes, row.internalNotes, row.ipAddress, row.userAgent, row.orderedAt, row.confirmedAt, row.shippedAt, row.deliveredAt)) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/payment_methods/PaymentMethodsFields.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/payment_methods/PaymentMethodsFields.scala index 327b1af41f..932e62ef4f 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/payment_methods/PaymentMethodsFields.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/payment_methods/PaymentMethodsFields.scala @@ -18,8 +18,9 @@ import dev.typr.foundations.scala.SqlExpr.Field import dev.typr.foundations.scala.SqlExpr.IdField import dev.typr.foundations.scala.SqlExpr.OptField import dev.typr.foundations.scala.TupleExpr7 +import testdb.userdefined.IsActive -class PaymentMethodsFields(val `_path`: java.util.List[Path]) extends TupleExpr7[PaymentMethodsId, String, String, String, Json, Boolean, Byte] with RelationStructure[PaymentMethodsFields, PaymentMethodsRow] with FieldsBase[PaymentMethodsRow] { +class PaymentMethodsFields(val `_path`: java.util.List[Path]) extends TupleExpr7[PaymentMethodsId, String, String, String, Json, /* user-picked */ IsActive, Byte] with RelationStructure[PaymentMethodsFields, PaymentMethodsRow] with FieldsBase[PaymentMethodsRow] { def methodId: IdField[PaymentMethodsId, PaymentMethodsRow] = { new IdField[PaymentMethodsId, PaymentMethodsRow]( _path, @@ -28,7 +29,7 @@ class PaymentMethodsFields(val `_path`: java.util.List[Path]) extends TupleExpr7 None, None, (row, value) => row.copy(methodId = value), - PaymentMethodsId.dbType + PaymentMethodsId.mariaType ) } @@ -80,15 +81,15 @@ class PaymentMethodsFields(val `_path`: java.util.List[Path]) extends TupleExpr7 ) } - def isActive: Field[Boolean, PaymentMethodsRow] = { - new Field[Boolean, PaymentMethodsRow]( + def isActive: Field[/* user-picked */ IsActive, PaymentMethodsRow] = { + new Field[/* user-picked */ IsActive, PaymentMethodsRow]( _path, "is_active", _.isActive, None, None, (row, value) => row.copy(isActive = value), - ScalaDbTypes.MariaTypes.bool + IsActive.mariaType ) } @@ -120,7 +121,7 @@ class PaymentMethodsFields(val `_path`: java.util.List[Path]) extends TupleExpr7 override def `_5`: SqlExpr[Json] = processorConfig - override def `_6`: SqlExpr[Boolean] = isActive + override def `_6`: SqlExpr[/* user-picked */ IsActive] = isActive override def `_7`: SqlExpr[Byte] = sortOrder } diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/payment_methods/PaymentMethodsId.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/payment_methods/PaymentMethodsId.scala index 746eb6c16c..ecbd38c714 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/payment_methods/PaymentMethodsId.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/payment_methods/PaymentMethodsId.scala @@ -17,5 +17,5 @@ case class PaymentMethodsId(@JsonValue value: Uint1) extends scala.AnyVal object PaymentMethodsId { given bijection: Bijection[PaymentMethodsId, Uint1] = Bijection.apply[PaymentMethodsId, Uint1](_.value)(PaymentMethodsId.apply) - given dbType: MariaType[PaymentMethodsId] = MariaTypes.tinyintUnsigned.bimap(PaymentMethodsId.apply, _.value) + given mariaType: MariaType[PaymentMethodsId] = MariaTypes.tinyintUnsigned.bimap(PaymentMethodsId.apply, _.value) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/payment_methods/PaymentMethodsRepoImpl.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/payment_methods/PaymentMethodsRepoImpl.scala index 602d4c8769..0c10541599 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/payment_methods/PaymentMethodsRepoImpl.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/payment_methods/PaymentMethodsRepoImpl.scala @@ -15,22 +15,23 @@ import dev.typr.foundations.scala.SelectBuilder import dev.typr.foundations.scala.UpdateBuilder import java.sql.Connection import scala.collection.mutable.ListBuffer +import testdb.userdefined.IsActive import dev.typr.foundations.scala.Fragment.sql class PaymentMethodsRepoImpl extends PaymentMethodsRepo { override def delete: DeleteBuilder[PaymentMethodsFields, PaymentMethodsRow] = DeleteBuilder.of("`payment_methods`", PaymentMethodsFields.structure, Dialect.MARIADB) - override def deleteById(methodId: PaymentMethodsId)(using c: Connection): Boolean = sql"delete from `payment_methods` where `method_id` = ${Fragment.encode(PaymentMethodsId.dbType, methodId)}".update().runUnchecked(c) > 0 + override def deleteById(methodId: PaymentMethodsId)(using c: Connection): Boolean = sql"delete from `payment_methods` where `method_id` = ${Fragment.encode(PaymentMethodsId.mariaType, methodId)}".update().runUnchecked(c) > 0 override def deleteByIds(methodIds: Array[PaymentMethodsId])(using c: Connection): Int = { val fragments: ListBuffer[Fragment] = ListBuffer() - methodIds.foreach { id => fragments.addOne(Fragment.encode(PaymentMethodsId.dbType, id)): @scala.annotation.nowarn } + methodIds.foreach { id => fragments.addOne(Fragment.encode(PaymentMethodsId.mariaType, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("delete from `payment_methods` where `method_id` in ("), Fragment.comma(fragments), Fragment.lit(")")).update().runUnchecked(c) } override def insert(unsaved: PaymentMethodsRow)(using c: Connection): PaymentMethodsRow = { sql"""insert into `payment_methods`(`code`, `name`, `method_type`, `processor_config`, `is_active`, `sort_order`) - values (${Fragment.encode(MariaTypes.varchar, unsaved.code)}, ${Fragment.encode(MariaTypes.varchar, unsaved.name)}, ${Fragment.encode(MariaTypes.text, unsaved.methodType)}, ${Fragment.encode(MariaTypes.json.nullable, unsaved.processorConfig)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.bool, unsaved.isActive)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.tinyint, unsaved.sortOrder)}) + values (${Fragment.encode(MariaTypes.varchar, unsaved.code)}, ${Fragment.encode(MariaTypes.varchar, unsaved.name)}, ${Fragment.encode(MariaTypes.text, unsaved.methodType)}, ${Fragment.encode(MariaTypes.json.nullable, unsaved.processorConfig)}, ${Fragment.encode(IsActive.mariaType, unsaved.isActive)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.tinyint, unsaved.sortOrder)}) RETURNING `method_id`, `code`, `name`, `method_type`, `processor_config`, `is_active`, `sort_order` """ .updateReturning(PaymentMethodsRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -51,7 +52,7 @@ class PaymentMethodsRepoImpl extends PaymentMethodsRepo { ); unsaved.isActive.visit( { }, - value => { columns.addOne(Fragment.lit("`is_active`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(ScalaDbTypes.MariaTypes.bool, value)}"): @scala.annotation.nowarn } + value => { columns.addOne(Fragment.lit("`is_active`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(IsActive.mariaType, value)}"): @scala.annotation.nowarn } ); unsaved.sortOrder.visit( { }, @@ -77,12 +78,12 @@ class PaymentMethodsRepoImpl extends PaymentMethodsRepo { override def selectById(methodId: PaymentMethodsId)(using c: Connection): Option[PaymentMethodsRow] = { sql"""select `method_id`, `code`, `name`, `method_type`, `processor_config`, `is_active`, `sort_order` from `payment_methods` - where `method_id` = ${Fragment.encode(PaymentMethodsId.dbType, methodId)}""".query(PaymentMethodsRow.`_rowParser`.first()).runUnchecked(c) + where `method_id` = ${Fragment.encode(PaymentMethodsId.mariaType, methodId)}""".query(PaymentMethodsRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(methodIds: Array[PaymentMethodsId])(using c: Connection): List[PaymentMethodsRow] = { val fragments: ListBuffer[Fragment] = ListBuffer() - methodIds.foreach { id => fragments.addOne(Fragment.encode(PaymentMethodsId.dbType, id)): @scala.annotation.nowarn } + methodIds.foreach { id => fragments.addOne(Fragment.encode(PaymentMethodsId.mariaType, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("select `method_id`, `code`, `name`, `method_type`, `processor_config`, `is_active`, `sort_order` from `payment_methods` where `method_id` in ("), Fragment.comma(fragments), Fragment.lit(")")).query(PaymentMethodsRow.`_rowParser`.all()).runUnchecked(c) } @@ -108,14 +109,14 @@ class PaymentMethodsRepoImpl extends PaymentMethodsRepo { `name` = ${Fragment.encode(MariaTypes.varchar, row.name)}, `method_type` = ${Fragment.encode(MariaTypes.text, row.methodType)}, `processor_config` = ${Fragment.encode(MariaTypes.json.nullable, row.processorConfig)}, - `is_active` = ${Fragment.encode(ScalaDbTypes.MariaTypes.bool, row.isActive)}, + `is_active` = ${Fragment.encode(IsActive.mariaType, row.isActive)}, `sort_order` = ${Fragment.encode(ScalaDbTypes.MariaTypes.tinyint, row.sortOrder)} - where `method_id` = ${Fragment.encode(PaymentMethodsId.dbType, methodId)}""".update().runUnchecked(c) > 0 + where `method_id` = ${Fragment.encode(PaymentMethodsId.mariaType, methodId)}""".update().runUnchecked(c) > 0 } override def upsert(unsaved: PaymentMethodsRow)(using c: Connection): PaymentMethodsRow = { sql"""INSERT INTO `payment_methods`(`method_id`, `code`, `name`, `method_type`, `processor_config`, `is_active`, `sort_order`) - VALUES (${Fragment.encode(PaymentMethodsId.dbType, unsaved.methodId)}, ${Fragment.encode(MariaTypes.varchar, unsaved.code)}, ${Fragment.encode(MariaTypes.varchar, unsaved.name)}, ${Fragment.encode(MariaTypes.text, unsaved.methodType)}, ${Fragment.encode(MariaTypes.json.nullable, unsaved.processorConfig)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.bool, unsaved.isActive)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.tinyint, unsaved.sortOrder)}) + VALUES (${Fragment.encode(PaymentMethodsId.mariaType, unsaved.methodId)}, ${Fragment.encode(MariaTypes.varchar, unsaved.code)}, ${Fragment.encode(MariaTypes.varchar, unsaved.name)}, ${Fragment.encode(MariaTypes.text, unsaved.methodType)}, ${Fragment.encode(MariaTypes.json.nullable, unsaved.processorConfig)}, ${Fragment.encode(IsActive.mariaType, unsaved.isActive)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.tinyint, unsaved.sortOrder)}) ON DUPLICATE KEY UPDATE `code` = VALUES(`code`), `name` = VALUES(`name`), `method_type` = VALUES(`method_type`), diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/payment_methods/PaymentMethodsRow.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/payment_methods/PaymentMethodsRow.scala index 8ccb3004d4..4273c7389f 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/payment_methods/PaymentMethodsRow.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/payment_methods/PaymentMethodsRow.scala @@ -14,6 +14,7 @@ import dev.typr.foundations.scala.RowParser import dev.typr.foundations.scala.RowParsers import dev.typr.foundations.scala.ScalaDbTypes import testdb.customtypes.Defaulted +import testdb.userdefined.IsActive /** Table: payment_methods * Primary key: method_id @@ -36,17 +37,17 @@ case class PaymentMethodsRow( /** * Default: 1 */ - @JsonProperty("is_active") isActive: Boolean, + @JsonProperty("is_active") isActive: /* user-picked */ IsActive, /** * Default: 0 */ @JsonProperty("sort_order") sortOrder: Byte -) extends Tuple7[PaymentMethodsId, String, String, String, Option[Json], Boolean, Byte] { +) extends Tuple7[PaymentMethodsId, String, String, String, Option[Json], /* user-picked */ IsActive, Byte] { def id: PaymentMethodsId = methodId def toUnsavedRow( processorConfig: Defaulted[Option[Json]] = Defaulted.Provided(this.processorConfig), - isActive: Defaulted[Boolean] = Defaulted.Provided(this.isActive), + isActive: Defaulted[/* user-picked */ IsActive] = Defaulted.Provided(this.isActive), sortOrder: Defaulted[Byte] = Defaulted.Provided(this.sortOrder) ): PaymentMethodsRowUnsaved = { new PaymentMethodsRowUnsaved( @@ -69,11 +70,11 @@ case class PaymentMethodsRow( override def `_5`: Option[Json] = processorConfig - override def `_6`: Boolean = isActive + override def `_6`: /* user-picked */ IsActive = isActive override def `_7`: Byte = sortOrder } object PaymentMethodsRow { - val `_rowParser`: RowParser[PaymentMethodsRow] = RowParsers.of(PaymentMethodsId.dbType, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.text, MariaTypes.json.nullable, ScalaDbTypes.MariaTypes.bool, ScalaDbTypes.MariaTypes.tinyint)(PaymentMethodsRow.apply)(row => Array[Any](row.methodId, row.code, row.name, row.methodType, row.processorConfig, row.isActive, row.sortOrder)) + val `_rowParser`: RowParser[PaymentMethodsRow] = RowParsers.of(PaymentMethodsId.mariaType, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.text, MariaTypes.json.nullable, IsActive.mariaType, ScalaDbTypes.MariaTypes.tinyint)(PaymentMethodsRow.apply)(row => Array[Any](row.methodId, row.code, row.name, row.methodType, row.processorConfig, row.isActive, row.sortOrder)) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/payment_methods/PaymentMethodsRowUnsaved.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/payment_methods/PaymentMethodsRowUnsaved.scala index bb2809d0e1..654db4ec4a 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/payment_methods/PaymentMethodsRowUnsaved.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/payment_methods/PaymentMethodsRowUnsaved.scala @@ -9,6 +9,7 @@ import com.fasterxml.jackson.annotation.JsonProperty import dev.typr.foundations.data.Json import testdb.customtypes.Defaulted import testdb.customtypes.Defaulted.UseDefault +import testdb.userdefined.IsActive /** This class corresponds to a row in table `payment_methods` which has not been persisted yet */ case class PaymentMethodsRowUnsaved( @@ -25,7 +26,7 @@ case class PaymentMethodsRowUnsaved( /** Default: 1 */ - @JsonProperty("is_active") isActive: Defaulted[Boolean] = new UseDefault(), + @JsonProperty("is_active") isActive: Defaulted[/* user-picked */ IsActive] = new UseDefault(), /** Default: 0 */ @@ -33,7 +34,7 @@ case class PaymentMethodsRowUnsaved( ) { def toRow( processorConfigDefault: => Option[Json], - isActiveDefault: => Boolean, + isActiveDefault: => /* user-picked */ IsActive, sortOrderDefault: => Byte, methodIdDefault: => PaymentMethodsId ): PaymentMethodsRow = { diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/payments/PaymentsFields.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/payments/PaymentsFields.scala index 9de5f96d7c..db51287057 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/payments/PaymentsFields.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/payments/PaymentsFields.scala @@ -37,7 +37,7 @@ class PaymentsFields(val `_path`: java.util.List[Path]) extends TupleExpr12[Paym None, None, (row, value) => row.copy(paymentId = value), - PaymentsId.dbType + PaymentsId.mariaType ) } @@ -49,7 +49,7 @@ class PaymentsFields(val `_path`: java.util.List[Path]) extends TupleExpr12[Paym None, None, (row, value) => row.copy(orderId = value), - OrdersId.dbType + OrdersId.mariaType ) } @@ -61,7 +61,7 @@ class PaymentsFields(val `_path`: java.util.List[Path]) extends TupleExpr12[Paym None, None, (row, value) => row.copy(methodId = value), - PaymentMethodsId.dbType + PaymentMethodsId.mariaType ) } diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/payments/PaymentsId.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/payments/PaymentsId.scala index 17472ec857..e0ba3c74be 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/payments/PaymentsId.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/payments/PaymentsId.scala @@ -17,5 +17,5 @@ case class PaymentsId(@JsonValue value: Uint8) extends scala.AnyVal object PaymentsId { given bijection: Bijection[PaymentsId, Uint8] = Bijection.apply[PaymentsId, Uint8](_.value)(PaymentsId.apply) - given dbType: MariaType[PaymentsId] = MariaTypes.bigintUnsigned.bimap(PaymentsId.apply, _.value) + given mariaType: MariaType[PaymentsId] = MariaTypes.bigintUnsigned.bimap(PaymentsId.apply, _.value) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/payments/PaymentsRepoImpl.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/payments/PaymentsRepoImpl.scala index c3d6ba1b4f..3e3f8e770b 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/payments/PaymentsRepoImpl.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/payments/PaymentsRepoImpl.scala @@ -22,17 +22,17 @@ import dev.typr.foundations.scala.Fragment.sql class PaymentsRepoImpl extends PaymentsRepo { override def delete: DeleteBuilder[PaymentsFields, PaymentsRow] = DeleteBuilder.of("`payments`", PaymentsFields.structure, Dialect.MARIADB) - override def deleteById(paymentId: PaymentsId)(using c: Connection): Boolean = sql"delete from `payments` where `payment_id` = ${Fragment.encode(PaymentsId.dbType, paymentId)}".update().runUnchecked(c) > 0 + override def deleteById(paymentId: PaymentsId)(using c: Connection): Boolean = sql"delete from `payments` where `payment_id` = ${Fragment.encode(PaymentsId.mariaType, paymentId)}".update().runUnchecked(c) > 0 override def deleteByIds(paymentIds: Array[PaymentsId])(using c: Connection): Int = { val fragments: ListBuffer[Fragment] = ListBuffer() - paymentIds.foreach { id => fragments.addOne(Fragment.encode(PaymentsId.dbType, id)): @scala.annotation.nowarn } + paymentIds.foreach { id => fragments.addOne(Fragment.encode(PaymentsId.mariaType, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("delete from `payments` where `payment_id` in ("), Fragment.comma(fragments), Fragment.lit(")")).update().runUnchecked(c) } override def insert(unsaved: PaymentsRow)(using c: Connection): PaymentsRow = { sql"""insert into `payments`(`order_id`, `method_id`, `transaction_id`, `amount`, `currency_code`, `status`, `processor_response`, `error_message`, `ip_address`, `created_at`, `processed_at`) - values (${Fragment.encode(OrdersId.dbType, unsaved.orderId)}, ${Fragment.encode(PaymentMethodsId.dbType, unsaved.methodId)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.transactionId)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.amount)}, ${Fragment.encode(MariaTypes.char_, unsaved.currencyCode)}, ${Fragment.encode(MariaTypes.text, unsaved.status)}, ${Fragment.encode(MariaTypes.json.nullable, unsaved.processorResponse)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.errorMessage)}, ${Fragment.encode(MariaTypes.inet6.nullable, unsaved.ipAddress)}, ${Fragment.encode(MariaTypes.datetime, unsaved.createdAt)}, ${Fragment.encode(MariaTypes.datetime.nullable, unsaved.processedAt)}) + values (${Fragment.encode(OrdersId.mariaType, unsaved.orderId)}, ${Fragment.encode(PaymentMethodsId.mariaType, unsaved.methodId)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.transactionId)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.amount)}, ${Fragment.encode(MariaTypes.char_, unsaved.currencyCode)}, ${Fragment.encode(MariaTypes.text, unsaved.status)}, ${Fragment.encode(MariaTypes.json.nullable, unsaved.processorResponse)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.errorMessage)}, ${Fragment.encode(MariaTypes.inet6.nullable, unsaved.ipAddress)}, ${Fragment.encode(MariaTypes.datetime, unsaved.createdAt)}, ${Fragment.encode(MariaTypes.datetime.nullable, unsaved.processedAt)}) RETURNING `payment_id`, `order_id`, `method_id`, `transaction_id`, `amount`, `currency_code`, `status`, `processor_response`, `error_message`, `ip_address`, `created_at`, `processed_at` """ .updateReturning(PaymentsRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -42,9 +42,9 @@ class PaymentsRepoImpl extends PaymentsRepo { val columns: ListBuffer[Fragment] = ListBuffer() val values: ListBuffer[Fragment] = ListBuffer() columns.addOne(Fragment.lit("`order_id`")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(OrdersId.dbType, unsaved.orderId)}"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(OrdersId.mariaType, unsaved.orderId)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit("`method_id`")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(PaymentMethodsId.dbType, unsaved.methodId)}"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(PaymentMethodsId.mariaType, unsaved.methodId)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit("`amount`")): @scala.annotation.nowarn values.addOne(sql"${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.amount)}"): @scala.annotation.nowarn unsaved.transactionId.visit( @@ -99,12 +99,12 @@ class PaymentsRepoImpl extends PaymentsRepo { override def selectById(paymentId: PaymentsId)(using c: Connection): Option[PaymentsRow] = { sql"""select `payment_id`, `order_id`, `method_id`, `transaction_id`, `amount`, `currency_code`, `status`, `processor_response`, `error_message`, `ip_address`, `created_at`, `processed_at` from `payments` - where `payment_id` = ${Fragment.encode(PaymentsId.dbType, paymentId)}""".query(PaymentsRow.`_rowParser`.first()).runUnchecked(c) + where `payment_id` = ${Fragment.encode(PaymentsId.mariaType, paymentId)}""".query(PaymentsRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(paymentIds: Array[PaymentsId])(using c: Connection): List[PaymentsRow] = { val fragments: ListBuffer[Fragment] = ListBuffer() - paymentIds.foreach { id => fragments.addOne(Fragment.encode(PaymentsId.dbType, id)): @scala.annotation.nowarn } + paymentIds.foreach { id => fragments.addOne(Fragment.encode(PaymentsId.mariaType, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("select `payment_id`, `order_id`, `method_id`, `transaction_id`, `amount`, `currency_code`, `status`, `processor_response`, `error_message`, `ip_address`, `created_at`, `processed_at` from `payments` where `payment_id` in ("), Fragment.comma(fragments), Fragment.lit(")")).query(PaymentsRow.`_rowParser`.all()).runUnchecked(c) } @@ -119,8 +119,8 @@ class PaymentsRepoImpl extends PaymentsRepo { override def update(row: PaymentsRow)(using c: Connection): Boolean = { val paymentId: PaymentsId = row.paymentId return sql"""update `payments` - set `order_id` = ${Fragment.encode(OrdersId.dbType, row.orderId)}, - `method_id` = ${Fragment.encode(PaymentMethodsId.dbType, row.methodId)}, + set `order_id` = ${Fragment.encode(OrdersId.mariaType, row.orderId)}, + `method_id` = ${Fragment.encode(PaymentMethodsId.mariaType, row.methodId)}, `transaction_id` = ${Fragment.encode(MariaTypes.varchar.nullable, row.transactionId)}, `amount` = ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, row.amount)}, `currency_code` = ${Fragment.encode(MariaTypes.char_, row.currencyCode)}, @@ -130,12 +130,12 @@ class PaymentsRepoImpl extends PaymentsRepo { `ip_address` = ${Fragment.encode(MariaTypes.inet6.nullable, row.ipAddress)}, `created_at` = ${Fragment.encode(MariaTypes.datetime, row.createdAt)}, `processed_at` = ${Fragment.encode(MariaTypes.datetime.nullable, row.processedAt)} - where `payment_id` = ${Fragment.encode(PaymentsId.dbType, paymentId)}""".update().runUnchecked(c) > 0 + where `payment_id` = ${Fragment.encode(PaymentsId.mariaType, paymentId)}""".update().runUnchecked(c) > 0 } override def upsert(unsaved: PaymentsRow)(using c: Connection): PaymentsRow = { sql"""INSERT INTO `payments`(`payment_id`, `order_id`, `method_id`, `transaction_id`, `amount`, `currency_code`, `status`, `processor_response`, `error_message`, `ip_address`, `created_at`, `processed_at`) - VALUES (${Fragment.encode(PaymentsId.dbType, unsaved.paymentId)}, ${Fragment.encode(OrdersId.dbType, unsaved.orderId)}, ${Fragment.encode(PaymentMethodsId.dbType, unsaved.methodId)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.transactionId)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.amount)}, ${Fragment.encode(MariaTypes.char_, unsaved.currencyCode)}, ${Fragment.encode(MariaTypes.text, unsaved.status)}, ${Fragment.encode(MariaTypes.json.nullable, unsaved.processorResponse)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.errorMessage)}, ${Fragment.encode(MariaTypes.inet6.nullable, unsaved.ipAddress)}, ${Fragment.encode(MariaTypes.datetime, unsaved.createdAt)}, ${Fragment.encode(MariaTypes.datetime.nullable, unsaved.processedAt)}) + VALUES (${Fragment.encode(PaymentsId.mariaType, unsaved.paymentId)}, ${Fragment.encode(OrdersId.mariaType, unsaved.orderId)}, ${Fragment.encode(PaymentMethodsId.mariaType, unsaved.methodId)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.transactionId)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.amount)}, ${Fragment.encode(MariaTypes.char_, unsaved.currencyCode)}, ${Fragment.encode(MariaTypes.text, unsaved.status)}, ${Fragment.encode(MariaTypes.json.nullable, unsaved.processorResponse)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.errorMessage)}, ${Fragment.encode(MariaTypes.inet6.nullable, unsaved.ipAddress)}, ${Fragment.encode(MariaTypes.datetime, unsaved.createdAt)}, ${Fragment.encode(MariaTypes.datetime.nullable, unsaved.processedAt)}) ON DUPLICATE KEY UPDATE `order_id` = VALUES(`order_id`), `method_id` = VALUES(`method_id`), `transaction_id` = VALUES(`transaction_id`), diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/payments/PaymentsRow.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/payments/PaymentsRow.scala index fabc8e919b..ad0fa8c303 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/payments/PaymentsRow.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/payments/PaymentsRow.scala @@ -123,5 +123,5 @@ case class PaymentsRow( } object PaymentsRow { - val `_rowParser`: RowParser[PaymentsRow] = RowParsers.of(PaymentsId.dbType, OrdersId.dbType, PaymentMethodsId.dbType, MariaTypes.varchar.nullable, ScalaDbTypes.MariaTypes.numeric, MariaTypes.char_, MariaTypes.text, MariaTypes.json.nullable, MariaTypes.varchar.nullable, MariaTypes.inet6.nullable, MariaTypes.datetime, MariaTypes.datetime.nullable)(PaymentsRow.apply)(row => Array[Any](row.paymentId, row.orderId, row.methodId, row.transactionId, row.amount, row.currencyCode, row.status, row.processorResponse, row.errorMessage, row.ipAddress, row.createdAt, row.processedAt)) + val `_rowParser`: RowParser[PaymentsRow] = RowParsers.of(PaymentsId.mariaType, OrdersId.mariaType, PaymentMethodsId.mariaType, MariaTypes.varchar.nullable, ScalaDbTypes.MariaTypes.numeric, MariaTypes.char_, MariaTypes.text, MariaTypes.json.nullable, MariaTypes.varchar.nullable, MariaTypes.inet6.nullable, MariaTypes.datetime, MariaTypes.datetime.nullable)(PaymentsRow.apply)(row => Array[Any](row.paymentId, row.orderId, row.methodId, row.transactionId, row.amount, row.currencyCode, row.status, row.processorResponse, row.errorMessage, row.ipAddress, row.createdAt, row.processedAt)) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/Binary16.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/Binary16.scala index 731d183a21..7abc2b8353 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/Binary16.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/Binary16.scala @@ -30,7 +30,7 @@ case class Binary16 private(@JsonValue value: Array[Byte]) extends BinaryN { object Binary16 { given bijection: Bijection[Binary16, Array[Byte]] = Bijection.apply[Binary16, Array[Byte]](_.value)(Binary16.apply) - given dbType: MariaType[Binary16] = MariaTypes.binary.bimap(Binary16.apply, _.value) + given mariaType: MariaType[Binary16] = MariaTypes.binary.bimap(Binary16.apply, _.value) def of(value: Array[Byte]): Option[Binary16] = (if (value.length <= 16) Some(new Binary16(value)) else None) diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/Binary32.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/Binary32.scala index 1a93aa73a4..88b960ec68 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/Binary32.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/Binary32.scala @@ -30,7 +30,7 @@ case class Binary32 private(@JsonValue value: Array[Byte]) extends BinaryN { object Binary32 { given bijection: Bijection[Binary32, Array[Byte]] = Bijection.apply[Binary32, Array[Byte]](_.value)(Binary32.apply) - given dbType: MariaType[Binary32] = MariaTypes.binary.bimap(Binary32.apply, _.value) + given mariaType: MariaType[Binary32] = MariaTypes.binary.bimap(Binary32.apply, _.value) def of(value: Array[Byte]): Option[Binary32] = (if (value.length <= 32) Some(new Binary32(value)) else None) diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/Binary64.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/Binary64.scala index 8f55df8214..2908e9309b 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/Binary64.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/Binary64.scala @@ -30,7 +30,7 @@ case class Binary64 private(@JsonValue value: Array[Byte]) extends BinaryN { object Binary64 { given bijection: Bijection[Binary64, Array[Byte]] = Bijection.apply[Binary64, Array[Byte]](_.value)(Binary64.apply) - given dbType: MariaType[Binary64] = MariaTypes.binary.bimap(Binary64.apply, _.value) + given mariaType: MariaType[Binary64] = MariaTypes.binary.bimap(Binary64.apply, _.value) def of(value: Array[Byte]): Option[Binary64] = (if (value.length <= 64) Some(new Binary64(value)) else None) diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/Decimal10_2.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/Decimal10_2.scala index 0fd77ed2b7..9c19b3f1b2 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/Decimal10_2.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/Decimal10_2.scala @@ -33,9 +33,9 @@ object Decimal10_2 { given bijection: Bijection[Decimal10_2, BigDecimal] = Bijection.apply[Decimal10_2, BigDecimal](_.value)(Decimal10_2.apply) - given dbType: MariaType[Decimal10_2] = ScalaDbTypes.MariaTypes.numeric.bimap(Decimal10_2.apply, _.value) + given mariaType: MariaType[Decimal10_2] = ScalaDbTypes.MariaTypes.numeric.bimap(Decimal10_2.apply, _.value) - def of(value: BigDecimal): Option[Decimal10_2] = { val scaled = value.setScale(2, scala.math.BigDecimal.RoundingMode.HALF_UP); if (scaled.precision <= 10) Some(new Decimal10_2(scaled)) else None } + def of(value: BigDecimal): Option[Decimal10_2] = { val scaled = value.setScale(2, BigDecimal.RoundingMode.HALF_UP); if (scaled.precision <= 10) Some(new Decimal10_2(scaled)) else None } def of(value: Int): Decimal10_2 = new Decimal10_2(BigDecimal(value)) @@ -43,5 +43,5 @@ object Decimal10_2 { def of(value: Double): Option[Decimal10_2] = Decimal10_2.of(BigDecimal(value)) - def unsafeForce(value: BigDecimal): Decimal10_2 = { val scaled = value.setScale(2, scala.math.BigDecimal.RoundingMode.HALF_UP); if (scaled.precision > 10) throw new IllegalArgumentException("Value exceeds precision(10, 2)"); new Decimal10_2(scaled) } + def unsafeForce(value: BigDecimal): Decimal10_2 = { val scaled = value.setScale(2, BigDecimal.RoundingMode.HALF_UP); if (scaled.precision > 10) throw new IllegalArgumentException("Value exceeds precision(10, 2)"); new Decimal10_2(scaled) } } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/Decimal12_4.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/Decimal12_4.scala index 2d3665dab0..acb3c67094 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/Decimal12_4.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/Decimal12_4.scala @@ -33,9 +33,9 @@ object Decimal12_4 { given bijection: Bijection[Decimal12_4, BigDecimal] = Bijection.apply[Decimal12_4, BigDecimal](_.value)(Decimal12_4.apply) - given dbType: MariaType[Decimal12_4] = ScalaDbTypes.MariaTypes.numeric.bimap(Decimal12_4.apply, _.value) + given mariaType: MariaType[Decimal12_4] = ScalaDbTypes.MariaTypes.numeric.bimap(Decimal12_4.apply, _.value) - def of(value: BigDecimal): Option[Decimal12_4] = { val scaled = value.setScale(4, scala.math.BigDecimal.RoundingMode.HALF_UP); if (scaled.precision <= 12) Some(new Decimal12_4(scaled)) else None } + def of(value: BigDecimal): Option[Decimal12_4] = { val scaled = value.setScale(4, BigDecimal.RoundingMode.HALF_UP); if (scaled.precision <= 12) Some(new Decimal12_4(scaled)) else None } def of(value: Int): Decimal12_4 = new Decimal12_4(BigDecimal(value)) @@ -43,5 +43,5 @@ object Decimal12_4 { def of(value: Double): Option[Decimal12_4] = Decimal12_4.of(BigDecimal(value)) - def unsafeForce(value: BigDecimal): Decimal12_4 = { val scaled = value.setScale(4, scala.math.BigDecimal.RoundingMode.HALF_UP); if (scaled.precision > 12) throw new IllegalArgumentException("Value exceeds precision(12, 4)"); new Decimal12_4(scaled) } + def unsafeForce(value: BigDecimal): Decimal12_4 = { val scaled = value.setScale(4, BigDecimal.RoundingMode.HALF_UP); if (scaled.precision > 12) throw new IllegalArgumentException("Value exceeds precision(12, 4)"); new Decimal12_4(scaled) } } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/Decimal18_4.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/Decimal18_4.scala index bb4d4807f6..fe2210b75a 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/Decimal18_4.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/Decimal18_4.scala @@ -33,9 +33,9 @@ object Decimal18_4 { given bijection: Bijection[Decimal18_4, BigDecimal] = Bijection.apply[Decimal18_4, BigDecimal](_.value)(Decimal18_4.apply) - given dbType: MariaType[Decimal18_4] = ScalaDbTypes.MariaTypes.numeric.bimap(Decimal18_4.apply, _.value) + given mariaType: MariaType[Decimal18_4] = ScalaDbTypes.MariaTypes.numeric.bimap(Decimal18_4.apply, _.value) - def of(value: BigDecimal): Option[Decimal18_4] = { val scaled = value.setScale(4, scala.math.BigDecimal.RoundingMode.HALF_UP); if (scaled.precision <= 18) Some(new Decimal18_4(scaled)) else None } + def of(value: BigDecimal): Option[Decimal18_4] = { val scaled = value.setScale(4, BigDecimal.RoundingMode.HALF_UP); if (scaled.precision <= 18) Some(new Decimal18_4(scaled)) else None } def of(value: Int): Decimal18_4 = new Decimal18_4(BigDecimal(value)) @@ -43,5 +43,5 @@ object Decimal18_4 { def of(value: Double): Option[Decimal18_4] = Decimal18_4.of(BigDecimal(value)) - def unsafeForce(value: BigDecimal): Decimal18_4 = { val scaled = value.setScale(4, scala.math.BigDecimal.RoundingMode.HALF_UP); if (scaled.precision > 18) throw new IllegalArgumentException("Value exceeds precision(18, 4)"); new Decimal18_4(scaled) } + def unsafeForce(value: BigDecimal): Decimal18_4 = { val scaled = value.setScale(4, BigDecimal.RoundingMode.HALF_UP); if (scaled.precision > 18) throw new IllegalArgumentException("Value exceeds precision(18, 4)"); new Decimal18_4(scaled) } } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/Decimal5_2.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/Decimal5_2.scala index 38bbdc59c6..a08f0b6cde 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/Decimal5_2.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/Decimal5_2.scala @@ -33,9 +33,9 @@ object Decimal5_2 { given bijection: Bijection[Decimal5_2, BigDecimal] = Bijection.apply[Decimal5_2, BigDecimal](_.value)(Decimal5_2.apply) - given dbType: MariaType[Decimal5_2] = ScalaDbTypes.MariaTypes.numeric.bimap(Decimal5_2.apply, _.value) + given mariaType: MariaType[Decimal5_2] = ScalaDbTypes.MariaTypes.numeric.bimap(Decimal5_2.apply, _.value) - def of(value: BigDecimal): Option[Decimal5_2] = { val scaled = value.setScale(2, scala.math.BigDecimal.RoundingMode.HALF_UP); if (scaled.precision <= 5) Some(new Decimal5_2(scaled)) else None } + def of(value: BigDecimal): Option[Decimal5_2] = { val scaled = value.setScale(2, BigDecimal.RoundingMode.HALF_UP); if (scaled.precision <= 5) Some(new Decimal5_2(scaled)) else None } def of(value: Int): Decimal5_2 = new Decimal5_2(BigDecimal(value)) @@ -43,5 +43,5 @@ object Decimal5_2 { def of(value: Double): Option[Decimal5_2] = Decimal5_2.of(BigDecimal(value)) - def unsafeForce(value: BigDecimal): Decimal5_2 = { val scaled = value.setScale(2, scala.math.BigDecimal.RoundingMode.HALF_UP); if (scaled.precision > 5) throw new IllegalArgumentException("Value exceeds precision(5, 2)"); new Decimal5_2(scaled) } + def unsafeForce(value: BigDecimal): Decimal5_2 = { val scaled = value.setScale(2, BigDecimal.RoundingMode.HALF_UP); if (scaled.precision > 5) throw new IllegalArgumentException("Value exceeds precision(5, 2)"); new Decimal5_2(scaled) } } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/Decimal8_2.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/Decimal8_2.scala index 5fdce4198c..44d6e0a1a5 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/Decimal8_2.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/Decimal8_2.scala @@ -33,9 +33,9 @@ object Decimal8_2 { given bijection: Bijection[Decimal8_2, BigDecimal] = Bijection.apply[Decimal8_2, BigDecimal](_.value)(Decimal8_2.apply) - given dbType: MariaType[Decimal8_2] = ScalaDbTypes.MariaTypes.numeric.bimap(Decimal8_2.apply, _.value) + given mariaType: MariaType[Decimal8_2] = ScalaDbTypes.MariaTypes.numeric.bimap(Decimal8_2.apply, _.value) - def of(value: BigDecimal): Option[Decimal8_2] = { val scaled = value.setScale(2, scala.math.BigDecimal.RoundingMode.HALF_UP); if (scaled.precision <= 8) Some(new Decimal8_2(scaled)) else None } + def of(value: BigDecimal): Option[Decimal8_2] = { val scaled = value.setScale(2, BigDecimal.RoundingMode.HALF_UP); if (scaled.precision <= 8) Some(new Decimal8_2(scaled)) else None } def of(value: Int): Decimal8_2 = new Decimal8_2(BigDecimal(value)) @@ -43,5 +43,5 @@ object Decimal8_2 { def of(value: Double): Option[Decimal8_2] = Decimal8_2.of(BigDecimal(value)) - def unsafeForce(value: BigDecimal): Decimal8_2 = { val scaled = value.setScale(2, scala.math.BigDecimal.RoundingMode.HALF_UP); if (scaled.precision > 8) throw new IllegalArgumentException("Value exceeds precision(8, 2)"); new Decimal8_2(scaled) } + def unsafeForce(value: BigDecimal): Decimal8_2 = { val scaled = value.setScale(2, BigDecimal.RoundingMode.HALF_UP); if (scaled.precision > 8) throw new IllegalArgumentException("Value exceeds precision(8, 2)"); new Decimal8_2(scaled) } } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/LocalDateTime3.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/LocalDateTime3.scala index f7bb2c3b9f..dd14adaf38 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/LocalDateTime3.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/LocalDateTime3.scala @@ -30,7 +30,7 @@ case class LocalDateTime3 private(@JsonValue value: LocalDateTime) extends Local object LocalDateTime3 { given bijection: Bijection[LocalDateTime3, LocalDateTime] = Bijection.apply[LocalDateTime3, LocalDateTime](_.value)(LocalDateTime3.apply) - given dbType: MariaType[LocalDateTime3] = MariaTypes.datetime.bimap(LocalDateTime3.apply, _.value) + given mariaType: MariaType[LocalDateTime3] = MariaTypes.datetime.bimap(LocalDateTime3.apply, _.value) def now: LocalDateTime3 = new LocalDateTime3(LocalDateTime.now().truncatedTo(ChronoUnit.MILLIS)) diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/LocalDateTime6.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/LocalDateTime6.scala index 00d88f9dff..9fccdfba3f 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/LocalDateTime6.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/LocalDateTime6.scala @@ -30,7 +30,7 @@ case class LocalDateTime6 private(@JsonValue value: LocalDateTime) extends Local object LocalDateTime6 { given bijection: Bijection[LocalDateTime6, LocalDateTime] = Bijection.apply[LocalDateTime6, LocalDateTime](_.value)(LocalDateTime6.apply) - given dbType: MariaType[LocalDateTime6] = MariaTypes.timestamp.bimap(LocalDateTime6.apply, _.value) + given mariaType: MariaType[LocalDateTime6] = MariaTypes.timestamp.bimap(LocalDateTime6.apply, _.value) def now: LocalDateTime6 = new LocalDateTime6(LocalDateTime.now().truncatedTo(ChronoUnit.MICROS)) diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/LocalTime3.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/LocalTime3.scala index b8d2d73d8d..bc0e7539b6 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/LocalTime3.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/LocalTime3.scala @@ -30,7 +30,7 @@ case class LocalTime3 private(@JsonValue value: LocalTime) extends LocalTimeN { object LocalTime3 { given bijection: Bijection[LocalTime3, LocalTime] = Bijection.apply[LocalTime3, LocalTime](_.value)(LocalTime3.apply) - given dbType: MariaType[LocalTime3] = MariaTypes.time.bimap(LocalTime3.apply, _.value) + given mariaType: MariaType[LocalTime3] = MariaTypes.time.bimap(LocalTime3.apply, _.value) def now: LocalTime3 = new LocalTime3(LocalTime.now().truncatedTo(ChronoUnit.MILLIS)) diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/LocalTime6.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/LocalTime6.scala index c10ad93706..b5e3ec75eb 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/LocalTime6.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/LocalTime6.scala @@ -30,7 +30,7 @@ case class LocalTime6 private(@JsonValue value: LocalTime) extends LocalTimeN { object LocalTime6 { given bijection: Bijection[LocalTime6, LocalTime] = Bijection.apply[LocalTime6, LocalTime](_.value)(LocalTime6.apply) - given dbType: MariaType[LocalTime6] = MariaTypes.time.bimap(LocalTime6.apply, _.value) + given mariaType: MariaType[LocalTime6] = MariaTypes.time.bimap(LocalTime6.apply, _.value) def now: LocalTime6 = new LocalTime6(LocalTime.now().truncatedTo(ChronoUnit.MICROS)) diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/PaddedString10.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/PaddedString10.scala index cbb7097277..07bf1cddce 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/PaddedString10.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/PaddedString10.scala @@ -31,7 +31,7 @@ case class PaddedString10 private(@JsonValue value: String) extends PaddedString object PaddedString10 { given bijection: Bijection[PaddedString10, String] = Bijection.apply[PaddedString10, String](_.value)(PaddedString10.apply) - given dbType: MariaType[PaddedString10] = MariaTypes.char_.bimap(PaddedString10.apply, _.value) + given mariaType: MariaType[PaddedString10] = MariaTypes.char_.bimap(PaddedString10.apply, _.value) def of(value: String): Option[PaddedString10] = (if (value.length <= 10) Some(new PaddedString10(String.format("%-10s", value))) else None) diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/String10.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/String10.scala index 4e07710cdc..8b2b0c9b8d 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/String10.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/String10.scala @@ -29,7 +29,7 @@ case class String10 private(@JsonValue value: String) extends StringN { object String10 { given bijection: Bijection[String10, String] = Bijection.apply[String10, String](_.value)(String10.apply) - given dbType: MariaType[String10] = MariaTypes.varchar.bimap(String10.apply, _.value) + given mariaType: MariaType[String10] = MariaTypes.varchar.bimap(String10.apply, _.value) def of(value: String): Option[String10] = (if (value.length <= 10) Some(new String10(value)) else None) diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/String100.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/String100.scala index 73cc20a076..9a6ad7fc68 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/String100.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/String100.scala @@ -29,7 +29,7 @@ case class String100 private(@JsonValue value: String) extends StringN { object String100 { given bijection: Bijection[String100, String] = Bijection.apply[String100, String](_.value)(String100.apply) - given dbType: MariaType[String100] = MariaTypes.varchar.bimap(String100.apply, _.value) + given mariaType: MariaType[String100] = MariaTypes.varchar.bimap(String100.apply, _.value) def of(value: String): Option[String100] = (if (value.length <= 100) Some(new String100(value)) else None) diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/String20.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/String20.scala index 2c82c73586..b0d19b2730 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/String20.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/String20.scala @@ -29,7 +29,7 @@ case class String20 private(@JsonValue value: String) extends StringN { object String20 { given bijection: Bijection[String20, String] = Bijection.apply[String20, String](_.value)(String20.apply) - given dbType: MariaType[String20] = MariaTypes.varchar.bimap(String20.apply, _.value) + given mariaType: MariaType[String20] = MariaTypes.varchar.bimap(String20.apply, _.value) def of(value: String): Option[String20] = (if (value.length <= 20) Some(new String20(value)) else None) diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/String255.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/String255.scala index a342419765..cf25901861 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/String255.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/String255.scala @@ -29,7 +29,7 @@ case class String255 private(@JsonValue value: String) extends StringN { object String255 { given bijection: Bijection[String255, String] = Bijection.apply[String255, String](_.value)(String255.apply) - given dbType: MariaType[String255] = MariaTypes.varchar.bimap(String255.apply, _.value) + given mariaType: MariaType[String255] = MariaTypes.varchar.bimap(String255.apply, _.value) def of(value: String): Option[String255] = (if (value.length <= 255) Some(new String255(value)) else None) diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/String50.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/String50.scala index 183716e609..3e80aa2938 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/String50.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/precisetypes/String50.scala @@ -29,7 +29,7 @@ case class String50 private(@JsonValue value: String) extends StringN { object String50 { given bijection: Bijection[String50, String] = Bijection.apply[String50, String](_.value)(String50.apply) - given dbType: MariaType[String50] = MariaTypes.varchar.bimap(String50.apply, _.value) + given mariaType: MariaType[String50] = MariaTypes.varchar.bimap(String50.apply, _.value) def of(value: String): Option[String50] = (if (value.length <= 50) Some(new String50(value)) else None) diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/precision_types/PrecisionTypesFields.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/precision_types/PrecisionTypesFields.scala index fe954b837e..33634fe264 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/precision_types/PrecisionTypesFields.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/precision_types/PrecisionTypesFields.scala @@ -45,7 +45,7 @@ class PrecisionTypesFields(val `_path`: java.util.List[Path]) extends TupleExpr2 None, None, (row, value) => row.copy(id = value), - PrecisionTypesId.dbType + PrecisionTypesId.mariaType ) } @@ -57,7 +57,7 @@ class PrecisionTypesFields(val `_path`: java.util.List[Path]) extends TupleExpr2 None, None, (row, value) => row.copy(string10 = value), - String10.dbType + String10.mariaType ) } @@ -69,7 +69,7 @@ class PrecisionTypesFields(val `_path`: java.util.List[Path]) extends TupleExpr2 None, None, (row, value) => row.copy(string20 = value), - String20.dbType + String20.mariaType ) } @@ -81,7 +81,7 @@ class PrecisionTypesFields(val `_path`: java.util.List[Path]) extends TupleExpr2 None, None, (row, value) => row.copy(string50 = value), - String50.dbType + String50.mariaType ) } @@ -93,7 +93,7 @@ class PrecisionTypesFields(val `_path`: java.util.List[Path]) extends TupleExpr2 None, None, (row, value) => row.copy(string100 = value), - String100.dbType + String100.mariaType ) } @@ -105,7 +105,7 @@ class PrecisionTypesFields(val `_path`: java.util.List[Path]) extends TupleExpr2 None, None, (row, value) => row.copy(string255 = value), - String255.dbType + String255.mariaType ) } @@ -117,7 +117,7 @@ class PrecisionTypesFields(val `_path`: java.util.List[Path]) extends TupleExpr2 None, None, (row, value) => row.copy(char10 = value), - PaddedString10.dbType + PaddedString10.mariaType ) } @@ -129,7 +129,7 @@ class PrecisionTypesFields(val `_path`: java.util.List[Path]) extends TupleExpr2 None, None, (row, value) => row.copy(decimal52 = value), - Decimal5_2.dbType + Decimal5_2.mariaType ) } @@ -141,7 +141,7 @@ class PrecisionTypesFields(val `_path`: java.util.List[Path]) extends TupleExpr2 None, None, (row, value) => row.copy(decimal102 = value), - Decimal10_2.dbType + Decimal10_2.mariaType ) } @@ -153,7 +153,7 @@ class PrecisionTypesFields(val `_path`: java.util.List[Path]) extends TupleExpr2 None, None, (row, value) => row.copy(decimal184 = value), - Decimal18_4.dbType + Decimal18_4.mariaType ) } @@ -165,7 +165,7 @@ class PrecisionTypesFields(val `_path`: java.util.List[Path]) extends TupleExpr2 None, None, (row, value) => row.copy(numeric82 = value), - Decimal8_2.dbType + Decimal8_2.mariaType ) } @@ -177,7 +177,7 @@ class PrecisionTypesFields(val `_path`: java.util.List[Path]) extends TupleExpr2 None, None, (row, value) => row.copy(numeric124 = value), - Decimal12_4.dbType + Decimal12_4.mariaType ) } @@ -189,7 +189,7 @@ class PrecisionTypesFields(val `_path`: java.util.List[Path]) extends TupleExpr2 None, None, (row, value) => row.copy(binary16 = value), - Binary16.dbType + Binary16.mariaType ) } @@ -201,7 +201,7 @@ class PrecisionTypesFields(val `_path`: java.util.List[Path]) extends TupleExpr2 None, None, (row, value) => row.copy(binary32 = value), - Binary32.dbType + Binary32.mariaType ) } @@ -213,7 +213,7 @@ class PrecisionTypesFields(val `_path`: java.util.List[Path]) extends TupleExpr2 None, None, (row, value) => row.copy(binary64 = value), - Binary64.dbType + Binary64.mariaType ) } @@ -237,7 +237,7 @@ class PrecisionTypesFields(val `_path`: java.util.List[Path]) extends TupleExpr2 None, None, (row, value) => row.copy(time3 = value), - LocalTime3.dbType + LocalTime3.mariaType ) } @@ -249,7 +249,7 @@ class PrecisionTypesFields(val `_path`: java.util.List[Path]) extends TupleExpr2 None, None, (row, value) => row.copy(time6 = value), - LocalTime6.dbType + LocalTime6.mariaType ) } @@ -273,7 +273,7 @@ class PrecisionTypesFields(val `_path`: java.util.List[Path]) extends TupleExpr2 None, None, (row, value) => row.copy(datetime3 = value), - LocalDateTime3.dbType + LocalDateTime3.mariaType ) } @@ -285,7 +285,7 @@ class PrecisionTypesFields(val `_path`: java.util.List[Path]) extends TupleExpr2 None, None, (row, value) => row.copy(datetime6 = value), - LocalDateTime6.dbType + LocalDateTime6.mariaType ) } @@ -309,7 +309,7 @@ class PrecisionTypesFields(val `_path`: java.util.List[Path]) extends TupleExpr2 None, None, (row, value) => row.copy(ts3 = value), - LocalDateTime3.dbType + LocalDateTime3.mariaType ) } @@ -321,7 +321,7 @@ class PrecisionTypesFields(val `_path`: java.util.List[Path]) extends TupleExpr2 None, None, (row, value) => row.copy(ts6 = value), - LocalDateTime6.dbType + LocalDateTime6.mariaType ) } diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/precision_types/PrecisionTypesId.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/precision_types/PrecisionTypesId.scala index 48e630ae89..d673c3cfce 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/precision_types/PrecisionTypesId.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/precision_types/PrecisionTypesId.scala @@ -16,5 +16,5 @@ case class PrecisionTypesId(@JsonValue value: Int) extends scala.AnyVal object PrecisionTypesId { given bijection: Bijection[PrecisionTypesId, Int] = Bijection.apply[PrecisionTypesId, Int](_.value)(PrecisionTypesId.apply) - given dbType: MariaType[PrecisionTypesId] = ScalaDbTypes.MariaTypes.int_.bimap(PrecisionTypesId.apply, _.value) + given mariaType: MariaType[PrecisionTypesId] = ScalaDbTypes.MariaTypes.int_.bimap(PrecisionTypesId.apply, _.value) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/precision_types/PrecisionTypesRepoImpl.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/precision_types/PrecisionTypesRepoImpl.scala index e16f4e8c9f..e7802f7ab6 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/precision_types/PrecisionTypesRepoImpl.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/precision_types/PrecisionTypesRepoImpl.scala @@ -36,17 +36,17 @@ import dev.typr.foundations.scala.Fragment.sql class PrecisionTypesRepoImpl extends PrecisionTypesRepo { override def delete: DeleteBuilder[PrecisionTypesFields, PrecisionTypesRow] = DeleteBuilder.of("`precision_types`", PrecisionTypesFields.structure, Dialect.MARIADB) - override def deleteById(id: PrecisionTypesId)(using c: Connection): Boolean = sql"delete from `precision_types` where `id` = ${Fragment.encode(PrecisionTypesId.dbType, id)}".update().runUnchecked(c) > 0 + override def deleteById(id: PrecisionTypesId)(using c: Connection): Boolean = sql"delete from `precision_types` where `id` = ${Fragment.encode(PrecisionTypesId.mariaType, id)}".update().runUnchecked(c) > 0 override def deleteByIds(ids: Array[PrecisionTypesId])(using c: Connection): Int = { val fragments: ListBuffer[Fragment] = ListBuffer() - ids.foreach { id => fragments.addOne(Fragment.encode(PrecisionTypesId.dbType, id)): @scala.annotation.nowarn } + ids.foreach { id => fragments.addOne(Fragment.encode(PrecisionTypesId.mariaType, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("delete from `precision_types` where `id` in ("), Fragment.comma(fragments), Fragment.lit(")")).update().runUnchecked(c) } override def insert(unsaved: PrecisionTypesRow)(using c: Connection): PrecisionTypesRow = { sql"""insert into `precision_types`(`string10`, `string20`, `string50`, `string100`, `string255`, `char10`, `decimal5_2`, `decimal10_2`, `decimal18_4`, `numeric8_2`, `numeric12_4`, `binary16`, `binary32`, `binary64`, `time0`, `time3`, `time6`, `datetime0`, `datetime3`, `datetime6`, `ts0`, `ts3`, `ts6`) - values (${Fragment.encode(String10.dbType, unsaved.string10)}, ${Fragment.encode(String20.dbType, unsaved.string20)}, ${Fragment.encode(String50.dbType, unsaved.string50)}, ${Fragment.encode(String100.dbType, unsaved.string100)}, ${Fragment.encode(String255.dbType, unsaved.string255)}, ${Fragment.encode(PaddedString10.dbType, unsaved.char10)}, ${Fragment.encode(Decimal5_2.dbType, unsaved.decimal52)}, ${Fragment.encode(Decimal10_2.dbType, unsaved.decimal102)}, ${Fragment.encode(Decimal18_4.dbType, unsaved.decimal184)}, ${Fragment.encode(Decimal8_2.dbType, unsaved.numeric82)}, ${Fragment.encode(Decimal12_4.dbType, unsaved.numeric124)}, ${Fragment.encode(Binary16.dbType, unsaved.binary16)}, ${Fragment.encode(Binary32.dbType, unsaved.binary32)}, ${Fragment.encode(Binary64.dbType, unsaved.binary64)}, ${Fragment.encode(MariaTypes.time, unsaved.time0)}, ${Fragment.encode(LocalTime3.dbType, unsaved.time3)}, ${Fragment.encode(LocalTime6.dbType, unsaved.time6)}, ${Fragment.encode(MariaTypes.datetime, unsaved.datetime0)}, ${Fragment.encode(LocalDateTime3.dbType, unsaved.datetime3)}, ${Fragment.encode(LocalDateTime6.dbType, unsaved.datetime6)}, ${Fragment.encode(MariaTypes.timestamp, unsaved.ts0)}, ${Fragment.encode(LocalDateTime3.dbType, unsaved.ts3)}, ${Fragment.encode(LocalDateTime6.dbType, unsaved.ts6)}) + values (${Fragment.encode(String10.mariaType, unsaved.string10)}, ${Fragment.encode(String20.mariaType, unsaved.string20)}, ${Fragment.encode(String50.mariaType, unsaved.string50)}, ${Fragment.encode(String100.mariaType, unsaved.string100)}, ${Fragment.encode(String255.mariaType, unsaved.string255)}, ${Fragment.encode(PaddedString10.mariaType, unsaved.char10)}, ${Fragment.encode(Decimal5_2.mariaType, unsaved.decimal52)}, ${Fragment.encode(Decimal10_2.mariaType, unsaved.decimal102)}, ${Fragment.encode(Decimal18_4.mariaType, unsaved.decimal184)}, ${Fragment.encode(Decimal8_2.mariaType, unsaved.numeric82)}, ${Fragment.encode(Decimal12_4.mariaType, unsaved.numeric124)}, ${Fragment.encode(Binary16.mariaType, unsaved.binary16)}, ${Fragment.encode(Binary32.mariaType, unsaved.binary32)}, ${Fragment.encode(Binary64.mariaType, unsaved.binary64)}, ${Fragment.encode(MariaTypes.time, unsaved.time0)}, ${Fragment.encode(LocalTime3.mariaType, unsaved.time3)}, ${Fragment.encode(LocalTime6.mariaType, unsaved.time6)}, ${Fragment.encode(MariaTypes.datetime, unsaved.datetime0)}, ${Fragment.encode(LocalDateTime3.mariaType, unsaved.datetime3)}, ${Fragment.encode(LocalDateTime6.mariaType, unsaved.datetime6)}, ${Fragment.encode(MariaTypes.timestamp, unsaved.ts0)}, ${Fragment.encode(LocalDateTime3.mariaType, unsaved.ts3)}, ${Fragment.encode(LocalDateTime6.mariaType, unsaved.ts6)}) RETURNING `id`, `string10`, `string20`, `string50`, `string100`, `string255`, `char10`, `decimal5_2`, `decimal10_2`, `decimal18_4`, `numeric8_2`, `numeric12_4`, `binary16`, `binary32`, `binary64`, `time0`, `time3`, `time6`, `datetime0`, `datetime3`, `datetime6`, `ts0`, `ts3`, `ts6` """ .updateReturning(PrecisionTypesRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -56,56 +56,56 @@ class PrecisionTypesRepoImpl extends PrecisionTypesRepo { val columns: ListBuffer[Fragment] = ListBuffer() val values: ListBuffer[Fragment] = ListBuffer() columns.addOne(Fragment.lit("`string10`")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(String10.dbType, unsaved.string10)}"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(String10.mariaType, unsaved.string10)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit("`string20`")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(String20.dbType, unsaved.string20)}"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(String20.mariaType, unsaved.string20)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit("`string50`")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(String50.dbType, unsaved.string50)}"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(String50.mariaType, unsaved.string50)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit("`string100`")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(String100.dbType, unsaved.string100)}"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(String100.mariaType, unsaved.string100)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit("`string255`")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(String255.dbType, unsaved.string255)}"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(String255.mariaType, unsaved.string255)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit("`char10`")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(PaddedString10.dbType, unsaved.char10)}"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(PaddedString10.mariaType, unsaved.char10)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit("`decimal5_2`")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(Decimal5_2.dbType, unsaved.decimal52)}"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(Decimal5_2.mariaType, unsaved.decimal52)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit("`decimal10_2`")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(Decimal10_2.dbType, unsaved.decimal102)}"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(Decimal10_2.mariaType, unsaved.decimal102)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit("`decimal18_4`")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(Decimal18_4.dbType, unsaved.decimal184)}"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(Decimal18_4.mariaType, unsaved.decimal184)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit("`numeric8_2`")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(Decimal8_2.dbType, unsaved.numeric82)}"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(Decimal8_2.mariaType, unsaved.numeric82)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit("`numeric12_4`")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(Decimal12_4.dbType, unsaved.numeric124)}"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(Decimal12_4.mariaType, unsaved.numeric124)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit("`binary16`")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(Binary16.dbType, unsaved.binary16)}"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(Binary16.mariaType, unsaved.binary16)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit("`binary32`")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(Binary32.dbType, unsaved.binary32)}"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(Binary32.mariaType, unsaved.binary32)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit("`binary64`")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(Binary64.dbType, unsaved.binary64)}"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(Binary64.mariaType, unsaved.binary64)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit("`time0`")): @scala.annotation.nowarn values.addOne(sql"${Fragment.encode(MariaTypes.time, unsaved.time0)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit("`time3`")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(LocalTime3.dbType, unsaved.time3)}"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(LocalTime3.mariaType, unsaved.time3)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit("`time6`")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(LocalTime6.dbType, unsaved.time6)}"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(LocalTime6.mariaType, unsaved.time6)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit("`datetime0`")): @scala.annotation.nowarn values.addOne(sql"${Fragment.encode(MariaTypes.datetime, unsaved.datetime0)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit("`datetime3`")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(LocalDateTime3.dbType, unsaved.datetime3)}"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(LocalDateTime3.mariaType, unsaved.datetime3)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit("`datetime6`")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(LocalDateTime6.dbType, unsaved.datetime6)}"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(LocalDateTime6.mariaType, unsaved.datetime6)}"): @scala.annotation.nowarn unsaved.ts0.visit( { }, value => { columns.addOne(Fragment.lit("`ts0`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(MariaTypes.timestamp, value)}"): @scala.annotation.nowarn } ); unsaved.ts3.visit( { }, - value => { columns.addOne(Fragment.lit("`ts3`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(LocalDateTime3.dbType, value)}"): @scala.annotation.nowarn } + value => { columns.addOne(Fragment.lit("`ts3`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(LocalDateTime3.mariaType, value)}"): @scala.annotation.nowarn } ); unsaved.ts6.visit( { }, - value => { columns.addOne(Fragment.lit("`ts6`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(LocalDateTime6.dbType, value)}"): @scala.annotation.nowarn } + value => { columns.addOne(Fragment.lit("`ts6`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(LocalDateTime6.mariaType, value)}"): @scala.annotation.nowarn } ); val q: Fragment = { sql"""insert into `precision_types`(${Fragment.comma(columns)}) @@ -127,12 +127,12 @@ class PrecisionTypesRepoImpl extends PrecisionTypesRepo { override def selectById(id: PrecisionTypesId)(using c: Connection): Option[PrecisionTypesRow] = { sql"""select `id`, `string10`, `string20`, `string50`, `string100`, `string255`, `char10`, `decimal5_2`, `decimal10_2`, `decimal18_4`, `numeric8_2`, `numeric12_4`, `binary16`, `binary32`, `binary64`, `time0`, `time3`, `time6`, `datetime0`, `datetime3`, `datetime6`, `ts0`, `ts3`, `ts6` from `precision_types` - where `id` = ${Fragment.encode(PrecisionTypesId.dbType, id)}""".query(PrecisionTypesRow.`_rowParser`.first()).runUnchecked(c) + where `id` = ${Fragment.encode(PrecisionTypesId.mariaType, id)}""".query(PrecisionTypesRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(ids: Array[PrecisionTypesId])(using c: Connection): List[PrecisionTypesRow] = { val fragments: ListBuffer[Fragment] = ListBuffer() - ids.foreach { id => fragments.addOne(Fragment.encode(PrecisionTypesId.dbType, id)): @scala.annotation.nowarn } + ids.foreach { id => fragments.addOne(Fragment.encode(PrecisionTypesId.mariaType, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("select `id`, `string10`, `string20`, `string50`, `string100`, `string255`, `char10`, `decimal5_2`, `decimal10_2`, `decimal18_4`, `numeric8_2`, `numeric12_4`, `binary16`, `binary32`, `binary64`, `time0`, `time3`, `time6`, `datetime0`, `datetime3`, `datetime6`, `ts0`, `ts3`, `ts6` from `precision_types` where `id` in ("), Fragment.comma(fragments), Fragment.lit(")")).query(PrecisionTypesRow.`_rowParser`.all()).runUnchecked(c) } @@ -147,35 +147,35 @@ class PrecisionTypesRepoImpl extends PrecisionTypesRepo { override def update(row: PrecisionTypesRow)(using c: Connection): Boolean = { val id: PrecisionTypesId = row.id return sql"""update `precision_types` - set `string10` = ${Fragment.encode(String10.dbType, row.string10)}, - `string20` = ${Fragment.encode(String20.dbType, row.string20)}, - `string50` = ${Fragment.encode(String50.dbType, row.string50)}, - `string100` = ${Fragment.encode(String100.dbType, row.string100)}, - `string255` = ${Fragment.encode(String255.dbType, row.string255)}, - `char10` = ${Fragment.encode(PaddedString10.dbType, row.char10)}, - `decimal5_2` = ${Fragment.encode(Decimal5_2.dbType, row.decimal52)}, - `decimal10_2` = ${Fragment.encode(Decimal10_2.dbType, row.decimal102)}, - `decimal18_4` = ${Fragment.encode(Decimal18_4.dbType, row.decimal184)}, - `numeric8_2` = ${Fragment.encode(Decimal8_2.dbType, row.numeric82)}, - `numeric12_4` = ${Fragment.encode(Decimal12_4.dbType, row.numeric124)}, - `binary16` = ${Fragment.encode(Binary16.dbType, row.binary16)}, - `binary32` = ${Fragment.encode(Binary32.dbType, row.binary32)}, - `binary64` = ${Fragment.encode(Binary64.dbType, row.binary64)}, + set `string10` = ${Fragment.encode(String10.mariaType, row.string10)}, + `string20` = ${Fragment.encode(String20.mariaType, row.string20)}, + `string50` = ${Fragment.encode(String50.mariaType, row.string50)}, + `string100` = ${Fragment.encode(String100.mariaType, row.string100)}, + `string255` = ${Fragment.encode(String255.mariaType, row.string255)}, + `char10` = ${Fragment.encode(PaddedString10.mariaType, row.char10)}, + `decimal5_2` = ${Fragment.encode(Decimal5_2.mariaType, row.decimal52)}, + `decimal10_2` = ${Fragment.encode(Decimal10_2.mariaType, row.decimal102)}, + `decimal18_4` = ${Fragment.encode(Decimal18_4.mariaType, row.decimal184)}, + `numeric8_2` = ${Fragment.encode(Decimal8_2.mariaType, row.numeric82)}, + `numeric12_4` = ${Fragment.encode(Decimal12_4.mariaType, row.numeric124)}, + `binary16` = ${Fragment.encode(Binary16.mariaType, row.binary16)}, + `binary32` = ${Fragment.encode(Binary32.mariaType, row.binary32)}, + `binary64` = ${Fragment.encode(Binary64.mariaType, row.binary64)}, `time0` = ${Fragment.encode(MariaTypes.time, row.time0)}, - `time3` = ${Fragment.encode(LocalTime3.dbType, row.time3)}, - `time6` = ${Fragment.encode(LocalTime6.dbType, row.time6)}, + `time3` = ${Fragment.encode(LocalTime3.mariaType, row.time3)}, + `time6` = ${Fragment.encode(LocalTime6.mariaType, row.time6)}, `datetime0` = ${Fragment.encode(MariaTypes.datetime, row.datetime0)}, - `datetime3` = ${Fragment.encode(LocalDateTime3.dbType, row.datetime3)}, - `datetime6` = ${Fragment.encode(LocalDateTime6.dbType, row.datetime6)}, + `datetime3` = ${Fragment.encode(LocalDateTime3.mariaType, row.datetime3)}, + `datetime6` = ${Fragment.encode(LocalDateTime6.mariaType, row.datetime6)}, `ts0` = ${Fragment.encode(MariaTypes.timestamp, row.ts0)}, - `ts3` = ${Fragment.encode(LocalDateTime3.dbType, row.ts3)}, - `ts6` = ${Fragment.encode(LocalDateTime6.dbType, row.ts6)} - where `id` = ${Fragment.encode(PrecisionTypesId.dbType, id)}""".update().runUnchecked(c) > 0 + `ts3` = ${Fragment.encode(LocalDateTime3.mariaType, row.ts3)}, + `ts6` = ${Fragment.encode(LocalDateTime6.mariaType, row.ts6)} + where `id` = ${Fragment.encode(PrecisionTypesId.mariaType, id)}""".update().runUnchecked(c) > 0 } override def upsert(unsaved: PrecisionTypesRow)(using c: Connection): PrecisionTypesRow = { sql"""INSERT INTO `precision_types`(`id`, `string10`, `string20`, `string50`, `string100`, `string255`, `char10`, `decimal5_2`, `decimal10_2`, `decimal18_4`, `numeric8_2`, `numeric12_4`, `binary16`, `binary32`, `binary64`, `time0`, `time3`, `time6`, `datetime0`, `datetime3`, `datetime6`, `ts0`, `ts3`, `ts6`) - VALUES (${Fragment.encode(PrecisionTypesId.dbType, unsaved.id)}, ${Fragment.encode(String10.dbType, unsaved.string10)}, ${Fragment.encode(String20.dbType, unsaved.string20)}, ${Fragment.encode(String50.dbType, unsaved.string50)}, ${Fragment.encode(String100.dbType, unsaved.string100)}, ${Fragment.encode(String255.dbType, unsaved.string255)}, ${Fragment.encode(PaddedString10.dbType, unsaved.char10)}, ${Fragment.encode(Decimal5_2.dbType, unsaved.decimal52)}, ${Fragment.encode(Decimal10_2.dbType, unsaved.decimal102)}, ${Fragment.encode(Decimal18_4.dbType, unsaved.decimal184)}, ${Fragment.encode(Decimal8_2.dbType, unsaved.numeric82)}, ${Fragment.encode(Decimal12_4.dbType, unsaved.numeric124)}, ${Fragment.encode(Binary16.dbType, unsaved.binary16)}, ${Fragment.encode(Binary32.dbType, unsaved.binary32)}, ${Fragment.encode(Binary64.dbType, unsaved.binary64)}, ${Fragment.encode(MariaTypes.time, unsaved.time0)}, ${Fragment.encode(LocalTime3.dbType, unsaved.time3)}, ${Fragment.encode(LocalTime6.dbType, unsaved.time6)}, ${Fragment.encode(MariaTypes.datetime, unsaved.datetime0)}, ${Fragment.encode(LocalDateTime3.dbType, unsaved.datetime3)}, ${Fragment.encode(LocalDateTime6.dbType, unsaved.datetime6)}, ${Fragment.encode(MariaTypes.timestamp, unsaved.ts0)}, ${Fragment.encode(LocalDateTime3.dbType, unsaved.ts3)}, ${Fragment.encode(LocalDateTime6.dbType, unsaved.ts6)}) + VALUES (${Fragment.encode(PrecisionTypesId.mariaType, unsaved.id)}, ${Fragment.encode(String10.mariaType, unsaved.string10)}, ${Fragment.encode(String20.mariaType, unsaved.string20)}, ${Fragment.encode(String50.mariaType, unsaved.string50)}, ${Fragment.encode(String100.mariaType, unsaved.string100)}, ${Fragment.encode(String255.mariaType, unsaved.string255)}, ${Fragment.encode(PaddedString10.mariaType, unsaved.char10)}, ${Fragment.encode(Decimal5_2.mariaType, unsaved.decimal52)}, ${Fragment.encode(Decimal10_2.mariaType, unsaved.decimal102)}, ${Fragment.encode(Decimal18_4.mariaType, unsaved.decimal184)}, ${Fragment.encode(Decimal8_2.mariaType, unsaved.numeric82)}, ${Fragment.encode(Decimal12_4.mariaType, unsaved.numeric124)}, ${Fragment.encode(Binary16.mariaType, unsaved.binary16)}, ${Fragment.encode(Binary32.mariaType, unsaved.binary32)}, ${Fragment.encode(Binary64.mariaType, unsaved.binary64)}, ${Fragment.encode(MariaTypes.time, unsaved.time0)}, ${Fragment.encode(LocalTime3.mariaType, unsaved.time3)}, ${Fragment.encode(LocalTime6.mariaType, unsaved.time6)}, ${Fragment.encode(MariaTypes.datetime, unsaved.datetime0)}, ${Fragment.encode(LocalDateTime3.mariaType, unsaved.datetime3)}, ${Fragment.encode(LocalDateTime6.mariaType, unsaved.datetime6)}, ${Fragment.encode(MariaTypes.timestamp, unsaved.ts0)}, ${Fragment.encode(LocalDateTime3.mariaType, unsaved.ts3)}, ${Fragment.encode(LocalDateTime6.mariaType, unsaved.ts6)}) ON DUPLICATE KEY UPDATE `string10` = VALUES(`string10`), `string20` = VALUES(`string20`), `string50` = VALUES(`string50`), diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/precision_types/PrecisionTypesRow.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/precision_types/PrecisionTypesRow.scala index a05b8478b6..40d64e15cc 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/precision_types/PrecisionTypesRow.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/precision_types/PrecisionTypesRow.scala @@ -175,5 +175,5 @@ case class PrecisionTypesRow( } object PrecisionTypesRow { - val `_rowParser`: RowParser[PrecisionTypesRow] = RowParsers.of(PrecisionTypesId.dbType, String10.dbType, String20.dbType, String50.dbType, String100.dbType, String255.dbType, PaddedString10.dbType, Decimal5_2.dbType, Decimal10_2.dbType, Decimal18_4.dbType, Decimal8_2.dbType, Decimal12_4.dbType, Binary16.dbType, Binary32.dbType, Binary64.dbType, MariaTypes.time, LocalTime3.dbType, LocalTime6.dbType, MariaTypes.datetime, LocalDateTime3.dbType, LocalDateTime6.dbType, MariaTypes.timestamp, LocalDateTime3.dbType, LocalDateTime6.dbType)(PrecisionTypesRow.apply)(row => Array[Any](row.id, row.string10, row.string20, row.string50, row.string100, row.string255, row.char10, row.decimal52, row.decimal102, row.decimal184, row.numeric82, row.numeric124, row.binary16, row.binary32, row.binary64, row.time0, row.time3, row.time6, row.datetime0, row.datetime3, row.datetime6, row.ts0, row.ts3, row.ts6)) + val `_rowParser`: RowParser[PrecisionTypesRow] = RowParsers.of(PrecisionTypesId.mariaType, String10.mariaType, String20.mariaType, String50.mariaType, String100.mariaType, String255.mariaType, PaddedString10.mariaType, Decimal5_2.mariaType, Decimal10_2.mariaType, Decimal18_4.mariaType, Decimal8_2.mariaType, Decimal12_4.mariaType, Binary16.mariaType, Binary32.mariaType, Binary64.mariaType, MariaTypes.time, LocalTime3.mariaType, LocalTime6.mariaType, MariaTypes.datetime, LocalDateTime3.mariaType, LocalDateTime6.mariaType, MariaTypes.timestamp, LocalDateTime3.mariaType, LocalDateTime6.mariaType)(PrecisionTypesRow.apply)(row => Array[Any](row.id, row.string10, row.string20, row.string50, row.string100, row.string255, row.char10, row.decimal52, row.decimal102, row.decimal184, row.numeric82, row.numeric124, row.binary16, row.binary32, row.binary64, row.time0, row.time3, row.time6, row.datetime0, row.datetime3, row.datetime6, row.ts0, row.ts3, row.ts6)) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullFields.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullFields.scala index dbb622c8e0..77e71ac0a9 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullFields.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullFields.scala @@ -45,7 +45,7 @@ class PrecisionTypesNullFields(val `_path`: java.util.List[Path]) extends TupleE None, None, (row, value) => row.copy(id = value), - PrecisionTypesNullId.dbType + PrecisionTypesNullId.mariaType ) } @@ -57,7 +57,7 @@ class PrecisionTypesNullFields(val `_path`: java.util.List[Path]) extends TupleE None, None, (row, value) => row.copy(string10 = value), - String10.dbType + String10.mariaType ) } @@ -69,7 +69,7 @@ class PrecisionTypesNullFields(val `_path`: java.util.List[Path]) extends TupleE None, None, (row, value) => row.copy(string20 = value), - String20.dbType + String20.mariaType ) } @@ -81,7 +81,7 @@ class PrecisionTypesNullFields(val `_path`: java.util.List[Path]) extends TupleE None, None, (row, value) => row.copy(string50 = value), - String50.dbType + String50.mariaType ) } @@ -93,7 +93,7 @@ class PrecisionTypesNullFields(val `_path`: java.util.List[Path]) extends TupleE None, None, (row, value) => row.copy(string100 = value), - String100.dbType + String100.mariaType ) } @@ -105,7 +105,7 @@ class PrecisionTypesNullFields(val `_path`: java.util.List[Path]) extends TupleE None, None, (row, value) => row.copy(string255 = value), - String255.dbType + String255.mariaType ) } @@ -117,7 +117,7 @@ class PrecisionTypesNullFields(val `_path`: java.util.List[Path]) extends TupleE None, None, (row, value) => row.copy(char10 = value), - PaddedString10.dbType + PaddedString10.mariaType ) } @@ -129,7 +129,7 @@ class PrecisionTypesNullFields(val `_path`: java.util.List[Path]) extends TupleE None, None, (row, value) => row.copy(decimal52 = value), - Decimal5_2.dbType + Decimal5_2.mariaType ) } @@ -141,7 +141,7 @@ class PrecisionTypesNullFields(val `_path`: java.util.List[Path]) extends TupleE None, None, (row, value) => row.copy(decimal102 = value), - Decimal10_2.dbType + Decimal10_2.mariaType ) } @@ -153,7 +153,7 @@ class PrecisionTypesNullFields(val `_path`: java.util.List[Path]) extends TupleE None, None, (row, value) => row.copy(decimal184 = value), - Decimal18_4.dbType + Decimal18_4.mariaType ) } @@ -165,7 +165,7 @@ class PrecisionTypesNullFields(val `_path`: java.util.List[Path]) extends TupleE None, None, (row, value) => row.copy(numeric82 = value), - Decimal8_2.dbType + Decimal8_2.mariaType ) } @@ -177,7 +177,7 @@ class PrecisionTypesNullFields(val `_path`: java.util.List[Path]) extends TupleE None, None, (row, value) => row.copy(numeric124 = value), - Decimal12_4.dbType + Decimal12_4.mariaType ) } @@ -189,7 +189,7 @@ class PrecisionTypesNullFields(val `_path`: java.util.List[Path]) extends TupleE None, None, (row, value) => row.copy(binary16 = value), - Binary16.dbType + Binary16.mariaType ) } @@ -201,7 +201,7 @@ class PrecisionTypesNullFields(val `_path`: java.util.List[Path]) extends TupleE None, None, (row, value) => row.copy(binary32 = value), - Binary32.dbType + Binary32.mariaType ) } @@ -213,7 +213,7 @@ class PrecisionTypesNullFields(val `_path`: java.util.List[Path]) extends TupleE None, None, (row, value) => row.copy(binary64 = value), - Binary64.dbType + Binary64.mariaType ) } @@ -237,7 +237,7 @@ class PrecisionTypesNullFields(val `_path`: java.util.List[Path]) extends TupleE None, None, (row, value) => row.copy(time3 = value), - LocalTime3.dbType + LocalTime3.mariaType ) } @@ -249,7 +249,7 @@ class PrecisionTypesNullFields(val `_path`: java.util.List[Path]) extends TupleE None, None, (row, value) => row.copy(time6 = value), - LocalTime6.dbType + LocalTime6.mariaType ) } @@ -273,7 +273,7 @@ class PrecisionTypesNullFields(val `_path`: java.util.List[Path]) extends TupleE None, None, (row, value) => row.copy(datetime3 = value), - LocalDateTime3.dbType + LocalDateTime3.mariaType ) } @@ -285,7 +285,7 @@ class PrecisionTypesNullFields(val `_path`: java.util.List[Path]) extends TupleE None, None, (row, value) => row.copy(datetime6 = value), - LocalDateTime6.dbType + LocalDateTime6.mariaType ) } @@ -309,7 +309,7 @@ class PrecisionTypesNullFields(val `_path`: java.util.List[Path]) extends TupleE None, None, (row, value) => row.copy(ts3 = value), - LocalDateTime3.dbType + LocalDateTime3.mariaType ) } @@ -321,7 +321,7 @@ class PrecisionTypesNullFields(val `_path`: java.util.List[Path]) extends TupleE None, None, (row, value) => row.copy(ts6 = value), - LocalDateTime6.dbType + LocalDateTime6.mariaType ) } diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullId.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullId.scala index 51f8a85dbd..ad487fa795 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullId.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullId.scala @@ -16,5 +16,5 @@ case class PrecisionTypesNullId(@JsonValue value: Int) extends scala.AnyVal object PrecisionTypesNullId { given bijection: Bijection[PrecisionTypesNullId, Int] = Bijection.apply[PrecisionTypesNullId, Int](_.value)(PrecisionTypesNullId.apply) - given dbType: MariaType[PrecisionTypesNullId] = ScalaDbTypes.MariaTypes.int_.bimap(PrecisionTypesNullId.apply, _.value) + given mariaType: MariaType[PrecisionTypesNullId] = ScalaDbTypes.MariaTypes.int_.bimap(PrecisionTypesNullId.apply, _.value) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullRepoImpl.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullRepoImpl.scala index 38e099cbbf..073d03efb8 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullRepoImpl.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullRepoImpl.scala @@ -37,17 +37,17 @@ import dev.typr.foundations.scala.Fragment.sql class PrecisionTypesNullRepoImpl extends PrecisionTypesNullRepo { override def delete: DeleteBuilder[PrecisionTypesNullFields, PrecisionTypesNullRow] = DeleteBuilder.of("`precision_types_null`", PrecisionTypesNullFields.structure, Dialect.MARIADB) - override def deleteById(id: PrecisionTypesNullId)(using c: Connection): Boolean = sql"delete from `precision_types_null` where `id` = ${Fragment.encode(PrecisionTypesNullId.dbType, id)}".update().runUnchecked(c) > 0 + override def deleteById(id: PrecisionTypesNullId)(using c: Connection): Boolean = sql"delete from `precision_types_null` where `id` = ${Fragment.encode(PrecisionTypesNullId.mariaType, id)}".update().runUnchecked(c) > 0 override def deleteByIds(ids: Array[PrecisionTypesNullId])(using c: Connection): Int = { val fragments: ListBuffer[Fragment] = ListBuffer() - ids.foreach { id => fragments.addOne(Fragment.encode(PrecisionTypesNullId.dbType, id)): @scala.annotation.nowarn } + ids.foreach { id => fragments.addOne(Fragment.encode(PrecisionTypesNullId.mariaType, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("delete from `precision_types_null` where `id` in ("), Fragment.comma(fragments), Fragment.lit(")")).update().runUnchecked(c) } override def insert(unsaved: PrecisionTypesNullRow)(using c: Connection): PrecisionTypesNullRow = { sql"""insert into `precision_types_null`(`string10`, `string20`, `string50`, `string100`, `string255`, `char10`, `decimal5_2`, `decimal10_2`, `decimal18_4`, `numeric8_2`, `numeric12_4`, `binary16`, `binary32`, `binary64`, `time0`, `time3`, `time6`, `datetime0`, `datetime3`, `datetime6`, `ts0`, `ts3`, `ts6`) - values (${Fragment.encode(String10.dbType.nullable, unsaved.string10)}, ${Fragment.encode(String20.dbType.nullable, unsaved.string20)}, ${Fragment.encode(String50.dbType.nullable, unsaved.string50)}, ${Fragment.encode(String100.dbType.nullable, unsaved.string100)}, ${Fragment.encode(String255.dbType.nullable, unsaved.string255)}, ${Fragment.encode(PaddedString10.dbType.nullable, unsaved.char10)}, ${Fragment.encode(Decimal5_2.dbType.nullable, unsaved.decimal52)}, ${Fragment.encode(Decimal10_2.dbType.nullable, unsaved.decimal102)}, ${Fragment.encode(Decimal18_4.dbType.nullable, unsaved.decimal184)}, ${Fragment.encode(Decimal8_2.dbType.nullable, unsaved.numeric82)}, ${Fragment.encode(Decimal12_4.dbType.nullable, unsaved.numeric124)}, ${Fragment.encode(Binary16.dbType.nullable, unsaved.binary16)}, ${Fragment.encode(Binary32.dbType.nullable, unsaved.binary32)}, ${Fragment.encode(Binary64.dbType.nullable, unsaved.binary64)}, ${Fragment.encode(MariaTypes.time.nullable, unsaved.time0)}, ${Fragment.encode(LocalTime3.dbType.nullable, unsaved.time3)}, ${Fragment.encode(LocalTime6.dbType.nullable, unsaved.time6)}, ${Fragment.encode(MariaTypes.datetime.nullable, unsaved.datetime0)}, ${Fragment.encode(LocalDateTime3.dbType.nullable, unsaved.datetime3)}, ${Fragment.encode(LocalDateTime6.dbType.nullable, unsaved.datetime6)}, ${Fragment.encode(MariaTypes.timestamp.nullable, unsaved.ts0)}, ${Fragment.encode(LocalDateTime3.dbType.nullable, unsaved.ts3)}, ${Fragment.encode(LocalDateTime6.dbType.nullable, unsaved.ts6)}) + values (${Fragment.encode(String10.mariaType.nullable, unsaved.string10)}, ${Fragment.encode(String20.mariaType.nullable, unsaved.string20)}, ${Fragment.encode(String50.mariaType.nullable, unsaved.string50)}, ${Fragment.encode(String100.mariaType.nullable, unsaved.string100)}, ${Fragment.encode(String255.mariaType.nullable, unsaved.string255)}, ${Fragment.encode(PaddedString10.mariaType.nullable, unsaved.char10)}, ${Fragment.encode(Decimal5_2.mariaType.nullable, unsaved.decimal52)}, ${Fragment.encode(Decimal10_2.mariaType.nullable, unsaved.decimal102)}, ${Fragment.encode(Decimal18_4.mariaType.nullable, unsaved.decimal184)}, ${Fragment.encode(Decimal8_2.mariaType.nullable, unsaved.numeric82)}, ${Fragment.encode(Decimal12_4.mariaType.nullable, unsaved.numeric124)}, ${Fragment.encode(Binary16.mariaType.nullable, unsaved.binary16)}, ${Fragment.encode(Binary32.mariaType.nullable, unsaved.binary32)}, ${Fragment.encode(Binary64.mariaType.nullable, unsaved.binary64)}, ${Fragment.encode(MariaTypes.time.nullable, unsaved.time0)}, ${Fragment.encode(LocalTime3.mariaType.nullable, unsaved.time3)}, ${Fragment.encode(LocalTime6.mariaType.nullable, unsaved.time6)}, ${Fragment.encode(MariaTypes.datetime.nullable, unsaved.datetime0)}, ${Fragment.encode(LocalDateTime3.mariaType.nullable, unsaved.datetime3)}, ${Fragment.encode(LocalDateTime6.mariaType.nullable, unsaved.datetime6)}, ${Fragment.encode(MariaTypes.timestamp.nullable, unsaved.ts0)}, ${Fragment.encode(LocalDateTime3.mariaType.nullable, unsaved.ts3)}, ${Fragment.encode(LocalDateTime6.mariaType.nullable, unsaved.ts6)}) RETURNING `id`, `string10`, `string20`, `string50`, `string100`, `string255`, `char10`, `decimal5_2`, `decimal10_2`, `decimal18_4`, `numeric8_2`, `numeric12_4`, `binary16`, `binary32`, `binary64`, `time0`, `time3`, `time6`, `datetime0`, `datetime3`, `datetime6`, `ts0`, `ts3`, `ts6` """ .updateReturning(PrecisionTypesNullRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -58,59 +58,59 @@ class PrecisionTypesNullRepoImpl extends PrecisionTypesNullRepo { val values: ListBuffer[Fragment] = ListBuffer() unsaved.string10.visit( { }, - value => { columns.addOne(Fragment.lit("`string10`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(String10.dbType.nullable, value)}"): @scala.annotation.nowarn } + value => { columns.addOne(Fragment.lit("`string10`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(String10.mariaType.nullable, value)}"): @scala.annotation.nowarn } ); unsaved.string20.visit( { }, - value => { columns.addOne(Fragment.lit("`string20`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(String20.dbType.nullable, value)}"): @scala.annotation.nowarn } + value => { columns.addOne(Fragment.lit("`string20`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(String20.mariaType.nullable, value)}"): @scala.annotation.nowarn } ); unsaved.string50.visit( { }, - value => { columns.addOne(Fragment.lit("`string50`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(String50.dbType.nullable, value)}"): @scala.annotation.nowarn } + value => { columns.addOne(Fragment.lit("`string50`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(String50.mariaType.nullable, value)}"): @scala.annotation.nowarn } ); unsaved.string100.visit( { }, - value => { columns.addOne(Fragment.lit("`string100`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(String100.dbType.nullable, value)}"): @scala.annotation.nowarn } + value => { columns.addOne(Fragment.lit("`string100`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(String100.mariaType.nullable, value)}"): @scala.annotation.nowarn } ); unsaved.string255.visit( { }, - value => { columns.addOne(Fragment.lit("`string255`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(String255.dbType.nullable, value)}"): @scala.annotation.nowarn } + value => { columns.addOne(Fragment.lit("`string255`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(String255.mariaType.nullable, value)}"): @scala.annotation.nowarn } ); unsaved.char10.visit( { }, - value => { columns.addOne(Fragment.lit("`char10`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(PaddedString10.dbType.nullable, value)}"): @scala.annotation.nowarn } + value => { columns.addOne(Fragment.lit("`char10`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(PaddedString10.mariaType.nullable, value)}"): @scala.annotation.nowarn } ); unsaved.decimal52.visit( { }, - value => { columns.addOne(Fragment.lit("`decimal5_2`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(Decimal5_2.dbType.nullable, value)}"): @scala.annotation.nowarn } + value => { columns.addOne(Fragment.lit("`decimal5_2`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(Decimal5_2.mariaType.nullable, value)}"): @scala.annotation.nowarn } ); unsaved.decimal102.visit( { }, - value => { columns.addOne(Fragment.lit("`decimal10_2`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(Decimal10_2.dbType.nullable, value)}"): @scala.annotation.nowarn } + value => { columns.addOne(Fragment.lit("`decimal10_2`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(Decimal10_2.mariaType.nullable, value)}"): @scala.annotation.nowarn } ); unsaved.decimal184.visit( { }, - value => { columns.addOne(Fragment.lit("`decimal18_4`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(Decimal18_4.dbType.nullable, value)}"): @scala.annotation.nowarn } + value => { columns.addOne(Fragment.lit("`decimal18_4`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(Decimal18_4.mariaType.nullable, value)}"): @scala.annotation.nowarn } ); unsaved.numeric82.visit( { }, - value => { columns.addOne(Fragment.lit("`numeric8_2`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(Decimal8_2.dbType.nullable, value)}"): @scala.annotation.nowarn } + value => { columns.addOne(Fragment.lit("`numeric8_2`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(Decimal8_2.mariaType.nullable, value)}"): @scala.annotation.nowarn } ); unsaved.numeric124.visit( { }, - value => { columns.addOne(Fragment.lit("`numeric12_4`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(Decimal12_4.dbType.nullable, value)}"): @scala.annotation.nowarn } + value => { columns.addOne(Fragment.lit("`numeric12_4`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(Decimal12_4.mariaType.nullable, value)}"): @scala.annotation.nowarn } ); unsaved.binary16.visit( { }, - value => { columns.addOne(Fragment.lit("`binary16`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(Binary16.dbType.nullable, value)}"): @scala.annotation.nowarn } + value => { columns.addOne(Fragment.lit("`binary16`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(Binary16.mariaType.nullable, value)}"): @scala.annotation.nowarn } ); unsaved.binary32.visit( { }, - value => { columns.addOne(Fragment.lit("`binary32`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(Binary32.dbType.nullable, value)}"): @scala.annotation.nowarn } + value => { columns.addOne(Fragment.lit("`binary32`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(Binary32.mariaType.nullable, value)}"): @scala.annotation.nowarn } ); unsaved.binary64.visit( { }, - value => { columns.addOne(Fragment.lit("`binary64`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(Binary64.dbType.nullable, value)}"): @scala.annotation.nowarn } + value => { columns.addOne(Fragment.lit("`binary64`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(Binary64.mariaType.nullable, value)}"): @scala.annotation.nowarn } ); unsaved.time0.visit( { }, @@ -118,11 +118,11 @@ class PrecisionTypesNullRepoImpl extends PrecisionTypesNullRepo { ); unsaved.time3.visit( { }, - value => { columns.addOne(Fragment.lit("`time3`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(LocalTime3.dbType.nullable, value)}"): @scala.annotation.nowarn } + value => { columns.addOne(Fragment.lit("`time3`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(LocalTime3.mariaType.nullable, value)}"): @scala.annotation.nowarn } ); unsaved.time6.visit( { }, - value => { columns.addOne(Fragment.lit("`time6`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(LocalTime6.dbType.nullable, value)}"): @scala.annotation.nowarn } + value => { columns.addOne(Fragment.lit("`time6`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(LocalTime6.mariaType.nullable, value)}"): @scala.annotation.nowarn } ); unsaved.datetime0.visit( { }, @@ -130,11 +130,11 @@ class PrecisionTypesNullRepoImpl extends PrecisionTypesNullRepo { ); unsaved.datetime3.visit( { }, - value => { columns.addOne(Fragment.lit("`datetime3`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(LocalDateTime3.dbType.nullable, value)}"): @scala.annotation.nowarn } + value => { columns.addOne(Fragment.lit("`datetime3`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(LocalDateTime3.mariaType.nullable, value)}"): @scala.annotation.nowarn } ); unsaved.datetime6.visit( { }, - value => { columns.addOne(Fragment.lit("`datetime6`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(LocalDateTime6.dbType.nullable, value)}"): @scala.annotation.nowarn } + value => { columns.addOne(Fragment.lit("`datetime6`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(LocalDateTime6.mariaType.nullable, value)}"): @scala.annotation.nowarn } ); unsaved.ts0.visit( { }, @@ -142,11 +142,11 @@ class PrecisionTypesNullRepoImpl extends PrecisionTypesNullRepo { ); unsaved.ts3.visit( { }, - value => { columns.addOne(Fragment.lit("`ts3`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(LocalDateTime3.dbType.nullable, value)}"): @scala.annotation.nowarn } + value => { columns.addOne(Fragment.lit("`ts3`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(LocalDateTime3.mariaType.nullable, value)}"): @scala.annotation.nowarn } ); unsaved.ts6.visit( { }, - value => { columns.addOne(Fragment.lit("`ts6`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(LocalDateTime6.dbType.nullable, value)}"): @scala.annotation.nowarn } + value => { columns.addOne(Fragment.lit("`ts6`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(LocalDateTime6.mariaType.nullable, value)}"): @scala.annotation.nowarn } ); val q: Fragment = { (if (columns.isEmpty) sql"""insert into `precision_types_null`() values () @@ -170,12 +170,12 @@ class PrecisionTypesNullRepoImpl extends PrecisionTypesNullRepo { override def selectById(id: PrecisionTypesNullId)(using c: Connection): Option[PrecisionTypesNullRow] = { sql"""select `id`, `string10`, `string20`, `string50`, `string100`, `string255`, `char10`, `decimal5_2`, `decimal10_2`, `decimal18_4`, `numeric8_2`, `numeric12_4`, `binary16`, `binary32`, `binary64`, `time0`, `time3`, `time6`, `datetime0`, `datetime3`, `datetime6`, `ts0`, `ts3`, `ts6` from `precision_types_null` - where `id` = ${Fragment.encode(PrecisionTypesNullId.dbType, id)}""".query(PrecisionTypesNullRow.`_rowParser`.first()).runUnchecked(c) + where `id` = ${Fragment.encode(PrecisionTypesNullId.mariaType, id)}""".query(PrecisionTypesNullRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(ids: Array[PrecisionTypesNullId])(using c: Connection): List[PrecisionTypesNullRow] = { val fragments: ListBuffer[Fragment] = ListBuffer() - ids.foreach { id => fragments.addOne(Fragment.encode(PrecisionTypesNullId.dbType, id)): @scala.annotation.nowarn } + ids.foreach { id => fragments.addOne(Fragment.encode(PrecisionTypesNullId.mariaType, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("select `id`, `string10`, `string20`, `string50`, `string100`, `string255`, `char10`, `decimal5_2`, `decimal10_2`, `decimal18_4`, `numeric8_2`, `numeric12_4`, `binary16`, `binary32`, `binary64`, `time0`, `time3`, `time6`, `datetime0`, `datetime3`, `datetime6`, `ts0`, `ts3`, `ts6` from `precision_types_null` where `id` in ("), Fragment.comma(fragments), Fragment.lit(")")).query(PrecisionTypesNullRow.`_rowParser`.all()).runUnchecked(c) } @@ -190,35 +190,35 @@ class PrecisionTypesNullRepoImpl extends PrecisionTypesNullRepo { override def update(row: PrecisionTypesNullRow)(using c: Connection): Boolean = { val id: PrecisionTypesNullId = row.id return sql"""update `precision_types_null` - set `string10` = ${Fragment.encode(String10.dbType.nullable, row.string10)}, - `string20` = ${Fragment.encode(String20.dbType.nullable, row.string20)}, - `string50` = ${Fragment.encode(String50.dbType.nullable, row.string50)}, - `string100` = ${Fragment.encode(String100.dbType.nullable, row.string100)}, - `string255` = ${Fragment.encode(String255.dbType.nullable, row.string255)}, - `char10` = ${Fragment.encode(PaddedString10.dbType.nullable, row.char10)}, - `decimal5_2` = ${Fragment.encode(Decimal5_2.dbType.nullable, row.decimal52)}, - `decimal10_2` = ${Fragment.encode(Decimal10_2.dbType.nullable, row.decimal102)}, - `decimal18_4` = ${Fragment.encode(Decimal18_4.dbType.nullable, row.decimal184)}, - `numeric8_2` = ${Fragment.encode(Decimal8_2.dbType.nullable, row.numeric82)}, - `numeric12_4` = ${Fragment.encode(Decimal12_4.dbType.nullable, row.numeric124)}, - `binary16` = ${Fragment.encode(Binary16.dbType.nullable, row.binary16)}, - `binary32` = ${Fragment.encode(Binary32.dbType.nullable, row.binary32)}, - `binary64` = ${Fragment.encode(Binary64.dbType.nullable, row.binary64)}, + set `string10` = ${Fragment.encode(String10.mariaType.nullable, row.string10)}, + `string20` = ${Fragment.encode(String20.mariaType.nullable, row.string20)}, + `string50` = ${Fragment.encode(String50.mariaType.nullable, row.string50)}, + `string100` = ${Fragment.encode(String100.mariaType.nullable, row.string100)}, + `string255` = ${Fragment.encode(String255.mariaType.nullable, row.string255)}, + `char10` = ${Fragment.encode(PaddedString10.mariaType.nullable, row.char10)}, + `decimal5_2` = ${Fragment.encode(Decimal5_2.mariaType.nullable, row.decimal52)}, + `decimal10_2` = ${Fragment.encode(Decimal10_2.mariaType.nullable, row.decimal102)}, + `decimal18_4` = ${Fragment.encode(Decimal18_4.mariaType.nullable, row.decimal184)}, + `numeric8_2` = ${Fragment.encode(Decimal8_2.mariaType.nullable, row.numeric82)}, + `numeric12_4` = ${Fragment.encode(Decimal12_4.mariaType.nullable, row.numeric124)}, + `binary16` = ${Fragment.encode(Binary16.mariaType.nullable, row.binary16)}, + `binary32` = ${Fragment.encode(Binary32.mariaType.nullable, row.binary32)}, + `binary64` = ${Fragment.encode(Binary64.mariaType.nullable, row.binary64)}, `time0` = ${Fragment.encode(MariaTypes.time.nullable, row.time0)}, - `time3` = ${Fragment.encode(LocalTime3.dbType.nullable, row.time3)}, - `time6` = ${Fragment.encode(LocalTime6.dbType.nullable, row.time6)}, + `time3` = ${Fragment.encode(LocalTime3.mariaType.nullable, row.time3)}, + `time6` = ${Fragment.encode(LocalTime6.mariaType.nullable, row.time6)}, `datetime0` = ${Fragment.encode(MariaTypes.datetime.nullable, row.datetime0)}, - `datetime3` = ${Fragment.encode(LocalDateTime3.dbType.nullable, row.datetime3)}, - `datetime6` = ${Fragment.encode(LocalDateTime6.dbType.nullable, row.datetime6)}, + `datetime3` = ${Fragment.encode(LocalDateTime3.mariaType.nullable, row.datetime3)}, + `datetime6` = ${Fragment.encode(LocalDateTime6.mariaType.nullable, row.datetime6)}, `ts0` = ${Fragment.encode(MariaTypes.timestamp.nullable, row.ts0)}, - `ts3` = ${Fragment.encode(LocalDateTime3.dbType.nullable, row.ts3)}, - `ts6` = ${Fragment.encode(LocalDateTime6.dbType.nullable, row.ts6)} - where `id` = ${Fragment.encode(PrecisionTypesNullId.dbType, id)}""".update().runUnchecked(c) > 0 + `ts3` = ${Fragment.encode(LocalDateTime3.mariaType.nullable, row.ts3)}, + `ts6` = ${Fragment.encode(LocalDateTime6.mariaType.nullable, row.ts6)} + where `id` = ${Fragment.encode(PrecisionTypesNullId.mariaType, id)}""".update().runUnchecked(c) > 0 } override def upsert(unsaved: PrecisionTypesNullRow)(using c: Connection): PrecisionTypesNullRow = { sql"""INSERT INTO `precision_types_null`(`id`, `string10`, `string20`, `string50`, `string100`, `string255`, `char10`, `decimal5_2`, `decimal10_2`, `decimal18_4`, `numeric8_2`, `numeric12_4`, `binary16`, `binary32`, `binary64`, `time0`, `time3`, `time6`, `datetime0`, `datetime3`, `datetime6`, `ts0`, `ts3`, `ts6`) - VALUES (${Fragment.encode(PrecisionTypesNullId.dbType, unsaved.id)}, ${Fragment.encode(String10.dbType.nullable, unsaved.string10)}, ${Fragment.encode(String20.dbType.nullable, unsaved.string20)}, ${Fragment.encode(String50.dbType.nullable, unsaved.string50)}, ${Fragment.encode(String100.dbType.nullable, unsaved.string100)}, ${Fragment.encode(String255.dbType.nullable, unsaved.string255)}, ${Fragment.encode(PaddedString10.dbType.nullable, unsaved.char10)}, ${Fragment.encode(Decimal5_2.dbType.nullable, unsaved.decimal52)}, ${Fragment.encode(Decimal10_2.dbType.nullable, unsaved.decimal102)}, ${Fragment.encode(Decimal18_4.dbType.nullable, unsaved.decimal184)}, ${Fragment.encode(Decimal8_2.dbType.nullable, unsaved.numeric82)}, ${Fragment.encode(Decimal12_4.dbType.nullable, unsaved.numeric124)}, ${Fragment.encode(Binary16.dbType.nullable, unsaved.binary16)}, ${Fragment.encode(Binary32.dbType.nullable, unsaved.binary32)}, ${Fragment.encode(Binary64.dbType.nullable, unsaved.binary64)}, ${Fragment.encode(MariaTypes.time.nullable, unsaved.time0)}, ${Fragment.encode(LocalTime3.dbType.nullable, unsaved.time3)}, ${Fragment.encode(LocalTime6.dbType.nullable, unsaved.time6)}, ${Fragment.encode(MariaTypes.datetime.nullable, unsaved.datetime0)}, ${Fragment.encode(LocalDateTime3.dbType.nullable, unsaved.datetime3)}, ${Fragment.encode(LocalDateTime6.dbType.nullable, unsaved.datetime6)}, ${Fragment.encode(MariaTypes.timestamp.nullable, unsaved.ts0)}, ${Fragment.encode(LocalDateTime3.dbType.nullable, unsaved.ts3)}, ${Fragment.encode(LocalDateTime6.dbType.nullable, unsaved.ts6)}) + VALUES (${Fragment.encode(PrecisionTypesNullId.mariaType, unsaved.id)}, ${Fragment.encode(String10.mariaType.nullable, unsaved.string10)}, ${Fragment.encode(String20.mariaType.nullable, unsaved.string20)}, ${Fragment.encode(String50.mariaType.nullable, unsaved.string50)}, ${Fragment.encode(String100.mariaType.nullable, unsaved.string100)}, ${Fragment.encode(String255.mariaType.nullable, unsaved.string255)}, ${Fragment.encode(PaddedString10.mariaType.nullable, unsaved.char10)}, ${Fragment.encode(Decimal5_2.mariaType.nullable, unsaved.decimal52)}, ${Fragment.encode(Decimal10_2.mariaType.nullable, unsaved.decimal102)}, ${Fragment.encode(Decimal18_4.mariaType.nullable, unsaved.decimal184)}, ${Fragment.encode(Decimal8_2.mariaType.nullable, unsaved.numeric82)}, ${Fragment.encode(Decimal12_4.mariaType.nullable, unsaved.numeric124)}, ${Fragment.encode(Binary16.mariaType.nullable, unsaved.binary16)}, ${Fragment.encode(Binary32.mariaType.nullable, unsaved.binary32)}, ${Fragment.encode(Binary64.mariaType.nullable, unsaved.binary64)}, ${Fragment.encode(MariaTypes.time.nullable, unsaved.time0)}, ${Fragment.encode(LocalTime3.mariaType.nullable, unsaved.time3)}, ${Fragment.encode(LocalTime6.mariaType.nullable, unsaved.time6)}, ${Fragment.encode(MariaTypes.datetime.nullable, unsaved.datetime0)}, ${Fragment.encode(LocalDateTime3.mariaType.nullable, unsaved.datetime3)}, ${Fragment.encode(LocalDateTime6.mariaType.nullable, unsaved.datetime6)}, ${Fragment.encode(MariaTypes.timestamp.nullable, unsaved.ts0)}, ${Fragment.encode(LocalDateTime3.mariaType.nullable, unsaved.ts3)}, ${Fragment.encode(LocalDateTime6.mariaType.nullable, unsaved.ts6)}) ON DUPLICATE KEY UPDATE `string10` = VALUES(`string10`), `string20` = VALUES(`string20`), `string50` = VALUES(`string50`), diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullRow.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullRow.scala index bcc905c134..58ab103704 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullRow.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/precision_types_null/PrecisionTypesNullRow.scala @@ -236,5 +236,5 @@ case class PrecisionTypesNullRow( } object PrecisionTypesNullRow { - val `_rowParser`: RowParser[PrecisionTypesNullRow] = RowParsers.of(PrecisionTypesNullId.dbType, String10.dbType.nullable, String20.dbType.nullable, String50.dbType.nullable, String100.dbType.nullable, String255.dbType.nullable, PaddedString10.dbType.nullable, Decimal5_2.dbType.nullable, Decimal10_2.dbType.nullable, Decimal18_4.dbType.nullable, Decimal8_2.dbType.nullable, Decimal12_4.dbType.nullable, Binary16.dbType.nullable, Binary32.dbType.nullable, Binary64.dbType.nullable, MariaTypes.time.nullable, LocalTime3.dbType.nullable, LocalTime6.dbType.nullable, MariaTypes.datetime.nullable, LocalDateTime3.dbType.nullable, LocalDateTime6.dbType.nullable, MariaTypes.timestamp.nullable, LocalDateTime3.dbType.nullable, LocalDateTime6.dbType.nullable)(PrecisionTypesNullRow.apply)(row => Array[Any](row.id, row.string10, row.string20, row.string50, row.string100, row.string255, row.char10, row.decimal52, row.decimal102, row.decimal184, row.numeric82, row.numeric124, row.binary16, row.binary32, row.binary64, row.time0, row.time3, row.time6, row.datetime0, row.datetime3, row.datetime6, row.ts0, row.ts3, row.ts6)) + val `_rowParser`: RowParser[PrecisionTypesNullRow] = RowParsers.of(PrecisionTypesNullId.mariaType, String10.mariaType.nullable, String20.mariaType.nullable, String50.mariaType.nullable, String100.mariaType.nullable, String255.mariaType.nullable, PaddedString10.mariaType.nullable, Decimal5_2.mariaType.nullable, Decimal10_2.mariaType.nullable, Decimal18_4.mariaType.nullable, Decimal8_2.mariaType.nullable, Decimal12_4.mariaType.nullable, Binary16.mariaType.nullable, Binary32.mariaType.nullable, Binary64.mariaType.nullable, MariaTypes.time.nullable, LocalTime3.mariaType.nullable, LocalTime6.mariaType.nullable, MariaTypes.datetime.nullable, LocalDateTime3.mariaType.nullable, LocalDateTime6.mariaType.nullable, MariaTypes.timestamp.nullable, LocalDateTime3.mariaType.nullable, LocalDateTime6.mariaType.nullable)(PrecisionTypesNullRow.apply)(row => Array[Any](row.id, row.string10, row.string20, row.string50, row.string100, row.string255, row.char10, row.decimal52, row.decimal102, row.decimal184, row.numeric82, row.numeric124, row.binary16, row.binary32, row.binary64, row.time0, row.time3, row.time6, row.datetime0, row.datetime3, row.datetime6, row.ts0, row.ts3, row.ts6)) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/price_tiers/PriceTiersFields.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/price_tiers/PriceTiersFields.scala index b1650ff7e0..c699a5a54e 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/price_tiers/PriceTiersFields.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/price_tiers/PriceTiersFields.scala @@ -27,7 +27,7 @@ class PriceTiersFields(val `_path`: java.util.List[Path]) extends TupleExpr5[Pri None, None, (row, value) => row.copy(tierId = value), - PriceTiersId.dbType + PriceTiersId.mariaType ) } diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/price_tiers/PriceTiersId.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/price_tiers/PriceTiersId.scala index ebe5b2dc2c..a58a1940ae 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/price_tiers/PriceTiersId.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/price_tiers/PriceTiersId.scala @@ -17,5 +17,5 @@ case class PriceTiersId(@JsonValue value: Uint1) extends scala.AnyVal object PriceTiersId { given bijection: Bijection[PriceTiersId, Uint1] = Bijection.apply[PriceTiersId, Uint1](_.value)(PriceTiersId.apply) - given dbType: MariaType[PriceTiersId] = MariaTypes.tinyintUnsigned.bimap(PriceTiersId.apply, _.value) + given mariaType: MariaType[PriceTiersId] = MariaTypes.tinyintUnsigned.bimap(PriceTiersId.apply, _.value) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/price_tiers/PriceTiersRepoImpl.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/price_tiers/PriceTiersRepoImpl.scala index c9dc3d85f9..90e6538139 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/price_tiers/PriceTiersRepoImpl.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/price_tiers/PriceTiersRepoImpl.scala @@ -19,11 +19,11 @@ import dev.typr.foundations.scala.Fragment.sql class PriceTiersRepoImpl extends PriceTiersRepo { override def delete: DeleteBuilder[PriceTiersFields, PriceTiersRow] = DeleteBuilder.of("`price_tiers`", PriceTiersFields.structure, Dialect.MARIADB) - override def deleteById(tierId: PriceTiersId)(using c: Connection): Boolean = sql"delete from `price_tiers` where `tier_id` = ${Fragment.encode(PriceTiersId.dbType, tierId)}".update().runUnchecked(c) > 0 + override def deleteById(tierId: PriceTiersId)(using c: Connection): Boolean = sql"delete from `price_tiers` where `tier_id` = ${Fragment.encode(PriceTiersId.mariaType, tierId)}".update().runUnchecked(c) > 0 override def deleteByIds(tierIds: Array[PriceTiersId])(using c: Connection): Int = { val fragments: ListBuffer[Fragment] = ListBuffer() - tierIds.foreach { id => fragments.addOne(Fragment.encode(PriceTiersId.dbType, id)): @scala.annotation.nowarn } + tierIds.foreach { id => fragments.addOne(Fragment.encode(PriceTiersId.mariaType, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("delete from `price_tiers` where `tier_id` in ("), Fragment.comma(fragments), Fragment.lit(")")).update().runUnchecked(c) } @@ -68,12 +68,12 @@ class PriceTiersRepoImpl extends PriceTiersRepo { override def selectById(tierId: PriceTiersId)(using c: Connection): Option[PriceTiersRow] = { sql"""select `tier_id`, `name`, `min_quantity`, `discount_type`, `discount_value` from `price_tiers` - where `tier_id` = ${Fragment.encode(PriceTiersId.dbType, tierId)}""".query(PriceTiersRow.`_rowParser`.first()).runUnchecked(c) + where `tier_id` = ${Fragment.encode(PriceTiersId.mariaType, tierId)}""".query(PriceTiersRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(tierIds: Array[PriceTiersId])(using c: Connection): List[PriceTiersRow] = { val fragments: ListBuffer[Fragment] = ListBuffer() - tierIds.foreach { id => fragments.addOne(Fragment.encode(PriceTiersId.dbType, id)): @scala.annotation.nowarn } + tierIds.foreach { id => fragments.addOne(Fragment.encode(PriceTiersId.mariaType, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("select `tier_id`, `name`, `min_quantity`, `discount_type`, `discount_value` from `price_tiers` where `tier_id` in ("), Fragment.comma(fragments), Fragment.lit(")")).query(PriceTiersRow.`_rowParser`.all()).runUnchecked(c) } @@ -92,12 +92,12 @@ class PriceTiersRepoImpl extends PriceTiersRepo { `min_quantity` = ${Fragment.encode(MariaTypes.intUnsigned, row.minQuantity)}, `discount_type` = ${Fragment.encode(MariaTypes.text, row.discountType)}, `discount_value` = ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, row.discountValue)} - where `tier_id` = ${Fragment.encode(PriceTiersId.dbType, tierId)}""".update().runUnchecked(c) > 0 + where `tier_id` = ${Fragment.encode(PriceTiersId.mariaType, tierId)}""".update().runUnchecked(c) > 0 } override def upsert(unsaved: PriceTiersRow)(using c: Connection): PriceTiersRow = { sql"""INSERT INTO `price_tiers`(`tier_id`, `name`, `min_quantity`, `discount_type`, `discount_value`) - VALUES (${Fragment.encode(PriceTiersId.dbType, unsaved.tierId)}, ${Fragment.encode(MariaTypes.varchar, unsaved.name)}, ${Fragment.encode(MariaTypes.intUnsigned, unsaved.minQuantity)}, ${Fragment.encode(MariaTypes.text, unsaved.discountType)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.discountValue)}) + VALUES (${Fragment.encode(PriceTiersId.mariaType, unsaved.tierId)}, ${Fragment.encode(MariaTypes.varchar, unsaved.name)}, ${Fragment.encode(MariaTypes.intUnsigned, unsaved.minQuantity)}, ${Fragment.encode(MariaTypes.text, unsaved.discountType)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.discountValue)}) ON DUPLICATE KEY UPDATE `name` = VALUES(`name`), `min_quantity` = VALUES(`min_quantity`), `discount_type` = VALUES(`discount_type`), diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/price_tiers/PriceTiersRow.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/price_tiers/PriceTiersRow.scala index 915a193fe8..f55b91370d 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/price_tiers/PriceTiersRow.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/price_tiers/PriceTiersRow.scala @@ -56,5 +56,5 @@ case class PriceTiersRow( } object PriceTiersRow { - val `_rowParser`: RowParser[PriceTiersRow] = RowParsers.of(PriceTiersId.dbType, MariaTypes.varchar, MariaTypes.intUnsigned, MariaTypes.text, ScalaDbTypes.MariaTypes.numeric)(PriceTiersRow.apply)(row => Array[Any](row.tierId, row.name, row.minQuantity, row.discountType, row.discountValue)) + val `_rowParser`: RowParser[PriceTiersRow] = RowParsers.of(PriceTiersId.mariaType, MariaTypes.varchar, MariaTypes.intUnsigned, MariaTypes.text, ScalaDbTypes.MariaTypes.numeric)(PriceTiersRow.apply)(row => Array[Any](row.tierId, row.name, row.minQuantity, row.discountType, row.discountValue)) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/product_categories/ProductCategoriesFields.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/product_categories/ProductCategoriesFields.scala index 1719fbced2..54ec59f223 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/product_categories/ProductCategoriesFields.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/product_categories/ProductCategoriesFields.scala @@ -23,8 +23,9 @@ import testdb.categories.CategoriesRow import testdb.products.ProductsFields import testdb.products.ProductsId import testdb.products.ProductsRow +import testdb.userdefined.IsPrimary -class ProductCategoriesFields(val `_path`: java.util.List[Path]) extends TupleExpr4[ProductsId, CategoriesId, Boolean, Short] with RelationStructure[ProductCategoriesFields, ProductCategoriesRow] with FieldsBase[ProductCategoriesRow] { +class ProductCategoriesFields(val `_path`: java.util.List[Path]) extends TupleExpr4[ProductsId, CategoriesId, /* user-picked */ IsPrimary, Short] with RelationStructure[ProductCategoriesFields, ProductCategoriesRow] with FieldsBase[ProductCategoriesRow] { def productId: IdField[ProductsId, ProductCategoriesRow] = { new IdField[ProductsId, ProductCategoriesRow]( _path, @@ -33,7 +34,7 @@ class ProductCategoriesFields(val `_path`: java.util.List[Path]) extends TupleEx None, None, (row, value) => row.copy(productId = value), - ProductsId.dbType + ProductsId.mariaType ) } @@ -45,19 +46,19 @@ class ProductCategoriesFields(val `_path`: java.util.List[Path]) extends TupleEx None, None, (row, value) => row.copy(categoryId = value), - CategoriesId.dbType + CategoriesId.mariaType ) } - def isPrimary: Field[Boolean, ProductCategoriesRow] = { - new Field[Boolean, ProductCategoriesRow]( + def isPrimary: Field[/* user-picked */ IsPrimary, ProductCategoriesRow] = { + new Field[/* user-picked */ IsPrimary, ProductCategoriesRow]( _path, "is_primary", _.isPrimary, None, None, (row, value) => row.copy(isPrimary = value), - ScalaDbTypes.MariaTypes.bool + IsPrimary.mariaType ) } @@ -91,7 +92,7 @@ class ProductCategoriesFields(val `_path`: java.util.List[Path]) extends TupleEx override def `_2`: SqlExpr[CategoriesId] = categoryId - override def `_3`: SqlExpr[Boolean] = isPrimary + override def `_3`: SqlExpr[/* user-picked */ IsPrimary] = isPrimary override def `_4`: SqlExpr[Short] = sortOrder } diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/product_categories/ProductCategoriesId.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/product_categories/ProductCategoriesId.scala index 206c9687be..62f424e4ab 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/product_categories/ProductCategoriesId.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/product_categories/ProductCategoriesId.scala @@ -23,5 +23,5 @@ case class ProductCategoriesId( } object ProductCategoriesId { - val `_rowParser`: RowParser[ProductCategoriesId] = RowParsers.of(ProductsId.dbType, CategoriesId.dbType)(ProductCategoriesId.apply)(row => Array[Any](row.productId, row.categoryId)) + val `_rowParser`: RowParser[ProductCategoriesId] = RowParsers.of(ProductsId.mariaType, CategoriesId.mariaType)(ProductCategoriesId.apply)(row => Array[Any](row.productId, row.categoryId)) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/product_categories/ProductCategoriesRepoImpl.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/product_categories/ProductCategoriesRepoImpl.scala index 860aaa69ee..b38152890d 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/product_categories/ProductCategoriesRepoImpl.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/product_categories/ProductCategoriesRepoImpl.scala @@ -15,22 +15,23 @@ import java.sql.Connection import scala.collection.mutable.ListBuffer import testdb.categories.CategoriesId import testdb.products.ProductsId +import testdb.userdefined.IsPrimary import dev.typr.foundations.scala.Fragment.sql class ProductCategoriesRepoImpl extends ProductCategoriesRepo { override def delete: DeleteBuilder[ProductCategoriesFields, ProductCategoriesRow] = DeleteBuilder.of("`product_categories`", ProductCategoriesFields.structure, Dialect.MARIADB) - override def deleteById(compositeId: ProductCategoriesId)(using c: Connection): Boolean = sql"delete from `product_categories` where `product_id` = ${Fragment.encode(ProductsId.dbType, compositeId.productId)} AND `category_id` = ${Fragment.encode(CategoriesId.dbType, compositeId.categoryId)}".update().runUnchecked(c) > 0 + override def deleteById(compositeId: ProductCategoriesId)(using c: Connection): Boolean = sql"delete from `product_categories` where `product_id` = ${Fragment.encode(ProductsId.mariaType, compositeId.productId)} AND `category_id` = ${Fragment.encode(CategoriesId.mariaType, compositeId.categoryId)}".update().runUnchecked(c) > 0 override def deleteByIds(compositeIds: Array[ProductCategoriesId])(using c: Connection): Int = { val fragments: ListBuffer[Fragment] = ListBuffer() - compositeIds.foreach { id => fragments.addOne(Fragment.interpolate(Fragment.lit("("), Fragment.encode(ProductsId.dbType, id.productId), Fragment.lit(", "), Fragment.encode(CategoriesId.dbType, id.categoryId), Fragment.lit(")"))): @scala.annotation.nowarn } + compositeIds.foreach { id => fragments.addOne(Fragment.interpolate(Fragment.lit("("), Fragment.encode(ProductsId.mariaType, id.productId), Fragment.lit(", "), Fragment.encode(CategoriesId.mariaType, id.categoryId), Fragment.lit(")"))): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("delete from `product_categories` where (`product_id`, `category_id`) in ("), Fragment.comma(fragments), Fragment.lit(")")).update().runUnchecked(c) } override def insert(unsaved: ProductCategoriesRow)(using c: Connection): ProductCategoriesRow = { sql"""insert into `product_categories`(`product_id`, `category_id`, `is_primary`, `sort_order`) - values (${Fragment.encode(ProductsId.dbType, unsaved.productId)}, ${Fragment.encode(CategoriesId.dbType, unsaved.categoryId)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.bool, unsaved.isPrimary)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.smallint, unsaved.sortOrder)}) + values (${Fragment.encode(ProductsId.mariaType, unsaved.productId)}, ${Fragment.encode(CategoriesId.mariaType, unsaved.categoryId)}, ${Fragment.encode(IsPrimary.mariaType, unsaved.isPrimary)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.smallint, unsaved.sortOrder)}) RETURNING `product_id`, `category_id`, `is_primary`, `sort_order` """ .updateReturning(ProductCategoriesRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -40,12 +41,12 @@ class ProductCategoriesRepoImpl extends ProductCategoriesRepo { val columns: ListBuffer[Fragment] = ListBuffer() val values: ListBuffer[Fragment] = ListBuffer() columns.addOne(Fragment.lit("`product_id`")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(ProductsId.dbType, unsaved.productId)}"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(ProductsId.mariaType, unsaved.productId)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit("`category_id`")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(CategoriesId.dbType, unsaved.categoryId)}"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(CategoriesId.mariaType, unsaved.categoryId)}"): @scala.annotation.nowarn unsaved.isPrimary.visit( { }, - value => { columns.addOne(Fragment.lit("`is_primary`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(ScalaDbTypes.MariaTypes.bool, value)}"): @scala.annotation.nowarn } + value => { columns.addOne(Fragment.lit("`is_primary`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(IsPrimary.mariaType, value)}"): @scala.annotation.nowarn } ); unsaved.sortOrder.visit( { }, @@ -71,12 +72,12 @@ class ProductCategoriesRepoImpl extends ProductCategoriesRepo { override def selectById(compositeId: ProductCategoriesId)(using c: Connection): Option[ProductCategoriesRow] = { sql"""select `product_id`, `category_id`, `is_primary`, `sort_order` from `product_categories` - where `product_id` = ${Fragment.encode(ProductsId.dbType, compositeId.productId)} AND `category_id` = ${Fragment.encode(CategoriesId.dbType, compositeId.categoryId)}""".query(ProductCategoriesRow.`_rowParser`.first()).runUnchecked(c) + where `product_id` = ${Fragment.encode(ProductsId.mariaType, compositeId.productId)} AND `category_id` = ${Fragment.encode(CategoriesId.mariaType, compositeId.categoryId)}""".query(ProductCategoriesRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(compositeIds: Array[ProductCategoriesId])(using c: Connection): List[ProductCategoriesRow] = { val fragments: ListBuffer[Fragment] = ListBuffer() - compositeIds.foreach { id => fragments.addOne(Fragment.interpolate(Fragment.lit("("), Fragment.encode(ProductsId.dbType, id.productId), Fragment.lit(", "), Fragment.encode(CategoriesId.dbType, id.categoryId), Fragment.lit(")"))): @scala.annotation.nowarn } + compositeIds.foreach { id => fragments.addOne(Fragment.interpolate(Fragment.lit("("), Fragment.encode(ProductsId.mariaType, id.productId), Fragment.lit(", "), Fragment.encode(CategoriesId.mariaType, id.categoryId), Fragment.lit(")"))): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("select `product_id`, `category_id`, `is_primary`, `sort_order` from `product_categories` where (`product_id`, `category_id`) in ("), Fragment.comma(fragments), Fragment.lit(")")).query(ProductCategoriesRow.`_rowParser`.all()).runUnchecked(c) } @@ -91,14 +92,14 @@ class ProductCategoriesRepoImpl extends ProductCategoriesRepo { override def update(row: ProductCategoriesRow)(using c: Connection): Boolean = { val compositeId: ProductCategoriesId = row.compositeId return sql"""update `product_categories` - set `is_primary` = ${Fragment.encode(ScalaDbTypes.MariaTypes.bool, row.isPrimary)}, + set `is_primary` = ${Fragment.encode(IsPrimary.mariaType, row.isPrimary)}, `sort_order` = ${Fragment.encode(ScalaDbTypes.MariaTypes.smallint, row.sortOrder)} - where `product_id` = ${Fragment.encode(ProductsId.dbType, compositeId.productId)} AND `category_id` = ${Fragment.encode(CategoriesId.dbType, compositeId.categoryId)}""".update().runUnchecked(c) > 0 + where `product_id` = ${Fragment.encode(ProductsId.mariaType, compositeId.productId)} AND `category_id` = ${Fragment.encode(CategoriesId.mariaType, compositeId.categoryId)}""".update().runUnchecked(c) > 0 } override def upsert(unsaved: ProductCategoriesRow)(using c: Connection): ProductCategoriesRow = { sql"""INSERT INTO `product_categories`(`product_id`, `category_id`, `is_primary`, `sort_order`) - VALUES (${Fragment.encode(ProductsId.dbType, unsaved.productId)}, ${Fragment.encode(CategoriesId.dbType, unsaved.categoryId)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.bool, unsaved.isPrimary)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.smallint, unsaved.sortOrder)}) + VALUES (${Fragment.encode(ProductsId.mariaType, unsaved.productId)}, ${Fragment.encode(CategoriesId.mariaType, unsaved.categoryId)}, ${Fragment.encode(IsPrimary.mariaType, unsaved.isPrimary)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.smallint, unsaved.sortOrder)}) ON DUPLICATE KEY UPDATE `is_primary` = VALUES(`is_primary`), `sort_order` = VALUES(`sort_order`) RETURNING `product_id`, `category_id`, `is_primary`, `sort_order`""" diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/product_categories/ProductCategoriesRow.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/product_categories/ProductCategoriesRow.scala index 8c1b78e2ae..a160773a8a 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/product_categories/ProductCategoriesRow.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/product_categories/ProductCategoriesRow.scala @@ -13,6 +13,7 @@ import dev.typr.foundations.scala.ScalaDbTypes import testdb.categories.CategoriesId import testdb.customtypes.Defaulted import testdb.products.ProductsId +import testdb.userdefined.IsPrimary /** Table: product_categories * Composite primary key: product_id, category_id @@ -29,18 +30,18 @@ case class ProductCategoriesRow( /** * Default: 0 */ - @JsonProperty("is_primary") isPrimary: Boolean, + @JsonProperty("is_primary") isPrimary: /* user-picked */ IsPrimary, /** * Default: 0 */ @JsonProperty("sort_order") sortOrder: Short -) extends Tuple4[ProductsId, CategoriesId, Boolean, Short] { +) extends Tuple4[ProductsId, CategoriesId, /* user-picked */ IsPrimary, Short] { def compositeId: ProductCategoriesId = new ProductCategoriesId(productId, categoryId) def id: ProductCategoriesId = this.compositeId def toUnsavedRow( - isPrimary: Defaulted[Boolean] = Defaulted.Provided(this.isPrimary), + isPrimary: Defaulted[/* user-picked */ IsPrimary] = Defaulted.Provided(this.isPrimary), sortOrder: Defaulted[Short] = Defaulted.Provided(this.sortOrder) ): ProductCategoriesRowUnsaved = { new ProductCategoriesRowUnsaved( @@ -55,17 +56,17 @@ case class ProductCategoriesRow( override def `_2`: CategoriesId = categoryId - override def `_3`: Boolean = isPrimary + override def `_3`: /* user-picked */ IsPrimary = isPrimary override def `_4`: Short = sortOrder } object ProductCategoriesRow { - val `_rowParser`: RowParser[ProductCategoriesRow] = RowParsers.of(ProductsId.dbType, CategoriesId.dbType, ScalaDbTypes.MariaTypes.bool, ScalaDbTypes.MariaTypes.smallint)(ProductCategoriesRow.apply)(row => Array[Any](row.productId, row.categoryId, row.isPrimary, row.sortOrder)) + val `_rowParser`: RowParser[ProductCategoriesRow] = RowParsers.of(ProductsId.mariaType, CategoriesId.mariaType, IsPrimary.mariaType, ScalaDbTypes.MariaTypes.smallint)(ProductCategoriesRow.apply)(row => Array[Any](row.productId, row.categoryId, row.isPrimary, row.sortOrder)) def apply( compositeId: ProductCategoriesId, - isPrimary: Boolean, + isPrimary: /* user-picked */ IsPrimary, sortOrder: Short ): ProductCategoriesRow = { new ProductCategoriesRow( diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/product_categories/ProductCategoriesRowUnsaved.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/product_categories/ProductCategoriesRowUnsaved.scala index d6b363034b..62176f628d 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/product_categories/ProductCategoriesRowUnsaved.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/product_categories/ProductCategoriesRowUnsaved.scala @@ -10,6 +10,7 @@ import testdb.categories.CategoriesId import testdb.customtypes.Defaulted import testdb.customtypes.Defaulted.UseDefault import testdb.products.ProductsId +import testdb.userdefined.IsPrimary /** This class corresponds to a row in table `product_categories` which has not been persisted yet */ case class ProductCategoriesRowUnsaved( @@ -24,14 +25,14 @@ case class ProductCategoriesRowUnsaved( /** Default: 0 */ - @JsonProperty("is_primary") isPrimary: Defaulted[Boolean] = new UseDefault(), + @JsonProperty("is_primary") isPrimary: Defaulted[/* user-picked */ IsPrimary] = new UseDefault(), /** Default: 0 */ @JsonProperty("sort_order") sortOrder: Defaulted[Short] = new UseDefault() ) { def toRow( - isPrimaryDefault: => Boolean, + isPrimaryDefault: => /* user-picked */ IsPrimary, sortOrderDefault: => Short ): ProductCategoriesRow = { new ProductCategoriesRow( diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/product_images/ProductImagesFields.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/product_images/ProductImagesFields.scala index 401399f5aa..964a1262e0 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/product_images/ProductImagesFields.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/product_images/ProductImagesFields.scala @@ -13,7 +13,6 @@ import dev.typr.foundations.dsl.Path import dev.typr.foundations.dsl.SqlExpr.FieldLike import dev.typr.foundations.scala.ForeignKey import dev.typr.foundations.scala.RelationStructure -import dev.typr.foundations.scala.ScalaDbTypes import dev.typr.foundations.scala.SqlExpr import dev.typr.foundations.scala.SqlExpr.Field import dev.typr.foundations.scala.SqlExpr.IdField @@ -22,8 +21,9 @@ import dev.typr.foundations.scala.TupleExpr8 import testdb.products.ProductsFields import testdb.products.ProductsId import testdb.products.ProductsRow +import testdb.userdefined.IsPrimary -class ProductImagesFields(val `_path`: java.util.List[Path]) extends TupleExpr8[ProductImagesId, ProductsId, String, String, String, Uint1, Boolean, Array[Byte]] with RelationStructure[ProductImagesFields, ProductImagesRow] with FieldsBase[ProductImagesRow] { +class ProductImagesFields(val `_path`: java.util.List[Path]) extends TupleExpr8[ProductImagesId, ProductsId, String, String, String, Uint1, /* user-picked */ IsPrimary, Array[Byte]] with RelationStructure[ProductImagesFields, ProductImagesRow] with FieldsBase[ProductImagesRow] { def imageId: IdField[ProductImagesId, ProductImagesRow] = { new IdField[ProductImagesId, ProductImagesRow]( _path, @@ -32,7 +32,7 @@ class ProductImagesFields(val `_path`: java.util.List[Path]) extends TupleExpr8[ None, None, (row, value) => row.copy(imageId = value), - ProductImagesId.dbType + ProductImagesId.mariaType ) } @@ -44,7 +44,7 @@ class ProductImagesFields(val `_path`: java.util.List[Path]) extends TupleExpr8[ None, None, (row, value) => row.copy(productId = value), - ProductsId.dbType + ProductsId.mariaType ) } @@ -96,15 +96,15 @@ class ProductImagesFields(val `_path`: java.util.List[Path]) extends TupleExpr8[ ) } - def isPrimary: Field[Boolean, ProductImagesRow] = { - new Field[Boolean, ProductImagesRow]( + def isPrimary: Field[/* user-picked */ IsPrimary, ProductImagesRow] = { + new Field[/* user-picked */ IsPrimary, ProductImagesRow]( _path, "is_primary", _.isPrimary, None, None, (row, value) => row.copy(isPrimary = value), - ScalaDbTypes.MariaTypes.bool + IsPrimary.mariaType ) } @@ -140,7 +140,7 @@ class ProductImagesFields(val `_path`: java.util.List[Path]) extends TupleExpr8[ override def `_6`: SqlExpr[Uint1] = sortOrder - override def `_7`: SqlExpr[Boolean] = isPrimary + override def `_7`: SqlExpr[/* user-picked */ IsPrimary] = isPrimary override def `_8`: SqlExpr[Array[Byte]] = imageData } diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/product_images/ProductImagesId.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/product_images/ProductImagesId.scala index 03f29720c5..3882cae2cf 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/product_images/ProductImagesId.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/product_images/ProductImagesId.scala @@ -17,5 +17,5 @@ case class ProductImagesId(@JsonValue value: Uint4) extends scala.AnyVal object ProductImagesId { given bijection: Bijection[ProductImagesId, Uint4] = Bijection.apply[ProductImagesId, Uint4](_.value)(ProductImagesId.apply) - given dbType: MariaType[ProductImagesId] = MariaTypes.intUnsigned.bimap(ProductImagesId.apply, _.value) + given mariaType: MariaType[ProductImagesId] = MariaTypes.intUnsigned.bimap(ProductImagesId.apply, _.value) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/product_images/ProductImagesRepoImpl.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/product_images/ProductImagesRepoImpl.scala index 3327180065..34082f583c 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/product_images/ProductImagesRepoImpl.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/product_images/ProductImagesRepoImpl.scala @@ -10,28 +10,28 @@ import dev.typr.foundations.scala.DbTypeOps import dev.typr.foundations.scala.DeleteBuilder import dev.typr.foundations.scala.Dialect import dev.typr.foundations.scala.Fragment -import dev.typr.foundations.scala.ScalaDbTypes import dev.typr.foundations.scala.SelectBuilder import dev.typr.foundations.scala.UpdateBuilder import java.sql.Connection import scala.collection.mutable.ListBuffer import testdb.products.ProductsId +import testdb.userdefined.IsPrimary import dev.typr.foundations.scala.Fragment.sql class ProductImagesRepoImpl extends ProductImagesRepo { override def delete: DeleteBuilder[ProductImagesFields, ProductImagesRow] = DeleteBuilder.of("`product_images`", ProductImagesFields.structure, Dialect.MARIADB) - override def deleteById(imageId: ProductImagesId)(using c: Connection): Boolean = sql"delete from `product_images` where `image_id` = ${Fragment.encode(ProductImagesId.dbType, imageId)}".update().runUnchecked(c) > 0 + override def deleteById(imageId: ProductImagesId)(using c: Connection): Boolean = sql"delete from `product_images` where `image_id` = ${Fragment.encode(ProductImagesId.mariaType, imageId)}".update().runUnchecked(c) > 0 override def deleteByIds(imageIds: Array[ProductImagesId])(using c: Connection): Int = { val fragments: ListBuffer[Fragment] = ListBuffer() - imageIds.foreach { id => fragments.addOne(Fragment.encode(ProductImagesId.dbType, id)): @scala.annotation.nowarn } + imageIds.foreach { id => fragments.addOne(Fragment.encode(ProductImagesId.mariaType, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("delete from `product_images` where `image_id` in ("), Fragment.comma(fragments), Fragment.lit(")")).update().runUnchecked(c) } override def insert(unsaved: ProductImagesRow)(using c: Connection): ProductImagesRow = { sql"""insert into `product_images`(`product_id`, `image_url`, `thumbnail_url`, `alt_text`, `sort_order`, `is_primary`, `image_data`) - values (${Fragment.encode(ProductsId.dbType, unsaved.productId)}, ${Fragment.encode(MariaTypes.varchar, unsaved.imageUrl)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.thumbnailUrl)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.altText)}, ${Fragment.encode(MariaTypes.tinyintUnsigned, unsaved.sortOrder)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.bool, unsaved.isPrimary)}, ${Fragment.encode(MariaTypes.longblob.nullable, unsaved.imageData)}) + values (${Fragment.encode(ProductsId.mariaType, unsaved.productId)}, ${Fragment.encode(MariaTypes.varchar, unsaved.imageUrl)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.thumbnailUrl)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.altText)}, ${Fragment.encode(MariaTypes.tinyintUnsigned, unsaved.sortOrder)}, ${Fragment.encode(IsPrimary.mariaType, unsaved.isPrimary)}, ${Fragment.encode(MariaTypes.longblob.nullable, unsaved.imageData)}) RETURNING `image_id`, `product_id`, `image_url`, `thumbnail_url`, `alt_text`, `sort_order`, `is_primary`, `image_data` """ .updateReturning(ProductImagesRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -41,7 +41,7 @@ class ProductImagesRepoImpl extends ProductImagesRepo { val columns: ListBuffer[Fragment] = ListBuffer() val values: ListBuffer[Fragment] = ListBuffer() columns.addOne(Fragment.lit("`product_id`")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(ProductsId.dbType, unsaved.productId)}"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(ProductsId.mariaType, unsaved.productId)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit("`image_url`")): @scala.annotation.nowarn values.addOne(sql"${Fragment.encode(MariaTypes.varchar, unsaved.imageUrl)}"): @scala.annotation.nowarn unsaved.thumbnailUrl.visit( @@ -58,7 +58,7 @@ class ProductImagesRepoImpl extends ProductImagesRepo { ); unsaved.isPrimary.visit( { }, - value => { columns.addOne(Fragment.lit("`is_primary`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(ScalaDbTypes.MariaTypes.bool, value)}"): @scala.annotation.nowarn } + value => { columns.addOne(Fragment.lit("`is_primary`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(IsPrimary.mariaType, value)}"): @scala.annotation.nowarn } ); unsaved.imageData.visit( { }, @@ -84,12 +84,12 @@ class ProductImagesRepoImpl extends ProductImagesRepo { override def selectById(imageId: ProductImagesId)(using c: Connection): Option[ProductImagesRow] = { sql"""select `image_id`, `product_id`, `image_url`, `thumbnail_url`, `alt_text`, `sort_order`, `is_primary`, `image_data` from `product_images` - where `image_id` = ${Fragment.encode(ProductImagesId.dbType, imageId)}""".query(ProductImagesRow.`_rowParser`.first()).runUnchecked(c) + where `image_id` = ${Fragment.encode(ProductImagesId.mariaType, imageId)}""".query(ProductImagesRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(imageIds: Array[ProductImagesId])(using c: Connection): List[ProductImagesRow] = { val fragments: ListBuffer[Fragment] = ListBuffer() - imageIds.foreach { id => fragments.addOne(Fragment.encode(ProductImagesId.dbType, id)): @scala.annotation.nowarn } + imageIds.foreach { id => fragments.addOne(Fragment.encode(ProductImagesId.mariaType, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("select `image_id`, `product_id`, `image_url`, `thumbnail_url`, `alt_text`, `sort_order`, `is_primary`, `image_data` from `product_images` where `image_id` in ("), Fragment.comma(fragments), Fragment.lit(")")).query(ProductImagesRow.`_rowParser`.all()).runUnchecked(c) } @@ -104,19 +104,19 @@ class ProductImagesRepoImpl extends ProductImagesRepo { override def update(row: ProductImagesRow)(using c: Connection): Boolean = { val imageId: ProductImagesId = row.imageId return sql"""update `product_images` - set `product_id` = ${Fragment.encode(ProductsId.dbType, row.productId)}, + set `product_id` = ${Fragment.encode(ProductsId.mariaType, row.productId)}, `image_url` = ${Fragment.encode(MariaTypes.varchar, row.imageUrl)}, `thumbnail_url` = ${Fragment.encode(MariaTypes.varchar.nullable, row.thumbnailUrl)}, `alt_text` = ${Fragment.encode(MariaTypes.varchar.nullable, row.altText)}, `sort_order` = ${Fragment.encode(MariaTypes.tinyintUnsigned, row.sortOrder)}, - `is_primary` = ${Fragment.encode(ScalaDbTypes.MariaTypes.bool, row.isPrimary)}, + `is_primary` = ${Fragment.encode(IsPrimary.mariaType, row.isPrimary)}, `image_data` = ${Fragment.encode(MariaTypes.longblob.nullable, row.imageData)} - where `image_id` = ${Fragment.encode(ProductImagesId.dbType, imageId)}""".update().runUnchecked(c) > 0 + where `image_id` = ${Fragment.encode(ProductImagesId.mariaType, imageId)}""".update().runUnchecked(c) > 0 } override def upsert(unsaved: ProductImagesRow)(using c: Connection): ProductImagesRow = { sql"""INSERT INTO `product_images`(`image_id`, `product_id`, `image_url`, `thumbnail_url`, `alt_text`, `sort_order`, `is_primary`, `image_data`) - VALUES (${Fragment.encode(ProductImagesId.dbType, unsaved.imageId)}, ${Fragment.encode(ProductsId.dbType, unsaved.productId)}, ${Fragment.encode(MariaTypes.varchar, unsaved.imageUrl)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.thumbnailUrl)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.altText)}, ${Fragment.encode(MariaTypes.tinyintUnsigned, unsaved.sortOrder)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.bool, unsaved.isPrimary)}, ${Fragment.encode(MariaTypes.longblob.nullable, unsaved.imageData)}) + VALUES (${Fragment.encode(ProductImagesId.mariaType, unsaved.imageId)}, ${Fragment.encode(ProductsId.mariaType, unsaved.productId)}, ${Fragment.encode(MariaTypes.varchar, unsaved.imageUrl)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.thumbnailUrl)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.altText)}, ${Fragment.encode(MariaTypes.tinyintUnsigned, unsaved.sortOrder)}, ${Fragment.encode(IsPrimary.mariaType, unsaved.isPrimary)}, ${Fragment.encode(MariaTypes.longblob.nullable, unsaved.imageData)}) ON DUPLICATE KEY UPDATE `product_id` = VALUES(`product_id`), `image_url` = VALUES(`image_url`), `thumbnail_url` = VALUES(`thumbnail_url`), diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/product_images/ProductImagesRow.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/product_images/ProductImagesRow.scala index b3b490419b..615b8ff5d1 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/product_images/ProductImagesRow.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/product_images/ProductImagesRow.scala @@ -12,9 +12,9 @@ import dev.typr.foundations.data.Uint1 import dev.typr.foundations.scala.DbTypeOps import dev.typr.foundations.scala.RowParser import dev.typr.foundations.scala.RowParsers -import dev.typr.foundations.scala.ScalaDbTypes import testdb.customtypes.Defaulted import testdb.products.ProductsId +import testdb.userdefined.IsPrimary /** Table: product_images * Primary key: image_id @@ -45,19 +45,19 @@ case class ProductImagesRow( /** * Default: 0 */ - @JsonProperty("is_primary") isPrimary: Boolean, + @JsonProperty("is_primary") isPrimary: /* user-picked */ IsPrimary, /** Optional embedded image data * Default: NULL */ @JsonProperty("image_data") imageData: Option[Array[Byte]] -) extends Tuple8[ProductImagesId, ProductsId, String, Option[String], Option[String], Uint1, Boolean, Option[Array[Byte]]] { +) extends Tuple8[ProductImagesId, ProductsId, String, Option[String], Option[String], Uint1, /* user-picked */ IsPrimary, Option[Array[Byte]]] { def id: ProductImagesId = imageId def toUnsavedRow( thumbnailUrl: Defaulted[Option[String]] = Defaulted.Provided(this.thumbnailUrl), altText: Defaulted[Option[String]] = Defaulted.Provided(this.altText), sortOrder: Defaulted[Uint1] = Defaulted.Provided(this.sortOrder), - isPrimary: Defaulted[Boolean] = Defaulted.Provided(this.isPrimary), + isPrimary: Defaulted[/* user-picked */ IsPrimary] = Defaulted.Provided(this.isPrimary), imageData: Defaulted[Option[Array[Byte]]] = Defaulted.Provided(this.imageData) ): ProductImagesRowUnsaved = { new ProductImagesRowUnsaved( @@ -83,11 +83,11 @@ case class ProductImagesRow( override def `_6`: Uint1 = sortOrder - override def `_7`: Boolean = isPrimary + override def `_7`: /* user-picked */ IsPrimary = isPrimary override def `_8`: Option[Array[Byte]] = imageData } object ProductImagesRow { - val `_rowParser`: RowParser[ProductImagesRow] = RowParsers.of(ProductImagesId.dbType, ProductsId.dbType, MariaTypes.varchar, MariaTypes.varchar.nullable, MariaTypes.varchar.nullable, MariaTypes.tinyintUnsigned, ScalaDbTypes.MariaTypes.bool, MariaTypes.longblob.nullable)(ProductImagesRow.apply)(row => Array[Any](row.imageId, row.productId, row.imageUrl, row.thumbnailUrl, row.altText, row.sortOrder, row.isPrimary, row.imageData)) + val `_rowParser`: RowParser[ProductImagesRow] = RowParsers.of(ProductImagesId.mariaType, ProductsId.mariaType, MariaTypes.varchar, MariaTypes.varchar.nullable, MariaTypes.varchar.nullable, MariaTypes.tinyintUnsigned, IsPrimary.mariaType, MariaTypes.longblob.nullable)(ProductImagesRow.apply)(row => Array[Any](row.imageId, row.productId, row.imageUrl, row.thumbnailUrl, row.altText, row.sortOrder, row.isPrimary, row.imageData)) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/product_images/ProductImagesRowUnsaved.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/product_images/ProductImagesRowUnsaved.scala index 06c3099dad..7086003f02 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/product_images/ProductImagesRowUnsaved.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/product_images/ProductImagesRowUnsaved.scala @@ -10,6 +10,7 @@ import dev.typr.foundations.data.Uint1 import testdb.customtypes.Defaulted import testdb.customtypes.Defaulted.UseDefault import testdb.products.ProductsId +import testdb.userdefined.IsPrimary /** This class corresponds to a row in table `product_images` which has not been persisted yet */ case class ProductImagesRowUnsaved( @@ -34,7 +35,7 @@ case class ProductImagesRowUnsaved( /** Default: 0 */ - @JsonProperty("is_primary") isPrimary: Defaulted[Boolean] = new UseDefault(), + @JsonProperty("is_primary") isPrimary: Defaulted[/* user-picked */ IsPrimary] = new UseDefault(), /** Default: NULL * Optional embedded image data */ @@ -44,7 +45,7 @@ case class ProductImagesRowUnsaved( thumbnailUrlDefault: => Option[String], altTextDefault: => Option[String], sortOrderDefault: => Uint1, - isPrimaryDefault: => Boolean, + isPrimaryDefault: => /* user-picked */ IsPrimary, imageDataDefault: => Option[Array[Byte]], imageIdDefault: => ProductImagesId ): ProductImagesRow = { diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/product_prices/ProductPricesFields.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/product_prices/ProductPricesFields.scala index d5f85d343b..680608297b 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/product_prices/ProductPricesFields.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/product_prices/ProductPricesFields.scala @@ -35,7 +35,7 @@ class ProductPricesFields(val `_path`: java.util.List[Path]) extends TupleExpr7[ None, None, (row, value) => row.copy(priceId = value), - ProductPricesId.dbType + ProductPricesId.mariaType ) } @@ -47,7 +47,7 @@ class ProductPricesFields(val `_path`: java.util.List[Path]) extends TupleExpr7[ None, None, (row, value) => row.copy(productId = value), - ProductsId.dbType + ProductsId.mariaType ) } @@ -59,7 +59,7 @@ class ProductPricesFields(val `_path`: java.util.List[Path]) extends TupleExpr7[ None, None, (row, value) => row.copy(tierId = value), - PriceTiersId.dbType + PriceTiersId.mariaType ) } diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/product_prices/ProductPricesId.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/product_prices/ProductPricesId.scala index 6bc7f37e8b..4b2955525b 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/product_prices/ProductPricesId.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/product_prices/ProductPricesId.scala @@ -17,5 +17,5 @@ case class ProductPricesId(@JsonValue value: Uint8) extends scala.AnyVal object ProductPricesId { given bijection: Bijection[ProductPricesId, Uint8] = Bijection.apply[ProductPricesId, Uint8](_.value)(ProductPricesId.apply) - given dbType: MariaType[ProductPricesId] = MariaTypes.bigintUnsigned.bimap(ProductPricesId.apply, _.value) + given mariaType: MariaType[ProductPricesId] = MariaTypes.bigintUnsigned.bimap(ProductPricesId.apply, _.value) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/product_prices/ProductPricesRepoImpl.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/product_prices/ProductPricesRepoImpl.scala index 4c0c2b40f6..51b9e25d07 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/product_prices/ProductPricesRepoImpl.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/product_prices/ProductPricesRepoImpl.scala @@ -22,17 +22,17 @@ import dev.typr.foundations.scala.Fragment.sql class ProductPricesRepoImpl extends ProductPricesRepo { override def delete: DeleteBuilder[ProductPricesFields, ProductPricesRow] = DeleteBuilder.of("`product_prices`", ProductPricesFields.structure, Dialect.MARIADB) - override def deleteById(priceId: ProductPricesId)(using c: Connection): Boolean = sql"delete from `product_prices` where `price_id` = ${Fragment.encode(ProductPricesId.dbType, priceId)}".update().runUnchecked(c) > 0 + override def deleteById(priceId: ProductPricesId)(using c: Connection): Boolean = sql"delete from `product_prices` where `price_id` = ${Fragment.encode(ProductPricesId.mariaType, priceId)}".update().runUnchecked(c) > 0 override def deleteByIds(priceIds: Array[ProductPricesId])(using c: Connection): Int = { val fragments: ListBuffer[Fragment] = ListBuffer() - priceIds.foreach { id => fragments.addOne(Fragment.encode(ProductPricesId.dbType, id)): @scala.annotation.nowarn } + priceIds.foreach { id => fragments.addOne(Fragment.encode(ProductPricesId.mariaType, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("delete from `product_prices` where `price_id` in ("), Fragment.comma(fragments), Fragment.lit(")")).update().runUnchecked(c) } override def insert(unsaved: ProductPricesRow)(using c: Connection): ProductPricesRow = { sql"""insert into `product_prices`(`product_id`, `tier_id`, `price`, `currency_code`, `valid_from`, `valid_to`) - values (${Fragment.encode(ProductsId.dbType, unsaved.productId)}, ${Fragment.encode(PriceTiersId.dbType.nullable, unsaved.tierId)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.price)}, ${Fragment.encode(MariaTypes.char_, unsaved.currencyCode)}, ${Fragment.encode(MariaTypes.date, unsaved.validFrom)}, ${Fragment.encode(MariaTypes.date.nullable, unsaved.validTo)}) + values (${Fragment.encode(ProductsId.mariaType, unsaved.productId)}, ${Fragment.encode(PriceTiersId.mariaType.nullable, unsaved.tierId)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.price)}, ${Fragment.encode(MariaTypes.char_, unsaved.currencyCode)}, ${Fragment.encode(MariaTypes.date, unsaved.validFrom)}, ${Fragment.encode(MariaTypes.date.nullable, unsaved.validTo)}) RETURNING `price_id`, `product_id`, `tier_id`, `price`, `currency_code`, `valid_from`, `valid_to` """ .updateReturning(ProductPricesRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -42,14 +42,14 @@ class ProductPricesRepoImpl extends ProductPricesRepo { val columns: ListBuffer[Fragment] = ListBuffer() val values: ListBuffer[Fragment] = ListBuffer() columns.addOne(Fragment.lit("`product_id`")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(ProductsId.dbType, unsaved.productId)}"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(ProductsId.mariaType, unsaved.productId)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit("`price`")): @scala.annotation.nowarn values.addOne(sql"${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.price)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit("`valid_from`")): @scala.annotation.nowarn values.addOne(sql"${Fragment.encode(MariaTypes.date, unsaved.validFrom)}"): @scala.annotation.nowarn unsaved.tierId.visit( { }, - value => { columns.addOne(Fragment.lit("`tier_id`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(PriceTiersId.dbType.nullable, value)}"): @scala.annotation.nowarn } + value => { columns.addOne(Fragment.lit("`tier_id`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(PriceTiersId.mariaType.nullable, value)}"): @scala.annotation.nowarn } ); unsaved.currencyCode.visit( { }, @@ -79,12 +79,12 @@ class ProductPricesRepoImpl extends ProductPricesRepo { override def selectById(priceId: ProductPricesId)(using c: Connection): Option[ProductPricesRow] = { sql"""select `price_id`, `product_id`, `tier_id`, `price`, `currency_code`, `valid_from`, `valid_to` from `product_prices` - where `price_id` = ${Fragment.encode(ProductPricesId.dbType, priceId)}""".query(ProductPricesRow.`_rowParser`.first()).runUnchecked(c) + where `price_id` = ${Fragment.encode(ProductPricesId.mariaType, priceId)}""".query(ProductPricesRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(priceIds: Array[ProductPricesId])(using c: Connection): List[ProductPricesRow] = { val fragments: ListBuffer[Fragment] = ListBuffer() - priceIds.foreach { id => fragments.addOne(Fragment.encode(ProductPricesId.dbType, id)): @scala.annotation.nowarn } + priceIds.foreach { id => fragments.addOne(Fragment.encode(ProductPricesId.mariaType, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("select `price_id`, `product_id`, `tier_id`, `price`, `currency_code`, `valid_from`, `valid_to` from `product_prices` where `price_id` in ("), Fragment.comma(fragments), Fragment.lit(")")).query(ProductPricesRow.`_rowParser`.all()).runUnchecked(c) } @@ -99,18 +99,18 @@ class ProductPricesRepoImpl extends ProductPricesRepo { override def update(row: ProductPricesRow)(using c: Connection): Boolean = { val priceId: ProductPricesId = row.priceId return sql"""update `product_prices` - set `product_id` = ${Fragment.encode(ProductsId.dbType, row.productId)}, - `tier_id` = ${Fragment.encode(PriceTiersId.dbType.nullable, row.tierId)}, + set `product_id` = ${Fragment.encode(ProductsId.mariaType, row.productId)}, + `tier_id` = ${Fragment.encode(PriceTiersId.mariaType.nullable, row.tierId)}, `price` = ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, row.price)}, `currency_code` = ${Fragment.encode(MariaTypes.char_, row.currencyCode)}, `valid_from` = ${Fragment.encode(MariaTypes.date, row.validFrom)}, `valid_to` = ${Fragment.encode(MariaTypes.date.nullable, row.validTo)} - where `price_id` = ${Fragment.encode(ProductPricesId.dbType, priceId)}""".update().runUnchecked(c) > 0 + where `price_id` = ${Fragment.encode(ProductPricesId.mariaType, priceId)}""".update().runUnchecked(c) > 0 } override def upsert(unsaved: ProductPricesRow)(using c: Connection): ProductPricesRow = { sql"""INSERT INTO `product_prices`(`price_id`, `product_id`, `tier_id`, `price`, `currency_code`, `valid_from`, `valid_to`) - VALUES (${Fragment.encode(ProductPricesId.dbType, unsaved.priceId)}, ${Fragment.encode(ProductsId.dbType, unsaved.productId)}, ${Fragment.encode(PriceTiersId.dbType.nullable, unsaved.tierId)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.price)}, ${Fragment.encode(MariaTypes.char_, unsaved.currencyCode)}, ${Fragment.encode(MariaTypes.date, unsaved.validFrom)}, ${Fragment.encode(MariaTypes.date.nullable, unsaved.validTo)}) + VALUES (${Fragment.encode(ProductPricesId.mariaType, unsaved.priceId)}, ${Fragment.encode(ProductsId.mariaType, unsaved.productId)}, ${Fragment.encode(PriceTiersId.mariaType.nullable, unsaved.tierId)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.price)}, ${Fragment.encode(MariaTypes.char_, unsaved.currencyCode)}, ${Fragment.encode(MariaTypes.date, unsaved.validFrom)}, ${Fragment.encode(MariaTypes.date.nullable, unsaved.validTo)}) ON DUPLICATE KEY UPDATE `product_id` = VALUES(`product_id`), `tier_id` = VALUES(`tier_id`), `price` = VALUES(`price`), diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/product_prices/ProductPricesRow.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/product_prices/ProductPricesRow.scala index 0145c25a26..e1686d6d04 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/product_prices/ProductPricesRow.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/product_prices/ProductPricesRow.scala @@ -80,5 +80,5 @@ case class ProductPricesRow( } object ProductPricesRow { - val `_rowParser`: RowParser[ProductPricesRow] = RowParsers.of(ProductPricesId.dbType, ProductsId.dbType, PriceTiersId.dbType.nullable, ScalaDbTypes.MariaTypes.numeric, MariaTypes.char_, MariaTypes.date, MariaTypes.date.nullable)(ProductPricesRow.apply)(row => Array[Any](row.priceId, row.productId, row.tierId, row.price, row.currencyCode, row.validFrom, row.validTo)) + val `_rowParser`: RowParser[ProductPricesRow] = RowParsers.of(ProductPricesId.mariaType, ProductsId.mariaType, PriceTiersId.mariaType.nullable, ScalaDbTypes.MariaTypes.numeric, MariaTypes.char_, MariaTypes.date, MariaTypes.date.nullable)(ProductPricesRow.apply)(row => Array[Any](row.priceId, row.productId, row.tierId, row.price, row.currencyCode, row.validFrom, row.validTo)) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/product_search/ProductSearchSqlRow.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/product_search/ProductSearchSqlRow.scala index 49dba94898..70852547a3 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/product_search/ProductSearchSqlRow.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/product_search/ProductSearchSqlRow.scala @@ -47,5 +47,5 @@ case class ProductSearchSqlRow( } object ProductSearchSqlRow { - val `_rowParser`: RowParser[ProductSearchSqlRow] = RowParsers.of(ProductsId.dbType, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.varchar.nullable, ScalaDbTypes.MariaTypes.numeric, MariaTypes.text, MariaTypes.varchar.nullable)(ProductSearchSqlRow.apply)(row => Array[Any](row.productId, row.sku, row.name, row.shortDescription, row.basePrice, row.status, row.brandName)) + val `_rowParser`: RowParser[ProductSearchSqlRow] = RowParsers.of(ProductsId.mariaType, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.varchar.nullable, ScalaDbTypes.MariaTypes.numeric, MariaTypes.text, MariaTypes.varchar.nullable)(ProductSearchSqlRow.apply)(row => Array[Any](row.productId, row.sku, row.name, row.shortDescription, row.basePrice, row.status, row.brandName)) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/products/ProductsFields.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/products/ProductsFields.scala index 3140c20c26..35e381436d 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/products/ProductsFields.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/products/ProductsFields.scala @@ -34,7 +34,7 @@ class ProductsFields(val `_path`: java.util.List[Path]) extends TupleExpr18[Prod None, None, (row, value) => row.copy(productId = value), - ProductsId.dbType + ProductsId.mariaType ) } @@ -58,7 +58,7 @@ class ProductsFields(val `_path`: java.util.List[Path]) extends TupleExpr18[Prod None, None, (row, value) => row.copy(brandId = value), - BrandsId.dbType + BrandsId.mariaType ) } @@ -178,7 +178,7 @@ class ProductsFields(val `_path`: java.util.List[Path]) extends TupleExpr18[Prod None, None, (row, value) => row.copy(tags = value), - BestsellerClearanceFSet.dbType + BestsellerClearanceFSet.mariaType ) } diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/products/ProductsId.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/products/ProductsId.scala index 882251c50a..591f6d020c 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/products/ProductsId.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/products/ProductsId.scala @@ -17,5 +17,5 @@ case class ProductsId(@JsonValue value: Uint8) extends scala.AnyVal object ProductsId { given bijection: Bijection[ProductsId, Uint8] = Bijection.apply[ProductsId, Uint8](_.value)(ProductsId.apply) - given dbType: MariaType[ProductsId] = MariaTypes.bigintUnsigned.bimap(ProductsId.apply, _.value) + given mariaType: MariaType[ProductsId] = MariaTypes.bigintUnsigned.bimap(ProductsId.apply, _.value) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/products/ProductsRepoImpl.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/products/ProductsRepoImpl.scala index ecfe9ab970..55a2e5b14c 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/products/ProductsRepoImpl.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/products/ProductsRepoImpl.scala @@ -22,17 +22,17 @@ import dev.typr.foundations.scala.Fragment.sql class ProductsRepoImpl extends ProductsRepo { override def delete: DeleteBuilder[ProductsFields, ProductsRow] = DeleteBuilder.of("`products`", ProductsFields.structure, Dialect.MARIADB) - override def deleteById(productId: ProductsId)(using c: Connection): Boolean = sql"delete from `products` where `product_id` = ${Fragment.encode(ProductsId.dbType, productId)}".update().runUnchecked(c) > 0 + override def deleteById(productId: ProductsId)(using c: Connection): Boolean = sql"delete from `products` where `product_id` = ${Fragment.encode(ProductsId.mariaType, productId)}".update().runUnchecked(c) > 0 override def deleteByIds(productIds: Array[ProductsId])(using c: Connection): Int = { val fragments: ListBuffer[Fragment] = ListBuffer() - productIds.foreach { id => fragments.addOne(Fragment.encode(ProductsId.dbType, id)): @scala.annotation.nowarn } + productIds.foreach { id => fragments.addOne(Fragment.encode(ProductsId.mariaType, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("delete from `products` where `product_id` in ("), Fragment.comma(fragments), Fragment.lit(")")).update().runUnchecked(c) } override def insert(unsaved: ProductsRow)(using c: Connection): ProductsRow = { sql"""insert into `products`(`sku`, `brand_id`, `name`, `short_description`, `full_description`, `base_price`, `cost_price`, `weight_kg`, `dimensions_json`, `status`, `tax_class`, `tags`, `attributes`, `seo_metadata`, `created_at`, `updated_at`, `published_at`) - values (${Fragment.encode(MariaTypes.varchar, unsaved.sku)}, ${Fragment.encode(BrandsId.dbType.nullable, unsaved.brandId)}, ${Fragment.encode(MariaTypes.varchar, unsaved.name)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.shortDescription)}, ${Fragment.encode(MariaTypes.longtext.nullable, unsaved.fullDescription)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.basePrice)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric.nullable, unsaved.costPrice)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric.nullable, unsaved.weightKg)}, ${Fragment.encode(MariaTypes.json.nullable, unsaved.dimensionsJson)}, ${Fragment.encode(MariaTypes.text, unsaved.status)}, ${Fragment.encode(MariaTypes.text, unsaved.taxClass)}, ${Fragment.encode(BestsellerClearanceFSet.dbType.nullable, unsaved.tags)}, ${Fragment.encode(MariaTypes.json.nullable, unsaved.attributes)}, ${Fragment.encode(MariaTypes.json.nullable, unsaved.seoMetadata)}, ${Fragment.encode(MariaTypes.datetime, unsaved.createdAt)}, ${Fragment.encode(MariaTypes.datetime, unsaved.updatedAt)}, ${Fragment.encode(MariaTypes.datetime.nullable, unsaved.publishedAt)}) + values (${Fragment.encode(MariaTypes.varchar, unsaved.sku)}, ${Fragment.encode(BrandsId.mariaType.nullable, unsaved.brandId)}, ${Fragment.encode(MariaTypes.varchar, unsaved.name)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.shortDescription)}, ${Fragment.encode(MariaTypes.longtext.nullable, unsaved.fullDescription)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.basePrice)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric.nullable, unsaved.costPrice)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric.nullable, unsaved.weightKg)}, ${Fragment.encode(MariaTypes.json.nullable, unsaved.dimensionsJson)}, ${Fragment.encode(MariaTypes.text, unsaved.status)}, ${Fragment.encode(MariaTypes.text, unsaved.taxClass)}, ${Fragment.encode(BestsellerClearanceFSet.mariaType.nullable, unsaved.tags)}, ${Fragment.encode(MariaTypes.json.nullable, unsaved.attributes)}, ${Fragment.encode(MariaTypes.json.nullable, unsaved.seoMetadata)}, ${Fragment.encode(MariaTypes.datetime, unsaved.createdAt)}, ${Fragment.encode(MariaTypes.datetime, unsaved.updatedAt)}, ${Fragment.encode(MariaTypes.datetime.nullable, unsaved.publishedAt)}) RETURNING `product_id`, `sku`, `brand_id`, `name`, `short_description`, `full_description`, `base_price`, `cost_price`, `weight_kg`, `dimensions_json`, `status`, `tax_class`, `tags`, `attributes`, `seo_metadata`, `created_at`, `updated_at`, `published_at` """ .updateReturning(ProductsRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -49,7 +49,7 @@ class ProductsRepoImpl extends ProductsRepo { values.addOne(sql"${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.basePrice)}"): @scala.annotation.nowarn unsaved.brandId.visit( { }, - value => { columns.addOne(Fragment.lit("`brand_id`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(BrandsId.dbType.nullable, value)}"): @scala.annotation.nowarn } + value => { columns.addOne(Fragment.lit("`brand_id`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(BrandsId.mariaType.nullable, value)}"): @scala.annotation.nowarn } ); unsaved.shortDescription.visit( { }, @@ -81,7 +81,7 @@ class ProductsRepoImpl extends ProductsRepo { ); unsaved.tags.visit( { }, - value => { columns.addOne(Fragment.lit("`tags`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(BestsellerClearanceFSet.dbType.nullable, value)}"): @scala.annotation.nowarn } + value => { columns.addOne(Fragment.lit("`tags`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(BestsellerClearanceFSet.mariaType.nullable, value)}"): @scala.annotation.nowarn } ); unsaved.attributes.visit( { }, @@ -123,12 +123,12 @@ class ProductsRepoImpl extends ProductsRepo { override def selectById(productId: ProductsId)(using c: Connection): Option[ProductsRow] = { sql"""select `product_id`, `sku`, `brand_id`, `name`, `short_description`, `full_description`, `base_price`, `cost_price`, `weight_kg`, `dimensions_json`, `status`, `tax_class`, `tags`, `attributes`, `seo_metadata`, `created_at`, `updated_at`, `published_at` from `products` - where `product_id` = ${Fragment.encode(ProductsId.dbType, productId)}""".query(ProductsRow.`_rowParser`.first()).runUnchecked(c) + where `product_id` = ${Fragment.encode(ProductsId.mariaType, productId)}""".query(ProductsRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(productIds: Array[ProductsId])(using c: Connection): List[ProductsRow] = { val fragments: ListBuffer[Fragment] = ListBuffer() - productIds.foreach { id => fragments.addOne(Fragment.encode(ProductsId.dbType, id)): @scala.annotation.nowarn } + productIds.foreach { id => fragments.addOne(Fragment.encode(ProductsId.mariaType, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("select `product_id`, `sku`, `brand_id`, `name`, `short_description`, `full_description`, `base_price`, `cost_price`, `weight_kg`, `dimensions_json`, `status`, `tax_class`, `tags`, `attributes`, `seo_metadata`, `created_at`, `updated_at`, `published_at` from `products` where `product_id` in ("), Fragment.comma(fragments), Fragment.lit(")")).query(ProductsRow.`_rowParser`.all()).runUnchecked(c) } @@ -151,7 +151,7 @@ class ProductsRepoImpl extends ProductsRepo { val productId: ProductsId = row.productId return sql"""update `products` set `sku` = ${Fragment.encode(MariaTypes.varchar, row.sku)}, - `brand_id` = ${Fragment.encode(BrandsId.dbType.nullable, row.brandId)}, + `brand_id` = ${Fragment.encode(BrandsId.mariaType.nullable, row.brandId)}, `name` = ${Fragment.encode(MariaTypes.varchar, row.name)}, `short_description` = ${Fragment.encode(MariaTypes.varchar.nullable, row.shortDescription)}, `full_description` = ${Fragment.encode(MariaTypes.longtext.nullable, row.fullDescription)}, @@ -161,18 +161,18 @@ class ProductsRepoImpl extends ProductsRepo { `dimensions_json` = ${Fragment.encode(MariaTypes.json.nullable, row.dimensionsJson)}, `status` = ${Fragment.encode(MariaTypes.text, row.status)}, `tax_class` = ${Fragment.encode(MariaTypes.text, row.taxClass)}, - `tags` = ${Fragment.encode(BestsellerClearanceFSet.dbType.nullable, row.tags)}, + `tags` = ${Fragment.encode(BestsellerClearanceFSet.mariaType.nullable, row.tags)}, `attributes` = ${Fragment.encode(MariaTypes.json.nullable, row.attributes)}, `seo_metadata` = ${Fragment.encode(MariaTypes.json.nullable, row.seoMetadata)}, `created_at` = ${Fragment.encode(MariaTypes.datetime, row.createdAt)}, `updated_at` = ${Fragment.encode(MariaTypes.datetime, row.updatedAt)}, `published_at` = ${Fragment.encode(MariaTypes.datetime.nullable, row.publishedAt)} - where `product_id` = ${Fragment.encode(ProductsId.dbType, productId)}""".update().runUnchecked(c) > 0 + where `product_id` = ${Fragment.encode(ProductsId.mariaType, productId)}""".update().runUnchecked(c) > 0 } override def upsert(unsaved: ProductsRow)(using c: Connection): ProductsRow = { sql"""INSERT INTO `products`(`product_id`, `sku`, `brand_id`, `name`, `short_description`, `full_description`, `base_price`, `cost_price`, `weight_kg`, `dimensions_json`, `status`, `tax_class`, `tags`, `attributes`, `seo_metadata`, `created_at`, `updated_at`, `published_at`) - VALUES (${Fragment.encode(ProductsId.dbType, unsaved.productId)}, ${Fragment.encode(MariaTypes.varchar, unsaved.sku)}, ${Fragment.encode(BrandsId.dbType.nullable, unsaved.brandId)}, ${Fragment.encode(MariaTypes.varchar, unsaved.name)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.shortDescription)}, ${Fragment.encode(MariaTypes.longtext.nullable, unsaved.fullDescription)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.basePrice)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric.nullable, unsaved.costPrice)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric.nullable, unsaved.weightKg)}, ${Fragment.encode(MariaTypes.json.nullable, unsaved.dimensionsJson)}, ${Fragment.encode(MariaTypes.text, unsaved.status)}, ${Fragment.encode(MariaTypes.text, unsaved.taxClass)}, ${Fragment.encode(BestsellerClearanceFSet.dbType.nullable, unsaved.tags)}, ${Fragment.encode(MariaTypes.json.nullable, unsaved.attributes)}, ${Fragment.encode(MariaTypes.json.nullable, unsaved.seoMetadata)}, ${Fragment.encode(MariaTypes.datetime, unsaved.createdAt)}, ${Fragment.encode(MariaTypes.datetime, unsaved.updatedAt)}, ${Fragment.encode(MariaTypes.datetime.nullable, unsaved.publishedAt)}) + VALUES (${Fragment.encode(ProductsId.mariaType, unsaved.productId)}, ${Fragment.encode(MariaTypes.varchar, unsaved.sku)}, ${Fragment.encode(BrandsId.mariaType.nullable, unsaved.brandId)}, ${Fragment.encode(MariaTypes.varchar, unsaved.name)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.shortDescription)}, ${Fragment.encode(MariaTypes.longtext.nullable, unsaved.fullDescription)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.basePrice)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric.nullable, unsaved.costPrice)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric.nullable, unsaved.weightKg)}, ${Fragment.encode(MariaTypes.json.nullable, unsaved.dimensionsJson)}, ${Fragment.encode(MariaTypes.text, unsaved.status)}, ${Fragment.encode(MariaTypes.text, unsaved.taxClass)}, ${Fragment.encode(BestsellerClearanceFSet.mariaType.nullable, unsaved.tags)}, ${Fragment.encode(MariaTypes.json.nullable, unsaved.attributes)}, ${Fragment.encode(MariaTypes.json.nullable, unsaved.seoMetadata)}, ${Fragment.encode(MariaTypes.datetime, unsaved.createdAt)}, ${Fragment.encode(MariaTypes.datetime, unsaved.updatedAt)}, ${Fragment.encode(MariaTypes.datetime.nullable, unsaved.publishedAt)}) ON DUPLICATE KEY UPDATE `sku` = VALUES(`sku`), `brand_id` = VALUES(`brand_id`), `name` = VALUES(`name`), diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/products/ProductsRow.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/products/ProductsRow.scala index b5c78deb4a..ad954b669e 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/products/ProductsRow.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/products/ProductsRow.scala @@ -167,5 +167,5 @@ case class ProductsRow( } object ProductsRow { - val `_rowParser`: RowParser[ProductsRow] = RowParsers.of(ProductsId.dbType, MariaTypes.varchar, BrandsId.dbType.nullable, MariaTypes.varchar, MariaTypes.varchar.nullable, MariaTypes.longtext.nullable, ScalaDbTypes.MariaTypes.numeric, ScalaDbTypes.MariaTypes.numeric.nullable, ScalaDbTypes.MariaTypes.numeric.nullable, MariaTypes.json.nullable, MariaTypes.text, MariaTypes.text, BestsellerClearanceFSet.dbType.nullable, MariaTypes.json.nullable, MariaTypes.json.nullable, MariaTypes.datetime, MariaTypes.datetime, MariaTypes.datetime.nullable)(ProductsRow.apply)(row => Array[Any](row.productId, row.sku, row.brandId, row.name, row.shortDescription, row.fullDescription, row.basePrice, row.costPrice, row.weightKg, row.dimensionsJson, row.status, row.taxClass, row.tags, row.attributes, row.seoMetadata, row.createdAt, row.updatedAt, row.publishedAt)) + val `_rowParser`: RowParser[ProductsRow] = RowParsers.of(ProductsId.mariaType, MariaTypes.varchar, BrandsId.mariaType.nullable, MariaTypes.varchar, MariaTypes.varchar.nullable, MariaTypes.longtext.nullable, ScalaDbTypes.MariaTypes.numeric, ScalaDbTypes.MariaTypes.numeric.nullable, ScalaDbTypes.MariaTypes.numeric.nullable, MariaTypes.json.nullable, MariaTypes.text, MariaTypes.text, BestsellerClearanceFSet.mariaType.nullable, MariaTypes.json.nullable, MariaTypes.json.nullable, MariaTypes.datetime, MariaTypes.datetime, MariaTypes.datetime.nullable)(ProductsRow.apply)(row => Array[Any](row.productId, row.sku, row.brandId, row.name, row.shortDescription, row.fullDescription, row.basePrice, row.costPrice, row.weightKg, row.dimensionsJson, row.status, row.taxClass, row.tags, row.attributes, row.seoMetadata, row.createdAt, row.updatedAt, row.publishedAt)) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/promotions/PromotionsFields.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/promotions/PromotionsFields.scala index 824db9d556..b45b03d796 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/promotions/PromotionsFields.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/promotions/PromotionsFields.scala @@ -22,8 +22,9 @@ import dev.typr.foundations.scala.SqlExpr.OptField import dev.typr.foundations.scala.TupleExpr16 import java.time.LocalDateTime import testdb.AllBrandsCategoriesCSet +import testdb.userdefined.IsActive -class PromotionsFields(val `_path`: java.util.List[Path]) extends TupleExpr16[PromotionsId, String, String, String, String, BigDecimal, BigDecimal, Uint4, Uint4, Uint1, AllBrandsCategoriesCSet, Json, LocalDateTime, LocalDateTime, Boolean, LocalDateTime] with RelationStructure[PromotionsFields, PromotionsRow] with FieldsBase[PromotionsRow] { +class PromotionsFields(val `_path`: java.util.List[Path]) extends TupleExpr16[PromotionsId, String, String, String, String, BigDecimal, BigDecimal, Uint4, Uint4, Uint1, AllBrandsCategoriesCSet, Json, LocalDateTime, LocalDateTime, /* user-picked */ IsActive, LocalDateTime] with RelationStructure[PromotionsFields, PromotionsRow] with FieldsBase[PromotionsRow] { def promotionId: IdField[PromotionsId, PromotionsRow] = { new IdField[PromotionsId, PromotionsRow]( _path, @@ -32,7 +33,7 @@ class PromotionsFields(val `_path`: java.util.List[Path]) extends TupleExpr16[Pr None, None, (row, value) => row.copy(promotionId = value), - PromotionsId.dbType + PromotionsId.mariaType ) } @@ -152,7 +153,7 @@ class PromotionsFields(val `_path`: java.util.List[Path]) extends TupleExpr16[Pr None, None, (row, value) => row.copy(applicableTo = value), - AllBrandsCategoriesCSet.dbType + AllBrandsCategoriesCSet.mariaType ) } @@ -192,15 +193,15 @@ class PromotionsFields(val `_path`: java.util.List[Path]) extends TupleExpr16[Pr ) } - def isActive: Field[Boolean, PromotionsRow] = { - new Field[Boolean, PromotionsRow]( + def isActive: Field[/* user-picked */ IsActive, PromotionsRow] = { + new Field[/* user-picked */ IsActive, PromotionsRow]( _path, "is_active", _.isActive, None, None, (row, value) => row.copy(isActive = value), - ScalaDbTypes.MariaTypes.bool + IsActive.mariaType ) } @@ -250,7 +251,7 @@ class PromotionsFields(val `_path`: java.util.List[Path]) extends TupleExpr16[Pr override def `_14`: SqlExpr[LocalDateTime] = validTo - override def `_15`: SqlExpr[Boolean] = isActive + override def `_15`: SqlExpr[/* user-picked */ IsActive] = isActive override def `_16`: SqlExpr[LocalDateTime] = createdAt } diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/promotions/PromotionsId.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/promotions/PromotionsId.scala index 94a4cd532a..47ea0cf074 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/promotions/PromotionsId.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/promotions/PromotionsId.scala @@ -17,5 +17,5 @@ case class PromotionsId(@JsonValue value: Uint4) extends scala.AnyVal object PromotionsId { given bijection: Bijection[PromotionsId, Uint4] = Bijection.apply[PromotionsId, Uint4](_.value)(PromotionsId.apply) - given dbType: MariaType[PromotionsId] = MariaTypes.intUnsigned.bimap(PromotionsId.apply, _.value) + given mariaType: MariaType[PromotionsId] = MariaTypes.intUnsigned.bimap(PromotionsId.apply, _.value) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/promotions/PromotionsRepoImpl.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/promotions/PromotionsRepoImpl.scala index 1520a3881e..31344c97e9 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/promotions/PromotionsRepoImpl.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/promotions/PromotionsRepoImpl.scala @@ -16,22 +16,23 @@ import dev.typr.foundations.scala.UpdateBuilder import java.sql.Connection import scala.collection.mutable.ListBuffer import testdb.AllBrandsCategoriesCSet +import testdb.userdefined.IsActive import dev.typr.foundations.scala.Fragment.sql class PromotionsRepoImpl extends PromotionsRepo { override def delete: DeleteBuilder[PromotionsFields, PromotionsRow] = DeleteBuilder.of("`promotions`", PromotionsFields.structure, Dialect.MARIADB) - override def deleteById(promotionId: PromotionsId)(using c: Connection): Boolean = sql"delete from `promotions` where `promotion_id` = ${Fragment.encode(PromotionsId.dbType, promotionId)}".update().runUnchecked(c) > 0 + override def deleteById(promotionId: PromotionsId)(using c: Connection): Boolean = sql"delete from `promotions` where `promotion_id` = ${Fragment.encode(PromotionsId.mariaType, promotionId)}".update().runUnchecked(c) > 0 override def deleteByIds(promotionIds: Array[PromotionsId])(using c: Connection): Int = { val fragments: ListBuffer[Fragment] = ListBuffer() - promotionIds.foreach { id => fragments.addOne(Fragment.encode(PromotionsId.dbType, id)): @scala.annotation.nowarn } + promotionIds.foreach { id => fragments.addOne(Fragment.encode(PromotionsId.mariaType, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("delete from `promotions` where `promotion_id` in ("), Fragment.comma(fragments), Fragment.lit(")")).update().runUnchecked(c) } override def insert(unsaved: PromotionsRow)(using c: Connection): PromotionsRow = { sql"""insert into `promotions`(`code`, `name`, `description`, `discount_type`, `discount_value`, `min_order_amount`, `max_uses`, `uses_count`, `max_uses_per_customer`, `applicable_to`, `rules_json`, `valid_from`, `valid_to`, `is_active`, `created_at`) - values (${Fragment.encode(MariaTypes.varchar, unsaved.code)}, ${Fragment.encode(MariaTypes.varchar, unsaved.name)}, ${Fragment.encode(MariaTypes.text.nullable, unsaved.description)}, ${Fragment.encode(MariaTypes.text, unsaved.discountType)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.discountValue)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric.nullable, unsaved.minOrderAmount)}, ${Fragment.encode(MariaTypes.intUnsigned.nullable, unsaved.maxUses)}, ${Fragment.encode(MariaTypes.intUnsigned, unsaved.usesCount)}, ${Fragment.encode(MariaTypes.tinyintUnsigned.nullable, unsaved.maxUsesPerCustomer)}, ${Fragment.encode(AllBrandsCategoriesCSet.dbType.nullable, unsaved.applicableTo)}, ${Fragment.encode(MariaTypes.json.nullable, unsaved.rulesJson)}, ${Fragment.encode(MariaTypes.datetime, unsaved.validFrom)}, ${Fragment.encode(MariaTypes.datetime, unsaved.validTo)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.bool, unsaved.isActive)}, ${Fragment.encode(MariaTypes.datetime, unsaved.createdAt)}) + values (${Fragment.encode(MariaTypes.varchar, unsaved.code)}, ${Fragment.encode(MariaTypes.varchar, unsaved.name)}, ${Fragment.encode(MariaTypes.text.nullable, unsaved.description)}, ${Fragment.encode(MariaTypes.text, unsaved.discountType)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.discountValue)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric.nullable, unsaved.minOrderAmount)}, ${Fragment.encode(MariaTypes.intUnsigned.nullable, unsaved.maxUses)}, ${Fragment.encode(MariaTypes.intUnsigned, unsaved.usesCount)}, ${Fragment.encode(MariaTypes.tinyintUnsigned.nullable, unsaved.maxUsesPerCustomer)}, ${Fragment.encode(AllBrandsCategoriesCSet.mariaType.nullable, unsaved.applicableTo)}, ${Fragment.encode(MariaTypes.json.nullable, unsaved.rulesJson)}, ${Fragment.encode(MariaTypes.datetime, unsaved.validFrom)}, ${Fragment.encode(MariaTypes.datetime, unsaved.validTo)}, ${Fragment.encode(IsActive.mariaType, unsaved.isActive)}, ${Fragment.encode(MariaTypes.datetime, unsaved.createdAt)}) RETURNING `promotion_id`, `code`, `name`, `description`, `discount_type`, `discount_value`, `min_order_amount`, `max_uses`, `uses_count`, `max_uses_per_customer`, `applicable_to`, `rules_json`, `valid_from`, `valid_to`, `is_active`, `created_at` """ .updateReturning(PromotionsRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -74,7 +75,7 @@ class PromotionsRepoImpl extends PromotionsRepo { ); unsaved.applicableTo.visit( { }, - value => { columns.addOne(Fragment.lit("`applicable_to`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(AllBrandsCategoriesCSet.dbType.nullable, value)}"): @scala.annotation.nowarn } + value => { columns.addOne(Fragment.lit("`applicable_to`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(AllBrandsCategoriesCSet.mariaType.nullable, value)}"): @scala.annotation.nowarn } ); unsaved.rulesJson.visit( { }, @@ -82,7 +83,7 @@ class PromotionsRepoImpl extends PromotionsRepo { ); unsaved.isActive.visit( { }, - value => { columns.addOne(Fragment.lit("`is_active`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(ScalaDbTypes.MariaTypes.bool, value)}"): @scala.annotation.nowarn } + value => { columns.addOne(Fragment.lit("`is_active`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(IsActive.mariaType, value)}"): @scala.annotation.nowarn } ); unsaved.createdAt.visit( { }, @@ -108,12 +109,12 @@ class PromotionsRepoImpl extends PromotionsRepo { override def selectById(promotionId: PromotionsId)(using c: Connection): Option[PromotionsRow] = { sql"""select `promotion_id`, `code`, `name`, `description`, `discount_type`, `discount_value`, `min_order_amount`, `max_uses`, `uses_count`, `max_uses_per_customer`, `applicable_to`, `rules_json`, `valid_from`, `valid_to`, `is_active`, `created_at` from `promotions` - where `promotion_id` = ${Fragment.encode(PromotionsId.dbType, promotionId)}""".query(PromotionsRow.`_rowParser`.first()).runUnchecked(c) + where `promotion_id` = ${Fragment.encode(PromotionsId.mariaType, promotionId)}""".query(PromotionsRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(promotionIds: Array[PromotionsId])(using c: Connection): List[PromotionsRow] = { val fragments: ListBuffer[Fragment] = ListBuffer() - promotionIds.foreach { id => fragments.addOne(Fragment.encode(PromotionsId.dbType, id)): @scala.annotation.nowarn } + promotionIds.foreach { id => fragments.addOne(Fragment.encode(PromotionsId.mariaType, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("select `promotion_id`, `code`, `name`, `description`, `discount_type`, `discount_value`, `min_order_amount`, `max_uses`, `uses_count`, `max_uses_per_customer`, `applicable_to`, `rules_json`, `valid_from`, `valid_to`, `is_active`, `created_at` from `promotions` where `promotion_id` in ("), Fragment.comma(fragments), Fragment.lit(")")).query(PromotionsRow.`_rowParser`.all()).runUnchecked(c) } @@ -144,18 +145,18 @@ class PromotionsRepoImpl extends PromotionsRepo { `max_uses` = ${Fragment.encode(MariaTypes.intUnsigned.nullable, row.maxUses)}, `uses_count` = ${Fragment.encode(MariaTypes.intUnsigned, row.usesCount)}, `max_uses_per_customer` = ${Fragment.encode(MariaTypes.tinyintUnsigned.nullable, row.maxUsesPerCustomer)}, - `applicable_to` = ${Fragment.encode(AllBrandsCategoriesCSet.dbType.nullable, row.applicableTo)}, + `applicable_to` = ${Fragment.encode(AllBrandsCategoriesCSet.mariaType.nullable, row.applicableTo)}, `rules_json` = ${Fragment.encode(MariaTypes.json.nullable, row.rulesJson)}, `valid_from` = ${Fragment.encode(MariaTypes.datetime, row.validFrom)}, `valid_to` = ${Fragment.encode(MariaTypes.datetime, row.validTo)}, - `is_active` = ${Fragment.encode(ScalaDbTypes.MariaTypes.bool, row.isActive)}, + `is_active` = ${Fragment.encode(IsActive.mariaType, row.isActive)}, `created_at` = ${Fragment.encode(MariaTypes.datetime, row.createdAt)} - where `promotion_id` = ${Fragment.encode(PromotionsId.dbType, promotionId)}""".update().runUnchecked(c) > 0 + where `promotion_id` = ${Fragment.encode(PromotionsId.mariaType, promotionId)}""".update().runUnchecked(c) > 0 } override def upsert(unsaved: PromotionsRow)(using c: Connection): PromotionsRow = { sql"""INSERT INTO `promotions`(`promotion_id`, `code`, `name`, `description`, `discount_type`, `discount_value`, `min_order_amount`, `max_uses`, `uses_count`, `max_uses_per_customer`, `applicable_to`, `rules_json`, `valid_from`, `valid_to`, `is_active`, `created_at`) - VALUES (${Fragment.encode(PromotionsId.dbType, unsaved.promotionId)}, ${Fragment.encode(MariaTypes.varchar, unsaved.code)}, ${Fragment.encode(MariaTypes.varchar, unsaved.name)}, ${Fragment.encode(MariaTypes.text.nullable, unsaved.description)}, ${Fragment.encode(MariaTypes.text, unsaved.discountType)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.discountValue)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric.nullable, unsaved.minOrderAmount)}, ${Fragment.encode(MariaTypes.intUnsigned.nullable, unsaved.maxUses)}, ${Fragment.encode(MariaTypes.intUnsigned, unsaved.usesCount)}, ${Fragment.encode(MariaTypes.tinyintUnsigned.nullable, unsaved.maxUsesPerCustomer)}, ${Fragment.encode(AllBrandsCategoriesCSet.dbType.nullable, unsaved.applicableTo)}, ${Fragment.encode(MariaTypes.json.nullable, unsaved.rulesJson)}, ${Fragment.encode(MariaTypes.datetime, unsaved.validFrom)}, ${Fragment.encode(MariaTypes.datetime, unsaved.validTo)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.bool, unsaved.isActive)}, ${Fragment.encode(MariaTypes.datetime, unsaved.createdAt)}) + VALUES (${Fragment.encode(PromotionsId.mariaType, unsaved.promotionId)}, ${Fragment.encode(MariaTypes.varchar, unsaved.code)}, ${Fragment.encode(MariaTypes.varchar, unsaved.name)}, ${Fragment.encode(MariaTypes.text.nullable, unsaved.description)}, ${Fragment.encode(MariaTypes.text, unsaved.discountType)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.discountValue)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric.nullable, unsaved.minOrderAmount)}, ${Fragment.encode(MariaTypes.intUnsigned.nullable, unsaved.maxUses)}, ${Fragment.encode(MariaTypes.intUnsigned, unsaved.usesCount)}, ${Fragment.encode(MariaTypes.tinyintUnsigned.nullable, unsaved.maxUsesPerCustomer)}, ${Fragment.encode(AllBrandsCategoriesCSet.mariaType.nullable, unsaved.applicableTo)}, ${Fragment.encode(MariaTypes.json.nullable, unsaved.rulesJson)}, ${Fragment.encode(MariaTypes.datetime, unsaved.validFrom)}, ${Fragment.encode(MariaTypes.datetime, unsaved.validTo)}, ${Fragment.encode(IsActive.mariaType, unsaved.isActive)}, ${Fragment.encode(MariaTypes.datetime, unsaved.createdAt)}) ON DUPLICATE KEY UPDATE `code` = VALUES(`code`), `name` = VALUES(`name`), `description` = VALUES(`description`), diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/promotions/PromotionsRow.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/promotions/PromotionsRow.scala index 7e7dd14170..ad7af2abdd 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/promotions/PromotionsRow.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/promotions/PromotionsRow.scala @@ -18,6 +18,7 @@ import dev.typr.foundations.scala.ScalaDbTypes import java.time.LocalDateTime import testdb.AllBrandsCategoriesCSet import testdb.customtypes.Defaulted +import testdb.userdefined.IsActive /** Table: promotions * Primary key: promotion_id @@ -70,12 +71,12 @@ case class PromotionsRow( /** * Default: 1 */ - @JsonProperty("is_active") isActive: Boolean, + @JsonProperty("is_active") isActive: /* user-picked */ IsActive, /** * Default: current_timestamp() */ @JsonProperty("created_at") createdAt: LocalDateTime -) extends Tuple16[PromotionsId, String, String, Option[String], String, BigDecimal, Option[BigDecimal], Option[Uint4], Uint4, Option[Uint1], Option[AllBrandsCategoriesCSet], Option[Json], LocalDateTime, LocalDateTime, Boolean, LocalDateTime] { +) extends Tuple16[PromotionsId, String, String, Option[String], String, BigDecimal, Option[BigDecimal], Option[Uint4], Uint4, Option[Uint1], Option[AllBrandsCategoriesCSet], Option[Json], LocalDateTime, LocalDateTime, /* user-picked */ IsActive, LocalDateTime] { def id: PromotionsId = promotionId def toUnsavedRow( @@ -86,7 +87,7 @@ case class PromotionsRow( maxUsesPerCustomer: Defaulted[Option[Uint1]] = Defaulted.Provided(this.maxUsesPerCustomer), applicableTo: Defaulted[Option[AllBrandsCategoriesCSet]] = Defaulted.Provided(this.applicableTo), rulesJson: Defaulted[Option[Json]] = Defaulted.Provided(this.rulesJson), - isActive: Defaulted[Boolean] = Defaulted.Provided(this.isActive), + isActive: Defaulted[/* user-picked */ IsActive] = Defaulted.Provided(this.isActive), createdAt: Defaulted[LocalDateTime] = Defaulted.Provided(this.createdAt) ): PromotionsRowUnsaved = { new PromotionsRowUnsaved( @@ -136,11 +137,11 @@ case class PromotionsRow( override def `_14`: LocalDateTime = validTo - override def `_15`: Boolean = isActive + override def `_15`: /* user-picked */ IsActive = isActive override def `_16`: LocalDateTime = createdAt } object PromotionsRow { - val `_rowParser`: RowParser[PromotionsRow] = RowParsers.of(PromotionsId.dbType, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.text.nullable, MariaTypes.text, ScalaDbTypes.MariaTypes.numeric, ScalaDbTypes.MariaTypes.numeric.nullable, MariaTypes.intUnsigned.nullable, MariaTypes.intUnsigned, MariaTypes.tinyintUnsigned.nullable, AllBrandsCategoriesCSet.dbType.nullable, MariaTypes.json.nullable, MariaTypes.datetime, MariaTypes.datetime, ScalaDbTypes.MariaTypes.bool, MariaTypes.datetime)(PromotionsRow.apply)(row => Array[Any](row.promotionId, row.code, row.name, row.description, row.discountType, row.discountValue, row.minOrderAmount, row.maxUses, row.usesCount, row.maxUsesPerCustomer, row.applicableTo, row.rulesJson, row.validFrom, row.validTo, row.isActive, row.createdAt)) + val `_rowParser`: RowParser[PromotionsRow] = RowParsers.of(PromotionsId.mariaType, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.text.nullable, MariaTypes.text, ScalaDbTypes.MariaTypes.numeric, ScalaDbTypes.MariaTypes.numeric.nullable, MariaTypes.intUnsigned.nullable, MariaTypes.intUnsigned, MariaTypes.tinyintUnsigned.nullable, AllBrandsCategoriesCSet.mariaType.nullable, MariaTypes.json.nullable, MariaTypes.datetime, MariaTypes.datetime, IsActive.mariaType, MariaTypes.datetime)(PromotionsRow.apply)(row => Array[Any](row.promotionId, row.code, row.name, row.description, row.discountType, row.discountValue, row.minOrderAmount, row.maxUses, row.usesCount, row.maxUsesPerCustomer, row.applicableTo, row.rulesJson, row.validFrom, row.validTo, row.isActive, row.createdAt)) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/promotions/PromotionsRowUnsaved.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/promotions/PromotionsRowUnsaved.scala index 92ee4a0af1..8c9bed511c 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/promotions/PromotionsRowUnsaved.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/promotions/PromotionsRowUnsaved.scala @@ -13,6 +13,7 @@ import java.time.LocalDateTime import testdb.AllBrandsCategoriesCSet import testdb.customtypes.Defaulted import testdb.customtypes.Defaulted.UseDefault +import testdb.userdefined.IsActive /** This class corresponds to a row in table `promotions` which has not been persisted yet */ case class PromotionsRowUnsaved( @@ -59,7 +60,7 @@ case class PromotionsRowUnsaved( /** Default: 1 */ - @JsonProperty("is_active") isActive: Defaulted[Boolean] = new UseDefault(), + @JsonProperty("is_active") isActive: Defaulted[/* user-picked */ IsActive] = new UseDefault(), /** Default: current_timestamp() */ @@ -73,7 +74,7 @@ case class PromotionsRowUnsaved( maxUsesPerCustomerDefault: => Option[Uint1], applicableToDefault: => Option[AllBrandsCategoriesCSet], rulesJsonDefault: => Option[Json], - isActiveDefault: => Boolean, + isActiveDefault: => /* user-picked */ IsActive, createdAtDefault: => LocalDateTime, promotionIdDefault: => PromotionsId ): PromotionsRow = { diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/reviews/ReviewsFields.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/reviews/ReviewsFields.scala index 7b8deee19c..7fef855d0c 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/reviews/ReviewsFields.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/reviews/ReviewsFields.scala @@ -15,7 +15,6 @@ import dev.typr.foundations.dsl.Path import dev.typr.foundations.dsl.SqlExpr.FieldLike import dev.typr.foundations.scala.ForeignKey import dev.typr.foundations.scala.RelationStructure -import dev.typr.foundations.scala.ScalaDbTypes import dev.typr.foundations.scala.SqlExpr import dev.typr.foundations.scala.SqlExpr.Field import dev.typr.foundations.scala.SqlExpr.IdField @@ -31,8 +30,10 @@ import testdb.order_items.OrderItemsRow import testdb.products.ProductsFields import testdb.products.ProductsId import testdb.products.ProductsRow +import testdb.userdefined.IsApproved +import testdb.userdefined.IsVerifiedPurchase -class ReviewsFields(val `_path`: java.util.List[Path]) extends TupleExpr18[ReviewsId, ProductsId, CustomersId, OrderItemsId, Uint1, String, String, Json, Json, Json, Boolean, Boolean, Uint4, Uint4, String, LocalDateTime, LocalDateTime, LocalDateTime] with RelationStructure[ReviewsFields, ReviewsRow] with FieldsBase[ReviewsRow] { +class ReviewsFields(val `_path`: java.util.List[Path]) extends TupleExpr18[ReviewsId, ProductsId, CustomersId, OrderItemsId, Uint1, String, String, Json, Json, Json, /* user-picked */ IsVerifiedPurchase, /* user-picked */ IsApproved, Uint4, Uint4, String, LocalDateTime, LocalDateTime, LocalDateTime] with RelationStructure[ReviewsFields, ReviewsRow] with FieldsBase[ReviewsRow] { def reviewId: IdField[ReviewsId, ReviewsRow] = { new IdField[ReviewsId, ReviewsRow]( _path, @@ -41,7 +42,7 @@ class ReviewsFields(val `_path`: java.util.List[Path]) extends TupleExpr18[Revie None, None, (row, value) => row.copy(reviewId = value), - ReviewsId.dbType + ReviewsId.mariaType ) } @@ -53,7 +54,7 @@ class ReviewsFields(val `_path`: java.util.List[Path]) extends TupleExpr18[Revie None, None, (row, value) => row.copy(productId = value), - ProductsId.dbType + ProductsId.mariaType ) } @@ -65,7 +66,7 @@ class ReviewsFields(val `_path`: java.util.List[Path]) extends TupleExpr18[Revie None, None, (row, value) => row.copy(customerId = value), - CustomersId.dbType + CustomersId.mariaType ) } @@ -77,7 +78,7 @@ class ReviewsFields(val `_path`: java.util.List[Path]) extends TupleExpr18[Revie None, None, (row, value) => row.copy(orderItemId = value), - OrderItemsId.dbType + OrderItemsId.mariaType ) } @@ -153,27 +154,27 @@ class ReviewsFields(val `_path`: java.util.List[Path]) extends TupleExpr18[Revie ) } - def isVerifiedPurchase: Field[Boolean, ReviewsRow] = { - new Field[Boolean, ReviewsRow]( + def isVerifiedPurchase: Field[/* user-picked */ IsVerifiedPurchase, ReviewsRow] = { + new Field[/* user-picked */ IsVerifiedPurchase, ReviewsRow]( _path, "is_verified_purchase", _.isVerifiedPurchase, None, None, (row, value) => row.copy(isVerifiedPurchase = value), - ScalaDbTypes.MariaTypes.bool + IsVerifiedPurchase.mariaType ) } - def isApproved: Field[Boolean, ReviewsRow] = { - new Field[Boolean, ReviewsRow]( + def isApproved: Field[/* user-picked */ IsApproved, ReviewsRow] = { + new Field[/* user-picked */ IsApproved, ReviewsRow]( _path, "is_approved", _.isApproved, None, None, (row, value) => row.copy(isApproved = value), - ScalaDbTypes.MariaTypes.bool + IsApproved.mariaType ) } @@ -281,9 +282,9 @@ class ReviewsFields(val `_path`: java.util.List[Path]) extends TupleExpr18[Revie override def `_10`: SqlExpr[Json] = images - override def `_11`: SqlExpr[Boolean] = isVerifiedPurchase + override def `_11`: SqlExpr[/* user-picked */ IsVerifiedPurchase] = isVerifiedPurchase - override def `_12`: SqlExpr[Boolean] = isApproved + override def `_12`: SqlExpr[/* user-picked */ IsApproved] = isApproved override def `_13`: SqlExpr[Uint4] = helpfulVotes diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/reviews/ReviewsId.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/reviews/ReviewsId.scala index 00f565705b..f8a8bc2b21 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/reviews/ReviewsId.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/reviews/ReviewsId.scala @@ -17,5 +17,5 @@ case class ReviewsId(@JsonValue value: Uint8) extends scala.AnyVal object ReviewsId { given bijection: Bijection[ReviewsId, Uint8] = Bijection.apply[ReviewsId, Uint8](_.value)(ReviewsId.apply) - given dbType: MariaType[ReviewsId] = MariaTypes.bigintUnsigned.bimap(ReviewsId.apply, _.value) + given mariaType: MariaType[ReviewsId] = MariaTypes.bigintUnsigned.bimap(ReviewsId.apply, _.value) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/reviews/ReviewsRepoImpl.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/reviews/ReviewsRepoImpl.scala index 4231abc3b2..2ed3df79d5 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/reviews/ReviewsRepoImpl.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/reviews/ReviewsRepoImpl.scala @@ -10,7 +10,6 @@ import dev.typr.foundations.scala.DbTypeOps import dev.typr.foundations.scala.DeleteBuilder import dev.typr.foundations.scala.Dialect import dev.typr.foundations.scala.Fragment -import dev.typr.foundations.scala.ScalaDbTypes import dev.typr.foundations.scala.SelectBuilder import dev.typr.foundations.scala.UpdateBuilder import java.sql.Connection @@ -18,22 +17,24 @@ import scala.collection.mutable.ListBuffer import testdb.customers.CustomersId import testdb.order_items.OrderItemsId import testdb.products.ProductsId +import testdb.userdefined.IsApproved +import testdb.userdefined.IsVerifiedPurchase import dev.typr.foundations.scala.Fragment.sql class ReviewsRepoImpl extends ReviewsRepo { override def delete: DeleteBuilder[ReviewsFields, ReviewsRow] = DeleteBuilder.of("`reviews`", ReviewsFields.structure, Dialect.MARIADB) - override def deleteById(reviewId: ReviewsId)(using c: Connection): Boolean = sql"delete from `reviews` where `review_id` = ${Fragment.encode(ReviewsId.dbType, reviewId)}".update().runUnchecked(c) > 0 + override def deleteById(reviewId: ReviewsId)(using c: Connection): Boolean = sql"delete from `reviews` where `review_id` = ${Fragment.encode(ReviewsId.mariaType, reviewId)}".update().runUnchecked(c) > 0 override def deleteByIds(reviewIds: Array[ReviewsId])(using c: Connection): Int = { val fragments: ListBuffer[Fragment] = ListBuffer() - reviewIds.foreach { id => fragments.addOne(Fragment.encode(ReviewsId.dbType, id)): @scala.annotation.nowarn } + reviewIds.foreach { id => fragments.addOne(Fragment.encode(ReviewsId.mariaType, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("delete from `reviews` where `review_id` in ("), Fragment.comma(fragments), Fragment.lit(")")).update().runUnchecked(c) } override def insert(unsaved: ReviewsRow)(using c: Connection): ReviewsRow = { sql"""insert into `reviews`(`product_id`, `customer_id`, `order_item_id`, `rating`, `title`, `content`, `pros`, `cons`, `images`, `is_verified_purchase`, `is_approved`, `helpful_votes`, `unhelpful_votes`, `admin_response`, `responded_at`, `created_at`, `updated_at`) - values (${Fragment.encode(ProductsId.dbType, unsaved.productId)}, ${Fragment.encode(CustomersId.dbType, unsaved.customerId)}, ${Fragment.encode(OrderItemsId.dbType.nullable, unsaved.orderItemId)}, ${Fragment.encode(MariaTypes.tinyintUnsigned, unsaved.rating)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.title)}, ${Fragment.encode(MariaTypes.text.nullable, unsaved.content)}, ${Fragment.encode(MariaTypes.json.nullable, unsaved.pros)}, ${Fragment.encode(MariaTypes.json.nullable, unsaved.cons)}, ${Fragment.encode(MariaTypes.json.nullable, unsaved.images)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.bool, unsaved.isVerifiedPurchase)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.bool, unsaved.isApproved)}, ${Fragment.encode(MariaTypes.intUnsigned, unsaved.helpfulVotes)}, ${Fragment.encode(MariaTypes.intUnsigned, unsaved.unhelpfulVotes)}, ${Fragment.encode(MariaTypes.text.nullable, unsaved.adminResponse)}, ${Fragment.encode(MariaTypes.datetime.nullable, unsaved.respondedAt)}, ${Fragment.encode(MariaTypes.datetime, unsaved.createdAt)}, ${Fragment.encode(MariaTypes.datetime, unsaved.updatedAt)}) + values (${Fragment.encode(ProductsId.mariaType, unsaved.productId)}, ${Fragment.encode(CustomersId.mariaType, unsaved.customerId)}, ${Fragment.encode(OrderItemsId.mariaType.nullable, unsaved.orderItemId)}, ${Fragment.encode(MariaTypes.tinyintUnsigned, unsaved.rating)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.title)}, ${Fragment.encode(MariaTypes.text.nullable, unsaved.content)}, ${Fragment.encode(MariaTypes.json.nullable, unsaved.pros)}, ${Fragment.encode(MariaTypes.json.nullable, unsaved.cons)}, ${Fragment.encode(MariaTypes.json.nullable, unsaved.images)}, ${Fragment.encode(IsVerifiedPurchase.mariaType, unsaved.isVerifiedPurchase)}, ${Fragment.encode(IsApproved.mariaType, unsaved.isApproved)}, ${Fragment.encode(MariaTypes.intUnsigned, unsaved.helpfulVotes)}, ${Fragment.encode(MariaTypes.intUnsigned, unsaved.unhelpfulVotes)}, ${Fragment.encode(MariaTypes.text.nullable, unsaved.adminResponse)}, ${Fragment.encode(MariaTypes.datetime.nullable, unsaved.respondedAt)}, ${Fragment.encode(MariaTypes.datetime, unsaved.createdAt)}, ${Fragment.encode(MariaTypes.datetime, unsaved.updatedAt)}) RETURNING `review_id`, `product_id`, `customer_id`, `order_item_id`, `rating`, `title`, `content`, `pros`, `cons`, `images`, `is_verified_purchase`, `is_approved`, `helpful_votes`, `unhelpful_votes`, `admin_response`, `responded_at`, `created_at`, `updated_at` """ .updateReturning(ReviewsRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -43,14 +44,14 @@ class ReviewsRepoImpl extends ReviewsRepo { val columns: ListBuffer[Fragment] = ListBuffer() val values: ListBuffer[Fragment] = ListBuffer() columns.addOne(Fragment.lit("`product_id`")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(ProductsId.dbType, unsaved.productId)}"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(ProductsId.mariaType, unsaved.productId)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit("`customer_id`")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(CustomersId.dbType, unsaved.customerId)}"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(CustomersId.mariaType, unsaved.customerId)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit("`rating`")): @scala.annotation.nowarn values.addOne(sql"${Fragment.encode(MariaTypes.tinyintUnsigned, unsaved.rating)}"): @scala.annotation.nowarn unsaved.orderItemId.visit( { }, - value => { columns.addOne(Fragment.lit("`order_item_id`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(OrderItemsId.dbType.nullable, value)}"): @scala.annotation.nowarn } + value => { columns.addOne(Fragment.lit("`order_item_id`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(OrderItemsId.mariaType.nullable, value)}"): @scala.annotation.nowarn } ); unsaved.title.visit( { }, @@ -74,11 +75,11 @@ class ReviewsRepoImpl extends ReviewsRepo { ); unsaved.isVerifiedPurchase.visit( { }, - value => { columns.addOne(Fragment.lit("`is_verified_purchase`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(ScalaDbTypes.MariaTypes.bool, value)}"): @scala.annotation.nowarn } + value => { columns.addOne(Fragment.lit("`is_verified_purchase`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(IsVerifiedPurchase.mariaType, value)}"): @scala.annotation.nowarn } ); unsaved.isApproved.visit( { }, - value => { columns.addOne(Fragment.lit("`is_approved`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(ScalaDbTypes.MariaTypes.bool, value)}"): @scala.annotation.nowarn } + value => { columns.addOne(Fragment.lit("`is_approved`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(IsApproved.mariaType, value)}"): @scala.annotation.nowarn } ); unsaved.helpfulVotes.visit( { }, @@ -124,12 +125,12 @@ class ReviewsRepoImpl extends ReviewsRepo { override def selectById(reviewId: ReviewsId)(using c: Connection): Option[ReviewsRow] = { sql"""select `review_id`, `product_id`, `customer_id`, `order_item_id`, `rating`, `title`, `content`, `pros`, `cons`, `images`, `is_verified_purchase`, `is_approved`, `helpful_votes`, `unhelpful_votes`, `admin_response`, `responded_at`, `created_at`, `updated_at` from `reviews` - where `review_id` = ${Fragment.encode(ReviewsId.dbType, reviewId)}""".query(ReviewsRow.`_rowParser`.first()).runUnchecked(c) + where `review_id` = ${Fragment.encode(ReviewsId.mariaType, reviewId)}""".query(ReviewsRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(reviewIds: Array[ReviewsId])(using c: Connection): List[ReviewsRow] = { val fragments: ListBuffer[Fragment] = ListBuffer() - reviewIds.foreach { id => fragments.addOne(Fragment.encode(ReviewsId.dbType, id)): @scala.annotation.nowarn } + reviewIds.foreach { id => fragments.addOne(Fragment.encode(ReviewsId.mariaType, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("select `review_id`, `product_id`, `customer_id`, `order_item_id`, `rating`, `title`, `content`, `pros`, `cons`, `images`, `is_verified_purchase`, `is_approved`, `helpful_votes`, `unhelpful_votes`, `admin_response`, `responded_at`, `created_at`, `updated_at` from `reviews` where `review_id` in ("), Fragment.comma(fragments), Fragment.lit(")")).query(ReviewsRow.`_rowParser`.all()).runUnchecked(c) } @@ -144,29 +145,29 @@ class ReviewsRepoImpl extends ReviewsRepo { override def update(row: ReviewsRow)(using c: Connection): Boolean = { val reviewId: ReviewsId = row.reviewId return sql"""update `reviews` - set `product_id` = ${Fragment.encode(ProductsId.dbType, row.productId)}, - `customer_id` = ${Fragment.encode(CustomersId.dbType, row.customerId)}, - `order_item_id` = ${Fragment.encode(OrderItemsId.dbType.nullable, row.orderItemId)}, + set `product_id` = ${Fragment.encode(ProductsId.mariaType, row.productId)}, + `customer_id` = ${Fragment.encode(CustomersId.mariaType, row.customerId)}, + `order_item_id` = ${Fragment.encode(OrderItemsId.mariaType.nullable, row.orderItemId)}, `rating` = ${Fragment.encode(MariaTypes.tinyintUnsigned, row.rating)}, `title` = ${Fragment.encode(MariaTypes.varchar.nullable, row.title)}, `content` = ${Fragment.encode(MariaTypes.text.nullable, row.content)}, `pros` = ${Fragment.encode(MariaTypes.json.nullable, row.pros)}, `cons` = ${Fragment.encode(MariaTypes.json.nullable, row.cons)}, `images` = ${Fragment.encode(MariaTypes.json.nullable, row.images)}, - `is_verified_purchase` = ${Fragment.encode(ScalaDbTypes.MariaTypes.bool, row.isVerifiedPurchase)}, - `is_approved` = ${Fragment.encode(ScalaDbTypes.MariaTypes.bool, row.isApproved)}, + `is_verified_purchase` = ${Fragment.encode(IsVerifiedPurchase.mariaType, row.isVerifiedPurchase)}, + `is_approved` = ${Fragment.encode(IsApproved.mariaType, row.isApproved)}, `helpful_votes` = ${Fragment.encode(MariaTypes.intUnsigned, row.helpfulVotes)}, `unhelpful_votes` = ${Fragment.encode(MariaTypes.intUnsigned, row.unhelpfulVotes)}, `admin_response` = ${Fragment.encode(MariaTypes.text.nullable, row.adminResponse)}, `responded_at` = ${Fragment.encode(MariaTypes.datetime.nullable, row.respondedAt)}, `created_at` = ${Fragment.encode(MariaTypes.datetime, row.createdAt)}, `updated_at` = ${Fragment.encode(MariaTypes.datetime, row.updatedAt)} - where `review_id` = ${Fragment.encode(ReviewsId.dbType, reviewId)}""".update().runUnchecked(c) > 0 + where `review_id` = ${Fragment.encode(ReviewsId.mariaType, reviewId)}""".update().runUnchecked(c) > 0 } override def upsert(unsaved: ReviewsRow)(using c: Connection): ReviewsRow = { sql"""INSERT INTO `reviews`(`review_id`, `product_id`, `customer_id`, `order_item_id`, `rating`, `title`, `content`, `pros`, `cons`, `images`, `is_verified_purchase`, `is_approved`, `helpful_votes`, `unhelpful_votes`, `admin_response`, `responded_at`, `created_at`, `updated_at`) - VALUES (${Fragment.encode(ReviewsId.dbType, unsaved.reviewId)}, ${Fragment.encode(ProductsId.dbType, unsaved.productId)}, ${Fragment.encode(CustomersId.dbType, unsaved.customerId)}, ${Fragment.encode(OrderItemsId.dbType.nullable, unsaved.orderItemId)}, ${Fragment.encode(MariaTypes.tinyintUnsigned, unsaved.rating)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.title)}, ${Fragment.encode(MariaTypes.text.nullable, unsaved.content)}, ${Fragment.encode(MariaTypes.json.nullable, unsaved.pros)}, ${Fragment.encode(MariaTypes.json.nullable, unsaved.cons)}, ${Fragment.encode(MariaTypes.json.nullable, unsaved.images)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.bool, unsaved.isVerifiedPurchase)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.bool, unsaved.isApproved)}, ${Fragment.encode(MariaTypes.intUnsigned, unsaved.helpfulVotes)}, ${Fragment.encode(MariaTypes.intUnsigned, unsaved.unhelpfulVotes)}, ${Fragment.encode(MariaTypes.text.nullable, unsaved.adminResponse)}, ${Fragment.encode(MariaTypes.datetime.nullable, unsaved.respondedAt)}, ${Fragment.encode(MariaTypes.datetime, unsaved.createdAt)}, ${Fragment.encode(MariaTypes.datetime, unsaved.updatedAt)}) + VALUES (${Fragment.encode(ReviewsId.mariaType, unsaved.reviewId)}, ${Fragment.encode(ProductsId.mariaType, unsaved.productId)}, ${Fragment.encode(CustomersId.mariaType, unsaved.customerId)}, ${Fragment.encode(OrderItemsId.mariaType.nullable, unsaved.orderItemId)}, ${Fragment.encode(MariaTypes.tinyintUnsigned, unsaved.rating)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.title)}, ${Fragment.encode(MariaTypes.text.nullable, unsaved.content)}, ${Fragment.encode(MariaTypes.json.nullable, unsaved.pros)}, ${Fragment.encode(MariaTypes.json.nullable, unsaved.cons)}, ${Fragment.encode(MariaTypes.json.nullable, unsaved.images)}, ${Fragment.encode(IsVerifiedPurchase.mariaType, unsaved.isVerifiedPurchase)}, ${Fragment.encode(IsApproved.mariaType, unsaved.isApproved)}, ${Fragment.encode(MariaTypes.intUnsigned, unsaved.helpfulVotes)}, ${Fragment.encode(MariaTypes.intUnsigned, unsaved.unhelpfulVotes)}, ${Fragment.encode(MariaTypes.text.nullable, unsaved.adminResponse)}, ${Fragment.encode(MariaTypes.datetime.nullable, unsaved.respondedAt)}, ${Fragment.encode(MariaTypes.datetime, unsaved.createdAt)}, ${Fragment.encode(MariaTypes.datetime, unsaved.updatedAt)}) ON DUPLICATE KEY UPDATE `product_id` = VALUES(`product_id`), `customer_id` = VALUES(`customer_id`), `order_item_id` = VALUES(`order_item_id`), diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/reviews/ReviewsRow.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/reviews/ReviewsRow.scala index 5f5f12bde9..9b459e1ccf 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/reviews/ReviewsRow.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/reviews/ReviewsRow.scala @@ -14,12 +14,13 @@ import dev.typr.foundations.data.Uint4 import dev.typr.foundations.scala.DbTypeOps import dev.typr.foundations.scala.RowParser import dev.typr.foundations.scala.RowParsers -import dev.typr.foundations.scala.ScalaDbTypes import java.time.LocalDateTime import testdb.customers.CustomersId import testdb.customtypes.Defaulted import testdb.order_items.OrderItemsId import testdb.products.ProductsId +import testdb.userdefined.IsApproved +import testdb.userdefined.IsVerifiedPurchase /** Table: reviews * Primary key: review_id @@ -67,11 +68,11 @@ case class ReviewsRow( /** * Default: 0 */ - @JsonProperty("is_verified_purchase") isVerifiedPurchase: Boolean, + @JsonProperty("is_verified_purchase") isVerifiedPurchase: /* user-picked */ IsVerifiedPurchase, /** * Default: 0 */ - @JsonProperty("is_approved") isApproved: Boolean, + @JsonProperty("is_approved") isApproved: /* user-picked */ IsApproved, /** * Default: 0 */ @@ -96,7 +97,7 @@ case class ReviewsRow( * Default: current_timestamp(6) */ @JsonProperty("updated_at") updatedAt: LocalDateTime -) extends Tuple18[ReviewsId, ProductsId, CustomersId, Option[OrderItemsId], Uint1, Option[String], Option[String], Option[Json], Option[Json], Option[Json], Boolean, Boolean, Uint4, Uint4, Option[String], Option[LocalDateTime], LocalDateTime, LocalDateTime] { +) extends Tuple18[ReviewsId, ProductsId, CustomersId, Option[OrderItemsId], Uint1, Option[String], Option[String], Option[Json], Option[Json], Option[Json], /* user-picked */ IsVerifiedPurchase, /* user-picked */ IsApproved, Uint4, Uint4, Option[String], Option[LocalDateTime], LocalDateTime, LocalDateTime] { def id: ReviewsId = reviewId def toUnsavedRow( @@ -106,8 +107,8 @@ case class ReviewsRow( pros: Defaulted[Option[Json]] = Defaulted.Provided(this.pros), cons: Defaulted[Option[Json]] = Defaulted.Provided(this.cons), images: Defaulted[Option[Json]] = Defaulted.Provided(this.images), - isVerifiedPurchase: Defaulted[Boolean] = Defaulted.Provided(this.isVerifiedPurchase), - isApproved: Defaulted[Boolean] = Defaulted.Provided(this.isApproved), + isVerifiedPurchase: Defaulted[/* user-picked */ IsVerifiedPurchase] = Defaulted.Provided(this.isVerifiedPurchase), + isApproved: Defaulted[/* user-picked */ IsApproved] = Defaulted.Provided(this.isApproved), helpfulVotes: Defaulted[Uint4] = Defaulted.Provided(this.helpfulVotes), unhelpfulVotes: Defaulted[Uint4] = Defaulted.Provided(this.unhelpfulVotes), adminResponse: Defaulted[Option[String]] = Defaulted.Provided(this.adminResponse), @@ -156,9 +157,9 @@ case class ReviewsRow( override def `_10`: Option[Json] = images - override def `_11`: Boolean = isVerifiedPurchase + override def `_11`: /* user-picked */ IsVerifiedPurchase = isVerifiedPurchase - override def `_12`: Boolean = isApproved + override def `_12`: /* user-picked */ IsApproved = isApproved override def `_13`: Uint4 = helpfulVotes @@ -174,5 +175,5 @@ case class ReviewsRow( } object ReviewsRow { - val `_rowParser`: RowParser[ReviewsRow] = RowParsers.of(ReviewsId.dbType, ProductsId.dbType, CustomersId.dbType, OrderItemsId.dbType.nullable, MariaTypes.tinyintUnsigned, MariaTypes.varchar.nullable, MariaTypes.text.nullable, MariaTypes.json.nullable, MariaTypes.json.nullable, MariaTypes.json.nullable, ScalaDbTypes.MariaTypes.bool, ScalaDbTypes.MariaTypes.bool, MariaTypes.intUnsigned, MariaTypes.intUnsigned, MariaTypes.text.nullable, MariaTypes.datetime.nullable, MariaTypes.datetime, MariaTypes.datetime)(ReviewsRow.apply)(row => Array[Any](row.reviewId, row.productId, row.customerId, row.orderItemId, row.rating, row.title, row.content, row.pros, row.cons, row.images, row.isVerifiedPurchase, row.isApproved, row.helpfulVotes, row.unhelpfulVotes, row.adminResponse, row.respondedAt, row.createdAt, row.updatedAt)) + val `_rowParser`: RowParser[ReviewsRow] = RowParsers.of(ReviewsId.mariaType, ProductsId.mariaType, CustomersId.mariaType, OrderItemsId.mariaType.nullable, MariaTypes.tinyintUnsigned, MariaTypes.varchar.nullable, MariaTypes.text.nullable, MariaTypes.json.nullable, MariaTypes.json.nullable, MariaTypes.json.nullable, IsVerifiedPurchase.mariaType, IsApproved.mariaType, MariaTypes.intUnsigned, MariaTypes.intUnsigned, MariaTypes.text.nullable, MariaTypes.datetime.nullable, MariaTypes.datetime, MariaTypes.datetime)(ReviewsRow.apply)(row => Array[Any](row.reviewId, row.productId, row.customerId, row.orderItemId, row.rating, row.title, row.content, row.pros, row.cons, row.images, row.isVerifiedPurchase, row.isApproved, row.helpfulVotes, row.unhelpfulVotes, row.adminResponse, row.respondedAt, row.createdAt, row.updatedAt)) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/reviews/ReviewsRowUnsaved.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/reviews/ReviewsRowUnsaved.scala index a4c8288913..3223a356db 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/reviews/ReviewsRowUnsaved.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/reviews/ReviewsRowUnsaved.scala @@ -15,6 +15,8 @@ import testdb.customtypes.Defaulted import testdb.customtypes.Defaulted.UseDefault import testdb.order_items.OrderItemsId import testdb.products.ProductsId +import testdb.userdefined.IsApproved +import testdb.userdefined.IsVerifiedPurchase /** This class corresponds to a row in table `reviews` which has not been persisted yet */ case class ReviewsRowUnsaved( @@ -55,11 +57,11 @@ case class ReviewsRowUnsaved( /** Default: 0 */ - @JsonProperty("is_verified_purchase") isVerifiedPurchase: Defaulted[Boolean] = new UseDefault(), + @JsonProperty("is_verified_purchase") isVerifiedPurchase: Defaulted[/* user-picked */ IsVerifiedPurchase] = new UseDefault(), /** Default: 0 */ - @JsonProperty("is_approved") isApproved: Defaulted[Boolean] = new UseDefault(), + @JsonProperty("is_approved") isApproved: Defaulted[/* user-picked */ IsApproved] = new UseDefault(), /** Default: 0 */ @@ -92,8 +94,8 @@ case class ReviewsRowUnsaved( prosDefault: => Option[Json], consDefault: => Option[Json], imagesDefault: => Option[Json], - isVerifiedPurchaseDefault: => Boolean, - isApprovedDefault: => Boolean, + isVerifiedPurchaseDefault: => /* user-picked */ IsVerifiedPurchase, + isApprovedDefault: => /* user-picked */ IsApproved, helpfulVotesDefault: => Uint4, unhelpfulVotesDefault: => Uint4, adminResponseDefault: => Option[String], diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/shipments/ShipmentsFields.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/shipments/ShipmentsFields.scala index 8198d6ecc1..63a09a3dc3 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/shipments/ShipmentsFields.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/shipments/ShipmentsFields.scala @@ -40,7 +40,7 @@ class ShipmentsFields(val `_path`: java.util.List[Path]) extends TupleExpr17[Shi None, None, (row, value) => row.copy(shipmentId = value), - ShipmentsId.dbType + ShipmentsId.mariaType ) } @@ -52,7 +52,7 @@ class ShipmentsFields(val `_path`: java.util.List[Path]) extends TupleExpr17[Shi None, None, (row, value) => row.copy(orderId = value), - OrdersId.dbType + OrdersId.mariaType ) } @@ -64,7 +64,7 @@ class ShipmentsFields(val `_path`: java.util.List[Path]) extends TupleExpr17[Shi None, None, (row, value) => row.copy(carrierId = value), - ShippingCarriersId.dbType + ShippingCarriersId.mariaType ) } @@ -196,7 +196,7 @@ class ShipmentsFields(val `_path`: java.util.List[Path]) extends TupleExpr17[Shi None, None, (row, value) => row.copy(originWarehouseId = value), - WarehousesId.dbType + WarehousesId.mariaType ) } diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/shipments/ShipmentsId.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/shipments/ShipmentsId.scala index 45b02efdc6..6b43894cc2 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/shipments/ShipmentsId.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/shipments/ShipmentsId.scala @@ -17,5 +17,5 @@ case class ShipmentsId(@JsonValue value: Uint8) extends scala.AnyVal object ShipmentsId { given bijection: Bijection[ShipmentsId, Uint8] = Bijection.apply[ShipmentsId, Uint8](_.value)(ShipmentsId.apply) - given dbType: MariaType[ShipmentsId] = MariaTypes.bigintUnsigned.bimap(ShipmentsId.apply, _.value) + given mariaType: MariaType[ShipmentsId] = MariaTypes.bigintUnsigned.bimap(ShipmentsId.apply, _.value) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/shipments/ShipmentsRepoImpl.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/shipments/ShipmentsRepoImpl.scala index 114796cb3f..39157e84a3 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/shipments/ShipmentsRepoImpl.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/shipments/ShipmentsRepoImpl.scala @@ -23,17 +23,17 @@ import dev.typr.foundations.scala.Fragment.sql class ShipmentsRepoImpl extends ShipmentsRepo { override def delete: DeleteBuilder[ShipmentsFields, ShipmentsRow] = DeleteBuilder.of("`shipments`", ShipmentsFields.structure, Dialect.MARIADB) - override def deleteById(shipmentId: ShipmentsId)(using c: Connection): Boolean = sql"delete from `shipments` where `shipment_id` = ${Fragment.encode(ShipmentsId.dbType, shipmentId)}".update().runUnchecked(c) > 0 + override def deleteById(shipmentId: ShipmentsId)(using c: Connection): Boolean = sql"delete from `shipments` where `shipment_id` = ${Fragment.encode(ShipmentsId.mariaType, shipmentId)}".update().runUnchecked(c) > 0 override def deleteByIds(shipmentIds: Array[ShipmentsId])(using c: Connection): Int = { val fragments: ListBuffer[Fragment] = ListBuffer() - shipmentIds.foreach { id => fragments.addOne(Fragment.encode(ShipmentsId.dbType, id)): @scala.annotation.nowarn } + shipmentIds.foreach { id => fragments.addOne(Fragment.encode(ShipmentsId.mariaType, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("delete from `shipments` where `shipment_id` in ("), Fragment.comma(fragments), Fragment.lit(")")).update().runUnchecked(c) } override def insert(unsaved: ShipmentsRow)(using c: Connection): ShipmentsRow = { sql"""insert into `shipments`(`order_id`, `carrier_id`, `tracking_number`, `shipping_method`, `weight_kg`, `dimensions_json`, `label_data`, `status`, `estimated_delivery_date`, `actual_delivery_at`, `shipping_cost`, `insurance_amount`, `origin_warehouse_id`, `shipped_at`, `created_at`, `updated_at`) - values (${Fragment.encode(OrdersId.dbType, unsaved.orderId)}, ${Fragment.encode(ShippingCarriersId.dbType, unsaved.carrierId)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.trackingNumber)}, ${Fragment.encode(MariaTypes.varchar, unsaved.shippingMethod)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric.nullable, unsaved.weightKg)}, ${Fragment.encode(MariaTypes.json.nullable, unsaved.dimensionsJson)}, ${Fragment.encode(MariaTypes.longblob.nullable, unsaved.labelData)}, ${Fragment.encode(MariaTypes.text, unsaved.status)}, ${Fragment.encode(MariaTypes.date.nullable, unsaved.estimatedDeliveryDate)}, ${Fragment.encode(MariaTypes.datetime.nullable, unsaved.actualDeliveryAt)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.shippingCost)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric.nullable, unsaved.insuranceAmount)}, ${Fragment.encode(WarehousesId.dbType.nullable, unsaved.originWarehouseId)}, ${Fragment.encode(MariaTypes.datetime.nullable, unsaved.shippedAt)}, ${Fragment.encode(MariaTypes.datetime, unsaved.createdAt)}, ${Fragment.encode(MariaTypes.datetime, unsaved.updatedAt)}) + values (${Fragment.encode(OrdersId.mariaType, unsaved.orderId)}, ${Fragment.encode(ShippingCarriersId.mariaType, unsaved.carrierId)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.trackingNumber)}, ${Fragment.encode(MariaTypes.varchar, unsaved.shippingMethod)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric.nullable, unsaved.weightKg)}, ${Fragment.encode(MariaTypes.json.nullable, unsaved.dimensionsJson)}, ${Fragment.encode(MariaTypes.longblob.nullable, unsaved.labelData)}, ${Fragment.encode(MariaTypes.text, unsaved.status)}, ${Fragment.encode(MariaTypes.date.nullable, unsaved.estimatedDeliveryDate)}, ${Fragment.encode(MariaTypes.datetime.nullable, unsaved.actualDeliveryAt)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.shippingCost)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric.nullable, unsaved.insuranceAmount)}, ${Fragment.encode(WarehousesId.mariaType.nullable, unsaved.originWarehouseId)}, ${Fragment.encode(MariaTypes.datetime.nullable, unsaved.shippedAt)}, ${Fragment.encode(MariaTypes.datetime, unsaved.createdAt)}, ${Fragment.encode(MariaTypes.datetime, unsaved.updatedAt)}) RETURNING `shipment_id`, `order_id`, `carrier_id`, `tracking_number`, `shipping_method`, `weight_kg`, `dimensions_json`, `label_data`, `status`, `estimated_delivery_date`, `actual_delivery_at`, `shipping_cost`, `insurance_amount`, `origin_warehouse_id`, `shipped_at`, `created_at`, `updated_at` """ .updateReturning(ShipmentsRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -43,9 +43,9 @@ class ShipmentsRepoImpl extends ShipmentsRepo { val columns: ListBuffer[Fragment] = ListBuffer() val values: ListBuffer[Fragment] = ListBuffer() columns.addOne(Fragment.lit("`order_id`")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(OrdersId.dbType, unsaved.orderId)}"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(OrdersId.mariaType, unsaved.orderId)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit("`carrier_id`")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(ShippingCarriersId.dbType, unsaved.carrierId)}"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(ShippingCarriersId.mariaType, unsaved.carrierId)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit("`shipping_method`")): @scala.annotation.nowarn values.addOne(sql"${Fragment.encode(MariaTypes.varchar, unsaved.shippingMethod)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit("`shipping_cost`")): @scala.annotation.nowarn @@ -84,7 +84,7 @@ class ShipmentsRepoImpl extends ShipmentsRepo { ); unsaved.originWarehouseId.visit( { }, - value => { columns.addOne(Fragment.lit("`origin_warehouse_id`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(WarehousesId.dbType.nullable, value)}"): @scala.annotation.nowarn } + value => { columns.addOne(Fragment.lit("`origin_warehouse_id`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(WarehousesId.mariaType.nullable, value)}"): @scala.annotation.nowarn } ); unsaved.shippedAt.visit( { }, @@ -118,12 +118,12 @@ class ShipmentsRepoImpl extends ShipmentsRepo { override def selectById(shipmentId: ShipmentsId)(using c: Connection): Option[ShipmentsRow] = { sql"""select `shipment_id`, `order_id`, `carrier_id`, `tracking_number`, `shipping_method`, `weight_kg`, `dimensions_json`, `label_data`, `status`, `estimated_delivery_date`, `actual_delivery_at`, `shipping_cost`, `insurance_amount`, `origin_warehouse_id`, `shipped_at`, `created_at`, `updated_at` from `shipments` - where `shipment_id` = ${Fragment.encode(ShipmentsId.dbType, shipmentId)}""".query(ShipmentsRow.`_rowParser`.first()).runUnchecked(c) + where `shipment_id` = ${Fragment.encode(ShipmentsId.mariaType, shipmentId)}""".query(ShipmentsRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(shipmentIds: Array[ShipmentsId])(using c: Connection): List[ShipmentsRow] = { val fragments: ListBuffer[Fragment] = ListBuffer() - shipmentIds.foreach { id => fragments.addOne(Fragment.encode(ShipmentsId.dbType, id)): @scala.annotation.nowarn } + shipmentIds.foreach { id => fragments.addOne(Fragment.encode(ShipmentsId.mariaType, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("select `shipment_id`, `order_id`, `carrier_id`, `tracking_number`, `shipping_method`, `weight_kg`, `dimensions_json`, `label_data`, `status`, `estimated_delivery_date`, `actual_delivery_at`, `shipping_cost`, `insurance_amount`, `origin_warehouse_id`, `shipped_at`, `created_at`, `updated_at` from `shipments` where `shipment_id` in ("), Fragment.comma(fragments), Fragment.lit(")")).query(ShipmentsRow.`_rowParser`.all()).runUnchecked(c) } @@ -138,8 +138,8 @@ class ShipmentsRepoImpl extends ShipmentsRepo { override def update(row: ShipmentsRow)(using c: Connection): Boolean = { val shipmentId: ShipmentsId = row.shipmentId return sql"""update `shipments` - set `order_id` = ${Fragment.encode(OrdersId.dbType, row.orderId)}, - `carrier_id` = ${Fragment.encode(ShippingCarriersId.dbType, row.carrierId)}, + set `order_id` = ${Fragment.encode(OrdersId.mariaType, row.orderId)}, + `carrier_id` = ${Fragment.encode(ShippingCarriersId.mariaType, row.carrierId)}, `tracking_number` = ${Fragment.encode(MariaTypes.varchar.nullable, row.trackingNumber)}, `shipping_method` = ${Fragment.encode(MariaTypes.varchar, row.shippingMethod)}, `weight_kg` = ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric.nullable, row.weightKg)}, @@ -150,16 +150,16 @@ class ShipmentsRepoImpl extends ShipmentsRepo { `actual_delivery_at` = ${Fragment.encode(MariaTypes.datetime.nullable, row.actualDeliveryAt)}, `shipping_cost` = ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, row.shippingCost)}, `insurance_amount` = ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric.nullable, row.insuranceAmount)}, - `origin_warehouse_id` = ${Fragment.encode(WarehousesId.dbType.nullable, row.originWarehouseId)}, + `origin_warehouse_id` = ${Fragment.encode(WarehousesId.mariaType.nullable, row.originWarehouseId)}, `shipped_at` = ${Fragment.encode(MariaTypes.datetime.nullable, row.shippedAt)}, `created_at` = ${Fragment.encode(MariaTypes.datetime, row.createdAt)}, `updated_at` = ${Fragment.encode(MariaTypes.datetime, row.updatedAt)} - where `shipment_id` = ${Fragment.encode(ShipmentsId.dbType, shipmentId)}""".update().runUnchecked(c) > 0 + where `shipment_id` = ${Fragment.encode(ShipmentsId.mariaType, shipmentId)}""".update().runUnchecked(c) > 0 } override def upsert(unsaved: ShipmentsRow)(using c: Connection): ShipmentsRow = { sql"""INSERT INTO `shipments`(`shipment_id`, `order_id`, `carrier_id`, `tracking_number`, `shipping_method`, `weight_kg`, `dimensions_json`, `label_data`, `status`, `estimated_delivery_date`, `actual_delivery_at`, `shipping_cost`, `insurance_amount`, `origin_warehouse_id`, `shipped_at`, `created_at`, `updated_at`) - VALUES (${Fragment.encode(ShipmentsId.dbType, unsaved.shipmentId)}, ${Fragment.encode(OrdersId.dbType, unsaved.orderId)}, ${Fragment.encode(ShippingCarriersId.dbType, unsaved.carrierId)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.trackingNumber)}, ${Fragment.encode(MariaTypes.varchar, unsaved.shippingMethod)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric.nullable, unsaved.weightKg)}, ${Fragment.encode(MariaTypes.json.nullable, unsaved.dimensionsJson)}, ${Fragment.encode(MariaTypes.longblob.nullable, unsaved.labelData)}, ${Fragment.encode(MariaTypes.text, unsaved.status)}, ${Fragment.encode(MariaTypes.date.nullable, unsaved.estimatedDeliveryDate)}, ${Fragment.encode(MariaTypes.datetime.nullable, unsaved.actualDeliveryAt)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.shippingCost)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric.nullable, unsaved.insuranceAmount)}, ${Fragment.encode(WarehousesId.dbType.nullable, unsaved.originWarehouseId)}, ${Fragment.encode(MariaTypes.datetime.nullable, unsaved.shippedAt)}, ${Fragment.encode(MariaTypes.datetime, unsaved.createdAt)}, ${Fragment.encode(MariaTypes.datetime, unsaved.updatedAt)}) + VALUES (${Fragment.encode(ShipmentsId.mariaType, unsaved.shipmentId)}, ${Fragment.encode(OrdersId.mariaType, unsaved.orderId)}, ${Fragment.encode(ShippingCarriersId.mariaType, unsaved.carrierId)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.trackingNumber)}, ${Fragment.encode(MariaTypes.varchar, unsaved.shippingMethod)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric.nullable, unsaved.weightKg)}, ${Fragment.encode(MariaTypes.json.nullable, unsaved.dimensionsJson)}, ${Fragment.encode(MariaTypes.longblob.nullable, unsaved.labelData)}, ${Fragment.encode(MariaTypes.text, unsaved.status)}, ${Fragment.encode(MariaTypes.date.nullable, unsaved.estimatedDeliveryDate)}, ${Fragment.encode(MariaTypes.datetime.nullable, unsaved.actualDeliveryAt)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric, unsaved.shippingCost)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.numeric.nullable, unsaved.insuranceAmount)}, ${Fragment.encode(WarehousesId.mariaType.nullable, unsaved.originWarehouseId)}, ${Fragment.encode(MariaTypes.datetime.nullable, unsaved.shippedAt)}, ${Fragment.encode(MariaTypes.datetime, unsaved.createdAt)}, ${Fragment.encode(MariaTypes.datetime, unsaved.updatedAt)}) ON DUPLICATE KEY UPDATE `order_id` = VALUES(`order_id`), `carrier_id` = VALUES(`carrier_id`), `tracking_number` = VALUES(`tracking_number`), diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/shipments/ShipmentsRow.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/shipments/ShipmentsRow.scala index 5be9044734..9946d31910 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/shipments/ShipmentsRow.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/shipments/ShipmentsRow.scala @@ -162,5 +162,5 @@ case class ShipmentsRow( } object ShipmentsRow { - val `_rowParser`: RowParser[ShipmentsRow] = RowParsers.of(ShipmentsId.dbType, OrdersId.dbType, ShippingCarriersId.dbType, MariaTypes.varchar.nullable, MariaTypes.varchar, ScalaDbTypes.MariaTypes.numeric.nullable, MariaTypes.json.nullable, MariaTypes.longblob.nullable, MariaTypes.text, MariaTypes.date.nullable, MariaTypes.datetime.nullable, ScalaDbTypes.MariaTypes.numeric, ScalaDbTypes.MariaTypes.numeric.nullable, WarehousesId.dbType.nullable, MariaTypes.datetime.nullable, MariaTypes.datetime, MariaTypes.datetime)(ShipmentsRow.apply)(row => Array[Any](row.shipmentId, row.orderId, row.carrierId, row.trackingNumber, row.shippingMethod, row.weightKg, row.dimensionsJson, row.labelData, row.status, row.estimatedDeliveryDate, row.actualDeliveryAt, row.shippingCost, row.insuranceAmount, row.originWarehouseId, row.shippedAt, row.createdAt, row.updatedAt)) + val `_rowParser`: RowParser[ShipmentsRow] = RowParsers.of(ShipmentsId.mariaType, OrdersId.mariaType, ShippingCarriersId.mariaType, MariaTypes.varchar.nullable, MariaTypes.varchar, ScalaDbTypes.MariaTypes.numeric.nullable, MariaTypes.json.nullable, MariaTypes.longblob.nullable, MariaTypes.text, MariaTypes.date.nullable, MariaTypes.datetime.nullable, ScalaDbTypes.MariaTypes.numeric, ScalaDbTypes.MariaTypes.numeric.nullable, WarehousesId.mariaType.nullable, MariaTypes.datetime.nullable, MariaTypes.datetime, MariaTypes.datetime)(ShipmentsRow.apply)(row => Array[Any](row.shipmentId, row.orderId, row.carrierId, row.trackingNumber, row.shippingMethod, row.weightKg, row.dimensionsJson, row.labelData, row.status, row.estimatedDeliveryDate, row.actualDeliveryAt, row.shippingCost, row.insuranceAmount, row.originWarehouseId, row.shippedAt, row.createdAt, row.updatedAt)) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/shipping_carriers/ShippingCarriersFields.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/shipping_carriers/ShippingCarriersFields.scala index c7d9c20f4f..7fb119d756 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/shipping_carriers/ShippingCarriersFields.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/shipping_carriers/ShippingCarriersFields.scala @@ -12,14 +12,14 @@ import dev.typr.foundations.dsl.FieldsBase import dev.typr.foundations.dsl.Path import dev.typr.foundations.dsl.SqlExpr.FieldLike import dev.typr.foundations.scala.RelationStructure -import dev.typr.foundations.scala.ScalaDbTypes import dev.typr.foundations.scala.SqlExpr import dev.typr.foundations.scala.SqlExpr.Field import dev.typr.foundations.scala.SqlExpr.IdField import dev.typr.foundations.scala.SqlExpr.OptField import dev.typr.foundations.scala.TupleExpr6 +import testdb.userdefined.IsActive -class ShippingCarriersFields(val `_path`: java.util.List[Path]) extends TupleExpr6[ShippingCarriersId, String, String, String, Json, Boolean] with RelationStructure[ShippingCarriersFields, ShippingCarriersRow] with FieldsBase[ShippingCarriersRow] { +class ShippingCarriersFields(val `_path`: java.util.List[Path]) extends TupleExpr6[ShippingCarriersId, String, String, String, Json, /* user-picked */ IsActive] with RelationStructure[ShippingCarriersFields, ShippingCarriersRow] with FieldsBase[ShippingCarriersRow] { def carrierId: IdField[ShippingCarriersId, ShippingCarriersRow] = { new IdField[ShippingCarriersId, ShippingCarriersRow]( _path, @@ -28,7 +28,7 @@ class ShippingCarriersFields(val `_path`: java.util.List[Path]) extends TupleExp None, None, (row, value) => row.copy(carrierId = value), - ShippingCarriersId.dbType + ShippingCarriersId.mariaType ) } @@ -80,15 +80,15 @@ class ShippingCarriersFields(val `_path`: java.util.List[Path]) extends TupleExp ) } - def isActive: Field[Boolean, ShippingCarriersRow] = { - new Field[Boolean, ShippingCarriersRow]( + def isActive: Field[/* user-picked */ IsActive, ShippingCarriersRow] = { + new Field[/* user-picked */ IsActive, ShippingCarriersRow]( _path, "is_active", _.isActive, None, None, (row, value) => row.copy(isActive = value), - ScalaDbTypes.MariaTypes.bool + IsActive.mariaType ) } @@ -108,7 +108,7 @@ class ShippingCarriersFields(val `_path`: java.util.List[Path]) extends TupleExp override def `_5`: SqlExpr[Json] = apiConfig - override def `_6`: SqlExpr[Boolean] = isActive + override def `_6`: SqlExpr[/* user-picked */ IsActive] = isActive } object ShippingCarriersFields { diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/shipping_carriers/ShippingCarriersId.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/shipping_carriers/ShippingCarriersId.scala index cd1b6b4b3c..f36bcc2f7b 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/shipping_carriers/ShippingCarriersId.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/shipping_carriers/ShippingCarriersId.scala @@ -17,5 +17,5 @@ case class ShippingCarriersId(@JsonValue value: Uint1) extends scala.AnyVal object ShippingCarriersId { given bijection: Bijection[ShippingCarriersId, Uint1] = Bijection.apply[ShippingCarriersId, Uint1](_.value)(ShippingCarriersId.apply) - given dbType: MariaType[ShippingCarriersId] = MariaTypes.tinyintUnsigned.bimap(ShippingCarriersId.apply, _.value) + given mariaType: MariaType[ShippingCarriersId] = MariaTypes.tinyintUnsigned.bimap(ShippingCarriersId.apply, _.value) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/shipping_carriers/ShippingCarriersRepoImpl.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/shipping_carriers/ShippingCarriersRepoImpl.scala index c8f8255019..3d5779e8c2 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/shipping_carriers/ShippingCarriersRepoImpl.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/shipping_carriers/ShippingCarriersRepoImpl.scala @@ -10,27 +10,27 @@ import dev.typr.foundations.scala.DbTypeOps import dev.typr.foundations.scala.DeleteBuilder import dev.typr.foundations.scala.Dialect import dev.typr.foundations.scala.Fragment -import dev.typr.foundations.scala.ScalaDbTypes import dev.typr.foundations.scala.SelectBuilder import dev.typr.foundations.scala.UpdateBuilder import java.sql.Connection import scala.collection.mutable.ListBuffer +import testdb.userdefined.IsActive import dev.typr.foundations.scala.Fragment.sql class ShippingCarriersRepoImpl extends ShippingCarriersRepo { override def delete: DeleteBuilder[ShippingCarriersFields, ShippingCarriersRow] = DeleteBuilder.of("`shipping_carriers`", ShippingCarriersFields.structure, Dialect.MARIADB) - override def deleteById(carrierId: ShippingCarriersId)(using c: Connection): Boolean = sql"delete from `shipping_carriers` where `carrier_id` = ${Fragment.encode(ShippingCarriersId.dbType, carrierId)}".update().runUnchecked(c) > 0 + override def deleteById(carrierId: ShippingCarriersId)(using c: Connection): Boolean = sql"delete from `shipping_carriers` where `carrier_id` = ${Fragment.encode(ShippingCarriersId.mariaType, carrierId)}".update().runUnchecked(c) > 0 override def deleteByIds(carrierIds: Array[ShippingCarriersId])(using c: Connection): Int = { val fragments: ListBuffer[Fragment] = ListBuffer() - carrierIds.foreach { id => fragments.addOne(Fragment.encode(ShippingCarriersId.dbType, id)): @scala.annotation.nowarn } + carrierIds.foreach { id => fragments.addOne(Fragment.encode(ShippingCarriersId.mariaType, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("delete from `shipping_carriers` where `carrier_id` in ("), Fragment.comma(fragments), Fragment.lit(")")).update().runUnchecked(c) } override def insert(unsaved: ShippingCarriersRow)(using c: Connection): ShippingCarriersRow = { sql"""insert into `shipping_carriers`(`code`, `name`, `tracking_url_template`, `api_config`, `is_active`) - values (${Fragment.encode(MariaTypes.varchar, unsaved.code)}, ${Fragment.encode(MariaTypes.varchar, unsaved.name)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.trackingUrlTemplate)}, ${Fragment.encode(MariaTypes.json.nullable, unsaved.apiConfig)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.bool, unsaved.isActive)}) + values (${Fragment.encode(MariaTypes.varchar, unsaved.code)}, ${Fragment.encode(MariaTypes.varchar, unsaved.name)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.trackingUrlTemplate)}, ${Fragment.encode(MariaTypes.json.nullable, unsaved.apiConfig)}, ${Fragment.encode(IsActive.mariaType, unsaved.isActive)}) RETURNING `carrier_id`, `code`, `name`, `tracking_url_template`, `api_config`, `is_active` """ .updateReturning(ShippingCarriersRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -53,7 +53,7 @@ class ShippingCarriersRepoImpl extends ShippingCarriersRepo { ); unsaved.isActive.visit( { }, - value => { columns.addOne(Fragment.lit("`is_active`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(ScalaDbTypes.MariaTypes.bool, value)}"): @scala.annotation.nowarn } + value => { columns.addOne(Fragment.lit("`is_active`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(IsActive.mariaType, value)}"): @scala.annotation.nowarn } ); val q: Fragment = { sql"""insert into `shipping_carriers`(${Fragment.comma(columns)}) @@ -75,12 +75,12 @@ class ShippingCarriersRepoImpl extends ShippingCarriersRepo { override def selectById(carrierId: ShippingCarriersId)(using c: Connection): Option[ShippingCarriersRow] = { sql"""select `carrier_id`, `code`, `name`, `tracking_url_template`, `api_config`, `is_active` from `shipping_carriers` - where `carrier_id` = ${Fragment.encode(ShippingCarriersId.dbType, carrierId)}""".query(ShippingCarriersRow.`_rowParser`.first()).runUnchecked(c) + where `carrier_id` = ${Fragment.encode(ShippingCarriersId.mariaType, carrierId)}""".query(ShippingCarriersRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(carrierIds: Array[ShippingCarriersId])(using c: Connection): List[ShippingCarriersRow] = { val fragments: ListBuffer[Fragment] = ListBuffer() - carrierIds.foreach { id => fragments.addOne(Fragment.encode(ShippingCarriersId.dbType, id)): @scala.annotation.nowarn } + carrierIds.foreach { id => fragments.addOne(Fragment.encode(ShippingCarriersId.mariaType, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("select `carrier_id`, `code`, `name`, `tracking_url_template`, `api_config`, `is_active` from `shipping_carriers` where `carrier_id` in ("), Fragment.comma(fragments), Fragment.lit(")")).query(ShippingCarriersRow.`_rowParser`.all()).runUnchecked(c) } @@ -106,13 +106,13 @@ class ShippingCarriersRepoImpl extends ShippingCarriersRepo { `name` = ${Fragment.encode(MariaTypes.varchar, row.name)}, `tracking_url_template` = ${Fragment.encode(MariaTypes.varchar.nullable, row.trackingUrlTemplate)}, `api_config` = ${Fragment.encode(MariaTypes.json.nullable, row.apiConfig)}, - `is_active` = ${Fragment.encode(ScalaDbTypes.MariaTypes.bool, row.isActive)} - where `carrier_id` = ${Fragment.encode(ShippingCarriersId.dbType, carrierId)}""".update().runUnchecked(c) > 0 + `is_active` = ${Fragment.encode(IsActive.mariaType, row.isActive)} + where `carrier_id` = ${Fragment.encode(ShippingCarriersId.mariaType, carrierId)}""".update().runUnchecked(c) > 0 } override def upsert(unsaved: ShippingCarriersRow)(using c: Connection): ShippingCarriersRow = { sql"""INSERT INTO `shipping_carriers`(`carrier_id`, `code`, `name`, `tracking_url_template`, `api_config`, `is_active`) - VALUES (${Fragment.encode(ShippingCarriersId.dbType, unsaved.carrierId)}, ${Fragment.encode(MariaTypes.varchar, unsaved.code)}, ${Fragment.encode(MariaTypes.varchar, unsaved.name)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.trackingUrlTemplate)}, ${Fragment.encode(MariaTypes.json.nullable, unsaved.apiConfig)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.bool, unsaved.isActive)}) + VALUES (${Fragment.encode(ShippingCarriersId.mariaType, unsaved.carrierId)}, ${Fragment.encode(MariaTypes.varchar, unsaved.code)}, ${Fragment.encode(MariaTypes.varchar, unsaved.name)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.trackingUrlTemplate)}, ${Fragment.encode(MariaTypes.json.nullable, unsaved.apiConfig)}, ${Fragment.encode(IsActive.mariaType, unsaved.isActive)}) ON DUPLICATE KEY UPDATE `code` = VALUES(`code`), `name` = VALUES(`name`), `tracking_url_template` = VALUES(`tracking_url_template`), diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/shipping_carriers/ShippingCarriersRow.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/shipping_carriers/ShippingCarriersRow.scala index f79bcd7b9a..97c7a97aa9 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/shipping_carriers/ShippingCarriersRow.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/shipping_carriers/ShippingCarriersRow.scala @@ -12,8 +12,8 @@ import dev.typr.foundations.data.Json import dev.typr.foundations.scala.DbTypeOps import dev.typr.foundations.scala.RowParser import dev.typr.foundations.scala.RowParsers -import dev.typr.foundations.scala.ScalaDbTypes import testdb.customtypes.Defaulted +import testdb.userdefined.IsActive /** Table: shipping_carriers * Primary key: carrier_id @@ -38,14 +38,14 @@ case class ShippingCarriersRow( /** * Default: 1 */ - @JsonProperty("is_active") isActive: Boolean -) extends Tuple6[ShippingCarriersId, String, String, Option[String], Option[Json], Boolean] { + @JsonProperty("is_active") isActive: /* user-picked */ IsActive +) extends Tuple6[ShippingCarriersId, String, String, Option[String], Option[Json], /* user-picked */ IsActive] { def id: ShippingCarriersId = carrierId def toUnsavedRow( trackingUrlTemplate: Defaulted[Option[String]] = Defaulted.Provided(this.trackingUrlTemplate), apiConfig: Defaulted[Option[Json]] = Defaulted.Provided(this.apiConfig), - isActive: Defaulted[Boolean] = Defaulted.Provided(this.isActive) + isActive: Defaulted[/* user-picked */ IsActive] = Defaulted.Provided(this.isActive) ): ShippingCarriersRowUnsaved = { new ShippingCarriersRowUnsaved( code, @@ -66,9 +66,9 @@ case class ShippingCarriersRow( override def `_5`: Option[Json] = apiConfig - override def `_6`: Boolean = isActive + override def `_6`: /* user-picked */ IsActive = isActive } object ShippingCarriersRow { - val `_rowParser`: RowParser[ShippingCarriersRow] = RowParsers.of(ShippingCarriersId.dbType, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.varchar.nullable, MariaTypes.json.nullable, ScalaDbTypes.MariaTypes.bool)(ShippingCarriersRow.apply)(row => Array[Any](row.carrierId, row.code, row.name, row.trackingUrlTemplate, row.apiConfig, row.isActive)) + val `_rowParser`: RowParser[ShippingCarriersRow] = RowParsers.of(ShippingCarriersId.mariaType, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.varchar.nullable, MariaTypes.json.nullable, IsActive.mariaType)(ShippingCarriersRow.apply)(row => Array[Any](row.carrierId, row.code, row.name, row.trackingUrlTemplate, row.apiConfig, row.isActive)) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/shipping_carriers/ShippingCarriersRowUnsaved.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/shipping_carriers/ShippingCarriersRowUnsaved.scala index b9e840baea..c35aae2c6f 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/shipping_carriers/ShippingCarriersRowUnsaved.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/shipping_carriers/ShippingCarriersRowUnsaved.scala @@ -9,6 +9,7 @@ import com.fasterxml.jackson.annotation.JsonProperty import dev.typr.foundations.data.Json import testdb.customtypes.Defaulted import testdb.customtypes.Defaulted.UseDefault +import testdb.userdefined.IsActive /** This class corresponds to a row in table `shipping_carriers` which has not been persisted yet */ case class ShippingCarriersRowUnsaved( @@ -27,12 +28,12 @@ case class ShippingCarriersRowUnsaved( /** Default: 1 */ - @JsonProperty("is_active") isActive: Defaulted[Boolean] = new UseDefault() + @JsonProperty("is_active") isActive: Defaulted[/* user-picked */ IsActive] = new UseDefault() ) { def toRow( trackingUrlTemplateDefault: => Option[String], apiConfigDefault: => Option[Json], - isActiveDefault: => Boolean, + isActiveDefault: => /* user-picked */ IsActive, carrierIdDefault: => ShippingCarriersId ): ShippingCarriersRow = { new ShippingCarriersRow( diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/simple_customer_lookup/SimpleCustomerLookupSqlRow.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/simple_customer_lookup/SimpleCustomerLookupSqlRow.scala index 470343673b..a61f2981f7 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/simple_customer_lookup/SimpleCustomerLookupSqlRow.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/simple_customer_lookup/SimpleCustomerLookupSqlRow.scala @@ -13,31 +13,34 @@ import dev.typr.foundations.scala.RowParsers import java.time.LocalDateTime import testdb.customer_status.CustomerStatusId import testdb.customers.CustomersId +import testdb.userdefined.Email +import testdb.userdefined.FirstName +import testdb.userdefined.LastName /** SQL file: simple_customer_lookup.sql */ case class SimpleCustomerLookupSqlRow( /** Points to [[testdb.customers.CustomersRow.customerId]] */ @JsonProperty("customer_id") customerId: CustomersId, /** Points to [[testdb.customers.CustomersRow.email]] */ - email: String, + email: /* user-picked */ Email, /** Points to [[testdb.customers.CustomersRow.firstName]] */ - @JsonProperty("first_name") firstName: String, + @JsonProperty("first_name") firstName: /* user-picked */ FirstName, /** Points to [[testdb.customers.CustomersRow.lastName]] */ - @JsonProperty("last_name") lastName: String, + @JsonProperty("last_name") lastName: /* user-picked */ LastName, /** Points to [[testdb.customers.CustomersRow.tier]] */ tier: String, /** Points to [[testdb.customers.CustomersRow.status]] */ status: CustomerStatusId, /** Points to [[testdb.customers.CustomersRow.createdAt]] */ @JsonProperty("created_at") createdAt: LocalDateTime -) extends Tuple7[CustomersId, String, String, String, String, CustomerStatusId, LocalDateTime] { +) extends Tuple7[CustomersId, /* user-picked */ Email, /* user-picked */ FirstName, /* user-picked */ LastName, String, CustomerStatusId, LocalDateTime] { override def `_1`: CustomersId = customerId - override def `_2`: String = email + override def `_2`: /* user-picked */ Email = email - override def `_3`: String = firstName + override def `_3`: /* user-picked */ FirstName = firstName - override def `_4`: String = lastName + override def `_4`: /* user-picked */ LastName = lastName override def `_5`: String = tier @@ -47,5 +50,5 @@ case class SimpleCustomerLookupSqlRow( } object SimpleCustomerLookupSqlRow { - val `_rowParser`: RowParser[SimpleCustomerLookupSqlRow] = RowParsers.of(CustomersId.dbType, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.text, CustomerStatusId.dbType, MariaTypes.datetime)(SimpleCustomerLookupSqlRow.apply)(row => Array[Any](row.customerId, row.email, row.firstName, row.lastName, row.tier, row.status, row.createdAt)) + val `_rowParser`: RowParser[SimpleCustomerLookupSqlRow] = RowParsers.of(CustomersId.mariaType, Email.mariaType, FirstName.mariaType, LastName.mariaType, MariaTypes.text, CustomerStatusId.mariaType, MariaTypes.datetime)(SimpleCustomerLookupSqlRow.apply)(row => Array[Any](row.customerId, row.email, row.firstName, row.lastName, row.tier, row.status, row.createdAt)) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/subquery_test/SubqueryTestSqlRow.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/subquery_test/SubqueryTestSqlRow.scala index 296463d91e..75f6e1d3af 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/subquery_test/SubqueryTestSqlRow.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/subquery_test/SubqueryTestSqlRow.scala @@ -13,25 +13,27 @@ import dev.typr.foundations.scala.RowParser import dev.typr.foundations.scala.RowParsers import dev.typr.foundations.scala.ScalaDbTypes import testdb.customers.CustomersId +import testdb.userdefined.Email +import testdb.userdefined.FirstName /** SQL file: subquery_test.sql */ case class SubqueryTestSqlRow( /** Points to [[testdb.customers.CustomersRow.customerId]] */ @JsonProperty("customer_id") customerId: CustomersId, /** Points to [[testdb.customers.CustomersRow.email]] */ - email: String, + email: /* user-picked */ Email, /** Points to [[testdb.customers.CustomersRow.firstName]] */ - @JsonProperty("first_name") firstName: String, + @JsonProperty("first_name") firstName: /* user-picked */ FirstName, @JsonProperty("order_count") orderCount: Long, @JsonProperty("total_spent") totalSpent: BigDecimal, /** Points to [[testdb.brands.BrandsRow.name]] */ @JsonProperty("favorite_brand") favoriteBrand: Option[String] -) extends Tuple6[CustomersId, String, String, Long, BigDecimal, Option[String]] { +) extends Tuple6[CustomersId, /* user-picked */ Email, /* user-picked */ FirstName, Long, BigDecimal, Option[String]] { override def `_1`: CustomersId = customerId - override def `_2`: String = email + override def `_2`: /* user-picked */ Email = email - override def `_3`: String = firstName + override def `_3`: /* user-picked */ FirstName = firstName override def `_4`: Long = orderCount @@ -41,5 +43,5 @@ case class SubqueryTestSqlRow( } object SubqueryTestSqlRow { - val `_rowParser`: RowParser[SubqueryTestSqlRow] = RowParsers.of(CustomersId.dbType, MariaTypes.varchar, MariaTypes.varchar, ScalaDbTypes.MariaTypes.bigint, ScalaDbTypes.MariaTypes.numeric, MariaTypes.varchar.nullable)(SubqueryTestSqlRow.apply)(row => Array[Any](row.customerId, row.email, row.firstName, row.orderCount, row.totalSpent, row.favoriteBrand)) + val `_rowParser`: RowParser[SubqueryTestSqlRow] = RowParsers.of(CustomersId.mariaType, Email.mariaType, FirstName.mariaType, ScalaDbTypes.MariaTypes.bigint, ScalaDbTypes.MariaTypes.numeric, MariaTypes.varchar.nullable)(SubqueryTestSqlRow.apply)(row => Array[Any](row.customerId, row.email, row.firstName, row.orderCount, row.totalSpent, row.favoriteBrand)) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/update_order_status/UpdateOrderStatusSqlRepoImpl.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/update_order_status/UpdateOrderStatusSqlRepoImpl.scala index a343d48ee4..0dd401b104 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/update_order_status/UpdateOrderStatusSqlRepoImpl.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/update_order_status/UpdateOrderStatusSqlRepoImpl.scala @@ -22,7 +22,7 @@ class UpdateOrderStatusSqlRepoImpl extends UpdateOrderStatusSqlRepo { confirmed_at = CASE WHEN ${Fragment.encode(MariaTypes.varchar, newStatus)} = 'confirmed' THEN NOW(6) ELSE confirmed_at END, shipped_at = CASE WHEN ${Fragment.encode(MariaTypes.varchar, newStatus)} = 'shipped' THEN NOW(6) ELSE shipped_at END, delivered_at = CASE WHEN ${Fragment.encode(MariaTypes.varchar, newStatus)} = 'delivered' THEN NOW(6) ELSE delivered_at END - WHERE order_id = ${Fragment.encode(OrdersId.dbType, orderId)} + WHERE order_id = ${Fragment.encode(OrdersId.mariaType, orderId)} """.update().runUnchecked(c) } } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/userdefined/Email.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/userdefined/Email.scala new file mode 100644 index 0000000000..d6194276f4 --- /dev/null +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/userdefined/Email.scala @@ -0,0 +1,22 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package testdb.userdefined + +import com.fasterxml.jackson.annotation.JsonValue +import dev.typr.foundations.MariaType +import dev.typr.foundations.MariaTypes +import dev.typr.foundations.scala.Bijection + +/** Shared type `Email` + * Generated from TypeDefinitions matching + */ +case class Email(@JsonValue value: String) extends scala.AnyVal + +object Email { + given bijection: Bijection[Email, String] = Bijection.apply[Email, String](_.value)(Email.apply) + + given mariaType: MariaType[Email] = MariaTypes.varchar.bimap(Email.apply, _.value) +} \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/userdefined/FirstName.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/userdefined/FirstName.scala new file mode 100644 index 0000000000..d58b047a1e --- /dev/null +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/userdefined/FirstName.scala @@ -0,0 +1,22 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package testdb.userdefined + +import com.fasterxml.jackson.annotation.JsonValue +import dev.typr.foundations.MariaType +import dev.typr.foundations.MariaTypes +import dev.typr.foundations.scala.Bijection + +/** Shared type `FirstName` + * Generated from TypeDefinitions matching + */ +case class FirstName(@JsonValue value: String) extends scala.AnyVal + +object FirstName { + given bijection: Bijection[FirstName, String] = Bijection.apply[FirstName, String](_.value)(FirstName.apply) + + given mariaType: MariaType[FirstName] = MariaTypes.varchar.bimap(FirstName.apply, _.value) +} \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/userdefined/IsActive.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/userdefined/IsActive.scala new file mode 100644 index 0000000000..9fbea4c9e1 --- /dev/null +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/userdefined/IsActive.scala @@ -0,0 +1,22 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package testdb.userdefined + +import com.fasterxml.jackson.annotation.JsonValue +import dev.typr.foundations.MariaType +import dev.typr.foundations.scala.Bijection +import dev.typr.foundations.scala.ScalaDbTypes + +/** Shared type `IsActive` + * Generated from TypeDefinitions matching + */ +case class IsActive(@JsonValue value: Boolean) extends scala.AnyVal + +object IsActive { + given bijection: Bijection[IsActive, Boolean] = Bijection.apply[IsActive, Boolean](_.value)(IsActive.apply) + + given mariaType: MariaType[IsActive] = ScalaDbTypes.MariaTypes.bool.bimap(IsActive.apply, _.value) +} \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/userdefined/IsApproved.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/userdefined/IsApproved.scala new file mode 100644 index 0000000000..ab6f9e69c8 --- /dev/null +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/userdefined/IsApproved.scala @@ -0,0 +1,22 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package testdb.userdefined + +import com.fasterxml.jackson.annotation.JsonValue +import dev.typr.foundations.MariaType +import dev.typr.foundations.scala.Bijection +import dev.typr.foundations.scala.ScalaDbTypes + +/** Shared type `IsApproved` + * Generated from TypeDefinitions matching + */ +case class IsApproved(@JsonValue value: Boolean) extends scala.AnyVal + +object IsApproved { + given bijection: Bijection[IsApproved, Boolean] = Bijection.apply[IsApproved, Boolean](_.value)(IsApproved.apply) + + given mariaType: MariaType[IsApproved] = ScalaDbTypes.MariaTypes.bool.bimap(IsApproved.apply, _.value) +} \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/userdefined/IsDefault.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/userdefined/IsDefault.scala new file mode 100644 index 0000000000..0949c8d34f --- /dev/null +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/userdefined/IsDefault.scala @@ -0,0 +1,22 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package testdb.userdefined + +import com.fasterxml.jackson.annotation.JsonValue +import dev.typr.foundations.MariaType +import dev.typr.foundations.scala.Bijection +import dev.typr.foundations.scala.ScalaDbTypes + +/** Shared type `IsDefault` + * Generated from TypeDefinitions matching + */ +case class IsDefault(@JsonValue value: Boolean) extends scala.AnyVal + +object IsDefault { + given bijection: Bijection[IsDefault, Boolean] = Bijection.apply[IsDefault, Boolean](_.value)(IsDefault.apply) + + given mariaType: MariaType[IsDefault] = ScalaDbTypes.MariaTypes.bool.bimap(IsDefault.apply, _.value) +} \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/userdefined/IsPrimary.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/userdefined/IsPrimary.scala new file mode 100644 index 0000000000..f63971e2ab --- /dev/null +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/userdefined/IsPrimary.scala @@ -0,0 +1,22 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package testdb.userdefined + +import com.fasterxml.jackson.annotation.JsonValue +import dev.typr.foundations.MariaType +import dev.typr.foundations.scala.Bijection +import dev.typr.foundations.scala.ScalaDbTypes + +/** Shared type `IsPrimary` + * Generated from TypeDefinitions matching + */ +case class IsPrimary(@JsonValue value: Boolean) extends scala.AnyVal + +object IsPrimary { + given bijection: Bijection[IsPrimary, Boolean] = Bijection.apply[IsPrimary, Boolean](_.value)(IsPrimary.apply) + + given mariaType: MariaType[IsPrimary] = ScalaDbTypes.MariaTypes.bool.bimap(IsPrimary.apply, _.value) +} \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/userdefined/IsVerifiedPurchase.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/userdefined/IsVerifiedPurchase.scala new file mode 100644 index 0000000000..553de105b3 --- /dev/null +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/userdefined/IsVerifiedPurchase.scala @@ -0,0 +1,22 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package testdb.userdefined + +import com.fasterxml.jackson.annotation.JsonValue +import dev.typr.foundations.MariaType +import dev.typr.foundations.scala.Bijection +import dev.typr.foundations.scala.ScalaDbTypes + +/** Shared type `IsVerifiedPurchase` + * Generated from TypeDefinitions matching + */ +case class IsVerifiedPurchase(@JsonValue value: Boolean) extends scala.AnyVal + +object IsVerifiedPurchase { + given bijection: Bijection[IsVerifiedPurchase, Boolean] = Bijection.apply[IsVerifiedPurchase, Boolean](_.value)(IsVerifiedPurchase.apply) + + given mariaType: MariaType[IsVerifiedPurchase] = ScalaDbTypes.MariaTypes.bool.bimap(IsVerifiedPurchase.apply, _.value) +} \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/userdefined/LastName.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/userdefined/LastName.scala new file mode 100644 index 0000000000..06b07dd8d9 --- /dev/null +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/userdefined/LastName.scala @@ -0,0 +1,22 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package testdb.userdefined + +import com.fasterxml.jackson.annotation.JsonValue +import dev.typr.foundations.MariaType +import dev.typr.foundations.MariaTypes +import dev.typr.foundations.scala.Bijection + +/** Shared type `LastName` + * Generated from TypeDefinitions matching + */ +case class LastName(@JsonValue value: String) extends scala.AnyVal + +object LastName { + given bijection: Bijection[LastName, String] = Bijection.apply[LastName, String](_.value)(LastName.apply) + + given mariaType: MariaType[LastName] = MariaTypes.varchar.bimap(LastName.apply, _.value) +} \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/v_customer_summary/VCustomerSummaryViewFields.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/v_customer_summary/VCustomerSummaryViewFields.scala index 16a3f01ed5..4cf2f083d2 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/v_customer_summary/VCustomerSummaryViewFields.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/v_customer_summary/VCustomerSummaryViewFields.scala @@ -19,8 +19,9 @@ import dev.typr.foundations.scala.TupleExpr10 import java.time.LocalDateTime import testdb.customer_status.CustomerStatusId import testdb.customers.CustomersId +import testdb.userdefined.Email -class VCustomerSummaryViewFields(val `_path`: java.util.List[Path]) extends TupleExpr10[CustomersId, String, String, String, CustomerStatusId, LocalDateTime, LocalDateTime, Long, BigDecimal, LocalDateTime] with RelationStructure[VCustomerSummaryViewFields, VCustomerSummaryViewRow] with FieldsBase[VCustomerSummaryViewRow] { +class VCustomerSummaryViewFields(val `_path`: java.util.List[Path]) extends TupleExpr10[CustomersId, /* user-picked */ Email, String, String, CustomerStatusId, LocalDateTime, LocalDateTime, Long, BigDecimal, LocalDateTime] with RelationStructure[VCustomerSummaryViewFields, VCustomerSummaryViewRow] with FieldsBase[VCustomerSummaryViewRow] { def customerId: Field[CustomersId, VCustomerSummaryViewRow] = { new Field[CustomersId, VCustomerSummaryViewRow]( _path, @@ -29,19 +30,19 @@ class VCustomerSummaryViewFields(val `_path`: java.util.List[Path]) extends Tupl None, None, (row, value) => row.copy(customerId = value), - CustomersId.dbType + CustomersId.mariaType ) } - def email: Field[String, VCustomerSummaryViewRow] = { - new Field[String, VCustomerSummaryViewRow]( + def email: Field[/* user-picked */ Email, VCustomerSummaryViewRow] = { + new Field[/* user-picked */ Email, VCustomerSummaryViewRow]( _path, "email", _.email, None, None, (row, value) => row.copy(email = value), - MariaTypes.varchar + Email.mariaType ) } @@ -77,7 +78,7 @@ class VCustomerSummaryViewFields(val `_path`: java.util.List[Path]) extends Tupl None, None, (row, value) => row.copy(status = value), - CustomerStatusId.dbType + CustomerStatusId.mariaType ) } @@ -149,7 +150,7 @@ class VCustomerSummaryViewFields(val `_path`: java.util.List[Path]) extends Tupl override def `_1`: SqlExpr[CustomersId] = customerId - override def `_2`: SqlExpr[String] = email + override def `_2`: SqlExpr[/* user-picked */ Email] = email override def `_3`: SqlExpr[String] = fullName diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/v_customer_summary/VCustomerSummaryViewRow.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/v_customer_summary/VCustomerSummaryViewRow.scala index f1d1b9e6ff..3af1a914b8 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/v_customer_summary/VCustomerSummaryViewRow.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/v_customer_summary/VCustomerSummaryViewRow.scala @@ -15,6 +15,7 @@ import dev.typr.foundations.scala.ScalaDbTypes import java.time.LocalDateTime import testdb.customer_status.CustomerStatusId import testdb.customers.CustomersId +import testdb.userdefined.Email /** View: v_customer_summary * VIEW @@ -28,7 +29,7 @@ case class VCustomerSummaryViewRow( /** * Points to [[testdb.customers.CustomersRow.email]] */ - email: String, + email: /* user-picked */ Email, /** * Default: NULL */ @@ -65,10 +66,10 @@ case class VCustomerSummaryViewRow( * Default: current_timestamp(6) */ @JsonProperty("last_order_date") lastOrderDate: Option[LocalDateTime] -) extends Tuple10[CustomersId, String, Option[String], String, CustomerStatusId, LocalDateTime, Option[LocalDateTime], Long, BigDecimal, Option[LocalDateTime]] { +) extends Tuple10[CustomersId, /* user-picked */ Email, Option[String], String, CustomerStatusId, LocalDateTime, Option[LocalDateTime], Long, BigDecimal, Option[LocalDateTime]] { override def `_1`: CustomersId = customerId - override def `_2`: String = email + override def `_2`: /* user-picked */ Email = email override def `_3`: Option[String] = fullName @@ -88,5 +89,5 @@ case class VCustomerSummaryViewRow( } object VCustomerSummaryViewRow { - val `_rowParser`: RowParser[VCustomerSummaryViewRow] = RowParsers.of(CustomersId.dbType, MariaTypes.varchar, MariaTypes.varchar.nullable, MariaTypes.text, CustomerStatusId.dbType, MariaTypes.datetime, MariaTypes.datetime.nullable, ScalaDbTypes.MariaTypes.bigint, ScalaDbTypes.MariaTypes.numeric, MariaTypes.datetime.nullable)(VCustomerSummaryViewRow.apply)(row => Array[Any](row.customerId, row.email, row.fullName, row.tier, row.status, row.createdAt, row.lastLoginAt, row.totalOrders, row.lifetimeValue, row.lastOrderDate)) + val `_rowParser`: RowParser[VCustomerSummaryViewRow] = RowParsers.of(CustomersId.mariaType, Email.mariaType, MariaTypes.varchar.nullable, MariaTypes.text, CustomerStatusId.mariaType, MariaTypes.datetime, MariaTypes.datetime.nullable, ScalaDbTypes.MariaTypes.bigint, ScalaDbTypes.MariaTypes.numeric, MariaTypes.datetime.nullable)(VCustomerSummaryViewRow.apply)(row => Array[Any](row.customerId, row.email, row.fullName, row.tier, row.status, row.createdAt, row.lastLoginAt, row.totalOrders, row.lifetimeValue, row.lastOrderDate)) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/v_inventory_status/VInventoryStatusViewFields.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/v_inventory_status/VInventoryStatusViewFields.scala index 050919b767..a06aed4097 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/v_inventory_status/VInventoryStatusViewFields.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/v_inventory_status/VInventoryStatusViewFields.scala @@ -29,7 +29,7 @@ class VInventoryStatusViewFields(val `_path`: java.util.List[Path]) extends Tupl None, None, (row, value) => row.copy(productId = value), - ProductsId.dbType + ProductsId.mariaType ) } @@ -65,7 +65,7 @@ class VInventoryStatusViewFields(val `_path`: java.util.List[Path]) extends Tupl None, None, (row, value) => row.copy(warehouseId = value), - WarehousesId.dbType + WarehousesId.mariaType ) } diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/v_inventory_status/VInventoryStatusViewRow.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/v_inventory_status/VInventoryStatusViewRow.scala index 6751e55ea3..e90560e6df 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/v_inventory_status/VInventoryStatusViewRow.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/v_inventory_status/VInventoryStatusViewRow.scala @@ -115,5 +115,5 @@ case class VInventoryStatusViewRow( } object VInventoryStatusViewRow { - val `_rowParser`: RowParser[VInventoryStatusViewRow] = RowParsers.of(ProductsId.dbType, MariaTypes.varchar, MariaTypes.varchar, WarehousesId.dbType, MariaTypes.char_, MariaTypes.varchar, ScalaDbTypes.MariaTypes.int_, ScalaDbTypes.MariaTypes.int_, ScalaDbTypes.MariaTypes.int_, ScalaDbTypes.MariaTypes.bigint, ScalaDbTypes.MariaTypes.int_, MariaTypes.varchar, MariaTypes.varchar.nullable, MariaTypes.datetime.nullable)(VInventoryStatusViewRow.apply)(row => Array[Any](row.productId, row.sku, row.productName, row.warehouseId, row.warehouseCode, row.warehouseName, row.quantityOnHand, row.quantityReserved, row.quantityOnOrder, row.available, row.reorderPoint, row.stockStatus, row.binLocation, row.lastCountedAt)) + val `_rowParser`: RowParser[VInventoryStatusViewRow] = RowParsers.of(ProductsId.mariaType, MariaTypes.varchar, MariaTypes.varchar, WarehousesId.mariaType, MariaTypes.char_, MariaTypes.varchar, ScalaDbTypes.MariaTypes.int_, ScalaDbTypes.MariaTypes.int_, ScalaDbTypes.MariaTypes.int_, ScalaDbTypes.MariaTypes.bigint, ScalaDbTypes.MariaTypes.int_, MariaTypes.varchar, MariaTypes.varchar.nullable, MariaTypes.datetime.nullable)(VInventoryStatusViewRow.apply)(row => Array[Any](row.productId, row.sku, row.productName, row.warehouseId, row.warehouseCode, row.warehouseName, row.quantityOnHand, row.quantityReserved, row.quantityOnOrder, row.available, row.reorderPoint, row.stockStatus, row.binLocation, row.lastCountedAt)) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/v_order_details/VOrderDetailsViewFields.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/v_order_details/VOrderDetailsViewFields.scala index 9cac675fb0..c96038d2b3 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/v_order_details/VOrderDetailsViewFields.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/v_order_details/VOrderDetailsViewFields.scala @@ -18,8 +18,9 @@ import dev.typr.foundations.scala.SqlExpr.OptField import dev.typr.foundations.scala.TupleExpr14 import java.time.LocalDateTime import testdb.orders.OrdersId +import testdb.userdefined.Email -class VOrderDetailsViewFields(val `_path`: java.util.List[Path]) extends TupleExpr14[OrdersId, String, String, String, BigDecimal, String, LocalDateTime, String, String, Long, BigDecimal, String, String, String] with RelationStructure[VOrderDetailsViewFields, VOrderDetailsViewRow] with FieldsBase[VOrderDetailsViewRow] { +class VOrderDetailsViewFields(val `_path`: java.util.List[Path]) extends TupleExpr14[OrdersId, String, String, String, BigDecimal, String, LocalDateTime, /* user-picked */ Email, String, Long, BigDecimal, String, String, String] with RelationStructure[VOrderDetailsViewFields, VOrderDetailsViewRow] with FieldsBase[VOrderDetailsViewRow] { def orderId: Field[OrdersId, VOrderDetailsViewRow] = { new Field[OrdersId, VOrderDetailsViewRow]( _path, @@ -28,7 +29,7 @@ class VOrderDetailsViewFields(val `_path`: java.util.List[Path]) extends TupleEx None, None, (row, value) => row.copy(orderId = value), - OrdersId.dbType + OrdersId.mariaType ) } @@ -104,15 +105,15 @@ class VOrderDetailsViewFields(val `_path`: java.util.List[Path]) extends TupleEx ) } - def customerEmail: Field[String, VOrderDetailsViewRow] = { - new Field[String, VOrderDetailsViewRow]( + def customerEmail: Field[/* user-picked */ Email, VOrderDetailsViewRow] = { + new Field[/* user-picked */ Email, VOrderDetailsViewRow]( _path, "customer_email", _.customerEmail, None, None, (row, value) => row.copy(customerEmail = value), - MariaTypes.varchar + Email.mariaType ) } @@ -208,7 +209,7 @@ class VOrderDetailsViewFields(val `_path`: java.util.List[Path]) extends TupleEx override def `_7`: SqlExpr[LocalDateTime] = orderedAt - override def `_8`: SqlExpr[String] = customerEmail + override def `_8`: SqlExpr[/* user-picked */ Email] = customerEmail override def `_9`: SqlExpr[String] = customerName diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/v_order_details/VOrderDetailsViewRow.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/v_order_details/VOrderDetailsViewRow.scala index ea5304847a..7f432c2aca 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/v_order_details/VOrderDetailsViewRow.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/v_order_details/VOrderDetailsViewRow.scala @@ -14,6 +14,7 @@ import dev.typr.foundations.scala.RowParsers import dev.typr.foundations.scala.ScalaDbTypes import java.time.LocalDateTime import testdb.orders.OrdersId +import testdb.userdefined.Email /** View: v_order_details * VIEW @@ -55,7 +56,7 @@ case class VOrderDetailsViewRow( /** * Points to [[testdb.customers.CustomersRow.email]] */ - @JsonProperty("customer_email") customerEmail: String, + @JsonProperty("customer_email") customerEmail: /* user-picked */ Email, /** * Default: NULL */ @@ -82,7 +83,7 @@ case class VOrderDetailsViewRow( * Points to [[testdb.shipping_carriers.ShippingCarriersRow.name]] */ @JsonProperty("carrier_name") carrierName: Option[String] -) extends Tuple14[OrdersId, String, String, String, BigDecimal, String, LocalDateTime, String, Option[String], Long, Option[BigDecimal], Option[String], Option[String], Option[String]] { +) extends Tuple14[OrdersId, String, String, String, BigDecimal, String, LocalDateTime, /* user-picked */ Email, Option[String], Long, Option[BigDecimal], Option[String], Option[String], Option[String]] { override def `_1`: OrdersId = orderId override def `_2`: String = orderNumber @@ -97,7 +98,7 @@ case class VOrderDetailsViewRow( override def `_7`: LocalDateTime = orderedAt - override def `_8`: String = customerEmail + override def `_8`: /* user-picked */ Email = customerEmail override def `_9`: Option[String] = customerName @@ -113,5 +114,5 @@ case class VOrderDetailsViewRow( } object VOrderDetailsViewRow { - val `_rowParser`: RowParser[VOrderDetailsViewRow] = RowParsers.of(OrdersId.dbType, MariaTypes.varchar, MariaTypes.text, MariaTypes.text, ScalaDbTypes.MariaTypes.numeric, MariaTypes.char_, MariaTypes.datetime, MariaTypes.varchar, MariaTypes.varchar.nullable, ScalaDbTypes.MariaTypes.bigint, ScalaDbTypes.MariaTypes.numeric.nullable, MariaTypes.varchar.nullable, MariaTypes.text.nullable, MariaTypes.varchar.nullable)(VOrderDetailsViewRow.apply)(row => Array[Any](row.orderId, row.orderNumber, row.orderStatus, row.paymentStatus, row.totalAmount, row.currencyCode, row.orderedAt, row.customerEmail, row.customerName, row.itemCount, row.totalQuantity, row.trackingNumber, row.shippingStatus, row.carrierName)) + val `_rowParser`: RowParser[VOrderDetailsViewRow] = RowParsers.of(OrdersId.mariaType, MariaTypes.varchar, MariaTypes.text, MariaTypes.text, ScalaDbTypes.MariaTypes.numeric, MariaTypes.char_, MariaTypes.datetime, Email.mariaType, MariaTypes.varchar.nullable, ScalaDbTypes.MariaTypes.bigint, ScalaDbTypes.MariaTypes.numeric.nullable, MariaTypes.varchar.nullable, MariaTypes.text.nullable, MariaTypes.varchar.nullable)(VOrderDetailsViewRow.apply)(row => Array[Any](row.orderId, row.orderNumber, row.orderStatus, row.paymentStatus, row.totalAmount, row.currencyCode, row.orderedAt, row.customerEmail, row.customerName, row.itemCount, row.totalQuantity, row.trackingNumber, row.shippingStatus, row.carrierName)) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/v_product_catalog/VProductCatalogViewFields.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/v_product_catalog/VProductCatalogViewFields.scala index 5fb7beff58..316d5266af 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/v_product_catalog/VProductCatalogViewFields.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/v_product_catalog/VProductCatalogViewFields.scala @@ -28,7 +28,7 @@ class VProductCatalogViewFields(val `_path`: java.util.List[Path]) extends Tuple None, None, (row, value) => row.copy(productId = value), - ProductsId.dbType + ProductsId.mariaType ) } @@ -100,7 +100,7 @@ class VProductCatalogViewFields(val `_path`: java.util.List[Path]) extends Tuple None, None, (row, value) => row.copy(tags = value), - BestsellerClearanceFSet.dbType + BestsellerClearanceFSet.mariaType ) } diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/v_product_catalog/VProductCatalogViewRow.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/v_product_catalog/VProductCatalogViewRow.scala index 474ad08f08..1f5e3433d3 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/v_product_catalog/VProductCatalogViewRow.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/v_product_catalog/VProductCatalogViewRow.scala @@ -92,5 +92,5 @@ case class VProductCatalogViewRow( } object VProductCatalogViewRow { - val `_rowParser`: RowParser[VProductCatalogViewRow] = RowParsers.of(ProductsId.dbType, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.varchar.nullable, ScalaDbTypes.MariaTypes.numeric, MariaTypes.text, BestsellerClearanceFSet.dbType.nullable, MariaTypes.varchar.nullable, ScalaDbTypes.MariaTypes.numeric, ScalaDbTypes.MariaTypes.numeric, ScalaDbTypes.MariaTypes.bigint)(VProductCatalogViewRow.apply)(row => Array[Any](row.productId, row.sku, row.name, row.shortDescription, row.basePrice, row.status, row.tags, row.brandName, row.availableQuantity, row.avgRating, row.reviewCount)) + val `_rowParser`: RowParser[VProductCatalogViewRow] = RowParsers.of(ProductsId.mariaType, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.varchar.nullable, ScalaDbTypes.MariaTypes.numeric, MariaTypes.text, BestsellerClearanceFSet.mariaType.nullable, MariaTypes.varchar.nullable, ScalaDbTypes.MariaTypes.numeric, ScalaDbTypes.MariaTypes.numeric, ScalaDbTypes.MariaTypes.bigint)(VProductCatalogViewRow.apply)(row => Array[Any](row.productId, row.sku, row.name, row.shortDescription, row.basePrice, row.status, row.tags, row.brandName, row.availableQuantity, row.avgRating, row.reviewCount)) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/v_warehouse_coverage/VWarehouseCoverageViewFields.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/v_warehouse_coverage/VWarehouseCoverageViewFields.scala index c689801924..21e9c5e762 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/v_warehouse_coverage/VWarehouseCoverageViewFields.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/v_warehouse_coverage/VWarehouseCoverageViewFields.scala @@ -16,9 +16,10 @@ import dev.typr.foundations.scala.SqlExpr import dev.typr.foundations.scala.SqlExpr.Field import dev.typr.foundations.scala.SqlExpr.OptField import dev.typr.foundations.scala.TupleExpr10 +import testdb.userdefined.IsActive import testdb.warehouses.WarehousesId -class VWarehouseCoverageViewFields(val `_path`: java.util.List[Path]) extends TupleExpr10[WarehousesId, String, String, String, String, String, String, Boolean, Long, BigDecimal] with RelationStructure[VWarehouseCoverageViewFields, VWarehouseCoverageViewRow] with FieldsBase[VWarehouseCoverageViewRow] { +class VWarehouseCoverageViewFields(val `_path`: java.util.List[Path]) extends TupleExpr10[WarehousesId, String, String, String, String, String, String, /* user-picked */ IsActive, Long, BigDecimal] with RelationStructure[VWarehouseCoverageViewFields, VWarehouseCoverageViewRow] with FieldsBase[VWarehouseCoverageViewRow] { def warehouseId: Field[WarehousesId, VWarehouseCoverageViewRow] = { new Field[WarehousesId, VWarehouseCoverageViewRow]( _path, @@ -27,7 +28,7 @@ class VWarehouseCoverageViewFields(val `_path`: java.util.List[Path]) extends Tu None, None, (row, value) => row.copy(warehouseId = value), - WarehousesId.dbType + WarehousesId.mariaType ) } @@ -103,15 +104,15 @@ class VWarehouseCoverageViewFields(val `_path`: java.util.List[Path]) extends Tu ) } - def isActive: Field[Boolean, VWarehouseCoverageViewRow] = { - new Field[Boolean, VWarehouseCoverageViewRow]( + def isActive: Field[/* user-picked */ IsActive, VWarehouseCoverageViewRow] = { + new Field[/* user-picked */ IsActive, VWarehouseCoverageViewRow]( _path, "is_active", _.isActive, None, None, (row, value) => row.copy(isActive = value), - ScalaDbTypes.MariaTypes.bool + IsActive.mariaType ) } @@ -159,7 +160,7 @@ class VWarehouseCoverageViewFields(val `_path`: java.util.List[Path]) extends Tu override def `_7`: SqlExpr[String] = timezone - override def `_8`: SqlExpr[Boolean] = isActive + override def `_8`: SqlExpr[/* user-picked */ IsActive] = isActive override def `_9`: SqlExpr[Long] = productsStocked diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/v_warehouse_coverage/VWarehouseCoverageViewRow.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/v_warehouse_coverage/VWarehouseCoverageViewRow.scala index ce708c27fb..24668c6c50 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/v_warehouse_coverage/VWarehouseCoverageViewRow.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/v_warehouse_coverage/VWarehouseCoverageViewRow.scala @@ -12,6 +12,7 @@ import dev.typr.foundations.scala.DbTypeOps import dev.typr.foundations.scala.RowParser import dev.typr.foundations.scala.RowParsers import dev.typr.foundations.scala.ScalaDbTypes +import testdb.userdefined.IsActive import testdb.warehouses.WarehousesId /** View: v_warehouse_coverage @@ -52,7 +53,7 @@ case class VWarehouseCoverageViewRow( * Default: 1 * Points to [[testdb.warehouses.WarehousesRow.isActive]] */ - @JsonProperty("is_active") isActive: Boolean, + @JsonProperty("is_active") isActive: /* user-picked */ IsActive, /** * Default: 0 */ @@ -61,7 +62,7 @@ case class VWarehouseCoverageViewRow( * Default: NULL */ @JsonProperty("total_inventory") totalInventory: Option[BigDecimal] -) extends Tuple10[WarehousesId, String, String, String, Option[String], Option[String], String, Boolean, Long, Option[BigDecimal]] { +) extends Tuple10[WarehousesId, String, String, String, Option[String], Option[String], String, /* user-picked */ IsActive, Long, Option[BigDecimal]] { override def `_1`: WarehousesId = warehouseId override def `_2`: String = code @@ -76,7 +77,7 @@ case class VWarehouseCoverageViewRow( override def `_7`: String = timezone - override def `_8`: Boolean = isActive + override def `_8`: /* user-picked */ IsActive = isActive override def `_9`: Long = productsStocked @@ -84,5 +85,5 @@ case class VWarehouseCoverageViewRow( } object VWarehouseCoverageViewRow { - val `_rowParser`: RowParser[VWarehouseCoverageViewRow] = RowParsers.of(WarehousesId.dbType, MariaTypes.char_, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.longtext.nullable, MariaTypes.longtext.nullable, MariaTypes.varchar, ScalaDbTypes.MariaTypes.bool, ScalaDbTypes.MariaTypes.bigint, ScalaDbTypes.MariaTypes.numeric.nullable)(VWarehouseCoverageViewRow.apply)(row => Array[Any](row.warehouseId, row.code, row.name, row.address, row.locationWkt, row.serviceAreaWkt, row.timezone, row.isActive, row.productsStocked, row.totalInventory)) + val `_rowParser`: RowParser[VWarehouseCoverageViewRow] = RowParsers.of(WarehousesId.mariaType, MariaTypes.char_, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.longtext.nullable, MariaTypes.longtext.nullable, MariaTypes.varchar, IsActive.mariaType, ScalaDbTypes.MariaTypes.bigint, ScalaDbTypes.MariaTypes.numeric.nullable)(VWarehouseCoverageViewRow.apply)(row => Array[Any](row.warehouseId, row.code, row.name, row.address, row.locationWkt, row.serviceAreaWkt, row.timezone, row.isActive, row.productsStocked, row.totalInventory)) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/warehouses/WarehousesFields.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/warehouses/WarehousesFields.scala index 44a0b423fe..1b636ea0a7 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/warehouses/WarehousesFields.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/warehouses/WarehousesFields.scala @@ -11,7 +11,6 @@ import dev.typr.foundations.dsl.FieldsBase import dev.typr.foundations.dsl.Path import dev.typr.foundations.dsl.SqlExpr.FieldLike import dev.typr.foundations.scala.RelationStructure -import dev.typr.foundations.scala.ScalaDbTypes import dev.typr.foundations.scala.SqlExpr import dev.typr.foundations.scala.SqlExpr.Field import dev.typr.foundations.scala.SqlExpr.IdField @@ -19,8 +18,10 @@ import dev.typr.foundations.scala.SqlExpr.OptField import dev.typr.foundations.scala.TupleExpr10 import org.mariadb.jdbc.`type`.Point import org.mariadb.jdbc.`type`.Polygon +import testdb.userdefined.Email +import testdb.userdefined.IsActive -class WarehousesFields(val `_path`: java.util.List[Path]) extends TupleExpr10[WarehousesId, String, String, String, Point, Polygon, String, Boolean, String, String] with RelationStructure[WarehousesFields, WarehousesRow] with FieldsBase[WarehousesRow] { +class WarehousesFields(val `_path`: java.util.List[Path]) extends TupleExpr10[WarehousesId, String, String, String, Point, Polygon, String, /* user-picked */ IsActive, /* user-picked */ Email, String] with RelationStructure[WarehousesFields, WarehousesRow] with FieldsBase[WarehousesRow] { def warehouseId: IdField[WarehousesId, WarehousesRow] = { new IdField[WarehousesId, WarehousesRow]( _path, @@ -29,7 +30,7 @@ class WarehousesFields(val `_path`: java.util.List[Path]) extends TupleExpr10[Wa None, None, (row, value) => row.copy(warehouseId = value), - WarehousesId.dbType + WarehousesId.mariaType ) } @@ -105,27 +106,27 @@ class WarehousesFields(val `_path`: java.util.List[Path]) extends TupleExpr10[Wa ) } - def isActive: Field[Boolean, WarehousesRow] = { - new Field[Boolean, WarehousesRow]( + def isActive: Field[/* user-picked */ IsActive, WarehousesRow] = { + new Field[/* user-picked */ IsActive, WarehousesRow]( _path, "is_active", _.isActive, None, None, (row, value) => row.copy(isActive = value), - ScalaDbTypes.MariaTypes.bool + IsActive.mariaType ) } - def contactEmail: OptField[String, WarehousesRow] = { - new OptField[String, WarehousesRow]( + def contactEmail: OptField[/* user-picked */ Email, WarehousesRow] = { + new OptField[/* user-picked */ Email, WarehousesRow]( _path, "contact_email", _.contactEmail, None, None, (row, value) => row.copy(contactEmail = value), - MariaTypes.varchar + Email.mariaType ) } @@ -161,9 +162,9 @@ class WarehousesFields(val `_path`: java.util.List[Path]) extends TupleExpr10[Wa override def `_7`: SqlExpr[String] = timezone - override def `_8`: SqlExpr[Boolean] = isActive + override def `_8`: SqlExpr[/* user-picked */ IsActive] = isActive - override def `_9`: SqlExpr[String] = contactEmail + override def `_9`: SqlExpr[/* user-picked */ Email] = contactEmail override def `_10`: SqlExpr[String] = contactPhone } diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/warehouses/WarehousesId.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/warehouses/WarehousesId.scala index 07530362c8..3c05665f89 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/warehouses/WarehousesId.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/warehouses/WarehousesId.scala @@ -17,5 +17,5 @@ case class WarehousesId(@JsonValue value: Uint1) extends scala.AnyVal object WarehousesId { given bijection: Bijection[WarehousesId, Uint1] = Bijection.apply[WarehousesId, Uint1](_.value)(WarehousesId.apply) - given dbType: MariaType[WarehousesId] = MariaTypes.tinyintUnsigned.bimap(WarehousesId.apply, _.value) + given mariaType: MariaType[WarehousesId] = MariaTypes.tinyintUnsigned.bimap(WarehousesId.apply, _.value) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/warehouses/WarehousesRepoImpl.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/warehouses/WarehousesRepoImpl.scala index 7b371c69b6..2c45990abc 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/warehouses/WarehousesRepoImpl.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/warehouses/WarehousesRepoImpl.scala @@ -10,27 +10,28 @@ import dev.typr.foundations.scala.DbTypeOps import dev.typr.foundations.scala.DeleteBuilder import dev.typr.foundations.scala.Dialect import dev.typr.foundations.scala.Fragment -import dev.typr.foundations.scala.ScalaDbTypes import dev.typr.foundations.scala.SelectBuilder import dev.typr.foundations.scala.UpdateBuilder import java.sql.Connection import scala.collection.mutable.ListBuffer +import testdb.userdefined.Email +import testdb.userdefined.IsActive import dev.typr.foundations.scala.Fragment.sql class WarehousesRepoImpl extends WarehousesRepo { override def delete: DeleteBuilder[WarehousesFields, WarehousesRow] = DeleteBuilder.of("`warehouses`", WarehousesFields.structure, Dialect.MARIADB) - override def deleteById(warehouseId: WarehousesId)(using c: Connection): Boolean = sql"delete from `warehouses` where `warehouse_id` = ${Fragment.encode(WarehousesId.dbType, warehouseId)}".update().runUnchecked(c) > 0 + override def deleteById(warehouseId: WarehousesId)(using c: Connection): Boolean = sql"delete from `warehouses` where `warehouse_id` = ${Fragment.encode(WarehousesId.mariaType, warehouseId)}".update().runUnchecked(c) > 0 override def deleteByIds(warehouseIds: Array[WarehousesId])(using c: Connection): Int = { val fragments: ListBuffer[Fragment] = ListBuffer() - warehouseIds.foreach { id => fragments.addOne(Fragment.encode(WarehousesId.dbType, id)): @scala.annotation.nowarn } + warehouseIds.foreach { id => fragments.addOne(Fragment.encode(WarehousesId.mariaType, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("delete from `warehouses` where `warehouse_id` in ("), Fragment.comma(fragments), Fragment.lit(")")).update().runUnchecked(c) } override def insert(unsaved: WarehousesRow)(using c: Connection): WarehousesRow = { sql"""insert into `warehouses`(`code`, `name`, `address`, `location`, `service_area`, `timezone`, `is_active`, `contact_email`, `contact_phone`) - values (${Fragment.encode(MariaTypes.char_, unsaved.code)}, ${Fragment.encode(MariaTypes.varchar, unsaved.name)}, ${Fragment.encode(MariaTypes.varchar, unsaved.address)}, ${Fragment.encode(MariaTypes.point, unsaved.location)}, ${Fragment.encode(MariaTypes.polygon.nullable, unsaved.serviceArea)}, ${Fragment.encode(MariaTypes.varchar, unsaved.timezone)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.bool, unsaved.isActive)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.contactEmail)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.contactPhone)}) + values (${Fragment.encode(MariaTypes.char_, unsaved.code)}, ${Fragment.encode(MariaTypes.varchar, unsaved.name)}, ${Fragment.encode(MariaTypes.varchar, unsaved.address)}, ${Fragment.encode(MariaTypes.point, unsaved.location)}, ${Fragment.encode(MariaTypes.polygon.nullable, unsaved.serviceArea)}, ${Fragment.encode(MariaTypes.varchar, unsaved.timezone)}, ${Fragment.encode(IsActive.mariaType, unsaved.isActive)}, ${Fragment.encode(Email.mariaType.nullable, unsaved.contactEmail)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.contactPhone)}) RETURNING `warehouse_id`, `code`, `name`, `address`, `location`, `service_area`, `timezone`, `is_active`, `contact_email`, `contact_phone` """ .updateReturning(WarehousesRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -57,11 +58,11 @@ class WarehousesRepoImpl extends WarehousesRepo { ); unsaved.isActive.visit( { }, - value => { columns.addOne(Fragment.lit("`is_active`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(ScalaDbTypes.MariaTypes.bool, value)}"): @scala.annotation.nowarn } + value => { columns.addOne(Fragment.lit("`is_active`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(IsActive.mariaType, value)}"): @scala.annotation.nowarn } ); unsaved.contactEmail.visit( { }, - value => { columns.addOne(Fragment.lit("`contact_email`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(MariaTypes.varchar.nullable, value)}"): @scala.annotation.nowarn } + value => { columns.addOne(Fragment.lit("`contact_email`")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(Email.mariaType.nullable, value)}"): @scala.annotation.nowarn } ); unsaved.contactPhone.visit( { }, @@ -87,12 +88,12 @@ class WarehousesRepoImpl extends WarehousesRepo { override def selectById(warehouseId: WarehousesId)(using c: Connection): Option[WarehousesRow] = { sql"""select `warehouse_id`, `code`, `name`, `address`, `location`, `service_area`, `timezone`, `is_active`, `contact_email`, `contact_phone` from `warehouses` - where `warehouse_id` = ${Fragment.encode(WarehousesId.dbType, warehouseId)}""".query(WarehousesRow.`_rowParser`.first()).runUnchecked(c) + where `warehouse_id` = ${Fragment.encode(WarehousesId.mariaType, warehouseId)}""".query(WarehousesRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(warehouseIds: Array[WarehousesId])(using c: Connection): List[WarehousesRow] = { val fragments: ListBuffer[Fragment] = ListBuffer() - warehouseIds.foreach { id => fragments.addOne(Fragment.encode(WarehousesId.dbType, id)): @scala.annotation.nowarn } + warehouseIds.foreach { id => fragments.addOne(Fragment.encode(WarehousesId.mariaType, id)): @scala.annotation.nowarn } return Fragment.interpolate(Fragment.lit("select `warehouse_id`, `code`, `name`, `address`, `location`, `service_area`, `timezone`, `is_active`, `contact_email`, `contact_phone` from `warehouses` where `warehouse_id` in ("), Fragment.comma(fragments), Fragment.lit(")")).query(WarehousesRow.`_rowParser`.all()).runUnchecked(c) } @@ -120,15 +121,15 @@ class WarehousesRepoImpl extends WarehousesRepo { `location` = ${Fragment.encode(MariaTypes.point, row.location)}, `service_area` = ${Fragment.encode(MariaTypes.polygon.nullable, row.serviceArea)}, `timezone` = ${Fragment.encode(MariaTypes.varchar, row.timezone)}, - `is_active` = ${Fragment.encode(ScalaDbTypes.MariaTypes.bool, row.isActive)}, - `contact_email` = ${Fragment.encode(MariaTypes.varchar.nullable, row.contactEmail)}, + `is_active` = ${Fragment.encode(IsActive.mariaType, row.isActive)}, + `contact_email` = ${Fragment.encode(Email.mariaType.nullable, row.contactEmail)}, `contact_phone` = ${Fragment.encode(MariaTypes.varchar.nullable, row.contactPhone)} - where `warehouse_id` = ${Fragment.encode(WarehousesId.dbType, warehouseId)}""".update().runUnchecked(c) > 0 + where `warehouse_id` = ${Fragment.encode(WarehousesId.mariaType, warehouseId)}""".update().runUnchecked(c) > 0 } override def upsert(unsaved: WarehousesRow)(using c: Connection): WarehousesRow = { sql"""INSERT INTO `warehouses`(`warehouse_id`, `code`, `name`, `address`, `location`, `service_area`, `timezone`, `is_active`, `contact_email`, `contact_phone`) - VALUES (${Fragment.encode(WarehousesId.dbType, unsaved.warehouseId)}, ${Fragment.encode(MariaTypes.char_, unsaved.code)}, ${Fragment.encode(MariaTypes.varchar, unsaved.name)}, ${Fragment.encode(MariaTypes.varchar, unsaved.address)}, ${Fragment.encode(MariaTypes.point, unsaved.location)}, ${Fragment.encode(MariaTypes.polygon.nullable, unsaved.serviceArea)}, ${Fragment.encode(MariaTypes.varchar, unsaved.timezone)}, ${Fragment.encode(ScalaDbTypes.MariaTypes.bool, unsaved.isActive)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.contactEmail)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.contactPhone)}) + VALUES (${Fragment.encode(WarehousesId.mariaType, unsaved.warehouseId)}, ${Fragment.encode(MariaTypes.char_, unsaved.code)}, ${Fragment.encode(MariaTypes.varchar, unsaved.name)}, ${Fragment.encode(MariaTypes.varchar, unsaved.address)}, ${Fragment.encode(MariaTypes.point, unsaved.location)}, ${Fragment.encode(MariaTypes.polygon.nullable, unsaved.serviceArea)}, ${Fragment.encode(MariaTypes.varchar, unsaved.timezone)}, ${Fragment.encode(IsActive.mariaType, unsaved.isActive)}, ${Fragment.encode(Email.mariaType.nullable, unsaved.contactEmail)}, ${Fragment.encode(MariaTypes.varchar.nullable, unsaved.contactPhone)}) ON DUPLICATE KEY UPDATE `code` = VALUES(`code`), `name` = VALUES(`name`), `address` = VALUES(`address`), diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/warehouses/WarehousesRow.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/warehouses/WarehousesRow.scala index 645e224a65..aee0163101 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/warehouses/WarehousesRow.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/warehouses/WarehousesRow.scala @@ -11,10 +11,11 @@ import dev.typr.foundations.Tuple.Tuple10 import dev.typr.foundations.scala.DbTypeOps import dev.typr.foundations.scala.RowParser import dev.typr.foundations.scala.RowParsers -import dev.typr.foundations.scala.ScalaDbTypes import org.mariadb.jdbc.`type`.Point import org.mariadb.jdbc.`type`.Polygon import testdb.customtypes.Defaulted +import testdb.userdefined.Email +import testdb.userdefined.IsActive /** Table: warehouses * Primary key: warehouse_id @@ -43,23 +44,23 @@ case class WarehousesRow( /** * Default: 1 */ - @JsonProperty("is_active") isActive: Boolean, + @JsonProperty("is_active") isActive: /* user-picked */ IsActive, /** * Default: NULL */ - @JsonProperty("contact_email") contactEmail: Option[String], + @JsonProperty("contact_email") contactEmail: Option[/* user-picked */ Email], /** * Default: NULL */ @JsonProperty("contact_phone") contactPhone: Option[String] -) extends Tuple10[WarehousesId, String, String, String, Point, Option[Polygon], String, Boolean, Option[String], Option[String]] { +) extends Tuple10[WarehousesId, String, String, String, Point, Option[Polygon], String, /* user-picked */ IsActive, Option[/* user-picked */ Email], Option[String]] { def id: WarehousesId = warehouseId def toUnsavedRow( serviceArea: Defaulted[Option[Polygon]] = Defaulted.Provided(this.serviceArea), timezone: Defaulted[String] = Defaulted.Provided(this.timezone), - isActive: Defaulted[Boolean] = Defaulted.Provided(this.isActive), - contactEmail: Defaulted[Option[String]] = Defaulted.Provided(this.contactEmail), + isActive: Defaulted[/* user-picked */ IsActive] = Defaulted.Provided(this.isActive), + contactEmail: Defaulted[Option[/* user-picked */ Email]] = Defaulted.Provided(this.contactEmail), contactPhone: Defaulted[Option[String]] = Defaulted.Provided(this.contactPhone) ): WarehousesRowUnsaved = { new WarehousesRowUnsaved( @@ -89,13 +90,13 @@ case class WarehousesRow( override def `_7`: String = timezone - override def `_8`: Boolean = isActive + override def `_8`: /* user-picked */ IsActive = isActive - override def `_9`: Option[String] = contactEmail + override def `_9`: Option[/* user-picked */ Email] = contactEmail override def `_10`: Option[String] = contactPhone } object WarehousesRow { - val `_rowParser`: RowParser[WarehousesRow] = RowParsers.of(WarehousesId.dbType, MariaTypes.char_, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.point, MariaTypes.polygon.nullable, MariaTypes.varchar, ScalaDbTypes.MariaTypes.bool, MariaTypes.varchar.nullable, MariaTypes.varchar.nullable)(WarehousesRow.apply)(row => Array[Any](row.warehouseId, row.code, row.name, row.address, row.location, row.serviceArea, row.timezone, row.isActive, row.contactEmail, row.contactPhone)) + val `_rowParser`: RowParser[WarehousesRow] = RowParsers.of(WarehousesId.mariaType, MariaTypes.char_, MariaTypes.varchar, MariaTypes.varchar, MariaTypes.point, MariaTypes.polygon.nullable, MariaTypes.varchar, IsActive.mariaType, Email.mariaType.nullable, MariaTypes.varchar.nullable)(WarehousesRow.apply)(row => Array[Any](row.warehouseId, row.code, row.name, row.address, row.location, row.serviceArea, row.timezone, row.isActive, row.contactEmail, row.contactPhone)) } \ No newline at end of file diff --git a/testers/mariadb/scala/generated-and-checked-in/testdb/warehouses/WarehousesRowUnsaved.scala b/testers/mariadb/scala/generated-and-checked-in/testdb/warehouses/WarehousesRowUnsaved.scala index 0c9d1f442e..978f964e31 100644 --- a/testers/mariadb/scala/generated-and-checked-in/testdb/warehouses/WarehousesRowUnsaved.scala +++ b/testers/mariadb/scala/generated-and-checked-in/testdb/warehouses/WarehousesRowUnsaved.scala @@ -10,6 +10,8 @@ import org.mariadb.jdbc.`type`.Point import org.mariadb.jdbc.`type`.Polygon import testdb.customtypes.Defaulted import testdb.customtypes.Defaulted.UseDefault +import testdb.userdefined.Email +import testdb.userdefined.IsActive /** This class corresponds to a row in table `warehouses` which has not been persisted yet */ case class WarehousesRowUnsaved( @@ -32,11 +34,11 @@ case class WarehousesRowUnsaved( /** Default: 1 */ - @JsonProperty("is_active") isActive: Defaulted[Boolean] = new UseDefault(), + @JsonProperty("is_active") isActive: Defaulted[/* user-picked */ IsActive] = new UseDefault(), /** Default: NULL */ - @JsonProperty("contact_email") contactEmail: Defaulted[Option[String]] = new UseDefault(), + @JsonProperty("contact_email") contactEmail: Defaulted[Option[/* user-picked */ Email]] = new UseDefault(), /** Default: NULL */ @@ -45,8 +47,8 @@ case class WarehousesRowUnsaved( def toRow( serviceAreaDefault: => Option[Polygon], timezoneDefault: => String, - isActiveDefault: => Boolean, - contactEmailDefault: => Option[String], + isActiveDefault: => /* user-picked */ IsActive, + contactEmailDefault: => Option[/* user-picked */ Email], contactPhoneDefault: => Option[String], warehouseIdDefault: => WarehousesId ): WarehousesRow = { diff --git a/testers/mariadb/scala/src/scala/testdb/CompositeIdTest.scala b/testers/mariadb/scala/src/scala/testdb/CompositeIdTest.scala index a9ca69dff8..542a8a043a 100644 --- a/testers/mariadb/scala/src/scala/testdb/CompositeIdTest.scala +++ b/testers/mariadb/scala/src/scala/testdb/CompositeIdTest.scala @@ -6,6 +6,7 @@ import testdb.categories.* import testdb.customtypes.Defaulted.Provided import testdb.product_categories.* import testdb.products.* +import testdb.userdefined.IsPrimary /** Tests for composite primary keys using the product_categories table. */ class CompositeIdTest extends AnyFunSuite { @@ -55,7 +56,7 @@ class CompositeIdTest extends AnyFunSuite { ProductCategoriesRowUnsaved( productId = product.productId, categoryId = category.categoryId, - isPrimary = Provided(true), + isPrimary = Provided(IsPrimary(true)), sortOrder = Provided(1.toShort) ) ) @@ -66,7 +67,7 @@ class CompositeIdTest extends AnyFunSuite { val _ = assert(selected.isDefined) val _ = assert(selected.get.productId == product.productId) val _ = assert(selected.get.categoryId == category.categoryId) - val _ = assert(selected.get.isPrimary) + val _ = assert(selected.get.isPrimary.value) assert(selected.get.sortOrder == 1.toShort) } } @@ -106,7 +107,7 @@ class CompositeIdTest extends AnyFunSuite { ProductCategoriesRowUnsaved( productId = product.productId, categoryId = category1.categoryId, - isPrimary = Provided(true), + isPrimary = Provided(IsPrimary(true)), sortOrder = Provided(1.toShort) ) ) @@ -114,7 +115,7 @@ class CompositeIdTest extends AnyFunSuite { ProductCategoriesRowUnsaved( productId = product.productId, categoryId = category2.categoryId, - isPrimary = Provided(false), + isPrimary = Provided(IsPrimary(false)), sortOrder = Provided(2.toShort) ) ) @@ -126,8 +127,8 @@ class CompositeIdTest extends AnyFunSuite { val tracked = productCategoriesRepo.selectByIdsTracked(ids) val _ = assert(tracked.size == 2) - val _ = assert(tracked(id1).isPrimary) - assert(!tracked(id2).isPrimary) + val _ = assert(tracked(id1).isPrimary.value) + assert(!tracked(id2).isPrimary.value) } } @@ -142,18 +143,18 @@ class CompositeIdTest extends AnyFunSuite { ProductCategoriesRowUnsaved( productId = product.productId, categoryId = category.categoryId, - isPrimary = Provided(false), + isPrimary = Provided(IsPrimary(false)), sortOrder = Provided(10.toShort) ) ) - val updated = inserted.copy(isPrimary = true, sortOrder = 5.toShort) + val updated = inserted.copy(isPrimary = IsPrimary(true), sortOrder = 5.toShort) val success = productCategoriesRepo.update(updated) val _ = assert(success) val selected = productCategoriesRepo.selectById(inserted.compositeId) val _ = assert(selected.isDefined) - val _ = assert(selected.get.isPrimary) + val _ = assert(selected.get.isPrimary.value) assert(selected.get.sortOrder == 5.toShort) } } @@ -214,16 +215,16 @@ class CompositeIdTest extends AnyFunSuite { val row = ProductCategoriesRow( productId = product.productId, categoryId = category.categoryId, - isPrimary = false, + isPrimary = IsPrimary(false), sortOrder = 1.toShort ) val inserted = productCategoriesRepo.upsert(row) - val _ = assert(!inserted.isPrimary) + val _ = assert(!inserted.isPrimary.value) val _ = assert(inserted.sortOrder == 1.toShort) - val updatedRow = row.copy(isPrimary = true, sortOrder = 99.toShort) + val updatedRow = row.copy(isPrimary = IsPrimary(true), sortOrder = 99.toShort) val updated = productCategoriesRepo.upsert(updatedRow) - val _ = assert(updated.isPrimary) + val _ = assert(updated.isPrimary.value) val _ = assert(updated.sortOrder == 99.toShort) val all = productCategoriesRepo.selectAll @@ -243,7 +244,7 @@ class CompositeIdTest extends AnyFunSuite { ProductCategoriesRowUnsaved( productId = product1.productId, categoryId = category.categoryId, - isPrimary = Provided(true), + isPrimary = Provided(IsPrimary(true)), sortOrder = Provided(1.toShort) ) ) @@ -251,13 +252,13 @@ class CompositeIdTest extends AnyFunSuite { ProductCategoriesRowUnsaved( productId = product2.productId, categoryId = category.categoryId, - isPrimary = Provided(false), + isPrimary = Provided(IsPrimary(false)), sortOrder = Provided(2.toShort) ) ) val primaries = productCategoriesRepo.select - .where(f => f.isPrimary.isEqual(true)) + .where(f => f.isPrimary.isEqual(IsPrimary(true))) .toList val _ = assert(primaries.size == 1) val _ = assert(primaries.head.productId == product1.productId) @@ -271,12 +272,12 @@ class CompositeIdTest extends AnyFunSuite { val _ = assert(updated.get.sortOrder == 100.toShort) productCategoriesRepo.delete - .where(f => f.isPrimary.isEqual(false)) + .where(f => f.isPrimary.isEqual(IsPrimary(false))) .execute val remaining = productCategoriesRepo.selectAll val _ = assert(remaining.size == 1) - assert(remaining.head.isPrimary) + assert(remaining.head.isPrimary.value) } } } diff --git a/testers/mariadb/scala/src/scala/testdb/ForeignKeyTest.scala b/testers/mariadb/scala/src/scala/testdb/ForeignKeyTest.scala index 75c0bb5212..6c1991d37a 100644 --- a/testers/mariadb/scala/src/scala/testdb/ForeignKeyTest.scala +++ b/testers/mariadb/scala/src/scala/testdb/ForeignKeyTest.scala @@ -6,6 +6,9 @@ import testdb.customer_status.* import testdb.customers.* import testdb.orders.* import testdb.customtypes.Defaulted.UseDefault +import testdb.userdefined.Email +import testdb.userdefined.FirstName +import testdb.userdefined.LastName import java.util.Random @@ -47,19 +50,19 @@ class ForeignKeyTest extends AnyFunSuite { // Create a customer with FK to the status - use short constructor val customer = CustomersRowUnsaved( - "test@example.com", + Email("test@example.com"), Array[Byte](1, 2, 3, 4), - "John", - "Doe" + FirstName("John"), + LastName("Doe") ) val insertedCustomer = customersRepo.insert(customer) val _ = assert(insertedCustomer != null) val _ = assert(insertedCustomer.customerId.value.value.compareTo(java.math.BigInteger.ZERO) >= 0) - val _ = assert(insertedCustomer.email == "test@example.com") - val _ = assert(insertedCustomer.firstName == "John") - assert(insertedCustomer.lastName == "Doe") + val _ = assert(insertedCustomer.email == Email("test@example.com")) + val _ = assert(insertedCustomer.firstName == FirstName("John")) + assert(insertedCustomer.lastName == LastName("Doe")) } } diff --git a/testers/mariadb/scala/src/scala/testdb/SqlScriptTest.scala b/testers/mariadb/scala/src/scala/testdb/SqlScriptTest.scala index d6d7c07b95..24506a3ef1 100644 --- a/testers/mariadb/scala/src/scala/testdb/SqlScriptTest.scala +++ b/testers/mariadb/scala/src/scala/testdb/SqlScriptTest.scala @@ -116,7 +116,7 @@ class SqlScriptTest extends AnyFunSuite { val customer = testInsert.Customers(passwordHash = Array[Byte](1, 2, 3)) // Look up by email - val results = simpleCustomerLookupRepo.apply(customer.email) + val results = simpleCustomerLookupRepo.apply(customer.email.value) val _ = assert(results != null) val _ = assert(results.size == 1) diff --git a/testers/mariadb/scala/src/scala/testdb/TestInsertTest.scala b/testers/mariadb/scala/src/scala/testdb/TestInsertTest.scala index 7172509409..b2efbef989 100644 --- a/testers/mariadb/scala/src/scala/testdb/TestInsertTest.scala +++ b/testers/mariadb/scala/src/scala/testdb/TestInsertTest.scala @@ -79,7 +79,7 @@ class TestInsertTest extends AnyFunSuite { // Customer and its fields are non-null by design val _ = assert(customer.customerId.value.value().compareTo(java.math.BigInteger.ZERO) >= 0) - assert(customer.email.nonEmpty) + assert(customer.email.value.nonEmpty) } } @@ -106,7 +106,7 @@ class TestInsertTest extends AnyFunSuite { // Row and its fields are non-null by design val _ = assert(row.id.value >= 0) - val _ = assert(row.email.nonEmpty) + val _ = assert(row.email.value.nonEmpty) val _ = assert(row.code.nonEmpty) assert(row.category.nonEmpty) } diff --git a/testers/mariadb/scala/src/scala/testdb/UniqueConstraintTest.scala b/testers/mariadb/scala/src/scala/testdb/UniqueConstraintTest.scala index ee7e172657..0d60af0cf7 100644 --- a/testers/mariadb/scala/src/scala/testdb/UniqueConstraintTest.scala +++ b/testers/mariadb/scala/src/scala/testdb/UniqueConstraintTest.scala @@ -2,6 +2,7 @@ package testdb import org.scalatest.funsuite.AnyFunSuite import testdb.mariatest_unique.* +import testdb.userdefined.Email /** Tests for unique constraint handling in MariaDB. */ class UniqueConstraintTest extends AnyFunSuite { @@ -10,12 +11,12 @@ class UniqueConstraintTest extends AnyFunSuite { test("insertWithUniqueEmail") { withConnection { c => given java.sql.Connection = c - val row = MariatestUniqueRowUnsaved("test@example.com", "CODE001", "CategoryA") + val row = MariatestUniqueRowUnsaved(Email("test@example.com"), "CODE001", "CategoryA") val inserted = repo.insert(row) val _ = assert(inserted != null) val _ = assert(inserted.id.value >= 0) - val _ = assert(inserted.email == "test@example.com") + val _ = assert(inserted.email == Email("test@example.com")) val _ = assert(inserted.code == "CODE001") assert(inserted.category == "CategoryA") } @@ -25,12 +26,12 @@ class UniqueConstraintTest extends AnyFunSuite { withConnection { c => given java.sql.Connection = c // Insert first row - val row1 = MariatestUniqueRowUnsaved("unique@example.com", "CODE001", "CategoryA") + val row1 = MariatestUniqueRowUnsaved(Email("unique@example.com"), "CODE001", "CategoryA") val _ = repo.insert(row1) // Try to insert with same email (should fail in real db scenario) // Here we test with different codes/categories but same email - val row2 = MariatestUniqueRowUnsaved("unique@example.com", "CODE002", "CategoryB") + val row2 = MariatestUniqueRowUnsaved(Email("unique@example.com"), "CODE002", "CategoryB") val thrown = intercept[Exception] { repo.insert(row2) @@ -44,21 +45,21 @@ class UniqueConstraintTest extends AnyFunSuite { withConnection { c => given java.sql.Connection = c // Insert first row - val row1 = MariatestUniqueRowUnsaved("email1@example.com", "COMP001", "CategoryA") + val row1 = MariatestUniqueRowUnsaved(Email("email1@example.com"), "COMP001", "CategoryA") val _ = repo.insert(row1) // Same code, different category - should work (composite unique on code+category) - val row2 = MariatestUniqueRowUnsaved("email2@example.com", "COMP001", "CategoryB") + val row2 = MariatestUniqueRowUnsaved(Email("email2@example.com"), "COMP001", "CategoryB") val inserted2 = repo.insert(row2) val _ = assert(inserted2 != null) // Same category, different code - should work - val row3 = MariatestUniqueRowUnsaved("email3@example.com", "COMP002", "CategoryA") + val row3 = MariatestUniqueRowUnsaved(Email("email3@example.com"), "COMP002", "CategoryA") val inserted3 = repo.insert(row3) val _ = assert(inserted3 != null) // Same code AND category - should fail - val row4 = MariatestUniqueRowUnsaved("email4@example.com", "COMP001", "CategoryA") + val row4 = MariatestUniqueRowUnsaved(Email("email4@example.com"), "COMP001", "CategoryA") val thrown = intercept[Exception] { repo.insert(row4) } @@ -71,7 +72,7 @@ class UniqueConstraintTest extends AnyFunSuite { withConnection { c => given java.sql.Connection = c // Insert initial row - val row = MariatestUniqueRowUnsaved("upsert@example.com", "UPSERT001", "CategoryA") + val row = MariatestUniqueRowUnsaved(Email("upsert@example.com"), "UPSERT001", "CategoryA") val inserted = repo.insert(row) // Upsert with same ID - should update @@ -87,7 +88,7 @@ class UniqueConstraintTest extends AnyFunSuite { test("selectByIdAfterUpdate") { withConnection { c => given java.sql.Connection = c - val row = MariatestUniqueRowUnsaved("select@example.com", "SELECT001", "CategoryA") + val row = MariatestUniqueRowUnsaved(Email("select@example.com"), "SELECT001", "CategoryA") val inserted = repo.insert(row) // Update @@ -97,7 +98,7 @@ class UniqueConstraintTest extends AnyFunSuite { // Select and verify val found = repo.selectById(inserted.id).get val _ = assert(found.code == "SELECT001-UPDATED") - assert(found.email == "select@example.com") // Email unchanged + assert(found.email == Email("select@example.com")) // Email unchanged } } @@ -105,7 +106,7 @@ class UniqueConstraintTest extends AnyFunSuite { withConnection { c => given java.sql.Connection = c // Insert - val row = MariatestUniqueRowUnsaved("reuse@example.com", "REUSE001", "CategoryA") + val row = MariatestUniqueRowUnsaved(Email("reuse@example.com"), "REUSE001", "CategoryA") val inserted = repo.insert(row) // Delete @@ -113,11 +114,11 @@ class UniqueConstraintTest extends AnyFunSuite { val _ = assert(deleted) // Should now be able to reuse the email - val row2 = MariatestUniqueRowUnsaved("reuse@example.com", "REUSE002", "CategoryB") + val row2 = MariatestUniqueRowUnsaved(Email("reuse@example.com"), "REUSE002", "CategoryB") val inserted2 = repo.insert(row2) val _ = assert(inserted2 != null) - assert(inserted2.email == "reuse@example.com") + assert(inserted2.email == Email("reuse@example.com")) } } @@ -125,9 +126,9 @@ class UniqueConstraintTest extends AnyFunSuite { withConnection { c => given java.sql.Connection = c // Insert multiple unique rows - val _ = repo.insert(MariatestUniqueRowUnsaved("all1@example.com", "ALL001", "CatA")) - val _ = repo.insert(MariatestUniqueRowUnsaved("all2@example.com", "ALL002", "CatB")) - val _ = repo.insert(MariatestUniqueRowUnsaved("all3@example.com", "ALL003", "CatC")) + val _ = repo.insert(MariatestUniqueRowUnsaved(Email("all1@example.com"), "ALL001", "CatA")) + val _ = repo.insert(MariatestUniqueRowUnsaved(Email("all2@example.com"), "ALL002", "CatB")) + val _ = repo.insert(MariatestUniqueRowUnsaved(Email("all3@example.com"), "ALL003", "CatC")) val all = repo.selectAll val _ = assert(all.size >= 3) diff --git a/testers/mariadb/scala/src/scala/testdb/ViewTest.scala b/testers/mariadb/scala/src/scala/testdb/ViewTest.scala index f7944dd39d..996f2b750e 100644 --- a/testers/mariadb/scala/src/scala/testdb/ViewTest.scala +++ b/testers/mariadb/scala/src/scala/testdb/ViewTest.scala @@ -15,6 +15,10 @@ import testdb.reviews.* import testdb.v_customer_summary.* import testdb.v_product_catalog.* import testdb.warehouses.* +import testdb.userdefined.Email +import testdb.userdefined.FirstName +import testdb.userdefined.LastName +import testdb.userdefined.IsApproved /** Tests for views - read-only operations using generated view repositories. Note: The database has seeded customer_status data including 'active', 'pending', 'suspended', 'closed'. Tests use these * existing statuses rather than inserting new ones. @@ -37,18 +41,18 @@ class ViewTest extends AnyFunSuite { customersRepo.insert( CustomersRowUnsaved( - email = "view1@example.com", + email = Email("view1@example.com"), passwordHash = "hash1".getBytes, - firstName = "View", - lastName = "Customer1" + firstName = FirstName("View"), + lastName = LastName("Customer1") ) ) customersRepo.insert( CustomersRowUnsaved( - email = "view2@example.com", + email = Email("view2@example.com"), passwordHash = "hash2".getBytes, - firstName = "View", - lastName = "Customer2" + firstName = FirstName("View"), + lastName = LastName("Customer2") ) ) @@ -63,10 +67,10 @@ class ViewTest extends AnyFunSuite { customersRepo.insert( CustomersRowUnsaved( - email = "summary@example.com", + email = Email("summary@example.com"), passwordHash = "hash".getBytes, - firstName = "Summary", - lastName = "Test", + firstName = FirstName("Summary"), + lastName = LastName("Test"), status = Provided(CustomerStatusId("suspended")), tier = Provided("gold") ) @@ -76,7 +80,7 @@ class ViewTest extends AnyFunSuite { val _ = assert(summaries.size == 1) val summary = summaries.head - val _ = assert(summary.email == "summary@example.com") + val _ = assert(summary.email == Email("summary@example.com")) val _ = assert(summary.fullName == Some("Summary Test")) val _ = assert(summary.tier == "gold") val _ = assert(summary.status.value == "suspended") @@ -91,10 +95,10 @@ class ViewTest extends AnyFunSuite { val customer = customersRepo.insert( CustomersRowUnsaved( - email = "orders@example.com", + email = Email("orders@example.com"), passwordHash = "hash".getBytes, - firstName = "With", - lastName = "Orders" + firstName = FirstName("With"), + lastName = LastName("Orders") ) ) @@ -237,10 +241,10 @@ class ViewTest extends AnyFunSuite { val customer = customersRepo.insert( CustomersRowUnsaved( - email = "reviewer@example.com", + email = Email("reviewer@example.com"), passwordHash = "hash".getBytes, - firstName = "Reviewer", - lastName = "User" + firstName = FirstName("Reviewer"), + lastName = LastName("User") ) ) @@ -258,7 +262,7 @@ class ViewTest extends AnyFunSuite { productId = product.productId, customerId = customer.customerId, rating = Uint1.of(5), - isApproved = Provided(true) + isApproved = Provided(IsApproved(true)) ) ) reviewsRepo.insert( @@ -266,7 +270,7 @@ class ViewTest extends AnyFunSuite { productId = product.productId, customerId = customer.customerId, rating = Uint1.of(4), - isApproved = Provided(true) + isApproved = Provided(IsApproved(true)) ) ) @@ -283,28 +287,28 @@ class ViewTest extends AnyFunSuite { customersRepo.insert( CustomersRowUnsaved( - email = "dsl1@example.com", + email = Email("dsl1@example.com"), passwordHash = "hash1".getBytes, - firstName = "DSL", - lastName = "Bronze", + firstName = FirstName("DSL"), + lastName = LastName("Bronze"), tier = Provided("bronze") ) ) customersRepo.insert( CustomersRowUnsaved( - email = "dsl2@example.com", + email = Email("dsl2@example.com"), passwordHash = "hash2".getBytes, - firstName = "DSL", - lastName = "Gold", + firstName = FirstName("DSL"), + lastName = LastName("Gold"), tier = Provided("gold") ) ) customersRepo.insert( CustomersRowUnsaved( - email = "dsl3@example.com", + email = Email("dsl3@example.com"), passwordHash = "hash3".getBytes, - firstName = "DSL", - lastName = "Gold2", + firstName = FirstName("DSL"), + lastName = LastName("Gold2"), tier = Provided("gold") ) ) @@ -315,7 +319,7 @@ class ViewTest extends AnyFunSuite { val _ = assert(goldCustomers.size == 2) val specificCustomer = customerSummaryRepo.select - .where(f => f.email.isEqual("dsl1@example.com")) + .where(f => f.email.isEqual(Email("dsl1@example.com"))) .toList val _ = assert(specificCustomer.size == 1) assert(specificCustomer.head.tier == "bronze") diff --git a/testers/oracle/java/generated-and-checked-in/oracledb/contacts/ContactsFields.java b/testers/oracle/java/generated-and-checked-in/oracledb/contacts/ContactsFields.java index 2a1ddc5451..02bf9cee82 100644 --- a/testers/oracle/java/generated-and-checked-in/oracledb/contacts/ContactsFields.java +++ b/testers/oracle/java/generated-and-checked-in/oracledb/contacts/ContactsFields.java @@ -18,10 +18,11 @@ import dev.typr.foundations.dsl.TupleExpr.TupleExpr4; import java.util.List; import java.util.Optional; -import oracledb.EmailTableT; import oracledb.TagVarrayT; +import oracledb.userdefined.Email; -public class ContactsFields extends TupleExpr4 +public class ContactsFields + extends TupleExpr4 implements RelationStructure, FieldsBase { List _path; @@ -53,15 +54,15 @@ public Field name() { OracleTypes.varchar2); } - public OptField emails() { - return new OptField( + public OptField emails() { + return new OptField( _path, "EMAILS", ContactsRow::emails, Optional.empty(), Optional.empty(), (row, value) -> row.withEmails(value), - EmailTableT.oracleType); + Email.oracleType); } public OptField tags() { @@ -106,7 +107,7 @@ public SqlExpr _2() { } @Override - public SqlExpr _3() { + public SqlExpr _3() { return emails(); } diff --git a/testers/oracle/java/generated-and-checked-in/oracledb/contacts/ContactsRepoImpl.java b/testers/oracle/java/generated-and-checked-in/oracledb/contacts/ContactsRepoImpl.java index eb30a942ab..ae11a1e8a8 100644 --- a/testers/oracle/java/generated-and-checked-in/oracledb/contacts/ContactsRepoImpl.java +++ b/testers/oracle/java/generated-and-checked-in/oracledb/contacts/ContactsRepoImpl.java @@ -20,8 +20,8 @@ import java.util.List; import java.util.Map; import java.util.Optional; -import oracledb.EmailTableT; import oracledb.TagVarrayT; +import oracledb.userdefined.Email; public class ContactsRepoImpl implements ContactsRepo { @Override @@ -65,7 +65,7 @@ public ContactsId insert(ContactsRow unsaved, Connection c) { Fragment.lit(", "), Fragment.encode(OracleTypes.varchar2, unsaved.name()), Fragment.lit(", "), - Fragment.encode(EmailTableT.oracleType.opt(), unsaved.emails()), + Fragment.encode(Email.oracleType.opt(), unsaved.emails()), Fragment.lit(", "), Fragment.encode(TagVarrayT.oracleType.opt(), unsaved.tags()), Fragment.lit(")\n")) @@ -85,8 +85,7 @@ public ContactsId insert(ContactsRowUnsaved unsaved, Connection c) { interpolate(Fragment.encode(OracleTypes.varchar2, unsaved.name()), Fragment.lit(""))); columns.add(Fragment.lit("\"EMAILS\"")); values.add( - interpolate( - Fragment.encode(EmailTableT.oracleType.opt(), unsaved.emails()), Fragment.lit(""))); + interpolate(Fragment.encode(Email.oracleType.opt(), unsaved.emails()), Fragment.lit(""))); columns.add(Fragment.lit("\"TAGS\"")); values.add( interpolate( @@ -180,7 +179,7 @@ public Boolean update(ContactsRow row, Connection c) { Fragment.lit("update \"CONTACTS\"\nset \"NAME\" = "), Fragment.encode(OracleTypes.varchar2, row.name()), Fragment.lit(",\n\"EMAILS\" = "), - Fragment.encode(EmailTableT.oracleType.opt(), row.emails()), + Fragment.encode(Email.oracleType.opt(), row.emails()), Fragment.lit(",\n\"TAGS\" = "), Fragment.encode(TagVarrayT.oracleType.opt(), row.tags()), Fragment.lit("\nwhere \"CONTACT_ID\" = "), @@ -199,7 +198,7 @@ public void upsert(ContactsRow unsaved, Connection c) { Fragment.lit(", "), Fragment.encode(OracleTypes.varchar2, unsaved.name()), Fragment.lit(", "), - Fragment.encode(EmailTableT.oracleType.opt(), unsaved.emails()), + Fragment.encode(Email.oracleType.opt(), unsaved.emails()), Fragment.lit(", "), Fragment.encode(TagVarrayT.oracleType.opt(), unsaved.tags()), Fragment.lit( @@ -214,7 +213,7 @@ public void upsert(ContactsRow unsaved, Connection c) { Fragment.lit(", "), Fragment.encode(OracleTypes.varchar2, unsaved.name()), Fragment.lit(", "), - Fragment.encode(EmailTableT.oracleType.opt(), unsaved.emails()), + Fragment.encode(Email.oracleType.opt(), unsaved.emails()), Fragment.lit(", "), Fragment.encode(TagVarrayT.oracleType.opt(), unsaved.tags()), Fragment.lit(")")) diff --git a/testers/oracle/java/generated-and-checked-in/oracledb/contacts/ContactsRow.java b/testers/oracle/java/generated-and-checked-in/oracledb/contacts/ContactsRow.java index e10a6dd47f..453ad3137e 100644 --- a/testers/oracle/java/generated-and-checked-in/oracledb/contacts/ContactsRow.java +++ b/testers/oracle/java/generated-and-checked-in/oracledb/contacts/ContactsRow.java @@ -11,18 +11,18 @@ import dev.typr.foundations.RowParsers; import dev.typr.foundations.Tuple.Tuple4; import java.util.Optional; -import oracledb.EmailTableT; import oracledb.TagVarrayT; import oracledb.customtypes.Defaulted; +import oracledb.userdefined.Email; /** Table: CONTACTS Primary key: CONTACT_ID */ public record ContactsRow( /** Default: "TYPR"."ISEQ$$_72857".nextval */ @JsonProperty("CONTACT_ID") ContactsId contactId, @JsonProperty("NAME") String name, - @JsonProperty("EMAILS") Optional emails, + @JsonProperty("EMAILS") Optional emails, @JsonProperty("TAGS") Optional tags) - implements Tuple4, Optional> { + implements Tuple4, Optional> { /** Default: "TYPR"."ISEQ$$_72857".nextval */ public ContactsRow withContactId(ContactsId contactId) { return new ContactsRow(contactId, name, emails, tags); @@ -34,7 +34,7 @@ public ContactsRow withName(String name) { } ; - public ContactsRow withEmails(Optional emails) { + public ContactsRow withEmails(Optional emails) { return new ContactsRow(contactId, name, emails, tags); } ; @@ -48,7 +48,7 @@ public ContactsRow withTags(Optional tags) { RowParsers.of( ContactsId.oracleType, OracleTypes.varchar2, - EmailTableT.oracleType.opt(), + Email.oracleType.opt(), TagVarrayT.oracleType.opt(), ContactsRow::new, row -> new Object[] {row.contactId(), row.name(), row.emails(), row.tags()}); @@ -67,7 +67,7 @@ public String _2() { ; @Override - public Optional _3() { + public Optional _3() { return emails; } ; diff --git a/testers/oracle/java/generated-and-checked-in/oracledb/contacts/ContactsRowUnsaved.java b/testers/oracle/java/generated-and-checked-in/oracledb/contacts/ContactsRowUnsaved.java index c52dd5fc24..a934038576 100644 --- a/testers/oracle/java/generated-and-checked-in/oracledb/contacts/ContactsRowUnsaved.java +++ b/testers/oracle/java/generated-and-checked-in/oracledb/contacts/ContactsRowUnsaved.java @@ -7,15 +7,15 @@ import com.fasterxml.jackson.annotation.JsonProperty; import java.util.Optional; -import oracledb.EmailTableT; import oracledb.TagVarrayT; import oracledb.customtypes.Defaulted; import oracledb.customtypes.Defaulted.UseDefault; +import oracledb.userdefined.Email; /** This class corresponds to a row in table `CONTACTS` which has not been persisted yet */ public record ContactsRowUnsaved( @JsonProperty("NAME") String name, - @JsonProperty("EMAILS") Optional emails, + @JsonProperty("EMAILS") Optional emails, @JsonProperty("TAGS") Optional tags, /** Default: "TYPR"."ISEQ$$_72857".nextval */ @JsonProperty("CONTACT_ID") Defaulted contactId) { @@ -29,7 +29,7 @@ public ContactsRowUnsaved withName(String name) { } ; - public ContactsRowUnsaved withEmails(Optional emails) { + public ContactsRowUnsaved withEmails(Optional emails) { return new ContactsRowUnsaved(name, emails, tags, contactId); } ; diff --git a/testers/oracle/java/generated-and-checked-in/oracledb/userdefined/Email.java b/testers/oracle/java/generated-and-checked-in/oracledb/userdefined/Email.java new file mode 100644 index 0000000000..a992746022 --- /dev/null +++ b/testers/oracle/java/generated-and-checked-in/oracledb/userdefined/Email.java @@ -0,0 +1,38 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package oracledb.userdefined; + +import com.fasterxml.jackson.annotation.JsonValue; +import dev.typr.foundations.OracleType; +import dev.typr.foundations.RowParser; +import dev.typr.foundations.RowParsers; +import dev.typr.foundations.dsl.Bijection; +import oracledb.EmailTableT; + +/** Shared type `Email` Generated from TypeDefinitions matching */ +public record Email(@JsonValue EmailTableT value) { + public Email withValue(EmailTableT value) { + return new Email(value); + } + ; + + @Override + public java.lang.String toString() { + return value.toString(); + } + ; + + public static RowParser _rowParser = + RowParsers.of( + oracledb.EmailTableT.oracleType.bimap(Email::new, Email::value), + x -> x, + id -> new Object[] {id}); + + public static Bijection bijection = Bijection.of(Email::value, Email::new); + + public static OracleType oracleType = + oracledb.EmailTableT.oracleType.bimap(Email::new, Email::value); +} diff --git a/testers/oracle/java/src/java/oracledb/contacts/ContactsTest.java b/testers/oracle/java/src/java/oracledb/contacts/ContactsTest.java index 33181966b3..593f610e6e 100644 --- a/testers/oracle/java/src/java/oracledb/contacts/ContactsTest.java +++ b/testers/oracle/java/src/java/oracledb/contacts/ContactsTest.java @@ -8,6 +8,7 @@ import oracledb.OracleTestHelper; import oracledb.TagVarrayT; import oracledb.customtypes.Defaulted; +import oracledb.userdefined.Email; import org.junit.Test; public class ContactsTest { @@ -17,9 +18,10 @@ public class ContactsTest { public void testInsertContactWithNestedTableAndVarray() { OracleTestHelper.run( c -> { - EmailTableT emails = - new EmailTableT( - new String[] {"john@example.com", "john.doe@work.com", "jdoe@personal.net"}); + Email emails = + new Email( + new EmailTableT( + new String[] {"john@example.com", "john.doe@work.com", "jdoe@personal.net"})); TagVarrayT tags = new TagVarrayT(new String[] {"customer", "vip"}); ContactsRowUnsaved unsaved = @@ -35,7 +37,7 @@ public void testInsertContactWithNestedTableAndVarray() { assertTrue(inserted.emails().isPresent()); assertArrayEquals( new String[] {"john@example.com", "john.doe@work.com", "jdoe@personal.net"}, - inserted.emails().get().value()); + inserted.emails().get().value().value()); assertTrue(inserted.tags().isPresent()); assertArrayEquals(new String[] {"customer", "vip"}, inserted.tags().get().value()); }); @@ -45,7 +47,7 @@ public void testInsertContactWithNestedTableAndVarray() { public void testInsertContactWithOnlyEmails() { OracleTestHelper.run( c -> { - EmailTableT emails = new EmailTableT(new String[] {"jane@example.com"}); + Email emails = new Email(new EmailTableT(new String[] {"jane@example.com"})); ContactsRowUnsaved unsaved = new ContactsRowUnsaved( @@ -60,7 +62,7 @@ public void testInsertContactWithOnlyEmails() { ContactsRow inserted = repo.selectById(insertedId, c).orElseThrow(); assertNotNull(inserted.contactId()); assertTrue(inserted.emails().isPresent()); - assertEquals(1, inserted.emails().get().value().length); + assertEquals(1, inserted.emails().get().value().value().length); assertFalse(inserted.tags().isPresent()); }); } @@ -122,7 +124,7 @@ public void testNestedTableRoundtrip() { "email4@test.com", "email5@test.com" }; - EmailTableT emails = new EmailTableT(emailArray); + Email emails = new Email(new EmailTableT(emailArray)); ContactsRowUnsaved unsaved = new ContactsRowUnsaved( @@ -136,7 +138,7 @@ public void testNestedTableRoundtrip() { Optional found = repo.selectById(insertedId, c); assertTrue(found.isPresent()); assertTrue(found.get().emails().isPresent()); - assertArrayEquals(emailArray, found.get().emails().get().value()); + assertArrayEquals(emailArray, found.get().emails().get().value().value()); }); } @@ -144,8 +146,8 @@ public void testNestedTableRoundtrip() { public void testUpdateEmails() { OracleTestHelper.run( c -> { - EmailTableT originalEmails = - new EmailTableT(new String[] {"old1@example.com", "old2@example.com"}); + Email originalEmails = + new Email(new EmailTableT(new String[] {"old1@example.com", "old2@example.com"})); ContactsRowUnsaved unsaved = new ContactsRowUnsaved( "Update Emails Test", @@ -156,9 +158,10 @@ public void testUpdateEmails() { ContactsId insertedId = repo.insert(unsaved, c); ContactsRow inserted = repo.selectById(insertedId, c).orElseThrow(); - EmailTableT newEmails = - new EmailTableT( - new String[] {"new1@example.com", "new2@example.com", "new3@example.com"}); + Email newEmails = + new Email( + new EmailTableT( + new String[] {"new1@example.com", "new2@example.com", "new3@example.com"})); ContactsRow updatedRow = inserted.withEmails(Optional.of(newEmails)); Boolean wasUpdated = repo.update(updatedRow, c); @@ -167,7 +170,7 @@ public void testUpdateEmails() { assertTrue(fetched.emails().isPresent()); assertArrayEquals( new String[] {"new1@example.com", "new2@example.com", "new3@example.com"}, - fetched.emails().get().value()); + fetched.emails().get().value().value()); }); } @@ -201,7 +204,7 @@ public void testUpdateTags() { public void testUpdateBothCollections() { OracleTestHelper.run( c -> { - EmailTableT originalEmails = new EmailTableT(new String[] {"original@test.com"}); + Email originalEmails = new Email(new EmailTableT(new String[] {"original@test.com"})); TagVarrayT originalTags = new TagVarrayT(new String[] {"original"}); ContactsRowUnsaved unsaved = @@ -214,8 +217,8 @@ public void testUpdateBothCollections() { ContactsId insertedId = repo.insert(unsaved, c); ContactsRow inserted = repo.selectById(insertedId, c).orElseThrow(); - EmailTableT newEmails = - new EmailTableT(new String[] {"updated1@test.com", "updated2@test.com"}); + Email newEmails = + new Email(new EmailTableT(new String[] {"updated1@test.com", "updated2@test.com"})); TagVarrayT newTags = new TagVarrayT(new String[] {"updated1", "updated2", "updated3"}); ContactsRow updatedRow = @@ -226,7 +229,7 @@ public void testUpdateBothCollections() { ContactsRow fetched = repo.selectById(insertedId, c).orElseThrow(); assertTrue(fetched.emails().isPresent()); assertTrue(fetched.tags().isPresent()); - assertEquals(2, fetched.emails().get().value().length); + assertEquals(2, fetched.emails().get().value().value().length); assertEquals(3, fetched.tags().get().value().length); }); } @@ -235,7 +238,7 @@ public void testUpdateBothCollections() { public void testClearEmails() { OracleTestHelper.run( c -> { - EmailTableT emails = new EmailTableT(new String[] {"clear@test.com"}); + Email emails = new Email(new EmailTableT(new String[] {"clear@test.com"})); ContactsRowUnsaved unsaved = new ContactsRowUnsaved( "Clear Emails Test", @@ -264,7 +267,7 @@ public void testNestedTableWithManyEmails() { for (int i = 0; i < 20; i++) { manyEmails[i] = "email" + i + "@test.com"; } - EmailTableT emails = new EmailTableT(manyEmails); + Email emails = new Email(new EmailTableT(manyEmails)); ContactsRowUnsaved unsaved = new ContactsRowUnsaved( @@ -276,7 +279,7 @@ public void testNestedTableWithManyEmails() { ContactsId insertedId = repo.insert(unsaved, c); ContactsRow inserted = repo.selectById(insertedId, c).orElseThrow(); assertTrue(inserted.emails().isPresent()); - assertEquals(20, inserted.emails().get().value().length); + assertEquals(20, inserted.emails().get().value().value().length); }); } @@ -284,7 +287,7 @@ public void testNestedTableWithManyEmails() { public void testDeleteContact() { OracleTestHelper.run( c -> { - EmailTableT emails = new EmailTableT(new String[] {"delete@test.com"}); + Email emails = new Email(new EmailTableT(new String[] {"delete@test.com"})); TagVarrayT tags = new TagVarrayT(new String[] {"delete"}); ContactsRowUnsaved unsaved = @@ -308,8 +311,8 @@ public void testDeleteContact() { public void testSelectAll() { OracleTestHelper.run( c -> { - EmailTableT emails1 = new EmailTableT(new String[] {"contact1@test.com"}); - EmailTableT emails2 = new EmailTableT(new String[] {"contact2@test.com"}); + Email emails1 = new Email(new EmailTableT(new String[] {"contact1@test.com"})); + Email emails2 = new Email(new EmailTableT(new String[] {"contact2@test.com"})); ContactsRowUnsaved unsaved1 = new ContactsRowUnsaved( @@ -352,7 +355,7 @@ public void testNestedTableVsVarrayDifference() { public void testEmptyEmailArray() { OracleTestHelper.run( c -> { - EmailTableT emptyEmails = new EmailTableT(new String[] {}); + Email emptyEmails = new Email(new EmailTableT(new String[] {})); ContactsRowUnsaved unsaved = new ContactsRowUnsaved( @@ -364,7 +367,7 @@ public void testEmptyEmailArray() { ContactsId insertedId = repo.insert(unsaved, c); ContactsRow inserted = repo.selectById(insertedId, c).orElseThrow(); assertTrue(inserted.emails().isPresent()); - assertEquals(0, inserted.emails().get().value().length); + assertEquals(0, inserted.emails().get().value().value().length); }); } } diff --git a/testers/oracle/kotlin/generated-and-checked-in/oracledb/TestInsert.kt b/testers/oracle/kotlin/generated-and-checked-in/oracledb/TestInsert.kt index f86917a9ab..cc8367ee0c 100644 --- a/testers/oracle/kotlin/generated-and-checked-in/oracledb/TestInsert.kt +++ b/testers/oracle/kotlin/generated-and-checked-in/oracledb/TestInsert.kt @@ -60,6 +60,7 @@ import oracledb.precision_types_null.PrecisionTypesNullRowUnsaved import oracledb.products.ProductsId import oracledb.products.ProductsRepoImpl import oracledb.products.ProductsRowUnsaved +import oracledb.userdefined.Email /** Methods to generate random data for `Ident(TestInsert)` */ data class TestInsert(val random: Random) { @@ -84,7 +85,7 @@ data class TestInsert(val random: Random) { fun Contacts( name: String, - emails: EmailTableT? = null, + emails: /* user-picked */ Email? = null, tags: TagVarrayT? = null, contactId: Defaulted = UseDefault(), c: Connection diff --git a/testers/oracle/kotlin/generated-and-checked-in/oracledb/contacts/ContactsFields.kt b/testers/oracle/kotlin/generated-and-checked-in/oracledb/contacts/ContactsFields.kt index 6f236527ae..04287b166c 100644 --- a/testers/oracle/kotlin/generated-and-checked-in/oracledb/contacts/ContactsFields.kt +++ b/testers/oracle/kotlin/generated-and-checked-in/oracledb/contacts/ContactsFields.kt @@ -17,15 +17,15 @@ import dev.typr.foundations.kotlin.SqlExpr.IdField import dev.typr.foundations.kotlin.SqlExpr.OptField import dev.typr.foundations.kotlin.TupleExpr4 import kotlin.collections.List -import oracledb.EmailTableT import oracledb.TagVarrayT +import oracledb.userdefined.Email -data class ContactsFields(val _path: List) : TupleExpr4, RelationStructure, FieldsBase { +data class ContactsFields(val _path: List) : TupleExpr4, RelationStructure, FieldsBase { override fun _1(): SqlExpr = contactId() override fun _2(): SqlExpr = name() - override fun _3(): SqlExpr = emails() + override fun _3(): SqlExpr = emails() override fun _4(): SqlExpr = tags() @@ -35,7 +35,7 @@ data class ContactsFields(val _path: List) : TupleExpr4 = IdField(_path, "CONTACT_ID", ContactsRow::contactId, null, null, { row, value -> row.copy(contactId = value) }, ContactsId.oracleType) - fun emails(): OptField = OptField(_path, "EMAILS", ContactsRow::emails, null, null, { row, value -> row.copy(emails = value) }, EmailTableT.oracleType) + fun emails(): OptField = OptField(_path, "EMAILS", ContactsRow::emails, null, null, { row, value -> row.copy(emails = value) }, Email.oracleType) fun name(): Field = Field(_path, "NAME", ContactsRow::name, null, null, { row, value -> row.copy(name = value) }, OracleTypes.varchar2) diff --git a/testers/oracle/kotlin/generated-and-checked-in/oracledb/contacts/ContactsRepoImpl.kt b/testers/oracle/kotlin/generated-and-checked-in/oracledb/contacts/ContactsRepoImpl.kt index bf144356b8..a5035d0230 100644 --- a/testers/oracle/kotlin/generated-and-checked-in/oracledb/contacts/ContactsRepoImpl.kt +++ b/testers/oracle/kotlin/generated-and-checked-in/oracledb/contacts/ContactsRepoImpl.kt @@ -18,8 +18,8 @@ import kotlin.collections.Iterator import kotlin.collections.List import kotlin.collections.Map import kotlin.collections.MutableMap -import oracledb.EmailTableT import oracledb.TagVarrayT +import oracledb.userdefined.Email class ContactsRepoImpl() : ContactsRepo { override fun delete(): DeleteBuilder = DeleteBuilder.of("\"CONTACTS\"", ContactsFields.structure, Dialect.ORACLE) @@ -41,7 +41,7 @@ class ContactsRepoImpl() : ContactsRepo { override fun insert( unsaved: ContactsRow, c: Connection - ): ContactsId = Fragment.interpolate(Fragment.lit("insert into \"CONTACTS\"(\"CONTACT_ID\", \"NAME\", \"EMAILS\", \"TAGS\")\nvalues ("), Fragment.encode(ContactsId.oracleType, unsaved.contactId), Fragment.lit(", "), Fragment.encode(OracleTypes.varchar2, unsaved.name), Fragment.lit(", "), Fragment.encode(EmailTableT.oracleType.nullable(), unsaved.emails), Fragment.lit(", "), Fragment.encode(TagVarrayT.oracleType.nullable(), unsaved.tags), Fragment.lit(")\n")) + ): ContactsId = Fragment.interpolate(Fragment.lit("insert into \"CONTACTS\"(\"CONTACT_ID\", \"NAME\", \"EMAILS\", \"TAGS\")\nvalues ("), Fragment.encode(ContactsId.oracleType, unsaved.contactId), Fragment.lit(", "), Fragment.encode(OracleTypes.varchar2, unsaved.name), Fragment.lit(", "), Fragment.encode(Email.oracleType.nullable(), unsaved.emails), Fragment.lit(", "), Fragment.encode(TagVarrayT.oracleType.nullable(), unsaved.tags), Fragment.lit(")\n")) .updateReturningGeneratedKeys(arrayOf("CONTACT_ID"), ContactsId._rowParser.exactlyOne()).runUnchecked(c) override fun insert( @@ -53,7 +53,7 @@ class ContactsRepoImpl() : ContactsRepo { columns.add(Fragment.lit("\"NAME\"")) values.add(Fragment.interpolate(Fragment.encode(OracleTypes.varchar2, unsaved.name), Fragment.lit(""))) columns.add(Fragment.lit("\"EMAILS\"")) - values.add(Fragment.interpolate(Fragment.encode(EmailTableT.oracleType.nullable(), unsaved.emails), Fragment.lit(""))) + values.add(Fragment.interpolate(Fragment.encode(Email.oracleType.nullable(), unsaved.emails), Fragment.lit(""))) columns.add(Fragment.lit("\"TAGS\"")) values.add(Fragment.interpolate(Fragment.encode(TagVarrayT.oracleType.nullable(), unsaved.tags), Fragment.lit(""))) unsaved.contactId.visit( @@ -99,14 +99,14 @@ class ContactsRepoImpl() : ContactsRepo { c: Connection ): Boolean { val contactId: ContactsId = row.contactId - return Fragment.interpolate(Fragment.lit("update \"CONTACTS\"\nset \"NAME\" = "), Fragment.encode(OracleTypes.varchar2, row.name), Fragment.lit(",\n\"EMAILS\" = "), Fragment.encode(EmailTableT.oracleType.nullable(), row.emails), Fragment.lit(",\n\"TAGS\" = "), Fragment.encode(TagVarrayT.oracleType.nullable(), row.tags), Fragment.lit("\nwhere \"CONTACT_ID\" = "), Fragment.encode(ContactsId.oracleType, contactId), Fragment.lit("")).update().runUnchecked(c) > 0 + return Fragment.interpolate(Fragment.lit("update \"CONTACTS\"\nset \"NAME\" = "), Fragment.encode(OracleTypes.varchar2, row.name), Fragment.lit(",\n\"EMAILS\" = "), Fragment.encode(Email.oracleType.nullable(), row.emails), Fragment.lit(",\n\"TAGS\" = "), Fragment.encode(TagVarrayT.oracleType.nullable(), row.tags), Fragment.lit("\nwhere \"CONTACT_ID\" = "), Fragment.encode(ContactsId.oracleType, contactId), Fragment.lit("")).update().runUnchecked(c) > 0 } override fun upsert( unsaved: ContactsRow, c: Connection ) { - Fragment.interpolate(Fragment.lit("MERGE INTO \"CONTACTS\" t\nUSING (SELECT "), Fragment.encode(ContactsId.oracleType, unsaved.contactId), Fragment.lit(", "), Fragment.encode(OracleTypes.varchar2, unsaved.name), Fragment.lit(", "), Fragment.encode(EmailTableT.oracleType.nullable(), unsaved.emails), Fragment.lit(", "), Fragment.encode(TagVarrayT.oracleType.nullable(), unsaved.tags), Fragment.lit(" FROM DUAL) s\nON (t.\"CONTACT_ID\" = s.\"CONTACT_ID\")\nWHEN MATCHED THEN UPDATE SET t.\"NAME\" = s.\"NAME\",\nt.\"EMAILS\" = s.\"EMAILS\",\nt.\"TAGS\" = s.\"TAGS\"\nWHEN NOT MATCHED THEN INSERT (\"CONTACT_ID\", \"NAME\", \"EMAILS\", \"TAGS\") VALUES ("), Fragment.encode(ContactsId.oracleType, unsaved.contactId), Fragment.lit(", "), Fragment.encode(OracleTypes.varchar2, unsaved.name), Fragment.lit(", "), Fragment.encode(EmailTableT.oracleType.nullable(), unsaved.emails), Fragment.lit(", "), Fragment.encode(TagVarrayT.oracleType.nullable(), unsaved.tags), Fragment.lit(")")) + Fragment.interpolate(Fragment.lit("MERGE INTO \"CONTACTS\" t\nUSING (SELECT "), Fragment.encode(ContactsId.oracleType, unsaved.contactId), Fragment.lit(", "), Fragment.encode(OracleTypes.varchar2, unsaved.name), Fragment.lit(", "), Fragment.encode(Email.oracleType.nullable(), unsaved.emails), Fragment.lit(", "), Fragment.encode(TagVarrayT.oracleType.nullable(), unsaved.tags), Fragment.lit(" FROM DUAL) s\nON (t.\"CONTACT_ID\" = s.\"CONTACT_ID\")\nWHEN MATCHED THEN UPDATE SET t.\"NAME\" = s.\"NAME\",\nt.\"EMAILS\" = s.\"EMAILS\",\nt.\"TAGS\" = s.\"TAGS\"\nWHEN NOT MATCHED THEN INSERT (\"CONTACT_ID\", \"NAME\", \"EMAILS\", \"TAGS\") VALUES ("), Fragment.encode(ContactsId.oracleType, unsaved.contactId), Fragment.lit(", "), Fragment.encode(OracleTypes.varchar2, unsaved.name), Fragment.lit(", "), Fragment.encode(Email.oracleType.nullable(), unsaved.emails), Fragment.lit(", "), Fragment.encode(TagVarrayT.oracleType.nullable(), unsaved.tags), Fragment.lit(")")) .update() .runUnchecked(c) } diff --git a/testers/oracle/kotlin/generated-and-checked-in/oracledb/contacts/ContactsRow.kt b/testers/oracle/kotlin/generated-and-checked-in/oracledb/contacts/ContactsRow.kt index 14e73a7550..7f7806c9f7 100644 --- a/testers/oracle/kotlin/generated-and-checked-in/oracledb/contacts/ContactsRow.kt +++ b/testers/oracle/kotlin/generated-and-checked-in/oracledb/contacts/ContactsRow.kt @@ -11,9 +11,9 @@ import dev.typr.foundations.Tuple.Tuple4 import dev.typr.foundations.kotlin.RowParser import dev.typr.foundations.kotlin.RowParsers import dev.typr.foundations.kotlin.nullable -import oracledb.EmailTableT import oracledb.TagVarrayT import oracledb.customtypes.Defaulted +import oracledb.userdefined.Email /** Table: CONTACTS * Primary key: CONTACT_ID @@ -22,14 +22,14 @@ data class ContactsRow( /** Default: "TYPR"."ISEQ$$_72857".nextval */ @field:JsonProperty("CONTACT_ID") val contactId: ContactsId, @field:JsonProperty("NAME") val name: String, - @field:JsonProperty("EMAILS") val emails: EmailTableT?, + @field:JsonProperty("EMAILS") val emails: /* user-picked */ Email?, @field:JsonProperty("TAGS") val tags: TagVarrayT? -) : Tuple4 { +) : Tuple4 { override fun _1(): ContactsId = contactId override fun _2(): String = name - override fun _3(): EmailTableT? = emails + override fun _3(): /* user-picked */ Email? = emails override fun _4(): TagVarrayT? = tags @@ -38,6 +38,6 @@ data class ContactsRow( fun toUnsavedRow(contactId: Defaulted): ContactsRowUnsaved = ContactsRowUnsaved(name, emails, tags, contactId) companion object { - val _rowParser: RowParser = RowParsers.of(ContactsId.oracleType, OracleTypes.varchar2, EmailTableT.oracleType.nullable(), TagVarrayT.oracleType.nullable(), { t0, t1, t2, t3 -> ContactsRow(t0, t1, t2, t3) }, { row -> arrayOf(row.contactId, row.name, row.emails, row.tags) }) + val _rowParser: RowParser = RowParsers.of(ContactsId.oracleType, OracleTypes.varchar2, Email.oracleType.nullable(), TagVarrayT.oracleType.nullable(), { t0, t1, t2, t3 -> ContactsRow(t0, t1, t2, t3) }, { row -> arrayOf(row.contactId, row.name, row.emails, row.tags) }) } } \ No newline at end of file diff --git a/testers/oracle/kotlin/generated-and-checked-in/oracledb/contacts/ContactsRowUnsaved.kt b/testers/oracle/kotlin/generated-and-checked-in/oracledb/contacts/ContactsRowUnsaved.kt index 16ac23bc11..9e4f55ce6b 100644 --- a/testers/oracle/kotlin/generated-and-checked-in/oracledb/contacts/ContactsRowUnsaved.kt +++ b/testers/oracle/kotlin/generated-and-checked-in/oracledb/contacts/ContactsRowUnsaved.kt @@ -6,15 +6,15 @@ package oracledb.contacts import com.fasterxml.jackson.annotation.JsonProperty -import oracledb.EmailTableT import oracledb.TagVarrayT import oracledb.customtypes.Defaulted import oracledb.customtypes.Defaulted.UseDefault +import oracledb.userdefined.Email /** This class corresponds to a row in table `CONTACTS` which has not been persisted yet */ data class ContactsRowUnsaved( @field:JsonProperty("NAME") val name: String, - @field:JsonProperty("EMAILS") val emails: EmailTableT? = null, + @field:JsonProperty("EMAILS") val emails: /* user-picked */ Email? = null, @field:JsonProperty("TAGS") val tags: TagVarrayT? = null, /** Default: "TYPR"."ISEQ$$_72857".nextval */ @field:JsonProperty("CONTACT_ID") val contactId: Defaulted = UseDefault() diff --git a/testers/oracle/kotlin/generated-and-checked-in/oracledb/userdefined/Email.kt b/testers/oracle/kotlin/generated-and-checked-in/oracledb/userdefined/Email.kt new file mode 100644 index 0000000000..4b52970f64 --- /dev/null +++ b/testers/oracle/kotlin/generated-and-checked-in/oracledb/userdefined/Email.kt @@ -0,0 +1,33 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package oracledb.userdefined + +import com.fasterxml.jackson.annotation.JsonValue +import dev.typr.foundations.OracleType +import dev.typr.foundations.kotlin.Bijection +import dev.typr.foundations.kotlin.RowParser +import dev.typr.foundations.kotlin.RowParsers +import oracledb.EmailTableT + +/** Shared type `Email` + * Generated from TypeDefinitions matching + */ +data class Email(@field:JsonValue val value: EmailTableT) { + override fun toString(): kotlin.String { + return value.toString() + } + + companion object { + val _rowParser: RowParser = + RowParsers.of(oracledb.EmailTableT.oracleType.bimap(::Email, Email::value), { x -> x }, { id -> arrayOf(id) }) + + val bijection: Bijection = + Bijection.of(Email::value, ::Email) + + val oracleType: OracleType = + oracledb.EmailTableT.oracleType.bimap(::Email, Email::value) + } +} \ No newline at end of file diff --git a/testers/oracle/kotlin/src/kotlin/oracledb/contacts/ContactsTest.kt b/testers/oracle/kotlin/src/kotlin/oracledb/contacts/ContactsTest.kt index a0b31eaeac..0eccad16fe 100644 --- a/testers/oracle/kotlin/src/kotlin/oracledb/contacts/ContactsTest.kt +++ b/testers/oracle/kotlin/src/kotlin/oracledb/contacts/ContactsTest.kt @@ -4,6 +4,7 @@ import oracledb.EmailTableT import oracledb.OracleTestHelper import oracledb.TagVarrayT import oracledb.customtypes.Defaulted +import oracledb.userdefined.Email import org.junit.Assert.* import org.junit.Test @@ -13,7 +14,7 @@ class ContactsTest { @Test fun testInsertContactWithNestedTableAndVarray() { OracleTestHelper.run { c -> - val emails = EmailTableT(arrayOf("john@example.com", "john.doe@work.com", "jdoe@personal.net")) + val emails = Email(EmailTableT(arrayOf("john@example.com", "john.doe@work.com", "jdoe@personal.net"))) val tags = TagVarrayT(arrayOf("customer", "vip")) val unsaved = ContactsRowUnsaved( @@ -29,7 +30,7 @@ class ContactsTest { val inserted = repo.selectById(insertedId, c)!! assertEquals("John Doe", inserted.name) assertNotNull(inserted.emails) - assertEquals(3, inserted.emails!!.value.size) + assertEquals(3, inserted.emails!!.value.value.size) assertNotNull(inserted.tags) assertEquals(2, inserted.tags!!.value.size) } @@ -38,7 +39,7 @@ class ContactsTest { @Test fun testInsertContactWithOnlyEmails() { OracleTestHelper.run { c -> - val emails = EmailTableT(arrayOf("jane@example.com")) + val emails = Email(EmailTableT(arrayOf("jane@example.com"))) val unsaved = ContactsRowUnsaved( "Jane Smith", @@ -51,7 +52,7 @@ class ContactsTest { val inserted = repo.selectById(insertedId, c)!! assertNotNull(inserted.emails) - assertEquals(1, inserted.emails!!.value.size) + assertEquals(1, inserted.emails!!.value.value.size) assertNull(inserted.tags) } } @@ -98,7 +99,7 @@ class ContactsTest { @Test fun testUpdateContactEmails() { OracleTestHelper.run { c -> - val originalEmails = EmailTableT(arrayOf("old@example.com")) + val originalEmails = Email(EmailTableT(arrayOf("old@example.com"))) val tags = TagVarrayT(arrayOf("test")) val unsaved = ContactsRowUnsaved( @@ -111,23 +112,23 @@ class ContactsTest { val insertedId = repo.insert(unsaved, c) val inserted = repo.selectById(insertedId, c)!! - val newEmails = EmailTableT(arrayOf("new1@example.com", "new2@example.com")) + val newEmails = Email(EmailTableT(arrayOf("new1@example.com", "new2@example.com"))) val updated = inserted.copy(emails = newEmails) val wasUpdated = repo.update(updated, c) assertTrue(wasUpdated) val fetched = repo.selectById(insertedId, c)!! - assertEquals(2, fetched.emails!!.value.size) - assertTrue(fetched.emails!!.value.contains("new1@example.com")) - assertTrue(fetched.emails!!.value.contains("new2@example.com")) + assertEquals(2, fetched.emails!!.value.value.size) + assertTrue(fetched.emails!!.value.value.contains("new1@example.com")) + assertTrue(fetched.emails!!.value.value.contains("new2@example.com")) } } @Test fun testUpdateContactTags() { OracleTestHelper.run { c -> - val emails = EmailTableT(arrayOf("tags@example.com")) + val emails = Email(EmailTableT(arrayOf("tags@example.com"))) val originalTags = TagVarrayT(arrayOf("old", "tags")) val unsaved = ContactsRowUnsaved( @@ -155,7 +156,7 @@ class ContactsTest { @Test fun testDeleteContact() { OracleTestHelper.run { c -> - val emails = EmailTableT(arrayOf("delete@example.com")) + val emails = Email(EmailTableT(arrayOf("delete@example.com"))) val tags = TagVarrayT(arrayOf("delete")) val unsaved = ContactsRowUnsaved( @@ -178,8 +179,8 @@ class ContactsTest { @Test fun testSelectAllContacts() { OracleTestHelper.run { c -> - val emails1 = EmailTableT(arrayOf("contact1@example.com")) - val emails2 = EmailTableT(arrayOf("contact2@example.com")) + val emails1 = Email(EmailTableT(arrayOf("contact1@example.com"))) + val emails2 = Email(EmailTableT(arrayOf("contact2@example.com"))) repo.insert(ContactsRowUnsaved("Contact 1", emails1, null, Defaulted.UseDefault()), c) repo.insert(ContactsRowUnsaved("Contact 2", emails2, null, Defaulted.UseDefault()), c) @@ -193,7 +194,7 @@ class ContactsTest { fun testEmailTableRoundtrip() { OracleTestHelper.run { c -> val emailArray = arrayOf("email1@test.com", "email2@test.com", "email3@test.com", "email4@test.com", "email5@test.com") - val emails = EmailTableT(emailArray) + val emails = Email(EmailTableT(emailArray)) val unsaved = ContactsRowUnsaved( "Email Roundtrip Test", @@ -205,14 +206,14 @@ class ContactsTest { val insertedId = repo.insert(unsaved, c) val inserted = repo.selectById(insertedId, c)!! - assertArrayEquals(emailArray, inserted.emails!!.value) + assertArrayEquals(emailArray, inserted.emails!!.value.value) } } @Test fun testClearTags() { OracleTestHelper.run { c -> - val emails = EmailTableT(arrayOf("clear@example.com")) + val emails = Email(EmailTableT(arrayOf("clear@example.com"))) val originalTags = TagVarrayT(arrayOf("tag1", "tag2")) val unsaved = ContactsRowUnsaved( @@ -238,7 +239,7 @@ class ContactsTest { @Test fun testUpdateBothCollections() { OracleTestHelper.run { c -> - val originalEmails = EmailTableT(arrayOf("original@test.com")) + val originalEmails = Email(EmailTableT(arrayOf("original@test.com"))) val originalTags = TagVarrayT(arrayOf("original")) val unsaved = ContactsRowUnsaved( @@ -251,7 +252,7 @@ class ContactsTest { val insertedId = repo.insert(unsaved, c) val inserted = repo.selectById(insertedId, c)!! - val newEmails = EmailTableT(arrayOf("updated1@test.com", "updated2@test.com")) + val newEmails = Email(EmailTableT(arrayOf("updated1@test.com", "updated2@test.com"))) val newTags = TagVarrayT(arrayOf("updated1", "updated2", "updated3")) val updated = inserted.copy(emails = newEmails, tags = newTags) @@ -261,7 +262,7 @@ class ContactsTest { val fetched = repo.selectById(insertedId, c)!! assertNotNull(fetched.emails) assertNotNull(fetched.tags) - assertEquals(2, fetched.emails!!.value.size) + assertEquals(2, fetched.emails!!.value.value.size) assertEquals(3, fetched.tags!!.value.size) } } @@ -269,7 +270,7 @@ class ContactsTest { @Test fun testClearEmails() { OracleTestHelper.run { c -> - val emails = EmailTableT(arrayOf("clear@test.com")) + val emails = Email(EmailTableT(arrayOf("clear@test.com"))) val unsaved = ContactsRowUnsaved( "Clear Emails Test", emails, @@ -294,7 +295,7 @@ class ContactsTest { fun testNestedTableWithManyEmails() { OracleTestHelper.run { c -> val manyEmails = Array(20) { i -> "email$i@test.com" } - val emails = EmailTableT(manyEmails) + val emails = Email(EmailTableT(manyEmails)) val unsaved = ContactsRowUnsaved( "Many Emails Test", @@ -306,7 +307,7 @@ class ContactsTest { val insertedId = repo.insert(unsaved, c) val inserted = repo.selectById(insertedId, c)!! assertNotNull(inserted.emails) - assertEquals(20, inserted.emails!!.value.size) + assertEquals(20, inserted.emails!!.value.value.size) } } @@ -329,7 +330,7 @@ class ContactsTest { @Test fun testEmptyEmailArray() { OracleTestHelper.run { c -> - val emptyEmails = EmailTableT(arrayOf()) + val emptyEmails = Email(EmailTableT(arrayOf())) val unsaved = ContactsRowUnsaved( "Empty Emails Test", @@ -341,7 +342,7 @@ class ContactsTest { val insertedId = repo.insert(unsaved, c) val inserted = repo.selectById(insertedId, c)!! assertNotNull(inserted.emails) - assertEquals(0, inserted.emails!!.value.size) + assertEquals(0, inserted.emails!!.value.value.size) } } } diff --git a/testers/oracle/scala-new/generated-and-checked-in/oracledb/TestInsert.scala b/testers/oracle/scala-new/generated-and-checked-in/oracledb/TestInsert.scala index ba506c343b..f0502a94e2 100644 --- a/testers/oracle/scala-new/generated-and-checked-in/oracledb/TestInsert.scala +++ b/testers/oracle/scala-new/generated-and-checked-in/oracledb/TestInsert.scala @@ -57,6 +57,7 @@ import oracledb.precision_types_null.PrecisionTypesNullRowUnsaved import oracledb.products.ProductsId import oracledb.products.ProductsRepoImpl import oracledb.products.ProductsRowUnsaved +import oracledb.userdefined.Email import scala.util.Random /** Methods to generate random data for `Ident(TestInsert)` */ @@ -97,7 +98,7 @@ case class TestInsert(random: Random) { def Contacts( name: String = random.alphanumeric.take(20).mkString, - emails: Option[EmailTableT] = None, + emails: Option[/* user-picked */ Email] = None, tags: Option[TagVarrayT] = None, contactId: Defaulted[ContactsId] = new UseDefault() )(using c: Connection): ContactsId = { diff --git a/testers/oracle/scala-new/generated-and-checked-in/oracledb/contacts/ContactsFields.scala b/testers/oracle/scala-new/generated-and-checked-in/oracledb/contacts/ContactsFields.scala index a394e2ecbe..e9b209bb67 100644 --- a/testers/oracle/scala-new/generated-and-checked-in/oracledb/contacts/ContactsFields.scala +++ b/testers/oracle/scala-new/generated-and-checked-in/oracledb/contacts/ContactsFields.scala @@ -16,10 +16,10 @@ import dev.typr.foundations.scala.SqlExpr.Field import dev.typr.foundations.scala.SqlExpr.IdField import dev.typr.foundations.scala.SqlExpr.OptField import dev.typr.foundations.scala.TupleExpr4 -import oracledb.EmailTableT import oracledb.TagVarrayT +import oracledb.userdefined.Email -class ContactsFields(val `_path`: java.util.List[Path]) extends TupleExpr4[ContactsId, String, EmailTableT, TagVarrayT] with RelationStructure[ContactsFields, ContactsRow] with FieldsBase[ContactsRow] { +class ContactsFields(val `_path`: java.util.List[Path]) extends TupleExpr4[ContactsId, String, /* user-picked */ Email, TagVarrayT] with RelationStructure[ContactsFields, ContactsRow] with FieldsBase[ContactsRow] { def contactId: IdField[ContactsId, ContactsRow] = { new IdField[ContactsId, ContactsRow]( _path, @@ -44,15 +44,15 @@ class ContactsFields(val `_path`: java.util.List[Path]) extends TupleExpr4[Conta ) } - def emails: OptField[EmailTableT, ContactsRow] = { - new OptField[EmailTableT, ContactsRow]( + def emails: OptField[/* user-picked */ Email, ContactsRow] = { + new OptField[/* user-picked */ Email, ContactsRow]( _path, "EMAILS", _.emails, None, None, (row, value) => row.copy(emails = value), - EmailTableT.oracleType + Email.oracleType ) } @@ -78,7 +78,7 @@ class ContactsFields(val `_path`: java.util.List[Path]) extends TupleExpr4[Conta override def `_2`: SqlExpr[String] = name - override def `_3`: SqlExpr[EmailTableT] = emails + override def `_3`: SqlExpr[/* user-picked */ Email] = emails override def `_4`: SqlExpr[TagVarrayT] = tags } diff --git a/testers/oracle/scala-new/generated-and-checked-in/oracledb/contacts/ContactsRepoImpl.scala b/testers/oracle/scala-new/generated-and-checked-in/oracledb/contacts/ContactsRepoImpl.scala index 229b279e6c..6d59b72049 100644 --- a/testers/oracle/scala-new/generated-and-checked-in/oracledb/contacts/ContactsRepoImpl.scala +++ b/testers/oracle/scala-new/generated-and-checked-in/oracledb/contacts/ContactsRepoImpl.scala @@ -13,8 +13,8 @@ import dev.typr.foundations.scala.Fragment import dev.typr.foundations.scala.SelectBuilder import dev.typr.foundations.scala.UpdateBuilder import java.sql.Connection -import oracledb.EmailTableT import oracledb.TagVarrayT +import oracledb.userdefined.Email import scala.collection.mutable.ListBuffer import dev.typr.foundations.scala.Fragment.sql @@ -31,7 +31,7 @@ class ContactsRepoImpl extends ContactsRepo { override def insert(unsaved: ContactsRow)(using c: Connection): ContactsId = { sql"""insert into "CONTACTS"("CONTACT_ID", "NAME", "EMAILS", "TAGS") - values (${Fragment.encode(ContactsId.oracleType, unsaved.contactId)}, ${Fragment.encode(OracleTypes.varchar2, unsaved.name)}, ${Fragment.encode(EmailTableT.oracleType.nullable, unsaved.emails)}, ${Fragment.encode(TagVarrayT.oracleType.nullable, unsaved.tags)}) + values (${Fragment.encode(ContactsId.oracleType, unsaved.contactId)}, ${Fragment.encode(OracleTypes.varchar2, unsaved.name)}, ${Fragment.encode(Email.oracleType.nullable, unsaved.emails)}, ${Fragment.encode(TagVarrayT.oracleType.nullable, unsaved.tags)}) """ .updateReturningGeneratedKeys(Array[String]("CONTACT_ID"), ContactsId.`_rowParser`.exactlyOne()).runUnchecked(c) } @@ -42,7 +42,7 @@ class ContactsRepoImpl extends ContactsRepo { columns.addOne(Fragment.lit(""""NAME"""")): @scala.annotation.nowarn values.addOne(sql"${Fragment.encode(OracleTypes.varchar2, unsaved.name)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""EMAILS"""")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(EmailTableT.oracleType.nullable, unsaved.emails)}"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(Email.oracleType.nullable, unsaved.emails)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""TAGS"""")): @scala.annotation.nowarn values.addOne(sql"${Fragment.encode(TagVarrayT.oracleType.nullable, unsaved.tags)}"): @scala.annotation.nowarn unsaved.contactId.visit( @@ -89,19 +89,19 @@ class ContactsRepoImpl extends ContactsRepo { val contactId: ContactsId = row.contactId return sql"""update "CONTACTS" set "NAME" = ${Fragment.encode(OracleTypes.varchar2, row.name)}, - "EMAILS" = ${Fragment.encode(EmailTableT.oracleType.nullable, row.emails)}, + "EMAILS" = ${Fragment.encode(Email.oracleType.nullable, row.emails)}, "TAGS" = ${Fragment.encode(TagVarrayT.oracleType.nullable, row.tags)} where "CONTACT_ID" = ${Fragment.encode(ContactsId.oracleType, contactId)}""".update().runUnchecked(c) > 0 } override def upsert(unsaved: ContactsRow)(using c: Connection): Unit = { sql"""MERGE INTO "CONTACTS" t - USING (SELECT ${Fragment.encode(ContactsId.oracleType, unsaved.contactId)}, ${Fragment.encode(OracleTypes.varchar2, unsaved.name)}, ${Fragment.encode(EmailTableT.oracleType.nullable, unsaved.emails)}, ${Fragment.encode(TagVarrayT.oracleType.nullable, unsaved.tags)} FROM DUAL) s + USING (SELECT ${Fragment.encode(ContactsId.oracleType, unsaved.contactId)}, ${Fragment.encode(OracleTypes.varchar2, unsaved.name)}, ${Fragment.encode(Email.oracleType.nullable, unsaved.emails)}, ${Fragment.encode(TagVarrayT.oracleType.nullable, unsaved.tags)} FROM DUAL) s ON (t."CONTACT_ID" = s."CONTACT_ID") WHEN MATCHED THEN UPDATE SET t."NAME" = s."NAME", t."EMAILS" = s."EMAILS", t."TAGS" = s."TAGS" - WHEN NOT MATCHED THEN INSERT ("CONTACT_ID", "NAME", "EMAILS", "TAGS") VALUES (${Fragment.encode(ContactsId.oracleType, unsaved.contactId)}, ${Fragment.encode(OracleTypes.varchar2, unsaved.name)}, ${Fragment.encode(EmailTableT.oracleType.nullable, unsaved.emails)}, ${Fragment.encode(TagVarrayT.oracleType.nullable, unsaved.tags)})""" + WHEN NOT MATCHED THEN INSERT ("CONTACT_ID", "NAME", "EMAILS", "TAGS") VALUES (${Fragment.encode(ContactsId.oracleType, unsaved.contactId)}, ${Fragment.encode(OracleTypes.varchar2, unsaved.name)}, ${Fragment.encode(Email.oracleType.nullable, unsaved.emails)}, ${Fragment.encode(TagVarrayT.oracleType.nullable, unsaved.tags)})""" .update() .runUnchecked(c): @scala.annotation.nowarn } diff --git a/testers/oracle/scala-new/generated-and-checked-in/oracledb/contacts/ContactsRow.scala b/testers/oracle/scala-new/generated-and-checked-in/oracledb/contacts/ContactsRow.scala index 583b3093c8..5d3ec6d2fe 100644 --- a/testers/oracle/scala-new/generated-and-checked-in/oracledb/contacts/ContactsRow.scala +++ b/testers/oracle/scala-new/generated-and-checked-in/oracledb/contacts/ContactsRow.scala @@ -11,9 +11,9 @@ import dev.typr.foundations.Tuple.Tuple4 import dev.typr.foundations.scala.DbTypeOps import dev.typr.foundations.scala.RowParser import dev.typr.foundations.scala.RowParsers -import oracledb.EmailTableT import oracledb.TagVarrayT import oracledb.customtypes.Defaulted +import oracledb.userdefined.Email /** Table: CONTACTS * Primary key: CONTACT_ID @@ -22,9 +22,9 @@ case class ContactsRow( /** Default: "TYPR"."ISEQ$$_72857".nextval */ @JsonProperty("CONTACT_ID") contactId: ContactsId, @JsonProperty("NAME") name: String, - @JsonProperty("EMAILS") emails: Option[EmailTableT], + @JsonProperty("EMAILS") emails: Option[/* user-picked */ Email], @JsonProperty("TAGS") tags: Option[TagVarrayT] -) extends Tuple4[ContactsId, String, Option[EmailTableT], Option[TagVarrayT]] { +) extends Tuple4[ContactsId, String, Option[/* user-picked */ Email], Option[TagVarrayT]] { def id: ContactsId = contactId def toUnsavedRow(contactId: Defaulted[ContactsId]): ContactsRowUnsaved = { @@ -40,11 +40,11 @@ case class ContactsRow( override def `_2`: String = name - override def `_3`: Option[EmailTableT] = emails + override def `_3`: Option[/* user-picked */ Email] = emails override def `_4`: Option[TagVarrayT] = tags } object ContactsRow { - val `_rowParser`: RowParser[ContactsRow] = RowParsers.of(ContactsId.oracleType, OracleTypes.varchar2, EmailTableT.oracleType.nullable, TagVarrayT.oracleType.nullable)(ContactsRow.apply)(row => Array[Any](row.contactId, row.name, row.emails, row.tags)) + val `_rowParser`: RowParser[ContactsRow] = RowParsers.of(ContactsId.oracleType, OracleTypes.varchar2, Email.oracleType.nullable, TagVarrayT.oracleType.nullable)(ContactsRow.apply)(row => Array[Any](row.contactId, row.name, row.emails, row.tags)) } \ No newline at end of file diff --git a/testers/oracle/scala-new/generated-and-checked-in/oracledb/contacts/ContactsRowUnsaved.scala b/testers/oracle/scala-new/generated-and-checked-in/oracledb/contacts/ContactsRowUnsaved.scala index 0b8afa6642..64c1eeca1d 100644 --- a/testers/oracle/scala-new/generated-and-checked-in/oracledb/contacts/ContactsRowUnsaved.scala +++ b/testers/oracle/scala-new/generated-and-checked-in/oracledb/contacts/ContactsRowUnsaved.scala @@ -6,15 +6,15 @@ package oracledb.contacts import com.fasterxml.jackson.annotation.JsonProperty -import oracledb.EmailTableT import oracledb.TagVarrayT import oracledb.customtypes.Defaulted import oracledb.customtypes.Defaulted.UseDefault +import oracledb.userdefined.Email /** This class corresponds to a row in table `CONTACTS` which has not been persisted yet */ case class ContactsRowUnsaved( @JsonProperty("NAME") name: String, - @JsonProperty("EMAILS") emails: Option[EmailTableT] = None, + @JsonProperty("EMAILS") emails: Option[/* user-picked */ Email] = None, @JsonProperty("TAGS") tags: Option[TagVarrayT] = None, /** Default: "TYPR"."ISEQ$$_72857".nextval */ @JsonProperty("CONTACT_ID") contactId: Defaulted[ContactsId] = new UseDefault() diff --git a/testers/oracle/scala-new/generated-and-checked-in/oracledb/userdefined/Email.scala b/testers/oracle/scala-new/generated-and-checked-in/oracledb/userdefined/Email.scala new file mode 100644 index 0000000000..9c625c0f1f --- /dev/null +++ b/testers/oracle/scala-new/generated-and-checked-in/oracledb/userdefined/Email.scala @@ -0,0 +1,26 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package oracledb.userdefined + +import com.fasterxml.jackson.annotation.JsonValue +import dev.typr.foundations.OracleType +import dev.typr.foundations.scala.Bijection +import dev.typr.foundations.scala.RowParser +import dev.typr.foundations.scala.RowParsers +import oracledb.EmailTableT + +/** Shared type `Email` + * Generated from TypeDefinitions matching + */ +case class Email(@JsonValue value: EmailTableT) extends scala.AnyVal + +object Email { + given `_rowParser`: RowParser[Email] = RowParsers.of(oracledb.EmailTableT.oracleType.bimap(Email.apply, _.value))(x => x)(id => Array[Any](id)) + + given bijection: Bijection[Email, EmailTableT] = Bijection.apply[Email, EmailTableT](_.value)(Email.apply) + + given oracleType: OracleType[Email] = oracledb.EmailTableT.oracleType.bimap(Email.apply, _.value) +} \ No newline at end of file diff --git a/testers/oracle/scala-new/src/scala/oracledb/contacts/ContactsTest.scala b/testers/oracle/scala-new/src/scala/oracledb/contacts/ContactsTest.scala index 234c5b1d0e..dc60dfaed1 100644 --- a/testers/oracle/scala-new/src/scala/oracledb/contacts/ContactsTest.scala +++ b/testers/oracle/scala-new/src/scala/oracledb/contacts/ContactsTest.scala @@ -2,6 +2,7 @@ package oracledb.contacts import oracledb.{EmailTableT, TagVarrayT} import oracledb.customtypes.Defaulted +import oracledb.userdefined.Email import oracledb.withConnection import org.scalatest.funsuite.AnyFunSuite @@ -11,7 +12,7 @@ class ContactsTest extends AnyFunSuite { test("insert contact with nested table and varray") { withConnection { c => given java.sql.Connection = c - val emails = new EmailTableT(Array("john@example.com", "john.doe@work.com", "jdoe@personal.net")) + val emails = Email(new EmailTableT(Array("john@example.com", "john.doe@work.com", "jdoe@personal.net"))) val tags = new TagVarrayT(Array("customer", "vip")) val unsaved = new ContactsRowUnsaved( @@ -26,7 +27,7 @@ class ContactsTest extends AnyFunSuite { val inserted = repo.selectById(insertedId).get val _ = assert(inserted.name == "John Doe") val _ = assert(inserted.emails.isDefined) - val _ = assert(inserted.emails.get.value.sameElements(Array("john@example.com", "john.doe@work.com", "jdoe@personal.net"))) + val _ = assert(inserted.emails.get.value.value.sameElements(Array("john@example.com", "john.doe@work.com", "jdoe@personal.net"))) val _ = assert(inserted.tags.isDefined) val _ = assert(inserted.tags.get.value.sameElements(Array("customer", "vip"))) } @@ -35,7 +36,7 @@ class ContactsTest extends AnyFunSuite { test("insert contact with only emails") { withConnection { c => given java.sql.Connection = c - val emails = new EmailTableT(Array("jane@example.com")) + val emails = Email(new EmailTableT(Array("jane@example.com"))) val unsaved = new ContactsRowUnsaved( "Jane Smith", @@ -48,7 +49,7 @@ class ContactsTest extends AnyFunSuite { val inserted = repo.selectById(insertedId).get val _ = assert(inserted.emails.isDefined) - val _ = assert(inserted.emails.get.value.length == 1) + val _ = assert(inserted.emails.get.value.value.length == 1) val _ = assert(inserted.tags.isEmpty) } } @@ -102,7 +103,7 @@ class ContactsTest extends AnyFunSuite { "email4@test.com", "email5@test.com" ) - val emails = new EmailTableT(emailArray) + val emails = Email(new EmailTableT(emailArray)) val unsaved = new ContactsRowUnsaved( "Nested Table Test", @@ -116,14 +117,14 @@ class ContactsTest extends AnyFunSuite { val found = repo.selectById(insertedId) val _ = assert(found.isDefined) val _ = assert(found.get.emails.isDefined) - val _ = assert(found.get.emails.get.value.sameElements(emailArray)) + val _ = assert(found.get.emails.get.value.value.sameElements(emailArray)) } } test("update emails") { withConnection { c => given java.sql.Connection = c - val originalEmails = new EmailTableT(Array("old1@example.com", "old2@example.com")) + val originalEmails = Email(new EmailTableT(Array("old1@example.com", "old2@example.com"))) val unsaved = new ContactsRowUnsaved( "Update Emails Test", Some(originalEmails), @@ -134,14 +135,14 @@ class ContactsTest extends AnyFunSuite { val insertedId = repo.insert(unsaved) val inserted = repo.selectById(insertedId).get - val newEmails = new EmailTableT(Array("new1@example.com", "new2@example.com", "new3@example.com")) + val newEmails = Email(new EmailTableT(Array("new1@example.com", "new2@example.com", "new3@example.com"))) val updatedRow = inserted.copy(emails = Some(newEmails)) val wasUpdated = repo.update(updatedRow) val _ = assert(wasUpdated) val fetched = repo.selectById(insertedId).get val _ = assert(fetched.emails.isDefined) - val _ = assert(fetched.emails.get.value.sameElements(Array("new1@example.com", "new2@example.com", "new3@example.com"))) + val _ = assert(fetched.emails.get.value.value.sameElements(Array("new1@example.com", "new2@example.com", "new3@example.com"))) } } @@ -173,7 +174,7 @@ class ContactsTest extends AnyFunSuite { test("update both collections") { withConnection { c => given java.sql.Connection = c - val originalEmails = new EmailTableT(Array("original@test.com")) + val originalEmails = Email(new EmailTableT(Array("original@test.com"))) val originalTags = new TagVarrayT(Array("original")) val unsaved = new ContactsRowUnsaved( @@ -186,7 +187,7 @@ class ContactsTest extends AnyFunSuite { val insertedId = repo.insert(unsaved) val inserted = repo.selectById(insertedId).get - val newEmails = new EmailTableT(Array("updated1@test.com", "updated2@test.com")) + val newEmails = Email(new EmailTableT(Array("updated1@test.com", "updated2@test.com"))) val newTags = new TagVarrayT(Array("updated1", "updated2", "updated3")) val updatedRow = inserted.copy( @@ -199,7 +200,7 @@ class ContactsTest extends AnyFunSuite { val fetched = repo.selectById(insertedId).get val _ = assert(fetched.emails.isDefined) val _ = assert(fetched.tags.isDefined) - val _ = assert(fetched.emails.get.value.length == 2) + val _ = assert(fetched.emails.get.value.value.length == 2) val _ = assert(fetched.tags.get.value.length == 3) } } @@ -207,7 +208,7 @@ class ContactsTest extends AnyFunSuite { test("clear emails") { withConnection { c => given java.sql.Connection = c - val emails = new EmailTableT(Array("clear@test.com")) + val emails = Email(new EmailTableT(Array("clear@test.com"))) val unsaved = new ContactsRowUnsaved( "Clear Emails Test", Some(emails), @@ -232,7 +233,7 @@ class ContactsTest extends AnyFunSuite { withConnection { c => given java.sql.Connection = c val manyEmails = (0 until 20).map(i => s"email$i@test.com").toArray - val emails = new EmailTableT(manyEmails) + val emails = Email(new EmailTableT(manyEmails)) val unsaved = new ContactsRowUnsaved( "Many Emails Test", @@ -244,14 +245,14 @@ class ContactsTest extends AnyFunSuite { val insertedId = repo.insert(unsaved) val inserted = repo.selectById(insertedId).get val _ = assert(inserted.emails.isDefined) - val _ = assert(inserted.emails.get.value.length == 20) + val _ = assert(inserted.emails.get.value.value.length == 20) } } test("delete contact") { withConnection { c => given java.sql.Connection = c - val emails = new EmailTableT(Array("delete@test.com")) + val emails = Email(new EmailTableT(Array("delete@test.com"))) val tags = new TagVarrayT(Array("delete")) val unsaved = new ContactsRowUnsaved( @@ -274,8 +275,8 @@ class ContactsTest extends AnyFunSuite { test("select all") { withConnection { c => given java.sql.Connection = c - val emails1 = new EmailTableT(Array("contact1@test.com")) - val emails2 = new EmailTableT(Array("contact2@test.com")) + val emails1 = Email(new EmailTableT(Array("contact1@test.com"))) + val emails2 = Email(new EmailTableT(Array("contact2@test.com"))) val unsaved1 = new ContactsRowUnsaved( "Contact 1", @@ -316,7 +317,7 @@ class ContactsTest extends AnyFunSuite { test("empty email array") { withConnection { c => given java.sql.Connection = c - val emptyEmails = new EmailTableT(Array()) + val emptyEmails = Email(new EmailTableT(Array())) val unsaved = new ContactsRowUnsaved( "Empty Emails Test", @@ -328,7 +329,7 @@ class ContactsTest extends AnyFunSuite { val insertedId = repo.insert(unsaved) val inserted = repo.selectById(insertedId).get val _ = assert(inserted.emails.isDefined) - val _ = assert(inserted.emails.get.value.length == 0) + val _ = assert(inserted.emails.get.value.value.length == 0) } } } diff --git a/testers/oracle/scala/generated-and-checked-in/oracledb/TestInsert.scala b/testers/oracle/scala/generated-and-checked-in/oracledb/TestInsert.scala index fbc9692e53..01701e9664 100644 --- a/testers/oracle/scala/generated-and-checked-in/oracledb/TestInsert.scala +++ b/testers/oracle/scala/generated-and-checked-in/oracledb/TestInsert.scala @@ -60,6 +60,7 @@ import oracledb.precision_types_null.PrecisionTypesNullRowUnsaved import oracledb.products.ProductsId import oracledb.products.ProductsRepoImpl import oracledb.products.ProductsRowUnsaved +import oracledb.userdefined.Email /** Methods to generate random data for `Ident(TestInsert)` */ case class TestInsert(random: Random) { @@ -99,7 +100,7 @@ case class TestInsert(random: Random) { def Contacts( name: String = RandomHelper.alphanumeric(random, 20), - emails: Optional[EmailTableT] = Optional.empty(), + emails: Optional[/* user-picked */ Email] = Optional.empty(), tags: Optional[TagVarrayT] = Optional.empty(), contactId: Defaulted[ContactsId] = new UseDefault() )(using c: Connection): ContactsId = { diff --git a/testers/oracle/scala/generated-and-checked-in/oracledb/contacts/ContactsFields.scala b/testers/oracle/scala/generated-and-checked-in/oracledb/contacts/ContactsFields.scala index b753659e98..80ff60b92e 100644 --- a/testers/oracle/scala/generated-and-checked-in/oracledb/contacts/ContactsFields.scala +++ b/testers/oracle/scala/generated-and-checked-in/oracledb/contacts/ContactsFields.scala @@ -17,10 +17,10 @@ import dev.typr.foundations.dsl.SqlExpr.IdField import dev.typr.foundations.dsl.SqlExpr.OptField import dev.typr.foundations.dsl.TupleExpr.TupleExpr4 import java.util.Optional -import oracledb.EmailTableT import oracledb.TagVarrayT +import oracledb.userdefined.Email -class ContactsFields(val `_path`: java.util.List[Path]) extends TupleExpr4[ContactsId, String, EmailTableT, TagVarrayT] with RelationStructure[ContactsFields, ContactsRow] with FieldsBase[ContactsRow] { +class ContactsFields(val `_path`: java.util.List[Path]) extends TupleExpr4[ContactsId, String, /* user-picked */ Email, TagVarrayT] with RelationStructure[ContactsFields, ContactsRow] with FieldsBase[ContactsRow] { def contactId: IdField[ContactsId, ContactsRow] = { new IdField[ContactsId, ContactsRow]( _path, @@ -45,15 +45,15 @@ class ContactsFields(val `_path`: java.util.List[Path]) extends TupleExpr4[Conta ) } - def emails: OptField[EmailTableT, ContactsRow] = { - new OptField[EmailTableT, ContactsRow]( + def emails: OptField[/* user-picked */ Email, ContactsRow] = { + new OptField[/* user-picked */ Email, ContactsRow]( _path, "EMAILS", _.emails, Optional.empty(), Optional.empty(), (row, value) => row.copy(emails = value), - EmailTableT.oracleType + Email.oracleType ) } @@ -79,7 +79,7 @@ class ContactsFields(val `_path`: java.util.List[Path]) extends TupleExpr4[Conta override def `_2`: SqlExpr[String] = name - override def `_3`: SqlExpr[EmailTableT] = emails + override def `_3`: SqlExpr[/* user-picked */ Email] = emails override def `_4`: SqlExpr[TagVarrayT] = tags } diff --git a/testers/oracle/scala/generated-and-checked-in/oracledb/contacts/ContactsRepoImpl.scala b/testers/oracle/scala/generated-and-checked-in/oracledb/contacts/ContactsRepoImpl.scala index 1120339db6..0f3ac51505 100644 --- a/testers/oracle/scala/generated-and-checked-in/oracledb/contacts/ContactsRepoImpl.scala +++ b/testers/oracle/scala/generated-and-checked-in/oracledb/contacts/ContactsRepoImpl.scala @@ -15,8 +15,8 @@ import java.sql.Connection import java.util.ArrayList import java.util.HashMap import java.util.Optional -import oracledb.EmailTableT import oracledb.TagVarrayT +import oracledb.userdefined.Email import dev.typr.foundations.Fragment.interpolate class ContactsRepoImpl extends ContactsRepo { @@ -32,7 +32,7 @@ class ContactsRepoImpl extends ContactsRepo { override def insert(unsaved: ContactsRow)(using c: Connection): ContactsId = { interpolate(Fragment.lit("""insert into "CONTACTS"("CONTACT_ID", "NAME", "EMAILS", "TAGS") - values ("""), Fragment.encode(ContactsId.oracleType, unsaved.contactId), Fragment.lit(", "), Fragment.encode(OracleTypes.varchar2, unsaved.name), Fragment.lit(", "), Fragment.encode(EmailTableT.oracleType.opt(), unsaved.emails), Fragment.lit(", "), Fragment.encode(TagVarrayT.oracleType.opt(), unsaved.tags), Fragment.lit(""") + values ("""), Fragment.encode(ContactsId.oracleType, unsaved.contactId), Fragment.lit(", "), Fragment.encode(OracleTypes.varchar2, unsaved.name), Fragment.lit(", "), Fragment.encode(Email.oracleType.opt(), unsaved.emails), Fragment.lit(", "), Fragment.encode(TagVarrayT.oracleType.opt(), unsaved.tags), Fragment.lit(""") """)) .updateReturningGeneratedKeys(Array[String]("CONTACT_ID"), ContactsId.`_rowParser`.exactlyOne()).runUnchecked(c) } @@ -43,7 +43,7 @@ class ContactsRepoImpl extends ContactsRepo { columns.add(Fragment.lit(""""NAME"""")): @scala.annotation.nowarn values.add(interpolate(Fragment.encode(OracleTypes.varchar2, unsaved.name), Fragment.lit(""))): @scala.annotation.nowarn columns.add(Fragment.lit(""""EMAILS"""")): @scala.annotation.nowarn - values.add(interpolate(Fragment.encode(EmailTableT.oracleType.opt(), unsaved.emails), Fragment.lit(""))): @scala.annotation.nowarn + values.add(interpolate(Fragment.encode(Email.oracleType.opt(), unsaved.emails), Fragment.lit(""))): @scala.annotation.nowarn columns.add(Fragment.lit(""""TAGS"""")): @scala.annotation.nowarn values.add(interpolate(Fragment.encode(TagVarrayT.oracleType.opt(), unsaved.tags), Fragment.lit(""))): @scala.annotation.nowarn unsaved.contactId.visit( @@ -90,19 +90,19 @@ class ContactsRepoImpl extends ContactsRepo { val contactId: ContactsId = row.contactId return interpolate(Fragment.lit("""update "CONTACTS" set "NAME" = """), Fragment.encode(OracleTypes.varchar2, row.name), Fragment.lit(""", - "EMAILS" = """), Fragment.encode(EmailTableT.oracleType.opt(), row.emails), Fragment.lit(""", + "EMAILS" = """), Fragment.encode(Email.oracleType.opt(), row.emails), Fragment.lit(""", "TAGS" = """), Fragment.encode(TagVarrayT.oracleType.opt(), row.tags), Fragment.lit(""" where "CONTACT_ID" = """), Fragment.encode(ContactsId.oracleType, contactId), Fragment.lit("")).update().runUnchecked(c) > 0 } override def upsert(unsaved: ContactsRow)(using c: Connection): Unit = { interpolate(Fragment.lit("""MERGE INTO "CONTACTS" t - USING (SELECT """), Fragment.encode(ContactsId.oracleType, unsaved.contactId), Fragment.lit(", "), Fragment.encode(OracleTypes.varchar2, unsaved.name), Fragment.lit(", "), Fragment.encode(EmailTableT.oracleType.opt(), unsaved.emails), Fragment.lit(", "), Fragment.encode(TagVarrayT.oracleType.opt(), unsaved.tags), Fragment.lit(""" FROM DUAL) s + USING (SELECT """), Fragment.encode(ContactsId.oracleType, unsaved.contactId), Fragment.lit(", "), Fragment.encode(OracleTypes.varchar2, unsaved.name), Fragment.lit(", "), Fragment.encode(Email.oracleType.opt(), unsaved.emails), Fragment.lit(", "), Fragment.encode(TagVarrayT.oracleType.opt(), unsaved.tags), Fragment.lit(""" FROM DUAL) s ON (t."CONTACT_ID" = s."CONTACT_ID") WHEN MATCHED THEN UPDATE SET t."NAME" = s."NAME", t."EMAILS" = s."EMAILS", t."TAGS" = s."TAGS" - WHEN NOT MATCHED THEN INSERT ("CONTACT_ID", "NAME", "EMAILS", "TAGS") VALUES ("""), Fragment.encode(ContactsId.oracleType, unsaved.contactId), Fragment.lit(", "), Fragment.encode(OracleTypes.varchar2, unsaved.name), Fragment.lit(", "), Fragment.encode(EmailTableT.oracleType.opt(), unsaved.emails), Fragment.lit(", "), Fragment.encode(TagVarrayT.oracleType.opt(), unsaved.tags), Fragment.lit(")")) + WHEN NOT MATCHED THEN INSERT ("CONTACT_ID", "NAME", "EMAILS", "TAGS") VALUES ("""), Fragment.encode(ContactsId.oracleType, unsaved.contactId), Fragment.lit(", "), Fragment.encode(OracleTypes.varchar2, unsaved.name), Fragment.lit(", "), Fragment.encode(Email.oracleType.opt(), unsaved.emails), Fragment.lit(", "), Fragment.encode(TagVarrayT.oracleType.opt(), unsaved.tags), Fragment.lit(")")) .update() .runUnchecked(c): @scala.annotation.nowarn } diff --git a/testers/oracle/scala/generated-and-checked-in/oracledb/contacts/ContactsRow.scala b/testers/oracle/scala/generated-and-checked-in/oracledb/contacts/ContactsRow.scala index 9bb16bafad..86d5c670f2 100644 --- a/testers/oracle/scala/generated-and-checked-in/oracledb/contacts/ContactsRow.scala +++ b/testers/oracle/scala/generated-and-checked-in/oracledb/contacts/ContactsRow.scala @@ -11,9 +11,9 @@ import dev.typr.foundations.RowParser import dev.typr.foundations.RowParsers import dev.typr.foundations.Tuple.Tuple4 import java.util.Optional -import oracledb.EmailTableT import oracledb.TagVarrayT import oracledb.customtypes.Defaulted +import oracledb.userdefined.Email /** Table: CONTACTS * Primary key: CONTACT_ID @@ -22,9 +22,9 @@ case class ContactsRow( /** Default: "TYPR"."ISEQ$$_72857".nextval */ @JsonProperty("CONTACT_ID") contactId: ContactsId, @JsonProperty("NAME") name: String, - @JsonProperty("EMAILS") emails: Optional[EmailTableT], + @JsonProperty("EMAILS") emails: Optional[/* user-picked */ Email], @JsonProperty("TAGS") tags: Optional[TagVarrayT] -) extends Tuple4[ContactsId, String, Optional[EmailTableT], Optional[TagVarrayT]] { +) extends Tuple4[ContactsId, String, Optional[/* user-picked */ Email], Optional[TagVarrayT]] { def id: ContactsId = contactId def toUnsavedRow(contactId: Defaulted[ContactsId]): ContactsRowUnsaved = { @@ -40,11 +40,11 @@ case class ContactsRow( override def `_2`: String = name - override def `_3`: Optional[EmailTableT] = emails + override def `_3`: Optional[/* user-picked */ Email] = emails override def `_4`: Optional[TagVarrayT] = tags } object ContactsRow { - val `_rowParser`: RowParser[ContactsRow] = RowParsers.of(ContactsId.oracleType, OracleTypes.varchar2, EmailTableT.oracleType.opt(), TagVarrayT.oracleType.opt(), ContactsRow.apply, row => Array[Any](row.contactId, row.name, row.emails, row.tags)) + val `_rowParser`: RowParser[ContactsRow] = RowParsers.of(ContactsId.oracleType, OracleTypes.varchar2, Email.oracleType.opt(), TagVarrayT.oracleType.opt(), ContactsRow.apply, row => Array[Any](row.contactId, row.name, row.emails, row.tags)) } \ No newline at end of file diff --git a/testers/oracle/scala/generated-and-checked-in/oracledb/contacts/ContactsRowUnsaved.scala b/testers/oracle/scala/generated-and-checked-in/oracledb/contacts/ContactsRowUnsaved.scala index 596040d592..ec1ae182df 100644 --- a/testers/oracle/scala/generated-and-checked-in/oracledb/contacts/ContactsRowUnsaved.scala +++ b/testers/oracle/scala/generated-and-checked-in/oracledb/contacts/ContactsRowUnsaved.scala @@ -7,15 +7,15 @@ package oracledb.contacts import com.fasterxml.jackson.annotation.JsonProperty import java.util.Optional -import oracledb.EmailTableT import oracledb.TagVarrayT import oracledb.customtypes.Defaulted import oracledb.customtypes.Defaulted.UseDefault +import oracledb.userdefined.Email /** This class corresponds to a row in table `CONTACTS` which has not been persisted yet */ case class ContactsRowUnsaved( @JsonProperty("NAME") name: String, - @JsonProperty("EMAILS") emails: Optional[EmailTableT] = Optional.empty(), + @JsonProperty("EMAILS") emails: Optional[/* user-picked */ Email] = Optional.empty(), @JsonProperty("TAGS") tags: Optional[TagVarrayT] = Optional.empty(), /** Default: "TYPR"."ISEQ$$_72857".nextval */ @JsonProperty("CONTACT_ID") contactId: Defaulted[ContactsId] = new UseDefault() diff --git a/testers/oracle/scala/generated-and-checked-in/oracledb/userdefined/Email.scala b/testers/oracle/scala/generated-and-checked-in/oracledb/userdefined/Email.scala new file mode 100644 index 0000000000..518613fe8d --- /dev/null +++ b/testers/oracle/scala/generated-and-checked-in/oracledb/userdefined/Email.scala @@ -0,0 +1,26 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package oracledb.userdefined + +import com.fasterxml.jackson.annotation.JsonValue +import dev.typr.foundations.OracleType +import dev.typr.foundations.RowParser +import dev.typr.foundations.RowParsers +import dev.typr.foundations.dsl.Bijection +import oracledb.EmailTableT + +/** Shared type `Email` + * Generated from TypeDefinitions matching + */ +case class Email(@JsonValue value: EmailTableT) extends scala.AnyVal + +object Email { + given `_rowParser`: RowParser[Email] = RowParsers.of(oracledb.EmailTableT.oracleType.bimap(Email.apply, _.value), x => x, id => Array[Any](id)) + + given bijection: Bijection[Email, EmailTableT] = Bijection.apply[Email, EmailTableT](_.value)(Email.apply) + + given oracleType: OracleType[Email] = oracledb.EmailTableT.oracleType.bimap(Email.apply, _.value) +} \ No newline at end of file diff --git a/testers/oracle/scala/src/scala/oracledb/contacts/ContactsTest.scala b/testers/oracle/scala/src/scala/oracledb/contacts/ContactsTest.scala index 9adf34dbdc..d6beb38507 100644 --- a/testers/oracle/scala/src/scala/oracledb/contacts/ContactsTest.scala +++ b/testers/oracle/scala/src/scala/oracledb/contacts/ContactsTest.scala @@ -2,6 +2,7 @@ package oracledb.contacts import oracledb.{EmailTableT, TagVarrayT} import oracledb.customtypes.Defaulted +import oracledb.userdefined.Email import oracledb.withConnection import org.scalatest.funsuite.AnyFunSuite @@ -11,7 +12,7 @@ class ContactsTest extends AnyFunSuite { test("insert contact with nested table and varray") { withConnection { c => given java.sql.Connection = c - val emails = new EmailTableT(Array("john@example.com", "john.doe@work.com", "jdoe@personal.net")) + val emails = Email(new EmailTableT(Array("john@example.com", "john.doe@work.com", "jdoe@personal.net"))) val tags = new TagVarrayT(Array("customer", "vip")) val unsaved = new ContactsRowUnsaved( @@ -26,7 +27,7 @@ class ContactsTest extends AnyFunSuite { val inserted = repo.selectById(insertedId).orElseThrow() val _ = assert(inserted.name == "John Doe") val _ = assert(inserted.emails.isPresent()) - val _ = assert(inserted.emails.orElseThrow().value.sameElements(Array("john@example.com", "john.doe@work.com", "jdoe@personal.net"))) + val _ = assert(inserted.emails.orElseThrow().value.value.sameElements(Array("john@example.com", "john.doe@work.com", "jdoe@personal.net"))) val _ = assert(inserted.tags.isPresent()) val _ = assert(inserted.tags.orElseThrow().value.sameElements(Array("customer", "vip"))) } @@ -35,7 +36,7 @@ class ContactsTest extends AnyFunSuite { test("insert contact with only emails") { withConnection { c => given java.sql.Connection = c - val emails = new EmailTableT(Array("jane@example.com")) + val emails = Email(new EmailTableT(Array("jane@example.com"))) val unsaved = new ContactsRowUnsaved( "Jane Smith", @@ -48,7 +49,7 @@ class ContactsTest extends AnyFunSuite { val inserted = repo.selectById(insertedId).orElseThrow() val _ = assert(inserted.emails.isPresent()) - val _ = assert(inserted.emails.orElseThrow().value.length == 1) + val _ = assert(inserted.emails.orElseThrow().value.value.length == 1) val _ = assert(inserted.tags.isEmpty()) } } @@ -60,7 +61,7 @@ class ContactsTest extends AnyFunSuite { val unsaved = new ContactsRowUnsaved( "No Email Contact", - java.util.Optional.empty[EmailTableT](), + java.util.Optional.empty[Email](), java.util.Optional.of(tags), Defaulted.UseDefault[ContactsId]() ) @@ -78,7 +79,7 @@ class ContactsTest extends AnyFunSuite { given java.sql.Connection = c val unsaved = new ContactsRowUnsaved( "Minimal Contact", - java.util.Optional.empty[EmailTableT](), + java.util.Optional.empty[Email](), java.util.Optional.empty[TagVarrayT](), Defaulted.UseDefault[ContactsId]() ) @@ -102,7 +103,7 @@ class ContactsTest extends AnyFunSuite { "email4@test.com", "email5@test.com" ) - val emails = new EmailTableT(emailArray) + val emails = Email(new EmailTableT(emailArray)) val unsaved = new ContactsRowUnsaved( "Nested Table Test", @@ -116,14 +117,14 @@ class ContactsTest extends AnyFunSuite { val found = repo.selectById(insertedId) val _ = assert(found.isPresent()) val _ = assert(found.orElseThrow().emails.isPresent()) - val _ = assert(found.orElseThrow().emails.orElseThrow().value.sameElements(emailArray)) + val _ = assert(found.orElseThrow().emails.orElseThrow().value.value.sameElements(emailArray)) } } test("update emails") { withConnection { c => given java.sql.Connection = c - val originalEmails = new EmailTableT(Array("old1@example.com", "old2@example.com")) + val originalEmails = Email(new EmailTableT(Array("old1@example.com", "old2@example.com"))) val unsaved = new ContactsRowUnsaved( "Update Emails Test", java.util.Optional.of(originalEmails), @@ -134,14 +135,14 @@ class ContactsTest extends AnyFunSuite { val insertedId = repo.insert(unsaved) val inserted = repo.selectById(insertedId).orElseThrow() - val newEmails = new EmailTableT(Array("new1@example.com", "new2@example.com", "new3@example.com")) + val newEmails = Email(new EmailTableT(Array("new1@example.com", "new2@example.com", "new3@example.com"))) val updatedRow = inserted.copy(emails = java.util.Optional.of(newEmails)) val wasUpdated = repo.update(updatedRow) val _ = assert(wasUpdated) val fetched = repo.selectById(insertedId).orElseThrow() val _ = assert(fetched.emails.isPresent()) - val _ = assert(fetched.emails.orElseThrow().value.sameElements(Array("new1@example.com", "new2@example.com", "new3@example.com"))) + val _ = assert(fetched.emails.orElseThrow().value.value.sameElements(Array("new1@example.com", "new2@example.com", "new3@example.com"))) } } @@ -151,7 +152,7 @@ class ContactsTest extends AnyFunSuite { val originalTags = new TagVarrayT(Array("old")) val unsaved = new ContactsRowUnsaved( "Update Tags Test", - java.util.Optional.empty[EmailTableT](), + java.util.Optional.empty[Email](), java.util.Optional.of(originalTags), Defaulted.UseDefault[ContactsId]() ) @@ -173,7 +174,7 @@ class ContactsTest extends AnyFunSuite { test("update both collections") { withConnection { c => given java.sql.Connection = c - val originalEmails = new EmailTableT(Array("original@test.com")) + val originalEmails = Email(new EmailTableT(Array("original@test.com"))) val originalTags = new TagVarrayT(Array("original")) val unsaved = new ContactsRowUnsaved( @@ -186,7 +187,7 @@ class ContactsTest extends AnyFunSuite { val insertedId = repo.insert(unsaved) val inserted = repo.selectById(insertedId).orElseThrow() - val newEmails = new EmailTableT(Array("updated1@test.com", "updated2@test.com")) + val newEmails = Email(new EmailTableT(Array("updated1@test.com", "updated2@test.com"))) val newTags = new TagVarrayT(Array("updated1", "updated2", "updated3")) val updatedRow = inserted.copy( @@ -199,7 +200,7 @@ class ContactsTest extends AnyFunSuite { val fetched = repo.selectById(insertedId).orElseThrow() val _ = assert(fetched.emails.isPresent()) val _ = assert(fetched.tags.isPresent()) - val _ = assert(fetched.emails.orElseThrow().value.length == 2) + val _ = assert(fetched.emails.orElseThrow().value.value.length == 2) val _ = assert(fetched.tags.orElseThrow().value.length == 3) } } @@ -207,7 +208,7 @@ class ContactsTest extends AnyFunSuite { test("clear emails") { withConnection { c => given java.sql.Connection = c - val emails = new EmailTableT(Array("clear@test.com")) + val emails = Email(new EmailTableT(Array("clear@test.com"))) val unsaved = new ContactsRowUnsaved( "Clear Emails Test", java.util.Optional.of(emails), @@ -219,7 +220,7 @@ class ContactsTest extends AnyFunSuite { val inserted = repo.selectById(insertedId).orElseThrow() val _ = assert(inserted.emails.isPresent()) - val cleared = inserted.copy(emails = java.util.Optional.empty[EmailTableT]()) + val cleared = inserted.copy(emails = java.util.Optional.empty[Email]()) val wasUpdated = repo.update(cleared) val _ = assert(wasUpdated) @@ -232,7 +233,7 @@ class ContactsTest extends AnyFunSuite { withConnection { c => given java.sql.Connection = c val manyEmails = (0 until 20).map(i => s"email$i@test.com").toArray - val emails = new EmailTableT(manyEmails) + val emails = Email(new EmailTableT(manyEmails)) val unsaved = new ContactsRowUnsaved( "Many Emails Test", @@ -244,14 +245,14 @@ class ContactsTest extends AnyFunSuite { val insertedId = repo.insert(unsaved) val inserted = repo.selectById(insertedId).orElseThrow() val _ = assert(inserted.emails.isPresent()) - val _ = assert(inserted.emails.orElseThrow().value.length == 20) + val _ = assert(inserted.emails.orElseThrow().value.value.length == 20) } } test("delete contact") { withConnection { c => given java.sql.Connection = c - val emails = new EmailTableT(Array("delete@test.com")) + val emails = Email(new EmailTableT(Array("delete@test.com"))) val tags = new TagVarrayT(Array("delete")) val unsaved = new ContactsRowUnsaved( @@ -274,8 +275,8 @@ class ContactsTest extends AnyFunSuite { test("select all") { withConnection { c => given java.sql.Connection = c - val emails1 = new EmailTableT(Array("contact1@test.com")) - val emails2 = new EmailTableT(Array("contact2@test.com")) + val emails1 = Email(new EmailTableT(Array("contact1@test.com"))) + val emails2 = Email(new EmailTableT(Array("contact2@test.com"))) val unsaved1 = new ContactsRowUnsaved( "Contact 1", @@ -316,7 +317,7 @@ class ContactsTest extends AnyFunSuite { test("empty email array") { withConnection { c => given java.sql.Connection = c - val emptyEmails = new EmailTableT(Array()) + val emptyEmails = Email(new EmailTableT(Array())) val unsaved = new ContactsRowUnsaved( "Empty Emails Test", @@ -328,7 +329,7 @@ class ContactsTest extends AnyFunSuite { val insertedId = repo.insert(unsaved) val inserted = repo.selectById(insertedId).orElseThrow() val _ = assert(inserted.emails.isPresent()) - val _ = assert(inserted.emails.orElseThrow().value.length == 0) + val _ = assert(inserted.emails.orElseThrow().value.value.length == 0) } } } diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/TestInsert.java b/testers/pg/java/generated-and-checked-in/adventureworks/TestInsert.java index f9c97528fc..65979014cf 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/TestInsert.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/TestInsert.java @@ -125,6 +125,8 @@ import adventureworks.sales.salesterritory.SalesterritoryRow; import adventureworks.sales.salesterritory.SalesterritoryRowUnsaved; import adventureworks.userdefined.FirstName; +import adventureworks.userdefined.LastName; +import adventureworks.userdefined.MiddleName; import dev.typr.foundations.Inserter; import dev.typr.foundations.data.Inet; import dev.typr.foundations.data.Int2Vector; @@ -319,7 +321,7 @@ public Inserter personPassword( ; public Inserter personPerson( - BusinessentityId businessentityid, String persontype, /* user-picked */ FirstName firstname) { + BusinessentityId businessentityid, String persontype) { return Inserter.of( new PersonRowUnsaved( businessentityid, @@ -327,11 +329,11 @@ public Inserter personPerson( (random.nextBoolean() ? Optional.empty() : Optional.of(RandomHelper.alphanumeric(random, 8))), - firstname, + new FirstName(domainInsert.publicName(random)), (random.nextBoolean() ? Optional.empty() - : Optional.of(domainInsert.publicName(random))), - domainInsert.publicName(random), + : Optional.of(new MiddleName(domainInsert.publicName(random)))), + new LastName(domainInsert.publicName(random)), (random.nextBoolean() ? Optional.empty() : Optional.of(RandomHelper.alphanumeric(random, 10))), diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/department/DepartmentFields.java b/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/department/DepartmentFields.java index d6725be86e..6d35a3182f 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/department/DepartmentFields.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/department/DepartmentFields.java @@ -39,7 +39,7 @@ public IdField departmentid() { Optional.empty(), Optional.of("int4"), (row, value) -> row.withDepartmentid(value), - DepartmentId.dbType); + DepartmentId.pgType); } public Field name() { @@ -50,7 +50,7 @@ public Field name() { Optional.empty(), Optional.of("varchar"), (row, value) -> row.withName(value), - Name.dbType); + Name.pgType); } public Field groupname() { @@ -61,7 +61,7 @@ public Field groupname() { Optional.empty(), Optional.of("varchar"), (row, value) -> row.withGroupname(value), - Name.dbType); + Name.pgType); } public Field modifieddate() { diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/department/DepartmentId.java b/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/department/DepartmentId.java index c72df1c558..3834f7a2ff 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/department/DepartmentId.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/department/DepartmentId.java @@ -27,10 +27,10 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(DepartmentId::value, DepartmentId::new); - public static PgType dbType = + public static PgType pgType = PgTypes.int4.bimap(DepartmentId::new, DepartmentId::value); - public static PgType dbTypeArray = + public static PgType pgTypeArray = PgTypes.int4Array.bimap( xs -> arrayMap.map(xs, DepartmentId::new, DepartmentId.class), xs -> arrayMap.map(xs, DepartmentId::value, Integer.class)); diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRepoImpl.java b/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRepoImpl.java index 31b1add658..3a90eeeb5c 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRepoImpl.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRepoImpl.java @@ -35,7 +35,7 @@ public Boolean deleteById(DepartmentId departmentid, Connection c) { return interpolate( Fragment.lit( "delete from \"humanresources\".\"department\" where \"departmentid\" = "), - Fragment.encode(DepartmentId.dbType, departmentid), + Fragment.encode(DepartmentId.pgType, departmentid), Fragment.lit("")) .update() .runUnchecked(c) @@ -47,7 +47,7 @@ public Integer deleteByIds(DepartmentId[] departmentids, Connection c) { return interpolate( Fragment.lit( "delete\nfrom \"humanresources\".\"department\"\nwhere \"departmentid\" = ANY("), - Fragment.encode(DepartmentId.dbTypeArray, departmentids), + Fragment.encode(DepartmentId.pgTypeArray, departmentids), Fragment.lit(")")) .update() .runUnchecked(c); @@ -60,11 +60,11 @@ public DepartmentRow insert(DepartmentRow unsaved, Connection c) { "insert into \"humanresources\".\"department\"(\"departmentid\", \"name\"," + " \"groupname\", \"modifieddate\")\n" + "values ("), - Fragment.encode(DepartmentId.dbType, unsaved.departmentid()), + Fragment.encode(DepartmentId.pgType, unsaved.departmentid()), Fragment.lit("::int4, "), - Fragment.encode(Name.dbType, unsaved.name()), + Fragment.encode(Name.pgType, unsaved.name()), Fragment.lit("::varchar, "), - Fragment.encode(Name.dbType, unsaved.groupname()), + Fragment.encode(Name.pgType, unsaved.groupname()), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate()), Fragment.lit( @@ -82,10 +82,10 @@ public DepartmentRow insert(DepartmentRowUnsaved unsaved, Connection c) { ; columns.add(Fragment.lit("\"name\"")); values.add( - interpolate(Fragment.encode(Name.dbType, unsaved.name()), Fragment.lit("::varchar"))); + interpolate(Fragment.encode(Name.pgType, unsaved.name()), Fragment.lit("::varchar"))); columns.add(Fragment.lit("\"groupname\"")); values.add( - interpolate(Fragment.encode(Name.dbType, unsaved.groupname()), Fragment.lit("::varchar"))); + interpolate(Fragment.encode(Name.pgType, unsaved.groupname()), Fragment.lit("::varchar"))); unsaved .departmentid() .visit( @@ -93,7 +93,7 @@ public DepartmentRow insert(DepartmentRowUnsaved unsaved, Connection c) { value -> { columns.add(Fragment.lit("\"departmentid\"")); values.add( - interpolate(Fragment.encode(DepartmentId.dbType, value), Fragment.lit("::int4"))); + interpolate(Fragment.encode(DepartmentId.pgType, value), Fragment.lit("::int4"))); }); ; unsaved @@ -169,7 +169,7 @@ public Optional selectById(DepartmentId departmentid, Connection "select \"departmentid\", \"name\", \"groupname\", \"modifieddate\"\n" + "from \"humanresources\".\"department\"\n" + "where \"departmentid\" = "), - Fragment.encode(DepartmentId.dbType, departmentid), + Fragment.encode(DepartmentId.pgType, departmentid), Fragment.lit("")) .query(DepartmentRow._rowParser.first()) .runUnchecked(c); @@ -182,7 +182,7 @@ public List selectByIds(DepartmentId[] departmentids, Connection "select \"departmentid\", \"name\", \"groupname\", \"modifieddate\"\n" + "from \"humanresources\".\"department\"\n" + "where \"departmentid\" = ANY("), - Fragment.encode(DepartmentId.dbTypeArray, departmentids), + Fragment.encode(DepartmentId.pgTypeArray, departmentids), Fragment.lit(")")) .query(DepartmentRow._rowParser.all()) .runUnchecked(c); @@ -211,13 +211,13 @@ public Boolean update(DepartmentRow row, Connection c) { ; return interpolate( Fragment.lit("update \"humanresources\".\"department\"\nset \"name\" = "), - Fragment.encode(Name.dbType, row.name()), + Fragment.encode(Name.pgType, row.name()), Fragment.lit("::varchar,\n\"groupname\" = "), - Fragment.encode(Name.dbType, row.groupname()), + Fragment.encode(Name.pgType, row.groupname()), Fragment.lit("::varchar,\n\"modifieddate\" = "), Fragment.encode(PgTypes.timestamp, row.modifieddate()), Fragment.lit("::timestamp\nwhere \"departmentid\" = "), - Fragment.encode(DepartmentId.dbType, departmentid), + Fragment.encode(DepartmentId.pgType, departmentid), Fragment.lit("")) .update() .runUnchecked(c) @@ -231,11 +231,11 @@ public DepartmentRow upsert(DepartmentRow unsaved, Connection c) { "insert into \"humanresources\".\"department\"(\"departmentid\", \"name\"," + " \"groupname\", \"modifieddate\")\n" + "values ("), - Fragment.encode(DepartmentId.dbType, unsaved.departmentid()), + Fragment.encode(DepartmentId.pgType, unsaved.departmentid()), Fragment.lit("::int4, "), - Fragment.encode(Name.dbType, unsaved.name()), + Fragment.encode(Name.pgType, unsaved.name()), Fragment.lit("::varchar, "), - Fragment.encode(Name.dbType, unsaved.groupname()), + Fragment.encode(Name.pgType, unsaved.groupname()), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate()), Fragment.lit( diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRow.java b/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRow.java index 46fcc30b75..3059d1c353 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRow.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRow.java @@ -60,9 +60,9 @@ public DepartmentRow withModifieddate(LocalDateTime modifieddate) { public static RowParser _rowParser = RowParsers.of( - DepartmentId.dbType, - Name.dbType, - Name.dbType, + DepartmentId.pgType, + Name.pgType, + Name.pgType, PgTypes.timestamp, DepartmentRow::new, row -> diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRowUnsaved.java b/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRowUnsaved.java index a7942035a9..f44d5c401c 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRowUnsaved.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRowUnsaved.java @@ -67,11 +67,11 @@ public DepartmentRowUnsaved withModifieddate(Defaulted modifiedda public static PgText pgText = PgText.instance( (row, sb) -> { - Name.dbType.text().unsafeEncode(row.name, sb); + Name.pgType.text().unsafeEncode(row.name, sb); sb.append(PgText.DELIMETER); - Name.dbType.text().unsafeEncode(row.groupname, sb); + Name.pgType.text().unsafeEncode(row.groupname, sb); sb.append(PgText.DELIMETER); - Defaulted.pgText(DepartmentId.dbType.text()).unsafeEncode(row.departmentid, sb); + Defaulted.pgText(DepartmentId.pgType.text()).unsafeEncode(row.departmentid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(PgTypes.timestamp.text()).unsafeEncode(row.modifieddate, sb); }); diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeFields.java b/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeFields.java index 3165bd8c78..49a9bd5113 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeFields.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeFields.java @@ -8,7 +8,8 @@ import adventureworks.person.businessentity.BusinessentityId; import adventureworks.person.person.PersonFields; import adventureworks.person.person.PersonRow; -import adventureworks.public_.Flag; +import adventureworks.userdefined.CurrentFlag; +import adventureworks.userdefined.SalariedFlag; import dev.typr.foundations.PgTypes; import dev.typr.foundations.RowParser; import dev.typr.foundations.dsl.FieldsBase; @@ -36,11 +37,11 @@ public class EmployeeFields LocalDate, String, String, - LocalDate, - Flag, - Short, + LocalDate, /* user-picked */ + SalariedFlag, Short, - Flag, + Short, /* user-picked */ + CurrentFlag, UUID, LocalDateTime, String> @@ -61,7 +62,7 @@ public IdField businessentityid() { Optional.empty(), Optional.of("int4"), (row, value) -> row.withBusinessentityid(value), - BusinessentityId.dbType); + BusinessentityId.pgType); } public Field nationalidnumber() { @@ -141,15 +142,15 @@ public Field hiredate() { PgTypes.date); } - public Field salariedflag() { - return new Field( + public Field salariedflag() { + return new Field( _path, "salariedflag", EmployeeRow::salariedflag, Optional.empty(), Optional.of("bool"), (row, value) -> row.withSalariedflag(value), - Flag.dbType); + SalariedFlag.pgType); } public Field vacationhours() { @@ -174,15 +175,15 @@ public Field sickleavehours() { PgTypes.int2); } - public Field currentflag() { - return new Field( + public Field currentflag() { + return new Field( _path, "currentflag", EmployeeRow::currentflag, Optional.empty(), Optional.of("bool"), (row, value) -> row.withCurrentflag(value), - Flag.dbType); + CurrentFlag.pgType); } public Field rowguid() { @@ -300,7 +301,7 @@ public SqlExpr _8() { } @Override - public SqlExpr _9() { + public SqlExpr _9() { return salariedflag(); } @@ -315,7 +316,7 @@ public SqlExpr _11() { } @Override - public SqlExpr _12() { + public SqlExpr _12() { return currentflag(); } diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRepoImpl.java b/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRepoImpl.java index bb0aae49e1..807b0da23b 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRepoImpl.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRepoImpl.java @@ -8,7 +8,8 @@ import static dev.typr.foundations.Fragment.interpolate; import adventureworks.person.businessentity.BusinessentityId; -import adventureworks.public_.Flag; +import adventureworks.userdefined.CurrentFlag; +import adventureworks.userdefined.SalariedFlag; import dev.typr.foundations.Fragment; import dev.typr.foundations.PgTypes; import dev.typr.foundations.dsl.DeleteBuilder; @@ -36,7 +37,7 @@ public Boolean deleteById(BusinessentityId businessentityid, Connection c) { return interpolate( Fragment.lit( "delete from \"humanresources\".\"employee\" where \"businessentityid\" = "), - Fragment.encode(BusinessentityId.dbType, businessentityid), + Fragment.encode(BusinessentityId.pgType, businessentityid), Fragment.lit("")) .update() .runUnchecked(c) @@ -48,7 +49,7 @@ public Integer deleteByIds(BusinessentityId[] businessentityids, Connection c) { return interpolate( Fragment.lit( "delete\nfrom \"humanresources\".\"employee\"\nwhere \"businessentityid\" = ANY("), - Fragment.encode(BusinessentityId.dbTypeArray, businessentityids), + Fragment.encode(BusinessentityId.pgTypeArray, businessentityids), Fragment.lit(")")) .update() .runUnchecked(c); @@ -64,7 +65,7 @@ public EmployeeRow insert(EmployeeRow unsaved, Connection c) { + " \"vacationhours\", \"sickleavehours\", \"currentflag\", \"rowguid\"," + " \"modifieddate\", \"organizationnode\")\n" + "values ("), - Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid()), + Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid()), Fragment.lit("::int4, "), Fragment.encode(PgTypes.text, unsaved.nationalidnumber()), Fragment.lit(", "), @@ -80,13 +81,13 @@ public EmployeeRow insert(EmployeeRow unsaved, Connection c) { Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.date, unsaved.hiredate()), Fragment.lit("::date, "), - Fragment.encode(Flag.dbType, unsaved.salariedflag()), + Fragment.encode(SalariedFlag.pgType, unsaved.salariedflag()), Fragment.lit("::bool, "), Fragment.encode(PgTypes.int2, unsaved.vacationhours()), Fragment.lit("::int2, "), Fragment.encode(PgTypes.int2, unsaved.sickleavehours()), Fragment.lit("::int2, "), - Fragment.encode(Flag.dbType, unsaved.currentflag()), + Fragment.encode(CurrentFlag.pgType, unsaved.currentflag()), Fragment.lit("::bool, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid()), Fragment.lit("::uuid, "), @@ -112,7 +113,7 @@ public EmployeeRow insert(EmployeeRowUnsaved unsaved, Connection c) { columns.add(Fragment.lit("\"businessentityid\"")); values.add( interpolate( - Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid()), + Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid()), Fragment.lit("::int4"))); columns.add(Fragment.lit("\"nationalidnumber\"")); values.add( @@ -140,7 +141,8 @@ public EmployeeRow insert(EmployeeRowUnsaved unsaved, Connection c) { () -> {}, value -> { columns.add(Fragment.lit("\"salariedflag\"")); - values.add(interpolate(Fragment.encode(Flag.dbType, value), Fragment.lit("::bool"))); + values.add( + interpolate(Fragment.encode(SalariedFlag.pgType, value), Fragment.lit("::bool"))); }); ; unsaved @@ -167,7 +169,8 @@ public EmployeeRow insert(EmployeeRowUnsaved unsaved, Connection c) { () -> {}, value -> { columns.add(Fragment.lit("\"currentflag\"")); - values.add(interpolate(Fragment.encode(Flag.dbType, value), Fragment.lit("::bool"))); + values.add( + interpolate(Fragment.encode(CurrentFlag.pgType, value), Fragment.lit("::bool"))); }); ; unsaved @@ -276,7 +279,7 @@ public Optional selectById(BusinessentityId businessentityid, Conne + " \"rowguid\", \"modifieddate\", \"organizationnode\"\n" + "from \"humanresources\".\"employee\"\n" + "where \"businessentityid\" = "), - Fragment.encode(BusinessentityId.dbType, businessentityid), + Fragment.encode(BusinessentityId.pgType, businessentityid), Fragment.lit("")) .query(EmployeeRow._rowParser.first()) .runUnchecked(c); @@ -292,7 +295,7 @@ public List selectByIds(BusinessentityId[] businessentityids, Conne + " \"rowguid\", \"modifieddate\", \"organizationnode\"\n" + "from \"humanresources\".\"employee\"\n" + "where \"businessentityid\" = ANY("), - Fragment.encode(BusinessentityId.dbTypeArray, businessentityids), + Fragment.encode(BusinessentityId.pgTypeArray, businessentityids), Fragment.lit(")")) .query(EmployeeRow._rowParser.all()) .runUnchecked(c); @@ -335,13 +338,13 @@ public Boolean update(EmployeeRow row, Connection c) { Fragment.lit("::bpchar,\n\"hiredate\" = "), Fragment.encode(PgTypes.date, row.hiredate()), Fragment.lit("::date,\n\"salariedflag\" = "), - Fragment.encode(Flag.dbType, row.salariedflag()), + Fragment.encode(SalariedFlag.pgType, row.salariedflag()), Fragment.lit("::bool,\n\"vacationhours\" = "), Fragment.encode(PgTypes.int2, row.vacationhours()), Fragment.lit("::int2,\n\"sickleavehours\" = "), Fragment.encode(PgTypes.int2, row.sickleavehours()), Fragment.lit("::int2,\n\"currentflag\" = "), - Fragment.encode(Flag.dbType, row.currentflag()), + Fragment.encode(CurrentFlag.pgType, row.currentflag()), Fragment.lit("::bool,\n\"rowguid\" = "), Fragment.encode(PgTypes.uuid, row.rowguid()), Fragment.lit("::uuid,\n\"modifieddate\" = "), @@ -349,7 +352,7 @@ public Boolean update(EmployeeRow row, Connection c) { Fragment.lit("::timestamp,\n\"organizationnode\" = "), Fragment.encode(PgTypes.text.opt(), row.organizationnode()), Fragment.lit("\nwhere \"businessentityid\" = "), - Fragment.encode(BusinessentityId.dbType, businessentityid), + Fragment.encode(BusinessentityId.pgType, businessentityid), Fragment.lit("")) .update() .runUnchecked(c) @@ -366,7 +369,7 @@ public EmployeeRow upsert(EmployeeRow unsaved, Connection c) { + " \"vacationhours\", \"sickleavehours\", \"currentflag\", \"rowguid\"," + " \"modifieddate\", \"organizationnode\")\n" + "values ("), - Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid()), + Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid()), Fragment.lit("::int4, "), Fragment.encode(PgTypes.text, unsaved.nationalidnumber()), Fragment.lit(", "), @@ -382,13 +385,13 @@ public EmployeeRow upsert(EmployeeRow unsaved, Connection c) { Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.date, unsaved.hiredate()), Fragment.lit("::date, "), - Fragment.encode(Flag.dbType, unsaved.salariedflag()), + Fragment.encode(SalariedFlag.pgType, unsaved.salariedflag()), Fragment.lit("::bool, "), Fragment.encode(PgTypes.int2, unsaved.vacationhours()), Fragment.lit("::int2, "), Fragment.encode(PgTypes.int2, unsaved.sickleavehours()), Fragment.lit("::int2, "), - Fragment.encode(Flag.dbType, unsaved.currentflag()), + Fragment.encode(CurrentFlag.pgType, unsaved.currentflag()), Fragment.lit("::bool, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid()), Fragment.lit("::uuid, "), diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRow.java b/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRow.java index adbf50a4ff..6bde94e2a8 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRow.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRow.java @@ -7,7 +7,8 @@ import adventureworks.customtypes.Defaulted; import adventureworks.person.businessentity.BusinessentityId; -import adventureworks.public_.Flag; +import adventureworks.userdefined.CurrentFlag; +import adventureworks.userdefined.SalariedFlag; import dev.typr.foundations.PgText; import dev.typr.foundations.PgTypes; import dev.typr.foundations.RowParser; @@ -58,7 +59,7 @@ public record EmployeeRow( * Job classification. 0 = Hourly, not exempt from collective bargaining. 1 = Salaried, exempt * from collective bargaining. Default: true */ - Flag salariedflag, + /* user-picked */ SalariedFlag salariedflag, /** * Number of available vacation hours. Default: 0 Constraint CK_Employee_VacationHours affecting * columns vacationhours: (((vacationhours >= '-40'::integer) AND (vacationhours <= 240))) @@ -70,7 +71,7 @@ public record EmployeeRow( */ Short sickleavehours, /** 0 = Inactive, 1 = Active Default: true */ - Flag currentflag, + /* user-picked */ CurrentFlag currentflag, /** Default: uuid_generate_v1() */ UUID rowguid, /** Default: now() */ @@ -85,11 +86,11 @@ public record EmployeeRow( LocalDate, String, String, - LocalDate, - Flag, - Short, + LocalDate, /* user-picked */ + SalariedFlag, Short, - Flag, + Short, /* user-picked */ + CurrentFlag, UUID, LocalDateTime, Optional> { @@ -280,7 +281,7 @@ public EmployeeRow withHiredate(LocalDate hiredate) { * Job classification. 0 = Hourly, not exempt from collective bargaining. 1 = Salaried, exempt * from collective bargaining. Default: true */ - public EmployeeRow withSalariedflag(Flag salariedflag) { + public EmployeeRow withSalariedflag(/* user-picked */ SalariedFlag salariedflag) { return new EmployeeRow( businessentityid, nationalidnumber, @@ -349,7 +350,7 @@ public EmployeeRow withSickleavehours(Short sickleavehours) { ; /** 0 = Inactive, 1 = Active Default: true */ - public EmployeeRow withCurrentflag(Flag currentflag) { + public EmployeeRow withCurrentflag(/* user-picked */ CurrentFlag currentflag) { return new EmployeeRow( businessentityid, nationalidnumber, @@ -434,7 +435,7 @@ public EmployeeRow withOrganizationnode(Optional organizationnode) { public static RowParser _rowParser = RowParsers.of( - BusinessentityId.dbType, + BusinessentityId.pgType, PgTypes.text, PgTypes.text, PgTypes.text, @@ -442,10 +443,10 @@ public EmployeeRow withOrganizationnode(Optional organizationnode) { PgTypes.bpchar, PgTypes.bpchar, PgTypes.date, - Flag.dbType, + SalariedFlag.pgType, PgTypes.int2, PgTypes.int2, - Flag.dbType, + CurrentFlag.pgType, PgTypes.uuid, PgTypes.timestamp, PgTypes.text.opt(), @@ -491,7 +492,7 @@ public Short _11() { ; @Override - public Flag _12() { + public /* user-picked */ CurrentFlag _12() { return currentflag; } ; @@ -557,7 +558,7 @@ public LocalDate _8() { ; @Override - public Flag _9() { + public /* user-picked */ SalariedFlag _9() { return salariedflag; } ; @@ -568,10 +569,10 @@ public BusinessentityId id() { ; public EmployeeRowUnsaved toUnsavedRow( - Defaulted salariedflag, + Defaulted salariedflag, Defaulted vacationhours, Defaulted sickleavehours, - Defaulted currentflag, + Defaulted currentflag, Defaulted rowguid, Defaulted modifieddate, Defaulted> organizationnode) { diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRowUnsaved.java b/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRowUnsaved.java index 4e1b34511e..b8cc474c89 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRowUnsaved.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRowUnsaved.java @@ -8,7 +8,8 @@ import adventureworks.customtypes.Defaulted; import adventureworks.customtypes.Defaulted.UseDefault; import adventureworks.person.businessentity.BusinessentityId; -import adventureworks.public_.Flag; +import adventureworks.userdefined.CurrentFlag; +import adventureworks.userdefined.SalariedFlag; import dev.typr.foundations.PgText; import dev.typr.foundations.PgTypes; import java.time.LocalDate; @@ -56,7 +57,7 @@ public record EmployeeRowUnsaved( * Default: true Job classification. 0 = Hourly, not exempt from collective bargaining. 1 = * Salaried, exempt from collective bargaining. */ - Defaulted salariedflag, + Defaulted salariedflag, /** * Default: 0 Number of available vacation hours. Constraint CK_Employee_VacationHours affecting * columns vacationhours: (((vacationhours >= '-40'::integer) AND (vacationhours <= 240))) @@ -68,7 +69,7 @@ public record EmployeeRowUnsaved( */ Defaulted sickleavehours, /** Default: true 0 = Inactive, 1 = Active */ - Defaulted currentflag, + Defaulted currentflag, /** Default: uuid_generate_v1() */ Defaulted rowguid, /** Default: now() */ @@ -313,7 +314,8 @@ public EmployeeRowUnsaved withHiredate(LocalDate hiredate) { * Default: true Job classification. 0 = Hourly, not exempt from collective bargaining. 1 = * Salaried, exempt from collective bargaining. */ - public EmployeeRowUnsaved withSalariedflag(Defaulted salariedflag) { + public EmployeeRowUnsaved withSalariedflag( + Defaulted salariedflag) { return new EmployeeRowUnsaved( businessentityid, nationalidnumber, @@ -382,7 +384,7 @@ public EmployeeRowUnsaved withSickleavehours(Defaulted sickleavehours) { ; /** Default: true 0 = Inactive, 1 = Active */ - public EmployeeRowUnsaved withCurrentflag(Defaulted currentflag) { + public EmployeeRowUnsaved withCurrentflag(Defaulted currentflag) { return new EmployeeRowUnsaved( businessentityid, nationalidnumber, @@ -468,7 +470,7 @@ public EmployeeRowUnsaved withOrganizationnode(Defaulted> organ public static PgText pgText = PgText.instance( (row, sb) -> { - BusinessentityId.dbType.text().unsafeEncode(row.businessentityid, sb); + BusinessentityId.pgType.text().unsafeEncode(row.businessentityid, sb); sb.append(PgText.DELIMETER); PgTypes.text.text().unsafeEncode(row.nationalidnumber, sb); sb.append(PgText.DELIMETER); @@ -484,13 +486,13 @@ public EmployeeRowUnsaved withOrganizationnode(Defaulted> organ sb.append(PgText.DELIMETER); PgTypes.date.text().unsafeEncode(row.hiredate, sb); sb.append(PgText.DELIMETER); - Defaulted.pgText(Flag.dbType.text()).unsafeEncode(row.salariedflag, sb); + Defaulted.pgText(SalariedFlag.pgType.text()).unsafeEncode(row.salariedflag, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(PgTypes.int2.text()).unsafeEncode(row.vacationhours, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(PgTypes.int2.text()).unsafeEncode(row.sickleavehours, sb); sb.append(PgText.DELIMETER); - Defaulted.pgText(Flag.dbType.text()).unsafeEncode(row.currentflag, sb); + Defaulted.pgText(CurrentFlag.pgType.text()).unsafeEncode(row.currentflag, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(PgTypes.uuid.text()).unsafeEncode(row.rowguid, sb); sb.append(PgText.DELIMETER); @@ -500,10 +502,10 @@ public EmployeeRowUnsaved withOrganizationnode(Defaulted> organ }); public EmployeeRow toRow( - java.util.function.Supplier salariedflagDefault, + java.util.function.Supplier salariedflagDefault, java.util.function.Supplier vacationhoursDefault, java.util.function.Supplier sickleavehoursDefault, - java.util.function.Supplier currentflagDefault, + java.util.function.Supplier currentflagDefault, java.util.function.Supplier rowguidDefault, java.util.function.Supplier modifieddateDefault, java.util.function.Supplier> organizationnodeDefault) { diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryFields.java b/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryFields.java index 7c599fe28b..7b376c8bb3 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryFields.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryFields.java @@ -53,7 +53,7 @@ public IdField businessentityid( Optional.empty(), Optional.of("int4"), (row, value) -> row.withBusinessentityid(value), - BusinessentityId.dbType); + BusinessentityId.pgType); } public IdField departmentid() { @@ -64,7 +64,7 @@ public IdField departmentid() { Optional.empty(), Optional.of("int2"), (row, value) -> row.withDepartmentid(value), - DepartmentId.dbType); + DepartmentId.pgType); } public IdField shiftid() { @@ -75,7 +75,7 @@ public IdField shiftid() { Optional.empty(), Optional.of("int2"), (row, value) -> row.withShiftid(value), - ShiftId.dbType); + ShiftId.pgType); } public IdField startdate() { diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryId.java b/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryId.java index 7ba3b3a92d..19c9fa007e 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryId.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryId.java @@ -43,10 +43,10 @@ public EmployeedepartmenthistoryId withShiftid(ShiftId shiftid) { public static RowParser _rowParser = RowParsers.of( - BusinessentityId.dbType, + BusinessentityId.pgType, PgTypes.date, - DepartmentId.dbType, - ShiftId.dbType, + DepartmentId.pgType, + ShiftId.pgType, EmployeedepartmenthistoryId::new, row -> new Object[] { diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRepoImpl.java b/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRepoImpl.java index 8afd2a23fb..d7b199a03b 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRepoImpl.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRepoImpl.java @@ -42,13 +42,13 @@ public Boolean deleteById(EmployeedepartmenthistoryId compositeId, Connection c) Fragment.lit( "delete from \"humanresources\".\"employeedepartmenthistory\" where" + " \"businessentityid\" = "), - Fragment.encode(BusinessentityId.dbType, compositeId.businessentityid()), + Fragment.encode(BusinessentityId.pgType, compositeId.businessentityid()), Fragment.lit(" AND \"startdate\" = "), Fragment.encode(PgTypes.date, compositeId.startdate()), Fragment.lit(" AND \"departmentid\" = "), - Fragment.encode(DepartmentId.dbType, compositeId.departmentid()), + Fragment.encode(DepartmentId.pgType, compositeId.departmentid()), Fragment.lit(" AND \"shiftid\" = "), - Fragment.encode(ShiftId.dbType, compositeId.shiftid()), + Fragment.encode(ShiftId.pgType, compositeId.shiftid()), Fragment.lit("")) .update() .runUnchecked(c) @@ -76,13 +76,13 @@ public Integer deleteByIds(EmployeedepartmenthistoryId[] compositeIds, Connectio + "from \"humanresources\".\"employeedepartmenthistory\"\n" + "where (\"businessentityid\", \"startdate\", \"departmentid\", \"shiftid\")\n" + "in (select * from unnest("), - Fragment.encode(BusinessentityId.dbTypeArray, businessentityid), + Fragment.encode(BusinessentityId.pgTypeArray, businessentityid), Fragment.lit(", "), Fragment.encode(PgTypes.dateArray, startdate), Fragment.lit(", "), - Fragment.encode(DepartmentId.dbTypeArray, departmentid), + Fragment.encode(DepartmentId.pgTypeArray, departmentid), Fragment.lit(", "), - Fragment.encode(ShiftId.dbTypeArray, shiftid), + Fragment.encode(ShiftId.pgTypeArray, shiftid), Fragment.lit("))\n")) .update() .runUnchecked(c); @@ -96,11 +96,11 @@ public EmployeedepartmenthistoryRow insert(EmployeedepartmenthistoryRow unsaved, + " \"departmentid\", \"shiftid\", \"startdate\", \"enddate\"," + " \"modifieddate\")\n" + "values ("), - Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid()), + Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid()), Fragment.lit("::int4, "), - Fragment.encode(DepartmentId.dbType, unsaved.departmentid()), + Fragment.encode(DepartmentId.pgType, unsaved.departmentid()), Fragment.lit("::int2, "), - Fragment.encode(ShiftId.dbType, unsaved.shiftid()), + Fragment.encode(ShiftId.pgType, unsaved.shiftid()), Fragment.lit("::int2, "), Fragment.encode(PgTypes.date, unsaved.startdate()), Fragment.lit("::date, "), @@ -125,15 +125,15 @@ public EmployeedepartmenthistoryRow insert( columns.add(Fragment.lit("\"businessentityid\"")); values.add( interpolate( - Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid()), + Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid()), Fragment.lit("::int4"))); columns.add(Fragment.lit("\"departmentid\"")); values.add( interpolate( - Fragment.encode(DepartmentId.dbType, unsaved.departmentid()), Fragment.lit("::int2"))); + Fragment.encode(DepartmentId.pgType, unsaved.departmentid()), Fragment.lit("::int2"))); columns.add(Fragment.lit("\"shiftid\"")); values.add( - interpolate(Fragment.encode(ShiftId.dbType, unsaved.shiftid()), Fragment.lit("::int2"))); + interpolate(Fragment.encode(ShiftId.pgType, unsaved.shiftid()), Fragment.lit("::int2"))); columns.add(Fragment.lit("\"startdate\"")); values.add( interpolate(Fragment.encode(PgTypes.date, unsaved.startdate()), Fragment.lit("::date"))); @@ -222,13 +222,13 @@ public Optional selectById( + " \"enddate\", \"modifieddate\"\n" + "from \"humanresources\".\"employeedepartmenthistory\"\n" + "where \"businessentityid\" = "), - Fragment.encode(BusinessentityId.dbType, compositeId.businessentityid()), + Fragment.encode(BusinessentityId.pgType, compositeId.businessentityid()), Fragment.lit(" AND \"startdate\" = "), Fragment.encode(PgTypes.date, compositeId.startdate()), Fragment.lit(" AND \"departmentid\" = "), - Fragment.encode(DepartmentId.dbType, compositeId.departmentid()), + Fragment.encode(DepartmentId.pgType, compositeId.departmentid()), Fragment.lit(" AND \"shiftid\" = "), - Fragment.encode(ShiftId.dbType, compositeId.shiftid()), + Fragment.encode(ShiftId.pgType, compositeId.shiftid()), Fragment.lit("")) .query(EmployeedepartmenthistoryRow._rowParser.first()) .runUnchecked(c); @@ -257,13 +257,13 @@ public List selectByIds( + "from \"humanresources\".\"employeedepartmenthistory\"\n" + "where (\"businessentityid\", \"startdate\", \"departmentid\", \"shiftid\")\n" + "in (select * from unnest("), - Fragment.encode(BusinessentityId.dbTypeArray, businessentityid), + Fragment.encode(BusinessentityId.pgTypeArray, businessentityid), Fragment.lit(", "), Fragment.encode(PgTypes.dateArray, startdate), Fragment.lit(", "), - Fragment.encode(DepartmentId.dbTypeArray, departmentid), + Fragment.encode(DepartmentId.pgTypeArray, departmentid), Fragment.lit(", "), - Fragment.encode(ShiftId.dbTypeArray, shiftid), + Fragment.encode(ShiftId.pgTypeArray, shiftid), Fragment.lit("))\n")) .query(EmployeedepartmenthistoryRow._rowParser.all()) .runUnchecked(c); @@ -298,13 +298,13 @@ public Boolean update(EmployeedepartmenthistoryRow row, Connection c) { Fragment.lit("::date,\n\"modifieddate\" = "), Fragment.encode(PgTypes.timestamp, row.modifieddate()), Fragment.lit("::timestamp\nwhere \"businessentityid\" = "), - Fragment.encode(BusinessentityId.dbType, compositeId.businessentityid()), + Fragment.encode(BusinessentityId.pgType, compositeId.businessentityid()), Fragment.lit(" AND \"startdate\" = "), Fragment.encode(PgTypes.date, compositeId.startdate()), Fragment.lit(" AND \"departmentid\" = "), - Fragment.encode(DepartmentId.dbType, compositeId.departmentid()), + Fragment.encode(DepartmentId.pgType, compositeId.departmentid()), Fragment.lit(" AND \"shiftid\" = "), - Fragment.encode(ShiftId.dbType, compositeId.shiftid()), + Fragment.encode(ShiftId.pgType, compositeId.shiftid()), Fragment.lit("")) .update() .runUnchecked(c) @@ -319,11 +319,11 @@ public EmployeedepartmenthistoryRow upsert(EmployeedepartmenthistoryRow unsaved, + " \"departmentid\", \"shiftid\", \"startdate\", \"enddate\"," + " \"modifieddate\")\n" + "values ("), - Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid()), + Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid()), Fragment.lit("::int4, "), - Fragment.encode(DepartmentId.dbType, unsaved.departmentid()), + Fragment.encode(DepartmentId.pgType, unsaved.departmentid()), Fragment.lit("::int2, "), - Fragment.encode(ShiftId.dbType, unsaved.shiftid()), + Fragment.encode(ShiftId.pgType, unsaved.shiftid()), Fragment.lit("::int2, "), Fragment.encode(PgTypes.date, unsaved.startdate()), Fragment.lit("::date, "), diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRow.java b/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRow.java index 173ca33b5e..2b9768cae1 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRow.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRow.java @@ -117,9 +117,9 @@ public EmployeedepartmenthistoryRow withModifieddate(LocalDateTime modifieddate) public static RowParser _rowParser = RowParsers.of( - BusinessentityId.dbType, - DepartmentId.dbType, - ShiftId.dbType, + BusinessentityId.pgType, + DepartmentId.pgType, + ShiftId.pgType, PgTypes.date, PgTypes.date.opt(), PgTypes.timestamp, diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRowUnsaved.java b/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRowUnsaved.java index 11d815a484..9c07e518f1 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRowUnsaved.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRowUnsaved.java @@ -143,11 +143,11 @@ public EmployeedepartmenthistoryRowUnsaved withModifieddate( public static PgText pgText = PgText.instance( (row, sb) -> { - BusinessentityId.dbType.text().unsafeEncode(row.businessentityid, sb); + BusinessentityId.pgType.text().unsafeEncode(row.businessentityid, sb); sb.append(PgText.DELIMETER); - DepartmentId.dbType.text().unsafeEncode(row.departmentid, sb); + DepartmentId.pgType.text().unsafeEncode(row.departmentid, sb); sb.append(PgText.DELIMETER); - ShiftId.dbType.text().unsafeEncode(row.shiftid, sb); + ShiftId.pgType.text().unsafeEncode(row.shiftid, sb); sb.append(PgText.DELIMETER); PgTypes.date.text().unsafeEncode(row.startdate, sb); sb.append(PgText.DELIMETER); diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/shift/ShiftFields.java b/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/shift/ShiftFields.java index c3b229251e..2b5ea6b883 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/shift/ShiftFields.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/shift/ShiftFields.java @@ -39,7 +39,7 @@ public IdField shiftid() { Optional.empty(), Optional.of("int4"), (row, value) -> row.withShiftid(value), - ShiftId.dbType); + ShiftId.pgType); } public Field name() { @@ -50,7 +50,7 @@ public Field name() { Optional.empty(), Optional.of("varchar"), (row, value) -> row.withName(value), - Name.dbType); + Name.pgType); } public Field starttime() { diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/shift/ShiftId.java b/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/shift/ShiftId.java index 39f977a4d7..27b81e814a 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/shift/ShiftId.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/shift/ShiftId.java @@ -26,9 +26,9 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(ShiftId::value, ShiftId::new); - public static PgType dbType = PgTypes.int4.bimap(ShiftId::new, ShiftId::value); + public static PgType pgType = PgTypes.int4.bimap(ShiftId::new, ShiftId::value); - public static PgType dbTypeArray = + public static PgType pgTypeArray = PgTypes.int4Array.bimap( xs -> arrayMap.map(xs, ShiftId::new, ShiftId.class), xs -> arrayMap.map(xs, ShiftId::value, Integer.class)); diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRepoImpl.java b/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRepoImpl.java index 605b26f823..dc5bad745a 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRepoImpl.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRepoImpl.java @@ -34,7 +34,7 @@ public DeleteBuilder delete() { public Boolean deleteById(ShiftId shiftid, Connection c) { return interpolate( Fragment.lit("delete from \"humanresources\".\"shift\" where \"shiftid\" = "), - Fragment.encode(ShiftId.dbType, shiftid), + Fragment.encode(ShiftId.pgType, shiftid), Fragment.lit("")) .update() .runUnchecked(c) @@ -45,7 +45,7 @@ public Boolean deleteById(ShiftId shiftid, Connection c) { public Integer deleteByIds(ShiftId[] shiftids, Connection c) { return interpolate( Fragment.lit("delete\nfrom \"humanresources\".\"shift\"\nwhere \"shiftid\" = ANY("), - Fragment.encode(ShiftId.dbTypeArray, shiftids), + Fragment.encode(ShiftId.pgTypeArray, shiftids), Fragment.lit(")")) .update() .runUnchecked(c); @@ -58,9 +58,9 @@ public ShiftRow insert(ShiftRow unsaved, Connection c) { "insert into \"humanresources\".\"shift\"(\"shiftid\", \"name\", \"starttime\"," + " \"endtime\", \"modifieddate\")\n" + "values ("), - Fragment.encode(ShiftId.dbType, unsaved.shiftid()), + Fragment.encode(ShiftId.pgType, unsaved.shiftid()), Fragment.lit("::int4, "), - Fragment.encode(Name.dbType, unsaved.name()), + Fragment.encode(Name.pgType, unsaved.name()), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.time, unsaved.starttime()), Fragment.lit("::time, "), @@ -83,7 +83,7 @@ public ShiftRow insert(ShiftRowUnsaved unsaved, Connection c) { ; columns.add(Fragment.lit("\"name\"")); values.add( - interpolate(Fragment.encode(Name.dbType, unsaved.name()), Fragment.lit("::varchar"))); + interpolate(Fragment.encode(Name.pgType, unsaved.name()), Fragment.lit("::varchar"))); columns.add(Fragment.lit("\"starttime\"")); values.add( interpolate(Fragment.encode(PgTypes.time, unsaved.starttime()), Fragment.lit("::time"))); @@ -97,7 +97,7 @@ public ShiftRow insert(ShiftRowUnsaved unsaved, Connection c) { value -> { columns.add(Fragment.lit("\"shiftid\"")); values.add( - interpolate(Fragment.encode(ShiftId.dbType, value), Fragment.lit("::int4"))); + interpolate(Fragment.encode(ShiftId.pgType, value), Fragment.lit("::int4"))); }); ; unsaved @@ -175,7 +175,7 @@ public Optional selectById(ShiftId shiftid, Connection c) { "select \"shiftid\", \"name\", \"starttime\", \"endtime\", \"modifieddate\"\n" + "from \"humanresources\".\"shift\"\n" + "where \"shiftid\" = "), - Fragment.encode(ShiftId.dbType, shiftid), + Fragment.encode(ShiftId.pgType, shiftid), Fragment.lit("")) .query(ShiftRow._rowParser.first()) .runUnchecked(c); @@ -188,7 +188,7 @@ public List selectByIds(ShiftId[] shiftids, Connection c) { "select \"shiftid\", \"name\", \"starttime\", \"endtime\", \"modifieddate\"\n" + "from \"humanresources\".\"shift\"\n" + "where \"shiftid\" = ANY("), - Fragment.encode(ShiftId.dbTypeArray, shiftids), + Fragment.encode(ShiftId.pgTypeArray, shiftids), Fragment.lit(")")) .query(ShiftRow._rowParser.all()) .runUnchecked(c); @@ -216,7 +216,7 @@ public Boolean update(ShiftRow row, Connection c) { ; return interpolate( Fragment.lit("update \"humanresources\".\"shift\"\nset \"name\" = "), - Fragment.encode(Name.dbType, row.name()), + Fragment.encode(Name.pgType, row.name()), Fragment.lit("::varchar,\n\"starttime\" = "), Fragment.encode(PgTypes.time, row.starttime()), Fragment.lit("::time,\n\"endtime\" = "), @@ -224,7 +224,7 @@ public Boolean update(ShiftRow row, Connection c) { Fragment.lit("::time,\n\"modifieddate\" = "), Fragment.encode(PgTypes.timestamp, row.modifieddate()), Fragment.lit("::timestamp\nwhere \"shiftid\" = "), - Fragment.encode(ShiftId.dbType, shiftid), + Fragment.encode(ShiftId.pgType, shiftid), Fragment.lit("")) .update() .runUnchecked(c) @@ -238,9 +238,9 @@ public ShiftRow upsert(ShiftRow unsaved, Connection c) { "insert into \"humanresources\".\"shift\"(\"shiftid\", \"name\", \"starttime\"," + " \"endtime\", \"modifieddate\")\n" + "values ("), - Fragment.encode(ShiftId.dbType, unsaved.shiftid()), + Fragment.encode(ShiftId.pgType, unsaved.shiftid()), Fragment.lit("::int4, "), - Fragment.encode(Name.dbType, unsaved.name()), + Fragment.encode(Name.pgType, unsaved.name()), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.time, unsaved.starttime()), Fragment.lit("::time, "), diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRow.java b/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRow.java index 673dde537f..d07b567524 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRow.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRow.java @@ -64,8 +64,8 @@ public ShiftRow withModifieddate(LocalDateTime modifieddate) { public static RowParser _rowParser = RowParsers.of( - ShiftId.dbType, - Name.dbType, + ShiftId.pgType, + Name.pgType, PgTypes.time, PgTypes.time, PgTypes.timestamp, diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRowUnsaved.java b/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRowUnsaved.java index 6aebbb45a7..dcae662aa4 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRowUnsaved.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRowUnsaved.java @@ -75,13 +75,13 @@ public ShiftRowUnsaved withModifieddate(Defaulted modifieddate) { public static PgText pgText = PgText.instance( (row, sb) -> { - Name.dbType.text().unsafeEncode(row.name, sb); + Name.pgType.text().unsafeEncode(row.name, sb); sb.append(PgText.DELIMETER); PgTypes.time.text().unsafeEncode(row.starttime, sb); sb.append(PgText.DELIMETER); PgTypes.time.text().unsafeEncode(row.endtime, sb); sb.append(PgText.DELIMETER); - Defaulted.pgText(ShiftId.dbType.text()).unsafeEncode(row.shiftid, sb); + Defaulted.pgText(ShiftId.pgType.text()).unsafeEncode(row.shiftid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(PgTypes.timestamp.text()).unsafeEncode(row.modifieddate, sb); }); diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/vemployee/VemployeeViewFields.java b/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/vemployee/VemployeeViewFields.java index f2183ec7ee..685674663e 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/vemployee/VemployeeViewFields.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/vemployee/VemployeeViewFields.java @@ -9,6 +9,8 @@ import adventureworks.public_.Name; import adventureworks.public_.Phone; import adventureworks.userdefined.FirstName; +import adventureworks.userdefined.LastName; +import adventureworks.userdefined.MiddleName; import dev.typr.foundations.PgTypes; import dev.typr.foundations.RowParser; import dev.typr.foundations.data.Xml; @@ -26,9 +28,9 @@ public class VemployeeViewFields extends TupleExpr18< BusinessentityId, String, /* user-picked */ - FirstName, - Name, - Name, + FirstName, /* user-picked */ + MiddleName, /* user-picked */ + LastName, String, String, Phone, @@ -61,7 +63,7 @@ public Field businessentityid() { Optional.empty(), Optional.empty(), (row, value) -> row.withBusinessentityid(value), - BusinessentityId.dbType); + BusinessentityId.pgType); } public Field title() { @@ -83,29 +85,29 @@ public Field title() { Optional.empty(), Optional.empty(), (row, value) -> row.withFirstname(value), - FirstName.dbType); + FirstName.pgType); } - public Field middlename() { - return new Field( + public Field middlename() { + return new Field( _path, "middlename", VemployeeViewRow::middlename, Optional.empty(), Optional.empty(), (row, value) -> row.withMiddlename(value), - Name.dbType); + MiddleName.pgType); } - public Field lastname() { - return new Field( + public Field lastname() { + return new Field( _path, "lastname", VemployeeViewRow::lastname, Optional.empty(), Optional.empty(), (row, value) -> row.withLastname(value), - Name.dbType); + LastName.pgType); } public Field suffix() { @@ -138,7 +140,7 @@ public Field phonenumber() { Optional.empty(), Optional.empty(), (row, value) -> row.withPhonenumber(value), - Phone.dbType); + Phone.pgType); } public Field phonenumbertype() { @@ -149,7 +151,7 @@ public Field phonenumbertype() { Optional.empty(), Optional.empty(), (row, value) -> row.withPhonenumbertype(value), - Name.dbType); + Name.pgType); } public Field emailaddress() { @@ -215,7 +217,7 @@ public Field stateprovincename() { Optional.empty(), Optional.empty(), (row, value) -> row.withStateprovincename(value), - Name.dbType); + Name.pgType); } public Field postalcode() { @@ -237,7 +239,7 @@ public Field countryregionname() { Optional.empty(), Optional.empty(), (row, value) -> row.withCountryregionname(value), - Name.dbType); + Name.pgType); } public Field additionalcontactinfo() { @@ -305,12 +307,12 @@ public SqlExpr _2() { } @Override - public SqlExpr _4() { + public SqlExpr _4() { return middlename(); } @Override - public SqlExpr _5() { + public SqlExpr _5() { return lastname(); } diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/vemployee/VemployeeViewRow.java b/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/vemployee/VemployeeViewRow.java index a27a701dc2..80d796fac7 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/vemployee/VemployeeViewRow.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/humanresources/vemployee/VemployeeViewRow.java @@ -9,6 +9,8 @@ import adventureworks.public_.Name; import adventureworks.public_.Phone; import adventureworks.userdefined.FirstName; +import adventureworks.userdefined.LastName; +import adventureworks.userdefined.MiddleName; import dev.typr.foundations.PgTypes; import dev.typr.foundations.RowParser; import dev.typr.foundations.RowParsers; @@ -24,9 +26,9 @@ public record VemployeeViewRow( /** Points to {@link adventureworks.person.person.PersonRow#firstname()} */ /* user-picked */ FirstName firstname, /** Points to {@link adventureworks.person.person.PersonRow#middlename()} */ - Name middlename, + /* user-picked */ MiddleName middlename, /** Points to {@link adventureworks.person.person.PersonRow#lastname()} */ - Name lastname, + /* user-picked */ LastName lastname, /** Points to {@link adventureworks.person.person.PersonRow#suffix()} */ String suffix, /** Points to {@link adventureworks.humanresources.employee.EmployeeRow#jobtitle()} */ @@ -56,9 +58,9 @@ public record VemployeeViewRow( implements Tuple18< BusinessentityId, String, /* user-picked */ - FirstName, - Name, - Name, + FirstName, /* user-picked */ + MiddleName, /* user-picked */ + LastName, String, String, Phone, @@ -145,7 +147,7 @@ public VemployeeViewRow withFirstname(/* user-picked */ FirstName firstname) { ; /** Points to {@link adventureworks.person.person.PersonRow#middlename()} */ - public VemployeeViewRow withMiddlename(Name middlename) { + public VemployeeViewRow withMiddlename(/* user-picked */ MiddleName middlename) { return new VemployeeViewRow( businessentityid, title, @@ -169,7 +171,7 @@ public VemployeeViewRow withMiddlename(Name middlename) { ; /** Points to {@link adventureworks.person.person.PersonRow#lastname()} */ - public VemployeeViewRow withLastname(Name lastname) { + public VemployeeViewRow withLastname(/* user-picked */ LastName lastname) { return new VemployeeViewRow( businessentityid, title, @@ -506,23 +508,23 @@ public VemployeeViewRow withAdditionalcontactinfo(Xml additionalcontactinfo) { public static RowParser _rowParser = RowParsers.of( - BusinessentityId.dbType, + BusinessentityId.pgType, PgTypes.text, - FirstName.dbType, - Name.dbType, - Name.dbType, + FirstName.pgType, + MiddleName.pgType, + LastName.pgType, PgTypes.text, PgTypes.text, - Phone.dbType, - Name.dbType, + Phone.pgType, + Name.pgType, PgTypes.text, PgTypes.int4, PgTypes.text, PgTypes.text, PgTypes.text, - Name.dbType, + Name.pgType, PgTypes.text, - Name.dbType, + Name.pgType, PgTypes.xml, VemployeeViewRow::new, row -> @@ -621,13 +623,13 @@ public String _2() { ; @Override - public Name _4() { + public /* user-picked */ MiddleName _4() { return middlename; } ; @Override - public Name _5() { + public /* user-picked */ LastName _5() { return lastname; } ; diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/information_schema/CardinalNumber.java b/testers/pg/java/generated-and-checked-in/adventureworks/information_schema/CardinalNumber.java index 1513abcf3d..1666f96f9b 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/information_schema/CardinalNumber.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/information_schema/CardinalNumber.java @@ -21,12 +21,12 @@ public CardinalNumber withValue(Integer value) { public static Bijection bijection = Bijection.of(CardinalNumber::value, CardinalNumber::new); - public static PgType dbType = + public static PgType pgType = PgTypes.int4 .bimap(CardinalNumber::new, CardinalNumber::value) .renamed("\"information_schema\".\"cardinal_number\""); - public static PgType dbTypeArray = + public static PgType pgTypeArray = PgTypes.int4Array .bimap( xs -> arrayMap.map(xs, CardinalNumber::new, CardinalNumber.class), diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/information_schema/CharacterData.java b/testers/pg/java/generated-and-checked-in/adventureworks/information_schema/CharacterData.java index 6095c83335..4091d3b179 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/information_schema/CharacterData.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/information_schema/CharacterData.java @@ -21,12 +21,12 @@ public CharacterData withValue(String value) { public static Bijection bijection = Bijection.of(CharacterData::value, CharacterData::new); - public static PgType dbType = + public static PgType pgType = PgTypes.text .bimap(CharacterData::new, CharacterData::value) .renamed("\"information_schema\".\"character_data\""); - public static PgType dbTypeArray = + public static PgType pgTypeArray = PgTypes.textArray .bimap( xs -> arrayMap.map(xs, CharacterData::new, CharacterData.class), diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/information_schema/SqlIdentifier.java b/testers/pg/java/generated-and-checked-in/adventureworks/information_schema/SqlIdentifier.java index cd7cc1d170..ea9683c576 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/information_schema/SqlIdentifier.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/information_schema/SqlIdentifier.java @@ -21,12 +21,12 @@ public SqlIdentifier withValue(String value) { public static Bijection bijection = Bijection.of(SqlIdentifier::value, SqlIdentifier::new); - public static PgType dbType = + public static PgType pgType = PgTypes.name .bimap(SqlIdentifier::new, SqlIdentifier::value) .renamed("\"information_schema\".\"sql_identifier\""); - public static PgType dbTypeArray = + public static PgType pgTypeArray = PgTypes.nameArray .bimap( xs -> arrayMap.map(xs, SqlIdentifier::new, SqlIdentifier.class), diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/information_schema/TimeStamp.java b/testers/pg/java/generated-and-checked-in/adventureworks/information_schema/TimeStamp.java index db6fb8f0fd..dc57a2c78f 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/information_schema/TimeStamp.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/information_schema/TimeStamp.java @@ -22,12 +22,12 @@ public TimeStamp withValue(Instant value) { public static Bijection bijection = Bijection.of(TimeStamp::value, TimeStamp::new); - public static PgType dbType = + public static PgType pgType = PgTypes.timestamptz .bimap(TimeStamp::new, TimeStamp::value) .renamed("\"information_schema\".\"time_stamp\""); - public static PgType dbTypeArray = + public static PgType pgTypeArray = PgTypes.timestamptzArray .bimap( xs -> arrayMap.map(xs, TimeStamp::new, TimeStamp.class), diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/information_schema/YesOrNo.java b/testers/pg/java/generated-and-checked-in/adventureworks/information_schema/YesOrNo.java index e752944037..45dd16a097 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/information_schema/YesOrNo.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/information_schema/YesOrNo.java @@ -23,12 +23,12 @@ public YesOrNo withValue(String value) { public static Bijection bijection = Bijection.of(YesOrNo::value, YesOrNo::new); - public static PgType dbType = + public static PgType pgType = PgTypes.text .bimap(YesOrNo::new, YesOrNo::value) .renamed("\"information_schema\".\"yes_or_no\""); - public static PgType dbTypeArray = + public static PgType pgTypeArray = PgTypes.textArray .bimap( xs -> arrayMap.map(xs, YesOrNo::new, YesOrNo.class), diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/person/address/AddressFields.java b/testers/pg/java/generated-and-checked-in/adventureworks/person/address/AddressFields.java index 1a3fc0bc21..9e9211909b 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/person/address/AddressFields.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/person/address/AddressFields.java @@ -53,7 +53,7 @@ public IdField addressid() { Optional.empty(), Optional.of("int4"), (row, value) -> row.withAddressid(value), - AddressId.dbType); + AddressId.pgType); } public Field addressline1() { @@ -97,7 +97,7 @@ public Field stateprovinceid() { Optional.empty(), Optional.of("int4"), (row, value) -> row.withStateprovinceid(value), - StateprovinceId.dbType); + StateprovinceId.pgType); } public Field postalcode() { diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/person/address/AddressId.java b/testers/pg/java/generated-and-checked-in/adventureworks/person/address/AddressId.java index ea351b8f40..a8dc352a82 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/person/address/AddressId.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/person/address/AddressId.java @@ -27,9 +27,9 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(AddressId::value, AddressId::new); - public static PgType dbType = PgTypes.int4.bimap(AddressId::new, AddressId::value); + public static PgType pgType = PgTypes.int4.bimap(AddressId::new, AddressId::value); - public static PgType dbTypeArray = + public static PgType pgTypeArray = PgTypes.int4Array.bimap( xs -> arrayMap.map(xs, AddressId::new, AddressId.class), xs -> arrayMap.map(xs, AddressId::value, Integer.class)); diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/person/address/AddressRepoImpl.java b/testers/pg/java/generated-and-checked-in/adventureworks/person/address/AddressRepoImpl.java index b045803f56..575d2effe9 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/person/address/AddressRepoImpl.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/person/address/AddressRepoImpl.java @@ -33,7 +33,7 @@ public DeleteBuilder delete() { public Boolean deleteById(AddressId addressid, Connection c) { return interpolate( Fragment.lit("delete from \"person\".\"address\" where \"addressid\" = "), - Fragment.encode(AddressId.dbType, addressid), + Fragment.encode(AddressId.pgType, addressid), Fragment.lit("")) .update() .runUnchecked(c) @@ -44,7 +44,7 @@ public Boolean deleteById(AddressId addressid, Connection c) { public Integer deleteByIds(AddressId[] addressids, Connection c) { return interpolate( Fragment.lit("delete\nfrom \"person\".\"address\"\nwhere \"addressid\" = ANY("), - Fragment.encode(AddressId.dbTypeArray, addressids), + Fragment.encode(AddressId.pgTypeArray, addressids), Fragment.lit(")")) .update() .runUnchecked(c); @@ -58,7 +58,7 @@ public AddressRow insert(AddressRow unsaved, Connection c) { + " \"addressline2\", \"city\", \"stateprovinceid\", \"postalcode\"," + " \"spatiallocation\", \"rowguid\", \"modifieddate\")\n" + "values ("), - Fragment.encode(AddressId.dbType, unsaved.addressid()), + Fragment.encode(AddressId.pgType, unsaved.addressid()), Fragment.lit("::int4, "), Fragment.encode(PgTypes.text, unsaved.addressline1()), Fragment.lit(", "), @@ -66,7 +66,7 @@ public AddressRow insert(AddressRow unsaved, Connection c) { Fragment.lit(", "), Fragment.encode(PgTypes.text, unsaved.city()), Fragment.lit(", "), - Fragment.encode(StateprovinceId.dbType, unsaved.stateprovinceid()), + Fragment.encode(StateprovinceId.pgType, unsaved.stateprovinceid()), Fragment.lit("::int4, "), Fragment.encode(PgTypes.text, unsaved.postalcode()), Fragment.lit(", "), @@ -101,7 +101,7 @@ public AddressRow insert(AddressRowUnsaved unsaved, Connection c) { columns.add(Fragment.lit("\"stateprovinceid\"")); values.add( interpolate( - Fragment.encode(StateprovinceId.dbType, unsaved.stateprovinceid()), + Fragment.encode(StateprovinceId.pgType, unsaved.stateprovinceid()), Fragment.lit("::int4"))); columns.add(Fragment.lit("\"postalcode\"")); values.add(interpolate(Fragment.encode(PgTypes.text, unsaved.postalcode()), Fragment.lit(""))); @@ -117,7 +117,7 @@ public AddressRow insert(AddressRowUnsaved unsaved, Connection c) { value -> { columns.add(Fragment.lit("\"addressid\"")); values.add( - interpolate(Fragment.encode(AddressId.dbType, value), Fragment.lit("::int4"))); + interpolate(Fragment.encode(AddressId.pgType, value), Fragment.lit("::int4"))); }); ; unsaved @@ -211,7 +211,7 @@ public Optional selectById(AddressId addressid, Connection c) { + " \"modifieddate\"\n" + "from \"person\".\"address\"\n" + "where \"addressid\" = "), - Fragment.encode(AddressId.dbType, addressid), + Fragment.encode(AddressId.pgType, addressid), Fragment.lit("")) .query(AddressRow._rowParser.first()) .runUnchecked(c); @@ -226,7 +226,7 @@ public List selectByIds(AddressId[] addressids, Connection c) { + " \"modifieddate\"\n" + "from \"person\".\"address\"\n" + "where \"addressid\" = ANY("), - Fragment.encode(AddressId.dbTypeArray, addressids), + Fragment.encode(AddressId.pgTypeArray, addressids), Fragment.lit(")")) .query(AddressRow._rowParser.all()) .runUnchecked(c); @@ -260,7 +260,7 @@ public Boolean update(AddressRow row, Connection c) { Fragment.lit(",\n\"city\" = "), Fragment.encode(PgTypes.text, row.city()), Fragment.lit(",\n\"stateprovinceid\" = "), - Fragment.encode(StateprovinceId.dbType, row.stateprovinceid()), + Fragment.encode(StateprovinceId.pgType, row.stateprovinceid()), Fragment.lit("::int4,\n\"postalcode\" = "), Fragment.encode(PgTypes.text, row.postalcode()), Fragment.lit(",\n\"spatiallocation\" = "), @@ -270,7 +270,7 @@ public Boolean update(AddressRow row, Connection c) { Fragment.lit("::uuid,\n\"modifieddate\" = "), Fragment.encode(PgTypes.timestamp, row.modifieddate()), Fragment.lit("::timestamp\nwhere \"addressid\" = "), - Fragment.encode(AddressId.dbType, addressid), + Fragment.encode(AddressId.pgType, addressid), Fragment.lit("")) .update() .runUnchecked(c) @@ -285,7 +285,7 @@ public AddressRow upsert(AddressRow unsaved, Connection c) { + " \"addressline2\", \"city\", \"stateprovinceid\", \"postalcode\"," + " \"spatiallocation\", \"rowguid\", \"modifieddate\")\n" + "values ("), - Fragment.encode(AddressId.dbType, unsaved.addressid()), + Fragment.encode(AddressId.pgType, unsaved.addressid()), Fragment.lit("::int4, "), Fragment.encode(PgTypes.text, unsaved.addressline1()), Fragment.lit(", "), @@ -293,7 +293,7 @@ public AddressRow upsert(AddressRow unsaved, Connection c) { Fragment.lit(", "), Fragment.encode(PgTypes.text, unsaved.city()), Fragment.lit(", "), - Fragment.encode(StateprovinceId.dbType, unsaved.stateprovinceid()), + Fragment.encode(StateprovinceId.pgType, unsaved.stateprovinceid()), Fragment.lit("::int4, "), Fragment.encode(PgTypes.text, unsaved.postalcode()), Fragment.lit(", "), diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/person/address/AddressRow.java b/testers/pg/java/generated-and-checked-in/adventureworks/person/address/AddressRow.java index 189d295f69..dc0f3b9c9f 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/person/address/AddressRow.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/person/address/AddressRow.java @@ -194,11 +194,11 @@ public AddressRow withModifieddate(LocalDateTime modifieddate) { public static RowParser _rowParser = RowParsers.of( - AddressId.dbType, + AddressId.pgType, PgTypes.text, PgTypes.text.opt(), PgTypes.text, - StateprovinceId.dbType, + StateprovinceId.pgType, PgTypes.text, PgTypes.bytea.opt(), PgTypes.uuid, diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/person/address/AddressRowUnsaved.java b/testers/pg/java/generated-and-checked-in/adventureworks/person/address/AddressRowUnsaved.java index 9705aead2c..f82dca87c1 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/person/address/AddressRowUnsaved.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/person/address/AddressRowUnsaved.java @@ -211,13 +211,13 @@ public AddressRowUnsaved withModifieddate(Defaulted modifieddate) sb.append(PgText.DELIMETER); PgTypes.text.text().unsafeEncode(row.city, sb); sb.append(PgText.DELIMETER); - StateprovinceId.dbType.text().unsafeEncode(row.stateprovinceid, sb); + StateprovinceId.pgType.text().unsafeEncode(row.stateprovinceid, sb); sb.append(PgText.DELIMETER); PgTypes.text.text().unsafeEncode(row.postalcode, sb); sb.append(PgText.DELIMETER); PgTypes.bytea.opt().text().unsafeEncode(row.spatiallocation, sb); sb.append(PgText.DELIMETER); - Defaulted.pgText(AddressId.dbType.text()).unsafeEncode(row.addressid, sb); + Defaulted.pgText(AddressId.pgType.text()).unsafeEncode(row.addressid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(PgTypes.uuid.text()).unsafeEncode(row.rowguid, sb); sb.append(PgText.DELIMETER); diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeFields.java b/testers/pg/java/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeFields.java index 13c8d48124..11d62ad240 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeFields.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeFields.java @@ -40,7 +40,7 @@ public IdField addresstypeid() { Optional.empty(), Optional.of("int4"), (row, value) -> row.withAddresstypeid(value), - AddresstypeId.dbType); + AddresstypeId.pgType); } public Field name() { @@ -51,7 +51,7 @@ public Field name() { Optional.empty(), Optional.of("varchar"), (row, value) -> row.withName(value), - Name.dbType); + Name.pgType); } public Field rowguid() { diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeId.java b/testers/pg/java/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeId.java index c2737c3a81..e40daf3f83 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeId.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeId.java @@ -27,10 +27,10 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(AddresstypeId::value, AddresstypeId::new); - public static PgType dbType = + public static PgType pgType = PgTypes.int4.bimap(AddresstypeId::new, AddresstypeId::value); - public static PgType dbTypeArray = + public static PgType pgTypeArray = PgTypes.int4Array.bimap( xs -> arrayMap.map(xs, AddresstypeId::new, AddresstypeId.class), xs -> arrayMap.map(xs, AddresstypeId::value, Integer.class)); diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRepoImpl.java b/testers/pg/java/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRepoImpl.java index 3cd0cbdcb2..ced9d35f8f 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRepoImpl.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRepoImpl.java @@ -34,7 +34,7 @@ public DeleteBuilder delete() { public Boolean deleteById(AddresstypeId addresstypeid, Connection c) { return interpolate( Fragment.lit("delete from \"person\".\"addresstype\" where \"addresstypeid\" = "), - Fragment.encode(AddresstypeId.dbType, addresstypeid), + Fragment.encode(AddresstypeId.pgType, addresstypeid), Fragment.lit("")) .update() .runUnchecked(c) @@ -45,7 +45,7 @@ public Boolean deleteById(AddresstypeId addresstypeid, Connection c) { public Integer deleteByIds(AddresstypeId[] addresstypeids, Connection c) { return interpolate( Fragment.lit("delete\nfrom \"person\".\"addresstype\"\nwhere \"addresstypeid\" = ANY("), - Fragment.encode(AddresstypeId.dbTypeArray, addresstypeids), + Fragment.encode(AddresstypeId.pgTypeArray, addresstypeids), Fragment.lit(")")) .update() .runUnchecked(c); @@ -58,9 +58,9 @@ public AddresstypeRow insert(AddresstypeRow unsaved, Connection c) { "insert into \"person\".\"addresstype\"(\"addresstypeid\", \"name\", \"rowguid\"," + " \"modifieddate\")\n" + "values ("), - Fragment.encode(AddresstypeId.dbType, unsaved.addresstypeid()), + Fragment.encode(AddresstypeId.pgType, unsaved.addresstypeid()), Fragment.lit("::int4, "), - Fragment.encode(Name.dbType, unsaved.name()), + Fragment.encode(Name.pgType, unsaved.name()), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid()), Fragment.lit("::uuid, "), @@ -80,7 +80,7 @@ public AddresstypeRow insert(AddresstypeRowUnsaved unsaved, Connection c) { ; columns.add(Fragment.lit("\"name\"")); values.add( - interpolate(Fragment.encode(Name.dbType, unsaved.name()), Fragment.lit("::varchar"))); + interpolate(Fragment.encode(Name.pgType, unsaved.name()), Fragment.lit("::varchar"))); unsaved .addresstypeid() .visit( @@ -89,7 +89,7 @@ public AddresstypeRow insert(AddresstypeRowUnsaved unsaved, Connection c) { columns.add(Fragment.lit("\"addresstypeid\"")); values.add( interpolate( - Fragment.encode(AddresstypeId.dbType, value), Fragment.lit("::int4"))); + Fragment.encode(AddresstypeId.pgType, value), Fragment.lit("::int4"))); }); ; unsaved @@ -174,7 +174,7 @@ public Optional selectById(AddresstypeId addresstypeid, Connecti "select \"addresstypeid\", \"name\", \"rowguid\", \"modifieddate\"\n" + "from \"person\".\"addresstype\"\n" + "where \"addresstypeid\" = "), - Fragment.encode(AddresstypeId.dbType, addresstypeid), + Fragment.encode(AddresstypeId.pgType, addresstypeid), Fragment.lit("")) .query(AddresstypeRow._rowParser.first()) .runUnchecked(c); @@ -187,7 +187,7 @@ public List selectByIds(AddresstypeId[] addresstypeids, Connecti "select \"addresstypeid\", \"name\", \"rowguid\", \"modifieddate\"\n" + "from \"person\".\"addresstype\"\n" + "where \"addresstypeid\" = ANY("), - Fragment.encode(AddresstypeId.dbTypeArray, addresstypeids), + Fragment.encode(AddresstypeId.pgTypeArray, addresstypeids), Fragment.lit(")")) .query(AddresstypeRow._rowParser.all()) .runUnchecked(c); @@ -216,13 +216,13 @@ public Boolean update(AddresstypeRow row, Connection c) { ; return interpolate( Fragment.lit("update \"person\".\"addresstype\"\nset \"name\" = "), - Fragment.encode(Name.dbType, row.name()), + Fragment.encode(Name.pgType, row.name()), Fragment.lit("::varchar,\n\"rowguid\" = "), Fragment.encode(PgTypes.uuid, row.rowguid()), Fragment.lit("::uuid,\n\"modifieddate\" = "), Fragment.encode(PgTypes.timestamp, row.modifieddate()), Fragment.lit("::timestamp\nwhere \"addresstypeid\" = "), - Fragment.encode(AddresstypeId.dbType, addresstypeid), + Fragment.encode(AddresstypeId.pgType, addresstypeid), Fragment.lit("")) .update() .runUnchecked(c) @@ -236,9 +236,9 @@ public AddresstypeRow upsert(AddresstypeRow unsaved, Connection c) { "insert into \"person\".\"addresstype\"(\"addresstypeid\", \"name\", \"rowguid\"," + " \"modifieddate\")\n" + "values ("), - Fragment.encode(AddresstypeId.dbType, unsaved.addresstypeid()), + Fragment.encode(AddresstypeId.pgType, unsaved.addresstypeid()), Fragment.lit("::int4, "), - Fragment.encode(Name.dbType, unsaved.name()), + Fragment.encode(Name.pgType, unsaved.name()), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid()), Fragment.lit("::uuid, "), diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRow.java b/testers/pg/java/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRow.java index 5c969cf0f1..d2916fdef9 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRow.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRow.java @@ -61,8 +61,8 @@ public AddresstypeRow withModifieddate(LocalDateTime modifieddate) { public static RowParser _rowParser = RowParsers.of( - AddresstypeId.dbType, - Name.dbType, + AddresstypeId.pgType, + Name.pgType, PgTypes.uuid, PgTypes.timestamp, AddresstypeRow::new, diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRowUnsaved.java b/testers/pg/java/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRowUnsaved.java index b996a839b1..2a2937e9da 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRowUnsaved.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRowUnsaved.java @@ -66,9 +66,9 @@ public AddresstypeRowUnsaved withModifieddate(Defaulted modifiedd public static PgText pgText = PgText.instance( (row, sb) -> { - Name.dbType.text().unsafeEncode(row.name, sb); + Name.pgType.text().unsafeEncode(row.name, sb); sb.append(PgText.DELIMETER); - Defaulted.pgText(AddresstypeId.dbType.text()).unsafeEncode(row.addresstypeid, sb); + Defaulted.pgText(AddresstypeId.pgType.text()).unsafeEncode(row.addresstypeid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(PgTypes.uuid.text()).unsafeEncode(row.rowguid, sb); sb.append(PgText.DELIMETER); diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityFields.java b/testers/pg/java/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityFields.java index 7e6968716f..854b58ab50 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityFields.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityFields.java @@ -40,7 +40,7 @@ public IdField businessentityid() { Optional.empty(), Optional.of("int4"), (row, value) -> row.withBusinessentityid(value), - BusinessentityId.dbType); + BusinessentityId.pgType); } public Field rowguid() { diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityId.java b/testers/pg/java/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityId.java index 8120cb082b..2f71a7dd07 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityId.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityId.java @@ -27,10 +27,10 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(BusinessentityId::value, BusinessentityId::new); - public static PgType dbType = + public static PgType pgType = PgTypes.int4.bimap(BusinessentityId::new, BusinessentityId::value); - public static PgType dbTypeArray = + public static PgType pgTypeArray = PgTypes.int4Array.bimap( xs -> arrayMap.map(xs, BusinessentityId::new, BusinessentityId.class), xs -> arrayMap.map(xs, BusinessentityId::value, Integer.class)); diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRepoImpl.java b/testers/pg/java/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRepoImpl.java index 88c1884f8d..253e6b81e4 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRepoImpl.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRepoImpl.java @@ -34,7 +34,7 @@ public Boolean deleteById(BusinessentityId businessentityid, Connection c) { return interpolate( Fragment.lit( "delete from \"person\".\"businessentity\" where \"businessentityid\" = "), - Fragment.encode(BusinessentityId.dbType, businessentityid), + Fragment.encode(BusinessentityId.pgType, businessentityid), Fragment.lit("")) .update() .runUnchecked(c) @@ -46,7 +46,7 @@ public Integer deleteByIds(BusinessentityId[] businessentityids, Connection c) { return interpolate( Fragment.lit( "delete\nfrom \"person\".\"businessentity\"\nwhere \"businessentityid\" = ANY("), - Fragment.encode(BusinessentityId.dbTypeArray, businessentityids), + Fragment.encode(BusinessentityId.pgTypeArray, businessentityids), Fragment.lit(")")) .update() .runUnchecked(c); @@ -59,7 +59,7 @@ public BusinessentityRow insert(BusinessentityRow unsaved, Connection c) { "insert into \"person\".\"businessentity\"(\"businessentityid\", \"rowguid\"," + " \"modifieddate\")\n" + "values ("), - Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid()), + Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid()), Fragment.lit("::int4, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid()), Fragment.lit("::uuid, "), @@ -84,7 +84,7 @@ public BusinessentityRow insert(BusinessentityRowUnsaved unsaved, Connection c) columns.add(Fragment.lit("\"businessentityid\"")); values.add( interpolate( - Fragment.encode(BusinessentityId.dbType, value), Fragment.lit("::int4"))); + Fragment.encode(BusinessentityId.pgType, value), Fragment.lit("::int4"))); }); ; unsaved @@ -175,7 +175,7 @@ public Optional selectById(BusinessentityId businessentityid, "select \"businessentityid\", \"rowguid\", \"modifieddate\"\n" + "from \"person\".\"businessentity\"\n" + "where \"businessentityid\" = "), - Fragment.encode(BusinessentityId.dbType, businessentityid), + Fragment.encode(BusinessentityId.pgType, businessentityid), Fragment.lit("")) .query(BusinessentityRow._rowParser.first()) .runUnchecked(c); @@ -188,7 +188,7 @@ public List selectByIds(BusinessentityId[] businessentityids, "select \"businessentityid\", \"rowguid\", \"modifieddate\"\n" + "from \"person\".\"businessentity\"\n" + "where \"businessentityid\" = ANY("), - Fragment.encode(BusinessentityId.dbTypeArray, businessentityids), + Fragment.encode(BusinessentityId.pgTypeArray, businessentityids), Fragment.lit(")")) .query(BusinessentityRow._rowParser.all()) .runUnchecked(c); @@ -222,7 +222,7 @@ public Boolean update(BusinessentityRow row, Connection c) { Fragment.lit("::uuid,\n\"modifieddate\" = "), Fragment.encode(PgTypes.timestamp, row.modifieddate()), Fragment.lit("::timestamp\nwhere \"businessentityid\" = "), - Fragment.encode(BusinessentityId.dbType, businessentityid), + Fragment.encode(BusinessentityId.pgType, businessentityid), Fragment.lit("")) .update() .runUnchecked(c) @@ -236,7 +236,7 @@ public BusinessentityRow upsert(BusinessentityRow unsaved, Connection c) { "insert into \"person\".\"businessentity\"(\"businessentityid\", \"rowguid\"," + " \"modifieddate\")\n" + "values ("), - Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid()), + Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid()), Fragment.lit("::int4, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid()), Fragment.lit("::uuid, "), diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRow.java b/testers/pg/java/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRow.java index a01e77db54..78914c8ae2 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRow.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRow.java @@ -52,7 +52,7 @@ public BusinessentityRow withModifieddate(LocalDateTime modifieddate) { public static RowParser _rowParser = RowParsers.of( - BusinessentityId.dbType, + BusinessentityId.pgType, PgTypes.uuid, PgTypes.timestamp, BusinessentityRow::new, diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRowUnsaved.java b/testers/pg/java/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRowUnsaved.java index 406b94543b..933c7c7ebb 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRowUnsaved.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRowUnsaved.java @@ -55,7 +55,7 @@ public BusinessentityRowUnsaved withModifieddate(Defaulted modifi public static PgText pgText = PgText.instance( (row, sb) -> { - Defaulted.pgText(BusinessentityId.dbType.text()).unsafeEncode(row.businessentityid, sb); + Defaulted.pgText(BusinessentityId.pgType.text()).unsafeEncode(row.businessentityid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(PgTypes.uuid.text()).unsafeEncode(row.rowguid, sb); sb.append(PgText.DELIMETER); diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressFields.java b/testers/pg/java/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressFields.java index 9571b8ac1b..270887cfd8 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressFields.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressFields.java @@ -52,7 +52,7 @@ public IdField businessentityid() { Optional.empty(), Optional.of("int4"), (row, value) -> row.withBusinessentityid(value), - BusinessentityId.dbType); + BusinessentityId.pgType); } public IdField addressid() { @@ -63,7 +63,7 @@ public IdField addressid() { Optional.empty(), Optional.of("int4"), (row, value) -> row.withAddressid(value), - AddressId.dbType); + AddressId.pgType); } public IdField addresstypeid() { @@ -74,7 +74,7 @@ public IdField addresstypeid() { Optional.empty(), Optional.of("int4"), (row, value) -> row.withAddresstypeid(value), - AddresstypeId.dbType); + AddresstypeId.pgType); } public Field rowguid() { diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressId.java b/testers/pg/java/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressId.java index 65fb86a5ca..48c2b4e503 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressId.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressId.java @@ -33,9 +33,9 @@ public BusinessentityaddressId withAddresstypeid(AddresstypeId addresstypeid) { public static RowParser _rowParser = RowParsers.of( - BusinessentityId.dbType, - AddressId.dbType, - AddresstypeId.dbType, + BusinessentityId.pgType, + AddressId.pgType, + AddresstypeId.pgType, BusinessentityaddressId::new, row -> new Object[] {row.businessentityid(), row.addressid(), row.addresstypeid()}); ; diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRepoImpl.java b/testers/pg/java/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRepoImpl.java index f45fd43019..7179501a89 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRepoImpl.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRepoImpl.java @@ -41,11 +41,11 @@ public Boolean deleteById(BusinessentityaddressId compositeId, Connection c) { Fragment.lit( "delete from \"person\".\"businessentityaddress\" where \"businessentityid\"" + " = "), - Fragment.encode(BusinessentityId.dbType, compositeId.businessentityid()), + Fragment.encode(BusinessentityId.pgType, compositeId.businessentityid()), Fragment.lit(" AND \"addressid\" = "), - Fragment.encode(AddressId.dbType, compositeId.addressid()), + Fragment.encode(AddressId.pgType, compositeId.addressid()), Fragment.lit(" AND \"addresstypeid\" = "), - Fragment.encode(AddresstypeId.dbType, compositeId.addresstypeid()), + Fragment.encode(AddresstypeId.pgType, compositeId.addresstypeid()), Fragment.lit("")) .update() .runUnchecked(c) @@ -70,11 +70,11 @@ public Integer deleteByIds(BusinessentityaddressId[] compositeIds, Connection c) + "from \"person\".\"businessentityaddress\"\n" + "where (\"businessentityid\", \"addressid\", \"addresstypeid\")\n" + "in (select * from unnest("), - Fragment.encode(BusinessentityId.dbTypeArray, businessentityid), + Fragment.encode(BusinessentityId.pgTypeArray, businessentityid), Fragment.lit(", "), - Fragment.encode(AddressId.dbTypeArray, addressid), + Fragment.encode(AddressId.pgTypeArray, addressid), Fragment.lit(", "), - Fragment.encode(AddresstypeId.dbTypeArray, addresstypeid), + Fragment.encode(AddresstypeId.pgTypeArray, addresstypeid), Fragment.lit("))\n")) .update() .runUnchecked(c); @@ -87,11 +87,11 @@ public BusinessentityaddressRow insert(BusinessentityaddressRow unsaved, Connect "insert into \"person\".\"businessentityaddress\"(\"businessentityid\"," + " \"addressid\", \"addresstypeid\", \"rowguid\", \"modifieddate\")\n" + "values ("), - Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid()), + Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid()), Fragment.lit("::int4, "), - Fragment.encode(AddressId.dbType, unsaved.addressid()), + Fragment.encode(AddressId.pgType, unsaved.addressid()), Fragment.lit("::int4, "), - Fragment.encode(AddresstypeId.dbType, unsaved.addresstypeid()), + Fragment.encode(AddresstypeId.pgType, unsaved.addresstypeid()), Fragment.lit("::int4, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid()), Fragment.lit("::uuid, "), @@ -113,16 +113,16 @@ public BusinessentityaddressRow insert(BusinessentityaddressRowUnsaved unsaved, columns.add(Fragment.lit("\"businessentityid\"")); values.add( interpolate( - Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid()), + Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid()), Fragment.lit("::int4"))); columns.add(Fragment.lit("\"addressid\"")); values.add( interpolate( - Fragment.encode(AddressId.dbType, unsaved.addressid()), Fragment.lit("::int4"))); + Fragment.encode(AddressId.pgType, unsaved.addressid()), Fragment.lit("::int4"))); columns.add(Fragment.lit("\"addresstypeid\"")); values.add( interpolate( - Fragment.encode(AddresstypeId.dbType, unsaved.addresstypeid()), + Fragment.encode(AddresstypeId.pgType, unsaved.addresstypeid()), Fragment.lit("::int4"))); unsaved .rowguid() @@ -213,11 +213,11 @@ public Optional selectById( + " \"modifieddate\"\n" + "from \"person\".\"businessentityaddress\"\n" + "where \"businessentityid\" = "), - Fragment.encode(BusinessentityId.dbType, compositeId.businessentityid()), + Fragment.encode(BusinessentityId.pgType, compositeId.businessentityid()), Fragment.lit(" AND \"addressid\" = "), - Fragment.encode(AddressId.dbType, compositeId.addressid()), + Fragment.encode(AddressId.pgType, compositeId.addressid()), Fragment.lit(" AND \"addresstypeid\" = "), - Fragment.encode(AddresstypeId.dbType, compositeId.addresstypeid()), + Fragment.encode(AddresstypeId.pgType, compositeId.addresstypeid()), Fragment.lit("")) .query(BusinessentityaddressRow._rowParser.first()) .runUnchecked(c); @@ -243,11 +243,11 @@ public List selectByIds( + "from \"person\".\"businessentityaddress\"\n" + "where (\"businessentityid\", \"addressid\", \"addresstypeid\")\n" + "in (select * from unnest("), - Fragment.encode(BusinessentityId.dbTypeArray, businessentityid), + Fragment.encode(BusinessentityId.pgTypeArray, businessentityid), Fragment.lit(", "), - Fragment.encode(AddressId.dbTypeArray, addressid), + Fragment.encode(AddressId.pgTypeArray, addressid), Fragment.lit(", "), - Fragment.encode(AddresstypeId.dbTypeArray, addresstypeid), + Fragment.encode(AddresstypeId.pgTypeArray, addresstypeid), Fragment.lit("))\n")) .query(BusinessentityaddressRow._rowParser.all()) .runUnchecked(c); @@ -281,11 +281,11 @@ public Boolean update(BusinessentityaddressRow row, Connection c) { Fragment.lit("::uuid,\n\"modifieddate\" = "), Fragment.encode(PgTypes.timestamp, row.modifieddate()), Fragment.lit("::timestamp\nwhere \"businessentityid\" = "), - Fragment.encode(BusinessentityId.dbType, compositeId.businessentityid()), + Fragment.encode(BusinessentityId.pgType, compositeId.businessentityid()), Fragment.lit(" AND \"addressid\" = "), - Fragment.encode(AddressId.dbType, compositeId.addressid()), + Fragment.encode(AddressId.pgType, compositeId.addressid()), Fragment.lit(" AND \"addresstypeid\" = "), - Fragment.encode(AddresstypeId.dbType, compositeId.addresstypeid()), + Fragment.encode(AddresstypeId.pgType, compositeId.addresstypeid()), Fragment.lit("")) .update() .runUnchecked(c) @@ -299,11 +299,11 @@ public BusinessentityaddressRow upsert(BusinessentityaddressRow unsaved, Connect "insert into \"person\".\"businessentityaddress\"(\"businessentityid\"," + " \"addressid\", \"addresstypeid\", \"rowguid\", \"modifieddate\")\n" + "values ("), - Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid()), + Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid()), Fragment.lit("::int4, "), - Fragment.encode(AddressId.dbType, unsaved.addressid()), + Fragment.encode(AddressId.pgType, unsaved.addressid()), Fragment.lit("::int4, "), - Fragment.encode(AddresstypeId.dbType, unsaved.addresstypeid()), + Fragment.encode(AddresstypeId.pgType, unsaved.addresstypeid()), Fragment.lit("::int4, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid()), Fragment.lit("::uuid, "), diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRow.java b/testers/pg/java/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRow.java index 21c882aa4b..180e62072a 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRow.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRow.java @@ -88,9 +88,9 @@ public BusinessentityaddressRow withModifieddate(LocalDateTime modifieddate) { public static RowParser _rowParser = RowParsers.of( - BusinessentityId.dbType, - AddressId.dbType, - AddresstypeId.dbType, + BusinessentityId.pgType, + AddressId.pgType, + AddresstypeId.pgType, PgTypes.uuid, PgTypes.timestamp, BusinessentityaddressRow::new, diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRowUnsaved.java b/testers/pg/java/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRowUnsaved.java index 02e7d38258..9028fd1376 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRowUnsaved.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRowUnsaved.java @@ -106,11 +106,11 @@ public BusinessentityaddressRowUnsaved withModifieddate(Defaulted public static PgText pgText = PgText.instance( (row, sb) -> { - BusinessentityId.dbType.text().unsafeEncode(row.businessentityid, sb); + BusinessentityId.pgType.text().unsafeEncode(row.businessentityid, sb); sb.append(PgText.DELIMETER); - AddressId.dbType.text().unsafeEncode(row.addressid, sb); + AddressId.pgType.text().unsafeEncode(row.addressid, sb); sb.append(PgText.DELIMETER); - AddresstypeId.dbType.text().unsafeEncode(row.addresstypeid, sb); + AddresstypeId.pgType.text().unsafeEncode(row.addresstypeid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(PgTypes.uuid.text()).unsafeEncode(row.rowguid, sb); sb.append(PgText.DELIMETER); diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/person/countryregion/CountryregionFields.java b/testers/pg/java/generated-and-checked-in/adventureworks/person/countryregion/CountryregionFields.java index 9812cf7acd..d2b7bf3a70 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/person/countryregion/CountryregionFields.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/person/countryregion/CountryregionFields.java @@ -40,7 +40,7 @@ public IdField countryregioncode() { Optional.empty(), Optional.empty(), (row, value) -> row.withCountryregioncode(value), - CountryregionId.dbType); + CountryregionId.pgType); } public Field name() { @@ -51,7 +51,7 @@ public Field name() { Optional.empty(), Optional.of("varchar"), (row, value) -> row.withName(value), - Name.dbType); + Name.pgType); } public Field modifieddate() { diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/person/countryregion/CountryregionId.java b/testers/pg/java/generated-and-checked-in/adventureworks/person/countryregion/CountryregionId.java index 4994ac53fa..217942fccb 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/person/countryregion/CountryregionId.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/person/countryregion/CountryregionId.java @@ -27,10 +27,10 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(CountryregionId::value, CountryregionId::new); - public static PgType dbType = + public static PgType pgType = PgTypes.text.bimap(CountryregionId::new, CountryregionId::value); - public static PgType dbTypeArray = + public static PgType pgTypeArray = PgTypes.textArray.bimap( xs -> arrayMap.map(xs, CountryregionId::new, CountryregionId.class), xs -> arrayMap.map(xs, CountryregionId::value, String.class)); diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRepoImpl.java b/testers/pg/java/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRepoImpl.java index 6244fc7e47..daa41e01a7 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRepoImpl.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRepoImpl.java @@ -35,7 +35,7 @@ public Boolean deleteById(CountryregionId countryregioncode, Connection c) { return interpolate( Fragment.lit( "delete from \"person\".\"countryregion\" where \"countryregioncode\" = "), - Fragment.encode(CountryregionId.dbType, countryregioncode), + Fragment.encode(CountryregionId.pgType, countryregioncode), Fragment.lit("")) .update() .runUnchecked(c) @@ -47,7 +47,7 @@ public Integer deleteByIds(CountryregionId[] countryregioncodes, Connection c) { return interpolate( Fragment.lit( "delete\nfrom \"person\".\"countryregion\"\nwhere \"countryregioncode\" = ANY("), - Fragment.encode(CountryregionId.dbTypeArray, countryregioncodes), + Fragment.encode(CountryregionId.pgTypeArray, countryregioncodes), Fragment.lit(")")) .update() .runUnchecked(c); @@ -60,9 +60,9 @@ public CountryregionRow insert(CountryregionRow unsaved, Connection c) { "insert into \"person\".\"countryregion\"(\"countryregioncode\", \"name\"," + " \"modifieddate\")\n" + "values ("), - Fragment.encode(CountryregionId.dbType, unsaved.countryregioncode()), + Fragment.encode(CountryregionId.pgType, unsaved.countryregioncode()), Fragment.lit(", "), - Fragment.encode(Name.dbType, unsaved.name()), + Fragment.encode(Name.pgType, unsaved.name()), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate()), Fragment.lit( @@ -80,11 +80,11 @@ public CountryregionRow insert(CountryregionRowUnsaved unsaved, Connection c) { columns.add(Fragment.lit("\"countryregioncode\"")); values.add( interpolate( - Fragment.encode(CountryregionId.dbType, unsaved.countryregioncode()), + Fragment.encode(CountryregionId.pgType, unsaved.countryregioncode()), Fragment.lit(""))); columns.add(Fragment.lit("\"name\"")); values.add( - interpolate(Fragment.encode(Name.dbType, unsaved.name()), Fragment.lit("::varchar"))); + interpolate(Fragment.encode(Name.pgType, unsaved.name()), Fragment.lit("::varchar"))); unsaved .modifieddate() .visit( @@ -157,7 +157,7 @@ public Optional selectById(CountryregionId countryregioncode, "select \"countryregioncode\", \"name\", \"modifieddate\"\n" + "from \"person\".\"countryregion\"\n" + "where \"countryregioncode\" = "), - Fragment.encode(CountryregionId.dbType, countryregioncode), + Fragment.encode(CountryregionId.pgType, countryregioncode), Fragment.lit("")) .query(CountryregionRow._rowParser.first()) .runUnchecked(c); @@ -170,7 +170,7 @@ public List selectByIds(CountryregionId[] countryregioncodes, "select \"countryregioncode\", \"name\", \"modifieddate\"\n" + "from \"person\".\"countryregion\"\n" + "where \"countryregioncode\" = ANY("), - Fragment.encode(CountryregionId.dbTypeArray, countryregioncodes), + Fragment.encode(CountryregionId.pgTypeArray, countryregioncodes), Fragment.lit(")")) .query(CountryregionRow._rowParser.all()) .runUnchecked(c); @@ -200,11 +200,11 @@ public Boolean update(CountryregionRow row, Connection c) { ; return interpolate( Fragment.lit("update \"person\".\"countryregion\"\nset \"name\" = "), - Fragment.encode(Name.dbType, row.name()), + Fragment.encode(Name.pgType, row.name()), Fragment.lit("::varchar,\n\"modifieddate\" = "), Fragment.encode(PgTypes.timestamp, row.modifieddate()), Fragment.lit("::timestamp\nwhere \"countryregioncode\" = "), - Fragment.encode(CountryregionId.dbType, countryregioncode), + Fragment.encode(CountryregionId.pgType, countryregioncode), Fragment.lit("")) .update() .runUnchecked(c) @@ -218,9 +218,9 @@ public CountryregionRow upsert(CountryregionRow unsaved, Connection c) { "insert into \"person\".\"countryregion\"(\"countryregioncode\", \"name\"," + " \"modifieddate\")\n" + "values ("), - Fragment.encode(CountryregionId.dbType, unsaved.countryregioncode()), + Fragment.encode(CountryregionId.pgType, unsaved.countryregioncode()), Fragment.lit(", "), - Fragment.encode(Name.dbType, unsaved.name()), + Fragment.encode(Name.pgType, unsaved.name()), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate()), Fragment.lit( diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRow.java b/testers/pg/java/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRow.java index d0aa746a6c..7696518d72 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRow.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRow.java @@ -46,8 +46,8 @@ public CountryregionRow withModifieddate(LocalDateTime modifieddate) { public static RowParser _rowParser = RowParsers.of( - CountryregionId.dbType, - Name.dbType, + CountryregionId.pgType, + Name.pgType, PgTypes.timestamp, CountryregionRow::new, row -> new Object[] {row.countryregioncode(), row.name(), row.modifieddate()}); diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRowUnsaved.java b/testers/pg/java/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRowUnsaved.java index 3e94ea0bd9..9d358fecf8 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRowUnsaved.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRowUnsaved.java @@ -52,9 +52,9 @@ public CountryregionRowUnsaved withModifieddate(Defaulted modifie public static PgText pgText = PgText.instance( (row, sb) -> { - CountryregionId.dbType.text().unsafeEncode(row.countryregioncode, sb); + CountryregionId.pgType.text().unsafeEncode(row.countryregioncode, sb); sb.append(PgText.DELIMETER); - Name.dbType.text().unsafeEncode(row.name, sb); + Name.pgType.text().unsafeEncode(row.name, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(PgTypes.timestamp.text()).unsafeEncode(row.modifieddate, sb); }); diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressFields.java b/testers/pg/java/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressFields.java index 0ec38be1b8..0a8020e3ba 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressFields.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressFields.java @@ -46,7 +46,7 @@ public IdField businessentityid() { Optional.empty(), Optional.of("int4"), (row, value) -> row.withBusinessentityid(value), - BusinessentityId.dbType); + BusinessentityId.pgType); } public IdField emailaddressid() { diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressId.java b/testers/pg/java/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressId.java index 5a272891f3..0c6a4b5a8c 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressId.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressId.java @@ -26,7 +26,7 @@ public EmailaddressId withEmailaddressid(Integer emailaddressid) { public static RowParser _rowParser = RowParsers.of( - BusinessentityId.dbType, + BusinessentityId.pgType, PgTypes.int4, EmailaddressId::new, row -> new Object[] {row.businessentityid(), row.emailaddressid()}); diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRepoImpl.java b/testers/pg/java/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRepoImpl.java index 3f39f03920..184486470e 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRepoImpl.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRepoImpl.java @@ -36,7 +36,7 @@ public Boolean deleteById(EmailaddressId compositeId, Connection c) { return interpolate( Fragment.lit( "delete from \"person\".\"emailaddress\" where \"businessentityid\" = "), - Fragment.encode(BusinessentityId.dbType, compositeId.businessentityid()), + Fragment.encode(BusinessentityId.pgType, compositeId.businessentityid()), Fragment.lit(" AND \"emailaddressid\" = "), Fragment.encode(PgTypes.int4, compositeId.emailaddressid()), Fragment.lit("")) @@ -59,7 +59,7 @@ public Integer deleteByIds(EmailaddressId[] compositeIds, Connection c) { + "from \"person\".\"emailaddress\"\n" + "where (\"businessentityid\", \"emailaddressid\")\n" + "in (select * from unnest("), - Fragment.encode(BusinessentityId.dbTypeArray, businessentityid), + Fragment.encode(BusinessentityId.pgTypeArray, businessentityid), Fragment.lit(", "), Fragment.encode(PgTypes.int4Array, emailaddressid), Fragment.lit("))\n")) @@ -74,7 +74,7 @@ public EmailaddressRow insert(EmailaddressRow unsaved, Connection c) { "insert into \"person\".\"emailaddress\"(\"businessentityid\", \"emailaddressid\"," + " \"emailaddress\", \"rowguid\", \"modifieddate\")\n" + "values ("), - Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid()), + Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid()), Fragment.lit("::int4, "), Fragment.encode(PgTypes.int4, unsaved.emailaddressid()), Fragment.lit("::int4, "), @@ -100,7 +100,7 @@ public EmailaddressRow insert(EmailaddressRowUnsaved unsaved, Connection c) { columns.add(Fragment.lit("\"businessentityid\"")); values.add( interpolate( - Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid()), + Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid()), Fragment.lit("::int4"))); columns.add(Fragment.lit("\"emailaddress\"")); values.add( @@ -201,7 +201,7 @@ public Optional selectById(EmailaddressId compositeId, Connecti + " \"modifieddate\"\n" + "from \"person\".\"emailaddress\"\n" + "where \"businessentityid\" = "), - Fragment.encode(BusinessentityId.dbType, compositeId.businessentityid()), + Fragment.encode(BusinessentityId.pgType, compositeId.businessentityid()), Fragment.lit(" AND \"emailaddressid\" = "), Fragment.encode(PgTypes.int4, compositeId.emailaddressid()), Fragment.lit("")) @@ -224,7 +224,7 @@ public List selectByIds(EmailaddressId[] compositeIds, Connecti + "from \"person\".\"emailaddress\"\n" + "where (\"businessentityid\", \"emailaddressid\")\n" + "in (select * from unnest("), - Fragment.encode(BusinessentityId.dbTypeArray, businessentityid), + Fragment.encode(BusinessentityId.pgTypeArray, businessentityid), Fragment.lit(", "), Fragment.encode(PgTypes.int4Array, emailaddressid), Fragment.lit("))\n")) @@ -261,7 +261,7 @@ public Boolean update(EmailaddressRow row, Connection c) { Fragment.lit("::uuid,\n\"modifieddate\" = "), Fragment.encode(PgTypes.timestamp, row.modifieddate()), Fragment.lit("::timestamp\nwhere \"businessentityid\" = "), - Fragment.encode(BusinessentityId.dbType, compositeId.businessentityid()), + Fragment.encode(BusinessentityId.pgType, compositeId.businessentityid()), Fragment.lit(" AND \"emailaddressid\" = "), Fragment.encode(PgTypes.int4, compositeId.emailaddressid()), Fragment.lit("")) @@ -277,7 +277,7 @@ public EmailaddressRow upsert(EmailaddressRow unsaved, Connection c) { "insert into \"person\".\"emailaddress\"(\"businessentityid\", \"emailaddressid\"," + " \"emailaddress\", \"rowguid\", \"modifieddate\")\n" + "values ("), - Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid()), + Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid()), Fragment.lit("::int4, "), Fragment.encode(PgTypes.int4, unsaved.emailaddressid()), Fragment.lit("::int4, "), diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRow.java b/testers/pg/java/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRow.java index 55a4f0aaa2..70c1a4d251 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRow.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRow.java @@ -83,7 +83,7 @@ public EmailaddressRow withModifieddate(LocalDateTime modifieddate) { public static RowParser _rowParser = RowParsers.of( - BusinessentityId.dbType, + BusinessentityId.pgType, PgTypes.int4, PgTypes.text.opt(), PgTypes.uuid, diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRowUnsaved.java b/testers/pg/java/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRowUnsaved.java index 250998f4dc..e7da3aa6a8 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRowUnsaved.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRowUnsaved.java @@ -96,7 +96,7 @@ public EmailaddressRowUnsaved withModifieddate(Defaulted modified public static PgText pgText = PgText.instance( (row, sb) -> { - BusinessentityId.dbType.text().unsafeEncode(row.businessentityid, sb); + BusinessentityId.pgType.text().unsafeEncode(row.businessentityid, sb); sb.append(PgText.DELIMETER); PgTypes.text.opt().text().unsafeEncode(row.emailaddress, sb); sb.append(PgText.DELIMETER); diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/person/password/PasswordFields.java b/testers/pg/java/generated-and-checked-in/adventureworks/person/password/PasswordFields.java index 28f4db0727..0dba26bef5 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/person/password/PasswordFields.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/person/password/PasswordFields.java @@ -43,7 +43,7 @@ public IdField businessentityid() { Optional.empty(), Optional.of("int4"), (row, value) -> row.withBusinessentityid(value), - BusinessentityId.dbType); + BusinessentityId.pgType); } public Field passwordhash() { diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/person/password/PasswordRepoImpl.java b/testers/pg/java/generated-and-checked-in/adventureworks/person/password/PasswordRepoImpl.java index e2c1bf6b63..0bafc0bef3 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/person/password/PasswordRepoImpl.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/person/password/PasswordRepoImpl.java @@ -34,7 +34,7 @@ public DeleteBuilder delete() { public Boolean deleteById(BusinessentityId businessentityid, Connection c) { return interpolate( Fragment.lit("delete from \"person\".\"password\" where \"businessentityid\" = "), - Fragment.encode(BusinessentityId.dbType, businessentityid), + Fragment.encode(BusinessentityId.pgType, businessentityid), Fragment.lit("")) .update() .runUnchecked(c) @@ -45,7 +45,7 @@ public Boolean deleteById(BusinessentityId businessentityid, Connection c) { public Integer deleteByIds(BusinessentityId[] businessentityids, Connection c) { return interpolate( Fragment.lit("delete\nfrom \"person\".\"password\"\nwhere \"businessentityid\" = ANY("), - Fragment.encode(BusinessentityId.dbTypeArray, businessentityids), + Fragment.encode(BusinessentityId.pgTypeArray, businessentityids), Fragment.lit(")")) .update() .runUnchecked(c); @@ -58,7 +58,7 @@ public PasswordRow insert(PasswordRow unsaved, Connection c) { "insert into \"person\".\"password\"(\"businessentityid\", \"passwordhash\"," + " \"passwordsalt\", \"rowguid\", \"modifieddate\")\n" + "values ("), - Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid()), + Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid()), Fragment.lit("::int4, "), Fragment.encode(PgTypes.text, unsaved.passwordhash()), Fragment.lit(", "), @@ -84,7 +84,7 @@ public PasswordRow insert(PasswordRowUnsaved unsaved, Connection c) { columns.add(Fragment.lit("\"businessentityid\"")); values.add( interpolate( - Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid()), + Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid()), Fragment.lit("::int4"))); columns.add(Fragment.lit("\"passwordhash\"")); values.add( @@ -178,7 +178,7 @@ public Optional selectById(BusinessentityId businessentityid, Conne + " \"modifieddate\"\n" + "from \"person\".\"password\"\n" + "where \"businessentityid\" = "), - Fragment.encode(BusinessentityId.dbType, businessentityid), + Fragment.encode(BusinessentityId.pgType, businessentityid), Fragment.lit("")) .query(PasswordRow._rowParser.first()) .runUnchecked(c); @@ -192,7 +192,7 @@ public List selectByIds(BusinessentityId[] businessentityids, Conne + " \"modifieddate\"\n" + "from \"person\".\"password\"\n" + "where \"businessentityid\" = ANY("), - Fragment.encode(BusinessentityId.dbTypeArray, businessentityids), + Fragment.encode(BusinessentityId.pgTypeArray, businessentityids), Fragment.lit(")")) .query(PasswordRow._rowParser.all()) .runUnchecked(c); @@ -229,7 +229,7 @@ public Boolean update(PasswordRow row, Connection c) { Fragment.lit("::uuid,\n\"modifieddate\" = "), Fragment.encode(PgTypes.timestamp, row.modifieddate()), Fragment.lit("::timestamp\nwhere \"businessentityid\" = "), - Fragment.encode(BusinessentityId.dbType, businessentityid), + Fragment.encode(BusinessentityId.pgType, businessentityid), Fragment.lit("")) .update() .runUnchecked(c) @@ -243,7 +243,7 @@ public PasswordRow upsert(PasswordRow unsaved, Connection c) { "insert into \"person\".\"password\"(\"businessentityid\", \"passwordhash\"," + " \"passwordsalt\", \"rowguid\", \"modifieddate\")\n" + "values ("), - Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid()), + Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid()), Fragment.lit("::int4, "), Fragment.encode(PgTypes.text, unsaved.passwordhash()), Fragment.lit(", "), diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/person/password/PasswordRow.java b/testers/pg/java/generated-and-checked-in/adventureworks/person/password/PasswordRow.java index 6eebbaba0d..4dc742f091 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/person/password/PasswordRow.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/person/password/PasswordRow.java @@ -62,7 +62,7 @@ public PasswordRow withModifieddate(LocalDateTime modifieddate) { public static RowParser _rowParser = RowParsers.of( - BusinessentityId.dbType, + BusinessentityId.pgType, PgTypes.text, PgTypes.text, PgTypes.uuid, diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/person/password/PasswordRowUnsaved.java b/testers/pg/java/generated-and-checked-in/adventureworks/person/password/PasswordRowUnsaved.java index 19188d38d6..5342ab97d6 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/person/password/PasswordRowUnsaved.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/person/password/PasswordRowUnsaved.java @@ -74,7 +74,7 @@ public PasswordRowUnsaved withModifieddate(Defaulted modifieddate public static PgText pgText = PgText.instance( (row, sb) -> { - BusinessentityId.dbType.text().unsafeEncode(row.businessentityid, sb); + BusinessentityId.pgType.text().unsafeEncode(row.businessentityid, sb); sb.append(PgText.DELIMETER); PgTypes.text.text().unsafeEncode(row.passwordhash, sb); sb.append(PgText.DELIMETER); diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/person/person/PersonFields.java b/testers/pg/java/generated-and-checked-in/adventureworks/person/person/PersonFields.java index 3be24f3afa..306fa7f6dd 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/person/person/PersonFields.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/person/person/PersonFields.java @@ -8,9 +8,10 @@ import adventureworks.person.businessentity.BusinessentityFields; import adventureworks.person.businessentity.BusinessentityId; import adventureworks.person.businessentity.BusinessentityRow; -import adventureworks.public_.Name; import adventureworks.public_.NameStyle; import adventureworks.userdefined.FirstName; +import adventureworks.userdefined.LastName; +import adventureworks.userdefined.MiddleName; import dev.typr.foundations.PgTypes; import dev.typr.foundations.RowParser; import dev.typr.foundations.data.Xml; @@ -35,9 +36,9 @@ public class PersonFields String, NameStyle, /* max 8 chars */ String, /* user-picked */ - FirstName, - Name, - Name, /* max 10 chars */ + FirstName, /* user-picked */ + MiddleName, /* user-picked */ + LastName, /* max 10 chars */ String, Integer, Xml, @@ -61,7 +62,7 @@ public IdField businessentityid() { Optional.empty(), Optional.of("int4"), (row, value) -> row.withBusinessentityid(value), - BusinessentityId.dbType); + BusinessentityId.pgType); } public Field persontype() { @@ -83,7 +84,7 @@ public Field namestyle() { Optional.empty(), Optional.of("bool"), (row, value) -> row.withNamestyle(value), - NameStyle.dbType); + NameStyle.pgType); } public OptField title() { @@ -105,29 +106,29 @@ public OptField title() { Optional.empty(), Optional.of("varchar"), (row, value) -> row.withFirstname(value), - FirstName.dbType); + FirstName.pgType); } - public OptField middlename() { - return new OptField( + public OptField middlename() { + return new OptField( _path, "middlename", PersonRow::middlename, Optional.empty(), Optional.of("varchar"), (row, value) -> row.withMiddlename(value), - Name.dbType); + MiddleName.pgType); } - public Field lastname() { - return new Field( + public Field lastname() { + return new Field( _path, "lastname", PersonRow::lastname, Optional.empty(), Optional.of("varchar"), (row, value) -> row.withLastname(value), - Name.dbType); + LastName.pgType); } public OptField suffix() { @@ -262,12 +263,12 @@ public SqlExpr _3() { } @Override - public SqlExpr _6() { + public SqlExpr _6() { return middlename(); } @Override - public SqlExpr _7() { + public SqlExpr _7() { return lastname(); } diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/person/person/PersonRepoImpl.java b/testers/pg/java/generated-and-checked-in/adventureworks/person/person/PersonRepoImpl.java index cceaf9724d..f4f88d0864 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/person/person/PersonRepoImpl.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/person/person/PersonRepoImpl.java @@ -8,9 +8,10 @@ import static dev.typr.foundations.Fragment.interpolate; import adventureworks.person.businessentity.BusinessentityId; -import adventureworks.public_.Name; import adventureworks.public_.NameStyle; import adventureworks.userdefined.FirstName; +import adventureworks.userdefined.LastName; +import adventureworks.userdefined.MiddleName; import dev.typr.foundations.Fragment; import dev.typr.foundations.PgTypes; import dev.typr.foundations.dsl.DeleteBuilder; @@ -36,7 +37,7 @@ public DeleteBuilder delete() { public Boolean deleteById(BusinessentityId businessentityid, Connection c) { return interpolate( Fragment.lit("delete from \"person\".\"person\" where \"businessentityid\" = "), - Fragment.encode(BusinessentityId.dbType, businessentityid), + Fragment.encode(BusinessentityId.pgType, businessentityid), Fragment.lit("")) .update() .runUnchecked(c) @@ -47,7 +48,7 @@ public Boolean deleteById(BusinessentityId businessentityid, Connection c) { public Integer deleteByIds(BusinessentityId[] businessentityids, Connection c) { return interpolate( Fragment.lit("delete\nfrom \"person\".\"person\"\nwhere \"businessentityid\" = ANY("), - Fragment.encode(BusinessentityId.dbTypeArray, businessentityids), + Fragment.encode(BusinessentityId.pgTypeArray, businessentityids), Fragment.lit(")")) .update() .runUnchecked(c); @@ -62,19 +63,19 @@ public PersonRow insert(PersonRow unsaved, Connection c) { + " \"suffix\", \"emailpromotion\", \"additionalcontactinfo\"," + " \"demographics\", \"rowguid\", \"modifieddate\")\n" + "values ("), - Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid()), + Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid()), Fragment.lit("::int4, "), Fragment.encode(PgTypes.bpchar, unsaved.persontype()), Fragment.lit("::bpchar, "), - Fragment.encode(NameStyle.dbType, unsaved.namestyle()), + Fragment.encode(NameStyle.pgType, unsaved.namestyle()), Fragment.lit("::bool, "), Fragment.encode(PgTypes.text.opt(), unsaved.title()), Fragment.lit(", "), - Fragment.encode(FirstName.dbType, unsaved.firstname()), + Fragment.encode(FirstName.pgType, unsaved.firstname()), Fragment.lit("::varchar, "), - Fragment.encode(Name.dbType.opt(), unsaved.middlename()), + Fragment.encode(MiddleName.pgType.opt(), unsaved.middlename()), Fragment.lit("::varchar, "), - Fragment.encode(Name.dbType, unsaved.lastname()), + Fragment.encode(LastName.pgType, unsaved.lastname()), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.text.opt(), unsaved.suffix()), Fragment.lit(", "), @@ -106,7 +107,7 @@ public PersonRow insert(PersonRowUnsaved unsaved, Connection c) { columns.add(Fragment.lit("\"businessentityid\"")); values.add( interpolate( - Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid()), + Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid()), Fragment.lit("::int4"))); columns.add(Fragment.lit("\"persontype\"")); values.add( @@ -117,14 +118,16 @@ public PersonRow insert(PersonRowUnsaved unsaved, Connection c) { columns.add(Fragment.lit("\"firstname\"")); values.add( interpolate( - Fragment.encode(FirstName.dbType, unsaved.firstname()), Fragment.lit("::varchar"))); + Fragment.encode(FirstName.pgType, unsaved.firstname()), Fragment.lit("::varchar"))); columns.add(Fragment.lit("\"middlename\"")); values.add( interpolate( - Fragment.encode(Name.dbType.opt(), unsaved.middlename()), Fragment.lit("::varchar"))); + Fragment.encode(MiddleName.pgType.opt(), unsaved.middlename()), + Fragment.lit("::varchar"))); columns.add(Fragment.lit("\"lastname\"")); values.add( - interpolate(Fragment.encode(Name.dbType, unsaved.lastname()), Fragment.lit("::varchar"))); + interpolate( + Fragment.encode(LastName.pgType, unsaved.lastname()), Fragment.lit("::varchar"))); columns.add(Fragment.lit("\"suffix\"")); values.add( interpolate(Fragment.encode(PgTypes.text.opt(), unsaved.suffix()), Fragment.lit(""))); @@ -144,7 +147,7 @@ public PersonRow insert(PersonRowUnsaved unsaved, Connection c) { value -> { columns.add(Fragment.lit("\"namestyle\"")); values.add( - interpolate(Fragment.encode(NameStyle.dbType, value), Fragment.lit("::bool"))); + interpolate(Fragment.encode(NameStyle.pgType, value), Fragment.lit("::bool"))); }); ; unsaved @@ -249,7 +252,7 @@ public Optional selectById(BusinessentityId businessentityid, Connect + " \"rowguid\", \"modifieddate\"\n" + "from \"person\".\"person\"\n" + "where \"businessentityid\" = "), - Fragment.encode(BusinessentityId.dbType, businessentityid), + Fragment.encode(BusinessentityId.pgType, businessentityid), Fragment.lit("")) .query(PersonRow._rowParser.first()) .runUnchecked(c); @@ -265,7 +268,7 @@ public List selectByIds(BusinessentityId[] businessentityids, Connect + " \"rowguid\", \"modifieddate\"\n" + "from \"person\".\"person\"\n" + "where \"businessentityid\" = ANY("), - Fragment.encode(BusinessentityId.dbTypeArray, businessentityids), + Fragment.encode(BusinessentityId.pgTypeArray, businessentityids), Fragment.lit(")")) .query(PersonRow._rowParser.all()) .runUnchecked(c); @@ -293,15 +296,15 @@ public Boolean update(PersonRow row, Connection c) { Fragment.lit("update \"person\".\"person\"\nset \"persontype\" = "), Fragment.encode(PgTypes.bpchar, row.persontype()), Fragment.lit("::bpchar,\n\"namestyle\" = "), - Fragment.encode(NameStyle.dbType, row.namestyle()), + Fragment.encode(NameStyle.pgType, row.namestyle()), Fragment.lit("::bool,\n\"title\" = "), Fragment.encode(PgTypes.text.opt(), row.title()), Fragment.lit(",\n\"firstname\" = "), - Fragment.encode(FirstName.dbType, row.firstname()), + Fragment.encode(FirstName.pgType, row.firstname()), Fragment.lit("::varchar,\n\"middlename\" = "), - Fragment.encode(Name.dbType.opt(), row.middlename()), + Fragment.encode(MiddleName.pgType.opt(), row.middlename()), Fragment.lit("::varchar,\n\"lastname\" = "), - Fragment.encode(Name.dbType, row.lastname()), + Fragment.encode(LastName.pgType, row.lastname()), Fragment.lit("::varchar,\n\"suffix\" = "), Fragment.encode(PgTypes.text.opt(), row.suffix()), Fragment.lit(",\n\"emailpromotion\" = "), @@ -315,7 +318,7 @@ public Boolean update(PersonRow row, Connection c) { Fragment.lit("::uuid,\n\"modifieddate\" = "), Fragment.encode(PgTypes.timestamp, row.modifieddate()), Fragment.lit("::timestamp\nwhere \"businessentityid\" = "), - Fragment.encode(BusinessentityId.dbType, businessentityid), + Fragment.encode(BusinessentityId.pgType, businessentityid), Fragment.lit("")) .update() .runUnchecked(c) @@ -331,19 +334,19 @@ public PersonRow upsert(PersonRow unsaved, Connection c) { + " \"suffix\", \"emailpromotion\", \"additionalcontactinfo\"," + " \"demographics\", \"rowguid\", \"modifieddate\")\n" + "values ("), - Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid()), + Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid()), Fragment.lit("::int4, "), Fragment.encode(PgTypes.bpchar, unsaved.persontype()), Fragment.lit("::bpchar, "), - Fragment.encode(NameStyle.dbType, unsaved.namestyle()), + Fragment.encode(NameStyle.pgType, unsaved.namestyle()), Fragment.lit("::bool, "), Fragment.encode(PgTypes.text.opt(), unsaved.title()), Fragment.lit(", "), - Fragment.encode(FirstName.dbType, unsaved.firstname()), + Fragment.encode(FirstName.pgType, unsaved.firstname()), Fragment.lit("::varchar, "), - Fragment.encode(Name.dbType.opt(), unsaved.middlename()), + Fragment.encode(MiddleName.pgType.opt(), unsaved.middlename()), Fragment.lit("::varchar, "), - Fragment.encode(Name.dbType, unsaved.lastname()), + Fragment.encode(LastName.pgType, unsaved.lastname()), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.text.opt(), unsaved.suffix()), Fragment.lit(", "), diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/person/person/PersonRow.java b/testers/pg/java/generated-and-checked-in/adventureworks/person/person/PersonRow.java index dcf3b8305d..91e5720c75 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/person/person/PersonRow.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/person/person/PersonRow.java @@ -7,9 +7,10 @@ import adventureworks.customtypes.Defaulted; import adventureworks.person.businessentity.BusinessentityId; -import adventureworks.public_.Name; import adventureworks.public_.NameStyle; import adventureworks.userdefined.FirstName; +import adventureworks.userdefined.LastName; +import adventureworks.userdefined.MiddleName; import dev.typr.foundations.PgText; import dev.typr.foundations.PgTypes; import dev.typr.foundations.RowParser; @@ -48,9 +49,9 @@ public record PersonRow( /** First name of the person. */ /* user-picked */ FirstName firstname, /** Middle name or middle initial of the person. */ - Optional middlename, + Optional middlename, /** Last name of the person. */ - Name lastname, + /* user-picked */ LastName lastname, /** Surname suffix. For example, Sr. or Jr. */ Optional suffix, /** @@ -77,8 +78,8 @@ public record PersonRow( NameStyle, Optional, /* user-picked */ FirstName, - Optional, - Name, + Optional, /* user-picked */ + LastName, Optional, Integer, Optional, @@ -193,7 +194,7 @@ public PersonRow withFirstname(/* user-picked */ FirstName firstname) { ; /** Middle name or middle initial of the person. */ - public PersonRow withMiddlename(Optional middlename) { + public PersonRow withMiddlename(Optional middlename) { return new PersonRow( businessentityid, persontype, @@ -212,7 +213,7 @@ public PersonRow withMiddlename(Optional middlename) { ; /** Last name of the person. */ - public PersonRow withLastname(Name lastname) { + public PersonRow withLastname(/* user-picked */ LastName lastname) { return new PersonRow( businessentityid, persontype, @@ -354,13 +355,13 @@ public PersonRow withModifieddate(LocalDateTime modifieddate) { public static RowParser _rowParser = RowParsers.of( - BusinessentityId.dbType, + BusinessentityId.pgType, PgTypes.bpchar, - NameStyle.dbType, + NameStyle.pgType, PgTypes.text.opt(), - FirstName.dbType, - Name.dbType.opt(), - Name.dbType, + FirstName.pgType, + MiddleName.pgType.opt(), + LastName.pgType, PgTypes.text.opt(), PgTypes.int4, PgTypes.xml.opt(), @@ -443,13 +444,13 @@ public NameStyle _3() { ; @Override - public Optional _6() { + public Optional _6() { return middlename; } ; @Override - public Name _7() { + public /* user-picked */ LastName _7() { return lastname; } ; diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/person/person/PersonRowUnsaved.java b/testers/pg/java/generated-and-checked-in/adventureworks/person/person/PersonRowUnsaved.java index 9d4cb1b151..55146acac7 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/person/person/PersonRowUnsaved.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/person/person/PersonRowUnsaved.java @@ -8,9 +8,10 @@ import adventureworks.customtypes.Defaulted; import adventureworks.customtypes.Defaulted.UseDefault; import adventureworks.person.businessentity.BusinessentityId; -import adventureworks.public_.Name; import adventureworks.public_.NameStyle; import adventureworks.userdefined.FirstName; +import adventureworks.userdefined.LastName; +import adventureworks.userdefined.MiddleName; import dev.typr.foundations.PgText; import dev.typr.foundations.PgTypes; import dev.typr.foundations.data.Xml; @@ -38,9 +39,9 @@ public record PersonRowUnsaved( /** First name of the person. */ /* user-picked */ FirstName firstname, /** Middle name or middle initial of the person. */ - Optional middlename, + Optional middlename, /** Last name of the person. */ - Name lastname, + /* user-picked */ LastName lastname, /** Surname suffix. For example, Sr. or Jr. */ Optional suffix, /** Additional contact information about the person stored in xml format. */ @@ -83,7 +84,7 @@ public PersonRowUnsaved( /** First name of the person. */ /* user-picked */ FirstName firstname, /** Last name of the person. */ - Name lastname) { + /* user-picked */ LastName lastname) { this( businessentityid, persontype, @@ -187,7 +188,7 @@ public PersonRowUnsaved withFirstname(/* user-picked */ FirstName firstname) { ; /** Middle name or middle initial of the person. */ - public PersonRowUnsaved withMiddlename(Optional middlename) { + public PersonRowUnsaved withMiddlename(Optional middlename) { return new PersonRowUnsaved( businessentityid, persontype, @@ -206,7 +207,7 @@ public PersonRowUnsaved withMiddlename(Optional middlename) { ; /** Last name of the person. */ - public PersonRowUnsaved withLastname(Name lastname) { + public PersonRowUnsaved withLastname(/* user-picked */ LastName lastname) { return new PersonRowUnsaved( businessentityid, persontype, @@ -371,17 +372,17 @@ public PersonRowUnsaved withModifieddate(Defaulted modifieddate) public static PgText pgText = PgText.instance( (row, sb) -> { - BusinessentityId.dbType.text().unsafeEncode(row.businessentityid, sb); + BusinessentityId.pgType.text().unsafeEncode(row.businessentityid, sb); sb.append(PgText.DELIMETER); PgTypes.bpchar.text().unsafeEncode(row.persontype, sb); sb.append(PgText.DELIMETER); PgTypes.text.opt().text().unsafeEncode(row.title, sb); sb.append(PgText.DELIMETER); - FirstName.dbType.text().unsafeEncode(row.firstname, sb); + FirstName.pgType.text().unsafeEncode(row.firstname, sb); sb.append(PgText.DELIMETER); - Name.dbType.opt().text().unsafeEncode(row.middlename, sb); + MiddleName.pgType.opt().text().unsafeEncode(row.middlename, sb); sb.append(PgText.DELIMETER); - Name.dbType.text().unsafeEncode(row.lastname, sb); + LastName.pgType.text().unsafeEncode(row.lastname, sb); sb.append(PgText.DELIMETER); PgTypes.text.opt().text().unsafeEncode(row.suffix, sb); sb.append(PgText.DELIMETER); @@ -389,7 +390,7 @@ public PersonRowUnsaved withModifieddate(Defaulted modifieddate) sb.append(PgText.DELIMETER); PgTypes.xml.opt().text().unsafeEncode(row.demographics, sb); sb.append(PgText.DELIMETER); - Defaulted.pgText(NameStyle.dbType.text()).unsafeEncode(row.namestyle, sb); + Defaulted.pgText(NameStyle.pgType.text()).unsafeEncode(row.namestyle, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(PgTypes.int4.text()).unsafeEncode(row.emailpromotion, sb); sb.append(PgText.DELIMETER); diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceFields.java b/testers/pg/java/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceFields.java index 066acca51c..2344eb3d12 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceFields.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceFields.java @@ -51,7 +51,7 @@ public IdField stateprovinceid() { Optional.empty(), Optional.of("int4"), (row, value) -> row.withStateprovinceid(value), - StateprovinceId.dbType); + StateprovinceId.pgType); } public Field stateprovincecode() { @@ -73,7 +73,7 @@ public Field countryregioncode() { Optional.empty(), Optional.empty(), (row, value) -> row.withCountryregioncode(value), - CountryregionId.dbType); + CountryregionId.pgType); } public Field isonlystateprovinceflag() { @@ -84,7 +84,7 @@ public Field isonlystateprovinceflag() { Optional.empty(), Optional.of("bool"), (row, value) -> row.withIsonlystateprovinceflag(value), - Flag.dbType); + Flag.pgType); } public Field name() { @@ -95,7 +95,7 @@ public Field name() { Optional.empty(), Optional.of("varchar"), (row, value) -> row.withName(value), - Name.dbType); + Name.pgType); } public Field territoryid() { @@ -106,7 +106,7 @@ public Field territoryid() { Optional.empty(), Optional.of("int4"), (row, value) -> row.withTerritoryid(value), - SalesterritoryId.dbType); + SalesterritoryId.pgType); } public Field rowguid() { diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceId.java b/testers/pg/java/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceId.java index e5b643f4fc..ae33d30037 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceId.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceId.java @@ -27,10 +27,10 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(StateprovinceId::value, StateprovinceId::new); - public static PgType dbType = + public static PgType pgType = PgTypes.int4.bimap(StateprovinceId::new, StateprovinceId::value); - public static PgType dbTypeArray = + public static PgType pgTypeArray = PgTypes.int4Array.bimap( xs -> arrayMap.map(xs, StateprovinceId::new, StateprovinceId.class), xs -> arrayMap.map(xs, StateprovinceId::value, Integer.class)); diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRepoImpl.java b/testers/pg/java/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRepoImpl.java index 14c8d6dc4b..a228a418ea 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRepoImpl.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRepoImpl.java @@ -38,7 +38,7 @@ public Boolean deleteById(StateprovinceId stateprovinceid, Connection c) { return interpolate( Fragment.lit( "delete from \"person\".\"stateprovince\" where \"stateprovinceid\" = "), - Fragment.encode(StateprovinceId.dbType, stateprovinceid), + Fragment.encode(StateprovinceId.pgType, stateprovinceid), Fragment.lit("")) .update() .runUnchecked(c) @@ -50,7 +50,7 @@ public Integer deleteByIds(StateprovinceId[] stateprovinceids, Connection c) { return interpolate( Fragment.lit( "delete\nfrom \"person\".\"stateprovince\"\nwhere \"stateprovinceid\" = ANY("), - Fragment.encode(StateprovinceId.dbTypeArray, stateprovinceids), + Fragment.encode(StateprovinceId.pgTypeArray, stateprovinceids), Fragment.lit(")")) .update() .runUnchecked(c); @@ -64,17 +64,17 @@ public StateprovinceRow insert(StateprovinceRow unsaved, Connection c) { + " \"stateprovincecode\", \"countryregioncode\", \"isonlystateprovinceflag\"," + " \"name\", \"territoryid\", \"rowguid\", \"modifieddate\")\n" + "values ("), - Fragment.encode(StateprovinceId.dbType, unsaved.stateprovinceid()), + Fragment.encode(StateprovinceId.pgType, unsaved.stateprovinceid()), Fragment.lit("::int4, "), Fragment.encode(PgTypes.bpchar, unsaved.stateprovincecode()), Fragment.lit("::bpchar, "), - Fragment.encode(CountryregionId.dbType, unsaved.countryregioncode()), + Fragment.encode(CountryregionId.pgType, unsaved.countryregioncode()), Fragment.lit(", "), - Fragment.encode(Flag.dbType, unsaved.isonlystateprovinceflag()), + Fragment.encode(Flag.pgType, unsaved.isonlystateprovinceflag()), Fragment.lit("::bool, "), - Fragment.encode(Name.dbType, unsaved.name()), + Fragment.encode(Name.pgType, unsaved.name()), Fragment.lit("::varchar, "), - Fragment.encode(SalesterritoryId.dbType, unsaved.territoryid()), + Fragment.encode(SalesterritoryId.pgType, unsaved.territoryid()), Fragment.lit("::int4, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid()), Fragment.lit("::uuid, "), @@ -102,15 +102,15 @@ public StateprovinceRow insert(StateprovinceRowUnsaved unsaved, Connection c) { columns.add(Fragment.lit("\"countryregioncode\"")); values.add( interpolate( - Fragment.encode(CountryregionId.dbType, unsaved.countryregioncode()), + Fragment.encode(CountryregionId.pgType, unsaved.countryregioncode()), Fragment.lit(""))); columns.add(Fragment.lit("\"name\"")); values.add( - interpolate(Fragment.encode(Name.dbType, unsaved.name()), Fragment.lit("::varchar"))); + interpolate(Fragment.encode(Name.pgType, unsaved.name()), Fragment.lit("::varchar"))); columns.add(Fragment.lit("\"territoryid\"")); values.add( interpolate( - Fragment.encode(SalesterritoryId.dbType, unsaved.territoryid()), + Fragment.encode(SalesterritoryId.pgType, unsaved.territoryid()), Fragment.lit("::int4"))); unsaved .stateprovinceid() @@ -120,7 +120,7 @@ public StateprovinceRow insert(StateprovinceRowUnsaved unsaved, Connection c) { columns.add(Fragment.lit("\"stateprovinceid\"")); values.add( interpolate( - Fragment.encode(StateprovinceId.dbType, value), Fragment.lit("::int4"))); + Fragment.encode(StateprovinceId.pgType, value), Fragment.lit("::int4"))); }); ; unsaved @@ -129,7 +129,7 @@ public StateprovinceRow insert(StateprovinceRowUnsaved unsaved, Connection c) { () -> {}, value -> { columns.add(Fragment.lit("\"isonlystateprovinceflag\"")); - values.add(interpolate(Fragment.encode(Flag.dbType, value), Fragment.lit("::bool"))); + values.add(interpolate(Fragment.encode(Flag.pgType, value), Fragment.lit("::bool"))); }); ; unsaved @@ -223,7 +223,7 @@ public Optional selectById(StateprovinceId stateprovinceid, Co + " \"modifieddate\"\n" + "from \"person\".\"stateprovince\"\n" + "where \"stateprovinceid\" = "), - Fragment.encode(StateprovinceId.dbType, stateprovinceid), + Fragment.encode(StateprovinceId.pgType, stateprovinceid), Fragment.lit("")) .query(StateprovinceRow._rowParser.first()) .runUnchecked(c); @@ -238,7 +238,7 @@ public List selectByIds(StateprovinceId[] stateprovinceids, Co + " \"modifieddate\"\n" + "from \"person\".\"stateprovince\"\n" + "where \"stateprovinceid\" = ANY("), - Fragment.encode(StateprovinceId.dbTypeArray, stateprovinceids), + Fragment.encode(StateprovinceId.pgTypeArray, stateprovinceids), Fragment.lit(")")) .query(StateprovinceRow._rowParser.all()) .runUnchecked(c); @@ -270,19 +270,19 @@ public Boolean update(StateprovinceRow row, Connection c) { Fragment.lit("update \"person\".\"stateprovince\"\nset \"stateprovincecode\" = "), Fragment.encode(PgTypes.bpchar, row.stateprovincecode()), Fragment.lit("::bpchar,\n\"countryregioncode\" = "), - Fragment.encode(CountryregionId.dbType, row.countryregioncode()), + Fragment.encode(CountryregionId.pgType, row.countryregioncode()), Fragment.lit(",\n\"isonlystateprovinceflag\" = "), - Fragment.encode(Flag.dbType, row.isonlystateprovinceflag()), + Fragment.encode(Flag.pgType, row.isonlystateprovinceflag()), Fragment.lit("::bool,\n\"name\" = "), - Fragment.encode(Name.dbType, row.name()), + Fragment.encode(Name.pgType, row.name()), Fragment.lit("::varchar,\n\"territoryid\" = "), - Fragment.encode(SalesterritoryId.dbType, row.territoryid()), + Fragment.encode(SalesterritoryId.pgType, row.territoryid()), Fragment.lit("::int4,\n\"rowguid\" = "), Fragment.encode(PgTypes.uuid, row.rowguid()), Fragment.lit("::uuid,\n\"modifieddate\" = "), Fragment.encode(PgTypes.timestamp, row.modifieddate()), Fragment.lit("::timestamp\nwhere \"stateprovinceid\" = "), - Fragment.encode(StateprovinceId.dbType, stateprovinceid), + Fragment.encode(StateprovinceId.pgType, stateprovinceid), Fragment.lit("")) .update() .runUnchecked(c) @@ -297,17 +297,17 @@ public StateprovinceRow upsert(StateprovinceRow unsaved, Connection c) { + " \"stateprovincecode\", \"countryregioncode\", \"isonlystateprovinceflag\"," + " \"name\", \"territoryid\", \"rowguid\", \"modifieddate\")\n" + "values ("), - Fragment.encode(StateprovinceId.dbType, unsaved.stateprovinceid()), + Fragment.encode(StateprovinceId.pgType, unsaved.stateprovinceid()), Fragment.lit("::int4, "), Fragment.encode(PgTypes.bpchar, unsaved.stateprovincecode()), Fragment.lit("::bpchar, "), - Fragment.encode(CountryregionId.dbType, unsaved.countryregioncode()), + Fragment.encode(CountryregionId.pgType, unsaved.countryregioncode()), Fragment.lit(", "), - Fragment.encode(Flag.dbType, unsaved.isonlystateprovinceflag()), + Fragment.encode(Flag.pgType, unsaved.isonlystateprovinceflag()), Fragment.lit("::bool, "), - Fragment.encode(Name.dbType, unsaved.name()), + Fragment.encode(Name.pgType, unsaved.name()), Fragment.lit("::varchar, "), - Fragment.encode(SalesterritoryId.dbType, unsaved.territoryid()), + Fragment.encode(SalesterritoryId.pgType, unsaved.territoryid()), Fragment.lit("::int4, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid()), Fragment.lit("::uuid, "), diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRow.java b/testers/pg/java/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRow.java index 834ca6aab4..932166c0d6 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRow.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRow.java @@ -185,12 +185,12 @@ public StateprovinceRow withModifieddate(LocalDateTime modifieddate) { public static RowParser _rowParser = RowParsers.of( - StateprovinceId.dbType, + StateprovinceId.pgType, PgTypes.bpchar, - CountryregionId.dbType, - Flag.dbType, - Name.dbType, - SalesterritoryId.dbType, + CountryregionId.pgType, + Flag.pgType, + Name.pgType, + SalesterritoryId.pgType, PgTypes.uuid, PgTypes.timestamp, StateprovinceRow::new, diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRowUnsaved.java b/testers/pg/java/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRowUnsaved.java index cb88fbdad3..a492518fb6 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRowUnsaved.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRowUnsaved.java @@ -208,15 +208,15 @@ public StateprovinceRowUnsaved withModifieddate(Defaulted modifie (row, sb) -> { PgTypes.bpchar.text().unsafeEncode(row.stateprovincecode, sb); sb.append(PgText.DELIMETER); - CountryregionId.dbType.text().unsafeEncode(row.countryregioncode, sb); + CountryregionId.pgType.text().unsafeEncode(row.countryregioncode, sb); sb.append(PgText.DELIMETER); - Name.dbType.text().unsafeEncode(row.name, sb); + Name.pgType.text().unsafeEncode(row.name, sb); sb.append(PgText.DELIMETER); - SalesterritoryId.dbType.text().unsafeEncode(row.territoryid, sb); + SalesterritoryId.pgType.text().unsafeEncode(row.territoryid, sb); sb.append(PgText.DELIMETER); - Defaulted.pgText(StateprovinceId.dbType.text()).unsafeEncode(row.stateprovinceid, sb); + Defaulted.pgText(StateprovinceId.pgType.text()).unsafeEncode(row.stateprovinceid, sb); sb.append(PgText.DELIMETER); - Defaulted.pgText(Flag.dbType.text()).unsafeEncode(row.isonlystateprovinceflag, sb); + Defaulted.pgText(Flag.pgType.text()).unsafeEncode(row.isonlystateprovinceflag, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(PgTypes.uuid.text()).unsafeEncode(row.rowguid, sb); sb.append(PgText.DELIMETER); diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/person_detail/PersonDetailSqlRepoImpl.java b/testers/pg/java/generated-and-checked-in/adventureworks/person_detail/PersonDetailSqlRepoImpl.java index 81d9ee3477..c348aa5cfe 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/person_detail/PersonDetailSqlRepoImpl.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/person_detail/PersonDetailSqlRepoImpl.java @@ -40,7 +40,7 @@ public List apply( + " s.businessentityid\n" + " LEFT JOIN person.address a ON a.addressid = bea.addressid\n" + "where s.businessentityid = "), - Fragment.encode(BusinessentityId.dbType, businessentityid), + Fragment.encode(BusinessentityId.pgType, businessentityid), Fragment.lit("::int4\n and p.modifieddate > "), Fragment.encode(PgTypes.timestamp, modifiedAfter), Fragment.lit("::timestamp")) diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/person_detail/PersonDetailSqlRow.java b/testers/pg/java/generated-and-checked-in/adventureworks/person_detail/PersonDetailSqlRow.java index fb5cc6457b..81e5e6ebed 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/person_detail/PersonDetailSqlRow.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/person_detail/PersonDetailSqlRow.java @@ -6,8 +6,9 @@ package adventureworks.person_detail; import adventureworks.person.businessentity.BusinessentityId; -import adventureworks.public_.Name; import adventureworks.userdefined.FirstName; +import adventureworks.userdefined.LastName; +import adventureworks.userdefined.MiddleName; import dev.typr.foundations.PgTypes; import dev.typr.foundations.RowParser; import dev.typr.foundations.RowParsers; @@ -24,9 +25,9 @@ public record PersonDetailSqlRow( /** Points to {@link adventureworks.person.person.PersonRow#firstname()} */ /* user-picked */ FirstName firstname, /** Points to {@link adventureworks.person.person.PersonRow#middlename()} */ - Optional middlename, + Optional middlename, /** Points to {@link adventureworks.person.person.PersonRow#lastname()} */ - Name lastname, + /* user-picked */ LastName lastname, /** Points to {@link adventureworks.humanresources.employee.EmployeeRow#jobtitle()} */ String jobtitle, /** Points to {@link adventureworks.person.address.AddressRow#addressline1()} */ @@ -41,8 +42,8 @@ public record PersonDetailSqlRow( BusinessentityId, Optional, /* user-picked */ FirstName, - Optional, - Name, + Optional, /* user-picked */ + LastName, String, Optional, Optional, @@ -97,7 +98,7 @@ public PersonDetailSqlRow withFirstname(/* user-picked */ FirstName firstname) { ; /** Points to {@link adventureworks.person.person.PersonRow#middlename()} */ - public PersonDetailSqlRow withMiddlename(Optional middlename) { + public PersonDetailSqlRow withMiddlename(Optional middlename) { return new PersonDetailSqlRow( businessentityid, title, @@ -113,7 +114,7 @@ public PersonDetailSqlRow withMiddlename(Optional middlename) { ; /** Points to {@link adventureworks.person.person.PersonRow#lastname()} */ - public PersonDetailSqlRow withLastname(Name lastname) { + public PersonDetailSqlRow withLastname(/* user-picked */ LastName lastname) { return new PersonDetailSqlRow( businessentityid, title, @@ -210,11 +211,11 @@ public PersonDetailSqlRow withRowguid(Optional rowguid) { public static RowParser _rowParser = RowParsers.of( - BusinessentityId.dbType, + BusinessentityId.pgType, PgTypes.text.opt(), - FirstName.dbType, - Name.dbType.opt(), - Name.dbType, + FirstName.pgType, + MiddleName.pgType.opt(), + LastName.pgType, PgTypes.text, PgTypes.text.opt(), PgTypes.text.opt(), @@ -261,13 +262,13 @@ public Optional _10() { ; @Override - public Optional _4() { + public Optional _4() { return middlename; } ; @Override - public Name _5() { + public /* user-picked */ LastName _5() { return lastname; } ; diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/person_dynamic/PersonDynamicSqlRow.java b/testers/pg/java/generated-and-checked-in/adventureworks/person_dynamic/PersonDynamicSqlRow.java index 27c60168ba..62b52efb9c 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/person_dynamic/PersonDynamicSqlRow.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/person_dynamic/PersonDynamicSqlRow.java @@ -5,8 +5,9 @@ */ package adventureworks.person_dynamic; -import adventureworks.public_.Name; import adventureworks.userdefined.FirstName; +import adventureworks.userdefined.LastName; +import adventureworks.userdefined.MiddleName; import dev.typr.foundations.PgTypes; import dev.typr.foundations.RowParser; import dev.typr.foundations.RowParsers; @@ -20,11 +21,14 @@ public record PersonDynamicSqlRow( /** Points to {@link adventureworks.person.person.PersonRow#firstname()} */ /* user-picked */ FirstName firstname, /** Points to {@link adventureworks.person.person.PersonRow#middlename()} */ - Optional middlename, + Optional middlename, /** Points to {@link adventureworks.person.person.PersonRow#lastname()} */ - Name lastname) + /* user-picked */ LastName lastname) implements Tuple4< - Optional, /* user-picked */ FirstName, Optional, Name> { + Optional, /* user-picked */ + FirstName, + Optional, /* user-picked */ + LastName> { /** Points to {@link adventureworks.person.person.PersonRow#title()} */ public PersonDynamicSqlRow withTitle(Optional title) { return new PersonDynamicSqlRow(title, firstname, middlename, lastname); @@ -38,13 +42,13 @@ public PersonDynamicSqlRow withFirstname(/* user-picked */ FirstName firstname) ; /** Points to {@link adventureworks.person.person.PersonRow#middlename()} */ - public PersonDynamicSqlRow withMiddlename(Optional middlename) { + public PersonDynamicSqlRow withMiddlename(Optional middlename) { return new PersonDynamicSqlRow(title, firstname, middlename, lastname); } ; /** Points to {@link adventureworks.person.person.PersonRow#lastname()} */ - public PersonDynamicSqlRow withLastname(Name lastname) { + public PersonDynamicSqlRow withLastname(/* user-picked */ LastName lastname) { return new PersonDynamicSqlRow(title, firstname, middlename, lastname); } ; @@ -52,9 +56,9 @@ public PersonDynamicSqlRow withLastname(Name lastname) { public static RowParser _rowParser = RowParsers.of( PgTypes.text.opt(), - FirstName.dbType, - Name.dbType.opt(), - Name.dbType, + FirstName.pgType, + MiddleName.pgType.opt(), + LastName.pgType, PersonDynamicSqlRow::new, row -> new Object[] {row.title(), row.firstname(), row.middlename(), row.lastname()}); ; @@ -72,13 +76,13 @@ public PersonDynamicSqlRow withLastname(Name lastname) { ; @Override - public Optional _3() { + public Optional _3() { return middlename; } ; @Override - public Name _4() { + public /* user-picked */ LastName _4() { return lastname; } ; diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/person_row_join/PersonRowJoinSqlRow.java b/testers/pg/java/generated-and-checked-in/adventureworks/person_row_join/PersonRowJoinSqlRow.java index 9be515a3fa..86d7170528 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/person_row_join/PersonRowJoinSqlRow.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/person_row_join/PersonRowJoinSqlRow.java @@ -36,7 +36,7 @@ public PersonRowJoinSqlRow withEmails(Optional emails) { public static RowParser _rowParser = RowParsers.of( - BusinessentityId.dbType, + BusinessentityId.pgType, PgTypes.recordArray.opt(), PgTypes.recordArray.opt(), PersonRowJoinSqlRow::new, diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/precisetypes/PaddedString10.java b/testers/pg/java/generated-and-checked-in/adventureworks/precisetypes/PaddedString10.java index 3fedd789a3..869c0cc1d8 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/precisetypes/PaddedString10.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/precisetypes/PaddedString10.java @@ -32,14 +32,6 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(PaddedString10::value, PaddedString10::new); - public static PgType dbType = - PgTypes.bpchar.bimap(PaddedString10::new, PaddedString10::value); - - public static PgType dbTypeArray = - PgTypes.bpcharArray.bimap( - xs -> arrayMap.map(xs, PaddedString10::new, PaddedString10.class), - xs -> arrayMap.map(xs, PaddedString10::value, String.class)); - public static Optional of(String value) { return (value.length() <= 10 ? Optional.of(new PaddedString10(String.format("%-10s", value))) @@ -47,6 +39,14 @@ public static Optional of(String value) { } ; + public static PgType pgType = + PgTypes.bpchar.bimap(PaddedString10::new, PaddedString10::value); + + public static PgType pgTypeArray = + PgTypes.bpcharArray.bimap( + xs -> arrayMap.map(xs, PaddedString10::new, PaddedString10.class), + xs -> arrayMap.map(xs, PaddedString10::value, String.class)); + public static PaddedString10 unsafeForce(String value) { if (value.length() > 10) { throw new IllegalArgumentException("Value length ${value.length()} exceeds fixed length 10"); diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/precisetypes/PaddedString3.java b/testers/pg/java/generated-and-checked-in/adventureworks/precisetypes/PaddedString3.java index f75c620a71..6677c3eb7c 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/precisetypes/PaddedString3.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/precisetypes/PaddedString3.java @@ -32,14 +32,6 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(PaddedString3::value, PaddedString3::new); - public static PgType dbType = - PgTypes.bpchar.bimap(PaddedString3::new, PaddedString3::value); - - public static PgType dbTypeArray = - PgTypes.bpcharArray.bimap( - xs -> arrayMap.map(xs, PaddedString3::new, PaddedString3.class), - xs -> arrayMap.map(xs, PaddedString3::value, String.class)); - public static Optional of(String value) { return (value.length() <= 3 ? Optional.of(new PaddedString3(String.format("%-3s", value))) @@ -47,6 +39,14 @@ public static Optional of(String value) { } ; + public static PgType pgType = + PgTypes.bpchar.bimap(PaddedString3::new, PaddedString3::value); + + public static PgType pgTypeArray = + PgTypes.bpcharArray.bimap( + xs -> arrayMap.map(xs, PaddedString3::new, PaddedString3.class), + xs -> arrayMap.map(xs, PaddedString3::value, String.class)); + public static PaddedString3 unsafeForce(String value) { if (value.length() > 3) { throw new IllegalArgumentException("Value length ${value.length()} exceeds fixed length 3"); diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/precisetypes/String10.java b/testers/pg/java/generated-and-checked-in/adventureworks/precisetypes/String10.java index 483fb8c18c..dc4f008fd1 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/precisetypes/String10.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/precisetypes/String10.java @@ -32,18 +32,18 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(String10::value, String10::new); - public static PgType dbType = PgTypes.text.bimap(String10::new, String10::value); - - public static PgType dbTypeArray = - PgTypes.textArray.bimap( - xs -> arrayMap.map(xs, String10::new, String10.class), - xs -> arrayMap.map(xs, String10::value, String.class)); - public static Optional of(String value) { return (value.length() <= 10 ? Optional.of(new String10(value)) : Optional.empty()); } ; + public static PgType pgType = PgTypes.text.bimap(String10::new, String10::value); + + public static PgType pgTypeArray = + PgTypes.textArray.bimap( + xs -> arrayMap.map(xs, String10::new, String10.class), + xs -> arrayMap.map(xs, String10::value, String.class)); + public static String10 truncate(String value) { return new String10((value.length() <= 10 ? value : value.substring(0, 10))); } diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/precisetypes/String100.java b/testers/pg/java/generated-and-checked-in/adventureworks/precisetypes/String100.java index 7ba08eca7d..6ff32fb988 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/precisetypes/String100.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/precisetypes/String100.java @@ -32,18 +32,18 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(String100::value, String100::new); - public static PgType dbType = PgTypes.text.bimap(String100::new, String100::value); - - public static PgType dbTypeArray = - PgTypes.textArray.bimap( - xs -> arrayMap.map(xs, String100::new, String100.class), - xs -> arrayMap.map(xs, String100::value, String.class)); - public static Optional of(String value) { return (value.length() <= 100 ? Optional.of(new String100(value)) : Optional.empty()); } ; + public static PgType pgType = PgTypes.text.bimap(String100::new, String100::value); + + public static PgType pgTypeArray = + PgTypes.textArray.bimap( + xs -> arrayMap.map(xs, String100::new, String100.class), + xs -> arrayMap.map(xs, String100::value, String.class)); + public static String100 truncate(String value) { return new String100((value.length() <= 100 ? value : value.substring(0, 100))); } diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/precisetypes/String20.java b/testers/pg/java/generated-and-checked-in/adventureworks/precisetypes/String20.java index d211b44efe..1bf8d187a1 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/precisetypes/String20.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/precisetypes/String20.java @@ -32,18 +32,18 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(String20::value, String20::new); - public static PgType dbType = PgTypes.text.bimap(String20::new, String20::value); - - public static PgType dbTypeArray = - PgTypes.textArray.bimap( - xs -> arrayMap.map(xs, String20::new, String20.class), - xs -> arrayMap.map(xs, String20::value, String.class)); - public static Optional of(String value) { return (value.length() <= 20 ? Optional.of(new String20(value)) : Optional.empty()); } ; + public static PgType pgType = PgTypes.text.bimap(String20::new, String20::value); + + public static PgType pgTypeArray = + PgTypes.textArray.bimap( + xs -> arrayMap.map(xs, String20::new, String20.class), + xs -> arrayMap.map(xs, String20::value, String.class)); + public static String20 truncate(String value) { return new String20((value.length() <= 20 ? value : value.substring(0, 20))); } diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/precisetypes/String255.java b/testers/pg/java/generated-and-checked-in/adventureworks/precisetypes/String255.java index 71b708bd75..a331659fb5 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/precisetypes/String255.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/precisetypes/String255.java @@ -32,18 +32,18 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(String255::value, String255::new); - public static PgType dbType = PgTypes.text.bimap(String255::new, String255::value); - - public static PgType dbTypeArray = - PgTypes.textArray.bimap( - xs -> arrayMap.map(xs, String255::new, String255.class), - xs -> arrayMap.map(xs, String255::value, String.class)); - public static Optional of(String value) { return (value.length() <= 255 ? Optional.of(new String255(value)) : Optional.empty()); } ; + public static PgType pgType = PgTypes.text.bimap(String255::new, String255::value); + + public static PgType pgTypeArray = + PgTypes.textArray.bimap( + xs -> arrayMap.map(xs, String255::new, String255.class), + xs -> arrayMap.map(xs, String255::value, String.class)); + public static String255 truncate(String value) { return new String255((value.length() <= 255 ? value : value.substring(0, 255))); } diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/precisetypes/String50.java b/testers/pg/java/generated-and-checked-in/adventureworks/precisetypes/String50.java index 9a43bd4f9c..17a9e30286 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/precisetypes/String50.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/precisetypes/String50.java @@ -32,18 +32,18 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(String50::value, String50::new); - public static PgType dbType = PgTypes.text.bimap(String50::new, String50::value); - - public static PgType dbTypeArray = - PgTypes.textArray.bimap( - xs -> arrayMap.map(xs, String50::new, String50.class), - xs -> arrayMap.map(xs, String50::value, String.class)); - public static Optional of(String value) { return (value.length() <= 50 ? Optional.of(new String50(value)) : Optional.empty()); } ; + public static PgType pgType = PgTypes.text.bimap(String50::new, String50::value); + + public static PgType pgTypeArray = + PgTypes.textArray.bimap( + xs -> arrayMap.map(xs, String50::new, String50.class), + xs -> arrayMap.map(xs, String50::value, String.class)); + public static String50 truncate(String value) { return new String50((value.length() <= 50 ? value : value.substring(0, 50))); } diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/production/product/ProductFields.java b/testers/pg/java/generated-and-checked-in/adventureworks/production/product/ProductFields.java index 8f5f14222b..cf811cf87f 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/production/product/ProductFields.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/production/product/ProductFields.java @@ -78,7 +78,7 @@ public IdField productid() { Optional.empty(), Optional.of("int4"), (row, value) -> row.withProductid(value), - ProductId.dbType); + ProductId.pgType); } public Field name() { @@ -89,7 +89,7 @@ public Field name() { Optional.empty(), Optional.of("varchar"), (row, value) -> row.withName(value), - Name.dbType); + Name.pgType); } public Field productnumber() { @@ -111,7 +111,7 @@ public Field makeflag() { Optional.empty(), Optional.of("bool"), (row, value) -> row.withMakeflag(value), - Flag.dbType); + Flag.pgType); } public Field finishedgoodsflag() { @@ -122,7 +122,7 @@ public Field finishedgoodsflag() { Optional.empty(), Optional.of("bool"), (row, value) -> row.withFinishedgoodsflag(value), - Flag.dbType); + Flag.pgType); } public OptField color() { @@ -199,7 +199,7 @@ public OptField sizeunitmeasurecode() { Optional.empty(), Optional.of("bpchar"), (row, value) -> row.withSizeunitmeasurecode(value), - UnitmeasureId.dbType); + UnitmeasureId.pgType); } public OptField weightunitmeasurecode() { @@ -210,7 +210,7 @@ public OptField weightunitmeasurecode() { Optional.empty(), Optional.of("bpchar"), (row, value) -> row.withWeightunitmeasurecode(value), - UnitmeasureId.dbType); + UnitmeasureId.pgType); } public OptField weight() { @@ -276,7 +276,7 @@ public OptField productsubcategoryid() { Optional.empty(), Optional.of("int4"), (row, value) -> row.withProductsubcategoryid(value), - ProductsubcategoryId.dbType); + ProductsubcategoryId.pgType); } public OptField productmodelid() { @@ -287,7 +287,7 @@ public OptField productmodelid() { Optional.empty(), Optional.of("int4"), (row, value) -> row.withProductmodelid(value), - ProductmodelId.dbType); + ProductmodelId.pgType); } public Field sellstartdate() { diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/production/product/ProductId.java b/testers/pg/java/generated-and-checked-in/adventureworks/production/product/ProductId.java index 0fb05b3ea5..03c9d538a3 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/production/product/ProductId.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/production/product/ProductId.java @@ -27,9 +27,9 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(ProductId::value, ProductId::new); - public static PgType dbType = PgTypes.int4.bimap(ProductId::new, ProductId::value); + public static PgType pgType = PgTypes.int4.bimap(ProductId::new, ProductId::value); - public static PgType dbTypeArray = + public static PgType pgTypeArray = PgTypes.int4Array.bimap( xs -> arrayMap.map(xs, ProductId::new, ProductId.class), xs -> arrayMap.map(xs, ProductId::value, Integer.class)); diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/production/product/ProductRepoImpl.java b/testers/pg/java/generated-and-checked-in/adventureworks/production/product/ProductRepoImpl.java index 96b0ce18a6..fa52845f10 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/production/product/ProductRepoImpl.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/production/product/ProductRepoImpl.java @@ -38,7 +38,7 @@ public DeleteBuilder delete() { public Boolean deleteById(ProductId productid, Connection c) { return interpolate( Fragment.lit("delete from \"production\".\"product\" where \"productid\" = "), - Fragment.encode(ProductId.dbType, productid), + Fragment.encode(ProductId.pgType, productid), Fragment.lit("")) .update() .runUnchecked(c) @@ -49,7 +49,7 @@ public Boolean deleteById(ProductId productid, Connection c) { public Integer deleteByIds(ProductId[] productids, Connection c) { return interpolate( Fragment.lit("delete\nfrom \"production\".\"product\"\nwhere \"productid\" = ANY("), - Fragment.encode(ProductId.dbTypeArray, productids), + Fragment.encode(ProductId.pgTypeArray, productids), Fragment.lit(")")) .update() .runUnchecked(c); @@ -67,15 +67,15 @@ public ProductRow insert(ProductRow unsaved, Connection c) { + " \"productsubcategoryid\", \"productmodelid\", \"sellstartdate\"," + " \"sellenddate\", \"discontinueddate\", \"rowguid\", \"modifieddate\")\n" + "values ("), - Fragment.encode(ProductId.dbType, unsaved.productid()), + Fragment.encode(ProductId.pgType, unsaved.productid()), Fragment.lit("::int4, "), - Fragment.encode(Name.dbType, unsaved.name()), + Fragment.encode(Name.pgType, unsaved.name()), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.text, unsaved.productnumber()), Fragment.lit(", "), - Fragment.encode(Flag.dbType, unsaved.makeflag()), + Fragment.encode(Flag.pgType, unsaved.makeflag()), Fragment.lit("::bool, "), - Fragment.encode(Flag.dbType, unsaved.finishedgoodsflag()), + Fragment.encode(Flag.pgType, unsaved.finishedgoodsflag()), Fragment.lit("::bool, "), Fragment.encode(PgTypes.text.opt(), unsaved.color()), Fragment.lit(", "), @@ -89,9 +89,9 @@ public ProductRow insert(ProductRow unsaved, Connection c) { Fragment.lit("::numeric, "), Fragment.encode(PgTypes.text.opt(), unsaved.size()), Fragment.lit(", "), - Fragment.encode(UnitmeasureId.dbType.opt(), unsaved.sizeunitmeasurecode()), + Fragment.encode(UnitmeasureId.pgType.opt(), unsaved.sizeunitmeasurecode()), Fragment.lit("::bpchar, "), - Fragment.encode(UnitmeasureId.dbType.opt(), unsaved.weightunitmeasurecode()), + Fragment.encode(UnitmeasureId.pgType.opt(), unsaved.weightunitmeasurecode()), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.numeric.opt(), unsaved.weight()), Fragment.lit("::numeric, "), @@ -103,9 +103,9 @@ public ProductRow insert(ProductRow unsaved, Connection c) { Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.bpchar.opt(), unsaved.style()), Fragment.lit("::bpchar, "), - Fragment.encode(ProductsubcategoryId.dbType.opt(), unsaved.productsubcategoryid()), + Fragment.encode(ProductsubcategoryId.pgType.opt(), unsaved.productsubcategoryid()), Fragment.lit("::int4, "), - Fragment.encode(ProductmodelId.dbType.opt(), unsaved.productmodelid()), + Fragment.encode(ProductmodelId.pgType.opt(), unsaved.productmodelid()), Fragment.lit("::int4, "), Fragment.encode(PgTypes.timestamp, unsaved.sellstartdate()), Fragment.lit("::timestamp, "), @@ -137,7 +137,7 @@ public ProductRow insert(ProductRowUnsaved unsaved, Connection c) { ; columns.add(Fragment.lit("\"name\"")); values.add( - interpolate(Fragment.encode(Name.dbType, unsaved.name()), Fragment.lit("::varchar"))); + interpolate(Fragment.encode(Name.pgType, unsaved.name()), Fragment.lit("::varchar"))); columns.add(Fragment.lit("\"productnumber\"")); values.add( interpolate(Fragment.encode(PgTypes.text, unsaved.productnumber()), Fragment.lit(""))); @@ -163,12 +163,12 @@ public ProductRow insert(ProductRowUnsaved unsaved, Connection c) { columns.add(Fragment.lit("\"sizeunitmeasurecode\"")); values.add( interpolate( - Fragment.encode(UnitmeasureId.dbType.opt(), unsaved.sizeunitmeasurecode()), + Fragment.encode(UnitmeasureId.pgType.opt(), unsaved.sizeunitmeasurecode()), Fragment.lit("::bpchar"))); columns.add(Fragment.lit("\"weightunitmeasurecode\"")); values.add( interpolate( - Fragment.encode(UnitmeasureId.dbType.opt(), unsaved.weightunitmeasurecode()), + Fragment.encode(UnitmeasureId.pgType.opt(), unsaved.weightunitmeasurecode()), Fragment.lit("::bpchar"))); columns.add(Fragment.lit("\"weight\"")); values.add( @@ -194,12 +194,12 @@ public ProductRow insert(ProductRowUnsaved unsaved, Connection c) { columns.add(Fragment.lit("\"productsubcategoryid\"")); values.add( interpolate( - Fragment.encode(ProductsubcategoryId.dbType.opt(), unsaved.productsubcategoryid()), + Fragment.encode(ProductsubcategoryId.pgType.opt(), unsaved.productsubcategoryid()), Fragment.lit("::int4"))); columns.add(Fragment.lit("\"productmodelid\"")); values.add( interpolate( - Fragment.encode(ProductmodelId.dbType.opt(), unsaved.productmodelid()), + Fragment.encode(ProductmodelId.pgType.opt(), unsaved.productmodelid()), Fragment.lit("::int4"))); columns.add(Fragment.lit("\"sellstartdate\"")); values.add( @@ -223,7 +223,7 @@ public ProductRow insert(ProductRowUnsaved unsaved, Connection c) { value -> { columns.add(Fragment.lit("\"productid\"")); values.add( - interpolate(Fragment.encode(ProductId.dbType, value), Fragment.lit("::int4"))); + interpolate(Fragment.encode(ProductId.pgType, value), Fragment.lit("::int4"))); }); ; unsaved @@ -232,7 +232,7 @@ public ProductRow insert(ProductRowUnsaved unsaved, Connection c) { () -> {}, value -> { columns.add(Fragment.lit("\"makeflag\"")); - values.add(interpolate(Fragment.encode(Flag.dbType, value), Fragment.lit("::bool"))); + values.add(interpolate(Fragment.encode(Flag.pgType, value), Fragment.lit("::bool"))); }); ; unsaved @@ -241,7 +241,7 @@ public ProductRow insert(ProductRowUnsaved unsaved, Connection c) { () -> {}, value -> { columns.add(Fragment.lit("\"finishedgoodsflag\"")); - values.add(interpolate(Fragment.encode(Flag.dbType, value), Fragment.lit("::bool"))); + values.add(interpolate(Fragment.encode(Flag.pgType, value), Fragment.lit("::bool"))); }); ; unsaved @@ -355,7 +355,7 @@ public Optional selectById(ProductId productid, Connection c) { + " \"discontinueddate\", \"rowguid\", \"modifieddate\"\n" + "from \"production\".\"product\"\n" + "where \"productid\" = "), - Fragment.encode(ProductId.dbType, productid), + Fragment.encode(ProductId.pgType, productid), Fragment.lit("")) .query(ProductRow._rowParser.first()) .runUnchecked(c); @@ -374,7 +374,7 @@ public List selectByIds(ProductId[] productids, Connection c) { + " \"discontinueddate\", \"rowguid\", \"modifieddate\"\n" + "from \"production\".\"product\"\n" + "where \"productid\" = ANY("), - Fragment.encode(ProductId.dbTypeArray, productids), + Fragment.encode(ProductId.pgTypeArray, productids), Fragment.lit(")")) .query(ProductRow._rowParser.all()) .runUnchecked(c); @@ -402,13 +402,13 @@ public Boolean update(ProductRow row, Connection c) { ; return interpolate( Fragment.lit("update \"production\".\"product\"\nset \"name\" = "), - Fragment.encode(Name.dbType, row.name()), + Fragment.encode(Name.pgType, row.name()), Fragment.lit("::varchar,\n\"productnumber\" = "), Fragment.encode(PgTypes.text, row.productnumber()), Fragment.lit(",\n\"makeflag\" = "), - Fragment.encode(Flag.dbType, row.makeflag()), + Fragment.encode(Flag.pgType, row.makeflag()), Fragment.lit("::bool,\n\"finishedgoodsflag\" = "), - Fragment.encode(Flag.dbType, row.finishedgoodsflag()), + Fragment.encode(Flag.pgType, row.finishedgoodsflag()), Fragment.lit("::bool,\n\"color\" = "), Fragment.encode(PgTypes.text.opt(), row.color()), Fragment.lit(",\n\"safetystocklevel\" = "), @@ -422,9 +422,9 @@ public Boolean update(ProductRow row, Connection c) { Fragment.lit("::numeric,\n\"size\" = "), Fragment.encode(PgTypes.text.opt(), row.size()), Fragment.lit(",\n\"sizeunitmeasurecode\" = "), - Fragment.encode(UnitmeasureId.dbType.opt(), row.sizeunitmeasurecode()), + Fragment.encode(UnitmeasureId.pgType.opt(), row.sizeunitmeasurecode()), Fragment.lit("::bpchar,\n\"weightunitmeasurecode\" = "), - Fragment.encode(UnitmeasureId.dbType.opt(), row.weightunitmeasurecode()), + Fragment.encode(UnitmeasureId.pgType.opt(), row.weightunitmeasurecode()), Fragment.lit("::bpchar,\n\"weight\" = "), Fragment.encode(PgTypes.numeric.opt(), row.weight()), Fragment.lit("::numeric,\n\"daystomanufacture\" = "), @@ -436,9 +436,9 @@ public Boolean update(ProductRow row, Connection c) { Fragment.lit("::bpchar,\n\"style\" = "), Fragment.encode(PgTypes.bpchar.opt(), row.style()), Fragment.lit("::bpchar,\n\"productsubcategoryid\" = "), - Fragment.encode(ProductsubcategoryId.dbType.opt(), row.productsubcategoryid()), + Fragment.encode(ProductsubcategoryId.pgType.opt(), row.productsubcategoryid()), Fragment.lit("::int4,\n\"productmodelid\" = "), - Fragment.encode(ProductmodelId.dbType.opt(), row.productmodelid()), + Fragment.encode(ProductmodelId.pgType.opt(), row.productmodelid()), Fragment.lit("::int4,\n\"sellstartdate\" = "), Fragment.encode(PgTypes.timestamp, row.sellstartdate()), Fragment.lit("::timestamp,\n\"sellenddate\" = "), @@ -450,7 +450,7 @@ public Boolean update(ProductRow row, Connection c) { Fragment.lit("::uuid,\n\"modifieddate\" = "), Fragment.encode(PgTypes.timestamp, row.modifieddate()), Fragment.lit("::timestamp\nwhere \"productid\" = "), - Fragment.encode(ProductId.dbType, productid), + Fragment.encode(ProductId.pgType, productid), Fragment.lit("")) .update() .runUnchecked(c) @@ -469,15 +469,15 @@ public ProductRow upsert(ProductRow unsaved, Connection c) { + " \"productsubcategoryid\", \"productmodelid\", \"sellstartdate\"," + " \"sellenddate\", \"discontinueddate\", \"rowguid\", \"modifieddate\")\n" + "values ("), - Fragment.encode(ProductId.dbType, unsaved.productid()), + Fragment.encode(ProductId.pgType, unsaved.productid()), Fragment.lit("::int4, "), - Fragment.encode(Name.dbType, unsaved.name()), + Fragment.encode(Name.pgType, unsaved.name()), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.text, unsaved.productnumber()), Fragment.lit(", "), - Fragment.encode(Flag.dbType, unsaved.makeflag()), + Fragment.encode(Flag.pgType, unsaved.makeflag()), Fragment.lit("::bool, "), - Fragment.encode(Flag.dbType, unsaved.finishedgoodsflag()), + Fragment.encode(Flag.pgType, unsaved.finishedgoodsflag()), Fragment.lit("::bool, "), Fragment.encode(PgTypes.text.opt(), unsaved.color()), Fragment.lit(", "), @@ -491,9 +491,9 @@ public ProductRow upsert(ProductRow unsaved, Connection c) { Fragment.lit("::numeric, "), Fragment.encode(PgTypes.text.opt(), unsaved.size()), Fragment.lit(", "), - Fragment.encode(UnitmeasureId.dbType.opt(), unsaved.sizeunitmeasurecode()), + Fragment.encode(UnitmeasureId.pgType.opt(), unsaved.sizeunitmeasurecode()), Fragment.lit("::bpchar, "), - Fragment.encode(UnitmeasureId.dbType.opt(), unsaved.weightunitmeasurecode()), + Fragment.encode(UnitmeasureId.pgType.opt(), unsaved.weightunitmeasurecode()), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.numeric.opt(), unsaved.weight()), Fragment.lit("::numeric, "), @@ -505,9 +505,9 @@ public ProductRow upsert(ProductRow unsaved, Connection c) { Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.bpchar.opt(), unsaved.style()), Fragment.lit("::bpchar, "), - Fragment.encode(ProductsubcategoryId.dbType.opt(), unsaved.productsubcategoryid()), + Fragment.encode(ProductsubcategoryId.pgType.opt(), unsaved.productsubcategoryid()), Fragment.lit("::int4, "), - Fragment.encode(ProductmodelId.dbType.opt(), unsaved.productmodelid()), + Fragment.encode(ProductmodelId.pgType.opt(), unsaved.productmodelid()), Fragment.lit("::int4, "), Fragment.encode(PgTypes.timestamp, unsaved.sellstartdate()), Fragment.lit("::timestamp, "), diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/production/product/ProductRow.java b/testers/pg/java/generated-and-checked-in/adventureworks/production/product/ProductRow.java index 2bf0c313d0..79b2c9af74 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/production/product/ProductRow.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/production/product/ProductRow.java @@ -973,26 +973,26 @@ public ProductRow withModifieddate(LocalDateTime modifieddate) { public static RowParser _rowParser = RowParsers.of( - ProductId.dbType, - Name.dbType, + ProductId.pgType, + Name.pgType, PgTypes.text, - Flag.dbType, - Flag.dbType, + Flag.pgType, + Flag.pgType, PgTypes.text.opt(), PgTypes.int2, PgTypes.int2, PgTypes.numeric, PgTypes.numeric, PgTypes.text.opt(), - UnitmeasureId.dbType.opt(), - UnitmeasureId.dbType.opt(), + UnitmeasureId.pgType.opt(), + UnitmeasureId.pgType.opt(), PgTypes.numeric.opt(), PgTypes.int4, PgTypes.bpchar.opt(), PgTypes.bpchar.opt(), PgTypes.bpchar.opt(), - ProductsubcategoryId.dbType.opt(), - ProductmodelId.dbType.opt(), + ProductsubcategoryId.pgType.opt(), + ProductmodelId.pgType.opt(), PgTypes.timestamp, PgTypes.timestamp.opt(), PgTypes.timestamp.opt(), diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/production/product/ProductRowUnsaved.java b/testers/pg/java/generated-and-checked-in/adventureworks/production/product/ProductRowUnsaved.java index d6a6405624..d422cb74d2 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/production/product/ProductRowUnsaved.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/production/product/ProductRowUnsaved.java @@ -1012,7 +1012,7 @@ public ProductRowUnsaved withModifieddate(Defaulted modifieddate) public static PgText pgText = PgText.instance( (row, sb) -> { - Name.dbType.text().unsafeEncode(row.name, sb); + Name.pgType.text().unsafeEncode(row.name, sb); sb.append(PgText.DELIMETER); PgTypes.text.text().unsafeEncode(row.productnumber, sb); sb.append(PgText.DELIMETER); @@ -1028,9 +1028,9 @@ public ProductRowUnsaved withModifieddate(Defaulted modifieddate) sb.append(PgText.DELIMETER); PgTypes.text.opt().text().unsafeEncode(row.size, sb); sb.append(PgText.DELIMETER); - UnitmeasureId.dbType.opt().text().unsafeEncode(row.sizeunitmeasurecode, sb); + UnitmeasureId.pgType.opt().text().unsafeEncode(row.sizeunitmeasurecode, sb); sb.append(PgText.DELIMETER); - UnitmeasureId.dbType.opt().text().unsafeEncode(row.weightunitmeasurecode, sb); + UnitmeasureId.pgType.opt().text().unsafeEncode(row.weightunitmeasurecode, sb); sb.append(PgText.DELIMETER); PgTypes.numeric.opt().text().unsafeEncode(row.weight, sb); sb.append(PgText.DELIMETER); @@ -1042,9 +1042,9 @@ public ProductRowUnsaved withModifieddate(Defaulted modifieddate) sb.append(PgText.DELIMETER); PgTypes.bpchar.opt().text().unsafeEncode(row.style, sb); sb.append(PgText.DELIMETER); - ProductsubcategoryId.dbType.opt().text().unsafeEncode(row.productsubcategoryid, sb); + ProductsubcategoryId.pgType.opt().text().unsafeEncode(row.productsubcategoryid, sb); sb.append(PgText.DELIMETER); - ProductmodelId.dbType.opt().text().unsafeEncode(row.productmodelid, sb); + ProductmodelId.pgType.opt().text().unsafeEncode(row.productmodelid, sb); sb.append(PgText.DELIMETER); PgTypes.timestamp.text().unsafeEncode(row.sellstartdate, sb); sb.append(PgText.DELIMETER); @@ -1052,11 +1052,11 @@ public ProductRowUnsaved withModifieddate(Defaulted modifieddate) sb.append(PgText.DELIMETER); PgTypes.timestamp.opt().text().unsafeEncode(row.discontinueddate, sb); sb.append(PgText.DELIMETER); - Defaulted.pgText(ProductId.dbType.text()).unsafeEncode(row.productid, sb); + Defaulted.pgText(ProductId.pgType.text()).unsafeEncode(row.productid, sb); sb.append(PgText.DELIMETER); - Defaulted.pgText(Flag.dbType.text()).unsafeEncode(row.makeflag, sb); + Defaulted.pgText(Flag.pgType.text()).unsafeEncode(row.makeflag, sb); sb.append(PgText.DELIMETER); - Defaulted.pgText(Flag.dbType.text()).unsafeEncode(row.finishedgoodsflag, sb); + Defaulted.pgText(Flag.pgType.text()).unsafeEncode(row.finishedgoodsflag, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(PgTypes.uuid.text()).unsafeEncode(row.rowguid, sb); sb.append(PgText.DELIMETER); diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryFields.java b/testers/pg/java/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryFields.java index 5c4a337284..0cae3131e1 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryFields.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryFields.java @@ -41,7 +41,7 @@ public IdField productcategoryid() { Optional.empty(), Optional.of("int4"), (row, value) -> row.withProductcategoryid(value), - ProductcategoryId.dbType); + ProductcategoryId.pgType); } public Field name() { @@ -52,7 +52,7 @@ public Field name() { Optional.empty(), Optional.of("varchar"), (row, value) -> row.withName(value), - Name.dbType); + Name.pgType); } public Field rowguid() { diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryId.java b/testers/pg/java/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryId.java index aca7769881..03d0c5626c 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryId.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryId.java @@ -27,10 +27,10 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(ProductcategoryId::value, ProductcategoryId::new); - public static PgType dbType = + public static PgType pgType = PgTypes.int4.bimap(ProductcategoryId::new, ProductcategoryId::value); - public static PgType dbTypeArray = + public static PgType pgTypeArray = PgTypes.int4Array.bimap( xs -> arrayMap.map(xs, ProductcategoryId::new, ProductcategoryId.class), xs -> arrayMap.map(xs, ProductcategoryId::value, Integer.class)); diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRepoImpl.java b/testers/pg/java/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRepoImpl.java index c083044110..253cdd2137 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRepoImpl.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRepoImpl.java @@ -36,7 +36,7 @@ public Boolean deleteById(ProductcategoryId productcategoryid, Connection c) { Fragment.lit( "delete from \"production\".\"productcategory\" where \"productcategoryid\" =" + " "), - Fragment.encode(ProductcategoryId.dbType, productcategoryid), + Fragment.encode(ProductcategoryId.pgType, productcategoryid), Fragment.lit("")) .update() .runUnchecked(c) @@ -50,7 +50,7 @@ public Integer deleteByIds(ProductcategoryId[] productcategoryids, Connection c) "delete\n" + "from \"production\".\"productcategory\"\n" + "where \"productcategoryid\" = ANY("), - Fragment.encode(ProductcategoryId.dbTypeArray, productcategoryids), + Fragment.encode(ProductcategoryId.pgTypeArray, productcategoryids), Fragment.lit(")")) .update() .runUnchecked(c); @@ -63,9 +63,9 @@ public ProductcategoryRow insert(ProductcategoryRow unsaved, Connection c) { "insert into \"production\".\"productcategory\"(\"productcategoryid\", \"name\"," + " \"rowguid\", \"modifieddate\")\n" + "values ("), - Fragment.encode(ProductcategoryId.dbType, unsaved.productcategoryid()), + Fragment.encode(ProductcategoryId.pgType, unsaved.productcategoryid()), Fragment.lit("::int4, "), - Fragment.encode(Name.dbType, unsaved.name()), + Fragment.encode(Name.pgType, unsaved.name()), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid()), Fragment.lit("::uuid, "), @@ -85,7 +85,7 @@ public ProductcategoryRow insert(ProductcategoryRowUnsaved unsaved, Connection c ; columns.add(Fragment.lit("\"name\"")); values.add( - interpolate(Fragment.encode(Name.dbType, unsaved.name()), Fragment.lit("::varchar"))); + interpolate(Fragment.encode(Name.pgType, unsaved.name()), Fragment.lit("::varchar"))); unsaved .productcategoryid() .visit( @@ -94,7 +94,7 @@ public ProductcategoryRow insert(ProductcategoryRowUnsaved unsaved, Connection c columns.add(Fragment.lit("\"productcategoryid\"")); values.add( interpolate( - Fragment.encode(ProductcategoryId.dbType, value), Fragment.lit("::int4"))); + Fragment.encode(ProductcategoryId.pgType, value), Fragment.lit("::int4"))); }); ; unsaved @@ -181,7 +181,7 @@ public Optional selectById( "select \"productcategoryid\", \"name\", \"rowguid\", \"modifieddate\"\n" + "from \"production\".\"productcategory\"\n" + "where \"productcategoryid\" = "), - Fragment.encode(ProductcategoryId.dbType, productcategoryid), + Fragment.encode(ProductcategoryId.pgType, productcategoryid), Fragment.lit("")) .query(ProductcategoryRow._rowParser.first()) .runUnchecked(c); @@ -195,7 +195,7 @@ public List selectByIds( "select \"productcategoryid\", \"name\", \"rowguid\", \"modifieddate\"\n" + "from \"production\".\"productcategory\"\n" + "where \"productcategoryid\" = ANY("), - Fragment.encode(ProductcategoryId.dbTypeArray, productcategoryids), + Fragment.encode(ProductcategoryId.pgTypeArray, productcategoryids), Fragment.lit(")")) .query(ProductcategoryRow._rowParser.all()) .runUnchecked(c); @@ -225,13 +225,13 @@ public Boolean update(ProductcategoryRow row, Connection c) { ; return interpolate( Fragment.lit("update \"production\".\"productcategory\"\nset \"name\" = "), - Fragment.encode(Name.dbType, row.name()), + Fragment.encode(Name.pgType, row.name()), Fragment.lit("::varchar,\n\"rowguid\" = "), Fragment.encode(PgTypes.uuid, row.rowguid()), Fragment.lit("::uuid,\n\"modifieddate\" = "), Fragment.encode(PgTypes.timestamp, row.modifieddate()), Fragment.lit("::timestamp\nwhere \"productcategoryid\" = "), - Fragment.encode(ProductcategoryId.dbType, productcategoryid), + Fragment.encode(ProductcategoryId.pgType, productcategoryid), Fragment.lit("")) .update() .runUnchecked(c) @@ -245,9 +245,9 @@ public ProductcategoryRow upsert(ProductcategoryRow unsaved, Connection c) { "insert into \"production\".\"productcategory\"(\"productcategoryid\", \"name\"," + " \"rowguid\", \"modifieddate\")\n" + "values ("), - Fragment.encode(ProductcategoryId.dbType, unsaved.productcategoryid()), + Fragment.encode(ProductcategoryId.pgType, unsaved.productcategoryid()), Fragment.lit("::int4, "), - Fragment.encode(Name.dbType, unsaved.name()), + Fragment.encode(Name.pgType, unsaved.name()), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid()), Fragment.lit("::uuid, "), diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRow.java b/testers/pg/java/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRow.java index e68e9daa07..28470e83aa 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRow.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRow.java @@ -61,8 +61,8 @@ public ProductcategoryRow withModifieddate(LocalDateTime modifieddate) { public static RowParser _rowParser = RowParsers.of( - ProductcategoryId.dbType, - Name.dbType, + ProductcategoryId.pgType, + Name.pgType, PgTypes.uuid, PgTypes.timestamp, ProductcategoryRow::new, diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRowUnsaved.java b/testers/pg/java/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRowUnsaved.java index 502978c2c0..43c8baa5c0 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRowUnsaved.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRowUnsaved.java @@ -68,9 +68,9 @@ public ProductcategoryRowUnsaved withModifieddate(Defaulted modif public static PgText pgText = PgText.instance( (row, sb) -> { - Name.dbType.text().unsafeEncode(row.name, sb); + Name.pgType.text().unsafeEncode(row.name, sb); sb.append(PgText.DELIMETER); - Defaulted.pgText(ProductcategoryId.dbType.text()) + Defaulted.pgText(ProductcategoryId.pgType.text()) .unsafeEncode(row.productcategoryid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(PgTypes.uuid.text()).unsafeEncode(row.rowguid, sb); diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryFields.java b/testers/pg/java/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryFields.java index 4c23f1d2f1..d42d048085 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryFields.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryFields.java @@ -47,7 +47,7 @@ public IdField productid() { Optional.empty(), Optional.of("int4"), (row, value) -> row.withProductid(value), - ProductId.dbType); + ProductId.pgType); } public IdField startdate() { diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryId.java b/testers/pg/java/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryId.java index 8fe65c2aa7..82d99dc707 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryId.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryId.java @@ -27,7 +27,7 @@ public ProductcosthistoryId withStartdate(LocalDateTime startdate) { public static RowParser _rowParser = RowParsers.of( - ProductId.dbType, + ProductId.pgType, PgTypes.timestamp, ProductcosthistoryId::new, row -> new Object[] {row.productid(), row.startdate()}); diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRepoImpl.java b/testers/pg/java/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRepoImpl.java index 5677dc69c9..70e0afb94a 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRepoImpl.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRepoImpl.java @@ -39,7 +39,7 @@ public Boolean deleteById(ProductcosthistoryId compositeId, Connection c) { return interpolate( Fragment.lit( "delete from \"production\".\"productcosthistory\" where \"productid\" = "), - Fragment.encode(ProductId.dbType, compositeId.productid()), + Fragment.encode(ProductId.pgType, compositeId.productid()), Fragment.lit(" AND \"startdate\" = "), Fragment.encode(PgTypes.timestamp, compositeId.startdate()), Fragment.lit("")) @@ -62,7 +62,7 @@ public Integer deleteByIds(ProductcosthistoryId[] compositeIds, Connection c) { + "from \"production\".\"productcosthistory\"\n" + "where (\"productid\", \"startdate\")\n" + "in (select * from unnest("), - Fragment.encode(ProductId.dbTypeArray, productid), + Fragment.encode(ProductId.pgTypeArray, productid), Fragment.lit(", "), Fragment.encode(PgTypes.timestampArray, startdate), Fragment.lit("))\n")) @@ -77,7 +77,7 @@ public ProductcosthistoryRow insert(ProductcosthistoryRow unsaved, Connection c) "insert into \"production\".\"productcosthistory\"(\"productid\", \"startdate\"," + " \"enddate\", \"standardcost\", \"modifieddate\")\n" + "values ("), - Fragment.encode(ProductId.dbType, unsaved.productid()), + Fragment.encode(ProductId.pgType, unsaved.productid()), Fragment.lit("::int4, "), Fragment.encode(PgTypes.timestamp, unsaved.startdate()), Fragment.lit("::timestamp, "), @@ -103,7 +103,7 @@ public ProductcosthistoryRow insert(ProductcosthistoryRowUnsaved unsaved, Connec columns.add(Fragment.lit("\"productid\"")); values.add( interpolate( - Fragment.encode(ProductId.dbType, unsaved.productid()), Fragment.lit("::int4"))); + Fragment.encode(ProductId.pgType, unsaved.productid()), Fragment.lit("::int4"))); columns.add(Fragment.lit("\"startdate\"")); values.add( interpolate( @@ -196,7 +196,7 @@ public Optional selectById( + " \"modifieddate\"\n" + "from \"production\".\"productcosthistory\"\n" + "where \"productid\" = "), - Fragment.encode(ProductId.dbType, compositeId.productid()), + Fragment.encode(ProductId.pgType, compositeId.productid()), Fragment.lit(" AND \"startdate\" = "), Fragment.encode(PgTypes.timestamp, compositeId.startdate()), Fragment.lit("")) @@ -220,7 +220,7 @@ public List selectByIds( + "from \"production\".\"productcosthistory\"\n" + "where (\"productid\", \"startdate\")\n" + "in (select * from unnest("), - Fragment.encode(ProductId.dbTypeArray, productid), + Fragment.encode(ProductId.pgTypeArray, productid), Fragment.lit(", "), Fragment.encode(PgTypes.timestampArray, startdate), Fragment.lit("))\n")) @@ -258,7 +258,7 @@ public Boolean update(ProductcosthistoryRow row, Connection c) { Fragment.lit("::numeric,\n\"modifieddate\" = "), Fragment.encode(PgTypes.timestamp, row.modifieddate()), Fragment.lit("::timestamp\nwhere \"productid\" = "), - Fragment.encode(ProductId.dbType, compositeId.productid()), + Fragment.encode(ProductId.pgType, compositeId.productid()), Fragment.lit(" AND \"startdate\" = "), Fragment.encode(PgTypes.timestamp, compositeId.startdate()), Fragment.lit("")) @@ -274,7 +274,7 @@ public ProductcosthistoryRow upsert(ProductcosthistoryRow unsaved, Connection c) "insert into \"production\".\"productcosthistory\"(\"productid\", \"startdate\"," + " \"enddate\", \"standardcost\", \"modifieddate\")\n" + "values ("), - Fragment.encode(ProductId.dbType, unsaved.productid()), + Fragment.encode(ProductId.pgType, unsaved.productid()), Fragment.lit("::int4, "), Fragment.encode(PgTypes.timestamp, unsaved.startdate()), Fragment.lit("::timestamp, "), diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRow.java b/testers/pg/java/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRow.java index 0cc2294ee3..dfe09c3393 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRow.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRow.java @@ -89,7 +89,7 @@ public ProductcosthistoryRow withModifieddate(LocalDateTime modifieddate) { public static RowParser _rowParser = RowParsers.of( - ProductId.dbType, + ProductId.pgType, PgTypes.timestamp, PgTypes.timestamp.opt(), PgTypes.numeric, diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRowUnsaved.java b/testers/pg/java/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRowUnsaved.java index 292ca4876b..dad82bef35 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRowUnsaved.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRowUnsaved.java @@ -111,7 +111,7 @@ public ProductcosthistoryRowUnsaved withModifieddate(Defaulted mo public static PgText pgText = PgText.instance( (row, sb) -> { - ProductId.dbType.text().unsafeEncode(row.productid, sb); + ProductId.pgType.text().unsafeEncode(row.productid, sb); sb.append(PgText.DELIMETER); PgTypes.timestamp.text().unsafeEncode(row.startdate, sb); sb.append(PgText.DELIMETER); diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelFields.java b/testers/pg/java/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelFields.java index 5a2af90e87..3a95c8fc2a 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelFields.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelFields.java @@ -43,7 +43,7 @@ public IdField productmodelid() { Optional.empty(), Optional.of("int4"), (row, value) -> row.withProductmodelid(value), - ProductmodelId.dbType); + ProductmodelId.pgType); } public Field name() { @@ -54,7 +54,7 @@ public Field name() { Optional.empty(), Optional.of("varchar"), (row, value) -> row.withName(value), - Name.dbType); + Name.pgType); } public OptField catalogdescription() { diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelId.java b/testers/pg/java/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelId.java index ad90215a86..8c35824887 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelId.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelId.java @@ -27,10 +27,10 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(ProductmodelId::value, ProductmodelId::new); - public static PgType dbType = + public static PgType pgType = PgTypes.int4.bimap(ProductmodelId::new, ProductmodelId::value); - public static PgType dbTypeArray = + public static PgType pgTypeArray = PgTypes.int4Array.bimap( xs -> arrayMap.map(xs, ProductmodelId::new, ProductmodelId.class), xs -> arrayMap.map(xs, ProductmodelId::value, Integer.class)); diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRepoImpl.java b/testers/pg/java/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRepoImpl.java index 96bd4adffa..b69e75c79c 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRepoImpl.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRepoImpl.java @@ -35,7 +35,7 @@ public Boolean deleteById(ProductmodelId productmodelid, Connection c) { return interpolate( Fragment.lit( "delete from \"production\".\"productmodel\" where \"productmodelid\" = "), - Fragment.encode(ProductmodelId.dbType, productmodelid), + Fragment.encode(ProductmodelId.pgType, productmodelid), Fragment.lit("")) .update() .runUnchecked(c) @@ -47,7 +47,7 @@ public Integer deleteByIds(ProductmodelId[] productmodelids, Connection c) { return interpolate( Fragment.lit( "delete\nfrom \"production\".\"productmodel\"\nwhere \"productmodelid\" = ANY("), - Fragment.encode(ProductmodelId.dbTypeArray, productmodelids), + Fragment.encode(ProductmodelId.pgTypeArray, productmodelids), Fragment.lit(")")) .update() .runUnchecked(c); @@ -60,9 +60,9 @@ public ProductmodelRow insert(ProductmodelRow unsaved, Connection c) { "insert into \"production\".\"productmodel\"(\"productmodelid\", \"name\"," + " \"catalogdescription\", \"instructions\", \"rowguid\", \"modifieddate\")\n" + "values ("), - Fragment.encode(ProductmodelId.dbType, unsaved.productmodelid()), + Fragment.encode(ProductmodelId.pgType, unsaved.productmodelid()), Fragment.lit("::int4, "), - Fragment.encode(Name.dbType, unsaved.name()), + Fragment.encode(Name.pgType, unsaved.name()), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.xml.opt(), unsaved.catalogdescription()), Fragment.lit("::xml, "), @@ -87,7 +87,7 @@ public ProductmodelRow insert(ProductmodelRowUnsaved unsaved, Connection c) { ; columns.add(Fragment.lit("\"name\"")); values.add( - interpolate(Fragment.encode(Name.dbType, unsaved.name()), Fragment.lit("::varchar"))); + interpolate(Fragment.encode(Name.pgType, unsaved.name()), Fragment.lit("::varchar"))); columns.add(Fragment.lit("\"catalogdescription\"")); values.add( interpolate( @@ -105,7 +105,7 @@ public ProductmodelRow insert(ProductmodelRowUnsaved unsaved, Connection c) { columns.add(Fragment.lit("\"productmodelid\"")); values.add( interpolate( - Fragment.encode(ProductmodelId.dbType, value), Fragment.lit("::int4"))); + Fragment.encode(ProductmodelId.pgType, value), Fragment.lit("::int4"))); }); ; unsaved @@ -195,7 +195,7 @@ public Optional selectById(ProductmodelId productmodelid, Conne + " \"rowguid\", \"modifieddate\"\n" + "from \"production\".\"productmodel\"\n" + "where \"productmodelid\" = "), - Fragment.encode(ProductmodelId.dbType, productmodelid), + Fragment.encode(ProductmodelId.pgType, productmodelid), Fragment.lit("")) .query(ProductmodelRow._rowParser.first()) .runUnchecked(c); @@ -209,7 +209,7 @@ public List selectByIds(ProductmodelId[] productmodelids, Conne + " \"rowguid\", \"modifieddate\"\n" + "from \"production\".\"productmodel\"\n" + "where \"productmodelid\" = ANY("), - Fragment.encode(ProductmodelId.dbTypeArray, productmodelids), + Fragment.encode(ProductmodelId.pgTypeArray, productmodelids), Fragment.lit(")")) .query(ProductmodelRow._rowParser.all()) .runUnchecked(c); @@ -238,7 +238,7 @@ public Boolean update(ProductmodelRow row, Connection c) { ; return interpolate( Fragment.lit("update \"production\".\"productmodel\"\nset \"name\" = "), - Fragment.encode(Name.dbType, row.name()), + Fragment.encode(Name.pgType, row.name()), Fragment.lit("::varchar,\n\"catalogdescription\" = "), Fragment.encode(PgTypes.xml.opt(), row.catalogdescription()), Fragment.lit("::xml,\n\"instructions\" = "), @@ -248,7 +248,7 @@ public Boolean update(ProductmodelRow row, Connection c) { Fragment.lit("::uuid,\n\"modifieddate\" = "), Fragment.encode(PgTypes.timestamp, row.modifieddate()), Fragment.lit("::timestamp\nwhere \"productmodelid\" = "), - Fragment.encode(ProductmodelId.dbType, productmodelid), + Fragment.encode(ProductmodelId.pgType, productmodelid), Fragment.lit("")) .update() .runUnchecked(c) @@ -262,9 +262,9 @@ public ProductmodelRow upsert(ProductmodelRow unsaved, Connection c) { "insert into \"production\".\"productmodel\"(\"productmodelid\", \"name\"," + " \"catalogdescription\", \"instructions\", \"rowguid\", \"modifieddate\")\n" + "values ("), - Fragment.encode(ProductmodelId.dbType, unsaved.productmodelid()), + Fragment.encode(ProductmodelId.pgType, unsaved.productmodelid()), Fragment.lit("::int4, "), - Fragment.encode(Name.dbType, unsaved.name()), + Fragment.encode(Name.pgType, unsaved.name()), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.xml.opt(), unsaved.catalogdescription()), Fragment.lit("::xml, "), diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRow.java b/testers/pg/java/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRow.java index b24dfa3efa..e05169bac2 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRow.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRow.java @@ -82,8 +82,8 @@ public ProductmodelRow withModifieddate(LocalDateTime modifieddate) { public static RowParser _rowParser = RowParsers.of( - ProductmodelId.dbType, - Name.dbType, + ProductmodelId.pgType, + Name.pgType, PgTypes.xml.opt(), PgTypes.xml.opt(), PgTypes.uuid, diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRowUnsaved.java b/testers/pg/java/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRowUnsaved.java index d718b19bb6..9313c59c7a 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRowUnsaved.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRowUnsaved.java @@ -97,13 +97,13 @@ public ProductmodelRowUnsaved withModifieddate(Defaulted modified public static PgText pgText = PgText.instance( (row, sb) -> { - Name.dbType.text().unsafeEncode(row.name, sb); + Name.pgType.text().unsafeEncode(row.name, sb); sb.append(PgText.DELIMETER); PgTypes.xml.opt().text().unsafeEncode(row.catalogdescription, sb); sb.append(PgText.DELIMETER); PgTypes.xml.opt().text().unsafeEncode(row.instructions, sb); sb.append(PgText.DELIMETER); - Defaulted.pgText(ProductmodelId.dbType.text()).unsafeEncode(row.productmodelid, sb); + Defaulted.pgText(ProductmodelId.pgType.text()).unsafeEncode(row.productmodelid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(PgTypes.uuid.text()).unsafeEncode(row.rowguid, sb); sb.append(PgText.DELIMETER); diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryFields.java b/testers/pg/java/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryFields.java index 870da58bb2..f2929e3843 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryFields.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryFields.java @@ -46,7 +46,7 @@ public IdField productsubcategoryid Optional.empty(), Optional.of("int4"), (row, value) -> row.withProductsubcategoryid(value), - ProductsubcategoryId.dbType); + ProductsubcategoryId.pgType); } public Field productcategoryid() { @@ -57,7 +57,7 @@ public Field productcategoryid() { Optional.empty(), Optional.of("int4"), (row, value) -> row.withProductcategoryid(value), - ProductcategoryId.dbType); + ProductcategoryId.pgType); } public Field name() { @@ -68,7 +68,7 @@ public Field name() { Optional.empty(), Optional.of("varchar"), (row, value) -> row.withName(value), - Name.dbType); + Name.pgType); } public Field rowguid() { diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryId.java b/testers/pg/java/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryId.java index 36df54f408..371900f30d 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryId.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryId.java @@ -27,10 +27,10 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(ProductsubcategoryId::value, ProductsubcategoryId::new); - public static PgType dbType = + public static PgType pgType = PgTypes.int4.bimap(ProductsubcategoryId::new, ProductsubcategoryId::value); - public static PgType dbTypeArray = + public static PgType pgTypeArray = PgTypes.int4Array.bimap( xs -> arrayMap.map(xs, ProductsubcategoryId::new, ProductsubcategoryId.class), xs -> arrayMap.map(xs, ProductsubcategoryId::value, Integer.class)); diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRepoImpl.java b/testers/pg/java/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRepoImpl.java index 888ce84276..7d35191988 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRepoImpl.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRepoImpl.java @@ -39,7 +39,7 @@ public Boolean deleteById(ProductsubcategoryId productsubcategoryid, Connection Fragment.lit( "delete from \"production\".\"productsubcategory\" where" + " \"productsubcategoryid\" = "), - Fragment.encode(ProductsubcategoryId.dbType, productsubcategoryid), + Fragment.encode(ProductsubcategoryId.pgType, productsubcategoryid), Fragment.lit("")) .update() .runUnchecked(c) @@ -53,7 +53,7 @@ public Integer deleteByIds(ProductsubcategoryId[] productsubcategoryids, Connect "delete\n" + "from \"production\".\"productsubcategory\"\n" + "where \"productsubcategoryid\" = ANY("), - Fragment.encode(ProductsubcategoryId.dbTypeArray, productsubcategoryids), + Fragment.encode(ProductsubcategoryId.pgTypeArray, productsubcategoryids), Fragment.lit(")")) .update() .runUnchecked(c); @@ -66,11 +66,11 @@ public ProductsubcategoryRow insert(ProductsubcategoryRow unsaved, Connection c) "insert into \"production\".\"productsubcategory\"(\"productsubcategoryid\"," + " \"productcategoryid\", \"name\", \"rowguid\", \"modifieddate\")\n" + "values ("), - Fragment.encode(ProductsubcategoryId.dbType, unsaved.productsubcategoryid()), + Fragment.encode(ProductsubcategoryId.pgType, unsaved.productsubcategoryid()), Fragment.lit("::int4, "), - Fragment.encode(ProductcategoryId.dbType, unsaved.productcategoryid()), + Fragment.encode(ProductcategoryId.pgType, unsaved.productcategoryid()), Fragment.lit("::int4, "), - Fragment.encode(Name.dbType, unsaved.name()), + Fragment.encode(Name.pgType, unsaved.name()), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid()), Fragment.lit("::uuid, "), @@ -92,11 +92,11 @@ public ProductsubcategoryRow insert(ProductsubcategoryRowUnsaved unsaved, Connec columns.add(Fragment.lit("\"productcategoryid\"")); values.add( interpolate( - Fragment.encode(ProductcategoryId.dbType, unsaved.productcategoryid()), + Fragment.encode(ProductcategoryId.pgType, unsaved.productcategoryid()), Fragment.lit("::int4"))); columns.add(Fragment.lit("\"name\"")); values.add( - interpolate(Fragment.encode(Name.dbType, unsaved.name()), Fragment.lit("::varchar"))); + interpolate(Fragment.encode(Name.pgType, unsaved.name()), Fragment.lit("::varchar"))); unsaved .productsubcategoryid() .visit( @@ -105,7 +105,7 @@ public ProductsubcategoryRow insert(ProductsubcategoryRowUnsaved unsaved, Connec columns.add(Fragment.lit("\"productsubcategoryid\"")); values.add( interpolate( - Fragment.encode(ProductsubcategoryId.dbType, value), Fragment.lit("::int4"))); + Fragment.encode(ProductsubcategoryId.pgType, value), Fragment.lit("::int4"))); }); ; unsaved @@ -197,7 +197,7 @@ public Optional selectById( + " \"modifieddate\"\n" + "from \"production\".\"productsubcategory\"\n" + "where \"productsubcategoryid\" = "), - Fragment.encode(ProductsubcategoryId.dbType, productsubcategoryid), + Fragment.encode(ProductsubcategoryId.pgType, productsubcategoryid), Fragment.lit("")) .query(ProductsubcategoryRow._rowParser.first()) .runUnchecked(c); @@ -212,7 +212,7 @@ public List selectByIds( + " \"modifieddate\"\n" + "from \"production\".\"productsubcategory\"\n" + "where \"productsubcategoryid\" = ANY("), - Fragment.encode(ProductsubcategoryId.dbTypeArray, productsubcategoryids), + Fragment.encode(ProductsubcategoryId.pgTypeArray, productsubcategoryids), Fragment.lit(")")) .query(ProductsubcategoryRow._rowParser.all()) .runUnchecked(c); @@ -243,15 +243,15 @@ public Boolean update(ProductsubcategoryRow row, Connection c) { return interpolate( Fragment.lit( "update \"production\".\"productsubcategory\"\nset \"productcategoryid\" = "), - Fragment.encode(ProductcategoryId.dbType, row.productcategoryid()), + Fragment.encode(ProductcategoryId.pgType, row.productcategoryid()), Fragment.lit("::int4,\n\"name\" = "), - Fragment.encode(Name.dbType, row.name()), + Fragment.encode(Name.pgType, row.name()), Fragment.lit("::varchar,\n\"rowguid\" = "), Fragment.encode(PgTypes.uuid, row.rowguid()), Fragment.lit("::uuid,\n\"modifieddate\" = "), Fragment.encode(PgTypes.timestamp, row.modifieddate()), Fragment.lit("::timestamp\nwhere \"productsubcategoryid\" = "), - Fragment.encode(ProductsubcategoryId.dbType, productsubcategoryid), + Fragment.encode(ProductsubcategoryId.pgType, productsubcategoryid), Fragment.lit("")) .update() .runUnchecked(c) @@ -265,11 +265,11 @@ public ProductsubcategoryRow upsert(ProductsubcategoryRow unsaved, Connection c) "insert into \"production\".\"productsubcategory\"(\"productsubcategoryid\"," + " \"productcategoryid\", \"name\", \"rowguid\", \"modifieddate\")\n" + "values ("), - Fragment.encode(ProductsubcategoryId.dbType, unsaved.productsubcategoryid()), + Fragment.encode(ProductsubcategoryId.pgType, unsaved.productsubcategoryid()), Fragment.lit("::int4, "), - Fragment.encode(ProductcategoryId.dbType, unsaved.productcategoryid()), + Fragment.encode(ProductcategoryId.pgType, unsaved.productcategoryid()), Fragment.lit("::int4, "), - Fragment.encode(Name.dbType, unsaved.name()), + Fragment.encode(Name.pgType, unsaved.name()), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid()), Fragment.lit("::uuid, "), diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRow.java b/testers/pg/java/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRow.java index 455ac55bc2..eeae671da4 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRow.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRow.java @@ -83,9 +83,9 @@ public ProductsubcategoryRow withModifieddate(LocalDateTime modifieddate) { public static RowParser _rowParser = RowParsers.of( - ProductsubcategoryId.dbType, - ProductcategoryId.dbType, - Name.dbType, + ProductsubcategoryId.pgType, + ProductcategoryId.pgType, + Name.pgType, PgTypes.uuid, PgTypes.timestamp, ProductsubcategoryRow::new, diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRowUnsaved.java b/testers/pg/java/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRowUnsaved.java index d74c9376b9..145366b7af 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRowUnsaved.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRowUnsaved.java @@ -95,11 +95,11 @@ public ProductsubcategoryRowUnsaved withModifieddate(Defaulted mo public static PgText pgText = PgText.instance( (row, sb) -> { - ProductcategoryId.dbType.text().unsafeEncode(row.productcategoryid, sb); + ProductcategoryId.pgType.text().unsafeEncode(row.productcategoryid, sb); sb.append(PgText.DELIMETER); - Name.dbType.text().unsafeEncode(row.name, sb); + Name.pgType.text().unsafeEncode(row.name, sb); sb.append(PgText.DELIMETER); - Defaulted.pgText(ProductsubcategoryId.dbType.text()) + Defaulted.pgText(ProductsubcategoryId.pgType.text()) .unsafeEncode(row.productsubcategoryid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(PgTypes.uuid.text()).unsafeEncode(row.rowguid, sb); diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureFields.java b/testers/pg/java/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureFields.java index f341032e42..7ece4d06ca 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureFields.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureFields.java @@ -39,7 +39,7 @@ public IdField unitmeasurecode() { Optional.empty(), Optional.of("bpchar"), (row, value) -> row.withUnitmeasurecode(value), - UnitmeasureId.dbType); + UnitmeasureId.pgType); } public Field name() { @@ -50,7 +50,7 @@ public Field name() { Optional.empty(), Optional.of("varchar"), (row, value) -> row.withName(value), - Name.dbType); + Name.pgType); } public Field modifieddate() { diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureId.java b/testers/pg/java/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureId.java index 56940b1ef2..bee9936395 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureId.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureId.java @@ -27,10 +27,10 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(UnitmeasureId::value, UnitmeasureId::new); - public static PgType dbType = + public static PgType pgType = PgTypes.bpchar.bimap(UnitmeasureId::new, UnitmeasureId::value); - public static PgType dbTypeArray = + public static PgType pgTypeArray = PgTypes.bpcharArray.bimap( xs -> arrayMap.map(xs, UnitmeasureId::new, UnitmeasureId.class), xs -> arrayMap.map(xs, UnitmeasureId::value, String.class)); diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRepoImpl.java b/testers/pg/java/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRepoImpl.java index 4b1f39f5a7..52852885e1 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRepoImpl.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRepoImpl.java @@ -35,7 +35,7 @@ public Boolean deleteById(UnitmeasureId unitmeasurecode, Connection c) { return interpolate( Fragment.lit( "delete from \"production\".\"unitmeasure\" where \"unitmeasurecode\" = "), - Fragment.encode(UnitmeasureId.dbType, unitmeasurecode), + Fragment.encode(UnitmeasureId.pgType, unitmeasurecode), Fragment.lit("")) .update() .runUnchecked(c) @@ -47,7 +47,7 @@ public Integer deleteByIds(UnitmeasureId[] unitmeasurecodes, Connection c) { return interpolate( Fragment.lit( "delete\nfrom \"production\".\"unitmeasure\"\nwhere \"unitmeasurecode\" = ANY("), - Fragment.encode(UnitmeasureId.dbTypeArray, unitmeasurecodes), + Fragment.encode(UnitmeasureId.pgTypeArray, unitmeasurecodes), Fragment.lit(")")) .update() .runUnchecked(c); @@ -60,9 +60,9 @@ public UnitmeasureRow insert(UnitmeasureRow unsaved, Connection c) { "insert into \"production\".\"unitmeasure\"(\"unitmeasurecode\", \"name\"," + " \"modifieddate\")\n" + "values ("), - Fragment.encode(UnitmeasureId.dbType, unsaved.unitmeasurecode()), + Fragment.encode(UnitmeasureId.pgType, unsaved.unitmeasurecode()), Fragment.lit("::bpchar, "), - Fragment.encode(Name.dbType, unsaved.name()), + Fragment.encode(Name.pgType, unsaved.name()), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate()), Fragment.lit( @@ -80,11 +80,11 @@ public UnitmeasureRow insert(UnitmeasureRowUnsaved unsaved, Connection c) { columns.add(Fragment.lit("\"unitmeasurecode\"")); values.add( interpolate( - Fragment.encode(UnitmeasureId.dbType, unsaved.unitmeasurecode()), + Fragment.encode(UnitmeasureId.pgType, unsaved.unitmeasurecode()), Fragment.lit("::bpchar"))); columns.add(Fragment.lit("\"name\"")); values.add( - interpolate(Fragment.encode(Name.dbType, unsaved.name()), Fragment.lit("::varchar"))); + interpolate(Fragment.encode(Name.pgType, unsaved.name()), Fragment.lit("::varchar"))); unsaved .modifieddate() .visit( @@ -157,7 +157,7 @@ public Optional selectById(UnitmeasureId unitmeasurecode, Connec "select \"unitmeasurecode\", \"name\", \"modifieddate\"\n" + "from \"production\".\"unitmeasure\"\n" + "where \"unitmeasurecode\" = "), - Fragment.encode(UnitmeasureId.dbType, unitmeasurecode), + Fragment.encode(UnitmeasureId.pgType, unitmeasurecode), Fragment.lit("")) .query(UnitmeasureRow._rowParser.first()) .runUnchecked(c); @@ -170,7 +170,7 @@ public List selectByIds(UnitmeasureId[] unitmeasurecodes, Connec "select \"unitmeasurecode\", \"name\", \"modifieddate\"\n" + "from \"production\".\"unitmeasure\"\n" + "where \"unitmeasurecode\" = ANY("), - Fragment.encode(UnitmeasureId.dbTypeArray, unitmeasurecodes), + Fragment.encode(UnitmeasureId.pgTypeArray, unitmeasurecodes), Fragment.lit(")")) .query(UnitmeasureRow._rowParser.all()) .runUnchecked(c); @@ -199,11 +199,11 @@ public Boolean update(UnitmeasureRow row, Connection c) { ; return interpolate( Fragment.lit("update \"production\".\"unitmeasure\"\nset \"name\" = "), - Fragment.encode(Name.dbType, row.name()), + Fragment.encode(Name.pgType, row.name()), Fragment.lit("::varchar,\n\"modifieddate\" = "), Fragment.encode(PgTypes.timestamp, row.modifieddate()), Fragment.lit("::timestamp\nwhere \"unitmeasurecode\" = "), - Fragment.encode(UnitmeasureId.dbType, unitmeasurecode), + Fragment.encode(UnitmeasureId.pgType, unitmeasurecode), Fragment.lit("")) .update() .runUnchecked(c) @@ -217,9 +217,9 @@ public UnitmeasureRow upsert(UnitmeasureRow unsaved, Connection c) { "insert into \"production\".\"unitmeasure\"(\"unitmeasurecode\", \"name\"," + " \"modifieddate\")\n" + "values ("), - Fragment.encode(UnitmeasureId.dbType, unsaved.unitmeasurecode()), + Fragment.encode(UnitmeasureId.pgType, unsaved.unitmeasurecode()), Fragment.lit("::bpchar, "), - Fragment.encode(Name.dbType, unsaved.name()), + Fragment.encode(Name.pgType, unsaved.name()), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate()), Fragment.lit( diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRow.java b/testers/pg/java/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRow.java index 8f778284d9..5c0f6021ee 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRow.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRow.java @@ -43,8 +43,8 @@ public UnitmeasureRow withModifieddate(LocalDateTime modifieddate) { public static RowParser _rowParser = RowParsers.of( - UnitmeasureId.dbType, - Name.dbType, + UnitmeasureId.pgType, + Name.pgType, PgTypes.timestamp, UnitmeasureRow::new, row -> new Object[] {row.unitmeasurecode(), row.name(), row.modifieddate()}); diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRowUnsaved.java b/testers/pg/java/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRowUnsaved.java index 830703e356..7f354acb6f 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRowUnsaved.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRowUnsaved.java @@ -53,9 +53,9 @@ public UnitmeasureRowUnsaved withModifieddate(Defaulted modifiedd public static PgText pgText = PgText.instance( (row, sb) -> { - UnitmeasureId.dbType.text().unsafeEncode(row.unitmeasurecode, sb); + UnitmeasureId.pgType.text().unsafeEncode(row.unitmeasurecode, sb); sb.append(PgText.DELIMETER); - Name.dbType.text().unsafeEncode(row.name, sb); + Name.pgType.text().unsafeEncode(row.name, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(PgTypes.timestamp.text()).unsafeEncode(row.modifieddate, sb); }); diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/public_/AccountNumber.java b/testers/pg/java/generated-and-checked-in/adventureworks/public_/AccountNumber.java index d2e4039333..750025d49d 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/public_/AccountNumber.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/public_/AccountNumber.java @@ -21,12 +21,12 @@ public AccountNumber withValue(String value) { public static Bijection bijection = Bijection.of(AccountNumber::value, AccountNumber::new); - public static PgType dbType = + public static PgType pgType = PgTypes.text .bimap(AccountNumber::new, AccountNumber::value) .renamed("\"public\".\"AccountNumber\""); - public static PgType dbTypeArray = + public static PgType pgTypeArray = PgTypes.textArray .bimap( xs -> arrayMap.map(xs, AccountNumber::new, AccountNumber.class), diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/public_/Flag.java b/testers/pg/java/generated-and-checked-in/adventureworks/public_/Flag.java index 3e7dda474c..22369443e3 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/public_/Flag.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/public_/Flag.java @@ -20,10 +20,10 @@ public Flag withValue(Boolean value) { public static Bijection bijection = Bijection.of(Flag::value, Flag::new); - public static PgType dbType = + public static PgType pgType = PgTypes.bool.bimap(Flag::new, Flag::value).renamed("\"public\".\"Flag\""); - public static PgType dbTypeArray = + public static PgType pgTypeArray = PgTypes.boolArray .bimap( xs -> arrayMap.map(xs, Flag::new, Flag.class), diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/public_/Mydomain.java b/testers/pg/java/generated-and-checked-in/adventureworks/public_/Mydomain.java index 10e2f36605..c1f9e3bcb1 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/public_/Mydomain.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/public_/Mydomain.java @@ -21,10 +21,10 @@ public Mydomain withValue(String value) { public static Bijection bijection = Bijection.of(Mydomain::value, Mydomain::new); - public static PgType dbType = + public static PgType pgType = PgTypes.text.bimap(Mydomain::new, Mydomain::value).renamed("\"public\".\"mydomain\""); - public static PgType dbTypeArray = + public static PgType pgTypeArray = PgTypes.textArray .bimap( xs -> arrayMap.map(xs, Mydomain::new, Mydomain.class), diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/public_/Myenum.java b/testers/pg/java/generated-and-checked-in/adventureworks/public_/Myenum.java index ff96796445..70b542cacb 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/public_/Myenum.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/public_/Myenum.java @@ -31,13 +31,13 @@ public java.lang.String value() { java.util.Arrays.stream(Myenum.values()) .collect(java.util.stream.Collectors.toMap(n -> n.value, n -> n)); - public static PgType dbTypeArray = + public static PgType pgTypeArray = PgTypes.textArray .bimap( xs -> arrayMap.map(xs, Myenum::force, Myenum.class), xs -> arrayMap.map(xs, Myenum::value, String.class)) .renamedDropPrecision("public.myenum"); - public static PgType dbType = + public static PgType pgType = PgTypes.text.bimap(Myenum::force, Myenum::value).renamedDropPrecision("public.myenum"); public static Myenum force(java.lang.String str) { diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/public_/Name.java b/testers/pg/java/generated-and-checked-in/adventureworks/public_/Name.java index 925c648e3c..6d3eecdd7d 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/public_/Name.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/public_/Name.java @@ -20,10 +20,10 @@ public Name withValue(String value) { public static Bijection bijection = Bijection.of(Name::value, Name::new); - public static PgType dbType = + public static PgType pgType = PgTypes.text.bimap(Name::new, Name::value).renamed("\"public\".\"Name\""); - public static PgType dbTypeArray = + public static PgType pgTypeArray = PgTypes.textArray .bimap( xs -> arrayMap.map(xs, Name::new, Name.class), diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/public_/NameStyle.java b/testers/pg/java/generated-and-checked-in/adventureworks/public_/NameStyle.java index b918dc16f1..3bab52e5f0 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/public_/NameStyle.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/public_/NameStyle.java @@ -21,10 +21,10 @@ public NameStyle withValue(Boolean value) { public static Bijection bijection = Bijection.of(NameStyle::value, NameStyle::new); - public static PgType dbType = + public static PgType pgType = PgTypes.bool.bimap(NameStyle::new, NameStyle::value).renamed("\"public\".\"NameStyle\""); - public static PgType dbTypeArray = + public static PgType pgTypeArray = PgTypes.boolArray .bimap( xs -> arrayMap.map(xs, NameStyle::new, NameStyle.class), diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/public_/OrderNumber.java b/testers/pg/java/generated-and-checked-in/adventureworks/public_/OrderNumber.java index d55d8fea31..e1d4c230a9 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/public_/OrderNumber.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/public_/OrderNumber.java @@ -21,12 +21,12 @@ public OrderNumber withValue(String value) { public static Bijection bijection = Bijection.of(OrderNumber::value, OrderNumber::new); - public static PgType dbType = + public static PgType pgType = PgTypes.text .bimap(OrderNumber::new, OrderNumber::value) .renamed("\"public\".\"OrderNumber\""); - public static PgType dbTypeArray = + public static PgType pgTypeArray = PgTypes.textArray .bimap( xs -> arrayMap.map(xs, OrderNumber::new, OrderNumber.class), diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/public_/Phone.java b/testers/pg/java/generated-and-checked-in/adventureworks/public_/Phone.java index ccfc9c2620..2e360f42c3 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/public_/Phone.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/public_/Phone.java @@ -20,10 +20,10 @@ public Phone withValue(String value) { public static Bijection bijection = Bijection.of(Phone::value, Phone::new); - public static PgType dbType = + public static PgType pgType = PgTypes.text.bimap(Phone::new, Phone::value).renamed("\"public\".\"Phone\""); - public static PgType dbTypeArray = + public static PgType pgTypeArray = PgTypes.textArray .bimap( xs -> arrayMap.map(xs, Phone::new, Phone.class), diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/public_/ShortText.java b/testers/pg/java/generated-and-checked-in/adventureworks/public_/ShortText.java index 82fbb66c32..86407bac43 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/public_/ShortText.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/public_/ShortText.java @@ -21,10 +21,10 @@ public ShortText withValue(String value) { public static Bijection bijection = Bijection.of(ShortText::value, ShortText::new); - public static PgType dbType = + public static PgType pgType = PgTypes.text.bimap(ShortText::new, ShortText::value).renamed("\"public\".\"short_text\""); - public static PgType dbTypeArray = + public static PgType pgTypeArray = PgTypes.textArray .bimap( xs -> arrayMap.map(xs, ShortText::new, ShortText.class), diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/public_/flaff/FlaffFields.java b/testers/pg/java/generated-and-checked-in/adventureworks/public_/flaff/FlaffFields.java index a42467bb43..ed0294c71a 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/public_/flaff/FlaffFields.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/public_/flaff/FlaffFields.java @@ -39,7 +39,7 @@ public IdField code() { Optional.empty(), Optional.of("text"), (row, value) -> row.withCode(value), - ShortText.dbType); + ShortText.pgType); } public IdField anotherCode() { @@ -72,7 +72,7 @@ public IdField specifier() { Optional.empty(), Optional.of("text"), (row, value) -> row.withSpecifier(value), - ShortText.dbType); + ShortText.pgType); } public OptField parentspecifier() { @@ -83,7 +83,7 @@ public OptField parentspecifier() { Optional.empty(), Optional.of("text"), (row, value) -> row.withParentspecifier(value), - ShortText.dbType); + ShortText.pgType); } @Override diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/public_/flaff/FlaffId.java b/testers/pg/java/generated-and-checked-in/adventureworks/public_/flaff/FlaffId.java index c8f05707ab..b0952cf967 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/public_/flaff/FlaffId.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/public_/flaff/FlaffId.java @@ -41,10 +41,10 @@ public FlaffId withSpecifier(ShortText specifier) { public static RowParser _rowParser = RowParsers.of( - ShortText.dbType, + ShortText.pgType, PgTypes.text, PgTypes.int4, - ShortText.dbType, + ShortText.pgType, FlaffId::new, row -> new Object[] {row.code(), row.anotherCode(), row.someNumber(), row.specifier()}); ; diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/public_/flaff/FlaffRepoImpl.java b/testers/pg/java/generated-and-checked-in/adventureworks/public_/flaff/FlaffRepoImpl.java index c5f980b1c5..3fb79d1d37 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/public_/flaff/FlaffRepoImpl.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/public_/flaff/FlaffRepoImpl.java @@ -33,13 +33,13 @@ public DeleteBuilder delete() { public Boolean deleteById(FlaffId compositeId, Connection c) { return interpolate( Fragment.lit("delete from \"public\".\"flaff\" where \"code\" = "), - Fragment.encode(ShortText.dbType, compositeId.code()), + Fragment.encode(ShortText.pgType, compositeId.code()), Fragment.lit(" AND \"another_code\" = "), Fragment.encode(PgTypes.text, compositeId.anotherCode()), Fragment.lit(" AND \"some_number\" = "), Fragment.encode(PgTypes.int4, compositeId.someNumber()), Fragment.lit(" AND \"specifier\" = "), - Fragment.encode(ShortText.dbType, compositeId.specifier()), + Fragment.encode(ShortText.pgType, compositeId.specifier()), Fragment.lit("")) .update() .runUnchecked(c) @@ -62,13 +62,13 @@ public Integer deleteByIds(FlaffId[] compositeIds, Connection c) { + "from \"public\".\"flaff\"\n" + "where (\"code\", \"another_code\", \"some_number\", \"specifier\")\n" + "in (select * from unnest("), - Fragment.encode(ShortText.dbTypeArray, code), + Fragment.encode(ShortText.pgTypeArray, code), Fragment.lit(", "), Fragment.encode(PgTypes.textArray, anotherCode), Fragment.lit(", "), Fragment.encode(PgTypes.int4Array, someNumber), Fragment.lit(", "), - Fragment.encode(ShortText.dbTypeArray, specifier), + Fragment.encode(ShortText.pgTypeArray, specifier), Fragment.lit("))\n")) .update() .runUnchecked(c); @@ -81,15 +81,15 @@ public FlaffRow insert(FlaffRow unsaved, Connection c) { "insert into \"public\".\"flaff\"(\"code\", \"another_code\", \"some_number\"," + " \"specifier\", \"parentspecifier\")\n" + "values ("), - Fragment.encode(ShortText.dbType, unsaved.code()), + Fragment.encode(ShortText.pgType, unsaved.code()), Fragment.lit("::text, "), Fragment.encode(PgTypes.text, unsaved.anotherCode()), Fragment.lit(", "), Fragment.encode(PgTypes.int4, unsaved.someNumber()), Fragment.lit("::int4, "), - Fragment.encode(ShortText.dbType, unsaved.specifier()), + Fragment.encode(ShortText.pgType, unsaved.specifier()), Fragment.lit("::text, "), - Fragment.encode(ShortText.dbType.opt(), unsaved.parentspecifier()), + Fragment.encode(ShortText.pgType.opt(), unsaved.parentspecifier()), Fragment.lit( "::text)\n" + "RETURNING \"code\", \"another_code\", \"some_number\", \"specifier\"," @@ -134,13 +134,13 @@ public Optional selectById(FlaffId compositeId, Connection c) { + " \"parentspecifier\"\n" + "from \"public\".\"flaff\"\n" + "where \"code\" = "), - Fragment.encode(ShortText.dbType, compositeId.code()), + Fragment.encode(ShortText.pgType, compositeId.code()), Fragment.lit(" AND \"another_code\" = "), Fragment.encode(PgTypes.text, compositeId.anotherCode()), Fragment.lit(" AND \"some_number\" = "), Fragment.encode(PgTypes.int4, compositeId.someNumber()), Fragment.lit(" AND \"specifier\" = "), - Fragment.encode(ShortText.dbType, compositeId.specifier()), + Fragment.encode(ShortText.pgType, compositeId.specifier()), Fragment.lit("")) .query(FlaffRow._rowParser.first()) .runUnchecked(c); @@ -163,13 +163,13 @@ public List selectByIds(FlaffId[] compositeIds, Connection c) { + "from \"public\".\"flaff\"\n" + "where (\"code\", \"another_code\", \"some_number\", \"specifier\")\n" + "in (select * from unnest("), - Fragment.encode(ShortText.dbTypeArray, code), + Fragment.encode(ShortText.pgTypeArray, code), Fragment.lit(", "), Fragment.encode(PgTypes.textArray, anotherCode), Fragment.lit(", "), Fragment.encode(PgTypes.int4Array, someNumber), Fragment.lit(", "), - Fragment.encode(ShortText.dbTypeArray, specifier), + Fragment.encode(ShortText.pgTypeArray, specifier), Fragment.lit("))\n")) .query(FlaffRow._rowParser.all()) .runUnchecked(c); @@ -194,15 +194,15 @@ public Boolean update(FlaffRow row, Connection c) { ; return interpolate( Fragment.lit("update \"public\".\"flaff\"\nset \"parentspecifier\" = "), - Fragment.encode(ShortText.dbType.opt(), row.parentspecifier()), + Fragment.encode(ShortText.pgType.opt(), row.parentspecifier()), Fragment.lit("::text\nwhere \"code\" = "), - Fragment.encode(ShortText.dbType, compositeId.code()), + Fragment.encode(ShortText.pgType, compositeId.code()), Fragment.lit(" AND \"another_code\" = "), Fragment.encode(PgTypes.text, compositeId.anotherCode()), Fragment.lit(" AND \"some_number\" = "), Fragment.encode(PgTypes.int4, compositeId.someNumber()), Fragment.lit(" AND \"specifier\" = "), - Fragment.encode(ShortText.dbType, compositeId.specifier()), + Fragment.encode(ShortText.pgType, compositeId.specifier()), Fragment.lit("")) .update() .runUnchecked(c) @@ -216,15 +216,15 @@ public FlaffRow upsert(FlaffRow unsaved, Connection c) { "insert into \"public\".\"flaff\"(\"code\", \"another_code\", \"some_number\"," + " \"specifier\", \"parentspecifier\")\n" + "values ("), - Fragment.encode(ShortText.dbType, unsaved.code()), + Fragment.encode(ShortText.pgType, unsaved.code()), Fragment.lit("::text, "), Fragment.encode(PgTypes.text, unsaved.anotherCode()), Fragment.lit(", "), Fragment.encode(PgTypes.int4, unsaved.someNumber()), Fragment.lit("::int4, "), - Fragment.encode(ShortText.dbType, unsaved.specifier()), + Fragment.encode(ShortText.pgType, unsaved.specifier()), Fragment.lit("::text, "), - Fragment.encode(ShortText.dbType.opt(), unsaved.parentspecifier()), + Fragment.encode(ShortText.pgType.opt(), unsaved.parentspecifier()), Fragment.lit( "::text)\n" + "on conflict (\"code\", \"another_code\", \"some_number\", \"specifier\")\n" diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/public_/flaff/FlaffRow.java b/testers/pg/java/generated-and-checked-in/adventureworks/public_/flaff/FlaffRow.java index ffd065937b..5704845c94 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/public_/flaff/FlaffRow.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/public_/flaff/FlaffRow.java @@ -57,11 +57,11 @@ public FlaffRow withParentspecifier(Optional parentspecifier) { public static RowParser _rowParser = RowParsers.of( - ShortText.dbType, + ShortText.pgType, PgTypes.text, PgTypes.int4, - ShortText.dbType, - ShortText.dbType.opt(), + ShortText.pgType, + ShortText.pgType.opt(), FlaffRow::new, row -> new Object[] { diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/public_/identity_test/IdentityTestFields.java b/testers/pg/java/generated-and-checked-in/adventureworks/public_/identity_test/IdentityTestFields.java index bd0e0993a6..7976cee830 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/public_/identity_test/IdentityTestFields.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/public_/identity_test/IdentityTestFields.java @@ -59,7 +59,7 @@ public IdField name() { Optional.empty(), Optional.empty(), (row, value) -> row.withName(value), - IdentityTestId.dbType); + IdentityTestId.pgType); } @Override diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/public_/identity_test/IdentityTestId.java b/testers/pg/java/generated-and-checked-in/adventureworks/public_/identity_test/IdentityTestId.java index 611db30385..26a6dda6f2 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/public_/identity_test/IdentityTestId.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/public_/identity_test/IdentityTestId.java @@ -27,10 +27,10 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(IdentityTestId::value, IdentityTestId::new); - public static PgType dbType = + public static PgType pgType = PgTypes.text.bimap(IdentityTestId::new, IdentityTestId::value); - public static PgType dbTypeArray = + public static PgType pgTypeArray = PgTypes.textArray.bimap( xs -> arrayMap.map(xs, IdentityTestId::new, IdentityTestId.class), xs -> arrayMap.map(xs, IdentityTestId::value, String.class)); diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/public_/identity_test/IdentityTestRepoImpl.java b/testers/pg/java/generated-and-checked-in/adventureworks/public_/identity_test/IdentityTestRepoImpl.java index a026fe1ad6..29695a35ac 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/public_/identity_test/IdentityTestRepoImpl.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/public_/identity_test/IdentityTestRepoImpl.java @@ -33,7 +33,7 @@ public DeleteBuilder delete() { public Boolean deleteById(IdentityTestId name, Connection c) { return interpolate( Fragment.lit("delete from \"public\".\"identity-test\" where \"name\" = "), - Fragment.encode(IdentityTestId.dbType, name), + Fragment.encode(IdentityTestId.pgType, name), Fragment.lit("")) .update() .runUnchecked(c) @@ -44,7 +44,7 @@ public Boolean deleteById(IdentityTestId name, Connection c) { public Integer deleteByIds(IdentityTestId[] names, Connection c) { return interpolate( Fragment.lit("delete\nfrom \"public\".\"identity-test\"\nwhere \"name\" = ANY("), - Fragment.encode(IdentityTestId.dbTypeArray, names), + Fragment.encode(IdentityTestId.pgTypeArray, names), Fragment.lit(")")) .update() .runUnchecked(c); @@ -58,7 +58,7 @@ public IdentityTestRow insert(IdentityTestRow unsaved, Connection c) { + "values ("), Fragment.encode(PgTypes.int4, unsaved.defaultGenerated()), Fragment.lit("::int4, "), - Fragment.encode(IdentityTestId.dbType, unsaved.name()), + Fragment.encode(IdentityTestId.pgType, unsaved.name()), Fragment.lit(")\nRETURNING \"always_generated\", \"default_generated\", \"name\"\n")) .updateReturning(IdentityTestRow._rowParser.exactlyOne()) .runUnchecked(c); @@ -72,7 +72,7 @@ public IdentityTestRow insert(IdentityTestRowUnsaved unsaved, Connection c) { ; columns.add(Fragment.lit("\"name\"")); values.add( - interpolate(Fragment.encode(IdentityTestId.dbType, unsaved.name()), Fragment.lit(""))); + interpolate(Fragment.encode(IdentityTestId.pgType, unsaved.name()), Fragment.lit(""))); unsaved .defaultGenerated() .visit( @@ -142,7 +142,7 @@ public Optional selectById(IdentityTestId name, Connection c) { "select \"always_generated\", \"default_generated\", \"name\"\n" + "from \"public\".\"identity-test\"\n" + "where \"name\" = "), - Fragment.encode(IdentityTestId.dbType, name), + Fragment.encode(IdentityTestId.pgType, name), Fragment.lit("")) .query(IdentityTestRow._rowParser.first()) .runUnchecked(c); @@ -155,7 +155,7 @@ public List selectByIds(IdentityTestId[] names, Connection c) { "select \"always_generated\", \"default_generated\", \"name\"\n" + "from \"public\".\"identity-test\"\n" + "where \"name\" = ANY("), - Fragment.encode(IdentityTestId.dbTypeArray, names), + Fragment.encode(IdentityTestId.pgTypeArray, names), Fragment.lit(")")) .query(IdentityTestRow._rowParser.all()) .runUnchecked(c); @@ -186,7 +186,7 @@ public Boolean update(IdentityTestRow row, Connection c) { Fragment.lit("update \"public\".\"identity-test\"\nset \"default_generated\" = "), Fragment.encode(PgTypes.int4, row.defaultGenerated()), Fragment.lit("::int4\nwhere \"name\" = "), - Fragment.encode(IdentityTestId.dbType, name), + Fragment.encode(IdentityTestId.pgType, name), Fragment.lit("")) .update() .runUnchecked(c) @@ -201,7 +201,7 @@ public IdentityTestRow upsert(IdentityTestRow unsaved, Connection c) { + "values ("), Fragment.encode(PgTypes.int4, unsaved.defaultGenerated()), Fragment.lit("::int4, "), - Fragment.encode(IdentityTestId.dbType, unsaved.name()), + Fragment.encode(IdentityTestId.pgType, unsaved.name()), Fragment.lit( ")\n" + "on conflict (\"name\")\n" diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/public_/identity_test/IdentityTestRow.java b/testers/pg/java/generated-and-checked-in/adventureworks/public_/identity_test/IdentityTestRow.java index f9c65d840d..4ea2acd5b7 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/public_/identity_test/IdentityTestRow.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/public_/identity_test/IdentityTestRow.java @@ -54,7 +54,7 @@ public IdentityTestRow withName(IdentityTestId name) { RowParsers.of( PgTypes.int4, PgTypes.int4, - IdentityTestId.dbType, + IdentityTestId.pgType, IdentityTestRow::new, row -> new Object[] {row.alwaysGenerated(), row.defaultGenerated(), row.name()}); ; diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/public_/identity_test/IdentityTestRowUnsaved.java b/testers/pg/java/generated-and-checked-in/adventureworks/public_/identity_test/IdentityTestRowUnsaved.java index 68ee0a6ca4..1f7a2ec3ca 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/public_/identity_test/IdentityTestRowUnsaved.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/public_/identity_test/IdentityTestRowUnsaved.java @@ -43,7 +43,7 @@ public IdentityTestRowUnsaved withDefaultGenerated(Defaulted defaultGen public static PgText pgText = PgText.instance( (row, sb) -> { - IdentityTestId.dbType.text().unsafeEncode(row.name, sb); + IdentityTestId.pgType.text().unsafeEncode(row.name, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(PgTypes.int4.text()).unsafeEncode(row.defaultGenerated, sb); }); diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/public_/issue142/Issue142Fields.java b/testers/pg/java/generated-and-checked-in/adventureworks/public_/issue142/Issue142Fields.java index beeef6d016..e940ffcef6 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/public_/issue142/Issue142Fields.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/public_/issue142/Issue142Fields.java @@ -34,7 +34,7 @@ public IdField tabellkode() { Optional.empty(), Optional.empty(), (row, value) -> row.withTabellkode(value), - Issue142Id.dbType); + Issue142Id.pgType); } @Override diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/public_/issue142/Issue142Id.java b/testers/pg/java/generated-and-checked-in/adventureworks/public_/issue142/Issue142Id.java index c280dd1391..1b3694961d 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/public_/issue142/Issue142Id.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/public_/issue142/Issue142Id.java @@ -41,10 +41,10 @@ static Issue142Id apply(String str) { } } - public static PgType dbTypeArray = + public static PgType pgTypeArray = PgTypes.textArray.bimap( xs -> arrayMap.map(xs, Issue142Id::apply, Issue142Id.class), xs -> arrayMap.map(xs, Issue142Id::value, String.class)); - public static PgType dbType = + public static PgType pgType = PgTypes.text.bimap(Issue142Id::apply, Issue142Id::value); } diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/public_/issue142/Issue142RepoImpl.java b/testers/pg/java/generated-and-checked-in/adventureworks/public_/issue142/Issue142RepoImpl.java index 639c40f408..1765277d5d 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/public_/issue142/Issue142RepoImpl.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/public_/issue142/Issue142RepoImpl.java @@ -31,7 +31,7 @@ public DeleteBuilder delete() { public Boolean deleteById(Issue142Id tabellkode, Connection c) { return interpolate( Fragment.lit("delete from \"public\".\"issue142\" where \"tabellkode\" = "), - Fragment.encode(Issue142Id.dbType, tabellkode), + Fragment.encode(Issue142Id.pgType, tabellkode), Fragment.lit("")) .update() .runUnchecked(c) @@ -42,7 +42,7 @@ public Boolean deleteById(Issue142Id tabellkode, Connection c) { public Integer deleteByIds(Issue142Id[] tabellkodes, Connection c) { return interpolate( Fragment.lit("delete\nfrom \"public\".\"issue142\"\nwhere \"tabellkode\" = ANY("), - Fragment.encode(Issue142Id.dbTypeArray, tabellkodes), + Fragment.encode(Issue142Id.pgTypeArray, tabellkodes), Fragment.lit(")")) .update() .runUnchecked(c); @@ -52,7 +52,7 @@ public Integer deleteByIds(Issue142Id[] tabellkodes, Connection c) { public Issue142Row insert(Issue142Row unsaved, Connection c) { return interpolate( Fragment.lit("insert into \"public\".\"issue142\"(\"tabellkode\")\nvalues ("), - Fragment.encode(Issue142Id.dbType, unsaved.tabellkode()), + Fragment.encode(Issue142Id.pgType, unsaved.tabellkode()), Fragment.lit(")\nRETURNING \"tabellkode\"\n")) .updateReturning(Issue142Row._rowParser.exactlyOne()) .runUnchecked(c); @@ -89,7 +89,7 @@ public Optional selectById(Issue142Id tabellkode, Connection c) { return interpolate( Fragment.lit( "select \"tabellkode\"\nfrom \"public\".\"issue142\"\nwhere \"tabellkode\" = "), - Fragment.encode(Issue142Id.dbType, tabellkode), + Fragment.encode(Issue142Id.pgType, tabellkode), Fragment.lit("")) .query(Issue142Row._rowParser.first()) .runUnchecked(c); @@ -100,7 +100,7 @@ public List selectByIds(Issue142Id[] tabellkodes, Connection c) { return interpolate( Fragment.lit( "select \"tabellkode\"\nfrom \"public\".\"issue142\"\nwhere \"tabellkode\" = ANY("), - Fragment.encode(Issue142Id.dbTypeArray, tabellkodes), + Fragment.encode(Issue142Id.pgTypeArray, tabellkodes), Fragment.lit(")")) .query(Issue142Row._rowParser.all()) .runUnchecked(c); @@ -126,7 +126,7 @@ public UpdateBuilder update() { public Issue142Row upsert(Issue142Row unsaved, Connection c) { return interpolate( Fragment.lit("insert into \"public\".\"issue142\"(\"tabellkode\")\nvalues ("), - Fragment.encode(Issue142Id.dbType, unsaved.tabellkode()), + Fragment.encode(Issue142Id.pgType, unsaved.tabellkode()), Fragment.lit( ")\n" + "on conflict (\"tabellkode\")\n" diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/public_/issue142/Issue142Row.java b/testers/pg/java/generated-and-checked-in/adventureworks/public_/issue142/Issue142Row.java index bb97c463ab..0373a79ce7 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/public_/issue142/Issue142Row.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/public_/issue142/Issue142Row.java @@ -18,7 +18,7 @@ public Issue142Row withTabellkode(Issue142Id tabellkode) { ; public static RowParser _rowParser = - RowParsers.of(Issue142Id.dbType, Issue142Row::new, row -> new Object[] {row.tabellkode()}); + RowParsers.of(Issue142Id.pgType, Issue142Row::new, row -> new Object[] {row.tabellkode()}); ; public static PgText pgText = PgText.from(_rowParser); diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/public_/issue142_2/Issue1422Fields.java b/testers/pg/java/generated-and-checked-in/adventureworks/public_/issue142_2/Issue1422Fields.java index 2574b733fb..6395cbf925 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/public_/issue142_2/Issue1422Fields.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/public_/issue142_2/Issue1422Fields.java @@ -38,7 +38,7 @@ public IdField tabellkode() { Optional.empty(), Optional.empty(), (row, value) -> row.withTabellkode(value), - Issue142Id.dbType); + Issue142Id.pgType); } @Override diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/public_/issue142_2/Issue1422RepoImpl.java b/testers/pg/java/generated-and-checked-in/adventureworks/public_/issue142_2/Issue1422RepoImpl.java index df7a87c7c3..4c5ca202a0 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/public_/issue142_2/Issue1422RepoImpl.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/public_/issue142_2/Issue1422RepoImpl.java @@ -32,7 +32,7 @@ public DeleteBuilder delete() { public Boolean deleteById(Issue142Id tabellkode, Connection c) { return interpolate( Fragment.lit("delete from \"public\".\"issue142_2\" where \"tabellkode\" = "), - Fragment.encode(Issue142Id.dbType, tabellkode), + Fragment.encode(Issue142Id.pgType, tabellkode), Fragment.lit("")) .update() .runUnchecked(c) @@ -43,7 +43,7 @@ public Boolean deleteById(Issue142Id tabellkode, Connection c) { public Integer deleteByIds(Issue142Id[] tabellkodes, Connection c) { return interpolate( Fragment.lit("delete\nfrom \"public\".\"issue142_2\"\nwhere \"tabellkode\" = ANY("), - Fragment.encode(Issue142Id.dbTypeArray, tabellkodes), + Fragment.encode(Issue142Id.pgTypeArray, tabellkodes), Fragment.lit(")")) .update() .runUnchecked(c); @@ -53,7 +53,7 @@ public Integer deleteByIds(Issue142Id[] tabellkodes, Connection c) { public Issue1422Row insert(Issue1422Row unsaved, Connection c) { return interpolate( Fragment.lit("insert into \"public\".\"issue142_2\"(\"tabellkode\")\nvalues ("), - Fragment.encode(Issue142Id.dbType, unsaved.tabellkode()), + Fragment.encode(Issue142Id.pgType, unsaved.tabellkode()), Fragment.lit(")\nRETURNING \"tabellkode\"\n")) .updateReturning(Issue1422Row._rowParser.exactlyOne()) .runUnchecked(c); @@ -90,7 +90,7 @@ public Optional selectById(Issue142Id tabellkode, Connection c) { return interpolate( Fragment.lit( "select \"tabellkode\"\nfrom \"public\".\"issue142_2\"\nwhere \"tabellkode\" = "), - Fragment.encode(Issue142Id.dbType, tabellkode), + Fragment.encode(Issue142Id.pgType, tabellkode), Fragment.lit("")) .query(Issue1422Row._rowParser.first()) .runUnchecked(c); @@ -103,7 +103,7 @@ public List selectByIds(Issue142Id[] tabellkodes, Connection c) { "select \"tabellkode\"\n" + "from \"public\".\"issue142_2\"\n" + "where \"tabellkode\" = ANY("), - Fragment.encode(Issue142Id.dbTypeArray, tabellkodes), + Fragment.encode(Issue142Id.pgTypeArray, tabellkodes), Fragment.lit(")")) .query(Issue1422Row._rowParser.all()) .runUnchecked(c); @@ -129,7 +129,7 @@ public UpdateBuilder update() { public Issue1422Row upsert(Issue1422Row unsaved, Connection c) { return interpolate( Fragment.lit("insert into \"public\".\"issue142_2\"(\"tabellkode\")\nvalues ("), - Fragment.encode(Issue142Id.dbType, unsaved.tabellkode()), + Fragment.encode(Issue142Id.pgType, unsaved.tabellkode()), Fragment.lit( ")\n" + "on conflict (\"tabellkode\")\n" diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/public_/issue142_2/Issue1422Row.java b/testers/pg/java/generated-and-checked-in/adventureworks/public_/issue142_2/Issue1422Row.java index 0855be6b72..50aec27eaa 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/public_/issue142_2/Issue1422Row.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/public_/issue142_2/Issue1422Row.java @@ -23,7 +23,7 @@ public Issue1422Row withTabellkode(Issue142Id tabellkode) { ; public static RowParser _rowParser = - RowParsers.of(Issue142Id.dbType, Issue1422Row::new, row -> new Object[] {row.tabellkode()}); + RowParsers.of(Issue142Id.pgType, Issue1422Row::new, row -> new Object[] {row.tabellkode()}); ; public static PgText pgText = PgText.from(_rowParser); diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/public_/pgtest/PgtestFields.java b/testers/pg/java/generated-and-checked-in/adventureworks/public_/pgtest/PgtestFields.java index 2ff5834536..5e82536b5d 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/public_/pgtest/PgtestFields.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/public_/pgtest/PgtestFields.java @@ -362,7 +362,7 @@ public Field mydomain() { Optional.empty(), Optional.of("text"), (row, value) -> row.withMydomain(value), - Mydomain.dbType); + Mydomain.pgType); } public Field myenum() { @@ -373,7 +373,7 @@ public Field myenum() { Optional.empty(), Optional.of("public.myenum"), (row, value) -> row.withMyenum(value), - Myenum.dbType); + Myenum.pgType); } public Field name() { @@ -736,7 +736,7 @@ public Field mydomaines() { Optional.of("text[]"), Optional.of("mydomain[]"), (row, value) -> row.withMydomaines(value), - Mydomain.dbTypeArray); + Mydomain.pgTypeArray); } public Field myenumes() { @@ -747,7 +747,7 @@ public Field myenumes() { Optional.empty(), Optional.of("myenum[]"), (row, value) -> row.withMyenumes(value), - Myenum.dbTypeArray); + Myenum.pgTypeArray); } public Field namees() { diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/public_/pgtest/PgtestRepoImpl.java b/testers/pg/java/generated-and-checked-in/adventureworks/public_/pgtest/PgtestRepoImpl.java index 1b16170723..14ddbf3992 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/public_/pgtest/PgtestRepoImpl.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/public_/pgtest/PgtestRepoImpl.java @@ -86,9 +86,9 @@ public PgtestRow insert(PgtestRow unsaved, Connection c) { Fragment.lit("::lseg, "), Fragment.encode(PgTypes.money, unsaved.money()), Fragment.lit("::money, "), - Fragment.encode(Mydomain.dbType, unsaved.mydomain()), + Fragment.encode(Mydomain.pgType, unsaved.mydomain()), Fragment.lit("::text, "), - Fragment.encode(Myenum.dbType, unsaved.myenum()), + Fragment.encode(Myenum.pgType, unsaved.myenum()), Fragment.lit("::public.myenum, "), Fragment.encode(PgTypes.name, unsaved.name()), Fragment.lit("::name, "), @@ -154,9 +154,9 @@ public PgtestRow insert(PgtestRow unsaved, Connection c) { Fragment.lit("::lseg[], "), Fragment.encode(PgTypes.moneyArray, unsaved.moneyes()), Fragment.lit("::money[], "), - Fragment.encode(Mydomain.dbTypeArray, unsaved.mydomaines()), + Fragment.encode(Mydomain.pgTypeArray, unsaved.mydomaines()), Fragment.lit("::mydomain[], "), - Fragment.encode(Myenum.dbTypeArray, unsaved.myenumes()), + Fragment.encode(Myenum.pgTypeArray, unsaved.myenumes()), Fragment.lit("::myenum[], "), Fragment.encode(PgTypes.nameArray, unsaved.namees()), Fragment.lit("::name[], "), diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/public_/pgtest/PgtestRow.java b/testers/pg/java/generated-and-checked-in/adventureworks/public_/pgtest/PgtestRow.java index e1a0b03ab0..bd26a94fad 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/public_/pgtest/PgtestRow.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/public_/pgtest/PgtestRow.java @@ -5452,8 +5452,8 @@ public PgtestRow withXmles(Xml[] xmles) { PgTypes.line, PgTypes.lseg, PgTypes.money, - Mydomain.dbType, - Myenum.dbType, + Mydomain.pgType, + Myenum.pgType, PgTypes.name, PgTypes.numeric, PgTypes.path, @@ -5486,8 +5486,8 @@ public PgtestRow withXmles(Xml[] xmles) { PgTypes.lineArray, PgTypes.lsegArray, PgTypes.moneyArray, - Mydomain.dbTypeArray, - Myenum.dbTypeArray, + Mydomain.pgTypeArray, + Myenum.pgTypeArray, PgTypes.nameArray, PgTypes.numericArray, PgTypes.pathArray, diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/public_/pgtestnull/PgtestnullFields.java b/testers/pg/java/generated-and-checked-in/adventureworks/public_/pgtestnull/PgtestnullFields.java index 8896ed1cc0..c1dde0d09e 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/public_/pgtestnull/PgtestnullFields.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/public_/pgtestnull/PgtestnullFields.java @@ -363,7 +363,7 @@ public OptField mydomain() { Optional.empty(), Optional.of("text"), (row, value) -> row.withMydomain(value), - Mydomain.dbType); + Mydomain.pgType); } public OptField myenum() { @@ -374,7 +374,7 @@ public OptField myenum() { Optional.empty(), Optional.of("public.myenum"), (row, value) -> row.withMyenum(value), - Myenum.dbType); + Myenum.pgType); } public OptField name() { @@ -737,7 +737,7 @@ public OptField mydomaines() { Optional.of("text[]"), Optional.of("mydomain[]"), (row, value) -> row.withMydomaines(value), - Mydomain.dbTypeArray); + Mydomain.pgTypeArray); } public OptField myenumes() { @@ -748,7 +748,7 @@ public OptField myenumes() { Optional.empty(), Optional.of("myenum[]"), (row, value) -> row.withMyenumes(value), - Myenum.dbTypeArray); + Myenum.pgTypeArray); } public OptField namees() { diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/public_/pgtestnull/PgtestnullRepoImpl.java b/testers/pg/java/generated-and-checked-in/adventureworks/public_/pgtestnull/PgtestnullRepoImpl.java index 804324028c..277062daf9 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/public_/pgtestnull/PgtestnullRepoImpl.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/public_/pgtestnull/PgtestnullRepoImpl.java @@ -87,9 +87,9 @@ public PgtestnullRow insert(PgtestnullRow unsaved, Connection c) { Fragment.lit("::lseg, "), Fragment.encode(PgTypes.money.opt(), unsaved.money()), Fragment.lit("::money, "), - Fragment.encode(Mydomain.dbType.opt(), unsaved.mydomain()), + Fragment.encode(Mydomain.pgType.opt(), unsaved.mydomain()), Fragment.lit("::text, "), - Fragment.encode(Myenum.dbType.opt(), unsaved.myenum()), + Fragment.encode(Myenum.pgType.opt(), unsaved.myenum()), Fragment.lit("::public.myenum, "), Fragment.encode(PgTypes.name.opt(), unsaved.name()), Fragment.lit("::name, "), @@ -155,9 +155,9 @@ public PgtestnullRow insert(PgtestnullRow unsaved, Connection c) { Fragment.lit("::lseg[], "), Fragment.encode(PgTypes.moneyArray.opt(), unsaved.moneyes()), Fragment.lit("::money[], "), - Fragment.encode(Mydomain.dbTypeArray.opt(), unsaved.mydomaines()), + Fragment.encode(Mydomain.pgTypeArray.opt(), unsaved.mydomaines()), Fragment.lit("::mydomain[], "), - Fragment.encode(Myenum.dbTypeArray.opt(), unsaved.myenumes()), + Fragment.encode(Myenum.pgTypeArray.opt(), unsaved.myenumes()), Fragment.lit("::myenum[], "), Fragment.encode(PgTypes.nameArray.opt(), unsaved.namees()), Fragment.lit("::name[], "), diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/public_/pgtestnull/PgtestnullRow.java b/testers/pg/java/generated-and-checked-in/adventureworks/public_/pgtestnull/PgtestnullRow.java index 569a1c92a6..84431acf61 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/public_/pgtestnull/PgtestnullRow.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/public_/pgtestnull/PgtestnullRow.java @@ -5453,8 +5453,8 @@ public PgtestnullRow withXmles(Optional xmles) { PgTypes.line.opt(), PgTypes.lseg.opt(), PgTypes.money.opt(), - Mydomain.dbType.opt(), - Myenum.dbType.opt(), + Mydomain.pgType.opt(), + Myenum.pgType.opt(), PgTypes.name.opt(), PgTypes.numeric.opt(), PgTypes.path.opt(), @@ -5487,8 +5487,8 @@ public PgtestnullRow withXmles(Optional xmles) { PgTypes.lineArray.opt(), PgTypes.lsegArray.opt(), PgTypes.moneyArray.opt(), - Mydomain.dbTypeArray.opt(), - Myenum.dbTypeArray.opt(), + Mydomain.pgTypeArray.opt(), + Myenum.pgTypeArray.opt(), PgTypes.nameArray.opt(), PgTypes.numericArray.opt(), PgTypes.pathArray.opt(), diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/public_/precision_types/PrecisionTypesFields.java b/testers/pg/java/generated-and-checked-in/adventureworks/public_/precision_types/PrecisionTypesFields.java index f50b0b81dd..04cdc5689c 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/public_/precision_types/PrecisionTypesFields.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/public_/precision_types/PrecisionTypesFields.java @@ -76,7 +76,7 @@ public IdField id() { Optional.empty(), Optional.of("int4"), (row, value) -> row.withId(value), - PrecisionTypesId.dbType); + PrecisionTypesId.pgType); } public Field string10() { @@ -87,7 +87,7 @@ public Field string10() { Optional.empty(), Optional.empty(), (row, value) -> row.withString10(value), - String10.dbType); + String10.pgType); } public Field string20() { @@ -98,7 +98,7 @@ public Field string20() { Optional.empty(), Optional.empty(), (row, value) -> row.withString20(value), - String20.dbType); + String20.pgType); } public Field string50() { @@ -109,7 +109,7 @@ public Field string50() { Optional.empty(), Optional.empty(), (row, value) -> row.withString50(value), - String50.dbType); + String50.pgType); } public Field string100() { @@ -120,7 +120,7 @@ public Field string100() { Optional.empty(), Optional.empty(), (row, value) -> row.withString100(value), - String100.dbType); + String100.pgType); } public Field string255() { @@ -131,7 +131,7 @@ public Field string255() { Optional.empty(), Optional.empty(), (row, value) -> row.withString255(value), - String255.dbType); + String255.pgType); } public Field bpchar3() { @@ -142,7 +142,7 @@ public Field bpchar3() { Optional.empty(), Optional.of("bpchar"), (row, value) -> row.withBpchar3(value), - PaddedString3.dbType); + PaddedString3.pgType); } public Field bpchar10() { @@ -153,7 +153,7 @@ public Field bpchar10() { Optional.empty(), Optional.of("bpchar"), (row, value) -> row.withBpchar10(value), - PaddedString10.dbType); + PaddedString10.pgType); } public Field decimal52() { diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/public_/precision_types/PrecisionTypesId.java b/testers/pg/java/generated-and-checked-in/adventureworks/public_/precision_types/PrecisionTypesId.java index 55756abbaf..c20f722193 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/public_/precision_types/PrecisionTypesId.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/public_/precision_types/PrecisionTypesId.java @@ -27,10 +27,10 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(PrecisionTypesId::value, PrecisionTypesId::new); - public static PgType dbType = + public static PgType pgType = PgTypes.int4.bimap(PrecisionTypesId::new, PrecisionTypesId::value); - public static PgType dbTypeArray = + public static PgType pgTypeArray = PgTypes.int4Array.bimap( xs -> arrayMap.map(xs, PrecisionTypesId::new, PrecisionTypesId.class), xs -> arrayMap.map(xs, PrecisionTypesId::value, Integer.class)); diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/public_/precision_types/PrecisionTypesRepoImpl.java b/testers/pg/java/generated-and-checked-in/adventureworks/public_/precision_types/PrecisionTypesRepoImpl.java index 4abf4f379c..ecb53ecfaa 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/public_/precision_types/PrecisionTypesRepoImpl.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/public_/precision_types/PrecisionTypesRepoImpl.java @@ -40,7 +40,7 @@ public DeleteBuilder delete() { public Boolean deleteById(PrecisionTypesId id, Connection c) { return interpolate( Fragment.lit("delete from \"public\".\"precision_types\" where \"id\" = "), - Fragment.encode(PrecisionTypesId.dbType, id), + Fragment.encode(PrecisionTypesId.pgType, id), Fragment.lit("")) .update() .runUnchecked(c) @@ -51,7 +51,7 @@ public Boolean deleteById(PrecisionTypesId id, Connection c) { public Integer deleteByIds(PrecisionTypesId[] ids, Connection c) { return interpolate( Fragment.lit("delete\nfrom \"public\".\"precision_types\"\nwhere \"id\" = ANY("), - Fragment.encode(PrecisionTypesId.dbTypeArray, ids), + Fragment.encode(PrecisionTypesId.pgTypeArray, ids), Fragment.lit(")")) .update() .runUnchecked(c); @@ -68,21 +68,21 @@ public PrecisionTypesRow insert(PrecisionTypesRow unsaved, Connection c) { + " \"timestamptz0\", \"timestamptz3\", \"timestamptz6\", \"time0\", \"time3\"," + " \"time6\", \"timetz0\", \"timetz3\", \"timetz6\")\n" + "values ("), - Fragment.encode(PrecisionTypesId.dbType, unsaved.id()), + Fragment.encode(PrecisionTypesId.pgType, unsaved.id()), Fragment.lit("::int4, "), - Fragment.encode(String10.dbType, unsaved.string10()), + Fragment.encode(String10.pgType, unsaved.string10()), Fragment.lit(", "), - Fragment.encode(String20.dbType, unsaved.string20()), + Fragment.encode(String20.pgType, unsaved.string20()), Fragment.lit(", "), - Fragment.encode(String50.dbType, unsaved.string50()), + Fragment.encode(String50.pgType, unsaved.string50()), Fragment.lit(", "), - Fragment.encode(String100.dbType, unsaved.string100()), + Fragment.encode(String100.pgType, unsaved.string100()), Fragment.lit(", "), - Fragment.encode(String255.dbType, unsaved.string255()), + Fragment.encode(String255.pgType, unsaved.string255()), Fragment.lit(", "), - Fragment.encode(PaddedString3.dbType, unsaved.bpchar3()), + Fragment.encode(PaddedString3.pgType, unsaved.bpchar3()), Fragment.lit("::bpchar, "), - Fragment.encode(PaddedString10.dbType, unsaved.bpchar10()), + Fragment.encode(PaddedString10.pgType, unsaved.bpchar10()), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.numeric, unsaved.decimal52()), Fragment.lit("::numeric, "), @@ -136,25 +136,25 @@ public PrecisionTypesRow insert(PrecisionTypesRowUnsaved unsaved, Connection c) ArrayList values = new ArrayList<>(); ; columns.add(Fragment.lit("\"string10\"")); - values.add(interpolate(Fragment.encode(String10.dbType, unsaved.string10()), Fragment.lit(""))); + values.add(interpolate(Fragment.encode(String10.pgType, unsaved.string10()), Fragment.lit(""))); columns.add(Fragment.lit("\"string20\"")); - values.add(interpolate(Fragment.encode(String20.dbType, unsaved.string20()), Fragment.lit(""))); + values.add(interpolate(Fragment.encode(String20.pgType, unsaved.string20()), Fragment.lit(""))); columns.add(Fragment.lit("\"string50\"")); - values.add(interpolate(Fragment.encode(String50.dbType, unsaved.string50()), Fragment.lit(""))); + values.add(interpolate(Fragment.encode(String50.pgType, unsaved.string50()), Fragment.lit(""))); columns.add(Fragment.lit("\"string100\"")); values.add( - interpolate(Fragment.encode(String100.dbType, unsaved.string100()), Fragment.lit(""))); + interpolate(Fragment.encode(String100.pgType, unsaved.string100()), Fragment.lit(""))); columns.add(Fragment.lit("\"string255\"")); values.add( - interpolate(Fragment.encode(String255.dbType, unsaved.string255()), Fragment.lit(""))); + interpolate(Fragment.encode(String255.pgType, unsaved.string255()), Fragment.lit(""))); columns.add(Fragment.lit("\"bpchar3\"")); values.add( interpolate( - Fragment.encode(PaddedString3.dbType, unsaved.bpchar3()), Fragment.lit("::bpchar"))); + Fragment.encode(PaddedString3.pgType, unsaved.bpchar3()), Fragment.lit("::bpchar"))); columns.add(Fragment.lit("\"bpchar10\"")); values.add( interpolate( - Fragment.encode(PaddedString10.dbType, unsaved.bpchar10()), Fragment.lit("::bpchar"))); + Fragment.encode(PaddedString10.pgType, unsaved.bpchar10()), Fragment.lit("::bpchar"))); columns.add(Fragment.lit("\"decimal5_2\"")); values.add( interpolate( @@ -225,7 +225,7 @@ public PrecisionTypesRow insert(PrecisionTypesRowUnsaved unsaved, Connection c) columns.add(Fragment.lit("\"id\"")); values.add( interpolate( - Fragment.encode(PrecisionTypesId.dbType, value), Fragment.lit("::int4"))); + Fragment.encode(PrecisionTypesId.pgType, value), Fragment.lit("::int4"))); }); ; Fragment q = @@ -315,7 +315,7 @@ public Optional selectById(PrecisionTypesId id, Connection c) + " \"timetz3\", \"timetz6\"\n" + "from \"public\".\"precision_types\"\n" + "where \"id\" = "), - Fragment.encode(PrecisionTypesId.dbType, id), + Fragment.encode(PrecisionTypesId.pgType, id), Fragment.lit("")) .query(PrecisionTypesRow._rowParser.first()) .runUnchecked(c); @@ -333,7 +333,7 @@ public List selectByIds(PrecisionTypesId[] ids, Connection c) + " \"timetz3\", \"timetz6\"\n" + "from \"public\".\"precision_types\"\n" + "where \"id\" = ANY("), - Fragment.encode(PrecisionTypesId.dbTypeArray, ids), + Fragment.encode(PrecisionTypesId.pgTypeArray, ids), Fragment.lit(")")) .query(PrecisionTypesRow._rowParser.all()) .runUnchecked(c); @@ -363,19 +363,19 @@ public Boolean update(PrecisionTypesRow row, Connection c) { ; return interpolate( Fragment.lit("update \"public\".\"precision_types\"\nset \"string10\" = "), - Fragment.encode(String10.dbType, row.string10()), + Fragment.encode(String10.pgType, row.string10()), Fragment.lit(",\n\"string20\" = "), - Fragment.encode(String20.dbType, row.string20()), + Fragment.encode(String20.pgType, row.string20()), Fragment.lit(",\n\"string50\" = "), - Fragment.encode(String50.dbType, row.string50()), + Fragment.encode(String50.pgType, row.string50()), Fragment.lit(",\n\"string100\" = "), - Fragment.encode(String100.dbType, row.string100()), + Fragment.encode(String100.pgType, row.string100()), Fragment.lit(",\n\"string255\" = "), - Fragment.encode(String255.dbType, row.string255()), + Fragment.encode(String255.pgType, row.string255()), Fragment.lit(",\n\"bpchar3\" = "), - Fragment.encode(PaddedString3.dbType, row.bpchar3()), + Fragment.encode(PaddedString3.pgType, row.bpchar3()), Fragment.lit("::bpchar,\n\"bpchar10\" = "), - Fragment.encode(PaddedString10.dbType, row.bpchar10()), + Fragment.encode(PaddedString10.pgType, row.bpchar10()), Fragment.lit("::bpchar,\n\"decimal5_2\" = "), Fragment.encode(PgTypes.numeric, row.decimal52()), Fragment.lit("::numeric,\n\"decimal10_2\" = "), @@ -411,7 +411,7 @@ public Boolean update(PrecisionTypesRow row, Connection c) { Fragment.lit("::timetz,\n\"timetz6\" = "), Fragment.encode(PgTypes.timetz, row.timetz6()), Fragment.lit("::timetz\nwhere \"id\" = "), - Fragment.encode(PrecisionTypesId.dbType, id), + Fragment.encode(PrecisionTypesId.pgType, id), Fragment.lit("")) .update() .runUnchecked(c) @@ -429,21 +429,21 @@ public PrecisionTypesRow upsert(PrecisionTypesRow unsaved, Connection c) { + " \"timestamptz0\", \"timestamptz3\", \"timestamptz6\", \"time0\", \"time3\"," + " \"time6\", \"timetz0\", \"timetz3\", \"timetz6\")\n" + "values ("), - Fragment.encode(PrecisionTypesId.dbType, unsaved.id()), + Fragment.encode(PrecisionTypesId.pgType, unsaved.id()), Fragment.lit("::int4, "), - Fragment.encode(String10.dbType, unsaved.string10()), + Fragment.encode(String10.pgType, unsaved.string10()), Fragment.lit(", "), - Fragment.encode(String20.dbType, unsaved.string20()), + Fragment.encode(String20.pgType, unsaved.string20()), Fragment.lit(", "), - Fragment.encode(String50.dbType, unsaved.string50()), + Fragment.encode(String50.pgType, unsaved.string50()), Fragment.lit(", "), - Fragment.encode(String100.dbType, unsaved.string100()), + Fragment.encode(String100.pgType, unsaved.string100()), Fragment.lit(", "), - Fragment.encode(String255.dbType, unsaved.string255()), + Fragment.encode(String255.pgType, unsaved.string255()), Fragment.lit(", "), - Fragment.encode(PaddedString3.dbType, unsaved.bpchar3()), + Fragment.encode(PaddedString3.pgType, unsaved.bpchar3()), Fragment.lit("::bpchar, "), - Fragment.encode(PaddedString10.dbType, unsaved.bpchar10()), + Fragment.encode(PaddedString10.pgType, unsaved.bpchar10()), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.numeric, unsaved.decimal52()), Fragment.lit("::numeric, "), diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/public_/precision_types/PrecisionTypesRow.java b/testers/pg/java/generated-and-checked-in/adventureworks/public_/precision_types/PrecisionTypesRow.java index 26a9bc2959..129cf4d37a 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/public_/precision_types/PrecisionTypesRow.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/public_/precision_types/PrecisionTypesRow.java @@ -832,14 +832,14 @@ public PrecisionTypesRow withTimetz6(OffsetTime timetz6) { public static RowParser _rowParser = RowParsers.of( - PrecisionTypesId.dbType, - String10.dbType, - String20.dbType, - String50.dbType, - String100.dbType, - String255.dbType, - PaddedString3.dbType, - PaddedString10.dbType, + PrecisionTypesId.pgType, + String10.pgType, + String20.pgType, + String50.pgType, + String100.pgType, + String255.pgType, + PaddedString3.pgType, + PaddedString10.pgType, PgTypes.numeric, PgTypes.numeric, PgTypes.numeric, diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/public_/precision_types/PrecisionTypesRowUnsaved.java b/testers/pg/java/generated-and-checked-in/adventureworks/public_/precision_types/PrecisionTypesRowUnsaved.java index a7cfd58828..83599b2600 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/public_/precision_types/PrecisionTypesRowUnsaved.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/public_/precision_types/PrecisionTypesRowUnsaved.java @@ -862,19 +862,19 @@ public PrecisionTypesRowUnsaved withId(Defaulted id) { public static PgText pgText = PgText.instance( (row, sb) -> { - String10.dbType.text().unsafeEncode(row.string10, sb); + String10.pgType.text().unsafeEncode(row.string10, sb); sb.append(PgText.DELIMETER); - String20.dbType.text().unsafeEncode(row.string20, sb); + String20.pgType.text().unsafeEncode(row.string20, sb); sb.append(PgText.DELIMETER); - String50.dbType.text().unsafeEncode(row.string50, sb); + String50.pgType.text().unsafeEncode(row.string50, sb); sb.append(PgText.DELIMETER); - String100.dbType.text().unsafeEncode(row.string100, sb); + String100.pgType.text().unsafeEncode(row.string100, sb); sb.append(PgText.DELIMETER); - String255.dbType.text().unsafeEncode(row.string255, sb); + String255.pgType.text().unsafeEncode(row.string255, sb); sb.append(PgText.DELIMETER); - PaddedString3.dbType.text().unsafeEncode(row.bpchar3, sb); + PaddedString3.pgType.text().unsafeEncode(row.bpchar3, sb); sb.append(PgText.DELIMETER); - PaddedString10.dbType.text().unsafeEncode(row.bpchar10, sb); + PaddedString10.pgType.text().unsafeEncode(row.bpchar10, sb); sb.append(PgText.DELIMETER); PgTypes.numeric.text().unsafeEncode(row.decimal52, sb); sb.append(PgText.DELIMETER); @@ -910,7 +910,7 @@ public PrecisionTypesRowUnsaved withId(Defaulted id) { sb.append(PgText.DELIMETER); PgTypes.timetz.text().unsafeEncode(row.timetz6, sb); sb.append(PgText.DELIMETER); - Defaulted.pgText(PrecisionTypesId.dbType.text()).unsafeEncode(row.id, sb); + Defaulted.pgText(PrecisionTypesId.pgType.text()).unsafeEncode(row.id, sb); }); public PrecisionTypesRow toRow(java.util.function.Supplier idDefault) { diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/public_/precision_types_null/PrecisionTypesNullFields.java b/testers/pg/java/generated-and-checked-in/adventureworks/public_/precision_types_null/PrecisionTypesNullFields.java index 5352f224f9..b58da39c18 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/public_/precision_types_null/PrecisionTypesNullFields.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/public_/precision_types_null/PrecisionTypesNullFields.java @@ -76,7 +76,7 @@ public IdField id() { Optional.empty(), Optional.of("int4"), (row, value) -> row.withId(value), - PrecisionTypesNullId.dbType); + PrecisionTypesNullId.pgType); } public OptField string10() { @@ -87,7 +87,7 @@ public OptField string10() { Optional.empty(), Optional.empty(), (row, value) -> row.withString10(value), - String10.dbType); + String10.pgType); } public OptField string20() { @@ -98,7 +98,7 @@ public OptField string20() { Optional.empty(), Optional.empty(), (row, value) -> row.withString20(value), - String20.dbType); + String20.pgType); } public OptField string50() { @@ -109,7 +109,7 @@ public OptField string50() { Optional.empty(), Optional.empty(), (row, value) -> row.withString50(value), - String50.dbType); + String50.pgType); } public OptField string100() { @@ -120,7 +120,7 @@ public OptField string100() { Optional.empty(), Optional.empty(), (row, value) -> row.withString100(value), - String100.dbType); + String100.pgType); } public OptField string255() { @@ -131,7 +131,7 @@ public OptField string255() { Optional.empty(), Optional.empty(), (row, value) -> row.withString255(value), - String255.dbType); + String255.pgType); } public OptField bpchar3() { @@ -142,7 +142,7 @@ public OptField bpchar3() { Optional.empty(), Optional.of("bpchar"), (row, value) -> row.withBpchar3(value), - PaddedString3.dbType); + PaddedString3.pgType); } public OptField bpchar10() { @@ -153,7 +153,7 @@ public OptField bpchar10() { Optional.empty(), Optional.of("bpchar"), (row, value) -> row.withBpchar10(value), - PaddedString10.dbType); + PaddedString10.pgType); } public OptField decimal52() { diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/public_/precision_types_null/PrecisionTypesNullId.java b/testers/pg/java/generated-and-checked-in/adventureworks/public_/precision_types_null/PrecisionTypesNullId.java index dd04637e81..b31b334ebb 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/public_/precision_types_null/PrecisionTypesNullId.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/public_/precision_types_null/PrecisionTypesNullId.java @@ -27,10 +27,10 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(PrecisionTypesNullId::value, PrecisionTypesNullId::new); - public static PgType dbType = + public static PgType pgType = PgTypes.int4.bimap(PrecisionTypesNullId::new, PrecisionTypesNullId::value); - public static PgType dbTypeArray = + public static PgType pgTypeArray = PgTypes.int4Array.bimap( xs -> arrayMap.map(xs, PrecisionTypesNullId::new, PrecisionTypesNullId.class), xs -> arrayMap.map(xs, PrecisionTypesNullId::value, Integer.class)); diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/public_/precision_types_null/PrecisionTypesNullRepoImpl.java b/testers/pg/java/generated-and-checked-in/adventureworks/public_/precision_types_null/PrecisionTypesNullRepoImpl.java index 4470102c94..ca5280e53c 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/public_/precision_types_null/PrecisionTypesNullRepoImpl.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/public_/precision_types_null/PrecisionTypesNullRepoImpl.java @@ -42,7 +42,7 @@ public DeleteBuilder delete() { public Boolean deleteById(PrecisionTypesNullId id, Connection c) { return interpolate( Fragment.lit("delete from \"public\".\"precision_types_null\" where \"id\" = "), - Fragment.encode(PrecisionTypesNullId.dbType, id), + Fragment.encode(PrecisionTypesNullId.pgType, id), Fragment.lit("")) .update() .runUnchecked(c) @@ -53,7 +53,7 @@ public Boolean deleteById(PrecisionTypesNullId id, Connection c) { public Integer deleteByIds(PrecisionTypesNullId[] ids, Connection c) { return interpolate( Fragment.lit("delete\nfrom \"public\".\"precision_types_null\"\nwhere \"id\" = ANY("), - Fragment.encode(PrecisionTypesNullId.dbTypeArray, ids), + Fragment.encode(PrecisionTypesNullId.pgTypeArray, ids), Fragment.lit(")")) .update() .runUnchecked(c); @@ -70,21 +70,21 @@ public PrecisionTypesNullRow insert(PrecisionTypesNullRow unsaved, Connection c) + " \"timestamp6\", \"timestamptz0\", \"timestamptz3\", \"timestamptz6\"," + " \"time0\", \"time3\", \"time6\", \"timetz0\", \"timetz3\", \"timetz6\")\n" + "values ("), - Fragment.encode(PrecisionTypesNullId.dbType, unsaved.id()), + Fragment.encode(PrecisionTypesNullId.pgType, unsaved.id()), Fragment.lit("::int4, "), - Fragment.encode(String10.dbType.opt(), unsaved.string10()), + Fragment.encode(String10.pgType.opt(), unsaved.string10()), Fragment.lit(", "), - Fragment.encode(String20.dbType.opt(), unsaved.string20()), + Fragment.encode(String20.pgType.opt(), unsaved.string20()), Fragment.lit(", "), - Fragment.encode(String50.dbType.opt(), unsaved.string50()), + Fragment.encode(String50.pgType.opt(), unsaved.string50()), Fragment.lit(", "), - Fragment.encode(String100.dbType.opt(), unsaved.string100()), + Fragment.encode(String100.pgType.opt(), unsaved.string100()), Fragment.lit(", "), - Fragment.encode(String255.dbType.opt(), unsaved.string255()), + Fragment.encode(String255.pgType.opt(), unsaved.string255()), Fragment.lit(", "), - Fragment.encode(PaddedString3.dbType.opt(), unsaved.bpchar3()), + Fragment.encode(PaddedString3.pgType.opt(), unsaved.bpchar3()), Fragment.lit("::bpchar, "), - Fragment.encode(PaddedString10.dbType.opt(), unsaved.bpchar10()), + Fragment.encode(PaddedString10.pgType.opt(), unsaved.bpchar10()), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.numeric.opt(), unsaved.decimal52()), Fragment.lit("::numeric, "), @@ -139,30 +139,30 @@ public PrecisionTypesNullRow insert(PrecisionTypesNullRowUnsaved unsaved, Connec ; columns.add(Fragment.lit("\"string10\"")); values.add( - interpolate(Fragment.encode(String10.dbType.opt(), unsaved.string10()), Fragment.lit(""))); + interpolate(Fragment.encode(String10.pgType.opt(), unsaved.string10()), Fragment.lit(""))); columns.add(Fragment.lit("\"string20\"")); values.add( - interpolate(Fragment.encode(String20.dbType.opt(), unsaved.string20()), Fragment.lit(""))); + interpolate(Fragment.encode(String20.pgType.opt(), unsaved.string20()), Fragment.lit(""))); columns.add(Fragment.lit("\"string50\"")); values.add( - interpolate(Fragment.encode(String50.dbType.opt(), unsaved.string50()), Fragment.lit(""))); + interpolate(Fragment.encode(String50.pgType.opt(), unsaved.string50()), Fragment.lit(""))); columns.add(Fragment.lit("\"string100\"")); values.add( interpolate( - Fragment.encode(String100.dbType.opt(), unsaved.string100()), Fragment.lit(""))); + Fragment.encode(String100.pgType.opt(), unsaved.string100()), Fragment.lit(""))); columns.add(Fragment.lit("\"string255\"")); values.add( interpolate( - Fragment.encode(String255.dbType.opt(), unsaved.string255()), Fragment.lit(""))); + Fragment.encode(String255.pgType.opt(), unsaved.string255()), Fragment.lit(""))); columns.add(Fragment.lit("\"bpchar3\"")); values.add( interpolate( - Fragment.encode(PaddedString3.dbType.opt(), unsaved.bpchar3()), + Fragment.encode(PaddedString3.pgType.opt(), unsaved.bpchar3()), Fragment.lit("::bpchar"))); columns.add(Fragment.lit("\"bpchar10\"")); values.add( interpolate( - Fragment.encode(PaddedString10.dbType.opt(), unsaved.bpchar10()), + Fragment.encode(PaddedString10.pgType.opt(), unsaved.bpchar10()), Fragment.lit("::bpchar"))); columns.add(Fragment.lit("\"decimal5_2\"")); values.add( @@ -248,7 +248,7 @@ public PrecisionTypesNullRow insert(PrecisionTypesNullRowUnsaved unsaved, Connec columns.add(Fragment.lit("\"id\"")); values.add( interpolate( - Fragment.encode(PrecisionTypesNullId.dbType, value), Fragment.lit("::int4"))); + Fragment.encode(PrecisionTypesNullId.pgType, value), Fragment.lit("::int4"))); }); ; Fragment q = @@ -338,7 +338,7 @@ public Optional selectById(PrecisionTypesNullId id, Conne + " \"timetz3\", \"timetz6\"\n" + "from \"public\".\"precision_types_null\"\n" + "where \"id\" = "), - Fragment.encode(PrecisionTypesNullId.dbType, id), + Fragment.encode(PrecisionTypesNullId.pgType, id), Fragment.lit("")) .query(PrecisionTypesNullRow._rowParser.first()) .runUnchecked(c); @@ -356,7 +356,7 @@ public List selectByIds(PrecisionTypesNullId[] ids, Conne + " \"timetz3\", \"timetz6\"\n" + "from \"public\".\"precision_types_null\"\n" + "where \"id\" = ANY("), - Fragment.encode(PrecisionTypesNullId.dbTypeArray, ids), + Fragment.encode(PrecisionTypesNullId.pgTypeArray, ids), Fragment.lit(")")) .query(PrecisionTypesNullRow._rowParser.all()) .runUnchecked(c); @@ -386,19 +386,19 @@ public Boolean update(PrecisionTypesNullRow row, Connection c) { ; return interpolate( Fragment.lit("update \"public\".\"precision_types_null\"\nset \"string10\" = "), - Fragment.encode(String10.dbType.opt(), row.string10()), + Fragment.encode(String10.pgType.opt(), row.string10()), Fragment.lit(",\n\"string20\" = "), - Fragment.encode(String20.dbType.opt(), row.string20()), + Fragment.encode(String20.pgType.opt(), row.string20()), Fragment.lit(",\n\"string50\" = "), - Fragment.encode(String50.dbType.opt(), row.string50()), + Fragment.encode(String50.pgType.opt(), row.string50()), Fragment.lit(",\n\"string100\" = "), - Fragment.encode(String100.dbType.opt(), row.string100()), + Fragment.encode(String100.pgType.opt(), row.string100()), Fragment.lit(",\n\"string255\" = "), - Fragment.encode(String255.dbType.opt(), row.string255()), + Fragment.encode(String255.pgType.opt(), row.string255()), Fragment.lit(",\n\"bpchar3\" = "), - Fragment.encode(PaddedString3.dbType.opt(), row.bpchar3()), + Fragment.encode(PaddedString3.pgType.opt(), row.bpchar3()), Fragment.lit("::bpchar,\n\"bpchar10\" = "), - Fragment.encode(PaddedString10.dbType.opt(), row.bpchar10()), + Fragment.encode(PaddedString10.pgType.opt(), row.bpchar10()), Fragment.lit("::bpchar,\n\"decimal5_2\" = "), Fragment.encode(PgTypes.numeric.opt(), row.decimal52()), Fragment.lit("::numeric,\n\"decimal10_2\" = "), @@ -434,7 +434,7 @@ public Boolean update(PrecisionTypesNullRow row, Connection c) { Fragment.lit("::timetz,\n\"timetz6\" = "), Fragment.encode(PgTypes.timetz.opt(), row.timetz6()), Fragment.lit("::timetz\nwhere \"id\" = "), - Fragment.encode(PrecisionTypesNullId.dbType, id), + Fragment.encode(PrecisionTypesNullId.pgType, id), Fragment.lit("")) .update() .runUnchecked(c) @@ -452,21 +452,21 @@ public PrecisionTypesNullRow upsert(PrecisionTypesNullRow unsaved, Connection c) + " \"timestamp6\", \"timestamptz0\", \"timestamptz3\", \"timestamptz6\"," + " \"time0\", \"time3\", \"time6\", \"timetz0\", \"timetz3\", \"timetz6\")\n" + "values ("), - Fragment.encode(PrecisionTypesNullId.dbType, unsaved.id()), + Fragment.encode(PrecisionTypesNullId.pgType, unsaved.id()), Fragment.lit("::int4, "), - Fragment.encode(String10.dbType.opt(), unsaved.string10()), + Fragment.encode(String10.pgType.opt(), unsaved.string10()), Fragment.lit(", "), - Fragment.encode(String20.dbType.opt(), unsaved.string20()), + Fragment.encode(String20.pgType.opt(), unsaved.string20()), Fragment.lit(", "), - Fragment.encode(String50.dbType.opt(), unsaved.string50()), + Fragment.encode(String50.pgType.opt(), unsaved.string50()), Fragment.lit(", "), - Fragment.encode(String100.dbType.opt(), unsaved.string100()), + Fragment.encode(String100.pgType.opt(), unsaved.string100()), Fragment.lit(", "), - Fragment.encode(String255.dbType.opt(), unsaved.string255()), + Fragment.encode(String255.pgType.opt(), unsaved.string255()), Fragment.lit(", "), - Fragment.encode(PaddedString3.dbType.opt(), unsaved.bpchar3()), + Fragment.encode(PaddedString3.pgType.opt(), unsaved.bpchar3()), Fragment.lit("::bpchar, "), - Fragment.encode(PaddedString10.dbType.opt(), unsaved.bpchar10()), + Fragment.encode(PaddedString10.pgType.opt(), unsaved.bpchar10()), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.numeric.opt(), unsaved.decimal52()), Fragment.lit("::numeric, "), diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/public_/precision_types_null/PrecisionTypesNullRow.java b/testers/pg/java/generated-and-checked-in/adventureworks/public_/precision_types_null/PrecisionTypesNullRow.java index d0ce0d6201..8abaf5e89e 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/public_/precision_types_null/PrecisionTypesNullRow.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/public_/precision_types_null/PrecisionTypesNullRow.java @@ -833,14 +833,14 @@ public PrecisionTypesNullRow withTimetz6(Optional timetz6) { public static RowParser _rowParser = RowParsers.of( - PrecisionTypesNullId.dbType, - String10.dbType.opt(), - String20.dbType.opt(), - String50.dbType.opt(), - String100.dbType.opt(), - String255.dbType.opt(), - PaddedString3.dbType.opt(), - PaddedString10.dbType.opt(), + PrecisionTypesNullId.pgType, + String10.pgType.opt(), + String20.pgType.opt(), + String50.pgType.opt(), + String100.pgType.opt(), + String255.pgType.opt(), + PaddedString3.pgType.opt(), + PaddedString10.pgType.opt(), PgTypes.numeric.opt(), PgTypes.numeric.opt(), PgTypes.numeric.opt(), diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/public_/precision_types_null/PrecisionTypesNullRowUnsaved.java b/testers/pg/java/generated-and-checked-in/adventureworks/public_/precision_types_null/PrecisionTypesNullRowUnsaved.java index 1af2f0e5fe..195393d0c9 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/public_/precision_types_null/PrecisionTypesNullRowUnsaved.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/public_/precision_types_null/PrecisionTypesNullRowUnsaved.java @@ -839,19 +839,19 @@ public PrecisionTypesNullRowUnsaved withId(Defaulted id) { public static PgText pgText = PgText.instance( (row, sb) -> { - String10.dbType.opt().text().unsafeEncode(row.string10, sb); + String10.pgType.opt().text().unsafeEncode(row.string10, sb); sb.append(PgText.DELIMETER); - String20.dbType.opt().text().unsafeEncode(row.string20, sb); + String20.pgType.opt().text().unsafeEncode(row.string20, sb); sb.append(PgText.DELIMETER); - String50.dbType.opt().text().unsafeEncode(row.string50, sb); + String50.pgType.opt().text().unsafeEncode(row.string50, sb); sb.append(PgText.DELIMETER); - String100.dbType.opt().text().unsafeEncode(row.string100, sb); + String100.pgType.opt().text().unsafeEncode(row.string100, sb); sb.append(PgText.DELIMETER); - String255.dbType.opt().text().unsafeEncode(row.string255, sb); + String255.pgType.opt().text().unsafeEncode(row.string255, sb); sb.append(PgText.DELIMETER); - PaddedString3.dbType.opt().text().unsafeEncode(row.bpchar3, sb); + PaddedString3.pgType.opt().text().unsafeEncode(row.bpchar3, sb); sb.append(PgText.DELIMETER); - PaddedString10.dbType.opt().text().unsafeEncode(row.bpchar10, sb); + PaddedString10.pgType.opt().text().unsafeEncode(row.bpchar10, sb); sb.append(PgText.DELIMETER); PgTypes.numeric.opt().text().unsafeEncode(row.decimal52, sb); sb.append(PgText.DELIMETER); @@ -887,7 +887,7 @@ public PrecisionTypesNullRowUnsaved withId(Defaulted id) { sb.append(PgText.DELIMETER); PgTypes.timetz.opt().text().unsafeEncode(row.timetz6, sb); sb.append(PgText.DELIMETER); - Defaulted.pgText(PrecisionTypesNullId.dbType.text()).unsafeEncode(row.id, sb); + Defaulted.pgText(PrecisionTypesNullId.pgType.text()).unsafeEncode(row.id, sb); }); public PrecisionTypesNullRow toRow(java.util.function.Supplier idDefault) { diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/public_/title/TitleFields.java b/testers/pg/java/generated-and-checked-in/adventureworks/public_/title/TitleFields.java index c0e5a2eeed..4c29bab6ad 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/public_/title/TitleFields.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/public_/title/TitleFields.java @@ -34,7 +34,7 @@ public IdField code() { Optional.empty(), Optional.empty(), (row, value) -> row.withCode(value), - TitleId.dbType); + TitleId.pgType); } @Override diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/public_/title/TitleId.java b/testers/pg/java/generated-and-checked-in/adventureworks/public_/title/TitleId.java index 063560a6dc..6b3689e3ec 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/public_/title/TitleId.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/public_/title/TitleId.java @@ -43,9 +43,9 @@ static TitleId apply(String str) { } } - public static PgType dbTypeArray = + public static PgType pgTypeArray = PgTypes.textArray.bimap( xs -> arrayMap.map(xs, TitleId::apply, TitleId.class), xs -> arrayMap.map(xs, TitleId::value, String.class)); - public static PgType dbType = PgTypes.text.bimap(TitleId::apply, TitleId::value); + public static PgType pgType = PgTypes.text.bimap(TitleId::apply, TitleId::value); } diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/public_/title/TitleRepoImpl.java b/testers/pg/java/generated-and-checked-in/adventureworks/public_/title/TitleRepoImpl.java index 7b7e41b72a..3ff23f2594 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/public_/title/TitleRepoImpl.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/public_/title/TitleRepoImpl.java @@ -30,7 +30,7 @@ public DeleteBuilder delete() { public Boolean deleteById(TitleId code, Connection c) { return interpolate( Fragment.lit("delete from \"public\".\"title\" where \"code\" = "), - Fragment.encode(TitleId.dbType, code), + Fragment.encode(TitleId.pgType, code), Fragment.lit("")) .update() .runUnchecked(c) @@ -41,7 +41,7 @@ public Boolean deleteById(TitleId code, Connection c) { public Integer deleteByIds(TitleId[] codes, Connection c) { return interpolate( Fragment.lit("delete\nfrom \"public\".\"title\"\nwhere \"code\" = ANY("), - Fragment.encode(TitleId.dbTypeArray, codes), + Fragment.encode(TitleId.pgTypeArray, codes), Fragment.lit(")")) .update() .runUnchecked(c); @@ -51,7 +51,7 @@ public Integer deleteByIds(TitleId[] codes, Connection c) { public TitleRow insert(TitleRow unsaved, Connection c) { return interpolate( Fragment.lit("insert into \"public\".\"title\"(\"code\")\nvalues ("), - Fragment.encode(TitleId.dbType, unsaved.code()), + Fragment.encode(TitleId.pgType, unsaved.code()), Fragment.lit(")\nRETURNING \"code\"\n")) .updateReturning(TitleRow._rowParser.exactlyOne()) .runUnchecked(c); @@ -80,7 +80,7 @@ public List selectAll(Connection c) { public Optional selectById(TitleId code, Connection c) { return interpolate( Fragment.lit("select \"code\"\nfrom \"public\".\"title\"\nwhere \"code\" = "), - Fragment.encode(TitleId.dbType, code), + Fragment.encode(TitleId.pgType, code), Fragment.lit("")) .query(TitleRow._rowParser.first()) .runUnchecked(c); @@ -90,7 +90,7 @@ public Optional selectById(TitleId code, Connection c) { public List selectByIds(TitleId[] codes, Connection c) { return interpolate( Fragment.lit("select \"code\"\nfrom \"public\".\"title\"\nwhere \"code\" = ANY("), - Fragment.encode(TitleId.dbTypeArray, codes), + Fragment.encode(TitleId.pgTypeArray, codes), Fragment.lit(")")) .query(TitleRow._rowParser.all()) .runUnchecked(c); @@ -113,7 +113,7 @@ public UpdateBuilder update() { public TitleRow upsert(TitleRow unsaved, Connection c) { return interpolate( Fragment.lit("insert into \"public\".\"title\"(\"code\")\nvalues ("), - Fragment.encode(TitleId.dbType, unsaved.code()), + Fragment.encode(TitleId.pgType, unsaved.code()), Fragment.lit( ")\n" + "on conflict (\"code\")\n" diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/public_/title/TitleRow.java b/testers/pg/java/generated-and-checked-in/adventureworks/public_/title/TitleRow.java index 9dcf59764d..b72179c3f2 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/public_/title/TitleRow.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/public_/title/TitleRow.java @@ -18,7 +18,7 @@ public TitleRow withCode(TitleId code) { ; public static RowParser _rowParser = - RowParsers.of(TitleId.dbType, TitleRow::new, row -> new Object[] {row.code()}); + RowParsers.of(TitleId.pgType, TitleRow::new, row -> new Object[] {row.code()}); ; public static PgText pgText = PgText.from(_rowParser); diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/public_/title_domain/TitleDomainFields.java b/testers/pg/java/generated-and-checked-in/adventureworks/public_/title_domain/TitleDomainFields.java index 46763c1c36..1ef821a7c0 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/public_/title_domain/TitleDomainFields.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/public_/title_domain/TitleDomainFields.java @@ -35,7 +35,7 @@ public IdField code() { Optional.empty(), Optional.of("text"), (row, value) -> row.withCode(value), - TitleDomainId.dbType); + TitleDomainId.pgType); } @Override diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/public_/title_domain/TitleDomainId.java b/testers/pg/java/generated-and-checked-in/adventureworks/public_/title_domain/TitleDomainId.java index 0c050046de..20c8fc1ae2 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/public_/title_domain/TitleDomainId.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/public_/title_domain/TitleDomainId.java @@ -43,12 +43,12 @@ static TitleDomainId apply(ShortText str) { } } - public static PgType dbTypeArray = - ShortText.dbTypeArray.bimap( + public static PgType pgTypeArray = + ShortText.pgTypeArray.bimap( xs -> arrayMap.map(xs, TitleDomainId::apply, TitleDomainId.class), xs -> arrayMap.map(xs, TitleDomainId::value, ShortText.class)); - public static PgType dbType = - ShortText.dbType.bimap(TitleDomainId::apply, TitleDomainId::value); + public static PgType pgType = + ShortText.pgType.bimap(TitleDomainId::apply, TitleDomainId::value); public static TitleDomainId shortText(String value) { return apply(new ShortText(value)); diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/public_/title_domain/TitleDomainRepoImpl.java b/testers/pg/java/generated-and-checked-in/adventureworks/public_/title_domain/TitleDomainRepoImpl.java index 8686f3e2e1..9b5a095484 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/public_/title_domain/TitleDomainRepoImpl.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/public_/title_domain/TitleDomainRepoImpl.java @@ -31,7 +31,7 @@ public DeleteBuilder delete() { public Boolean deleteById(TitleDomainId code, Connection c) { return interpolate( Fragment.lit("delete from \"public\".\"title_domain\" where \"code\" = "), - Fragment.encode(TitleDomainId.dbType, code), + Fragment.encode(TitleDomainId.pgType, code), Fragment.lit("")) .update() .runUnchecked(c) @@ -42,7 +42,7 @@ public Boolean deleteById(TitleDomainId code, Connection c) { public Integer deleteByIds(TitleDomainId[] codes, Connection c) { return interpolate( Fragment.lit("delete\nfrom \"public\".\"title_domain\"\nwhere \"code\" = ANY("), - Fragment.encode(TitleDomainId.dbTypeArray, codes), + Fragment.encode(TitleDomainId.pgTypeArray, codes), Fragment.lit(")")) .update() .runUnchecked(c); @@ -52,7 +52,7 @@ public Integer deleteByIds(TitleDomainId[] codes, Connection c) { public TitleDomainRow insert(TitleDomainRow unsaved, Connection c) { return interpolate( Fragment.lit("insert into \"public\".\"title_domain\"(\"code\")\nvalues ("), - Fragment.encode(TitleDomainId.dbType, unsaved.code()), + Fragment.encode(TitleDomainId.pgType, unsaved.code()), Fragment.lit("::text)\nRETURNING \"code\"\n")) .updateReturning(TitleDomainRow._rowParser.exactlyOne()) .runUnchecked(c); @@ -88,7 +88,7 @@ public List selectAll(Connection c) { public Optional selectById(TitleDomainId code, Connection c) { return interpolate( Fragment.lit("select \"code\"\nfrom \"public\".\"title_domain\"\nwhere \"code\" = "), - Fragment.encode(TitleDomainId.dbType, code), + Fragment.encode(TitleDomainId.pgType, code), Fragment.lit("")) .query(TitleDomainRow._rowParser.first()) .runUnchecked(c); @@ -99,7 +99,7 @@ public List selectByIds(TitleDomainId[] codes, Connection c) { return interpolate( Fragment.lit( "select \"code\"\nfrom \"public\".\"title_domain\"\nwhere \"code\" = ANY("), - Fragment.encode(TitleDomainId.dbTypeArray, codes), + Fragment.encode(TitleDomainId.pgTypeArray, codes), Fragment.lit(")")) .query(TitleDomainRow._rowParser.all()) .runUnchecked(c); @@ -126,7 +126,7 @@ public UpdateBuilder update() { public TitleDomainRow upsert(TitleDomainRow unsaved, Connection c) { return interpolate( Fragment.lit("insert into \"public\".\"title_domain\"(\"code\")\nvalues ("), - Fragment.encode(TitleDomainId.dbType, unsaved.code()), + Fragment.encode(TitleDomainId.pgType, unsaved.code()), Fragment.lit( "::text)\n" + "on conflict (\"code\")\n" diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/public_/title_domain/TitleDomainRow.java b/testers/pg/java/generated-and-checked-in/adventureworks/public_/title_domain/TitleDomainRow.java index 3f3c7151c5..2e2c3917ec 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/public_/title_domain/TitleDomainRow.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/public_/title_domain/TitleDomainRow.java @@ -18,7 +18,7 @@ public TitleDomainRow withCode(TitleDomainId code) { ; public static RowParser _rowParser = - RowParsers.of(TitleDomainId.dbType, TitleDomainRow::new, row -> new Object[] {row.code()}); + RowParsers.of(TitleDomainId.pgType, TitleDomainRow::new, row -> new Object[] {row.code()}); ; public static PgText pgText = PgText.from(_rowParser); diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/public_/titledperson/TitledpersonFields.java b/testers/pg/java/generated-and-checked-in/adventureworks/public_/titledperson/TitledpersonFields.java index c04aaee3fe..81317fc4f4 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/public_/titledperson/TitledpersonFields.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/public_/titledperson/TitledpersonFields.java @@ -43,7 +43,7 @@ public Field titleShort() { Optional.empty(), Optional.of("text"), (row, value) -> row.withTitleShort(value), - TitleDomainId.dbType); + TitleDomainId.pgType); } public Field title() { @@ -54,7 +54,7 @@ public Field title() { Optional.empty(), Optional.empty(), (row, value) -> row.withTitle(value), - TitleId.dbType); + TitleId.pgType); } public Field name() { diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/public_/titledperson/TitledpersonRepoImpl.java b/testers/pg/java/generated-and-checked-in/adventureworks/public_/titledperson/TitledpersonRepoImpl.java index 4e487e8ea3..761cc8b8de 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/public_/titledperson/TitledpersonRepoImpl.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/public_/titledperson/TitledpersonRepoImpl.java @@ -33,9 +33,9 @@ public TitledpersonRow insert(TitledpersonRow unsaved, Connection c) { Fragment.lit( "insert into \"public\".\"titledperson\"(\"title_short\", \"title\", \"name\")\n" + "values ("), - Fragment.encode(TitleDomainId.dbType, unsaved.titleShort()), + Fragment.encode(TitleDomainId.pgType, unsaved.titleShort()), Fragment.lit("::text, "), - Fragment.encode(TitleId.dbType, unsaved.title()), + Fragment.encode(TitleId.pgType, unsaved.title()), Fragment.lit(", "), Fragment.encode(PgTypes.text, unsaved.name()), Fragment.lit(")\nRETURNING \"title_short\", \"title\", \"name\"\n")) diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/public_/titledperson/TitledpersonRow.java b/testers/pg/java/generated-and-checked-in/adventureworks/public_/titledperson/TitledpersonRow.java index 0042cd6855..050c7ed919 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/public_/titledperson/TitledpersonRow.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/public_/titledperson/TitledpersonRow.java @@ -41,8 +41,8 @@ public TitledpersonRow withName(String name) { public static RowParser _rowParser = RowParsers.of( - TitleDomainId.dbType, - TitleId.dbType, + TitleDomainId.pgType, + TitleId.pgType, PgTypes.text, TitledpersonRow::new, row -> new Object[] {row.titleShort(), row.title(), row.name()}); diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/public_/users/UsersFields.java b/testers/pg/java/generated-and-checked-in/adventureworks/public_/users/UsersFields.java index 1470245003..c926829634 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/public_/users/UsersFields.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/public_/users/UsersFields.java @@ -40,7 +40,7 @@ public IdField userId() { Optional.empty(), Optional.of("uuid"), (row, value) -> row.withUserId(value), - UsersId.dbType); + UsersId.pgType); } public Field name() { diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/public_/users/UsersId.java b/testers/pg/java/generated-and-checked-in/adventureworks/public_/users/UsersId.java index 768ada3d35..2169c1ec69 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/public_/users/UsersId.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/public_/users/UsersId.java @@ -27,9 +27,9 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(UsersId::value, UsersId::new); - public static PgType dbType = PgTypes.uuid.bimap(UsersId::new, UsersId::value); + public static PgType pgType = PgTypes.uuid.bimap(UsersId::new, UsersId::value); - public static PgType dbTypeArray = + public static PgType pgTypeArray = PgTypes.uuidArray.bimap( xs -> arrayMap.map(xs, UsersId::new, UsersId.class), xs -> arrayMap.map(xs, UsersId::value, UUID.class)); diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/public_/users/UsersRepoImpl.java b/testers/pg/java/generated-and-checked-in/adventureworks/public_/users/UsersRepoImpl.java index ddada9379e..7c7c8448c6 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/public_/users/UsersRepoImpl.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/public_/users/UsersRepoImpl.java @@ -33,7 +33,7 @@ public DeleteBuilder delete() { public Boolean deleteById(UsersId userId, Connection c) { return interpolate( Fragment.lit("delete from \"public\".\"users\" where \"user_id\" = "), - Fragment.encode(UsersId.dbType, userId), + Fragment.encode(UsersId.pgType, userId), Fragment.lit("")) .update() .runUnchecked(c) @@ -44,7 +44,7 @@ public Boolean deleteById(UsersId userId, Connection c) { public Integer deleteByIds(UsersId[] userIds, Connection c) { return interpolate( Fragment.lit("delete\nfrom \"public\".\"users\"\nwhere \"user_id\" = ANY("), - Fragment.encode(UsersId.dbTypeArray, userIds), + Fragment.encode(UsersId.pgTypeArray, userIds), Fragment.lit(")")) .update() .runUnchecked(c); @@ -57,7 +57,7 @@ public UsersRow insert(UsersRow unsaved, Connection c) { "insert into \"public\".\"users\"(\"user_id\", \"name\", \"last_name\", \"email\"," + " \"password\", \"created_at\", \"verified_on\")\n" + "values ("), - Fragment.encode(UsersId.dbType, unsaved.userId()), + Fragment.encode(UsersId.pgType, unsaved.userId()), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.text, unsaved.name()), Fragment.lit(", "), @@ -86,7 +86,7 @@ public UsersRow insert(UsersRowUnsaved unsaved, Connection c) { ; columns.add(Fragment.lit("\"user_id\"")); values.add( - interpolate(Fragment.encode(UsersId.dbType, unsaved.userId()), Fragment.lit("::uuid"))); + interpolate(Fragment.encode(UsersId.pgType, unsaved.userId()), Fragment.lit("::uuid"))); columns.add(Fragment.lit("\"name\"")); values.add(interpolate(Fragment.encode(PgTypes.text, unsaved.name()), Fragment.lit(""))); columns.add(Fragment.lit("\"last_name\"")); @@ -176,7 +176,7 @@ public Optional selectById(UsersId userId, Connection c) { + " \"created_at\", \"verified_on\"\n" + "from \"public\".\"users\"\n" + "where \"user_id\" = "), - Fragment.encode(UsersId.dbType, userId), + Fragment.encode(UsersId.pgType, userId), Fragment.lit("")) .query(UsersRow._rowParser.first()) .runUnchecked(c); @@ -190,7 +190,7 @@ public List selectByIds(UsersId[] userIds, Connection c) { + " \"created_at\", \"verified_on\"\n" + "from \"public\".\"users\"\n" + "where \"user_id\" = ANY("), - Fragment.encode(UsersId.dbTypeArray, userIds), + Fragment.encode(UsersId.pgTypeArray, userIds), Fragment.lit(")")) .query(UsersRow._rowParser.all()) .runUnchecked(c); @@ -241,7 +241,7 @@ public Boolean update(UsersRow row, Connection c) { Fragment.lit("::timestamptz,\n\"verified_on\" = "), Fragment.encode(PgTypes.timestamptz.opt(), row.verifiedOn()), Fragment.lit("::timestamptz\nwhere \"user_id\" = "), - Fragment.encode(UsersId.dbType, userId), + Fragment.encode(UsersId.pgType, userId), Fragment.lit("")) .update() .runUnchecked(c) @@ -255,7 +255,7 @@ public UsersRow upsert(UsersRow unsaved, Connection c) { "insert into \"public\".\"users\"(\"user_id\", \"name\", \"last_name\", \"email\"," + " \"password\", \"created_at\", \"verified_on\")\n" + "values ("), - Fragment.encode(UsersId.dbType, unsaved.userId()), + Fragment.encode(UsersId.pgType, unsaved.userId()), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.text, unsaved.name()), Fragment.lit(", "), diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/public_/users/UsersRow.java b/testers/pg/java/generated-and-checked-in/adventureworks/public_/users/UsersRow.java index c3bd4064e1..ff0a6ce67c 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/public_/users/UsersRow.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/public_/users/UsersRow.java @@ -66,7 +66,7 @@ public UsersRow withVerifiedOn(Optional verifiedOn) { public static RowParser _rowParser = RowParsers.of( - UsersId.dbType, + UsersId.pgType, PgTypes.text, PgTypes.text.opt(), PgTypes.unknown, diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/public_/users/UsersRowUnsaved.java b/testers/pg/java/generated-and-checked-in/adventureworks/public_/users/UsersRowUnsaved.java index 2d885c7909..352f1de268 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/public_/users/UsersRowUnsaved.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/public_/users/UsersRowUnsaved.java @@ -69,7 +69,7 @@ public UsersRowUnsaved withCreatedAt(Defaulted createdAt) { public static PgText pgText = PgText.instance( (row, sb) -> { - UsersId.dbType.text().unsafeEncode(row.userId, sb); + UsersId.pgType.text().unsafeEncode(row.userId, sb); sb.append(PgText.DELIMETER); PgTypes.text.text().unsafeEncode(row.name, sb); sb.append(PgText.DELIMETER); diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonFields.java b/testers/pg/java/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonFields.java index 66fbd49be0..9485153df2 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonFields.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonFields.java @@ -58,7 +58,7 @@ public IdField businessentityid() { Optional.empty(), Optional.of("int4"), (row, value) -> row.withBusinessentityid(value), - BusinessentityId.dbType); + BusinessentityId.pgType); } public OptField territoryid() { @@ -69,7 +69,7 @@ public OptField territoryid() { Optional.empty(), Optional.of("int4"), (row, value) -> row.withTerritoryid(value), - SalesterritoryId.dbType); + SalesterritoryId.pgType); } public OptField salesquota() { diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRepoImpl.java b/testers/pg/java/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRepoImpl.java index 9aa2862a21..81091347ed 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRepoImpl.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRepoImpl.java @@ -35,7 +35,7 @@ public DeleteBuilder delete() { public Boolean deleteById(BusinessentityId businessentityid, Connection c) { return interpolate( Fragment.lit("delete from \"sales\".\"salesperson\" where \"businessentityid\" = "), - Fragment.encode(BusinessentityId.dbType, businessentityid), + Fragment.encode(BusinessentityId.pgType, businessentityid), Fragment.lit("")) .update() .runUnchecked(c) @@ -47,7 +47,7 @@ public Integer deleteByIds(BusinessentityId[] businessentityids, Connection c) { return interpolate( Fragment.lit( "delete\nfrom \"sales\".\"salesperson\"\nwhere \"businessentityid\" = ANY("), - Fragment.encode(BusinessentityId.dbTypeArray, businessentityids), + Fragment.encode(BusinessentityId.pgTypeArray, businessentityids), Fragment.lit(")")) .update() .runUnchecked(c); @@ -61,9 +61,9 @@ public SalespersonRow insert(SalespersonRow unsaved, Connection c) { + " \"salesquota\", \"bonus\", \"commissionpct\", \"salesytd\"," + " \"saleslastyear\", \"rowguid\", \"modifieddate\")\n" + "values ("), - Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid()), + Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid()), Fragment.lit("::int4, "), - Fragment.encode(SalesterritoryId.dbType.opt(), unsaved.territoryid()), + Fragment.encode(SalesterritoryId.pgType.opt(), unsaved.territoryid()), Fragment.lit("::int4, "), Fragment.encode(PgTypes.numeric.opt(), unsaved.salesquota()), Fragment.lit("::numeric, "), @@ -96,12 +96,12 @@ public SalespersonRow insert(SalespersonRowUnsaved unsaved, Connection c) { columns.add(Fragment.lit("\"businessentityid\"")); values.add( interpolate( - Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid()), + Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid()), Fragment.lit("::int4"))); columns.add(Fragment.lit("\"territoryid\"")); values.add( interpolate( - Fragment.encode(SalesterritoryId.dbType.opt(), unsaved.territoryid()), + Fragment.encode(SalesterritoryId.pgType.opt(), unsaved.territoryid()), Fragment.lit("::int4"))); columns.add(Fragment.lit("\"salesquota\"")); values.add( @@ -239,7 +239,7 @@ public Optional selectById(BusinessentityId businessentityid, Co + " \"modifieddate\"\n" + "from \"sales\".\"salesperson\"\n" + "where \"businessentityid\" = "), - Fragment.encode(BusinessentityId.dbType, businessentityid), + Fragment.encode(BusinessentityId.pgType, businessentityid), Fragment.lit("")) .query(SalespersonRow._rowParser.first()) .runUnchecked(c); @@ -254,7 +254,7 @@ public List selectByIds(BusinessentityId[] businessentityids, Co + " \"modifieddate\"\n" + "from \"sales\".\"salesperson\"\n" + "where \"businessentityid\" = ANY("), - Fragment.encode(BusinessentityId.dbTypeArray, businessentityids), + Fragment.encode(BusinessentityId.pgTypeArray, businessentityids), Fragment.lit(")")) .query(SalespersonRow._rowParser.all()) .runUnchecked(c); @@ -283,7 +283,7 @@ public Boolean update(SalespersonRow row, Connection c) { ; return interpolate( Fragment.lit("update \"sales\".\"salesperson\"\nset \"territoryid\" = "), - Fragment.encode(SalesterritoryId.dbType.opt(), row.territoryid()), + Fragment.encode(SalesterritoryId.pgType.opt(), row.territoryid()), Fragment.lit("::int4,\n\"salesquota\" = "), Fragment.encode(PgTypes.numeric.opt(), row.salesquota()), Fragment.lit("::numeric,\n\"bonus\" = "), @@ -299,7 +299,7 @@ public Boolean update(SalespersonRow row, Connection c) { Fragment.lit("::uuid,\n\"modifieddate\" = "), Fragment.encode(PgTypes.timestamp, row.modifieddate()), Fragment.lit("::timestamp\nwhere \"businessentityid\" = "), - Fragment.encode(BusinessentityId.dbType, businessentityid), + Fragment.encode(BusinessentityId.pgType, businessentityid), Fragment.lit("")) .update() .runUnchecked(c) @@ -314,9 +314,9 @@ public SalespersonRow upsert(SalespersonRow unsaved, Connection c) { + " \"salesquota\", \"bonus\", \"commissionpct\", \"salesytd\"," + " \"saleslastyear\", \"rowguid\", \"modifieddate\")\n" + "values ("), - Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid()), + Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid()), Fragment.lit("::int4, "), - Fragment.encode(SalesterritoryId.dbType.opt(), unsaved.territoryid()), + Fragment.encode(SalesterritoryId.pgType.opt(), unsaved.territoryid()), Fragment.lit("::int4, "), Fragment.encode(PgTypes.numeric.opt(), unsaved.salesquota()), Fragment.lit("::numeric, "), diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRow.java b/testers/pg/java/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRow.java index f4a97191e5..cb8ea6618b 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRow.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRow.java @@ -229,8 +229,8 @@ public SalespersonRow withModifieddate(LocalDateTime modifieddate) { public static RowParser _rowParser = RowParsers.of( - BusinessentityId.dbType, - SalesterritoryId.dbType.opt(), + BusinessentityId.pgType, + SalesterritoryId.pgType.opt(), PgTypes.numeric.opt(), PgTypes.numeric, PgTypes.numeric, diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRowUnsaved.java b/testers/pg/java/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRowUnsaved.java index 8455d7be48..a6ac599e38 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRowUnsaved.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRowUnsaved.java @@ -236,9 +236,9 @@ public SalespersonRowUnsaved withModifieddate(Defaulted modifiedd public static PgText pgText = PgText.instance( (row, sb) -> { - BusinessentityId.dbType.text().unsafeEncode(row.businessentityid, sb); + BusinessentityId.pgType.text().unsafeEncode(row.businessentityid, sb); sb.append(PgText.DELIMETER); - SalesterritoryId.dbType.opt().text().unsafeEncode(row.territoryid, sb); + SalesterritoryId.pgType.opt().text().unsafeEncode(row.territoryid, sb); sb.append(PgText.DELIMETER); PgTypes.numeric.opt().text().unsafeEncode(row.salesquota, sb); sb.append(PgText.DELIMETER); diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryFields.java b/testers/pg/java/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryFields.java index 1cc1c23379..ae5809bf71 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryFields.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryFields.java @@ -57,7 +57,7 @@ public IdField territoryid() { Optional.empty(), Optional.of("int4"), (row, value) -> row.withTerritoryid(value), - SalesterritoryId.dbType); + SalesterritoryId.pgType); } public Field name() { @@ -68,7 +68,7 @@ public Field name() { Optional.empty(), Optional.of("varchar"), (row, value) -> row.withName(value), - Name.dbType); + Name.pgType); } public Field countryregioncode() { @@ -79,7 +79,7 @@ public Field countryregioncode() { Optional.empty(), Optional.empty(), (row, value) -> row.withCountryregioncode(value), - CountryregionId.dbType); + CountryregionId.pgType); } public Field group() { diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryId.java b/testers/pg/java/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryId.java index 15080f33b0..71433e19ba 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryId.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryId.java @@ -27,10 +27,10 @@ public java.lang.String toString() { public static Bijection bijection = Bijection.of(SalesterritoryId::value, SalesterritoryId::new); - public static PgType dbType = + public static PgType pgType = PgTypes.int4.bimap(SalesterritoryId::new, SalesterritoryId::value); - public static PgType dbTypeArray = + public static PgType pgTypeArray = PgTypes.int4Array.bimap( xs -> arrayMap.map(xs, SalesterritoryId::new, SalesterritoryId.class), xs -> arrayMap.map(xs, SalesterritoryId::value, Integer.class)); diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRepoImpl.java b/testers/pg/java/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRepoImpl.java index ad00f318d1..22e823fbb1 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRepoImpl.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRepoImpl.java @@ -35,7 +35,7 @@ public DeleteBuilder delete() { public Boolean deleteById(SalesterritoryId territoryid, Connection c) { return interpolate( Fragment.lit("delete from \"sales\".\"salesterritory\" where \"territoryid\" = "), - Fragment.encode(SalesterritoryId.dbType, territoryid), + Fragment.encode(SalesterritoryId.pgType, territoryid), Fragment.lit("")) .update() .runUnchecked(c) @@ -46,7 +46,7 @@ public Boolean deleteById(SalesterritoryId territoryid, Connection c) { public Integer deleteByIds(SalesterritoryId[] territoryids, Connection c) { return interpolate( Fragment.lit("delete\nfrom \"sales\".\"salesterritory\"\nwhere \"territoryid\" = ANY("), - Fragment.encode(SalesterritoryId.dbTypeArray, territoryids), + Fragment.encode(SalesterritoryId.pgTypeArray, territoryids), Fragment.lit(")")) .update() .runUnchecked(c); @@ -60,11 +60,11 @@ public SalesterritoryRow insert(SalesterritoryRow unsaved, Connection c) { + " \"countryregioncode\", \"group\", \"salesytd\", \"saleslastyear\"," + " \"costytd\", \"costlastyear\", \"rowguid\", \"modifieddate\")\n" + "values ("), - Fragment.encode(SalesterritoryId.dbType, unsaved.territoryid()), + Fragment.encode(SalesterritoryId.pgType, unsaved.territoryid()), Fragment.lit("::int4, "), - Fragment.encode(Name.dbType, unsaved.name()), + Fragment.encode(Name.pgType, unsaved.name()), Fragment.lit("::varchar, "), - Fragment.encode(CountryregionId.dbType, unsaved.countryregioncode()), + Fragment.encode(CountryregionId.pgType, unsaved.countryregioncode()), Fragment.lit(", "), Fragment.encode(PgTypes.text, unsaved.group()), Fragment.lit(", "), @@ -96,11 +96,11 @@ public SalesterritoryRow insert(SalesterritoryRowUnsaved unsaved, Connection c) ; columns.add(Fragment.lit("\"name\"")); values.add( - interpolate(Fragment.encode(Name.dbType, unsaved.name()), Fragment.lit("::varchar"))); + interpolate(Fragment.encode(Name.pgType, unsaved.name()), Fragment.lit("::varchar"))); columns.add(Fragment.lit("\"countryregioncode\"")); values.add( interpolate( - Fragment.encode(CountryregionId.dbType, unsaved.countryregioncode()), + Fragment.encode(CountryregionId.pgType, unsaved.countryregioncode()), Fragment.lit(""))); columns.add(Fragment.lit("\"group\"")); values.add(interpolate(Fragment.encode(PgTypes.text, unsaved.group()), Fragment.lit(""))); @@ -112,7 +112,7 @@ public SalesterritoryRow insert(SalesterritoryRowUnsaved unsaved, Connection c) columns.add(Fragment.lit("\"territoryid\"")); values.add( interpolate( - Fragment.encode(SalesterritoryId.dbType, value), Fragment.lit("::int4"))); + Fragment.encode(SalesterritoryId.pgType, value), Fragment.lit("::int4"))); }); ; unsaved @@ -247,7 +247,7 @@ public Optional selectById(SalesterritoryId territoryid, Conn + " \"modifieddate\"\n" + "from \"sales\".\"salesterritory\"\n" + "where \"territoryid\" = "), - Fragment.encode(SalesterritoryId.dbType, territoryid), + Fragment.encode(SalesterritoryId.pgType, territoryid), Fragment.lit("")) .query(SalesterritoryRow._rowParser.first()) .runUnchecked(c); @@ -262,7 +262,7 @@ public List selectByIds(SalesterritoryId[] territoryids, Conn + " \"modifieddate\"\n" + "from \"sales\".\"salesterritory\"\n" + "where \"territoryid\" = ANY("), - Fragment.encode(SalesterritoryId.dbTypeArray, territoryids), + Fragment.encode(SalesterritoryId.pgTypeArray, territoryids), Fragment.lit(")")) .query(SalesterritoryRow._rowParser.all()) .runUnchecked(c); @@ -292,9 +292,9 @@ public Boolean update(SalesterritoryRow row, Connection c) { ; return interpolate( Fragment.lit("update \"sales\".\"salesterritory\"\nset \"name\" = "), - Fragment.encode(Name.dbType, row.name()), + Fragment.encode(Name.pgType, row.name()), Fragment.lit("::varchar,\n\"countryregioncode\" = "), - Fragment.encode(CountryregionId.dbType, row.countryregioncode()), + Fragment.encode(CountryregionId.pgType, row.countryregioncode()), Fragment.lit(",\n\"group\" = "), Fragment.encode(PgTypes.text, row.group()), Fragment.lit(",\n\"salesytd\" = "), @@ -310,7 +310,7 @@ public Boolean update(SalesterritoryRow row, Connection c) { Fragment.lit("::uuid,\n\"modifieddate\" = "), Fragment.encode(PgTypes.timestamp, row.modifieddate()), Fragment.lit("::timestamp\nwhere \"territoryid\" = "), - Fragment.encode(SalesterritoryId.dbType, territoryid), + Fragment.encode(SalesterritoryId.pgType, territoryid), Fragment.lit("")) .update() .runUnchecked(c) @@ -325,11 +325,11 @@ public SalesterritoryRow upsert(SalesterritoryRow unsaved, Connection c) { + " \"countryregioncode\", \"group\", \"salesytd\", \"saleslastyear\"," + " \"costytd\", \"costlastyear\", \"rowguid\", \"modifieddate\")\n" + "values ("), - Fragment.encode(SalesterritoryId.dbType, unsaved.territoryid()), + Fragment.encode(SalesterritoryId.pgType, unsaved.territoryid()), Fragment.lit("::int4, "), - Fragment.encode(Name.dbType, unsaved.name()), + Fragment.encode(Name.pgType, unsaved.name()), Fragment.lit("::varchar, "), - Fragment.encode(CountryregionId.dbType, unsaved.countryregioncode()), + Fragment.encode(CountryregionId.pgType, unsaved.countryregioncode()), Fragment.lit(", "), Fragment.encode(PgTypes.text, unsaved.group()), Fragment.lit(", "), diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRow.java b/testers/pg/java/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRow.java index be06a19e8c..f359324342 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRow.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRow.java @@ -248,9 +248,9 @@ public SalesterritoryRow withModifieddate(LocalDateTime modifieddate) { public static RowParser _rowParser = RowParsers.of( - SalesterritoryId.dbType, - Name.dbType, - CountryregionId.dbType, + SalesterritoryId.pgType, + Name.pgType, + CountryregionId.pgType, PgTypes.text, PgTypes.numeric, PgTypes.numeric, diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRowUnsaved.java b/testers/pg/java/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRowUnsaved.java index 7d66eed536..92eb6bd168 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRowUnsaved.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRowUnsaved.java @@ -262,13 +262,13 @@ public SalesterritoryRowUnsaved withModifieddate(Defaulted modifi public static PgText pgText = PgText.instance( (row, sb) -> { - Name.dbType.text().unsafeEncode(row.name, sb); + Name.pgType.text().unsafeEncode(row.name, sb); sb.append(PgText.DELIMETER); - CountryregionId.dbType.text().unsafeEncode(row.countryregioncode, sb); + CountryregionId.pgType.text().unsafeEncode(row.countryregioncode, sb); sb.append(PgText.DELIMETER); PgTypes.text.text().unsafeEncode(row.group, sb); sb.append(PgText.DELIMETER); - Defaulted.pgText(SalesterritoryId.dbType.text()).unsafeEncode(row.territoryid, sb); + Defaulted.pgText(SalesterritoryId.pgType.text()).unsafeEncode(row.territoryid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(PgTypes.numeric.text()).unsafeEncode(row.salesytd, sb); sb.append(PgText.DELIMETER); diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/update_person_returning/UpdatePersonReturningSqlRow.java b/testers/pg/java/generated-and-checked-in/adventureworks/update_person_returning/UpdatePersonReturningSqlRow.java index eb9f81f5f4..b5e51771b1 100644 --- a/testers/pg/java/generated-and-checked-in/adventureworks/update_person_returning/UpdatePersonReturningSqlRow.java +++ b/testers/pg/java/generated-and-checked-in/adventureworks/update_person_returning/UpdatePersonReturningSqlRow.java @@ -33,7 +33,7 @@ public UpdatePersonReturningSqlRow withModifieddate(LocalDateTime modifieddate) public static RowParser _rowParser = RowParsers.of( - FirstName.dbType, + FirstName.pgType, PgTypes.timestamp, UpdatePersonReturningSqlRow::new, row -> new Object[] {row.firstname(), row.modifieddate()}); diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/userdefined/ActiveFlag.java b/testers/pg/java/generated-and-checked-in/adventureworks/userdefined/ActiveFlag.java new file mode 100644 index 0000000000..8d74d8e992 --- /dev/null +++ b/testers/pg/java/generated-and-checked-in/adventureworks/userdefined/ActiveFlag.java @@ -0,0 +1,36 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined; + +import adventureworks.public_.Flag; +import com.fasterxml.jackson.annotation.JsonValue; +import dev.typr.foundations.PgType; +import dev.typr.foundations.dsl.Bijection; +import dev.typr.foundations.internal.arrayMap; + +/** Shared type `ActiveFlag` Generated from TypeDefinitions matching */ +public record ActiveFlag(@JsonValue Flag value) { + public ActiveFlag withValue(Flag value) { + return new ActiveFlag(value); + } + ; + + @Override + public java.lang.String toString() { + return value.toString(); + } + ; + + public static Bijection bijection = + Bijection.of(ActiveFlag::value, ActiveFlag::new); + + public static PgType pgType = Flag.pgType.bimap(ActiveFlag::new, ActiveFlag::value); + + public static PgType pgTypeArray = + Flag.pgTypeArray.bimap( + xs -> arrayMap.map(xs, ActiveFlag::new, ActiveFlag.class), + xs -> arrayMap.map(xs, ActiveFlag::value, Flag.class)); +} diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/userdefined/CurrentFlag.java b/testers/pg/java/generated-and-checked-in/adventureworks/userdefined/CurrentFlag.java new file mode 100644 index 0000000000..47d4a45135 --- /dev/null +++ b/testers/pg/java/generated-and-checked-in/adventureworks/userdefined/CurrentFlag.java @@ -0,0 +1,37 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined; + +import adventureworks.public_.Flag; +import com.fasterxml.jackson.annotation.JsonValue; +import dev.typr.foundations.PgType; +import dev.typr.foundations.dsl.Bijection; +import dev.typr.foundations.internal.arrayMap; + +/** Shared type `CurrentFlag` Generated from TypeDefinitions matching */ +public record CurrentFlag(@JsonValue Flag value) { + public CurrentFlag withValue(Flag value) { + return new CurrentFlag(value); + } + ; + + @Override + public java.lang.String toString() { + return value.toString(); + } + ; + + public static Bijection bijection = + Bijection.of(CurrentFlag::value, CurrentFlag::new); + + public static PgType pgType = + Flag.pgType.bimap(CurrentFlag::new, CurrentFlag::value); + + public static PgType pgTypeArray = + Flag.pgTypeArray.bimap( + xs -> arrayMap.map(xs, CurrentFlag::new, CurrentFlag.class), + xs -> arrayMap.map(xs, CurrentFlag::value, Flag.class)); +} diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/userdefined/FirstName.java b/testers/pg/java/generated-and-checked-in/adventureworks/userdefined/FirstName.java new file mode 100644 index 0000000000..311c2b0977 --- /dev/null +++ b/testers/pg/java/generated-and-checked-in/adventureworks/userdefined/FirstName.java @@ -0,0 +1,36 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined; + +import adventureworks.public_.Name; +import com.fasterxml.jackson.annotation.JsonValue; +import dev.typr.foundations.PgType; +import dev.typr.foundations.dsl.Bijection; +import dev.typr.foundations.internal.arrayMap; + +/** Shared type `FirstName` Generated from TypeDefinitions matching */ +public record FirstName(@JsonValue Name value) { + public FirstName withValue(Name value) { + return new FirstName(value); + } + ; + + @Override + public java.lang.String toString() { + return value.toString(); + } + ; + + public static Bijection bijection = + Bijection.of(FirstName::value, FirstName::new); + + public static PgType pgType = Name.pgType.bimap(FirstName::new, FirstName::value); + + public static PgType pgTypeArray = + Name.pgTypeArray.bimap( + xs -> arrayMap.map(xs, FirstName::new, FirstName.class), + xs -> arrayMap.map(xs, FirstName::value, Name.class)); +} diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/userdefined/LastName.java b/testers/pg/java/generated-and-checked-in/adventureworks/userdefined/LastName.java new file mode 100644 index 0000000000..f2f6464abb --- /dev/null +++ b/testers/pg/java/generated-and-checked-in/adventureworks/userdefined/LastName.java @@ -0,0 +1,35 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined; + +import adventureworks.public_.Name; +import com.fasterxml.jackson.annotation.JsonValue; +import dev.typr.foundations.PgType; +import dev.typr.foundations.dsl.Bijection; +import dev.typr.foundations.internal.arrayMap; + +/** Shared type `LastName` Generated from TypeDefinitions matching */ +public record LastName(@JsonValue Name value) { + public LastName withValue(Name value) { + return new LastName(value); + } + ; + + @Override + public java.lang.String toString() { + return value.toString(); + } + ; + + public static Bijection bijection = Bijection.of(LastName::value, LastName::new); + + public static PgType pgType = Name.pgType.bimap(LastName::new, LastName::value); + + public static PgType pgTypeArray = + Name.pgTypeArray.bimap( + xs -> arrayMap.map(xs, LastName::new, LastName.class), + xs -> arrayMap.map(xs, LastName::value, Name.class)); +} diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/userdefined/MiddleName.java b/testers/pg/java/generated-and-checked-in/adventureworks/userdefined/MiddleName.java new file mode 100644 index 0000000000..88f9e5a504 --- /dev/null +++ b/testers/pg/java/generated-and-checked-in/adventureworks/userdefined/MiddleName.java @@ -0,0 +1,36 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined; + +import adventureworks.public_.Name; +import com.fasterxml.jackson.annotation.JsonValue; +import dev.typr.foundations.PgType; +import dev.typr.foundations.dsl.Bijection; +import dev.typr.foundations.internal.arrayMap; + +/** Shared type `MiddleName` Generated from TypeDefinitions matching */ +public record MiddleName(@JsonValue Name value) { + public MiddleName withValue(Name value) { + return new MiddleName(value); + } + ; + + @Override + public java.lang.String toString() { + return value.toString(); + } + ; + + public static Bijection bijection = + Bijection.of(MiddleName::value, MiddleName::new); + + public static PgType pgType = Name.pgType.bimap(MiddleName::new, MiddleName::value); + + public static PgType pgTypeArray = + Name.pgTypeArray.bimap( + xs -> arrayMap.map(xs, MiddleName::new, MiddleName.class), + xs -> arrayMap.map(xs, MiddleName::value, Name.class)); +} diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/userdefined/OnlineOrderFlag.java b/testers/pg/java/generated-and-checked-in/adventureworks/userdefined/OnlineOrderFlag.java new file mode 100644 index 0000000000..88fe3a975c --- /dev/null +++ b/testers/pg/java/generated-and-checked-in/adventureworks/userdefined/OnlineOrderFlag.java @@ -0,0 +1,37 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined; + +import adventureworks.public_.Flag; +import com.fasterxml.jackson.annotation.JsonValue; +import dev.typr.foundations.PgType; +import dev.typr.foundations.dsl.Bijection; +import dev.typr.foundations.internal.arrayMap; + +/** Shared type `OnlineOrderFlag` Generated from TypeDefinitions matching */ +public record OnlineOrderFlag(@JsonValue Flag value) { + public OnlineOrderFlag withValue(Flag value) { + return new OnlineOrderFlag(value); + } + ; + + @Override + public java.lang.String toString() { + return value.toString(); + } + ; + + public static Bijection bijection = + Bijection.of(OnlineOrderFlag::value, OnlineOrderFlag::new); + + public static PgType pgType = + Flag.pgType.bimap(OnlineOrderFlag::new, OnlineOrderFlag::value); + + public static PgType pgTypeArray = + Flag.pgTypeArray.bimap( + xs -> arrayMap.map(xs, OnlineOrderFlag::new, OnlineOrderFlag.class), + xs -> arrayMap.map(xs, OnlineOrderFlag::value, Flag.class)); +} diff --git a/testers/pg/java/generated-and-checked-in/adventureworks/userdefined/SalariedFlag.java b/testers/pg/java/generated-and-checked-in/adventureworks/userdefined/SalariedFlag.java new file mode 100644 index 0000000000..d42c44c061 --- /dev/null +++ b/testers/pg/java/generated-and-checked-in/adventureworks/userdefined/SalariedFlag.java @@ -0,0 +1,37 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined; + +import adventureworks.public_.Flag; +import com.fasterxml.jackson.annotation.JsonValue; +import dev.typr.foundations.PgType; +import dev.typr.foundations.dsl.Bijection; +import dev.typr.foundations.internal.arrayMap; + +/** Shared type `SalariedFlag` Generated from TypeDefinitions matching */ +public record SalariedFlag(@JsonValue Flag value) { + public SalariedFlag withValue(Flag value) { + return new SalariedFlag(value); + } + ; + + @Override + public java.lang.String toString() { + return value.toString(); + } + ; + + public static Bijection bijection = + Bijection.of(SalariedFlag::value, SalariedFlag::new); + + public static PgType pgType = + Flag.pgType.bimap(SalariedFlag::new, SalariedFlag::value); + + public static PgType pgTypeArray = + Flag.pgTypeArray.bimap( + xs -> arrayMap.map(xs, SalariedFlag::new, SalariedFlag.class), + xs -> arrayMap.map(xs, SalariedFlag::value, Flag.class)); +} diff --git a/testers/pg/java/src/java/adventureworks/DSLTest.java b/testers/pg/java/src/java/adventureworks/DSLTest.java index f43359fba0..7349f8a8d8 100644 --- a/testers/pg/java/src/java/adventureworks/DSLTest.java +++ b/testers/pg/java/src/java/adventureworks/DSLTest.java @@ -9,6 +9,8 @@ import adventureworks.public_.Name; import adventureworks.sales.salesperson.SalespersonRepoImpl; import adventureworks.userdefined.FirstName; +import adventureworks.userdefined.LastName; +import adventureworks.userdefined.MiddleName; import dev.typr.foundations.dsl.Bijection; import dev.typr.foundations.dsl.SqlExpr; import dev.typr.foundations.dsl.TupleExpr; @@ -38,7 +40,8 @@ public void works() { // Create person var personRow = testInsert - .personPerson(businessentityRow.businessentityid(), "EM", new FirstName("a")) + .personPerson(businessentityRow.businessentityid(), "EM") + .with(row -> row.withFirstname(new FirstName(new Name("a")))) .insert(c); // Create emailaddress @@ -115,8 +118,11 @@ public void mapProjectsColumns() { // Create person var personRow = testInsert - .personPerson(businessentityRow.businessentityid(), "EM", new FirstName("John")) - .with(row -> row.withLastname(new Name("Doe"))) + .personPerson(businessentityRow.businessentityid(), "EM") + .with( + row -> + row.withFirstname(new FirstName(new Name("John"))) + .withLastname(new LastName(new Name("Doe")))) .insert(c); // Test map operation - project only firstname and lastname @@ -132,8 +138,8 @@ public void mapProjectsColumns() { // Execute and verify results var results = projected.toList(c); assertEquals(1, results.size()); - assertEquals(new FirstName("John"), results.get(0)._1()); - assertEquals(new Name("Doe"), results.get(0)._2()); + assertEquals(new FirstName(new Name("John")), results.get(0)._1()); + assertEquals(new LastName(new Name("Doe")), results.get(0)._2()); }); } @@ -150,8 +156,11 @@ public void mapAfterJoin() { // Create person var personRow = testInsert - .personPerson(businessentityRow.businessentityid(), "EM", new FirstName("Jane")) - .with(row -> row.withLastname(new Name("Smith"))) + .personPerson(businessentityRow.businessentityid(), "EM") + .with( + row -> + row.withFirstname(new FirstName(new Name("Jane"))) + .withLastname(new LastName(new Name("Smith")))) .insert(c); // Create emailaddress @@ -175,7 +184,7 @@ public void mapAfterJoin() { // Execute - note: emailaddress is Optional, so we get Optional var results = projected.toList(c); assertEquals(1, results.size()); - assertEquals(new FirstName("Jane"), results.get(0)._1()); + assertEquals(new FirstName(new Name("Jane")), results.get(0)._1()); // Test nested tuple syntax: Tuple.of() can be used as a SqlExpr var nestedProjected = @@ -195,8 +204,8 @@ public void mapAfterJoin() { assertEquals(1, nestedResults.size()); // First element is a nested tuple var nameTuple = nestedResults.get(0); - assertEquals(new FirstName("Jane"), nameTuple._1()); - assertEquals(new Name("Smith"), nameTuple._2()); + assertEquals(new FirstName(new Name("Jane")), nameTuple._1()); + assertEquals(new LastName(new Name("Smith")), nameTuple._2()); }); } @@ -213,8 +222,11 @@ public void multisetOnAggregatesChildRows() { // Create person var personRow = testInsert - .personPerson(businessentityRow.businessentityid(), "EM", new FirstName("Bob")) - .with(row -> row.withLastname(new Name("Wilson"))) + .personPerson(businessentityRow.businessentityid(), "EM") + .with( + row -> + row.withFirstname(new FirstName(new Name("Bob"))) + .withLastname(new LastName(new Name("Wilson")))) .insert(c); // Create multiple email addresses for the same person @@ -245,8 +257,8 @@ public void multisetOnAggregatesChildRows() { // The parent row should be Bob Wilson var parent = results.get(0)._1(); - assertEquals(new FirstName("Bob"), parent.firstname()); - assertEquals(new Name("Wilson"), parent.lastname()); + assertEquals(new FirstName(new Name("Bob")), parent.firstname()); + assertEquals(new LastName(new Name("Wilson")), parent.lastname()); // The child should be a typed list of emails var childEmails = results.get(0)._2(); @@ -272,8 +284,8 @@ public void multisetOnWithNoChildren() { // Create person with NO email addresses var personRow = testInsert - .personPerson( - businessentityRow.businessentityid(), "EM", new FirstName("NoEmail")) + .personPerson(businessentityRow.businessentityid(), "EM") + .with(row -> row.withFirstname(new FirstName(new Name("NoEmail")))) .insert(c); // Test multisetOn with no children @@ -291,7 +303,7 @@ public void multisetOnWithNoChildren() { // The parent row should be found var parent = results.get(0)._1(); - assertEquals(new FirstName("NoEmail"), parent.firstname()); + assertEquals(new FirstName(new Name("NoEmail")), parent.firstname()); // The child list should be empty var childEmails = results.get(0)._2(); @@ -316,8 +328,11 @@ public void multisetOnWithNestedTupleProjection() { // Create person var personRow = testInsert - .personPerson(businessentityRow.businessentityid(), "EM", new FirstName("Alice")) - .with(row -> row.withLastname(new Name("Johnson"))) + .personPerson(businessentityRow.businessentityid(), "EM") + .with( + row -> + row.withFirstname(new FirstName(new Name("Alice"))) + .withLastname(new LastName(new Name("Johnson")))) .insert(c); // Create multiple email addresses @@ -363,8 +378,8 @@ public void multisetOnWithNestedTupleProjection() { var parentTuple = results.get(0)._1(); // Tuple2, BusinessentityId> var nameTuple = parentTuple._1(); // Tuple2 - assertEquals(new FirstName("Alice"), nameTuple._1()); - assertEquals(new Name("Johnson"), nameTuple._2()); + assertEquals(new FirstName(new Name("Alice")), nameTuple._1()); + assertEquals(new LastName(new Name("Johnson")), nameTuple._2()); // The child should be a typed list of emails var childEmails = results.get(0)._2(); @@ -388,7 +403,8 @@ public void inSubqueryFindsMatchingRows() { var be1 = testInsert.personBusinessentity().insert(c); var person1 = testInsert - .personPerson(be1.businessentityid(), "EM", new FirstName("HasEmail")) + .personPerson(be1.businessentityid(), "EM") + .with(row -> row.withFirstname(new FirstName(new Name("HasEmail")))) .insert(c); testInsert .personEmailaddress(person1.businessentityid()) @@ -399,7 +415,8 @@ public void inSubqueryFindsMatchingRows() { var be2 = testInsert.personBusinessentity().insert(c); var person2 = testInsert - .personPerson(be2.businessentityid(), "EM", new FirstName("NoEmail")) + .personPerson(be2.businessentityid(), "EM") + .with(row -> row.withFirstname(new FirstName(new Name("NoEmail")))) .insert(c); // Find persons whose businessentityid is IN the email table @@ -424,7 +441,7 @@ public void inSubqueryFindsMatchingRows() { // Execute and verify - should only find person1 var results = query.toList(c); assertEquals(1, results.size()); - assertEquals(new FirstName("HasEmail"), results.get(0).firstname()); + assertEquals(new FirstName(new Name("HasEmail")), results.get(0).firstname()); }); } @@ -439,7 +456,8 @@ public void existsFindsRowsWithCorrelatedSubquery() { var be1 = testInsert.personBusinessentity().insert(c); var person1 = testInsert - .personPerson(be1.businessentityid(), "EM", new FirstName("HasEmail")) + .personPerson(be1.businessentityid(), "EM") + .with(row -> row.withFirstname(new FirstName(new Name("HasEmail")))) .insert(c); testInsert .personEmailaddress(person1.businessentityid()) @@ -450,7 +468,8 @@ public void existsFindsRowsWithCorrelatedSubquery() { var be2 = testInsert.personBusinessentity().insert(c); var person2 = testInsert - .personPerson(be2.businessentityid(), "EM", new FirstName("NoEmail")) + .personPerson(be2.businessentityid(), "EM") + .with(row -> row.withFirstname(new FirstName(new Name("NoEmail")))) .insert(c); // Find persons where EXISTS (select from email where email.businessentityid = @@ -480,7 +499,7 @@ public void existsFindsRowsWithCorrelatedSubquery() { // Execute and verify var results = query.toList(c); assertEquals(1, results.size()); - assertEquals(new FirstName("HasEmail"), results.get(0).firstname()); + assertEquals(new FirstName(new Name("HasEmail")), results.get(0).firstname()); }); } @@ -495,7 +514,8 @@ public void notExistsFiltersOutRowsWithMatches() { var be1 = testInsert.personBusinessentity().insert(c); var person1 = testInsert - .personPerson(be1.businessentityid(), "EM", new FirstName("HasEmail")) + .personPerson(be1.businessentityid(), "EM") + .with(row -> row.withFirstname(new FirstName(new Name("HasEmail")))) .insert(c); testInsert .personEmailaddress(person1.businessentityid()) @@ -506,7 +526,8 @@ public void notExistsFiltersOutRowsWithMatches() { var be2 = testInsert.personBusinessentity().insert(c); var person2 = testInsert - .personPerson(be2.businessentityid(), "EM", new FirstName("NoEmail")) + .personPerson(be2.businessentityid(), "EM") + .with(row -> row.withFirstname(new FirstName(new Name("NoEmail")))) .insert(c); // Find persons who DON'T have email @@ -527,7 +548,7 @@ public void notExistsFiltersOutRowsWithMatches() { // Execute and verify - should find person2 (who has no email) var results = query.toList(c); assertEquals(1, results.size()); - assertEquals(new FirstName("NoEmail"), results.get(0).firstname()); + assertEquals(new FirstName(new Name("NoEmail")), results.get(0).firstname()); }); } @@ -542,7 +563,8 @@ public void existsWithWhereClause() { var be1 = testInsert.personBusinessentity().insert(c); var person1 = testInsert - .personPerson(be1.businessentityid(), "EM", new FirstName("WorkEmail")) + .personPerson(be1.businessentityid(), "EM") + .with(row -> row.withFirstname(new FirstName(new Name("WorkEmail")))) .insert(c); testInsert .personEmailaddress(person1.businessentityid()) @@ -553,7 +575,8 @@ public void existsWithWhereClause() { var be2 = testInsert.personBusinessentity().insert(c); var person2 = testInsert - .personPerson(be2.businessentityid(), "EM", new FirstName("PersonalEmail")) + .personPerson(be2.businessentityid(), "EM") + .with(row -> row.withFirstname(new FirstName(new Name("PersonalEmail")))) .insert(c); testInsert .personEmailaddress(person2.businessentityid()) @@ -577,7 +600,7 @@ public void existsWithWhereClause() { var results = query.toList(c); assertEquals(1, results.size()); - assertEquals(new FirstName("WorkEmail"), results.get(0).firstname()); + assertEquals(new FirstName(new Name("WorkEmail")), results.get(0).firstname()); }); } @@ -592,7 +615,8 @@ public void leftJoinReturnsAllLeftRowsWithOptionalRight() { var be1 = testInsert.personBusinessentity().insert(c); var employee = testInsert - .personPerson(be1.businessentityid(), "EM", new FirstName("Employee")) + .personPerson(be1.businessentityid(), "EM") + .with(row -> row.withFirstname(new FirstName(new Name("Employee")))) .insert(c); testInsert .humanresourcesEmployee( @@ -608,7 +632,8 @@ public void leftJoinReturnsAllLeftRowsWithOptionalRight() { var be2 = testInsert.personBusinessentity().insert(c); var nonEmployee = testInsert - .personPerson(be2.businessentityid(), "SC", new FirstName("Customer")) + .personPerson(be2.businessentityid(), "SC") + .with(row -> row.withFirstname(new FirstName(new Name("Customer")))) .insert(c); // Left join person with employee - should return both persons @@ -633,11 +658,11 @@ public void leftJoinReturnsAllLeftRowsWithOptionalRight() { assertEquals(2, results.size()); // First result: Customer (no employee data) - assertEquals(new FirstName("Customer"), results.get(0)._1().firstname()); + assertEquals(new FirstName(new Name("Customer")), results.get(0)._1().firstname()); assertTrue(results.get(0)._2().isEmpty()); // Second result: Employee (has employee data) - assertEquals(new FirstName("Employee"), results.get(1)._1().firstname()); + assertEquals(new FirstName(new Name("Employee")), results.get(1)._1().firstname()); assertTrue(results.get(1)._2().isPresent()); assertEquals("Developer", results.get(1)._2().get().jobtitle()); }); @@ -654,17 +679,22 @@ public void comparisonOperatorsWithLiterals() { var be1 = testInsert.personBusinessentity().insert(c); var person1 = testInsert - .personPerson(be1.businessentityid(), "EM", new FirstName("Alice")) + .personPerson(be1.businessentityid(), "EM") + .with(row -> row.withFirstname(new FirstName(new Name("Alice")))) .insert(c); var be2 = testInsert.personBusinessentity().insert(c); var person2 = - testInsert.personPerson(be2.businessentityid(), "EM", new FirstName("Bob")).insert(c); + testInsert + .personPerson(be2.businessentityid(), "EM") + .with(row -> row.withFirstname(new FirstName(new Name("Bob")))) + .insert(c); var be3 = testInsert.personBusinessentity().insert(c); var person3 = testInsert - .personPerson(be3.businessentityid(), "EM", new FirstName("Charlie")) + .personPerson(be3.businessentityid(), "EM") + .with(row -> row.withFirstname(new FirstName(new Name("Charlie")))) .insert(c); // Test greaterThan - find persons with id > person1's id @@ -677,8 +707,8 @@ public void comparisonOperatorsWithLiterals() { var gtResults = gtQuery.toList(c); assertEquals(2, gtResults.size()); - assertEquals(new FirstName("Bob"), gtResults.get(0).firstname()); - assertEquals(new FirstName("Charlie"), gtResults.get(1).firstname()); + assertEquals(new FirstName(new Name("Bob")), gtResults.get(0).firstname()); + assertEquals(new FirstName(new Name("Charlie")), gtResults.get(1).firstname()); // Test lessThan - find persons with id < person3's id var ltQuery = @@ -690,8 +720,8 @@ public void comparisonOperatorsWithLiterals() { var ltResults = ltQuery.toList(c); assertEquals(2, ltResults.size()); - assertEquals(new FirstName("Alice"), ltResults.get(0).firstname()); - assertEquals(new FirstName("Bob"), ltResults.get(1).firstname()); + assertEquals(new FirstName(new Name("Alice")), ltResults.get(0).firstname()); + assertEquals(new FirstName(new Name("Bob")), ltResults.get(1).firstname()); // Test isNotEqual var neqQuery = @@ -704,8 +734,8 @@ public void comparisonOperatorsWithLiterals() { var neqResults = neqQuery.toList(c); assertEquals(2, neqResults.size()); - assertEquals(new FirstName("Alice"), neqResults.get(0).firstname()); - assertEquals(new FirstName("Charlie"), neqResults.get(1).firstname()); + assertEquals(new FirstName(new Name("Alice")), neqResults.get(0).firstname()); + assertEquals(new FirstName(new Name("Charlie")), neqResults.get(1).firstname()); }); } @@ -720,19 +750,22 @@ public void inArrayFindsMatchingRows() { var be1 = testInsert.personBusinessentity().insert(c); var person1 = testInsert - .personPerson(be1.businessentityid(), "EM", new FirstName("InTest1")) + .personPerson(be1.businessentityid(), "EM") + .with(row -> row.withFirstname(new FirstName(new Name("InTest1")))) .insert(c); var be2 = testInsert.personBusinessentity().insert(c); var person2 = testInsert - .personPerson(be2.businessentityid(), "EM", new FirstName("InTest2")) + .personPerson(be2.businessentityid(), "EM") + .with(row -> row.withFirstname(new FirstName(new Name("InTest2")))) .insert(c); var be3 = testInsert.personBusinessentity().insert(c); var person3 = testInsert - .personPerson(be3.businessentityid(), "EM", new FirstName("InTest3")) + .personPerson(be3.businessentityid(), "EM") + .with(row -> row.withFirstname(new FirstName(new Name("InTest3")))) .insert(c); // Use IN to find person1 and person3 (not person2) @@ -749,8 +782,8 @@ public void inArrayFindsMatchingRows() { var results = query.toList(c); assertEquals(2, results.size()); - assertEquals(new FirstName("InTest1"), results.get(0).firstname()); - assertEquals(new FirstName("InTest3"), results.get(1).firstname()); + assertEquals(new FirstName(new Name("InTest1")), results.get(0).firstname()); + assertEquals(new FirstName(new Name("InTest3")), results.get(1).firstname()); }); } @@ -765,16 +798,22 @@ public void coalesceReturnsFirstNonNull() { var be1 = testInsert.personBusinessentity().insert(c); var personWithMiddle = testInsert - .personPerson(be1.businessentityid(), "EM", new FirstName("WithMiddle")) - .with(row -> row.withMiddlename(Optional.of(new Name("MiddleName")))) + .personPerson(be1.businessentityid(), "EM") + .with( + row -> + row.withFirstname(new FirstName(new Name("WithMiddle"))) + .withMiddlename(Optional.of(new MiddleName(new Name("MiddleName"))))) .insert(c); // Create person without middle name var be2 = testInsert.personBusinessentity().insert(c); var personWithoutMiddle = testInsert - .personPerson(be2.businessentityid(), "EM", new FirstName("NoMiddle")) - .with(row -> row.withMiddlename(Optional.empty())) + .personPerson(be2.businessentityid(), "EM") + .with( + row -> + row.withFirstname(new FirstName(new Name("NoMiddle"))) + .withMiddlename(Optional.empty())) .insert(c); // Query and verify persons were created correctly @@ -795,12 +834,13 @@ public void coalesceReturnsFirstNonNull() { assertEquals(2, results.size()); // NoMiddle should have empty middle name - assertEquals(new FirstName("NoMiddle"), results.get(0).firstname()); + assertEquals(new FirstName(new Name("NoMiddle")), results.get(0).firstname()); assertEquals(Optional.empty(), results.get(0).middlename()); // WithMiddle should have actual middle name - assertEquals(new FirstName("WithMiddle"), results.get(1).firstname()); - assertEquals(Optional.of(new Name("MiddleName")), results.get(1).middlename()); + assertEquals(new FirstName(new Name("WithMiddle")), results.get(1).firstname()); + assertEquals( + Optional.of(new MiddleName(new Name("MiddleName"))), results.get(1).middlename()); }); } @@ -815,16 +855,22 @@ public void isNullFindsRowsWithNullValues() { var be1 = testInsert.personBusinessentity().insert(c); var personWithTitle = testInsert - .personPerson(be1.businessentityid(), "EM", new FirstName("HasTitle")) - .with(row -> row.withTitle(Optional.of("Mr."))) + .personPerson(be1.businessentityid(), "EM") + .with( + row -> + row.withFirstname(new FirstName(new Name("HasTitle"))) + .withTitle(Optional.of("Mr."))) .insert(c); // Create person without title var be2 = testInsert.personBusinessentity().insert(c); var personWithoutTitle = testInsert - .personPerson(be2.businessentityid(), "EM", new FirstName("NoTitle")) - .with(row -> row.withTitle(Optional.empty())) + .personPerson(be2.businessentityid(), "EM") + .with( + row -> + row.withFirstname(new FirstName(new Name("NoTitle"))) + .withTitle(Optional.empty())) .insert(c); // Find persons with NULL title @@ -845,7 +891,7 @@ public void isNullFindsRowsWithNullValues() { var nullResults = nullQuery.toList(c); assertEquals(1, nullResults.size()); - assertEquals(new FirstName("NoTitle"), nullResults.get(0).firstname()); + assertEquals(new FirstName(new Name("NoTitle")), nullResults.get(0).firstname()); // Find persons with non-NULL title using NOT var notNullQuery = @@ -863,7 +909,7 @@ public void isNullFindsRowsWithNullValues() { var notNullResults = notNullQuery.toList(c); assertEquals(1, notNullResults.size()); - assertEquals(new FirstName("HasTitle"), notNullResults.get(0).firstname()); + assertEquals(new FirstName(new Name("HasTitle")), notNullResults.get(0).firstname()); }); } @@ -878,13 +924,19 @@ public void allAndAnyCombineBooleanExpressions() { var be1 = testInsert.personBusinessentity().insert(c); var person1 = testInsert - .personPerson(be1.businessentityid(), "EM", new FirstName("Alice")) - .with(row -> row.withLastname(new Name("Anderson"))) + .personPerson(be1.businessentityid(), "EM") + .with( + row -> + row.withFirstname(new FirstName(new Name("Alice"))) + .withLastname(new LastName(new Name("Anderson")))) .insert(c); var be2 = testInsert.personBusinessentity().insert(c); var person2 = - testInsert.personPerson(be2.businessentityid(), "SC", new FirstName("Bob")).insert(c); + testInsert + .personPerson(be2.businessentityid(), "SC") + .with(row -> row.withFirstname(new FirstName(new Name("Bob")))) + .insert(c); // Test SqlExpr.all() - all conditions must be true var allQuery = @@ -894,14 +946,14 @@ public void allAndAnyCombineBooleanExpressions() { p -> SqlExpr.all( p.persontype().isEqual("EM"), - p.firstname().isEqual(new FirstName("Alice")), - p.lastname().isEqual(new Name("Anderson")))); + p.firstname().isEqual(new FirstName(new Name("Alice"))), + p.lastname().isEqual(new LastName(new Name("Anderson"))))); compareFragment("allCombinesBooleanExpressions", allQuery.sql()); var allResults = allQuery.toList(c); assertEquals(1, allResults.size()); - assertEquals(new FirstName("Alice"), allResults.get(0).firstname()); + assertEquals(new FirstName(new Name("Alice")), allResults.get(0).firstname()); // Test SqlExpr.any() - any condition can be true var anyQuery = @@ -917,14 +969,15 @@ public void allAndAnyCombineBooleanExpressions() { .where( p -> SqlExpr.any( - p.firstname().isEqual(new FirstName("Alice")), - p.firstname().isEqual(new FirstName("Charlie")) // doesn't exist + p.firstname().isEqual(new FirstName(new Name("Alice"))), + p.firstname() + .isEqual(new FirstName(new Name("Charlie"))) // doesn't exist )) .orderBy(p -> p.firstname().asc()); var anyResults = anyQuery.toList(c); assertEquals(1, anyResults.size()); - assertEquals(new FirstName("Alice"), anyResults.get(0).firstname()); + assertEquals(new FirstName(new Name("Alice")), anyResults.get(0).firstname()); }); } @@ -939,22 +992,31 @@ public void orderByMultipleColumns() { var be1 = testInsert.personBusinessentity().insert(c); var person1 = testInsert - .personPerson(be1.businessentityid(), "EM", new FirstName("Zoe")) - .with(row -> row.withLastname(new Name("Smith"))) + .personPerson(be1.businessentityid(), "EM") + .with( + row -> + row.withFirstname(new FirstName(new Name("Zoe"))) + .withLastname(new LastName(new Name("Smith")))) .insert(c); var be2 = testInsert.personBusinessentity().insert(c); var person2 = testInsert - .personPerson(be2.businessentityid(), "EM", new FirstName("Alice")) - .with(row -> row.withLastname(new Name("Smith"))) + .personPerson(be2.businessentityid(), "EM") + .with( + row -> + row.withFirstname(new FirstName(new Name("Alice"))) + .withLastname(new LastName(new Name("Smith")))) .insert(c); var be3 = testInsert.personBusinessentity().insert(c); var person3 = testInsert - .personPerson(be3.businessentityid(), "EM", new FirstName("Bob")) - .with(row -> row.withLastname(new Name("Jones"))) + .personPerson(be3.businessentityid(), "EM") + .with( + row -> + row.withFirstname(new FirstName(new Name("Bob"))) + .withLastname(new LastName(new Name("Jones")))) .insert(c); // Order by lastname ASC, then firstname DESC @@ -980,15 +1042,15 @@ public void orderByMultipleColumns() { assertEquals(3, results.size()); // Jones comes first (alphabetically before Smith) - assertEquals(new Name("Jones"), results.get(0).lastname()); - assertEquals(new FirstName("Bob"), results.get(0).firstname()); + assertEquals(new LastName(new Name("Jones")), results.get(0).lastname()); + assertEquals(new FirstName(new Name("Bob")), results.get(0).firstname()); // Then Smiths, but ordered by firstname DESC (Zoe before Alice) - assertEquals(new Name("Smith"), results.get(1).lastname()); - assertEquals(new FirstName("Zoe"), results.get(1).firstname()); + assertEquals(new LastName(new Name("Smith")), results.get(1).lastname()); + assertEquals(new FirstName(new Name("Zoe")), results.get(1).firstname()); - assertEquals(new Name("Smith"), results.get(2).lastname()); - assertEquals(new FirstName("Alice"), results.get(2).firstname()); + assertEquals(new LastName(new Name("Smith")), results.get(2).lastname()); + assertEquals(new FirstName(new Name("Alice")), results.get(2).firstname()); }); } @@ -1002,11 +1064,15 @@ public void limitAndOffsetPaginateResults() { // Create 5 persons var persons = new java.util.ArrayList(); for (int i = 0; i < 5; i++) { + final int idx = i; var be = testInsert.personBusinessentity().insert(c); var person = testInsert - .personPerson(be.businessentityid(), "EM", new FirstName("Person" + i)) - .with(row -> row.withLastname(new Name("Test"))) + .personPerson(be.businessentityid(), "EM") + .with( + row -> + row.withFirstname(new FirstName(new Name("Person" + idx))) + .withLastname(new LastName(new Name("Test")))) .insert(c); persons.add(person); } @@ -1015,20 +1081,20 @@ public void limitAndOffsetPaginateResults() { var page1Query = personRepoImpl .select() - .where(p -> p.lastname().isEqual(new Name("Test"))) + .where(p -> p.lastname().isEqual(new LastName(new Name("Test")))) .orderBy(p -> p.businessentityid().asc()) .limit(2); var page1 = page1Query.toList(c); assertEquals(2, page1.size()); - assertEquals(new FirstName("Person0"), page1.get(0).firstname()); - assertEquals(new FirstName("Person1"), page1.get(1).firstname()); + assertEquals(new FirstName(new Name("Person0")), page1.get(0).firstname()); + assertEquals(new FirstName(new Name("Person1")), page1.get(1).firstname()); // Get page 2 (next 2 results, offset 2) var page2Query = personRepoImpl .select() - .where(p -> p.lastname().isEqual(new Name("Test"))) + .where(p -> p.lastname().isEqual(new LastName(new Name("Test")))) .orderBy(p -> p.businessentityid().asc()) .offset(2) .limit(2); @@ -1037,21 +1103,21 @@ public void limitAndOffsetPaginateResults() { var page2 = page2Query.toList(c); assertEquals(2, page2.size()); - assertEquals(new FirstName("Person2"), page2.get(0).firstname()); - assertEquals(new FirstName("Person3"), page2.get(1).firstname()); + assertEquals(new FirstName(new Name("Person2")), page2.get(0).firstname()); + assertEquals(new FirstName(new Name("Person3")), page2.get(1).firstname()); // Get page 3 (last person) var page3Query = personRepoImpl .select() - .where(p -> p.lastname().isEqual(new Name("Test"))) + .where(p -> p.lastname().isEqual(new LastName(new Name("Test")))) .orderBy(p -> p.businessentityid().asc()) .offset(4) .limit(2); var page3 = page3Query.toList(c); assertEquals(1, page3.size()); - assertEquals(new FirstName("Person4"), page3.get(0).firstname()); + assertEquals(new FirstName(new Name("Person4")), page3.get(0).firstname()); }); } @@ -1064,16 +1130,22 @@ public void countReturnsNumberOfRows() { // Create some test persons with unique lastname for isolation for (int i = 0; i < 3; i++) { + final int idx = i; var be = testInsert.personBusinessentity().insert(c); testInsert - .personPerson(be.businessentityid(), "EM", new FirstName("Count" + i)) - .with(row -> row.withLastname(new Name("TestCount"))) + .personPerson(be.businessentityid(), "EM") + .with( + row -> + row.withFirstname(new FirstName(new Name("Count" + idx))) + .withLastname(new LastName(new Name("TestCount")))) .insert(c); } // Count persons with specific lastname var query = - personRepoImpl.select().where(p -> p.lastname().isEqual(new Name("TestCount"))); + personRepoImpl + .select() + .where(p -> p.lastname().isEqual(new LastName(new Name("TestCount")))); long count = query.count(c); assertEquals(3, count); @@ -1082,8 +1154,8 @@ public void countReturnsNumberOfRows() { var filteredQuery = personRepoImpl .select() - .where(p -> p.lastname().isEqual(new Name("TestCount"))) - .where(p -> p.firstname().isEqual(new FirstName("Count1"))); + .where(p -> p.lastname().isEqual(new LastName(new Name("TestCount")))) + .where(p -> p.firstname().isEqual(new FirstName(new Name("Count1")))); long filteredCount = filteredQuery.count(c); assertEquals(1, filteredCount); @@ -1101,15 +1173,19 @@ public void includeIfReturnsOptionalBasedOnPredicate() { var be1 = testInsert.personBusinessentity().insert(c); var employee = testInsert - .personPerson(be1.businessentityid(), "EM", new FirstName("Employee")) - .with(row -> row.withLastname(new Name("Worker"))) + .personPerson(be1.businessentityid(), "EM") + .with( + row -> + row.withFirstname(new FirstName(new Name("Employee"))) + .withLastname(new LastName(new Name("Worker")))) .insert(c); // Create non-employee (person with SC type) var be2 = testInsert.personBusinessentity().insert(c); var customer = testInsert - .personPerson(be2.businessentityid(), "SC", new FirstName("Customer")) + .personPerson(be2.businessentityid(), "SC") + .with(row -> row.withFirstname(new FirstName(new Name("Customer")))) .insert(c); // Query with includeIf - only include lastname for employees @@ -1139,13 +1215,13 @@ public void includeIfReturnsOptionalBasedOnPredicate() { assertEquals(2, results.size()); // Customer (SC type) - lastname should be empty - assertEquals(new FirstName("Customer"), results.get(0)._1()); + assertEquals(new FirstName(new Name("Customer")), results.get(0)._1()); assertTrue("Customer lastname should be empty", results.get(0)._2().isEmpty()); // Employee (EM type) - lastname should be present - assertEquals(new FirstName("Employee"), results.get(1)._1()); + assertEquals(new FirstName(new Name("Employee")), results.get(1)._1()); assertTrue("Employee lastname should be present", results.get(1)._2().isPresent()); - assertEquals(new Name("Worker"), results.get(1)._2().get()); + assertEquals(new LastName(new Name("Worker")), results.get(1)._2().get()); }); } @@ -1159,8 +1235,11 @@ public void includeIfWithTruePredicateIncludesValue() { var be = testInsert.personBusinessentity().insert(c); var person = testInsert - .personPerson(be.businessentityid(), "EM", new FirstName("Test")) - .with(row -> row.withLastname(new Name("Person"))) + .personPerson(be.businessentityid(), "EM") + .with( + row -> + row.withFirstname(new FirstName(new Name("Test"))) + .withLastname(new LastName(new Name("Person")))) .insert(c); // includeIf with constant true - should always include @@ -1181,7 +1260,7 @@ public void includeIfWithTruePredicateIncludesValue() { assertEquals(1, results.size()); assertTrue( "Lastname should be present with true predicate", results.get(0)._2().isPresent()); - assertEquals(new Name("Person"), results.get(0)._2().get()); + assertEquals(new LastName(new Name("Person")), results.get(0)._2().get()); }); } @@ -1195,8 +1274,11 @@ public void includeIfWithFalsePredicateExcludesValue() { var be = testInsert.personBusinessentity().insert(c); var person = testInsert - .personPerson(be.businessentityid(), "EM", new FirstName("Test")) - .with(row -> row.withLastname(new Name("Person"))) + .personPerson(be.businessentityid(), "EM") + .with( + row -> + row.withFirstname(new FirstName(new Name("Test"))) + .withLastname(new LastName(new Name("Person")))) .insert(c); // includeIf with constant false - should never include @@ -1229,17 +1311,25 @@ public void groupByCountStarCountsRowsPerGroup() { // Create multiple persons with different types for (int i = 0; i < 3; i++) { + final int idx = i; var be = testInsert.personBusinessentity().insert(c); testInsert - .personPerson(be.businessentityid(), "EM", new FirstName("Employee" + i)) - .with(row -> row.withLastname(new Name("GroupTest"))) + .personPerson(be.businessentityid(), "EM") + .with( + row -> + row.withFirstname(new FirstName(new Name("Employee" + idx))) + .withLastname(new LastName(new Name("GroupTest")))) .insert(c); } for (int i = 0; i < 2; i++) { + final int idx = i; var be = testInsert.personBusinessentity().insert(c); testInsert - .personPerson(be.businessentityid(), "SC", new FirstName("Customer" + i)) - .with(row -> row.withLastname(new Name("GroupTest"))) + .personPerson(be.businessentityid(), "SC") + .with( + row -> + row.withFirstname(new FirstName(new Name("Customer" + idx))) + .withLastname(new LastName(new Name("GroupTest")))) .insert(c); } @@ -1247,7 +1337,7 @@ public void groupByCountStarCountsRowsPerGroup() { var query = personRepoImpl .select() - .where(p -> p.lastname().isEqual(new Name("GroupTest"))) + .where(p -> p.lastname().isEqual(new LastName(new Name("GroupTest")))) .groupBy(p -> p.persontype()) .select(p -> TupleExpr.of(p.persontype(), SqlExpr.count())); @@ -1278,23 +1368,30 @@ public void groupByWithHavingFiltersGroups() { // Create persons - 3 EM, 1 SC, so only EM should pass HAVING count > 1 for (int i = 0; i < 3; i++) { + final int idx = i; var be = testInsert.personBusinessentity().insert(c); testInsert - .personPerson(be.businessentityid(), "EM", new FirstName("Employee" + i)) - .with(row -> row.withLastname(new Name("HavingTest"))) + .personPerson(be.businessentityid(), "EM") + .with( + row -> + row.withFirstname(new FirstName(new Name("Employee" + idx))) + .withLastname(new LastName(new Name("HavingTest")))) .insert(c); } var be = testInsert.personBusinessentity().insert(c); testInsert - .personPerson(be.businessentityid(), "SC", new FirstName("Customer")) - .with(row -> row.withLastname(new Name("HavingTest"))) + .personPerson(be.businessentityid(), "SC") + .with( + row -> + row.withFirstname(new FirstName(new Name("Customer"))) + .withLastname(new LastName(new Name("HavingTest")))) .insert(c); // Group by persontype with HAVING count > 1 var query = personRepoImpl .select() - .where(p -> p.lastname().isEqual(new Name("HavingTest"))) + .where(p -> p.lastname().isEqual(new LastName(new Name("HavingTest")))) .groupBy(p -> p.persontype()) .having( p -> @@ -1352,7 +1449,10 @@ public void groupByThenJoinOnMock() { new adventureworks.person.businessentity.BusinessentityRowUnsaved(), null); personRepoMock.insert( new adventureworks.person.person.PersonRowUnsaved( - be.businessentityid(), "EM", new FirstName("Employee" + id), new Name("Test")), + be.businessentityid(), + "EM", + new FirstName(new Name("Employee" + id)), + new LastName(new Name("Test"))), null); } for (int i = 1; i <= 2; i++) { @@ -1362,7 +1462,10 @@ public void groupByThenJoinOnMock() { new adventureworks.person.businessentity.BusinessentityRowUnsaved(), null); personRepoMock.insert( new adventureworks.person.person.PersonRowUnsaved( - be.businessentityid(), "SC", new FirstName("Customer" + id), new Name("Test")), + be.businessentityid(), + "SC", + new FirstName(new Name("Customer" + id)), + new LastName(new Name("Test"))), null); } @@ -1370,7 +1473,7 @@ public void groupByThenJoinOnMock() { var grouped = personRepoMock .select() - .where(p -> p.lastname().isEqual(new Name("Test"))) + .where(p -> p.lastname().isEqual(new LastName(new Name("Test")))) .groupBy(p -> p.persontype()) .select(p -> TupleExpr.of(p.persontype(), SqlExpr.count())); @@ -1411,19 +1514,27 @@ public void groupByMinMaxFindsExtremeValues() { // Create persons with different first names per type String[] emNames = {"Alice", "Bob", "Charlie"}; // min=Alice, max=Charlie for (String name : emNames) { + final String n = name; var be = testInsert.personBusinessentity().insert(c); testInsert - .personPerson(be.businessentityid(), "EM", new FirstName(name)) - .with(row -> row.withLastname(new Name("MinMaxTest"))) + .personPerson(be.businessentityid(), "EM") + .with( + row -> + row.withFirstname(new FirstName(new Name(n))) + .withLastname(new LastName(new Name("MinMaxTest")))) .insert(c); } String[] scNames = {"Xavier", "Yolanda"}; // min=Xavier, max=Yolanda for (String name : scNames) { + final String n = name; var be = testInsert.personBusinessentity().insert(c); testInsert - .personPerson(be.businessentityid(), "SC", new FirstName(name)) - .with(row -> row.withLastname(new Name("MinMaxTest"))) + .personPerson(be.businessentityid(), "SC") + .with( + row -> + row.withFirstname(new FirstName(new Name(n))) + .withLastname(new LastName(new Name("MinMaxTest")))) .insert(c); } @@ -1431,7 +1542,7 @@ public void groupByMinMaxFindsExtremeValues() { var query = personRepoImpl .select() - .where(p -> p.lastname().isEqual(new Name("MinMaxTest"))) + .where(p -> p.lastname().isEqual(new LastName(new Name("MinMaxTest")))) .groupBy(p -> p.persontype()) .select( p -> @@ -1452,10 +1563,10 @@ public void groupByMinMaxFindsExtremeValues() { var scResult = results.stream().filter(r -> "SC".equals(r._1())).findFirst().orElseThrow(); - assertEquals(new FirstName("Alice"), emResult._2()); - assertEquals(new FirstName("Charlie"), emResult._3()); - assertEquals(new FirstName("Xavier"), scResult._2()); - assertEquals(new FirstName("Yolanda"), scResult._3()); + assertEquals(new FirstName(new Name("Alice")), emResult._2()); + assertEquals(new FirstName(new Name("Charlie")), emResult._3()); + assertEquals(new FirstName(new Name("Xavier")), scResult._2()); + assertEquals(new FirstName(new Name("Yolanda")), scResult._3()); }); } @@ -1489,17 +1600,25 @@ public void groupByThenJoinOnSql() { // Create employees with different person types for grouping for (int i = 0; i < 3; i++) { + final int idx = i; var be = testInsert.personBusinessentity().insert(c); testInsert - .personPerson(be.businessentityid(), "EM", new FirstName("Emp" + i)) - .with(row -> row.withLastname(new Name("JoinTest"))) + .personPerson(be.businessentityid(), "EM") + .with( + row -> + row.withFirstname(new FirstName(new Name("Emp" + idx))) + .withLastname(new LastName(new Name("JoinTest")))) .insert(c); } for (int i = 0; i < 2; i++) { + final int idx = i; var be = testInsert.personBusinessentity().insert(c); testInsert - .personPerson(be.businessentityid(), "SC", new FirstName("Cust" + i)) - .with(row -> row.withLastname(new Name("JoinTest"))) + .personPerson(be.businessentityid(), "SC") + .with( + row -> + row.withFirstname(new FirstName(new Name("Cust" + idx))) + .withLastname(new LastName(new Name("JoinTest")))) .insert(c); } @@ -1507,7 +1626,7 @@ public void groupByThenJoinOnSql() { var grouped = personRepoImpl .select() - .where(p -> p.lastname().isEqual(new Name("JoinTest"))) + .where(p -> p.lastname().isEqual(new LastName(new Name("JoinTest")))) .groupBy(p -> p.persontype()) .select(p -> TupleExpr.of(p.persontype(), SqlExpr.count())); diff --git a/testers/pg/java/src/java/adventureworks/RecordTest.java b/testers/pg/java/src/java/adventureworks/RecordTest.java index 09cb76acfc..479606dc58 100644 --- a/testers/pg/java/src/java/adventureworks/RecordTest.java +++ b/testers/pg/java/src/java/adventureworks/RecordTest.java @@ -13,6 +13,7 @@ import adventureworks.sales.salesperson.SalespersonRepoImpl; import adventureworks.sales.salesperson.SalespersonRowUnsaved; import adventureworks.userdefined.FirstName; +import adventureworks.userdefined.LastName; import java.time.LocalDate; import java.util.Optional; import org.junit.Test; @@ -40,8 +41,8 @@ public void works() { new PersonRowUnsaved( businessentityRow.businessentityid(), "EM", - new FirstName("a"), - new Name("lastname")), + new FirstName(new Name("a")), + new LastName(new Name("lastname"))), c); // EmailAddress - use short ctor + wither diff --git a/testers/pg/java/src/java/adventureworks/SeekDbTest.java b/testers/pg/java/src/java/adventureworks/SeekDbTest.java index 075b115536..e2e19cd475 100644 --- a/testers/pg/java/src/java/adventureworks/SeekDbTest.java +++ b/testers/pg/java/src/java/adventureworks/SeekDbTest.java @@ -56,7 +56,7 @@ private void testUniformSeek(BusinessentityRepo businessentityRepo) { .maybeSeek( f -> f.businessentityid().asc(), Optional.empty(), - v -> new SqlExpr.ConstReq<>(v, BusinessentityId.dbType)) + v -> new SqlExpr.ConstReq<>(v, BusinessentityId.pgType)) .maybeSeek( f -> f.rowguid().asc(), Optional.empty(), @@ -77,7 +77,7 @@ private void testUniformSeek(BusinessentityRepo businessentityRepo) { .maybeSeek( f -> f.businessentityid().asc(), Optional.of(lastRow.businessentityid()), - v -> new SqlExpr.ConstReq<>(v, BusinessentityId.dbType)) + v -> new SqlExpr.ConstReq<>(v, BusinessentityId.pgType)) .maybeSeek( f -> f.rowguid().asc(), Optional.of(lastRow.rowguid()), @@ -141,7 +141,7 @@ private void testNonUniformSeek(BusinessentityRepo businessentityRepo) { .maybeSeek( f -> f.businessentityid().asc(), Optional.empty(), - v -> new SqlExpr.ConstReq<>(v, BusinessentityId.dbType)) + v -> new SqlExpr.ConstReq<>(v, BusinessentityId.pgType)) .maybeSeek( f -> f.rowguid().asc(), Optional.empty(), @@ -162,7 +162,7 @@ private void testNonUniformSeek(BusinessentityRepo businessentityRepo) { .maybeSeek( f -> f.businessentityid().asc(), Optional.of(lastRow.businessentityid()), - v -> new SqlExpr.ConstReq<>(v, BusinessentityId.dbType)) + v -> new SqlExpr.ConstReq<>(v, BusinessentityId.pgType)) .maybeSeek( f -> f.rowguid().asc(), Optional.of(lastRow.rowguid()), diff --git a/testers/pg/java/src/java/adventureworks/humanresources/employee/EmployeeTest.java b/testers/pg/java/src/java/adventureworks/humanresources/employee/EmployeeTest.java index a4687f5a90..02087c66e4 100644 --- a/testers/pg/java/src/java/adventureworks/humanresources/employee/EmployeeTest.java +++ b/testers/pg/java/src/java/adventureworks/humanresources/employee/EmployeeTest.java @@ -12,7 +12,11 @@ import adventureworks.person.person.PersonRowUnsaved; import adventureworks.public_.Flag; import adventureworks.public_.Name; +import adventureworks.userdefined.CurrentFlag; import adventureworks.userdefined.FirstName; +import adventureworks.userdefined.LastName; +import adventureworks.userdefined.MiddleName; +import adventureworks.userdefined.SalariedFlag; import dev.typr.foundations.data.Xml; import java.time.LocalDate; import java.util.Optional; @@ -43,9 +47,9 @@ public void works() { new PersonRowUnsaved( businessentityRow.businessentityid(), "SC", - new FirstName("firstname"), - new Name("lastname")) - .withMiddlename(Optional.of(new Name("middlename"))) + new FirstName(new Name("firstname")), + new LastName(new Name("lastname"))) + .withMiddlename(Optional.of(new MiddleName(new Name("middlename")))) .withSuffix(Optional.of("suffix")) .withAdditionalcontactinfo(Optional.of(new Xml(""))), c); @@ -61,10 +65,10 @@ public void works() { "M", "F", LocalDate.now().minusYears(1)) - .withSalariedflag(new Defaulted.Provided<>(new Flag(true))) + .withSalariedflag(new Defaulted.Provided<>(new SalariedFlag(new Flag(true)))) .withVacationhours(new Defaulted.Provided<>((short) 1)) .withSickleavehours(new Defaulted.Provided<>((short) 2)) - .withCurrentflag(new Defaulted.Provided<>(new Flag(true))) + .withCurrentflag(new Defaulted.Provided<>(new CurrentFlag(new Flag(true)))) .withRowguid(new Defaulted.Provided<>(UUID.randomUUID())) .withModifieddate(new Defaulted.Provided<>(DbNow.localDateTime())) .withOrganizationnode(new Defaulted.Provided<>(Optional.of("/"))); @@ -109,10 +113,10 @@ public void works() { var withDefaults = employeeRepo.insert(minimalUnsaved, c); // Verify the static default values from the database schema - assertEquals(new Flag(true), withDefaults.salariedflag()); + assertEquals(new SalariedFlag(new Flag(true)), withDefaults.salariedflag()); assertEquals(Short.valueOf((short) 0), withDefaults.vacationhours()); assertEquals(Short.valueOf((short) 0), withDefaults.sickleavehours()); - assertEquals(new Flag(true), withDefaults.currentflag()); + assertEquals(new CurrentFlag(new Flag(true)), withDefaults.currentflag()); assertEquals(Optional.of("/"), withDefaults.organizationnode()); }); } diff --git a/testers/pg/java/src/java/adventureworks/person/MultiRepoTest.java b/testers/pg/java/src/java/adventureworks/person/MultiRepoTest.java index 30be87717b..eef1e343c1 100644 --- a/testers/pg/java/src/java/adventureworks/person/MultiRepoTest.java +++ b/testers/pg/java/src/java/adventureworks/person/MultiRepoTest.java @@ -12,6 +12,7 @@ import adventureworks.person.person.*; import adventureworks.public_.Name; import adventureworks.userdefined.FirstName; +import adventureworks.userdefined.LastName; import java.sql.Connection; import java.util.*; import org.junit.Test; @@ -129,8 +130,11 @@ public void works() { var businessentityRow = testInsert.personBusinessentity().insert(c); var personRow = testInsert - .personPerson(businessentityRow.businessentityid(), "SC", new FirstName("name")) - .with(row -> row.withLastname(new Name("lastname"))) + .personPerson(businessentityRow.businessentityid(), "SC") + .with( + row -> + row.withFirstname(new FirstName(new Name("name"))) + .withLastname(new LastName(new Name("lastname")))) .insert(c); var countryregionRow = testInsert diff --git a/testers/pg/java/src/java/adventureworks/production/product/ProductTest.java b/testers/pg/java/src/java/adventureworks/production/product/ProductTest.java index 763a19b852..e00c2e5f18 100644 --- a/testers/pg/java/src/java/adventureworks/production/product/ProductTest.java +++ b/testers/pg/java/src/java/adventureworks/production/product/ProductTest.java @@ -167,7 +167,7 @@ private void runTest( p.reverse(Name.bijection) .upper(Name.bijection) .stringAppend( - new SqlExpr.ConstReq<>(new Name("flaff"), Name.dbType), + new SqlExpr.ConstReq<>(new Name("flaff"), Name.pgType), Name.bijection) .substring( new SqlExpr.ConstReq<>(2, PgTypes.int4), @@ -179,7 +179,7 @@ private void runTest( p -> p.sizeunitmeasurecode(), p -> new SqlExpr.ConstOpt<>( - Optional.of(unitmeasure.unitmeasurecode()), UnitmeasureId.dbType)) + Optional.of(unitmeasure.unitmeasurecode()), UnitmeasureId.pgType)) .setComputedValue( p -> p.sellstartdate(), p -> new SqlExpr.ConstReq<>(sellStartDate, PgTypes.timestamp)) diff --git a/testers/pg/java/src/java/adventureworks/production/product/SeekTest.java b/testers/pg/java/src/java/adventureworks/production/product/SeekTest.java index e8246543c4..6328783ff0 100644 --- a/testers/pg/java/src/java/adventureworks/production/product/SeekTest.java +++ b/testers/pg/java/src/java/adventureworks/production/product/SeekTest.java @@ -17,7 +17,7 @@ public void uniformAscending() { var query = productRepo .select() - .seek(f -> f.name().asc(), new SqlExpr.ConstReq<>(new Name("foo"), Name.dbType)) + .seek(f -> f.name().asc(), new SqlExpr.ConstReq<>(new Name("foo"), Name.pgType)) .seek( f -> f.weight().asc(), new SqlExpr.ConstOpt<>(Optional.of(new BigDecimal("22.2")), PgTypes.numeric)) @@ -32,7 +32,7 @@ public void uniformDescending() { var query = productRepo .select() - .seek(f -> f.name().desc(), new SqlExpr.ConstReq<>(new Name("foo"), Name.dbType)) + .seek(f -> f.name().desc(), new SqlExpr.ConstReq<>(new Name("foo"), Name.pgType)) .seek( f -> f.weight().desc(), new SqlExpr.ConstOpt<>(Optional.of(new BigDecimal("22.2")), PgTypes.numeric)) @@ -47,7 +47,7 @@ public void complex() { var query = productRepo .select() - .seek(f -> f.name().asc(), new SqlExpr.ConstReq<>(new Name("foo"), Name.dbType)) + .seek(f -> f.name().asc(), new SqlExpr.ConstReq<>(new Name("foo"), Name.pgType)) .seek( f -> f.weight().desc(), new SqlExpr.ConstOpt<>(Optional.of(new BigDecimal("22.2")), PgTypes.numeric)) diff --git a/testers/pg/java/src/java/adventureworks/production/productcosthistory/CompositeIdsTest.java b/testers/pg/java/src/java/adventureworks/production/productcosthistory/CompositeIdsTest.java index ef1c143fa7..d3f0c745d9 100644 --- a/testers/pg/java/src/java/adventureworks/production/productcosthistory/CompositeIdsTest.java +++ b/testers/pg/java/src/java/adventureworks/production/productcosthistory/CompositeIdsTest.java @@ -23,6 +23,7 @@ import adventureworks.public_.Name; import adventureworks.public_.NameStyle; import adventureworks.userdefined.FirstName; +import adventureworks.userdefined.LastName; import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.List; @@ -262,9 +263,9 @@ private PersonRow personRow(BusinessentityId businessentityid, int i, LocalDateT "SC", new NameStyle(true), Optional.empty(), - new FirstName("first name " + i), + new FirstName(new Name("first name " + i)), Optional.empty(), - new Name("last name " + i), + new LastName(new Name("last name " + i)), Optional.empty(), 1, Optional.empty(), diff --git a/testers/pg/java/src/java/adventureworks/userdefined/FirstName.java b/testers/pg/java/src/java/adventureworks/userdefined/FirstName.java deleted file mode 100644 index 34fb0f945c..0000000000 --- a/testers/pg/java/src/java/adventureworks/userdefined/FirstName.java +++ /dev/null @@ -1,16 +0,0 @@ -package adventureworks.userdefined; - -import dev.typr.foundations.DbType; -import dev.typr.foundations.PgText; -import dev.typr.foundations.PgTypes; -import dev.typr.foundations.internal.arrayMap; - -public record FirstName(String value) { - public static PgText pgText = - PgText.instance((v, sb) -> PgText.textString.unsafeEncode(v.value(), sb)); - public static DbType dbType = PgTypes.text.bimap(FirstName::new, v -> v.value()); - public static DbType dbTypeArray = - PgTypes.textArray.bimap( - arr -> arrayMap.map(arr, FirstName::new, FirstName.class), - arr -> arrayMap.map(arr, v -> v.value(), String.class)); -} diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/TestInsert.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/TestInsert.kt index ad0eace83a..4f88c4c33b 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/TestInsert.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/TestInsert.kt @@ -133,7 +133,11 @@ import adventureworks.sales.salesterritory.SalesterritoryId import adventureworks.sales.salesterritory.SalesterritoryRepoImpl import adventureworks.sales.salesterritory.SalesterritoryRow import adventureworks.sales.salesterritory.SalesterritoryRowUnsaved +import adventureworks.userdefined.CurrentFlag import adventureworks.userdefined.FirstName +import adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName +import adventureworks.userdefined.SalariedFlag import dev.typr.foundations.data.Inet import dev.typr.foundations.data.Int2Vector import dev.typr.foundations.data.Json @@ -185,10 +189,10 @@ data class TestInsert( maritalstatus: String, gender: String, hiredate: LocalDate, - salariedflag: Defaulted = UseDefault(), + salariedflag: Defaulted = UseDefault(), vacationhours: Defaulted = UseDefault(), sickleavehours: Defaulted = UseDefault(), - currentflag: Defaulted = UseDefault(), + currentflag: Defaulted = UseDefault(), rowguid: Defaulted = UseDefault(), modifieddate: Defaulted = UseDefault(), organizationnode: Defaulted = UseDefault(), @@ -279,10 +283,10 @@ data class TestInsert( fun personPerson( businessentityid: BusinessentityId, persontype: String, - firstname: /* user-picked */ FirstName, title: /* max 8 chars */ String? = null, - middlename: Name? = if (random.nextBoolean()) null else domainInsert.publicName(random), - lastname: Name = domainInsert.publicName(random), + firstname: /* user-picked */ FirstName = FirstName(domainInsert.publicName(random)), + middlename: /* user-picked */ MiddleName? = if (random.nextBoolean()) null else MiddleName(domainInsert.publicName(random)), + lastname: /* user-picked */ LastName = LastName(domainInsert.publicName(random)), suffix: /* max 10 chars */ String? = null, additionalcontactinfo: Xml? = if (random.nextBoolean()) null else Xml(""), demographics: Xml? = if (random.nextBoolean()) null else Xml(""), diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/department/DepartmentFields.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/department/DepartmentFields.kt index 5e866d03ae..b359a59f74 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/department/DepartmentFields.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/department/DepartmentFields.kt @@ -32,13 +32,13 @@ data class DepartmentFields(val _path: List) : TupleExpr4> = listOf(this.departmentid().underlying, this.name().underlying, this.groupname().underlying, this.modifieddate().underlying) - fun departmentid(): IdField = IdField(_path, "departmentid", DepartmentRow::departmentid, null, "int4", { row, value -> row.copy(departmentid = value) }, DepartmentId.dbType) + fun departmentid(): IdField = IdField(_path, "departmentid", DepartmentRow::departmentid, null, "int4", { row, value -> row.copy(departmentid = value) }, DepartmentId.pgType) - fun groupname(): Field = Field(_path, "groupname", DepartmentRow::groupname, null, "varchar", { row, value -> row.copy(groupname = value) }, Name.dbType) + fun groupname(): Field = Field(_path, "groupname", DepartmentRow::groupname, null, "varchar", { row, value -> row.copy(groupname = value) }, Name.pgType) fun modifieddate(): Field = Field(_path, "modifieddate", DepartmentRow::modifieddate, null, "timestamp", { row, value -> row.copy(modifieddate = value) }, PgTypes.timestamp) - fun name(): Field = Field(_path, "name", DepartmentRow::name, null, "varchar", { row, value -> row.copy(name = value) }, Name.dbType) + fun name(): Field = Field(_path, "name", DepartmentRow::name, null, "varchar", { row, value -> row.copy(name = value) }, Name.pgType) override fun rowParser(): RowParser = DepartmentRow._rowParser.underlying diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/department/DepartmentId.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/department/DepartmentId.kt index 9d86143f16..e8da99d31a 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/department/DepartmentId.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/department/DepartmentId.kt @@ -22,10 +22,10 @@ data class DepartmentId(@field:JsonValue val value: Int) { val bijection: Bijection = Bijection.of(DepartmentId::value, ::DepartmentId) - val dbType: PgType = + val pgType: PgType = KotlinDbTypes.PgTypes.int4.bimap(::DepartmentId, DepartmentId::value) - val dbTypeArray: PgType> = + val pgTypeArray: PgType> = PgTypes.int4Array.bimap({ xs -> arrayMap.map(xs, ::DepartmentId, DepartmentId::class.java) }, { xs -> arrayMap.map(xs, DepartmentId::value, Int::class.javaObjectType) }) } } \ No newline at end of file diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRepoImpl.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRepoImpl.kt index 4bec29c19b..1e563836ed 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRepoImpl.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRepoImpl.kt @@ -26,19 +26,19 @@ class DepartmentRepoImpl() : DepartmentRepo { override fun deleteById( departmentid: DepartmentId, c: Connection - ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"humanresources\".\"department\" where \"departmentid\" = "), Fragment.encode(DepartmentId.dbType, departmentid), Fragment.lit("")).update().runUnchecked(c) > 0 + ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"humanresources\".\"department\" where \"departmentid\" = "), Fragment.encode(DepartmentId.pgType, departmentid), Fragment.lit("")).update().runUnchecked(c) > 0 override fun deleteByIds( departmentids: Array, c: Connection - ): Int = Fragment.interpolate(Fragment.lit("delete\nfrom \"humanresources\".\"department\"\nwhere \"departmentid\" = ANY("), Fragment.encode(DepartmentId.dbTypeArray, departmentids), Fragment.lit(")")) + ): Int = Fragment.interpolate(Fragment.lit("delete\nfrom \"humanresources\".\"department\"\nwhere \"departmentid\" = ANY("), Fragment.encode(DepartmentId.pgTypeArray, departmentids), Fragment.lit(")")) .update() .runUnchecked(c) override fun insert( unsaved: DepartmentRow, c: Connection - ): DepartmentRow = Fragment.interpolate(Fragment.lit("insert into \"humanresources\".\"department\"(\"departmentid\", \"name\", \"groupname\", \"modifieddate\")\nvalues ("), Fragment.encode(DepartmentId.dbType, unsaved.departmentid), Fragment.lit("::int4, "), Fragment.encode(Name.dbType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(Name.dbType, unsaved.groupname), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\nRETURNING \"departmentid\", \"name\", \"groupname\", \"modifieddate\"\n")) + ): DepartmentRow = Fragment.interpolate(Fragment.lit("insert into \"humanresources\".\"department\"(\"departmentid\", \"name\", \"groupname\", \"modifieddate\")\nvalues ("), Fragment.encode(DepartmentId.pgType, unsaved.departmentid), Fragment.lit("::int4, "), Fragment.encode(Name.pgType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(Name.pgType, unsaved.groupname), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\nRETURNING \"departmentid\", \"name\", \"groupname\", \"modifieddate\"\n")) .updateReturning(DepartmentRow._rowParser.exactlyOne()).runUnchecked(c) override fun insert( @@ -48,13 +48,13 @@ class DepartmentRepoImpl() : DepartmentRepo { val columns: ArrayList = ArrayList() val values: ArrayList = ArrayList() columns.add(Fragment.lit("\"name\"")) - values.add(Fragment.interpolate(Fragment.encode(Name.dbType, unsaved.name), Fragment.lit("::varchar"))) + values.add(Fragment.interpolate(Fragment.encode(Name.pgType, unsaved.name), Fragment.lit("::varchar"))) columns.add(Fragment.lit("\"groupname\"")) - values.add(Fragment.interpolate(Fragment.encode(Name.dbType, unsaved.groupname), Fragment.lit("::varchar"))) + values.add(Fragment.interpolate(Fragment.encode(Name.pgType, unsaved.groupname), Fragment.lit("::varchar"))) unsaved.departmentid.visit( { }, { value -> columns.add(Fragment.lit("\"departmentid\"")) - values.add(Fragment.interpolate(Fragment.encode(DepartmentId.dbType, value), Fragment.lit("::int4"))) } + values.add(Fragment.interpolate(Fragment.encode(DepartmentId.pgType, value), Fragment.lit("::int4"))) } ); unsaved.modifieddate.visit( { }, @@ -85,12 +85,12 @@ class DepartmentRepoImpl() : DepartmentRepo { override fun selectById( departmentid: DepartmentId, c: Connection - ): DepartmentRow? = Fragment.interpolate(Fragment.lit("select \"departmentid\", \"name\", \"groupname\", \"modifieddate\"\nfrom \"humanresources\".\"department\"\nwhere \"departmentid\" = "), Fragment.encode(DepartmentId.dbType, departmentid), Fragment.lit("")).query(DepartmentRow._rowParser.first()).runUnchecked(c) + ): DepartmentRow? = Fragment.interpolate(Fragment.lit("select \"departmentid\", \"name\", \"groupname\", \"modifieddate\"\nfrom \"humanresources\".\"department\"\nwhere \"departmentid\" = "), Fragment.encode(DepartmentId.pgType, departmentid), Fragment.lit("")).query(DepartmentRow._rowParser.first()).runUnchecked(c) override fun selectByIds( departmentids: Array, c: Connection - ): List = Fragment.interpolate(Fragment.lit("select \"departmentid\", \"name\", \"groupname\", \"modifieddate\"\nfrom \"humanresources\".\"department\"\nwhere \"departmentid\" = ANY("), Fragment.encode(DepartmentId.dbTypeArray, departmentids), Fragment.lit(")")).query(DepartmentRow._rowParser.all()).runUnchecked(c) + ): List = Fragment.interpolate(Fragment.lit("select \"departmentid\", \"name\", \"groupname\", \"modifieddate\"\nfrom \"humanresources\".\"department\"\nwhere \"departmentid\" = ANY("), Fragment.encode(DepartmentId.pgTypeArray, departmentids), Fragment.lit(")")).query(DepartmentRow._rowParser.all()).runUnchecked(c) override fun selectByIdsTracked( departmentids: Array, @@ -108,13 +108,13 @@ class DepartmentRepoImpl() : DepartmentRepo { c: Connection ): Boolean { val departmentid: DepartmentId = row.departmentid - return Fragment.interpolate(Fragment.lit("update \"humanresources\".\"department\"\nset \"name\" = "), Fragment.encode(Name.dbType, row.name), Fragment.lit("::varchar,\n\"groupname\" = "), Fragment.encode(Name.dbType, row.groupname), Fragment.lit("::varchar,\n\"modifieddate\" = "), Fragment.encode(PgTypes.timestamp, row.modifieddate), Fragment.lit("::timestamp\nwhere \"departmentid\" = "), Fragment.encode(DepartmentId.dbType, departmentid), Fragment.lit("")).update().runUnchecked(c) > 0 + return Fragment.interpolate(Fragment.lit("update \"humanresources\".\"department\"\nset \"name\" = "), Fragment.encode(Name.pgType, row.name), Fragment.lit("::varchar,\n\"groupname\" = "), Fragment.encode(Name.pgType, row.groupname), Fragment.lit("::varchar,\n\"modifieddate\" = "), Fragment.encode(PgTypes.timestamp, row.modifieddate), Fragment.lit("::timestamp\nwhere \"departmentid\" = "), Fragment.encode(DepartmentId.pgType, departmentid), Fragment.lit("")).update().runUnchecked(c) > 0 } override fun upsert( unsaved: DepartmentRow, c: Connection - ): DepartmentRow = Fragment.interpolate(Fragment.lit("insert into \"humanresources\".\"department\"(\"departmentid\", \"name\", \"groupname\", \"modifieddate\")\nvalues ("), Fragment.encode(DepartmentId.dbType, unsaved.departmentid), Fragment.lit("::int4, "), Fragment.encode(Name.dbType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(Name.dbType, unsaved.groupname), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\non conflict (\"departmentid\")\ndo update set\n \"name\" = EXCLUDED.\"name\",\n\"groupname\" = EXCLUDED.\"groupname\",\n\"modifieddate\" = EXCLUDED.\"modifieddate\"\nreturning \"departmentid\", \"name\", \"groupname\", \"modifieddate\"")) + ): DepartmentRow = Fragment.interpolate(Fragment.lit("insert into \"humanresources\".\"department\"(\"departmentid\", \"name\", \"groupname\", \"modifieddate\")\nvalues ("), Fragment.encode(DepartmentId.pgType, unsaved.departmentid), Fragment.lit("::int4, "), Fragment.encode(Name.pgType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(Name.pgType, unsaved.groupname), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\non conflict (\"departmentid\")\ndo update set\n \"name\" = EXCLUDED.\"name\",\n\"groupname\" = EXCLUDED.\"groupname\",\n\"modifieddate\" = EXCLUDED.\"modifieddate\"\nreturning \"departmentid\", \"name\", \"groupname\", \"modifieddate\"")) .updateReturning(DepartmentRow._rowParser.exactlyOne()) .runUnchecked(c) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRow.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRow.kt index d314784e57..f3db358c80 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRow.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRow.kt @@ -46,7 +46,7 @@ data class DepartmentRow( ): DepartmentRowUnsaved = DepartmentRowUnsaved(name, groupname, departmentid, modifieddate) companion object { - val _rowParser: RowParser = RowParsers.of(DepartmentId.dbType, Name.dbType, Name.dbType, PgTypes.timestamp, { t0, t1, t2, t3 -> DepartmentRow(t0, t1, t2, t3) }, { row -> arrayOf(row.departmentid, row.name, row.groupname, row.modifieddate) }) + val _rowParser: RowParser = RowParsers.of(DepartmentId.pgType, Name.pgType, Name.pgType, PgTypes.timestamp, { t0, t1, t2, t3 -> DepartmentRow(t0, t1, t2, t3) }, { row -> arrayOf(row.departmentid, row.name, row.groupname, row.modifieddate) }) val pgText: PgText = PgText.from(_rowParser.underlying) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRowUnsaved.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRowUnsaved.kt index 71ee347ec8..b5fd27f5d4 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRowUnsaved.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRowUnsaved.kt @@ -32,11 +32,11 @@ data class DepartmentRowUnsaved( companion object { val pgText: PgText = - PgText.instance({ row, sb -> Name.dbType.text().unsafeEncode(row.name, sb) + PgText.instance({ row, sb -> Name.pgType.text().unsafeEncode(row.name, sb) sb.append(PgText.DELIMETER) - Name.dbType.text().unsafeEncode(row.groupname, sb) + Name.pgType.text().unsafeEncode(row.groupname, sb) sb.append(PgText.DELIMETER) - Defaulted.pgText(DepartmentId.dbType.text()).unsafeEncode(row.departmentid, sb) + Defaulted.pgText(DepartmentId.pgType.text()).unsafeEncode(row.departmentid, sb) sb.append(PgText.DELIMETER) Defaulted.pgText(PgTypes.timestamp.text()).unsafeEncode(row.modifieddate, sb) }) } diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeFields.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeFields.kt index 495aceed1d..7b164d2eea 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeFields.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeFields.kt @@ -8,7 +8,8 @@ package adventureworks.humanresources.employee import adventureworks.person.businessentity.BusinessentityId import adventureworks.person.person.PersonFields import adventureworks.person.person.PersonRow -import adventureworks.public.Flag +import adventureworks.userdefined.CurrentFlag +import adventureworks.userdefined.SalariedFlag import dev.typr.foundations.PgTypes import dev.typr.foundations.RowParser import dev.typr.foundations.dsl.FieldsBase @@ -27,14 +28,14 @@ import java.time.LocalDateTime import java.util.UUID import kotlin.collections.List -data class EmployeeFields(val _path: List) : TupleExpr15, RelationStructure, FieldsBase { +data class EmployeeFields(val _path: List) : TupleExpr15, RelationStructure, FieldsBase { override fun _1(): SqlExpr = businessentityid() override fun _10(): SqlExpr = vacationhours() override fun _11(): SqlExpr = sickleavehours() - override fun _12(): SqlExpr = currentflag() + override fun _12(): SqlExpr = currentflag() override fun _13(): SqlExpr = rowguid() @@ -56,17 +57,17 @@ data class EmployeeFields(val _path: List) : TupleExpr15 = hiredate() - override fun _9(): SqlExpr = salariedflag() + override fun _9(): SqlExpr = salariedflag() override fun _path(): List = _path fun birthdate(): Field = Field(_path, "birthdate", EmployeeRow::birthdate, null, "date", { row, value -> row.copy(birthdate = value) }, PgTypes.date) - fun businessentityid(): IdField = IdField(_path, "businessentityid", EmployeeRow::businessentityid, null, "int4", { row, value -> row.copy(businessentityid = value) }, BusinessentityId.dbType) + fun businessentityid(): IdField = IdField(_path, "businessentityid", EmployeeRow::businessentityid, null, "int4", { row, value -> row.copy(businessentityid = value) }, BusinessentityId.pgType) override fun columns(): List> = listOf(this.businessentityid().underlying, this.nationalidnumber().underlying, this.loginid().underlying, this.jobtitle().underlying, this.birthdate().underlying, this.maritalstatus().underlying, this.gender().underlying, this.hiredate().underlying, this.salariedflag().underlying, this.vacationhours().underlying, this.sickleavehours().underlying, this.currentflag().underlying, this.rowguid().underlying, this.modifieddate().underlying, this.organizationnode().underlying) - fun currentflag(): Field = Field(_path, "currentflag", EmployeeRow::currentflag, null, "bool", { row, value -> row.copy(currentflag = value) }, Flag.dbType) + fun currentflag(): Field = Field(_path, "currentflag", EmployeeRow::currentflag, null, "bool", { row, value -> row.copy(currentflag = value) }, CurrentFlag.pgType) fun fkPersonPerson(): ForeignKey = ForeignKey.of("humanresources.FK_Employee_Person_BusinessEntityID").withColumnPair(businessentityid(), PersonFields::businessentityid) @@ -90,7 +91,7 @@ data class EmployeeFields(val _path: List) : TupleExpr15 = Field(_path, "rowguid", EmployeeRow::rowguid, null, "uuid", { row, value -> row.copy(rowguid = value) }, PgTypes.uuid) - fun salariedflag(): Field = Field(_path, "salariedflag", EmployeeRow::salariedflag, null, "bool", { row, value -> row.copy(salariedflag = value) }, Flag.dbType) + fun salariedflag(): Field = Field(_path, "salariedflag", EmployeeRow::salariedflag, null, "bool", { row, value -> row.copy(salariedflag = value) }, SalariedFlag.pgType) fun sickleavehours(): Field = Field(_path, "sickleavehours", EmployeeRow::sickleavehours, null, "int2", { row, value -> row.copy(sickleavehours = value) }, KotlinDbTypes.PgTypes.int2) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRepoImpl.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRepoImpl.kt index 8173e66925..a44b21dbe0 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRepoImpl.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRepoImpl.kt @@ -6,7 +6,8 @@ package adventureworks.humanresources.employee import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Flag +import adventureworks.userdefined.CurrentFlag +import adventureworks.userdefined.SalariedFlag import dev.typr.foundations.PgTypes import dev.typr.foundations.kotlin.DeleteBuilder import dev.typr.foundations.kotlin.Dialect @@ -29,19 +30,19 @@ class EmployeeRepoImpl() : EmployeeRepo { override fun deleteById( businessentityid: BusinessentityId, c: Connection - ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"humanresources\".\"employee\" where \"businessentityid\" = "), Fragment.encode(BusinessentityId.dbType, businessentityid), Fragment.lit("")).update().runUnchecked(c) > 0 + ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"humanresources\".\"employee\" where \"businessentityid\" = "), Fragment.encode(BusinessentityId.pgType, businessentityid), Fragment.lit("")).update().runUnchecked(c) > 0 override fun deleteByIds( businessentityids: Array, c: Connection - ): Int = Fragment.interpolate(Fragment.lit("delete\nfrom \"humanresources\".\"employee\"\nwhere \"businessentityid\" = ANY("), Fragment.encode(BusinessentityId.dbTypeArray, businessentityids), Fragment.lit(")")) + ): Int = Fragment.interpolate(Fragment.lit("delete\nfrom \"humanresources\".\"employee\"\nwhere \"businessentityid\" = ANY("), Fragment.encode(BusinessentityId.pgTypeArray, businessentityids), Fragment.lit(")")) .update() .runUnchecked(c) override fun insert( unsaved: EmployeeRow, c: Connection - ): EmployeeRow = Fragment.interpolate(Fragment.lit("insert into \"humanresources\".\"employee\"(\"businessentityid\", \"nationalidnumber\", \"loginid\", \"jobtitle\", \"birthdate\", \"maritalstatus\", \"gender\", \"hiredate\", \"salariedflag\", \"vacationhours\", \"sickleavehours\", \"currentflag\", \"rowguid\", \"modifieddate\", \"organizationnode\")\nvalues ("), Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.text, unsaved.nationalidnumber), Fragment.lit(", "), Fragment.encode(PgTypes.text, unsaved.loginid), Fragment.lit(", "), Fragment.encode(PgTypes.text, unsaved.jobtitle), Fragment.lit(", "), Fragment.encode(PgTypes.date, unsaved.birthdate), Fragment.lit("::date, "), Fragment.encode(PgTypes.bpchar, unsaved.maritalstatus), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.bpchar, unsaved.gender), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.date, unsaved.hiredate), Fragment.lit("::date, "), Fragment.encode(Flag.dbType, unsaved.salariedflag), Fragment.lit("::bool, "), Fragment.encode(KotlinDbTypes.PgTypes.int2, unsaved.vacationhours), Fragment.lit("::int2, "), Fragment.encode(KotlinDbTypes.PgTypes.int2, unsaved.sickleavehours), Fragment.lit("::int2, "), Fragment.encode(Flag.dbType, unsaved.currentflag), Fragment.lit("::bool, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.text.nullable(), unsaved.organizationnode), Fragment.lit(")\nRETURNING \"businessentityid\", \"nationalidnumber\", \"loginid\", \"jobtitle\", \"birthdate\", \"maritalstatus\", \"gender\", \"hiredate\", \"salariedflag\", \"vacationhours\", \"sickleavehours\", \"currentflag\", \"rowguid\", \"modifieddate\", \"organizationnode\"\n")) + ): EmployeeRow = Fragment.interpolate(Fragment.lit("insert into \"humanresources\".\"employee\"(\"businessentityid\", \"nationalidnumber\", \"loginid\", \"jobtitle\", \"birthdate\", \"maritalstatus\", \"gender\", \"hiredate\", \"salariedflag\", \"vacationhours\", \"sickleavehours\", \"currentflag\", \"rowguid\", \"modifieddate\", \"organizationnode\")\nvalues ("), Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.text, unsaved.nationalidnumber), Fragment.lit(", "), Fragment.encode(PgTypes.text, unsaved.loginid), Fragment.lit(", "), Fragment.encode(PgTypes.text, unsaved.jobtitle), Fragment.lit(", "), Fragment.encode(PgTypes.date, unsaved.birthdate), Fragment.lit("::date, "), Fragment.encode(PgTypes.bpchar, unsaved.maritalstatus), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.bpchar, unsaved.gender), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.date, unsaved.hiredate), Fragment.lit("::date, "), Fragment.encode(SalariedFlag.pgType, unsaved.salariedflag), Fragment.lit("::bool, "), Fragment.encode(KotlinDbTypes.PgTypes.int2, unsaved.vacationhours), Fragment.lit("::int2, "), Fragment.encode(KotlinDbTypes.PgTypes.int2, unsaved.sickleavehours), Fragment.lit("::int2, "), Fragment.encode(CurrentFlag.pgType, unsaved.currentflag), Fragment.lit("::bool, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.text.nullable(), unsaved.organizationnode), Fragment.lit(")\nRETURNING \"businessentityid\", \"nationalidnumber\", \"loginid\", \"jobtitle\", \"birthdate\", \"maritalstatus\", \"gender\", \"hiredate\", \"salariedflag\", \"vacationhours\", \"sickleavehours\", \"currentflag\", \"rowguid\", \"modifieddate\", \"organizationnode\"\n")) .updateReturning(EmployeeRow._rowParser.exactlyOne()).runUnchecked(c) override fun insert( @@ -51,7 +52,7 @@ class EmployeeRepoImpl() : EmployeeRepo { val columns: ArrayList = ArrayList() val values: ArrayList = ArrayList() columns.add(Fragment.lit("\"businessentityid\"")) - values.add(Fragment.interpolate(Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid), Fragment.lit("::int4"))) + values.add(Fragment.interpolate(Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid), Fragment.lit("::int4"))) columns.add(Fragment.lit("\"nationalidnumber\"")) values.add(Fragment.interpolate(Fragment.encode(PgTypes.text, unsaved.nationalidnumber), Fragment.lit(""))) columns.add(Fragment.lit("\"loginid\"")) @@ -69,7 +70,7 @@ class EmployeeRepoImpl() : EmployeeRepo { unsaved.salariedflag.visit( { }, { value -> columns.add(Fragment.lit("\"salariedflag\"")) - values.add(Fragment.interpolate(Fragment.encode(Flag.dbType, value), Fragment.lit("::bool"))) } + values.add(Fragment.interpolate(Fragment.encode(SalariedFlag.pgType, value), Fragment.lit("::bool"))) } ); unsaved.vacationhours.visit( { }, @@ -84,7 +85,7 @@ class EmployeeRepoImpl() : EmployeeRepo { unsaved.currentflag.visit( { }, { value -> columns.add(Fragment.lit("\"currentflag\"")) - values.add(Fragment.interpolate(Fragment.encode(Flag.dbType, value), Fragment.lit("::bool"))) } + values.add(Fragment.interpolate(Fragment.encode(CurrentFlag.pgType, value), Fragment.lit("::bool"))) } ); unsaved.rowguid.visit( { }, @@ -125,12 +126,12 @@ class EmployeeRepoImpl() : EmployeeRepo { override fun selectById( businessentityid: BusinessentityId, c: Connection - ): EmployeeRow? = Fragment.interpolate(Fragment.lit("select \"businessentityid\", \"nationalidnumber\", \"loginid\", \"jobtitle\", \"birthdate\", \"maritalstatus\", \"gender\", \"hiredate\", \"salariedflag\", \"vacationhours\", \"sickleavehours\", \"currentflag\", \"rowguid\", \"modifieddate\", \"organizationnode\"\nfrom \"humanresources\".\"employee\"\nwhere \"businessentityid\" = "), Fragment.encode(BusinessentityId.dbType, businessentityid), Fragment.lit("")).query(EmployeeRow._rowParser.first()).runUnchecked(c) + ): EmployeeRow? = Fragment.interpolate(Fragment.lit("select \"businessentityid\", \"nationalidnumber\", \"loginid\", \"jobtitle\", \"birthdate\", \"maritalstatus\", \"gender\", \"hiredate\", \"salariedflag\", \"vacationhours\", \"sickleavehours\", \"currentflag\", \"rowguid\", \"modifieddate\", \"organizationnode\"\nfrom \"humanresources\".\"employee\"\nwhere \"businessentityid\" = "), Fragment.encode(BusinessentityId.pgType, businessentityid), Fragment.lit("")).query(EmployeeRow._rowParser.first()).runUnchecked(c) override fun selectByIds( businessentityids: Array, c: Connection - ): List = Fragment.interpolate(Fragment.lit("select \"businessentityid\", \"nationalidnumber\", \"loginid\", \"jobtitle\", \"birthdate\", \"maritalstatus\", \"gender\", \"hiredate\", \"salariedflag\", \"vacationhours\", \"sickleavehours\", \"currentflag\", \"rowguid\", \"modifieddate\", \"organizationnode\"\nfrom \"humanresources\".\"employee\"\nwhere \"businessentityid\" = ANY("), Fragment.encode(BusinessentityId.dbTypeArray, businessentityids), Fragment.lit(")")).query(EmployeeRow._rowParser.all()).runUnchecked(c) + ): List = Fragment.interpolate(Fragment.lit("select \"businessentityid\", \"nationalidnumber\", \"loginid\", \"jobtitle\", \"birthdate\", \"maritalstatus\", \"gender\", \"hiredate\", \"salariedflag\", \"vacationhours\", \"sickleavehours\", \"currentflag\", \"rowguid\", \"modifieddate\", \"organizationnode\"\nfrom \"humanresources\".\"employee\"\nwhere \"businessentityid\" = ANY("), Fragment.encode(BusinessentityId.pgTypeArray, businessentityids), Fragment.lit(")")).query(EmployeeRow._rowParser.all()).runUnchecked(c) override fun selectByIdsTracked( businessentityids: Array, @@ -148,13 +149,13 @@ class EmployeeRepoImpl() : EmployeeRepo { c: Connection ): Boolean { val businessentityid: BusinessentityId = row.businessentityid - return Fragment.interpolate(Fragment.lit("update \"humanresources\".\"employee\"\nset \"nationalidnumber\" = "), Fragment.encode(PgTypes.text, row.nationalidnumber), Fragment.lit(",\n\"loginid\" = "), Fragment.encode(PgTypes.text, row.loginid), Fragment.lit(",\n\"jobtitle\" = "), Fragment.encode(PgTypes.text, row.jobtitle), Fragment.lit(",\n\"birthdate\" = "), Fragment.encode(PgTypes.date, row.birthdate), Fragment.lit("::date,\n\"maritalstatus\" = "), Fragment.encode(PgTypes.bpchar, row.maritalstatus), Fragment.lit("::bpchar,\n\"gender\" = "), Fragment.encode(PgTypes.bpchar, row.gender), Fragment.lit("::bpchar,\n\"hiredate\" = "), Fragment.encode(PgTypes.date, row.hiredate), Fragment.lit("::date,\n\"salariedflag\" = "), Fragment.encode(Flag.dbType, row.salariedflag), Fragment.lit("::bool,\n\"vacationhours\" = "), Fragment.encode(KotlinDbTypes.PgTypes.int2, row.vacationhours), Fragment.lit("::int2,\n\"sickleavehours\" = "), Fragment.encode(KotlinDbTypes.PgTypes.int2, row.sickleavehours), Fragment.lit("::int2,\n\"currentflag\" = "), Fragment.encode(Flag.dbType, row.currentflag), Fragment.lit("::bool,\n\"rowguid\" = "), Fragment.encode(PgTypes.uuid, row.rowguid), Fragment.lit("::uuid,\n\"modifieddate\" = "), Fragment.encode(PgTypes.timestamp, row.modifieddate), Fragment.lit("::timestamp,\n\"organizationnode\" = "), Fragment.encode(PgTypes.text.nullable(), row.organizationnode), Fragment.lit("\nwhere \"businessentityid\" = "), Fragment.encode(BusinessentityId.dbType, businessentityid), Fragment.lit("")).update().runUnchecked(c) > 0 + return Fragment.interpolate(Fragment.lit("update \"humanresources\".\"employee\"\nset \"nationalidnumber\" = "), Fragment.encode(PgTypes.text, row.nationalidnumber), Fragment.lit(",\n\"loginid\" = "), Fragment.encode(PgTypes.text, row.loginid), Fragment.lit(",\n\"jobtitle\" = "), Fragment.encode(PgTypes.text, row.jobtitle), Fragment.lit(",\n\"birthdate\" = "), Fragment.encode(PgTypes.date, row.birthdate), Fragment.lit("::date,\n\"maritalstatus\" = "), Fragment.encode(PgTypes.bpchar, row.maritalstatus), Fragment.lit("::bpchar,\n\"gender\" = "), Fragment.encode(PgTypes.bpchar, row.gender), Fragment.lit("::bpchar,\n\"hiredate\" = "), Fragment.encode(PgTypes.date, row.hiredate), Fragment.lit("::date,\n\"salariedflag\" = "), Fragment.encode(SalariedFlag.pgType, row.salariedflag), Fragment.lit("::bool,\n\"vacationhours\" = "), Fragment.encode(KotlinDbTypes.PgTypes.int2, row.vacationhours), Fragment.lit("::int2,\n\"sickleavehours\" = "), Fragment.encode(KotlinDbTypes.PgTypes.int2, row.sickleavehours), Fragment.lit("::int2,\n\"currentflag\" = "), Fragment.encode(CurrentFlag.pgType, row.currentflag), Fragment.lit("::bool,\n\"rowguid\" = "), Fragment.encode(PgTypes.uuid, row.rowguid), Fragment.lit("::uuid,\n\"modifieddate\" = "), Fragment.encode(PgTypes.timestamp, row.modifieddate), Fragment.lit("::timestamp,\n\"organizationnode\" = "), Fragment.encode(PgTypes.text.nullable(), row.organizationnode), Fragment.lit("\nwhere \"businessentityid\" = "), Fragment.encode(BusinessentityId.pgType, businessentityid), Fragment.lit("")).update().runUnchecked(c) > 0 } override fun upsert( unsaved: EmployeeRow, c: Connection - ): EmployeeRow = Fragment.interpolate(Fragment.lit("insert into \"humanresources\".\"employee\"(\"businessentityid\", \"nationalidnumber\", \"loginid\", \"jobtitle\", \"birthdate\", \"maritalstatus\", \"gender\", \"hiredate\", \"salariedflag\", \"vacationhours\", \"sickleavehours\", \"currentflag\", \"rowguid\", \"modifieddate\", \"organizationnode\")\nvalues ("), Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.text, unsaved.nationalidnumber), Fragment.lit(", "), Fragment.encode(PgTypes.text, unsaved.loginid), Fragment.lit(", "), Fragment.encode(PgTypes.text, unsaved.jobtitle), Fragment.lit(", "), Fragment.encode(PgTypes.date, unsaved.birthdate), Fragment.lit("::date, "), Fragment.encode(PgTypes.bpchar, unsaved.maritalstatus), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.bpchar, unsaved.gender), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.date, unsaved.hiredate), Fragment.lit("::date, "), Fragment.encode(Flag.dbType, unsaved.salariedflag), Fragment.lit("::bool, "), Fragment.encode(KotlinDbTypes.PgTypes.int2, unsaved.vacationhours), Fragment.lit("::int2, "), Fragment.encode(KotlinDbTypes.PgTypes.int2, unsaved.sickleavehours), Fragment.lit("::int2, "), Fragment.encode(Flag.dbType, unsaved.currentflag), Fragment.lit("::bool, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.text.nullable(), unsaved.organizationnode), Fragment.lit(")\non conflict (\"businessentityid\")\ndo update set\n \"nationalidnumber\" = EXCLUDED.\"nationalidnumber\",\n\"loginid\" = EXCLUDED.\"loginid\",\n\"jobtitle\" = EXCLUDED.\"jobtitle\",\n\"birthdate\" = EXCLUDED.\"birthdate\",\n\"maritalstatus\" = EXCLUDED.\"maritalstatus\",\n\"gender\" = EXCLUDED.\"gender\",\n\"hiredate\" = EXCLUDED.\"hiredate\",\n\"salariedflag\" = EXCLUDED.\"salariedflag\",\n\"vacationhours\" = EXCLUDED.\"vacationhours\",\n\"sickleavehours\" = EXCLUDED.\"sickleavehours\",\n\"currentflag\" = EXCLUDED.\"currentflag\",\n\"rowguid\" = EXCLUDED.\"rowguid\",\n\"modifieddate\" = EXCLUDED.\"modifieddate\",\n\"organizationnode\" = EXCLUDED.\"organizationnode\"\nreturning \"businessentityid\", \"nationalidnumber\", \"loginid\", \"jobtitle\", \"birthdate\", \"maritalstatus\", \"gender\", \"hiredate\", \"salariedflag\", \"vacationhours\", \"sickleavehours\", \"currentflag\", \"rowguid\", \"modifieddate\", \"organizationnode\"")) + ): EmployeeRow = Fragment.interpolate(Fragment.lit("insert into \"humanresources\".\"employee\"(\"businessentityid\", \"nationalidnumber\", \"loginid\", \"jobtitle\", \"birthdate\", \"maritalstatus\", \"gender\", \"hiredate\", \"salariedflag\", \"vacationhours\", \"sickleavehours\", \"currentflag\", \"rowguid\", \"modifieddate\", \"organizationnode\")\nvalues ("), Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.text, unsaved.nationalidnumber), Fragment.lit(", "), Fragment.encode(PgTypes.text, unsaved.loginid), Fragment.lit(", "), Fragment.encode(PgTypes.text, unsaved.jobtitle), Fragment.lit(", "), Fragment.encode(PgTypes.date, unsaved.birthdate), Fragment.lit("::date, "), Fragment.encode(PgTypes.bpchar, unsaved.maritalstatus), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.bpchar, unsaved.gender), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.date, unsaved.hiredate), Fragment.lit("::date, "), Fragment.encode(SalariedFlag.pgType, unsaved.salariedflag), Fragment.lit("::bool, "), Fragment.encode(KotlinDbTypes.PgTypes.int2, unsaved.vacationhours), Fragment.lit("::int2, "), Fragment.encode(KotlinDbTypes.PgTypes.int2, unsaved.sickleavehours), Fragment.lit("::int2, "), Fragment.encode(CurrentFlag.pgType, unsaved.currentflag), Fragment.lit("::bool, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.text.nullable(), unsaved.organizationnode), Fragment.lit(")\non conflict (\"businessentityid\")\ndo update set\n \"nationalidnumber\" = EXCLUDED.\"nationalidnumber\",\n\"loginid\" = EXCLUDED.\"loginid\",\n\"jobtitle\" = EXCLUDED.\"jobtitle\",\n\"birthdate\" = EXCLUDED.\"birthdate\",\n\"maritalstatus\" = EXCLUDED.\"maritalstatus\",\n\"gender\" = EXCLUDED.\"gender\",\n\"hiredate\" = EXCLUDED.\"hiredate\",\n\"salariedflag\" = EXCLUDED.\"salariedflag\",\n\"vacationhours\" = EXCLUDED.\"vacationhours\",\n\"sickleavehours\" = EXCLUDED.\"sickleavehours\",\n\"currentflag\" = EXCLUDED.\"currentflag\",\n\"rowguid\" = EXCLUDED.\"rowguid\",\n\"modifieddate\" = EXCLUDED.\"modifieddate\",\n\"organizationnode\" = EXCLUDED.\"organizationnode\"\nreturning \"businessentityid\", \"nationalidnumber\", \"loginid\", \"jobtitle\", \"birthdate\", \"maritalstatus\", \"gender\", \"hiredate\", \"salariedflag\", \"vacationhours\", \"sickleavehours\", \"currentflag\", \"rowguid\", \"modifieddate\", \"organizationnode\"")) .updateReturning(EmployeeRow._rowParser.exactlyOne()) .runUnchecked(c) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRow.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRow.kt index bf5ea10939..ac0c638ba7 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRow.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRow.kt @@ -7,7 +7,8 @@ package adventureworks.humanresources.employee import adventureworks.customtypes.Defaulted import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Flag +import adventureworks.userdefined.CurrentFlag +import adventureworks.userdefined.SalariedFlag import dev.typr.foundations.PgText import dev.typr.foundations.PgTypes import dev.typr.foundations.Tuple.Tuple15 @@ -53,7 +54,7 @@ data class EmployeeRow( /** Job classification. 0 = Hourly, not exempt from collective bargaining. 1 = Salaried, exempt from collective bargaining. * Default: true */ - val salariedflag: Flag, + val salariedflag: /* user-picked */ SalariedFlag, /** Number of available vacation hours. * Default: 0 * Constraint CK_Employee_VacationHours affecting columns vacationhours: (((vacationhours >= '-40'::integer) AND (vacationhours <= 240))) @@ -67,7 +68,7 @@ data class EmployeeRow( /** 0 = Inactive, 1 = Active * Default: true */ - val currentflag: Flag, + val currentflag: /* user-picked */ CurrentFlag, /** Default: uuid_generate_v1() */ val rowguid: UUID, /** Default: now() */ @@ -76,14 +77,14 @@ data class EmployeeRow( * Default: '/'::character varying */ val organizationnode: String? -) : Tuple15 { +) : Tuple15 { override fun _1(): BusinessentityId = businessentityid override fun _10(): Short = vacationhours override fun _11(): Short = sickleavehours - override fun _12(): Flag = currentflag + override fun _12(): /* user-picked */ CurrentFlag = currentflag override fun _13(): UUID = rowguid @@ -105,22 +106,22 @@ data class EmployeeRow( override fun _8(): LocalDate = hiredate - override fun _9(): Flag = salariedflag + override fun _9(): /* user-picked */ SalariedFlag = salariedflag fun id(): BusinessentityId = businessentityid fun toUnsavedRow( - salariedflag: Defaulted = Defaulted.Provided(this.salariedflag), + salariedflag: Defaulted = Defaulted.Provided(this.salariedflag), vacationhours: Defaulted = Defaulted.Provided(this.vacationhours), sickleavehours: Defaulted = Defaulted.Provided(this.sickleavehours), - currentflag: Defaulted = Defaulted.Provided(this.currentflag), + currentflag: Defaulted = Defaulted.Provided(this.currentflag), rowguid: Defaulted = Defaulted.Provided(this.rowguid), modifieddate: Defaulted = Defaulted.Provided(this.modifieddate), organizationnode: Defaulted = Defaulted.Provided(this.organizationnode) ): EmployeeRowUnsaved = EmployeeRowUnsaved(businessentityid, nationalidnumber, loginid, jobtitle, birthdate, maritalstatus, gender, hiredate, salariedflag, vacationhours, sickleavehours, currentflag, rowguid, modifieddate, organizationnode) companion object { - val _rowParser: RowParser = RowParsers.of(BusinessentityId.dbType, PgTypes.text, PgTypes.text, PgTypes.text, PgTypes.date, PgTypes.bpchar, PgTypes.bpchar, PgTypes.date, Flag.dbType, KotlinDbTypes.PgTypes.int2, KotlinDbTypes.PgTypes.int2, Flag.dbType, PgTypes.uuid, PgTypes.timestamp, PgTypes.text.nullable(), { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14 -> EmployeeRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14) }, { row -> arrayOf(row.businessentityid, row.nationalidnumber, row.loginid, row.jobtitle, row.birthdate, row.maritalstatus, row.gender, row.hiredate, row.salariedflag, row.vacationhours, row.sickleavehours, row.currentflag, row.rowguid, row.modifieddate, row.organizationnode) }) + val _rowParser: RowParser = RowParsers.of(BusinessentityId.pgType, PgTypes.text, PgTypes.text, PgTypes.text, PgTypes.date, PgTypes.bpchar, PgTypes.bpchar, PgTypes.date, SalariedFlag.pgType, KotlinDbTypes.PgTypes.int2, KotlinDbTypes.PgTypes.int2, CurrentFlag.pgType, PgTypes.uuid, PgTypes.timestamp, PgTypes.text.nullable(), { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14 -> EmployeeRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14) }, { row -> arrayOf(row.businessentityid, row.nationalidnumber, row.loginid, row.jobtitle, row.birthdate, row.maritalstatus, row.gender, row.hiredate, row.salariedflag, row.vacationhours, row.sickleavehours, row.currentflag, row.rowguid, row.modifieddate, row.organizationnode) }) val pgText: PgText = PgText.from(_rowParser.underlying) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRowUnsaved.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRowUnsaved.kt index 49434e57b6..61c3faaf1d 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRowUnsaved.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRowUnsaved.kt @@ -8,7 +8,8 @@ package adventureworks.humanresources.employee import adventureworks.customtypes.Defaulted import adventureworks.customtypes.Defaulted.UseDefault import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Flag +import adventureworks.userdefined.CurrentFlag +import adventureworks.userdefined.SalariedFlag import dev.typr.foundations.PgText import dev.typr.foundations.PgTypes import dev.typr.foundations.kotlin.KotlinDbTypes @@ -48,7 +49,7 @@ data class EmployeeRowUnsaved( /** Default: true * Job classification. 0 = Hourly, not exempt from collective bargaining. 1 = Salaried, exempt from collective bargaining. */ - val salariedflag: Defaulted = UseDefault(), + val salariedflag: Defaulted = UseDefault(), /** Default: 0 * Number of available vacation hours. * Constraint CK_Employee_VacationHours affecting columns vacationhours: (((vacationhours >= '-40'::integer) AND (vacationhours <= 240))) @@ -62,7 +63,7 @@ data class EmployeeRowUnsaved( /** Default: true * 0 = Inactive, 1 = Active */ - val currentflag: Defaulted = UseDefault(), + val currentflag: Defaulted = UseDefault(), /** Default: uuid_generate_v1() */ val rowguid: Defaulted = UseDefault(), /** Default: now() */ @@ -73,10 +74,10 @@ data class EmployeeRowUnsaved( val organizationnode: Defaulted = UseDefault() ) { fun toRow( - salariedflagDefault: () -> Flag, + salariedflagDefault: () -> /* user-picked */ SalariedFlag, vacationhoursDefault: () -> Short, sickleavehoursDefault: () -> Short, - currentflagDefault: () -> Flag, + currentflagDefault: () -> /* user-picked */ CurrentFlag, rowguidDefault: () -> UUID, modifieddateDefault: () -> LocalDateTime, organizationnodeDefault: () -> String? @@ -84,7 +85,7 @@ data class EmployeeRowUnsaved( companion object { val pgText: PgText = - PgText.instance({ row, sb -> BusinessentityId.dbType.text().unsafeEncode(row.businessentityid, sb) + PgText.instance({ row, sb -> BusinessentityId.pgType.text().unsafeEncode(row.businessentityid, sb) sb.append(PgText.DELIMETER) PgTypes.text.text().unsafeEncode(row.nationalidnumber, sb) sb.append(PgText.DELIMETER) @@ -100,13 +101,13 @@ data class EmployeeRowUnsaved( sb.append(PgText.DELIMETER) PgTypes.date.text().unsafeEncode(row.hiredate, sb) sb.append(PgText.DELIMETER) - Defaulted.pgText(Flag.dbType.text()).unsafeEncode(row.salariedflag, sb) + Defaulted.pgText(SalariedFlag.pgType.text()).unsafeEncode(row.salariedflag, sb) sb.append(PgText.DELIMETER) Defaulted.pgText(KotlinDbTypes.PgTypes.int2.text()).unsafeEncode(row.vacationhours, sb) sb.append(PgText.DELIMETER) Defaulted.pgText(KotlinDbTypes.PgTypes.int2.text()).unsafeEncode(row.sickleavehours, sb) sb.append(PgText.DELIMETER) - Defaulted.pgText(Flag.dbType.text()).unsafeEncode(row.currentflag, sb) + Defaulted.pgText(CurrentFlag.pgType.text()).unsafeEncode(row.currentflag, sb) sb.append(PgText.DELIMETER) Defaulted.pgText(PgTypes.uuid.text()).unsafeEncode(row.rowguid, sb) sb.append(PgText.DELIMETER) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryFields.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryFields.kt index 03bbb209d2..7e3c802c8d 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryFields.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryFields.kt @@ -46,7 +46,7 @@ data class EmployeedepartmenthistoryFields(val _path: List) : TupleExpr6 = _path - fun businessentityid(): IdField = IdField(_path, "businessentityid", EmployeedepartmenthistoryRow::businessentityid, null, "int4", { row, value -> row.copy(businessentityid = value) }, BusinessentityId.dbType) + fun businessentityid(): IdField = IdField(_path, "businessentityid", EmployeedepartmenthistoryRow::businessentityid, null, "int4", { row, value -> row.copy(businessentityid = value) }, BusinessentityId.pgType) override fun columns(): List> = listOf(this.businessentityid().underlying, this.departmentid().underlying, this.shiftid().underlying, this.startdate().underlying, this.enddate().underlying, this.modifieddate().underlying) @@ -54,7 +54,7 @@ data class EmployeedepartmenthistoryFields(val _path: List) : TupleExpr6 = SqlExpr.all(businessentityid().isEqual(compositeId.businessentityid), startdate().isEqual(compositeId.startdate), departmentid().isEqual(compositeId.departmentid), shiftid().isEqual(compositeId.shiftid)) - fun departmentid(): IdField = IdField(_path, "departmentid", EmployeedepartmenthistoryRow::departmentid, null, "int2", { row, value -> row.copy(departmentid = value) }, DepartmentId.dbType) + fun departmentid(): IdField = IdField(_path, "departmentid", EmployeedepartmenthistoryRow::departmentid, null, "int2", { row, value -> row.copy(departmentid = value) }, DepartmentId.pgType) fun enddate(): OptField = OptField(_path, "enddate", EmployeedepartmenthistoryRow::enddate, null, "date", { row, value -> row.copy(enddate = value) }, PgTypes.date) @@ -68,7 +68,7 @@ data class EmployeedepartmenthistoryFields(val _path: List) : TupleExpr6 = EmployeedepartmenthistoryRow._rowParser.underlying - fun shiftid(): IdField = IdField(_path, "shiftid", EmployeedepartmenthistoryRow::shiftid, null, "int2", { row, value -> row.copy(shiftid = value) }, ShiftId.dbType) + fun shiftid(): IdField = IdField(_path, "shiftid", EmployeedepartmenthistoryRow::shiftid, null, "int2", { row, value -> row.copy(shiftid = value) }, ShiftId.pgType) fun startdate(): IdField = IdField(_path, "startdate", EmployeedepartmenthistoryRow::startdate, null, "date", { row, value -> row.copy(startdate = value) }, PgTypes.date) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryId.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryId.kt index 3869089ed3..1b993ce163 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryId.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryId.kt @@ -30,6 +30,6 @@ data class EmployeedepartmenthistoryId( override fun _4(): ShiftId = shiftid companion object { - val _rowParser: RowParser = RowParsers.of(BusinessentityId.dbType, PgTypes.date, DepartmentId.dbType, ShiftId.dbType, { t0, t1, t2, t3 -> EmployeedepartmenthistoryId(t0, t1, t2, t3) }, { row -> arrayOf(row.businessentityid, row.startdate, row.departmentid, row.shiftid) }) + val _rowParser: RowParser = RowParsers.of(BusinessentityId.pgType, PgTypes.date, DepartmentId.pgType, ShiftId.pgType, { t0, t1, t2, t3 -> EmployeedepartmenthistoryId(t0, t1, t2, t3) }, { row -> arrayOf(row.businessentityid, row.startdate, row.departmentid, row.shiftid) }) } } \ No newline at end of file diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRepoImpl.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRepoImpl.kt index fa6806939d..21a6bdf8c8 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRepoImpl.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRepoImpl.kt @@ -31,7 +31,7 @@ class EmployeedepartmenthistoryRepoImpl() : EmployeedepartmenthistoryRepo { override fun deleteById( compositeId: EmployeedepartmenthistoryId, c: Connection - ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"humanresources\".\"employeedepartmenthistory\" where \"businessentityid\" = "), Fragment.encode(BusinessentityId.dbType, compositeId.businessentityid), Fragment.lit(" AND \"startdate\" = "), Fragment.encode(PgTypes.date, compositeId.startdate), Fragment.lit(" AND \"departmentid\" = "), Fragment.encode(DepartmentId.dbType, compositeId.departmentid), Fragment.lit(" AND \"shiftid\" = "), Fragment.encode(ShiftId.dbType, compositeId.shiftid), Fragment.lit("")).update().runUnchecked(c) > 0 + ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"humanresources\".\"employeedepartmenthistory\" where \"businessentityid\" = "), Fragment.encode(BusinessentityId.pgType, compositeId.businessentityid), Fragment.lit(" AND \"startdate\" = "), Fragment.encode(PgTypes.date, compositeId.startdate), Fragment.lit(" AND \"departmentid\" = "), Fragment.encode(DepartmentId.pgType, compositeId.departmentid), Fragment.lit(" AND \"shiftid\" = "), Fragment.encode(ShiftId.pgType, compositeId.shiftid), Fragment.lit("")).update().runUnchecked(c) > 0 override fun deleteByIds( compositeIds: Array, @@ -41,13 +41,13 @@ class EmployeedepartmenthistoryRepoImpl() : EmployeedepartmenthistoryRepo { val startdate: Array = arrayMap.map(compositeIds, EmployeedepartmenthistoryId::startdate, LocalDate::class.java) val departmentid: Array = arrayMap.map(compositeIds, EmployeedepartmenthistoryId::departmentid, DepartmentId::class.java) val shiftid: Array = arrayMap.map(compositeIds, EmployeedepartmenthistoryId::shiftid, ShiftId::class.java) - return Fragment.interpolate(Fragment.lit("delete\nfrom \"humanresources\".\"employeedepartmenthistory\"\nwhere (\"businessentityid\", \"startdate\", \"departmentid\", \"shiftid\")\nin (select * from unnest("), Fragment.encode(BusinessentityId.dbTypeArray, businessentityid), Fragment.lit(", "), Fragment.encode(PgTypes.dateArray, startdate), Fragment.lit(", "), Fragment.encode(DepartmentId.dbTypeArray, departmentid), Fragment.lit(", "), Fragment.encode(ShiftId.dbTypeArray, shiftid), Fragment.lit("))\n")).update().runUnchecked(c) + return Fragment.interpolate(Fragment.lit("delete\nfrom \"humanresources\".\"employeedepartmenthistory\"\nwhere (\"businessentityid\", \"startdate\", \"departmentid\", \"shiftid\")\nin (select * from unnest("), Fragment.encode(BusinessentityId.pgTypeArray, businessentityid), Fragment.lit(", "), Fragment.encode(PgTypes.dateArray, startdate), Fragment.lit(", "), Fragment.encode(DepartmentId.pgTypeArray, departmentid), Fragment.lit(", "), Fragment.encode(ShiftId.pgTypeArray, shiftid), Fragment.lit("))\n")).update().runUnchecked(c) } override fun insert( unsaved: EmployeedepartmenthistoryRow, c: Connection - ): EmployeedepartmenthistoryRow = Fragment.interpolate(Fragment.lit("insert into \"humanresources\".\"employeedepartmenthistory\"(\"businessentityid\", \"departmentid\", \"shiftid\", \"startdate\", \"enddate\", \"modifieddate\")\nvalues ("), Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid), Fragment.lit("::int4, "), Fragment.encode(DepartmentId.dbType, unsaved.departmentid), Fragment.lit("::int2, "), Fragment.encode(ShiftId.dbType, unsaved.shiftid), Fragment.lit("::int2, "), Fragment.encode(PgTypes.date, unsaved.startdate), Fragment.lit("::date, "), Fragment.encode(PgTypes.date.nullable(), unsaved.enddate), Fragment.lit("::date, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\nRETURNING \"businessentityid\", \"departmentid\", \"shiftid\", \"startdate\", \"enddate\", \"modifieddate\"\n")) + ): EmployeedepartmenthistoryRow = Fragment.interpolate(Fragment.lit("insert into \"humanresources\".\"employeedepartmenthistory\"(\"businessentityid\", \"departmentid\", \"shiftid\", \"startdate\", \"enddate\", \"modifieddate\")\nvalues ("), Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid), Fragment.lit("::int4, "), Fragment.encode(DepartmentId.pgType, unsaved.departmentid), Fragment.lit("::int2, "), Fragment.encode(ShiftId.pgType, unsaved.shiftid), Fragment.lit("::int2, "), Fragment.encode(PgTypes.date, unsaved.startdate), Fragment.lit("::date, "), Fragment.encode(PgTypes.date.nullable(), unsaved.enddate), Fragment.lit("::date, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\nRETURNING \"businessentityid\", \"departmentid\", \"shiftid\", \"startdate\", \"enddate\", \"modifieddate\"\n")) .updateReturning(EmployeedepartmenthistoryRow._rowParser.exactlyOne()).runUnchecked(c) override fun insert( @@ -57,11 +57,11 @@ class EmployeedepartmenthistoryRepoImpl() : EmployeedepartmenthistoryRepo { val columns: ArrayList = ArrayList() val values: ArrayList = ArrayList() columns.add(Fragment.lit("\"businessentityid\"")) - values.add(Fragment.interpolate(Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid), Fragment.lit("::int4"))) + values.add(Fragment.interpolate(Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid), Fragment.lit("::int4"))) columns.add(Fragment.lit("\"departmentid\"")) - values.add(Fragment.interpolate(Fragment.encode(DepartmentId.dbType, unsaved.departmentid), Fragment.lit("::int2"))) + values.add(Fragment.interpolate(Fragment.encode(DepartmentId.pgType, unsaved.departmentid), Fragment.lit("::int2"))) columns.add(Fragment.lit("\"shiftid\"")) - values.add(Fragment.interpolate(Fragment.encode(ShiftId.dbType, unsaved.shiftid), Fragment.lit("::int2"))) + values.add(Fragment.interpolate(Fragment.encode(ShiftId.pgType, unsaved.shiftid), Fragment.lit("::int2"))) columns.add(Fragment.lit("\"startdate\"")) values.add(Fragment.interpolate(Fragment.encode(PgTypes.date, unsaved.startdate), Fragment.lit("::date"))) columns.add(Fragment.lit("\"enddate\"")) @@ -95,7 +95,7 @@ class EmployeedepartmenthistoryRepoImpl() : EmployeedepartmenthistoryRepo { override fun selectById( compositeId: EmployeedepartmenthistoryId, c: Connection - ): EmployeedepartmenthistoryRow? = Fragment.interpolate(Fragment.lit("select \"businessentityid\", \"departmentid\", \"shiftid\", \"startdate\", \"enddate\", \"modifieddate\"\nfrom \"humanresources\".\"employeedepartmenthistory\"\nwhere \"businessentityid\" = "), Fragment.encode(BusinessentityId.dbType, compositeId.businessentityid), Fragment.lit(" AND \"startdate\" = "), Fragment.encode(PgTypes.date, compositeId.startdate), Fragment.lit(" AND \"departmentid\" = "), Fragment.encode(DepartmentId.dbType, compositeId.departmentid), Fragment.lit(" AND \"shiftid\" = "), Fragment.encode(ShiftId.dbType, compositeId.shiftid), Fragment.lit("")).query(EmployeedepartmenthistoryRow._rowParser.first()).runUnchecked(c) + ): EmployeedepartmenthistoryRow? = Fragment.interpolate(Fragment.lit("select \"businessentityid\", \"departmentid\", \"shiftid\", \"startdate\", \"enddate\", \"modifieddate\"\nfrom \"humanresources\".\"employeedepartmenthistory\"\nwhere \"businessentityid\" = "), Fragment.encode(BusinessentityId.pgType, compositeId.businessentityid), Fragment.lit(" AND \"startdate\" = "), Fragment.encode(PgTypes.date, compositeId.startdate), Fragment.lit(" AND \"departmentid\" = "), Fragment.encode(DepartmentId.pgType, compositeId.departmentid), Fragment.lit(" AND \"shiftid\" = "), Fragment.encode(ShiftId.pgType, compositeId.shiftid), Fragment.lit("")).query(EmployeedepartmenthistoryRow._rowParser.first()).runUnchecked(c) override fun selectByIds( compositeIds: Array, @@ -105,7 +105,7 @@ class EmployeedepartmenthistoryRepoImpl() : EmployeedepartmenthistoryRepo { val startdate: Array = arrayMap.map(compositeIds, EmployeedepartmenthistoryId::startdate, LocalDate::class.java) val departmentid: Array = arrayMap.map(compositeIds, EmployeedepartmenthistoryId::departmentid, DepartmentId::class.java) val shiftid: Array = arrayMap.map(compositeIds, EmployeedepartmenthistoryId::shiftid, ShiftId::class.java) - return Fragment.interpolate(Fragment.lit("select \"businessentityid\", \"departmentid\", \"shiftid\", \"startdate\", \"enddate\", \"modifieddate\"\nfrom \"humanresources\".\"employeedepartmenthistory\"\nwhere (\"businessentityid\", \"startdate\", \"departmentid\", \"shiftid\")\nin (select * from unnest("), Fragment.encode(BusinessentityId.dbTypeArray, businessentityid), Fragment.lit(", "), Fragment.encode(PgTypes.dateArray, startdate), Fragment.lit(", "), Fragment.encode(DepartmentId.dbTypeArray, departmentid), Fragment.lit(", "), Fragment.encode(ShiftId.dbTypeArray, shiftid), Fragment.lit("))\n")).query(EmployeedepartmenthistoryRow._rowParser.all()).runUnchecked(c) + return Fragment.interpolate(Fragment.lit("select \"businessentityid\", \"departmentid\", \"shiftid\", \"startdate\", \"enddate\", \"modifieddate\"\nfrom \"humanresources\".\"employeedepartmenthistory\"\nwhere (\"businessentityid\", \"startdate\", \"departmentid\", \"shiftid\")\nin (select * from unnest("), Fragment.encode(BusinessentityId.pgTypeArray, businessentityid), Fragment.lit(", "), Fragment.encode(PgTypes.dateArray, startdate), Fragment.lit(", "), Fragment.encode(DepartmentId.pgTypeArray, departmentid), Fragment.lit(", "), Fragment.encode(ShiftId.pgTypeArray, shiftid), Fragment.lit("))\n")).query(EmployeedepartmenthistoryRow._rowParser.all()).runUnchecked(c) } override fun selectByIdsTracked( @@ -124,13 +124,13 @@ class EmployeedepartmenthistoryRepoImpl() : EmployeedepartmenthistoryRepo { c: Connection ): Boolean { val compositeId: EmployeedepartmenthistoryId = row.compositeId() - return Fragment.interpolate(Fragment.lit("update \"humanresources\".\"employeedepartmenthistory\"\nset \"enddate\" = "), Fragment.encode(PgTypes.date.nullable(), row.enddate), Fragment.lit("::date,\n\"modifieddate\" = "), Fragment.encode(PgTypes.timestamp, row.modifieddate), Fragment.lit("::timestamp\nwhere \"businessentityid\" = "), Fragment.encode(BusinessentityId.dbType, compositeId.businessentityid), Fragment.lit(" AND \"startdate\" = "), Fragment.encode(PgTypes.date, compositeId.startdate), Fragment.lit(" AND \"departmentid\" = "), Fragment.encode(DepartmentId.dbType, compositeId.departmentid), Fragment.lit(" AND \"shiftid\" = "), Fragment.encode(ShiftId.dbType, compositeId.shiftid), Fragment.lit("")).update().runUnchecked(c) > 0 + return Fragment.interpolate(Fragment.lit("update \"humanresources\".\"employeedepartmenthistory\"\nset \"enddate\" = "), Fragment.encode(PgTypes.date.nullable(), row.enddate), Fragment.lit("::date,\n\"modifieddate\" = "), Fragment.encode(PgTypes.timestamp, row.modifieddate), Fragment.lit("::timestamp\nwhere \"businessentityid\" = "), Fragment.encode(BusinessentityId.pgType, compositeId.businessentityid), Fragment.lit(" AND \"startdate\" = "), Fragment.encode(PgTypes.date, compositeId.startdate), Fragment.lit(" AND \"departmentid\" = "), Fragment.encode(DepartmentId.pgType, compositeId.departmentid), Fragment.lit(" AND \"shiftid\" = "), Fragment.encode(ShiftId.pgType, compositeId.shiftid), Fragment.lit("")).update().runUnchecked(c) > 0 } override fun upsert( unsaved: EmployeedepartmenthistoryRow, c: Connection - ): EmployeedepartmenthistoryRow = Fragment.interpolate(Fragment.lit("insert into \"humanresources\".\"employeedepartmenthistory\"(\"businessentityid\", \"departmentid\", \"shiftid\", \"startdate\", \"enddate\", \"modifieddate\")\nvalues ("), Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid), Fragment.lit("::int4, "), Fragment.encode(DepartmentId.dbType, unsaved.departmentid), Fragment.lit("::int2, "), Fragment.encode(ShiftId.dbType, unsaved.shiftid), Fragment.lit("::int2, "), Fragment.encode(PgTypes.date, unsaved.startdate), Fragment.lit("::date, "), Fragment.encode(PgTypes.date.nullable(), unsaved.enddate), Fragment.lit("::date, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\non conflict (\"businessentityid\", \"startdate\", \"departmentid\", \"shiftid\")\ndo update set\n \"enddate\" = EXCLUDED.\"enddate\",\n\"modifieddate\" = EXCLUDED.\"modifieddate\"\nreturning \"businessentityid\", \"departmentid\", \"shiftid\", \"startdate\", \"enddate\", \"modifieddate\"")) + ): EmployeedepartmenthistoryRow = Fragment.interpolate(Fragment.lit("insert into \"humanresources\".\"employeedepartmenthistory\"(\"businessentityid\", \"departmentid\", \"shiftid\", \"startdate\", \"enddate\", \"modifieddate\")\nvalues ("), Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid), Fragment.lit("::int4, "), Fragment.encode(DepartmentId.pgType, unsaved.departmentid), Fragment.lit("::int2, "), Fragment.encode(ShiftId.pgType, unsaved.shiftid), Fragment.lit("::int2, "), Fragment.encode(PgTypes.date, unsaved.startdate), Fragment.lit("::date, "), Fragment.encode(PgTypes.date.nullable(), unsaved.enddate), Fragment.lit("::date, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\non conflict (\"businessentityid\", \"startdate\", \"departmentid\", \"shiftid\")\ndo update set\n \"enddate\" = EXCLUDED.\"enddate\",\n\"modifieddate\" = EXCLUDED.\"modifieddate\"\nreturning \"businessentityid\", \"departmentid\", \"shiftid\", \"startdate\", \"enddate\", \"modifieddate\"")) .updateReturning(EmployeedepartmenthistoryRow._rowParser.exactlyOne()) .runUnchecked(c) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRow.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRow.kt index 3c702aeaf6..0f6992cd67 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRow.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRow.kt @@ -65,7 +65,7 @@ data class EmployeedepartmenthistoryRow( fun toUnsavedRow(modifieddate: Defaulted = Defaulted.Provided(this.modifieddate)): EmployeedepartmenthistoryRowUnsaved = EmployeedepartmenthistoryRowUnsaved(businessentityid, departmentid, shiftid, startdate, enddate, modifieddate) companion object { - val _rowParser: RowParser = RowParsers.of(BusinessentityId.dbType, DepartmentId.dbType, ShiftId.dbType, PgTypes.date, PgTypes.date.nullable(), PgTypes.timestamp, { t0, t1, t2, t3, t4, t5 -> EmployeedepartmenthistoryRow(t0, t1, t2, t3, t4, t5) }, { row -> arrayOf(row.businessentityid, row.departmentid, row.shiftid, row.startdate, row.enddate, row.modifieddate) }) + val _rowParser: RowParser = RowParsers.of(BusinessentityId.pgType, DepartmentId.pgType, ShiftId.pgType, PgTypes.date, PgTypes.date.nullable(), PgTypes.timestamp, { t0, t1, t2, t3, t4, t5 -> EmployeedepartmenthistoryRow(t0, t1, t2, t3, t4, t5) }, { row -> arrayOf(row.businessentityid, row.departmentid, row.shiftid, row.startdate, row.enddate, row.modifieddate) }) fun apply( compositeId: EmployeedepartmenthistoryId, diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRowUnsaved.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRowUnsaved.kt index b976f4d3b1..b00c0f881c 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRowUnsaved.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRowUnsaved.kt @@ -45,11 +45,11 @@ data class EmployeedepartmenthistoryRowUnsaved( companion object { val pgText: PgText = - PgText.instance({ row, sb -> BusinessentityId.dbType.text().unsafeEncode(row.businessentityid, sb) + PgText.instance({ row, sb -> BusinessentityId.pgType.text().unsafeEncode(row.businessentityid, sb) sb.append(PgText.DELIMETER) - DepartmentId.dbType.text().unsafeEncode(row.departmentid, sb) + DepartmentId.pgType.text().unsafeEncode(row.departmentid, sb) sb.append(PgText.DELIMETER) - ShiftId.dbType.text().unsafeEncode(row.shiftid, sb) + ShiftId.pgType.text().unsafeEncode(row.shiftid, sb) sb.append(PgText.DELIMETER) PgTypes.date.text().unsafeEncode(row.startdate, sb) sb.append(PgText.DELIMETER) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/shift/ShiftFields.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/shift/ShiftFields.kt index 4aa1df7f6d..472a67c474 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/shift/ShiftFields.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/shift/ShiftFields.kt @@ -39,11 +39,11 @@ data class ShiftFields(val _path: List) : TupleExpr5 = Field(_path, "modifieddate", ShiftRow::modifieddate, null, "timestamp", { row, value -> row.copy(modifieddate = value) }, PgTypes.timestamp) - fun name(): Field = Field(_path, "name", ShiftRow::name, null, "varchar", { row, value -> row.copy(name = value) }, Name.dbType) + fun name(): Field = Field(_path, "name", ShiftRow::name, null, "varchar", { row, value -> row.copy(name = value) }, Name.pgType) override fun rowParser(): RowParser = ShiftRow._rowParser.underlying - fun shiftid(): IdField = IdField(_path, "shiftid", ShiftRow::shiftid, null, "int4", { row, value -> row.copy(shiftid = value) }, ShiftId.dbType) + fun shiftid(): IdField = IdField(_path, "shiftid", ShiftRow::shiftid, null, "int4", { row, value -> row.copy(shiftid = value) }, ShiftId.pgType) fun starttime(): Field = Field(_path, "starttime", ShiftRow::starttime, null, "time", { row, value -> row.copy(starttime = value) }, PgTypes.time) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/shift/ShiftId.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/shift/ShiftId.kt index 9d6338cef0..5a2d409d64 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/shift/ShiftId.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/shift/ShiftId.kt @@ -22,10 +22,10 @@ data class ShiftId(@field:JsonValue val value: Int) { val bijection: Bijection = Bijection.of(ShiftId::value, ::ShiftId) - val dbType: PgType = + val pgType: PgType = KotlinDbTypes.PgTypes.int4.bimap(::ShiftId, ShiftId::value) - val dbTypeArray: PgType> = + val pgTypeArray: PgType> = PgTypes.int4Array.bimap({ xs -> arrayMap.map(xs, ::ShiftId, ShiftId::class.java) }, { xs -> arrayMap.map(xs, ShiftId::value, Int::class.javaObjectType) }) } } \ No newline at end of file diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRepoImpl.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRepoImpl.kt index a51d8972b6..773a798e3c 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRepoImpl.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRepoImpl.kt @@ -26,19 +26,19 @@ class ShiftRepoImpl() : ShiftRepo { override fun deleteById( shiftid: ShiftId, c: Connection - ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"humanresources\".\"shift\" where \"shiftid\" = "), Fragment.encode(ShiftId.dbType, shiftid), Fragment.lit("")).update().runUnchecked(c) > 0 + ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"humanresources\".\"shift\" where \"shiftid\" = "), Fragment.encode(ShiftId.pgType, shiftid), Fragment.lit("")).update().runUnchecked(c) > 0 override fun deleteByIds( shiftids: Array, c: Connection - ): Int = Fragment.interpolate(Fragment.lit("delete\nfrom \"humanresources\".\"shift\"\nwhere \"shiftid\" = ANY("), Fragment.encode(ShiftId.dbTypeArray, shiftids), Fragment.lit(")")) + ): Int = Fragment.interpolate(Fragment.lit("delete\nfrom \"humanresources\".\"shift\"\nwhere \"shiftid\" = ANY("), Fragment.encode(ShiftId.pgTypeArray, shiftids), Fragment.lit(")")) .update() .runUnchecked(c) override fun insert( unsaved: ShiftRow, c: Connection - ): ShiftRow = Fragment.interpolate(Fragment.lit("insert into \"humanresources\".\"shift\"(\"shiftid\", \"name\", \"starttime\", \"endtime\", \"modifieddate\")\nvalues ("), Fragment.encode(ShiftId.dbType, unsaved.shiftid), Fragment.lit("::int4, "), Fragment.encode(Name.dbType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.time, unsaved.starttime), Fragment.lit("::time, "), Fragment.encode(PgTypes.time, unsaved.endtime), Fragment.lit("::time, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\nRETURNING \"shiftid\", \"name\", \"starttime\", \"endtime\", \"modifieddate\"\n")) + ): ShiftRow = Fragment.interpolate(Fragment.lit("insert into \"humanresources\".\"shift\"(\"shiftid\", \"name\", \"starttime\", \"endtime\", \"modifieddate\")\nvalues ("), Fragment.encode(ShiftId.pgType, unsaved.shiftid), Fragment.lit("::int4, "), Fragment.encode(Name.pgType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.time, unsaved.starttime), Fragment.lit("::time, "), Fragment.encode(PgTypes.time, unsaved.endtime), Fragment.lit("::time, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\nRETURNING \"shiftid\", \"name\", \"starttime\", \"endtime\", \"modifieddate\"\n")) .updateReturning(ShiftRow._rowParser.exactlyOne()).runUnchecked(c) override fun insert( @@ -48,7 +48,7 @@ class ShiftRepoImpl() : ShiftRepo { val columns: ArrayList = ArrayList() val values: ArrayList = ArrayList() columns.add(Fragment.lit("\"name\"")) - values.add(Fragment.interpolate(Fragment.encode(Name.dbType, unsaved.name), Fragment.lit("::varchar"))) + values.add(Fragment.interpolate(Fragment.encode(Name.pgType, unsaved.name), Fragment.lit("::varchar"))) columns.add(Fragment.lit("\"starttime\"")) values.add(Fragment.interpolate(Fragment.encode(PgTypes.time, unsaved.starttime), Fragment.lit("::time"))) columns.add(Fragment.lit("\"endtime\"")) @@ -56,7 +56,7 @@ class ShiftRepoImpl() : ShiftRepo { unsaved.shiftid.visit( { }, { value -> columns.add(Fragment.lit("\"shiftid\"")) - values.add(Fragment.interpolate(Fragment.encode(ShiftId.dbType, value), Fragment.lit("::int4"))) } + values.add(Fragment.interpolate(Fragment.encode(ShiftId.pgType, value), Fragment.lit("::int4"))) } ); unsaved.modifieddate.visit( { }, @@ -87,12 +87,12 @@ class ShiftRepoImpl() : ShiftRepo { override fun selectById( shiftid: ShiftId, c: Connection - ): ShiftRow? = Fragment.interpolate(Fragment.lit("select \"shiftid\", \"name\", \"starttime\", \"endtime\", \"modifieddate\"\nfrom \"humanresources\".\"shift\"\nwhere \"shiftid\" = "), Fragment.encode(ShiftId.dbType, shiftid), Fragment.lit("")).query(ShiftRow._rowParser.first()).runUnchecked(c) + ): ShiftRow? = Fragment.interpolate(Fragment.lit("select \"shiftid\", \"name\", \"starttime\", \"endtime\", \"modifieddate\"\nfrom \"humanresources\".\"shift\"\nwhere \"shiftid\" = "), Fragment.encode(ShiftId.pgType, shiftid), Fragment.lit("")).query(ShiftRow._rowParser.first()).runUnchecked(c) override fun selectByIds( shiftids: Array, c: Connection - ): List = Fragment.interpolate(Fragment.lit("select \"shiftid\", \"name\", \"starttime\", \"endtime\", \"modifieddate\"\nfrom \"humanresources\".\"shift\"\nwhere \"shiftid\" = ANY("), Fragment.encode(ShiftId.dbTypeArray, shiftids), Fragment.lit(")")).query(ShiftRow._rowParser.all()).runUnchecked(c) + ): List = Fragment.interpolate(Fragment.lit("select \"shiftid\", \"name\", \"starttime\", \"endtime\", \"modifieddate\"\nfrom \"humanresources\".\"shift\"\nwhere \"shiftid\" = ANY("), Fragment.encode(ShiftId.pgTypeArray, shiftids), Fragment.lit(")")).query(ShiftRow._rowParser.all()).runUnchecked(c) override fun selectByIdsTracked( shiftids: Array, @@ -110,13 +110,13 @@ class ShiftRepoImpl() : ShiftRepo { c: Connection ): Boolean { val shiftid: ShiftId = row.shiftid - return Fragment.interpolate(Fragment.lit("update \"humanresources\".\"shift\"\nset \"name\" = "), Fragment.encode(Name.dbType, row.name), Fragment.lit("::varchar,\n\"starttime\" = "), Fragment.encode(PgTypes.time, row.starttime), Fragment.lit("::time,\n\"endtime\" = "), Fragment.encode(PgTypes.time, row.endtime), Fragment.lit("::time,\n\"modifieddate\" = "), Fragment.encode(PgTypes.timestamp, row.modifieddate), Fragment.lit("::timestamp\nwhere \"shiftid\" = "), Fragment.encode(ShiftId.dbType, shiftid), Fragment.lit("")).update().runUnchecked(c) > 0 + return Fragment.interpolate(Fragment.lit("update \"humanresources\".\"shift\"\nset \"name\" = "), Fragment.encode(Name.pgType, row.name), Fragment.lit("::varchar,\n\"starttime\" = "), Fragment.encode(PgTypes.time, row.starttime), Fragment.lit("::time,\n\"endtime\" = "), Fragment.encode(PgTypes.time, row.endtime), Fragment.lit("::time,\n\"modifieddate\" = "), Fragment.encode(PgTypes.timestamp, row.modifieddate), Fragment.lit("::timestamp\nwhere \"shiftid\" = "), Fragment.encode(ShiftId.pgType, shiftid), Fragment.lit("")).update().runUnchecked(c) > 0 } override fun upsert( unsaved: ShiftRow, c: Connection - ): ShiftRow = Fragment.interpolate(Fragment.lit("insert into \"humanresources\".\"shift\"(\"shiftid\", \"name\", \"starttime\", \"endtime\", \"modifieddate\")\nvalues ("), Fragment.encode(ShiftId.dbType, unsaved.shiftid), Fragment.lit("::int4, "), Fragment.encode(Name.dbType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.time, unsaved.starttime), Fragment.lit("::time, "), Fragment.encode(PgTypes.time, unsaved.endtime), Fragment.lit("::time, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\non conflict (\"shiftid\")\ndo update set\n \"name\" = EXCLUDED.\"name\",\n\"starttime\" = EXCLUDED.\"starttime\",\n\"endtime\" = EXCLUDED.\"endtime\",\n\"modifieddate\" = EXCLUDED.\"modifieddate\"\nreturning \"shiftid\", \"name\", \"starttime\", \"endtime\", \"modifieddate\"")) + ): ShiftRow = Fragment.interpolate(Fragment.lit("insert into \"humanresources\".\"shift\"(\"shiftid\", \"name\", \"starttime\", \"endtime\", \"modifieddate\")\nvalues ("), Fragment.encode(ShiftId.pgType, unsaved.shiftid), Fragment.lit("::int4, "), Fragment.encode(Name.pgType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.time, unsaved.starttime), Fragment.lit("::time, "), Fragment.encode(PgTypes.time, unsaved.endtime), Fragment.lit("::time, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\non conflict (\"shiftid\")\ndo update set\n \"name\" = EXCLUDED.\"name\",\n\"starttime\" = EXCLUDED.\"starttime\",\n\"endtime\" = EXCLUDED.\"endtime\",\n\"modifieddate\" = EXCLUDED.\"modifieddate\"\nreturning \"shiftid\", \"name\", \"starttime\", \"endtime\", \"modifieddate\"")) .updateReturning(ShiftRow._rowParser.exactlyOne()) .runUnchecked(c) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRow.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRow.kt index 08cf88c646..d1fa355bf3 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRow.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRow.kt @@ -51,7 +51,7 @@ data class ShiftRow( ): ShiftRowUnsaved = ShiftRowUnsaved(name, starttime, endtime, shiftid, modifieddate) companion object { - val _rowParser: RowParser = RowParsers.of(ShiftId.dbType, Name.dbType, PgTypes.time, PgTypes.time, PgTypes.timestamp, { t0, t1, t2, t3, t4 -> ShiftRow(t0, t1, t2, t3, t4) }, { row -> arrayOf(row.shiftid, row.name, row.starttime, row.endtime, row.modifieddate) }) + val _rowParser: RowParser = RowParsers.of(ShiftId.pgType, Name.pgType, PgTypes.time, PgTypes.time, PgTypes.timestamp, { t0, t1, t2, t3, t4 -> ShiftRow(t0, t1, t2, t3, t4) }, { row -> arrayOf(row.shiftid, row.name, row.starttime, row.endtime, row.modifieddate) }) val pgText: PgText = PgText.from(_rowParser.underlying) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRowUnsaved.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRowUnsaved.kt index 2979b11755..6bfb9c6ded 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRowUnsaved.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRowUnsaved.kt @@ -35,13 +35,13 @@ data class ShiftRowUnsaved( companion object { val pgText: PgText = - PgText.instance({ row, sb -> Name.dbType.text().unsafeEncode(row.name, sb) + PgText.instance({ row, sb -> Name.pgType.text().unsafeEncode(row.name, sb) sb.append(PgText.DELIMETER) PgTypes.time.text().unsafeEncode(row.starttime, sb) sb.append(PgText.DELIMETER) PgTypes.time.text().unsafeEncode(row.endtime, sb) sb.append(PgText.DELIMETER) - Defaulted.pgText(ShiftId.dbType.text()).unsafeEncode(row.shiftid, sb) + Defaulted.pgText(ShiftId.pgType.text()).unsafeEncode(row.shiftid, sb) sb.append(PgText.DELIMETER) Defaulted.pgText(PgTypes.timestamp.text()).unsafeEncode(row.modifieddate, sb) }) } diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/vemployee/VemployeeViewFields.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/vemployee/VemployeeViewFields.kt index 7bcc6c5b29..30f7cfb3aa 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/vemployee/VemployeeViewFields.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/vemployee/VemployeeViewFields.kt @@ -9,6 +9,8 @@ import adventureworks.person.businessentity.BusinessentityId import adventureworks.public.Name import adventureworks.public.Phone import adventureworks.userdefined.FirstName +import adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import dev.typr.foundations.PgTypes import dev.typr.foundations.RowParser import dev.typr.foundations.data.Xml @@ -22,7 +24,7 @@ import dev.typr.foundations.kotlin.SqlExpr.Field import dev.typr.foundations.kotlin.TupleExpr18 import kotlin.collections.List -data class VemployeeViewFields(val _path: List) : TupleExpr18, RelationStructure, FieldsBase { +data class VemployeeViewFields(val _path: List) : TupleExpr18, RelationStructure, FieldsBase { override fun _1(): SqlExpr = businessentityid() override fun _10(): SqlExpr = emailaddress() @@ -47,9 +49,9 @@ data class VemployeeViewFields(val _path: List) : TupleExpr18 = firstname() - override fun _4(): SqlExpr = middlename() + override fun _4(): SqlExpr = middlename() - override fun _5(): SqlExpr = lastname() + override fun _5(): SqlExpr = lastname() override fun _6(): SqlExpr = suffix() @@ -67,35 +69,35 @@ data class VemployeeViewFields(val _path: List) : TupleExpr18 = Field(_path, "addressline2", VemployeeViewRow::addressline2, null, null, { row, value -> row.copy(addressline2 = value) }, PgTypes.text) - fun businessentityid(): Field = Field(_path, "businessentityid", VemployeeViewRow::businessentityid, null, null, { row, value -> row.copy(businessentityid = value) }, BusinessentityId.dbType) + fun businessentityid(): Field = Field(_path, "businessentityid", VemployeeViewRow::businessentityid, null, null, { row, value -> row.copy(businessentityid = value) }, BusinessentityId.pgType) fun city(): Field = Field(_path, "city", VemployeeViewRow::city, null, null, { row, value -> row.copy(city = value) }, PgTypes.text) override fun columns(): List> = listOf(this.businessentityid().underlying, this.title().underlying, this.firstname().underlying, this.middlename().underlying, this.lastname().underlying, this.suffix().underlying, this.jobtitle().underlying, this.phonenumber().underlying, this.phonenumbertype().underlying, this.emailaddress().underlying, this.emailpromotion().underlying, this.addressline1().underlying, this.addressline2().underlying, this.city().underlying, this.stateprovincename().underlying, this.postalcode().underlying, this.countryregionname().underlying, this.additionalcontactinfo().underlying) - fun countryregionname(): Field = Field(_path, "countryregionname", VemployeeViewRow::countryregionname, null, null, { row, value -> row.copy(countryregionname = value) }, Name.dbType) + fun countryregionname(): Field = Field(_path, "countryregionname", VemployeeViewRow::countryregionname, null, null, { row, value -> row.copy(countryregionname = value) }, Name.pgType) fun emailaddress(): Field = Field(_path, "emailaddress", VemployeeViewRow::emailaddress, null, null, { row, value -> row.copy(emailaddress = value) }, PgTypes.text) fun emailpromotion(): Field = Field(_path, "emailpromotion", VemployeeViewRow::emailpromotion, null, null, { row, value -> row.copy(emailpromotion = value) }, KotlinDbTypes.PgTypes.int4) - fun firstname(): Field = Field(_path, "firstname", VemployeeViewRow::firstname, null, null, { row, value -> row.copy(firstname = value) }, FirstName.dbType) + fun firstname(): Field = Field(_path, "firstname", VemployeeViewRow::firstname, null, null, { row, value -> row.copy(firstname = value) }, FirstName.pgType) fun jobtitle(): Field = Field(_path, "jobtitle", VemployeeViewRow::jobtitle, null, null, { row, value -> row.copy(jobtitle = value) }, PgTypes.text) - fun lastname(): Field = Field(_path, "lastname", VemployeeViewRow::lastname, null, null, { row, value -> row.copy(lastname = value) }, Name.dbType) + fun lastname(): Field = Field(_path, "lastname", VemployeeViewRow::lastname, null, null, { row, value -> row.copy(lastname = value) }, LastName.pgType) - fun middlename(): Field = Field(_path, "middlename", VemployeeViewRow::middlename, null, null, { row, value -> row.copy(middlename = value) }, Name.dbType) + fun middlename(): Field = Field(_path, "middlename", VemployeeViewRow::middlename, null, null, { row, value -> row.copy(middlename = value) }, MiddleName.pgType) - fun phonenumber(): Field = Field(_path, "phonenumber", VemployeeViewRow::phonenumber, null, null, { row, value -> row.copy(phonenumber = value) }, Phone.dbType) + fun phonenumber(): Field = Field(_path, "phonenumber", VemployeeViewRow::phonenumber, null, null, { row, value -> row.copy(phonenumber = value) }, Phone.pgType) - fun phonenumbertype(): Field = Field(_path, "phonenumbertype", VemployeeViewRow::phonenumbertype, null, null, { row, value -> row.copy(phonenumbertype = value) }, Name.dbType) + fun phonenumbertype(): Field = Field(_path, "phonenumbertype", VemployeeViewRow::phonenumbertype, null, null, { row, value -> row.copy(phonenumbertype = value) }, Name.pgType) fun postalcode(): Field = Field(_path, "postalcode", VemployeeViewRow::postalcode, null, null, { row, value -> row.copy(postalcode = value) }, PgTypes.text) override fun rowParser(): RowParser = VemployeeViewRow._rowParser.underlying - fun stateprovincename(): Field = Field(_path, "stateprovincename", VemployeeViewRow::stateprovincename, null, null, { row, value -> row.copy(stateprovincename = value) }, Name.dbType) + fun stateprovincename(): Field = Field(_path, "stateprovincename", VemployeeViewRow::stateprovincename, null, null, { row, value -> row.copy(stateprovincename = value) }, Name.pgType) fun suffix(): Field = Field(_path, "suffix", VemployeeViewRow::suffix, null, null, { row, value -> row.copy(suffix = value) }, PgTypes.text) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/vemployee/VemployeeViewRow.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/vemployee/VemployeeViewRow.kt index 4f3bfcbe09..05e1dd68de 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/vemployee/VemployeeViewRow.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/humanresources/vemployee/VemployeeViewRow.kt @@ -9,6 +9,8 @@ import adventureworks.person.businessentity.BusinessentityId import adventureworks.public.Name import adventureworks.public.Phone import adventureworks.userdefined.FirstName +import adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import dev.typr.foundations.PgTypes import dev.typr.foundations.Tuple.Tuple18 import dev.typr.foundations.data.Xml @@ -25,9 +27,9 @@ data class VemployeeViewRow( /** Points to [adventureworks.person.person.PersonRow.firstname] */ val firstname: /* user-picked */ FirstName, /** Points to [adventureworks.person.person.PersonRow.middlename] */ - val middlename: Name, + val middlename: /* user-picked */ MiddleName, /** Points to [adventureworks.person.person.PersonRow.lastname] */ - val lastname: Name, + val lastname: /* user-picked */ LastName, /** Points to [adventureworks.person.person.PersonRow.suffix] */ val suffix: String, /** Points to [adventureworks.humanresources.employee.EmployeeRow.jobtitle] */ @@ -54,7 +56,7 @@ data class VemployeeViewRow( val countryregionname: Name, /** Points to [adventureworks.person.person.PersonRow.additionalcontactinfo] */ val additionalcontactinfo: Xml -) : Tuple18 { +) : Tuple18 { override fun _1(): BusinessentityId = businessentityid override fun _10(): String = emailaddress @@ -79,9 +81,9 @@ data class VemployeeViewRow( override fun _3(): /* user-picked */ FirstName = firstname - override fun _4(): Name = middlename + override fun _4(): /* user-picked */ MiddleName = middlename - override fun _5(): Name = lastname + override fun _5(): /* user-picked */ LastName = lastname override fun _6(): String = suffix @@ -92,6 +94,6 @@ data class VemployeeViewRow( override fun _9(): Name = phonenumbertype companion object { - val _rowParser: RowParser = RowParsers.of(BusinessentityId.dbType, PgTypes.text, FirstName.dbType, Name.dbType, Name.dbType, PgTypes.text, PgTypes.text, Phone.dbType, Name.dbType, PgTypes.text, KotlinDbTypes.PgTypes.int4, PgTypes.text, PgTypes.text, PgTypes.text, Name.dbType, PgTypes.text, Name.dbType, PgTypes.xml, { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17 -> VemployeeViewRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17) }, { row -> arrayOf(row.businessentityid, row.title, row.firstname, row.middlename, row.lastname, row.suffix, row.jobtitle, row.phonenumber, row.phonenumbertype, row.emailaddress, row.emailpromotion, row.addressline1, row.addressline2, row.city, row.stateprovincename, row.postalcode, row.countryregionname, row.additionalcontactinfo) }) + val _rowParser: RowParser = RowParsers.of(BusinessentityId.pgType, PgTypes.text, FirstName.pgType, MiddleName.pgType, LastName.pgType, PgTypes.text, PgTypes.text, Phone.pgType, Name.pgType, PgTypes.text, KotlinDbTypes.PgTypes.int4, PgTypes.text, PgTypes.text, PgTypes.text, Name.pgType, PgTypes.text, Name.pgType, PgTypes.xml, { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17 -> VemployeeViewRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17) }, { row -> arrayOf(row.businessentityid, row.title, row.firstname, row.middlename, row.lastname, row.suffix, row.jobtitle, row.phonenumber, row.phonenumbertype, row.emailaddress, row.emailpromotion, row.addressline1, row.addressline2, row.city, row.stateprovincename, row.postalcode, row.countryregionname, row.additionalcontactinfo) }) } } \ No newline at end of file diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/information_schema/CardinalNumber.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/information_schema/CardinalNumber.kt index 35da95adb0..0d7bc2c24e 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/information_schema/CardinalNumber.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/information_schema/CardinalNumber.kt @@ -20,10 +20,10 @@ data class CardinalNumber(@field:JsonValue val value: Int) { val bijection: Bijection = Bijection.of(CardinalNumber::value, ::CardinalNumber) - val dbType: PgType = + val pgType: PgType = KotlinDbTypes.PgTypes.int4.bimap(::CardinalNumber, CardinalNumber::value).renamed("\"information_schema\".\"cardinal_number\"") - val dbTypeArray: PgType> = + val pgTypeArray: PgType> = PgTypes.int4Array.bimap({ xs -> arrayMap.map(xs, ::CardinalNumber, CardinalNumber::class.java) }, { xs -> arrayMap.map(xs, CardinalNumber::value, Int::class.javaObjectType) }).renamed("\"information_schema\".\"cardinal_number\"[]") } } \ No newline at end of file diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/information_schema/CharacterData.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/information_schema/CharacterData.kt index 4ab7fdabeb..a5fe339955 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/information_schema/CharacterData.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/information_schema/CharacterData.kt @@ -19,10 +19,10 @@ data class CharacterData(@field:JsonValue val value: String) { val bijection: Bijection = Bijection.of(CharacterData::value, ::CharacterData) - val dbType: PgType = + val pgType: PgType = PgTypes.text.bimap(::CharacterData, CharacterData::value).renamed("\"information_schema\".\"character_data\"") - val dbTypeArray: PgType> = + val pgTypeArray: PgType> = PgTypes.textArray.bimap({ xs -> arrayMap.map(xs, ::CharacterData, CharacterData::class.java) }, { xs -> arrayMap.map(xs, CharacterData::value, String::class.java) }).renamed("\"information_schema\".\"character_data\"[]") } } \ No newline at end of file diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/information_schema/SqlIdentifier.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/information_schema/SqlIdentifier.kt index eb84d94e2e..caa34043f4 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/information_schema/SqlIdentifier.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/information_schema/SqlIdentifier.kt @@ -19,10 +19,10 @@ data class SqlIdentifier(@field:JsonValue val value: String) { val bijection: Bijection = Bijection.of(SqlIdentifier::value, ::SqlIdentifier) - val dbType: PgType = + val pgType: PgType = PgTypes.name.bimap(::SqlIdentifier, SqlIdentifier::value).renamed("\"information_schema\".\"sql_identifier\"") - val dbTypeArray: PgType> = + val pgTypeArray: PgType> = PgTypes.nameArray.bimap({ xs -> arrayMap.map(xs, ::SqlIdentifier, SqlIdentifier::class.java) }, { xs -> arrayMap.map(xs, SqlIdentifier::value, String::class.java) }).renamed("\"information_schema\".\"sql_identifier\"[]") } } \ No newline at end of file diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/information_schema/TimeStamp.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/information_schema/TimeStamp.kt index 16cc3942c1..bbb77d6150 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/information_schema/TimeStamp.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/information_schema/TimeStamp.kt @@ -20,10 +20,10 @@ data class TimeStamp(@field:JsonValue val value: Instant) { val bijection: Bijection = Bijection.of(TimeStamp::value, ::TimeStamp) - val dbType: PgType = + val pgType: PgType = PgTypes.timestamptz.bimap(::TimeStamp, TimeStamp::value).renamed("\"information_schema\".\"time_stamp\"") - val dbTypeArray: PgType> = + val pgTypeArray: PgType> = PgTypes.timestamptzArray.bimap({ xs -> arrayMap.map(xs, ::TimeStamp, TimeStamp::class.java) }, { xs -> arrayMap.map(xs, TimeStamp::value, Instant::class.java) }).renamed("\"information_schema\".\"time_stamp\"[]") } } \ No newline at end of file diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/information_schema/YesOrNo.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/information_schema/YesOrNo.kt index aa97b4bc85..44c6b8f106 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/information_schema/YesOrNo.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/information_schema/YesOrNo.kt @@ -19,10 +19,10 @@ data class YesOrNo(@field:JsonValue val value: String) { val bijection: Bijection = Bijection.of(YesOrNo::value, ::YesOrNo) - val dbType: PgType = + val pgType: PgType = PgTypes.text.bimap(::YesOrNo, YesOrNo::value).renamed("\"information_schema\".\"yes_or_no\"") - val dbTypeArray: PgType> = + val pgTypeArray: PgType> = PgTypes.textArray.bimap({ xs -> arrayMap.map(xs, ::YesOrNo, YesOrNo::class.java) }, { xs -> arrayMap.map(xs, YesOrNo::value, String::class.java) }).renamed("\"information_schema\".\"yes_or_no\"[]") } } \ No newline at end of file diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/address/AddressFields.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/address/AddressFields.kt index 8fa787935f..eaf9a1558f 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/address/AddressFields.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/address/AddressFields.kt @@ -45,7 +45,7 @@ data class AddressFields(val _path: List) : TupleExpr9 = _path - fun addressid(): IdField = IdField(_path, "addressid", AddressRow::addressid, null, "int4", { row, value -> row.copy(addressid = value) }, AddressId.dbType) + fun addressid(): IdField = IdField(_path, "addressid", AddressRow::addressid, null, "int4", { row, value -> row.copy(addressid = value) }, AddressId.pgType) fun addressline1(): Field = Field(_path, "addressline1", AddressRow::addressline1, null, null, { row, value -> row.copy(addressline1 = value) }, PgTypes.text) @@ -67,7 +67,7 @@ data class AddressFields(val _path: List) : TupleExpr9 = OptField(_path, "spatiallocation", AddressRow::spatiallocation, null, "bytea", { row, value -> row.copy(spatiallocation = value) }, PgTypes.bytea) - fun stateprovinceid(): Field = Field(_path, "stateprovinceid", AddressRow::stateprovinceid, null, "int4", { row, value -> row.copy(stateprovinceid = value) }, StateprovinceId.dbType) + fun stateprovinceid(): Field = Field(_path, "stateprovinceid", AddressRow::stateprovinceid, null, "int4", { row, value -> row.copy(stateprovinceid = value) }, StateprovinceId.pgType) override fun withPaths(_path: List): RelationStructure = AddressFields(_path) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/address/AddressId.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/address/AddressId.kt index 9534f4b204..f723cf3056 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/address/AddressId.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/address/AddressId.kt @@ -22,10 +22,10 @@ data class AddressId(@field:JsonValue val value: Int) { val bijection: Bijection = Bijection.of(AddressId::value, ::AddressId) - val dbType: PgType = + val pgType: PgType = KotlinDbTypes.PgTypes.int4.bimap(::AddressId, AddressId::value) - val dbTypeArray: PgType> = + val pgTypeArray: PgType> = PgTypes.int4Array.bimap({ xs -> arrayMap.map(xs, ::AddressId, AddressId::class.java) }, { xs -> arrayMap.map(xs, AddressId::value, Int::class.javaObjectType) }) } } \ No newline at end of file diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/address/AddressRepoImpl.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/address/AddressRepoImpl.kt index 2642b4dd50..b4d4f31a70 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/address/AddressRepoImpl.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/address/AddressRepoImpl.kt @@ -27,19 +27,19 @@ class AddressRepoImpl() : AddressRepo { override fun deleteById( addressid: AddressId, c: Connection - ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"person\".\"address\" where \"addressid\" = "), Fragment.encode(AddressId.dbType, addressid), Fragment.lit("")).update().runUnchecked(c) > 0 + ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"person\".\"address\" where \"addressid\" = "), Fragment.encode(AddressId.pgType, addressid), Fragment.lit("")).update().runUnchecked(c) > 0 override fun deleteByIds( addressids: Array, c: Connection - ): Int = Fragment.interpolate(Fragment.lit("delete\nfrom \"person\".\"address\"\nwhere \"addressid\" = ANY("), Fragment.encode(AddressId.dbTypeArray, addressids), Fragment.lit(")")) + ): Int = Fragment.interpolate(Fragment.lit("delete\nfrom \"person\".\"address\"\nwhere \"addressid\" = ANY("), Fragment.encode(AddressId.pgTypeArray, addressids), Fragment.lit(")")) .update() .runUnchecked(c) override fun insert( unsaved: AddressRow, c: Connection - ): AddressRow = Fragment.interpolate(Fragment.lit("insert into \"person\".\"address\"(\"addressid\", \"addressline1\", \"addressline2\", \"city\", \"stateprovinceid\", \"postalcode\", \"spatiallocation\", \"rowguid\", \"modifieddate\")\nvalues ("), Fragment.encode(AddressId.dbType, unsaved.addressid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.text, unsaved.addressline1), Fragment.lit(", "), Fragment.encode(PgTypes.text.nullable(), unsaved.addressline2), Fragment.lit(", "), Fragment.encode(PgTypes.text, unsaved.city), Fragment.lit(", "), Fragment.encode(StateprovinceId.dbType, unsaved.stateprovinceid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.text, unsaved.postalcode), Fragment.lit(", "), Fragment.encode(PgTypes.bytea.nullable(), unsaved.spatiallocation), Fragment.lit("::bytea, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\nRETURNING \"addressid\", \"addressline1\", \"addressline2\", \"city\", \"stateprovinceid\", \"postalcode\", \"spatiallocation\", \"rowguid\", \"modifieddate\"\n")) + ): AddressRow = Fragment.interpolate(Fragment.lit("insert into \"person\".\"address\"(\"addressid\", \"addressline1\", \"addressline2\", \"city\", \"stateprovinceid\", \"postalcode\", \"spatiallocation\", \"rowguid\", \"modifieddate\")\nvalues ("), Fragment.encode(AddressId.pgType, unsaved.addressid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.text, unsaved.addressline1), Fragment.lit(", "), Fragment.encode(PgTypes.text.nullable(), unsaved.addressline2), Fragment.lit(", "), Fragment.encode(PgTypes.text, unsaved.city), Fragment.lit(", "), Fragment.encode(StateprovinceId.pgType, unsaved.stateprovinceid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.text, unsaved.postalcode), Fragment.lit(", "), Fragment.encode(PgTypes.bytea.nullable(), unsaved.spatiallocation), Fragment.lit("::bytea, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\nRETURNING \"addressid\", \"addressline1\", \"addressline2\", \"city\", \"stateprovinceid\", \"postalcode\", \"spatiallocation\", \"rowguid\", \"modifieddate\"\n")) .updateReturning(AddressRow._rowParser.exactlyOne()).runUnchecked(c) override fun insert( @@ -55,7 +55,7 @@ class AddressRepoImpl() : AddressRepo { columns.add(Fragment.lit("\"city\"")) values.add(Fragment.interpolate(Fragment.encode(PgTypes.text, unsaved.city), Fragment.lit(""))) columns.add(Fragment.lit("\"stateprovinceid\"")) - values.add(Fragment.interpolate(Fragment.encode(StateprovinceId.dbType, unsaved.stateprovinceid), Fragment.lit("::int4"))) + values.add(Fragment.interpolate(Fragment.encode(StateprovinceId.pgType, unsaved.stateprovinceid), Fragment.lit("::int4"))) columns.add(Fragment.lit("\"postalcode\"")) values.add(Fragment.interpolate(Fragment.encode(PgTypes.text, unsaved.postalcode), Fragment.lit(""))) columns.add(Fragment.lit("\"spatiallocation\"")) @@ -63,7 +63,7 @@ class AddressRepoImpl() : AddressRepo { unsaved.addressid.visit( { }, { value -> columns.add(Fragment.lit("\"addressid\"")) - values.add(Fragment.interpolate(Fragment.encode(AddressId.dbType, value), Fragment.lit("::int4"))) } + values.add(Fragment.interpolate(Fragment.encode(AddressId.pgType, value), Fragment.lit("::int4"))) } ); unsaved.rowguid.visit( { }, @@ -99,12 +99,12 @@ class AddressRepoImpl() : AddressRepo { override fun selectById( addressid: AddressId, c: Connection - ): AddressRow? = Fragment.interpolate(Fragment.lit("select \"addressid\", \"addressline1\", \"addressline2\", \"city\", \"stateprovinceid\", \"postalcode\", \"spatiallocation\", \"rowguid\", \"modifieddate\"\nfrom \"person\".\"address\"\nwhere \"addressid\" = "), Fragment.encode(AddressId.dbType, addressid), Fragment.lit("")).query(AddressRow._rowParser.first()).runUnchecked(c) + ): AddressRow? = Fragment.interpolate(Fragment.lit("select \"addressid\", \"addressline1\", \"addressline2\", \"city\", \"stateprovinceid\", \"postalcode\", \"spatiallocation\", \"rowguid\", \"modifieddate\"\nfrom \"person\".\"address\"\nwhere \"addressid\" = "), Fragment.encode(AddressId.pgType, addressid), Fragment.lit("")).query(AddressRow._rowParser.first()).runUnchecked(c) override fun selectByIds( addressids: Array, c: Connection - ): List = Fragment.interpolate(Fragment.lit("select \"addressid\", \"addressline1\", \"addressline2\", \"city\", \"stateprovinceid\", \"postalcode\", \"spatiallocation\", \"rowguid\", \"modifieddate\"\nfrom \"person\".\"address\"\nwhere \"addressid\" = ANY("), Fragment.encode(AddressId.dbTypeArray, addressids), Fragment.lit(")")).query(AddressRow._rowParser.all()).runUnchecked(c) + ): List = Fragment.interpolate(Fragment.lit("select \"addressid\", \"addressline1\", \"addressline2\", \"city\", \"stateprovinceid\", \"postalcode\", \"spatiallocation\", \"rowguid\", \"modifieddate\"\nfrom \"person\".\"address\"\nwhere \"addressid\" = ANY("), Fragment.encode(AddressId.pgTypeArray, addressids), Fragment.lit(")")).query(AddressRow._rowParser.all()).runUnchecked(c) override fun selectByIdsTracked( addressids: Array, @@ -122,13 +122,13 @@ class AddressRepoImpl() : AddressRepo { c: Connection ): Boolean { val addressid: AddressId = row.addressid - return Fragment.interpolate(Fragment.lit("update \"person\".\"address\"\nset \"addressline1\" = "), Fragment.encode(PgTypes.text, row.addressline1), Fragment.lit(",\n\"addressline2\" = "), Fragment.encode(PgTypes.text.nullable(), row.addressline2), Fragment.lit(",\n\"city\" = "), Fragment.encode(PgTypes.text, row.city), Fragment.lit(",\n\"stateprovinceid\" = "), Fragment.encode(StateprovinceId.dbType, row.stateprovinceid), Fragment.lit("::int4,\n\"postalcode\" = "), Fragment.encode(PgTypes.text, row.postalcode), Fragment.lit(",\n\"spatiallocation\" = "), Fragment.encode(PgTypes.bytea.nullable(), row.spatiallocation), Fragment.lit("::bytea,\n\"rowguid\" = "), Fragment.encode(PgTypes.uuid, row.rowguid), Fragment.lit("::uuid,\n\"modifieddate\" = "), Fragment.encode(PgTypes.timestamp, row.modifieddate), Fragment.lit("::timestamp\nwhere \"addressid\" = "), Fragment.encode(AddressId.dbType, addressid), Fragment.lit("")).update().runUnchecked(c) > 0 + return Fragment.interpolate(Fragment.lit("update \"person\".\"address\"\nset \"addressline1\" = "), Fragment.encode(PgTypes.text, row.addressline1), Fragment.lit(",\n\"addressline2\" = "), Fragment.encode(PgTypes.text.nullable(), row.addressline2), Fragment.lit(",\n\"city\" = "), Fragment.encode(PgTypes.text, row.city), Fragment.lit(",\n\"stateprovinceid\" = "), Fragment.encode(StateprovinceId.pgType, row.stateprovinceid), Fragment.lit("::int4,\n\"postalcode\" = "), Fragment.encode(PgTypes.text, row.postalcode), Fragment.lit(",\n\"spatiallocation\" = "), Fragment.encode(PgTypes.bytea.nullable(), row.spatiallocation), Fragment.lit("::bytea,\n\"rowguid\" = "), Fragment.encode(PgTypes.uuid, row.rowguid), Fragment.lit("::uuid,\n\"modifieddate\" = "), Fragment.encode(PgTypes.timestamp, row.modifieddate), Fragment.lit("::timestamp\nwhere \"addressid\" = "), Fragment.encode(AddressId.pgType, addressid), Fragment.lit("")).update().runUnchecked(c) > 0 } override fun upsert( unsaved: AddressRow, c: Connection - ): AddressRow = Fragment.interpolate(Fragment.lit("insert into \"person\".\"address\"(\"addressid\", \"addressline1\", \"addressline2\", \"city\", \"stateprovinceid\", \"postalcode\", \"spatiallocation\", \"rowguid\", \"modifieddate\")\nvalues ("), Fragment.encode(AddressId.dbType, unsaved.addressid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.text, unsaved.addressline1), Fragment.lit(", "), Fragment.encode(PgTypes.text.nullable(), unsaved.addressline2), Fragment.lit(", "), Fragment.encode(PgTypes.text, unsaved.city), Fragment.lit(", "), Fragment.encode(StateprovinceId.dbType, unsaved.stateprovinceid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.text, unsaved.postalcode), Fragment.lit(", "), Fragment.encode(PgTypes.bytea.nullable(), unsaved.spatiallocation), Fragment.lit("::bytea, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\non conflict (\"addressid\")\ndo update set\n \"addressline1\" = EXCLUDED.\"addressline1\",\n\"addressline2\" = EXCLUDED.\"addressline2\",\n\"city\" = EXCLUDED.\"city\",\n\"stateprovinceid\" = EXCLUDED.\"stateprovinceid\",\n\"postalcode\" = EXCLUDED.\"postalcode\",\n\"spatiallocation\" = EXCLUDED.\"spatiallocation\",\n\"rowguid\" = EXCLUDED.\"rowguid\",\n\"modifieddate\" = EXCLUDED.\"modifieddate\"\nreturning \"addressid\", \"addressline1\", \"addressline2\", \"city\", \"stateprovinceid\", \"postalcode\", \"spatiallocation\", \"rowguid\", \"modifieddate\"")) + ): AddressRow = Fragment.interpolate(Fragment.lit("insert into \"person\".\"address\"(\"addressid\", \"addressline1\", \"addressline2\", \"city\", \"stateprovinceid\", \"postalcode\", \"spatiallocation\", \"rowguid\", \"modifieddate\")\nvalues ("), Fragment.encode(AddressId.pgType, unsaved.addressid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.text, unsaved.addressline1), Fragment.lit(", "), Fragment.encode(PgTypes.text.nullable(), unsaved.addressline2), Fragment.lit(", "), Fragment.encode(PgTypes.text, unsaved.city), Fragment.lit(", "), Fragment.encode(StateprovinceId.pgType, unsaved.stateprovinceid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.text, unsaved.postalcode), Fragment.lit(", "), Fragment.encode(PgTypes.bytea.nullable(), unsaved.spatiallocation), Fragment.lit("::bytea, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\non conflict (\"addressid\")\ndo update set\n \"addressline1\" = EXCLUDED.\"addressline1\",\n\"addressline2\" = EXCLUDED.\"addressline2\",\n\"city\" = EXCLUDED.\"city\",\n\"stateprovinceid\" = EXCLUDED.\"stateprovinceid\",\n\"postalcode\" = EXCLUDED.\"postalcode\",\n\"spatiallocation\" = EXCLUDED.\"spatiallocation\",\n\"rowguid\" = EXCLUDED.\"rowguid\",\n\"modifieddate\" = EXCLUDED.\"modifieddate\"\nreturning \"addressid\", \"addressline1\", \"addressline2\", \"city\", \"stateprovinceid\", \"postalcode\", \"spatiallocation\", \"rowguid\", \"modifieddate\"")) .updateReturning(AddressRow._rowParser.exactlyOne()) .runUnchecked(c) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/address/AddressRow.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/address/AddressRow.kt index 6d63208d91..91ddc3378b 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/address/AddressRow.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/address/AddressRow.kt @@ -71,7 +71,7 @@ data class AddressRow( ): AddressRowUnsaved = AddressRowUnsaved(addressline1, addressline2, city, stateprovinceid, postalcode, spatiallocation, addressid, rowguid, modifieddate) companion object { - val _rowParser: RowParser = RowParsers.of(AddressId.dbType, PgTypes.text, PgTypes.text.nullable(), PgTypes.text, StateprovinceId.dbType, PgTypes.text, PgTypes.bytea.nullable(), PgTypes.uuid, PgTypes.timestamp, { t0, t1, t2, t3, t4, t5, t6, t7, t8 -> AddressRow(t0, t1, t2, t3, t4, t5, t6, t7, t8) }, { row -> arrayOf(row.addressid, row.addressline1, row.addressline2, row.city, row.stateprovinceid, row.postalcode, row.spatiallocation, row.rowguid, row.modifieddate) }) + val _rowParser: RowParser = RowParsers.of(AddressId.pgType, PgTypes.text, PgTypes.text.nullable(), PgTypes.text, StateprovinceId.pgType, PgTypes.text, PgTypes.bytea.nullable(), PgTypes.uuid, PgTypes.timestamp, { t0, t1, t2, t3, t4, t5, t6, t7, t8 -> AddressRow(t0, t1, t2, t3, t4, t5, t6, t7, t8) }, { row -> arrayOf(row.addressid, row.addressline1, row.addressline2, row.city, row.stateprovinceid, row.postalcode, row.spatiallocation, row.rowguid, row.modifieddate) }) val pgText: PgText = PgText.from(_rowParser.underlying) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/address/AddressRowUnsaved.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/address/AddressRowUnsaved.kt index 0c2b77d9ab..5672919e5e 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/address/AddressRowUnsaved.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/address/AddressRowUnsaved.kt @@ -53,13 +53,13 @@ data class AddressRowUnsaved( sb.append(PgText.DELIMETER) PgTypes.text.text().unsafeEncode(row.city, sb) sb.append(PgText.DELIMETER) - StateprovinceId.dbType.text().unsafeEncode(row.stateprovinceid, sb) + StateprovinceId.pgType.text().unsafeEncode(row.stateprovinceid, sb) sb.append(PgText.DELIMETER) PgTypes.text.text().unsafeEncode(row.postalcode, sb) sb.append(PgText.DELIMETER) PgTypes.bytea.nullable().text().unsafeEncode(row.spatiallocation, sb) sb.append(PgText.DELIMETER) - Defaulted.pgText(AddressId.dbType.text()).unsafeEncode(row.addressid, sb) + Defaulted.pgText(AddressId.pgType.text()).unsafeEncode(row.addressid, sb) sb.append(PgText.DELIMETER) Defaulted.pgText(PgTypes.uuid.text()).unsafeEncode(row.rowguid, sb) sb.append(PgText.DELIMETER) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeFields.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeFields.kt index 5acba9c238..de9d18980b 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeFields.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeFields.kt @@ -31,13 +31,13 @@ data class AddresstypeFields(val _path: List) : TupleExpr4 = _path - fun addresstypeid(): IdField = IdField(_path, "addresstypeid", AddresstypeRow::addresstypeid, null, "int4", { row, value -> row.copy(addresstypeid = value) }, AddresstypeId.dbType) + fun addresstypeid(): IdField = IdField(_path, "addresstypeid", AddresstypeRow::addresstypeid, null, "int4", { row, value -> row.copy(addresstypeid = value) }, AddresstypeId.pgType) override fun columns(): List> = listOf(this.addresstypeid().underlying, this.name().underlying, this.rowguid().underlying, this.modifieddate().underlying) fun modifieddate(): Field = Field(_path, "modifieddate", AddresstypeRow::modifieddate, null, "timestamp", { row, value -> row.copy(modifieddate = value) }, PgTypes.timestamp) - fun name(): Field = Field(_path, "name", AddresstypeRow::name, null, "varchar", { row, value -> row.copy(name = value) }, Name.dbType) + fun name(): Field = Field(_path, "name", AddresstypeRow::name, null, "varchar", { row, value -> row.copy(name = value) }, Name.pgType) override fun rowParser(): RowParser = AddresstypeRow._rowParser.underlying diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeId.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeId.kt index cca24d1ab7..b855b7fa11 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeId.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeId.kt @@ -22,10 +22,10 @@ data class AddresstypeId(@field:JsonValue val value: Int) { val bijection: Bijection = Bijection.of(AddresstypeId::value, ::AddresstypeId) - val dbType: PgType = + val pgType: PgType = KotlinDbTypes.PgTypes.int4.bimap(::AddresstypeId, AddresstypeId::value) - val dbTypeArray: PgType> = + val pgTypeArray: PgType> = PgTypes.int4Array.bimap({ xs -> arrayMap.map(xs, ::AddresstypeId, AddresstypeId::class.java) }, { xs -> arrayMap.map(xs, AddresstypeId::value, Int::class.javaObjectType) }) } } \ No newline at end of file diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRepoImpl.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRepoImpl.kt index 55ad674266..f91634aed5 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRepoImpl.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRepoImpl.kt @@ -26,19 +26,19 @@ class AddresstypeRepoImpl() : AddresstypeRepo { override fun deleteById( addresstypeid: AddresstypeId, c: Connection - ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"person\".\"addresstype\" where \"addresstypeid\" = "), Fragment.encode(AddresstypeId.dbType, addresstypeid), Fragment.lit("")).update().runUnchecked(c) > 0 + ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"person\".\"addresstype\" where \"addresstypeid\" = "), Fragment.encode(AddresstypeId.pgType, addresstypeid), Fragment.lit("")).update().runUnchecked(c) > 0 override fun deleteByIds( addresstypeids: Array, c: Connection - ): Int = Fragment.interpolate(Fragment.lit("delete\nfrom \"person\".\"addresstype\"\nwhere \"addresstypeid\" = ANY("), Fragment.encode(AddresstypeId.dbTypeArray, addresstypeids), Fragment.lit(")")) + ): Int = Fragment.interpolate(Fragment.lit("delete\nfrom \"person\".\"addresstype\"\nwhere \"addresstypeid\" = ANY("), Fragment.encode(AddresstypeId.pgTypeArray, addresstypeids), Fragment.lit(")")) .update() .runUnchecked(c) override fun insert( unsaved: AddresstypeRow, c: Connection - ): AddresstypeRow = Fragment.interpolate(Fragment.lit("insert into \"person\".\"addresstype\"(\"addresstypeid\", \"name\", \"rowguid\", \"modifieddate\")\nvalues ("), Fragment.encode(AddresstypeId.dbType, unsaved.addresstypeid), Fragment.lit("::int4, "), Fragment.encode(Name.dbType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\nRETURNING \"addresstypeid\", \"name\", \"rowguid\", \"modifieddate\"\n")) + ): AddresstypeRow = Fragment.interpolate(Fragment.lit("insert into \"person\".\"addresstype\"(\"addresstypeid\", \"name\", \"rowguid\", \"modifieddate\")\nvalues ("), Fragment.encode(AddresstypeId.pgType, unsaved.addresstypeid), Fragment.lit("::int4, "), Fragment.encode(Name.pgType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\nRETURNING \"addresstypeid\", \"name\", \"rowguid\", \"modifieddate\"\n")) .updateReturning(AddresstypeRow._rowParser.exactlyOne()).runUnchecked(c) override fun insert( @@ -48,11 +48,11 @@ class AddresstypeRepoImpl() : AddresstypeRepo { val columns: ArrayList = ArrayList() val values: ArrayList = ArrayList() columns.add(Fragment.lit("\"name\"")) - values.add(Fragment.interpolate(Fragment.encode(Name.dbType, unsaved.name), Fragment.lit("::varchar"))) + values.add(Fragment.interpolate(Fragment.encode(Name.pgType, unsaved.name), Fragment.lit("::varchar"))) unsaved.addresstypeid.visit( { }, { value -> columns.add(Fragment.lit("\"addresstypeid\"")) - values.add(Fragment.interpolate(Fragment.encode(AddresstypeId.dbType, value), Fragment.lit("::int4"))) } + values.add(Fragment.interpolate(Fragment.encode(AddresstypeId.pgType, value), Fragment.lit("::int4"))) } ); unsaved.rowguid.visit( { }, @@ -88,12 +88,12 @@ class AddresstypeRepoImpl() : AddresstypeRepo { override fun selectById( addresstypeid: AddresstypeId, c: Connection - ): AddresstypeRow? = Fragment.interpolate(Fragment.lit("select \"addresstypeid\", \"name\", \"rowguid\", \"modifieddate\"\nfrom \"person\".\"addresstype\"\nwhere \"addresstypeid\" = "), Fragment.encode(AddresstypeId.dbType, addresstypeid), Fragment.lit("")).query(AddresstypeRow._rowParser.first()).runUnchecked(c) + ): AddresstypeRow? = Fragment.interpolate(Fragment.lit("select \"addresstypeid\", \"name\", \"rowguid\", \"modifieddate\"\nfrom \"person\".\"addresstype\"\nwhere \"addresstypeid\" = "), Fragment.encode(AddresstypeId.pgType, addresstypeid), Fragment.lit("")).query(AddresstypeRow._rowParser.first()).runUnchecked(c) override fun selectByIds( addresstypeids: Array, c: Connection - ): List = Fragment.interpolate(Fragment.lit("select \"addresstypeid\", \"name\", \"rowguid\", \"modifieddate\"\nfrom \"person\".\"addresstype\"\nwhere \"addresstypeid\" = ANY("), Fragment.encode(AddresstypeId.dbTypeArray, addresstypeids), Fragment.lit(")")).query(AddresstypeRow._rowParser.all()).runUnchecked(c) + ): List = Fragment.interpolate(Fragment.lit("select \"addresstypeid\", \"name\", \"rowguid\", \"modifieddate\"\nfrom \"person\".\"addresstype\"\nwhere \"addresstypeid\" = ANY("), Fragment.encode(AddresstypeId.pgTypeArray, addresstypeids), Fragment.lit(")")).query(AddresstypeRow._rowParser.all()).runUnchecked(c) override fun selectByIdsTracked( addresstypeids: Array, @@ -111,13 +111,13 @@ class AddresstypeRepoImpl() : AddresstypeRepo { c: Connection ): Boolean { val addresstypeid: AddresstypeId = row.addresstypeid - return Fragment.interpolate(Fragment.lit("update \"person\".\"addresstype\"\nset \"name\" = "), Fragment.encode(Name.dbType, row.name), Fragment.lit("::varchar,\n\"rowguid\" = "), Fragment.encode(PgTypes.uuid, row.rowguid), Fragment.lit("::uuid,\n\"modifieddate\" = "), Fragment.encode(PgTypes.timestamp, row.modifieddate), Fragment.lit("::timestamp\nwhere \"addresstypeid\" = "), Fragment.encode(AddresstypeId.dbType, addresstypeid), Fragment.lit("")).update().runUnchecked(c) > 0 + return Fragment.interpolate(Fragment.lit("update \"person\".\"addresstype\"\nset \"name\" = "), Fragment.encode(Name.pgType, row.name), Fragment.lit("::varchar,\n\"rowguid\" = "), Fragment.encode(PgTypes.uuid, row.rowguid), Fragment.lit("::uuid,\n\"modifieddate\" = "), Fragment.encode(PgTypes.timestamp, row.modifieddate), Fragment.lit("::timestamp\nwhere \"addresstypeid\" = "), Fragment.encode(AddresstypeId.pgType, addresstypeid), Fragment.lit("")).update().runUnchecked(c) > 0 } override fun upsert( unsaved: AddresstypeRow, c: Connection - ): AddresstypeRow = Fragment.interpolate(Fragment.lit("insert into \"person\".\"addresstype\"(\"addresstypeid\", \"name\", \"rowguid\", \"modifieddate\")\nvalues ("), Fragment.encode(AddresstypeId.dbType, unsaved.addresstypeid), Fragment.lit("::int4, "), Fragment.encode(Name.dbType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\non conflict (\"addresstypeid\")\ndo update set\n \"name\" = EXCLUDED.\"name\",\n\"rowguid\" = EXCLUDED.\"rowguid\",\n\"modifieddate\" = EXCLUDED.\"modifieddate\"\nreturning \"addresstypeid\", \"name\", \"rowguid\", \"modifieddate\"")) + ): AddresstypeRow = Fragment.interpolate(Fragment.lit("insert into \"person\".\"addresstype\"(\"addresstypeid\", \"name\", \"rowguid\", \"modifieddate\")\nvalues ("), Fragment.encode(AddresstypeId.pgType, unsaved.addresstypeid), Fragment.lit("::int4, "), Fragment.encode(Name.pgType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\non conflict (\"addresstypeid\")\ndo update set\n \"name\" = EXCLUDED.\"name\",\n\"rowguid\" = EXCLUDED.\"rowguid\",\n\"modifieddate\" = EXCLUDED.\"modifieddate\"\nreturning \"addresstypeid\", \"name\", \"rowguid\", \"modifieddate\"")) .updateReturning(AddresstypeRow._rowParser.exactlyOne()) .runUnchecked(c) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRow.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRow.kt index 95f770de46..8adbab2219 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRow.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRow.kt @@ -48,7 +48,7 @@ data class AddresstypeRow( ): AddresstypeRowUnsaved = AddresstypeRowUnsaved(name, addresstypeid, rowguid, modifieddate) companion object { - val _rowParser: RowParser = RowParsers.of(AddresstypeId.dbType, Name.dbType, PgTypes.uuid, PgTypes.timestamp, { t0, t1, t2, t3 -> AddresstypeRow(t0, t1, t2, t3) }, { row -> arrayOf(row.addresstypeid, row.name, row.rowguid, row.modifieddate) }) + val _rowParser: RowParser = RowParsers.of(AddresstypeId.pgType, Name.pgType, PgTypes.uuid, PgTypes.timestamp, { t0, t1, t2, t3 -> AddresstypeRow(t0, t1, t2, t3) }, { row -> arrayOf(row.addresstypeid, row.name, row.rowguid, row.modifieddate) }) val pgText: PgText = PgText.from(_rowParser.underlying) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRowUnsaved.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRowUnsaved.kt index b45898355b..c72e114e15 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRowUnsaved.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRowUnsaved.kt @@ -34,9 +34,9 @@ data class AddresstypeRowUnsaved( companion object { val pgText: PgText = - PgText.instance({ row, sb -> Name.dbType.text().unsafeEncode(row.name, sb) + PgText.instance({ row, sb -> Name.pgType.text().unsafeEncode(row.name, sb) sb.append(PgText.DELIMETER) - Defaulted.pgText(AddresstypeId.dbType.text()).unsafeEncode(row.addresstypeid, sb) + Defaulted.pgText(AddresstypeId.pgType.text()).unsafeEncode(row.addresstypeid, sb) sb.append(PgText.DELIMETER) Defaulted.pgText(PgTypes.uuid.text()).unsafeEncode(row.rowguid, sb) sb.append(PgText.DELIMETER) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityFields.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityFields.kt index 9bb6810557..417bcee04d 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityFields.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityFields.kt @@ -28,7 +28,7 @@ data class BusinessentityFields(val _path: List) : TupleExpr3 = _path - fun businessentityid(): IdField = IdField(_path, "businessentityid", BusinessentityRow::businessentityid, null, "int4", { row, value -> row.copy(businessentityid = value) }, BusinessentityId.dbType) + fun businessentityid(): IdField = IdField(_path, "businessentityid", BusinessentityRow::businessentityid, null, "int4", { row, value -> row.copy(businessentityid = value) }, BusinessentityId.pgType) override fun columns(): List> = listOf(this.businessentityid().underlying, this.rowguid().underlying, this.modifieddate().underlying) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityId.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityId.kt index d153db57d1..af34b1f8d5 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityId.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityId.kt @@ -22,10 +22,10 @@ data class BusinessentityId(@field:JsonValue val value: Int) { val bijection: Bijection = Bijection.of(BusinessentityId::value, ::BusinessentityId) - val dbType: PgType = + val pgType: PgType = KotlinDbTypes.PgTypes.int4.bimap(::BusinessentityId, BusinessentityId::value) - val dbTypeArray: PgType> = + val pgTypeArray: PgType> = PgTypes.int4Array.bimap({ xs -> arrayMap.map(xs, ::BusinessentityId, BusinessentityId::class.java) }, { xs -> arrayMap.map(xs, BusinessentityId::value, Int::class.javaObjectType) }) } } \ No newline at end of file diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRepoImpl.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRepoImpl.kt index b354d72a28..fec72fd787 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRepoImpl.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRepoImpl.kt @@ -25,19 +25,19 @@ class BusinessentityRepoImpl() : BusinessentityRepo { override fun deleteById( businessentityid: BusinessentityId, c: Connection - ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"person\".\"businessentity\" where \"businessentityid\" = "), Fragment.encode(BusinessentityId.dbType, businessentityid), Fragment.lit("")).update().runUnchecked(c) > 0 + ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"person\".\"businessentity\" where \"businessentityid\" = "), Fragment.encode(BusinessentityId.pgType, businessentityid), Fragment.lit("")).update().runUnchecked(c) > 0 override fun deleteByIds( businessentityids: Array, c: Connection - ): Int = Fragment.interpolate(Fragment.lit("delete\nfrom \"person\".\"businessentity\"\nwhere \"businessentityid\" = ANY("), Fragment.encode(BusinessentityId.dbTypeArray, businessentityids), Fragment.lit(")")) + ): Int = Fragment.interpolate(Fragment.lit("delete\nfrom \"person\".\"businessentity\"\nwhere \"businessentityid\" = ANY("), Fragment.encode(BusinessentityId.pgTypeArray, businessentityids), Fragment.lit(")")) .update() .runUnchecked(c) override fun insert( unsaved: BusinessentityRow, c: Connection - ): BusinessentityRow = Fragment.interpolate(Fragment.lit("insert into \"person\".\"businessentity\"(\"businessentityid\", \"rowguid\", \"modifieddate\")\nvalues ("), Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\nRETURNING \"businessentityid\", \"rowguid\", \"modifieddate\"\n")) + ): BusinessentityRow = Fragment.interpolate(Fragment.lit("insert into \"person\".\"businessentity\"(\"businessentityid\", \"rowguid\", \"modifieddate\")\nvalues ("), Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\nRETURNING \"businessentityid\", \"rowguid\", \"modifieddate\"\n")) .updateReturning(BusinessentityRow._rowParser.exactlyOne()).runUnchecked(c) override fun insert( @@ -49,7 +49,7 @@ class BusinessentityRepoImpl() : BusinessentityRepo { unsaved.businessentityid.visit( { }, { value -> columns.add(Fragment.lit("\"businessentityid\"")) - values.add(Fragment.interpolate(Fragment.encode(BusinessentityId.dbType, value), Fragment.lit("::int4"))) } + values.add(Fragment.interpolate(Fragment.encode(BusinessentityId.pgType, value), Fragment.lit("::int4"))) } ); unsaved.rowguid.visit( { }, @@ -85,12 +85,12 @@ class BusinessentityRepoImpl() : BusinessentityRepo { override fun selectById( businessentityid: BusinessentityId, c: Connection - ): BusinessentityRow? = Fragment.interpolate(Fragment.lit("select \"businessentityid\", \"rowguid\", \"modifieddate\"\nfrom \"person\".\"businessentity\"\nwhere \"businessentityid\" = "), Fragment.encode(BusinessentityId.dbType, businessentityid), Fragment.lit("")).query(BusinessentityRow._rowParser.first()).runUnchecked(c) + ): BusinessentityRow? = Fragment.interpolate(Fragment.lit("select \"businessentityid\", \"rowguid\", \"modifieddate\"\nfrom \"person\".\"businessentity\"\nwhere \"businessentityid\" = "), Fragment.encode(BusinessentityId.pgType, businessentityid), Fragment.lit("")).query(BusinessentityRow._rowParser.first()).runUnchecked(c) override fun selectByIds( businessentityids: Array, c: Connection - ): List = Fragment.interpolate(Fragment.lit("select \"businessentityid\", \"rowguid\", \"modifieddate\"\nfrom \"person\".\"businessentity\"\nwhere \"businessentityid\" = ANY("), Fragment.encode(BusinessentityId.dbTypeArray, businessentityids), Fragment.lit(")")).query(BusinessentityRow._rowParser.all()).runUnchecked(c) + ): List = Fragment.interpolate(Fragment.lit("select \"businessentityid\", \"rowguid\", \"modifieddate\"\nfrom \"person\".\"businessentity\"\nwhere \"businessentityid\" = ANY("), Fragment.encode(BusinessentityId.pgTypeArray, businessentityids), Fragment.lit(")")).query(BusinessentityRow._rowParser.all()).runUnchecked(c) override fun selectByIdsTracked( businessentityids: Array, @@ -108,13 +108,13 @@ class BusinessentityRepoImpl() : BusinessentityRepo { c: Connection ): Boolean { val businessentityid: BusinessentityId = row.businessentityid - return Fragment.interpolate(Fragment.lit("update \"person\".\"businessentity\"\nset \"rowguid\" = "), Fragment.encode(PgTypes.uuid, row.rowguid), Fragment.lit("::uuid,\n\"modifieddate\" = "), Fragment.encode(PgTypes.timestamp, row.modifieddate), Fragment.lit("::timestamp\nwhere \"businessentityid\" = "), Fragment.encode(BusinessentityId.dbType, businessentityid), Fragment.lit("")).update().runUnchecked(c) > 0 + return Fragment.interpolate(Fragment.lit("update \"person\".\"businessentity\"\nset \"rowguid\" = "), Fragment.encode(PgTypes.uuid, row.rowguid), Fragment.lit("::uuid,\n\"modifieddate\" = "), Fragment.encode(PgTypes.timestamp, row.modifieddate), Fragment.lit("::timestamp\nwhere \"businessentityid\" = "), Fragment.encode(BusinessentityId.pgType, businessentityid), Fragment.lit("")).update().runUnchecked(c) > 0 } override fun upsert( unsaved: BusinessentityRow, c: Connection - ): BusinessentityRow = Fragment.interpolate(Fragment.lit("insert into \"person\".\"businessentity\"(\"businessentityid\", \"rowguid\", \"modifieddate\")\nvalues ("), Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\non conflict (\"businessentityid\")\ndo update set\n \"rowguid\" = EXCLUDED.\"rowguid\",\n\"modifieddate\" = EXCLUDED.\"modifieddate\"\nreturning \"businessentityid\", \"rowguid\", \"modifieddate\"")) + ): BusinessentityRow = Fragment.interpolate(Fragment.lit("insert into \"person\".\"businessentity\"(\"businessentityid\", \"rowguid\", \"modifieddate\")\nvalues ("), Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\non conflict (\"businessentityid\")\ndo update set\n \"rowguid\" = EXCLUDED.\"rowguid\",\n\"modifieddate\" = EXCLUDED.\"modifieddate\"\nreturning \"businessentityid\", \"rowguid\", \"modifieddate\"")) .updateReturning(BusinessentityRow._rowParser.exactlyOne()) .runUnchecked(c) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRow.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRow.kt index 006ba4fafa..8ff454c00b 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRow.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRow.kt @@ -43,7 +43,7 @@ data class BusinessentityRow( ): BusinessentityRowUnsaved = BusinessentityRowUnsaved(businessentityid, rowguid, modifieddate) companion object { - val _rowParser: RowParser = RowParsers.of(BusinessentityId.dbType, PgTypes.uuid, PgTypes.timestamp, { t0, t1, t2 -> BusinessentityRow(t0, t1, t2) }, { row -> arrayOf(row.businessentityid, row.rowguid, row.modifieddate) }) + val _rowParser: RowParser = RowParsers.of(BusinessentityId.pgType, PgTypes.uuid, PgTypes.timestamp, { t0, t1, t2 -> BusinessentityRow(t0, t1, t2) }, { row -> arrayOf(row.businessentityid, row.rowguid, row.modifieddate) }) val pgText: PgText = PgText.from(_rowParser.underlying) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRowUnsaved.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRowUnsaved.kt index 3aba9b0b6a..55fe0f20a9 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRowUnsaved.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRowUnsaved.kt @@ -31,7 +31,7 @@ data class BusinessentityRowUnsaved( companion object { val pgText: PgText = - PgText.instance({ row, sb -> Defaulted.pgText(BusinessentityId.dbType.text()).unsafeEncode(row.businessentityid, sb) + PgText.instance({ row, sb -> Defaulted.pgText(BusinessentityId.pgType.text()).unsafeEncode(row.businessentityid, sb) sb.append(PgText.DELIMETER) Defaulted.pgText(PgTypes.uuid.text()).unsafeEncode(row.rowguid, sb) sb.append(PgText.DELIMETER) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressFields.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressFields.kt index edd30e0500..18fec5245c 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressFields.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressFields.kt @@ -43,11 +43,11 @@ data class BusinessentityaddressFields(val _path: List) : TupleExpr5 = _path - fun addressid(): IdField = IdField(_path, "addressid", BusinessentityaddressRow::addressid, null, "int4", { row, value -> row.copy(addressid = value) }, AddressId.dbType) + fun addressid(): IdField = IdField(_path, "addressid", BusinessentityaddressRow::addressid, null, "int4", { row, value -> row.copy(addressid = value) }, AddressId.pgType) - fun addresstypeid(): IdField = IdField(_path, "addresstypeid", BusinessentityaddressRow::addresstypeid, null, "int4", { row, value -> row.copy(addresstypeid = value) }, AddresstypeId.dbType) + fun addresstypeid(): IdField = IdField(_path, "addresstypeid", BusinessentityaddressRow::addresstypeid, null, "int4", { row, value -> row.copy(addresstypeid = value) }, AddresstypeId.pgType) - fun businessentityid(): IdField = IdField(_path, "businessentityid", BusinessentityaddressRow::businessentityid, null, "int4", { row, value -> row.copy(businessentityid = value) }, BusinessentityId.dbType) + fun businessentityid(): IdField = IdField(_path, "businessentityid", BusinessentityaddressRow::businessentityid, null, "int4", { row, value -> row.copy(businessentityid = value) }, BusinessentityId.pgType) override fun columns(): List> = listOf(this.businessentityid().underlying, this.addressid().underlying, this.addresstypeid().underlying, this.rowguid().underlying, this.modifieddate().underlying) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressId.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressId.kt index 30c98e1fe9..ddaa93b089 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressId.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressId.kt @@ -25,6 +25,6 @@ data class BusinessentityaddressId( override fun _3(): AddresstypeId = addresstypeid companion object { - val _rowParser: RowParser = RowParsers.of(BusinessentityId.dbType, AddressId.dbType, AddresstypeId.dbType, { t0, t1, t2 -> BusinessentityaddressId(t0, t1, t2) }, { row -> arrayOf(row.businessentityid, row.addressid, row.addresstypeid) }) + val _rowParser: RowParser = RowParsers.of(BusinessentityId.pgType, AddressId.pgType, AddresstypeId.pgType, { t0, t1, t2 -> BusinessentityaddressId(t0, t1, t2) }, { row -> arrayOf(row.businessentityid, row.addressid, row.addresstypeid) }) } } \ No newline at end of file diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRepoImpl.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRepoImpl.kt index c3324fca8e..1a6b97fd49 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRepoImpl.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRepoImpl.kt @@ -29,7 +29,7 @@ class BusinessentityaddressRepoImpl() : BusinessentityaddressRepo { override fun deleteById( compositeId: BusinessentityaddressId, c: Connection - ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"person\".\"businessentityaddress\" where \"businessentityid\" = "), Fragment.encode(BusinessentityId.dbType, compositeId.businessentityid), Fragment.lit(" AND \"addressid\" = "), Fragment.encode(AddressId.dbType, compositeId.addressid), Fragment.lit(" AND \"addresstypeid\" = "), Fragment.encode(AddresstypeId.dbType, compositeId.addresstypeid), Fragment.lit("")).update().runUnchecked(c) > 0 + ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"person\".\"businessentityaddress\" where \"businessentityid\" = "), Fragment.encode(BusinessentityId.pgType, compositeId.businessentityid), Fragment.lit(" AND \"addressid\" = "), Fragment.encode(AddressId.pgType, compositeId.addressid), Fragment.lit(" AND \"addresstypeid\" = "), Fragment.encode(AddresstypeId.pgType, compositeId.addresstypeid), Fragment.lit("")).update().runUnchecked(c) > 0 override fun deleteByIds( compositeIds: Array, @@ -38,13 +38,13 @@ class BusinessentityaddressRepoImpl() : BusinessentityaddressRepo { val businessentityid: Array = arrayMap.map(compositeIds, BusinessentityaddressId::businessentityid, BusinessentityId::class.java) val addressid: Array = arrayMap.map(compositeIds, BusinessentityaddressId::addressid, AddressId::class.java) val addresstypeid: Array = arrayMap.map(compositeIds, BusinessentityaddressId::addresstypeid, AddresstypeId::class.java) - return Fragment.interpolate(Fragment.lit("delete\nfrom \"person\".\"businessentityaddress\"\nwhere (\"businessentityid\", \"addressid\", \"addresstypeid\")\nin (select * from unnest("), Fragment.encode(BusinessentityId.dbTypeArray, businessentityid), Fragment.lit(", "), Fragment.encode(AddressId.dbTypeArray, addressid), Fragment.lit(", "), Fragment.encode(AddresstypeId.dbTypeArray, addresstypeid), Fragment.lit("))\n")).update().runUnchecked(c) + return Fragment.interpolate(Fragment.lit("delete\nfrom \"person\".\"businessentityaddress\"\nwhere (\"businessentityid\", \"addressid\", \"addresstypeid\")\nin (select * from unnest("), Fragment.encode(BusinessentityId.pgTypeArray, businessentityid), Fragment.lit(", "), Fragment.encode(AddressId.pgTypeArray, addressid), Fragment.lit(", "), Fragment.encode(AddresstypeId.pgTypeArray, addresstypeid), Fragment.lit("))\n")).update().runUnchecked(c) } override fun insert( unsaved: BusinessentityaddressRow, c: Connection - ): BusinessentityaddressRow = Fragment.interpolate(Fragment.lit("insert into \"person\".\"businessentityaddress\"(\"businessentityid\", \"addressid\", \"addresstypeid\", \"rowguid\", \"modifieddate\")\nvalues ("), Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid), Fragment.lit("::int4, "), Fragment.encode(AddressId.dbType, unsaved.addressid), Fragment.lit("::int4, "), Fragment.encode(AddresstypeId.dbType, unsaved.addresstypeid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\nRETURNING \"businessentityid\", \"addressid\", \"addresstypeid\", \"rowguid\", \"modifieddate\"\n")) + ): BusinessentityaddressRow = Fragment.interpolate(Fragment.lit("insert into \"person\".\"businessentityaddress\"(\"businessentityid\", \"addressid\", \"addresstypeid\", \"rowguid\", \"modifieddate\")\nvalues ("), Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid), Fragment.lit("::int4, "), Fragment.encode(AddressId.pgType, unsaved.addressid), Fragment.lit("::int4, "), Fragment.encode(AddresstypeId.pgType, unsaved.addresstypeid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\nRETURNING \"businessentityid\", \"addressid\", \"addresstypeid\", \"rowguid\", \"modifieddate\"\n")) .updateReturning(BusinessentityaddressRow._rowParser.exactlyOne()).runUnchecked(c) override fun insert( @@ -54,11 +54,11 @@ class BusinessentityaddressRepoImpl() : BusinessentityaddressRepo { val columns: ArrayList = ArrayList() val values: ArrayList = ArrayList() columns.add(Fragment.lit("\"businessentityid\"")) - values.add(Fragment.interpolate(Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid), Fragment.lit("::int4"))) + values.add(Fragment.interpolate(Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid), Fragment.lit("::int4"))) columns.add(Fragment.lit("\"addressid\"")) - values.add(Fragment.interpolate(Fragment.encode(AddressId.dbType, unsaved.addressid), Fragment.lit("::int4"))) + values.add(Fragment.interpolate(Fragment.encode(AddressId.pgType, unsaved.addressid), Fragment.lit("::int4"))) columns.add(Fragment.lit("\"addresstypeid\"")) - values.add(Fragment.interpolate(Fragment.encode(AddresstypeId.dbType, unsaved.addresstypeid), Fragment.lit("::int4"))) + values.add(Fragment.interpolate(Fragment.encode(AddresstypeId.pgType, unsaved.addresstypeid), Fragment.lit("::int4"))) unsaved.rowguid.visit( { }, { value -> columns.add(Fragment.lit("\"rowguid\"")) @@ -93,7 +93,7 @@ class BusinessentityaddressRepoImpl() : BusinessentityaddressRepo { override fun selectById( compositeId: BusinessentityaddressId, c: Connection - ): BusinessentityaddressRow? = Fragment.interpolate(Fragment.lit("select \"businessentityid\", \"addressid\", \"addresstypeid\", \"rowguid\", \"modifieddate\"\nfrom \"person\".\"businessentityaddress\"\nwhere \"businessentityid\" = "), Fragment.encode(BusinessentityId.dbType, compositeId.businessentityid), Fragment.lit(" AND \"addressid\" = "), Fragment.encode(AddressId.dbType, compositeId.addressid), Fragment.lit(" AND \"addresstypeid\" = "), Fragment.encode(AddresstypeId.dbType, compositeId.addresstypeid), Fragment.lit("")).query(BusinessentityaddressRow._rowParser.first()).runUnchecked(c) + ): BusinessentityaddressRow? = Fragment.interpolate(Fragment.lit("select \"businessentityid\", \"addressid\", \"addresstypeid\", \"rowguid\", \"modifieddate\"\nfrom \"person\".\"businessentityaddress\"\nwhere \"businessentityid\" = "), Fragment.encode(BusinessentityId.pgType, compositeId.businessentityid), Fragment.lit(" AND \"addressid\" = "), Fragment.encode(AddressId.pgType, compositeId.addressid), Fragment.lit(" AND \"addresstypeid\" = "), Fragment.encode(AddresstypeId.pgType, compositeId.addresstypeid), Fragment.lit("")).query(BusinessentityaddressRow._rowParser.first()).runUnchecked(c) override fun selectByIds( compositeIds: Array, @@ -102,7 +102,7 @@ class BusinessentityaddressRepoImpl() : BusinessentityaddressRepo { val businessentityid: Array = arrayMap.map(compositeIds, BusinessentityaddressId::businessentityid, BusinessentityId::class.java) val addressid: Array = arrayMap.map(compositeIds, BusinessentityaddressId::addressid, AddressId::class.java) val addresstypeid: Array = arrayMap.map(compositeIds, BusinessentityaddressId::addresstypeid, AddresstypeId::class.java) - return Fragment.interpolate(Fragment.lit("select \"businessentityid\", \"addressid\", \"addresstypeid\", \"rowguid\", \"modifieddate\"\nfrom \"person\".\"businessentityaddress\"\nwhere (\"businessentityid\", \"addressid\", \"addresstypeid\")\nin (select * from unnest("), Fragment.encode(BusinessentityId.dbTypeArray, businessentityid), Fragment.lit(", "), Fragment.encode(AddressId.dbTypeArray, addressid), Fragment.lit(", "), Fragment.encode(AddresstypeId.dbTypeArray, addresstypeid), Fragment.lit("))\n")).query(BusinessentityaddressRow._rowParser.all()).runUnchecked(c) + return Fragment.interpolate(Fragment.lit("select \"businessentityid\", \"addressid\", \"addresstypeid\", \"rowguid\", \"modifieddate\"\nfrom \"person\".\"businessentityaddress\"\nwhere (\"businessentityid\", \"addressid\", \"addresstypeid\")\nin (select * from unnest("), Fragment.encode(BusinessentityId.pgTypeArray, businessentityid), Fragment.lit(", "), Fragment.encode(AddressId.pgTypeArray, addressid), Fragment.lit(", "), Fragment.encode(AddresstypeId.pgTypeArray, addresstypeid), Fragment.lit("))\n")).query(BusinessentityaddressRow._rowParser.all()).runUnchecked(c) } override fun selectByIdsTracked( @@ -121,13 +121,13 @@ class BusinessentityaddressRepoImpl() : BusinessentityaddressRepo { c: Connection ): Boolean { val compositeId: BusinessentityaddressId = row.compositeId() - return Fragment.interpolate(Fragment.lit("update \"person\".\"businessentityaddress\"\nset \"rowguid\" = "), Fragment.encode(PgTypes.uuid, row.rowguid), Fragment.lit("::uuid,\n\"modifieddate\" = "), Fragment.encode(PgTypes.timestamp, row.modifieddate), Fragment.lit("::timestamp\nwhere \"businessentityid\" = "), Fragment.encode(BusinessentityId.dbType, compositeId.businessentityid), Fragment.lit(" AND \"addressid\" = "), Fragment.encode(AddressId.dbType, compositeId.addressid), Fragment.lit(" AND \"addresstypeid\" = "), Fragment.encode(AddresstypeId.dbType, compositeId.addresstypeid), Fragment.lit("")).update().runUnchecked(c) > 0 + return Fragment.interpolate(Fragment.lit("update \"person\".\"businessentityaddress\"\nset \"rowguid\" = "), Fragment.encode(PgTypes.uuid, row.rowguid), Fragment.lit("::uuid,\n\"modifieddate\" = "), Fragment.encode(PgTypes.timestamp, row.modifieddate), Fragment.lit("::timestamp\nwhere \"businessentityid\" = "), Fragment.encode(BusinessentityId.pgType, compositeId.businessentityid), Fragment.lit(" AND \"addressid\" = "), Fragment.encode(AddressId.pgType, compositeId.addressid), Fragment.lit(" AND \"addresstypeid\" = "), Fragment.encode(AddresstypeId.pgType, compositeId.addresstypeid), Fragment.lit("")).update().runUnchecked(c) > 0 } override fun upsert( unsaved: BusinessentityaddressRow, c: Connection - ): BusinessentityaddressRow = Fragment.interpolate(Fragment.lit("insert into \"person\".\"businessentityaddress\"(\"businessentityid\", \"addressid\", \"addresstypeid\", \"rowguid\", \"modifieddate\")\nvalues ("), Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid), Fragment.lit("::int4, "), Fragment.encode(AddressId.dbType, unsaved.addressid), Fragment.lit("::int4, "), Fragment.encode(AddresstypeId.dbType, unsaved.addresstypeid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\non conflict (\"businessentityid\", \"addressid\", \"addresstypeid\")\ndo update set\n \"rowguid\" = EXCLUDED.\"rowguid\",\n\"modifieddate\" = EXCLUDED.\"modifieddate\"\nreturning \"businessentityid\", \"addressid\", \"addresstypeid\", \"rowguid\", \"modifieddate\"")) + ): BusinessentityaddressRow = Fragment.interpolate(Fragment.lit("insert into \"person\".\"businessentityaddress\"(\"businessentityid\", \"addressid\", \"addresstypeid\", \"rowguid\", \"modifieddate\")\nvalues ("), Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid), Fragment.lit("::int4, "), Fragment.encode(AddressId.pgType, unsaved.addressid), Fragment.lit("::int4, "), Fragment.encode(AddresstypeId.pgType, unsaved.addresstypeid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\non conflict (\"businessentityid\", \"addressid\", \"addresstypeid\")\ndo update set\n \"rowguid\" = EXCLUDED.\"rowguid\",\n\"modifieddate\" = EXCLUDED.\"modifieddate\"\nreturning \"businessentityid\", \"addressid\", \"addresstypeid\", \"rowguid\", \"modifieddate\"")) .updateReturning(BusinessentityaddressRow._rowParser.exactlyOne()) .runUnchecked(c) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRow.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRow.kt index b4f487ae6e..96dfa67d9e 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRow.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRow.kt @@ -59,7 +59,7 @@ data class BusinessentityaddressRow( ): BusinessentityaddressRowUnsaved = BusinessentityaddressRowUnsaved(businessentityid, addressid, addresstypeid, rowguid, modifieddate) companion object { - val _rowParser: RowParser = RowParsers.of(BusinessentityId.dbType, AddressId.dbType, AddresstypeId.dbType, PgTypes.uuid, PgTypes.timestamp, { t0, t1, t2, t3, t4 -> BusinessentityaddressRow(t0, t1, t2, t3, t4) }, { row -> arrayOf(row.businessentityid, row.addressid, row.addresstypeid, row.rowguid, row.modifieddate) }) + val _rowParser: RowParser = RowParsers.of(BusinessentityId.pgType, AddressId.pgType, AddresstypeId.pgType, PgTypes.uuid, PgTypes.timestamp, { t0, t1, t2, t3, t4 -> BusinessentityaddressRow(t0, t1, t2, t3, t4) }, { row -> arrayOf(row.businessentityid, row.addressid, row.addresstypeid, row.rowguid, row.modifieddate) }) fun apply( compositeId: BusinessentityaddressId, diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRowUnsaved.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRowUnsaved.kt index 80d948d6de..259c834060 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRowUnsaved.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRowUnsaved.kt @@ -41,11 +41,11 @@ data class BusinessentityaddressRowUnsaved( companion object { val pgText: PgText = - PgText.instance({ row, sb -> BusinessentityId.dbType.text().unsafeEncode(row.businessentityid, sb) + PgText.instance({ row, sb -> BusinessentityId.pgType.text().unsafeEncode(row.businessentityid, sb) sb.append(PgText.DELIMETER) - AddressId.dbType.text().unsafeEncode(row.addressid, sb) + AddressId.pgType.text().unsafeEncode(row.addressid, sb) sb.append(PgText.DELIMETER) - AddresstypeId.dbType.text().unsafeEncode(row.addresstypeid, sb) + AddresstypeId.pgType.text().unsafeEncode(row.addresstypeid, sb) sb.append(PgText.DELIMETER) Defaulted.pgText(PgTypes.uuid.text()).unsafeEncode(row.rowguid, sb) sb.append(PgText.DELIMETER) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/countryregion/CountryregionFields.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/countryregion/CountryregionFields.kt index 003981cb48..6fae05ae8b 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/countryregion/CountryregionFields.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/countryregion/CountryregionFields.kt @@ -30,11 +30,11 @@ data class CountryregionFields(val _path: List) : TupleExpr3> = listOf(this.countryregioncode().underlying, this.name().underlying, this.modifieddate().underlying) - fun countryregioncode(): IdField = IdField(_path, "countryregioncode", CountryregionRow::countryregioncode, null, null, { row, value -> row.copy(countryregioncode = value) }, CountryregionId.dbType) + fun countryregioncode(): IdField = IdField(_path, "countryregioncode", CountryregionRow::countryregioncode, null, null, { row, value -> row.copy(countryregioncode = value) }, CountryregionId.pgType) fun modifieddate(): Field = Field(_path, "modifieddate", CountryregionRow::modifieddate, null, "timestamp", { row, value -> row.copy(modifieddate = value) }, PgTypes.timestamp) - fun name(): Field = Field(_path, "name", CountryregionRow::name, null, "varchar", { row, value -> row.copy(name = value) }, Name.dbType) + fun name(): Field = Field(_path, "name", CountryregionRow::name, null, "varchar", { row, value -> row.copy(name = value) }, Name.pgType) override fun rowParser(): RowParser = CountryregionRow._rowParser.underlying diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/countryregion/CountryregionId.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/countryregion/CountryregionId.kt index 50dad16ede..3ef45d15e2 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/countryregion/CountryregionId.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/countryregion/CountryregionId.kt @@ -21,10 +21,10 @@ data class CountryregionId(@field:JsonValue val value: String) { val bijection: Bijection = Bijection.of(CountryregionId::value, ::CountryregionId) - val dbType: PgType = + val pgType: PgType = PgTypes.text.bimap(::CountryregionId, CountryregionId::value) - val dbTypeArray: PgType> = + val pgTypeArray: PgType> = PgTypes.textArray.bimap({ xs -> arrayMap.map(xs, ::CountryregionId, CountryregionId::class.java) }, { xs -> arrayMap.map(xs, CountryregionId::value, String::class.java) }) } } \ No newline at end of file diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRepoImpl.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRepoImpl.kt index 4e8717986a..a849835ee1 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRepoImpl.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRepoImpl.kt @@ -26,19 +26,19 @@ class CountryregionRepoImpl() : CountryregionRepo { override fun deleteById( countryregioncode: CountryregionId, c: Connection - ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"person\".\"countryregion\" where \"countryregioncode\" = "), Fragment.encode(CountryregionId.dbType, countryregioncode), Fragment.lit("")).update().runUnchecked(c) > 0 + ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"person\".\"countryregion\" where \"countryregioncode\" = "), Fragment.encode(CountryregionId.pgType, countryregioncode), Fragment.lit("")).update().runUnchecked(c) > 0 override fun deleteByIds( countryregioncodes: Array, c: Connection - ): Int = Fragment.interpolate(Fragment.lit("delete\nfrom \"person\".\"countryregion\"\nwhere \"countryregioncode\" = ANY("), Fragment.encode(CountryregionId.dbTypeArray, countryregioncodes), Fragment.lit(")")) + ): Int = Fragment.interpolate(Fragment.lit("delete\nfrom \"person\".\"countryregion\"\nwhere \"countryregioncode\" = ANY("), Fragment.encode(CountryregionId.pgTypeArray, countryregioncodes), Fragment.lit(")")) .update() .runUnchecked(c) override fun insert( unsaved: CountryregionRow, c: Connection - ): CountryregionRow = Fragment.interpolate(Fragment.lit("insert into \"person\".\"countryregion\"(\"countryregioncode\", \"name\", \"modifieddate\")\nvalues ("), Fragment.encode(CountryregionId.dbType, unsaved.countryregioncode), Fragment.lit(", "), Fragment.encode(Name.dbType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\nRETURNING \"countryregioncode\", \"name\", \"modifieddate\"\n")) + ): CountryregionRow = Fragment.interpolate(Fragment.lit("insert into \"person\".\"countryregion\"(\"countryregioncode\", \"name\", \"modifieddate\")\nvalues ("), Fragment.encode(CountryregionId.pgType, unsaved.countryregioncode), Fragment.lit(", "), Fragment.encode(Name.pgType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\nRETURNING \"countryregioncode\", \"name\", \"modifieddate\"\n")) .updateReturning(CountryregionRow._rowParser.exactlyOne()).runUnchecked(c) override fun insert( @@ -48,9 +48,9 @@ class CountryregionRepoImpl() : CountryregionRepo { val columns: ArrayList = ArrayList() val values: ArrayList = ArrayList() columns.add(Fragment.lit("\"countryregioncode\"")) - values.add(Fragment.interpolate(Fragment.encode(CountryregionId.dbType, unsaved.countryregioncode), Fragment.lit(""))) + values.add(Fragment.interpolate(Fragment.encode(CountryregionId.pgType, unsaved.countryregioncode), Fragment.lit(""))) columns.add(Fragment.lit("\"name\"")) - values.add(Fragment.interpolate(Fragment.encode(Name.dbType, unsaved.name), Fragment.lit("::varchar"))) + values.add(Fragment.interpolate(Fragment.encode(Name.pgType, unsaved.name), Fragment.lit("::varchar"))) unsaved.modifieddate.visit( { }, { value -> columns.add(Fragment.lit("\"modifieddate\"")) @@ -80,12 +80,12 @@ class CountryregionRepoImpl() : CountryregionRepo { override fun selectById( countryregioncode: CountryregionId, c: Connection - ): CountryregionRow? = Fragment.interpolate(Fragment.lit("select \"countryregioncode\", \"name\", \"modifieddate\"\nfrom \"person\".\"countryregion\"\nwhere \"countryregioncode\" = "), Fragment.encode(CountryregionId.dbType, countryregioncode), Fragment.lit("")).query(CountryregionRow._rowParser.first()).runUnchecked(c) + ): CountryregionRow? = Fragment.interpolate(Fragment.lit("select \"countryregioncode\", \"name\", \"modifieddate\"\nfrom \"person\".\"countryregion\"\nwhere \"countryregioncode\" = "), Fragment.encode(CountryregionId.pgType, countryregioncode), Fragment.lit("")).query(CountryregionRow._rowParser.first()).runUnchecked(c) override fun selectByIds( countryregioncodes: Array, c: Connection - ): List = Fragment.interpolate(Fragment.lit("select \"countryregioncode\", \"name\", \"modifieddate\"\nfrom \"person\".\"countryregion\"\nwhere \"countryregioncode\" = ANY("), Fragment.encode(CountryregionId.dbTypeArray, countryregioncodes), Fragment.lit(")")).query(CountryregionRow._rowParser.all()).runUnchecked(c) + ): List = Fragment.interpolate(Fragment.lit("select \"countryregioncode\", \"name\", \"modifieddate\"\nfrom \"person\".\"countryregion\"\nwhere \"countryregioncode\" = ANY("), Fragment.encode(CountryregionId.pgTypeArray, countryregioncodes), Fragment.lit(")")).query(CountryregionRow._rowParser.all()).runUnchecked(c) override fun selectByIdsTracked( countryregioncodes: Array, @@ -103,13 +103,13 @@ class CountryregionRepoImpl() : CountryregionRepo { c: Connection ): Boolean { val countryregioncode: CountryregionId = row.countryregioncode - return Fragment.interpolate(Fragment.lit("update \"person\".\"countryregion\"\nset \"name\" = "), Fragment.encode(Name.dbType, row.name), Fragment.lit("::varchar,\n\"modifieddate\" = "), Fragment.encode(PgTypes.timestamp, row.modifieddate), Fragment.lit("::timestamp\nwhere \"countryregioncode\" = "), Fragment.encode(CountryregionId.dbType, countryregioncode), Fragment.lit("")).update().runUnchecked(c) > 0 + return Fragment.interpolate(Fragment.lit("update \"person\".\"countryregion\"\nset \"name\" = "), Fragment.encode(Name.pgType, row.name), Fragment.lit("::varchar,\n\"modifieddate\" = "), Fragment.encode(PgTypes.timestamp, row.modifieddate), Fragment.lit("::timestamp\nwhere \"countryregioncode\" = "), Fragment.encode(CountryregionId.pgType, countryregioncode), Fragment.lit("")).update().runUnchecked(c) > 0 } override fun upsert( unsaved: CountryregionRow, c: Connection - ): CountryregionRow = Fragment.interpolate(Fragment.lit("insert into \"person\".\"countryregion\"(\"countryregioncode\", \"name\", \"modifieddate\")\nvalues ("), Fragment.encode(CountryregionId.dbType, unsaved.countryregioncode), Fragment.lit(", "), Fragment.encode(Name.dbType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\non conflict (\"countryregioncode\")\ndo update set\n \"name\" = EXCLUDED.\"name\",\n\"modifieddate\" = EXCLUDED.\"modifieddate\"\nreturning \"countryregioncode\", \"name\", \"modifieddate\"")) + ): CountryregionRow = Fragment.interpolate(Fragment.lit("insert into \"person\".\"countryregion\"(\"countryregioncode\", \"name\", \"modifieddate\")\nvalues ("), Fragment.encode(CountryregionId.pgType, unsaved.countryregioncode), Fragment.lit(", "), Fragment.encode(Name.pgType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\non conflict (\"countryregioncode\")\ndo update set\n \"name\" = EXCLUDED.\"name\",\n\"modifieddate\" = EXCLUDED.\"modifieddate\"\nreturning \"countryregioncode\", \"name\", \"modifieddate\"")) .updateReturning(CountryregionRow._rowParser.exactlyOne()) .runUnchecked(c) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRow.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRow.kt index b5849d7c46..d9ab074910 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRow.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRow.kt @@ -37,7 +37,7 @@ data class CountryregionRow( fun toUnsavedRow(modifieddate: Defaulted = Defaulted.Provided(this.modifieddate)): CountryregionRowUnsaved = CountryregionRowUnsaved(countryregioncode, name, modifieddate) companion object { - val _rowParser: RowParser = RowParsers.of(CountryregionId.dbType, Name.dbType, PgTypes.timestamp, { t0, t1, t2 -> CountryregionRow(t0, t1, t2) }, { row -> arrayOf(row.countryregioncode, row.name, row.modifieddate) }) + val _rowParser: RowParser = RowParsers.of(CountryregionId.pgType, Name.pgType, PgTypes.timestamp, { t0, t1, t2 -> CountryregionRow(t0, t1, t2) }, { row -> arrayOf(row.countryregioncode, row.name, row.modifieddate) }) val pgText: PgText = PgText.from(_rowParser.underlying) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRowUnsaved.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRowUnsaved.kt index 79fd2f5f87..43af98c273 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRowUnsaved.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRowUnsaved.kt @@ -25,9 +25,9 @@ data class CountryregionRowUnsaved( companion object { val pgText: PgText = - PgText.instance({ row, sb -> CountryregionId.dbType.text().unsafeEncode(row.countryregioncode, sb) + PgText.instance({ row, sb -> CountryregionId.pgType.text().unsafeEncode(row.countryregioncode, sb) sb.append(PgText.DELIMETER) - Name.dbType.text().unsafeEncode(row.name, sb) + Name.pgType.text().unsafeEncode(row.name, sb) sb.append(PgText.DELIMETER) Defaulted.pgText(PgTypes.timestamp.text()).unsafeEncode(row.modifieddate, sb) }) } diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressFields.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressFields.kt index 78969d150b..6f514ca660 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressFields.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressFields.kt @@ -39,7 +39,7 @@ data class EmailaddressFields(val _path: List) : TupleExpr5 = _path - fun businessentityid(): IdField = IdField(_path, "businessentityid", EmailaddressRow::businessentityid, null, "int4", { row, value -> row.copy(businessentityid = value) }, BusinessentityId.dbType) + fun businessentityid(): IdField = IdField(_path, "businessentityid", EmailaddressRow::businessentityid, null, "int4", { row, value -> row.copy(businessentityid = value) }, BusinessentityId.pgType) override fun columns(): List> = listOf(this.businessentityid().underlying, this.emailaddressid().underlying, this.emailaddress().underlying, this.rowguid().underlying, this.modifieddate().underlying) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressId.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressId.kt index aef0826327..31553faefc 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressId.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressId.kt @@ -21,6 +21,6 @@ data class EmailaddressId( override fun _2(): Int = emailaddressid companion object { - val _rowParser: RowParser = RowParsers.of(BusinessentityId.dbType, KotlinDbTypes.PgTypes.int4, { t0, t1 -> EmailaddressId(t0, t1) }, { row -> arrayOf(row.businessentityid, row.emailaddressid) }) + val _rowParser: RowParser = RowParsers.of(BusinessentityId.pgType, KotlinDbTypes.PgTypes.int4, { t0, t1 -> EmailaddressId(t0, t1) }, { row -> arrayOf(row.businessentityid, row.emailaddressid) }) } } \ No newline at end of file diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRepoImpl.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRepoImpl.kt index a0a73feace..d74442a685 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRepoImpl.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRepoImpl.kt @@ -29,7 +29,7 @@ class EmailaddressRepoImpl() : EmailaddressRepo { override fun deleteById( compositeId: EmailaddressId, c: Connection - ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"person\".\"emailaddress\" where \"businessentityid\" = "), Fragment.encode(BusinessentityId.dbType, compositeId.businessentityid), Fragment.lit(" AND \"emailaddressid\" = "), Fragment.encode(KotlinDbTypes.PgTypes.int4, compositeId.emailaddressid), Fragment.lit("")).update().runUnchecked(c) > 0 + ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"person\".\"emailaddress\" where \"businessentityid\" = "), Fragment.encode(BusinessentityId.pgType, compositeId.businessentityid), Fragment.lit(" AND \"emailaddressid\" = "), Fragment.encode(KotlinDbTypes.PgTypes.int4, compositeId.emailaddressid), Fragment.lit("")).update().runUnchecked(c) > 0 override fun deleteByIds( compositeIds: Array, @@ -37,13 +37,13 @@ class EmailaddressRepoImpl() : EmailaddressRepo { ): Int { val businessentityid: Array = arrayMap.map(compositeIds, EmailaddressId::businessentityid, BusinessentityId::class.java) val emailaddressid: Array = arrayMap.map(compositeIds, EmailaddressId::emailaddressid, Int::class.javaObjectType) - return Fragment.interpolate(Fragment.lit("delete\nfrom \"person\".\"emailaddress\"\nwhere (\"businessentityid\", \"emailaddressid\")\nin (select * from unnest("), Fragment.encode(BusinessentityId.dbTypeArray, businessentityid), Fragment.lit(", "), Fragment.encode(PgTypes.int4Array, emailaddressid), Fragment.lit("))\n")).update().runUnchecked(c) + return Fragment.interpolate(Fragment.lit("delete\nfrom \"person\".\"emailaddress\"\nwhere (\"businessentityid\", \"emailaddressid\")\nin (select * from unnest("), Fragment.encode(BusinessentityId.pgTypeArray, businessentityid), Fragment.lit(", "), Fragment.encode(PgTypes.int4Array, emailaddressid), Fragment.lit("))\n")).update().runUnchecked(c) } override fun insert( unsaved: EmailaddressRow, c: Connection - ): EmailaddressRow = Fragment.interpolate(Fragment.lit("insert into \"person\".\"emailaddress\"(\"businessentityid\", \"emailaddressid\", \"emailaddress\", \"rowguid\", \"modifieddate\")\nvalues ("), Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid), Fragment.lit("::int4, "), Fragment.encode(KotlinDbTypes.PgTypes.int4, unsaved.emailaddressid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.text.nullable(), unsaved.emailaddress), Fragment.lit(", "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\nRETURNING \"businessentityid\", \"emailaddressid\", \"emailaddress\", \"rowguid\", \"modifieddate\"\n")) + ): EmailaddressRow = Fragment.interpolate(Fragment.lit("insert into \"person\".\"emailaddress\"(\"businessentityid\", \"emailaddressid\", \"emailaddress\", \"rowguid\", \"modifieddate\")\nvalues ("), Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid), Fragment.lit("::int4, "), Fragment.encode(KotlinDbTypes.PgTypes.int4, unsaved.emailaddressid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.text.nullable(), unsaved.emailaddress), Fragment.lit(", "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\nRETURNING \"businessentityid\", \"emailaddressid\", \"emailaddress\", \"rowguid\", \"modifieddate\"\n")) .updateReturning(EmailaddressRow._rowParser.exactlyOne()).runUnchecked(c) override fun insert( @@ -53,7 +53,7 @@ class EmailaddressRepoImpl() : EmailaddressRepo { val columns: ArrayList = ArrayList() val values: ArrayList = ArrayList() columns.add(Fragment.lit("\"businessentityid\"")) - values.add(Fragment.interpolate(Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid), Fragment.lit("::int4"))) + values.add(Fragment.interpolate(Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid), Fragment.lit("::int4"))) columns.add(Fragment.lit("\"emailaddress\"")) values.add(Fragment.interpolate(Fragment.encode(PgTypes.text.nullable(), unsaved.emailaddress), Fragment.lit(""))) unsaved.emailaddressid.visit( @@ -95,7 +95,7 @@ class EmailaddressRepoImpl() : EmailaddressRepo { override fun selectById( compositeId: EmailaddressId, c: Connection - ): EmailaddressRow? = Fragment.interpolate(Fragment.lit("select \"businessentityid\", \"emailaddressid\", \"emailaddress\", \"rowguid\", \"modifieddate\"\nfrom \"person\".\"emailaddress\"\nwhere \"businessentityid\" = "), Fragment.encode(BusinessentityId.dbType, compositeId.businessentityid), Fragment.lit(" AND \"emailaddressid\" = "), Fragment.encode(KotlinDbTypes.PgTypes.int4, compositeId.emailaddressid), Fragment.lit("")).query(EmailaddressRow._rowParser.first()).runUnchecked(c) + ): EmailaddressRow? = Fragment.interpolate(Fragment.lit("select \"businessentityid\", \"emailaddressid\", \"emailaddress\", \"rowguid\", \"modifieddate\"\nfrom \"person\".\"emailaddress\"\nwhere \"businessentityid\" = "), Fragment.encode(BusinessentityId.pgType, compositeId.businessentityid), Fragment.lit(" AND \"emailaddressid\" = "), Fragment.encode(KotlinDbTypes.PgTypes.int4, compositeId.emailaddressid), Fragment.lit("")).query(EmailaddressRow._rowParser.first()).runUnchecked(c) override fun selectByIds( compositeIds: Array, @@ -103,7 +103,7 @@ class EmailaddressRepoImpl() : EmailaddressRepo { ): List { val businessentityid: Array = arrayMap.map(compositeIds, EmailaddressId::businessentityid, BusinessentityId::class.java) val emailaddressid: Array = arrayMap.map(compositeIds, EmailaddressId::emailaddressid, Int::class.javaObjectType) - return Fragment.interpolate(Fragment.lit("select \"businessentityid\", \"emailaddressid\", \"emailaddress\", \"rowguid\", \"modifieddate\"\nfrom \"person\".\"emailaddress\"\nwhere (\"businessentityid\", \"emailaddressid\")\nin (select * from unnest("), Fragment.encode(BusinessentityId.dbTypeArray, businessentityid), Fragment.lit(", "), Fragment.encode(PgTypes.int4Array, emailaddressid), Fragment.lit("))\n")).query(EmailaddressRow._rowParser.all()).runUnchecked(c) + return Fragment.interpolate(Fragment.lit("select \"businessentityid\", \"emailaddressid\", \"emailaddress\", \"rowguid\", \"modifieddate\"\nfrom \"person\".\"emailaddress\"\nwhere (\"businessentityid\", \"emailaddressid\")\nin (select * from unnest("), Fragment.encode(BusinessentityId.pgTypeArray, businessentityid), Fragment.lit(", "), Fragment.encode(PgTypes.int4Array, emailaddressid), Fragment.lit("))\n")).query(EmailaddressRow._rowParser.all()).runUnchecked(c) } override fun selectByIdsTracked( @@ -122,13 +122,13 @@ class EmailaddressRepoImpl() : EmailaddressRepo { c: Connection ): Boolean { val compositeId: EmailaddressId = row.compositeId() - return Fragment.interpolate(Fragment.lit("update \"person\".\"emailaddress\"\nset \"emailaddress\" = "), Fragment.encode(PgTypes.text.nullable(), row.emailaddress), Fragment.lit(",\n\"rowguid\" = "), Fragment.encode(PgTypes.uuid, row.rowguid), Fragment.lit("::uuid,\n\"modifieddate\" = "), Fragment.encode(PgTypes.timestamp, row.modifieddate), Fragment.lit("::timestamp\nwhere \"businessentityid\" = "), Fragment.encode(BusinessentityId.dbType, compositeId.businessentityid), Fragment.lit(" AND \"emailaddressid\" = "), Fragment.encode(KotlinDbTypes.PgTypes.int4, compositeId.emailaddressid), Fragment.lit("")).update().runUnchecked(c) > 0 + return Fragment.interpolate(Fragment.lit("update \"person\".\"emailaddress\"\nset \"emailaddress\" = "), Fragment.encode(PgTypes.text.nullable(), row.emailaddress), Fragment.lit(",\n\"rowguid\" = "), Fragment.encode(PgTypes.uuid, row.rowguid), Fragment.lit("::uuid,\n\"modifieddate\" = "), Fragment.encode(PgTypes.timestamp, row.modifieddate), Fragment.lit("::timestamp\nwhere \"businessentityid\" = "), Fragment.encode(BusinessentityId.pgType, compositeId.businessentityid), Fragment.lit(" AND \"emailaddressid\" = "), Fragment.encode(KotlinDbTypes.PgTypes.int4, compositeId.emailaddressid), Fragment.lit("")).update().runUnchecked(c) > 0 } override fun upsert( unsaved: EmailaddressRow, c: Connection - ): EmailaddressRow = Fragment.interpolate(Fragment.lit("insert into \"person\".\"emailaddress\"(\"businessentityid\", \"emailaddressid\", \"emailaddress\", \"rowguid\", \"modifieddate\")\nvalues ("), Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid), Fragment.lit("::int4, "), Fragment.encode(KotlinDbTypes.PgTypes.int4, unsaved.emailaddressid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.text.nullable(), unsaved.emailaddress), Fragment.lit(", "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\non conflict (\"businessentityid\", \"emailaddressid\")\ndo update set\n \"emailaddress\" = EXCLUDED.\"emailaddress\",\n\"rowguid\" = EXCLUDED.\"rowguid\",\n\"modifieddate\" = EXCLUDED.\"modifieddate\"\nreturning \"businessentityid\", \"emailaddressid\", \"emailaddress\", \"rowguid\", \"modifieddate\"")) + ): EmailaddressRow = Fragment.interpolate(Fragment.lit("insert into \"person\".\"emailaddress\"(\"businessentityid\", \"emailaddressid\", \"emailaddress\", \"rowguid\", \"modifieddate\")\nvalues ("), Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid), Fragment.lit("::int4, "), Fragment.encode(KotlinDbTypes.PgTypes.int4, unsaved.emailaddressid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.text.nullable(), unsaved.emailaddress), Fragment.lit(", "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\non conflict (\"businessentityid\", \"emailaddressid\")\ndo update set\n \"emailaddress\" = EXCLUDED.\"emailaddress\",\n\"rowguid\" = EXCLUDED.\"rowguid\",\n\"modifieddate\" = EXCLUDED.\"modifieddate\"\nreturning \"businessentityid\", \"emailaddressid\", \"emailaddress\", \"rowguid\", \"modifieddate\"")) .updateReturning(EmailaddressRow._rowParser.exactlyOne()) .runUnchecked(c) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRow.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRow.kt index 273aaa2b9e..2915aee79b 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRow.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRow.kt @@ -58,7 +58,7 @@ data class EmailaddressRow( ): EmailaddressRowUnsaved = EmailaddressRowUnsaved(businessentityid, emailaddress, emailaddressid, rowguid, modifieddate) companion object { - val _rowParser: RowParser = RowParsers.of(BusinessentityId.dbType, KotlinDbTypes.PgTypes.int4, PgTypes.text.nullable(), PgTypes.uuid, PgTypes.timestamp, { t0, t1, t2, t3, t4 -> EmailaddressRow(t0, t1, t2, t3, t4) }, { row -> arrayOf(row.businessentityid, row.emailaddressid, row.emailaddress, row.rowguid, row.modifieddate) }) + val _rowParser: RowParser = RowParsers.of(BusinessentityId.pgType, KotlinDbTypes.PgTypes.int4, PgTypes.text.nullable(), PgTypes.uuid, PgTypes.timestamp, { t0, t1, t2, t3, t4 -> EmailaddressRow(t0, t1, t2, t3, t4) }, { row -> arrayOf(row.businessentityid, row.emailaddressid, row.emailaddress, row.rowguid, row.modifieddate) }) fun apply( compositeId: EmailaddressId, diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRowUnsaved.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRowUnsaved.kt index 95ffdf9379..1cfe1340e0 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRowUnsaved.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRowUnsaved.kt @@ -40,7 +40,7 @@ data class EmailaddressRowUnsaved( companion object { val pgText: PgText = - PgText.instance({ row, sb -> BusinessentityId.dbType.text().unsafeEncode(row.businessentityid, sb) + PgText.instance({ row, sb -> BusinessentityId.pgType.text().unsafeEncode(row.businessentityid, sb) sb.append(PgText.DELIMETER) PgTypes.text.nullable().text().unsafeEncode(row.emailaddress, sb) sb.append(PgText.DELIMETER) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/password/PasswordFields.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/password/PasswordFields.kt index 3a0ef4f7c6..dadcc1a308 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/password/PasswordFields.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/password/PasswordFields.kt @@ -36,7 +36,7 @@ data class PasswordFields(val _path: List) : TupleExpr5 = _path - fun businessentityid(): IdField = IdField(_path, "businessentityid", PasswordRow::businessentityid, null, "int4", { row, value -> row.copy(businessentityid = value) }, BusinessentityId.dbType) + fun businessentityid(): IdField = IdField(_path, "businessentityid", PasswordRow::businessentityid, null, "int4", { row, value -> row.copy(businessentityid = value) }, BusinessentityId.pgType) override fun columns(): List> = listOf(this.businessentityid().underlying, this.passwordhash().underlying, this.passwordsalt().underlying, this.rowguid().underlying, this.modifieddate().underlying) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/password/PasswordRepoImpl.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/password/PasswordRepoImpl.kt index c53538b48a..6729cadd08 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/password/PasswordRepoImpl.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/password/PasswordRepoImpl.kt @@ -26,19 +26,19 @@ class PasswordRepoImpl() : PasswordRepo { override fun deleteById( businessentityid: BusinessentityId, c: Connection - ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"person\".\"password\" where \"businessentityid\" = "), Fragment.encode(BusinessentityId.dbType, businessentityid), Fragment.lit("")).update().runUnchecked(c) > 0 + ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"person\".\"password\" where \"businessentityid\" = "), Fragment.encode(BusinessentityId.pgType, businessentityid), Fragment.lit("")).update().runUnchecked(c) > 0 override fun deleteByIds( businessentityids: Array, c: Connection - ): Int = Fragment.interpolate(Fragment.lit("delete\nfrom \"person\".\"password\"\nwhere \"businessentityid\" = ANY("), Fragment.encode(BusinessentityId.dbTypeArray, businessentityids), Fragment.lit(")")) + ): Int = Fragment.interpolate(Fragment.lit("delete\nfrom \"person\".\"password\"\nwhere \"businessentityid\" = ANY("), Fragment.encode(BusinessentityId.pgTypeArray, businessentityids), Fragment.lit(")")) .update() .runUnchecked(c) override fun insert( unsaved: PasswordRow, c: Connection - ): PasswordRow = Fragment.interpolate(Fragment.lit("insert into \"person\".\"password\"(\"businessentityid\", \"passwordhash\", \"passwordsalt\", \"rowguid\", \"modifieddate\")\nvalues ("), Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.text, unsaved.passwordhash), Fragment.lit(", "), Fragment.encode(PgTypes.text, unsaved.passwordsalt), Fragment.lit(", "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\nRETURNING \"businessentityid\", \"passwordhash\", \"passwordsalt\", \"rowguid\", \"modifieddate\"\n")) + ): PasswordRow = Fragment.interpolate(Fragment.lit("insert into \"person\".\"password\"(\"businessentityid\", \"passwordhash\", \"passwordsalt\", \"rowguid\", \"modifieddate\")\nvalues ("), Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.text, unsaved.passwordhash), Fragment.lit(", "), Fragment.encode(PgTypes.text, unsaved.passwordsalt), Fragment.lit(", "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\nRETURNING \"businessentityid\", \"passwordhash\", \"passwordsalt\", \"rowguid\", \"modifieddate\"\n")) .updateReturning(PasswordRow._rowParser.exactlyOne()).runUnchecked(c) override fun insert( @@ -48,7 +48,7 @@ class PasswordRepoImpl() : PasswordRepo { val columns: ArrayList = ArrayList() val values: ArrayList = ArrayList() columns.add(Fragment.lit("\"businessentityid\"")) - values.add(Fragment.interpolate(Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid), Fragment.lit("::int4"))) + values.add(Fragment.interpolate(Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid), Fragment.lit("::int4"))) columns.add(Fragment.lit("\"passwordhash\"")) values.add(Fragment.interpolate(Fragment.encode(PgTypes.text, unsaved.passwordhash), Fragment.lit(""))) columns.add(Fragment.lit("\"passwordsalt\"")) @@ -87,12 +87,12 @@ class PasswordRepoImpl() : PasswordRepo { override fun selectById( businessentityid: BusinessentityId, c: Connection - ): PasswordRow? = Fragment.interpolate(Fragment.lit("select \"businessentityid\", \"passwordhash\", \"passwordsalt\", \"rowguid\", \"modifieddate\"\nfrom \"person\".\"password\"\nwhere \"businessentityid\" = "), Fragment.encode(BusinessentityId.dbType, businessentityid), Fragment.lit("")).query(PasswordRow._rowParser.first()).runUnchecked(c) + ): PasswordRow? = Fragment.interpolate(Fragment.lit("select \"businessentityid\", \"passwordhash\", \"passwordsalt\", \"rowguid\", \"modifieddate\"\nfrom \"person\".\"password\"\nwhere \"businessentityid\" = "), Fragment.encode(BusinessentityId.pgType, businessentityid), Fragment.lit("")).query(PasswordRow._rowParser.first()).runUnchecked(c) override fun selectByIds( businessentityids: Array, c: Connection - ): List = Fragment.interpolate(Fragment.lit("select \"businessentityid\", \"passwordhash\", \"passwordsalt\", \"rowguid\", \"modifieddate\"\nfrom \"person\".\"password\"\nwhere \"businessentityid\" = ANY("), Fragment.encode(BusinessentityId.dbTypeArray, businessentityids), Fragment.lit(")")).query(PasswordRow._rowParser.all()).runUnchecked(c) + ): List = Fragment.interpolate(Fragment.lit("select \"businessentityid\", \"passwordhash\", \"passwordsalt\", \"rowguid\", \"modifieddate\"\nfrom \"person\".\"password\"\nwhere \"businessentityid\" = ANY("), Fragment.encode(BusinessentityId.pgTypeArray, businessentityids), Fragment.lit(")")).query(PasswordRow._rowParser.all()).runUnchecked(c) override fun selectByIdsTracked( businessentityids: Array, @@ -110,13 +110,13 @@ class PasswordRepoImpl() : PasswordRepo { c: Connection ): Boolean { val businessentityid: BusinessentityId = row.businessentityid - return Fragment.interpolate(Fragment.lit("update \"person\".\"password\"\nset \"passwordhash\" = "), Fragment.encode(PgTypes.text, row.passwordhash), Fragment.lit(",\n\"passwordsalt\" = "), Fragment.encode(PgTypes.text, row.passwordsalt), Fragment.lit(",\n\"rowguid\" = "), Fragment.encode(PgTypes.uuid, row.rowguid), Fragment.lit("::uuid,\n\"modifieddate\" = "), Fragment.encode(PgTypes.timestamp, row.modifieddate), Fragment.lit("::timestamp\nwhere \"businessentityid\" = "), Fragment.encode(BusinessentityId.dbType, businessentityid), Fragment.lit("")).update().runUnchecked(c) > 0 + return Fragment.interpolate(Fragment.lit("update \"person\".\"password\"\nset \"passwordhash\" = "), Fragment.encode(PgTypes.text, row.passwordhash), Fragment.lit(",\n\"passwordsalt\" = "), Fragment.encode(PgTypes.text, row.passwordsalt), Fragment.lit(",\n\"rowguid\" = "), Fragment.encode(PgTypes.uuid, row.rowguid), Fragment.lit("::uuid,\n\"modifieddate\" = "), Fragment.encode(PgTypes.timestamp, row.modifieddate), Fragment.lit("::timestamp\nwhere \"businessentityid\" = "), Fragment.encode(BusinessentityId.pgType, businessentityid), Fragment.lit("")).update().runUnchecked(c) > 0 } override fun upsert( unsaved: PasswordRow, c: Connection - ): PasswordRow = Fragment.interpolate(Fragment.lit("insert into \"person\".\"password\"(\"businessentityid\", \"passwordhash\", \"passwordsalt\", \"rowguid\", \"modifieddate\")\nvalues ("), Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.text, unsaved.passwordhash), Fragment.lit(", "), Fragment.encode(PgTypes.text, unsaved.passwordsalt), Fragment.lit(", "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\non conflict (\"businessentityid\")\ndo update set\n \"passwordhash\" = EXCLUDED.\"passwordhash\",\n\"passwordsalt\" = EXCLUDED.\"passwordsalt\",\n\"rowguid\" = EXCLUDED.\"rowguid\",\n\"modifieddate\" = EXCLUDED.\"modifieddate\"\nreturning \"businessentityid\", \"passwordhash\", \"passwordsalt\", \"rowguid\", \"modifieddate\"")) + ): PasswordRow = Fragment.interpolate(Fragment.lit("insert into \"person\".\"password\"(\"businessentityid\", \"passwordhash\", \"passwordsalt\", \"rowguid\", \"modifieddate\")\nvalues ("), Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.text, unsaved.passwordhash), Fragment.lit(", "), Fragment.encode(PgTypes.text, unsaved.passwordsalt), Fragment.lit(", "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\non conflict (\"businessentityid\")\ndo update set\n \"passwordhash\" = EXCLUDED.\"passwordhash\",\n\"passwordsalt\" = EXCLUDED.\"passwordsalt\",\n\"rowguid\" = EXCLUDED.\"rowguid\",\n\"modifieddate\" = EXCLUDED.\"modifieddate\"\nreturning \"businessentityid\", \"passwordhash\", \"passwordsalt\", \"rowguid\", \"modifieddate\"")) .updateReturning(PasswordRow._rowParser.exactlyOne()) .runUnchecked(c) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/password/PasswordRow.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/password/PasswordRow.kt index 8ae8c31064..6ab7ddbdfd 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/password/PasswordRow.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/password/PasswordRow.kt @@ -49,7 +49,7 @@ data class PasswordRow( ): PasswordRowUnsaved = PasswordRowUnsaved(businessentityid, passwordhash, passwordsalt, rowguid, modifieddate) companion object { - val _rowParser: RowParser = RowParsers.of(BusinessentityId.dbType, PgTypes.text, PgTypes.text, PgTypes.uuid, PgTypes.timestamp, { t0, t1, t2, t3, t4 -> PasswordRow(t0, t1, t2, t3, t4) }, { row -> arrayOf(row.businessentityid, row.passwordhash, row.passwordsalt, row.rowguid, row.modifieddate) }) + val _rowParser: RowParser = RowParsers.of(BusinessentityId.pgType, PgTypes.text, PgTypes.text, PgTypes.uuid, PgTypes.timestamp, { t0, t1, t2, t3, t4 -> PasswordRow(t0, t1, t2, t3, t4) }, { row -> arrayOf(row.businessentityid, row.passwordhash, row.passwordsalt, row.rowguid, row.modifieddate) }) val pgText: PgText = PgText.from(_rowParser.underlying) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/password/PasswordRowUnsaved.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/password/PasswordRowUnsaved.kt index f6aa949327..d146c26d6d 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/password/PasswordRowUnsaved.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/password/PasswordRowUnsaved.kt @@ -33,7 +33,7 @@ data class PasswordRowUnsaved( companion object { val pgText: PgText = - PgText.instance({ row, sb -> BusinessentityId.dbType.text().unsafeEncode(row.businessentityid, sb) + PgText.instance({ row, sb -> BusinessentityId.pgType.text().unsafeEncode(row.businessentityid, sb) sb.append(PgText.DELIMETER) PgTypes.text.text().unsafeEncode(row.passwordhash, sb) sb.append(PgText.DELIMETER) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/person/PersonFields.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/person/PersonFields.kt index 8d790c4bed..f01d41e000 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/person/PersonFields.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/person/PersonFields.kt @@ -8,9 +8,10 @@ package adventureworks.person.person import adventureworks.person.businessentity.BusinessentityFields import adventureworks.person.businessentity.BusinessentityId import adventureworks.person.businessentity.BusinessentityRow -import adventureworks.public.Name import adventureworks.public.NameStyle import adventureworks.userdefined.FirstName +import adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import dev.typr.foundations.PgTypes import dev.typr.foundations.RowParser import dev.typr.foundations.data.Xml @@ -29,7 +30,7 @@ import java.time.LocalDateTime import java.util.UUID import kotlin.collections.List -data class PersonFields(val _path: List) : TupleExpr13, RelationStructure, FieldsBase { +data class PersonFields(val _path: List) : TupleExpr13, RelationStructure, FieldsBase { override fun _1(): SqlExpr = businessentityid() override fun _10(): SqlExpr = additionalcontactinfo() @@ -48,9 +49,9 @@ data class PersonFields(val _path: List) : TupleExpr13 = firstname() - override fun _6(): SqlExpr = middlename() + override fun _6(): SqlExpr = middlename() - override fun _7(): SqlExpr = lastname() + override fun _7(): SqlExpr = lastname() override fun _8(): SqlExpr = suffix() @@ -60,7 +61,7 @@ data class PersonFields(val _path: List) : TupleExpr13 = OptField(_path, "additionalcontactinfo", PersonRow::additionalcontactinfo, null, "xml", { row, value -> row.copy(additionalcontactinfo = value) }, PgTypes.xml) - fun businessentityid(): IdField = IdField(_path, "businessentityid", PersonRow::businessentityid, null, "int4", { row, value -> row.copy(businessentityid = value) }, BusinessentityId.dbType) + fun businessentityid(): IdField = IdField(_path, "businessentityid", PersonRow::businessentityid, null, "int4", { row, value -> row.copy(businessentityid = value) }, BusinessentityId.pgType) override fun columns(): List> = listOf(this.businessentityid().underlying, this.persontype().underlying, this.namestyle().underlying, this.title().underlying, this.firstname().underlying, this.middlename().underlying, this.lastname().underlying, this.suffix().underlying, this.emailpromotion().underlying, this.additionalcontactinfo().underlying, this.demographics().underlying, this.rowguid().underlying, this.modifieddate().underlying) @@ -68,17 +69,17 @@ data class PersonFields(val _path: List) : TupleExpr13 = Field(_path, "emailpromotion", PersonRow::emailpromotion, null, "int4", { row, value -> row.copy(emailpromotion = value) }, KotlinDbTypes.PgTypes.int4) - fun firstname(): Field = Field(_path, "firstname", PersonRow::firstname, null, "varchar", { row, value -> row.copy(firstname = value) }, FirstName.dbType) + fun firstname(): Field = Field(_path, "firstname", PersonRow::firstname, null, "varchar", { row, value -> row.copy(firstname = value) }, FirstName.pgType) fun fkBusinessentity(): ForeignKey = ForeignKey.of("person.FK_Person_BusinessEntity_BusinessEntityID").withColumnPair(businessentityid(), BusinessentityFields::businessentityid) - fun lastname(): Field = Field(_path, "lastname", PersonRow::lastname, null, "varchar", { row, value -> row.copy(lastname = value) }, Name.dbType) + fun lastname(): Field = Field(_path, "lastname", PersonRow::lastname, null, "varchar", { row, value -> row.copy(lastname = value) }, LastName.pgType) - fun middlename(): OptField = OptField(_path, "middlename", PersonRow::middlename, null, "varchar", { row, value -> row.copy(middlename = value) }, Name.dbType) + fun middlename(): OptField = OptField(_path, "middlename", PersonRow::middlename, null, "varchar", { row, value -> row.copy(middlename = value) }, MiddleName.pgType) fun modifieddate(): Field = Field(_path, "modifieddate", PersonRow::modifieddate, null, "timestamp", { row, value -> row.copy(modifieddate = value) }, PgTypes.timestamp) - fun namestyle(): Field = Field(_path, "namestyle", PersonRow::namestyle, null, "bool", { row, value -> row.copy(namestyle = value) }, NameStyle.dbType) + fun namestyle(): Field = Field(_path, "namestyle", PersonRow::namestyle, null, "bool", { row, value -> row.copy(namestyle = value) }, NameStyle.pgType) fun persontype(): Field = Field(_path, "persontype", PersonRow::persontype, null, "bpchar", { row, value -> row.copy(persontype = value) }, PgTypes.bpchar) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/person/PersonRepoImpl.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/person/PersonRepoImpl.kt index 63080e88e0..7384cac817 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/person/PersonRepoImpl.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/person/PersonRepoImpl.kt @@ -6,9 +6,10 @@ package adventureworks.person.person import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Name import adventureworks.public.NameStyle import adventureworks.userdefined.FirstName +import adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import dev.typr.foundations.PgTypes import dev.typr.foundations.kotlin.DeleteBuilder import dev.typr.foundations.kotlin.Dialect @@ -31,19 +32,19 @@ class PersonRepoImpl() : PersonRepo { override fun deleteById( businessentityid: BusinessentityId, c: Connection - ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"person\".\"person\" where \"businessentityid\" = "), Fragment.encode(BusinessentityId.dbType, businessentityid), Fragment.lit("")).update().runUnchecked(c) > 0 + ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"person\".\"person\" where \"businessentityid\" = "), Fragment.encode(BusinessentityId.pgType, businessentityid), Fragment.lit("")).update().runUnchecked(c) > 0 override fun deleteByIds( businessentityids: Array, c: Connection - ): Int = Fragment.interpolate(Fragment.lit("delete\nfrom \"person\".\"person\"\nwhere \"businessentityid\" = ANY("), Fragment.encode(BusinessentityId.dbTypeArray, businessentityids), Fragment.lit(")")) + ): Int = Fragment.interpolate(Fragment.lit("delete\nfrom \"person\".\"person\"\nwhere \"businessentityid\" = ANY("), Fragment.encode(BusinessentityId.pgTypeArray, businessentityids), Fragment.lit(")")) .update() .runUnchecked(c) override fun insert( unsaved: PersonRow, c: Connection - ): PersonRow = Fragment.interpolate(Fragment.lit("insert into \"person\".\"person\"(\"businessentityid\", \"persontype\", \"namestyle\", \"title\", \"firstname\", \"middlename\", \"lastname\", \"suffix\", \"emailpromotion\", \"additionalcontactinfo\", \"demographics\", \"rowguid\", \"modifieddate\")\nvalues ("), Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.bpchar, unsaved.persontype), Fragment.lit("::bpchar, "), Fragment.encode(NameStyle.dbType, unsaved.namestyle), Fragment.lit("::bool, "), Fragment.encode(PgTypes.text.nullable(), unsaved.title), Fragment.lit(", "), Fragment.encode(FirstName.dbType, unsaved.firstname), Fragment.lit("::varchar, "), Fragment.encode(Name.dbType.nullable(), unsaved.middlename), Fragment.lit("::varchar, "), Fragment.encode(Name.dbType, unsaved.lastname), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.text.nullable(), unsaved.suffix), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.PgTypes.int4, unsaved.emailpromotion), Fragment.lit("::int4, "), Fragment.encode(PgTypes.xml.nullable(), unsaved.additionalcontactinfo), Fragment.lit("::xml, "), Fragment.encode(PgTypes.xml.nullable(), unsaved.demographics), Fragment.lit("::xml, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\nRETURNING \"businessentityid\", \"persontype\", \"namestyle\", \"title\", \"firstname\", \"middlename\", \"lastname\", \"suffix\", \"emailpromotion\", \"additionalcontactinfo\", \"demographics\", \"rowguid\", \"modifieddate\"\n")) + ): PersonRow = Fragment.interpolate(Fragment.lit("insert into \"person\".\"person\"(\"businessentityid\", \"persontype\", \"namestyle\", \"title\", \"firstname\", \"middlename\", \"lastname\", \"suffix\", \"emailpromotion\", \"additionalcontactinfo\", \"demographics\", \"rowguid\", \"modifieddate\")\nvalues ("), Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.bpchar, unsaved.persontype), Fragment.lit("::bpchar, "), Fragment.encode(NameStyle.pgType, unsaved.namestyle), Fragment.lit("::bool, "), Fragment.encode(PgTypes.text.nullable(), unsaved.title), Fragment.lit(", "), Fragment.encode(FirstName.pgType, unsaved.firstname), Fragment.lit("::varchar, "), Fragment.encode(MiddleName.pgType.nullable(), unsaved.middlename), Fragment.lit("::varchar, "), Fragment.encode(LastName.pgType, unsaved.lastname), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.text.nullable(), unsaved.suffix), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.PgTypes.int4, unsaved.emailpromotion), Fragment.lit("::int4, "), Fragment.encode(PgTypes.xml.nullable(), unsaved.additionalcontactinfo), Fragment.lit("::xml, "), Fragment.encode(PgTypes.xml.nullable(), unsaved.demographics), Fragment.lit("::xml, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\nRETURNING \"businessentityid\", \"persontype\", \"namestyle\", \"title\", \"firstname\", \"middlename\", \"lastname\", \"suffix\", \"emailpromotion\", \"additionalcontactinfo\", \"demographics\", \"rowguid\", \"modifieddate\"\n")) .updateReturning(PersonRow._rowParser.exactlyOne()).runUnchecked(c) override fun insert( @@ -53,17 +54,17 @@ class PersonRepoImpl() : PersonRepo { val columns: ArrayList = ArrayList() val values: ArrayList = ArrayList() columns.add(Fragment.lit("\"businessentityid\"")) - values.add(Fragment.interpolate(Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid), Fragment.lit("::int4"))) + values.add(Fragment.interpolate(Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid), Fragment.lit("::int4"))) columns.add(Fragment.lit("\"persontype\"")) values.add(Fragment.interpolate(Fragment.encode(PgTypes.bpchar, unsaved.persontype), Fragment.lit("::bpchar"))) columns.add(Fragment.lit("\"title\"")) values.add(Fragment.interpolate(Fragment.encode(PgTypes.text.nullable(), unsaved.title), Fragment.lit(""))) columns.add(Fragment.lit("\"firstname\"")) - values.add(Fragment.interpolate(Fragment.encode(FirstName.dbType, unsaved.firstname), Fragment.lit("::varchar"))) + values.add(Fragment.interpolate(Fragment.encode(FirstName.pgType, unsaved.firstname), Fragment.lit("::varchar"))) columns.add(Fragment.lit("\"middlename\"")) - values.add(Fragment.interpolate(Fragment.encode(Name.dbType.nullable(), unsaved.middlename), Fragment.lit("::varchar"))) + values.add(Fragment.interpolate(Fragment.encode(MiddleName.pgType.nullable(), unsaved.middlename), Fragment.lit("::varchar"))) columns.add(Fragment.lit("\"lastname\"")) - values.add(Fragment.interpolate(Fragment.encode(Name.dbType, unsaved.lastname), Fragment.lit("::varchar"))) + values.add(Fragment.interpolate(Fragment.encode(LastName.pgType, unsaved.lastname), Fragment.lit("::varchar"))) columns.add(Fragment.lit("\"suffix\"")) values.add(Fragment.interpolate(Fragment.encode(PgTypes.text.nullable(), unsaved.suffix), Fragment.lit(""))) columns.add(Fragment.lit("\"additionalcontactinfo\"")) @@ -73,7 +74,7 @@ class PersonRepoImpl() : PersonRepo { unsaved.namestyle.visit( { }, { value -> columns.add(Fragment.lit("\"namestyle\"")) - values.add(Fragment.interpolate(Fragment.encode(NameStyle.dbType, value), Fragment.lit("::bool"))) } + values.add(Fragment.interpolate(Fragment.encode(NameStyle.pgType, value), Fragment.lit("::bool"))) } ); unsaved.emailpromotion.visit( { }, @@ -114,12 +115,12 @@ class PersonRepoImpl() : PersonRepo { override fun selectById( businessentityid: BusinessentityId, c: Connection - ): PersonRow? = Fragment.interpolate(Fragment.lit("select \"businessentityid\", \"persontype\", \"namestyle\", \"title\", \"firstname\", \"middlename\", \"lastname\", \"suffix\", \"emailpromotion\", \"additionalcontactinfo\", \"demographics\", \"rowguid\", \"modifieddate\"\nfrom \"person\".\"person\"\nwhere \"businessentityid\" = "), Fragment.encode(BusinessentityId.dbType, businessentityid), Fragment.lit("")).query(PersonRow._rowParser.first()).runUnchecked(c) + ): PersonRow? = Fragment.interpolate(Fragment.lit("select \"businessentityid\", \"persontype\", \"namestyle\", \"title\", \"firstname\", \"middlename\", \"lastname\", \"suffix\", \"emailpromotion\", \"additionalcontactinfo\", \"demographics\", \"rowguid\", \"modifieddate\"\nfrom \"person\".\"person\"\nwhere \"businessentityid\" = "), Fragment.encode(BusinessentityId.pgType, businessentityid), Fragment.lit("")).query(PersonRow._rowParser.first()).runUnchecked(c) override fun selectByIds( businessentityids: Array, c: Connection - ): List = Fragment.interpolate(Fragment.lit("select \"businessentityid\", \"persontype\", \"namestyle\", \"title\", \"firstname\", \"middlename\", \"lastname\", \"suffix\", \"emailpromotion\", \"additionalcontactinfo\", \"demographics\", \"rowguid\", \"modifieddate\"\nfrom \"person\".\"person\"\nwhere \"businessentityid\" = ANY("), Fragment.encode(BusinessentityId.dbTypeArray, businessentityids), Fragment.lit(")")).query(PersonRow._rowParser.all()).runUnchecked(c) + ): List = Fragment.interpolate(Fragment.lit("select \"businessentityid\", \"persontype\", \"namestyle\", \"title\", \"firstname\", \"middlename\", \"lastname\", \"suffix\", \"emailpromotion\", \"additionalcontactinfo\", \"demographics\", \"rowguid\", \"modifieddate\"\nfrom \"person\".\"person\"\nwhere \"businessentityid\" = ANY("), Fragment.encode(BusinessentityId.pgTypeArray, businessentityids), Fragment.lit(")")).query(PersonRow._rowParser.all()).runUnchecked(c) override fun selectByIdsTracked( businessentityids: Array, @@ -137,13 +138,13 @@ class PersonRepoImpl() : PersonRepo { c: Connection ): Boolean { val businessentityid: BusinessentityId = row.businessentityid - return Fragment.interpolate(Fragment.lit("update \"person\".\"person\"\nset \"persontype\" = "), Fragment.encode(PgTypes.bpchar, row.persontype), Fragment.lit("::bpchar,\n\"namestyle\" = "), Fragment.encode(NameStyle.dbType, row.namestyle), Fragment.lit("::bool,\n\"title\" = "), Fragment.encode(PgTypes.text.nullable(), row.title), Fragment.lit(",\n\"firstname\" = "), Fragment.encode(FirstName.dbType, row.firstname), Fragment.lit("::varchar,\n\"middlename\" = "), Fragment.encode(Name.dbType.nullable(), row.middlename), Fragment.lit("::varchar,\n\"lastname\" = "), Fragment.encode(Name.dbType, row.lastname), Fragment.lit("::varchar,\n\"suffix\" = "), Fragment.encode(PgTypes.text.nullable(), row.suffix), Fragment.lit(",\n\"emailpromotion\" = "), Fragment.encode(KotlinDbTypes.PgTypes.int4, row.emailpromotion), Fragment.lit("::int4,\n\"additionalcontactinfo\" = "), Fragment.encode(PgTypes.xml.nullable(), row.additionalcontactinfo), Fragment.lit("::xml,\n\"demographics\" = "), Fragment.encode(PgTypes.xml.nullable(), row.demographics), Fragment.lit("::xml,\n\"rowguid\" = "), Fragment.encode(PgTypes.uuid, row.rowguid), Fragment.lit("::uuid,\n\"modifieddate\" = "), Fragment.encode(PgTypes.timestamp, row.modifieddate), Fragment.lit("::timestamp\nwhere \"businessentityid\" = "), Fragment.encode(BusinessentityId.dbType, businessentityid), Fragment.lit("")).update().runUnchecked(c) > 0 + return Fragment.interpolate(Fragment.lit("update \"person\".\"person\"\nset \"persontype\" = "), Fragment.encode(PgTypes.bpchar, row.persontype), Fragment.lit("::bpchar,\n\"namestyle\" = "), Fragment.encode(NameStyle.pgType, row.namestyle), Fragment.lit("::bool,\n\"title\" = "), Fragment.encode(PgTypes.text.nullable(), row.title), Fragment.lit(",\n\"firstname\" = "), Fragment.encode(FirstName.pgType, row.firstname), Fragment.lit("::varchar,\n\"middlename\" = "), Fragment.encode(MiddleName.pgType.nullable(), row.middlename), Fragment.lit("::varchar,\n\"lastname\" = "), Fragment.encode(LastName.pgType, row.lastname), Fragment.lit("::varchar,\n\"suffix\" = "), Fragment.encode(PgTypes.text.nullable(), row.suffix), Fragment.lit(",\n\"emailpromotion\" = "), Fragment.encode(KotlinDbTypes.PgTypes.int4, row.emailpromotion), Fragment.lit("::int4,\n\"additionalcontactinfo\" = "), Fragment.encode(PgTypes.xml.nullable(), row.additionalcontactinfo), Fragment.lit("::xml,\n\"demographics\" = "), Fragment.encode(PgTypes.xml.nullable(), row.demographics), Fragment.lit("::xml,\n\"rowguid\" = "), Fragment.encode(PgTypes.uuid, row.rowguid), Fragment.lit("::uuid,\n\"modifieddate\" = "), Fragment.encode(PgTypes.timestamp, row.modifieddate), Fragment.lit("::timestamp\nwhere \"businessentityid\" = "), Fragment.encode(BusinessentityId.pgType, businessentityid), Fragment.lit("")).update().runUnchecked(c) > 0 } override fun upsert( unsaved: PersonRow, c: Connection - ): PersonRow = Fragment.interpolate(Fragment.lit("insert into \"person\".\"person\"(\"businessentityid\", \"persontype\", \"namestyle\", \"title\", \"firstname\", \"middlename\", \"lastname\", \"suffix\", \"emailpromotion\", \"additionalcontactinfo\", \"demographics\", \"rowguid\", \"modifieddate\")\nvalues ("), Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.bpchar, unsaved.persontype), Fragment.lit("::bpchar, "), Fragment.encode(NameStyle.dbType, unsaved.namestyle), Fragment.lit("::bool, "), Fragment.encode(PgTypes.text.nullable(), unsaved.title), Fragment.lit(", "), Fragment.encode(FirstName.dbType, unsaved.firstname), Fragment.lit("::varchar, "), Fragment.encode(Name.dbType.nullable(), unsaved.middlename), Fragment.lit("::varchar, "), Fragment.encode(Name.dbType, unsaved.lastname), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.text.nullable(), unsaved.suffix), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.PgTypes.int4, unsaved.emailpromotion), Fragment.lit("::int4, "), Fragment.encode(PgTypes.xml.nullable(), unsaved.additionalcontactinfo), Fragment.lit("::xml, "), Fragment.encode(PgTypes.xml.nullable(), unsaved.demographics), Fragment.lit("::xml, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\non conflict (\"businessentityid\")\ndo update set\n \"persontype\" = EXCLUDED.\"persontype\",\n\"namestyle\" = EXCLUDED.\"namestyle\",\n\"title\" = EXCLUDED.\"title\",\n\"firstname\" = EXCLUDED.\"firstname\",\n\"middlename\" = EXCLUDED.\"middlename\",\n\"lastname\" = EXCLUDED.\"lastname\",\n\"suffix\" = EXCLUDED.\"suffix\",\n\"emailpromotion\" = EXCLUDED.\"emailpromotion\",\n\"additionalcontactinfo\" = EXCLUDED.\"additionalcontactinfo\",\n\"demographics\" = EXCLUDED.\"demographics\",\n\"rowguid\" = EXCLUDED.\"rowguid\",\n\"modifieddate\" = EXCLUDED.\"modifieddate\"\nreturning \"businessentityid\", \"persontype\", \"namestyle\", \"title\", \"firstname\", \"middlename\", \"lastname\", \"suffix\", \"emailpromotion\", \"additionalcontactinfo\", \"demographics\", \"rowguid\", \"modifieddate\"")) + ): PersonRow = Fragment.interpolate(Fragment.lit("insert into \"person\".\"person\"(\"businessentityid\", \"persontype\", \"namestyle\", \"title\", \"firstname\", \"middlename\", \"lastname\", \"suffix\", \"emailpromotion\", \"additionalcontactinfo\", \"demographics\", \"rowguid\", \"modifieddate\")\nvalues ("), Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.bpchar, unsaved.persontype), Fragment.lit("::bpchar, "), Fragment.encode(NameStyle.pgType, unsaved.namestyle), Fragment.lit("::bool, "), Fragment.encode(PgTypes.text.nullable(), unsaved.title), Fragment.lit(", "), Fragment.encode(FirstName.pgType, unsaved.firstname), Fragment.lit("::varchar, "), Fragment.encode(MiddleName.pgType.nullable(), unsaved.middlename), Fragment.lit("::varchar, "), Fragment.encode(LastName.pgType, unsaved.lastname), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.text.nullable(), unsaved.suffix), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.PgTypes.int4, unsaved.emailpromotion), Fragment.lit("::int4, "), Fragment.encode(PgTypes.xml.nullable(), unsaved.additionalcontactinfo), Fragment.lit("::xml, "), Fragment.encode(PgTypes.xml.nullable(), unsaved.demographics), Fragment.lit("::xml, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\non conflict (\"businessentityid\")\ndo update set\n \"persontype\" = EXCLUDED.\"persontype\",\n\"namestyle\" = EXCLUDED.\"namestyle\",\n\"title\" = EXCLUDED.\"title\",\n\"firstname\" = EXCLUDED.\"firstname\",\n\"middlename\" = EXCLUDED.\"middlename\",\n\"lastname\" = EXCLUDED.\"lastname\",\n\"suffix\" = EXCLUDED.\"suffix\",\n\"emailpromotion\" = EXCLUDED.\"emailpromotion\",\n\"additionalcontactinfo\" = EXCLUDED.\"additionalcontactinfo\",\n\"demographics\" = EXCLUDED.\"demographics\",\n\"rowguid\" = EXCLUDED.\"rowguid\",\n\"modifieddate\" = EXCLUDED.\"modifieddate\"\nreturning \"businessentityid\", \"persontype\", \"namestyle\", \"title\", \"firstname\", \"middlename\", \"lastname\", \"suffix\", \"emailpromotion\", \"additionalcontactinfo\", \"demographics\", \"rowguid\", \"modifieddate\"")) .updateReturning(PersonRow._rowParser.exactlyOne()) .runUnchecked(c) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/person/PersonRow.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/person/PersonRow.kt index 3d4a50af31..cf9db752fd 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/person/PersonRow.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/person/PersonRow.kt @@ -7,9 +7,10 @@ package adventureworks.person.person import adventureworks.customtypes.Defaulted import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Name import adventureworks.public.NameStyle import adventureworks.userdefined.FirstName +import adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import dev.typr.foundations.PgText import dev.typr.foundations.PgTypes import dev.typr.foundations.Tuple.Tuple13 @@ -43,9 +44,9 @@ data class PersonRow( /** First name of the person. */ val firstname: /* user-picked */ FirstName, /** Middle name or middle initial of the person. */ - val middlename: Name?, + val middlename: /* user-picked */ MiddleName?, /** Last name of the person. */ - val lastname: Name, + val lastname: /* user-picked */ LastName, /** Surname suffix. For example, Sr. or Jr. */ val suffix: /* max 10 chars */ String?, /** 0 = Contact does not wish to receive e-mail promotions, 1 = Contact does wish to receive e-mail promotions from AdventureWorks, 2 = Contact does wish to receive e-mail promotions from AdventureWorks and selected partners. @@ -61,7 +62,7 @@ data class PersonRow( val rowguid: UUID, /** Default: now() */ val modifieddate: LocalDateTime -) : Tuple13 { +) : Tuple13 { override fun _1(): BusinessentityId = businessentityid override fun _10(): Xml? = additionalcontactinfo @@ -80,9 +81,9 @@ data class PersonRow( override fun _5(): /* user-picked */ FirstName = firstname - override fun _6(): Name? = middlename + override fun _6(): /* user-picked */ MiddleName? = middlename - override fun _7(): Name = lastname + override fun _7(): /* user-picked */ LastName = lastname override fun _8(): /* max 10 chars */ String? = suffix @@ -98,7 +99,7 @@ data class PersonRow( ): PersonRowUnsaved = PersonRowUnsaved(businessentityid, persontype, title, firstname, middlename, lastname, suffix, additionalcontactinfo, demographics, namestyle, emailpromotion, rowguid, modifieddate) companion object { - val _rowParser: RowParser = RowParsers.of(BusinessentityId.dbType, PgTypes.bpchar, NameStyle.dbType, PgTypes.text.nullable(), FirstName.dbType, Name.dbType.nullable(), Name.dbType, PgTypes.text.nullable(), KotlinDbTypes.PgTypes.int4, PgTypes.xml.nullable(), PgTypes.xml.nullable(), PgTypes.uuid, PgTypes.timestamp, { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12 -> PersonRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12) }, { row -> arrayOf(row.businessentityid, row.persontype, row.namestyle, row.title, row.firstname, row.middlename, row.lastname, row.suffix, row.emailpromotion, row.additionalcontactinfo, row.demographics, row.rowguid, row.modifieddate) }) + val _rowParser: RowParser = RowParsers.of(BusinessentityId.pgType, PgTypes.bpchar, NameStyle.pgType, PgTypes.text.nullable(), FirstName.pgType, MiddleName.pgType.nullable(), LastName.pgType, PgTypes.text.nullable(), KotlinDbTypes.PgTypes.int4, PgTypes.xml.nullable(), PgTypes.xml.nullable(), PgTypes.uuid, PgTypes.timestamp, { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12 -> PersonRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12) }, { row -> arrayOf(row.businessentityid, row.persontype, row.namestyle, row.title, row.firstname, row.middlename, row.lastname, row.suffix, row.emailpromotion, row.additionalcontactinfo, row.demographics, row.rowguid, row.modifieddate) }) val pgText: PgText = PgText.from(_rowParser.underlying) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/person/PersonRowUnsaved.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/person/PersonRowUnsaved.kt index 9893478c7d..99e62f6168 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/person/PersonRowUnsaved.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/person/PersonRowUnsaved.kt @@ -8,9 +8,10 @@ package adventureworks.person.person import adventureworks.customtypes.Defaulted import adventureworks.customtypes.Defaulted.UseDefault import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Name import adventureworks.public.NameStyle import adventureworks.userdefined.FirstName +import adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import dev.typr.foundations.PgText import dev.typr.foundations.PgTypes import dev.typr.foundations.data.Xml @@ -34,9 +35,9 @@ data class PersonRowUnsaved( /** First name of the person. */ val firstname: /* user-picked */ FirstName, /** Middle name or middle initial of the person. */ - val middlename: Name? = null, + val middlename: /* user-picked */ MiddleName? = null, /** Last name of the person. */ - val lastname: Name, + val lastname: /* user-picked */ LastName, /** Surname suffix. For example, Sr. or Jr. */ val suffix: /* max 10 chars */ String? = null, /** Additional contact information about the person stored in xml format. */ @@ -66,17 +67,17 @@ data class PersonRowUnsaved( companion object { val pgText: PgText = - PgText.instance({ row, sb -> BusinessentityId.dbType.text().unsafeEncode(row.businessentityid, sb) + PgText.instance({ row, sb -> BusinessentityId.pgType.text().unsafeEncode(row.businessentityid, sb) sb.append(PgText.DELIMETER) PgTypes.bpchar.text().unsafeEncode(row.persontype, sb) sb.append(PgText.DELIMETER) PgTypes.text.nullable().text().unsafeEncode(row.title, sb) sb.append(PgText.DELIMETER) - FirstName.dbType.text().unsafeEncode(row.firstname, sb) + FirstName.pgType.text().unsafeEncode(row.firstname, sb) sb.append(PgText.DELIMETER) - Name.dbType.nullable().text().unsafeEncode(row.middlename, sb) + MiddleName.pgType.nullable().text().unsafeEncode(row.middlename, sb) sb.append(PgText.DELIMETER) - Name.dbType.text().unsafeEncode(row.lastname, sb) + LastName.pgType.text().unsafeEncode(row.lastname, sb) sb.append(PgText.DELIMETER) PgTypes.text.nullable().text().unsafeEncode(row.suffix, sb) sb.append(PgText.DELIMETER) @@ -84,7 +85,7 @@ data class PersonRowUnsaved( sb.append(PgText.DELIMETER) PgTypes.xml.nullable().text().unsafeEncode(row.demographics, sb) sb.append(PgText.DELIMETER) - Defaulted.pgText(NameStyle.dbType.text()).unsafeEncode(row.namestyle, sb) + Defaulted.pgText(NameStyle.pgType.text()).unsafeEncode(row.namestyle, sb) sb.append(PgText.DELIMETER) Defaulted.pgText(KotlinDbTypes.PgTypes.int4.text()).unsafeEncode(row.emailpromotion, sb) sb.append(PgText.DELIMETER) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceFields.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceFields.kt index 76b3c57d90..544255bd32 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceFields.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceFields.kt @@ -49,17 +49,17 @@ data class StateprovinceFields(val _path: List) : TupleExpr8> = listOf(this.stateprovinceid().underlying, this.stateprovincecode().underlying, this.countryregioncode().underlying, this.isonlystateprovinceflag().underlying, this.name().underlying, this.territoryid().underlying, this.rowguid().underlying, this.modifieddate().underlying) - fun countryregioncode(): Field = Field(_path, "countryregioncode", StateprovinceRow::countryregioncode, null, null, { row, value -> row.copy(countryregioncode = value) }, CountryregionId.dbType) + fun countryregioncode(): Field = Field(_path, "countryregioncode", StateprovinceRow::countryregioncode, null, null, { row, value -> row.copy(countryregioncode = value) }, CountryregionId.pgType) fun fkCountryregion(): ForeignKey = ForeignKey.of("person.FK_StateProvince_CountryRegion_CountryRegionCode").withColumnPair(countryregioncode(), CountryregionFields::countryregioncode) fun fkSalesSalesterritory(): ForeignKey = ForeignKey.of("person.FK_StateProvince_SalesTerritory_TerritoryID").withColumnPair(territoryid(), SalesterritoryFields::territoryid) - fun isonlystateprovinceflag(): Field = Field(_path, "isonlystateprovinceflag", StateprovinceRow::isonlystateprovinceflag, null, "bool", { row, value -> row.copy(isonlystateprovinceflag = value) }, Flag.dbType) + fun isonlystateprovinceflag(): Field = Field(_path, "isonlystateprovinceflag", StateprovinceRow::isonlystateprovinceflag, null, "bool", { row, value -> row.copy(isonlystateprovinceflag = value) }, Flag.pgType) fun modifieddate(): Field = Field(_path, "modifieddate", StateprovinceRow::modifieddate, null, "timestamp", { row, value -> row.copy(modifieddate = value) }, PgTypes.timestamp) - fun name(): Field = Field(_path, "name", StateprovinceRow::name, null, "varchar", { row, value -> row.copy(name = value) }, Name.dbType) + fun name(): Field = Field(_path, "name", StateprovinceRow::name, null, "varchar", { row, value -> row.copy(name = value) }, Name.pgType) override fun rowParser(): RowParser = StateprovinceRow._rowParser.underlying @@ -67,9 +67,9 @@ data class StateprovinceFields(val _path: List) : TupleExpr8 = Field(_path, "stateprovincecode", StateprovinceRow::stateprovincecode, null, "bpchar", { row, value -> row.copy(stateprovincecode = value) }, PgTypes.bpchar) - fun stateprovinceid(): IdField = IdField(_path, "stateprovinceid", StateprovinceRow::stateprovinceid, null, "int4", { row, value -> row.copy(stateprovinceid = value) }, StateprovinceId.dbType) + fun stateprovinceid(): IdField = IdField(_path, "stateprovinceid", StateprovinceRow::stateprovinceid, null, "int4", { row, value -> row.copy(stateprovinceid = value) }, StateprovinceId.pgType) - fun territoryid(): Field = Field(_path, "territoryid", StateprovinceRow::territoryid, null, "int4", { row, value -> row.copy(territoryid = value) }, SalesterritoryId.dbType) + fun territoryid(): Field = Field(_path, "territoryid", StateprovinceRow::territoryid, null, "int4", { row, value -> row.copy(territoryid = value) }, SalesterritoryId.pgType) override fun withPaths(_path: List): RelationStructure = StateprovinceFields(_path) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceId.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceId.kt index 8258a302af..819614067f 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceId.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceId.kt @@ -22,10 +22,10 @@ data class StateprovinceId(@field:JsonValue val value: Int) { val bijection: Bijection = Bijection.of(StateprovinceId::value, ::StateprovinceId) - val dbType: PgType = + val pgType: PgType = KotlinDbTypes.PgTypes.int4.bimap(::StateprovinceId, StateprovinceId::value) - val dbTypeArray: PgType> = + val pgTypeArray: PgType> = PgTypes.int4Array.bimap({ xs -> arrayMap.map(xs, ::StateprovinceId, StateprovinceId::class.java) }, { xs -> arrayMap.map(xs, StateprovinceId::value, Int::class.javaObjectType) }) } } \ No newline at end of file diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRepoImpl.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRepoImpl.kt index 51fa9a4aaa..d8be8587e7 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRepoImpl.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRepoImpl.kt @@ -29,19 +29,19 @@ class StateprovinceRepoImpl() : StateprovinceRepo { override fun deleteById( stateprovinceid: StateprovinceId, c: Connection - ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"person\".\"stateprovince\" where \"stateprovinceid\" = "), Fragment.encode(StateprovinceId.dbType, stateprovinceid), Fragment.lit("")).update().runUnchecked(c) > 0 + ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"person\".\"stateprovince\" where \"stateprovinceid\" = "), Fragment.encode(StateprovinceId.pgType, stateprovinceid), Fragment.lit("")).update().runUnchecked(c) > 0 override fun deleteByIds( stateprovinceids: Array, c: Connection - ): Int = Fragment.interpolate(Fragment.lit("delete\nfrom \"person\".\"stateprovince\"\nwhere \"stateprovinceid\" = ANY("), Fragment.encode(StateprovinceId.dbTypeArray, stateprovinceids), Fragment.lit(")")) + ): Int = Fragment.interpolate(Fragment.lit("delete\nfrom \"person\".\"stateprovince\"\nwhere \"stateprovinceid\" = ANY("), Fragment.encode(StateprovinceId.pgTypeArray, stateprovinceids), Fragment.lit(")")) .update() .runUnchecked(c) override fun insert( unsaved: StateprovinceRow, c: Connection - ): StateprovinceRow = Fragment.interpolate(Fragment.lit("insert into \"person\".\"stateprovince\"(\"stateprovinceid\", \"stateprovincecode\", \"countryregioncode\", \"isonlystateprovinceflag\", \"name\", \"territoryid\", \"rowguid\", \"modifieddate\")\nvalues ("), Fragment.encode(StateprovinceId.dbType, unsaved.stateprovinceid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.bpchar, unsaved.stateprovincecode), Fragment.lit("::bpchar, "), Fragment.encode(CountryregionId.dbType, unsaved.countryregioncode), Fragment.lit(", "), Fragment.encode(Flag.dbType, unsaved.isonlystateprovinceflag), Fragment.lit("::bool, "), Fragment.encode(Name.dbType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(SalesterritoryId.dbType, unsaved.territoryid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\nRETURNING \"stateprovinceid\", \"stateprovincecode\", \"countryregioncode\", \"isonlystateprovinceflag\", \"name\", \"territoryid\", \"rowguid\", \"modifieddate\"\n")) + ): StateprovinceRow = Fragment.interpolate(Fragment.lit("insert into \"person\".\"stateprovince\"(\"stateprovinceid\", \"stateprovincecode\", \"countryregioncode\", \"isonlystateprovinceflag\", \"name\", \"territoryid\", \"rowguid\", \"modifieddate\")\nvalues ("), Fragment.encode(StateprovinceId.pgType, unsaved.stateprovinceid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.bpchar, unsaved.stateprovincecode), Fragment.lit("::bpchar, "), Fragment.encode(CountryregionId.pgType, unsaved.countryregioncode), Fragment.lit(", "), Fragment.encode(Flag.pgType, unsaved.isonlystateprovinceflag), Fragment.lit("::bool, "), Fragment.encode(Name.pgType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(SalesterritoryId.pgType, unsaved.territoryid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\nRETURNING \"stateprovinceid\", \"stateprovincecode\", \"countryregioncode\", \"isonlystateprovinceflag\", \"name\", \"territoryid\", \"rowguid\", \"modifieddate\"\n")) .updateReturning(StateprovinceRow._rowParser.exactlyOne()).runUnchecked(c) override fun insert( @@ -53,20 +53,20 @@ class StateprovinceRepoImpl() : StateprovinceRepo { columns.add(Fragment.lit("\"stateprovincecode\"")) values.add(Fragment.interpolate(Fragment.encode(PgTypes.bpchar, unsaved.stateprovincecode), Fragment.lit("::bpchar"))) columns.add(Fragment.lit("\"countryregioncode\"")) - values.add(Fragment.interpolate(Fragment.encode(CountryregionId.dbType, unsaved.countryregioncode), Fragment.lit(""))) + values.add(Fragment.interpolate(Fragment.encode(CountryregionId.pgType, unsaved.countryregioncode), Fragment.lit(""))) columns.add(Fragment.lit("\"name\"")) - values.add(Fragment.interpolate(Fragment.encode(Name.dbType, unsaved.name), Fragment.lit("::varchar"))) + values.add(Fragment.interpolate(Fragment.encode(Name.pgType, unsaved.name), Fragment.lit("::varchar"))) columns.add(Fragment.lit("\"territoryid\"")) - values.add(Fragment.interpolate(Fragment.encode(SalesterritoryId.dbType, unsaved.territoryid), Fragment.lit("::int4"))) + values.add(Fragment.interpolate(Fragment.encode(SalesterritoryId.pgType, unsaved.territoryid), Fragment.lit("::int4"))) unsaved.stateprovinceid.visit( { }, { value -> columns.add(Fragment.lit("\"stateprovinceid\"")) - values.add(Fragment.interpolate(Fragment.encode(StateprovinceId.dbType, value), Fragment.lit("::int4"))) } + values.add(Fragment.interpolate(Fragment.encode(StateprovinceId.pgType, value), Fragment.lit("::int4"))) } ); unsaved.isonlystateprovinceflag.visit( { }, { value -> columns.add(Fragment.lit("\"isonlystateprovinceflag\"")) - values.add(Fragment.interpolate(Fragment.encode(Flag.dbType, value), Fragment.lit("::bool"))) } + values.add(Fragment.interpolate(Fragment.encode(Flag.pgType, value), Fragment.lit("::bool"))) } ); unsaved.rowguid.visit( { }, @@ -102,12 +102,12 @@ class StateprovinceRepoImpl() : StateprovinceRepo { override fun selectById( stateprovinceid: StateprovinceId, c: Connection - ): StateprovinceRow? = Fragment.interpolate(Fragment.lit("select \"stateprovinceid\", \"stateprovincecode\", \"countryregioncode\", \"isonlystateprovinceflag\", \"name\", \"territoryid\", \"rowguid\", \"modifieddate\"\nfrom \"person\".\"stateprovince\"\nwhere \"stateprovinceid\" = "), Fragment.encode(StateprovinceId.dbType, stateprovinceid), Fragment.lit("")).query(StateprovinceRow._rowParser.first()).runUnchecked(c) + ): StateprovinceRow? = Fragment.interpolate(Fragment.lit("select \"stateprovinceid\", \"stateprovincecode\", \"countryregioncode\", \"isonlystateprovinceflag\", \"name\", \"territoryid\", \"rowguid\", \"modifieddate\"\nfrom \"person\".\"stateprovince\"\nwhere \"stateprovinceid\" = "), Fragment.encode(StateprovinceId.pgType, stateprovinceid), Fragment.lit("")).query(StateprovinceRow._rowParser.first()).runUnchecked(c) override fun selectByIds( stateprovinceids: Array, c: Connection - ): List = Fragment.interpolate(Fragment.lit("select \"stateprovinceid\", \"stateprovincecode\", \"countryregioncode\", \"isonlystateprovinceflag\", \"name\", \"territoryid\", \"rowguid\", \"modifieddate\"\nfrom \"person\".\"stateprovince\"\nwhere \"stateprovinceid\" = ANY("), Fragment.encode(StateprovinceId.dbTypeArray, stateprovinceids), Fragment.lit(")")).query(StateprovinceRow._rowParser.all()).runUnchecked(c) + ): List = Fragment.interpolate(Fragment.lit("select \"stateprovinceid\", \"stateprovincecode\", \"countryregioncode\", \"isonlystateprovinceflag\", \"name\", \"territoryid\", \"rowguid\", \"modifieddate\"\nfrom \"person\".\"stateprovince\"\nwhere \"stateprovinceid\" = ANY("), Fragment.encode(StateprovinceId.pgTypeArray, stateprovinceids), Fragment.lit(")")).query(StateprovinceRow._rowParser.all()).runUnchecked(c) override fun selectByIdsTracked( stateprovinceids: Array, @@ -125,13 +125,13 @@ class StateprovinceRepoImpl() : StateprovinceRepo { c: Connection ): Boolean { val stateprovinceid: StateprovinceId = row.stateprovinceid - return Fragment.interpolate(Fragment.lit("update \"person\".\"stateprovince\"\nset \"stateprovincecode\" = "), Fragment.encode(PgTypes.bpchar, row.stateprovincecode), Fragment.lit("::bpchar,\n\"countryregioncode\" = "), Fragment.encode(CountryregionId.dbType, row.countryregioncode), Fragment.lit(",\n\"isonlystateprovinceflag\" = "), Fragment.encode(Flag.dbType, row.isonlystateprovinceflag), Fragment.lit("::bool,\n\"name\" = "), Fragment.encode(Name.dbType, row.name), Fragment.lit("::varchar,\n\"territoryid\" = "), Fragment.encode(SalesterritoryId.dbType, row.territoryid), Fragment.lit("::int4,\n\"rowguid\" = "), Fragment.encode(PgTypes.uuid, row.rowguid), Fragment.lit("::uuid,\n\"modifieddate\" = "), Fragment.encode(PgTypes.timestamp, row.modifieddate), Fragment.lit("::timestamp\nwhere \"stateprovinceid\" = "), Fragment.encode(StateprovinceId.dbType, stateprovinceid), Fragment.lit("")).update().runUnchecked(c) > 0 + return Fragment.interpolate(Fragment.lit("update \"person\".\"stateprovince\"\nset \"stateprovincecode\" = "), Fragment.encode(PgTypes.bpchar, row.stateprovincecode), Fragment.lit("::bpchar,\n\"countryregioncode\" = "), Fragment.encode(CountryregionId.pgType, row.countryregioncode), Fragment.lit(",\n\"isonlystateprovinceflag\" = "), Fragment.encode(Flag.pgType, row.isonlystateprovinceflag), Fragment.lit("::bool,\n\"name\" = "), Fragment.encode(Name.pgType, row.name), Fragment.lit("::varchar,\n\"territoryid\" = "), Fragment.encode(SalesterritoryId.pgType, row.territoryid), Fragment.lit("::int4,\n\"rowguid\" = "), Fragment.encode(PgTypes.uuid, row.rowguid), Fragment.lit("::uuid,\n\"modifieddate\" = "), Fragment.encode(PgTypes.timestamp, row.modifieddate), Fragment.lit("::timestamp\nwhere \"stateprovinceid\" = "), Fragment.encode(StateprovinceId.pgType, stateprovinceid), Fragment.lit("")).update().runUnchecked(c) > 0 } override fun upsert( unsaved: StateprovinceRow, c: Connection - ): StateprovinceRow = Fragment.interpolate(Fragment.lit("insert into \"person\".\"stateprovince\"(\"stateprovinceid\", \"stateprovincecode\", \"countryregioncode\", \"isonlystateprovinceflag\", \"name\", \"territoryid\", \"rowguid\", \"modifieddate\")\nvalues ("), Fragment.encode(StateprovinceId.dbType, unsaved.stateprovinceid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.bpchar, unsaved.stateprovincecode), Fragment.lit("::bpchar, "), Fragment.encode(CountryregionId.dbType, unsaved.countryregioncode), Fragment.lit(", "), Fragment.encode(Flag.dbType, unsaved.isonlystateprovinceflag), Fragment.lit("::bool, "), Fragment.encode(Name.dbType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(SalesterritoryId.dbType, unsaved.territoryid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\non conflict (\"stateprovinceid\")\ndo update set\n \"stateprovincecode\" = EXCLUDED.\"stateprovincecode\",\n\"countryregioncode\" = EXCLUDED.\"countryregioncode\",\n\"isonlystateprovinceflag\" = EXCLUDED.\"isonlystateprovinceflag\",\n\"name\" = EXCLUDED.\"name\",\n\"territoryid\" = EXCLUDED.\"territoryid\",\n\"rowguid\" = EXCLUDED.\"rowguid\",\n\"modifieddate\" = EXCLUDED.\"modifieddate\"\nreturning \"stateprovinceid\", \"stateprovincecode\", \"countryregioncode\", \"isonlystateprovinceflag\", \"name\", \"territoryid\", \"rowguid\", \"modifieddate\"")) + ): StateprovinceRow = Fragment.interpolate(Fragment.lit("insert into \"person\".\"stateprovince\"(\"stateprovinceid\", \"stateprovincecode\", \"countryregioncode\", \"isonlystateprovinceflag\", \"name\", \"territoryid\", \"rowguid\", \"modifieddate\")\nvalues ("), Fragment.encode(StateprovinceId.pgType, unsaved.stateprovinceid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.bpchar, unsaved.stateprovincecode), Fragment.lit("::bpchar, "), Fragment.encode(CountryregionId.pgType, unsaved.countryregioncode), Fragment.lit(", "), Fragment.encode(Flag.pgType, unsaved.isonlystateprovinceflag), Fragment.lit("::bool, "), Fragment.encode(Name.pgType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(SalesterritoryId.pgType, unsaved.territoryid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\non conflict (\"stateprovinceid\")\ndo update set\n \"stateprovincecode\" = EXCLUDED.\"stateprovincecode\",\n\"countryregioncode\" = EXCLUDED.\"countryregioncode\",\n\"isonlystateprovinceflag\" = EXCLUDED.\"isonlystateprovinceflag\",\n\"name\" = EXCLUDED.\"name\",\n\"territoryid\" = EXCLUDED.\"territoryid\",\n\"rowguid\" = EXCLUDED.\"rowguid\",\n\"modifieddate\" = EXCLUDED.\"modifieddate\"\nreturning \"stateprovinceid\", \"stateprovincecode\", \"countryregioncode\", \"isonlystateprovinceflag\", \"name\", \"territoryid\", \"rowguid\", \"modifieddate\"")) .updateReturning(StateprovinceRow._rowParser.exactlyOne()) .runUnchecked(c) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRow.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRow.kt index 0320581876..319a561812 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRow.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRow.kt @@ -74,7 +74,7 @@ data class StateprovinceRow( ): StateprovinceRowUnsaved = StateprovinceRowUnsaved(stateprovincecode, countryregioncode, name, territoryid, stateprovinceid, isonlystateprovinceflag, rowguid, modifieddate) companion object { - val _rowParser: RowParser = RowParsers.of(StateprovinceId.dbType, PgTypes.bpchar, CountryregionId.dbType, Flag.dbType, Name.dbType, SalesterritoryId.dbType, PgTypes.uuid, PgTypes.timestamp, { t0, t1, t2, t3, t4, t5, t6, t7 -> StateprovinceRow(t0, t1, t2, t3, t4, t5, t6, t7) }, { row -> arrayOf(row.stateprovinceid, row.stateprovincecode, row.countryregioncode, row.isonlystateprovinceflag, row.name, row.territoryid, row.rowguid, row.modifieddate) }) + val _rowParser: RowParser = RowParsers.of(StateprovinceId.pgType, PgTypes.bpchar, CountryregionId.pgType, Flag.pgType, Name.pgType, SalesterritoryId.pgType, PgTypes.uuid, PgTypes.timestamp, { t0, t1, t2, t3, t4, t5, t6, t7 -> StateprovinceRow(t0, t1, t2, t3, t4, t5, t6, t7) }, { row -> arrayOf(row.stateprovinceid, row.stateprovincecode, row.countryregioncode, row.isonlystateprovinceflag, row.name, row.territoryid, row.rowguid, row.modifieddate) }) val pgText: PgText = PgText.from(_rowParser.underlying) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRowUnsaved.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRowUnsaved.kt index 78496e318b..5cfd60f855 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRowUnsaved.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRowUnsaved.kt @@ -54,15 +54,15 @@ data class StateprovinceRowUnsaved( val pgText: PgText = PgText.instance({ row, sb -> PgTypes.bpchar.text().unsafeEncode(row.stateprovincecode, sb) sb.append(PgText.DELIMETER) - CountryregionId.dbType.text().unsafeEncode(row.countryregioncode, sb) + CountryregionId.pgType.text().unsafeEncode(row.countryregioncode, sb) sb.append(PgText.DELIMETER) - Name.dbType.text().unsafeEncode(row.name, sb) + Name.pgType.text().unsafeEncode(row.name, sb) sb.append(PgText.DELIMETER) - SalesterritoryId.dbType.text().unsafeEncode(row.territoryid, sb) + SalesterritoryId.pgType.text().unsafeEncode(row.territoryid, sb) sb.append(PgText.DELIMETER) - Defaulted.pgText(StateprovinceId.dbType.text()).unsafeEncode(row.stateprovinceid, sb) + Defaulted.pgText(StateprovinceId.pgType.text()).unsafeEncode(row.stateprovinceid, sb) sb.append(PgText.DELIMETER) - Defaulted.pgText(Flag.dbType.text()).unsafeEncode(row.isonlystateprovinceflag, sb) + Defaulted.pgText(Flag.pgType.text()).unsafeEncode(row.isonlystateprovinceflag, sb) sb.append(PgText.DELIMETER) Defaulted.pgText(PgTypes.uuid.text()).unsafeEncode(row.rowguid, sb) sb.append(PgText.DELIMETER) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person_detail/PersonDetailSqlRepoImpl.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person_detail/PersonDetailSqlRepoImpl.kt index 418293d768..fbf92fc6fb 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person_detail/PersonDetailSqlRepoImpl.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person_detail/PersonDetailSqlRepoImpl.kt @@ -17,5 +17,5 @@ class PersonDetailSqlRepoImpl() : PersonDetailSqlRepo { businessentityid: /* user-picked */ BusinessentityId, modifiedAfter: LocalDateTime, c: Connection - ): List = Fragment.interpolate(Fragment.lit("SELECT s.businessentityid,\n p.title,\n p.firstname,\n p.middlename,\n p.lastname,\n e.jobtitle,\n a.addressline1,\n a.city,\n a.postalcode,\n a.rowguid\nFROM sales.salesperson s\n JOIN humanresources.employee e ON e.businessentityid = s.businessentityid\n JOIN person.person p ON p.businessentityid = s.businessentityid\n JOIN person.businessentityaddress bea ON bea.businessentityid = s.businessentityid\n LEFT JOIN person.address a ON a.addressid = bea.addressid\nwhere s.businessentityid = "), Fragment.encode(BusinessentityId.dbType, businessentityid), Fragment.lit("::int4\n and p.modifieddate > "), Fragment.encode(PgTypes.timestamp, modifiedAfter), Fragment.lit("::timestamp")).query(PersonDetailSqlRow._rowParser.all()).runUnchecked(c) + ): List = Fragment.interpolate(Fragment.lit("SELECT s.businessentityid,\n p.title,\n p.firstname,\n p.middlename,\n p.lastname,\n e.jobtitle,\n a.addressline1,\n a.city,\n a.postalcode,\n a.rowguid\nFROM sales.salesperson s\n JOIN humanresources.employee e ON e.businessentityid = s.businessentityid\n JOIN person.person p ON p.businessentityid = s.businessentityid\n JOIN person.businessentityaddress bea ON bea.businessentityid = s.businessentityid\n LEFT JOIN person.address a ON a.addressid = bea.addressid\nwhere s.businessentityid = "), Fragment.encode(BusinessentityId.pgType, businessentityid), Fragment.lit("::int4\n and p.modifieddate > "), Fragment.encode(PgTypes.timestamp, modifiedAfter), Fragment.lit("::timestamp")).query(PersonDetailSqlRow._rowParser.all()).runUnchecked(c) } \ No newline at end of file diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person_detail/PersonDetailSqlRow.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person_detail/PersonDetailSqlRow.kt index 2b26e815da..a39706873e 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person_detail/PersonDetailSqlRow.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person_detail/PersonDetailSqlRow.kt @@ -6,8 +6,9 @@ package adventureworks.person_detail import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Name import adventureworks.userdefined.FirstName +import adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import dev.typr.foundations.PgTypes import dev.typr.foundations.Tuple.Tuple10 import dev.typr.foundations.kotlin.RowParser @@ -24,9 +25,9 @@ data class PersonDetailSqlRow( /** Points to [adventureworks.person.person.PersonRow.firstname] */ val firstname: /* user-picked */ FirstName, /** Points to [adventureworks.person.person.PersonRow.middlename] */ - val middlename: Name?, + val middlename: /* user-picked */ MiddleName?, /** Points to [adventureworks.person.person.PersonRow.lastname] */ - val lastname: Name, + val lastname: /* user-picked */ LastName, /** Points to [adventureworks.humanresources.employee.EmployeeRow.jobtitle] */ val jobtitle: String, /** Points to [adventureworks.person.address.AddressRow.addressline1] */ @@ -37,7 +38,7 @@ data class PersonDetailSqlRow( val postalcode: String?, /** Points to [adventureworks.person.address.AddressRow.rowguid] */ val rowguid: UUID? -) : Tuple10 { +) : Tuple10 { override fun _1(): BusinessentityId = businessentityid override fun _10(): UUID? = rowguid @@ -46,9 +47,9 @@ data class PersonDetailSqlRow( override fun _3(): /* user-picked */ FirstName = firstname - override fun _4(): Name? = middlename + override fun _4(): /* user-picked */ MiddleName? = middlename - override fun _5(): Name = lastname + override fun _5(): /* user-picked */ LastName = lastname override fun _6(): String = jobtitle @@ -59,6 +60,6 @@ data class PersonDetailSqlRow( override fun _9(): String? = postalcode companion object { - val _rowParser: RowParser = RowParsers.of(BusinessentityId.dbType, PgTypes.text.nullable(), FirstName.dbType, Name.dbType.nullable(), Name.dbType, PgTypes.text, PgTypes.text.nullable(), PgTypes.text.nullable(), PgTypes.text.nullable(), PgTypes.uuid.nullable(), { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9 -> PersonDetailSqlRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9) }, { row -> arrayOf(row.businessentityid, row.title, row.firstname, row.middlename, row.lastname, row.jobtitle, row.addressline1, row.city, row.postalcode, row.rowguid) }) + val _rowParser: RowParser = RowParsers.of(BusinessentityId.pgType, PgTypes.text.nullable(), FirstName.pgType, MiddleName.pgType.nullable(), LastName.pgType, PgTypes.text, PgTypes.text.nullable(), PgTypes.text.nullable(), PgTypes.text.nullable(), PgTypes.uuid.nullable(), { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9 -> PersonDetailSqlRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9) }, { row -> arrayOf(row.businessentityid, row.title, row.firstname, row.middlename, row.lastname, row.jobtitle, row.addressline1, row.city, row.postalcode, row.rowguid) }) } } \ No newline at end of file diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person_dynamic/PersonDynamicSqlRow.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person_dynamic/PersonDynamicSqlRow.kt index 059c5c03fe..66791d9069 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person_dynamic/PersonDynamicSqlRow.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person_dynamic/PersonDynamicSqlRow.kt @@ -5,8 +5,9 @@ */ package adventureworks.person_dynamic -import adventureworks.public.Name import adventureworks.userdefined.FirstName +import adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import dev.typr.foundations.PgTypes import dev.typr.foundations.Tuple.Tuple4 import dev.typr.foundations.kotlin.RowParser @@ -20,19 +21,19 @@ data class PersonDynamicSqlRow( /** Points to [adventureworks.person.person.PersonRow.firstname] */ val firstname: /* user-picked */ FirstName, /** Points to [adventureworks.person.person.PersonRow.middlename] */ - val middlename: Name?, + val middlename: /* user-picked */ MiddleName?, /** Points to [adventureworks.person.person.PersonRow.lastname] */ - val lastname: Name -) : Tuple4 { + val lastname: /* user-picked */ LastName +) : Tuple4 { override fun _1(): /* max 8 chars */ String? = title override fun _2(): /* user-picked */ FirstName = firstname - override fun _3(): Name? = middlename + override fun _3(): /* user-picked */ MiddleName? = middlename - override fun _4(): Name = lastname + override fun _4(): /* user-picked */ LastName = lastname companion object { - val _rowParser: RowParser = RowParsers.of(PgTypes.text.nullable(), FirstName.dbType, Name.dbType.nullable(), Name.dbType, { t0, t1, t2, t3 -> PersonDynamicSqlRow(t0, t1, t2, t3) }, { row -> arrayOf(row.title, row.firstname, row.middlename, row.lastname) }) + val _rowParser: RowParser = RowParsers.of(PgTypes.text.nullable(), FirstName.pgType, MiddleName.pgType.nullable(), LastName.pgType, { t0, t1, t2, t3 -> PersonDynamicSqlRow(t0, t1, t2, t3) }, { row -> arrayOf(row.title, row.firstname, row.middlename, row.lastname) }) } } \ No newline at end of file diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person_row_join/PersonRowJoinSqlRow.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person_row_join/PersonRowJoinSqlRow.kt index 3f9b7aa8b0..9ebb1b7e2d 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/person_row_join/PersonRowJoinSqlRow.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/person_row_join/PersonRowJoinSqlRow.kt @@ -27,6 +27,6 @@ data class PersonRowJoinSqlRow( override fun _3(): Array? = emails companion object { - val _rowParser: RowParser = RowParsers.of(BusinessentityId.dbType, PgTypes.recordArray.nullable(), PgTypes.recordArray.nullable(), { t0, t1, t2 -> PersonRowJoinSqlRow(t0, t1, t2) }, { row -> arrayOf(row.businessentityid, row.email, row.emails) }) + val _rowParser: RowParser = RowParsers.of(BusinessentityId.pgType, PgTypes.recordArray.nullable(), PgTypes.recordArray.nullable(), { t0, t1, t2 -> PersonRowJoinSqlRow(t0, t1, t2) }, { row -> arrayOf(row.businessentityid, row.email, row.emails) }) } } \ No newline at end of file diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/precisetypes/PaddedString10.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/precisetypes/PaddedString10.kt index 452467cf67..a39199a72f 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/precisetypes/PaddedString10.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/precisetypes/PaddedString10.kt @@ -41,14 +41,14 @@ data class PaddedString10 private constructor(@field:JsonValue val value: String val bijection: Bijection = Bijection.of(PaddedString10::value, ::PaddedString10) - val dbType: PgType = + fun of(value: String): PaddedString10? = if (value.length <= 10) PaddedString10(String.format("%-10s", value)) else null + + val pgType: PgType = PgTypes.bpchar.bimap(::PaddedString10, PaddedString10::value) - val dbTypeArray: PgType> = + val pgTypeArray: PgType> = PgTypes.bpcharArray.bimap({ xs -> arrayMap.map(xs, ::PaddedString10, PaddedString10::class.java) }, { xs -> arrayMap.map(xs, PaddedString10::value, String::class.java) }) - fun of(value: String): PaddedString10? = if (value.length <= 10) PaddedString10(String.format("%-10s", value)) else null - fun unsafeForce(value: String): PaddedString10 { if (value.length > 10) { throw IllegalArgumentException("Value length ${value.length} exceeds fixed length 10") diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/precisetypes/PaddedString3.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/precisetypes/PaddedString3.kt index 45fd5fdcb4..6d0723f2fe 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/precisetypes/PaddedString3.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/precisetypes/PaddedString3.kt @@ -41,14 +41,14 @@ data class PaddedString3 private constructor(@field:JsonValue val value: String) val bijection: Bijection = Bijection.of(PaddedString3::value, ::PaddedString3) - val dbType: PgType = + fun of(value: String): PaddedString3? = if (value.length <= 3) PaddedString3(String.format("%-3s", value)) else null + + val pgType: PgType = PgTypes.bpchar.bimap(::PaddedString3, PaddedString3::value) - val dbTypeArray: PgType> = + val pgTypeArray: PgType> = PgTypes.bpcharArray.bimap({ xs -> arrayMap.map(xs, ::PaddedString3, PaddedString3::class.java) }, { xs -> arrayMap.map(xs, PaddedString3::value, String::class.java) }) - fun of(value: String): PaddedString3? = if (value.length <= 3) PaddedString3(String.format("%-3s", value)) else null - fun unsafeForce(value: String): PaddedString3 { if (value.length > 3) { throw IllegalArgumentException("Value length ${value.length} exceeds fixed length 3") diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/precisetypes/String10.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/precisetypes/String10.kt index d13999186b..af6789675a 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/precisetypes/String10.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/precisetypes/String10.kt @@ -39,14 +39,14 @@ data class String10 private constructor(@field:JsonValue val value: String) : St val bijection: Bijection = Bijection.of(String10::value, ::String10) - val dbType: PgType = + fun of(value: String): String10? = if (value.length <= 10) String10(value) else null + + val pgType: PgType = PgTypes.text.bimap(::String10, String10::value) - val dbTypeArray: PgType> = + val pgTypeArray: PgType> = PgTypes.textArray.bimap({ xs -> arrayMap.map(xs, ::String10, String10::class.java) }, { xs -> arrayMap.map(xs, String10::value, String::class.java) }) - fun of(value: String): String10? = if (value.length <= 10) String10(value) else null - fun truncate(value: String): String10 = String10(if (value.length <= 10) value else value.substring(0, 10)) fun unsafeForce(value: String): String10 { diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/precisetypes/String100.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/precisetypes/String100.kt index ae13bea564..bcfe218ec3 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/precisetypes/String100.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/precisetypes/String100.kt @@ -39,14 +39,14 @@ data class String100 private constructor(@field:JsonValue val value: String) : S val bijection: Bijection = Bijection.of(String100::value, ::String100) - val dbType: PgType = + fun of(value: String): String100? = if (value.length <= 100) String100(value) else null + + val pgType: PgType = PgTypes.text.bimap(::String100, String100::value) - val dbTypeArray: PgType> = + val pgTypeArray: PgType> = PgTypes.textArray.bimap({ xs -> arrayMap.map(xs, ::String100, String100::class.java) }, { xs -> arrayMap.map(xs, String100::value, String::class.java) }) - fun of(value: String): String100? = if (value.length <= 100) String100(value) else null - fun truncate(value: String): String100 = String100(if (value.length <= 100) value else value.substring(0, 100)) fun unsafeForce(value: String): String100 { diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/precisetypes/String20.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/precisetypes/String20.kt index 26e9c6b093..263f24e091 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/precisetypes/String20.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/precisetypes/String20.kt @@ -39,14 +39,14 @@ data class String20 private constructor(@field:JsonValue val value: String) : St val bijection: Bijection = Bijection.of(String20::value, ::String20) - val dbType: PgType = + fun of(value: String): String20? = if (value.length <= 20) String20(value) else null + + val pgType: PgType = PgTypes.text.bimap(::String20, String20::value) - val dbTypeArray: PgType> = + val pgTypeArray: PgType> = PgTypes.textArray.bimap({ xs -> arrayMap.map(xs, ::String20, String20::class.java) }, { xs -> arrayMap.map(xs, String20::value, String::class.java) }) - fun of(value: String): String20? = if (value.length <= 20) String20(value) else null - fun truncate(value: String): String20 = String20(if (value.length <= 20) value else value.substring(0, 20)) fun unsafeForce(value: String): String20 { diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/precisetypes/String255.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/precisetypes/String255.kt index a81c0ed493..67c81f8c35 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/precisetypes/String255.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/precisetypes/String255.kt @@ -39,14 +39,14 @@ data class String255 private constructor(@field:JsonValue val value: String) : S val bijection: Bijection = Bijection.of(String255::value, ::String255) - val dbType: PgType = + fun of(value: String): String255? = if (value.length <= 255) String255(value) else null + + val pgType: PgType = PgTypes.text.bimap(::String255, String255::value) - val dbTypeArray: PgType> = + val pgTypeArray: PgType> = PgTypes.textArray.bimap({ xs -> arrayMap.map(xs, ::String255, String255::class.java) }, { xs -> arrayMap.map(xs, String255::value, String::class.java) }) - fun of(value: String): String255? = if (value.length <= 255) String255(value) else null - fun truncate(value: String): String255 = String255(if (value.length <= 255) value else value.substring(0, 255)) fun unsafeForce(value: String): String255 { diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/precisetypes/String50.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/precisetypes/String50.kt index c6f8da0803..02aea53732 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/precisetypes/String50.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/precisetypes/String50.kt @@ -39,14 +39,14 @@ data class String50 private constructor(@field:JsonValue val value: String) : St val bijection: Bijection = Bijection.of(String50::value, ::String50) - val dbType: PgType = + fun of(value: String): String50? = if (value.length <= 50) String50(value) else null + + val pgType: PgType = PgTypes.text.bimap(::String50, String50::value) - val dbTypeArray: PgType> = + val pgTypeArray: PgType> = PgTypes.textArray.bimap({ xs -> arrayMap.map(xs, ::String50, String50::class.java) }, { xs -> arrayMap.map(xs, String50::value, String::class.java) }) - fun of(value: String): String50? = if (value.length <= 50) String50(value) else null - fun truncate(value: String): String50 = String50(if (value.length <= 50) value else value.substring(0, 50)) fun unsafeForce(value: String): String50 { diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/product/ProductFields.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/product/ProductFields.kt index 4be0bb4268..65debf7448 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/product/ProductFields.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/product/ProductFields.kt @@ -97,7 +97,7 @@ data class ProductFields(val _path: List) : TupleExpr25 = OptField(_path, "discontinueddate", ProductRow::discontinueddate, null, "timestamp", { row, value -> row.copy(discontinueddate = value) }, PgTypes.timestamp) - fun finishedgoodsflag(): Field = Field(_path, "finishedgoodsflag", ProductRow::finishedgoodsflag, null, "bool", { row, value -> row.copy(finishedgoodsflag = value) }, Flag.dbType) + fun finishedgoodsflag(): Field = Field(_path, "finishedgoodsflag", ProductRow::finishedgoodsflag, null, "bool", { row, value -> row.copy(finishedgoodsflag = value) }, Flag.pgType) fun fkProductmodel(): ForeignKey = ForeignKey.of("production.FK_Product_ProductModel_ProductModelID").withColumnPair(productmodelid(), ProductmodelFields::productmodelid) @@ -109,21 +109,21 @@ data class ProductFields(val _path: List) : TupleExpr25 = Field(_path, "listprice", ProductRow::listprice, null, "numeric", { row, value -> row.copy(listprice = value) }, PgTypes.numeric) - fun makeflag(): Field = Field(_path, "makeflag", ProductRow::makeflag, null, "bool", { row, value -> row.copy(makeflag = value) }, Flag.dbType) + fun makeflag(): Field = Field(_path, "makeflag", ProductRow::makeflag, null, "bool", { row, value -> row.copy(makeflag = value) }, Flag.pgType) fun modifieddate(): Field = Field(_path, "modifieddate", ProductRow::modifieddate, null, "timestamp", { row, value -> row.copy(modifieddate = value) }, PgTypes.timestamp) - fun name(): Field = Field(_path, "name", ProductRow::name, null, "varchar", { row, value -> row.copy(name = value) }, Name.dbType) + fun name(): Field = Field(_path, "name", ProductRow::name, null, "varchar", { row, value -> row.copy(name = value) }, Name.pgType) - fun productid(): IdField = IdField(_path, "productid", ProductRow::productid, null, "int4", { row, value -> row.copy(productid = value) }, ProductId.dbType) + fun productid(): IdField = IdField(_path, "productid", ProductRow::productid, null, "int4", { row, value -> row.copy(productid = value) }, ProductId.pgType) fun productline(): OptField = OptField(_path, "productline", ProductRow::productline, null, "bpchar", { row, value -> row.copy(productline = value) }, PgTypes.bpchar) - fun productmodelid(): OptField = OptField(_path, "productmodelid", ProductRow::productmodelid, null, "int4", { row, value -> row.copy(productmodelid = value) }, ProductmodelId.dbType) + fun productmodelid(): OptField = OptField(_path, "productmodelid", ProductRow::productmodelid, null, "int4", { row, value -> row.copy(productmodelid = value) }, ProductmodelId.pgType) fun productnumber(): Field = Field(_path, "productnumber", ProductRow::productnumber, null, null, { row, value -> row.copy(productnumber = value) }, PgTypes.text) - fun productsubcategoryid(): OptField = OptField(_path, "productsubcategoryid", ProductRow::productsubcategoryid, null, "int4", { row, value -> row.copy(productsubcategoryid = value) }, ProductsubcategoryId.dbType) + fun productsubcategoryid(): OptField = OptField(_path, "productsubcategoryid", ProductRow::productsubcategoryid, null, "int4", { row, value -> row.copy(productsubcategoryid = value) }, ProductsubcategoryId.pgType) fun reorderpoint(): Field = Field(_path, "reorderpoint", ProductRow::reorderpoint, null, "int2", { row, value -> row.copy(reorderpoint = value) }, KotlinDbTypes.PgTypes.int2) @@ -139,7 +139,7 @@ data class ProductFields(val _path: List) : TupleExpr25 = OptField(_path, "size", ProductRow::size, null, null, { row, value -> row.copy(size = value) }, PgTypes.text) - fun sizeunitmeasurecode(): OptField = OptField(_path, "sizeunitmeasurecode", ProductRow::sizeunitmeasurecode, null, "bpchar", { row, value -> row.copy(sizeunitmeasurecode = value) }, UnitmeasureId.dbType) + fun sizeunitmeasurecode(): OptField = OptField(_path, "sizeunitmeasurecode", ProductRow::sizeunitmeasurecode, null, "bpchar", { row, value -> row.copy(sizeunitmeasurecode = value) }, UnitmeasureId.pgType) fun standardcost(): Field = Field(_path, "standardcost", ProductRow::standardcost, null, "numeric", { row, value -> row.copy(standardcost = value) }, PgTypes.numeric) @@ -147,7 +147,7 @@ data class ProductFields(val _path: List) : TupleExpr25 = OptField(_path, "weight", ProductRow::weight, null, "numeric", { row, value -> row.copy(weight = value) }, PgTypes.numeric) - fun weightunitmeasurecode(): OptField = OptField(_path, "weightunitmeasurecode", ProductRow::weightunitmeasurecode, null, "bpchar", { row, value -> row.copy(weightunitmeasurecode = value) }, UnitmeasureId.dbType) + fun weightunitmeasurecode(): OptField = OptField(_path, "weightunitmeasurecode", ProductRow::weightunitmeasurecode, null, "bpchar", { row, value -> row.copy(weightunitmeasurecode = value) }, UnitmeasureId.pgType) override fun withPaths(_path: List): RelationStructure = ProductFields(_path) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/product/ProductId.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/product/ProductId.kt index 2894428c3f..dd90fa8d85 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/product/ProductId.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/product/ProductId.kt @@ -22,10 +22,10 @@ data class ProductId(@field:JsonValue val value: Int) { val bijection: Bijection = Bijection.of(ProductId::value, ::ProductId) - val dbType: PgType = + val pgType: PgType = KotlinDbTypes.PgTypes.int4.bimap(::ProductId, ProductId::value) - val dbTypeArray: PgType> = + val pgTypeArray: PgType> = PgTypes.int4Array.bimap({ xs -> arrayMap.map(xs, ::ProductId, ProductId::class.java) }, { xs -> arrayMap.map(xs, ProductId::value, Int::class.javaObjectType) }) } } \ No newline at end of file diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/product/ProductRepoImpl.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/product/ProductRepoImpl.kt index 71ae86985f..631ee9d036 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/product/ProductRepoImpl.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/product/ProductRepoImpl.kt @@ -32,19 +32,19 @@ class ProductRepoImpl() : ProductRepo { override fun deleteById( productid: ProductId, c: Connection - ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"production\".\"product\" where \"productid\" = "), Fragment.encode(ProductId.dbType, productid), Fragment.lit("")).update().runUnchecked(c) > 0 + ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"production\".\"product\" where \"productid\" = "), Fragment.encode(ProductId.pgType, productid), Fragment.lit("")).update().runUnchecked(c) > 0 override fun deleteByIds( productids: Array, c: Connection - ): Int = Fragment.interpolate(Fragment.lit("delete\nfrom \"production\".\"product\"\nwhere \"productid\" = ANY("), Fragment.encode(ProductId.dbTypeArray, productids), Fragment.lit(")")) + ): Int = Fragment.interpolate(Fragment.lit("delete\nfrom \"production\".\"product\"\nwhere \"productid\" = ANY("), Fragment.encode(ProductId.pgTypeArray, productids), Fragment.lit(")")) .update() .runUnchecked(c) override fun insert( unsaved: ProductRow, c: Connection - ): ProductRow = Fragment.interpolate(Fragment.lit("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\")\nvalues ("), Fragment.encode(ProductId.dbType, unsaved.productid), Fragment.lit("::int4, "), Fragment.encode(Name.dbType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.text, unsaved.productnumber), Fragment.lit(", "), Fragment.encode(Flag.dbType, unsaved.makeflag), Fragment.lit("::bool, "), Fragment.encode(Flag.dbType, unsaved.finishedgoodsflag), Fragment.lit("::bool, "), Fragment.encode(PgTypes.text.nullable(), unsaved.color), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.PgTypes.int2, unsaved.safetystocklevel), Fragment.lit("::int2, "), Fragment.encode(KotlinDbTypes.PgTypes.int2, unsaved.reorderpoint), Fragment.lit("::int2, "), Fragment.encode(PgTypes.numeric, unsaved.standardcost), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.listprice), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.text.nullable(), unsaved.size), Fragment.lit(", "), Fragment.encode(UnitmeasureId.dbType.nullable(), unsaved.sizeunitmeasurecode), Fragment.lit("::bpchar, "), Fragment.encode(UnitmeasureId.dbType.nullable(), unsaved.weightunitmeasurecode), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.numeric.nullable(), unsaved.weight), Fragment.lit("::numeric, "), Fragment.encode(KotlinDbTypes.PgTypes.int4, unsaved.daystomanufacture), Fragment.lit("::int4, "), Fragment.encode(PgTypes.bpchar.nullable(), unsaved.productline), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.bpchar.nullable(), unsaved.`class`), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.bpchar.nullable(), unsaved.style), Fragment.lit("::bpchar, "), Fragment.encode(ProductsubcategoryId.dbType.nullable(), unsaved.productsubcategoryid), Fragment.lit("::int4, "), Fragment.encode(ProductmodelId.dbType.nullable(), unsaved.productmodelid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.timestamp, unsaved.sellstartdate), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamp.nullable(), unsaved.sellenddate), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamp.nullable(), unsaved.discontinueddate), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\nRETURNING \"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\"\n")) + ): ProductRow = Fragment.interpolate(Fragment.lit("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\")\nvalues ("), Fragment.encode(ProductId.pgType, unsaved.productid), Fragment.lit("::int4, "), Fragment.encode(Name.pgType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.text, unsaved.productnumber), Fragment.lit(", "), Fragment.encode(Flag.pgType, unsaved.makeflag), Fragment.lit("::bool, "), Fragment.encode(Flag.pgType, unsaved.finishedgoodsflag), Fragment.lit("::bool, "), Fragment.encode(PgTypes.text.nullable(), unsaved.color), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.PgTypes.int2, unsaved.safetystocklevel), Fragment.lit("::int2, "), Fragment.encode(KotlinDbTypes.PgTypes.int2, unsaved.reorderpoint), Fragment.lit("::int2, "), Fragment.encode(PgTypes.numeric, unsaved.standardcost), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.listprice), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.text.nullable(), unsaved.size), Fragment.lit(", "), Fragment.encode(UnitmeasureId.pgType.nullable(), unsaved.sizeunitmeasurecode), Fragment.lit("::bpchar, "), Fragment.encode(UnitmeasureId.pgType.nullable(), unsaved.weightunitmeasurecode), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.numeric.nullable(), unsaved.weight), Fragment.lit("::numeric, "), Fragment.encode(KotlinDbTypes.PgTypes.int4, unsaved.daystomanufacture), Fragment.lit("::int4, "), Fragment.encode(PgTypes.bpchar.nullable(), unsaved.productline), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.bpchar.nullable(), unsaved.`class`), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.bpchar.nullable(), unsaved.style), Fragment.lit("::bpchar, "), Fragment.encode(ProductsubcategoryId.pgType.nullable(), unsaved.productsubcategoryid), Fragment.lit("::int4, "), Fragment.encode(ProductmodelId.pgType.nullable(), unsaved.productmodelid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.timestamp, unsaved.sellstartdate), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamp.nullable(), unsaved.sellenddate), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamp.nullable(), unsaved.discontinueddate), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\nRETURNING \"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\"\n")) .updateReturning(ProductRow._rowParser.exactlyOne()).runUnchecked(c) override fun insert( @@ -54,7 +54,7 @@ class ProductRepoImpl() : ProductRepo { val columns: ArrayList = ArrayList() val values: ArrayList = ArrayList() columns.add(Fragment.lit("\"name\"")) - values.add(Fragment.interpolate(Fragment.encode(Name.dbType, unsaved.name), Fragment.lit("::varchar"))) + values.add(Fragment.interpolate(Fragment.encode(Name.pgType, unsaved.name), Fragment.lit("::varchar"))) columns.add(Fragment.lit("\"productnumber\"")) values.add(Fragment.interpolate(Fragment.encode(PgTypes.text, unsaved.productnumber), Fragment.lit(""))) columns.add(Fragment.lit("\"color\"")) @@ -70,9 +70,9 @@ class ProductRepoImpl() : ProductRepo { columns.add(Fragment.lit("\"size\"")) values.add(Fragment.interpolate(Fragment.encode(PgTypes.text.nullable(), unsaved.size), Fragment.lit(""))) columns.add(Fragment.lit("\"sizeunitmeasurecode\"")) - values.add(Fragment.interpolate(Fragment.encode(UnitmeasureId.dbType.nullable(), unsaved.sizeunitmeasurecode), Fragment.lit("::bpchar"))) + values.add(Fragment.interpolate(Fragment.encode(UnitmeasureId.pgType.nullable(), unsaved.sizeunitmeasurecode), Fragment.lit("::bpchar"))) columns.add(Fragment.lit("\"weightunitmeasurecode\"")) - values.add(Fragment.interpolate(Fragment.encode(UnitmeasureId.dbType.nullable(), unsaved.weightunitmeasurecode), Fragment.lit("::bpchar"))) + values.add(Fragment.interpolate(Fragment.encode(UnitmeasureId.pgType.nullable(), unsaved.weightunitmeasurecode), Fragment.lit("::bpchar"))) columns.add(Fragment.lit("\"weight\"")) values.add(Fragment.interpolate(Fragment.encode(PgTypes.numeric.nullable(), unsaved.weight), Fragment.lit("::numeric"))) columns.add(Fragment.lit("\"daystomanufacture\"")) @@ -84,9 +84,9 @@ class ProductRepoImpl() : ProductRepo { columns.add(Fragment.lit("\"style\"")) values.add(Fragment.interpolate(Fragment.encode(PgTypes.bpchar.nullable(), unsaved.style), Fragment.lit("::bpchar"))) columns.add(Fragment.lit("\"productsubcategoryid\"")) - values.add(Fragment.interpolate(Fragment.encode(ProductsubcategoryId.dbType.nullable(), unsaved.productsubcategoryid), Fragment.lit("::int4"))) + values.add(Fragment.interpolate(Fragment.encode(ProductsubcategoryId.pgType.nullable(), unsaved.productsubcategoryid), Fragment.lit("::int4"))) columns.add(Fragment.lit("\"productmodelid\"")) - values.add(Fragment.interpolate(Fragment.encode(ProductmodelId.dbType.nullable(), unsaved.productmodelid), Fragment.lit("::int4"))) + values.add(Fragment.interpolate(Fragment.encode(ProductmodelId.pgType.nullable(), unsaved.productmodelid), Fragment.lit("::int4"))) columns.add(Fragment.lit("\"sellstartdate\"")) values.add(Fragment.interpolate(Fragment.encode(PgTypes.timestamp, unsaved.sellstartdate), Fragment.lit("::timestamp"))) columns.add(Fragment.lit("\"sellenddate\"")) @@ -96,17 +96,17 @@ class ProductRepoImpl() : ProductRepo { unsaved.productid.visit( { }, { value -> columns.add(Fragment.lit("\"productid\"")) - values.add(Fragment.interpolate(Fragment.encode(ProductId.dbType, value), Fragment.lit("::int4"))) } + values.add(Fragment.interpolate(Fragment.encode(ProductId.pgType, value), Fragment.lit("::int4"))) } ); unsaved.makeflag.visit( { }, { value -> columns.add(Fragment.lit("\"makeflag\"")) - values.add(Fragment.interpolate(Fragment.encode(Flag.dbType, value), Fragment.lit("::bool"))) } + values.add(Fragment.interpolate(Fragment.encode(Flag.pgType, value), Fragment.lit("::bool"))) } ); unsaved.finishedgoodsflag.visit( { }, { value -> columns.add(Fragment.lit("\"finishedgoodsflag\"")) - values.add(Fragment.interpolate(Fragment.encode(Flag.dbType, value), Fragment.lit("::bool"))) } + values.add(Fragment.interpolate(Fragment.encode(Flag.pgType, value), Fragment.lit("::bool"))) } ); unsaved.rowguid.visit( { }, @@ -142,12 +142,12 @@ class ProductRepoImpl() : ProductRepo { override fun selectById( productid: ProductId, c: Connection - ): ProductRow? = Fragment.interpolate(Fragment.lit("select \"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\"\nfrom \"production\".\"product\"\nwhere \"productid\" = "), Fragment.encode(ProductId.dbType, productid), Fragment.lit("")).query(ProductRow._rowParser.first()).runUnchecked(c) + ): ProductRow? = Fragment.interpolate(Fragment.lit("select \"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\"\nfrom \"production\".\"product\"\nwhere \"productid\" = "), Fragment.encode(ProductId.pgType, productid), Fragment.lit("")).query(ProductRow._rowParser.first()).runUnchecked(c) override fun selectByIds( productids: Array, c: Connection - ): List = Fragment.interpolate(Fragment.lit("select \"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\"\nfrom \"production\".\"product\"\nwhere \"productid\" = ANY("), Fragment.encode(ProductId.dbTypeArray, productids), Fragment.lit(")")).query(ProductRow._rowParser.all()).runUnchecked(c) + ): List = Fragment.interpolate(Fragment.lit("select \"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\"\nfrom \"production\".\"product\"\nwhere \"productid\" = ANY("), Fragment.encode(ProductId.pgTypeArray, productids), Fragment.lit(")")).query(ProductRow._rowParser.all()).runUnchecked(c) override fun selectByIdsTracked( productids: Array, @@ -165,13 +165,13 @@ class ProductRepoImpl() : ProductRepo { c: Connection ): Boolean { val productid: ProductId = row.productid - return Fragment.interpolate(Fragment.lit("update \"production\".\"product\"\nset \"name\" = "), Fragment.encode(Name.dbType, row.name), Fragment.lit("::varchar,\n\"productnumber\" = "), Fragment.encode(PgTypes.text, row.productnumber), Fragment.lit(",\n\"makeflag\" = "), Fragment.encode(Flag.dbType, row.makeflag), Fragment.lit("::bool,\n\"finishedgoodsflag\" = "), Fragment.encode(Flag.dbType, row.finishedgoodsflag), Fragment.lit("::bool,\n\"color\" = "), Fragment.encode(PgTypes.text.nullable(), row.color), Fragment.lit(",\n\"safetystocklevel\" = "), Fragment.encode(KotlinDbTypes.PgTypes.int2, row.safetystocklevel), Fragment.lit("::int2,\n\"reorderpoint\" = "), Fragment.encode(KotlinDbTypes.PgTypes.int2, row.reorderpoint), Fragment.lit("::int2,\n\"standardcost\" = "), Fragment.encode(PgTypes.numeric, row.standardcost), Fragment.lit("::numeric,\n\"listprice\" = "), Fragment.encode(PgTypes.numeric, row.listprice), Fragment.lit("::numeric,\n\"size\" = "), Fragment.encode(PgTypes.text.nullable(), row.size), Fragment.lit(",\n\"sizeunitmeasurecode\" = "), Fragment.encode(UnitmeasureId.dbType.nullable(), row.sizeunitmeasurecode), Fragment.lit("::bpchar,\n\"weightunitmeasurecode\" = "), Fragment.encode(UnitmeasureId.dbType.nullable(), row.weightunitmeasurecode), Fragment.lit("::bpchar,\n\"weight\" = "), Fragment.encode(PgTypes.numeric.nullable(), row.weight), Fragment.lit("::numeric,\n\"daystomanufacture\" = "), Fragment.encode(KotlinDbTypes.PgTypes.int4, row.daystomanufacture), Fragment.lit("::int4,\n\"productline\" = "), Fragment.encode(PgTypes.bpchar.nullable(), row.productline), Fragment.lit("::bpchar,\n\"class\" = "), Fragment.encode(PgTypes.bpchar.nullable(), row.`class`), Fragment.lit("::bpchar,\n\"style\" = "), Fragment.encode(PgTypes.bpchar.nullable(), row.style), Fragment.lit("::bpchar,\n\"productsubcategoryid\" = "), Fragment.encode(ProductsubcategoryId.dbType.nullable(), row.productsubcategoryid), Fragment.lit("::int4,\n\"productmodelid\" = "), Fragment.encode(ProductmodelId.dbType.nullable(), row.productmodelid), Fragment.lit("::int4,\n\"sellstartdate\" = "), Fragment.encode(PgTypes.timestamp, row.sellstartdate), Fragment.lit("::timestamp,\n\"sellenddate\" = "), Fragment.encode(PgTypes.timestamp.nullable(), row.sellenddate), Fragment.lit("::timestamp,\n\"discontinueddate\" = "), Fragment.encode(PgTypes.timestamp.nullable(), row.discontinueddate), Fragment.lit("::timestamp,\n\"rowguid\" = "), Fragment.encode(PgTypes.uuid, row.rowguid), Fragment.lit("::uuid,\n\"modifieddate\" = "), Fragment.encode(PgTypes.timestamp, row.modifieddate), Fragment.lit("::timestamp\nwhere \"productid\" = "), Fragment.encode(ProductId.dbType, productid), Fragment.lit("")).update().runUnchecked(c) > 0 + return Fragment.interpolate(Fragment.lit("update \"production\".\"product\"\nset \"name\" = "), Fragment.encode(Name.pgType, row.name), Fragment.lit("::varchar,\n\"productnumber\" = "), Fragment.encode(PgTypes.text, row.productnumber), Fragment.lit(",\n\"makeflag\" = "), Fragment.encode(Flag.pgType, row.makeflag), Fragment.lit("::bool,\n\"finishedgoodsflag\" = "), Fragment.encode(Flag.pgType, row.finishedgoodsflag), Fragment.lit("::bool,\n\"color\" = "), Fragment.encode(PgTypes.text.nullable(), row.color), Fragment.lit(",\n\"safetystocklevel\" = "), Fragment.encode(KotlinDbTypes.PgTypes.int2, row.safetystocklevel), Fragment.lit("::int2,\n\"reorderpoint\" = "), Fragment.encode(KotlinDbTypes.PgTypes.int2, row.reorderpoint), Fragment.lit("::int2,\n\"standardcost\" = "), Fragment.encode(PgTypes.numeric, row.standardcost), Fragment.lit("::numeric,\n\"listprice\" = "), Fragment.encode(PgTypes.numeric, row.listprice), Fragment.lit("::numeric,\n\"size\" = "), Fragment.encode(PgTypes.text.nullable(), row.size), Fragment.lit(",\n\"sizeunitmeasurecode\" = "), Fragment.encode(UnitmeasureId.pgType.nullable(), row.sizeunitmeasurecode), Fragment.lit("::bpchar,\n\"weightunitmeasurecode\" = "), Fragment.encode(UnitmeasureId.pgType.nullable(), row.weightunitmeasurecode), Fragment.lit("::bpchar,\n\"weight\" = "), Fragment.encode(PgTypes.numeric.nullable(), row.weight), Fragment.lit("::numeric,\n\"daystomanufacture\" = "), Fragment.encode(KotlinDbTypes.PgTypes.int4, row.daystomanufacture), Fragment.lit("::int4,\n\"productline\" = "), Fragment.encode(PgTypes.bpchar.nullable(), row.productline), Fragment.lit("::bpchar,\n\"class\" = "), Fragment.encode(PgTypes.bpchar.nullable(), row.`class`), Fragment.lit("::bpchar,\n\"style\" = "), Fragment.encode(PgTypes.bpchar.nullable(), row.style), Fragment.lit("::bpchar,\n\"productsubcategoryid\" = "), Fragment.encode(ProductsubcategoryId.pgType.nullable(), row.productsubcategoryid), Fragment.lit("::int4,\n\"productmodelid\" = "), Fragment.encode(ProductmodelId.pgType.nullable(), row.productmodelid), Fragment.lit("::int4,\n\"sellstartdate\" = "), Fragment.encode(PgTypes.timestamp, row.sellstartdate), Fragment.lit("::timestamp,\n\"sellenddate\" = "), Fragment.encode(PgTypes.timestamp.nullable(), row.sellenddate), Fragment.lit("::timestamp,\n\"discontinueddate\" = "), Fragment.encode(PgTypes.timestamp.nullable(), row.discontinueddate), Fragment.lit("::timestamp,\n\"rowguid\" = "), Fragment.encode(PgTypes.uuid, row.rowguid), Fragment.lit("::uuid,\n\"modifieddate\" = "), Fragment.encode(PgTypes.timestamp, row.modifieddate), Fragment.lit("::timestamp\nwhere \"productid\" = "), Fragment.encode(ProductId.pgType, productid), Fragment.lit("")).update().runUnchecked(c) > 0 } override fun upsert( unsaved: ProductRow, c: Connection - ): ProductRow = Fragment.interpolate(Fragment.lit("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\")\nvalues ("), Fragment.encode(ProductId.dbType, unsaved.productid), Fragment.lit("::int4, "), Fragment.encode(Name.dbType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.text, unsaved.productnumber), Fragment.lit(", "), Fragment.encode(Flag.dbType, unsaved.makeflag), Fragment.lit("::bool, "), Fragment.encode(Flag.dbType, unsaved.finishedgoodsflag), Fragment.lit("::bool, "), Fragment.encode(PgTypes.text.nullable(), unsaved.color), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.PgTypes.int2, unsaved.safetystocklevel), Fragment.lit("::int2, "), Fragment.encode(KotlinDbTypes.PgTypes.int2, unsaved.reorderpoint), Fragment.lit("::int2, "), Fragment.encode(PgTypes.numeric, unsaved.standardcost), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.listprice), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.text.nullable(), unsaved.size), Fragment.lit(", "), Fragment.encode(UnitmeasureId.dbType.nullable(), unsaved.sizeunitmeasurecode), Fragment.lit("::bpchar, "), Fragment.encode(UnitmeasureId.dbType.nullable(), unsaved.weightunitmeasurecode), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.numeric.nullable(), unsaved.weight), Fragment.lit("::numeric, "), Fragment.encode(KotlinDbTypes.PgTypes.int4, unsaved.daystomanufacture), Fragment.lit("::int4, "), Fragment.encode(PgTypes.bpchar.nullable(), unsaved.productline), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.bpchar.nullable(), unsaved.`class`), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.bpchar.nullable(), unsaved.style), Fragment.lit("::bpchar, "), Fragment.encode(ProductsubcategoryId.dbType.nullable(), unsaved.productsubcategoryid), Fragment.lit("::int4, "), Fragment.encode(ProductmodelId.dbType.nullable(), unsaved.productmodelid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.timestamp, unsaved.sellstartdate), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamp.nullable(), unsaved.sellenddate), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamp.nullable(), unsaved.discontinueddate), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\non conflict (\"productid\")\ndo update set\n \"name\" = EXCLUDED.\"name\",\n\"productnumber\" = EXCLUDED.\"productnumber\",\n\"makeflag\" = EXCLUDED.\"makeflag\",\n\"finishedgoodsflag\" = EXCLUDED.\"finishedgoodsflag\",\n\"color\" = EXCLUDED.\"color\",\n\"safetystocklevel\" = EXCLUDED.\"safetystocklevel\",\n\"reorderpoint\" = EXCLUDED.\"reorderpoint\",\n\"standardcost\" = EXCLUDED.\"standardcost\",\n\"listprice\" = EXCLUDED.\"listprice\",\n\"size\" = EXCLUDED.\"size\",\n\"sizeunitmeasurecode\" = EXCLUDED.\"sizeunitmeasurecode\",\n\"weightunitmeasurecode\" = EXCLUDED.\"weightunitmeasurecode\",\n\"weight\" = EXCLUDED.\"weight\",\n\"daystomanufacture\" = EXCLUDED.\"daystomanufacture\",\n\"productline\" = EXCLUDED.\"productline\",\n\"class\" = EXCLUDED.\"class\",\n\"style\" = EXCLUDED.\"style\",\n\"productsubcategoryid\" = EXCLUDED.\"productsubcategoryid\",\n\"productmodelid\" = EXCLUDED.\"productmodelid\",\n\"sellstartdate\" = EXCLUDED.\"sellstartdate\",\n\"sellenddate\" = EXCLUDED.\"sellenddate\",\n\"discontinueddate\" = EXCLUDED.\"discontinueddate\",\n\"rowguid\" = EXCLUDED.\"rowguid\",\n\"modifieddate\" = EXCLUDED.\"modifieddate\"\nreturning \"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\"")) + ): ProductRow = Fragment.interpolate(Fragment.lit("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\")\nvalues ("), Fragment.encode(ProductId.pgType, unsaved.productid), Fragment.lit("::int4, "), Fragment.encode(Name.pgType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.text, unsaved.productnumber), Fragment.lit(", "), Fragment.encode(Flag.pgType, unsaved.makeflag), Fragment.lit("::bool, "), Fragment.encode(Flag.pgType, unsaved.finishedgoodsflag), Fragment.lit("::bool, "), Fragment.encode(PgTypes.text.nullable(), unsaved.color), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.PgTypes.int2, unsaved.safetystocklevel), Fragment.lit("::int2, "), Fragment.encode(KotlinDbTypes.PgTypes.int2, unsaved.reorderpoint), Fragment.lit("::int2, "), Fragment.encode(PgTypes.numeric, unsaved.standardcost), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.listprice), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.text.nullable(), unsaved.size), Fragment.lit(", "), Fragment.encode(UnitmeasureId.pgType.nullable(), unsaved.sizeunitmeasurecode), Fragment.lit("::bpchar, "), Fragment.encode(UnitmeasureId.pgType.nullable(), unsaved.weightunitmeasurecode), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.numeric.nullable(), unsaved.weight), Fragment.lit("::numeric, "), Fragment.encode(KotlinDbTypes.PgTypes.int4, unsaved.daystomanufacture), Fragment.lit("::int4, "), Fragment.encode(PgTypes.bpchar.nullable(), unsaved.productline), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.bpchar.nullable(), unsaved.`class`), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.bpchar.nullable(), unsaved.style), Fragment.lit("::bpchar, "), Fragment.encode(ProductsubcategoryId.pgType.nullable(), unsaved.productsubcategoryid), Fragment.lit("::int4, "), Fragment.encode(ProductmodelId.pgType.nullable(), unsaved.productmodelid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.timestamp, unsaved.sellstartdate), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamp.nullable(), unsaved.sellenddate), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamp.nullable(), unsaved.discontinueddate), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\non conflict (\"productid\")\ndo update set\n \"name\" = EXCLUDED.\"name\",\n\"productnumber\" = EXCLUDED.\"productnumber\",\n\"makeflag\" = EXCLUDED.\"makeflag\",\n\"finishedgoodsflag\" = EXCLUDED.\"finishedgoodsflag\",\n\"color\" = EXCLUDED.\"color\",\n\"safetystocklevel\" = EXCLUDED.\"safetystocklevel\",\n\"reorderpoint\" = EXCLUDED.\"reorderpoint\",\n\"standardcost\" = EXCLUDED.\"standardcost\",\n\"listprice\" = EXCLUDED.\"listprice\",\n\"size\" = EXCLUDED.\"size\",\n\"sizeunitmeasurecode\" = EXCLUDED.\"sizeunitmeasurecode\",\n\"weightunitmeasurecode\" = EXCLUDED.\"weightunitmeasurecode\",\n\"weight\" = EXCLUDED.\"weight\",\n\"daystomanufacture\" = EXCLUDED.\"daystomanufacture\",\n\"productline\" = EXCLUDED.\"productline\",\n\"class\" = EXCLUDED.\"class\",\n\"style\" = EXCLUDED.\"style\",\n\"productsubcategoryid\" = EXCLUDED.\"productsubcategoryid\",\n\"productmodelid\" = EXCLUDED.\"productmodelid\",\n\"sellstartdate\" = EXCLUDED.\"sellstartdate\",\n\"sellenddate\" = EXCLUDED.\"sellenddate\",\n\"discontinueddate\" = EXCLUDED.\"discontinueddate\",\n\"rowguid\" = EXCLUDED.\"rowguid\",\n\"modifieddate\" = EXCLUDED.\"modifieddate\"\nreturning \"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\"")) .updateReturning(ProductRow._rowParser.exactlyOne()) .runUnchecked(c) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/product/ProductRow.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/product/ProductRow.kt index 50c9d5b8cd..6ff6303423 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/product/ProductRow.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/product/ProductRow.kt @@ -175,7 +175,7 @@ data class ProductRow( ): ProductRowUnsaved = ProductRowUnsaved(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) companion object { - val _rowParser: RowParser = RowParsers.of(ProductId.dbType, Name.dbType, PgTypes.text, Flag.dbType, Flag.dbType, PgTypes.text.nullable(), KotlinDbTypes.PgTypes.int2, KotlinDbTypes.PgTypes.int2, PgTypes.numeric, PgTypes.numeric, PgTypes.text.nullable(), UnitmeasureId.dbType.nullable(), UnitmeasureId.dbType.nullable(), PgTypes.numeric.nullable(), KotlinDbTypes.PgTypes.int4, PgTypes.bpchar.nullable(), PgTypes.bpchar.nullable(), PgTypes.bpchar.nullable(), ProductsubcategoryId.dbType.nullable(), ProductmodelId.dbType.nullable(), PgTypes.timestamp, PgTypes.timestamp.nullable(), PgTypes.timestamp.nullable(), PgTypes.uuid, PgTypes.timestamp, { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24 -> ProductRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24) }, { row -> arrayOf(row.productid, row.name, row.productnumber, row.makeflag, row.finishedgoodsflag, row.color, row.safetystocklevel, row.reorderpoint, row.standardcost, row.listprice, row.size, row.sizeunitmeasurecode, row.weightunitmeasurecode, row.weight, row.daystomanufacture, row.productline, row.`class`, row.style, row.productsubcategoryid, row.productmodelid, row.sellstartdate, row.sellenddate, row.discontinueddate, row.rowguid, row.modifieddate) }) + val _rowParser: RowParser = RowParsers.of(ProductId.pgType, Name.pgType, PgTypes.text, Flag.pgType, Flag.pgType, PgTypes.text.nullable(), KotlinDbTypes.PgTypes.int2, KotlinDbTypes.PgTypes.int2, PgTypes.numeric, PgTypes.numeric, PgTypes.text.nullable(), UnitmeasureId.pgType.nullable(), UnitmeasureId.pgType.nullable(), PgTypes.numeric.nullable(), KotlinDbTypes.PgTypes.int4, PgTypes.bpchar.nullable(), PgTypes.bpchar.nullable(), PgTypes.bpchar.nullable(), ProductsubcategoryId.pgType.nullable(), ProductmodelId.pgType.nullable(), PgTypes.timestamp, PgTypes.timestamp.nullable(), PgTypes.timestamp.nullable(), PgTypes.uuid, PgTypes.timestamp, { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24 -> ProductRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24) }, { row -> arrayOf(row.productid, row.name, row.productnumber, row.makeflag, row.finishedgoodsflag, row.color, row.safetystocklevel, row.reorderpoint, row.standardcost, row.listprice, row.size, row.sizeunitmeasurecode, row.weightunitmeasurecode, row.weight, row.daystomanufacture, row.productline, row.`class`, row.style, row.productsubcategoryid, row.productmodelid, row.sellstartdate, row.sellenddate, row.discontinueddate, row.rowguid, row.modifieddate) }) val pgText: PgText = PgText.from(_rowParser.underlying) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/product/ProductRowUnsaved.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/product/ProductRowUnsaved.kt index 0590dda7a9..9a210fa9eb 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/product/ProductRowUnsaved.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/product/ProductRowUnsaved.kt @@ -119,7 +119,7 @@ data class ProductRowUnsaved( companion object { val pgText: PgText = - PgText.instance({ row, sb -> Name.dbType.text().unsafeEncode(row.name, sb) + PgText.instance({ row, sb -> Name.pgType.text().unsafeEncode(row.name, sb) sb.append(PgText.DELIMETER) PgTypes.text.text().unsafeEncode(row.productnumber, sb) sb.append(PgText.DELIMETER) @@ -135,9 +135,9 @@ data class ProductRowUnsaved( sb.append(PgText.DELIMETER) PgTypes.text.nullable().text().unsafeEncode(row.size, sb) sb.append(PgText.DELIMETER) - UnitmeasureId.dbType.nullable().text().unsafeEncode(row.sizeunitmeasurecode, sb) + UnitmeasureId.pgType.nullable().text().unsafeEncode(row.sizeunitmeasurecode, sb) sb.append(PgText.DELIMETER) - UnitmeasureId.dbType.nullable().text().unsafeEncode(row.weightunitmeasurecode, sb) + UnitmeasureId.pgType.nullable().text().unsafeEncode(row.weightunitmeasurecode, sb) sb.append(PgText.DELIMETER) PgTypes.numeric.nullable().text().unsafeEncode(row.weight, sb) sb.append(PgText.DELIMETER) @@ -149,9 +149,9 @@ data class ProductRowUnsaved( sb.append(PgText.DELIMETER) PgTypes.bpchar.nullable().text().unsafeEncode(row.style, sb) sb.append(PgText.DELIMETER) - ProductsubcategoryId.dbType.nullable().text().unsafeEncode(row.productsubcategoryid, sb) + ProductsubcategoryId.pgType.nullable().text().unsafeEncode(row.productsubcategoryid, sb) sb.append(PgText.DELIMETER) - ProductmodelId.dbType.nullable().text().unsafeEncode(row.productmodelid, sb) + ProductmodelId.pgType.nullable().text().unsafeEncode(row.productmodelid, sb) sb.append(PgText.DELIMETER) PgTypes.timestamp.text().unsafeEncode(row.sellstartdate, sb) sb.append(PgText.DELIMETER) @@ -159,11 +159,11 @@ data class ProductRowUnsaved( sb.append(PgText.DELIMETER) PgTypes.timestamp.nullable().text().unsafeEncode(row.discontinueddate, sb) sb.append(PgText.DELIMETER) - Defaulted.pgText(ProductId.dbType.text()).unsafeEncode(row.productid, sb) + Defaulted.pgText(ProductId.pgType.text()).unsafeEncode(row.productid, sb) sb.append(PgText.DELIMETER) - Defaulted.pgText(Flag.dbType.text()).unsafeEncode(row.makeflag, sb) + Defaulted.pgText(Flag.pgType.text()).unsafeEncode(row.makeflag, sb) sb.append(PgText.DELIMETER) - Defaulted.pgText(Flag.dbType.text()).unsafeEncode(row.finishedgoodsflag, sb) + Defaulted.pgText(Flag.pgType.text()).unsafeEncode(row.finishedgoodsflag, sb) sb.append(PgText.DELIMETER) Defaulted.pgText(PgTypes.uuid.text()).unsafeEncode(row.rowguid, sb) sb.append(PgText.DELIMETER) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryFields.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryFields.kt index d0bc2783c5..9bea961a3b 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryFields.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryFields.kt @@ -35,9 +35,9 @@ data class ProductcategoryFields(val _path: List) : TupleExpr4 = Field(_path, "modifieddate", ProductcategoryRow::modifieddate, null, "timestamp", { row, value -> row.copy(modifieddate = value) }, PgTypes.timestamp) - fun name(): Field = Field(_path, "name", ProductcategoryRow::name, null, "varchar", { row, value -> row.copy(name = value) }, Name.dbType) + fun name(): Field = Field(_path, "name", ProductcategoryRow::name, null, "varchar", { row, value -> row.copy(name = value) }, Name.pgType) - fun productcategoryid(): IdField = IdField(_path, "productcategoryid", ProductcategoryRow::productcategoryid, null, "int4", { row, value -> row.copy(productcategoryid = value) }, ProductcategoryId.dbType) + fun productcategoryid(): IdField = IdField(_path, "productcategoryid", ProductcategoryRow::productcategoryid, null, "int4", { row, value -> row.copy(productcategoryid = value) }, ProductcategoryId.pgType) override fun rowParser(): RowParser = ProductcategoryRow._rowParser.underlying diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryId.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryId.kt index f92b7d7a0c..9f9558765d 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryId.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryId.kt @@ -22,10 +22,10 @@ data class ProductcategoryId(@field:JsonValue val value: Int) { val bijection: Bijection = Bijection.of(ProductcategoryId::value, ::ProductcategoryId) - val dbType: PgType = + val pgType: PgType = KotlinDbTypes.PgTypes.int4.bimap(::ProductcategoryId, ProductcategoryId::value) - val dbTypeArray: PgType> = + val pgTypeArray: PgType> = PgTypes.int4Array.bimap({ xs -> arrayMap.map(xs, ::ProductcategoryId, ProductcategoryId::class.java) }, { xs -> arrayMap.map(xs, ProductcategoryId::value, Int::class.javaObjectType) }) } } \ No newline at end of file diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRepoImpl.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRepoImpl.kt index 79aa43c5fe..bc7ea8a794 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRepoImpl.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRepoImpl.kt @@ -26,19 +26,19 @@ class ProductcategoryRepoImpl() : ProductcategoryRepo { override fun deleteById( productcategoryid: ProductcategoryId, c: Connection - ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"production\".\"productcategory\" where \"productcategoryid\" = "), Fragment.encode(ProductcategoryId.dbType, productcategoryid), Fragment.lit("")).update().runUnchecked(c) > 0 + ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"production\".\"productcategory\" where \"productcategoryid\" = "), Fragment.encode(ProductcategoryId.pgType, productcategoryid), Fragment.lit("")).update().runUnchecked(c) > 0 override fun deleteByIds( productcategoryids: Array, c: Connection - ): Int = Fragment.interpolate(Fragment.lit("delete\nfrom \"production\".\"productcategory\"\nwhere \"productcategoryid\" = ANY("), Fragment.encode(ProductcategoryId.dbTypeArray, productcategoryids), Fragment.lit(")")) + ): Int = Fragment.interpolate(Fragment.lit("delete\nfrom \"production\".\"productcategory\"\nwhere \"productcategoryid\" = ANY("), Fragment.encode(ProductcategoryId.pgTypeArray, productcategoryids), Fragment.lit(")")) .update() .runUnchecked(c) override fun insert( unsaved: ProductcategoryRow, c: Connection - ): ProductcategoryRow = Fragment.interpolate(Fragment.lit("insert into \"production\".\"productcategory\"(\"productcategoryid\", \"name\", \"rowguid\", \"modifieddate\")\nvalues ("), Fragment.encode(ProductcategoryId.dbType, unsaved.productcategoryid), Fragment.lit("::int4, "), Fragment.encode(Name.dbType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\nRETURNING \"productcategoryid\", \"name\", \"rowguid\", \"modifieddate\"\n")) + ): ProductcategoryRow = Fragment.interpolate(Fragment.lit("insert into \"production\".\"productcategory\"(\"productcategoryid\", \"name\", \"rowguid\", \"modifieddate\")\nvalues ("), Fragment.encode(ProductcategoryId.pgType, unsaved.productcategoryid), Fragment.lit("::int4, "), Fragment.encode(Name.pgType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\nRETURNING \"productcategoryid\", \"name\", \"rowguid\", \"modifieddate\"\n")) .updateReturning(ProductcategoryRow._rowParser.exactlyOne()).runUnchecked(c) override fun insert( @@ -48,11 +48,11 @@ class ProductcategoryRepoImpl() : ProductcategoryRepo { val columns: ArrayList = ArrayList() val values: ArrayList = ArrayList() columns.add(Fragment.lit("\"name\"")) - values.add(Fragment.interpolate(Fragment.encode(Name.dbType, unsaved.name), Fragment.lit("::varchar"))) + values.add(Fragment.interpolate(Fragment.encode(Name.pgType, unsaved.name), Fragment.lit("::varchar"))) unsaved.productcategoryid.visit( { }, { value -> columns.add(Fragment.lit("\"productcategoryid\"")) - values.add(Fragment.interpolate(Fragment.encode(ProductcategoryId.dbType, value), Fragment.lit("::int4"))) } + values.add(Fragment.interpolate(Fragment.encode(ProductcategoryId.pgType, value), Fragment.lit("::int4"))) } ); unsaved.rowguid.visit( { }, @@ -88,12 +88,12 @@ class ProductcategoryRepoImpl() : ProductcategoryRepo { override fun selectById( productcategoryid: ProductcategoryId, c: Connection - ): ProductcategoryRow? = Fragment.interpolate(Fragment.lit("select \"productcategoryid\", \"name\", \"rowguid\", \"modifieddate\"\nfrom \"production\".\"productcategory\"\nwhere \"productcategoryid\" = "), Fragment.encode(ProductcategoryId.dbType, productcategoryid), Fragment.lit("")).query(ProductcategoryRow._rowParser.first()).runUnchecked(c) + ): ProductcategoryRow? = Fragment.interpolate(Fragment.lit("select \"productcategoryid\", \"name\", \"rowguid\", \"modifieddate\"\nfrom \"production\".\"productcategory\"\nwhere \"productcategoryid\" = "), Fragment.encode(ProductcategoryId.pgType, productcategoryid), Fragment.lit("")).query(ProductcategoryRow._rowParser.first()).runUnchecked(c) override fun selectByIds( productcategoryids: Array, c: Connection - ): List = Fragment.interpolate(Fragment.lit("select \"productcategoryid\", \"name\", \"rowguid\", \"modifieddate\"\nfrom \"production\".\"productcategory\"\nwhere \"productcategoryid\" = ANY("), Fragment.encode(ProductcategoryId.dbTypeArray, productcategoryids), Fragment.lit(")")).query(ProductcategoryRow._rowParser.all()).runUnchecked(c) + ): List = Fragment.interpolate(Fragment.lit("select \"productcategoryid\", \"name\", \"rowguid\", \"modifieddate\"\nfrom \"production\".\"productcategory\"\nwhere \"productcategoryid\" = ANY("), Fragment.encode(ProductcategoryId.pgTypeArray, productcategoryids), Fragment.lit(")")).query(ProductcategoryRow._rowParser.all()).runUnchecked(c) override fun selectByIdsTracked( productcategoryids: Array, @@ -111,13 +111,13 @@ class ProductcategoryRepoImpl() : ProductcategoryRepo { c: Connection ): Boolean { val productcategoryid: ProductcategoryId = row.productcategoryid - return Fragment.interpolate(Fragment.lit("update \"production\".\"productcategory\"\nset \"name\" = "), Fragment.encode(Name.dbType, row.name), Fragment.lit("::varchar,\n\"rowguid\" = "), Fragment.encode(PgTypes.uuid, row.rowguid), Fragment.lit("::uuid,\n\"modifieddate\" = "), Fragment.encode(PgTypes.timestamp, row.modifieddate), Fragment.lit("::timestamp\nwhere \"productcategoryid\" = "), Fragment.encode(ProductcategoryId.dbType, productcategoryid), Fragment.lit("")).update().runUnchecked(c) > 0 + return Fragment.interpolate(Fragment.lit("update \"production\".\"productcategory\"\nset \"name\" = "), Fragment.encode(Name.pgType, row.name), Fragment.lit("::varchar,\n\"rowguid\" = "), Fragment.encode(PgTypes.uuid, row.rowguid), Fragment.lit("::uuid,\n\"modifieddate\" = "), Fragment.encode(PgTypes.timestamp, row.modifieddate), Fragment.lit("::timestamp\nwhere \"productcategoryid\" = "), Fragment.encode(ProductcategoryId.pgType, productcategoryid), Fragment.lit("")).update().runUnchecked(c) > 0 } override fun upsert( unsaved: ProductcategoryRow, c: Connection - ): ProductcategoryRow = Fragment.interpolate(Fragment.lit("insert into \"production\".\"productcategory\"(\"productcategoryid\", \"name\", \"rowguid\", \"modifieddate\")\nvalues ("), Fragment.encode(ProductcategoryId.dbType, unsaved.productcategoryid), Fragment.lit("::int4, "), Fragment.encode(Name.dbType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\non conflict (\"productcategoryid\")\ndo update set\n \"name\" = EXCLUDED.\"name\",\n\"rowguid\" = EXCLUDED.\"rowguid\",\n\"modifieddate\" = EXCLUDED.\"modifieddate\"\nreturning \"productcategoryid\", \"name\", \"rowguid\", \"modifieddate\"")) + ): ProductcategoryRow = Fragment.interpolate(Fragment.lit("insert into \"production\".\"productcategory\"(\"productcategoryid\", \"name\", \"rowguid\", \"modifieddate\")\nvalues ("), Fragment.encode(ProductcategoryId.pgType, unsaved.productcategoryid), Fragment.lit("::int4, "), Fragment.encode(Name.pgType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\non conflict (\"productcategoryid\")\ndo update set\n \"name\" = EXCLUDED.\"name\",\n\"rowguid\" = EXCLUDED.\"rowguid\",\n\"modifieddate\" = EXCLUDED.\"modifieddate\"\nreturning \"productcategoryid\", \"name\", \"rowguid\", \"modifieddate\"")) .updateReturning(ProductcategoryRow._rowParser.exactlyOne()) .runUnchecked(c) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRow.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRow.kt index e5c8975ac6..5e301c8e58 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRow.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRow.kt @@ -48,7 +48,7 @@ data class ProductcategoryRow( ): ProductcategoryRowUnsaved = ProductcategoryRowUnsaved(name, productcategoryid, rowguid, modifieddate) companion object { - val _rowParser: RowParser = RowParsers.of(ProductcategoryId.dbType, Name.dbType, PgTypes.uuid, PgTypes.timestamp, { t0, t1, t2, t3 -> ProductcategoryRow(t0, t1, t2, t3) }, { row -> arrayOf(row.productcategoryid, row.name, row.rowguid, row.modifieddate) }) + val _rowParser: RowParser = RowParsers.of(ProductcategoryId.pgType, Name.pgType, PgTypes.uuid, PgTypes.timestamp, { t0, t1, t2, t3 -> ProductcategoryRow(t0, t1, t2, t3) }, { row -> arrayOf(row.productcategoryid, row.name, row.rowguid, row.modifieddate) }) val pgText: PgText = PgText.from(_rowParser.underlying) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRowUnsaved.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRowUnsaved.kt index aa12f86772..1770ff11ec 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRowUnsaved.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRowUnsaved.kt @@ -34,9 +34,9 @@ data class ProductcategoryRowUnsaved( companion object { val pgText: PgText = - PgText.instance({ row, sb -> Name.dbType.text().unsafeEncode(row.name, sb) + PgText.instance({ row, sb -> Name.pgType.text().unsafeEncode(row.name, sb) sb.append(PgText.DELIMETER) - Defaulted.pgText(ProductcategoryId.dbType.text()).unsafeEncode(row.productcategoryid, sb) + Defaulted.pgText(ProductcategoryId.pgType.text()).unsafeEncode(row.productcategoryid, sb) sb.append(PgText.DELIMETER) Defaulted.pgText(PgTypes.uuid.text()).unsafeEncode(row.rowguid, sb) sb.append(PgText.DELIMETER) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryFields.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryFields.kt index f73dcd853f..48b1816249 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryFields.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryFields.kt @@ -50,7 +50,7 @@ data class ProductcosthistoryFields(val _path: List) : TupleExpr5 = Field(_path, "modifieddate", ProductcosthistoryRow::modifieddate, null, "timestamp", { row, value -> row.copy(modifieddate = value) }, PgTypes.timestamp) - fun productid(): IdField = IdField(_path, "productid", ProductcosthistoryRow::productid, null, "int4", { row, value -> row.copy(productid = value) }, ProductId.dbType) + fun productid(): IdField = IdField(_path, "productid", ProductcosthistoryRow::productid, null, "int4", { row, value -> row.copy(productid = value) }, ProductId.pgType) override fun rowParser(): RowParser = ProductcosthistoryRow._rowParser.underlying diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryId.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryId.kt index 512922453c..044a0f2a2f 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryId.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryId.kt @@ -22,6 +22,6 @@ data class ProductcosthistoryId( override fun _2(): LocalDateTime = startdate companion object { - val _rowParser: RowParser = RowParsers.of(ProductId.dbType, PgTypes.timestamp, { t0, t1 -> ProductcosthistoryId(t0, t1) }, { row -> arrayOf(row.productid, row.startdate) }) + val _rowParser: RowParser = RowParsers.of(ProductId.pgType, PgTypes.timestamp, { t0, t1 -> ProductcosthistoryId(t0, t1) }, { row -> arrayOf(row.productid, row.startdate) }) } } \ No newline at end of file diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRepoImpl.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRepoImpl.kt index 517eeb8347..1045589001 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRepoImpl.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRepoImpl.kt @@ -29,7 +29,7 @@ class ProductcosthistoryRepoImpl() : ProductcosthistoryRepo { override fun deleteById( compositeId: ProductcosthistoryId, c: Connection - ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"production\".\"productcosthistory\" where \"productid\" = "), Fragment.encode(ProductId.dbType, compositeId.productid), Fragment.lit(" AND \"startdate\" = "), Fragment.encode(PgTypes.timestamp, compositeId.startdate), Fragment.lit("")).update().runUnchecked(c) > 0 + ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"production\".\"productcosthistory\" where \"productid\" = "), Fragment.encode(ProductId.pgType, compositeId.productid), Fragment.lit(" AND \"startdate\" = "), Fragment.encode(PgTypes.timestamp, compositeId.startdate), Fragment.lit("")).update().runUnchecked(c) > 0 override fun deleteByIds( compositeIds: Array, @@ -37,13 +37,13 @@ class ProductcosthistoryRepoImpl() : ProductcosthistoryRepo { ): Int { val productid: Array = arrayMap.map(compositeIds, ProductcosthistoryId::productid, ProductId::class.java) val startdate: Array = arrayMap.map(compositeIds, ProductcosthistoryId::startdate, LocalDateTime::class.java) - return Fragment.interpolate(Fragment.lit("delete\nfrom \"production\".\"productcosthistory\"\nwhere (\"productid\", \"startdate\")\nin (select * from unnest("), Fragment.encode(ProductId.dbTypeArray, productid), Fragment.lit(", "), Fragment.encode(PgTypes.timestampArray, startdate), Fragment.lit("))\n")).update().runUnchecked(c) + return Fragment.interpolate(Fragment.lit("delete\nfrom \"production\".\"productcosthistory\"\nwhere (\"productid\", \"startdate\")\nin (select * from unnest("), Fragment.encode(ProductId.pgTypeArray, productid), Fragment.lit(", "), Fragment.encode(PgTypes.timestampArray, startdate), Fragment.lit("))\n")).update().runUnchecked(c) } override fun insert( unsaved: ProductcosthistoryRow, c: Connection - ): ProductcosthistoryRow = Fragment.interpolate(Fragment.lit("insert into \"production\".\"productcosthistory\"(\"productid\", \"startdate\", \"enddate\", \"standardcost\", \"modifieddate\")\nvalues ("), Fragment.encode(ProductId.dbType, unsaved.productid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.timestamp, unsaved.startdate), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamp.nullable(), unsaved.enddate), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.numeric, unsaved.standardcost), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\nRETURNING \"productid\", \"startdate\", \"enddate\", \"standardcost\", \"modifieddate\"\n")) + ): ProductcosthistoryRow = Fragment.interpolate(Fragment.lit("insert into \"production\".\"productcosthistory\"(\"productid\", \"startdate\", \"enddate\", \"standardcost\", \"modifieddate\")\nvalues ("), Fragment.encode(ProductId.pgType, unsaved.productid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.timestamp, unsaved.startdate), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamp.nullable(), unsaved.enddate), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.numeric, unsaved.standardcost), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\nRETURNING \"productid\", \"startdate\", \"enddate\", \"standardcost\", \"modifieddate\"\n")) .updateReturning(ProductcosthistoryRow._rowParser.exactlyOne()).runUnchecked(c) override fun insert( @@ -53,7 +53,7 @@ class ProductcosthistoryRepoImpl() : ProductcosthistoryRepo { val columns: ArrayList = ArrayList() val values: ArrayList = ArrayList() columns.add(Fragment.lit("\"productid\"")) - values.add(Fragment.interpolate(Fragment.encode(ProductId.dbType, unsaved.productid), Fragment.lit("::int4"))) + values.add(Fragment.interpolate(Fragment.encode(ProductId.pgType, unsaved.productid), Fragment.lit("::int4"))) columns.add(Fragment.lit("\"startdate\"")) values.add(Fragment.interpolate(Fragment.encode(PgTypes.timestamp, unsaved.startdate), Fragment.lit("::timestamp"))) columns.add(Fragment.lit("\"enddate\"")) @@ -89,7 +89,7 @@ class ProductcosthistoryRepoImpl() : ProductcosthistoryRepo { override fun selectById( compositeId: ProductcosthistoryId, c: Connection - ): ProductcosthistoryRow? = Fragment.interpolate(Fragment.lit("select \"productid\", \"startdate\", \"enddate\", \"standardcost\", \"modifieddate\"\nfrom \"production\".\"productcosthistory\"\nwhere \"productid\" = "), Fragment.encode(ProductId.dbType, compositeId.productid), Fragment.lit(" AND \"startdate\" = "), Fragment.encode(PgTypes.timestamp, compositeId.startdate), Fragment.lit("")).query(ProductcosthistoryRow._rowParser.first()).runUnchecked(c) + ): ProductcosthistoryRow? = Fragment.interpolate(Fragment.lit("select \"productid\", \"startdate\", \"enddate\", \"standardcost\", \"modifieddate\"\nfrom \"production\".\"productcosthistory\"\nwhere \"productid\" = "), Fragment.encode(ProductId.pgType, compositeId.productid), Fragment.lit(" AND \"startdate\" = "), Fragment.encode(PgTypes.timestamp, compositeId.startdate), Fragment.lit("")).query(ProductcosthistoryRow._rowParser.first()).runUnchecked(c) override fun selectByIds( compositeIds: Array, @@ -97,7 +97,7 @@ class ProductcosthistoryRepoImpl() : ProductcosthistoryRepo { ): List { val productid: Array = arrayMap.map(compositeIds, ProductcosthistoryId::productid, ProductId::class.java) val startdate: Array = arrayMap.map(compositeIds, ProductcosthistoryId::startdate, LocalDateTime::class.java) - return Fragment.interpolate(Fragment.lit("select \"productid\", \"startdate\", \"enddate\", \"standardcost\", \"modifieddate\"\nfrom \"production\".\"productcosthistory\"\nwhere (\"productid\", \"startdate\")\nin (select * from unnest("), Fragment.encode(ProductId.dbTypeArray, productid), Fragment.lit(", "), Fragment.encode(PgTypes.timestampArray, startdate), Fragment.lit("))\n")).query(ProductcosthistoryRow._rowParser.all()).runUnchecked(c) + return Fragment.interpolate(Fragment.lit("select \"productid\", \"startdate\", \"enddate\", \"standardcost\", \"modifieddate\"\nfrom \"production\".\"productcosthistory\"\nwhere (\"productid\", \"startdate\")\nin (select * from unnest("), Fragment.encode(ProductId.pgTypeArray, productid), Fragment.lit(", "), Fragment.encode(PgTypes.timestampArray, startdate), Fragment.lit("))\n")).query(ProductcosthistoryRow._rowParser.all()).runUnchecked(c) } override fun selectByIdsTracked( @@ -116,13 +116,13 @@ class ProductcosthistoryRepoImpl() : ProductcosthistoryRepo { c: Connection ): Boolean { val compositeId: ProductcosthistoryId = row.compositeId() - return Fragment.interpolate(Fragment.lit("update \"production\".\"productcosthistory\"\nset \"enddate\" = "), Fragment.encode(PgTypes.timestamp.nullable(), row.enddate), Fragment.lit("::timestamp,\n\"standardcost\" = "), Fragment.encode(PgTypes.numeric, row.standardcost), Fragment.lit("::numeric,\n\"modifieddate\" = "), Fragment.encode(PgTypes.timestamp, row.modifieddate), Fragment.lit("::timestamp\nwhere \"productid\" = "), Fragment.encode(ProductId.dbType, compositeId.productid), Fragment.lit(" AND \"startdate\" = "), Fragment.encode(PgTypes.timestamp, compositeId.startdate), Fragment.lit("")).update().runUnchecked(c) > 0 + return Fragment.interpolate(Fragment.lit("update \"production\".\"productcosthistory\"\nset \"enddate\" = "), Fragment.encode(PgTypes.timestamp.nullable(), row.enddate), Fragment.lit("::timestamp,\n\"standardcost\" = "), Fragment.encode(PgTypes.numeric, row.standardcost), Fragment.lit("::numeric,\n\"modifieddate\" = "), Fragment.encode(PgTypes.timestamp, row.modifieddate), Fragment.lit("::timestamp\nwhere \"productid\" = "), Fragment.encode(ProductId.pgType, compositeId.productid), Fragment.lit(" AND \"startdate\" = "), Fragment.encode(PgTypes.timestamp, compositeId.startdate), Fragment.lit("")).update().runUnchecked(c) > 0 } override fun upsert( unsaved: ProductcosthistoryRow, c: Connection - ): ProductcosthistoryRow = Fragment.interpolate(Fragment.lit("insert into \"production\".\"productcosthistory\"(\"productid\", \"startdate\", \"enddate\", \"standardcost\", \"modifieddate\")\nvalues ("), Fragment.encode(ProductId.dbType, unsaved.productid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.timestamp, unsaved.startdate), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamp.nullable(), unsaved.enddate), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.numeric, unsaved.standardcost), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\non conflict (\"productid\", \"startdate\")\ndo update set\n \"enddate\" = EXCLUDED.\"enddate\",\n\"standardcost\" = EXCLUDED.\"standardcost\",\n\"modifieddate\" = EXCLUDED.\"modifieddate\"\nreturning \"productid\", \"startdate\", \"enddate\", \"standardcost\", \"modifieddate\"")) + ): ProductcosthistoryRow = Fragment.interpolate(Fragment.lit("insert into \"production\".\"productcosthistory\"(\"productid\", \"startdate\", \"enddate\", \"standardcost\", \"modifieddate\")\nvalues ("), Fragment.encode(ProductId.pgType, unsaved.productid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.timestamp, unsaved.startdate), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamp.nullable(), unsaved.enddate), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.numeric, unsaved.standardcost), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\non conflict (\"productid\", \"startdate\")\ndo update set\n \"enddate\" = EXCLUDED.\"enddate\",\n\"standardcost\" = EXCLUDED.\"standardcost\",\n\"modifieddate\" = EXCLUDED.\"modifieddate\"\nreturning \"productid\", \"startdate\", \"enddate\", \"standardcost\", \"modifieddate\"")) .updateReturning(ProductcosthistoryRow._rowParser.exactlyOne()) .runUnchecked(c) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRow.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRow.kt index ff0c0a54c6..9278f243fe 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRow.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRow.kt @@ -57,7 +57,7 @@ data class ProductcosthistoryRow( fun toUnsavedRow(modifieddate: Defaulted = Defaulted.Provided(this.modifieddate)): ProductcosthistoryRowUnsaved = ProductcosthistoryRowUnsaved(productid, startdate, enddate, standardcost, modifieddate) companion object { - val _rowParser: RowParser = RowParsers.of(ProductId.dbType, PgTypes.timestamp, PgTypes.timestamp.nullable(), PgTypes.numeric, PgTypes.timestamp, { t0, t1, t2, t3, t4 -> ProductcosthistoryRow(t0, t1, t2, t3, t4) }, { row -> arrayOf(row.productid, row.startdate, row.enddate, row.standardcost, row.modifieddate) }) + val _rowParser: RowParser = RowParsers.of(ProductId.pgType, PgTypes.timestamp, PgTypes.timestamp.nullable(), PgTypes.numeric, PgTypes.timestamp, { t0, t1, t2, t3, t4 -> ProductcosthistoryRow(t0, t1, t2, t3, t4) }, { row -> arrayOf(row.productid, row.startdate, row.enddate, row.standardcost, row.modifieddate) }) fun apply( compositeId: ProductcosthistoryId, diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRowUnsaved.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRowUnsaved.kt index 6c57aa6103..feed480667 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRowUnsaved.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRowUnsaved.kt @@ -39,7 +39,7 @@ data class ProductcosthistoryRowUnsaved( companion object { val pgText: PgText = - PgText.instance({ row, sb -> ProductId.dbType.text().unsafeEncode(row.productid, sb) + PgText.instance({ row, sb -> ProductId.pgType.text().unsafeEncode(row.productid, sb) sb.append(PgText.DELIMETER) PgTypes.timestamp.text().unsafeEncode(row.startdate, sb) sb.append(PgText.DELIMETER) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelFields.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelFields.kt index 28ca627752..3002c4098a 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelFields.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelFields.kt @@ -45,9 +45,9 @@ data class ProductmodelFields(val _path: List) : TupleExpr6 = Field(_path, "modifieddate", ProductmodelRow::modifieddate, null, "timestamp", { row, value -> row.copy(modifieddate = value) }, PgTypes.timestamp) - fun name(): Field = Field(_path, "name", ProductmodelRow::name, null, "varchar", { row, value -> row.copy(name = value) }, Name.dbType) + fun name(): Field = Field(_path, "name", ProductmodelRow::name, null, "varchar", { row, value -> row.copy(name = value) }, Name.pgType) - fun productmodelid(): IdField = IdField(_path, "productmodelid", ProductmodelRow::productmodelid, null, "int4", { row, value -> row.copy(productmodelid = value) }, ProductmodelId.dbType) + fun productmodelid(): IdField = IdField(_path, "productmodelid", ProductmodelRow::productmodelid, null, "int4", { row, value -> row.copy(productmodelid = value) }, ProductmodelId.pgType) override fun rowParser(): RowParser = ProductmodelRow._rowParser.underlying diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelId.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelId.kt index a371a040a9..8142c6de17 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelId.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelId.kt @@ -22,10 +22,10 @@ data class ProductmodelId(@field:JsonValue val value: Int) { val bijection: Bijection = Bijection.of(ProductmodelId::value, ::ProductmodelId) - val dbType: PgType = + val pgType: PgType = KotlinDbTypes.PgTypes.int4.bimap(::ProductmodelId, ProductmodelId::value) - val dbTypeArray: PgType> = + val pgTypeArray: PgType> = PgTypes.int4Array.bimap({ xs -> arrayMap.map(xs, ::ProductmodelId, ProductmodelId::class.java) }, { xs -> arrayMap.map(xs, ProductmodelId::value, Int::class.javaObjectType) }) } } \ No newline at end of file diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRepoImpl.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRepoImpl.kt index 0124754498..06687e5d21 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRepoImpl.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRepoImpl.kt @@ -27,19 +27,19 @@ class ProductmodelRepoImpl() : ProductmodelRepo { override fun deleteById( productmodelid: ProductmodelId, c: Connection - ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"production\".\"productmodel\" where \"productmodelid\" = "), Fragment.encode(ProductmodelId.dbType, productmodelid), Fragment.lit("")).update().runUnchecked(c) > 0 + ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"production\".\"productmodel\" where \"productmodelid\" = "), Fragment.encode(ProductmodelId.pgType, productmodelid), Fragment.lit("")).update().runUnchecked(c) > 0 override fun deleteByIds( productmodelids: Array, c: Connection - ): Int = Fragment.interpolate(Fragment.lit("delete\nfrom \"production\".\"productmodel\"\nwhere \"productmodelid\" = ANY("), Fragment.encode(ProductmodelId.dbTypeArray, productmodelids), Fragment.lit(")")) + ): Int = Fragment.interpolate(Fragment.lit("delete\nfrom \"production\".\"productmodel\"\nwhere \"productmodelid\" = ANY("), Fragment.encode(ProductmodelId.pgTypeArray, productmodelids), Fragment.lit(")")) .update() .runUnchecked(c) override fun insert( unsaved: ProductmodelRow, c: Connection - ): ProductmodelRow = Fragment.interpolate(Fragment.lit("insert into \"production\".\"productmodel\"(\"productmodelid\", \"name\", \"catalogdescription\", \"instructions\", \"rowguid\", \"modifieddate\")\nvalues ("), Fragment.encode(ProductmodelId.dbType, unsaved.productmodelid), Fragment.lit("::int4, "), Fragment.encode(Name.dbType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.xml.nullable(), unsaved.catalogdescription), Fragment.lit("::xml, "), Fragment.encode(PgTypes.xml.nullable(), unsaved.instructions), Fragment.lit("::xml, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\nRETURNING \"productmodelid\", \"name\", \"catalogdescription\", \"instructions\", \"rowguid\", \"modifieddate\"\n")) + ): ProductmodelRow = Fragment.interpolate(Fragment.lit("insert into \"production\".\"productmodel\"(\"productmodelid\", \"name\", \"catalogdescription\", \"instructions\", \"rowguid\", \"modifieddate\")\nvalues ("), Fragment.encode(ProductmodelId.pgType, unsaved.productmodelid), Fragment.lit("::int4, "), Fragment.encode(Name.pgType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.xml.nullable(), unsaved.catalogdescription), Fragment.lit("::xml, "), Fragment.encode(PgTypes.xml.nullable(), unsaved.instructions), Fragment.lit("::xml, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\nRETURNING \"productmodelid\", \"name\", \"catalogdescription\", \"instructions\", \"rowguid\", \"modifieddate\"\n")) .updateReturning(ProductmodelRow._rowParser.exactlyOne()).runUnchecked(c) override fun insert( @@ -49,7 +49,7 @@ class ProductmodelRepoImpl() : ProductmodelRepo { val columns: ArrayList = ArrayList() val values: ArrayList = ArrayList() columns.add(Fragment.lit("\"name\"")) - values.add(Fragment.interpolate(Fragment.encode(Name.dbType, unsaved.name), Fragment.lit("::varchar"))) + values.add(Fragment.interpolate(Fragment.encode(Name.pgType, unsaved.name), Fragment.lit("::varchar"))) columns.add(Fragment.lit("\"catalogdescription\"")) values.add(Fragment.interpolate(Fragment.encode(PgTypes.xml.nullable(), unsaved.catalogdescription), Fragment.lit("::xml"))) columns.add(Fragment.lit("\"instructions\"")) @@ -57,7 +57,7 @@ class ProductmodelRepoImpl() : ProductmodelRepo { unsaved.productmodelid.visit( { }, { value -> columns.add(Fragment.lit("\"productmodelid\"")) - values.add(Fragment.interpolate(Fragment.encode(ProductmodelId.dbType, value), Fragment.lit("::int4"))) } + values.add(Fragment.interpolate(Fragment.encode(ProductmodelId.pgType, value), Fragment.lit("::int4"))) } ); unsaved.rowguid.visit( { }, @@ -93,12 +93,12 @@ class ProductmodelRepoImpl() : ProductmodelRepo { override fun selectById( productmodelid: ProductmodelId, c: Connection - ): ProductmodelRow? = Fragment.interpolate(Fragment.lit("select \"productmodelid\", \"name\", \"catalogdescription\", \"instructions\", \"rowguid\", \"modifieddate\"\nfrom \"production\".\"productmodel\"\nwhere \"productmodelid\" = "), Fragment.encode(ProductmodelId.dbType, productmodelid), Fragment.lit("")).query(ProductmodelRow._rowParser.first()).runUnchecked(c) + ): ProductmodelRow? = Fragment.interpolate(Fragment.lit("select \"productmodelid\", \"name\", \"catalogdescription\", \"instructions\", \"rowguid\", \"modifieddate\"\nfrom \"production\".\"productmodel\"\nwhere \"productmodelid\" = "), Fragment.encode(ProductmodelId.pgType, productmodelid), Fragment.lit("")).query(ProductmodelRow._rowParser.first()).runUnchecked(c) override fun selectByIds( productmodelids: Array, c: Connection - ): List = Fragment.interpolate(Fragment.lit("select \"productmodelid\", \"name\", \"catalogdescription\", \"instructions\", \"rowguid\", \"modifieddate\"\nfrom \"production\".\"productmodel\"\nwhere \"productmodelid\" = ANY("), Fragment.encode(ProductmodelId.dbTypeArray, productmodelids), Fragment.lit(")")).query(ProductmodelRow._rowParser.all()).runUnchecked(c) + ): List = Fragment.interpolate(Fragment.lit("select \"productmodelid\", \"name\", \"catalogdescription\", \"instructions\", \"rowguid\", \"modifieddate\"\nfrom \"production\".\"productmodel\"\nwhere \"productmodelid\" = ANY("), Fragment.encode(ProductmodelId.pgTypeArray, productmodelids), Fragment.lit(")")).query(ProductmodelRow._rowParser.all()).runUnchecked(c) override fun selectByIdsTracked( productmodelids: Array, @@ -116,13 +116,13 @@ class ProductmodelRepoImpl() : ProductmodelRepo { c: Connection ): Boolean { val productmodelid: ProductmodelId = row.productmodelid - return Fragment.interpolate(Fragment.lit("update \"production\".\"productmodel\"\nset \"name\" = "), Fragment.encode(Name.dbType, row.name), Fragment.lit("::varchar,\n\"catalogdescription\" = "), Fragment.encode(PgTypes.xml.nullable(), row.catalogdescription), Fragment.lit("::xml,\n\"instructions\" = "), Fragment.encode(PgTypes.xml.nullable(), row.instructions), Fragment.lit("::xml,\n\"rowguid\" = "), Fragment.encode(PgTypes.uuid, row.rowguid), Fragment.lit("::uuid,\n\"modifieddate\" = "), Fragment.encode(PgTypes.timestamp, row.modifieddate), Fragment.lit("::timestamp\nwhere \"productmodelid\" = "), Fragment.encode(ProductmodelId.dbType, productmodelid), Fragment.lit("")).update().runUnchecked(c) > 0 + return Fragment.interpolate(Fragment.lit("update \"production\".\"productmodel\"\nset \"name\" = "), Fragment.encode(Name.pgType, row.name), Fragment.lit("::varchar,\n\"catalogdescription\" = "), Fragment.encode(PgTypes.xml.nullable(), row.catalogdescription), Fragment.lit("::xml,\n\"instructions\" = "), Fragment.encode(PgTypes.xml.nullable(), row.instructions), Fragment.lit("::xml,\n\"rowguid\" = "), Fragment.encode(PgTypes.uuid, row.rowguid), Fragment.lit("::uuid,\n\"modifieddate\" = "), Fragment.encode(PgTypes.timestamp, row.modifieddate), Fragment.lit("::timestamp\nwhere \"productmodelid\" = "), Fragment.encode(ProductmodelId.pgType, productmodelid), Fragment.lit("")).update().runUnchecked(c) > 0 } override fun upsert( unsaved: ProductmodelRow, c: Connection - ): ProductmodelRow = Fragment.interpolate(Fragment.lit("insert into \"production\".\"productmodel\"(\"productmodelid\", \"name\", \"catalogdescription\", \"instructions\", \"rowguid\", \"modifieddate\")\nvalues ("), Fragment.encode(ProductmodelId.dbType, unsaved.productmodelid), Fragment.lit("::int4, "), Fragment.encode(Name.dbType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.xml.nullable(), unsaved.catalogdescription), Fragment.lit("::xml, "), Fragment.encode(PgTypes.xml.nullable(), unsaved.instructions), Fragment.lit("::xml, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\non conflict (\"productmodelid\")\ndo update set\n \"name\" = EXCLUDED.\"name\",\n\"catalogdescription\" = EXCLUDED.\"catalogdescription\",\n\"instructions\" = EXCLUDED.\"instructions\",\n\"rowguid\" = EXCLUDED.\"rowguid\",\n\"modifieddate\" = EXCLUDED.\"modifieddate\"\nreturning \"productmodelid\", \"name\", \"catalogdescription\", \"instructions\", \"rowguid\", \"modifieddate\"")) + ): ProductmodelRow = Fragment.interpolate(Fragment.lit("insert into \"production\".\"productmodel\"(\"productmodelid\", \"name\", \"catalogdescription\", \"instructions\", \"rowguid\", \"modifieddate\")\nvalues ("), Fragment.encode(ProductmodelId.pgType, unsaved.productmodelid), Fragment.lit("::int4, "), Fragment.encode(Name.pgType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.xml.nullable(), unsaved.catalogdescription), Fragment.lit("::xml, "), Fragment.encode(PgTypes.xml.nullable(), unsaved.instructions), Fragment.lit("::xml, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\non conflict (\"productmodelid\")\ndo update set\n \"name\" = EXCLUDED.\"name\",\n\"catalogdescription\" = EXCLUDED.\"catalogdescription\",\n\"instructions\" = EXCLUDED.\"instructions\",\n\"rowguid\" = EXCLUDED.\"rowguid\",\n\"modifieddate\" = EXCLUDED.\"modifieddate\"\nreturning \"productmodelid\", \"name\", \"catalogdescription\", \"instructions\", \"rowguid\", \"modifieddate\"")) .updateReturning(ProductmodelRow._rowParser.exactlyOne()) .runUnchecked(c) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRow.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRow.kt index 63272d555f..30d79d9fbf 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRow.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRow.kt @@ -58,7 +58,7 @@ data class ProductmodelRow( ): ProductmodelRowUnsaved = ProductmodelRowUnsaved(name, catalogdescription, instructions, productmodelid, rowguid, modifieddate) companion object { - val _rowParser: RowParser = RowParsers.of(ProductmodelId.dbType, Name.dbType, PgTypes.xml.nullable(), PgTypes.xml.nullable(), PgTypes.uuid, PgTypes.timestamp, { t0, t1, t2, t3, t4, t5 -> ProductmodelRow(t0, t1, t2, t3, t4, t5) }, { row -> arrayOf(row.productmodelid, row.name, row.catalogdescription, row.instructions, row.rowguid, row.modifieddate) }) + val _rowParser: RowParser = RowParsers.of(ProductmodelId.pgType, Name.pgType, PgTypes.xml.nullable(), PgTypes.xml.nullable(), PgTypes.uuid, PgTypes.timestamp, { t0, t1, t2, t3, t4, t5 -> ProductmodelRow(t0, t1, t2, t3, t4, t5) }, { row -> arrayOf(row.productmodelid, row.name, row.catalogdescription, row.instructions, row.rowguid, row.modifieddate) }) val pgText: PgText = PgText.from(_rowParser.underlying) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRowUnsaved.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRowUnsaved.kt index f991cc054e..2598a661db 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRowUnsaved.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRowUnsaved.kt @@ -40,13 +40,13 @@ data class ProductmodelRowUnsaved( companion object { val pgText: PgText = - PgText.instance({ row, sb -> Name.dbType.text().unsafeEncode(row.name, sb) + PgText.instance({ row, sb -> Name.pgType.text().unsafeEncode(row.name, sb) sb.append(PgText.DELIMETER) PgTypes.xml.nullable().text().unsafeEncode(row.catalogdescription, sb) sb.append(PgText.DELIMETER) PgTypes.xml.nullable().text().unsafeEncode(row.instructions, sb) sb.append(PgText.DELIMETER) - Defaulted.pgText(ProductmodelId.dbType.text()).unsafeEncode(row.productmodelid, sb) + Defaulted.pgText(ProductmodelId.pgType.text()).unsafeEncode(row.productmodelid, sb) sb.append(PgText.DELIMETER) Defaulted.pgText(PgTypes.uuid.text()).unsafeEncode(row.rowguid, sb) sb.append(PgText.DELIMETER) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryFields.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryFields.kt index 59a9818a5a..8822affd57 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryFields.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryFields.kt @@ -43,11 +43,11 @@ data class ProductsubcategoryFields(val _path: List) : TupleExpr5 = Field(_path, "modifieddate", ProductsubcategoryRow::modifieddate, null, "timestamp", { row, value -> row.copy(modifieddate = value) }, PgTypes.timestamp) - fun name(): Field = Field(_path, "name", ProductsubcategoryRow::name, null, "varchar", { row, value -> row.copy(name = value) }, Name.dbType) + fun name(): Field = Field(_path, "name", ProductsubcategoryRow::name, null, "varchar", { row, value -> row.copy(name = value) }, Name.pgType) - fun productcategoryid(): Field = Field(_path, "productcategoryid", ProductsubcategoryRow::productcategoryid, null, "int4", { row, value -> row.copy(productcategoryid = value) }, ProductcategoryId.dbType) + fun productcategoryid(): Field = Field(_path, "productcategoryid", ProductsubcategoryRow::productcategoryid, null, "int4", { row, value -> row.copy(productcategoryid = value) }, ProductcategoryId.pgType) - fun productsubcategoryid(): IdField = IdField(_path, "productsubcategoryid", ProductsubcategoryRow::productsubcategoryid, null, "int4", { row, value -> row.copy(productsubcategoryid = value) }, ProductsubcategoryId.dbType) + fun productsubcategoryid(): IdField = IdField(_path, "productsubcategoryid", ProductsubcategoryRow::productsubcategoryid, null, "int4", { row, value -> row.copy(productsubcategoryid = value) }, ProductsubcategoryId.pgType) override fun rowParser(): RowParser = ProductsubcategoryRow._rowParser.underlying diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryId.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryId.kt index 1cd68a98c9..43eb97bb4c 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryId.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryId.kt @@ -22,10 +22,10 @@ data class ProductsubcategoryId(@field:JsonValue val value: Int) { val bijection: Bijection = Bijection.of(ProductsubcategoryId::value, ::ProductsubcategoryId) - val dbType: PgType = + val pgType: PgType = KotlinDbTypes.PgTypes.int4.bimap(::ProductsubcategoryId, ProductsubcategoryId::value) - val dbTypeArray: PgType> = + val pgTypeArray: PgType> = PgTypes.int4Array.bimap({ xs -> arrayMap.map(xs, ::ProductsubcategoryId, ProductsubcategoryId::class.java) }, { xs -> arrayMap.map(xs, ProductsubcategoryId::value, Int::class.javaObjectType) }) } } \ No newline at end of file diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRepoImpl.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRepoImpl.kt index 2844cb0748..59aba9b710 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRepoImpl.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRepoImpl.kt @@ -27,19 +27,19 @@ class ProductsubcategoryRepoImpl() : ProductsubcategoryRepo { override fun deleteById( productsubcategoryid: ProductsubcategoryId, c: Connection - ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"production\".\"productsubcategory\" where \"productsubcategoryid\" = "), Fragment.encode(ProductsubcategoryId.dbType, productsubcategoryid), Fragment.lit("")).update().runUnchecked(c) > 0 + ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"production\".\"productsubcategory\" where \"productsubcategoryid\" = "), Fragment.encode(ProductsubcategoryId.pgType, productsubcategoryid), Fragment.lit("")).update().runUnchecked(c) > 0 override fun deleteByIds( productsubcategoryids: Array, c: Connection - ): Int = Fragment.interpolate(Fragment.lit("delete\nfrom \"production\".\"productsubcategory\"\nwhere \"productsubcategoryid\" = ANY("), Fragment.encode(ProductsubcategoryId.dbTypeArray, productsubcategoryids), Fragment.lit(")")) + ): Int = Fragment.interpolate(Fragment.lit("delete\nfrom \"production\".\"productsubcategory\"\nwhere \"productsubcategoryid\" = ANY("), Fragment.encode(ProductsubcategoryId.pgTypeArray, productsubcategoryids), Fragment.lit(")")) .update() .runUnchecked(c) override fun insert( unsaved: ProductsubcategoryRow, c: Connection - ): ProductsubcategoryRow = Fragment.interpolate(Fragment.lit("insert into \"production\".\"productsubcategory\"(\"productsubcategoryid\", \"productcategoryid\", \"name\", \"rowguid\", \"modifieddate\")\nvalues ("), Fragment.encode(ProductsubcategoryId.dbType, unsaved.productsubcategoryid), Fragment.lit("::int4, "), Fragment.encode(ProductcategoryId.dbType, unsaved.productcategoryid), Fragment.lit("::int4, "), Fragment.encode(Name.dbType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\nRETURNING \"productsubcategoryid\", \"productcategoryid\", \"name\", \"rowguid\", \"modifieddate\"\n")) + ): ProductsubcategoryRow = Fragment.interpolate(Fragment.lit("insert into \"production\".\"productsubcategory\"(\"productsubcategoryid\", \"productcategoryid\", \"name\", \"rowguid\", \"modifieddate\")\nvalues ("), Fragment.encode(ProductsubcategoryId.pgType, unsaved.productsubcategoryid), Fragment.lit("::int4, "), Fragment.encode(ProductcategoryId.pgType, unsaved.productcategoryid), Fragment.lit("::int4, "), Fragment.encode(Name.pgType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\nRETURNING \"productsubcategoryid\", \"productcategoryid\", \"name\", \"rowguid\", \"modifieddate\"\n")) .updateReturning(ProductsubcategoryRow._rowParser.exactlyOne()).runUnchecked(c) override fun insert( @@ -49,13 +49,13 @@ class ProductsubcategoryRepoImpl() : ProductsubcategoryRepo { val columns: ArrayList = ArrayList() val values: ArrayList = ArrayList() columns.add(Fragment.lit("\"productcategoryid\"")) - values.add(Fragment.interpolate(Fragment.encode(ProductcategoryId.dbType, unsaved.productcategoryid), Fragment.lit("::int4"))) + values.add(Fragment.interpolate(Fragment.encode(ProductcategoryId.pgType, unsaved.productcategoryid), Fragment.lit("::int4"))) columns.add(Fragment.lit("\"name\"")) - values.add(Fragment.interpolate(Fragment.encode(Name.dbType, unsaved.name), Fragment.lit("::varchar"))) + values.add(Fragment.interpolate(Fragment.encode(Name.pgType, unsaved.name), Fragment.lit("::varchar"))) unsaved.productsubcategoryid.visit( { }, { value -> columns.add(Fragment.lit("\"productsubcategoryid\"")) - values.add(Fragment.interpolate(Fragment.encode(ProductsubcategoryId.dbType, value), Fragment.lit("::int4"))) } + values.add(Fragment.interpolate(Fragment.encode(ProductsubcategoryId.pgType, value), Fragment.lit("::int4"))) } ); unsaved.rowguid.visit( { }, @@ -91,12 +91,12 @@ class ProductsubcategoryRepoImpl() : ProductsubcategoryRepo { override fun selectById( productsubcategoryid: ProductsubcategoryId, c: Connection - ): ProductsubcategoryRow? = Fragment.interpolate(Fragment.lit("select \"productsubcategoryid\", \"productcategoryid\", \"name\", \"rowguid\", \"modifieddate\"\nfrom \"production\".\"productsubcategory\"\nwhere \"productsubcategoryid\" = "), Fragment.encode(ProductsubcategoryId.dbType, productsubcategoryid), Fragment.lit("")).query(ProductsubcategoryRow._rowParser.first()).runUnchecked(c) + ): ProductsubcategoryRow? = Fragment.interpolate(Fragment.lit("select \"productsubcategoryid\", \"productcategoryid\", \"name\", \"rowguid\", \"modifieddate\"\nfrom \"production\".\"productsubcategory\"\nwhere \"productsubcategoryid\" = "), Fragment.encode(ProductsubcategoryId.pgType, productsubcategoryid), Fragment.lit("")).query(ProductsubcategoryRow._rowParser.first()).runUnchecked(c) override fun selectByIds( productsubcategoryids: Array, c: Connection - ): List = Fragment.interpolate(Fragment.lit("select \"productsubcategoryid\", \"productcategoryid\", \"name\", \"rowguid\", \"modifieddate\"\nfrom \"production\".\"productsubcategory\"\nwhere \"productsubcategoryid\" = ANY("), Fragment.encode(ProductsubcategoryId.dbTypeArray, productsubcategoryids), Fragment.lit(")")).query(ProductsubcategoryRow._rowParser.all()).runUnchecked(c) + ): List = Fragment.interpolate(Fragment.lit("select \"productsubcategoryid\", \"productcategoryid\", \"name\", \"rowguid\", \"modifieddate\"\nfrom \"production\".\"productsubcategory\"\nwhere \"productsubcategoryid\" = ANY("), Fragment.encode(ProductsubcategoryId.pgTypeArray, productsubcategoryids), Fragment.lit(")")).query(ProductsubcategoryRow._rowParser.all()).runUnchecked(c) override fun selectByIdsTracked( productsubcategoryids: Array, @@ -114,13 +114,13 @@ class ProductsubcategoryRepoImpl() : ProductsubcategoryRepo { c: Connection ): Boolean { val productsubcategoryid: ProductsubcategoryId = row.productsubcategoryid - return Fragment.interpolate(Fragment.lit("update \"production\".\"productsubcategory\"\nset \"productcategoryid\" = "), Fragment.encode(ProductcategoryId.dbType, row.productcategoryid), Fragment.lit("::int4,\n\"name\" = "), Fragment.encode(Name.dbType, row.name), Fragment.lit("::varchar,\n\"rowguid\" = "), Fragment.encode(PgTypes.uuid, row.rowguid), Fragment.lit("::uuid,\n\"modifieddate\" = "), Fragment.encode(PgTypes.timestamp, row.modifieddate), Fragment.lit("::timestamp\nwhere \"productsubcategoryid\" = "), Fragment.encode(ProductsubcategoryId.dbType, productsubcategoryid), Fragment.lit("")).update().runUnchecked(c) > 0 + return Fragment.interpolate(Fragment.lit("update \"production\".\"productsubcategory\"\nset \"productcategoryid\" = "), Fragment.encode(ProductcategoryId.pgType, row.productcategoryid), Fragment.lit("::int4,\n\"name\" = "), Fragment.encode(Name.pgType, row.name), Fragment.lit("::varchar,\n\"rowguid\" = "), Fragment.encode(PgTypes.uuid, row.rowguid), Fragment.lit("::uuid,\n\"modifieddate\" = "), Fragment.encode(PgTypes.timestamp, row.modifieddate), Fragment.lit("::timestamp\nwhere \"productsubcategoryid\" = "), Fragment.encode(ProductsubcategoryId.pgType, productsubcategoryid), Fragment.lit("")).update().runUnchecked(c) > 0 } override fun upsert( unsaved: ProductsubcategoryRow, c: Connection - ): ProductsubcategoryRow = Fragment.interpolate(Fragment.lit("insert into \"production\".\"productsubcategory\"(\"productsubcategoryid\", \"productcategoryid\", \"name\", \"rowguid\", \"modifieddate\")\nvalues ("), Fragment.encode(ProductsubcategoryId.dbType, unsaved.productsubcategoryid), Fragment.lit("::int4, "), Fragment.encode(ProductcategoryId.dbType, unsaved.productcategoryid), Fragment.lit("::int4, "), Fragment.encode(Name.dbType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\non conflict (\"productsubcategoryid\")\ndo update set\n \"productcategoryid\" = EXCLUDED.\"productcategoryid\",\n\"name\" = EXCLUDED.\"name\",\n\"rowguid\" = EXCLUDED.\"rowguid\",\n\"modifieddate\" = EXCLUDED.\"modifieddate\"\nreturning \"productsubcategoryid\", \"productcategoryid\", \"name\", \"rowguid\", \"modifieddate\"")) + ): ProductsubcategoryRow = Fragment.interpolate(Fragment.lit("insert into \"production\".\"productsubcategory\"(\"productsubcategoryid\", \"productcategoryid\", \"name\", \"rowguid\", \"modifieddate\")\nvalues ("), Fragment.encode(ProductsubcategoryId.pgType, unsaved.productsubcategoryid), Fragment.lit("::int4, "), Fragment.encode(ProductcategoryId.pgType, unsaved.productcategoryid), Fragment.lit("::int4, "), Fragment.encode(Name.pgType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\non conflict (\"productsubcategoryid\")\ndo update set\n \"productcategoryid\" = EXCLUDED.\"productcategoryid\",\n\"name\" = EXCLUDED.\"name\",\n\"rowguid\" = EXCLUDED.\"rowguid\",\n\"modifieddate\" = EXCLUDED.\"modifieddate\"\nreturning \"productsubcategoryid\", \"productcategoryid\", \"name\", \"rowguid\", \"modifieddate\"")) .updateReturning(ProductsubcategoryRow._rowParser.exactlyOne()) .runUnchecked(c) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRow.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRow.kt index 96749f8a0b..762e7b4779 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRow.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRow.kt @@ -55,7 +55,7 @@ data class ProductsubcategoryRow( ): ProductsubcategoryRowUnsaved = ProductsubcategoryRowUnsaved(productcategoryid, name, productsubcategoryid, rowguid, modifieddate) companion object { - val _rowParser: RowParser = RowParsers.of(ProductsubcategoryId.dbType, ProductcategoryId.dbType, Name.dbType, PgTypes.uuid, PgTypes.timestamp, { t0, t1, t2, t3, t4 -> ProductsubcategoryRow(t0, t1, t2, t3, t4) }, { row -> arrayOf(row.productsubcategoryid, row.productcategoryid, row.name, row.rowguid, row.modifieddate) }) + val _rowParser: RowParser = RowParsers.of(ProductsubcategoryId.pgType, ProductcategoryId.pgType, Name.pgType, PgTypes.uuid, PgTypes.timestamp, { t0, t1, t2, t3, t4 -> ProductsubcategoryRow(t0, t1, t2, t3, t4) }, { row -> arrayOf(row.productsubcategoryid, row.productcategoryid, row.name, row.rowguid, row.modifieddate) }) val pgText: PgText = PgText.from(_rowParser.underlying) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRowUnsaved.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRowUnsaved.kt index a7666546c8..72da180dd6 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRowUnsaved.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRowUnsaved.kt @@ -39,11 +39,11 @@ data class ProductsubcategoryRowUnsaved( companion object { val pgText: PgText = - PgText.instance({ row, sb -> ProductcategoryId.dbType.text().unsafeEncode(row.productcategoryid, sb) + PgText.instance({ row, sb -> ProductcategoryId.pgType.text().unsafeEncode(row.productcategoryid, sb) sb.append(PgText.DELIMETER) - Name.dbType.text().unsafeEncode(row.name, sb) + Name.pgType.text().unsafeEncode(row.name, sb) sb.append(PgText.DELIMETER) - Defaulted.pgText(ProductsubcategoryId.dbType.text()).unsafeEncode(row.productsubcategoryid, sb) + Defaulted.pgText(ProductsubcategoryId.pgType.text()).unsafeEncode(row.productsubcategoryid, sb) sb.append(PgText.DELIMETER) Defaulted.pgText(PgTypes.uuid.text()).unsafeEncode(row.rowguid, sb) sb.append(PgText.DELIMETER) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureFields.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureFields.kt index e8a66188d1..deaafe2d2a 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureFields.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureFields.kt @@ -32,11 +32,11 @@ data class UnitmeasureFields(val _path: List) : TupleExpr3 = Field(_path, "modifieddate", UnitmeasureRow::modifieddate, null, "timestamp", { row, value -> row.copy(modifieddate = value) }, PgTypes.timestamp) - fun name(): Field = Field(_path, "name", UnitmeasureRow::name, null, "varchar", { row, value -> row.copy(name = value) }, Name.dbType) + fun name(): Field = Field(_path, "name", UnitmeasureRow::name, null, "varchar", { row, value -> row.copy(name = value) }, Name.pgType) override fun rowParser(): RowParser = UnitmeasureRow._rowParser.underlying - fun unitmeasurecode(): IdField = IdField(_path, "unitmeasurecode", UnitmeasureRow::unitmeasurecode, null, "bpchar", { row, value -> row.copy(unitmeasurecode = value) }, UnitmeasureId.dbType) + fun unitmeasurecode(): IdField = IdField(_path, "unitmeasurecode", UnitmeasureRow::unitmeasurecode, null, "bpchar", { row, value -> row.copy(unitmeasurecode = value) }, UnitmeasureId.pgType) override fun withPaths(_path: List): RelationStructure = UnitmeasureFields(_path) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureId.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureId.kt index 792478e097..4fe99d1f6f 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureId.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureId.kt @@ -21,10 +21,10 @@ data class UnitmeasureId(@field:JsonValue val value: String) { val bijection: Bijection = Bijection.of(UnitmeasureId::value, ::UnitmeasureId) - val dbType: PgType = + val pgType: PgType = PgTypes.bpchar.bimap(::UnitmeasureId, UnitmeasureId::value) - val dbTypeArray: PgType> = + val pgTypeArray: PgType> = PgTypes.bpcharArray.bimap({ xs -> arrayMap.map(xs, ::UnitmeasureId, UnitmeasureId::class.java) }, { xs -> arrayMap.map(xs, UnitmeasureId::value, String::class.java) }) } } \ No newline at end of file diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRepoImpl.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRepoImpl.kt index 8c5866021d..fdf75fd9c3 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRepoImpl.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRepoImpl.kt @@ -26,19 +26,19 @@ class UnitmeasureRepoImpl() : UnitmeasureRepo { override fun deleteById( unitmeasurecode: UnitmeasureId, c: Connection - ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"production\".\"unitmeasure\" where \"unitmeasurecode\" = "), Fragment.encode(UnitmeasureId.dbType, unitmeasurecode), Fragment.lit("")).update().runUnchecked(c) > 0 + ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"production\".\"unitmeasure\" where \"unitmeasurecode\" = "), Fragment.encode(UnitmeasureId.pgType, unitmeasurecode), Fragment.lit("")).update().runUnchecked(c) > 0 override fun deleteByIds( unitmeasurecodes: Array, c: Connection - ): Int = Fragment.interpolate(Fragment.lit("delete\nfrom \"production\".\"unitmeasure\"\nwhere \"unitmeasurecode\" = ANY("), Fragment.encode(UnitmeasureId.dbTypeArray, unitmeasurecodes), Fragment.lit(")")) + ): Int = Fragment.interpolate(Fragment.lit("delete\nfrom \"production\".\"unitmeasure\"\nwhere \"unitmeasurecode\" = ANY("), Fragment.encode(UnitmeasureId.pgTypeArray, unitmeasurecodes), Fragment.lit(")")) .update() .runUnchecked(c) override fun insert( unsaved: UnitmeasureRow, c: Connection - ): UnitmeasureRow = Fragment.interpolate(Fragment.lit("insert into \"production\".\"unitmeasure\"(\"unitmeasurecode\", \"name\", \"modifieddate\")\nvalues ("), Fragment.encode(UnitmeasureId.dbType, unsaved.unitmeasurecode), Fragment.lit("::bpchar, "), Fragment.encode(Name.dbType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\nRETURNING \"unitmeasurecode\", \"name\", \"modifieddate\"\n")) + ): UnitmeasureRow = Fragment.interpolate(Fragment.lit("insert into \"production\".\"unitmeasure\"(\"unitmeasurecode\", \"name\", \"modifieddate\")\nvalues ("), Fragment.encode(UnitmeasureId.pgType, unsaved.unitmeasurecode), Fragment.lit("::bpchar, "), Fragment.encode(Name.pgType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\nRETURNING \"unitmeasurecode\", \"name\", \"modifieddate\"\n")) .updateReturning(UnitmeasureRow._rowParser.exactlyOne()).runUnchecked(c) override fun insert( @@ -48,9 +48,9 @@ class UnitmeasureRepoImpl() : UnitmeasureRepo { val columns: ArrayList = ArrayList() val values: ArrayList = ArrayList() columns.add(Fragment.lit("\"unitmeasurecode\"")) - values.add(Fragment.interpolate(Fragment.encode(UnitmeasureId.dbType, unsaved.unitmeasurecode), Fragment.lit("::bpchar"))) + values.add(Fragment.interpolate(Fragment.encode(UnitmeasureId.pgType, unsaved.unitmeasurecode), Fragment.lit("::bpchar"))) columns.add(Fragment.lit("\"name\"")) - values.add(Fragment.interpolate(Fragment.encode(Name.dbType, unsaved.name), Fragment.lit("::varchar"))) + values.add(Fragment.interpolate(Fragment.encode(Name.pgType, unsaved.name), Fragment.lit("::varchar"))) unsaved.modifieddate.visit( { }, { value -> columns.add(Fragment.lit("\"modifieddate\"")) @@ -80,12 +80,12 @@ class UnitmeasureRepoImpl() : UnitmeasureRepo { override fun selectById( unitmeasurecode: UnitmeasureId, c: Connection - ): UnitmeasureRow? = Fragment.interpolate(Fragment.lit("select \"unitmeasurecode\", \"name\", \"modifieddate\"\nfrom \"production\".\"unitmeasure\"\nwhere \"unitmeasurecode\" = "), Fragment.encode(UnitmeasureId.dbType, unitmeasurecode), Fragment.lit("")).query(UnitmeasureRow._rowParser.first()).runUnchecked(c) + ): UnitmeasureRow? = Fragment.interpolate(Fragment.lit("select \"unitmeasurecode\", \"name\", \"modifieddate\"\nfrom \"production\".\"unitmeasure\"\nwhere \"unitmeasurecode\" = "), Fragment.encode(UnitmeasureId.pgType, unitmeasurecode), Fragment.lit("")).query(UnitmeasureRow._rowParser.first()).runUnchecked(c) override fun selectByIds( unitmeasurecodes: Array, c: Connection - ): List = Fragment.interpolate(Fragment.lit("select \"unitmeasurecode\", \"name\", \"modifieddate\"\nfrom \"production\".\"unitmeasure\"\nwhere \"unitmeasurecode\" = ANY("), Fragment.encode(UnitmeasureId.dbTypeArray, unitmeasurecodes), Fragment.lit(")")).query(UnitmeasureRow._rowParser.all()).runUnchecked(c) + ): List = Fragment.interpolate(Fragment.lit("select \"unitmeasurecode\", \"name\", \"modifieddate\"\nfrom \"production\".\"unitmeasure\"\nwhere \"unitmeasurecode\" = ANY("), Fragment.encode(UnitmeasureId.pgTypeArray, unitmeasurecodes), Fragment.lit(")")).query(UnitmeasureRow._rowParser.all()).runUnchecked(c) override fun selectByIdsTracked( unitmeasurecodes: Array, @@ -103,13 +103,13 @@ class UnitmeasureRepoImpl() : UnitmeasureRepo { c: Connection ): Boolean { val unitmeasurecode: UnitmeasureId = row.unitmeasurecode - return Fragment.interpolate(Fragment.lit("update \"production\".\"unitmeasure\"\nset \"name\" = "), Fragment.encode(Name.dbType, row.name), Fragment.lit("::varchar,\n\"modifieddate\" = "), Fragment.encode(PgTypes.timestamp, row.modifieddate), Fragment.lit("::timestamp\nwhere \"unitmeasurecode\" = "), Fragment.encode(UnitmeasureId.dbType, unitmeasurecode), Fragment.lit("")).update().runUnchecked(c) > 0 + return Fragment.interpolate(Fragment.lit("update \"production\".\"unitmeasure\"\nset \"name\" = "), Fragment.encode(Name.pgType, row.name), Fragment.lit("::varchar,\n\"modifieddate\" = "), Fragment.encode(PgTypes.timestamp, row.modifieddate), Fragment.lit("::timestamp\nwhere \"unitmeasurecode\" = "), Fragment.encode(UnitmeasureId.pgType, unitmeasurecode), Fragment.lit("")).update().runUnchecked(c) > 0 } override fun upsert( unsaved: UnitmeasureRow, c: Connection - ): UnitmeasureRow = Fragment.interpolate(Fragment.lit("insert into \"production\".\"unitmeasure\"(\"unitmeasurecode\", \"name\", \"modifieddate\")\nvalues ("), Fragment.encode(UnitmeasureId.dbType, unsaved.unitmeasurecode), Fragment.lit("::bpchar, "), Fragment.encode(Name.dbType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\non conflict (\"unitmeasurecode\")\ndo update set\n \"name\" = EXCLUDED.\"name\",\n\"modifieddate\" = EXCLUDED.\"modifieddate\"\nreturning \"unitmeasurecode\", \"name\", \"modifieddate\"")) + ): UnitmeasureRow = Fragment.interpolate(Fragment.lit("insert into \"production\".\"unitmeasure\"(\"unitmeasurecode\", \"name\", \"modifieddate\")\nvalues ("), Fragment.encode(UnitmeasureId.pgType, unsaved.unitmeasurecode), Fragment.lit("::bpchar, "), Fragment.encode(Name.pgType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\non conflict (\"unitmeasurecode\")\ndo update set\n \"name\" = EXCLUDED.\"name\",\n\"modifieddate\" = EXCLUDED.\"modifieddate\"\nreturning \"unitmeasurecode\", \"name\", \"modifieddate\"")) .updateReturning(UnitmeasureRow._rowParser.exactlyOne()) .runUnchecked(c) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRow.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRow.kt index de33836547..9fcb2594ee 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRow.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRow.kt @@ -37,7 +37,7 @@ data class UnitmeasureRow( fun toUnsavedRow(modifieddate: Defaulted = Defaulted.Provided(this.modifieddate)): UnitmeasureRowUnsaved = UnitmeasureRowUnsaved(unitmeasurecode, name, modifieddate) companion object { - val _rowParser: RowParser = RowParsers.of(UnitmeasureId.dbType, Name.dbType, PgTypes.timestamp, { t0, t1, t2 -> UnitmeasureRow(t0, t1, t2) }, { row -> arrayOf(row.unitmeasurecode, row.name, row.modifieddate) }) + val _rowParser: RowParser = RowParsers.of(UnitmeasureId.pgType, Name.pgType, PgTypes.timestamp, { t0, t1, t2 -> UnitmeasureRow(t0, t1, t2) }, { row -> arrayOf(row.unitmeasurecode, row.name, row.modifieddate) }) val pgText: PgText = PgText.from(_rowParser.underlying) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRowUnsaved.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRowUnsaved.kt index 41280745f3..9801c43a37 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRowUnsaved.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRowUnsaved.kt @@ -25,9 +25,9 @@ data class UnitmeasureRowUnsaved( companion object { val pgText: PgText = - PgText.instance({ row, sb -> UnitmeasureId.dbType.text().unsafeEncode(row.unitmeasurecode, sb) + PgText.instance({ row, sb -> UnitmeasureId.pgType.text().unsafeEncode(row.unitmeasurecode, sb) sb.append(PgText.DELIMETER) - Name.dbType.text().unsafeEncode(row.name, sb) + Name.pgType.text().unsafeEncode(row.name, sb) sb.append(PgText.DELIMETER) Defaulted.pgText(PgTypes.timestamp.text()).unsafeEncode(row.modifieddate, sb) }) } diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/AccountNumber.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/AccountNumber.kt index a94052f3e4..699d7ecaa8 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/AccountNumber.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/AccountNumber.kt @@ -19,10 +19,10 @@ data class AccountNumber(@field:JsonValue val value: String) { val bijection: Bijection = Bijection.of(AccountNumber::value, ::AccountNumber) - val dbType: PgType = + val pgType: PgType = PgTypes.text.bimap(::AccountNumber, AccountNumber::value).renamed("\"public\".\"AccountNumber\"") - val dbTypeArray: PgType> = + val pgTypeArray: PgType> = PgTypes.textArray.bimap({ xs -> arrayMap.map(xs, ::AccountNumber, AccountNumber::class.java) }, { xs -> arrayMap.map(xs, AccountNumber::value, String::class.java) }).renamed("\"public\".\"AccountNumber\"[]") } } \ No newline at end of file diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/Flag.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/Flag.kt index 1ec9d1d10b..2e70b2c565 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/Flag.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/Flag.kt @@ -20,10 +20,10 @@ data class Flag(@field:JsonValue val value: Boolean) { val bijection: Bijection = Bijection.of(Flag::value, ::Flag) - val dbType: PgType = + val pgType: PgType = KotlinDbTypes.PgTypes.bool.bimap(::Flag, Flag::value).renamed("\"public\".\"Flag\"") - val dbTypeArray: PgType> = + val pgTypeArray: PgType> = PgTypes.boolArray.bimap({ xs -> arrayMap.map(xs, ::Flag, Flag::class.java) }, { xs -> arrayMap.map(xs, Flag::value, Boolean::class.javaObjectType) }).renamed("\"public\".\"Flag\"[]") } } \ No newline at end of file diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/Mydomain.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/Mydomain.kt index 631aa99ec6..4d5d74d518 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/Mydomain.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/Mydomain.kt @@ -19,10 +19,10 @@ data class Mydomain(@field:JsonValue val value: String) { val bijection: Bijection = Bijection.of(Mydomain::value, ::Mydomain) - val dbType: PgType = + val pgType: PgType = PgTypes.text.bimap(::Mydomain, Mydomain::value).renamed("\"public\".\"mydomain\"") - val dbTypeArray: PgType> = + val pgTypeArray: PgType> = PgTypes.textArray.bimap({ xs -> arrayMap.map(xs, ::Mydomain, Mydomain::class.java) }, { xs -> arrayMap.map(xs, Mydomain::value, String::class.java) }).renamed("\"public\".\"mydomain\"[]") } } \ No newline at end of file diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/Myenum.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/Myenum.kt index ed3ea45db2..5563f9de47 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/Myenum.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/Myenum.kt @@ -17,11 +17,11 @@ enum class Myenum(val value: kotlin.String) { companion object { val Names: kotlin.String = entries.joinToString(", ") { it.value } val ByName: kotlin.collections.Map = entries.associateBy { it.value } - val dbTypeArray: PgType> = + val pgTypeArray: PgType> = PgTypes.textArray .bimap({ xs -> arrayMap.map(xs, Myenum::force, Myenum::class.java) }, { xs -> arrayMap.map(xs, Myenum::value, String::class.java) }) .renamedDropPrecision("public.myenum") - val dbType: PgType = + val pgType: PgType = PgTypes.text.bimap(Myenum::force, Myenum::value) .renamedDropPrecision("public.myenum") diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/Name.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/Name.kt index 1aeb2b849a..1b08387242 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/Name.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/Name.kt @@ -19,10 +19,10 @@ data class Name(@field:JsonValue val value: String) { val bijection: Bijection = Bijection.of(Name::value, ::Name) - val dbType: PgType = + val pgType: PgType = PgTypes.text.bimap(::Name, Name::value).renamed("\"public\".\"Name\"") - val dbTypeArray: PgType> = + val pgTypeArray: PgType> = PgTypes.textArray.bimap({ xs -> arrayMap.map(xs, ::Name, Name::class.java) }, { xs -> arrayMap.map(xs, Name::value, String::class.java) }).renamed("\"public\".\"Name\"[]") } } \ No newline at end of file diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/NameStyle.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/NameStyle.kt index 2e71689980..014a20ced2 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/NameStyle.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/NameStyle.kt @@ -20,10 +20,10 @@ data class NameStyle(@field:JsonValue val value: Boolean) { val bijection: Bijection = Bijection.of(NameStyle::value, ::NameStyle) - val dbType: PgType = + val pgType: PgType = KotlinDbTypes.PgTypes.bool.bimap(::NameStyle, NameStyle::value).renamed("\"public\".\"NameStyle\"") - val dbTypeArray: PgType> = + val pgTypeArray: PgType> = PgTypes.boolArray.bimap({ xs -> arrayMap.map(xs, ::NameStyle, NameStyle::class.java) }, { xs -> arrayMap.map(xs, NameStyle::value, Boolean::class.javaObjectType) }).renamed("\"public\".\"NameStyle\"[]") } } \ No newline at end of file diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/OrderNumber.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/OrderNumber.kt index 8b1d152db0..535c6ba226 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/OrderNumber.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/OrderNumber.kt @@ -19,10 +19,10 @@ data class OrderNumber(@field:JsonValue val value: String) { val bijection: Bijection = Bijection.of(OrderNumber::value, ::OrderNumber) - val dbType: PgType = + val pgType: PgType = PgTypes.text.bimap(::OrderNumber, OrderNumber::value).renamed("\"public\".\"OrderNumber\"") - val dbTypeArray: PgType> = + val pgTypeArray: PgType> = PgTypes.textArray.bimap({ xs -> arrayMap.map(xs, ::OrderNumber, OrderNumber::class.java) }, { xs -> arrayMap.map(xs, OrderNumber::value, String::class.java) }).renamed("\"public\".\"OrderNumber\"[]") } } \ No newline at end of file diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/Phone.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/Phone.kt index 80e1836955..d5f1f61525 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/Phone.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/Phone.kt @@ -19,10 +19,10 @@ data class Phone(@field:JsonValue val value: String) { val bijection: Bijection = Bijection.of(Phone::value, ::Phone) - val dbType: PgType = + val pgType: PgType = PgTypes.text.bimap(::Phone, Phone::value).renamed("\"public\".\"Phone\"") - val dbTypeArray: PgType> = + val pgTypeArray: PgType> = PgTypes.textArray.bimap({ xs -> arrayMap.map(xs, ::Phone, Phone::class.java) }, { xs -> arrayMap.map(xs, Phone::value, String::class.java) }).renamed("\"public\".\"Phone\"[]") } } \ No newline at end of file diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/ShortText.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/ShortText.kt index 70c9b3b70b..c9c5701dcf 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/ShortText.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/ShortText.kt @@ -19,10 +19,10 @@ data class ShortText(@field:JsonValue val value: String) { val bijection: Bijection = Bijection.of(ShortText::value, ::ShortText) - val dbType: PgType = + val pgType: PgType = PgTypes.text.bimap(::ShortText, ShortText::value).renamed("\"public\".\"short_text\"") - val dbTypeArray: PgType> = + val pgTypeArray: PgType> = PgTypes.textArray.bimap({ xs -> arrayMap.map(xs, ::ShortText, ShortText::class.java) }, { xs -> arrayMap.map(xs, ShortText::value, String::class.java) }).renamed("\"public\".\"short_text\"[]") } } \ No newline at end of file diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/flaff/FlaffFields.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/flaff/FlaffFields.kt index 7d406852fc..d0b055384a 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/flaff/FlaffFields.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/flaff/FlaffFields.kt @@ -36,7 +36,7 @@ data class FlaffFields(val _path: List) : TupleExpr5 = IdField(_path, "another_code", FlaffRow::anotherCode, null, null, { row, value -> row.copy(anotherCode = value) }, PgTypes.text) - fun code(): IdField = IdField(_path, "code", FlaffRow::code, null, "text", { row, value -> row.copy(code = value) }, ShortText.dbType) + fun code(): IdField = IdField(_path, "code", FlaffRow::code, null, "text", { row, value -> row.copy(code = value) }, ShortText.pgType) override fun columns(): List> = listOf(this.code().underlying, this.anotherCode().underlying, this.someNumber().underlying, this.specifier().underlying, this.parentspecifier().underlying) @@ -46,13 +46,13 @@ data class FlaffFields(val _path: List) : TupleExpr5 = ForeignKey.of("public.flaff_parent_fk").withColumnPair(code(), FlaffFields::code).withColumnPair(anotherCode(), FlaffFields::anotherCode).withColumnPair(someNumber(), FlaffFields::someNumber).withColumnPair(parentspecifier(), FlaffFields::specifier) - fun parentspecifier(): OptField = OptField(_path, "parentspecifier", FlaffRow::parentspecifier, null, "text", { row, value -> row.copy(parentspecifier = value) }, ShortText.dbType) + fun parentspecifier(): OptField = OptField(_path, "parentspecifier", FlaffRow::parentspecifier, null, "text", { row, value -> row.copy(parentspecifier = value) }, ShortText.pgType) override fun rowParser(): RowParser = FlaffRow._rowParser.underlying fun someNumber(): IdField = IdField(_path, "some_number", FlaffRow::someNumber, null, "int4", { row, value -> row.copy(someNumber = value) }, KotlinDbTypes.PgTypes.int4) - fun specifier(): IdField = IdField(_path, "specifier", FlaffRow::specifier, null, "text", { row, value -> row.copy(specifier = value) }, ShortText.dbType) + fun specifier(): IdField = IdField(_path, "specifier", FlaffRow::specifier, null, "text", { row, value -> row.copy(specifier = value) }, ShortText.pgType) override fun withPaths(_path: List): RelationStructure = FlaffFields(_path) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/flaff/FlaffId.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/flaff/FlaffId.kt index a1256d06ac..2acd16c6ae 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/flaff/FlaffId.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/flaff/FlaffId.kt @@ -29,6 +29,6 @@ data class FlaffId( override fun _4(): ShortText = specifier companion object { - val _rowParser: RowParser = RowParsers.of(ShortText.dbType, PgTypes.text, KotlinDbTypes.PgTypes.int4, ShortText.dbType, { t0, t1, t2, t3 -> FlaffId(t0, t1, t2, t3) }, { row -> arrayOf(row.code, row.anotherCode, row.someNumber, row.specifier) }) + val _rowParser: RowParser = RowParsers.of(ShortText.pgType, PgTypes.text, KotlinDbTypes.PgTypes.int4, ShortText.pgType, { t0, t1, t2, t3 -> FlaffId(t0, t1, t2, t3) }, { row -> arrayOf(row.code, row.anotherCode, row.someNumber, row.specifier) }) } } \ No newline at end of file diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/flaff/FlaffRepoImpl.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/flaff/FlaffRepoImpl.kt index 767116df02..8ce22dafe7 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/flaff/FlaffRepoImpl.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/flaff/FlaffRepoImpl.kt @@ -28,7 +28,7 @@ class FlaffRepoImpl() : FlaffRepo { override fun deleteById( compositeId: FlaffId, c: Connection - ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"public\".\"flaff\" where \"code\" = "), Fragment.encode(ShortText.dbType, compositeId.code), Fragment.lit(" AND \"another_code\" = "), Fragment.encode(PgTypes.text, compositeId.anotherCode), Fragment.lit(" AND \"some_number\" = "), Fragment.encode(KotlinDbTypes.PgTypes.int4, compositeId.someNumber), Fragment.lit(" AND \"specifier\" = "), Fragment.encode(ShortText.dbType, compositeId.specifier), Fragment.lit("")).update().runUnchecked(c) > 0 + ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"public\".\"flaff\" where \"code\" = "), Fragment.encode(ShortText.pgType, compositeId.code), Fragment.lit(" AND \"another_code\" = "), Fragment.encode(PgTypes.text, compositeId.anotherCode), Fragment.lit(" AND \"some_number\" = "), Fragment.encode(KotlinDbTypes.PgTypes.int4, compositeId.someNumber), Fragment.lit(" AND \"specifier\" = "), Fragment.encode(ShortText.pgType, compositeId.specifier), Fragment.lit("")).update().runUnchecked(c) > 0 override fun deleteByIds( compositeIds: Array, @@ -38,13 +38,13 @@ class FlaffRepoImpl() : FlaffRepo { val anotherCode: Array = arrayMap.map(compositeIds, FlaffId::anotherCode, String::class.java) val someNumber: Array = arrayMap.map(compositeIds, FlaffId::someNumber, Int::class.javaObjectType) val specifier: Array = arrayMap.map(compositeIds, FlaffId::specifier, ShortText::class.java) - return Fragment.interpolate(Fragment.lit("delete\nfrom \"public\".\"flaff\"\nwhere (\"code\", \"another_code\", \"some_number\", \"specifier\")\nin (select * from unnest("), Fragment.encode(ShortText.dbTypeArray, code), Fragment.lit(", "), Fragment.encode(PgTypes.textArray, anotherCode), Fragment.lit(", "), Fragment.encode(PgTypes.int4Array, someNumber), Fragment.lit(", "), Fragment.encode(ShortText.dbTypeArray, specifier), Fragment.lit("))\n")).update().runUnchecked(c) + return Fragment.interpolate(Fragment.lit("delete\nfrom \"public\".\"flaff\"\nwhere (\"code\", \"another_code\", \"some_number\", \"specifier\")\nin (select * from unnest("), Fragment.encode(ShortText.pgTypeArray, code), Fragment.lit(", "), Fragment.encode(PgTypes.textArray, anotherCode), Fragment.lit(", "), Fragment.encode(PgTypes.int4Array, someNumber), Fragment.lit(", "), Fragment.encode(ShortText.pgTypeArray, specifier), Fragment.lit("))\n")).update().runUnchecked(c) } override fun insert( unsaved: FlaffRow, c: Connection - ): FlaffRow = Fragment.interpolate(Fragment.lit("insert into \"public\".\"flaff\"(\"code\", \"another_code\", \"some_number\", \"specifier\", \"parentspecifier\")\nvalues ("), Fragment.encode(ShortText.dbType, unsaved.code), Fragment.lit("::text, "), Fragment.encode(PgTypes.text, unsaved.anotherCode), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.PgTypes.int4, unsaved.someNumber), Fragment.lit("::int4, "), Fragment.encode(ShortText.dbType, unsaved.specifier), Fragment.lit("::text, "), Fragment.encode(ShortText.dbType.nullable(), unsaved.parentspecifier), Fragment.lit("::text)\nRETURNING \"code\", \"another_code\", \"some_number\", \"specifier\", \"parentspecifier\"\n")) + ): FlaffRow = Fragment.interpolate(Fragment.lit("insert into \"public\".\"flaff\"(\"code\", \"another_code\", \"some_number\", \"specifier\", \"parentspecifier\")\nvalues ("), Fragment.encode(ShortText.pgType, unsaved.code), Fragment.lit("::text, "), Fragment.encode(PgTypes.text, unsaved.anotherCode), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.PgTypes.int4, unsaved.someNumber), Fragment.lit("::int4, "), Fragment.encode(ShortText.pgType, unsaved.specifier), Fragment.lit("::text, "), Fragment.encode(ShortText.pgType.nullable(), unsaved.parentspecifier), Fragment.lit("::text)\nRETURNING \"code\", \"another_code\", \"some_number\", \"specifier\", \"parentspecifier\"\n")) .updateReturning(FlaffRow._rowParser.exactlyOne()).runUnchecked(c) override fun insertStreaming( @@ -60,7 +60,7 @@ class FlaffRepoImpl() : FlaffRepo { override fun selectById( compositeId: FlaffId, c: Connection - ): FlaffRow? = Fragment.interpolate(Fragment.lit("select \"code\", \"another_code\", \"some_number\", \"specifier\", \"parentspecifier\"\nfrom \"public\".\"flaff\"\nwhere \"code\" = "), Fragment.encode(ShortText.dbType, compositeId.code), Fragment.lit(" AND \"another_code\" = "), Fragment.encode(PgTypes.text, compositeId.anotherCode), Fragment.lit(" AND \"some_number\" = "), Fragment.encode(KotlinDbTypes.PgTypes.int4, compositeId.someNumber), Fragment.lit(" AND \"specifier\" = "), Fragment.encode(ShortText.dbType, compositeId.specifier), Fragment.lit("")).query(FlaffRow._rowParser.first()).runUnchecked(c) + ): FlaffRow? = Fragment.interpolate(Fragment.lit("select \"code\", \"another_code\", \"some_number\", \"specifier\", \"parentspecifier\"\nfrom \"public\".\"flaff\"\nwhere \"code\" = "), Fragment.encode(ShortText.pgType, compositeId.code), Fragment.lit(" AND \"another_code\" = "), Fragment.encode(PgTypes.text, compositeId.anotherCode), Fragment.lit(" AND \"some_number\" = "), Fragment.encode(KotlinDbTypes.PgTypes.int4, compositeId.someNumber), Fragment.lit(" AND \"specifier\" = "), Fragment.encode(ShortText.pgType, compositeId.specifier), Fragment.lit("")).query(FlaffRow._rowParser.first()).runUnchecked(c) override fun selectByIds( compositeIds: Array, @@ -70,7 +70,7 @@ class FlaffRepoImpl() : FlaffRepo { val anotherCode: Array = arrayMap.map(compositeIds, FlaffId::anotherCode, String::class.java) val someNumber: Array = arrayMap.map(compositeIds, FlaffId::someNumber, Int::class.javaObjectType) val specifier: Array = arrayMap.map(compositeIds, FlaffId::specifier, ShortText::class.java) - return Fragment.interpolate(Fragment.lit("select \"code\", \"another_code\", \"some_number\", \"specifier\", \"parentspecifier\"\nfrom \"public\".\"flaff\"\nwhere (\"code\", \"another_code\", \"some_number\", \"specifier\")\nin (select * from unnest("), Fragment.encode(ShortText.dbTypeArray, code), Fragment.lit(", "), Fragment.encode(PgTypes.textArray, anotherCode), Fragment.lit(", "), Fragment.encode(PgTypes.int4Array, someNumber), Fragment.lit(", "), Fragment.encode(ShortText.dbTypeArray, specifier), Fragment.lit("))\n")).query(FlaffRow._rowParser.all()).runUnchecked(c) + return Fragment.interpolate(Fragment.lit("select \"code\", \"another_code\", \"some_number\", \"specifier\", \"parentspecifier\"\nfrom \"public\".\"flaff\"\nwhere (\"code\", \"another_code\", \"some_number\", \"specifier\")\nin (select * from unnest("), Fragment.encode(ShortText.pgTypeArray, code), Fragment.lit(", "), Fragment.encode(PgTypes.textArray, anotherCode), Fragment.lit(", "), Fragment.encode(PgTypes.int4Array, someNumber), Fragment.lit(", "), Fragment.encode(ShortText.pgTypeArray, specifier), Fragment.lit("))\n")).query(FlaffRow._rowParser.all()).runUnchecked(c) } override fun selectByIdsTracked( @@ -89,13 +89,13 @@ class FlaffRepoImpl() : FlaffRepo { c: Connection ): Boolean { val compositeId: FlaffId = row.compositeId() - return Fragment.interpolate(Fragment.lit("update \"public\".\"flaff\"\nset \"parentspecifier\" = "), Fragment.encode(ShortText.dbType.nullable(), row.parentspecifier), Fragment.lit("::text\nwhere \"code\" = "), Fragment.encode(ShortText.dbType, compositeId.code), Fragment.lit(" AND \"another_code\" = "), Fragment.encode(PgTypes.text, compositeId.anotherCode), Fragment.lit(" AND \"some_number\" = "), Fragment.encode(KotlinDbTypes.PgTypes.int4, compositeId.someNumber), Fragment.lit(" AND \"specifier\" = "), Fragment.encode(ShortText.dbType, compositeId.specifier), Fragment.lit("")).update().runUnchecked(c) > 0 + return Fragment.interpolate(Fragment.lit("update \"public\".\"flaff\"\nset \"parentspecifier\" = "), Fragment.encode(ShortText.pgType.nullable(), row.parentspecifier), Fragment.lit("::text\nwhere \"code\" = "), Fragment.encode(ShortText.pgType, compositeId.code), Fragment.lit(" AND \"another_code\" = "), Fragment.encode(PgTypes.text, compositeId.anotherCode), Fragment.lit(" AND \"some_number\" = "), Fragment.encode(KotlinDbTypes.PgTypes.int4, compositeId.someNumber), Fragment.lit(" AND \"specifier\" = "), Fragment.encode(ShortText.pgType, compositeId.specifier), Fragment.lit("")).update().runUnchecked(c) > 0 } override fun upsert( unsaved: FlaffRow, c: Connection - ): FlaffRow = Fragment.interpolate(Fragment.lit("insert into \"public\".\"flaff\"(\"code\", \"another_code\", \"some_number\", \"specifier\", \"parentspecifier\")\nvalues ("), Fragment.encode(ShortText.dbType, unsaved.code), Fragment.lit("::text, "), Fragment.encode(PgTypes.text, unsaved.anotherCode), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.PgTypes.int4, unsaved.someNumber), Fragment.lit("::int4, "), Fragment.encode(ShortText.dbType, unsaved.specifier), Fragment.lit("::text, "), Fragment.encode(ShortText.dbType.nullable(), unsaved.parentspecifier), Fragment.lit("::text)\non conflict (\"code\", \"another_code\", \"some_number\", \"specifier\")\ndo update set\n \"parentspecifier\" = EXCLUDED.\"parentspecifier\"\nreturning \"code\", \"another_code\", \"some_number\", \"specifier\", \"parentspecifier\"")) + ): FlaffRow = Fragment.interpolate(Fragment.lit("insert into \"public\".\"flaff\"(\"code\", \"another_code\", \"some_number\", \"specifier\", \"parentspecifier\")\nvalues ("), Fragment.encode(ShortText.pgType, unsaved.code), Fragment.lit("::text, "), Fragment.encode(PgTypes.text, unsaved.anotherCode), Fragment.lit(", "), Fragment.encode(KotlinDbTypes.PgTypes.int4, unsaved.someNumber), Fragment.lit("::int4, "), Fragment.encode(ShortText.pgType, unsaved.specifier), Fragment.lit("::text, "), Fragment.encode(ShortText.pgType.nullable(), unsaved.parentspecifier), Fragment.lit("::text)\non conflict (\"code\", \"another_code\", \"some_number\", \"specifier\")\ndo update set\n \"parentspecifier\" = EXCLUDED.\"parentspecifier\"\nreturning \"code\", \"another_code\", \"some_number\", \"specifier\", \"parentspecifier\"")) .updateReturning(FlaffRow._rowParser.exactlyOne()) .runUnchecked(c) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/flaff/FlaffRow.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/flaff/FlaffRow.kt index e4a01752c6..528f8e6856 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/flaff/FlaffRow.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/flaff/FlaffRow.kt @@ -44,7 +44,7 @@ data class FlaffRow( fun id(): FlaffId = this.compositeId() companion object { - val _rowParser: RowParser = RowParsers.of(ShortText.dbType, PgTypes.text, KotlinDbTypes.PgTypes.int4, ShortText.dbType, ShortText.dbType.nullable(), { t0, t1, t2, t3, t4 -> FlaffRow(t0, t1, t2, t3, t4) }, { row -> arrayOf(row.code, row.anotherCode, row.someNumber, row.specifier, row.parentspecifier) }) + val _rowParser: RowParser = RowParsers.of(ShortText.pgType, PgTypes.text, KotlinDbTypes.PgTypes.int4, ShortText.pgType, ShortText.pgType.nullable(), { t0, t1, t2, t3, t4 -> FlaffRow(t0, t1, t2, t3, t4) }, { row -> arrayOf(row.code, row.anotherCode, row.someNumber, row.specifier, row.parentspecifier) }) fun apply( compositeId: FlaffId, diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestFields.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestFields.kt index 1d0b691aca..d0565b4106 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestFields.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestFields.kt @@ -32,7 +32,7 @@ data class IdentityTestFields(val _path: List) : TupleExpr3 = Field(_path, "default_generated", IdentityTestRow::defaultGenerated, null, "int4", { row, value -> row.copy(defaultGenerated = value) }, KotlinDbTypes.PgTypes.int4) - fun name(): IdField = IdField(_path, "name", IdentityTestRow::name, null, null, { row, value -> row.copy(name = value) }, IdentityTestId.dbType) + fun name(): IdField = IdField(_path, "name", IdentityTestRow::name, null, null, { row, value -> row.copy(name = value) }, IdentityTestId.pgType) override fun rowParser(): RowParser = IdentityTestRow._rowParser.underlying diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestId.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestId.kt index 547146c53f..fba783e8a7 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestId.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestId.kt @@ -21,10 +21,10 @@ data class IdentityTestId(@field:JsonValue val value: String) { val bijection: Bijection = Bijection.of(IdentityTestId::value, ::IdentityTestId) - val dbType: PgType = + val pgType: PgType = PgTypes.text.bimap(::IdentityTestId, IdentityTestId::value) - val dbTypeArray: PgType> = + val pgTypeArray: PgType> = PgTypes.textArray.bimap({ xs -> arrayMap.map(xs, ::IdentityTestId, IdentityTestId::class.java) }, { xs -> arrayMap.map(xs, IdentityTestId::value, String::class.java) }) } } \ No newline at end of file diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestRepoImpl.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestRepoImpl.kt index ade64eb326..660c3809f9 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestRepoImpl.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestRepoImpl.kt @@ -25,19 +25,19 @@ class IdentityTestRepoImpl() : IdentityTestRepo { override fun deleteById( name: IdentityTestId, c: Connection - ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"public\".\"identity-test\" where \"name\" = "), Fragment.encode(IdentityTestId.dbType, name), Fragment.lit("")).update().runUnchecked(c) > 0 + ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"public\".\"identity-test\" where \"name\" = "), Fragment.encode(IdentityTestId.pgType, name), Fragment.lit("")).update().runUnchecked(c) > 0 override fun deleteByIds( names: Array, c: Connection - ): Int = Fragment.interpolate(Fragment.lit("delete\nfrom \"public\".\"identity-test\"\nwhere \"name\" = ANY("), Fragment.encode(IdentityTestId.dbTypeArray, names), Fragment.lit(")")) + ): Int = Fragment.interpolate(Fragment.lit("delete\nfrom \"public\".\"identity-test\"\nwhere \"name\" = ANY("), Fragment.encode(IdentityTestId.pgTypeArray, names), Fragment.lit(")")) .update() .runUnchecked(c) override fun insert( unsaved: IdentityTestRow, c: Connection - ): IdentityTestRow = Fragment.interpolate(Fragment.lit("insert into \"public\".\"identity-test\"(\"default_generated\", \"name\")\nvalues ("), Fragment.encode(KotlinDbTypes.PgTypes.int4, unsaved.defaultGenerated), Fragment.lit("::int4, "), Fragment.encode(IdentityTestId.dbType, unsaved.name), Fragment.lit(")\nRETURNING \"always_generated\", \"default_generated\", \"name\"\n")) + ): IdentityTestRow = Fragment.interpolate(Fragment.lit("insert into \"public\".\"identity-test\"(\"default_generated\", \"name\")\nvalues ("), Fragment.encode(KotlinDbTypes.PgTypes.int4, unsaved.defaultGenerated), Fragment.lit("::int4, "), Fragment.encode(IdentityTestId.pgType, unsaved.name), Fragment.lit(")\nRETURNING \"always_generated\", \"default_generated\", \"name\"\n")) .updateReturning(IdentityTestRow._rowParser.exactlyOne()).runUnchecked(c) override fun insert( @@ -47,7 +47,7 @@ class IdentityTestRepoImpl() : IdentityTestRepo { val columns: ArrayList = ArrayList() val values: ArrayList = ArrayList() columns.add(Fragment.lit("\"name\"")) - values.add(Fragment.interpolate(Fragment.encode(IdentityTestId.dbType, unsaved.name), Fragment.lit(""))) + values.add(Fragment.interpolate(Fragment.encode(IdentityTestId.pgType, unsaved.name), Fragment.lit(""))) unsaved.defaultGenerated.visit( { }, { value -> columns.add(Fragment.lit("\"default_generated\"")) @@ -77,12 +77,12 @@ class IdentityTestRepoImpl() : IdentityTestRepo { override fun selectById( name: IdentityTestId, c: Connection - ): IdentityTestRow? = Fragment.interpolate(Fragment.lit("select \"always_generated\", \"default_generated\", \"name\"\nfrom \"public\".\"identity-test\"\nwhere \"name\" = "), Fragment.encode(IdentityTestId.dbType, name), Fragment.lit("")).query(IdentityTestRow._rowParser.first()).runUnchecked(c) + ): IdentityTestRow? = Fragment.interpolate(Fragment.lit("select \"always_generated\", \"default_generated\", \"name\"\nfrom \"public\".\"identity-test\"\nwhere \"name\" = "), Fragment.encode(IdentityTestId.pgType, name), Fragment.lit("")).query(IdentityTestRow._rowParser.first()).runUnchecked(c) override fun selectByIds( names: Array, c: Connection - ): List = Fragment.interpolate(Fragment.lit("select \"always_generated\", \"default_generated\", \"name\"\nfrom \"public\".\"identity-test\"\nwhere \"name\" = ANY("), Fragment.encode(IdentityTestId.dbTypeArray, names), Fragment.lit(")")).query(IdentityTestRow._rowParser.all()).runUnchecked(c) + ): List = Fragment.interpolate(Fragment.lit("select \"always_generated\", \"default_generated\", \"name\"\nfrom \"public\".\"identity-test\"\nwhere \"name\" = ANY("), Fragment.encode(IdentityTestId.pgTypeArray, names), Fragment.lit(")")).query(IdentityTestRow._rowParser.all()).runUnchecked(c) override fun selectByIdsTracked( names: Array, @@ -100,13 +100,13 @@ class IdentityTestRepoImpl() : IdentityTestRepo { c: Connection ): Boolean { val name: IdentityTestId = row.name - return Fragment.interpolate(Fragment.lit("update \"public\".\"identity-test\"\nset \"default_generated\" = "), Fragment.encode(KotlinDbTypes.PgTypes.int4, row.defaultGenerated), Fragment.lit("::int4\nwhere \"name\" = "), Fragment.encode(IdentityTestId.dbType, name), Fragment.lit("")).update().runUnchecked(c) > 0 + return Fragment.interpolate(Fragment.lit("update \"public\".\"identity-test\"\nset \"default_generated\" = "), Fragment.encode(KotlinDbTypes.PgTypes.int4, row.defaultGenerated), Fragment.lit("::int4\nwhere \"name\" = "), Fragment.encode(IdentityTestId.pgType, name), Fragment.lit("")).update().runUnchecked(c) > 0 } override fun upsert( unsaved: IdentityTestRow, c: Connection - ): IdentityTestRow = Fragment.interpolate(Fragment.lit("insert into \"public\".\"identity-test\"(\"default_generated\", \"name\")\nvalues ("), Fragment.encode(KotlinDbTypes.PgTypes.int4, unsaved.defaultGenerated), Fragment.lit("::int4, "), Fragment.encode(IdentityTestId.dbType, unsaved.name), Fragment.lit(")\non conflict (\"name\")\ndo update set\n \"default_generated\" = EXCLUDED.\"default_generated\"\nreturning \"always_generated\", \"default_generated\", \"name\"")) + ): IdentityTestRow = Fragment.interpolate(Fragment.lit("insert into \"public\".\"identity-test\"(\"default_generated\", \"name\")\nvalues ("), Fragment.encode(KotlinDbTypes.PgTypes.int4, unsaved.defaultGenerated), Fragment.lit("::int4, "), Fragment.encode(IdentityTestId.pgType, unsaved.name), Fragment.lit(")\non conflict (\"name\")\ndo update set\n \"default_generated\" = EXCLUDED.\"default_generated\"\nreturning \"always_generated\", \"default_generated\", \"name\"")) .updateReturning(IdentityTestRow._rowParser.exactlyOne()) .runUnchecked(c) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestRow.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestRow.kt index e02f1589dd..22b63d6b3b 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestRow.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestRow.kt @@ -34,7 +34,7 @@ data class IdentityTestRow( fun toUnsavedRow(defaultGenerated: Defaulted = Defaulted.Provided(this.defaultGenerated)): IdentityTestRowUnsaved = IdentityTestRowUnsaved(name, defaultGenerated) companion object { - val _rowParser: RowParser = RowParsers.of(KotlinDbTypes.PgTypes.int4, KotlinDbTypes.PgTypes.int4, IdentityTestId.dbType, { t0, t1, t2 -> IdentityTestRow(t0, t1, t2) }, { row -> arrayOf(row.alwaysGenerated, row.defaultGenerated, row.name) }) + val _rowParser: RowParser = RowParsers.of(KotlinDbTypes.PgTypes.int4, KotlinDbTypes.PgTypes.int4, IdentityTestId.pgType, { t0, t1, t2 -> IdentityTestRow(t0, t1, t2) }, { row -> arrayOf(row.alwaysGenerated, row.defaultGenerated, row.name) }) val pgText: PgText = PgText.from(_rowParser.underlying) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestRowUnsaved.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestRowUnsaved.kt index 0d8cfef4e5..10e9d38040 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestRowUnsaved.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestRowUnsaved.kt @@ -24,7 +24,7 @@ data class IdentityTestRowUnsaved( companion object { val pgText: PgText = - PgText.instance({ row, sb -> IdentityTestId.dbType.text().unsafeEncode(row.name, sb) + PgText.instance({ row, sb -> IdentityTestId.pgType.text().unsafeEncode(row.name, sb) sb.append(PgText.DELIMETER) Defaulted.pgText(KotlinDbTypes.PgTypes.int4.text()).unsafeEncode(row.defaultGenerated, sb) }) } diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/issue142/Issue142Fields.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/issue142/Issue142Fields.kt index 930179b5dc..274e2d73b5 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/issue142/Issue142Fields.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/issue142/Issue142Fields.kt @@ -24,7 +24,7 @@ data class Issue142Fields(val _path: List) : TupleExpr1, Relat override fun rowParser(): RowParser = Issue142Row._rowParser.underlying - fun tabellkode(): IdField = IdField(_path, "tabellkode", Issue142Row::tabellkode, null, null, { row, value -> row.copy(tabellkode = value) }, Issue142Id.dbType) + fun tabellkode(): IdField = IdField(_path, "tabellkode", Issue142Row::tabellkode, null, null, { row, value -> row.copy(tabellkode = value) }, Issue142Id.pgType) override fun withPaths(_path: List): RelationStructure = Issue142Fields(_path) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/issue142/Issue142Id.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/issue142/Issue142Id.kt index 0241cca9c1..6b2643c49b 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/issue142/Issue142Id.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/issue142/Issue142Id.kt @@ -26,10 +26,10 @@ sealed interface Issue142Id { companion object { fun apply(str: String): Issue142Id = Known.ByName[str] ?: Unknown(str) - val dbTypeArray: PgType> = + val pgTypeArray: PgType> = PgTypes.textArray .bimap({ xs -> arrayMap.map(xs, Issue142Id::apply, Issue142Id::class.java) }, { xs -> arrayMap.map(xs, Issue142Id::value, String::class.java) }) - val dbType: PgType = + val pgType: PgType = PgTypes.text.bimap(Issue142Id::apply, Issue142Id::value) } } \ No newline at end of file diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/issue142/Issue142RepoImpl.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/issue142/Issue142RepoImpl.kt index f04fea3a6d..b343f03d55 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/issue142/Issue142RepoImpl.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/issue142/Issue142RepoImpl.kt @@ -23,19 +23,19 @@ class Issue142RepoImpl() : Issue142Repo { override fun deleteById( tabellkode: Issue142Id, c: Connection - ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"public\".\"issue142\" where \"tabellkode\" = "), Fragment.encode(Issue142Id.dbType, tabellkode), Fragment.lit("")).update().runUnchecked(c) > 0 + ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"public\".\"issue142\" where \"tabellkode\" = "), Fragment.encode(Issue142Id.pgType, tabellkode), Fragment.lit("")).update().runUnchecked(c) > 0 override fun deleteByIds( tabellkodes: Array, c: Connection - ): Int = Fragment.interpolate(Fragment.lit("delete\nfrom \"public\".\"issue142\"\nwhere \"tabellkode\" = ANY("), Fragment.encode(Issue142Id.dbTypeArray, tabellkodes), Fragment.lit(")")) + ): Int = Fragment.interpolate(Fragment.lit("delete\nfrom \"public\".\"issue142\"\nwhere \"tabellkode\" = ANY("), Fragment.encode(Issue142Id.pgTypeArray, tabellkodes), Fragment.lit(")")) .update() .runUnchecked(c) override fun insert( unsaved: Issue142Row, c: Connection - ): Issue142Row = Fragment.interpolate(Fragment.lit("insert into \"public\".\"issue142\"(\"tabellkode\")\nvalues ("), Fragment.encode(Issue142Id.dbType, unsaved.tabellkode), Fragment.lit(")\nRETURNING \"tabellkode\"\n")) + ): Issue142Row = Fragment.interpolate(Fragment.lit("insert into \"public\".\"issue142\"(\"tabellkode\")\nvalues ("), Fragment.encode(Issue142Id.pgType, unsaved.tabellkode), Fragment.lit(")\nRETURNING \"tabellkode\"\n")) .updateReturning(Issue142Row._rowParser.exactlyOne()).runUnchecked(c) override fun insertStreaming( @@ -51,12 +51,12 @@ class Issue142RepoImpl() : Issue142Repo { override fun selectById( tabellkode: Issue142Id, c: Connection - ): Issue142Row? = Fragment.interpolate(Fragment.lit("select \"tabellkode\"\nfrom \"public\".\"issue142\"\nwhere \"tabellkode\" = "), Fragment.encode(Issue142Id.dbType, tabellkode), Fragment.lit("")).query(Issue142Row._rowParser.first()).runUnchecked(c) + ): Issue142Row? = Fragment.interpolate(Fragment.lit("select \"tabellkode\"\nfrom \"public\".\"issue142\"\nwhere \"tabellkode\" = "), Fragment.encode(Issue142Id.pgType, tabellkode), Fragment.lit("")).query(Issue142Row._rowParser.first()).runUnchecked(c) override fun selectByIds( tabellkodes: Array, c: Connection - ): List = Fragment.interpolate(Fragment.lit("select \"tabellkode\"\nfrom \"public\".\"issue142\"\nwhere \"tabellkode\" = ANY("), Fragment.encode(Issue142Id.dbTypeArray, tabellkodes), Fragment.lit(")")).query(Issue142Row._rowParser.all()).runUnchecked(c) + ): List = Fragment.interpolate(Fragment.lit("select \"tabellkode\"\nfrom \"public\".\"issue142\"\nwhere \"tabellkode\" = ANY("), Fragment.encode(Issue142Id.pgTypeArray, tabellkodes), Fragment.lit(")")).query(Issue142Row._rowParser.all()).runUnchecked(c) override fun selectByIdsTracked( tabellkodes: Array, @@ -72,7 +72,7 @@ class Issue142RepoImpl() : Issue142Repo { override fun upsert( unsaved: Issue142Row, c: Connection - ): Issue142Row = Fragment.interpolate(Fragment.lit("insert into \"public\".\"issue142\"(\"tabellkode\")\nvalues ("), Fragment.encode(Issue142Id.dbType, unsaved.tabellkode), Fragment.lit(")\non conflict (\"tabellkode\")\ndo update set \"tabellkode\" = EXCLUDED.\"tabellkode\"\nreturning \"tabellkode\"")) + ): Issue142Row = Fragment.interpolate(Fragment.lit("insert into \"public\".\"issue142\"(\"tabellkode\")\nvalues ("), Fragment.encode(Issue142Id.pgType, unsaved.tabellkode), Fragment.lit(")\non conflict (\"tabellkode\")\ndo update set \"tabellkode\" = EXCLUDED.\"tabellkode\"\nreturning \"tabellkode\"")) .updateReturning(Issue142Row._rowParser.exactlyOne()) .runUnchecked(c) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/issue142/Issue142Row.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/issue142/Issue142Row.kt index bcdc863a85..f0defd6475 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/issue142/Issue142Row.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/issue142/Issue142Row.kt @@ -19,7 +19,7 @@ data class Issue142Row(val tabellkode: Issue142Id) : Tuple1 { fun id(): Issue142Id = tabellkode companion object { - val _rowParser: RowParser = RowParsers.of(Issue142Id.dbType, { t0 -> Issue142Row(t0) }, { row -> arrayOf(row.tabellkode) }) + val _rowParser: RowParser = RowParsers.of(Issue142Id.pgType, { t0 -> Issue142Row(t0) }, { row -> arrayOf(row.tabellkode) }) val pgText: PgText = PgText.from(_rowParser.underlying) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/issue142_2/Issue1422Fields.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/issue142_2/Issue1422Fields.kt index a490a2fb91..006015c814 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/issue142_2/Issue1422Fields.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/issue142_2/Issue1422Fields.kt @@ -30,7 +30,7 @@ data class Issue1422Fields(val _path: List) : TupleExpr1, Rela override fun rowParser(): RowParser = Issue1422Row._rowParser.underlying - fun tabellkode(): IdField = IdField(_path, "tabellkode", Issue1422Row::tabellkode, null, null, { row, value -> row.copy(tabellkode = value) }, Issue142Id.dbType) + fun tabellkode(): IdField = IdField(_path, "tabellkode", Issue1422Row::tabellkode, null, null, { row, value -> row.copy(tabellkode = value) }, Issue142Id.pgType) override fun withPaths(_path: List): RelationStructure = Issue1422Fields(_path) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/issue142_2/Issue1422RepoImpl.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/issue142_2/Issue1422RepoImpl.kt index 35d6e5c955..be89b83227 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/issue142_2/Issue1422RepoImpl.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/issue142_2/Issue1422RepoImpl.kt @@ -24,19 +24,19 @@ class Issue1422RepoImpl() : Issue1422Repo { override fun deleteById( tabellkode: Issue142Id, c: Connection - ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"public\".\"issue142_2\" where \"tabellkode\" = "), Fragment.encode(Issue142Id.dbType, tabellkode), Fragment.lit("")).update().runUnchecked(c) > 0 + ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"public\".\"issue142_2\" where \"tabellkode\" = "), Fragment.encode(Issue142Id.pgType, tabellkode), Fragment.lit("")).update().runUnchecked(c) > 0 override fun deleteByIds( tabellkodes: Array, c: Connection - ): Int = Fragment.interpolate(Fragment.lit("delete\nfrom \"public\".\"issue142_2\"\nwhere \"tabellkode\" = ANY("), Fragment.encode(Issue142Id.dbTypeArray, tabellkodes), Fragment.lit(")")) + ): Int = Fragment.interpolate(Fragment.lit("delete\nfrom \"public\".\"issue142_2\"\nwhere \"tabellkode\" = ANY("), Fragment.encode(Issue142Id.pgTypeArray, tabellkodes), Fragment.lit(")")) .update() .runUnchecked(c) override fun insert( unsaved: Issue1422Row, c: Connection - ): Issue1422Row = Fragment.interpolate(Fragment.lit("insert into \"public\".\"issue142_2\"(\"tabellkode\")\nvalues ("), Fragment.encode(Issue142Id.dbType, unsaved.tabellkode), Fragment.lit(")\nRETURNING \"tabellkode\"\n")) + ): Issue1422Row = Fragment.interpolate(Fragment.lit("insert into \"public\".\"issue142_2\"(\"tabellkode\")\nvalues ("), Fragment.encode(Issue142Id.pgType, unsaved.tabellkode), Fragment.lit(")\nRETURNING \"tabellkode\"\n")) .updateReturning(Issue1422Row._rowParser.exactlyOne()).runUnchecked(c) override fun insertStreaming( @@ -52,12 +52,12 @@ class Issue1422RepoImpl() : Issue1422Repo { override fun selectById( tabellkode: Issue142Id, c: Connection - ): Issue1422Row? = Fragment.interpolate(Fragment.lit("select \"tabellkode\"\nfrom \"public\".\"issue142_2\"\nwhere \"tabellkode\" = "), Fragment.encode(Issue142Id.dbType, tabellkode), Fragment.lit("")).query(Issue1422Row._rowParser.first()).runUnchecked(c) + ): Issue1422Row? = Fragment.interpolate(Fragment.lit("select \"tabellkode\"\nfrom \"public\".\"issue142_2\"\nwhere \"tabellkode\" = "), Fragment.encode(Issue142Id.pgType, tabellkode), Fragment.lit("")).query(Issue1422Row._rowParser.first()).runUnchecked(c) override fun selectByIds( tabellkodes: Array, c: Connection - ): List = Fragment.interpolate(Fragment.lit("select \"tabellkode\"\nfrom \"public\".\"issue142_2\"\nwhere \"tabellkode\" = ANY("), Fragment.encode(Issue142Id.dbTypeArray, tabellkodes), Fragment.lit(")")).query(Issue1422Row._rowParser.all()).runUnchecked(c) + ): List = Fragment.interpolate(Fragment.lit("select \"tabellkode\"\nfrom \"public\".\"issue142_2\"\nwhere \"tabellkode\" = ANY("), Fragment.encode(Issue142Id.pgTypeArray, tabellkodes), Fragment.lit(")")).query(Issue1422Row._rowParser.all()).runUnchecked(c) override fun selectByIdsTracked( tabellkodes: Array, @@ -73,7 +73,7 @@ class Issue1422RepoImpl() : Issue1422Repo { override fun upsert( unsaved: Issue1422Row, c: Connection - ): Issue1422Row = Fragment.interpolate(Fragment.lit("insert into \"public\".\"issue142_2\"(\"tabellkode\")\nvalues ("), Fragment.encode(Issue142Id.dbType, unsaved.tabellkode), Fragment.lit(")\non conflict (\"tabellkode\")\ndo update set \"tabellkode\" = EXCLUDED.\"tabellkode\"\nreturning \"tabellkode\"")) + ): Issue1422Row = Fragment.interpolate(Fragment.lit("insert into \"public\".\"issue142_2\"(\"tabellkode\")\nvalues ("), Fragment.encode(Issue142Id.pgType, unsaved.tabellkode), Fragment.lit(")\non conflict (\"tabellkode\")\ndo update set \"tabellkode\" = EXCLUDED.\"tabellkode\"\nreturning \"tabellkode\"")) .updateReturning(Issue1422Row._rowParser.exactlyOne()) .runUnchecked(c) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/issue142_2/Issue1422Row.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/issue142_2/Issue1422Row.kt index 46e017b2be..155f74770f 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/issue142_2/Issue1422Row.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/issue142_2/Issue1422Row.kt @@ -21,7 +21,7 @@ val tabellkode: Issue142Id) : Tuple1 { fun id(): Issue142Id = tabellkode companion object { - val _rowParser: RowParser = RowParsers.of(Issue142Id.dbType, { t0 -> Issue1422Row(t0) }, { row -> arrayOf(row.tabellkode) }) + val _rowParser: RowParser = RowParsers.of(Issue142Id.pgType, { t0 -> Issue1422Row(t0) }, { row -> arrayOf(row.tabellkode) }) val pgText: PgText = PgText.from(_rowParser.underlying) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/pgtest/PgtestFields.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/pgtest/PgtestFields.kt index 7a4955b02f..39b2b0acc1 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/pgtest/PgtestFields.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/pgtest/PgtestFields.kt @@ -265,13 +265,13 @@ data class PgtestFields(val _path: List) : TupleExpr70, PgtestRow> = Field, PgtestRow>(_path, "moneyes", PgtestRow::moneyes, "numeric[]", "money[]", { row, value -> row.copy(moneyes = value) }, PgTypes.moneyArray) - fun mydomain(): Field = Field(_path, "mydomain", PgtestRow::mydomain, null, "text", { row, value -> row.copy(mydomain = value) }, Mydomain.dbType) + fun mydomain(): Field = Field(_path, "mydomain", PgtestRow::mydomain, null, "text", { row, value -> row.copy(mydomain = value) }, Mydomain.pgType) - fun mydomaines(): Field, PgtestRow> = Field, PgtestRow>(_path, "mydomaines", PgtestRow::mydomaines, "text[]", "mydomain[]", { row, value -> row.copy(mydomaines = value) }, Mydomain.dbTypeArray) + fun mydomaines(): Field, PgtestRow> = Field, PgtestRow>(_path, "mydomaines", PgtestRow::mydomaines, "text[]", "mydomain[]", { row, value -> row.copy(mydomaines = value) }, Mydomain.pgTypeArray) - fun myenum(): Field = Field(_path, "myenum", PgtestRow::myenum, null, "public.myenum", { row, value -> row.copy(myenum = value) }, Myenum.dbType) + fun myenum(): Field = Field(_path, "myenum", PgtestRow::myenum, null, "public.myenum", { row, value -> row.copy(myenum = value) }, Myenum.pgType) - fun myenumes(): Field, PgtestRow> = Field, PgtestRow>(_path, "myenumes", PgtestRow::myenumes, null, "myenum[]", { row, value -> row.copy(myenumes = value) }, Myenum.dbTypeArray) + fun myenumes(): Field, PgtestRow> = Field, PgtestRow>(_path, "myenumes", PgtestRow::myenumes, null, "myenum[]", { row, value -> row.copy(myenumes = value) }, Myenum.pgTypeArray) fun name(): Field = Field(_path, "name", PgtestRow::name, null, "name", { row, value -> row.copy(name = value) }, PgTypes.name) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/pgtest/PgtestRepoImpl.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/pgtest/PgtestRepoImpl.kt index 992cb99aff..42102d1be1 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/pgtest/PgtestRepoImpl.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/pgtest/PgtestRepoImpl.kt @@ -25,7 +25,7 @@ class PgtestRepoImpl() : PgtestRepo { override fun insert( unsaved: PgtestRow, c: Connection - ): PgtestRow = Fragment.interpolate(Fragment.lit("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\", \"mydomaines\", \"myenumes\", \"namees\", \"numerices\", \"pathes\", \"pointes\", \"polygones\", \"textes\", \"timees\", \"timestampes\", \"timestampzes\", \"timezes\", \"uuides\", \"varchares\", \"xmles\")\nvalues ("), Fragment.encode(KotlinDbTypes.PgTypes.bool, unsaved.bool), Fragment.lit(", "), Fragment.encode(PgTypes.box, unsaved.box), Fragment.lit("::box, "), Fragment.encode(PgTypes.bpchar, unsaved.bpchar), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.bytea, unsaved.bytea), Fragment.lit("::bytea, "), Fragment.encode(PgTypes.bpchar, unsaved.char), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.circle, unsaved.circle), Fragment.lit("::circle, "), Fragment.encode(PgTypes.date, unsaved.date), Fragment.lit("::date, "), Fragment.encode(KotlinDbTypes.PgTypes.float4, unsaved.float4), Fragment.lit("::float4, "), Fragment.encode(KotlinDbTypes.PgTypes.float8, unsaved.float8), Fragment.lit("::float8, "), Fragment.encode(KotlinDbTypes.PgTypes.hstore, unsaved.hstore), Fragment.lit("::hstore, "), Fragment.encode(PgTypes.inet, unsaved.inet), Fragment.lit("::inet, "), Fragment.encode(KotlinDbTypes.PgTypes.int2, unsaved.int2), Fragment.lit("::int2, "), Fragment.encode(PgTypes.int2vector, unsaved.int2vector), Fragment.lit("::int2vector, "), Fragment.encode(KotlinDbTypes.PgTypes.int4, unsaved.int4), Fragment.lit("::int4, "), Fragment.encode(KotlinDbTypes.PgTypes.int8, unsaved.int8), Fragment.lit("::int8, "), Fragment.encode(PgTypes.interval, unsaved.interval), Fragment.lit("::interval, "), Fragment.encode(PgTypes.json, unsaved.json), Fragment.lit("::json, "), Fragment.encode(PgTypes.jsonb, unsaved.jsonb), Fragment.lit("::jsonb, "), Fragment.encode(PgTypes.line, unsaved.line), Fragment.lit("::line, "), Fragment.encode(PgTypes.lseg, unsaved.lseg), Fragment.lit("::lseg, "), Fragment.encode(PgTypes.money, unsaved.money), Fragment.lit("::money, "), Fragment.encode(Mydomain.dbType, unsaved.mydomain), Fragment.lit("::text, "), Fragment.encode(Myenum.dbType, unsaved.myenum), Fragment.lit("::public.myenum, "), Fragment.encode(PgTypes.name, unsaved.name), Fragment.lit("::name, "), Fragment.encode(PgTypes.numeric, unsaved.numeric), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.path, unsaved.path), Fragment.lit("::path, "), Fragment.encode(PgTypes.point, unsaved.point), Fragment.lit("::point, "), Fragment.encode(PgTypes.polygon, unsaved.polygon), Fragment.lit("::polygon, "), Fragment.encode(PgTypes.text, unsaved.text), Fragment.lit(", "), Fragment.encode(PgTypes.time, unsaved.time), Fragment.lit("::time, "), Fragment.encode(PgTypes.timestamp, unsaved.timestamp), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamptz, unsaved.timestampz), Fragment.lit("::timestamptz, "), Fragment.encode(PgTypes.timetz, unsaved.timez), Fragment.lit("::timetz, "), Fragment.encode(PgTypes.uuid, unsaved.uuid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.text, unsaved.varchar), Fragment.lit(", "), Fragment.encode(PgTypes.vector, unsaved.vector), Fragment.lit("::vector, "), Fragment.encode(PgTypes.xml, unsaved.xml), Fragment.lit("::xml, "), Fragment.encode(PgTypes.boxArray, unsaved.boxes), Fragment.lit("::box[], "), Fragment.encode(PgTypes.bpcharArray, unsaved.bpchares), Fragment.lit("::bpchar[], "), Fragment.encode(PgTypes.bpcharArray, unsaved.chares), Fragment.lit("::bpchar[], "), Fragment.encode(PgTypes.circleArray, unsaved.circlees), Fragment.lit("::circle[], "), Fragment.encode(PgTypes.dateArray, unsaved.datees), Fragment.lit("::date[], "), Fragment.encode(PgTypes.float4Array, unsaved.float4es), Fragment.lit("::float4[], "), Fragment.encode(PgTypes.float8Array, unsaved.float8es), Fragment.lit("::float8[], "), Fragment.encode(PgTypes.inetArray, unsaved.inetes), Fragment.lit("::inet[], "), Fragment.encode(PgTypes.int2Array, unsaved.int2es), Fragment.lit("::int2[], "), Fragment.encode(PgTypes.int2vectorArray, unsaved.int2vectores), Fragment.lit("::int2vector[], "), Fragment.encode(PgTypes.int4Array, unsaved.int4es), Fragment.lit("::int4[], "), Fragment.encode(PgTypes.int8Array, unsaved.int8es), Fragment.lit("::int8[], "), Fragment.encode(PgTypes.intervalArray, unsaved.intervales), Fragment.lit("::interval[], "), Fragment.encode(PgTypes.jsonArray, unsaved.jsones), Fragment.lit("::json[], "), Fragment.encode(PgTypes.jsonbArray, unsaved.jsonbes), Fragment.lit("::jsonb[], "), Fragment.encode(PgTypes.lineArray, unsaved.linees), Fragment.lit("::line[], "), Fragment.encode(PgTypes.lsegArray, unsaved.lseges), Fragment.lit("::lseg[], "), Fragment.encode(PgTypes.moneyArray, unsaved.moneyes), Fragment.lit("::money[], "), Fragment.encode(Mydomain.dbTypeArray, unsaved.mydomaines), Fragment.lit("::mydomain[], "), Fragment.encode(Myenum.dbTypeArray, unsaved.myenumes), Fragment.lit("::myenum[], "), Fragment.encode(PgTypes.nameArray, unsaved.namees), Fragment.lit("::name[], "), Fragment.encode(PgTypes.numericArray, unsaved.numerices), Fragment.lit("::numeric[], "), Fragment.encode(PgTypes.pathArray, unsaved.pathes), Fragment.lit("::path[], "), Fragment.encode(PgTypes.pointArray, unsaved.pointes), Fragment.lit("::point[], "), Fragment.encode(PgTypes.polygonArray, unsaved.polygones), Fragment.lit("::polygon[], "), Fragment.encode(PgTypes.textArray, unsaved.textes), Fragment.lit("::text[], "), Fragment.encode(PgTypes.timeArray, unsaved.timees), Fragment.lit("::time[], "), Fragment.encode(PgTypes.timestampArray, unsaved.timestampes), Fragment.lit("::timestamp[], "), Fragment.encode(PgTypes.timestamptzArray, unsaved.timestampzes), Fragment.lit("::timestamptz[], "), Fragment.encode(PgTypes.timetzArray, unsaved.timezes), Fragment.lit("::timetz[], "), Fragment.encode(PgTypes.uuidArray, unsaved.uuides), Fragment.lit("::uuid[], "), Fragment.encode(PgTypes.textArray, unsaved.varchares), Fragment.lit("::varchar[], "), Fragment.encode(PgTypes.xmlArray, unsaved.xmles), Fragment.lit("::xml[])\nRETURNING \"bool\", \"box\", \"bpchar\", \"bytea\", \"char\", \"circle\", \"date\", \"float4\", \"float8\", \"hstore\", \"inet\", \"int2\", \"int2vector\", \"int4\", \"int8\", \"interval\", \"json\", \"jsonb\", \"line\", \"lseg\", \"money\"::numeric, \"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\"::numeric[], \"mydomaines\"::text[], \"myenumes\", \"namees\", \"numerices\", \"pathes\", \"pointes\", \"polygones\", \"textes\", \"timees\", \"timestampes\", \"timestampzes\", \"timezes\", \"uuides\", \"varchares\", \"xmles\"\n")) + ): PgtestRow = Fragment.interpolate(Fragment.lit("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\", \"mydomaines\", \"myenumes\", \"namees\", \"numerices\", \"pathes\", \"pointes\", \"polygones\", \"textes\", \"timees\", \"timestampes\", \"timestampzes\", \"timezes\", \"uuides\", \"varchares\", \"xmles\")\nvalues ("), Fragment.encode(KotlinDbTypes.PgTypes.bool, unsaved.bool), Fragment.lit(", "), Fragment.encode(PgTypes.box, unsaved.box), Fragment.lit("::box, "), Fragment.encode(PgTypes.bpchar, unsaved.bpchar), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.bytea, unsaved.bytea), Fragment.lit("::bytea, "), Fragment.encode(PgTypes.bpchar, unsaved.char), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.circle, unsaved.circle), Fragment.lit("::circle, "), Fragment.encode(PgTypes.date, unsaved.date), Fragment.lit("::date, "), Fragment.encode(KotlinDbTypes.PgTypes.float4, unsaved.float4), Fragment.lit("::float4, "), Fragment.encode(KotlinDbTypes.PgTypes.float8, unsaved.float8), Fragment.lit("::float8, "), Fragment.encode(KotlinDbTypes.PgTypes.hstore, unsaved.hstore), Fragment.lit("::hstore, "), Fragment.encode(PgTypes.inet, unsaved.inet), Fragment.lit("::inet, "), Fragment.encode(KotlinDbTypes.PgTypes.int2, unsaved.int2), Fragment.lit("::int2, "), Fragment.encode(PgTypes.int2vector, unsaved.int2vector), Fragment.lit("::int2vector, "), Fragment.encode(KotlinDbTypes.PgTypes.int4, unsaved.int4), Fragment.lit("::int4, "), Fragment.encode(KotlinDbTypes.PgTypes.int8, unsaved.int8), Fragment.lit("::int8, "), Fragment.encode(PgTypes.interval, unsaved.interval), Fragment.lit("::interval, "), Fragment.encode(PgTypes.json, unsaved.json), Fragment.lit("::json, "), Fragment.encode(PgTypes.jsonb, unsaved.jsonb), Fragment.lit("::jsonb, "), Fragment.encode(PgTypes.line, unsaved.line), Fragment.lit("::line, "), Fragment.encode(PgTypes.lseg, unsaved.lseg), Fragment.lit("::lseg, "), Fragment.encode(PgTypes.money, unsaved.money), Fragment.lit("::money, "), Fragment.encode(Mydomain.pgType, unsaved.mydomain), Fragment.lit("::text, "), Fragment.encode(Myenum.pgType, unsaved.myenum), Fragment.lit("::public.myenum, "), Fragment.encode(PgTypes.name, unsaved.name), Fragment.lit("::name, "), Fragment.encode(PgTypes.numeric, unsaved.numeric), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.path, unsaved.path), Fragment.lit("::path, "), Fragment.encode(PgTypes.point, unsaved.point), Fragment.lit("::point, "), Fragment.encode(PgTypes.polygon, unsaved.polygon), Fragment.lit("::polygon, "), Fragment.encode(PgTypes.text, unsaved.text), Fragment.lit(", "), Fragment.encode(PgTypes.time, unsaved.time), Fragment.lit("::time, "), Fragment.encode(PgTypes.timestamp, unsaved.timestamp), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamptz, unsaved.timestampz), Fragment.lit("::timestamptz, "), Fragment.encode(PgTypes.timetz, unsaved.timez), Fragment.lit("::timetz, "), Fragment.encode(PgTypes.uuid, unsaved.uuid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.text, unsaved.varchar), Fragment.lit(", "), Fragment.encode(PgTypes.vector, unsaved.vector), Fragment.lit("::vector, "), Fragment.encode(PgTypes.xml, unsaved.xml), Fragment.lit("::xml, "), Fragment.encode(PgTypes.boxArray, unsaved.boxes), Fragment.lit("::box[], "), Fragment.encode(PgTypes.bpcharArray, unsaved.bpchares), Fragment.lit("::bpchar[], "), Fragment.encode(PgTypes.bpcharArray, unsaved.chares), Fragment.lit("::bpchar[], "), Fragment.encode(PgTypes.circleArray, unsaved.circlees), Fragment.lit("::circle[], "), Fragment.encode(PgTypes.dateArray, unsaved.datees), Fragment.lit("::date[], "), Fragment.encode(PgTypes.float4Array, unsaved.float4es), Fragment.lit("::float4[], "), Fragment.encode(PgTypes.float8Array, unsaved.float8es), Fragment.lit("::float8[], "), Fragment.encode(PgTypes.inetArray, unsaved.inetes), Fragment.lit("::inet[], "), Fragment.encode(PgTypes.int2Array, unsaved.int2es), Fragment.lit("::int2[], "), Fragment.encode(PgTypes.int2vectorArray, unsaved.int2vectores), Fragment.lit("::int2vector[], "), Fragment.encode(PgTypes.int4Array, unsaved.int4es), Fragment.lit("::int4[], "), Fragment.encode(PgTypes.int8Array, unsaved.int8es), Fragment.lit("::int8[], "), Fragment.encode(PgTypes.intervalArray, unsaved.intervales), Fragment.lit("::interval[], "), Fragment.encode(PgTypes.jsonArray, unsaved.jsones), Fragment.lit("::json[], "), Fragment.encode(PgTypes.jsonbArray, unsaved.jsonbes), Fragment.lit("::jsonb[], "), Fragment.encode(PgTypes.lineArray, unsaved.linees), Fragment.lit("::line[], "), Fragment.encode(PgTypes.lsegArray, unsaved.lseges), Fragment.lit("::lseg[], "), Fragment.encode(PgTypes.moneyArray, unsaved.moneyes), Fragment.lit("::money[], "), Fragment.encode(Mydomain.pgTypeArray, unsaved.mydomaines), Fragment.lit("::mydomain[], "), Fragment.encode(Myenum.pgTypeArray, unsaved.myenumes), Fragment.lit("::myenum[], "), Fragment.encode(PgTypes.nameArray, unsaved.namees), Fragment.lit("::name[], "), Fragment.encode(PgTypes.numericArray, unsaved.numerices), Fragment.lit("::numeric[], "), Fragment.encode(PgTypes.pathArray, unsaved.pathes), Fragment.lit("::path[], "), Fragment.encode(PgTypes.pointArray, unsaved.pointes), Fragment.lit("::point[], "), Fragment.encode(PgTypes.polygonArray, unsaved.polygones), Fragment.lit("::polygon[], "), Fragment.encode(PgTypes.textArray, unsaved.textes), Fragment.lit("::text[], "), Fragment.encode(PgTypes.timeArray, unsaved.timees), Fragment.lit("::time[], "), Fragment.encode(PgTypes.timestampArray, unsaved.timestampes), Fragment.lit("::timestamp[], "), Fragment.encode(PgTypes.timestamptzArray, unsaved.timestampzes), Fragment.lit("::timestamptz[], "), Fragment.encode(PgTypes.timetzArray, unsaved.timezes), Fragment.lit("::timetz[], "), Fragment.encode(PgTypes.uuidArray, unsaved.uuides), Fragment.lit("::uuid[], "), Fragment.encode(PgTypes.textArray, unsaved.varchares), Fragment.lit("::varchar[], "), Fragment.encode(PgTypes.xmlArray, unsaved.xmles), Fragment.lit("::xml[])\nRETURNING \"bool\", \"box\", \"bpchar\", \"bytea\", \"char\", \"circle\", \"date\", \"float4\", \"float8\", \"hstore\", \"inet\", \"int2\", \"int2vector\", \"int4\", \"int8\", \"interval\", \"json\", \"jsonb\", \"line\", \"lseg\", \"money\"::numeric, \"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\"::numeric[], \"mydomaines\"::text[], \"myenumes\", \"namees\", \"numerices\", \"pathes\", \"pointes\", \"polygones\", \"textes\", \"timees\", \"timestampes\", \"timestampzes\", \"timezes\", \"uuides\", \"varchares\", \"xmles\"\n")) .updateReturning(PgtestRow._rowParser.exactlyOne()).runUnchecked(c) override fun insertStreaming( diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/pgtest/PgtestRow.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/pgtest/PgtestRow.kt index 9cfbc25525..ce8700a945 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/pgtest/PgtestRow.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/pgtest/PgtestRow.kt @@ -251,7 +251,7 @@ data class PgtestRow( override fun _9(): Double = float8 companion object { - val _rowParser: RowParser = RowParsers.of(KotlinDbTypes.PgTypes.bool, PgTypes.box, PgTypes.bpchar, PgTypes.bytea, PgTypes.bpchar, PgTypes.circle, PgTypes.date, KotlinDbTypes.PgTypes.float4, KotlinDbTypes.PgTypes.float8, KotlinDbTypes.PgTypes.hstore, PgTypes.inet, KotlinDbTypes.PgTypes.int2, PgTypes.int2vector, KotlinDbTypes.PgTypes.int4, KotlinDbTypes.PgTypes.int8, PgTypes.interval, PgTypes.json, PgTypes.jsonb, PgTypes.line, PgTypes.lseg, PgTypes.money, Mydomain.dbType, Myenum.dbType, PgTypes.name, PgTypes.numeric, PgTypes.path, PgTypes.point, PgTypes.polygon, PgTypes.text, PgTypes.time, PgTypes.timestamp, PgTypes.timestamptz, PgTypes.timetz, PgTypes.uuid, PgTypes.text, PgTypes.vector, PgTypes.xml, PgTypes.boxArray, PgTypes.bpcharArray, PgTypes.bpcharArray, PgTypes.circleArray, PgTypes.dateArray, PgTypes.float4Array, PgTypes.float8Array, PgTypes.inetArray, PgTypes.int2Array, PgTypes.int2vectorArray, PgTypes.int4Array, PgTypes.int8Array, PgTypes.intervalArray, PgTypes.jsonArray, PgTypes.jsonbArray, PgTypes.lineArray, PgTypes.lsegArray, PgTypes.moneyArray, Mydomain.dbTypeArray, Myenum.dbTypeArray, PgTypes.nameArray, PgTypes.numericArray, PgTypes.pathArray, PgTypes.pointArray, PgTypes.polygonArray, PgTypes.textArray, PgTypes.timeArray, PgTypes.timestampArray, PgTypes.timestamptzArray, PgTypes.timetzArray, PgTypes.uuidArray, PgTypes.textArray, PgTypes.xmlArray, { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53, t54, t55, t56, t57, t58, t59, t60, t61, t62, t63, t64, t65, t66, t67, t68, t69 -> PgtestRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53, t54, t55, t56, t57, t58, t59, t60, t61, t62, t63, t64, t65, t66, t67, t68, t69) }, { row -> arrayOf(row.bool, row.box, row.bpchar, row.bytea, row.char, row.circle, row.date, row.float4, row.float8, row.hstore, row.inet, row.int2, row.int2vector, row.int4, row.int8, row.interval, row.json, row.jsonb, row.line, row.lseg, row.money, row.mydomain, row.myenum, row.name, row.numeric, row.path, row.point, row.polygon, row.text, row.time, row.timestamp, row.timestampz, row.timez, row.uuid, row.varchar, row.vector, row.xml, row.boxes, row.bpchares, row.chares, row.circlees, row.datees, row.float4es, row.float8es, row.inetes, row.int2es, row.int2vectores, row.int4es, row.int8es, row.intervales, row.jsones, row.jsonbes, row.linees, row.lseges, row.moneyes, row.mydomaines, row.myenumes, row.namees, row.numerices, row.pathes, row.pointes, row.polygones, row.textes, row.timees, row.timestampes, row.timestampzes, row.timezes, row.uuides, row.varchares, row.xmles) }) + val _rowParser: RowParser = RowParsers.of(KotlinDbTypes.PgTypes.bool, PgTypes.box, PgTypes.bpchar, PgTypes.bytea, PgTypes.bpchar, PgTypes.circle, PgTypes.date, KotlinDbTypes.PgTypes.float4, KotlinDbTypes.PgTypes.float8, KotlinDbTypes.PgTypes.hstore, PgTypes.inet, KotlinDbTypes.PgTypes.int2, PgTypes.int2vector, KotlinDbTypes.PgTypes.int4, KotlinDbTypes.PgTypes.int8, PgTypes.interval, PgTypes.json, PgTypes.jsonb, PgTypes.line, PgTypes.lseg, PgTypes.money, Mydomain.pgType, Myenum.pgType, PgTypes.name, PgTypes.numeric, PgTypes.path, PgTypes.point, PgTypes.polygon, PgTypes.text, PgTypes.time, PgTypes.timestamp, PgTypes.timestamptz, PgTypes.timetz, PgTypes.uuid, PgTypes.text, PgTypes.vector, PgTypes.xml, PgTypes.boxArray, PgTypes.bpcharArray, PgTypes.bpcharArray, PgTypes.circleArray, PgTypes.dateArray, PgTypes.float4Array, PgTypes.float8Array, PgTypes.inetArray, PgTypes.int2Array, PgTypes.int2vectorArray, PgTypes.int4Array, PgTypes.int8Array, PgTypes.intervalArray, PgTypes.jsonArray, PgTypes.jsonbArray, PgTypes.lineArray, PgTypes.lsegArray, PgTypes.moneyArray, Mydomain.pgTypeArray, Myenum.pgTypeArray, PgTypes.nameArray, PgTypes.numericArray, PgTypes.pathArray, PgTypes.pointArray, PgTypes.polygonArray, PgTypes.textArray, PgTypes.timeArray, PgTypes.timestampArray, PgTypes.timestamptzArray, PgTypes.timetzArray, PgTypes.uuidArray, PgTypes.textArray, PgTypes.xmlArray, { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53, t54, t55, t56, t57, t58, t59, t60, t61, t62, t63, t64, t65, t66, t67, t68, t69 -> PgtestRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53, t54, t55, t56, t57, t58, t59, t60, t61, t62, t63, t64, t65, t66, t67, t68, t69) }, { row -> arrayOf(row.bool, row.box, row.bpchar, row.bytea, row.char, row.circle, row.date, row.float4, row.float8, row.hstore, row.inet, row.int2, row.int2vector, row.int4, row.int8, row.interval, row.json, row.jsonb, row.line, row.lseg, row.money, row.mydomain, row.myenum, row.name, row.numeric, row.path, row.point, row.polygon, row.text, row.time, row.timestamp, row.timestampz, row.timez, row.uuid, row.varchar, row.vector, row.xml, row.boxes, row.bpchares, row.chares, row.circlees, row.datees, row.float4es, row.float8es, row.inetes, row.int2es, row.int2vectores, row.int4es, row.int8es, row.intervales, row.jsones, row.jsonbes, row.linees, row.lseges, row.moneyes, row.mydomaines, row.myenumes, row.namees, row.numerices, row.pathes, row.pointes, row.polygones, row.textes, row.timees, row.timestampes, row.timestampzes, row.timezes, row.uuides, row.varchares, row.xmles) }) val pgText: PgText = PgText.from(_rowParser.underlying) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/pgtestnull/PgtestnullFields.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/pgtestnull/PgtestnullFields.kt index b0d7896c83..2590953a2c 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/pgtestnull/PgtestnullFields.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/pgtestnull/PgtestnullFields.kt @@ -265,13 +265,13 @@ data class PgtestnullFields(val _path: List) : TupleExpr70, PgtestnullRow> = OptField, PgtestnullRow>(_path, "moneyes", PgtestnullRow::moneyes, "numeric[]", "money[]", { row, value -> row.copy(moneyes = value) }, PgTypes.moneyArray) - fun mydomain(): OptField = OptField(_path, "mydomain", PgtestnullRow::mydomain, null, "text", { row, value -> row.copy(mydomain = value) }, Mydomain.dbType) + fun mydomain(): OptField = OptField(_path, "mydomain", PgtestnullRow::mydomain, null, "text", { row, value -> row.copy(mydomain = value) }, Mydomain.pgType) - fun mydomaines(): OptField, PgtestnullRow> = OptField, PgtestnullRow>(_path, "mydomaines", PgtestnullRow::mydomaines, "text[]", "mydomain[]", { row, value -> row.copy(mydomaines = value) }, Mydomain.dbTypeArray) + fun mydomaines(): OptField, PgtestnullRow> = OptField, PgtestnullRow>(_path, "mydomaines", PgtestnullRow::mydomaines, "text[]", "mydomain[]", { row, value -> row.copy(mydomaines = value) }, Mydomain.pgTypeArray) - fun myenum(): OptField = OptField(_path, "myenum", PgtestnullRow::myenum, null, "public.myenum", { row, value -> row.copy(myenum = value) }, Myenum.dbType) + fun myenum(): OptField = OptField(_path, "myenum", PgtestnullRow::myenum, null, "public.myenum", { row, value -> row.copy(myenum = value) }, Myenum.pgType) - fun myenumes(): OptField, PgtestnullRow> = OptField, PgtestnullRow>(_path, "myenumes", PgtestnullRow::myenumes, null, "myenum[]", { row, value -> row.copy(myenumes = value) }, Myenum.dbTypeArray) + fun myenumes(): OptField, PgtestnullRow> = OptField, PgtestnullRow>(_path, "myenumes", PgtestnullRow::myenumes, null, "myenum[]", { row, value -> row.copy(myenumes = value) }, Myenum.pgTypeArray) fun name(): OptField = OptField(_path, "name", PgtestnullRow::name, null, "name", { row, value -> row.copy(name = value) }, PgTypes.name) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/pgtestnull/PgtestnullRepoImpl.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/pgtestnull/PgtestnullRepoImpl.kt index 94dcc36433..a9827b3c77 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/pgtestnull/PgtestnullRepoImpl.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/pgtestnull/PgtestnullRepoImpl.kt @@ -26,7 +26,7 @@ class PgtestnullRepoImpl() : PgtestnullRepo { override fun insert( unsaved: PgtestnullRow, c: Connection - ): PgtestnullRow = Fragment.interpolate(Fragment.lit("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\", \"mydomaines\", \"myenumes\", \"namees\", \"numerices\", \"pathes\", \"pointes\", \"polygones\", \"textes\", \"timees\", \"timestampes\", \"timestampzes\", \"timezes\", \"uuides\", \"varchares\", \"xmles\")\nvalues ("), Fragment.encode(KotlinDbTypes.PgTypes.bool.nullable(), unsaved.bool), Fragment.lit(", "), Fragment.encode(PgTypes.box.nullable(), unsaved.box), Fragment.lit("::box, "), Fragment.encode(PgTypes.bpchar.nullable(), unsaved.bpchar), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.bytea.nullable(), unsaved.bytea), Fragment.lit("::bytea, "), Fragment.encode(PgTypes.bpchar.nullable(), unsaved.char), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.circle.nullable(), unsaved.circle), Fragment.lit("::circle, "), Fragment.encode(PgTypes.date.nullable(), unsaved.date), Fragment.lit("::date, "), Fragment.encode(KotlinDbTypes.PgTypes.float4.nullable(), unsaved.float4), Fragment.lit("::float4, "), Fragment.encode(KotlinDbTypes.PgTypes.float8.nullable(), unsaved.float8), Fragment.lit("::float8, "), Fragment.encode(KotlinDbTypes.PgTypes.hstore.nullable(), unsaved.hstore), Fragment.lit("::hstore, "), Fragment.encode(PgTypes.inet.nullable(), unsaved.inet), Fragment.lit("::inet, "), Fragment.encode(KotlinDbTypes.PgTypes.int2.nullable(), unsaved.int2), Fragment.lit("::int2, "), Fragment.encode(PgTypes.int2vector.nullable(), unsaved.int2vector), Fragment.lit("::int2vector, "), Fragment.encode(KotlinDbTypes.PgTypes.int4.nullable(), unsaved.int4), Fragment.lit("::int4, "), Fragment.encode(KotlinDbTypes.PgTypes.int8.nullable(), unsaved.int8), Fragment.lit("::int8, "), Fragment.encode(PgTypes.interval.nullable(), unsaved.interval), Fragment.lit("::interval, "), Fragment.encode(PgTypes.json.nullable(), unsaved.json), Fragment.lit("::json, "), Fragment.encode(PgTypes.jsonb.nullable(), unsaved.jsonb), Fragment.lit("::jsonb, "), Fragment.encode(PgTypes.line.nullable(), unsaved.line), Fragment.lit("::line, "), Fragment.encode(PgTypes.lseg.nullable(), unsaved.lseg), Fragment.lit("::lseg, "), Fragment.encode(PgTypes.money.nullable(), unsaved.money), Fragment.lit("::money, "), Fragment.encode(Mydomain.dbType.nullable(), unsaved.mydomain), Fragment.lit("::text, "), Fragment.encode(Myenum.dbType.nullable(), unsaved.myenum), Fragment.lit("::public.myenum, "), Fragment.encode(PgTypes.name.nullable(), unsaved.name), Fragment.lit("::name, "), Fragment.encode(PgTypes.numeric.nullable(), unsaved.numeric), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.path.nullable(), unsaved.path), Fragment.lit("::path, "), Fragment.encode(PgTypes.point.nullable(), unsaved.point), Fragment.lit("::point, "), Fragment.encode(PgTypes.polygon.nullable(), unsaved.polygon), Fragment.lit("::polygon, "), Fragment.encode(PgTypes.text.nullable(), unsaved.text), Fragment.lit(", "), Fragment.encode(PgTypes.time.nullable(), unsaved.time), Fragment.lit("::time, "), Fragment.encode(PgTypes.timestamp.nullable(), unsaved.timestamp), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamptz.nullable(), unsaved.timestampz), Fragment.lit("::timestamptz, "), Fragment.encode(PgTypes.timetz.nullable(), unsaved.timez), Fragment.lit("::timetz, "), Fragment.encode(PgTypes.uuid.nullable(), unsaved.uuid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.text.nullable(), unsaved.varchar), Fragment.lit(", "), Fragment.encode(PgTypes.vector.nullable(), unsaved.vector), Fragment.lit("::vector, "), Fragment.encode(PgTypes.xml.nullable(), unsaved.xml), Fragment.lit("::xml, "), Fragment.encode(PgTypes.boxArray.nullable(), unsaved.boxes), Fragment.lit("::box[], "), Fragment.encode(PgTypes.bpcharArray.nullable(), unsaved.bpchares), Fragment.lit("::bpchar[], "), Fragment.encode(PgTypes.bpcharArray.nullable(), unsaved.chares), Fragment.lit("::bpchar[], "), Fragment.encode(PgTypes.circleArray.nullable(), unsaved.circlees), Fragment.lit("::circle[], "), Fragment.encode(PgTypes.dateArray.nullable(), unsaved.datees), Fragment.lit("::date[], "), Fragment.encode(PgTypes.float4Array.nullable(), unsaved.float4es), Fragment.lit("::float4[], "), Fragment.encode(PgTypes.float8Array.nullable(), unsaved.float8es), Fragment.lit("::float8[], "), Fragment.encode(PgTypes.inetArray.nullable(), unsaved.inetes), Fragment.lit("::inet[], "), Fragment.encode(PgTypes.int2Array.nullable(), unsaved.int2es), Fragment.lit("::int2[], "), Fragment.encode(PgTypes.int2vectorArray.nullable(), unsaved.int2vectores), Fragment.lit("::int2vector[], "), Fragment.encode(PgTypes.int4Array.nullable(), unsaved.int4es), Fragment.lit("::int4[], "), Fragment.encode(PgTypes.int8Array.nullable(), unsaved.int8es), Fragment.lit("::int8[], "), Fragment.encode(PgTypes.intervalArray.nullable(), unsaved.intervales), Fragment.lit("::interval[], "), Fragment.encode(PgTypes.jsonArray.nullable(), unsaved.jsones), Fragment.lit("::json[], "), Fragment.encode(PgTypes.jsonbArray.nullable(), unsaved.jsonbes), Fragment.lit("::jsonb[], "), Fragment.encode(PgTypes.lineArray.nullable(), unsaved.linees), Fragment.lit("::line[], "), Fragment.encode(PgTypes.lsegArray.nullable(), unsaved.lseges), Fragment.lit("::lseg[], "), Fragment.encode(PgTypes.moneyArray.nullable(), unsaved.moneyes), Fragment.lit("::money[], "), Fragment.encode(Mydomain.dbTypeArray.nullable(), unsaved.mydomaines), Fragment.lit("::mydomain[], "), Fragment.encode(Myenum.dbTypeArray.nullable(), unsaved.myenumes), Fragment.lit("::myenum[], "), Fragment.encode(PgTypes.nameArray.nullable(), unsaved.namees), Fragment.lit("::name[], "), Fragment.encode(PgTypes.numericArray.nullable(), unsaved.numerices), Fragment.lit("::numeric[], "), Fragment.encode(PgTypes.pathArray.nullable(), unsaved.pathes), Fragment.lit("::path[], "), Fragment.encode(PgTypes.pointArray.nullable(), unsaved.pointes), Fragment.lit("::point[], "), Fragment.encode(PgTypes.polygonArray.nullable(), unsaved.polygones), Fragment.lit("::polygon[], "), Fragment.encode(PgTypes.textArray.nullable(), unsaved.textes), Fragment.lit("::text[], "), Fragment.encode(PgTypes.timeArray.nullable(), unsaved.timees), Fragment.lit("::time[], "), Fragment.encode(PgTypes.timestampArray.nullable(), unsaved.timestampes), Fragment.lit("::timestamp[], "), Fragment.encode(PgTypes.timestamptzArray.nullable(), unsaved.timestampzes), Fragment.lit("::timestamptz[], "), Fragment.encode(PgTypes.timetzArray.nullable(), unsaved.timezes), Fragment.lit("::timetz[], "), Fragment.encode(PgTypes.uuidArray.nullable(), unsaved.uuides), Fragment.lit("::uuid[], "), Fragment.encode(PgTypes.textArray.nullable(), unsaved.varchares), Fragment.lit("::varchar[], "), Fragment.encode(PgTypes.xmlArray.nullable(), unsaved.xmles), Fragment.lit("::xml[])\nRETURNING \"bool\", \"box\", \"bpchar\", \"bytea\", \"char\", \"circle\", \"date\", \"float4\", \"float8\", \"hstore\", \"inet\", \"int2\", \"int2vector\", \"int4\", \"int8\", \"interval\", \"json\", \"jsonb\", \"line\", \"lseg\", \"money\"::numeric, \"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\"::numeric[], \"mydomaines\"::text[], \"myenumes\", \"namees\", \"numerices\", \"pathes\", \"pointes\", \"polygones\", \"textes\", \"timees\", \"timestampes\", \"timestampzes\", \"timezes\", \"uuides\", \"varchares\", \"xmles\"\n")) + ): PgtestnullRow = Fragment.interpolate(Fragment.lit("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\", \"mydomaines\", \"myenumes\", \"namees\", \"numerices\", \"pathes\", \"pointes\", \"polygones\", \"textes\", \"timees\", \"timestampes\", \"timestampzes\", \"timezes\", \"uuides\", \"varchares\", \"xmles\")\nvalues ("), Fragment.encode(KotlinDbTypes.PgTypes.bool.nullable(), unsaved.bool), Fragment.lit(", "), Fragment.encode(PgTypes.box.nullable(), unsaved.box), Fragment.lit("::box, "), Fragment.encode(PgTypes.bpchar.nullable(), unsaved.bpchar), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.bytea.nullable(), unsaved.bytea), Fragment.lit("::bytea, "), Fragment.encode(PgTypes.bpchar.nullable(), unsaved.char), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.circle.nullable(), unsaved.circle), Fragment.lit("::circle, "), Fragment.encode(PgTypes.date.nullable(), unsaved.date), Fragment.lit("::date, "), Fragment.encode(KotlinDbTypes.PgTypes.float4.nullable(), unsaved.float4), Fragment.lit("::float4, "), Fragment.encode(KotlinDbTypes.PgTypes.float8.nullable(), unsaved.float8), Fragment.lit("::float8, "), Fragment.encode(KotlinDbTypes.PgTypes.hstore.nullable(), unsaved.hstore), Fragment.lit("::hstore, "), Fragment.encode(PgTypes.inet.nullable(), unsaved.inet), Fragment.lit("::inet, "), Fragment.encode(KotlinDbTypes.PgTypes.int2.nullable(), unsaved.int2), Fragment.lit("::int2, "), Fragment.encode(PgTypes.int2vector.nullable(), unsaved.int2vector), Fragment.lit("::int2vector, "), Fragment.encode(KotlinDbTypes.PgTypes.int4.nullable(), unsaved.int4), Fragment.lit("::int4, "), Fragment.encode(KotlinDbTypes.PgTypes.int8.nullable(), unsaved.int8), Fragment.lit("::int8, "), Fragment.encode(PgTypes.interval.nullable(), unsaved.interval), Fragment.lit("::interval, "), Fragment.encode(PgTypes.json.nullable(), unsaved.json), Fragment.lit("::json, "), Fragment.encode(PgTypes.jsonb.nullable(), unsaved.jsonb), Fragment.lit("::jsonb, "), Fragment.encode(PgTypes.line.nullable(), unsaved.line), Fragment.lit("::line, "), Fragment.encode(PgTypes.lseg.nullable(), unsaved.lseg), Fragment.lit("::lseg, "), Fragment.encode(PgTypes.money.nullable(), unsaved.money), Fragment.lit("::money, "), Fragment.encode(Mydomain.pgType.nullable(), unsaved.mydomain), Fragment.lit("::text, "), Fragment.encode(Myenum.pgType.nullable(), unsaved.myenum), Fragment.lit("::public.myenum, "), Fragment.encode(PgTypes.name.nullable(), unsaved.name), Fragment.lit("::name, "), Fragment.encode(PgTypes.numeric.nullable(), unsaved.numeric), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.path.nullable(), unsaved.path), Fragment.lit("::path, "), Fragment.encode(PgTypes.point.nullable(), unsaved.point), Fragment.lit("::point, "), Fragment.encode(PgTypes.polygon.nullable(), unsaved.polygon), Fragment.lit("::polygon, "), Fragment.encode(PgTypes.text.nullable(), unsaved.text), Fragment.lit(", "), Fragment.encode(PgTypes.time.nullable(), unsaved.time), Fragment.lit("::time, "), Fragment.encode(PgTypes.timestamp.nullable(), unsaved.timestamp), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamptz.nullable(), unsaved.timestampz), Fragment.lit("::timestamptz, "), Fragment.encode(PgTypes.timetz.nullable(), unsaved.timez), Fragment.lit("::timetz, "), Fragment.encode(PgTypes.uuid.nullable(), unsaved.uuid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.text.nullable(), unsaved.varchar), Fragment.lit(", "), Fragment.encode(PgTypes.vector.nullable(), unsaved.vector), Fragment.lit("::vector, "), Fragment.encode(PgTypes.xml.nullable(), unsaved.xml), Fragment.lit("::xml, "), Fragment.encode(PgTypes.boxArray.nullable(), unsaved.boxes), Fragment.lit("::box[], "), Fragment.encode(PgTypes.bpcharArray.nullable(), unsaved.bpchares), Fragment.lit("::bpchar[], "), Fragment.encode(PgTypes.bpcharArray.nullable(), unsaved.chares), Fragment.lit("::bpchar[], "), Fragment.encode(PgTypes.circleArray.nullable(), unsaved.circlees), Fragment.lit("::circle[], "), Fragment.encode(PgTypes.dateArray.nullable(), unsaved.datees), Fragment.lit("::date[], "), Fragment.encode(PgTypes.float4Array.nullable(), unsaved.float4es), Fragment.lit("::float4[], "), Fragment.encode(PgTypes.float8Array.nullable(), unsaved.float8es), Fragment.lit("::float8[], "), Fragment.encode(PgTypes.inetArray.nullable(), unsaved.inetes), Fragment.lit("::inet[], "), Fragment.encode(PgTypes.int2Array.nullable(), unsaved.int2es), Fragment.lit("::int2[], "), Fragment.encode(PgTypes.int2vectorArray.nullable(), unsaved.int2vectores), Fragment.lit("::int2vector[], "), Fragment.encode(PgTypes.int4Array.nullable(), unsaved.int4es), Fragment.lit("::int4[], "), Fragment.encode(PgTypes.int8Array.nullable(), unsaved.int8es), Fragment.lit("::int8[], "), Fragment.encode(PgTypes.intervalArray.nullable(), unsaved.intervales), Fragment.lit("::interval[], "), Fragment.encode(PgTypes.jsonArray.nullable(), unsaved.jsones), Fragment.lit("::json[], "), Fragment.encode(PgTypes.jsonbArray.nullable(), unsaved.jsonbes), Fragment.lit("::jsonb[], "), Fragment.encode(PgTypes.lineArray.nullable(), unsaved.linees), Fragment.lit("::line[], "), Fragment.encode(PgTypes.lsegArray.nullable(), unsaved.lseges), Fragment.lit("::lseg[], "), Fragment.encode(PgTypes.moneyArray.nullable(), unsaved.moneyes), Fragment.lit("::money[], "), Fragment.encode(Mydomain.pgTypeArray.nullable(), unsaved.mydomaines), Fragment.lit("::mydomain[], "), Fragment.encode(Myenum.pgTypeArray.nullable(), unsaved.myenumes), Fragment.lit("::myenum[], "), Fragment.encode(PgTypes.nameArray.nullable(), unsaved.namees), Fragment.lit("::name[], "), Fragment.encode(PgTypes.numericArray.nullable(), unsaved.numerices), Fragment.lit("::numeric[], "), Fragment.encode(PgTypes.pathArray.nullable(), unsaved.pathes), Fragment.lit("::path[], "), Fragment.encode(PgTypes.pointArray.nullable(), unsaved.pointes), Fragment.lit("::point[], "), Fragment.encode(PgTypes.polygonArray.nullable(), unsaved.polygones), Fragment.lit("::polygon[], "), Fragment.encode(PgTypes.textArray.nullable(), unsaved.textes), Fragment.lit("::text[], "), Fragment.encode(PgTypes.timeArray.nullable(), unsaved.timees), Fragment.lit("::time[], "), Fragment.encode(PgTypes.timestampArray.nullable(), unsaved.timestampes), Fragment.lit("::timestamp[], "), Fragment.encode(PgTypes.timestamptzArray.nullable(), unsaved.timestampzes), Fragment.lit("::timestamptz[], "), Fragment.encode(PgTypes.timetzArray.nullable(), unsaved.timezes), Fragment.lit("::timetz[], "), Fragment.encode(PgTypes.uuidArray.nullable(), unsaved.uuides), Fragment.lit("::uuid[], "), Fragment.encode(PgTypes.textArray.nullable(), unsaved.varchares), Fragment.lit("::varchar[], "), Fragment.encode(PgTypes.xmlArray.nullable(), unsaved.xmles), Fragment.lit("::xml[])\nRETURNING \"bool\", \"box\", \"bpchar\", \"bytea\", \"char\", \"circle\", \"date\", \"float4\", \"float8\", \"hstore\", \"inet\", \"int2\", \"int2vector\", \"int4\", \"int8\", \"interval\", \"json\", \"jsonb\", \"line\", \"lseg\", \"money\"::numeric, \"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\"::numeric[], \"mydomaines\"::text[], \"myenumes\", \"namees\", \"numerices\", \"pathes\", \"pointes\", \"polygones\", \"textes\", \"timees\", \"timestampes\", \"timestampzes\", \"timezes\", \"uuides\", \"varchares\", \"xmles\"\n")) .updateReturning(PgtestnullRow._rowParser.exactlyOne()).runUnchecked(c) override fun insertStreaming( diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/pgtestnull/PgtestnullRow.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/pgtestnull/PgtestnullRow.kt index 19ed5b67b9..b8e8e38bce 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/pgtestnull/PgtestnullRow.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/pgtestnull/PgtestnullRow.kt @@ -252,7 +252,7 @@ data class PgtestnullRow( override fun _9(): Double? = float8 companion object { - val _rowParser: RowParser = RowParsers.of(KotlinDbTypes.PgTypes.bool.nullable(), PgTypes.box.nullable(), PgTypes.bpchar.nullable(), PgTypes.bytea.nullable(), PgTypes.bpchar.nullable(), PgTypes.circle.nullable(), PgTypes.date.nullable(), KotlinDbTypes.PgTypes.float4.nullable(), KotlinDbTypes.PgTypes.float8.nullable(), KotlinDbTypes.PgTypes.hstore.nullable(), PgTypes.inet.nullable(), KotlinDbTypes.PgTypes.int2.nullable(), PgTypes.int2vector.nullable(), KotlinDbTypes.PgTypes.int4.nullable(), KotlinDbTypes.PgTypes.int8.nullable(), PgTypes.interval.nullable(), PgTypes.json.nullable(), PgTypes.jsonb.nullable(), PgTypes.line.nullable(), PgTypes.lseg.nullable(), PgTypes.money.nullable(), Mydomain.dbType.nullable(), Myenum.dbType.nullable(), PgTypes.name.nullable(), PgTypes.numeric.nullable(), PgTypes.path.nullable(), PgTypes.point.nullable(), PgTypes.polygon.nullable(), PgTypes.text.nullable(), PgTypes.time.nullable(), PgTypes.timestamp.nullable(), PgTypes.timestamptz.nullable(), PgTypes.timetz.nullable(), PgTypes.uuid.nullable(), PgTypes.text.nullable(), PgTypes.vector.nullable(), PgTypes.xml.nullable(), PgTypes.boxArray.nullable(), PgTypes.bpcharArray.nullable(), PgTypes.bpcharArray.nullable(), PgTypes.circleArray.nullable(), PgTypes.dateArray.nullable(), PgTypes.float4Array.nullable(), PgTypes.float8Array.nullable(), PgTypes.inetArray.nullable(), PgTypes.int2Array.nullable(), PgTypes.int2vectorArray.nullable(), PgTypes.int4Array.nullable(), PgTypes.int8Array.nullable(), PgTypes.intervalArray.nullable(), PgTypes.jsonArray.nullable(), PgTypes.jsonbArray.nullable(), PgTypes.lineArray.nullable(), PgTypes.lsegArray.nullable(), PgTypes.moneyArray.nullable(), Mydomain.dbTypeArray.nullable(), Myenum.dbTypeArray.nullable(), PgTypes.nameArray.nullable(), PgTypes.numericArray.nullable(), PgTypes.pathArray.nullable(), PgTypes.pointArray.nullable(), PgTypes.polygonArray.nullable(), PgTypes.textArray.nullable(), PgTypes.timeArray.nullable(), PgTypes.timestampArray.nullable(), PgTypes.timestamptzArray.nullable(), PgTypes.timetzArray.nullable(), PgTypes.uuidArray.nullable(), PgTypes.textArray.nullable(), PgTypes.xmlArray.nullable(), { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53, t54, t55, t56, t57, t58, t59, t60, t61, t62, t63, t64, t65, t66, t67, t68, t69 -> PgtestnullRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53, t54, t55, t56, t57, t58, t59, t60, t61, t62, t63, t64, t65, t66, t67, t68, t69) }, { row -> arrayOf(row.bool, row.box, row.bpchar, row.bytea, row.char, row.circle, row.date, row.float4, row.float8, row.hstore, row.inet, row.int2, row.int2vector, row.int4, row.int8, row.interval, row.json, row.jsonb, row.line, row.lseg, row.money, row.mydomain, row.myenum, row.name, row.numeric, row.path, row.point, row.polygon, row.text, row.time, row.timestamp, row.timestampz, row.timez, row.uuid, row.varchar, row.vector, row.xml, row.boxes, row.bpchares, row.chares, row.circlees, row.datees, row.float4es, row.float8es, row.inetes, row.int2es, row.int2vectores, row.int4es, row.int8es, row.intervales, row.jsones, row.jsonbes, row.linees, row.lseges, row.moneyes, row.mydomaines, row.myenumes, row.namees, row.numerices, row.pathes, row.pointes, row.polygones, row.textes, row.timees, row.timestampes, row.timestampzes, row.timezes, row.uuides, row.varchares, row.xmles) }) + val _rowParser: RowParser = RowParsers.of(KotlinDbTypes.PgTypes.bool.nullable(), PgTypes.box.nullable(), PgTypes.bpchar.nullable(), PgTypes.bytea.nullable(), PgTypes.bpchar.nullable(), PgTypes.circle.nullable(), PgTypes.date.nullable(), KotlinDbTypes.PgTypes.float4.nullable(), KotlinDbTypes.PgTypes.float8.nullable(), KotlinDbTypes.PgTypes.hstore.nullable(), PgTypes.inet.nullable(), KotlinDbTypes.PgTypes.int2.nullable(), PgTypes.int2vector.nullable(), KotlinDbTypes.PgTypes.int4.nullable(), KotlinDbTypes.PgTypes.int8.nullable(), PgTypes.interval.nullable(), PgTypes.json.nullable(), PgTypes.jsonb.nullable(), PgTypes.line.nullable(), PgTypes.lseg.nullable(), PgTypes.money.nullable(), Mydomain.pgType.nullable(), Myenum.pgType.nullable(), PgTypes.name.nullable(), PgTypes.numeric.nullable(), PgTypes.path.nullable(), PgTypes.point.nullable(), PgTypes.polygon.nullable(), PgTypes.text.nullable(), PgTypes.time.nullable(), PgTypes.timestamp.nullable(), PgTypes.timestamptz.nullable(), PgTypes.timetz.nullable(), PgTypes.uuid.nullable(), PgTypes.text.nullable(), PgTypes.vector.nullable(), PgTypes.xml.nullable(), PgTypes.boxArray.nullable(), PgTypes.bpcharArray.nullable(), PgTypes.bpcharArray.nullable(), PgTypes.circleArray.nullable(), PgTypes.dateArray.nullable(), PgTypes.float4Array.nullable(), PgTypes.float8Array.nullable(), PgTypes.inetArray.nullable(), PgTypes.int2Array.nullable(), PgTypes.int2vectorArray.nullable(), PgTypes.int4Array.nullable(), PgTypes.int8Array.nullable(), PgTypes.intervalArray.nullable(), PgTypes.jsonArray.nullable(), PgTypes.jsonbArray.nullable(), PgTypes.lineArray.nullable(), PgTypes.lsegArray.nullable(), PgTypes.moneyArray.nullable(), Mydomain.pgTypeArray.nullable(), Myenum.pgTypeArray.nullable(), PgTypes.nameArray.nullable(), PgTypes.numericArray.nullable(), PgTypes.pathArray.nullable(), PgTypes.pointArray.nullable(), PgTypes.polygonArray.nullable(), PgTypes.textArray.nullable(), PgTypes.timeArray.nullable(), PgTypes.timestampArray.nullable(), PgTypes.timestamptzArray.nullable(), PgTypes.timetzArray.nullable(), PgTypes.uuidArray.nullable(), PgTypes.textArray.nullable(), PgTypes.xmlArray.nullable(), { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53, t54, t55, t56, t57, t58, t59, t60, t61, t62, t63, t64, t65, t66, t67, t68, t69 -> PgtestnullRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53, t54, t55, t56, t57, t58, t59, t60, t61, t62, t63, t64, t65, t66, t67, t68, t69) }, { row -> arrayOf(row.bool, row.box, row.bpchar, row.bytea, row.char, row.circle, row.date, row.float4, row.float8, row.hstore, row.inet, row.int2, row.int2vector, row.int4, row.int8, row.interval, row.json, row.jsonb, row.line, row.lseg, row.money, row.mydomain, row.myenum, row.name, row.numeric, row.path, row.point, row.polygon, row.text, row.time, row.timestamp, row.timestampz, row.timez, row.uuid, row.varchar, row.vector, row.xml, row.boxes, row.bpchares, row.chares, row.circlees, row.datees, row.float4es, row.float8es, row.inetes, row.int2es, row.int2vectores, row.int4es, row.int8es, row.intervales, row.jsones, row.jsonbes, row.linees, row.lseges, row.moneyes, row.mydomaines, row.myenumes, row.namees, row.numerices, row.pathes, row.pointes, row.polygones, row.textes, row.timees, row.timestampes, row.timestampzes, row.timezes, row.uuides, row.varchares, row.xmles) }) val pgText: PgText = PgText.from(_rowParser.underlying) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/precision_types/PrecisionTypesFields.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/precision_types/PrecisionTypesFields.kt index a6a98fd87c..dffa1a970c 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/precision_types/PrecisionTypesFields.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/precision_types/PrecisionTypesFields.kt @@ -82,9 +82,9 @@ data class PrecisionTypesFields(val _path: List) : TupleExpr25 = _path - fun bpchar10(): Field = Field(_path, "bpchar10", PrecisionTypesRow::bpchar10, null, "bpchar", { row, value -> row.copy(bpchar10 = value) }, PaddedString10.dbType) + fun bpchar10(): Field = Field(_path, "bpchar10", PrecisionTypesRow::bpchar10, null, "bpchar", { row, value -> row.copy(bpchar10 = value) }, PaddedString10.pgType) - fun bpchar3(): Field = Field(_path, "bpchar3", PrecisionTypesRow::bpchar3, null, "bpchar", { row, value -> row.copy(bpchar3 = value) }, PaddedString3.dbType) + fun bpchar3(): Field = Field(_path, "bpchar3", PrecisionTypesRow::bpchar3, null, "bpchar", { row, value -> row.copy(bpchar3 = value) }, PaddedString3.pgType) override fun columns(): List> = listOf(this.id().underlying, this.string10().underlying, this.string20().underlying, this.string50().underlying, this.string100().underlying, this.string255().underlying, this.bpchar3().underlying, this.bpchar10().underlying, this.decimal52().underlying, this.decimal102().underlying, this.decimal184().underlying, this.numeric82().underlying, this.numeric124().underlying, this.timestamp0().underlying, this.timestamp3().underlying, this.timestamp6().underlying, this.timestamptz0().underlying, this.timestamptz3().underlying, this.timestamptz6().underlying, this.time0().underlying, this.time3().underlying, this.time6().underlying, this.timetz0().underlying, this.timetz3().underlying, this.timetz6().underlying) @@ -94,7 +94,7 @@ data class PrecisionTypesFields(val _path: List) : TupleExpr25 = Field(_path, "decimal5_2", PrecisionTypesRow::decimal52, null, "numeric", { row, value -> row.copy(decimal52 = value) }, PgTypes.numeric) - fun id(): IdField = IdField(_path, "id", PrecisionTypesRow::id, null, "int4", { row, value -> row.copy(id = value) }, PrecisionTypesId.dbType) + fun id(): IdField = IdField(_path, "id", PrecisionTypesRow::id, null, "int4", { row, value -> row.copy(id = value) }, PrecisionTypesId.pgType) fun numeric124(): Field = Field(_path, "numeric12_4", PrecisionTypesRow::numeric124, null, "numeric", { row, value -> row.copy(numeric124 = value) }, PgTypes.numeric) @@ -102,15 +102,15 @@ data class PrecisionTypesFields(val _path: List) : TupleExpr25 = PrecisionTypesRow._rowParser.underlying - fun string10(): Field = Field(_path, "string10", PrecisionTypesRow::string10, null, null, { row, value -> row.copy(string10 = value) }, String10.dbType) + fun string10(): Field = Field(_path, "string10", PrecisionTypesRow::string10, null, null, { row, value -> row.copy(string10 = value) }, String10.pgType) - fun string100(): Field = Field(_path, "string100", PrecisionTypesRow::string100, null, null, { row, value -> row.copy(string100 = value) }, String100.dbType) + fun string100(): Field = Field(_path, "string100", PrecisionTypesRow::string100, null, null, { row, value -> row.copy(string100 = value) }, String100.pgType) - fun string20(): Field = Field(_path, "string20", PrecisionTypesRow::string20, null, null, { row, value -> row.copy(string20 = value) }, String20.dbType) + fun string20(): Field = Field(_path, "string20", PrecisionTypesRow::string20, null, null, { row, value -> row.copy(string20 = value) }, String20.pgType) - fun string255(): Field = Field(_path, "string255", PrecisionTypesRow::string255, null, null, { row, value -> row.copy(string255 = value) }, String255.dbType) + fun string255(): Field = Field(_path, "string255", PrecisionTypesRow::string255, null, null, { row, value -> row.copy(string255 = value) }, String255.pgType) - fun string50(): Field = Field(_path, "string50", PrecisionTypesRow::string50, null, null, { row, value -> row.copy(string50 = value) }, String50.dbType) + fun string50(): Field = Field(_path, "string50", PrecisionTypesRow::string50, null, null, { row, value -> row.copy(string50 = value) }, String50.pgType) fun time0(): Field = Field(_path, "time0", PrecisionTypesRow::time0, null, "time", { row, value -> row.copy(time0 = value) }, PgTypes.time) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/precision_types/PrecisionTypesId.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/precision_types/PrecisionTypesId.kt index 603da19469..6915967631 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/precision_types/PrecisionTypesId.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/precision_types/PrecisionTypesId.kt @@ -22,10 +22,10 @@ data class PrecisionTypesId(@field:JsonValue val value: Int) { val bijection: Bijection = Bijection.of(PrecisionTypesId::value, ::PrecisionTypesId) - val dbType: PgType = + val pgType: PgType = KotlinDbTypes.PgTypes.int4.bimap(::PrecisionTypesId, PrecisionTypesId::value) - val dbTypeArray: PgType> = + val pgTypeArray: PgType> = PgTypes.int4Array.bimap({ xs -> arrayMap.map(xs, ::PrecisionTypesId, PrecisionTypesId::class.java) }, { xs -> arrayMap.map(xs, PrecisionTypesId::value, Int::class.javaObjectType) }) } } \ No newline at end of file diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/precision_types/PrecisionTypesRepoImpl.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/precision_types/PrecisionTypesRepoImpl.kt index 8e80305960..7fe4596654 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/precision_types/PrecisionTypesRepoImpl.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/precision_types/PrecisionTypesRepoImpl.kt @@ -32,19 +32,19 @@ class PrecisionTypesRepoImpl() : PrecisionTypesRepo { override fun deleteById( id: PrecisionTypesId, c: Connection - ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"public\".\"precision_types\" where \"id\" = "), Fragment.encode(PrecisionTypesId.dbType, id), Fragment.lit("")).update().runUnchecked(c) > 0 + ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"public\".\"precision_types\" where \"id\" = "), Fragment.encode(PrecisionTypesId.pgType, id), Fragment.lit("")).update().runUnchecked(c) > 0 override fun deleteByIds( ids: Array, c: Connection - ): Int = Fragment.interpolate(Fragment.lit("delete\nfrom \"public\".\"precision_types\"\nwhere \"id\" = ANY("), Fragment.encode(PrecisionTypesId.dbTypeArray, ids), Fragment.lit(")")) + ): Int = Fragment.interpolate(Fragment.lit("delete\nfrom \"public\".\"precision_types\"\nwhere \"id\" = ANY("), Fragment.encode(PrecisionTypesId.pgTypeArray, ids), Fragment.lit(")")) .update() .runUnchecked(c) override fun insert( unsaved: PrecisionTypesRow, c: Connection - ): PrecisionTypesRow = Fragment.interpolate(Fragment.lit("insert into \"public\".\"precision_types\"(\"id\", \"string10\", \"string20\", \"string50\", \"string100\", \"string255\", \"bpchar3\", \"bpchar10\", \"decimal5_2\", \"decimal10_2\", \"decimal18_4\", \"numeric8_2\", \"numeric12_4\", \"timestamp0\", \"timestamp3\", \"timestamp6\", \"timestamptz0\", \"timestamptz3\", \"timestamptz6\", \"time0\", \"time3\", \"time6\", \"timetz0\", \"timetz3\", \"timetz6\")\nvalues ("), Fragment.encode(PrecisionTypesId.dbType, unsaved.id), Fragment.lit("::int4, "), Fragment.encode(String10.dbType, unsaved.string10), Fragment.lit(", "), Fragment.encode(String20.dbType, unsaved.string20), Fragment.lit(", "), Fragment.encode(String50.dbType, unsaved.string50), Fragment.lit(", "), Fragment.encode(String100.dbType, unsaved.string100), Fragment.lit(", "), Fragment.encode(String255.dbType, unsaved.string255), Fragment.lit(", "), Fragment.encode(PaddedString3.dbType, unsaved.bpchar3), Fragment.lit("::bpchar, "), Fragment.encode(PaddedString10.dbType, unsaved.bpchar10), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.numeric, unsaved.decimal52), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.decimal102), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.decimal184), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.numeric82), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.numeric124), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.timestamp, unsaved.timestamp0), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamp, unsaved.timestamp3), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamp, unsaved.timestamp6), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamptz, unsaved.timestamptz0), Fragment.lit("::timestamptz, "), Fragment.encode(PgTypes.timestamptz, unsaved.timestamptz3), Fragment.lit("::timestamptz, "), Fragment.encode(PgTypes.timestamptz, unsaved.timestamptz6), Fragment.lit("::timestamptz, "), Fragment.encode(PgTypes.time, unsaved.time0), Fragment.lit("::time, "), Fragment.encode(PgTypes.time, unsaved.time3), Fragment.lit("::time, "), Fragment.encode(PgTypes.time, unsaved.time6), Fragment.lit("::time, "), Fragment.encode(PgTypes.timetz, unsaved.timetz0), Fragment.lit("::timetz, "), Fragment.encode(PgTypes.timetz, unsaved.timetz3), Fragment.lit("::timetz, "), Fragment.encode(PgTypes.timetz, unsaved.timetz6), Fragment.lit("::timetz)\nRETURNING \"id\", \"string10\", \"string20\", \"string50\", \"string100\", \"string255\", \"bpchar3\", \"bpchar10\", \"decimal5_2\", \"decimal10_2\", \"decimal18_4\", \"numeric8_2\", \"numeric12_4\", \"timestamp0\", \"timestamp3\", \"timestamp6\", \"timestamptz0\", \"timestamptz3\", \"timestamptz6\", \"time0\", \"time3\", \"time6\", \"timetz0\", \"timetz3\", \"timetz6\"\n")) + ): PrecisionTypesRow = Fragment.interpolate(Fragment.lit("insert into \"public\".\"precision_types\"(\"id\", \"string10\", \"string20\", \"string50\", \"string100\", \"string255\", \"bpchar3\", \"bpchar10\", \"decimal5_2\", \"decimal10_2\", \"decimal18_4\", \"numeric8_2\", \"numeric12_4\", \"timestamp0\", \"timestamp3\", \"timestamp6\", \"timestamptz0\", \"timestamptz3\", \"timestamptz6\", \"time0\", \"time3\", \"time6\", \"timetz0\", \"timetz3\", \"timetz6\")\nvalues ("), Fragment.encode(PrecisionTypesId.pgType, unsaved.id), Fragment.lit("::int4, "), Fragment.encode(String10.pgType, unsaved.string10), Fragment.lit(", "), Fragment.encode(String20.pgType, unsaved.string20), Fragment.lit(", "), Fragment.encode(String50.pgType, unsaved.string50), Fragment.lit(", "), Fragment.encode(String100.pgType, unsaved.string100), Fragment.lit(", "), Fragment.encode(String255.pgType, unsaved.string255), Fragment.lit(", "), Fragment.encode(PaddedString3.pgType, unsaved.bpchar3), Fragment.lit("::bpchar, "), Fragment.encode(PaddedString10.pgType, unsaved.bpchar10), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.numeric, unsaved.decimal52), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.decimal102), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.decimal184), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.numeric82), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.numeric124), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.timestamp, unsaved.timestamp0), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamp, unsaved.timestamp3), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamp, unsaved.timestamp6), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamptz, unsaved.timestamptz0), Fragment.lit("::timestamptz, "), Fragment.encode(PgTypes.timestamptz, unsaved.timestamptz3), Fragment.lit("::timestamptz, "), Fragment.encode(PgTypes.timestamptz, unsaved.timestamptz6), Fragment.lit("::timestamptz, "), Fragment.encode(PgTypes.time, unsaved.time0), Fragment.lit("::time, "), Fragment.encode(PgTypes.time, unsaved.time3), Fragment.lit("::time, "), Fragment.encode(PgTypes.time, unsaved.time6), Fragment.lit("::time, "), Fragment.encode(PgTypes.timetz, unsaved.timetz0), Fragment.lit("::timetz, "), Fragment.encode(PgTypes.timetz, unsaved.timetz3), Fragment.lit("::timetz, "), Fragment.encode(PgTypes.timetz, unsaved.timetz6), Fragment.lit("::timetz)\nRETURNING \"id\", \"string10\", \"string20\", \"string50\", \"string100\", \"string255\", \"bpchar3\", \"bpchar10\", \"decimal5_2\", \"decimal10_2\", \"decimal18_4\", \"numeric8_2\", \"numeric12_4\", \"timestamp0\", \"timestamp3\", \"timestamp6\", \"timestamptz0\", \"timestamptz3\", \"timestamptz6\", \"time0\", \"time3\", \"time6\", \"timetz0\", \"timetz3\", \"timetz6\"\n")) .updateReturning(PrecisionTypesRow._rowParser.exactlyOne()).runUnchecked(c) override fun insert( @@ -54,19 +54,19 @@ class PrecisionTypesRepoImpl() : PrecisionTypesRepo { val columns: ArrayList = ArrayList() val values: ArrayList = ArrayList() columns.add(Fragment.lit("\"string10\"")) - values.add(Fragment.interpolate(Fragment.encode(String10.dbType, unsaved.string10), Fragment.lit(""))) + values.add(Fragment.interpolate(Fragment.encode(String10.pgType, unsaved.string10), Fragment.lit(""))) columns.add(Fragment.lit("\"string20\"")) - values.add(Fragment.interpolate(Fragment.encode(String20.dbType, unsaved.string20), Fragment.lit(""))) + values.add(Fragment.interpolate(Fragment.encode(String20.pgType, unsaved.string20), Fragment.lit(""))) columns.add(Fragment.lit("\"string50\"")) - values.add(Fragment.interpolate(Fragment.encode(String50.dbType, unsaved.string50), Fragment.lit(""))) + values.add(Fragment.interpolate(Fragment.encode(String50.pgType, unsaved.string50), Fragment.lit(""))) columns.add(Fragment.lit("\"string100\"")) - values.add(Fragment.interpolate(Fragment.encode(String100.dbType, unsaved.string100), Fragment.lit(""))) + values.add(Fragment.interpolate(Fragment.encode(String100.pgType, unsaved.string100), Fragment.lit(""))) columns.add(Fragment.lit("\"string255\"")) - values.add(Fragment.interpolate(Fragment.encode(String255.dbType, unsaved.string255), Fragment.lit(""))) + values.add(Fragment.interpolate(Fragment.encode(String255.pgType, unsaved.string255), Fragment.lit(""))) columns.add(Fragment.lit("\"bpchar3\"")) - values.add(Fragment.interpolate(Fragment.encode(PaddedString3.dbType, unsaved.bpchar3), Fragment.lit("::bpchar"))) + values.add(Fragment.interpolate(Fragment.encode(PaddedString3.pgType, unsaved.bpchar3), Fragment.lit("::bpchar"))) columns.add(Fragment.lit("\"bpchar10\"")) - values.add(Fragment.interpolate(Fragment.encode(PaddedString10.dbType, unsaved.bpchar10), Fragment.lit("::bpchar"))) + values.add(Fragment.interpolate(Fragment.encode(PaddedString10.pgType, unsaved.bpchar10), Fragment.lit("::bpchar"))) columns.add(Fragment.lit("\"decimal5_2\"")) values.add(Fragment.interpolate(Fragment.encode(PgTypes.numeric, unsaved.decimal52), Fragment.lit("::numeric"))) columns.add(Fragment.lit("\"decimal10_2\"")) @@ -104,7 +104,7 @@ class PrecisionTypesRepoImpl() : PrecisionTypesRepo { unsaved.id.visit( { }, { value -> columns.add(Fragment.lit("\"id\"")) - values.add(Fragment.interpolate(Fragment.encode(PrecisionTypesId.dbType, value), Fragment.lit("::int4"))) } + values.add(Fragment.interpolate(Fragment.encode(PrecisionTypesId.pgType, value), Fragment.lit("::int4"))) } ); val q: Fragment = Fragment.interpolate(Fragment.lit("insert into \"public\".\"precision_types\"("), Fragment.comma(columns.toMutableList()), Fragment.lit(")\nvalues ("), Fragment.comma(values.toMutableList()), Fragment.lit(")\nRETURNING \"id\", \"string10\", \"string20\", \"string50\", \"string100\", \"string255\", \"bpchar3\", \"bpchar10\", \"decimal5_2\", \"decimal10_2\", \"decimal18_4\", \"numeric8_2\", \"numeric12_4\", \"timestamp0\", \"timestamp3\", \"timestamp6\", \"timestamptz0\", \"timestamptz3\", \"timestamptz6\", \"time0\", \"time3\", \"time6\", \"timetz0\", \"timetz3\", \"timetz6\"\n")) return q.updateReturning(PrecisionTypesRow._rowParser.exactlyOne()).runUnchecked(c) @@ -130,12 +130,12 @@ class PrecisionTypesRepoImpl() : PrecisionTypesRepo { override fun selectById( id: PrecisionTypesId, c: Connection - ): PrecisionTypesRow? = Fragment.interpolate(Fragment.lit("select \"id\", \"string10\", \"string20\", \"string50\", \"string100\", \"string255\", \"bpchar3\", \"bpchar10\", \"decimal5_2\", \"decimal10_2\", \"decimal18_4\", \"numeric8_2\", \"numeric12_4\", \"timestamp0\", \"timestamp3\", \"timestamp6\", \"timestamptz0\", \"timestamptz3\", \"timestamptz6\", \"time0\", \"time3\", \"time6\", \"timetz0\", \"timetz3\", \"timetz6\"\nfrom \"public\".\"precision_types\"\nwhere \"id\" = "), Fragment.encode(PrecisionTypesId.dbType, id), Fragment.lit("")).query(PrecisionTypesRow._rowParser.first()).runUnchecked(c) + ): PrecisionTypesRow? = Fragment.interpolate(Fragment.lit("select \"id\", \"string10\", \"string20\", \"string50\", \"string100\", \"string255\", \"bpchar3\", \"bpchar10\", \"decimal5_2\", \"decimal10_2\", \"decimal18_4\", \"numeric8_2\", \"numeric12_4\", \"timestamp0\", \"timestamp3\", \"timestamp6\", \"timestamptz0\", \"timestamptz3\", \"timestamptz6\", \"time0\", \"time3\", \"time6\", \"timetz0\", \"timetz3\", \"timetz6\"\nfrom \"public\".\"precision_types\"\nwhere \"id\" = "), Fragment.encode(PrecisionTypesId.pgType, id), Fragment.lit("")).query(PrecisionTypesRow._rowParser.first()).runUnchecked(c) override fun selectByIds( ids: Array, c: Connection - ): List = Fragment.interpolate(Fragment.lit("select \"id\", \"string10\", \"string20\", \"string50\", \"string100\", \"string255\", \"bpchar3\", \"bpchar10\", \"decimal5_2\", \"decimal10_2\", \"decimal18_4\", \"numeric8_2\", \"numeric12_4\", \"timestamp0\", \"timestamp3\", \"timestamp6\", \"timestamptz0\", \"timestamptz3\", \"timestamptz6\", \"time0\", \"time3\", \"time6\", \"timetz0\", \"timetz3\", \"timetz6\"\nfrom \"public\".\"precision_types\"\nwhere \"id\" = ANY("), Fragment.encode(PrecisionTypesId.dbTypeArray, ids), Fragment.lit(")")).query(PrecisionTypesRow._rowParser.all()).runUnchecked(c) + ): List = Fragment.interpolate(Fragment.lit("select \"id\", \"string10\", \"string20\", \"string50\", \"string100\", \"string255\", \"bpchar3\", \"bpchar10\", \"decimal5_2\", \"decimal10_2\", \"decimal18_4\", \"numeric8_2\", \"numeric12_4\", \"timestamp0\", \"timestamp3\", \"timestamp6\", \"timestamptz0\", \"timestamptz3\", \"timestamptz6\", \"time0\", \"time3\", \"time6\", \"timetz0\", \"timetz3\", \"timetz6\"\nfrom \"public\".\"precision_types\"\nwhere \"id\" = ANY("), Fragment.encode(PrecisionTypesId.pgTypeArray, ids), Fragment.lit(")")).query(PrecisionTypesRow._rowParser.all()).runUnchecked(c) override fun selectByIdsTracked( ids: Array, @@ -153,13 +153,13 @@ class PrecisionTypesRepoImpl() : PrecisionTypesRepo { c: Connection ): Boolean { val id: PrecisionTypesId = row.id - return Fragment.interpolate(Fragment.lit("update \"public\".\"precision_types\"\nset \"string10\" = "), Fragment.encode(String10.dbType, row.string10), Fragment.lit(",\n\"string20\" = "), Fragment.encode(String20.dbType, row.string20), Fragment.lit(",\n\"string50\" = "), Fragment.encode(String50.dbType, row.string50), Fragment.lit(",\n\"string100\" = "), Fragment.encode(String100.dbType, row.string100), Fragment.lit(",\n\"string255\" = "), Fragment.encode(String255.dbType, row.string255), Fragment.lit(",\n\"bpchar3\" = "), Fragment.encode(PaddedString3.dbType, row.bpchar3), Fragment.lit("::bpchar,\n\"bpchar10\" = "), Fragment.encode(PaddedString10.dbType, row.bpchar10), Fragment.lit("::bpchar,\n\"decimal5_2\" = "), Fragment.encode(PgTypes.numeric, row.decimal52), Fragment.lit("::numeric,\n\"decimal10_2\" = "), Fragment.encode(PgTypes.numeric, row.decimal102), Fragment.lit("::numeric,\n\"decimal18_4\" = "), Fragment.encode(PgTypes.numeric, row.decimal184), Fragment.lit("::numeric,\n\"numeric8_2\" = "), Fragment.encode(PgTypes.numeric, row.numeric82), Fragment.lit("::numeric,\n\"numeric12_4\" = "), Fragment.encode(PgTypes.numeric, row.numeric124), Fragment.lit("::numeric,\n\"timestamp0\" = "), Fragment.encode(PgTypes.timestamp, row.timestamp0), Fragment.lit("::timestamp,\n\"timestamp3\" = "), Fragment.encode(PgTypes.timestamp, row.timestamp3), Fragment.lit("::timestamp,\n\"timestamp6\" = "), Fragment.encode(PgTypes.timestamp, row.timestamp6), Fragment.lit("::timestamp,\n\"timestamptz0\" = "), Fragment.encode(PgTypes.timestamptz, row.timestamptz0), Fragment.lit("::timestamptz,\n\"timestamptz3\" = "), Fragment.encode(PgTypes.timestamptz, row.timestamptz3), Fragment.lit("::timestamptz,\n\"timestamptz6\" = "), Fragment.encode(PgTypes.timestamptz, row.timestamptz6), Fragment.lit("::timestamptz,\n\"time0\" = "), Fragment.encode(PgTypes.time, row.time0), Fragment.lit("::time,\n\"time3\" = "), Fragment.encode(PgTypes.time, row.time3), Fragment.lit("::time,\n\"time6\" = "), Fragment.encode(PgTypes.time, row.time6), Fragment.lit("::time,\n\"timetz0\" = "), Fragment.encode(PgTypes.timetz, row.timetz0), Fragment.lit("::timetz,\n\"timetz3\" = "), Fragment.encode(PgTypes.timetz, row.timetz3), Fragment.lit("::timetz,\n\"timetz6\" = "), Fragment.encode(PgTypes.timetz, row.timetz6), Fragment.lit("::timetz\nwhere \"id\" = "), Fragment.encode(PrecisionTypesId.dbType, id), Fragment.lit("")).update().runUnchecked(c) > 0 + return Fragment.interpolate(Fragment.lit("update \"public\".\"precision_types\"\nset \"string10\" = "), Fragment.encode(String10.pgType, row.string10), Fragment.lit(",\n\"string20\" = "), Fragment.encode(String20.pgType, row.string20), Fragment.lit(",\n\"string50\" = "), Fragment.encode(String50.pgType, row.string50), Fragment.lit(",\n\"string100\" = "), Fragment.encode(String100.pgType, row.string100), Fragment.lit(",\n\"string255\" = "), Fragment.encode(String255.pgType, row.string255), Fragment.lit(",\n\"bpchar3\" = "), Fragment.encode(PaddedString3.pgType, row.bpchar3), Fragment.lit("::bpchar,\n\"bpchar10\" = "), Fragment.encode(PaddedString10.pgType, row.bpchar10), Fragment.lit("::bpchar,\n\"decimal5_2\" = "), Fragment.encode(PgTypes.numeric, row.decimal52), Fragment.lit("::numeric,\n\"decimal10_2\" = "), Fragment.encode(PgTypes.numeric, row.decimal102), Fragment.lit("::numeric,\n\"decimal18_4\" = "), Fragment.encode(PgTypes.numeric, row.decimal184), Fragment.lit("::numeric,\n\"numeric8_2\" = "), Fragment.encode(PgTypes.numeric, row.numeric82), Fragment.lit("::numeric,\n\"numeric12_4\" = "), Fragment.encode(PgTypes.numeric, row.numeric124), Fragment.lit("::numeric,\n\"timestamp0\" = "), Fragment.encode(PgTypes.timestamp, row.timestamp0), Fragment.lit("::timestamp,\n\"timestamp3\" = "), Fragment.encode(PgTypes.timestamp, row.timestamp3), Fragment.lit("::timestamp,\n\"timestamp6\" = "), Fragment.encode(PgTypes.timestamp, row.timestamp6), Fragment.lit("::timestamp,\n\"timestamptz0\" = "), Fragment.encode(PgTypes.timestamptz, row.timestamptz0), Fragment.lit("::timestamptz,\n\"timestamptz3\" = "), Fragment.encode(PgTypes.timestamptz, row.timestamptz3), Fragment.lit("::timestamptz,\n\"timestamptz6\" = "), Fragment.encode(PgTypes.timestamptz, row.timestamptz6), Fragment.lit("::timestamptz,\n\"time0\" = "), Fragment.encode(PgTypes.time, row.time0), Fragment.lit("::time,\n\"time3\" = "), Fragment.encode(PgTypes.time, row.time3), Fragment.lit("::time,\n\"time6\" = "), Fragment.encode(PgTypes.time, row.time6), Fragment.lit("::time,\n\"timetz0\" = "), Fragment.encode(PgTypes.timetz, row.timetz0), Fragment.lit("::timetz,\n\"timetz3\" = "), Fragment.encode(PgTypes.timetz, row.timetz3), Fragment.lit("::timetz,\n\"timetz6\" = "), Fragment.encode(PgTypes.timetz, row.timetz6), Fragment.lit("::timetz\nwhere \"id\" = "), Fragment.encode(PrecisionTypesId.pgType, id), Fragment.lit("")).update().runUnchecked(c) > 0 } override fun upsert( unsaved: PrecisionTypesRow, c: Connection - ): PrecisionTypesRow = Fragment.interpolate(Fragment.lit("insert into \"public\".\"precision_types\"(\"id\", \"string10\", \"string20\", \"string50\", \"string100\", \"string255\", \"bpchar3\", \"bpchar10\", \"decimal5_2\", \"decimal10_2\", \"decimal18_4\", \"numeric8_2\", \"numeric12_4\", \"timestamp0\", \"timestamp3\", \"timestamp6\", \"timestamptz0\", \"timestamptz3\", \"timestamptz6\", \"time0\", \"time3\", \"time6\", \"timetz0\", \"timetz3\", \"timetz6\")\nvalues ("), Fragment.encode(PrecisionTypesId.dbType, unsaved.id), Fragment.lit("::int4, "), Fragment.encode(String10.dbType, unsaved.string10), Fragment.lit(", "), Fragment.encode(String20.dbType, unsaved.string20), Fragment.lit(", "), Fragment.encode(String50.dbType, unsaved.string50), Fragment.lit(", "), Fragment.encode(String100.dbType, unsaved.string100), Fragment.lit(", "), Fragment.encode(String255.dbType, unsaved.string255), Fragment.lit(", "), Fragment.encode(PaddedString3.dbType, unsaved.bpchar3), Fragment.lit("::bpchar, "), Fragment.encode(PaddedString10.dbType, unsaved.bpchar10), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.numeric, unsaved.decimal52), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.decimal102), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.decimal184), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.numeric82), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.numeric124), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.timestamp, unsaved.timestamp0), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamp, unsaved.timestamp3), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamp, unsaved.timestamp6), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamptz, unsaved.timestamptz0), Fragment.lit("::timestamptz, "), Fragment.encode(PgTypes.timestamptz, unsaved.timestamptz3), Fragment.lit("::timestamptz, "), Fragment.encode(PgTypes.timestamptz, unsaved.timestamptz6), Fragment.lit("::timestamptz, "), Fragment.encode(PgTypes.time, unsaved.time0), Fragment.lit("::time, "), Fragment.encode(PgTypes.time, unsaved.time3), Fragment.lit("::time, "), Fragment.encode(PgTypes.time, unsaved.time6), Fragment.lit("::time, "), Fragment.encode(PgTypes.timetz, unsaved.timetz0), Fragment.lit("::timetz, "), Fragment.encode(PgTypes.timetz, unsaved.timetz3), Fragment.lit("::timetz, "), Fragment.encode(PgTypes.timetz, unsaved.timetz6), Fragment.lit("::timetz)\non conflict (\"id\")\ndo update set\n \"string10\" = EXCLUDED.\"string10\",\n\"string20\" = EXCLUDED.\"string20\",\n\"string50\" = EXCLUDED.\"string50\",\n\"string100\" = EXCLUDED.\"string100\",\n\"string255\" = EXCLUDED.\"string255\",\n\"bpchar3\" = EXCLUDED.\"bpchar3\",\n\"bpchar10\" = EXCLUDED.\"bpchar10\",\n\"decimal5_2\" = EXCLUDED.\"decimal5_2\",\n\"decimal10_2\" = EXCLUDED.\"decimal10_2\",\n\"decimal18_4\" = EXCLUDED.\"decimal18_4\",\n\"numeric8_2\" = EXCLUDED.\"numeric8_2\",\n\"numeric12_4\" = EXCLUDED.\"numeric12_4\",\n\"timestamp0\" = EXCLUDED.\"timestamp0\",\n\"timestamp3\" = EXCLUDED.\"timestamp3\",\n\"timestamp6\" = EXCLUDED.\"timestamp6\",\n\"timestamptz0\" = EXCLUDED.\"timestamptz0\",\n\"timestamptz3\" = EXCLUDED.\"timestamptz3\",\n\"timestamptz6\" = EXCLUDED.\"timestamptz6\",\n\"time0\" = EXCLUDED.\"time0\",\n\"time3\" = EXCLUDED.\"time3\",\n\"time6\" = EXCLUDED.\"time6\",\n\"timetz0\" = EXCLUDED.\"timetz0\",\n\"timetz3\" = EXCLUDED.\"timetz3\",\n\"timetz6\" = EXCLUDED.\"timetz6\"\nreturning \"id\", \"string10\", \"string20\", \"string50\", \"string100\", \"string255\", \"bpchar3\", \"bpchar10\", \"decimal5_2\", \"decimal10_2\", \"decimal18_4\", \"numeric8_2\", \"numeric12_4\", \"timestamp0\", \"timestamp3\", \"timestamp6\", \"timestamptz0\", \"timestamptz3\", \"timestamptz6\", \"time0\", \"time3\", \"time6\", \"timetz0\", \"timetz3\", \"timetz6\"")) + ): PrecisionTypesRow = Fragment.interpolate(Fragment.lit("insert into \"public\".\"precision_types\"(\"id\", \"string10\", \"string20\", \"string50\", \"string100\", \"string255\", \"bpchar3\", \"bpchar10\", \"decimal5_2\", \"decimal10_2\", \"decimal18_4\", \"numeric8_2\", \"numeric12_4\", \"timestamp0\", \"timestamp3\", \"timestamp6\", \"timestamptz0\", \"timestamptz3\", \"timestamptz6\", \"time0\", \"time3\", \"time6\", \"timetz0\", \"timetz3\", \"timetz6\")\nvalues ("), Fragment.encode(PrecisionTypesId.pgType, unsaved.id), Fragment.lit("::int4, "), Fragment.encode(String10.pgType, unsaved.string10), Fragment.lit(", "), Fragment.encode(String20.pgType, unsaved.string20), Fragment.lit(", "), Fragment.encode(String50.pgType, unsaved.string50), Fragment.lit(", "), Fragment.encode(String100.pgType, unsaved.string100), Fragment.lit(", "), Fragment.encode(String255.pgType, unsaved.string255), Fragment.lit(", "), Fragment.encode(PaddedString3.pgType, unsaved.bpchar3), Fragment.lit("::bpchar, "), Fragment.encode(PaddedString10.pgType, unsaved.bpchar10), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.numeric, unsaved.decimal52), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.decimal102), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.decimal184), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.numeric82), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.numeric124), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.timestamp, unsaved.timestamp0), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamp, unsaved.timestamp3), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamp, unsaved.timestamp6), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamptz, unsaved.timestamptz0), Fragment.lit("::timestamptz, "), Fragment.encode(PgTypes.timestamptz, unsaved.timestamptz3), Fragment.lit("::timestamptz, "), Fragment.encode(PgTypes.timestamptz, unsaved.timestamptz6), Fragment.lit("::timestamptz, "), Fragment.encode(PgTypes.time, unsaved.time0), Fragment.lit("::time, "), Fragment.encode(PgTypes.time, unsaved.time3), Fragment.lit("::time, "), Fragment.encode(PgTypes.time, unsaved.time6), Fragment.lit("::time, "), Fragment.encode(PgTypes.timetz, unsaved.timetz0), Fragment.lit("::timetz, "), Fragment.encode(PgTypes.timetz, unsaved.timetz3), Fragment.lit("::timetz, "), Fragment.encode(PgTypes.timetz, unsaved.timetz6), Fragment.lit("::timetz)\non conflict (\"id\")\ndo update set\n \"string10\" = EXCLUDED.\"string10\",\n\"string20\" = EXCLUDED.\"string20\",\n\"string50\" = EXCLUDED.\"string50\",\n\"string100\" = EXCLUDED.\"string100\",\n\"string255\" = EXCLUDED.\"string255\",\n\"bpchar3\" = EXCLUDED.\"bpchar3\",\n\"bpchar10\" = EXCLUDED.\"bpchar10\",\n\"decimal5_2\" = EXCLUDED.\"decimal5_2\",\n\"decimal10_2\" = EXCLUDED.\"decimal10_2\",\n\"decimal18_4\" = EXCLUDED.\"decimal18_4\",\n\"numeric8_2\" = EXCLUDED.\"numeric8_2\",\n\"numeric12_4\" = EXCLUDED.\"numeric12_4\",\n\"timestamp0\" = EXCLUDED.\"timestamp0\",\n\"timestamp3\" = EXCLUDED.\"timestamp3\",\n\"timestamp6\" = EXCLUDED.\"timestamp6\",\n\"timestamptz0\" = EXCLUDED.\"timestamptz0\",\n\"timestamptz3\" = EXCLUDED.\"timestamptz3\",\n\"timestamptz6\" = EXCLUDED.\"timestamptz6\",\n\"time0\" = EXCLUDED.\"time0\",\n\"time3\" = EXCLUDED.\"time3\",\n\"time6\" = EXCLUDED.\"time6\",\n\"timetz0\" = EXCLUDED.\"timetz0\",\n\"timetz3\" = EXCLUDED.\"timetz3\",\n\"timetz6\" = EXCLUDED.\"timetz6\"\nreturning \"id\", \"string10\", \"string20\", \"string50\", \"string100\", \"string255\", \"bpchar3\", \"bpchar10\", \"decimal5_2\", \"decimal10_2\", \"decimal18_4\", \"numeric8_2\", \"numeric12_4\", \"timestamp0\", \"timestamp3\", \"timestamp6\", \"timestamptz0\", \"timestamptz3\", \"timestamptz6\", \"time0\", \"time3\", \"time6\", \"timetz0\", \"timetz3\", \"timetz6\"")) .updateReturning(PrecisionTypesRow._rowParser.exactlyOne()) .runUnchecked(c) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/precision_types/PrecisionTypesRow.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/precision_types/PrecisionTypesRow.kt index df555f936e..c917a843c2 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/precision_types/PrecisionTypesRow.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/precision_types/PrecisionTypesRow.kt @@ -109,7 +109,7 @@ data class PrecisionTypesRow( fun toUnsavedRow(id: Defaulted): PrecisionTypesRowUnsaved = PrecisionTypesRowUnsaved(string10, string20, string50, string100, string255, bpchar3, bpchar10, decimal52, decimal102, decimal184, numeric82, numeric124, timestamp0, timestamp3, timestamp6, timestamptz0, timestamptz3, timestamptz6, time0, time3, time6, timetz0, timetz3, timetz6, id) companion object { - val _rowParser: RowParser = RowParsers.of(PrecisionTypesId.dbType, String10.dbType, String20.dbType, String50.dbType, String100.dbType, String255.dbType, PaddedString3.dbType, PaddedString10.dbType, PgTypes.numeric, PgTypes.numeric, PgTypes.numeric, PgTypes.numeric, PgTypes.numeric, PgTypes.timestamp, PgTypes.timestamp, PgTypes.timestamp, PgTypes.timestamptz, PgTypes.timestamptz, PgTypes.timestamptz, PgTypes.time, PgTypes.time, PgTypes.time, PgTypes.timetz, PgTypes.timetz, PgTypes.timetz, { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24 -> PrecisionTypesRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24) }, { row -> arrayOf(row.id, row.string10, row.string20, row.string50, row.string100, row.string255, row.bpchar3, row.bpchar10, row.decimal52, row.decimal102, row.decimal184, row.numeric82, row.numeric124, row.timestamp0, row.timestamp3, row.timestamp6, row.timestamptz0, row.timestamptz3, row.timestamptz6, row.time0, row.time3, row.time6, row.timetz0, row.timetz3, row.timetz6) }) + val _rowParser: RowParser = RowParsers.of(PrecisionTypesId.pgType, String10.pgType, String20.pgType, String50.pgType, String100.pgType, String255.pgType, PaddedString3.pgType, PaddedString10.pgType, PgTypes.numeric, PgTypes.numeric, PgTypes.numeric, PgTypes.numeric, PgTypes.numeric, PgTypes.timestamp, PgTypes.timestamp, PgTypes.timestamp, PgTypes.timestamptz, PgTypes.timestamptz, PgTypes.timestamptz, PgTypes.time, PgTypes.time, PgTypes.time, PgTypes.timetz, PgTypes.timetz, PgTypes.timetz, { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24 -> PrecisionTypesRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24) }, { row -> arrayOf(row.id, row.string10, row.string20, row.string50, row.string100, row.string255, row.bpchar3, row.bpchar10, row.decimal52, row.decimal102, row.decimal184, row.numeric82, row.numeric124, row.timestamp0, row.timestamp3, row.timestamp6, row.timestamptz0, row.timestamptz3, row.timestamptz6, row.time0, row.time3, row.time6, row.timetz0, row.timetz3, row.timetz6) }) val pgText: PgText = PgText.from(_rowParser.underlying) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/precision_types/PrecisionTypesRowUnsaved.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/precision_types/PrecisionTypesRowUnsaved.kt index fa0b25c269..3b12c01c2b 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/precision_types/PrecisionTypesRowUnsaved.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/precision_types/PrecisionTypesRowUnsaved.kt @@ -56,19 +56,19 @@ data class PrecisionTypesRowUnsaved( companion object { val pgText: PgText = - PgText.instance({ row, sb -> String10.dbType.text().unsafeEncode(row.string10, sb) + PgText.instance({ row, sb -> String10.pgType.text().unsafeEncode(row.string10, sb) sb.append(PgText.DELIMETER) - String20.dbType.text().unsafeEncode(row.string20, sb) + String20.pgType.text().unsafeEncode(row.string20, sb) sb.append(PgText.DELIMETER) - String50.dbType.text().unsafeEncode(row.string50, sb) + String50.pgType.text().unsafeEncode(row.string50, sb) sb.append(PgText.DELIMETER) - String100.dbType.text().unsafeEncode(row.string100, sb) + String100.pgType.text().unsafeEncode(row.string100, sb) sb.append(PgText.DELIMETER) - String255.dbType.text().unsafeEncode(row.string255, sb) + String255.pgType.text().unsafeEncode(row.string255, sb) sb.append(PgText.DELIMETER) - PaddedString3.dbType.text().unsafeEncode(row.bpchar3, sb) + PaddedString3.pgType.text().unsafeEncode(row.bpchar3, sb) sb.append(PgText.DELIMETER) - PaddedString10.dbType.text().unsafeEncode(row.bpchar10, sb) + PaddedString10.pgType.text().unsafeEncode(row.bpchar10, sb) sb.append(PgText.DELIMETER) PgTypes.numeric.text().unsafeEncode(row.decimal52, sb) sb.append(PgText.DELIMETER) @@ -104,6 +104,6 @@ data class PrecisionTypesRowUnsaved( sb.append(PgText.DELIMETER) PgTypes.timetz.text().unsafeEncode(row.timetz6, sb) sb.append(PgText.DELIMETER) - Defaulted.pgText(PrecisionTypesId.dbType.text()).unsafeEncode(row.id, sb) }) + Defaulted.pgText(PrecisionTypesId.pgType.text()).unsafeEncode(row.id, sb) }) } } \ No newline at end of file diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/precision_types_null/PrecisionTypesNullFields.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/precision_types_null/PrecisionTypesNullFields.kt index a8a5c2689e..1825ae8bbd 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/precision_types_null/PrecisionTypesNullFields.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/precision_types_null/PrecisionTypesNullFields.kt @@ -82,9 +82,9 @@ data class PrecisionTypesNullFields(val _path: List) : TupleExpr25 = _path - fun bpchar10(): OptField = OptField(_path, "bpchar10", PrecisionTypesNullRow::bpchar10, null, "bpchar", { row, value -> row.copy(bpchar10 = value) }, PaddedString10.dbType) + fun bpchar10(): OptField = OptField(_path, "bpchar10", PrecisionTypesNullRow::bpchar10, null, "bpchar", { row, value -> row.copy(bpchar10 = value) }, PaddedString10.pgType) - fun bpchar3(): OptField = OptField(_path, "bpchar3", PrecisionTypesNullRow::bpchar3, null, "bpchar", { row, value -> row.copy(bpchar3 = value) }, PaddedString3.dbType) + fun bpchar3(): OptField = OptField(_path, "bpchar3", PrecisionTypesNullRow::bpchar3, null, "bpchar", { row, value -> row.copy(bpchar3 = value) }, PaddedString3.pgType) override fun columns(): List> = listOf(this.id().underlying, this.string10().underlying, this.string20().underlying, this.string50().underlying, this.string100().underlying, this.string255().underlying, this.bpchar3().underlying, this.bpchar10().underlying, this.decimal52().underlying, this.decimal102().underlying, this.decimal184().underlying, this.numeric82().underlying, this.numeric124().underlying, this.timestamp0().underlying, this.timestamp3().underlying, this.timestamp6().underlying, this.timestamptz0().underlying, this.timestamptz3().underlying, this.timestamptz6().underlying, this.time0().underlying, this.time3().underlying, this.time6().underlying, this.timetz0().underlying, this.timetz3().underlying, this.timetz6().underlying) @@ -94,7 +94,7 @@ data class PrecisionTypesNullFields(val _path: List) : TupleExpr25 = OptField(_path, "decimal5_2", PrecisionTypesNullRow::decimal52, null, "numeric", { row, value -> row.copy(decimal52 = value) }, PgTypes.numeric) - fun id(): IdField = IdField(_path, "id", PrecisionTypesNullRow::id, null, "int4", { row, value -> row.copy(id = value) }, PrecisionTypesNullId.dbType) + fun id(): IdField = IdField(_path, "id", PrecisionTypesNullRow::id, null, "int4", { row, value -> row.copy(id = value) }, PrecisionTypesNullId.pgType) fun numeric124(): OptField = OptField(_path, "numeric12_4", PrecisionTypesNullRow::numeric124, null, "numeric", { row, value -> row.copy(numeric124 = value) }, PgTypes.numeric) @@ -102,15 +102,15 @@ data class PrecisionTypesNullFields(val _path: List) : TupleExpr25 = PrecisionTypesNullRow._rowParser.underlying - fun string10(): OptField = OptField(_path, "string10", PrecisionTypesNullRow::string10, null, null, { row, value -> row.copy(string10 = value) }, String10.dbType) + fun string10(): OptField = OptField(_path, "string10", PrecisionTypesNullRow::string10, null, null, { row, value -> row.copy(string10 = value) }, String10.pgType) - fun string100(): OptField = OptField(_path, "string100", PrecisionTypesNullRow::string100, null, null, { row, value -> row.copy(string100 = value) }, String100.dbType) + fun string100(): OptField = OptField(_path, "string100", PrecisionTypesNullRow::string100, null, null, { row, value -> row.copy(string100 = value) }, String100.pgType) - fun string20(): OptField = OptField(_path, "string20", PrecisionTypesNullRow::string20, null, null, { row, value -> row.copy(string20 = value) }, String20.dbType) + fun string20(): OptField = OptField(_path, "string20", PrecisionTypesNullRow::string20, null, null, { row, value -> row.copy(string20 = value) }, String20.pgType) - fun string255(): OptField = OptField(_path, "string255", PrecisionTypesNullRow::string255, null, null, { row, value -> row.copy(string255 = value) }, String255.dbType) + fun string255(): OptField = OptField(_path, "string255", PrecisionTypesNullRow::string255, null, null, { row, value -> row.copy(string255 = value) }, String255.pgType) - fun string50(): OptField = OptField(_path, "string50", PrecisionTypesNullRow::string50, null, null, { row, value -> row.copy(string50 = value) }, String50.dbType) + fun string50(): OptField = OptField(_path, "string50", PrecisionTypesNullRow::string50, null, null, { row, value -> row.copy(string50 = value) }, String50.pgType) fun time0(): OptField = OptField(_path, "time0", PrecisionTypesNullRow::time0, null, "time", { row, value -> row.copy(time0 = value) }, PgTypes.time) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/precision_types_null/PrecisionTypesNullId.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/precision_types_null/PrecisionTypesNullId.kt index 15b4c68f71..6a5fc83e5d 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/precision_types_null/PrecisionTypesNullId.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/precision_types_null/PrecisionTypesNullId.kt @@ -22,10 +22,10 @@ data class PrecisionTypesNullId(@field:JsonValue val value: Int) { val bijection: Bijection = Bijection.of(PrecisionTypesNullId::value, ::PrecisionTypesNullId) - val dbType: PgType = + val pgType: PgType = KotlinDbTypes.PgTypes.int4.bimap(::PrecisionTypesNullId, PrecisionTypesNullId::value) - val dbTypeArray: PgType> = + val pgTypeArray: PgType> = PgTypes.int4Array.bimap({ xs -> arrayMap.map(xs, ::PrecisionTypesNullId, PrecisionTypesNullId::class.java) }, { xs -> arrayMap.map(xs, PrecisionTypesNullId::value, Int::class.javaObjectType) }) } } \ No newline at end of file diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/precision_types_null/PrecisionTypesNullRepoImpl.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/precision_types_null/PrecisionTypesNullRepoImpl.kt index d0a92eeeb4..1e3b1bb15b 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/precision_types_null/PrecisionTypesNullRepoImpl.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/precision_types_null/PrecisionTypesNullRepoImpl.kt @@ -33,19 +33,19 @@ class PrecisionTypesNullRepoImpl() : PrecisionTypesNullRepo { override fun deleteById( id: PrecisionTypesNullId, c: Connection - ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"public\".\"precision_types_null\" where \"id\" = "), Fragment.encode(PrecisionTypesNullId.dbType, id), Fragment.lit("")).update().runUnchecked(c) > 0 + ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"public\".\"precision_types_null\" where \"id\" = "), Fragment.encode(PrecisionTypesNullId.pgType, id), Fragment.lit("")).update().runUnchecked(c) > 0 override fun deleteByIds( ids: Array, c: Connection - ): Int = Fragment.interpolate(Fragment.lit("delete\nfrom \"public\".\"precision_types_null\"\nwhere \"id\" = ANY("), Fragment.encode(PrecisionTypesNullId.dbTypeArray, ids), Fragment.lit(")")) + ): Int = Fragment.interpolate(Fragment.lit("delete\nfrom \"public\".\"precision_types_null\"\nwhere \"id\" = ANY("), Fragment.encode(PrecisionTypesNullId.pgTypeArray, ids), Fragment.lit(")")) .update() .runUnchecked(c) override fun insert( unsaved: PrecisionTypesNullRow, c: Connection - ): PrecisionTypesNullRow = Fragment.interpolate(Fragment.lit("insert into \"public\".\"precision_types_null\"(\"id\", \"string10\", \"string20\", \"string50\", \"string100\", \"string255\", \"bpchar3\", \"bpchar10\", \"decimal5_2\", \"decimal10_2\", \"decimal18_4\", \"numeric8_2\", \"numeric12_4\", \"timestamp0\", \"timestamp3\", \"timestamp6\", \"timestamptz0\", \"timestamptz3\", \"timestamptz6\", \"time0\", \"time3\", \"time6\", \"timetz0\", \"timetz3\", \"timetz6\")\nvalues ("), Fragment.encode(PrecisionTypesNullId.dbType, unsaved.id), Fragment.lit("::int4, "), Fragment.encode(String10.dbType.nullable(), unsaved.string10), Fragment.lit(", "), Fragment.encode(String20.dbType.nullable(), unsaved.string20), Fragment.lit(", "), Fragment.encode(String50.dbType.nullable(), unsaved.string50), Fragment.lit(", "), Fragment.encode(String100.dbType.nullable(), unsaved.string100), Fragment.lit(", "), Fragment.encode(String255.dbType.nullable(), unsaved.string255), Fragment.lit(", "), Fragment.encode(PaddedString3.dbType.nullable(), unsaved.bpchar3), Fragment.lit("::bpchar, "), Fragment.encode(PaddedString10.dbType.nullable(), unsaved.bpchar10), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.numeric.nullable(), unsaved.decimal52), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric.nullable(), unsaved.decimal102), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric.nullable(), unsaved.decimal184), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric.nullable(), unsaved.numeric82), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric.nullable(), unsaved.numeric124), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.timestamp.nullable(), unsaved.timestamp0), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamp.nullable(), unsaved.timestamp3), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamp.nullable(), unsaved.timestamp6), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamptz.nullable(), unsaved.timestamptz0), Fragment.lit("::timestamptz, "), Fragment.encode(PgTypes.timestamptz.nullable(), unsaved.timestamptz3), Fragment.lit("::timestamptz, "), Fragment.encode(PgTypes.timestamptz.nullable(), unsaved.timestamptz6), Fragment.lit("::timestamptz, "), Fragment.encode(PgTypes.time.nullable(), unsaved.time0), Fragment.lit("::time, "), Fragment.encode(PgTypes.time.nullable(), unsaved.time3), Fragment.lit("::time, "), Fragment.encode(PgTypes.time.nullable(), unsaved.time6), Fragment.lit("::time, "), Fragment.encode(PgTypes.timetz.nullable(), unsaved.timetz0), Fragment.lit("::timetz, "), Fragment.encode(PgTypes.timetz.nullable(), unsaved.timetz3), Fragment.lit("::timetz, "), Fragment.encode(PgTypes.timetz.nullable(), unsaved.timetz6), Fragment.lit("::timetz)\nRETURNING \"id\", \"string10\", \"string20\", \"string50\", \"string100\", \"string255\", \"bpchar3\", \"bpchar10\", \"decimal5_2\", \"decimal10_2\", \"decimal18_4\", \"numeric8_2\", \"numeric12_4\", \"timestamp0\", \"timestamp3\", \"timestamp6\", \"timestamptz0\", \"timestamptz3\", \"timestamptz6\", \"time0\", \"time3\", \"time6\", \"timetz0\", \"timetz3\", \"timetz6\"\n")) + ): PrecisionTypesNullRow = Fragment.interpolate(Fragment.lit("insert into \"public\".\"precision_types_null\"(\"id\", \"string10\", \"string20\", \"string50\", \"string100\", \"string255\", \"bpchar3\", \"bpchar10\", \"decimal5_2\", \"decimal10_2\", \"decimal18_4\", \"numeric8_2\", \"numeric12_4\", \"timestamp0\", \"timestamp3\", \"timestamp6\", \"timestamptz0\", \"timestamptz3\", \"timestamptz6\", \"time0\", \"time3\", \"time6\", \"timetz0\", \"timetz3\", \"timetz6\")\nvalues ("), Fragment.encode(PrecisionTypesNullId.pgType, unsaved.id), Fragment.lit("::int4, "), Fragment.encode(String10.pgType.nullable(), unsaved.string10), Fragment.lit(", "), Fragment.encode(String20.pgType.nullable(), unsaved.string20), Fragment.lit(", "), Fragment.encode(String50.pgType.nullable(), unsaved.string50), Fragment.lit(", "), Fragment.encode(String100.pgType.nullable(), unsaved.string100), Fragment.lit(", "), Fragment.encode(String255.pgType.nullable(), unsaved.string255), Fragment.lit(", "), Fragment.encode(PaddedString3.pgType.nullable(), unsaved.bpchar3), Fragment.lit("::bpchar, "), Fragment.encode(PaddedString10.pgType.nullable(), unsaved.bpchar10), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.numeric.nullable(), unsaved.decimal52), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric.nullable(), unsaved.decimal102), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric.nullable(), unsaved.decimal184), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric.nullable(), unsaved.numeric82), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric.nullable(), unsaved.numeric124), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.timestamp.nullable(), unsaved.timestamp0), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamp.nullable(), unsaved.timestamp3), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamp.nullable(), unsaved.timestamp6), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamptz.nullable(), unsaved.timestamptz0), Fragment.lit("::timestamptz, "), Fragment.encode(PgTypes.timestamptz.nullable(), unsaved.timestamptz3), Fragment.lit("::timestamptz, "), Fragment.encode(PgTypes.timestamptz.nullable(), unsaved.timestamptz6), Fragment.lit("::timestamptz, "), Fragment.encode(PgTypes.time.nullable(), unsaved.time0), Fragment.lit("::time, "), Fragment.encode(PgTypes.time.nullable(), unsaved.time3), Fragment.lit("::time, "), Fragment.encode(PgTypes.time.nullable(), unsaved.time6), Fragment.lit("::time, "), Fragment.encode(PgTypes.timetz.nullable(), unsaved.timetz0), Fragment.lit("::timetz, "), Fragment.encode(PgTypes.timetz.nullable(), unsaved.timetz3), Fragment.lit("::timetz, "), Fragment.encode(PgTypes.timetz.nullable(), unsaved.timetz6), Fragment.lit("::timetz)\nRETURNING \"id\", \"string10\", \"string20\", \"string50\", \"string100\", \"string255\", \"bpchar3\", \"bpchar10\", \"decimal5_2\", \"decimal10_2\", \"decimal18_4\", \"numeric8_2\", \"numeric12_4\", \"timestamp0\", \"timestamp3\", \"timestamp6\", \"timestamptz0\", \"timestamptz3\", \"timestamptz6\", \"time0\", \"time3\", \"time6\", \"timetz0\", \"timetz3\", \"timetz6\"\n")) .updateReturning(PrecisionTypesNullRow._rowParser.exactlyOne()).runUnchecked(c) override fun insert( @@ -55,19 +55,19 @@ class PrecisionTypesNullRepoImpl() : PrecisionTypesNullRepo { val columns: ArrayList = ArrayList() val values: ArrayList = ArrayList() columns.add(Fragment.lit("\"string10\"")) - values.add(Fragment.interpolate(Fragment.encode(String10.dbType.nullable(), unsaved.string10), Fragment.lit(""))) + values.add(Fragment.interpolate(Fragment.encode(String10.pgType.nullable(), unsaved.string10), Fragment.lit(""))) columns.add(Fragment.lit("\"string20\"")) - values.add(Fragment.interpolate(Fragment.encode(String20.dbType.nullable(), unsaved.string20), Fragment.lit(""))) + values.add(Fragment.interpolate(Fragment.encode(String20.pgType.nullable(), unsaved.string20), Fragment.lit(""))) columns.add(Fragment.lit("\"string50\"")) - values.add(Fragment.interpolate(Fragment.encode(String50.dbType.nullable(), unsaved.string50), Fragment.lit(""))) + values.add(Fragment.interpolate(Fragment.encode(String50.pgType.nullable(), unsaved.string50), Fragment.lit(""))) columns.add(Fragment.lit("\"string100\"")) - values.add(Fragment.interpolate(Fragment.encode(String100.dbType.nullable(), unsaved.string100), Fragment.lit(""))) + values.add(Fragment.interpolate(Fragment.encode(String100.pgType.nullable(), unsaved.string100), Fragment.lit(""))) columns.add(Fragment.lit("\"string255\"")) - values.add(Fragment.interpolate(Fragment.encode(String255.dbType.nullable(), unsaved.string255), Fragment.lit(""))) + values.add(Fragment.interpolate(Fragment.encode(String255.pgType.nullable(), unsaved.string255), Fragment.lit(""))) columns.add(Fragment.lit("\"bpchar3\"")) - values.add(Fragment.interpolate(Fragment.encode(PaddedString3.dbType.nullable(), unsaved.bpchar3), Fragment.lit("::bpchar"))) + values.add(Fragment.interpolate(Fragment.encode(PaddedString3.pgType.nullable(), unsaved.bpchar3), Fragment.lit("::bpchar"))) columns.add(Fragment.lit("\"bpchar10\"")) - values.add(Fragment.interpolate(Fragment.encode(PaddedString10.dbType.nullable(), unsaved.bpchar10), Fragment.lit("::bpchar"))) + values.add(Fragment.interpolate(Fragment.encode(PaddedString10.pgType.nullable(), unsaved.bpchar10), Fragment.lit("::bpchar"))) columns.add(Fragment.lit("\"decimal5_2\"")) values.add(Fragment.interpolate(Fragment.encode(PgTypes.numeric.nullable(), unsaved.decimal52), Fragment.lit("::numeric"))) columns.add(Fragment.lit("\"decimal10_2\"")) @@ -105,7 +105,7 @@ class PrecisionTypesNullRepoImpl() : PrecisionTypesNullRepo { unsaved.id.visit( { }, { value -> columns.add(Fragment.lit("\"id\"")) - values.add(Fragment.interpolate(Fragment.encode(PrecisionTypesNullId.dbType, value), Fragment.lit("::int4"))) } + values.add(Fragment.interpolate(Fragment.encode(PrecisionTypesNullId.pgType, value), Fragment.lit("::int4"))) } ); val q: Fragment = Fragment.interpolate(Fragment.lit("insert into \"public\".\"precision_types_null\"("), Fragment.comma(columns.toMutableList()), Fragment.lit(")\nvalues ("), Fragment.comma(values.toMutableList()), Fragment.lit(")\nRETURNING \"id\", \"string10\", \"string20\", \"string50\", \"string100\", \"string255\", \"bpchar3\", \"bpchar10\", \"decimal5_2\", \"decimal10_2\", \"decimal18_4\", \"numeric8_2\", \"numeric12_4\", \"timestamp0\", \"timestamp3\", \"timestamp6\", \"timestamptz0\", \"timestamptz3\", \"timestamptz6\", \"time0\", \"time3\", \"time6\", \"timetz0\", \"timetz3\", \"timetz6\"\n")) return q.updateReturning(PrecisionTypesNullRow._rowParser.exactlyOne()).runUnchecked(c) @@ -131,12 +131,12 @@ class PrecisionTypesNullRepoImpl() : PrecisionTypesNullRepo { override fun selectById( id: PrecisionTypesNullId, c: Connection - ): PrecisionTypesNullRow? = Fragment.interpolate(Fragment.lit("select \"id\", \"string10\", \"string20\", \"string50\", \"string100\", \"string255\", \"bpchar3\", \"bpchar10\", \"decimal5_2\", \"decimal10_2\", \"decimal18_4\", \"numeric8_2\", \"numeric12_4\", \"timestamp0\", \"timestamp3\", \"timestamp6\", \"timestamptz0\", \"timestamptz3\", \"timestamptz6\", \"time0\", \"time3\", \"time6\", \"timetz0\", \"timetz3\", \"timetz6\"\nfrom \"public\".\"precision_types_null\"\nwhere \"id\" = "), Fragment.encode(PrecisionTypesNullId.dbType, id), Fragment.lit("")).query(PrecisionTypesNullRow._rowParser.first()).runUnchecked(c) + ): PrecisionTypesNullRow? = Fragment.interpolate(Fragment.lit("select \"id\", \"string10\", \"string20\", \"string50\", \"string100\", \"string255\", \"bpchar3\", \"bpchar10\", \"decimal5_2\", \"decimal10_2\", \"decimal18_4\", \"numeric8_2\", \"numeric12_4\", \"timestamp0\", \"timestamp3\", \"timestamp6\", \"timestamptz0\", \"timestamptz3\", \"timestamptz6\", \"time0\", \"time3\", \"time6\", \"timetz0\", \"timetz3\", \"timetz6\"\nfrom \"public\".\"precision_types_null\"\nwhere \"id\" = "), Fragment.encode(PrecisionTypesNullId.pgType, id), Fragment.lit("")).query(PrecisionTypesNullRow._rowParser.first()).runUnchecked(c) override fun selectByIds( ids: Array, c: Connection - ): List = Fragment.interpolate(Fragment.lit("select \"id\", \"string10\", \"string20\", \"string50\", \"string100\", \"string255\", \"bpchar3\", \"bpchar10\", \"decimal5_2\", \"decimal10_2\", \"decimal18_4\", \"numeric8_2\", \"numeric12_4\", \"timestamp0\", \"timestamp3\", \"timestamp6\", \"timestamptz0\", \"timestamptz3\", \"timestamptz6\", \"time0\", \"time3\", \"time6\", \"timetz0\", \"timetz3\", \"timetz6\"\nfrom \"public\".\"precision_types_null\"\nwhere \"id\" = ANY("), Fragment.encode(PrecisionTypesNullId.dbTypeArray, ids), Fragment.lit(")")).query(PrecisionTypesNullRow._rowParser.all()).runUnchecked(c) + ): List = Fragment.interpolate(Fragment.lit("select \"id\", \"string10\", \"string20\", \"string50\", \"string100\", \"string255\", \"bpchar3\", \"bpchar10\", \"decimal5_2\", \"decimal10_2\", \"decimal18_4\", \"numeric8_2\", \"numeric12_4\", \"timestamp0\", \"timestamp3\", \"timestamp6\", \"timestamptz0\", \"timestamptz3\", \"timestamptz6\", \"time0\", \"time3\", \"time6\", \"timetz0\", \"timetz3\", \"timetz6\"\nfrom \"public\".\"precision_types_null\"\nwhere \"id\" = ANY("), Fragment.encode(PrecisionTypesNullId.pgTypeArray, ids), Fragment.lit(")")).query(PrecisionTypesNullRow._rowParser.all()).runUnchecked(c) override fun selectByIdsTracked( ids: Array, @@ -154,13 +154,13 @@ class PrecisionTypesNullRepoImpl() : PrecisionTypesNullRepo { c: Connection ): Boolean { val id: PrecisionTypesNullId = row.id - return Fragment.interpolate(Fragment.lit("update \"public\".\"precision_types_null\"\nset \"string10\" = "), Fragment.encode(String10.dbType.nullable(), row.string10), Fragment.lit(",\n\"string20\" = "), Fragment.encode(String20.dbType.nullable(), row.string20), Fragment.lit(",\n\"string50\" = "), Fragment.encode(String50.dbType.nullable(), row.string50), Fragment.lit(",\n\"string100\" = "), Fragment.encode(String100.dbType.nullable(), row.string100), Fragment.lit(",\n\"string255\" = "), Fragment.encode(String255.dbType.nullable(), row.string255), Fragment.lit(",\n\"bpchar3\" = "), Fragment.encode(PaddedString3.dbType.nullable(), row.bpchar3), Fragment.lit("::bpchar,\n\"bpchar10\" = "), Fragment.encode(PaddedString10.dbType.nullable(), row.bpchar10), Fragment.lit("::bpchar,\n\"decimal5_2\" = "), Fragment.encode(PgTypes.numeric.nullable(), row.decimal52), Fragment.lit("::numeric,\n\"decimal10_2\" = "), Fragment.encode(PgTypes.numeric.nullable(), row.decimal102), Fragment.lit("::numeric,\n\"decimal18_4\" = "), Fragment.encode(PgTypes.numeric.nullable(), row.decimal184), Fragment.lit("::numeric,\n\"numeric8_2\" = "), Fragment.encode(PgTypes.numeric.nullable(), row.numeric82), Fragment.lit("::numeric,\n\"numeric12_4\" = "), Fragment.encode(PgTypes.numeric.nullable(), row.numeric124), Fragment.lit("::numeric,\n\"timestamp0\" = "), Fragment.encode(PgTypes.timestamp.nullable(), row.timestamp0), Fragment.lit("::timestamp,\n\"timestamp3\" = "), Fragment.encode(PgTypes.timestamp.nullable(), row.timestamp3), Fragment.lit("::timestamp,\n\"timestamp6\" = "), Fragment.encode(PgTypes.timestamp.nullable(), row.timestamp6), Fragment.lit("::timestamp,\n\"timestamptz0\" = "), Fragment.encode(PgTypes.timestamptz.nullable(), row.timestamptz0), Fragment.lit("::timestamptz,\n\"timestamptz3\" = "), Fragment.encode(PgTypes.timestamptz.nullable(), row.timestamptz3), Fragment.lit("::timestamptz,\n\"timestamptz6\" = "), Fragment.encode(PgTypes.timestamptz.nullable(), row.timestamptz6), Fragment.lit("::timestamptz,\n\"time0\" = "), Fragment.encode(PgTypes.time.nullable(), row.time0), Fragment.lit("::time,\n\"time3\" = "), Fragment.encode(PgTypes.time.nullable(), row.time3), Fragment.lit("::time,\n\"time6\" = "), Fragment.encode(PgTypes.time.nullable(), row.time6), Fragment.lit("::time,\n\"timetz0\" = "), Fragment.encode(PgTypes.timetz.nullable(), row.timetz0), Fragment.lit("::timetz,\n\"timetz3\" = "), Fragment.encode(PgTypes.timetz.nullable(), row.timetz3), Fragment.lit("::timetz,\n\"timetz6\" = "), Fragment.encode(PgTypes.timetz.nullable(), row.timetz6), Fragment.lit("::timetz\nwhere \"id\" = "), Fragment.encode(PrecisionTypesNullId.dbType, id), Fragment.lit("")).update().runUnchecked(c) > 0 + return Fragment.interpolate(Fragment.lit("update \"public\".\"precision_types_null\"\nset \"string10\" = "), Fragment.encode(String10.pgType.nullable(), row.string10), Fragment.lit(",\n\"string20\" = "), Fragment.encode(String20.pgType.nullable(), row.string20), Fragment.lit(",\n\"string50\" = "), Fragment.encode(String50.pgType.nullable(), row.string50), Fragment.lit(",\n\"string100\" = "), Fragment.encode(String100.pgType.nullable(), row.string100), Fragment.lit(",\n\"string255\" = "), Fragment.encode(String255.pgType.nullable(), row.string255), Fragment.lit(",\n\"bpchar3\" = "), Fragment.encode(PaddedString3.pgType.nullable(), row.bpchar3), Fragment.lit("::bpchar,\n\"bpchar10\" = "), Fragment.encode(PaddedString10.pgType.nullable(), row.bpchar10), Fragment.lit("::bpchar,\n\"decimal5_2\" = "), Fragment.encode(PgTypes.numeric.nullable(), row.decimal52), Fragment.lit("::numeric,\n\"decimal10_2\" = "), Fragment.encode(PgTypes.numeric.nullable(), row.decimal102), Fragment.lit("::numeric,\n\"decimal18_4\" = "), Fragment.encode(PgTypes.numeric.nullable(), row.decimal184), Fragment.lit("::numeric,\n\"numeric8_2\" = "), Fragment.encode(PgTypes.numeric.nullable(), row.numeric82), Fragment.lit("::numeric,\n\"numeric12_4\" = "), Fragment.encode(PgTypes.numeric.nullable(), row.numeric124), Fragment.lit("::numeric,\n\"timestamp0\" = "), Fragment.encode(PgTypes.timestamp.nullable(), row.timestamp0), Fragment.lit("::timestamp,\n\"timestamp3\" = "), Fragment.encode(PgTypes.timestamp.nullable(), row.timestamp3), Fragment.lit("::timestamp,\n\"timestamp6\" = "), Fragment.encode(PgTypes.timestamp.nullable(), row.timestamp6), Fragment.lit("::timestamp,\n\"timestamptz0\" = "), Fragment.encode(PgTypes.timestamptz.nullable(), row.timestamptz0), Fragment.lit("::timestamptz,\n\"timestamptz3\" = "), Fragment.encode(PgTypes.timestamptz.nullable(), row.timestamptz3), Fragment.lit("::timestamptz,\n\"timestamptz6\" = "), Fragment.encode(PgTypes.timestamptz.nullable(), row.timestamptz6), Fragment.lit("::timestamptz,\n\"time0\" = "), Fragment.encode(PgTypes.time.nullable(), row.time0), Fragment.lit("::time,\n\"time3\" = "), Fragment.encode(PgTypes.time.nullable(), row.time3), Fragment.lit("::time,\n\"time6\" = "), Fragment.encode(PgTypes.time.nullable(), row.time6), Fragment.lit("::time,\n\"timetz0\" = "), Fragment.encode(PgTypes.timetz.nullable(), row.timetz0), Fragment.lit("::timetz,\n\"timetz3\" = "), Fragment.encode(PgTypes.timetz.nullable(), row.timetz3), Fragment.lit("::timetz,\n\"timetz6\" = "), Fragment.encode(PgTypes.timetz.nullable(), row.timetz6), Fragment.lit("::timetz\nwhere \"id\" = "), Fragment.encode(PrecisionTypesNullId.pgType, id), Fragment.lit("")).update().runUnchecked(c) > 0 } override fun upsert( unsaved: PrecisionTypesNullRow, c: Connection - ): PrecisionTypesNullRow = Fragment.interpolate(Fragment.lit("insert into \"public\".\"precision_types_null\"(\"id\", \"string10\", \"string20\", \"string50\", \"string100\", \"string255\", \"bpchar3\", \"bpchar10\", \"decimal5_2\", \"decimal10_2\", \"decimal18_4\", \"numeric8_2\", \"numeric12_4\", \"timestamp0\", \"timestamp3\", \"timestamp6\", \"timestamptz0\", \"timestamptz3\", \"timestamptz6\", \"time0\", \"time3\", \"time6\", \"timetz0\", \"timetz3\", \"timetz6\")\nvalues ("), Fragment.encode(PrecisionTypesNullId.dbType, unsaved.id), Fragment.lit("::int4, "), Fragment.encode(String10.dbType.nullable(), unsaved.string10), Fragment.lit(", "), Fragment.encode(String20.dbType.nullable(), unsaved.string20), Fragment.lit(", "), Fragment.encode(String50.dbType.nullable(), unsaved.string50), Fragment.lit(", "), Fragment.encode(String100.dbType.nullable(), unsaved.string100), Fragment.lit(", "), Fragment.encode(String255.dbType.nullable(), unsaved.string255), Fragment.lit(", "), Fragment.encode(PaddedString3.dbType.nullable(), unsaved.bpchar3), Fragment.lit("::bpchar, "), Fragment.encode(PaddedString10.dbType.nullable(), unsaved.bpchar10), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.numeric.nullable(), unsaved.decimal52), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric.nullable(), unsaved.decimal102), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric.nullable(), unsaved.decimal184), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric.nullable(), unsaved.numeric82), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric.nullable(), unsaved.numeric124), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.timestamp.nullable(), unsaved.timestamp0), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamp.nullable(), unsaved.timestamp3), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamp.nullable(), unsaved.timestamp6), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamptz.nullable(), unsaved.timestamptz0), Fragment.lit("::timestamptz, "), Fragment.encode(PgTypes.timestamptz.nullable(), unsaved.timestamptz3), Fragment.lit("::timestamptz, "), Fragment.encode(PgTypes.timestamptz.nullable(), unsaved.timestamptz6), Fragment.lit("::timestamptz, "), Fragment.encode(PgTypes.time.nullable(), unsaved.time0), Fragment.lit("::time, "), Fragment.encode(PgTypes.time.nullable(), unsaved.time3), Fragment.lit("::time, "), Fragment.encode(PgTypes.time.nullable(), unsaved.time6), Fragment.lit("::time, "), Fragment.encode(PgTypes.timetz.nullable(), unsaved.timetz0), Fragment.lit("::timetz, "), Fragment.encode(PgTypes.timetz.nullable(), unsaved.timetz3), Fragment.lit("::timetz, "), Fragment.encode(PgTypes.timetz.nullable(), unsaved.timetz6), Fragment.lit("::timetz)\non conflict (\"id\")\ndo update set\n \"string10\" = EXCLUDED.\"string10\",\n\"string20\" = EXCLUDED.\"string20\",\n\"string50\" = EXCLUDED.\"string50\",\n\"string100\" = EXCLUDED.\"string100\",\n\"string255\" = EXCLUDED.\"string255\",\n\"bpchar3\" = EXCLUDED.\"bpchar3\",\n\"bpchar10\" = EXCLUDED.\"bpchar10\",\n\"decimal5_2\" = EXCLUDED.\"decimal5_2\",\n\"decimal10_2\" = EXCLUDED.\"decimal10_2\",\n\"decimal18_4\" = EXCLUDED.\"decimal18_4\",\n\"numeric8_2\" = EXCLUDED.\"numeric8_2\",\n\"numeric12_4\" = EXCLUDED.\"numeric12_4\",\n\"timestamp0\" = EXCLUDED.\"timestamp0\",\n\"timestamp3\" = EXCLUDED.\"timestamp3\",\n\"timestamp6\" = EXCLUDED.\"timestamp6\",\n\"timestamptz0\" = EXCLUDED.\"timestamptz0\",\n\"timestamptz3\" = EXCLUDED.\"timestamptz3\",\n\"timestamptz6\" = EXCLUDED.\"timestamptz6\",\n\"time0\" = EXCLUDED.\"time0\",\n\"time3\" = EXCLUDED.\"time3\",\n\"time6\" = EXCLUDED.\"time6\",\n\"timetz0\" = EXCLUDED.\"timetz0\",\n\"timetz3\" = EXCLUDED.\"timetz3\",\n\"timetz6\" = EXCLUDED.\"timetz6\"\nreturning \"id\", \"string10\", \"string20\", \"string50\", \"string100\", \"string255\", \"bpchar3\", \"bpchar10\", \"decimal5_2\", \"decimal10_2\", \"decimal18_4\", \"numeric8_2\", \"numeric12_4\", \"timestamp0\", \"timestamp3\", \"timestamp6\", \"timestamptz0\", \"timestamptz3\", \"timestamptz6\", \"time0\", \"time3\", \"time6\", \"timetz0\", \"timetz3\", \"timetz6\"")) + ): PrecisionTypesNullRow = Fragment.interpolate(Fragment.lit("insert into \"public\".\"precision_types_null\"(\"id\", \"string10\", \"string20\", \"string50\", \"string100\", \"string255\", \"bpchar3\", \"bpchar10\", \"decimal5_2\", \"decimal10_2\", \"decimal18_4\", \"numeric8_2\", \"numeric12_4\", \"timestamp0\", \"timestamp3\", \"timestamp6\", \"timestamptz0\", \"timestamptz3\", \"timestamptz6\", \"time0\", \"time3\", \"time6\", \"timetz0\", \"timetz3\", \"timetz6\")\nvalues ("), Fragment.encode(PrecisionTypesNullId.pgType, unsaved.id), Fragment.lit("::int4, "), Fragment.encode(String10.pgType.nullable(), unsaved.string10), Fragment.lit(", "), Fragment.encode(String20.pgType.nullable(), unsaved.string20), Fragment.lit(", "), Fragment.encode(String50.pgType.nullable(), unsaved.string50), Fragment.lit(", "), Fragment.encode(String100.pgType.nullable(), unsaved.string100), Fragment.lit(", "), Fragment.encode(String255.pgType.nullable(), unsaved.string255), Fragment.lit(", "), Fragment.encode(PaddedString3.pgType.nullable(), unsaved.bpchar3), Fragment.lit("::bpchar, "), Fragment.encode(PaddedString10.pgType.nullable(), unsaved.bpchar10), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.numeric.nullable(), unsaved.decimal52), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric.nullable(), unsaved.decimal102), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric.nullable(), unsaved.decimal184), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric.nullable(), unsaved.numeric82), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric.nullable(), unsaved.numeric124), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.timestamp.nullable(), unsaved.timestamp0), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamp.nullable(), unsaved.timestamp3), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamp.nullable(), unsaved.timestamp6), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamptz.nullable(), unsaved.timestamptz0), Fragment.lit("::timestamptz, "), Fragment.encode(PgTypes.timestamptz.nullable(), unsaved.timestamptz3), Fragment.lit("::timestamptz, "), Fragment.encode(PgTypes.timestamptz.nullable(), unsaved.timestamptz6), Fragment.lit("::timestamptz, "), Fragment.encode(PgTypes.time.nullable(), unsaved.time0), Fragment.lit("::time, "), Fragment.encode(PgTypes.time.nullable(), unsaved.time3), Fragment.lit("::time, "), Fragment.encode(PgTypes.time.nullable(), unsaved.time6), Fragment.lit("::time, "), Fragment.encode(PgTypes.timetz.nullable(), unsaved.timetz0), Fragment.lit("::timetz, "), Fragment.encode(PgTypes.timetz.nullable(), unsaved.timetz3), Fragment.lit("::timetz, "), Fragment.encode(PgTypes.timetz.nullable(), unsaved.timetz6), Fragment.lit("::timetz)\non conflict (\"id\")\ndo update set\n \"string10\" = EXCLUDED.\"string10\",\n\"string20\" = EXCLUDED.\"string20\",\n\"string50\" = EXCLUDED.\"string50\",\n\"string100\" = EXCLUDED.\"string100\",\n\"string255\" = EXCLUDED.\"string255\",\n\"bpchar3\" = EXCLUDED.\"bpchar3\",\n\"bpchar10\" = EXCLUDED.\"bpchar10\",\n\"decimal5_2\" = EXCLUDED.\"decimal5_2\",\n\"decimal10_2\" = EXCLUDED.\"decimal10_2\",\n\"decimal18_4\" = EXCLUDED.\"decimal18_4\",\n\"numeric8_2\" = EXCLUDED.\"numeric8_2\",\n\"numeric12_4\" = EXCLUDED.\"numeric12_4\",\n\"timestamp0\" = EXCLUDED.\"timestamp0\",\n\"timestamp3\" = EXCLUDED.\"timestamp3\",\n\"timestamp6\" = EXCLUDED.\"timestamp6\",\n\"timestamptz0\" = EXCLUDED.\"timestamptz0\",\n\"timestamptz3\" = EXCLUDED.\"timestamptz3\",\n\"timestamptz6\" = EXCLUDED.\"timestamptz6\",\n\"time0\" = EXCLUDED.\"time0\",\n\"time3\" = EXCLUDED.\"time3\",\n\"time6\" = EXCLUDED.\"time6\",\n\"timetz0\" = EXCLUDED.\"timetz0\",\n\"timetz3\" = EXCLUDED.\"timetz3\",\n\"timetz6\" = EXCLUDED.\"timetz6\"\nreturning \"id\", \"string10\", \"string20\", \"string50\", \"string100\", \"string255\", \"bpchar3\", \"bpchar10\", \"decimal5_2\", \"decimal10_2\", \"decimal18_4\", \"numeric8_2\", \"numeric12_4\", \"timestamp0\", \"timestamp3\", \"timestamp6\", \"timestamptz0\", \"timestamptz3\", \"timestamptz6\", \"time0\", \"time3\", \"time6\", \"timetz0\", \"timetz3\", \"timetz6\"")) .updateReturning(PrecisionTypesNullRow._rowParser.exactlyOne()) .runUnchecked(c) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/precision_types_null/PrecisionTypesNullRow.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/precision_types_null/PrecisionTypesNullRow.kt index 8a564ff2f3..d36601d5d3 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/precision_types_null/PrecisionTypesNullRow.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/precision_types_null/PrecisionTypesNullRow.kt @@ -110,7 +110,7 @@ data class PrecisionTypesNullRow( fun toUnsavedRow(id: Defaulted): PrecisionTypesNullRowUnsaved = PrecisionTypesNullRowUnsaved(string10, string20, string50, string100, string255, bpchar3, bpchar10, decimal52, decimal102, decimal184, numeric82, numeric124, timestamp0, timestamp3, timestamp6, timestamptz0, timestamptz3, timestamptz6, time0, time3, time6, timetz0, timetz3, timetz6, id) companion object { - val _rowParser: RowParser = RowParsers.of(PrecisionTypesNullId.dbType, String10.dbType.nullable(), String20.dbType.nullable(), String50.dbType.nullable(), String100.dbType.nullable(), String255.dbType.nullable(), PaddedString3.dbType.nullable(), PaddedString10.dbType.nullable(), PgTypes.numeric.nullable(), PgTypes.numeric.nullable(), PgTypes.numeric.nullable(), PgTypes.numeric.nullable(), PgTypes.numeric.nullable(), PgTypes.timestamp.nullable(), PgTypes.timestamp.nullable(), PgTypes.timestamp.nullable(), PgTypes.timestamptz.nullable(), PgTypes.timestamptz.nullable(), PgTypes.timestamptz.nullable(), PgTypes.time.nullable(), PgTypes.time.nullable(), PgTypes.time.nullable(), PgTypes.timetz.nullable(), PgTypes.timetz.nullable(), PgTypes.timetz.nullable(), { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24 -> PrecisionTypesNullRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24) }, { row -> arrayOf(row.id, row.string10, row.string20, row.string50, row.string100, row.string255, row.bpchar3, row.bpchar10, row.decimal52, row.decimal102, row.decimal184, row.numeric82, row.numeric124, row.timestamp0, row.timestamp3, row.timestamp6, row.timestamptz0, row.timestamptz3, row.timestamptz6, row.time0, row.time3, row.time6, row.timetz0, row.timetz3, row.timetz6) }) + val _rowParser: RowParser = RowParsers.of(PrecisionTypesNullId.pgType, String10.pgType.nullable(), String20.pgType.nullable(), String50.pgType.nullable(), String100.pgType.nullable(), String255.pgType.nullable(), PaddedString3.pgType.nullable(), PaddedString10.pgType.nullable(), PgTypes.numeric.nullable(), PgTypes.numeric.nullable(), PgTypes.numeric.nullable(), PgTypes.numeric.nullable(), PgTypes.numeric.nullable(), PgTypes.timestamp.nullable(), PgTypes.timestamp.nullable(), PgTypes.timestamp.nullable(), PgTypes.timestamptz.nullable(), PgTypes.timestamptz.nullable(), PgTypes.timestamptz.nullable(), PgTypes.time.nullable(), PgTypes.time.nullable(), PgTypes.time.nullable(), PgTypes.timetz.nullable(), PgTypes.timetz.nullable(), PgTypes.timetz.nullable(), { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24 -> PrecisionTypesNullRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24) }, { row -> arrayOf(row.id, row.string10, row.string20, row.string50, row.string100, row.string255, row.bpchar3, row.bpchar10, row.decimal52, row.decimal102, row.decimal184, row.numeric82, row.numeric124, row.timestamp0, row.timestamp3, row.timestamp6, row.timestamptz0, row.timestamptz3, row.timestamptz6, row.time0, row.time3, row.time6, row.timetz0, row.timetz3, row.timetz6) }) val pgText: PgText = PgText.from(_rowParser.underlying) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/precision_types_null/PrecisionTypesNullRowUnsaved.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/precision_types_null/PrecisionTypesNullRowUnsaved.kt index 943022a735..da96fa19c3 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/precision_types_null/PrecisionTypesNullRowUnsaved.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/precision_types_null/PrecisionTypesNullRowUnsaved.kt @@ -57,19 +57,19 @@ data class PrecisionTypesNullRowUnsaved( companion object { val pgText: PgText = - PgText.instance({ row, sb -> String10.dbType.nullable().text().unsafeEncode(row.string10, sb) + PgText.instance({ row, sb -> String10.pgType.nullable().text().unsafeEncode(row.string10, sb) sb.append(PgText.DELIMETER) - String20.dbType.nullable().text().unsafeEncode(row.string20, sb) + String20.pgType.nullable().text().unsafeEncode(row.string20, sb) sb.append(PgText.DELIMETER) - String50.dbType.nullable().text().unsafeEncode(row.string50, sb) + String50.pgType.nullable().text().unsafeEncode(row.string50, sb) sb.append(PgText.DELIMETER) - String100.dbType.nullable().text().unsafeEncode(row.string100, sb) + String100.pgType.nullable().text().unsafeEncode(row.string100, sb) sb.append(PgText.DELIMETER) - String255.dbType.nullable().text().unsafeEncode(row.string255, sb) + String255.pgType.nullable().text().unsafeEncode(row.string255, sb) sb.append(PgText.DELIMETER) - PaddedString3.dbType.nullable().text().unsafeEncode(row.bpchar3, sb) + PaddedString3.pgType.nullable().text().unsafeEncode(row.bpchar3, sb) sb.append(PgText.DELIMETER) - PaddedString10.dbType.nullable().text().unsafeEncode(row.bpchar10, sb) + PaddedString10.pgType.nullable().text().unsafeEncode(row.bpchar10, sb) sb.append(PgText.DELIMETER) PgTypes.numeric.nullable().text().unsafeEncode(row.decimal52, sb) sb.append(PgText.DELIMETER) @@ -105,6 +105,6 @@ data class PrecisionTypesNullRowUnsaved( sb.append(PgText.DELIMETER) PgTypes.timetz.nullable().text().unsafeEncode(row.timetz6, sb) sb.append(PgText.DELIMETER) - Defaulted.pgText(PrecisionTypesNullId.dbType.text()).unsafeEncode(row.id, sb) }) + Defaulted.pgText(PrecisionTypesNullId.pgType.text()).unsafeEncode(row.id, sb) }) } } \ No newline at end of file diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/title/TitleFields.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/title/TitleFields.kt index d4564836d3..a6290cc034 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/title/TitleFields.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/title/TitleFields.kt @@ -20,7 +20,7 @@ data class TitleFields(val _path: List) : TupleExpr1, RelationStr override fun _path(): List = _path - fun code(): IdField = IdField(_path, "code", TitleRow::code, null, null, { row, value -> row.copy(code = value) }, TitleId.dbType) + fun code(): IdField = IdField(_path, "code", TitleRow::code, null, null, { row, value -> row.copy(code = value) }, TitleId.pgType) override fun columns(): List> = listOf(this.code().underlying) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/title/TitleId.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/title/TitleId.kt index 8985a35a15..8dd797d35c 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/title/TitleId.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/title/TitleId.kt @@ -28,10 +28,10 @@ sealed interface TitleId { companion object { fun apply(str: String): TitleId = Known.ByName[str] ?: Unknown(str) - val dbTypeArray: PgType> = + val pgTypeArray: PgType> = PgTypes.textArray .bimap({ xs -> arrayMap.map(xs, TitleId::apply, TitleId::class.java) }, { xs -> arrayMap.map(xs, TitleId::value, String::class.java) }) - val dbType: PgType = + val pgType: PgType = PgTypes.text.bimap(TitleId::apply, TitleId::value) } } \ No newline at end of file diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/title/TitleRepoImpl.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/title/TitleRepoImpl.kt index 3da1d4f0c5..555acae3dd 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/title/TitleRepoImpl.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/title/TitleRepoImpl.kt @@ -23,19 +23,19 @@ class TitleRepoImpl() : TitleRepo { override fun deleteById( code: TitleId, c: Connection - ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"public\".\"title\" where \"code\" = "), Fragment.encode(TitleId.dbType, code), Fragment.lit("")).update().runUnchecked(c) > 0 + ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"public\".\"title\" where \"code\" = "), Fragment.encode(TitleId.pgType, code), Fragment.lit("")).update().runUnchecked(c) > 0 override fun deleteByIds( codes: Array, c: Connection - ): Int = Fragment.interpolate(Fragment.lit("delete\nfrom \"public\".\"title\"\nwhere \"code\" = ANY("), Fragment.encode(TitleId.dbTypeArray, codes), Fragment.lit(")")) + ): Int = Fragment.interpolate(Fragment.lit("delete\nfrom \"public\".\"title\"\nwhere \"code\" = ANY("), Fragment.encode(TitleId.pgTypeArray, codes), Fragment.lit(")")) .update() .runUnchecked(c) override fun insert( unsaved: TitleRow, c: Connection - ): TitleRow = Fragment.interpolate(Fragment.lit("insert into \"public\".\"title\"(\"code\")\nvalues ("), Fragment.encode(TitleId.dbType, unsaved.code), Fragment.lit(")\nRETURNING \"code\"\n")) + ): TitleRow = Fragment.interpolate(Fragment.lit("insert into \"public\".\"title\"(\"code\")\nvalues ("), Fragment.encode(TitleId.pgType, unsaved.code), Fragment.lit(")\nRETURNING \"code\"\n")) .updateReturning(TitleRow._rowParser.exactlyOne()).runUnchecked(c) override fun insertStreaming( @@ -51,12 +51,12 @@ class TitleRepoImpl() : TitleRepo { override fun selectById( code: TitleId, c: Connection - ): TitleRow? = Fragment.interpolate(Fragment.lit("select \"code\"\nfrom \"public\".\"title\"\nwhere \"code\" = "), Fragment.encode(TitleId.dbType, code), Fragment.lit("")).query(TitleRow._rowParser.first()).runUnchecked(c) + ): TitleRow? = Fragment.interpolate(Fragment.lit("select \"code\"\nfrom \"public\".\"title\"\nwhere \"code\" = "), Fragment.encode(TitleId.pgType, code), Fragment.lit("")).query(TitleRow._rowParser.first()).runUnchecked(c) override fun selectByIds( codes: Array, c: Connection - ): List = Fragment.interpolate(Fragment.lit("select \"code\"\nfrom \"public\".\"title\"\nwhere \"code\" = ANY("), Fragment.encode(TitleId.dbTypeArray, codes), Fragment.lit(")")).query(TitleRow._rowParser.all()).runUnchecked(c) + ): List = Fragment.interpolate(Fragment.lit("select \"code\"\nfrom \"public\".\"title\"\nwhere \"code\" = ANY("), Fragment.encode(TitleId.pgTypeArray, codes), Fragment.lit(")")).query(TitleRow._rowParser.all()).runUnchecked(c) override fun selectByIdsTracked( codes: Array, @@ -72,7 +72,7 @@ class TitleRepoImpl() : TitleRepo { override fun upsert( unsaved: TitleRow, c: Connection - ): TitleRow = Fragment.interpolate(Fragment.lit("insert into \"public\".\"title\"(\"code\")\nvalues ("), Fragment.encode(TitleId.dbType, unsaved.code), Fragment.lit(")\non conflict (\"code\")\ndo update set \"code\" = EXCLUDED.\"code\"\nreturning \"code\"")) + ): TitleRow = Fragment.interpolate(Fragment.lit("insert into \"public\".\"title\"(\"code\")\nvalues ("), Fragment.encode(TitleId.pgType, unsaved.code), Fragment.lit(")\non conflict (\"code\")\ndo update set \"code\" = EXCLUDED.\"code\"\nreturning \"code\"")) .updateReturning(TitleRow._rowParser.exactlyOne()) .runUnchecked(c) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/title/TitleRow.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/title/TitleRow.kt index 20719396ce..f333f8d540 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/title/TitleRow.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/title/TitleRow.kt @@ -19,7 +19,7 @@ data class TitleRow(val code: TitleId) : Tuple1 { fun id(): TitleId = code companion object { - val _rowParser: RowParser = RowParsers.of(TitleId.dbType, { t0 -> TitleRow(t0) }, { row -> arrayOf(row.code) }) + val _rowParser: RowParser = RowParsers.of(TitleId.pgType, { t0 -> TitleRow(t0) }, { row -> arrayOf(row.code) }) val pgText: PgText = PgText.from(_rowParser.underlying) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/title_domain/TitleDomainFields.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/title_domain/TitleDomainFields.kt index e7726dc44a..436f39b95b 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/title_domain/TitleDomainFields.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/title_domain/TitleDomainFields.kt @@ -20,7 +20,7 @@ data class TitleDomainFields(val _path: List) : TupleExpr1, override fun _path(): List = _path - fun code(): IdField = IdField(_path, "code", TitleDomainRow::code, null, "text", { row, value -> row.copy(code = value) }, TitleDomainId.dbType) + fun code(): IdField = IdField(_path, "code", TitleDomainRow::code, null, "text", { row, value -> row.copy(code = value) }, TitleDomainId.pgType) override fun columns(): List> = listOf(this.code().underlying) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/title_domain/TitleDomainId.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/title_domain/TitleDomainId.kt index a58cb49fd4..00636db44a 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/title_domain/TitleDomainId.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/title_domain/TitleDomainId.kt @@ -28,11 +28,11 @@ sealed interface TitleDomainId { companion object { fun apply(str: ShortText): TitleDomainId = Known.ByName[str] ?: Unknown(str) - val dbTypeArray: PgType> = - ShortText.dbTypeArray + val pgTypeArray: PgType> = + ShortText.pgTypeArray .bimap({ xs -> arrayMap.map(xs, TitleDomainId::apply, TitleDomainId::class.java) }, { xs -> arrayMap.map(xs, TitleDomainId::value, ShortText::class.java) }) - val dbType: PgType = - ShortText.dbType.bimap(TitleDomainId::apply, TitleDomainId::value) + val pgType: PgType = + ShortText.pgType.bimap(TitleDomainId::apply, TitleDomainId::value) fun shortText(value: String): TitleDomainId = apply(ShortText(value)) } } \ No newline at end of file diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/title_domain/TitleDomainRepoImpl.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/title_domain/TitleDomainRepoImpl.kt index 0e7650822b..db5fdd2989 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/title_domain/TitleDomainRepoImpl.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/title_domain/TitleDomainRepoImpl.kt @@ -23,19 +23,19 @@ class TitleDomainRepoImpl() : TitleDomainRepo { override fun deleteById( code: TitleDomainId, c: Connection - ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"public\".\"title_domain\" where \"code\" = "), Fragment.encode(TitleDomainId.dbType, code), Fragment.lit("")).update().runUnchecked(c) > 0 + ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"public\".\"title_domain\" where \"code\" = "), Fragment.encode(TitleDomainId.pgType, code), Fragment.lit("")).update().runUnchecked(c) > 0 override fun deleteByIds( codes: Array, c: Connection - ): Int = Fragment.interpolate(Fragment.lit("delete\nfrom \"public\".\"title_domain\"\nwhere \"code\" = ANY("), Fragment.encode(TitleDomainId.dbTypeArray, codes), Fragment.lit(")")) + ): Int = Fragment.interpolate(Fragment.lit("delete\nfrom \"public\".\"title_domain\"\nwhere \"code\" = ANY("), Fragment.encode(TitleDomainId.pgTypeArray, codes), Fragment.lit(")")) .update() .runUnchecked(c) override fun insert( unsaved: TitleDomainRow, c: Connection - ): TitleDomainRow = Fragment.interpolate(Fragment.lit("insert into \"public\".\"title_domain\"(\"code\")\nvalues ("), Fragment.encode(TitleDomainId.dbType, unsaved.code), Fragment.lit("::text)\nRETURNING \"code\"\n")) + ): TitleDomainRow = Fragment.interpolate(Fragment.lit("insert into \"public\".\"title_domain\"(\"code\")\nvalues ("), Fragment.encode(TitleDomainId.pgType, unsaved.code), Fragment.lit("::text)\nRETURNING \"code\"\n")) .updateReturning(TitleDomainRow._rowParser.exactlyOne()).runUnchecked(c) override fun insertStreaming( @@ -51,12 +51,12 @@ class TitleDomainRepoImpl() : TitleDomainRepo { override fun selectById( code: TitleDomainId, c: Connection - ): TitleDomainRow? = Fragment.interpolate(Fragment.lit("select \"code\"\nfrom \"public\".\"title_domain\"\nwhere \"code\" = "), Fragment.encode(TitleDomainId.dbType, code), Fragment.lit("")).query(TitleDomainRow._rowParser.first()).runUnchecked(c) + ): TitleDomainRow? = Fragment.interpolate(Fragment.lit("select \"code\"\nfrom \"public\".\"title_domain\"\nwhere \"code\" = "), Fragment.encode(TitleDomainId.pgType, code), Fragment.lit("")).query(TitleDomainRow._rowParser.first()).runUnchecked(c) override fun selectByIds( codes: Array, c: Connection - ): List = Fragment.interpolate(Fragment.lit("select \"code\"\nfrom \"public\".\"title_domain\"\nwhere \"code\" = ANY("), Fragment.encode(TitleDomainId.dbTypeArray, codes), Fragment.lit(")")).query(TitleDomainRow._rowParser.all()).runUnchecked(c) + ): List = Fragment.interpolate(Fragment.lit("select \"code\"\nfrom \"public\".\"title_domain\"\nwhere \"code\" = ANY("), Fragment.encode(TitleDomainId.pgTypeArray, codes), Fragment.lit(")")).query(TitleDomainRow._rowParser.all()).runUnchecked(c) override fun selectByIdsTracked( codes: Array, @@ -72,7 +72,7 @@ class TitleDomainRepoImpl() : TitleDomainRepo { override fun upsert( unsaved: TitleDomainRow, c: Connection - ): TitleDomainRow = Fragment.interpolate(Fragment.lit("insert into \"public\".\"title_domain\"(\"code\")\nvalues ("), Fragment.encode(TitleDomainId.dbType, unsaved.code), Fragment.lit("::text)\non conflict (\"code\")\ndo update set \"code\" = EXCLUDED.\"code\"\nreturning \"code\"")) + ): TitleDomainRow = Fragment.interpolate(Fragment.lit("insert into \"public\".\"title_domain\"(\"code\")\nvalues ("), Fragment.encode(TitleDomainId.pgType, unsaved.code), Fragment.lit("::text)\non conflict (\"code\")\ndo update set \"code\" = EXCLUDED.\"code\"\nreturning \"code\"")) .updateReturning(TitleDomainRow._rowParser.exactlyOne()) .runUnchecked(c) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/title_domain/TitleDomainRow.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/title_domain/TitleDomainRow.kt index 50b8617e75..819f4eae2a 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/title_domain/TitleDomainRow.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/title_domain/TitleDomainRow.kt @@ -19,7 +19,7 @@ data class TitleDomainRow(val code: TitleDomainId) : Tuple1 { fun id(): TitleDomainId = code companion object { - val _rowParser: RowParser = RowParsers.of(TitleDomainId.dbType, { t0 -> TitleDomainRow(t0) }, { row -> arrayOf(row.code) }) + val _rowParser: RowParser = RowParsers.of(TitleDomainId.pgType, { t0 -> TitleDomainRow(t0) }, { row -> arrayOf(row.code) }) val pgText: PgText = PgText.from(_rowParser.underlying) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/titledperson/TitledpersonFields.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/titledperson/TitledpersonFields.kt index 7267bfd57a..ebc654569b 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/titledperson/TitledpersonFields.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/titledperson/TitledpersonFields.kt @@ -42,9 +42,9 @@ data class TitledpersonFields(val _path: List) : TupleExpr3 = TitledpersonRow._rowParser.underlying - fun title(): Field = Field(_path, "title", TitledpersonRow::title, null, null, { row, value -> row.copy(title = value) }, TitleId.dbType) + fun title(): Field = Field(_path, "title", TitledpersonRow::title, null, null, { row, value -> row.copy(title = value) }, TitleId.pgType) - fun titleShort(): Field = Field(_path, "title_short", TitledpersonRow::titleShort, null, "text", { row, value -> row.copy(titleShort = value) }, TitleDomainId.dbType) + fun titleShort(): Field = Field(_path, "title_short", TitledpersonRow::titleShort, null, "text", { row, value -> row.copy(titleShort = value) }, TitleDomainId.pgType) override fun withPaths(_path: List): RelationStructure = TitledpersonFields(_path) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/titledperson/TitledpersonRepoImpl.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/titledperson/TitledpersonRepoImpl.kt index 3404c0e2b1..6a65a502af 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/titledperson/TitledpersonRepoImpl.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/titledperson/TitledpersonRepoImpl.kt @@ -24,7 +24,7 @@ class TitledpersonRepoImpl() : TitledpersonRepo { override fun insert( unsaved: TitledpersonRow, c: Connection - ): TitledpersonRow = Fragment.interpolate(Fragment.lit("insert into \"public\".\"titledperson\"(\"title_short\", \"title\", \"name\")\nvalues ("), Fragment.encode(TitleDomainId.dbType, unsaved.titleShort), Fragment.lit("::text, "), Fragment.encode(TitleId.dbType, unsaved.title), Fragment.lit(", "), Fragment.encode(PgTypes.text, unsaved.name), Fragment.lit(")\nRETURNING \"title_short\", \"title\", \"name\"\n")) + ): TitledpersonRow = Fragment.interpolate(Fragment.lit("insert into \"public\".\"titledperson\"(\"title_short\", \"title\", \"name\")\nvalues ("), Fragment.encode(TitleDomainId.pgType, unsaved.titleShort), Fragment.lit("::text, "), Fragment.encode(TitleId.pgType, unsaved.title), Fragment.lit(", "), Fragment.encode(PgTypes.text, unsaved.name), Fragment.lit(")\nRETURNING \"title_short\", \"title\", \"name\"\n")) .updateReturning(TitledpersonRow._rowParser.exactlyOne()).runUnchecked(c) override fun insertStreaming( diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/titledperson/TitledpersonRow.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/titledperson/TitledpersonRow.kt index ed4fd96247..f7c868f5c5 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/titledperson/TitledpersonRow.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/titledperson/TitledpersonRow.kt @@ -29,7 +29,7 @@ data class TitledpersonRow( override fun _3(): String = name companion object { - val _rowParser: RowParser = RowParsers.of(TitleDomainId.dbType, TitleId.dbType, PgTypes.text, { t0, t1, t2 -> TitledpersonRow(t0, t1, t2) }, { row -> arrayOf(row.titleShort, row.title, row.name) }) + val _rowParser: RowParser = RowParsers.of(TitleDomainId.pgType, TitleId.pgType, PgTypes.text, { t0, t1, t2 -> TitledpersonRow(t0, t1, t2) }, { row -> arrayOf(row.titleShort, row.title, row.name) }) val pgText: PgText = PgText.from(_rowParser.underlying) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/users/UsersFields.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/users/UsersFields.kt index 048537ac52..f52ff6666c 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/users/UsersFields.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/users/UsersFields.kt @@ -51,7 +51,7 @@ data class UsersFields(val _path: List) : TupleExpr7 = UsersRow._rowParser.underlying - fun userId(): IdField = IdField(_path, "user_id", UsersRow::userId, null, "uuid", { row, value -> row.copy(userId = value) }, UsersId.dbType) + fun userId(): IdField = IdField(_path, "user_id", UsersRow::userId, null, "uuid", { row, value -> row.copy(userId = value) }, UsersId.pgType) fun verifiedOn(): OptField = OptField(_path, "verified_on", UsersRow::verifiedOn, null, "timestamptz", { row, value -> row.copy(verifiedOn = value) }, PgTypes.timestamptz) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/users/UsersId.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/users/UsersId.kt index 85cd152944..2a07847c4a 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/users/UsersId.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/users/UsersId.kt @@ -22,10 +22,10 @@ data class UsersId(@field:JsonValue val value: UUID) { val bijection: Bijection = Bijection.of(UsersId::value, ::UsersId) - val dbType: PgType = + val pgType: PgType = PgTypes.uuid.bimap(::UsersId, UsersId::value) - val dbTypeArray: PgType> = + val pgTypeArray: PgType> = PgTypes.uuidArray.bimap({ xs -> arrayMap.map(xs, ::UsersId, UsersId::class.java) }, { xs -> arrayMap.map(xs, UsersId::value, UUID::class.java) }) } } \ No newline at end of file diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/users/UsersRepoImpl.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/users/UsersRepoImpl.kt index 9afa290688..1d5e1c9fe8 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/users/UsersRepoImpl.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/users/UsersRepoImpl.kt @@ -27,19 +27,19 @@ class UsersRepoImpl() : UsersRepo { override fun deleteById( userId: UsersId, c: Connection - ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"public\".\"users\" where \"user_id\" = "), Fragment.encode(UsersId.dbType, userId), Fragment.lit("")).update().runUnchecked(c) > 0 + ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"public\".\"users\" where \"user_id\" = "), Fragment.encode(UsersId.pgType, userId), Fragment.lit("")).update().runUnchecked(c) > 0 override fun deleteByIds( userIds: Array, c: Connection - ): Int = Fragment.interpolate(Fragment.lit("delete\nfrom \"public\".\"users\"\nwhere \"user_id\" = ANY("), Fragment.encode(UsersId.dbTypeArray, userIds), Fragment.lit(")")) + ): Int = Fragment.interpolate(Fragment.lit("delete\nfrom \"public\".\"users\"\nwhere \"user_id\" = ANY("), Fragment.encode(UsersId.pgTypeArray, userIds), Fragment.lit(")")) .update() .runUnchecked(c) override fun insert( unsaved: UsersRow, c: Connection - ): UsersRow = Fragment.interpolate(Fragment.lit("insert into \"public\".\"users\"(\"user_id\", \"name\", \"last_name\", \"email\", \"password\", \"created_at\", \"verified_on\")\nvalues ("), Fragment.encode(UsersId.dbType, unsaved.userId), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.text, unsaved.name), Fragment.lit(", "), Fragment.encode(PgTypes.text.nullable(), unsaved.lastName), Fragment.lit(", "), Fragment.encode(PgTypes.unknown, unsaved.email), Fragment.lit("::citext, "), Fragment.encode(PgTypes.text, unsaved.password), Fragment.lit(", "), Fragment.encode(PgTypes.timestamptz, unsaved.createdAt), Fragment.lit("::timestamptz, "), Fragment.encode(PgTypes.timestamptz.nullable(), unsaved.verifiedOn), Fragment.lit("::timestamptz)\nRETURNING \"user_id\", \"name\", \"last_name\", \"email\"::text, \"password\", \"created_at\", \"verified_on\"\n")) + ): UsersRow = Fragment.interpolate(Fragment.lit("insert into \"public\".\"users\"(\"user_id\", \"name\", \"last_name\", \"email\", \"password\", \"created_at\", \"verified_on\")\nvalues ("), Fragment.encode(UsersId.pgType, unsaved.userId), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.text, unsaved.name), Fragment.lit(", "), Fragment.encode(PgTypes.text.nullable(), unsaved.lastName), Fragment.lit(", "), Fragment.encode(PgTypes.unknown, unsaved.email), Fragment.lit("::citext, "), Fragment.encode(PgTypes.text, unsaved.password), Fragment.lit(", "), Fragment.encode(PgTypes.timestamptz, unsaved.createdAt), Fragment.lit("::timestamptz, "), Fragment.encode(PgTypes.timestamptz.nullable(), unsaved.verifiedOn), Fragment.lit("::timestamptz)\nRETURNING \"user_id\", \"name\", \"last_name\", \"email\"::text, \"password\", \"created_at\", \"verified_on\"\n")) .updateReturning(UsersRow._rowParser.exactlyOne()).runUnchecked(c) override fun insert( @@ -49,7 +49,7 @@ class UsersRepoImpl() : UsersRepo { val columns: ArrayList = ArrayList() val values: ArrayList = ArrayList() columns.add(Fragment.lit("\"user_id\"")) - values.add(Fragment.interpolate(Fragment.encode(UsersId.dbType, unsaved.userId), Fragment.lit("::uuid"))) + values.add(Fragment.interpolate(Fragment.encode(UsersId.pgType, unsaved.userId), Fragment.lit("::uuid"))) columns.add(Fragment.lit("\"name\"")) values.add(Fragment.interpolate(Fragment.encode(PgTypes.text, unsaved.name), Fragment.lit(""))) columns.add(Fragment.lit("\"last_name\"")) @@ -89,12 +89,12 @@ class UsersRepoImpl() : UsersRepo { override fun selectById( userId: UsersId, c: Connection - ): UsersRow? = Fragment.interpolate(Fragment.lit("select \"user_id\", \"name\", \"last_name\", \"email\"::text, \"password\", \"created_at\", \"verified_on\"\nfrom \"public\".\"users\"\nwhere \"user_id\" = "), Fragment.encode(UsersId.dbType, userId), Fragment.lit("")).query(UsersRow._rowParser.first()).runUnchecked(c) + ): UsersRow? = Fragment.interpolate(Fragment.lit("select \"user_id\", \"name\", \"last_name\", \"email\"::text, \"password\", \"created_at\", \"verified_on\"\nfrom \"public\".\"users\"\nwhere \"user_id\" = "), Fragment.encode(UsersId.pgType, userId), Fragment.lit("")).query(UsersRow._rowParser.first()).runUnchecked(c) override fun selectByIds( userIds: Array, c: Connection - ): List = Fragment.interpolate(Fragment.lit("select \"user_id\", \"name\", \"last_name\", \"email\"::text, \"password\", \"created_at\", \"verified_on\"\nfrom \"public\".\"users\"\nwhere \"user_id\" = ANY("), Fragment.encode(UsersId.dbTypeArray, userIds), Fragment.lit(")")).query(UsersRow._rowParser.all()).runUnchecked(c) + ): List = Fragment.interpolate(Fragment.lit("select \"user_id\", \"name\", \"last_name\", \"email\"::text, \"password\", \"created_at\", \"verified_on\"\nfrom \"public\".\"users\"\nwhere \"user_id\" = ANY("), Fragment.encode(UsersId.pgTypeArray, userIds), Fragment.lit(")")).query(UsersRow._rowParser.all()).runUnchecked(c) override fun selectByIdsTracked( userIds: Array, @@ -117,13 +117,13 @@ class UsersRepoImpl() : UsersRepo { c: Connection ): Boolean { val userId: UsersId = row.userId - return Fragment.interpolate(Fragment.lit("update \"public\".\"users\"\nset \"name\" = "), Fragment.encode(PgTypes.text, row.name), Fragment.lit(",\n\"last_name\" = "), Fragment.encode(PgTypes.text.nullable(), row.lastName), Fragment.lit(",\n\"email\" = "), Fragment.encode(PgTypes.unknown, row.email), Fragment.lit("::citext,\n\"password\" = "), Fragment.encode(PgTypes.text, row.password), Fragment.lit(",\n\"created_at\" = "), Fragment.encode(PgTypes.timestamptz, row.createdAt), Fragment.lit("::timestamptz,\n\"verified_on\" = "), Fragment.encode(PgTypes.timestamptz.nullable(), row.verifiedOn), Fragment.lit("::timestamptz\nwhere \"user_id\" = "), Fragment.encode(UsersId.dbType, userId), Fragment.lit("")).update().runUnchecked(c) > 0 + return Fragment.interpolate(Fragment.lit("update \"public\".\"users\"\nset \"name\" = "), Fragment.encode(PgTypes.text, row.name), Fragment.lit(",\n\"last_name\" = "), Fragment.encode(PgTypes.text.nullable(), row.lastName), Fragment.lit(",\n\"email\" = "), Fragment.encode(PgTypes.unknown, row.email), Fragment.lit("::citext,\n\"password\" = "), Fragment.encode(PgTypes.text, row.password), Fragment.lit(",\n\"created_at\" = "), Fragment.encode(PgTypes.timestamptz, row.createdAt), Fragment.lit("::timestamptz,\n\"verified_on\" = "), Fragment.encode(PgTypes.timestamptz.nullable(), row.verifiedOn), Fragment.lit("::timestamptz\nwhere \"user_id\" = "), Fragment.encode(UsersId.pgType, userId), Fragment.lit("")).update().runUnchecked(c) > 0 } override fun upsert( unsaved: UsersRow, c: Connection - ): UsersRow = Fragment.interpolate(Fragment.lit("insert into \"public\".\"users\"(\"user_id\", \"name\", \"last_name\", \"email\", \"password\", \"created_at\", \"verified_on\")\nvalues ("), Fragment.encode(UsersId.dbType, unsaved.userId), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.text, unsaved.name), Fragment.lit(", "), Fragment.encode(PgTypes.text.nullable(), unsaved.lastName), Fragment.lit(", "), Fragment.encode(PgTypes.unknown, unsaved.email), Fragment.lit("::citext, "), Fragment.encode(PgTypes.text, unsaved.password), Fragment.lit(", "), Fragment.encode(PgTypes.timestamptz, unsaved.createdAt), Fragment.lit("::timestamptz, "), Fragment.encode(PgTypes.timestamptz.nullable(), unsaved.verifiedOn), Fragment.lit("::timestamptz)\non conflict (\"user_id\")\ndo update set\n \"name\" = EXCLUDED.\"name\",\n\"last_name\" = EXCLUDED.\"last_name\",\n\"email\" = EXCLUDED.\"email\",\n\"password\" = EXCLUDED.\"password\",\n\"created_at\" = EXCLUDED.\"created_at\",\n\"verified_on\" = EXCLUDED.\"verified_on\"\nreturning \"user_id\", \"name\", \"last_name\", \"email\"::text, \"password\", \"created_at\", \"verified_on\"")) + ): UsersRow = Fragment.interpolate(Fragment.lit("insert into \"public\".\"users\"(\"user_id\", \"name\", \"last_name\", \"email\", \"password\", \"created_at\", \"verified_on\")\nvalues ("), Fragment.encode(UsersId.pgType, unsaved.userId), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.text, unsaved.name), Fragment.lit(", "), Fragment.encode(PgTypes.text.nullable(), unsaved.lastName), Fragment.lit(", "), Fragment.encode(PgTypes.unknown, unsaved.email), Fragment.lit("::citext, "), Fragment.encode(PgTypes.text, unsaved.password), Fragment.lit(", "), Fragment.encode(PgTypes.timestamptz, unsaved.createdAt), Fragment.lit("::timestamptz, "), Fragment.encode(PgTypes.timestamptz.nullable(), unsaved.verifiedOn), Fragment.lit("::timestamptz)\non conflict (\"user_id\")\ndo update set\n \"name\" = EXCLUDED.\"name\",\n\"last_name\" = EXCLUDED.\"last_name\",\n\"email\" = EXCLUDED.\"email\",\n\"password\" = EXCLUDED.\"password\",\n\"created_at\" = EXCLUDED.\"created_at\",\n\"verified_on\" = EXCLUDED.\"verified_on\"\nreturning \"user_id\", \"name\", \"last_name\", \"email\"::text, \"password\", \"created_at\", \"verified_on\"")) .updateReturning(UsersRow._rowParser.exactlyOne()) .runUnchecked(c) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/users/UsersRow.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/users/UsersRow.kt index 5af9324200..35d4c1fc55 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/users/UsersRow.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/users/UsersRow.kt @@ -48,7 +48,7 @@ data class UsersRow( fun toUnsavedRow(createdAt: Defaulted = Defaulted.Provided(this.createdAt)): UsersRowUnsaved = UsersRowUnsaved(userId, name, lastName, email, password, verifiedOn, createdAt) companion object { - val _rowParser: RowParser = RowParsers.of(UsersId.dbType, PgTypes.text, PgTypes.text.nullable(), PgTypes.unknown, PgTypes.text, PgTypes.timestamptz, PgTypes.timestamptz.nullable(), { t0, t1, t2, t3, t4, t5, t6 -> UsersRow(t0, t1, t2, t3, t4, t5, t6) }, { row -> arrayOf(row.userId, row.name, row.lastName, row.email, row.password, row.createdAt, row.verifiedOn) }) + val _rowParser: RowParser = RowParsers.of(UsersId.pgType, PgTypes.text, PgTypes.text.nullable(), PgTypes.unknown, PgTypes.text, PgTypes.timestamptz, PgTypes.timestamptz.nullable(), { t0, t1, t2, t3, t4, t5, t6 -> UsersRow(t0, t1, t2, t3, t4, t5, t6) }, { row -> arrayOf(row.userId, row.name, row.lastName, row.email, row.password, row.createdAt, row.verifiedOn) }) val pgText: PgText = PgText.from(_rowParser.underlying) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/users/UsersRowUnsaved.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/users/UsersRowUnsaved.kt index a313b95d25..654b14f33b 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/users/UsersRowUnsaved.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/public/users/UsersRowUnsaved.kt @@ -29,7 +29,7 @@ data class UsersRowUnsaved( companion object { val pgText: PgText = - PgText.instance({ row, sb -> UsersId.dbType.text().unsafeEncode(row.userId, sb) + PgText.instance({ row, sb -> UsersId.pgType.text().unsafeEncode(row.userId, sb) sb.append(PgText.DELIMETER) PgTypes.text.text().unsafeEncode(row.name, sb) sb.append(PgText.DELIMETER) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonFields.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonFields.kt index f235e43c69..0fb800d806 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonFields.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonFields.kt @@ -51,7 +51,7 @@ data class SalespersonFields(val _path: List) : TupleExpr9 = Field(_path, "bonus", SalespersonRow::bonus, null, "numeric", { row, value -> row.copy(bonus = value) }, PgTypes.numeric) - fun businessentityid(): IdField = IdField(_path, "businessentityid", SalespersonRow::businessentityid, null, "int4", { row, value -> row.copy(businessentityid = value) }, BusinessentityId.dbType) + fun businessentityid(): IdField = IdField(_path, "businessentityid", SalespersonRow::businessentityid, null, "int4", { row, value -> row.copy(businessentityid = value) }, BusinessentityId.pgType) override fun columns(): List> = listOf(this.businessentityid().underlying, this.territoryid().underlying, this.salesquota().underlying, this.bonus().underlying, this.commissionpct().underlying, this.salesytd().underlying, this.saleslastyear().underlying, this.rowguid().underlying, this.modifieddate().underlying) @@ -73,7 +73,7 @@ data class SalespersonFields(val _path: List) : TupleExpr9 = Field(_path, "salesytd", SalespersonRow::salesytd, null, "numeric", { row, value -> row.copy(salesytd = value) }, PgTypes.numeric) - fun territoryid(): OptField = OptField(_path, "territoryid", SalespersonRow::territoryid, null, "int4", { row, value -> row.copy(territoryid = value) }, SalesterritoryId.dbType) + fun territoryid(): OptField = OptField(_path, "territoryid", SalespersonRow::territoryid, null, "int4", { row, value -> row.copy(territoryid = value) }, SalesterritoryId.pgType) override fun withPaths(_path: List): RelationStructure = SalespersonFields(_path) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRepoImpl.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRepoImpl.kt index 465fecbb8f..e5bc271d78 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRepoImpl.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRepoImpl.kt @@ -28,19 +28,19 @@ class SalespersonRepoImpl() : SalespersonRepo { override fun deleteById( businessentityid: BusinessentityId, c: Connection - ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"sales\".\"salesperson\" where \"businessentityid\" = "), Fragment.encode(BusinessentityId.dbType, businessentityid), Fragment.lit("")).update().runUnchecked(c) > 0 + ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"sales\".\"salesperson\" where \"businessentityid\" = "), Fragment.encode(BusinessentityId.pgType, businessentityid), Fragment.lit("")).update().runUnchecked(c) > 0 override fun deleteByIds( businessentityids: Array, c: Connection - ): Int = Fragment.interpolate(Fragment.lit("delete\nfrom \"sales\".\"salesperson\"\nwhere \"businessentityid\" = ANY("), Fragment.encode(BusinessentityId.dbTypeArray, businessentityids), Fragment.lit(")")) + ): Int = Fragment.interpolate(Fragment.lit("delete\nfrom \"sales\".\"salesperson\"\nwhere \"businessentityid\" = ANY("), Fragment.encode(BusinessentityId.pgTypeArray, businessentityids), Fragment.lit(")")) .update() .runUnchecked(c) override fun insert( unsaved: SalespersonRow, c: Connection - ): SalespersonRow = Fragment.interpolate(Fragment.lit("insert into \"sales\".\"salesperson\"(\"businessentityid\", \"territoryid\", \"salesquota\", \"bonus\", \"commissionpct\", \"salesytd\", \"saleslastyear\", \"rowguid\", \"modifieddate\")\nvalues ("), Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid), Fragment.lit("::int4, "), Fragment.encode(SalesterritoryId.dbType.nullable(), unsaved.territoryid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.numeric.nullable(), unsaved.salesquota), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.bonus), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.commissionpct), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.salesytd), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.saleslastyear), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\nRETURNING \"businessentityid\", \"territoryid\", \"salesquota\", \"bonus\", \"commissionpct\", \"salesytd\", \"saleslastyear\", \"rowguid\", \"modifieddate\"\n")) + ): SalespersonRow = Fragment.interpolate(Fragment.lit("insert into \"sales\".\"salesperson\"(\"businessentityid\", \"territoryid\", \"salesquota\", \"bonus\", \"commissionpct\", \"salesytd\", \"saleslastyear\", \"rowguid\", \"modifieddate\")\nvalues ("), Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid), Fragment.lit("::int4, "), Fragment.encode(SalesterritoryId.pgType.nullable(), unsaved.territoryid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.numeric.nullable(), unsaved.salesquota), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.bonus), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.commissionpct), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.salesytd), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.saleslastyear), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\nRETURNING \"businessentityid\", \"territoryid\", \"salesquota\", \"bonus\", \"commissionpct\", \"salesytd\", \"saleslastyear\", \"rowguid\", \"modifieddate\"\n")) .updateReturning(SalespersonRow._rowParser.exactlyOne()).runUnchecked(c) override fun insert( @@ -50,9 +50,9 @@ class SalespersonRepoImpl() : SalespersonRepo { val columns: ArrayList = ArrayList() val values: ArrayList = ArrayList() columns.add(Fragment.lit("\"businessentityid\"")) - values.add(Fragment.interpolate(Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid), Fragment.lit("::int4"))) + values.add(Fragment.interpolate(Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid), Fragment.lit("::int4"))) columns.add(Fragment.lit("\"territoryid\"")) - values.add(Fragment.interpolate(Fragment.encode(SalesterritoryId.dbType.nullable(), unsaved.territoryid), Fragment.lit("::int4"))) + values.add(Fragment.interpolate(Fragment.encode(SalesterritoryId.pgType.nullable(), unsaved.territoryid), Fragment.lit("::int4"))) columns.add(Fragment.lit("\"salesquota\"")) values.add(Fragment.interpolate(Fragment.encode(PgTypes.numeric.nullable(), unsaved.salesquota), Fragment.lit("::numeric"))) unsaved.bonus.visit( @@ -109,12 +109,12 @@ class SalespersonRepoImpl() : SalespersonRepo { override fun selectById( businessentityid: BusinessentityId, c: Connection - ): SalespersonRow? = Fragment.interpolate(Fragment.lit("select \"businessentityid\", \"territoryid\", \"salesquota\", \"bonus\", \"commissionpct\", \"salesytd\", \"saleslastyear\", \"rowguid\", \"modifieddate\"\nfrom \"sales\".\"salesperson\"\nwhere \"businessentityid\" = "), Fragment.encode(BusinessentityId.dbType, businessentityid), Fragment.lit("")).query(SalespersonRow._rowParser.first()).runUnchecked(c) + ): SalespersonRow? = Fragment.interpolate(Fragment.lit("select \"businessentityid\", \"territoryid\", \"salesquota\", \"bonus\", \"commissionpct\", \"salesytd\", \"saleslastyear\", \"rowguid\", \"modifieddate\"\nfrom \"sales\".\"salesperson\"\nwhere \"businessentityid\" = "), Fragment.encode(BusinessentityId.pgType, businessentityid), Fragment.lit("")).query(SalespersonRow._rowParser.first()).runUnchecked(c) override fun selectByIds( businessentityids: Array, c: Connection - ): List = Fragment.interpolate(Fragment.lit("select \"businessentityid\", \"territoryid\", \"salesquota\", \"bonus\", \"commissionpct\", \"salesytd\", \"saleslastyear\", \"rowguid\", \"modifieddate\"\nfrom \"sales\".\"salesperson\"\nwhere \"businessentityid\" = ANY("), Fragment.encode(BusinessentityId.dbTypeArray, businessentityids), Fragment.lit(")")).query(SalespersonRow._rowParser.all()).runUnchecked(c) + ): List = Fragment.interpolate(Fragment.lit("select \"businessentityid\", \"territoryid\", \"salesquota\", \"bonus\", \"commissionpct\", \"salesytd\", \"saleslastyear\", \"rowguid\", \"modifieddate\"\nfrom \"sales\".\"salesperson\"\nwhere \"businessentityid\" = ANY("), Fragment.encode(BusinessentityId.pgTypeArray, businessentityids), Fragment.lit(")")).query(SalespersonRow._rowParser.all()).runUnchecked(c) override fun selectByIdsTracked( businessentityids: Array, @@ -132,13 +132,13 @@ class SalespersonRepoImpl() : SalespersonRepo { c: Connection ): Boolean { val businessentityid: BusinessentityId = row.businessentityid - return Fragment.interpolate(Fragment.lit("update \"sales\".\"salesperson\"\nset \"territoryid\" = "), Fragment.encode(SalesterritoryId.dbType.nullable(), row.territoryid), Fragment.lit("::int4,\n\"salesquota\" = "), Fragment.encode(PgTypes.numeric.nullable(), row.salesquota), Fragment.lit("::numeric,\n\"bonus\" = "), Fragment.encode(PgTypes.numeric, row.bonus), Fragment.lit("::numeric,\n\"commissionpct\" = "), Fragment.encode(PgTypes.numeric, row.commissionpct), Fragment.lit("::numeric,\n\"salesytd\" = "), Fragment.encode(PgTypes.numeric, row.salesytd), Fragment.lit("::numeric,\n\"saleslastyear\" = "), Fragment.encode(PgTypes.numeric, row.saleslastyear), Fragment.lit("::numeric,\n\"rowguid\" = "), Fragment.encode(PgTypes.uuid, row.rowguid), Fragment.lit("::uuid,\n\"modifieddate\" = "), Fragment.encode(PgTypes.timestamp, row.modifieddate), Fragment.lit("::timestamp\nwhere \"businessentityid\" = "), Fragment.encode(BusinessentityId.dbType, businessentityid), Fragment.lit("")).update().runUnchecked(c) > 0 + return Fragment.interpolate(Fragment.lit("update \"sales\".\"salesperson\"\nset \"territoryid\" = "), Fragment.encode(SalesterritoryId.pgType.nullable(), row.territoryid), Fragment.lit("::int4,\n\"salesquota\" = "), Fragment.encode(PgTypes.numeric.nullable(), row.salesquota), Fragment.lit("::numeric,\n\"bonus\" = "), Fragment.encode(PgTypes.numeric, row.bonus), Fragment.lit("::numeric,\n\"commissionpct\" = "), Fragment.encode(PgTypes.numeric, row.commissionpct), Fragment.lit("::numeric,\n\"salesytd\" = "), Fragment.encode(PgTypes.numeric, row.salesytd), Fragment.lit("::numeric,\n\"saleslastyear\" = "), Fragment.encode(PgTypes.numeric, row.saleslastyear), Fragment.lit("::numeric,\n\"rowguid\" = "), Fragment.encode(PgTypes.uuid, row.rowguid), Fragment.lit("::uuid,\n\"modifieddate\" = "), Fragment.encode(PgTypes.timestamp, row.modifieddate), Fragment.lit("::timestamp\nwhere \"businessentityid\" = "), Fragment.encode(BusinessentityId.pgType, businessentityid), Fragment.lit("")).update().runUnchecked(c) > 0 } override fun upsert( unsaved: SalespersonRow, c: Connection - ): SalespersonRow = Fragment.interpolate(Fragment.lit("insert into \"sales\".\"salesperson\"(\"businessentityid\", \"territoryid\", \"salesquota\", \"bonus\", \"commissionpct\", \"salesytd\", \"saleslastyear\", \"rowguid\", \"modifieddate\")\nvalues ("), Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid), Fragment.lit("::int4, "), Fragment.encode(SalesterritoryId.dbType.nullable(), unsaved.territoryid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.numeric.nullable(), unsaved.salesquota), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.bonus), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.commissionpct), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.salesytd), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.saleslastyear), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\non conflict (\"businessentityid\")\ndo update set\n \"territoryid\" = EXCLUDED.\"territoryid\",\n\"salesquota\" = EXCLUDED.\"salesquota\",\n\"bonus\" = EXCLUDED.\"bonus\",\n\"commissionpct\" = EXCLUDED.\"commissionpct\",\n\"salesytd\" = EXCLUDED.\"salesytd\",\n\"saleslastyear\" = EXCLUDED.\"saleslastyear\",\n\"rowguid\" = EXCLUDED.\"rowguid\",\n\"modifieddate\" = EXCLUDED.\"modifieddate\"\nreturning \"businessentityid\", \"territoryid\", \"salesquota\", \"bonus\", \"commissionpct\", \"salesytd\", \"saleslastyear\", \"rowguid\", \"modifieddate\"")) + ): SalespersonRow = Fragment.interpolate(Fragment.lit("insert into \"sales\".\"salesperson\"(\"businessentityid\", \"territoryid\", \"salesquota\", \"bonus\", \"commissionpct\", \"salesytd\", \"saleslastyear\", \"rowguid\", \"modifieddate\")\nvalues ("), Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid), Fragment.lit("::int4, "), Fragment.encode(SalesterritoryId.pgType.nullable(), unsaved.territoryid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.numeric.nullable(), unsaved.salesquota), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.bonus), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.commissionpct), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.salesytd), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.saleslastyear), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\non conflict (\"businessentityid\")\ndo update set\n \"territoryid\" = EXCLUDED.\"territoryid\",\n\"salesquota\" = EXCLUDED.\"salesquota\",\n\"bonus\" = EXCLUDED.\"bonus\",\n\"commissionpct\" = EXCLUDED.\"commissionpct\",\n\"salesytd\" = EXCLUDED.\"salesytd\",\n\"saleslastyear\" = EXCLUDED.\"saleslastyear\",\n\"rowguid\" = EXCLUDED.\"rowguid\",\n\"modifieddate\" = EXCLUDED.\"modifieddate\"\nreturning \"businessentityid\", \"territoryid\", \"salesquota\", \"bonus\", \"commissionpct\", \"salesytd\", \"saleslastyear\", \"rowguid\", \"modifieddate\"")) .updateReturning(SalespersonRow._rowParser.exactlyOne()) .runUnchecked(c) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRow.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRow.kt index 14152e1f17..a629924f6a 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRow.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRow.kt @@ -90,7 +90,7 @@ data class SalespersonRow( ): SalespersonRowUnsaved = SalespersonRowUnsaved(businessentityid, territoryid, salesquota, bonus, commissionpct, salesytd, saleslastyear, rowguid, modifieddate) companion object { - val _rowParser: RowParser = RowParsers.of(BusinessentityId.dbType, SalesterritoryId.dbType.nullable(), PgTypes.numeric.nullable(), PgTypes.numeric, PgTypes.numeric, PgTypes.numeric, PgTypes.numeric, PgTypes.uuid, PgTypes.timestamp, { t0, t1, t2, t3, t4, t5, t6, t7, t8 -> SalespersonRow(t0, t1, t2, t3, t4, t5, t6, t7, t8) }, { row -> arrayOf(row.businessentityid, row.territoryid, row.salesquota, row.bonus, row.commissionpct, row.salesytd, row.saleslastyear, row.rowguid, row.modifieddate) }) + val _rowParser: RowParser = RowParsers.of(BusinessentityId.pgType, SalesterritoryId.pgType.nullable(), PgTypes.numeric.nullable(), PgTypes.numeric, PgTypes.numeric, PgTypes.numeric, PgTypes.numeric, PgTypes.uuid, PgTypes.timestamp, { t0, t1, t2, t3, t4, t5, t6, t7, t8 -> SalespersonRow(t0, t1, t2, t3, t4, t5, t6, t7, t8) }, { row -> arrayOf(row.businessentityid, row.territoryid, row.salesquota, row.bonus, row.commissionpct, row.salesytd, row.saleslastyear, row.rowguid, row.modifieddate) }) val pgText: PgText = PgText.from(_rowParser.underlying) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRowUnsaved.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRowUnsaved.kt index 37b9d32c6b..bcc55ff69c 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRowUnsaved.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRowUnsaved.kt @@ -66,9 +66,9 @@ data class SalespersonRowUnsaved( companion object { val pgText: PgText = - PgText.instance({ row, sb -> BusinessentityId.dbType.text().unsafeEncode(row.businessentityid, sb) + PgText.instance({ row, sb -> BusinessentityId.pgType.text().unsafeEncode(row.businessentityid, sb) sb.append(PgText.DELIMETER) - SalesterritoryId.dbType.nullable().text().unsafeEncode(row.territoryid, sb) + SalesterritoryId.pgType.nullable().text().unsafeEncode(row.territoryid, sb) sb.append(PgText.DELIMETER) PgTypes.numeric.nullable().text().unsafeEncode(row.salesquota, sb) sb.append(PgText.DELIMETER) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryFields.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryFields.kt index e38c74e10d..af6b110476 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryFields.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryFields.kt @@ -54,7 +54,7 @@ data class SalesterritoryFields(val _path: List) : TupleExpr10 = Field(_path, "costytd", SalesterritoryRow::costytd, null, "numeric", { row, value -> row.copy(costytd = value) }, PgTypes.numeric) - fun countryregioncode(): Field = Field(_path, "countryregioncode", SalesterritoryRow::countryregioncode, null, null, { row, value -> row.copy(countryregioncode = value) }, CountryregionId.dbType) + fun countryregioncode(): Field = Field(_path, "countryregioncode", SalesterritoryRow::countryregioncode, null, null, { row, value -> row.copy(countryregioncode = value) }, CountryregionId.pgType) fun fkPersonCountryregion(): ForeignKey = ForeignKey.of("sales.FK_SalesTerritory_CountryRegion_CountryRegionCode").withColumnPair(countryregioncode(), CountryregionFields::countryregioncode) @@ -62,7 +62,7 @@ data class SalesterritoryFields(val _path: List) : TupleExpr10 = Field(_path, "modifieddate", SalesterritoryRow::modifieddate, null, "timestamp", { row, value -> row.copy(modifieddate = value) }, PgTypes.timestamp) - fun name(): Field = Field(_path, "name", SalesterritoryRow::name, null, "varchar", { row, value -> row.copy(name = value) }, Name.dbType) + fun name(): Field = Field(_path, "name", SalesterritoryRow::name, null, "varchar", { row, value -> row.copy(name = value) }, Name.pgType) override fun rowParser(): RowParser = SalesterritoryRow._rowParser.underlying @@ -72,7 +72,7 @@ data class SalesterritoryFields(val _path: List) : TupleExpr10 = Field(_path, "salesytd", SalesterritoryRow::salesytd, null, "numeric", { row, value -> row.copy(salesytd = value) }, PgTypes.numeric) - fun territoryid(): IdField = IdField(_path, "territoryid", SalesterritoryRow::territoryid, null, "int4", { row, value -> row.copy(territoryid = value) }, SalesterritoryId.dbType) + fun territoryid(): IdField = IdField(_path, "territoryid", SalesterritoryRow::territoryid, null, "int4", { row, value -> row.copy(territoryid = value) }, SalesterritoryId.pgType) override fun withPaths(_path: List): RelationStructure = SalesterritoryFields(_path) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryId.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryId.kt index ae0b05c49d..0ae2cd78da 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryId.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryId.kt @@ -22,10 +22,10 @@ data class SalesterritoryId(@field:JsonValue val value: Int) { val bijection: Bijection = Bijection.of(SalesterritoryId::value, ::SalesterritoryId) - val dbType: PgType = + val pgType: PgType = KotlinDbTypes.PgTypes.int4.bimap(::SalesterritoryId, SalesterritoryId::value) - val dbTypeArray: PgType> = + val pgTypeArray: PgType> = PgTypes.int4Array.bimap({ xs -> arrayMap.map(xs, ::SalesterritoryId, SalesterritoryId::class.java) }, { xs -> arrayMap.map(xs, SalesterritoryId::value, Int::class.javaObjectType) }) } } \ No newline at end of file diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRepoImpl.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRepoImpl.kt index 29956574d2..430a5f4d4a 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRepoImpl.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRepoImpl.kt @@ -27,19 +27,19 @@ class SalesterritoryRepoImpl() : SalesterritoryRepo { override fun deleteById( territoryid: SalesterritoryId, c: Connection - ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"sales\".\"salesterritory\" where \"territoryid\" = "), Fragment.encode(SalesterritoryId.dbType, territoryid), Fragment.lit("")).update().runUnchecked(c) > 0 + ): Boolean = Fragment.interpolate(Fragment.lit("delete from \"sales\".\"salesterritory\" where \"territoryid\" = "), Fragment.encode(SalesterritoryId.pgType, territoryid), Fragment.lit("")).update().runUnchecked(c) > 0 override fun deleteByIds( territoryids: Array, c: Connection - ): Int = Fragment.interpolate(Fragment.lit("delete\nfrom \"sales\".\"salesterritory\"\nwhere \"territoryid\" = ANY("), Fragment.encode(SalesterritoryId.dbTypeArray, territoryids), Fragment.lit(")")) + ): Int = Fragment.interpolate(Fragment.lit("delete\nfrom \"sales\".\"salesterritory\"\nwhere \"territoryid\" = ANY("), Fragment.encode(SalesterritoryId.pgTypeArray, territoryids), Fragment.lit(")")) .update() .runUnchecked(c) override fun insert( unsaved: SalesterritoryRow, c: Connection - ): SalesterritoryRow = Fragment.interpolate(Fragment.lit("insert into \"sales\".\"salesterritory\"(\"territoryid\", \"name\", \"countryregioncode\", \"group\", \"salesytd\", \"saleslastyear\", \"costytd\", \"costlastyear\", \"rowguid\", \"modifieddate\")\nvalues ("), Fragment.encode(SalesterritoryId.dbType, unsaved.territoryid), Fragment.lit("::int4, "), Fragment.encode(Name.dbType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(CountryregionId.dbType, unsaved.countryregioncode), Fragment.lit(", "), Fragment.encode(PgTypes.text, unsaved.group), Fragment.lit(", "), Fragment.encode(PgTypes.numeric, unsaved.salesytd), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.saleslastyear), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.costytd), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.costlastyear), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\nRETURNING \"territoryid\", \"name\", \"countryregioncode\", \"group\", \"salesytd\", \"saleslastyear\", \"costytd\", \"costlastyear\", \"rowguid\", \"modifieddate\"\n")) + ): SalesterritoryRow = Fragment.interpolate(Fragment.lit("insert into \"sales\".\"salesterritory\"(\"territoryid\", \"name\", \"countryregioncode\", \"group\", \"salesytd\", \"saleslastyear\", \"costytd\", \"costlastyear\", \"rowguid\", \"modifieddate\")\nvalues ("), Fragment.encode(SalesterritoryId.pgType, unsaved.territoryid), Fragment.lit("::int4, "), Fragment.encode(Name.pgType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(CountryregionId.pgType, unsaved.countryregioncode), Fragment.lit(", "), Fragment.encode(PgTypes.text, unsaved.group), Fragment.lit(", "), Fragment.encode(PgTypes.numeric, unsaved.salesytd), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.saleslastyear), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.costytd), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.costlastyear), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\nRETURNING \"territoryid\", \"name\", \"countryregioncode\", \"group\", \"salesytd\", \"saleslastyear\", \"costytd\", \"costlastyear\", \"rowguid\", \"modifieddate\"\n")) .updateReturning(SalesterritoryRow._rowParser.exactlyOne()).runUnchecked(c) override fun insert( @@ -49,15 +49,15 @@ class SalesterritoryRepoImpl() : SalesterritoryRepo { val columns: ArrayList = ArrayList() val values: ArrayList = ArrayList() columns.add(Fragment.lit("\"name\"")) - values.add(Fragment.interpolate(Fragment.encode(Name.dbType, unsaved.name), Fragment.lit("::varchar"))) + values.add(Fragment.interpolate(Fragment.encode(Name.pgType, unsaved.name), Fragment.lit("::varchar"))) columns.add(Fragment.lit("\"countryregioncode\"")) - values.add(Fragment.interpolate(Fragment.encode(CountryregionId.dbType, unsaved.countryregioncode), Fragment.lit(""))) + values.add(Fragment.interpolate(Fragment.encode(CountryregionId.pgType, unsaved.countryregioncode), Fragment.lit(""))) columns.add(Fragment.lit("\"group\"")) values.add(Fragment.interpolate(Fragment.encode(PgTypes.text, unsaved.group), Fragment.lit(""))) unsaved.territoryid.visit( { }, { value -> columns.add(Fragment.lit("\"territoryid\"")) - values.add(Fragment.interpolate(Fragment.encode(SalesterritoryId.dbType, value), Fragment.lit("::int4"))) } + values.add(Fragment.interpolate(Fragment.encode(SalesterritoryId.pgType, value), Fragment.lit("::int4"))) } ); unsaved.salesytd.visit( { }, @@ -113,12 +113,12 @@ class SalesterritoryRepoImpl() : SalesterritoryRepo { override fun selectById( territoryid: SalesterritoryId, c: Connection - ): SalesterritoryRow? = Fragment.interpolate(Fragment.lit("select \"territoryid\", \"name\", \"countryregioncode\", \"group\", \"salesytd\", \"saleslastyear\", \"costytd\", \"costlastyear\", \"rowguid\", \"modifieddate\"\nfrom \"sales\".\"salesterritory\"\nwhere \"territoryid\" = "), Fragment.encode(SalesterritoryId.dbType, territoryid), Fragment.lit("")).query(SalesterritoryRow._rowParser.first()).runUnchecked(c) + ): SalesterritoryRow? = Fragment.interpolate(Fragment.lit("select \"territoryid\", \"name\", \"countryregioncode\", \"group\", \"salesytd\", \"saleslastyear\", \"costytd\", \"costlastyear\", \"rowguid\", \"modifieddate\"\nfrom \"sales\".\"salesterritory\"\nwhere \"territoryid\" = "), Fragment.encode(SalesterritoryId.pgType, territoryid), Fragment.lit("")).query(SalesterritoryRow._rowParser.first()).runUnchecked(c) override fun selectByIds( territoryids: Array, c: Connection - ): List = Fragment.interpolate(Fragment.lit("select \"territoryid\", \"name\", \"countryregioncode\", \"group\", \"salesytd\", \"saleslastyear\", \"costytd\", \"costlastyear\", \"rowguid\", \"modifieddate\"\nfrom \"sales\".\"salesterritory\"\nwhere \"territoryid\" = ANY("), Fragment.encode(SalesterritoryId.dbTypeArray, territoryids), Fragment.lit(")")).query(SalesterritoryRow._rowParser.all()).runUnchecked(c) + ): List = Fragment.interpolate(Fragment.lit("select \"territoryid\", \"name\", \"countryregioncode\", \"group\", \"salesytd\", \"saleslastyear\", \"costytd\", \"costlastyear\", \"rowguid\", \"modifieddate\"\nfrom \"sales\".\"salesterritory\"\nwhere \"territoryid\" = ANY("), Fragment.encode(SalesterritoryId.pgTypeArray, territoryids), Fragment.lit(")")).query(SalesterritoryRow._rowParser.all()).runUnchecked(c) override fun selectByIdsTracked( territoryids: Array, @@ -136,13 +136,13 @@ class SalesterritoryRepoImpl() : SalesterritoryRepo { c: Connection ): Boolean { val territoryid: SalesterritoryId = row.territoryid - return Fragment.interpolate(Fragment.lit("update \"sales\".\"salesterritory\"\nset \"name\" = "), Fragment.encode(Name.dbType, row.name), Fragment.lit("::varchar,\n\"countryregioncode\" = "), Fragment.encode(CountryregionId.dbType, row.countryregioncode), Fragment.lit(",\n\"group\" = "), Fragment.encode(PgTypes.text, row.group), Fragment.lit(",\n\"salesytd\" = "), Fragment.encode(PgTypes.numeric, row.salesytd), Fragment.lit("::numeric,\n\"saleslastyear\" = "), Fragment.encode(PgTypes.numeric, row.saleslastyear), Fragment.lit("::numeric,\n\"costytd\" = "), Fragment.encode(PgTypes.numeric, row.costytd), Fragment.lit("::numeric,\n\"costlastyear\" = "), Fragment.encode(PgTypes.numeric, row.costlastyear), Fragment.lit("::numeric,\n\"rowguid\" = "), Fragment.encode(PgTypes.uuid, row.rowguid), Fragment.lit("::uuid,\n\"modifieddate\" = "), Fragment.encode(PgTypes.timestamp, row.modifieddate), Fragment.lit("::timestamp\nwhere \"territoryid\" = "), Fragment.encode(SalesterritoryId.dbType, territoryid), Fragment.lit("")).update().runUnchecked(c) > 0 + return Fragment.interpolate(Fragment.lit("update \"sales\".\"salesterritory\"\nset \"name\" = "), Fragment.encode(Name.pgType, row.name), Fragment.lit("::varchar,\n\"countryregioncode\" = "), Fragment.encode(CountryregionId.pgType, row.countryregioncode), Fragment.lit(",\n\"group\" = "), Fragment.encode(PgTypes.text, row.group), Fragment.lit(",\n\"salesytd\" = "), Fragment.encode(PgTypes.numeric, row.salesytd), Fragment.lit("::numeric,\n\"saleslastyear\" = "), Fragment.encode(PgTypes.numeric, row.saleslastyear), Fragment.lit("::numeric,\n\"costytd\" = "), Fragment.encode(PgTypes.numeric, row.costytd), Fragment.lit("::numeric,\n\"costlastyear\" = "), Fragment.encode(PgTypes.numeric, row.costlastyear), Fragment.lit("::numeric,\n\"rowguid\" = "), Fragment.encode(PgTypes.uuid, row.rowguid), Fragment.lit("::uuid,\n\"modifieddate\" = "), Fragment.encode(PgTypes.timestamp, row.modifieddate), Fragment.lit("::timestamp\nwhere \"territoryid\" = "), Fragment.encode(SalesterritoryId.pgType, territoryid), Fragment.lit("")).update().runUnchecked(c) > 0 } override fun upsert( unsaved: SalesterritoryRow, c: Connection - ): SalesterritoryRow = Fragment.interpolate(Fragment.lit("insert into \"sales\".\"salesterritory\"(\"territoryid\", \"name\", \"countryregioncode\", \"group\", \"salesytd\", \"saleslastyear\", \"costytd\", \"costlastyear\", \"rowguid\", \"modifieddate\")\nvalues ("), Fragment.encode(SalesterritoryId.dbType, unsaved.territoryid), Fragment.lit("::int4, "), Fragment.encode(Name.dbType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(CountryregionId.dbType, unsaved.countryregioncode), Fragment.lit(", "), Fragment.encode(PgTypes.text, unsaved.group), Fragment.lit(", "), Fragment.encode(PgTypes.numeric, unsaved.salesytd), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.saleslastyear), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.costytd), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.costlastyear), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\non conflict (\"territoryid\")\ndo update set\n \"name\" = EXCLUDED.\"name\",\n\"countryregioncode\" = EXCLUDED.\"countryregioncode\",\n\"group\" = EXCLUDED.\"group\",\n\"salesytd\" = EXCLUDED.\"salesytd\",\n\"saleslastyear\" = EXCLUDED.\"saleslastyear\",\n\"costytd\" = EXCLUDED.\"costytd\",\n\"costlastyear\" = EXCLUDED.\"costlastyear\",\n\"rowguid\" = EXCLUDED.\"rowguid\",\n\"modifieddate\" = EXCLUDED.\"modifieddate\"\nreturning \"territoryid\", \"name\", \"countryregioncode\", \"group\", \"salesytd\", \"saleslastyear\", \"costytd\", \"costlastyear\", \"rowguid\", \"modifieddate\"")) + ): SalesterritoryRow = Fragment.interpolate(Fragment.lit("insert into \"sales\".\"salesterritory\"(\"territoryid\", \"name\", \"countryregioncode\", \"group\", \"salesytd\", \"saleslastyear\", \"costytd\", \"costlastyear\", \"rowguid\", \"modifieddate\")\nvalues ("), Fragment.encode(SalesterritoryId.pgType, unsaved.territoryid), Fragment.lit("::int4, "), Fragment.encode(Name.pgType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(CountryregionId.pgType, unsaved.countryregioncode), Fragment.lit(", "), Fragment.encode(PgTypes.text, unsaved.group), Fragment.lit(", "), Fragment.encode(PgTypes.numeric, unsaved.salesytd), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.saleslastyear), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.costytd), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.costlastyear), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp)\non conflict (\"territoryid\")\ndo update set\n \"name\" = EXCLUDED.\"name\",\n\"countryregioncode\" = EXCLUDED.\"countryregioncode\",\n\"group\" = EXCLUDED.\"group\",\n\"salesytd\" = EXCLUDED.\"salesytd\",\n\"saleslastyear\" = EXCLUDED.\"saleslastyear\",\n\"costytd\" = EXCLUDED.\"costytd\",\n\"costlastyear\" = EXCLUDED.\"costlastyear\",\n\"rowguid\" = EXCLUDED.\"rowguid\",\n\"modifieddate\" = EXCLUDED.\"modifieddate\"\nreturning \"territoryid\", \"name\", \"countryregioncode\", \"group\", \"salesytd\", \"saleslastyear\", \"costytd\", \"costlastyear\", \"rowguid\", \"modifieddate\"")) .updateReturning(SalesterritoryRow._rowParser.exactlyOne()) .runUnchecked(c) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRow.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRow.kt index e81f6092ab..199238cc59 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRow.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRow.kt @@ -92,7 +92,7 @@ data class SalesterritoryRow( ): SalesterritoryRowUnsaved = SalesterritoryRowUnsaved(name, countryregioncode, group, territoryid, salesytd, saleslastyear, costytd, costlastyear, rowguid, modifieddate) companion object { - val _rowParser: RowParser = RowParsers.of(SalesterritoryId.dbType, Name.dbType, CountryregionId.dbType, PgTypes.text, PgTypes.numeric, PgTypes.numeric, PgTypes.numeric, PgTypes.numeric, PgTypes.uuid, PgTypes.timestamp, { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9 -> SalesterritoryRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9) }, { row -> arrayOf(row.territoryid, row.name, row.countryregioncode, row.group, row.salesytd, row.saleslastyear, row.costytd, row.costlastyear, row.rowguid, row.modifieddate) }) + val _rowParser: RowParser = RowParsers.of(SalesterritoryId.pgType, Name.pgType, CountryregionId.pgType, PgTypes.text, PgTypes.numeric, PgTypes.numeric, PgTypes.numeric, PgTypes.numeric, PgTypes.uuid, PgTypes.timestamp, { t0, t1, t2, t3, t4, t5, t6, t7, t8, t9 -> SalesterritoryRow(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9) }, { row -> arrayOf(row.territoryid, row.name, row.countryregioncode, row.group, row.salesytd, row.saleslastyear, row.costytd, row.costlastyear, row.rowguid, row.modifieddate) }) val pgText: PgText = PgText.from(_rowParser.underlying) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRowUnsaved.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRowUnsaved.kt index fea3dccb7b..26b064bf35 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRowUnsaved.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRowUnsaved.kt @@ -66,13 +66,13 @@ data class SalesterritoryRowUnsaved( companion object { val pgText: PgText = - PgText.instance({ row, sb -> Name.dbType.text().unsafeEncode(row.name, sb) + PgText.instance({ row, sb -> Name.pgType.text().unsafeEncode(row.name, sb) sb.append(PgText.DELIMETER) - CountryregionId.dbType.text().unsafeEncode(row.countryregioncode, sb) + CountryregionId.pgType.text().unsafeEncode(row.countryregioncode, sb) sb.append(PgText.DELIMETER) PgTypes.text.text().unsafeEncode(row.group, sb) sb.append(PgText.DELIMETER) - Defaulted.pgText(SalesterritoryId.dbType.text()).unsafeEncode(row.territoryid, sb) + Defaulted.pgText(SalesterritoryId.pgType.text()).unsafeEncode(row.territoryid, sb) sb.append(PgText.DELIMETER) Defaulted.pgText(PgTypes.numeric.text()).unsafeEncode(row.salesytd, sb) sb.append(PgText.DELIMETER) diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/update_person_returning/UpdatePersonReturningSqlRow.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/update_person_returning/UpdatePersonReturningSqlRow.kt index a152f69685..98f374e486 100644 --- a/testers/pg/kotlin/generated-and-checked-in/adventureworks/update_person_returning/UpdatePersonReturningSqlRow.kt +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/update_person_returning/UpdatePersonReturningSqlRow.kt @@ -24,6 +24,6 @@ data class UpdatePersonReturningSqlRow( override fun _2(): LocalDateTime = modifieddate companion object { - val _rowParser: RowParser = RowParsers.of(FirstName.dbType, PgTypes.timestamp, { t0, t1 -> UpdatePersonReturningSqlRow(t0, t1) }, { row -> arrayOf(row.firstname, row.modifieddate) }) + val _rowParser: RowParser = RowParsers.of(FirstName.pgType, PgTypes.timestamp, { t0, t1 -> UpdatePersonReturningSqlRow(t0, t1) }, { row -> arrayOf(row.firstname, row.modifieddate) }) } } \ No newline at end of file diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/userdefined/ActiveFlag.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/userdefined/ActiveFlag.kt new file mode 100644 index 0000000000..c87783e00d --- /dev/null +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/userdefined/ActiveFlag.kt @@ -0,0 +1,32 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined + +import adventureworks.public.Flag +import com.fasterxml.jackson.annotation.JsonValue +import dev.typr.foundations.PgType +import dev.typr.foundations.internal.arrayMap +import dev.typr.foundations.kotlin.Bijection + +/** Shared type `ActiveFlag` + * Generated from TypeDefinitions matching + */ +data class ActiveFlag(@field:JsonValue val value: Flag) { + override fun toString(): kotlin.String { + return value.toString() + } + + companion object { + val bijection: Bijection = + Bijection.of(ActiveFlag::value, ::ActiveFlag) + + val pgType: PgType = + Flag.pgType.bimap(::ActiveFlag, ActiveFlag::value) + + val pgTypeArray: PgType> = + Flag.pgTypeArray.bimap({ xs -> arrayMap.map(xs, ::ActiveFlag, ActiveFlag::class.java) }, { xs -> arrayMap.map(xs, ActiveFlag::value, Flag::class.java) }) + } +} \ No newline at end of file diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/userdefined/CurrentFlag.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/userdefined/CurrentFlag.kt new file mode 100644 index 0000000000..5c85b6dbdd --- /dev/null +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/userdefined/CurrentFlag.kt @@ -0,0 +1,32 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined + +import adventureworks.public.Flag +import com.fasterxml.jackson.annotation.JsonValue +import dev.typr.foundations.PgType +import dev.typr.foundations.internal.arrayMap +import dev.typr.foundations.kotlin.Bijection + +/** Shared type `CurrentFlag` + * Generated from TypeDefinitions matching + */ +data class CurrentFlag(@field:JsonValue val value: Flag) { + override fun toString(): kotlin.String { + return value.toString() + } + + companion object { + val bijection: Bijection = + Bijection.of(CurrentFlag::value, ::CurrentFlag) + + val pgType: PgType = + Flag.pgType.bimap(::CurrentFlag, CurrentFlag::value) + + val pgTypeArray: PgType> = + Flag.pgTypeArray.bimap({ xs -> arrayMap.map(xs, ::CurrentFlag, CurrentFlag::class.java) }, { xs -> arrayMap.map(xs, CurrentFlag::value, Flag::class.java) }) + } +} \ No newline at end of file diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/userdefined/FirstName.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/userdefined/FirstName.kt new file mode 100644 index 0000000000..04e25b0036 --- /dev/null +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/userdefined/FirstName.kt @@ -0,0 +1,32 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined + +import adventureworks.public.Name +import com.fasterxml.jackson.annotation.JsonValue +import dev.typr.foundations.PgType +import dev.typr.foundations.internal.arrayMap +import dev.typr.foundations.kotlin.Bijection + +/** Shared type `FirstName` + * Generated from TypeDefinitions matching + */ +data class FirstName(@field:JsonValue val value: Name) { + override fun toString(): kotlin.String { + return value.toString() + } + + companion object { + val bijection: Bijection = + Bijection.of(FirstName::value, ::FirstName) + + val pgType: PgType = + Name.pgType.bimap(::FirstName, FirstName::value) + + val pgTypeArray: PgType> = + Name.pgTypeArray.bimap({ xs -> arrayMap.map(xs, ::FirstName, FirstName::class.java) }, { xs -> arrayMap.map(xs, FirstName::value, Name::class.java) }) + } +} \ No newline at end of file diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/userdefined/LastName.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/userdefined/LastName.kt new file mode 100644 index 0000000000..12ac6bb459 --- /dev/null +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/userdefined/LastName.kt @@ -0,0 +1,32 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined + +import adventureworks.public.Name +import com.fasterxml.jackson.annotation.JsonValue +import dev.typr.foundations.PgType +import dev.typr.foundations.internal.arrayMap +import dev.typr.foundations.kotlin.Bijection + +/** Shared type `LastName` + * Generated from TypeDefinitions matching + */ +data class LastName(@field:JsonValue val value: Name) { + override fun toString(): kotlin.String { + return value.toString() + } + + companion object { + val bijection: Bijection = + Bijection.of(LastName::value, ::LastName) + + val pgType: PgType = + Name.pgType.bimap(::LastName, LastName::value) + + val pgTypeArray: PgType> = + Name.pgTypeArray.bimap({ xs -> arrayMap.map(xs, ::LastName, LastName::class.java) }, { xs -> arrayMap.map(xs, LastName::value, Name::class.java) }) + } +} \ No newline at end of file diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/userdefined/MiddleName.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/userdefined/MiddleName.kt new file mode 100644 index 0000000000..f6b8a761f5 --- /dev/null +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/userdefined/MiddleName.kt @@ -0,0 +1,32 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined + +import adventureworks.public.Name +import com.fasterxml.jackson.annotation.JsonValue +import dev.typr.foundations.PgType +import dev.typr.foundations.internal.arrayMap +import dev.typr.foundations.kotlin.Bijection + +/** Shared type `MiddleName` + * Generated from TypeDefinitions matching + */ +data class MiddleName(@field:JsonValue val value: Name) { + override fun toString(): kotlin.String { + return value.toString() + } + + companion object { + val bijection: Bijection = + Bijection.of(MiddleName::value, ::MiddleName) + + val pgType: PgType = + Name.pgType.bimap(::MiddleName, MiddleName::value) + + val pgTypeArray: PgType> = + Name.pgTypeArray.bimap({ xs -> arrayMap.map(xs, ::MiddleName, MiddleName::class.java) }, { xs -> arrayMap.map(xs, MiddleName::value, Name::class.java) }) + } +} \ No newline at end of file diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/userdefined/OnlineOrderFlag.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/userdefined/OnlineOrderFlag.kt new file mode 100644 index 0000000000..123b067fae --- /dev/null +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/userdefined/OnlineOrderFlag.kt @@ -0,0 +1,32 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined + +import adventureworks.public.Flag +import com.fasterxml.jackson.annotation.JsonValue +import dev.typr.foundations.PgType +import dev.typr.foundations.internal.arrayMap +import dev.typr.foundations.kotlin.Bijection + +/** Shared type `OnlineOrderFlag` + * Generated from TypeDefinitions matching + */ +data class OnlineOrderFlag(@field:JsonValue val value: Flag) { + override fun toString(): kotlin.String { + return value.toString() + } + + companion object { + val bijection: Bijection = + Bijection.of(OnlineOrderFlag::value, ::OnlineOrderFlag) + + val pgType: PgType = + Flag.pgType.bimap(::OnlineOrderFlag, OnlineOrderFlag::value) + + val pgTypeArray: PgType> = + Flag.pgTypeArray.bimap({ xs -> arrayMap.map(xs, ::OnlineOrderFlag, OnlineOrderFlag::class.java) }, { xs -> arrayMap.map(xs, OnlineOrderFlag::value, Flag::class.java) }) + } +} \ No newline at end of file diff --git a/testers/pg/kotlin/generated-and-checked-in/adventureworks/userdefined/SalariedFlag.kt b/testers/pg/kotlin/generated-and-checked-in/adventureworks/userdefined/SalariedFlag.kt new file mode 100644 index 0000000000..e7961b1b62 --- /dev/null +++ b/testers/pg/kotlin/generated-and-checked-in/adventureworks/userdefined/SalariedFlag.kt @@ -0,0 +1,32 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined + +import adventureworks.public.Flag +import com.fasterxml.jackson.annotation.JsonValue +import dev.typr.foundations.PgType +import dev.typr.foundations.internal.arrayMap +import dev.typr.foundations.kotlin.Bijection + +/** Shared type `SalariedFlag` + * Generated from TypeDefinitions matching + */ +data class SalariedFlag(@field:JsonValue val value: Flag) { + override fun toString(): kotlin.String { + return value.toString() + } + + companion object { + val bijection: Bijection = + Bijection.of(SalariedFlag::value, ::SalariedFlag) + + val pgType: PgType = + Flag.pgType.bimap(::SalariedFlag, SalariedFlag::value) + + val pgTypeArray: PgType> = + Flag.pgTypeArray.bimap({ xs -> arrayMap.map(xs, ::SalariedFlag, SalariedFlag::class.java) }, { xs -> arrayMap.map(xs, SalariedFlag::value, Flag::class.java) }) + } +} \ No newline at end of file diff --git a/testers/pg/kotlin/src/kotlin/adventureworks/userdefined/FirstName.kt b/testers/pg/kotlin/src/kotlin/adventureworks/userdefined/FirstName.kt deleted file mode 100644 index 8ca3225039..0000000000 --- a/testers/pg/kotlin/src/kotlin/adventureworks/userdefined/FirstName.kt +++ /dev/null @@ -1,21 +0,0 @@ -package adventureworks.userdefined - -import dev.typr.foundations.PgText -import dev.typr.foundations.PgType -import dev.typr.foundations.PgTypes -import dev.typr.foundations.internal.arrayMap - -@JvmInline -value class FirstName(val value: String) { - companion object { - @JvmStatic - val pgText: PgText = PgText.instance { v, sb -> PgText.textString.unsafeEncode(v.value, sb) } - @JvmStatic - val dbType: PgType = PgTypes.text.bimap({ FirstName(it) }, { it.value }) - @JvmStatic - val dbTypeArray: PgType> = PgTypes.textArray.bimap( - { arr -> arrayMap.map(arr, { FirstName(it) }, FirstName::class.java) }, - { arr -> arrayMap.map(arr, { it.value }, String::class.java) } - ) - } -} diff --git a/testers/pg/kotlin/src/test/kotlin/adventureworks/DSLTest.kt b/testers/pg/kotlin/src/test/kotlin/adventureworks/DSLTest.kt index fd881690d0..8c3761ac60 100644 --- a/testers/pg/kotlin/src/test/kotlin/adventureworks/DSLTest.kt +++ b/testers/pg/kotlin/src/test/kotlin/adventureworks/DSLTest.kt @@ -5,6 +5,7 @@ import adventureworks.person.businessentity.BusinessentityRepoImpl import adventureworks.person.emailaddress.EmailaddressRepoImpl import adventureworks.person.person.PersonRepoImpl import adventureworks.sales.salesperson.SalespersonRepoImpl +import adventureworks.public.Name import adventureworks.userdefined.FirstName import org.junit.Assert.assertEquals import org.junit.Test @@ -26,7 +27,7 @@ class DSLTest { val personRow = testInsert.personPerson( businessentityid = businessentityRow.businessentityid, persontype = "EM", - firstname = FirstName("a"), + firstname = FirstName(Name("a")), c = c ) testInsert.personEmailaddress( diff --git a/testers/pg/kotlin/src/test/kotlin/adventureworks/RecordTest.kt b/testers/pg/kotlin/src/test/kotlin/adventureworks/RecordTest.kt index 82c258c38d..e78da23130 100644 --- a/testers/pg/kotlin/src/test/kotlin/adventureworks/RecordTest.kt +++ b/testers/pg/kotlin/src/test/kotlin/adventureworks/RecordTest.kt @@ -1,6 +1,7 @@ package adventureworks import adventureworks.person_row_join.PersonRowJoinSqlRepoImpl +import adventureworks.public.Name import adventureworks.userdefined.FirstName import org.junit.Test import java.time.LocalDate @@ -17,7 +18,7 @@ class RecordTest { val personRow = testInsert.personPerson( businessentityid = businessentityRow.businessentityid, persontype = "EM", - firstname = FirstName("a"), + firstname = FirstName(Name("a")), c = c ) testInsert.personEmailaddress( diff --git a/testers/pg/kotlin/src/test/kotlin/adventureworks/humanresources/employee/EmployeeTest.kt b/testers/pg/kotlin/src/test/kotlin/adventureworks/humanresources/employee/EmployeeTest.kt index 32dc8aa681..dd8823ecc6 100644 --- a/testers/pg/kotlin/src/test/kotlin/adventureworks/humanresources/employee/EmployeeTest.kt +++ b/testers/pg/kotlin/src/test/kotlin/adventureworks/humanresources/employee/EmployeeTest.kt @@ -6,7 +6,10 @@ import adventureworks.WithConnection import adventureworks.customtypes.* import adventureworks.person.businessentity.* import adventureworks.public.Flag +import adventureworks.public.Name +import adventureworks.userdefined.CurrentFlag import adventureworks.userdefined.FirstName +import adventureworks.userdefined.SalariedFlag import org.junit.Assert.* import org.junit.Test import java.time.LocalDate @@ -24,7 +27,7 @@ class EmployeeTest { val personRow = testInsert.personPerson( businessentityid = businessentityRow.businessentityid, persontype = "SC", - firstname = FirstName("firstname"), + firstname = FirstName(Name("firstname")), c = c ) @@ -73,10 +76,10 @@ class EmployeeTest { ) assertEquals(personRow.businessentityid, inserted.businessentityid) // check static default values - assertEquals(Flag(true), inserted.salariedflag) + assertEquals(SalariedFlag(Flag(true)), inserted.salariedflag) assertEquals(0.toShort(), inserted.vacationhours) assertEquals(0.toShort(), inserted.sickleavehours) - assertEquals(Flag(true), inserted.currentflag) + assertEquals(CurrentFlag(Flag(true)), inserted.currentflag) assertNotNull(inserted.rowguid) assertNotNull(inserted.modifieddate) assertEquals("/", inserted.organizationnode) diff --git a/testers/pg/kotlin/src/test/kotlin/adventureworks/person/MultiRepoTest.kt b/testers/pg/kotlin/src/test/kotlin/adventureworks/person/MultiRepoTest.kt index fd82bdb049..cb7c14a494 100644 --- a/testers/pg/kotlin/src/test/kotlin/adventureworks/person/MultiRepoTest.kt +++ b/testers/pg/kotlin/src/test/kotlin/adventureworks/person/MultiRepoTest.kt @@ -92,7 +92,7 @@ class PersonWithAddressesTest { val personRow = testInsert.personPerson( businessentityid = businessentityRow.businessentityid, persontype = "SC", - firstname = FirstName("name"), + firstname = FirstName(Name("name")), c = c ) val countryregionRow = testInsert.personCountryregion( diff --git a/testers/pg/kotlin/src/test/kotlin/adventureworks/production/product/SeekTest.kt b/testers/pg/kotlin/src/test/kotlin/adventureworks/production/product/SeekTest.kt index f975e25309..f6c7920f3e 100644 --- a/testers/pg/kotlin/src/test/kotlin/adventureworks/production/product/SeekTest.kt +++ b/testers/pg/kotlin/src/test/kotlin/adventureworks/production/product/SeekTest.kt @@ -13,7 +13,7 @@ class SeekTest { @Test fun uniformAscending() { val query = productRepo.select() - .seek({ f -> f.name().asc() }, SqlExpr.ConstReq(Name("foo"), Name.dbType)) + .seek({ f -> f.name().asc() }, SqlExpr.ConstReq(Name("foo"), Name.pgType)) .seek({ f -> f.weight().asc() }, SqlExpr.ConstOpt(BigDecimal("22.2"), PgTypes.numeric)) .seek({ f -> f.listprice().asc() }, SqlExpr.ConstReq(BigDecimal("33.3"), PgTypes.numeric)) @@ -26,7 +26,7 @@ class SeekTest { @Test fun uniformDescending() { val query = productRepo.select() - .seek({ f -> f.name().desc() }, SqlExpr.ConstReq(Name("foo"), Name.dbType)) + .seek({ f -> f.name().desc() }, SqlExpr.ConstReq(Name("foo"), Name.pgType)) .seek({ f -> f.weight().desc() }, SqlExpr.ConstOpt(BigDecimal("22.2"), PgTypes.numeric)) .seek({ f -> f.listprice().desc() }, SqlExpr.ConstReq(BigDecimal("33.3"), PgTypes.numeric)) @@ -38,7 +38,7 @@ class SeekTest { @Test fun complex() { val query = productRepo.select() - .seek({ f -> f.name().asc() }, SqlExpr.ConstReq(Name("foo"), Name.dbType)) + .seek({ f -> f.name().asc() }, SqlExpr.ConstReq(Name("foo"), Name.pgType)) .seek({ f -> f.weight().desc() }, SqlExpr.ConstOpt(BigDecimal("22.2"), PgTypes.numeric)) .seek({ f -> f.listprice().desc() }, SqlExpr.ConstReq(BigDecimal("33.3"), PgTypes.numeric)) diff --git a/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/TestInsert.scala b/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/TestInsert.scala index c6bb6a5e8d..53727104b3 100644 --- a/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/TestInsert.scala +++ b/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/TestInsert.scala @@ -151,7 +151,11 @@ import adventureworks.sales.salesterritory.SalesterritoryId import adventureworks.sales.salesterritory.SalesterritoryRepoImpl import adventureworks.sales.salesterritory.SalesterritoryRow import adventureworks.sales.salesterritory.SalesterritoryRowUnsaved +import adventureworks.userdefined.CurrentFlag import adventureworks.userdefined.FirstName +import adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName +import adventureworks.userdefined.SalariedFlag import java.sql.Connection import java.time.Instant import java.time.LocalDate @@ -181,10 +185,10 @@ case class TestInsert( nationalidnumber: String = random.alphanumeric.take(15).mkString, loginid: String = random.alphanumeric.take(20).mkString, jobtitle: String = random.alphanumeric.take(20).mkString, - salariedflag: Defaulted[Flag] = new UseDefault(), + salariedflag: Defaulted[/* user-picked */ SalariedFlag] = new UseDefault(), vacationhours: Defaulted[TypoShort] = new UseDefault(), sickleavehours: Defaulted[TypoShort] = new UseDefault(), - currentflag: Defaulted[Flag] = new UseDefault(), + currentflag: Defaulted[/* user-picked */ CurrentFlag] = new UseDefault(), rowguid: Defaulted[TypoUUID] = new UseDefault(), modifieddate: Defaulted[TypoLocalDateTime] = new UseDefault(), organizationnode: Defaulted[Option[String]] = new UseDefault() @@ -265,10 +269,10 @@ case class TestInsert( def personPerson( businessentityid: BusinessentityId, persontype: String, - firstname: /* user-picked */ FirstName, title: Option[/* max 8 chars */ String] = (if (random.nextBoolean()) None else Some(random.alphanumeric.take(8).mkString)), - middlename: Option[Name] = (if (random.nextBoolean()) None else Some(domainInsert.publicName(random))), - lastname: Name = domainInsert.publicName(random), + firstname: /* user-picked */ FirstName = new FirstName(domainInsert.publicName(random)), + middlename: Option[/* user-picked */ MiddleName] = (if (random.nextBoolean()) None else Some(new MiddleName(domainInsert.publicName(random)))), + lastname: /* user-picked */ LastName = new LastName(domainInsert.publicName(random)), suffix: Option[/* max 10 chars */ String] = (if (random.nextBoolean()) None else Some(random.alphanumeric.take(10).mkString)), additionalcontactinfo: Option[TypoXml] = None, demographics: Option[TypoXml] = None, diff --git a/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/humanresources/employee/EmployeeFields.scala b/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/humanresources/employee/EmployeeFields.scala index 1c559fa0dd..c4ad1a140a 100644 --- a/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/humanresources/employee/EmployeeFields.scala +++ b/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/humanresources/employee/EmployeeFields.scala @@ -12,7 +12,8 @@ import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId import adventureworks.person.person.PersonFields import adventureworks.person.person.PersonRow -import adventureworks.public.Flag +import adventureworks.userdefined.CurrentFlag +import adventureworks.userdefined.SalariedFlag import typr.dsl.ForeignKey import typr.dsl.Path import typr.dsl.RelationStructure @@ -30,10 +31,10 @@ trait EmployeeFields { def maritalstatus: Field[String, EmployeeRow] def gender: Field[String, EmployeeRow] def hiredate: Field[TypoLocalDate, EmployeeRow] - def salariedflag: Field[Flag, EmployeeRow] + def salariedflag: Field[/* user-picked */ SalariedFlag, EmployeeRow] def vacationhours: Field[TypoShort, EmployeeRow] def sickleavehours: Field[TypoShort, EmployeeRow] - def currentflag: Field[Flag, EmployeeRow] + def currentflag: Field[/* user-picked */ CurrentFlag, EmployeeRow] def rowguid: Field[TypoUUID, EmployeeRow] def modifieddate: Field[TypoLocalDateTime, EmployeeRow] def organizationnode: OptField[String, EmployeeRow] @@ -58,10 +59,10 @@ object EmployeeFields { override def maritalstatus = Field[String, EmployeeRow](_path, "maritalstatus", None, Some("bpchar"), x => x.maritalstatus, (row, value) => row.copy(maritalstatus = value)) override def gender = Field[String, EmployeeRow](_path, "gender", None, Some("bpchar"), x => x.gender, (row, value) => row.copy(gender = value)) override def hiredate = Field[TypoLocalDate, EmployeeRow](_path, "hiredate", Some("text"), Some("date"), x => x.hiredate, (row, value) => row.copy(hiredate = value)) - override def salariedflag = Field[Flag, EmployeeRow](_path, "salariedflag", None, Some("bool"), x => x.salariedflag, (row, value) => row.copy(salariedflag = value)) + override def salariedflag = Field[/* user-picked */ SalariedFlag, EmployeeRow](_path, "salariedflag", None, Some("bool"), x => x.salariedflag, (row, value) => row.copy(salariedflag = value)) override def vacationhours = Field[TypoShort, EmployeeRow](_path, "vacationhours", None, Some("int2"), x => x.vacationhours, (row, value) => row.copy(vacationhours = value)) override def sickleavehours = Field[TypoShort, EmployeeRow](_path, "sickleavehours", None, Some("int2"), x => x.sickleavehours, (row, value) => row.copy(sickleavehours = value)) - override def currentflag = Field[Flag, EmployeeRow](_path, "currentflag", None, Some("bool"), x => x.currentflag, (row, value) => row.copy(currentflag = value)) + override def currentflag = Field[/* user-picked */ CurrentFlag, EmployeeRow](_path, "currentflag", None, Some("bool"), x => x.currentflag, (row, value) => row.copy(currentflag = value)) override def rowguid = Field[TypoUUID, EmployeeRow](_path, "rowguid", None, Some("uuid"), x => x.rowguid, (row, value) => row.copy(rowguid = value)) override def modifieddate = Field[TypoLocalDateTime, EmployeeRow](_path, "modifieddate", Some("text"), Some("timestamp"), x => x.modifieddate, (row, value) => row.copy(modifieddate = value)) override def organizationnode = OptField[String, EmployeeRow](_path, "organizationnode", None, None, x => x.organizationnode, (row, value) => row.copy(organizationnode = value)) diff --git a/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/humanresources/employee/EmployeeRepoImpl.scala b/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/humanresources/employee/EmployeeRepoImpl.scala index 05c69a6767..c89440a3bd 100644 --- a/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/humanresources/employee/EmployeeRepoImpl.scala +++ b/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/humanresources/employee/EmployeeRepoImpl.scala @@ -11,8 +11,9 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoShort import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Flag import adventureworks.streamingInsert +import adventureworks.userdefined.CurrentFlag +import adventureworks.userdefined.SalariedFlag import anorm.BatchSql import anorm.NamedParameter import anorm.ParameterMetaData @@ -42,7 +43,7 @@ class EmployeeRepoImpl extends EmployeeRepo { 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") - values (${ParameterValue(unsaved.businessentityid, null, BusinessentityId.toStatement)}::int4, ${ParameterValue(unsaved.nationalidnumber, null, ToStatement.stringToStatement)}, ${ParameterValue(unsaved.loginid, null, ToStatement.stringToStatement)}, ${ParameterValue(unsaved.jobtitle, null, ToStatement.stringToStatement)}, ${ParameterValue(unsaved.birthdate, null, TypoLocalDate.toStatement)}::date, ${ParameterValue(unsaved.maritalstatus, null, ToStatement.stringToStatement)}::bpchar, ${ParameterValue(unsaved.gender, null, ToStatement.stringToStatement)}::bpchar, ${ParameterValue(unsaved.hiredate, null, TypoLocalDate.toStatement)}::date, ${ParameterValue(unsaved.salariedflag, null, Flag.toStatement)}::bool, ${ParameterValue(unsaved.vacationhours, null, TypoShort.toStatement)}::int2, ${ParameterValue(unsaved.sickleavehours, null, TypoShort.toStatement)}::int2, ${ParameterValue(unsaved.currentflag, null, Flag.toStatement)}::bool, ${ParameterValue(unsaved.rowguid, null, TypoUUID.toStatement)}::uuid, ${ParameterValue(unsaved.modifieddate, null, TypoLocalDateTime.toStatement)}::timestamp, ${ParameterValue(unsaved.organizationnode, null, ToStatement.optionToStatement(ToStatement.stringToStatement, ParameterMetaData.StringParameterMetaData))}) + values (${ParameterValue(unsaved.businessentityid, null, BusinessentityId.toStatement)}::int4, ${ParameterValue(unsaved.nationalidnumber, null, ToStatement.stringToStatement)}, ${ParameterValue(unsaved.loginid, null, ToStatement.stringToStatement)}, ${ParameterValue(unsaved.jobtitle, null, ToStatement.stringToStatement)}, ${ParameterValue(unsaved.birthdate, null, TypoLocalDate.toStatement)}::date, ${ParameterValue(unsaved.maritalstatus, null, ToStatement.stringToStatement)}::bpchar, ${ParameterValue(unsaved.gender, null, ToStatement.stringToStatement)}::bpchar, ${ParameterValue(unsaved.hiredate, null, TypoLocalDate.toStatement)}::date, ${ParameterValue(unsaved.salariedflag, null, /* user-picked */ SalariedFlag.toStatement)}::bool, ${ParameterValue(unsaved.vacationhours, null, TypoShort.toStatement)}::int2, ${ParameterValue(unsaved.sickleavehours, null, TypoShort.toStatement)}::int2, ${ParameterValue(unsaved.currentflag, null, /* user-picked */ CurrentFlag.toStatement)}::bool, ${ParameterValue(unsaved.rowguid, null, TypoUUID.toStatement)}::uuid, ${ParameterValue(unsaved.modifieddate, null, TypoLocalDateTime.toStatement)}::timestamp, ${ParameterValue(unsaved.organizationnode, null, ToStatement.optionToStatement(ToStatement.stringToStatement, ParameterMetaData.StringParameterMetaData))}) returning "businessentityid", "nationalidnumber", "loginid", "jobtitle", "birthdate"::text, "maritalstatus", "gender", "hiredate"::text, "salariedflag", "vacationhours", "sickleavehours", "currentflag", "rowguid", "modifieddate"::text, "organizationnode" """ .executeInsert(EmployeeRow.rowParser(1).single) @@ -60,7 +61,7 @@ class EmployeeRepoImpl extends EmployeeRepo { Some((NamedParameter("hiredate", ParameterValue(unsaved.hiredate, null, TypoLocalDate.toStatement)), "::date")), unsaved.salariedflag match { case Defaulted.UseDefault() => None - case Defaulted.Provided(value) => Some((NamedParameter("salariedflag", ParameterValue(value, null, Flag.toStatement)), "::bool")) + case Defaulted.Provided(value) => Some((NamedParameter("salariedflag", ParameterValue(value, null, /* user-picked */ SalariedFlag.toStatement)), "::bool")) }, unsaved.vacationhours match { case Defaulted.UseDefault() => None @@ -72,7 +73,7 @@ class EmployeeRepoImpl extends EmployeeRepo { }, unsaved.currentflag match { case Defaulted.UseDefault() => None - case Defaulted.Provided(value) => Some((NamedParameter("currentflag", ParameterValue(value, null, Flag.toStatement)), "::bool")) + case Defaulted.Provided(value) => Some((NamedParameter("currentflag", ParameterValue(value, null, /* user-picked */ CurrentFlag.toStatement)), "::bool")) }, unsaved.rowguid match { case Defaulted.UseDefault() => None @@ -153,10 +154,10 @@ class EmployeeRepoImpl extends EmployeeRepo { "maritalstatus" = ${ParameterValue(row.maritalstatus, null, ToStatement.stringToStatement)}::bpchar, "gender" = ${ParameterValue(row.gender, null, ToStatement.stringToStatement)}::bpchar, "hiredate" = ${ParameterValue(row.hiredate, null, TypoLocalDate.toStatement)}::date, - "salariedflag" = ${ParameterValue(row.salariedflag, null, Flag.toStatement)}::bool, + "salariedflag" = ${ParameterValue(row.salariedflag, null, /* user-picked */ SalariedFlag.toStatement)}::bool, "vacationhours" = ${ParameterValue(row.vacationhours, null, TypoShort.toStatement)}::int2, "sickleavehours" = ${ParameterValue(row.sickleavehours, null, TypoShort.toStatement)}::int2, - "currentflag" = ${ParameterValue(row.currentflag, null, Flag.toStatement)}::bool, + "currentflag" = ${ParameterValue(row.currentflag, null, /* user-picked */ CurrentFlag.toStatement)}::bool, "rowguid" = ${ParameterValue(row.rowguid, null, TypoUUID.toStatement)}::uuid, "modifieddate" = ${ParameterValue(row.modifieddate, null, TypoLocalDateTime.toStatement)}::timestamp, "organizationnode" = ${ParameterValue(row.organizationnode, null, ToStatement.optionToStatement(ToStatement.stringToStatement, ParameterMetaData.StringParameterMetaData))} @@ -176,10 +177,10 @@ class EmployeeRepoImpl extends EmployeeRepo { ${ParameterValue(unsaved.maritalstatus, null, ToStatement.stringToStatement)}::bpchar, ${ParameterValue(unsaved.gender, null, ToStatement.stringToStatement)}::bpchar, ${ParameterValue(unsaved.hiredate, null, TypoLocalDate.toStatement)}::date, - ${ParameterValue(unsaved.salariedflag, null, Flag.toStatement)}::bool, + ${ParameterValue(unsaved.salariedflag, null, /* user-picked */ SalariedFlag.toStatement)}::bool, ${ParameterValue(unsaved.vacationhours, null, TypoShort.toStatement)}::int2, ${ParameterValue(unsaved.sickleavehours, null, TypoShort.toStatement)}::int2, - ${ParameterValue(unsaved.currentflag, null, Flag.toStatement)}::bool, + ${ParameterValue(unsaved.currentflag, null, /* user-picked */ CurrentFlag.toStatement)}::bool, ${ParameterValue(unsaved.rowguid, null, TypoUUID.toStatement)}::uuid, ${ParameterValue(unsaved.modifieddate, null, TypoLocalDateTime.toStatement)}::timestamp, ${ParameterValue(unsaved.organizationnode, null, ToStatement.optionToStatement(ToStatement.stringToStatement, ParameterMetaData.StringParameterMetaData))} @@ -215,10 +216,10 @@ class EmployeeRepoImpl extends EmployeeRepo { NamedParameter("maritalstatus", ParameterValue(row.maritalstatus, null, ToStatement.stringToStatement)), NamedParameter("gender", ParameterValue(row.gender, null, ToStatement.stringToStatement)), NamedParameter("hiredate", ParameterValue(row.hiredate, null, TypoLocalDate.toStatement)), - NamedParameter("salariedflag", ParameterValue(row.salariedflag, null, Flag.toStatement)), + NamedParameter("salariedflag", ParameterValue(row.salariedflag, null, /* user-picked */ SalariedFlag.toStatement)), NamedParameter("vacationhours", ParameterValue(row.vacationhours, null, TypoShort.toStatement)), NamedParameter("sickleavehours", ParameterValue(row.sickleavehours, null, TypoShort.toStatement)), - NamedParameter("currentflag", ParameterValue(row.currentflag, null, Flag.toStatement)), + NamedParameter("currentflag", ParameterValue(row.currentflag, null, /* user-picked */ CurrentFlag.toStatement)), NamedParameter("rowguid", ParameterValue(row.rowguid, null, TypoUUID.toStatement)), NamedParameter("modifieddate", ParameterValue(row.modifieddate, null, TypoLocalDateTime.toStatement)), NamedParameter("organizationnode", ParameterValue(row.organizationnode, null, ToStatement.optionToStatement(ToStatement.stringToStatement, ParameterMetaData.StringParameterMetaData))) diff --git a/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/humanresources/employee/EmployeeRow.scala b/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/humanresources/employee/EmployeeRow.scala index 81538837b1..0dd70546bf 100644 --- a/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/humanresources/employee/EmployeeRow.scala +++ b/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/humanresources/employee/EmployeeRow.scala @@ -12,7 +12,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoShort import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Flag +import adventureworks.userdefined.CurrentFlag +import adventureworks.userdefined.SalariedFlag import anorm.Column import anorm.RowParser import anorm.Success @@ -59,7 +60,7 @@ case class EmployeeRow( /** Job classification. 0 = Hourly, not exempt from collective bargaining. 1 = Salaried, exempt from collective bargaining. * Default: true */ - salariedflag: Flag, + salariedflag: /* user-picked */ SalariedFlag, /** Number of available vacation hours. * Default: 0 * Constraint CK_Employee_VacationHours affecting columns vacationhours: (((vacationhours >= '-40'::integer) AND (vacationhours <= 240))) @@ -73,7 +74,7 @@ case class EmployeeRow( /** 0 = Inactive, 1 = Active * Default: true */ - currentflag: Flag, + currentflag: /* user-picked */ CurrentFlag, /** Default: uuid_generate_v1() */ rowguid: TypoUUID, /** Default: now() */ @@ -86,10 +87,10 @@ case class EmployeeRow( def id: BusinessentityId = businessentityid def toUnsavedRow( - salariedflag: Defaulted[Flag] = Defaulted.Provided(this.salariedflag), + salariedflag: Defaulted[/* user-picked */ SalariedFlag] = Defaulted.Provided(this.salariedflag), vacationhours: Defaulted[TypoShort] = Defaulted.Provided(this.vacationhours), sickleavehours: Defaulted[TypoShort] = Defaulted.Provided(this.sickleavehours), - currentflag: Defaulted[Flag] = Defaulted.Provided(this.currentflag), + currentflag: Defaulted[/* user-picked */ CurrentFlag] = Defaulted.Provided(this.currentflag), rowguid: Defaulted[TypoUUID] = Defaulted.Provided(this.rowguid), modifieddate: Defaulted[TypoLocalDateTime] = Defaulted.Provided(this.modifieddate), organizationnode: Defaulted[Option[String]] = Defaulted.Provided(this.organizationnode) @@ -133,13 +134,13 @@ object EmployeeRow { sb.append(Text.DELIMETER) TypoLocalDate.pgText.unsafeEncode(row.hiredate, sb) sb.append(Text.DELIMETER) - Flag.pgText.unsafeEncode(row.salariedflag, sb) + /* user-picked */ SalariedFlag.pgText.unsafeEncode(row.salariedflag, sb) sb.append(Text.DELIMETER) TypoShort.pgText.unsafeEncode(row.vacationhours, sb) sb.append(Text.DELIMETER) TypoShort.pgText.unsafeEncode(row.sickleavehours, sb) sb.append(Text.DELIMETER) - Flag.pgText.unsafeEncode(row.currentflag, sb) + /* user-picked */ CurrentFlag.pgText.unsafeEncode(row.currentflag, sb) sb.append(Text.DELIMETER) TypoUUID.pgText.unsafeEncode(row.rowguid, sb) sb.append(Text.DELIMETER) @@ -161,10 +162,10 @@ object EmployeeRow { maritalstatus = json.\("maritalstatus").as(Reads.StringReads), gender = json.\("gender").as(Reads.StringReads), hiredate = json.\("hiredate").as(TypoLocalDate.reads), - salariedflag = json.\("salariedflag").as(Flag.reads), + salariedflag = json.\("salariedflag").as(SalariedFlag.reads), vacationhours = json.\("vacationhours").as(TypoShort.reads), sickleavehours = json.\("sickleavehours").as(TypoShort.reads), - currentflag = json.\("currentflag").as(Flag.reads), + currentflag = json.\("currentflag").as(CurrentFlag.reads), rowguid = json.\("rowguid").as(TypoUUID.reads), modifieddate = json.\("modifieddate").as(TypoLocalDateTime.reads), organizationnode = json.\("organizationnode").toOption.map(_.as(Reads.StringReads)) @@ -186,10 +187,10 @@ object EmployeeRow { maritalstatus = row(idx + 5)(Column.columnToString), gender = row(idx + 6)(Column.columnToString), hiredate = row(idx + 7)(TypoLocalDate.column), - salariedflag = row(idx + 8)(Flag.column), + salariedflag = row(idx + 8)(/* user-picked */ SalariedFlag.column), vacationhours = row(idx + 9)(TypoShort.column), sickleavehours = row(idx + 10)(TypoShort.column), - currentflag = row(idx + 11)(Flag.column), + currentflag = row(idx + 11)(/* user-picked */ CurrentFlag.column), rowguid = row(idx + 12)(TypoUUID.column), modifieddate = row(idx + 13)(TypoLocalDateTime.column), organizationnode = row(idx + 14)(Column.columnToOption(Column.columnToString)) @@ -209,10 +210,10 @@ object EmployeeRow { "maritalstatus" -> Writes.StringWrites.writes(o.maritalstatus), "gender" -> Writes.StringWrites.writes(o.gender), "hiredate" -> TypoLocalDate.writes.writes(o.hiredate), - "salariedflag" -> Flag.writes.writes(o.salariedflag), + "salariedflag" -> SalariedFlag.writes.writes(o.salariedflag), "vacationhours" -> TypoShort.writes.writes(o.vacationhours), "sickleavehours" -> TypoShort.writes.writes(o.sickleavehours), - "currentflag" -> Flag.writes.writes(o.currentflag), + "currentflag" -> CurrentFlag.writes.writes(o.currentflag), "rowguid" -> TypoUUID.writes.writes(o.rowguid), "modifieddate" -> TypoLocalDateTime.writes.writes(o.modifieddate), "organizationnode" -> Writes.OptionWrites(Writes.StringWrites).writes(o.organizationnode) diff --git a/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/humanresources/employee/EmployeeRowUnsaved.scala b/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/humanresources/employee/EmployeeRowUnsaved.scala index 43f803f742..1b91cd7e6d 100644 --- a/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/humanresources/employee/EmployeeRowUnsaved.scala +++ b/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/humanresources/employee/EmployeeRowUnsaved.scala @@ -13,7 +13,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoShort import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Flag +import adventureworks.userdefined.CurrentFlag +import adventureworks.userdefined.SalariedFlag import play.api.libs.json.JsObject import play.api.libs.json.JsResult import play.api.libs.json.JsValue @@ -54,7 +55,7 @@ case class EmployeeRowUnsaved( /** Default: true * Job classification. 0 = Hourly, not exempt from collective bargaining. 1 = Salaried, exempt from collective bargaining. */ - salariedflag: Defaulted[Flag] = new UseDefault(), + salariedflag: Defaulted[/* user-picked */ SalariedFlag] = new UseDefault(), /** Default: 0 * Number of available vacation hours. * Constraint CK_Employee_VacationHours affecting columns vacationhours: (((vacationhours >= '-40'::integer) AND (vacationhours <= 240))) @@ -68,7 +69,7 @@ case class EmployeeRowUnsaved( /** Default: true * 0 = Inactive, 1 = Active */ - currentflag: Defaulted[Flag] = new UseDefault(), + currentflag: Defaulted[/* user-picked */ CurrentFlag] = new UseDefault(), /** Default: uuid_generate_v1() */ rowguid: Defaulted[TypoUUID] = new UseDefault(), /** Default: now() */ @@ -79,10 +80,10 @@ case class EmployeeRowUnsaved( organizationnode: Defaulted[Option[String]] = new UseDefault() ) { def toRow( - salariedflagDefault: => Flag, + salariedflagDefault: => /* user-picked */ SalariedFlag, vacationhoursDefault: => TypoShort, sickleavehoursDefault: => TypoShort, - currentflagDefault: => Flag, + currentflagDefault: => /* user-picked */ CurrentFlag, rowguidDefault: => TypoUUID, modifieddateDefault: => TypoLocalDateTime, organizationnodeDefault: => Option[String] @@ -126,13 +127,13 @@ object EmployeeRowUnsaved { sb.append(Text.DELIMETER) TypoLocalDate.pgText.unsafeEncode(row.hiredate, sb) sb.append(Text.DELIMETER) - Defaulted.pgText(Flag.pgText).unsafeEncode(row.salariedflag, sb) + Defaulted.pgText(SalariedFlag.pgText).unsafeEncode(row.salariedflag, sb) sb.append(Text.DELIMETER) Defaulted.pgText(TypoShort.pgText).unsafeEncode(row.vacationhours, sb) sb.append(Text.DELIMETER) Defaulted.pgText(TypoShort.pgText).unsafeEncode(row.sickleavehours, sb) sb.append(Text.DELIMETER) - Defaulted.pgText(Flag.pgText).unsafeEncode(row.currentflag, sb) + Defaulted.pgText(CurrentFlag.pgText).unsafeEncode(row.currentflag, sb) sb.append(Text.DELIMETER) Defaulted.pgText(TypoUUID.pgText).unsafeEncode(row.rowguid, sb) sb.append(Text.DELIMETER) @@ -154,10 +155,10 @@ object EmployeeRowUnsaved { maritalstatus = json.\("maritalstatus").as(Reads.StringReads), gender = json.\("gender").as(Reads.StringReads), hiredate = json.\("hiredate").as(TypoLocalDate.reads), - salariedflag = json.\("salariedflag").as(Defaulted.reads(Flag.reads)), + salariedflag = json.\("salariedflag").as(Defaulted.reads(SalariedFlag.reads)), vacationhours = json.\("vacationhours").as(Defaulted.reads(TypoShort.reads)), sickleavehours = json.\("sickleavehours").as(Defaulted.reads(TypoShort.reads)), - currentflag = json.\("currentflag").as(Defaulted.reads(Flag.reads)), + currentflag = json.\("currentflag").as(Defaulted.reads(CurrentFlag.reads)), rowguid = json.\("rowguid").as(Defaulted.reads(TypoUUID.reads)), modifieddate = json.\("modifieddate").as(Defaulted.reads(TypoLocalDateTime.reads)), organizationnode = json.\("organizationnode").as(Defaulted.readsOpt(Reads.StringReads)) @@ -178,10 +179,10 @@ object EmployeeRowUnsaved { "maritalstatus" -> Writes.StringWrites.writes(o.maritalstatus), "gender" -> Writes.StringWrites.writes(o.gender), "hiredate" -> TypoLocalDate.writes.writes(o.hiredate), - "salariedflag" -> Defaulted.writes(Flag.writes).writes(o.salariedflag), + "salariedflag" -> Defaulted.writes(SalariedFlag.writes).writes(o.salariedflag), "vacationhours" -> Defaulted.writes(TypoShort.writes).writes(o.vacationhours), "sickleavehours" -> Defaulted.writes(TypoShort.writes).writes(o.sickleavehours), - "currentflag" -> Defaulted.writes(Flag.writes).writes(o.currentflag), + "currentflag" -> Defaulted.writes(CurrentFlag.writes).writes(o.currentflag), "rowguid" -> Defaulted.writes(TypoUUID.writes).writes(o.rowguid), "modifieddate" -> Defaulted.writes(TypoLocalDateTime.writes).writes(o.modifieddate), "organizationnode" -> Defaulted.writes(Writes.OptionWrites(Writes.StringWrites)).writes(o.organizationnode) diff --git a/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/humanresources/vemployee/VemployeeViewFields.scala b/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/humanresources/vemployee/VemployeeViewFields.scala index 406852bac3..d0474bd83d 100644 --- a/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/humanresources/vemployee/VemployeeViewFields.scala +++ b/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/humanresources/vemployee/VemployeeViewFields.scala @@ -10,6 +10,8 @@ import adventureworks.person.businessentity.BusinessentityId import adventureworks.public.Name import adventureworks.public.Phone import adventureworks.userdefined.FirstName +import adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import typr.dsl.Path import typr.dsl.RelationStructure import typr.dsl.SqlExpr.Field @@ -19,8 +21,8 @@ trait VemployeeViewFields { def businessentityid: Field[BusinessentityId, VemployeeViewRow] def title: Field[String, VemployeeViewRow] def firstname: Field[/* user-picked */ FirstName, VemployeeViewRow] - def middlename: Field[Name, VemployeeViewRow] - def lastname: Field[Name, VemployeeViewRow] + def middlename: Field[/* user-picked */ MiddleName, VemployeeViewRow] + def lastname: Field[/* user-picked */ LastName, VemployeeViewRow] def suffix: Field[String, VemployeeViewRow] def jobtitle: Field[String, VemployeeViewRow] def phonenumber: Field[Phone, VemployeeViewRow] @@ -47,8 +49,8 @@ object VemployeeViewFields { override def businessentityid = Field[BusinessentityId, VemployeeViewRow](_path, "businessentityid", None, None, x => x.businessentityid, (row, value) => row.copy(businessentityid = value)) override def title = Field[String, VemployeeViewRow](_path, "title", None, None, x => x.title, (row, value) => row.copy(title = value)) override def firstname = Field[/* user-picked */ FirstName, VemployeeViewRow](_path, "firstname", None, None, x => x.firstname, (row, value) => row.copy(firstname = value)) - override def middlename = Field[Name, VemployeeViewRow](_path, "middlename", None, None, x => x.middlename, (row, value) => row.copy(middlename = value)) - override def lastname = Field[Name, VemployeeViewRow](_path, "lastname", None, None, x => x.lastname, (row, value) => row.copy(lastname = value)) + override def middlename = Field[/* user-picked */ MiddleName, VemployeeViewRow](_path, "middlename", None, None, x => x.middlename, (row, value) => row.copy(middlename = value)) + override def lastname = Field[/* user-picked */ LastName, VemployeeViewRow](_path, "lastname", None, None, x => x.lastname, (row, value) => row.copy(lastname = value)) override def suffix = Field[String, VemployeeViewRow](_path, "suffix", None, None, x => x.suffix, (row, value) => row.copy(suffix = value)) override def jobtitle = Field[String, VemployeeViewRow](_path, "jobtitle", None, None, x => x.jobtitle, (row, value) => row.copy(jobtitle = value)) override def phonenumber = Field[Phone, VemployeeViewRow](_path, "phonenumber", None, None, x => x.phonenumber, (row, value) => row.copy(phonenumber = value)) diff --git a/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/humanresources/vemployee/VemployeeViewRow.scala b/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/humanresources/vemployee/VemployeeViewRow.scala index 2ec325dff2..6c62be4133 100644 --- a/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/humanresources/vemployee/VemployeeViewRow.scala +++ b/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/humanresources/vemployee/VemployeeViewRow.scala @@ -10,6 +10,8 @@ import adventureworks.person.businessentity.BusinessentityId import adventureworks.public.Name import adventureworks.public.Phone import adventureworks.userdefined.FirstName +import adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import anorm.Column import anorm.RowParser import anorm.Success @@ -31,9 +33,9 @@ case class VemployeeViewRow( /** Points to [[adventureworks.person.person.PersonRow.firstname]] */ firstname: /* user-picked */ FirstName, /** Points to [[adventureworks.person.person.PersonRow.middlename]] */ - middlename: Name, + middlename: /* user-picked */ MiddleName, /** Points to [[adventureworks.person.person.PersonRow.lastname]] */ - lastname: Name, + lastname: /* user-picked */ LastName, /** Points to [[adventureworks.person.person.PersonRow.suffix]] */ suffix: String, /** Points to [[adventureworks.humanresources.employee.EmployeeRow.jobtitle]] */ @@ -70,8 +72,8 @@ object VemployeeViewRow { businessentityid = json.\("businessentityid").as(BusinessentityId.reads), title = json.\("title").as(Reads.StringReads), firstname = json.\("firstname").as(FirstName.reads), - middlename = json.\("middlename").as(Name.reads), - lastname = json.\("lastname").as(Name.reads), + middlename = json.\("middlename").as(MiddleName.reads), + lastname = json.\("lastname").as(LastName.reads), suffix = json.\("suffix").as(Reads.StringReads), jobtitle = json.\("jobtitle").as(Reads.StringReads), phonenumber = json.\("phonenumber").as(Phone.reads), @@ -98,8 +100,8 @@ object VemployeeViewRow { businessentityid = row(idx + 0)(BusinessentityId.column), title = row(idx + 1)(Column.columnToString), firstname = row(idx + 2)(/* user-picked */ FirstName.column), - middlename = row(idx + 3)(Name.column), - lastname = row(idx + 4)(Name.column), + middlename = row(idx + 3)(/* user-picked */ MiddleName.column), + lastname = row(idx + 4)(/* user-picked */ LastName.column), suffix = row(idx + 5)(Column.columnToString), jobtitle = row(idx + 6)(Column.columnToString), phonenumber = row(idx + 7)(Phone.column), @@ -124,8 +126,8 @@ object VemployeeViewRow { "businessentityid" -> BusinessentityId.writes.writes(o.businessentityid), "title" -> Writes.StringWrites.writes(o.title), "firstname" -> FirstName.writes.writes(o.firstname), - "middlename" -> Name.writes.writes(o.middlename), - "lastname" -> Name.writes.writes(o.lastname), + "middlename" -> MiddleName.writes.writes(o.middlename), + "lastname" -> LastName.writes.writes(o.lastname), "suffix" -> Writes.StringWrites.writes(o.suffix), "jobtitle" -> Writes.StringWrites.writes(o.jobtitle), "phonenumber" -> Phone.writes.writes(o.phonenumber), diff --git a/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/person/person/PersonFields.scala b/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/person/person/PersonFields.scala index 27eb19af9f..6fdabb004a 100644 --- a/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/person/person/PersonFields.scala +++ b/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/person/person/PersonFields.scala @@ -11,9 +11,10 @@ import adventureworks.customtypes.TypoXml import adventureworks.person.businessentity.BusinessentityFields import adventureworks.person.businessentity.BusinessentityId import adventureworks.person.businessentity.BusinessentityRow -import adventureworks.public.Name import adventureworks.public.NameStyle import adventureworks.userdefined.FirstName +import adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import typr.dsl.ForeignKey import typr.dsl.Path import typr.dsl.RelationStructure @@ -28,8 +29,8 @@ trait PersonFields { def namestyle: Field[NameStyle, PersonRow] def title: OptField[/* max 8 chars */ String, PersonRow] def firstname: Field[/* user-picked */ FirstName, PersonRow] - def middlename: OptField[Name, PersonRow] - def lastname: Field[Name, PersonRow] + def middlename: OptField[/* user-picked */ MiddleName, PersonRow] + def lastname: Field[/* user-picked */ LastName, PersonRow] def suffix: OptField[/* max 10 chars */ String, PersonRow] def emailpromotion: Field[Int, PersonRow] def additionalcontactinfo: OptField[TypoXml, PersonRow] @@ -54,8 +55,8 @@ object PersonFields { override def namestyle = Field[NameStyle, PersonRow](_path, "namestyle", None, Some("bool"), x => x.namestyle, (row, value) => row.copy(namestyle = value)) override def title = OptField[/* max 8 chars */ String, PersonRow](_path, "title", None, None, x => x.title, (row, value) => row.copy(title = value)) override def firstname = Field[/* user-picked */ FirstName, PersonRow](_path, "firstname", None, Some("varchar"), x => x.firstname, (row, value) => row.copy(firstname = value)) - override def middlename = OptField[Name, PersonRow](_path, "middlename", None, Some("varchar"), x => x.middlename, (row, value) => row.copy(middlename = value)) - override def lastname = Field[Name, PersonRow](_path, "lastname", None, Some("varchar"), x => x.lastname, (row, value) => row.copy(lastname = value)) + override def middlename = OptField[/* user-picked */ MiddleName, PersonRow](_path, "middlename", None, Some("varchar"), x => x.middlename, (row, value) => row.copy(middlename = value)) + override def lastname = Field[/* user-picked */ LastName, PersonRow](_path, "lastname", None, Some("varchar"), x => x.lastname, (row, value) => row.copy(lastname = value)) override def suffix = OptField[/* max 10 chars */ String, PersonRow](_path, "suffix", None, None, x => x.suffix, (row, value) => row.copy(suffix = value)) override def emailpromotion = Field[Int, PersonRow](_path, "emailpromotion", None, Some("int4"), x => x.emailpromotion, (row, value) => row.copy(emailpromotion = value)) override def additionalcontactinfo = OptField[TypoXml, PersonRow](_path, "additionalcontactinfo", None, Some("xml"), x => x.additionalcontactinfo, (row, value) => row.copy(additionalcontactinfo = value)) diff --git a/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/person/person/PersonRepoImpl.scala b/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/person/person/PersonRepoImpl.scala index 7d81a52da6..dece23373c 100644 --- a/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/person/person/PersonRepoImpl.scala +++ b/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/person/person/PersonRepoImpl.scala @@ -10,10 +10,11 @@ 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.streamingInsert import adventureworks.userdefined.FirstName +import adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import anorm.BatchSql import anorm.NamedParameter import anorm.ParameterMetaData @@ -43,7 +44,7 @@ class PersonRepoImpl extends PersonRepo { 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") - values (${ParameterValue(unsaved.businessentityid, null, BusinessentityId.toStatement)}::int4, ${ParameterValue(unsaved.persontype, null, ToStatement.stringToStatement)}::bpchar, ${ParameterValue(unsaved.namestyle, null, NameStyle.toStatement)}::bool, ${ParameterValue(unsaved.title, null, ToStatement.optionToStatement(ToStatement.stringToStatement, ParameterMetaData.StringParameterMetaData))}, ${ParameterValue(unsaved.firstname, null, /* user-picked */ FirstName.toStatement)}::varchar, ${ParameterValue(unsaved.middlename, null, ToStatement.optionToStatement(Name.toStatement, Name.parameterMetadata))}::varchar, ${ParameterValue(unsaved.lastname, null, Name.toStatement)}::varchar, ${ParameterValue(unsaved.suffix, null, ToStatement.optionToStatement(ToStatement.stringToStatement, ParameterMetaData.StringParameterMetaData))}, ${ParameterValue(unsaved.emailpromotion, null, ToStatement.intToStatement)}::int4, ${ParameterValue(unsaved.additionalcontactinfo, null, ToStatement.optionToStatement(TypoXml.toStatement, TypoXml.parameterMetadata))}::xml, ${ParameterValue(unsaved.demographics, null, ToStatement.optionToStatement(TypoXml.toStatement, TypoXml.parameterMetadata))}::xml, ${ParameterValue(unsaved.rowguid, null, TypoUUID.toStatement)}::uuid, ${ParameterValue(unsaved.modifieddate, null, TypoLocalDateTime.toStatement)}::timestamp) + values (${ParameterValue(unsaved.businessentityid, null, BusinessentityId.toStatement)}::int4, ${ParameterValue(unsaved.persontype, null, ToStatement.stringToStatement)}::bpchar, ${ParameterValue(unsaved.namestyle, null, NameStyle.toStatement)}::bool, ${ParameterValue(unsaved.title, null, ToStatement.optionToStatement(ToStatement.stringToStatement, ParameterMetaData.StringParameterMetaData))}, ${ParameterValue(unsaved.firstname, null, /* user-picked */ FirstName.toStatement)}::varchar, ${ParameterValue(unsaved.middlename, null, ToStatement.optionToStatement(MiddleName.toStatement, MiddleName.parameterMetadata))}::varchar, ${ParameterValue(unsaved.lastname, null, /* user-picked */ LastName.toStatement)}::varchar, ${ParameterValue(unsaved.suffix, null, ToStatement.optionToStatement(ToStatement.stringToStatement, ParameterMetaData.StringParameterMetaData))}, ${ParameterValue(unsaved.emailpromotion, null, ToStatement.intToStatement)}::int4, ${ParameterValue(unsaved.additionalcontactinfo, null, ToStatement.optionToStatement(TypoXml.toStatement, TypoXml.parameterMetadata))}::xml, ${ParameterValue(unsaved.demographics, null, ToStatement.optionToStatement(TypoXml.toStatement, TypoXml.parameterMetadata))}::xml, ${ParameterValue(unsaved.rowguid, null, TypoUUID.toStatement)}::uuid, ${ParameterValue(unsaved.modifieddate, null, TypoLocalDateTime.toStatement)}::timestamp) returning "businessentityid", "persontype", "namestyle", "title", "firstname", "middlename", "lastname", "suffix", "emailpromotion", "additionalcontactinfo", "demographics", "rowguid", "modifieddate"::text """ .executeInsert(PersonRow.rowParser(1).single) @@ -55,8 +56,8 @@ class PersonRepoImpl extends PersonRepo { Some((NamedParameter("persontype", ParameterValue(unsaved.persontype, null, ToStatement.stringToStatement)), "::bpchar")), Some((NamedParameter("title", ParameterValue(unsaved.title, null, ToStatement.optionToStatement(ToStatement.stringToStatement, ParameterMetaData.StringParameterMetaData))), "")), Some((NamedParameter("firstname", ParameterValue(unsaved.firstname, null, /* user-picked */ FirstName.toStatement)), "::varchar")), - Some((NamedParameter("middlename", ParameterValue(unsaved.middlename, null, ToStatement.optionToStatement(Name.toStatement, Name.parameterMetadata))), "::varchar")), - Some((NamedParameter("lastname", ParameterValue(unsaved.lastname, null, Name.toStatement)), "::varchar")), + Some((NamedParameter("middlename", ParameterValue(unsaved.middlename, null, ToStatement.optionToStatement(MiddleName.toStatement, MiddleName.parameterMetadata))), "::varchar")), + Some((NamedParameter("lastname", ParameterValue(unsaved.lastname, null, /* user-picked */ LastName.toStatement)), "::varchar")), Some((NamedParameter("suffix", ParameterValue(unsaved.suffix, null, ToStatement.optionToStatement(ToStatement.stringToStatement, ParameterMetaData.StringParameterMetaData))), "")), Some((NamedParameter("additionalcontactinfo", ParameterValue(unsaved.additionalcontactinfo, null, ToStatement.optionToStatement(TypoXml.toStatement, TypoXml.parameterMetadata))), "::xml")), Some((NamedParameter("demographics", ParameterValue(unsaved.demographics, null, ToStatement.optionToStatement(TypoXml.toStatement, TypoXml.parameterMetadata))), "::xml")), @@ -140,8 +141,8 @@ class PersonRepoImpl extends PersonRepo { "namestyle" = ${ParameterValue(row.namestyle, null, NameStyle.toStatement)}::bool, "title" = ${ParameterValue(row.title, null, ToStatement.optionToStatement(ToStatement.stringToStatement, ParameterMetaData.StringParameterMetaData))}, "firstname" = ${ParameterValue(row.firstname, null, /* user-picked */ FirstName.toStatement)}::varchar, - "middlename" = ${ParameterValue(row.middlename, null, ToStatement.optionToStatement(Name.toStatement, Name.parameterMetadata))}::varchar, - "lastname" = ${ParameterValue(row.lastname, null, Name.toStatement)}::varchar, + "middlename" = ${ParameterValue(row.middlename, null, ToStatement.optionToStatement(MiddleName.toStatement, MiddleName.parameterMetadata))}::varchar, + "lastname" = ${ParameterValue(row.lastname, null, /* user-picked */ LastName.toStatement)}::varchar, "suffix" = ${ParameterValue(row.suffix, null, ToStatement.optionToStatement(ToStatement.stringToStatement, ParameterMetaData.StringParameterMetaData))}, "emailpromotion" = ${ParameterValue(row.emailpromotion, null, ToStatement.intToStatement)}::int4, "additionalcontactinfo" = ${ParameterValue(row.additionalcontactinfo, null, ToStatement.optionToStatement(TypoXml.toStatement, TypoXml.parameterMetadata))}::xml, @@ -161,8 +162,8 @@ class PersonRepoImpl extends PersonRepo { ${ParameterValue(unsaved.namestyle, null, NameStyle.toStatement)}::bool, ${ParameterValue(unsaved.title, null, ToStatement.optionToStatement(ToStatement.stringToStatement, ParameterMetaData.StringParameterMetaData))}, ${ParameterValue(unsaved.firstname, null, /* user-picked */ FirstName.toStatement)}::varchar, - ${ParameterValue(unsaved.middlename, null, ToStatement.optionToStatement(Name.toStatement, Name.parameterMetadata))}::varchar, - ${ParameterValue(unsaved.lastname, null, Name.toStatement)}::varchar, + ${ParameterValue(unsaved.middlename, null, ToStatement.optionToStatement(MiddleName.toStatement, MiddleName.parameterMetadata))}::varchar, + ${ParameterValue(unsaved.lastname, null, /* user-picked */ LastName.toStatement)}::varchar, ${ParameterValue(unsaved.suffix, null, ToStatement.optionToStatement(ToStatement.stringToStatement, ParameterMetaData.StringParameterMetaData))}, ${ParameterValue(unsaved.emailpromotion, null, ToStatement.intToStatement)}::int4, ${ParameterValue(unsaved.additionalcontactinfo, null, ToStatement.optionToStatement(TypoXml.toStatement, TypoXml.parameterMetadata))}::xml, @@ -196,8 +197,8 @@ class PersonRepoImpl extends PersonRepo { NamedParameter("namestyle", ParameterValue(row.namestyle, null, NameStyle.toStatement)), NamedParameter("title", ParameterValue(row.title, null, ToStatement.optionToStatement(ToStatement.stringToStatement, ParameterMetaData.StringParameterMetaData))), NamedParameter("firstname", ParameterValue(row.firstname, null, /* user-picked */ FirstName.toStatement)), - NamedParameter("middlename", ParameterValue(row.middlename, null, ToStatement.optionToStatement(Name.toStatement, Name.parameterMetadata))), - NamedParameter("lastname", ParameterValue(row.lastname, null, Name.toStatement)), + NamedParameter("middlename", ParameterValue(row.middlename, null, ToStatement.optionToStatement(MiddleName.toStatement, MiddleName.parameterMetadata))), + NamedParameter("lastname", ParameterValue(row.lastname, null, /* user-picked */ LastName.toStatement)), NamedParameter("suffix", ParameterValue(row.suffix, null, ToStatement.optionToStatement(ToStatement.stringToStatement, ParameterMetaData.StringParameterMetaData))), NamedParameter("emailpromotion", ParameterValue(row.emailpromotion, null, ToStatement.intToStatement)), NamedParameter("additionalcontactinfo", ParameterValue(row.additionalcontactinfo, null, ToStatement.optionToStatement(TypoXml.toStatement, TypoXml.parameterMetadata))), diff --git a/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/person/person/PersonRow.scala b/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/person/person/PersonRow.scala index 72d3663a53..5d1cea6a06 100644 --- a/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/person/person/PersonRow.scala +++ b/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/person/person/PersonRow.scala @@ -11,9 +11,10 @@ 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 adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import anorm.Column import anorm.RowParser import anorm.Success @@ -48,9 +49,9 @@ case class PersonRow( /** First name of the person. */ firstname: /* user-picked */ FirstName, /** Middle name or middle initial of the person. */ - middlename: Option[Name], + middlename: Option[/* user-picked */ MiddleName], /** Last name of the person. */ - lastname: Name, + lastname: /* user-picked */ LastName, /** Surname suffix. For example, Sr. or Jr. */ suffix: Option[/* max 10 chars */ String], /** 0 = Contact does not wish to receive e-mail promotions, 1 = Contact does wish to receive e-mail promotions from AdventureWorks, 2 = Contact does wish to receive e-mail promotions from AdventureWorks and selected partners. @@ -106,9 +107,9 @@ object PersonRow { sb.append(Text.DELIMETER) /* user-picked */ FirstName.pgText.unsafeEncode(row.firstname, sb) sb.append(Text.DELIMETER) - Text.option(Name.pgText).unsafeEncode(row.middlename, sb) + Text.option(MiddleName.pgText).unsafeEncode(row.middlename, sb) sb.append(Text.DELIMETER) - Name.pgText.unsafeEncode(row.lastname, sb) + /* user-picked */ LastName.pgText.unsafeEncode(row.lastname, sb) sb.append(Text.DELIMETER) Text.option(Text.stringInstance).unsafeEncode(row.suffix, sb) sb.append(Text.DELIMETER) @@ -133,8 +134,8 @@ object PersonRow { namestyle = json.\("namestyle").as(NameStyle.reads), title = json.\("title").toOption.map(_.as(Reads.StringReads)), firstname = json.\("firstname").as(FirstName.reads), - middlename = json.\("middlename").toOption.map(_.as(Name.reads)), - lastname = json.\("lastname").as(Name.reads), + middlename = json.\("middlename").toOption.map(_.as(MiddleName.reads)), + lastname = json.\("lastname").as(LastName.reads), suffix = json.\("suffix").toOption.map(_.as(Reads.StringReads)), emailpromotion = json.\("emailpromotion").as(Reads.IntReads), additionalcontactinfo = json.\("additionalcontactinfo").toOption.map(_.as(TypoXml.reads)), @@ -156,8 +157,8 @@ object PersonRow { namestyle = row(idx + 2)(NameStyle.column), title = row(idx + 3)(Column.columnToOption(Column.columnToString)), firstname = row(idx + 4)(/* user-picked */ FirstName.column), - middlename = row(idx + 5)(Column.columnToOption(Name.column)), - lastname = row(idx + 6)(Name.column), + middlename = row(idx + 5)(Column.columnToOption(MiddleName.column)), + lastname = row(idx + 6)(/* user-picked */ LastName.column), suffix = row(idx + 7)(Column.columnToOption(Column.columnToString)), emailpromotion = row(idx + 8)(Column.columnToInt), additionalcontactinfo = row(idx + 9)(Column.columnToOption(TypoXml.column)), @@ -177,8 +178,8 @@ object PersonRow { "namestyle" -> NameStyle.writes.writes(o.namestyle), "title" -> Writes.OptionWrites(Writes.StringWrites).writes(o.title), "firstname" -> FirstName.writes.writes(o.firstname), - "middlename" -> Writes.OptionWrites(Name.writes).writes(o.middlename), - "lastname" -> Name.writes.writes(o.lastname), + "middlename" -> Writes.OptionWrites(MiddleName.writes).writes(o.middlename), + "lastname" -> LastName.writes.writes(o.lastname), "suffix" -> Writes.OptionWrites(Writes.StringWrites).writes(o.suffix), "emailpromotion" -> Writes.IntWrites.writes(o.emailpromotion), "additionalcontactinfo" -> Writes.OptionWrites(TypoXml.writes).writes(o.additionalcontactinfo), diff --git a/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/person/person/PersonRowUnsaved.scala b/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/person/person/PersonRowUnsaved.scala index 7c89f60cce..79da5364ed 100644 --- a/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/person/person/PersonRowUnsaved.scala +++ b/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/person/person/PersonRowUnsaved.scala @@ -12,9 +12,10 @@ 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 adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import play.api.libs.json.JsObject import play.api.libs.json.JsResult import play.api.libs.json.JsValue @@ -39,9 +40,9 @@ case class PersonRowUnsaved( /** First name of the person. */ firstname: /* user-picked */ FirstName, /** Middle name or middle initial of the person. */ - middlename: Option[Name] = None, + middlename: Option[/* user-picked */ MiddleName] = None, /** Last name of the person. */ - lastname: Name, + lastname: /* user-picked */ LastName, /** Surname suffix. For example, Sr. or Jr. */ suffix: Option[/* max 10 chars */ String] = None, /** Additional contact information about the person stored in xml format. */ @@ -97,9 +98,9 @@ object PersonRowUnsaved { sb.append(Text.DELIMETER) /* user-picked */ FirstName.pgText.unsafeEncode(row.firstname, sb) sb.append(Text.DELIMETER) - Text.option(Name.pgText).unsafeEncode(row.middlename, sb) + Text.option(MiddleName.pgText).unsafeEncode(row.middlename, sb) sb.append(Text.DELIMETER) - Name.pgText.unsafeEncode(row.lastname, sb) + /* user-picked */ LastName.pgText.unsafeEncode(row.lastname, sb) sb.append(Text.DELIMETER) Text.option(Text.stringInstance).unsafeEncode(row.suffix, sb) sb.append(Text.DELIMETER) @@ -125,8 +126,8 @@ object PersonRowUnsaved { persontype = json.\("persontype").as(Reads.StringReads), title = json.\("title").toOption.map(_.as(Reads.StringReads)), firstname = json.\("firstname").as(FirstName.reads), - middlename = json.\("middlename").toOption.map(_.as(Name.reads)), - lastname = json.\("lastname").as(Name.reads), + middlename = json.\("middlename").toOption.map(_.as(MiddleName.reads)), + lastname = json.\("lastname").as(LastName.reads), suffix = json.\("suffix").toOption.map(_.as(Reads.StringReads)), additionalcontactinfo = json.\("additionalcontactinfo").toOption.map(_.as(TypoXml.reads)), demographics = json.\("demographics").toOption.map(_.as(TypoXml.reads)), @@ -147,8 +148,8 @@ object PersonRowUnsaved { "persontype" -> Writes.StringWrites.writes(o.persontype), "title" -> Writes.OptionWrites(Writes.StringWrites).writes(o.title), "firstname" -> FirstName.writes.writes(o.firstname), - "middlename" -> Writes.OptionWrites(Name.writes).writes(o.middlename), - "lastname" -> Name.writes.writes(o.lastname), + "middlename" -> Writes.OptionWrites(MiddleName.writes).writes(o.middlename), + "lastname" -> LastName.writes.writes(o.lastname), "suffix" -> Writes.OptionWrites(Writes.StringWrites).writes(o.suffix), "additionalcontactinfo" -> Writes.OptionWrites(TypoXml.writes).writes(o.additionalcontactinfo), "demographics" -> Writes.OptionWrites(TypoXml.writes).writes(o.demographics), diff --git a/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/person_detail/PersonDetailSqlRow.scala b/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/person_detail/PersonDetailSqlRow.scala index 6a47335b1e..982a8c913e 100644 --- a/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/person_detail/PersonDetailSqlRow.scala +++ b/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/person_detail/PersonDetailSqlRow.scala @@ -7,8 +7,9 @@ package adventureworks.person_detail import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Name import adventureworks.userdefined.FirstName +import adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import anorm.Column import anorm.RowParser import anorm.Success @@ -30,9 +31,9 @@ case class PersonDetailSqlRow( /** Points to [[adventureworks.person.person.PersonRow.firstname]] */ firstname: /* user-picked */ FirstName, /** Points to [[adventureworks.person.person.PersonRow.middlename]] */ - middlename: Option[Name], + middlename: Option[/* user-picked */ MiddleName], /** Points to [[adventureworks.person.person.PersonRow.lastname]] */ - lastname: Name, + lastname: /* user-picked */ LastName, /** Points to [[adventureworks.humanresources.employee.EmployeeRow.jobtitle]] */ jobtitle: String, /** Points to [[adventureworks.person.address.AddressRow.addressline1]] */ @@ -53,8 +54,8 @@ object PersonDetailSqlRow { businessentityid = json.\("businessentityid").as(BusinessentityId.reads), title = json.\("title").toOption.map(_.as(Reads.StringReads)), firstname = json.\("firstname").as(FirstName.reads), - middlename = json.\("middlename").toOption.map(_.as(Name.reads)), - lastname = json.\("lastname").as(Name.reads), + middlename = json.\("middlename").toOption.map(_.as(MiddleName.reads)), + lastname = json.\("lastname").as(LastName.reads), jobtitle = json.\("jobtitle").as(Reads.StringReads), addressline1 = json.\("addressline1").toOption.map(_.as(Reads.StringReads)), city = json.\("city").toOption.map(_.as(Reads.StringReads)), @@ -73,8 +74,8 @@ object PersonDetailSqlRow { businessentityid = row(idx + 0)(BusinessentityId.column), title = row(idx + 1)(Column.columnToOption(Column.columnToString)), firstname = row(idx + 2)(/* user-picked */ FirstName.column), - middlename = row(idx + 3)(Column.columnToOption(Name.column)), - lastname = row(idx + 4)(Name.column), + middlename = row(idx + 3)(Column.columnToOption(MiddleName.column)), + lastname = row(idx + 4)(/* user-picked */ LastName.column), jobtitle = row(idx + 5)(Column.columnToString), addressline1 = row(idx + 6)(Column.columnToOption(Column.columnToString)), city = row(idx + 7)(Column.columnToOption(Column.columnToString)), @@ -91,8 +92,8 @@ object PersonDetailSqlRow { "businessentityid" -> BusinessentityId.writes.writes(o.businessentityid), "title" -> Writes.OptionWrites(Writes.StringWrites).writes(o.title), "firstname" -> FirstName.writes.writes(o.firstname), - "middlename" -> Writes.OptionWrites(Name.writes).writes(o.middlename), - "lastname" -> Name.writes.writes(o.lastname), + "middlename" -> Writes.OptionWrites(MiddleName.writes).writes(o.middlename), + "lastname" -> LastName.writes.writes(o.lastname), "jobtitle" -> Writes.StringWrites.writes(o.jobtitle), "addressline1" -> Writes.OptionWrites(Writes.StringWrites).writes(o.addressline1), "city" -> Writes.OptionWrites(Writes.StringWrites).writes(o.city), diff --git a/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/person_dynamic/PersonDynamicSqlRow.scala b/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/person_dynamic/PersonDynamicSqlRow.scala index d47f4ec156..76f826afce 100644 --- a/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/person_dynamic/PersonDynamicSqlRow.scala +++ b/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/person_dynamic/PersonDynamicSqlRow.scala @@ -5,8 +5,9 @@ */ package adventureworks.person_dynamic -import adventureworks.public.Name import adventureworks.userdefined.FirstName +import adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import anorm.Column import anorm.RowParser import anorm.Success @@ -26,9 +27,9 @@ case class PersonDynamicSqlRow( /** Points to [[adventureworks.person.person.PersonRow.firstname]] */ firstname: /* user-picked */ FirstName, /** Points to [[adventureworks.person.person.PersonRow.middlename]] */ - middlename: Option[Name], + middlename: Option[/* user-picked */ MiddleName], /** Points to [[adventureworks.person.person.PersonRow.lastname]] */ - lastname: Name + lastname: /* user-picked */ LastName ) object PersonDynamicSqlRow { @@ -38,8 +39,8 @@ object PersonDynamicSqlRow { PersonDynamicSqlRow( title = json.\("title").toOption.map(_.as(Reads.StringReads)), firstname = json.\("firstname").as(FirstName.reads), - middlename = json.\("middlename").toOption.map(_.as(Name.reads)), - lastname = json.\("lastname").as(Name.reads) + middlename = json.\("middlename").toOption.map(_.as(MiddleName.reads)), + lastname = json.\("lastname").as(LastName.reads) ) ) ), @@ -52,8 +53,8 @@ object PersonDynamicSqlRow { PersonDynamicSqlRow( title = row(idx + 0)(Column.columnToOption(Column.columnToString)), firstname = row(idx + 1)(/* user-picked */ FirstName.column), - middlename = row(idx + 2)(Column.columnToOption(Name.column)), - lastname = row(idx + 3)(Name.column) + middlename = row(idx + 2)(Column.columnToOption(MiddleName.column)), + lastname = row(idx + 3)(/* user-picked */ LastName.column) ) ) } @@ -64,8 +65,8 @@ object PersonDynamicSqlRow { new JsObject(ListMap[String, JsValue]( "title" -> Writes.OptionWrites(Writes.StringWrites).writes(o.title), "firstname" -> FirstName.writes.writes(o.firstname), - "middlename" -> Writes.OptionWrites(Name.writes).writes(o.middlename), - "lastname" -> Name.writes.writes(o.lastname) + "middlename" -> Writes.OptionWrites(MiddleName.writes).writes(o.middlename), + "lastname" -> LastName.writes.writes(o.lastname) )) ) } diff --git a/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/userdefined/ActiveFlag.scala b/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/userdefined/ActiveFlag.scala new file mode 100644 index 0000000000..410918079e --- /dev/null +++ b/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/userdefined/ActiveFlag.scala @@ -0,0 +1,50 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined + +import adventureworks.Text +import adventureworks.public.Flag +import anorm.Column +import anorm.ParameterMetaData +import anorm.ToStatement +import play.api.libs.json.Reads +import play.api.libs.json.Writes +import typr.dsl.Bijection + +/** Shared type `ActiveFlag` + * Generated from TypeDefinitions matching + */ +case class ActiveFlag(value: Flag) extends scala.AnyVal + +object ActiveFlag { + implicit lazy val arrayColumn: Column[Array[ActiveFlag]] = Column.columnToArray(column, implicitly) + + implicit lazy val arrayToStatement: ToStatement[Array[ActiveFlag]] = Flag.arrayToStatement.contramap(_.map(_.value)) + + implicit lazy val bijection: Bijection[ActiveFlag, Flag] = Bijection.apply[ActiveFlag, Flag](_.value)(ActiveFlag.apply) + + implicit lazy val column: Column[ActiveFlag] = Flag.column.map(ActiveFlag.apply) + + implicit lazy val parameterMetadata: ParameterMetaData[ActiveFlag] = { + new ParameterMetaData[ActiveFlag] { + override def sqlType: String = Flag.parameterMetadata.sqlType + override def jdbcType: Int = Flag.parameterMetadata.jdbcType + } + } + + implicit lazy val pgText: Text[ActiveFlag] = { + new Text[ActiveFlag] { + override def unsafeEncode(v: ActiveFlag, sb: StringBuilder): Unit = Flag.pgText.unsafeEncode(v.value, sb) + override def unsafeArrayEncode(v: ActiveFlag, sb: StringBuilder): Unit = Flag.pgText.unsafeArrayEncode(v.value, sb) + } + } + + implicit lazy val reads: Reads[ActiveFlag] = Flag.reads.map(ActiveFlag.apply) + + implicit lazy val toStatement: ToStatement[ActiveFlag] = Flag.toStatement.contramap(_.value) + + implicit lazy val writes: Writes[ActiveFlag] = Flag.writes.contramap(_.value) +} \ No newline at end of file diff --git a/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/userdefined/CurrentFlag.scala b/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/userdefined/CurrentFlag.scala new file mode 100644 index 0000000000..6eab4e9d9c --- /dev/null +++ b/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/userdefined/CurrentFlag.scala @@ -0,0 +1,50 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined + +import adventureworks.Text +import adventureworks.public.Flag +import anorm.Column +import anorm.ParameterMetaData +import anorm.ToStatement +import play.api.libs.json.Reads +import play.api.libs.json.Writes +import typr.dsl.Bijection + +/** Shared type `CurrentFlag` + * Generated from TypeDefinitions matching + */ +case class CurrentFlag(value: Flag) extends scala.AnyVal + +object CurrentFlag { + implicit lazy val arrayColumn: Column[Array[CurrentFlag]] = Column.columnToArray(column, implicitly) + + implicit lazy val arrayToStatement: ToStatement[Array[CurrentFlag]] = Flag.arrayToStatement.contramap(_.map(_.value)) + + implicit lazy val bijection: Bijection[CurrentFlag, Flag] = Bijection.apply[CurrentFlag, Flag](_.value)(CurrentFlag.apply) + + implicit lazy val column: Column[CurrentFlag] = Flag.column.map(CurrentFlag.apply) + + implicit lazy val parameterMetadata: ParameterMetaData[CurrentFlag] = { + new ParameterMetaData[CurrentFlag] { + override def sqlType: String = Flag.parameterMetadata.sqlType + override def jdbcType: Int = Flag.parameterMetadata.jdbcType + } + } + + implicit lazy val pgText: Text[CurrentFlag] = { + new Text[CurrentFlag] { + override def unsafeEncode(v: CurrentFlag, sb: StringBuilder): Unit = Flag.pgText.unsafeEncode(v.value, sb) + override def unsafeArrayEncode(v: CurrentFlag, sb: StringBuilder): Unit = Flag.pgText.unsafeArrayEncode(v.value, sb) + } + } + + implicit lazy val reads: Reads[CurrentFlag] = Flag.reads.map(CurrentFlag.apply) + + implicit lazy val toStatement: ToStatement[CurrentFlag] = Flag.toStatement.contramap(_.value) + + implicit lazy val writes: Writes[CurrentFlag] = Flag.writes.contramap(_.value) +} \ No newline at end of file diff --git a/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/userdefined/FirstName.scala b/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/userdefined/FirstName.scala new file mode 100644 index 0000000000..e3d26062d9 --- /dev/null +++ b/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/userdefined/FirstName.scala @@ -0,0 +1,50 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined + +import adventureworks.Text +import adventureworks.public.Name +import anorm.Column +import anorm.ParameterMetaData +import anorm.ToStatement +import play.api.libs.json.Reads +import play.api.libs.json.Writes +import typr.dsl.Bijection + +/** Shared type `FirstName` + * Generated from TypeDefinitions matching + */ +case class FirstName(value: Name) extends scala.AnyVal + +object FirstName { + implicit lazy val arrayColumn: Column[Array[FirstName]] = Column.columnToArray(column, implicitly) + + implicit lazy val arrayToStatement: ToStatement[Array[FirstName]] = Name.arrayToStatement.contramap(_.map(_.value)) + + implicit lazy val bijection: Bijection[FirstName, Name] = Bijection.apply[FirstName, Name](_.value)(FirstName.apply) + + implicit lazy val column: Column[FirstName] = Name.column.map(FirstName.apply) + + implicit lazy val parameterMetadata: ParameterMetaData[FirstName] = { + new ParameterMetaData[FirstName] { + override def sqlType: String = Name.parameterMetadata.sqlType + override def jdbcType: Int = Name.parameterMetadata.jdbcType + } + } + + implicit lazy val pgText: Text[FirstName] = { + new Text[FirstName] { + override def unsafeEncode(v: FirstName, sb: StringBuilder): Unit = Name.pgText.unsafeEncode(v.value, sb) + override def unsafeArrayEncode(v: FirstName, sb: StringBuilder): Unit = Name.pgText.unsafeArrayEncode(v.value, sb) + } + } + + implicit lazy val reads: Reads[FirstName] = Name.reads.map(FirstName.apply) + + implicit lazy val toStatement: ToStatement[FirstName] = Name.toStatement.contramap(_.value) + + implicit lazy val writes: Writes[FirstName] = Name.writes.contramap(_.value) +} \ No newline at end of file diff --git a/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/userdefined/LastName.scala b/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/userdefined/LastName.scala new file mode 100644 index 0000000000..695b5f6299 --- /dev/null +++ b/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/userdefined/LastName.scala @@ -0,0 +1,50 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined + +import adventureworks.Text +import adventureworks.public.Name +import anorm.Column +import anorm.ParameterMetaData +import anorm.ToStatement +import play.api.libs.json.Reads +import play.api.libs.json.Writes +import typr.dsl.Bijection + +/** Shared type `LastName` + * Generated from TypeDefinitions matching + */ +case class LastName(value: Name) extends scala.AnyVal + +object LastName { + implicit lazy val arrayColumn: Column[Array[LastName]] = Column.columnToArray(column, implicitly) + + implicit lazy val arrayToStatement: ToStatement[Array[LastName]] = Name.arrayToStatement.contramap(_.map(_.value)) + + implicit lazy val bijection: Bijection[LastName, Name] = Bijection.apply[LastName, Name](_.value)(LastName.apply) + + implicit lazy val column: Column[LastName] = Name.column.map(LastName.apply) + + implicit lazy val parameterMetadata: ParameterMetaData[LastName] = { + new ParameterMetaData[LastName] { + override def sqlType: String = Name.parameterMetadata.sqlType + override def jdbcType: Int = Name.parameterMetadata.jdbcType + } + } + + implicit lazy val pgText: Text[LastName] = { + new Text[LastName] { + override def unsafeEncode(v: LastName, sb: StringBuilder): Unit = Name.pgText.unsafeEncode(v.value, sb) + override def unsafeArrayEncode(v: LastName, sb: StringBuilder): Unit = Name.pgText.unsafeArrayEncode(v.value, sb) + } + } + + implicit lazy val reads: Reads[LastName] = Name.reads.map(LastName.apply) + + implicit lazy val toStatement: ToStatement[LastName] = Name.toStatement.contramap(_.value) + + implicit lazy val writes: Writes[LastName] = Name.writes.contramap(_.value) +} \ No newline at end of file diff --git a/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/userdefined/MiddleName.scala b/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/userdefined/MiddleName.scala new file mode 100644 index 0000000000..3404d48e88 --- /dev/null +++ b/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/userdefined/MiddleName.scala @@ -0,0 +1,50 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined + +import adventureworks.Text +import adventureworks.public.Name +import anorm.Column +import anorm.ParameterMetaData +import anorm.ToStatement +import play.api.libs.json.Reads +import play.api.libs.json.Writes +import typr.dsl.Bijection + +/** Shared type `MiddleName` + * Generated from TypeDefinitions matching + */ +case class MiddleName(value: Name) extends scala.AnyVal + +object MiddleName { + implicit lazy val arrayColumn: Column[Array[MiddleName]] = Column.columnToArray(column, implicitly) + + implicit lazy val arrayToStatement: ToStatement[Array[MiddleName]] = Name.arrayToStatement.contramap(_.map(_.value)) + + implicit lazy val bijection: Bijection[MiddleName, Name] = Bijection.apply[MiddleName, Name](_.value)(MiddleName.apply) + + implicit lazy val column: Column[MiddleName] = Name.column.map(MiddleName.apply) + + implicit lazy val parameterMetadata: ParameterMetaData[MiddleName] = { + new ParameterMetaData[MiddleName] { + override def sqlType: String = Name.parameterMetadata.sqlType + override def jdbcType: Int = Name.parameterMetadata.jdbcType + } + } + + implicit lazy val pgText: Text[MiddleName] = { + new Text[MiddleName] { + override def unsafeEncode(v: MiddleName, sb: StringBuilder): Unit = Name.pgText.unsafeEncode(v.value, sb) + override def unsafeArrayEncode(v: MiddleName, sb: StringBuilder): Unit = Name.pgText.unsafeArrayEncode(v.value, sb) + } + } + + implicit lazy val reads: Reads[MiddleName] = Name.reads.map(MiddleName.apply) + + implicit lazy val toStatement: ToStatement[MiddleName] = Name.toStatement.contramap(_.value) + + implicit lazy val writes: Writes[MiddleName] = Name.writes.contramap(_.value) +} \ No newline at end of file diff --git a/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/userdefined/OnlineOrderFlag.scala b/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/userdefined/OnlineOrderFlag.scala new file mode 100644 index 0000000000..52c9abe55d --- /dev/null +++ b/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/userdefined/OnlineOrderFlag.scala @@ -0,0 +1,50 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined + +import adventureworks.Text +import adventureworks.public.Flag +import anorm.Column +import anorm.ParameterMetaData +import anorm.ToStatement +import play.api.libs.json.Reads +import play.api.libs.json.Writes +import typr.dsl.Bijection + +/** Shared type `OnlineOrderFlag` + * Generated from TypeDefinitions matching + */ +case class OnlineOrderFlag(value: Flag) extends scala.AnyVal + +object OnlineOrderFlag { + implicit lazy val arrayColumn: Column[Array[OnlineOrderFlag]] = Column.columnToArray(column, implicitly) + + implicit lazy val arrayToStatement: ToStatement[Array[OnlineOrderFlag]] = Flag.arrayToStatement.contramap(_.map(_.value)) + + implicit lazy val bijection: Bijection[OnlineOrderFlag, Flag] = Bijection.apply[OnlineOrderFlag, Flag](_.value)(OnlineOrderFlag.apply) + + implicit lazy val column: Column[OnlineOrderFlag] = Flag.column.map(OnlineOrderFlag.apply) + + implicit lazy val parameterMetadata: ParameterMetaData[OnlineOrderFlag] = { + new ParameterMetaData[OnlineOrderFlag] { + override def sqlType: String = Flag.parameterMetadata.sqlType + override def jdbcType: Int = Flag.parameterMetadata.jdbcType + } + } + + implicit lazy val pgText: Text[OnlineOrderFlag] = { + new Text[OnlineOrderFlag] { + override def unsafeEncode(v: OnlineOrderFlag, sb: StringBuilder): Unit = Flag.pgText.unsafeEncode(v.value, sb) + override def unsafeArrayEncode(v: OnlineOrderFlag, sb: StringBuilder): Unit = Flag.pgText.unsafeArrayEncode(v.value, sb) + } + } + + implicit lazy val reads: Reads[OnlineOrderFlag] = Flag.reads.map(OnlineOrderFlag.apply) + + implicit lazy val toStatement: ToStatement[OnlineOrderFlag] = Flag.toStatement.contramap(_.value) + + implicit lazy val writes: Writes[OnlineOrderFlag] = Flag.writes.contramap(_.value) +} \ No newline at end of file diff --git a/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/userdefined/SalariedFlag.scala b/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/userdefined/SalariedFlag.scala new file mode 100644 index 0000000000..c1cc8c4ca6 --- /dev/null +++ b/testers/pg/scala/anorm/generated-and-checked-in-2.13/adventureworks/userdefined/SalariedFlag.scala @@ -0,0 +1,50 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined + +import adventureworks.Text +import adventureworks.public.Flag +import anorm.Column +import anorm.ParameterMetaData +import anorm.ToStatement +import play.api.libs.json.Reads +import play.api.libs.json.Writes +import typr.dsl.Bijection + +/** Shared type `SalariedFlag` + * Generated from TypeDefinitions matching + */ +case class SalariedFlag(value: Flag) extends scala.AnyVal + +object SalariedFlag { + implicit lazy val arrayColumn: Column[Array[SalariedFlag]] = Column.columnToArray(column, implicitly) + + implicit lazy val arrayToStatement: ToStatement[Array[SalariedFlag]] = Flag.arrayToStatement.contramap(_.map(_.value)) + + implicit lazy val bijection: Bijection[SalariedFlag, Flag] = Bijection.apply[SalariedFlag, Flag](_.value)(SalariedFlag.apply) + + implicit lazy val column: Column[SalariedFlag] = Flag.column.map(SalariedFlag.apply) + + implicit lazy val parameterMetadata: ParameterMetaData[SalariedFlag] = { + new ParameterMetaData[SalariedFlag] { + override def sqlType: String = Flag.parameterMetadata.sqlType + override def jdbcType: Int = Flag.parameterMetadata.jdbcType + } + } + + implicit lazy val pgText: Text[SalariedFlag] = { + new Text[SalariedFlag] { + override def unsafeEncode(v: SalariedFlag, sb: StringBuilder): Unit = Flag.pgText.unsafeEncode(v.value, sb) + override def unsafeArrayEncode(v: SalariedFlag, sb: StringBuilder): Unit = Flag.pgText.unsafeArrayEncode(v.value, sb) + } + } + + implicit lazy val reads: Reads[SalariedFlag] = Flag.reads.map(SalariedFlag.apply) + + implicit lazy val toStatement: ToStatement[SalariedFlag] = Flag.toStatement.contramap(_.value) + + implicit lazy val writes: Writes[SalariedFlag] = Flag.writes.contramap(_.value) +} \ No newline at end of file diff --git a/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/TestInsert.scala b/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/TestInsert.scala index 583f19af5e..02745b4c42 100644 --- a/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/TestInsert.scala +++ b/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/TestInsert.scala @@ -151,7 +151,11 @@ import adventureworks.sales.salesterritory.SalesterritoryId import adventureworks.sales.salesterritory.SalesterritoryRepoImpl import adventureworks.sales.salesterritory.SalesterritoryRow import adventureworks.sales.salesterritory.SalesterritoryRowUnsaved +import adventureworks.userdefined.CurrentFlag import adventureworks.userdefined.FirstName +import adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName +import adventureworks.userdefined.SalariedFlag import java.sql.Connection import java.time.Instant import java.time.LocalDate @@ -181,10 +185,10 @@ case class TestInsert( nationalidnumber: String = random.alphanumeric.take(15).mkString, loginid: String = random.alphanumeric.take(20).mkString, jobtitle: String = random.alphanumeric.take(20).mkString, - salariedflag: Defaulted[Flag] = new UseDefault(), + salariedflag: Defaulted[/* user-picked */ SalariedFlag] = new UseDefault(), vacationhours: Defaulted[TypoShort] = new UseDefault(), sickleavehours: Defaulted[TypoShort] = new UseDefault(), - currentflag: Defaulted[Flag] = new UseDefault(), + currentflag: Defaulted[/* user-picked */ CurrentFlag] = new UseDefault(), rowguid: Defaulted[TypoUUID] = new UseDefault(), modifieddate: Defaulted[TypoLocalDateTime] = new UseDefault(), organizationnode: Defaulted[Option[String]] = new UseDefault() @@ -265,10 +269,10 @@ case class TestInsert( def personPerson( businessentityid: BusinessentityId, persontype: String, - firstname: /* user-picked */ FirstName, title: Option[/* max 8 chars */ String] = (if (random.nextBoolean()) None else Some(random.alphanumeric.take(8).mkString)), - middlename: Option[Name] = (if (random.nextBoolean()) None else Some(domainInsert.publicName(random))), - lastname: Name = domainInsert.publicName(random), + firstname: /* user-picked */ FirstName = new FirstName(domainInsert.publicName(random)), + middlename: Option[/* user-picked */ MiddleName] = (if (random.nextBoolean()) None else Some(new MiddleName(domainInsert.publicName(random)))), + lastname: /* user-picked */ LastName = new LastName(domainInsert.publicName(random)), suffix: Option[/* max 10 chars */ String] = (if (random.nextBoolean()) None else Some(random.alphanumeric.take(10).mkString)), additionalcontactinfo: Option[TypoXml] = None, demographics: Option[TypoXml] = None, diff --git a/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/humanresources/employee/EmployeeFields.scala b/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/humanresources/employee/EmployeeFields.scala index 1c559fa0dd..c4ad1a140a 100644 --- a/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/humanresources/employee/EmployeeFields.scala +++ b/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/humanresources/employee/EmployeeFields.scala @@ -12,7 +12,8 @@ import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId import adventureworks.person.person.PersonFields import adventureworks.person.person.PersonRow -import adventureworks.public.Flag +import adventureworks.userdefined.CurrentFlag +import adventureworks.userdefined.SalariedFlag import typr.dsl.ForeignKey import typr.dsl.Path import typr.dsl.RelationStructure @@ -30,10 +31,10 @@ trait EmployeeFields { def maritalstatus: Field[String, EmployeeRow] def gender: Field[String, EmployeeRow] def hiredate: Field[TypoLocalDate, EmployeeRow] - def salariedflag: Field[Flag, EmployeeRow] + def salariedflag: Field[/* user-picked */ SalariedFlag, EmployeeRow] def vacationhours: Field[TypoShort, EmployeeRow] def sickleavehours: Field[TypoShort, EmployeeRow] - def currentflag: Field[Flag, EmployeeRow] + def currentflag: Field[/* user-picked */ CurrentFlag, EmployeeRow] def rowguid: Field[TypoUUID, EmployeeRow] def modifieddate: Field[TypoLocalDateTime, EmployeeRow] def organizationnode: OptField[String, EmployeeRow] @@ -58,10 +59,10 @@ object EmployeeFields { override def maritalstatus = Field[String, EmployeeRow](_path, "maritalstatus", None, Some("bpchar"), x => x.maritalstatus, (row, value) => row.copy(maritalstatus = value)) override def gender = Field[String, EmployeeRow](_path, "gender", None, Some("bpchar"), x => x.gender, (row, value) => row.copy(gender = value)) override def hiredate = Field[TypoLocalDate, EmployeeRow](_path, "hiredate", Some("text"), Some("date"), x => x.hiredate, (row, value) => row.copy(hiredate = value)) - override def salariedflag = Field[Flag, EmployeeRow](_path, "salariedflag", None, Some("bool"), x => x.salariedflag, (row, value) => row.copy(salariedflag = value)) + override def salariedflag = Field[/* user-picked */ SalariedFlag, EmployeeRow](_path, "salariedflag", None, Some("bool"), x => x.salariedflag, (row, value) => row.copy(salariedflag = value)) override def vacationhours = Field[TypoShort, EmployeeRow](_path, "vacationhours", None, Some("int2"), x => x.vacationhours, (row, value) => row.copy(vacationhours = value)) override def sickleavehours = Field[TypoShort, EmployeeRow](_path, "sickleavehours", None, Some("int2"), x => x.sickleavehours, (row, value) => row.copy(sickleavehours = value)) - override def currentflag = Field[Flag, EmployeeRow](_path, "currentflag", None, Some("bool"), x => x.currentflag, (row, value) => row.copy(currentflag = value)) + override def currentflag = Field[/* user-picked */ CurrentFlag, EmployeeRow](_path, "currentflag", None, Some("bool"), x => x.currentflag, (row, value) => row.copy(currentflag = value)) override def rowguid = Field[TypoUUID, EmployeeRow](_path, "rowguid", None, Some("uuid"), x => x.rowguid, (row, value) => row.copy(rowguid = value)) override def modifieddate = Field[TypoLocalDateTime, EmployeeRow](_path, "modifieddate", Some("text"), Some("timestamp"), x => x.modifieddate, (row, value) => row.copy(modifieddate = value)) override def organizationnode = OptField[String, EmployeeRow](_path, "organizationnode", None, None, x => x.organizationnode, (row, value) => row.copy(organizationnode = value)) diff --git a/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/humanresources/employee/EmployeeRepoImpl.scala b/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/humanresources/employee/EmployeeRepoImpl.scala index 4ed408111a..5303c56567 100644 --- a/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/humanresources/employee/EmployeeRepoImpl.scala +++ b/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/humanresources/employee/EmployeeRepoImpl.scala @@ -11,8 +11,9 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoShort import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Flag import adventureworks.streamingInsert +import adventureworks.userdefined.CurrentFlag +import adventureworks.userdefined.SalariedFlag import anorm.BatchSql import anorm.NamedParameter import anorm.ParameterMetaData @@ -42,7 +43,7 @@ class EmployeeRepoImpl extends EmployeeRepo { override def insert(unsaved: EmployeeRow)(using c: Connection): EmployeeRow = { SQL"""insert into "humanresources"."employee"("businessentityid", "nationalidnumber", "loginid", "jobtitle", "birthdate", "maritalstatus", "gender", "hiredate", "salariedflag", "vacationhours", "sickleavehours", "currentflag", "rowguid", "modifieddate", "organizationnode") - values (${ParameterValue(unsaved.businessentityid, null, BusinessentityId.toStatement)}::int4, ${ParameterValue(unsaved.nationalidnumber, null, ToStatement.stringToStatement)}, ${ParameterValue(unsaved.loginid, null, ToStatement.stringToStatement)}, ${ParameterValue(unsaved.jobtitle, null, ToStatement.stringToStatement)}, ${ParameterValue(unsaved.birthdate, null, TypoLocalDate.toStatement)}::date, ${ParameterValue(unsaved.maritalstatus, null, ToStatement.stringToStatement)}::bpchar, ${ParameterValue(unsaved.gender, null, ToStatement.stringToStatement)}::bpchar, ${ParameterValue(unsaved.hiredate, null, TypoLocalDate.toStatement)}::date, ${ParameterValue(unsaved.salariedflag, null, Flag.toStatement)}::bool, ${ParameterValue(unsaved.vacationhours, null, TypoShort.toStatement)}::int2, ${ParameterValue(unsaved.sickleavehours, null, TypoShort.toStatement)}::int2, ${ParameterValue(unsaved.currentflag, null, Flag.toStatement)}::bool, ${ParameterValue(unsaved.rowguid, null, TypoUUID.toStatement)}::uuid, ${ParameterValue(unsaved.modifieddate, null, TypoLocalDateTime.toStatement)}::timestamp, ${ParameterValue(unsaved.organizationnode, null, ToStatement.optionToStatement(using ToStatement.stringToStatement, ParameterMetaData.StringParameterMetaData))}) + values (${ParameterValue(unsaved.businessentityid, null, BusinessentityId.toStatement)}::int4, ${ParameterValue(unsaved.nationalidnumber, null, ToStatement.stringToStatement)}, ${ParameterValue(unsaved.loginid, null, ToStatement.stringToStatement)}, ${ParameterValue(unsaved.jobtitle, null, ToStatement.stringToStatement)}, ${ParameterValue(unsaved.birthdate, null, TypoLocalDate.toStatement)}::date, ${ParameterValue(unsaved.maritalstatus, null, ToStatement.stringToStatement)}::bpchar, ${ParameterValue(unsaved.gender, null, ToStatement.stringToStatement)}::bpchar, ${ParameterValue(unsaved.hiredate, null, TypoLocalDate.toStatement)}::date, ${ParameterValue(unsaved.salariedflag, null, /* user-picked */ SalariedFlag.toStatement)}::bool, ${ParameterValue(unsaved.vacationhours, null, TypoShort.toStatement)}::int2, ${ParameterValue(unsaved.sickleavehours, null, TypoShort.toStatement)}::int2, ${ParameterValue(unsaved.currentflag, null, /* user-picked */ CurrentFlag.toStatement)}::bool, ${ParameterValue(unsaved.rowguid, null, TypoUUID.toStatement)}::uuid, ${ParameterValue(unsaved.modifieddate, null, TypoLocalDateTime.toStatement)}::timestamp, ${ParameterValue(unsaved.organizationnode, null, ToStatement.optionToStatement(using ToStatement.stringToStatement, ParameterMetaData.StringParameterMetaData))}) returning "businessentityid", "nationalidnumber", "loginid", "jobtitle", "birthdate"::text, "maritalstatus", "gender", "hiredate"::text, "salariedflag", "vacationhours", "sickleavehours", "currentflag", "rowguid", "modifieddate"::text, "organizationnode" """ .executeInsert(EmployeeRow.rowParser(1).single) @@ -60,7 +61,7 @@ class EmployeeRepoImpl extends EmployeeRepo { Some((NamedParameter("hiredate", ParameterValue(unsaved.hiredate, null, TypoLocalDate.toStatement)), "::date")), unsaved.salariedflag match { case Defaulted.UseDefault() => None - case Defaulted.Provided(value) => Some((NamedParameter("salariedflag", ParameterValue(value, null, Flag.toStatement)), "::bool")) + case Defaulted.Provided(value) => Some((NamedParameter("salariedflag", ParameterValue(value, null, /* user-picked */ SalariedFlag.toStatement)), "::bool")) }, unsaved.vacationhours match { case Defaulted.UseDefault() => None @@ -72,7 +73,7 @@ class EmployeeRepoImpl extends EmployeeRepo { }, unsaved.currentflag match { case Defaulted.UseDefault() => None - case Defaulted.Provided(value) => Some((NamedParameter("currentflag", ParameterValue(value, null, Flag.toStatement)), "::bool")) + case Defaulted.Provided(value) => Some((NamedParameter("currentflag", ParameterValue(value, null, /* user-picked */ CurrentFlag.toStatement)), "::bool")) }, unsaved.rowguid match { case Defaulted.UseDefault() => None @@ -153,10 +154,10 @@ class EmployeeRepoImpl extends EmployeeRepo { "maritalstatus" = ${ParameterValue(row.maritalstatus, null, ToStatement.stringToStatement)}::bpchar, "gender" = ${ParameterValue(row.gender, null, ToStatement.stringToStatement)}::bpchar, "hiredate" = ${ParameterValue(row.hiredate, null, TypoLocalDate.toStatement)}::date, - "salariedflag" = ${ParameterValue(row.salariedflag, null, Flag.toStatement)}::bool, + "salariedflag" = ${ParameterValue(row.salariedflag, null, /* user-picked */ SalariedFlag.toStatement)}::bool, "vacationhours" = ${ParameterValue(row.vacationhours, null, TypoShort.toStatement)}::int2, "sickleavehours" = ${ParameterValue(row.sickleavehours, null, TypoShort.toStatement)}::int2, - "currentflag" = ${ParameterValue(row.currentflag, null, Flag.toStatement)}::bool, + "currentflag" = ${ParameterValue(row.currentflag, null, /* user-picked */ CurrentFlag.toStatement)}::bool, "rowguid" = ${ParameterValue(row.rowguid, null, TypoUUID.toStatement)}::uuid, "modifieddate" = ${ParameterValue(row.modifieddate, null, TypoLocalDateTime.toStatement)}::timestamp, "organizationnode" = ${ParameterValue(row.organizationnode, null, ToStatement.optionToStatement(using ToStatement.stringToStatement, ParameterMetaData.StringParameterMetaData))} @@ -176,10 +177,10 @@ class EmployeeRepoImpl extends EmployeeRepo { ${ParameterValue(unsaved.maritalstatus, null, ToStatement.stringToStatement)}::bpchar, ${ParameterValue(unsaved.gender, null, ToStatement.stringToStatement)}::bpchar, ${ParameterValue(unsaved.hiredate, null, TypoLocalDate.toStatement)}::date, - ${ParameterValue(unsaved.salariedflag, null, Flag.toStatement)}::bool, + ${ParameterValue(unsaved.salariedflag, null, /* user-picked */ SalariedFlag.toStatement)}::bool, ${ParameterValue(unsaved.vacationhours, null, TypoShort.toStatement)}::int2, ${ParameterValue(unsaved.sickleavehours, null, TypoShort.toStatement)}::int2, - ${ParameterValue(unsaved.currentflag, null, Flag.toStatement)}::bool, + ${ParameterValue(unsaved.currentflag, null, /* user-picked */ CurrentFlag.toStatement)}::bool, ${ParameterValue(unsaved.rowguid, null, TypoUUID.toStatement)}::uuid, ${ParameterValue(unsaved.modifieddate, null, TypoLocalDateTime.toStatement)}::timestamp, ${ParameterValue(unsaved.organizationnode, null, ToStatement.optionToStatement(using ToStatement.stringToStatement, ParameterMetaData.StringParameterMetaData))} @@ -215,10 +216,10 @@ class EmployeeRepoImpl extends EmployeeRepo { NamedParameter("maritalstatus", ParameterValue(row.maritalstatus, null, ToStatement.stringToStatement)), NamedParameter("gender", ParameterValue(row.gender, null, ToStatement.stringToStatement)), NamedParameter("hiredate", ParameterValue(row.hiredate, null, TypoLocalDate.toStatement)), - NamedParameter("salariedflag", ParameterValue(row.salariedflag, null, Flag.toStatement)), + NamedParameter("salariedflag", ParameterValue(row.salariedflag, null, /* user-picked */ SalariedFlag.toStatement)), NamedParameter("vacationhours", ParameterValue(row.vacationhours, null, TypoShort.toStatement)), NamedParameter("sickleavehours", ParameterValue(row.sickleavehours, null, TypoShort.toStatement)), - NamedParameter("currentflag", ParameterValue(row.currentflag, null, Flag.toStatement)), + NamedParameter("currentflag", ParameterValue(row.currentflag, null, /* user-picked */ CurrentFlag.toStatement)), NamedParameter("rowguid", ParameterValue(row.rowguid, null, TypoUUID.toStatement)), NamedParameter("modifieddate", ParameterValue(row.modifieddate, null, TypoLocalDateTime.toStatement)), NamedParameter("organizationnode", ParameterValue(row.organizationnode, null, ToStatement.optionToStatement(using ToStatement.stringToStatement, ParameterMetaData.StringParameterMetaData))) diff --git a/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/humanresources/employee/EmployeeRow.scala b/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/humanresources/employee/EmployeeRow.scala index 14eb723718..9d20b33eb6 100644 --- a/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/humanresources/employee/EmployeeRow.scala +++ b/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/humanresources/employee/EmployeeRow.scala @@ -12,7 +12,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoShort import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Flag +import adventureworks.userdefined.CurrentFlag +import adventureworks.userdefined.SalariedFlag import anorm.Column import anorm.RowParser import anorm.Success @@ -59,7 +60,7 @@ case class EmployeeRow( /** Job classification. 0 = Hourly, not exempt from collective bargaining. 1 = Salaried, exempt from collective bargaining. * Default: true */ - salariedflag: Flag, + salariedflag: /* user-picked */ SalariedFlag, /** Number of available vacation hours. * Default: 0 * Constraint CK_Employee_VacationHours affecting columns vacationhours: (((vacationhours >= '-40'::integer) AND (vacationhours <= 240))) @@ -73,7 +74,7 @@ case class EmployeeRow( /** 0 = Inactive, 1 = Active * Default: true */ - currentflag: Flag, + currentflag: /* user-picked */ CurrentFlag, /** Default: uuid_generate_v1() */ rowguid: TypoUUID, /** Default: now() */ @@ -86,10 +87,10 @@ case class EmployeeRow( def id: BusinessentityId = businessentityid def toUnsavedRow( - salariedflag: Defaulted[Flag] = Defaulted.Provided(this.salariedflag), + salariedflag: Defaulted[/* user-picked */ SalariedFlag] = Defaulted.Provided(this.salariedflag), vacationhours: Defaulted[TypoShort] = Defaulted.Provided(this.vacationhours), sickleavehours: Defaulted[TypoShort] = Defaulted.Provided(this.sickleavehours), - currentflag: Defaulted[Flag] = Defaulted.Provided(this.currentflag), + currentflag: Defaulted[/* user-picked */ CurrentFlag] = Defaulted.Provided(this.currentflag), rowguid: Defaulted[TypoUUID] = Defaulted.Provided(this.rowguid), modifieddate: Defaulted[TypoLocalDateTime] = Defaulted.Provided(this.modifieddate), organizationnode: Defaulted[Option[String]] = Defaulted.Provided(this.organizationnode) @@ -133,13 +134,13 @@ object EmployeeRow { sb.append(Text.DELIMETER) TypoLocalDate.pgText.unsafeEncode(row.hiredate, sb) sb.append(Text.DELIMETER) - Flag.pgText.unsafeEncode(row.salariedflag, sb) + /* user-picked */ SalariedFlag.pgText.unsafeEncode(row.salariedflag, sb) sb.append(Text.DELIMETER) TypoShort.pgText.unsafeEncode(row.vacationhours, sb) sb.append(Text.DELIMETER) TypoShort.pgText.unsafeEncode(row.sickleavehours, sb) sb.append(Text.DELIMETER) - Flag.pgText.unsafeEncode(row.currentflag, sb) + /* user-picked */ CurrentFlag.pgText.unsafeEncode(row.currentflag, sb) sb.append(Text.DELIMETER) TypoUUID.pgText.unsafeEncode(row.rowguid, sb) sb.append(Text.DELIMETER) @@ -161,10 +162,10 @@ object EmployeeRow { maritalstatus = json.\("maritalstatus").as(using Reads.StringReads), gender = json.\("gender").as(using Reads.StringReads), hiredate = json.\("hiredate").as(using TypoLocalDate.reads), - salariedflag = json.\("salariedflag").as(using Flag.reads), + salariedflag = json.\("salariedflag").as(using SalariedFlag.reads), vacationhours = json.\("vacationhours").as(using TypoShort.reads), sickleavehours = json.\("sickleavehours").as(using TypoShort.reads), - currentflag = json.\("currentflag").as(using Flag.reads), + currentflag = json.\("currentflag").as(using CurrentFlag.reads), rowguid = json.\("rowguid").as(using TypoUUID.reads), modifieddate = json.\("modifieddate").as(using TypoLocalDateTime.reads), organizationnode = json.\("organizationnode").toOption.map(_.as(using Reads.StringReads)) @@ -186,10 +187,10 @@ object EmployeeRow { maritalstatus = row(idx + 5)(using Column.columnToString), gender = row(idx + 6)(using Column.columnToString), hiredate = row(idx + 7)(using TypoLocalDate.column), - salariedflag = row(idx + 8)(using Flag.column), + salariedflag = row(idx + 8)(using /* user-picked */ SalariedFlag.column), vacationhours = row(idx + 9)(using TypoShort.column), sickleavehours = row(idx + 10)(using TypoShort.column), - currentflag = row(idx + 11)(using Flag.column), + currentflag = row(idx + 11)(using /* user-picked */ CurrentFlag.column), rowguid = row(idx + 12)(using TypoUUID.column), modifieddate = row(idx + 13)(using TypoLocalDateTime.column), organizationnode = row(idx + 14)(using Column.columnToOption(using Column.columnToString)) @@ -209,10 +210,10 @@ object EmployeeRow { "maritalstatus" -> Writes.StringWrites.writes(o.maritalstatus), "gender" -> Writes.StringWrites.writes(o.gender), "hiredate" -> TypoLocalDate.writes.writes(o.hiredate), - "salariedflag" -> Flag.writes.writes(o.salariedflag), + "salariedflag" -> SalariedFlag.writes.writes(o.salariedflag), "vacationhours" -> TypoShort.writes.writes(o.vacationhours), "sickleavehours" -> TypoShort.writes.writes(o.sickleavehours), - "currentflag" -> Flag.writes.writes(o.currentflag), + "currentflag" -> CurrentFlag.writes.writes(o.currentflag), "rowguid" -> TypoUUID.writes.writes(o.rowguid), "modifieddate" -> TypoLocalDateTime.writes.writes(o.modifieddate), "organizationnode" -> Writes.OptionWrites(using Writes.StringWrites).writes(o.organizationnode) diff --git a/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/humanresources/employee/EmployeeRowUnsaved.scala b/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/humanresources/employee/EmployeeRowUnsaved.scala index 7447c631b4..2abb08621f 100644 --- a/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/humanresources/employee/EmployeeRowUnsaved.scala +++ b/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/humanresources/employee/EmployeeRowUnsaved.scala @@ -13,7 +13,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoShort import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Flag +import adventureworks.userdefined.CurrentFlag +import adventureworks.userdefined.SalariedFlag import play.api.libs.json.JsObject import play.api.libs.json.JsResult import play.api.libs.json.JsValue @@ -54,7 +55,7 @@ case class EmployeeRowUnsaved( /** Default: true * Job classification. 0 = Hourly, not exempt from collective bargaining. 1 = Salaried, exempt from collective bargaining. */ - salariedflag: Defaulted[Flag] = new UseDefault(), + salariedflag: Defaulted[/* user-picked */ SalariedFlag] = new UseDefault(), /** Default: 0 * Number of available vacation hours. * Constraint CK_Employee_VacationHours affecting columns vacationhours: (((vacationhours >= '-40'::integer) AND (vacationhours <= 240))) @@ -68,7 +69,7 @@ case class EmployeeRowUnsaved( /** Default: true * 0 = Inactive, 1 = Active */ - currentflag: Defaulted[Flag] = new UseDefault(), + currentflag: Defaulted[/* user-picked */ CurrentFlag] = new UseDefault(), /** Default: uuid_generate_v1() */ rowguid: Defaulted[TypoUUID] = new UseDefault(), /** Default: now() */ @@ -79,10 +80,10 @@ case class EmployeeRowUnsaved( organizationnode: Defaulted[Option[String]] = new UseDefault() ) { def toRow( - salariedflagDefault: => Flag, + salariedflagDefault: => /* user-picked */ SalariedFlag, vacationhoursDefault: => TypoShort, sickleavehoursDefault: => TypoShort, - currentflagDefault: => Flag, + currentflagDefault: => /* user-picked */ CurrentFlag, rowguidDefault: => TypoUUID, modifieddateDefault: => TypoLocalDateTime, organizationnodeDefault: => Option[String] @@ -126,13 +127,13 @@ object EmployeeRowUnsaved { sb.append(Text.DELIMETER) TypoLocalDate.pgText.unsafeEncode(row.hiredate, sb) sb.append(Text.DELIMETER) - Defaulted.pgText(using Flag.pgText).unsafeEncode(row.salariedflag, sb) + Defaulted.pgText(using SalariedFlag.pgText).unsafeEncode(row.salariedflag, sb) sb.append(Text.DELIMETER) Defaulted.pgText(using TypoShort.pgText).unsafeEncode(row.vacationhours, sb) sb.append(Text.DELIMETER) Defaulted.pgText(using TypoShort.pgText).unsafeEncode(row.sickleavehours, sb) sb.append(Text.DELIMETER) - Defaulted.pgText(using Flag.pgText).unsafeEncode(row.currentflag, sb) + Defaulted.pgText(using CurrentFlag.pgText).unsafeEncode(row.currentflag, sb) sb.append(Text.DELIMETER) Defaulted.pgText(using TypoUUID.pgText).unsafeEncode(row.rowguid, sb) sb.append(Text.DELIMETER) @@ -154,10 +155,10 @@ object EmployeeRowUnsaved { maritalstatus = json.\("maritalstatus").as(using Reads.StringReads), gender = json.\("gender").as(using Reads.StringReads), hiredate = json.\("hiredate").as(using TypoLocalDate.reads), - salariedflag = json.\("salariedflag").as(using Defaulted.reads(using Flag.reads)), + salariedflag = json.\("salariedflag").as(using Defaulted.reads(using SalariedFlag.reads)), vacationhours = json.\("vacationhours").as(using Defaulted.reads(using TypoShort.reads)), sickleavehours = json.\("sickleavehours").as(using Defaulted.reads(using TypoShort.reads)), - currentflag = json.\("currentflag").as(using Defaulted.reads(using Flag.reads)), + currentflag = json.\("currentflag").as(using Defaulted.reads(using CurrentFlag.reads)), rowguid = json.\("rowguid").as(using Defaulted.reads(using TypoUUID.reads)), modifieddate = json.\("modifieddate").as(using Defaulted.reads(using TypoLocalDateTime.reads)), organizationnode = json.\("organizationnode").as(using Defaulted.readsOpt(using Reads.StringReads)) @@ -178,10 +179,10 @@ object EmployeeRowUnsaved { "maritalstatus" -> Writes.StringWrites.writes(o.maritalstatus), "gender" -> Writes.StringWrites.writes(o.gender), "hiredate" -> TypoLocalDate.writes.writes(o.hiredate), - "salariedflag" -> Defaulted.writes(using Flag.writes).writes(o.salariedflag), + "salariedflag" -> Defaulted.writes(using SalariedFlag.writes).writes(o.salariedflag), "vacationhours" -> Defaulted.writes(using TypoShort.writes).writes(o.vacationhours), "sickleavehours" -> Defaulted.writes(using TypoShort.writes).writes(o.sickleavehours), - "currentflag" -> Defaulted.writes(using Flag.writes).writes(o.currentflag), + "currentflag" -> Defaulted.writes(using CurrentFlag.writes).writes(o.currentflag), "rowguid" -> Defaulted.writes(using TypoUUID.writes).writes(o.rowguid), "modifieddate" -> Defaulted.writes(using TypoLocalDateTime.writes).writes(o.modifieddate), "organizationnode" -> Defaulted.writes(using Writes.OptionWrites(using Writes.StringWrites)).writes(o.organizationnode) diff --git a/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/humanresources/vemployee/VemployeeViewFields.scala b/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/humanresources/vemployee/VemployeeViewFields.scala index 406852bac3..d0474bd83d 100644 --- a/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/humanresources/vemployee/VemployeeViewFields.scala +++ b/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/humanresources/vemployee/VemployeeViewFields.scala @@ -10,6 +10,8 @@ import adventureworks.person.businessentity.BusinessentityId import adventureworks.public.Name import adventureworks.public.Phone import adventureworks.userdefined.FirstName +import adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import typr.dsl.Path import typr.dsl.RelationStructure import typr.dsl.SqlExpr.Field @@ -19,8 +21,8 @@ trait VemployeeViewFields { def businessentityid: Field[BusinessentityId, VemployeeViewRow] def title: Field[String, VemployeeViewRow] def firstname: Field[/* user-picked */ FirstName, VemployeeViewRow] - def middlename: Field[Name, VemployeeViewRow] - def lastname: Field[Name, VemployeeViewRow] + def middlename: Field[/* user-picked */ MiddleName, VemployeeViewRow] + def lastname: Field[/* user-picked */ LastName, VemployeeViewRow] def suffix: Field[String, VemployeeViewRow] def jobtitle: Field[String, VemployeeViewRow] def phonenumber: Field[Phone, VemployeeViewRow] @@ -47,8 +49,8 @@ object VemployeeViewFields { override def businessentityid = Field[BusinessentityId, VemployeeViewRow](_path, "businessentityid", None, None, x => x.businessentityid, (row, value) => row.copy(businessentityid = value)) override def title = Field[String, VemployeeViewRow](_path, "title", None, None, x => x.title, (row, value) => row.copy(title = value)) override def firstname = Field[/* user-picked */ FirstName, VemployeeViewRow](_path, "firstname", None, None, x => x.firstname, (row, value) => row.copy(firstname = value)) - override def middlename = Field[Name, VemployeeViewRow](_path, "middlename", None, None, x => x.middlename, (row, value) => row.copy(middlename = value)) - override def lastname = Field[Name, VemployeeViewRow](_path, "lastname", None, None, x => x.lastname, (row, value) => row.copy(lastname = value)) + override def middlename = Field[/* user-picked */ MiddleName, VemployeeViewRow](_path, "middlename", None, None, x => x.middlename, (row, value) => row.copy(middlename = value)) + override def lastname = Field[/* user-picked */ LastName, VemployeeViewRow](_path, "lastname", None, None, x => x.lastname, (row, value) => row.copy(lastname = value)) override def suffix = Field[String, VemployeeViewRow](_path, "suffix", None, None, x => x.suffix, (row, value) => row.copy(suffix = value)) override def jobtitle = Field[String, VemployeeViewRow](_path, "jobtitle", None, None, x => x.jobtitle, (row, value) => row.copy(jobtitle = value)) override def phonenumber = Field[Phone, VemployeeViewRow](_path, "phonenumber", None, None, x => x.phonenumber, (row, value) => row.copy(phonenumber = value)) diff --git a/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/humanresources/vemployee/VemployeeViewRow.scala b/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/humanresources/vemployee/VemployeeViewRow.scala index b85d502234..df30c86b2e 100644 --- a/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/humanresources/vemployee/VemployeeViewRow.scala +++ b/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/humanresources/vemployee/VemployeeViewRow.scala @@ -10,6 +10,8 @@ import adventureworks.person.businessentity.BusinessentityId import adventureworks.public.Name import adventureworks.public.Phone import adventureworks.userdefined.FirstName +import adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import anorm.Column import anorm.RowParser import anorm.Success @@ -31,9 +33,9 @@ case class VemployeeViewRow( /** Points to [[adventureworks.person.person.PersonRow.firstname]] */ firstname: /* user-picked */ FirstName, /** Points to [[adventureworks.person.person.PersonRow.middlename]] */ - middlename: Name, + middlename: /* user-picked */ MiddleName, /** Points to [[adventureworks.person.person.PersonRow.lastname]] */ - lastname: Name, + lastname: /* user-picked */ LastName, /** Points to [[adventureworks.person.person.PersonRow.suffix]] */ suffix: String, /** Points to [[adventureworks.humanresources.employee.EmployeeRow.jobtitle]] */ @@ -70,8 +72,8 @@ object VemployeeViewRow { businessentityid = json.\("businessentityid").as(using BusinessentityId.reads), title = json.\("title").as(using Reads.StringReads), firstname = json.\("firstname").as(using FirstName.reads), - middlename = json.\("middlename").as(using Name.reads), - lastname = json.\("lastname").as(using Name.reads), + middlename = json.\("middlename").as(using MiddleName.reads), + lastname = json.\("lastname").as(using LastName.reads), suffix = json.\("suffix").as(using Reads.StringReads), jobtitle = json.\("jobtitle").as(using Reads.StringReads), phonenumber = json.\("phonenumber").as(using Phone.reads), @@ -98,8 +100,8 @@ object VemployeeViewRow { businessentityid = row(idx + 0)(using BusinessentityId.column), title = row(idx + 1)(using Column.columnToString), firstname = row(idx + 2)(using /* user-picked */ FirstName.column), - middlename = row(idx + 3)(using Name.column), - lastname = row(idx + 4)(using Name.column), + middlename = row(idx + 3)(using /* user-picked */ MiddleName.column), + lastname = row(idx + 4)(using /* user-picked */ LastName.column), suffix = row(idx + 5)(using Column.columnToString), jobtitle = row(idx + 6)(using Column.columnToString), phonenumber = row(idx + 7)(using Phone.column), @@ -124,8 +126,8 @@ object VemployeeViewRow { "businessentityid" -> BusinessentityId.writes.writes(o.businessentityid), "title" -> Writes.StringWrites.writes(o.title), "firstname" -> FirstName.writes.writes(o.firstname), - "middlename" -> Name.writes.writes(o.middlename), - "lastname" -> Name.writes.writes(o.lastname), + "middlename" -> MiddleName.writes.writes(o.middlename), + "lastname" -> LastName.writes.writes(o.lastname), "suffix" -> Writes.StringWrites.writes(o.suffix), "jobtitle" -> Writes.StringWrites.writes(o.jobtitle), "phonenumber" -> Phone.writes.writes(o.phonenumber), diff --git a/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/person/person/PersonFields.scala b/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/person/person/PersonFields.scala index 27eb19af9f..6fdabb004a 100644 --- a/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/person/person/PersonFields.scala +++ b/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/person/person/PersonFields.scala @@ -11,9 +11,10 @@ import adventureworks.customtypes.TypoXml import adventureworks.person.businessentity.BusinessentityFields import adventureworks.person.businessentity.BusinessentityId import adventureworks.person.businessentity.BusinessentityRow -import adventureworks.public.Name import adventureworks.public.NameStyle import adventureworks.userdefined.FirstName +import adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import typr.dsl.ForeignKey import typr.dsl.Path import typr.dsl.RelationStructure @@ -28,8 +29,8 @@ trait PersonFields { def namestyle: Field[NameStyle, PersonRow] def title: OptField[/* max 8 chars */ String, PersonRow] def firstname: Field[/* user-picked */ FirstName, PersonRow] - def middlename: OptField[Name, PersonRow] - def lastname: Field[Name, PersonRow] + def middlename: OptField[/* user-picked */ MiddleName, PersonRow] + def lastname: Field[/* user-picked */ LastName, PersonRow] def suffix: OptField[/* max 10 chars */ String, PersonRow] def emailpromotion: Field[Int, PersonRow] def additionalcontactinfo: OptField[TypoXml, PersonRow] @@ -54,8 +55,8 @@ object PersonFields { override def namestyle = Field[NameStyle, PersonRow](_path, "namestyle", None, Some("bool"), x => x.namestyle, (row, value) => row.copy(namestyle = value)) override def title = OptField[/* max 8 chars */ String, PersonRow](_path, "title", None, None, x => x.title, (row, value) => row.copy(title = value)) override def firstname = Field[/* user-picked */ FirstName, PersonRow](_path, "firstname", None, Some("varchar"), x => x.firstname, (row, value) => row.copy(firstname = value)) - override def middlename = OptField[Name, PersonRow](_path, "middlename", None, Some("varchar"), x => x.middlename, (row, value) => row.copy(middlename = value)) - override def lastname = Field[Name, PersonRow](_path, "lastname", None, Some("varchar"), x => x.lastname, (row, value) => row.copy(lastname = value)) + override def middlename = OptField[/* user-picked */ MiddleName, PersonRow](_path, "middlename", None, Some("varchar"), x => x.middlename, (row, value) => row.copy(middlename = value)) + override def lastname = Field[/* user-picked */ LastName, PersonRow](_path, "lastname", None, Some("varchar"), x => x.lastname, (row, value) => row.copy(lastname = value)) override def suffix = OptField[/* max 10 chars */ String, PersonRow](_path, "suffix", None, None, x => x.suffix, (row, value) => row.copy(suffix = value)) override def emailpromotion = Field[Int, PersonRow](_path, "emailpromotion", None, Some("int4"), x => x.emailpromotion, (row, value) => row.copy(emailpromotion = value)) override def additionalcontactinfo = OptField[TypoXml, PersonRow](_path, "additionalcontactinfo", None, Some("xml"), x => x.additionalcontactinfo, (row, value) => row.copy(additionalcontactinfo = value)) diff --git a/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/person/person/PersonRepoImpl.scala b/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/person/person/PersonRepoImpl.scala index 97a560b9cf..b0482c4d6f 100644 --- a/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/person/person/PersonRepoImpl.scala +++ b/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/person/person/PersonRepoImpl.scala @@ -10,10 +10,11 @@ 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.streamingInsert import adventureworks.userdefined.FirstName +import adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import anorm.BatchSql import anorm.NamedParameter import anorm.ParameterMetaData @@ -43,7 +44,7 @@ class PersonRepoImpl extends PersonRepo { override def insert(unsaved: PersonRow)(using c: Connection): PersonRow = { SQL"""insert into "person"."person"("businessentityid", "persontype", "namestyle", "title", "firstname", "middlename", "lastname", "suffix", "emailpromotion", "additionalcontactinfo", "demographics", "rowguid", "modifieddate") - values (${ParameterValue(unsaved.businessentityid, null, BusinessentityId.toStatement)}::int4, ${ParameterValue(unsaved.persontype, null, ToStatement.stringToStatement)}::bpchar, ${ParameterValue(unsaved.namestyle, null, NameStyle.toStatement)}::bool, ${ParameterValue(unsaved.title, null, ToStatement.optionToStatement(using ToStatement.stringToStatement, ParameterMetaData.StringParameterMetaData))}, ${ParameterValue(unsaved.firstname, null, /* user-picked */ FirstName.toStatement)}::varchar, ${ParameterValue(unsaved.middlename, null, ToStatement.optionToStatement(using Name.toStatement, Name.parameterMetadata))}::varchar, ${ParameterValue(unsaved.lastname, null, Name.toStatement)}::varchar, ${ParameterValue(unsaved.suffix, null, ToStatement.optionToStatement(using ToStatement.stringToStatement, ParameterMetaData.StringParameterMetaData))}, ${ParameterValue(unsaved.emailpromotion, null, ToStatement.intToStatement)}::int4, ${ParameterValue(unsaved.additionalcontactinfo, null, ToStatement.optionToStatement(using TypoXml.toStatement, TypoXml.parameterMetadata))}::xml, ${ParameterValue(unsaved.demographics, null, ToStatement.optionToStatement(using TypoXml.toStatement, TypoXml.parameterMetadata))}::xml, ${ParameterValue(unsaved.rowguid, null, TypoUUID.toStatement)}::uuid, ${ParameterValue(unsaved.modifieddate, null, TypoLocalDateTime.toStatement)}::timestamp) + values (${ParameterValue(unsaved.businessentityid, null, BusinessentityId.toStatement)}::int4, ${ParameterValue(unsaved.persontype, null, ToStatement.stringToStatement)}::bpchar, ${ParameterValue(unsaved.namestyle, null, NameStyle.toStatement)}::bool, ${ParameterValue(unsaved.title, null, ToStatement.optionToStatement(using ToStatement.stringToStatement, ParameterMetaData.StringParameterMetaData))}, ${ParameterValue(unsaved.firstname, null, /* user-picked */ FirstName.toStatement)}::varchar, ${ParameterValue(unsaved.middlename, null, ToStatement.optionToStatement(using MiddleName.toStatement, MiddleName.parameterMetadata))}::varchar, ${ParameterValue(unsaved.lastname, null, /* user-picked */ LastName.toStatement)}::varchar, ${ParameterValue(unsaved.suffix, null, ToStatement.optionToStatement(using ToStatement.stringToStatement, ParameterMetaData.StringParameterMetaData))}, ${ParameterValue(unsaved.emailpromotion, null, ToStatement.intToStatement)}::int4, ${ParameterValue(unsaved.additionalcontactinfo, null, ToStatement.optionToStatement(using TypoXml.toStatement, TypoXml.parameterMetadata))}::xml, ${ParameterValue(unsaved.demographics, null, ToStatement.optionToStatement(using TypoXml.toStatement, TypoXml.parameterMetadata))}::xml, ${ParameterValue(unsaved.rowguid, null, TypoUUID.toStatement)}::uuid, ${ParameterValue(unsaved.modifieddate, null, TypoLocalDateTime.toStatement)}::timestamp) returning "businessentityid", "persontype", "namestyle", "title", "firstname", "middlename", "lastname", "suffix", "emailpromotion", "additionalcontactinfo", "demographics", "rowguid", "modifieddate"::text """ .executeInsert(PersonRow.rowParser(1).single) @@ -55,8 +56,8 @@ class PersonRepoImpl extends PersonRepo { Some((NamedParameter("persontype", ParameterValue(unsaved.persontype, null, ToStatement.stringToStatement)), "::bpchar")), Some((NamedParameter("title", ParameterValue(unsaved.title, null, ToStatement.optionToStatement(using ToStatement.stringToStatement, ParameterMetaData.StringParameterMetaData))), "")), Some((NamedParameter("firstname", ParameterValue(unsaved.firstname, null, /* user-picked */ FirstName.toStatement)), "::varchar")), - Some((NamedParameter("middlename", ParameterValue(unsaved.middlename, null, ToStatement.optionToStatement(using Name.toStatement, Name.parameterMetadata))), "::varchar")), - Some((NamedParameter("lastname", ParameterValue(unsaved.lastname, null, Name.toStatement)), "::varchar")), + Some((NamedParameter("middlename", ParameterValue(unsaved.middlename, null, ToStatement.optionToStatement(using MiddleName.toStatement, MiddleName.parameterMetadata))), "::varchar")), + Some((NamedParameter("lastname", ParameterValue(unsaved.lastname, null, /* user-picked */ LastName.toStatement)), "::varchar")), Some((NamedParameter("suffix", ParameterValue(unsaved.suffix, null, ToStatement.optionToStatement(using ToStatement.stringToStatement, ParameterMetaData.StringParameterMetaData))), "")), Some((NamedParameter("additionalcontactinfo", ParameterValue(unsaved.additionalcontactinfo, null, ToStatement.optionToStatement(using TypoXml.toStatement, TypoXml.parameterMetadata))), "::xml")), Some((NamedParameter("demographics", ParameterValue(unsaved.demographics, null, ToStatement.optionToStatement(using TypoXml.toStatement, TypoXml.parameterMetadata))), "::xml")), @@ -140,8 +141,8 @@ class PersonRepoImpl extends PersonRepo { "namestyle" = ${ParameterValue(row.namestyle, null, NameStyle.toStatement)}::bool, "title" = ${ParameterValue(row.title, null, ToStatement.optionToStatement(using ToStatement.stringToStatement, ParameterMetaData.StringParameterMetaData))}, "firstname" = ${ParameterValue(row.firstname, null, /* user-picked */ FirstName.toStatement)}::varchar, - "middlename" = ${ParameterValue(row.middlename, null, ToStatement.optionToStatement(using Name.toStatement, Name.parameterMetadata))}::varchar, - "lastname" = ${ParameterValue(row.lastname, null, Name.toStatement)}::varchar, + "middlename" = ${ParameterValue(row.middlename, null, ToStatement.optionToStatement(using MiddleName.toStatement, MiddleName.parameterMetadata))}::varchar, + "lastname" = ${ParameterValue(row.lastname, null, /* user-picked */ LastName.toStatement)}::varchar, "suffix" = ${ParameterValue(row.suffix, null, ToStatement.optionToStatement(using ToStatement.stringToStatement, ParameterMetaData.StringParameterMetaData))}, "emailpromotion" = ${ParameterValue(row.emailpromotion, null, ToStatement.intToStatement)}::int4, "additionalcontactinfo" = ${ParameterValue(row.additionalcontactinfo, null, ToStatement.optionToStatement(using TypoXml.toStatement, TypoXml.parameterMetadata))}::xml, @@ -161,8 +162,8 @@ class PersonRepoImpl extends PersonRepo { ${ParameterValue(unsaved.namestyle, null, NameStyle.toStatement)}::bool, ${ParameterValue(unsaved.title, null, ToStatement.optionToStatement(using ToStatement.stringToStatement, ParameterMetaData.StringParameterMetaData))}, ${ParameterValue(unsaved.firstname, null, /* user-picked */ FirstName.toStatement)}::varchar, - ${ParameterValue(unsaved.middlename, null, ToStatement.optionToStatement(using Name.toStatement, Name.parameterMetadata))}::varchar, - ${ParameterValue(unsaved.lastname, null, Name.toStatement)}::varchar, + ${ParameterValue(unsaved.middlename, null, ToStatement.optionToStatement(using MiddleName.toStatement, MiddleName.parameterMetadata))}::varchar, + ${ParameterValue(unsaved.lastname, null, /* user-picked */ LastName.toStatement)}::varchar, ${ParameterValue(unsaved.suffix, null, ToStatement.optionToStatement(using ToStatement.stringToStatement, ParameterMetaData.StringParameterMetaData))}, ${ParameterValue(unsaved.emailpromotion, null, ToStatement.intToStatement)}::int4, ${ParameterValue(unsaved.additionalcontactinfo, null, ToStatement.optionToStatement(using TypoXml.toStatement, TypoXml.parameterMetadata))}::xml, @@ -196,8 +197,8 @@ class PersonRepoImpl extends PersonRepo { NamedParameter("namestyle", ParameterValue(row.namestyle, null, NameStyle.toStatement)), NamedParameter("title", ParameterValue(row.title, null, ToStatement.optionToStatement(using ToStatement.stringToStatement, ParameterMetaData.StringParameterMetaData))), NamedParameter("firstname", ParameterValue(row.firstname, null, /* user-picked */ FirstName.toStatement)), - NamedParameter("middlename", ParameterValue(row.middlename, null, ToStatement.optionToStatement(using Name.toStatement, Name.parameterMetadata))), - NamedParameter("lastname", ParameterValue(row.lastname, null, Name.toStatement)), + NamedParameter("middlename", ParameterValue(row.middlename, null, ToStatement.optionToStatement(using MiddleName.toStatement, MiddleName.parameterMetadata))), + NamedParameter("lastname", ParameterValue(row.lastname, null, /* user-picked */ LastName.toStatement)), NamedParameter("suffix", ParameterValue(row.suffix, null, ToStatement.optionToStatement(using ToStatement.stringToStatement, ParameterMetaData.StringParameterMetaData))), NamedParameter("emailpromotion", ParameterValue(row.emailpromotion, null, ToStatement.intToStatement)), NamedParameter("additionalcontactinfo", ParameterValue(row.additionalcontactinfo, null, ToStatement.optionToStatement(using TypoXml.toStatement, TypoXml.parameterMetadata))), diff --git a/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/person/person/PersonRow.scala b/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/person/person/PersonRow.scala index c2b0e54cad..bfb98b5c05 100644 --- a/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/person/person/PersonRow.scala +++ b/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/person/person/PersonRow.scala @@ -11,9 +11,10 @@ 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 adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import anorm.Column import anorm.RowParser import anorm.Success @@ -48,9 +49,9 @@ case class PersonRow( /** First name of the person. */ firstname: /* user-picked */ FirstName, /** Middle name or middle initial of the person. */ - middlename: Option[Name], + middlename: Option[/* user-picked */ MiddleName], /** Last name of the person. */ - lastname: Name, + lastname: /* user-picked */ LastName, /** Surname suffix. For example, Sr. or Jr. */ suffix: Option[/* max 10 chars */ String], /** 0 = Contact does not wish to receive e-mail promotions, 1 = Contact does wish to receive e-mail promotions from AdventureWorks, 2 = Contact does wish to receive e-mail promotions from AdventureWorks and selected partners. @@ -106,9 +107,9 @@ object PersonRow { sb.append(Text.DELIMETER) /* user-picked */ FirstName.pgText.unsafeEncode(row.firstname, sb) sb.append(Text.DELIMETER) - Text.option(using Name.pgText).unsafeEncode(row.middlename, sb) + Text.option(using MiddleName.pgText).unsafeEncode(row.middlename, sb) sb.append(Text.DELIMETER) - Name.pgText.unsafeEncode(row.lastname, sb) + /* user-picked */ LastName.pgText.unsafeEncode(row.lastname, sb) sb.append(Text.DELIMETER) Text.option(using Text.stringInstance).unsafeEncode(row.suffix, sb) sb.append(Text.DELIMETER) @@ -133,8 +134,8 @@ object PersonRow { namestyle = json.\("namestyle").as(using NameStyle.reads), title = json.\("title").toOption.map(_.as(using Reads.StringReads)), firstname = json.\("firstname").as(using FirstName.reads), - middlename = json.\("middlename").toOption.map(_.as(using Name.reads)), - lastname = json.\("lastname").as(using Name.reads), + middlename = json.\("middlename").toOption.map(_.as(using MiddleName.reads)), + lastname = json.\("lastname").as(using LastName.reads), suffix = json.\("suffix").toOption.map(_.as(using Reads.StringReads)), emailpromotion = json.\("emailpromotion").as(using Reads.IntReads), additionalcontactinfo = json.\("additionalcontactinfo").toOption.map(_.as(using TypoXml.reads)), @@ -156,8 +157,8 @@ object PersonRow { namestyle = row(idx + 2)(using NameStyle.column), title = row(idx + 3)(using Column.columnToOption(using Column.columnToString)), firstname = row(idx + 4)(using /* user-picked */ FirstName.column), - middlename = row(idx + 5)(using Column.columnToOption(using Name.column)), - lastname = row(idx + 6)(using Name.column), + middlename = row(idx + 5)(using Column.columnToOption(using MiddleName.column)), + lastname = row(idx + 6)(using /* user-picked */ LastName.column), suffix = row(idx + 7)(using Column.columnToOption(using Column.columnToString)), emailpromotion = row(idx + 8)(using Column.columnToInt), additionalcontactinfo = row(idx + 9)(using Column.columnToOption(using TypoXml.column)), @@ -177,8 +178,8 @@ object PersonRow { "namestyle" -> NameStyle.writes.writes(o.namestyle), "title" -> Writes.OptionWrites(using Writes.StringWrites).writes(o.title), "firstname" -> FirstName.writes.writes(o.firstname), - "middlename" -> Writes.OptionWrites(using Name.writes).writes(o.middlename), - "lastname" -> Name.writes.writes(o.lastname), + "middlename" -> Writes.OptionWrites(using MiddleName.writes).writes(o.middlename), + "lastname" -> LastName.writes.writes(o.lastname), "suffix" -> Writes.OptionWrites(using Writes.StringWrites).writes(o.suffix), "emailpromotion" -> Writes.IntWrites.writes(o.emailpromotion), "additionalcontactinfo" -> Writes.OptionWrites(using TypoXml.writes).writes(o.additionalcontactinfo), diff --git a/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/person/person/PersonRowUnsaved.scala b/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/person/person/PersonRowUnsaved.scala index a0a4285765..fdea4f8920 100644 --- a/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/person/person/PersonRowUnsaved.scala +++ b/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/person/person/PersonRowUnsaved.scala @@ -12,9 +12,10 @@ 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 adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import play.api.libs.json.JsObject import play.api.libs.json.JsResult import play.api.libs.json.JsValue @@ -39,9 +40,9 @@ case class PersonRowUnsaved( /** First name of the person. */ firstname: /* user-picked */ FirstName, /** Middle name or middle initial of the person. */ - middlename: Option[Name] = None, + middlename: Option[/* user-picked */ MiddleName] = None, /** Last name of the person. */ - lastname: Name, + lastname: /* user-picked */ LastName, /** Surname suffix. For example, Sr. or Jr. */ suffix: Option[/* max 10 chars */ String] = None, /** Additional contact information about the person stored in xml format. */ @@ -97,9 +98,9 @@ object PersonRowUnsaved { sb.append(Text.DELIMETER) /* user-picked */ FirstName.pgText.unsafeEncode(row.firstname, sb) sb.append(Text.DELIMETER) - Text.option(using Name.pgText).unsafeEncode(row.middlename, sb) + Text.option(using MiddleName.pgText).unsafeEncode(row.middlename, sb) sb.append(Text.DELIMETER) - Name.pgText.unsafeEncode(row.lastname, sb) + /* user-picked */ LastName.pgText.unsafeEncode(row.lastname, sb) sb.append(Text.DELIMETER) Text.option(using Text.stringInstance).unsafeEncode(row.suffix, sb) sb.append(Text.DELIMETER) @@ -125,8 +126,8 @@ object PersonRowUnsaved { persontype = json.\("persontype").as(using Reads.StringReads), title = json.\("title").toOption.map(_.as(using Reads.StringReads)), firstname = json.\("firstname").as(using FirstName.reads), - middlename = json.\("middlename").toOption.map(_.as(using Name.reads)), - lastname = json.\("lastname").as(using Name.reads), + middlename = json.\("middlename").toOption.map(_.as(using MiddleName.reads)), + lastname = json.\("lastname").as(using LastName.reads), suffix = json.\("suffix").toOption.map(_.as(using Reads.StringReads)), additionalcontactinfo = json.\("additionalcontactinfo").toOption.map(_.as(using TypoXml.reads)), demographics = json.\("demographics").toOption.map(_.as(using TypoXml.reads)), @@ -147,8 +148,8 @@ object PersonRowUnsaved { "persontype" -> Writes.StringWrites.writes(o.persontype), "title" -> Writes.OptionWrites(using Writes.StringWrites).writes(o.title), "firstname" -> FirstName.writes.writes(o.firstname), - "middlename" -> Writes.OptionWrites(using Name.writes).writes(o.middlename), - "lastname" -> Name.writes.writes(o.lastname), + "middlename" -> Writes.OptionWrites(using MiddleName.writes).writes(o.middlename), + "lastname" -> LastName.writes.writes(o.lastname), "suffix" -> Writes.OptionWrites(using Writes.StringWrites).writes(o.suffix), "additionalcontactinfo" -> Writes.OptionWrites(using TypoXml.writes).writes(o.additionalcontactinfo), "demographics" -> Writes.OptionWrites(using TypoXml.writes).writes(o.demographics), diff --git a/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/person_detail/PersonDetailSqlRow.scala b/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/person_detail/PersonDetailSqlRow.scala index 82f84d5e5f..a9b944edc9 100644 --- a/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/person_detail/PersonDetailSqlRow.scala +++ b/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/person_detail/PersonDetailSqlRow.scala @@ -7,8 +7,9 @@ package adventureworks.person_detail import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Name import adventureworks.userdefined.FirstName +import adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import anorm.Column import anorm.RowParser import anorm.Success @@ -30,9 +31,9 @@ case class PersonDetailSqlRow( /** Points to [[adventureworks.person.person.PersonRow.firstname]] */ firstname: /* user-picked */ FirstName, /** Points to [[adventureworks.person.person.PersonRow.middlename]] */ - middlename: Option[Name], + middlename: Option[/* user-picked */ MiddleName], /** Points to [[adventureworks.person.person.PersonRow.lastname]] */ - lastname: Name, + lastname: /* user-picked */ LastName, /** Points to [[adventureworks.humanresources.employee.EmployeeRow.jobtitle]] */ jobtitle: String, /** Points to [[adventureworks.person.address.AddressRow.addressline1]] */ @@ -53,8 +54,8 @@ object PersonDetailSqlRow { businessentityid = json.\("businessentityid").as(using BusinessentityId.reads), title = json.\("title").toOption.map(_.as(using Reads.StringReads)), firstname = json.\("firstname").as(using FirstName.reads), - middlename = json.\("middlename").toOption.map(_.as(using Name.reads)), - lastname = json.\("lastname").as(using Name.reads), + middlename = json.\("middlename").toOption.map(_.as(using MiddleName.reads)), + lastname = json.\("lastname").as(using LastName.reads), jobtitle = json.\("jobtitle").as(using Reads.StringReads), addressline1 = json.\("addressline1").toOption.map(_.as(using Reads.StringReads)), city = json.\("city").toOption.map(_.as(using Reads.StringReads)), @@ -73,8 +74,8 @@ object PersonDetailSqlRow { businessentityid = row(idx + 0)(using BusinessentityId.column), title = row(idx + 1)(using Column.columnToOption(using Column.columnToString)), firstname = row(idx + 2)(using /* user-picked */ FirstName.column), - middlename = row(idx + 3)(using Column.columnToOption(using Name.column)), - lastname = row(idx + 4)(using Name.column), + middlename = row(idx + 3)(using Column.columnToOption(using MiddleName.column)), + lastname = row(idx + 4)(using /* user-picked */ LastName.column), jobtitle = row(idx + 5)(using Column.columnToString), addressline1 = row(idx + 6)(using Column.columnToOption(using Column.columnToString)), city = row(idx + 7)(using Column.columnToOption(using Column.columnToString)), @@ -91,8 +92,8 @@ object PersonDetailSqlRow { "businessentityid" -> BusinessentityId.writes.writes(o.businessentityid), "title" -> Writes.OptionWrites(using Writes.StringWrites).writes(o.title), "firstname" -> FirstName.writes.writes(o.firstname), - "middlename" -> Writes.OptionWrites(using Name.writes).writes(o.middlename), - "lastname" -> Name.writes.writes(o.lastname), + "middlename" -> Writes.OptionWrites(using MiddleName.writes).writes(o.middlename), + "lastname" -> LastName.writes.writes(o.lastname), "jobtitle" -> Writes.StringWrites.writes(o.jobtitle), "addressline1" -> Writes.OptionWrites(using Writes.StringWrites).writes(o.addressline1), "city" -> Writes.OptionWrites(using Writes.StringWrites).writes(o.city), diff --git a/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/person_dynamic/PersonDynamicSqlRow.scala b/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/person_dynamic/PersonDynamicSqlRow.scala index 59682a6279..7a1800afff 100644 --- a/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/person_dynamic/PersonDynamicSqlRow.scala +++ b/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/person_dynamic/PersonDynamicSqlRow.scala @@ -5,8 +5,9 @@ */ package adventureworks.person_dynamic -import adventureworks.public.Name import adventureworks.userdefined.FirstName +import adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import anorm.Column import anorm.RowParser import anorm.Success @@ -26,9 +27,9 @@ case class PersonDynamicSqlRow( /** Points to [[adventureworks.person.person.PersonRow.firstname]] */ firstname: /* user-picked */ FirstName, /** Points to [[adventureworks.person.person.PersonRow.middlename]] */ - middlename: Option[Name], + middlename: Option[/* user-picked */ MiddleName], /** Points to [[adventureworks.person.person.PersonRow.lastname]] */ - lastname: Name + lastname: /* user-picked */ LastName ) object PersonDynamicSqlRow { @@ -38,8 +39,8 @@ object PersonDynamicSqlRow { PersonDynamicSqlRow( title = json.\("title").toOption.map(_.as(using Reads.StringReads)), firstname = json.\("firstname").as(using FirstName.reads), - middlename = json.\("middlename").toOption.map(_.as(using Name.reads)), - lastname = json.\("lastname").as(using Name.reads) + middlename = json.\("middlename").toOption.map(_.as(using MiddleName.reads)), + lastname = json.\("lastname").as(using LastName.reads) ) ) ), @@ -52,8 +53,8 @@ object PersonDynamicSqlRow { PersonDynamicSqlRow( title = row(idx + 0)(using Column.columnToOption(using Column.columnToString)), firstname = row(idx + 1)(using /* user-picked */ FirstName.column), - middlename = row(idx + 2)(using Column.columnToOption(using Name.column)), - lastname = row(idx + 3)(using Name.column) + middlename = row(idx + 2)(using Column.columnToOption(using MiddleName.column)), + lastname = row(idx + 3)(using /* user-picked */ LastName.column) ) ) } @@ -64,8 +65,8 @@ object PersonDynamicSqlRow { new JsObject(ListMap[String, JsValue]( "title" -> Writes.OptionWrites(using Writes.StringWrites).writes(o.title), "firstname" -> FirstName.writes.writes(o.firstname), - "middlename" -> Writes.OptionWrites(using Name.writes).writes(o.middlename), - "lastname" -> Name.writes.writes(o.lastname) + "middlename" -> Writes.OptionWrites(using MiddleName.writes).writes(o.middlename), + "lastname" -> LastName.writes.writes(o.lastname) )) ) } diff --git a/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/userdefined/ActiveFlag.scala b/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/userdefined/ActiveFlag.scala new file mode 100644 index 0000000000..a0bdf88eff --- /dev/null +++ b/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/userdefined/ActiveFlag.scala @@ -0,0 +1,50 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined + +import adventureworks.Text +import adventureworks.public.Flag +import anorm.Column +import anorm.ParameterMetaData +import anorm.ToStatement +import play.api.libs.json.Reads +import play.api.libs.json.Writes +import typr.dsl.Bijection + +/** Shared type `ActiveFlag` + * Generated from TypeDefinitions matching + */ +case class ActiveFlag(value: Flag) extends scala.AnyVal + +object ActiveFlag { + given arrayColumn: Column[Array[ActiveFlag]] = Column.columnToArray(using column, summon) + + given arrayToStatement: ToStatement[Array[ActiveFlag]] = Flag.arrayToStatement.contramap(_.map(_.value)) + + given bijection: Bijection[ActiveFlag, Flag] = Bijection.apply[ActiveFlag, Flag](_.value)(ActiveFlag.apply) + + given column: Column[ActiveFlag] = Flag.column.map(ActiveFlag.apply) + + given parameterMetadata: ParameterMetaData[ActiveFlag] = { + new ParameterMetaData[ActiveFlag] { + override def sqlType: String = Flag.parameterMetadata.sqlType + override def jdbcType: Int = Flag.parameterMetadata.jdbcType + } + } + + given pgText: Text[ActiveFlag] = { + new Text[ActiveFlag] { + override def unsafeEncode(v: ActiveFlag, sb: StringBuilder): Unit = Flag.pgText.unsafeEncode(v.value, sb) + override def unsafeArrayEncode(v: ActiveFlag, sb: StringBuilder): Unit = Flag.pgText.unsafeArrayEncode(v.value, sb) + } + } + + given reads: Reads[ActiveFlag] = Flag.reads.map(ActiveFlag.apply) + + given toStatement: ToStatement[ActiveFlag] = Flag.toStatement.contramap(_.value) + + given writes: Writes[ActiveFlag] = Flag.writes.contramap(_.value) +} \ No newline at end of file diff --git a/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/userdefined/CurrentFlag.scala b/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/userdefined/CurrentFlag.scala new file mode 100644 index 0000000000..0b334c028c --- /dev/null +++ b/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/userdefined/CurrentFlag.scala @@ -0,0 +1,50 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined + +import adventureworks.Text +import adventureworks.public.Flag +import anorm.Column +import anorm.ParameterMetaData +import anorm.ToStatement +import play.api.libs.json.Reads +import play.api.libs.json.Writes +import typr.dsl.Bijection + +/** Shared type `CurrentFlag` + * Generated from TypeDefinitions matching + */ +case class CurrentFlag(value: Flag) extends scala.AnyVal + +object CurrentFlag { + given arrayColumn: Column[Array[CurrentFlag]] = Column.columnToArray(using column, summon) + + given arrayToStatement: ToStatement[Array[CurrentFlag]] = Flag.arrayToStatement.contramap(_.map(_.value)) + + given bijection: Bijection[CurrentFlag, Flag] = Bijection.apply[CurrentFlag, Flag](_.value)(CurrentFlag.apply) + + given column: Column[CurrentFlag] = Flag.column.map(CurrentFlag.apply) + + given parameterMetadata: ParameterMetaData[CurrentFlag] = { + new ParameterMetaData[CurrentFlag] { + override def sqlType: String = Flag.parameterMetadata.sqlType + override def jdbcType: Int = Flag.parameterMetadata.jdbcType + } + } + + given pgText: Text[CurrentFlag] = { + new Text[CurrentFlag] { + override def unsafeEncode(v: CurrentFlag, sb: StringBuilder): Unit = Flag.pgText.unsafeEncode(v.value, sb) + override def unsafeArrayEncode(v: CurrentFlag, sb: StringBuilder): Unit = Flag.pgText.unsafeArrayEncode(v.value, sb) + } + } + + given reads: Reads[CurrentFlag] = Flag.reads.map(CurrentFlag.apply) + + given toStatement: ToStatement[CurrentFlag] = Flag.toStatement.contramap(_.value) + + given writes: Writes[CurrentFlag] = Flag.writes.contramap(_.value) +} \ No newline at end of file diff --git a/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/userdefined/FirstName.scala b/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/userdefined/FirstName.scala new file mode 100644 index 0000000000..c6155427e2 --- /dev/null +++ b/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/userdefined/FirstName.scala @@ -0,0 +1,50 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined + +import adventureworks.Text +import adventureworks.public.Name +import anorm.Column +import anorm.ParameterMetaData +import anorm.ToStatement +import play.api.libs.json.Reads +import play.api.libs.json.Writes +import typr.dsl.Bijection + +/** Shared type `FirstName` + * Generated from TypeDefinitions matching + */ +case class FirstName(value: Name) extends scala.AnyVal + +object FirstName { + given arrayColumn: Column[Array[FirstName]] = Column.columnToArray(using column, summon) + + given arrayToStatement: ToStatement[Array[FirstName]] = Name.arrayToStatement.contramap(_.map(_.value)) + + given bijection: Bijection[FirstName, Name] = Bijection.apply[FirstName, Name](_.value)(FirstName.apply) + + given column: Column[FirstName] = Name.column.map(FirstName.apply) + + given parameterMetadata: ParameterMetaData[FirstName] = { + new ParameterMetaData[FirstName] { + override def sqlType: String = Name.parameterMetadata.sqlType + override def jdbcType: Int = Name.parameterMetadata.jdbcType + } + } + + given pgText: Text[FirstName] = { + new Text[FirstName] { + override def unsafeEncode(v: FirstName, sb: StringBuilder): Unit = Name.pgText.unsafeEncode(v.value, sb) + override def unsafeArrayEncode(v: FirstName, sb: StringBuilder): Unit = Name.pgText.unsafeArrayEncode(v.value, sb) + } + } + + given reads: Reads[FirstName] = Name.reads.map(FirstName.apply) + + given toStatement: ToStatement[FirstName] = Name.toStatement.contramap(_.value) + + given writes: Writes[FirstName] = Name.writes.contramap(_.value) +} \ No newline at end of file diff --git a/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/userdefined/LastName.scala b/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/userdefined/LastName.scala new file mode 100644 index 0000000000..0897aab6ef --- /dev/null +++ b/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/userdefined/LastName.scala @@ -0,0 +1,50 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined + +import adventureworks.Text +import adventureworks.public.Name +import anorm.Column +import anorm.ParameterMetaData +import anorm.ToStatement +import play.api.libs.json.Reads +import play.api.libs.json.Writes +import typr.dsl.Bijection + +/** Shared type `LastName` + * Generated from TypeDefinitions matching + */ +case class LastName(value: Name) extends scala.AnyVal + +object LastName { + given arrayColumn: Column[Array[LastName]] = Column.columnToArray(using column, summon) + + given arrayToStatement: ToStatement[Array[LastName]] = Name.arrayToStatement.contramap(_.map(_.value)) + + given bijection: Bijection[LastName, Name] = Bijection.apply[LastName, Name](_.value)(LastName.apply) + + given column: Column[LastName] = Name.column.map(LastName.apply) + + given parameterMetadata: ParameterMetaData[LastName] = { + new ParameterMetaData[LastName] { + override def sqlType: String = Name.parameterMetadata.sqlType + override def jdbcType: Int = Name.parameterMetadata.jdbcType + } + } + + given pgText: Text[LastName] = { + new Text[LastName] { + override def unsafeEncode(v: LastName, sb: StringBuilder): Unit = Name.pgText.unsafeEncode(v.value, sb) + override def unsafeArrayEncode(v: LastName, sb: StringBuilder): Unit = Name.pgText.unsafeArrayEncode(v.value, sb) + } + } + + given reads: Reads[LastName] = Name.reads.map(LastName.apply) + + given toStatement: ToStatement[LastName] = Name.toStatement.contramap(_.value) + + given writes: Writes[LastName] = Name.writes.contramap(_.value) +} \ No newline at end of file diff --git a/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/userdefined/MiddleName.scala b/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/userdefined/MiddleName.scala new file mode 100644 index 0000000000..2bed017dc9 --- /dev/null +++ b/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/userdefined/MiddleName.scala @@ -0,0 +1,50 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined + +import adventureworks.Text +import adventureworks.public.Name +import anorm.Column +import anorm.ParameterMetaData +import anorm.ToStatement +import play.api.libs.json.Reads +import play.api.libs.json.Writes +import typr.dsl.Bijection + +/** Shared type `MiddleName` + * Generated from TypeDefinitions matching + */ +case class MiddleName(value: Name) extends scala.AnyVal + +object MiddleName { + given arrayColumn: Column[Array[MiddleName]] = Column.columnToArray(using column, summon) + + given arrayToStatement: ToStatement[Array[MiddleName]] = Name.arrayToStatement.contramap(_.map(_.value)) + + given bijection: Bijection[MiddleName, Name] = Bijection.apply[MiddleName, Name](_.value)(MiddleName.apply) + + given column: Column[MiddleName] = Name.column.map(MiddleName.apply) + + given parameterMetadata: ParameterMetaData[MiddleName] = { + new ParameterMetaData[MiddleName] { + override def sqlType: String = Name.parameterMetadata.sqlType + override def jdbcType: Int = Name.parameterMetadata.jdbcType + } + } + + given pgText: Text[MiddleName] = { + new Text[MiddleName] { + override def unsafeEncode(v: MiddleName, sb: StringBuilder): Unit = Name.pgText.unsafeEncode(v.value, sb) + override def unsafeArrayEncode(v: MiddleName, sb: StringBuilder): Unit = Name.pgText.unsafeArrayEncode(v.value, sb) + } + } + + given reads: Reads[MiddleName] = Name.reads.map(MiddleName.apply) + + given toStatement: ToStatement[MiddleName] = Name.toStatement.contramap(_.value) + + given writes: Writes[MiddleName] = Name.writes.contramap(_.value) +} \ No newline at end of file diff --git a/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/userdefined/OnlineOrderFlag.scala b/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/userdefined/OnlineOrderFlag.scala new file mode 100644 index 0000000000..2bd668f9f1 --- /dev/null +++ b/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/userdefined/OnlineOrderFlag.scala @@ -0,0 +1,50 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined + +import adventureworks.Text +import adventureworks.public.Flag +import anorm.Column +import anorm.ParameterMetaData +import anorm.ToStatement +import play.api.libs.json.Reads +import play.api.libs.json.Writes +import typr.dsl.Bijection + +/** Shared type `OnlineOrderFlag` + * Generated from TypeDefinitions matching + */ +case class OnlineOrderFlag(value: Flag) extends scala.AnyVal + +object OnlineOrderFlag { + given arrayColumn: Column[Array[OnlineOrderFlag]] = Column.columnToArray(using column, summon) + + given arrayToStatement: ToStatement[Array[OnlineOrderFlag]] = Flag.arrayToStatement.contramap(_.map(_.value)) + + given bijection: Bijection[OnlineOrderFlag, Flag] = Bijection.apply[OnlineOrderFlag, Flag](_.value)(OnlineOrderFlag.apply) + + given column: Column[OnlineOrderFlag] = Flag.column.map(OnlineOrderFlag.apply) + + given parameterMetadata: ParameterMetaData[OnlineOrderFlag] = { + new ParameterMetaData[OnlineOrderFlag] { + override def sqlType: String = Flag.parameterMetadata.sqlType + override def jdbcType: Int = Flag.parameterMetadata.jdbcType + } + } + + given pgText: Text[OnlineOrderFlag] = { + new Text[OnlineOrderFlag] { + override def unsafeEncode(v: OnlineOrderFlag, sb: StringBuilder): Unit = Flag.pgText.unsafeEncode(v.value, sb) + override def unsafeArrayEncode(v: OnlineOrderFlag, sb: StringBuilder): Unit = Flag.pgText.unsafeArrayEncode(v.value, sb) + } + } + + given reads: Reads[OnlineOrderFlag] = Flag.reads.map(OnlineOrderFlag.apply) + + given toStatement: ToStatement[OnlineOrderFlag] = Flag.toStatement.contramap(_.value) + + given writes: Writes[OnlineOrderFlag] = Flag.writes.contramap(_.value) +} \ No newline at end of file diff --git a/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/userdefined/SalariedFlag.scala b/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/userdefined/SalariedFlag.scala new file mode 100644 index 0000000000..2e355431cf --- /dev/null +++ b/testers/pg/scala/anorm/generated-and-checked-in-3/adventureworks/userdefined/SalariedFlag.scala @@ -0,0 +1,50 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined + +import adventureworks.Text +import adventureworks.public.Flag +import anorm.Column +import anorm.ParameterMetaData +import anorm.ToStatement +import play.api.libs.json.Reads +import play.api.libs.json.Writes +import typr.dsl.Bijection + +/** Shared type `SalariedFlag` + * Generated from TypeDefinitions matching + */ +case class SalariedFlag(value: Flag) extends scala.AnyVal + +object SalariedFlag { + given arrayColumn: Column[Array[SalariedFlag]] = Column.columnToArray(using column, summon) + + given arrayToStatement: ToStatement[Array[SalariedFlag]] = Flag.arrayToStatement.contramap(_.map(_.value)) + + given bijection: Bijection[SalariedFlag, Flag] = Bijection.apply[SalariedFlag, Flag](_.value)(SalariedFlag.apply) + + given column: Column[SalariedFlag] = Flag.column.map(SalariedFlag.apply) + + given parameterMetadata: ParameterMetaData[SalariedFlag] = { + new ParameterMetaData[SalariedFlag] { + override def sqlType: String = Flag.parameterMetadata.sqlType + override def jdbcType: Int = Flag.parameterMetadata.jdbcType + } + } + + given pgText: Text[SalariedFlag] = { + new Text[SalariedFlag] { + override def unsafeEncode(v: SalariedFlag, sb: StringBuilder): Unit = Flag.pgText.unsafeEncode(v.value, sb) + override def unsafeArrayEncode(v: SalariedFlag, sb: StringBuilder): Unit = Flag.pgText.unsafeArrayEncode(v.value, sb) + } + } + + given reads: Reads[SalariedFlag] = Flag.reads.map(SalariedFlag.apply) + + given toStatement: ToStatement[SalariedFlag] = Flag.toStatement.contramap(_.value) + + given writes: Writes[SalariedFlag] = Flag.writes.contramap(_.value) +} \ No newline at end of file diff --git a/testers/pg/scala/anorm/src/scala/adventureworks/DSLTest.scala b/testers/pg/scala/anorm/src/scala/adventureworks/DSLTest.scala index c7c2d862e6..6d1dd6f0f5 100644 --- a/testers/pg/scala/anorm/src/scala/adventureworks/DSLTest.scala +++ b/testers/pg/scala/anorm/src/scala/adventureworks/DSLTest.scala @@ -6,6 +6,7 @@ import adventureworks.person.businessentity.BusinessentityRepoImpl import adventureworks.person.emailaddress.EmailaddressRepoImpl import adventureworks.person.person.PersonRepoImpl import adventureworks.sales.salesperson.SalespersonRepoImpl +import adventureworks.public.Name import adventureworks.userdefined.FirstName import typr.dsl.SqlExpr._ @@ -23,7 +24,7 @@ class DSLTest extends SnapshotTest { withConnection { implicit c => val testInsert = new TestInsert(new Random(0), DomainInsert) val businessentityRow = testInsert.personBusinessentity() - val personRow = testInsert.personPerson(businessentityRow.businessentityid, persontype = "EM", FirstName("a")) + val personRow = testInsert.personPerson(businessentityRow.businessentityid, persontype = "EM", firstname = FirstName(Name("a"))) testInsert.personEmailaddress(personRow.businessentityid, Some("a@b.c")): @nowarn val employeeRow = testInsert.humanresourcesEmployee(personRow.businessentityid, gender = "M", maritalstatus = "M", birthdate = TypoLocalDate("1998-01-01"), hiredate = TypoLocalDate("1997-01-01")) diff --git a/testers/pg/scala/anorm/src/scala/adventureworks/RecordTest.scala b/testers/pg/scala/anorm/src/scala/adventureworks/RecordTest.scala index ffe4cf6676..967719caa7 100644 --- a/testers/pg/scala/anorm/src/scala/adventureworks/RecordTest.scala +++ b/testers/pg/scala/anorm/src/scala/adventureworks/RecordTest.scala @@ -2,6 +2,7 @@ package adventureworks import adventureworks.customtypes.* import adventureworks.person_row_join.PersonRowJoinSqlRepoImpl +import adventureworks.public.Name import adventureworks.userdefined.FirstName import org.scalactic.TypeCheckedTripleEquals import org.scalatest.funsuite.AnyFunSuite @@ -17,7 +18,7 @@ class RecordTest extends AnyFunSuite with TypeCheckedTripleEquals { withConnection { implicit c => val testInsert = new TestInsert(new Random(0), DomainInsert) val businessentityRow = testInsert.personBusinessentity() - val personRow = testInsert.personPerson(businessentityRow.businessentityid, persontype = "EM", FirstName("a")) + val personRow = testInsert.personPerson(businessentityRow.businessentityid, persontype = "EM", firstname = FirstName(Name("a"))) testInsert.personEmailaddress(personRow.businessentityid, Some("a@b.c")): @nowarn val employeeRow = testInsert.humanresourcesEmployee(personRow.businessentityid, gender = "M", maritalstatus = "M", birthdate = TypoLocalDate("1998-01-01"), hiredate = TypoLocalDate("1997-01-01")) diff --git a/testers/pg/scala/anorm/src/scala/adventureworks/humanresources/employee/EmployeeTest.scala b/testers/pg/scala/anorm/src/scala/adventureworks/humanresources/employee/EmployeeTest.scala index 5470d82b71..210a3d3b9a 100644 --- a/testers/pg/scala/anorm/src/scala/adventureworks/humanresources/employee/EmployeeTest.scala +++ b/testers/pg/scala/anorm/src/scala/adventureworks/humanresources/employee/EmployeeTest.scala @@ -4,7 +4,7 @@ import adventureworks.customtypes.* import adventureworks.person.businessentity.{BusinessentityId, BusinessentityRepoImpl, BusinessentityRow, BusinessentityRowUnsaved} import adventureworks.person.person.{PersonRepoImpl, PersonRowUnsaved} import adventureworks.public.{Flag, Name} -import adventureworks.userdefined.FirstName +import adventureworks.userdefined.{CurrentFlag, FirstName, LastName, MiddleName, SalariedFlag} import adventureworks.withConnection import org.scalactic.TypeCheckedTripleEquals import org.scalatest.funsuite.AnyFunSuite @@ -30,9 +30,9 @@ class EmployeeTest extends AnyFunSuite with TypeCheckedTripleEquals { businessentityid = businessentityRow.businessentityid, persontype = "SC", title = None, - firstname = FirstName("firstname"), - middlename = Some(Name("middlename")), - lastname = Name("lastname"), + firstname = FirstName(Name("firstname")), + middlename = Some(MiddleName(Name("middlename"))), + lastname = LastName(Name("lastname")), suffix = Some("suffix"), additionalcontactinfo = Some(TypoXml("")), demographics = None @@ -48,10 +48,10 @@ class EmployeeTest extends AnyFunSuite with TypeCheckedTripleEquals { maritalstatus = "M", gender = "F", hiredate = TypoLocalDate(LocalDate.now().minusYears(1)), - salariedflag = Defaulted.Provided(Flag(true)), + salariedflag = Defaulted.Provided(SalariedFlag(Flag(true))), vacationhours = Defaulted.Provided(TypoShort(1)), sickleavehours = Defaulted.Provided(TypoShort(2)), - currentflag = Defaulted.Provided(Flag(true)), + currentflag = Defaulted.Provided(CurrentFlag(Flag(true))), rowguid = Defaulted.Provided(TypoUUID.randomUUID), modifieddate = Defaulted.Provided(TypoLocalDateTime.now), organizationnode = Defaulted.Provided(Some("/")) @@ -99,10 +99,10 @@ class EmployeeTest extends AnyFunSuite with TypeCheckedTripleEquals { unsaved.gender, unsaved.hiredate, // below: these are assertions for the static default values - Flag(true), + SalariedFlag(Flag(true)), TypoShort(0), TypoShort(0), - Flag(true), + CurrentFlag(Flag(true)), _, _, Some("/") diff --git a/testers/pg/scala/anorm/src/scala/adventureworks/person/MultiRepoTest.scala b/testers/pg/scala/anorm/src/scala/adventureworks/person/MultiRepoTest.scala index 860d1c7d84..0e7a5ef592 100644 --- a/testers/pg/scala/anorm/src/scala/adventureworks/person/MultiRepoTest.scala +++ b/testers/pg/scala/anorm/src/scala/adventureworks/person/MultiRepoTest.scala @@ -91,7 +91,7 @@ class PersonWithAddressesTest extends AnyFunSuite with TypeCheckedTripleEquals { // insert randomly generated rows (with a fixed seed) we base the test on val testInsert = new TestInsert(new Random(1), DomainInsert) val businessentityRow = testInsert.personBusinessentity() - val personRow = testInsert.personPerson(businessentityRow.businessentityid, persontype = "SC", FirstName("name")) + val personRow = testInsert.personPerson(businessentityRow.businessentityid, persontype = "SC", firstname = FirstName(Name("name"))) val countryregionRow = testInsert.personCountryregion(CountryregionId("NOR")) val salesterritoryRow = testInsert.salesSalesterritory(countryregionRow.countryregioncode) val stateprovinceRow = testInsert.personStateprovince(countryregionRow.countryregioncode, salesterritoryRow.territoryid) diff --git a/testers/pg/scala/anorm/src/scala/adventureworks/production/product/CompositeIdsTest.scala b/testers/pg/scala/anorm/src/scala/adventureworks/production/product/CompositeIdsTest.scala index 3c9ba7247e..7133299bf6 100644 --- a/testers/pg/scala/anorm/src/scala/adventureworks/production/product/CompositeIdsTest.scala +++ b/testers/pg/scala/anorm/src/scala/adventureworks/production/product/CompositeIdsTest.scala @@ -7,7 +7,7 @@ import adventureworks.person.person.{PersonRepo, PersonRepoImpl, PersonRepoMock, import adventureworks.production.productcosthistory.* import adventureworks.production.unitmeasure.UnitmeasureId import adventureworks.public.{Name, NameStyle} -import adventureworks.userdefined.FirstName +import adventureworks.userdefined.{FirstName, LastName} import adventureworks.{DomainInsert, SnapshotTest, TestInsert, withConnection} import org.scalatest.Assertion @@ -70,9 +70,9 @@ class CompositeIdsTest extends SnapshotTest { persontype = "SC", namestyle = NameStyle(true), title = None, - firstname = FirstName(s"first name $i"), + firstname = FirstName(Name(s"first name $i")), middlename = None, - lastname = Name(s"last name $i"), + lastname = LastName(Name(s"last name $i")), suffix = None, emailpromotion = 1, additionalcontactinfo = None, diff --git a/testers/pg/scala/anorm/src/scala/adventureworks/userdefined/FirstName.scala b/testers/pg/scala/anorm/src/scala/adventureworks/userdefined/FirstName.scala deleted file mode 100644 index 61119462f0..0000000000 --- a/testers/pg/scala/anorm/src/scala/adventureworks/userdefined/FirstName.scala +++ /dev/null @@ -1,26 +0,0 @@ -package adventureworks.userdefined - -import adventureworks.Text -import anorm.{Column, ParameterMetaData, ToStatement} -import play.api.libs.json.{Reads, Writes} -import typr.dsl.Bijection - -case class FirstName(value: String) extends AnyVal -object FirstName { - implicit lazy val arrayColumn: Column[Array[FirstName]] = Column.columnToArray(using column, implicitly) - implicit lazy val arrayToStatement: ToStatement[Array[FirstName]] = ToStatement.arrayToParameter(using ParameterMetaData.StringParameterMetaData).contramap(_.map(_.value)) - implicit lazy val bijection: Bijection[FirstName, String] = Bijection[FirstName, String](_.value)(FirstName.apply) - implicit lazy val column: Column[FirstName] = Column.columnToString.map(FirstName.apply) - implicit lazy val ordering: Ordering[FirstName] = Ordering.by(_.value) - implicit lazy val parameterMetadata: ParameterMetaData[FirstName] = new ParameterMetaData[FirstName] { - override def sqlType: String = ParameterMetaData.StringParameterMetaData.sqlType - override def jdbcType: Int = ParameterMetaData.StringParameterMetaData.jdbcType - } - implicit lazy val reads: Reads[FirstName] = Reads.StringReads.map(FirstName.apply) - implicit lazy val pgText: Text[FirstName] = new Text[FirstName] { - override def unsafeEncode(v: FirstName, sb: StringBuilder) = Text.stringInstance.unsafeEncode(v.value, sb) - override def unsafeArrayEncode(v: FirstName, sb: StringBuilder) = Text.stringInstance.unsafeArrayEncode(v.value, sb) - } - implicit lazy val toStatement: ToStatement[FirstName] = ToStatement.stringToStatement.contramap(_.value) - implicit lazy val writes: Writes[FirstName] = Writes.StringWrites.contramap(_.value) -} diff --git a/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/TestInsert.scala b/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/TestInsert.scala index 14a38e176c..c029beb0f5 100644 --- a/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/TestInsert.scala +++ b/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/TestInsert.scala @@ -151,7 +151,11 @@ import adventureworks.sales.salesterritory.SalesterritoryId import adventureworks.sales.salesterritory.SalesterritoryRepoImpl import adventureworks.sales.salesterritory.SalesterritoryRow import adventureworks.sales.salesterritory.SalesterritoryRowUnsaved +import adventureworks.userdefined.CurrentFlag import adventureworks.userdefined.FirstName +import adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName +import adventureworks.userdefined.SalariedFlag import doobie.free.connection.ConnectionIO import java.time.Instant import java.time.LocalDate @@ -181,10 +185,10 @@ case class TestInsert( nationalidnumber: String = random.alphanumeric.take(15).mkString, loginid: String = random.alphanumeric.take(20).mkString, jobtitle: String = random.alphanumeric.take(20).mkString, - salariedflag: Defaulted[Flag] = new UseDefault(), + salariedflag: Defaulted[/* user-picked */ SalariedFlag] = new UseDefault(), vacationhours: Defaulted[TypoShort] = new UseDefault(), sickleavehours: Defaulted[TypoShort] = new UseDefault(), - currentflag: Defaulted[Flag] = new UseDefault(), + currentflag: Defaulted[/* user-picked */ CurrentFlag] = new UseDefault(), rowguid: Defaulted[TypoUUID] = new UseDefault(), modifieddate: Defaulted[TypoLocalDateTime] = new UseDefault(), organizationnode: Defaulted[Option[String]] = new UseDefault() @@ -265,10 +269,10 @@ case class TestInsert( def personPerson( businessentityid: BusinessentityId, persontype: String, - firstname: /* user-picked */ FirstName, title: Option[/* max 8 chars */ String] = (if (random.nextBoolean()) None else Some(random.alphanumeric.take(8).mkString)), - middlename: Option[Name] = (if (random.nextBoolean()) None else Some(domainInsert.publicName(random))), - lastname: Name = domainInsert.publicName(random), + firstname: /* user-picked */ FirstName = new FirstName(domainInsert.publicName(random)), + middlename: Option[/* user-picked */ MiddleName] = (if (random.nextBoolean()) None else Some(new MiddleName(domainInsert.publicName(random)))), + lastname: /* user-picked */ LastName = new LastName(domainInsert.publicName(random)), suffix: Option[/* max 10 chars */ String] = (if (random.nextBoolean()) None else Some(random.alphanumeric.take(10).mkString)), additionalcontactinfo: Option[TypoXml] = None, demographics: Option[TypoXml] = None, diff --git a/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/humanresources/employee/EmployeeFields.scala b/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/humanresources/employee/EmployeeFields.scala index 1c559fa0dd..c4ad1a140a 100644 --- a/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/humanresources/employee/EmployeeFields.scala +++ b/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/humanresources/employee/EmployeeFields.scala @@ -12,7 +12,8 @@ import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId import adventureworks.person.person.PersonFields import adventureworks.person.person.PersonRow -import adventureworks.public.Flag +import adventureworks.userdefined.CurrentFlag +import adventureworks.userdefined.SalariedFlag import typr.dsl.ForeignKey import typr.dsl.Path import typr.dsl.RelationStructure @@ -30,10 +31,10 @@ trait EmployeeFields { def maritalstatus: Field[String, EmployeeRow] def gender: Field[String, EmployeeRow] def hiredate: Field[TypoLocalDate, EmployeeRow] - def salariedflag: Field[Flag, EmployeeRow] + def salariedflag: Field[/* user-picked */ SalariedFlag, EmployeeRow] def vacationhours: Field[TypoShort, EmployeeRow] def sickleavehours: Field[TypoShort, EmployeeRow] - def currentflag: Field[Flag, EmployeeRow] + def currentflag: Field[/* user-picked */ CurrentFlag, EmployeeRow] def rowguid: Field[TypoUUID, EmployeeRow] def modifieddate: Field[TypoLocalDateTime, EmployeeRow] def organizationnode: OptField[String, EmployeeRow] @@ -58,10 +59,10 @@ object EmployeeFields { override def maritalstatus = Field[String, EmployeeRow](_path, "maritalstatus", None, Some("bpchar"), x => x.maritalstatus, (row, value) => row.copy(maritalstatus = value)) override def gender = Field[String, EmployeeRow](_path, "gender", None, Some("bpchar"), x => x.gender, (row, value) => row.copy(gender = value)) override def hiredate = Field[TypoLocalDate, EmployeeRow](_path, "hiredate", Some("text"), Some("date"), x => x.hiredate, (row, value) => row.copy(hiredate = value)) - override def salariedflag = Field[Flag, EmployeeRow](_path, "salariedflag", None, Some("bool"), x => x.salariedflag, (row, value) => row.copy(salariedflag = value)) + override def salariedflag = Field[/* user-picked */ SalariedFlag, EmployeeRow](_path, "salariedflag", None, Some("bool"), x => x.salariedflag, (row, value) => row.copy(salariedflag = value)) override def vacationhours = Field[TypoShort, EmployeeRow](_path, "vacationhours", None, Some("int2"), x => x.vacationhours, (row, value) => row.copy(vacationhours = value)) override def sickleavehours = Field[TypoShort, EmployeeRow](_path, "sickleavehours", None, Some("int2"), x => x.sickleavehours, (row, value) => row.copy(sickleavehours = value)) - override def currentflag = Field[Flag, EmployeeRow](_path, "currentflag", None, Some("bool"), x => x.currentflag, (row, value) => row.copy(currentflag = value)) + override def currentflag = Field[/* user-picked */ CurrentFlag, EmployeeRow](_path, "currentflag", None, Some("bool"), x => x.currentflag, (row, value) => row.copy(currentflag = value)) override def rowguid = Field[TypoUUID, EmployeeRow](_path, "rowguid", None, Some("uuid"), x => x.rowguid, (row, value) => row.copy(rowguid = value)) override def modifieddate = Field[TypoLocalDateTime, EmployeeRow](_path, "modifieddate", Some("text"), Some("timestamp"), x => x.modifieddate, (row, value) => row.copy(modifieddate = value)) override def organizationnode = OptField[String, EmployeeRow](_path, "organizationnode", None, None, x => x.organizationnode, (row, value) => row.copy(organizationnode = value)) diff --git a/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/humanresources/employee/EmployeeRepoImpl.scala b/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/humanresources/employee/EmployeeRepoImpl.scala index a66d9a199b..f8a78fa5d4 100644 --- a/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/humanresources/employee/EmployeeRepoImpl.scala +++ b/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/humanresources/employee/EmployeeRepoImpl.scala @@ -11,7 +11,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoShort import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Flag +import adventureworks.userdefined.CurrentFlag +import adventureworks.userdefined.SalariedFlag import cats.instances.list.catsStdInstancesForList import doobie.free.connection.ConnectionIO import doobie.postgres.syntax.FragmentOps @@ -35,7 +36,7 @@ class EmployeeRepoImpl extends EmployeeRepo { 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") - values (${fromWrite(unsaved.businessentityid)(new Write.Single(BusinessentityId.put))}::int4, ${fromWrite(unsaved.nationalidnumber)(new Write.Single(Meta.StringMeta.put))}, ${fromWrite(unsaved.loginid)(new Write.Single(Meta.StringMeta.put))}, ${fromWrite(unsaved.jobtitle)(new Write.Single(Meta.StringMeta.put))}, ${fromWrite(unsaved.birthdate)(new Write.Single(TypoLocalDate.put))}::date, ${fromWrite(unsaved.maritalstatus)(new Write.Single(Meta.StringMeta.put))}::bpchar, ${fromWrite(unsaved.gender)(new Write.Single(Meta.StringMeta.put))}::bpchar, ${fromWrite(unsaved.hiredate)(new Write.Single(TypoLocalDate.put))}::date, ${fromWrite(unsaved.salariedflag)(new Write.Single(Flag.put))}::bool, ${fromWrite(unsaved.vacationhours)(new Write.Single(TypoShort.put))}::int2, ${fromWrite(unsaved.sickleavehours)(new Write.Single(TypoShort.put))}::int2, ${fromWrite(unsaved.currentflag)(new Write.Single(Flag.put))}::bool, ${fromWrite(unsaved.rowguid)(new Write.Single(TypoUUID.put))}::uuid, ${fromWrite(unsaved.modifieddate)(new Write.Single(TypoLocalDateTime.put))}::timestamp, ${fromWrite(unsaved.organizationnode)(new Write.SingleOpt(Meta.StringMeta.put))}) + values (${fromWrite(unsaved.businessentityid)(new Write.Single(BusinessentityId.put))}::int4, ${fromWrite(unsaved.nationalidnumber)(new Write.Single(Meta.StringMeta.put))}, ${fromWrite(unsaved.loginid)(new Write.Single(Meta.StringMeta.put))}, ${fromWrite(unsaved.jobtitle)(new Write.Single(Meta.StringMeta.put))}, ${fromWrite(unsaved.birthdate)(new Write.Single(TypoLocalDate.put))}::date, ${fromWrite(unsaved.maritalstatus)(new Write.Single(Meta.StringMeta.put))}::bpchar, ${fromWrite(unsaved.gender)(new Write.Single(Meta.StringMeta.put))}::bpchar, ${fromWrite(unsaved.hiredate)(new Write.Single(TypoLocalDate.put))}::date, ${fromWrite(unsaved.salariedflag)(new Write.Single(/* user-picked */ SalariedFlag.put))}::bool, ${fromWrite(unsaved.vacationhours)(new Write.Single(TypoShort.put))}::int2, ${fromWrite(unsaved.sickleavehours)(new Write.Single(TypoShort.put))}::int2, ${fromWrite(unsaved.currentflag)(new Write.Single(/* user-picked */ CurrentFlag.put))}::bool, ${fromWrite(unsaved.rowguid)(new Write.Single(TypoUUID.put))}::uuid, ${fromWrite(unsaved.modifieddate)(new Write.Single(TypoLocalDateTime.put))}::timestamp, ${fromWrite(unsaved.organizationnode)(new Write.SingleOpt(Meta.StringMeta.put))}) returning "businessentityid", "nationalidnumber", "loginid", "jobtitle", "birthdate"::text, "maritalstatus", "gender", "hiredate"::text, "salariedflag", "vacationhours", "sickleavehours", "currentflag", "rowguid", "modifieddate"::text, "organizationnode" """.query(EmployeeRow.read).unique } @@ -52,7 +53,7 @@ class EmployeeRepoImpl extends EmployeeRepo { Some((Fragment.const0(s""""hiredate""""), fr"${fromWrite(unsaved.hiredate)(new Write.Single(TypoLocalDate.put))}::date")), unsaved.salariedflag match { case Defaulted.UseDefault() => None - case Defaulted.Provided(value) => Some((Fragment.const0(s""""salariedflag""""), fr"${fromWrite(value: Flag)(new Write.Single(Flag.put))}::bool")) + case Defaulted.Provided(value) => Some((Fragment.const0(s""""salariedflag""""), fr"${fromWrite(value: /* user-picked */ SalariedFlag)(new Write.Single(/* user-picked */ SalariedFlag.put))}::bool")) }, unsaved.vacationhours match { case Defaulted.UseDefault() => None @@ -64,7 +65,7 @@ class EmployeeRepoImpl extends EmployeeRepo { }, unsaved.currentflag match { case Defaulted.UseDefault() => None - case Defaulted.Provided(value) => Some((Fragment.const0(s""""currentflag""""), fr"${fromWrite(value: Flag)(new Write.Single(Flag.put))}::bool")) + case Defaulted.Provided(value) => Some((Fragment.const0(s""""currentflag""""), fr"${fromWrite(value: /* user-picked */ CurrentFlag)(new Write.Single(/* user-picked */ CurrentFlag.put))}::bool")) }, unsaved.rowguid match { case Defaulted.UseDefault() => None @@ -131,10 +132,10 @@ class EmployeeRepoImpl extends EmployeeRepo { "maritalstatus" = ${fromWrite(row.maritalstatus)(new Write.Single(Meta.StringMeta.put))}::bpchar, "gender" = ${fromWrite(row.gender)(new Write.Single(Meta.StringMeta.put))}::bpchar, "hiredate" = ${fromWrite(row.hiredate)(new Write.Single(TypoLocalDate.put))}::date, - "salariedflag" = ${fromWrite(row.salariedflag)(new Write.Single(Flag.put))}::bool, + "salariedflag" = ${fromWrite(row.salariedflag)(new Write.Single(/* user-picked */ SalariedFlag.put))}::bool, "vacationhours" = ${fromWrite(row.vacationhours)(new Write.Single(TypoShort.put))}::int2, "sickleavehours" = ${fromWrite(row.sickleavehours)(new Write.Single(TypoShort.put))}::int2, - "currentflag" = ${fromWrite(row.currentflag)(new Write.Single(Flag.put))}::bool, + "currentflag" = ${fromWrite(row.currentflag)(new Write.Single(/* user-picked */ CurrentFlag.put))}::bool, "rowguid" = ${fromWrite(row.rowguid)(new Write.Single(TypoUUID.put))}::uuid, "modifieddate" = ${fromWrite(row.modifieddate)(new Write.Single(TypoLocalDateTime.put))}::timestamp, "organizationnode" = ${fromWrite(row.organizationnode)(new Write.SingleOpt(Meta.StringMeta.put))} @@ -153,10 +154,10 @@ class EmployeeRepoImpl extends EmployeeRepo { ${fromWrite(unsaved.maritalstatus)(new Write.Single(Meta.StringMeta.put))}::bpchar, ${fromWrite(unsaved.gender)(new Write.Single(Meta.StringMeta.put))}::bpchar, ${fromWrite(unsaved.hiredate)(new Write.Single(TypoLocalDate.put))}::date, - ${fromWrite(unsaved.salariedflag)(new Write.Single(Flag.put))}::bool, + ${fromWrite(unsaved.salariedflag)(new Write.Single(/* user-picked */ SalariedFlag.put))}::bool, ${fromWrite(unsaved.vacationhours)(new Write.Single(TypoShort.put))}::int2, ${fromWrite(unsaved.sickleavehours)(new Write.Single(TypoShort.put))}::int2, - ${fromWrite(unsaved.currentflag)(new Write.Single(Flag.put))}::bool, + ${fromWrite(unsaved.currentflag)(new Write.Single(/* user-picked */ CurrentFlag.put))}::bool, ${fromWrite(unsaved.rowguid)(new Write.Single(TypoUUID.put))}::uuid, ${fromWrite(unsaved.modifieddate)(new Write.Single(TypoLocalDateTime.put))}::timestamp, ${fromWrite(unsaved.organizationnode)(new Write.SingleOpt(Meta.StringMeta.put))} diff --git a/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/humanresources/employee/EmployeeRow.scala b/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/humanresources/employee/EmployeeRow.scala index b4b2fca2cd..46d36a9dfb 100644 --- a/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/humanresources/employee/EmployeeRow.scala +++ b/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/humanresources/employee/EmployeeRow.scala @@ -11,7 +11,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoShort import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Flag +import adventureworks.userdefined.CurrentFlag +import adventureworks.userdefined.SalariedFlag import doobie.postgres.Text import doobie.util.Read import doobie.util.Write @@ -53,7 +54,7 @@ case class EmployeeRow( /** Job classification. 0 = Hourly, not exempt from collective bargaining. 1 = Salaried, exempt from collective bargaining. * Default: true */ - salariedflag: Flag, + salariedflag: /* user-picked */ SalariedFlag, /** Number of available vacation hours. * Default: 0 * Constraint CK_Employee_VacationHours affecting columns vacationhours: (((vacationhours >= '-40'::integer) AND (vacationhours <= 240))) @@ -67,7 +68,7 @@ case class EmployeeRow( /** 0 = Inactive, 1 = Active * Default: true */ - currentflag: Flag, + currentflag: /* user-picked */ CurrentFlag, /** Default: uuid_generate_v1() */ rowguid: TypoUUID, /** Default: now() */ @@ -80,10 +81,10 @@ case class EmployeeRow( def id: BusinessentityId = businessentityid def toUnsavedRow( - salariedflag: Defaulted[Flag] = Defaulted.Provided(this.salariedflag), + salariedflag: Defaulted[/* user-picked */ SalariedFlag] = Defaulted.Provided(this.salariedflag), vacationhours: Defaulted[TypoShort] = Defaulted.Provided(this.vacationhours), sickleavehours: Defaulted[TypoShort] = Defaulted.Provided(this.sickleavehours), - currentflag: Defaulted[Flag] = Defaulted.Provided(this.currentflag), + currentflag: Defaulted[/* user-picked */ CurrentFlag] = Defaulted.Provided(this.currentflag), rowguid: Defaulted[TypoUUID] = Defaulted.Provided(this.rowguid), modifieddate: Defaulted[TypoLocalDateTime] = Defaulted.Provided(this.modifieddate), organizationnode: Defaulted[Option[String]] = Defaulted.Provided(this.organizationnode) @@ -109,9 +110,9 @@ case class EmployeeRow( } object EmployeeRow { - implicit lazy val decoder: Decoder[EmployeeRow] = Decoder.forProduct15[EmployeeRow, BusinessentityId, String, String, String, TypoLocalDate, String, String, TypoLocalDate, Flag, TypoShort, TypoShort, Flag, TypoUUID, TypoLocalDateTime, Option[String]]("businessentityid", "nationalidnumber", "loginid", "jobtitle", "birthdate", "maritalstatus", "gender", "hiredate", "salariedflag", "vacationhours", "sickleavehours", "currentflag", "rowguid", "modifieddate", "organizationnode")(EmployeeRow.apply)(BusinessentityId.decoder, Decoder.decodeString, Decoder.decodeString, Decoder.decodeString, TypoLocalDate.decoder, Decoder.decodeString, Decoder.decodeString, TypoLocalDate.decoder, Flag.decoder, TypoShort.decoder, TypoShort.decoder, Flag.decoder, TypoUUID.decoder, TypoLocalDateTime.decoder, Decoder.decodeOption(Decoder.decodeString)) + implicit lazy val decoder: Decoder[EmployeeRow] = Decoder.forProduct15[EmployeeRow, BusinessentityId, String, String, String, TypoLocalDate, String, String, TypoLocalDate, /* user-picked */ SalariedFlag, TypoShort, TypoShort, /* user-picked */ CurrentFlag, TypoUUID, TypoLocalDateTime, Option[String]]("businessentityid", "nationalidnumber", "loginid", "jobtitle", "birthdate", "maritalstatus", "gender", "hiredate", "salariedflag", "vacationhours", "sickleavehours", "currentflag", "rowguid", "modifieddate", "organizationnode")(EmployeeRow.apply)(BusinessentityId.decoder, Decoder.decodeString, Decoder.decodeString, Decoder.decodeString, TypoLocalDate.decoder, Decoder.decodeString, Decoder.decodeString, TypoLocalDate.decoder, SalariedFlag.decoder, TypoShort.decoder, TypoShort.decoder, CurrentFlag.decoder, TypoUUID.decoder, TypoLocalDateTime.decoder, Decoder.decodeOption(Decoder.decodeString)) - implicit lazy val encoder: Encoder[EmployeeRow] = Encoder.forProduct15[EmployeeRow, BusinessentityId, String, String, String, TypoLocalDate, String, String, TypoLocalDate, Flag, TypoShort, TypoShort, Flag, TypoUUID, TypoLocalDateTime, Option[String]]("businessentityid", "nationalidnumber", "loginid", "jobtitle", "birthdate", "maritalstatus", "gender", "hiredate", "salariedflag", "vacationhours", "sickleavehours", "currentflag", "rowguid", "modifieddate", "organizationnode")(x => (x.businessentityid, x.nationalidnumber, x.loginid, x.jobtitle, x.birthdate, x.maritalstatus, x.gender, x.hiredate, x.salariedflag, x.vacationhours, x.sickleavehours, x.currentflag, x.rowguid, x.modifieddate, x.organizationnode))(BusinessentityId.encoder, Encoder.encodeString, Encoder.encodeString, Encoder.encodeString, TypoLocalDate.encoder, Encoder.encodeString, Encoder.encodeString, TypoLocalDate.encoder, Flag.encoder, TypoShort.encoder, TypoShort.encoder, Flag.encoder, TypoUUID.encoder, TypoLocalDateTime.encoder, Encoder.encodeOption(Encoder.encodeString)) + implicit lazy val encoder: Encoder[EmployeeRow] = Encoder.forProduct15[EmployeeRow, BusinessentityId, String, String, String, TypoLocalDate, String, String, TypoLocalDate, /* user-picked */ SalariedFlag, TypoShort, TypoShort, /* user-picked */ CurrentFlag, TypoUUID, TypoLocalDateTime, Option[String]]("businessentityid", "nationalidnumber", "loginid", "jobtitle", "birthdate", "maritalstatus", "gender", "hiredate", "salariedflag", "vacationhours", "sickleavehours", "currentflag", "rowguid", "modifieddate", "organizationnode")(x => (x.businessentityid, x.nationalidnumber, x.loginid, x.jobtitle, x.birthdate, x.maritalstatus, x.gender, x.hiredate, x.salariedflag, x.vacationhours, x.sickleavehours, x.currentflag, x.rowguid, x.modifieddate, x.organizationnode))(BusinessentityId.encoder, Encoder.encodeString, Encoder.encodeString, Encoder.encodeString, TypoLocalDate.encoder, Encoder.encodeString, Encoder.encodeString, TypoLocalDate.encoder, SalariedFlag.encoder, TypoShort.encoder, TypoShort.encoder, CurrentFlag.encoder, TypoUUID.encoder, TypoLocalDateTime.encoder, Encoder.encodeOption(Encoder.encodeString)) implicit lazy val pgText: Text[EmployeeRow] = { Text.instance[EmployeeRow]{ (row, sb) => @@ -131,13 +132,13 @@ object EmployeeRow { sb.append(Text.DELIMETER) TypoLocalDate.pgText.unsafeEncode(row.hiredate, sb) sb.append(Text.DELIMETER) - Flag.pgText.unsafeEncode(row.salariedflag, sb) + /* user-picked */ SalariedFlag.pgText.unsafeEncode(row.salariedflag, sb) sb.append(Text.DELIMETER) TypoShort.pgText.unsafeEncode(row.vacationhours, sb) sb.append(Text.DELIMETER) TypoShort.pgText.unsafeEncode(row.sickleavehours, sb) sb.append(Text.DELIMETER) - Flag.pgText.unsafeEncode(row.currentflag, sb) + /* user-picked */ CurrentFlag.pgText.unsafeEncode(row.currentflag, sb) sb.append(Text.DELIMETER) TypoUUID.pgText.unsafeEncode(row.rowguid, sb) sb.append(Text.DELIMETER) @@ -157,10 +158,10 @@ object EmployeeRow { new Read.Single(Meta.StringMeta.get).asInstanceOf[Read[Any]], new Read.Single(Meta.StringMeta.get).asInstanceOf[Read[Any]], new Read.Single(TypoLocalDate.get).asInstanceOf[Read[Any]], - new Read.Single(Flag.get).asInstanceOf[Read[Any]], + new Read.Single(/* user-picked */ SalariedFlag.get).asInstanceOf[Read[Any]], new Read.Single(TypoShort.get).asInstanceOf[Read[Any]], new Read.Single(TypoShort.get).asInstanceOf[Read[Any]], - new Read.Single(Flag.get).asInstanceOf[Read[Any]], + new Read.Single(/* user-picked */ CurrentFlag.get).asInstanceOf[Read[Any]], new Read.Single(TypoUUID.get).asInstanceOf[Read[Any]], new Read.Single(TypoLocalDateTime.get).asInstanceOf[Read[Any]], new Read.SingleOpt(Meta.StringMeta.get).asInstanceOf[Read[Any]] @@ -174,10 +175,10 @@ object EmployeeRow { maritalstatus = arr(5).asInstanceOf[String], gender = arr(6).asInstanceOf[String], hiredate = arr(7).asInstanceOf[TypoLocalDate], - salariedflag = arr(8).asInstanceOf[Flag], + salariedflag = arr(8).asInstanceOf[/* user-picked */ SalariedFlag], vacationhours = arr(9).asInstanceOf[TypoShort], sickleavehours = arr(10).asInstanceOf[TypoShort], - currentflag = arr(11).asInstanceOf[Flag], + currentflag = arr(11).asInstanceOf[/* user-picked */ CurrentFlag], rowguid = arr(12).asInstanceOf[TypoUUID], modifieddate = arr(13).asInstanceOf[TypoLocalDateTime], organizationnode = arr(14).asInstanceOf[Option[String]] @@ -195,10 +196,10 @@ object EmployeeRow { new Write.Single(Meta.StringMeta.put), new Write.Single(Meta.StringMeta.put), new Write.Single(TypoLocalDate.put), - new Write.Single(Flag.put), + new Write.Single(/* user-picked */ SalariedFlag.put), new Write.Single(TypoShort.put), new Write.Single(TypoShort.put), - new Write.Single(Flag.put), + new Write.Single(/* user-picked */ CurrentFlag.put), new Write.Single(TypoUUID.put), new Write.Single(TypoLocalDateTime.put), new Write.Single(Meta.StringMeta.put).toOpt), diff --git a/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/humanresources/employee/EmployeeRowUnsaved.scala b/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/humanresources/employee/EmployeeRowUnsaved.scala index 633b51f68f..647a495026 100644 --- a/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/humanresources/employee/EmployeeRowUnsaved.scala +++ b/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/humanresources/employee/EmployeeRowUnsaved.scala @@ -12,7 +12,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoShort import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Flag +import adventureworks.userdefined.CurrentFlag +import adventureworks.userdefined.SalariedFlag import doobie.postgres.Text import io.circe.Decoder import io.circe.Encoder @@ -48,7 +49,7 @@ case class EmployeeRowUnsaved( /** Default: true * Job classification. 0 = Hourly, not exempt from collective bargaining. 1 = Salaried, exempt from collective bargaining. */ - salariedflag: Defaulted[Flag] = new UseDefault(), + salariedflag: Defaulted[/* user-picked */ SalariedFlag] = new UseDefault(), /** Default: 0 * Number of available vacation hours. * Constraint CK_Employee_VacationHours affecting columns vacationhours: (((vacationhours >= '-40'::integer) AND (vacationhours <= 240))) @@ -62,7 +63,7 @@ case class EmployeeRowUnsaved( /** Default: true * 0 = Inactive, 1 = Active */ - currentflag: Defaulted[Flag] = new UseDefault(), + currentflag: Defaulted[/* user-picked */ CurrentFlag] = new UseDefault(), /** Default: uuid_generate_v1() */ rowguid: Defaulted[TypoUUID] = new UseDefault(), /** Default: now() */ @@ -73,10 +74,10 @@ case class EmployeeRowUnsaved( organizationnode: Defaulted[Option[String]] = new UseDefault() ) { def toRow( - salariedflagDefault: => Flag, + salariedflagDefault: => /* user-picked */ SalariedFlag, vacationhoursDefault: => TypoShort, sickleavehoursDefault: => TypoShort, - currentflagDefault: => Flag, + currentflagDefault: => /* user-picked */ CurrentFlag, rowguidDefault: => TypoUUID, modifieddateDefault: => TypoLocalDateTime, organizationnodeDefault: => Option[String] @@ -102,9 +103,9 @@ case class EmployeeRowUnsaved( } object EmployeeRowUnsaved { - implicit lazy val decoder: Decoder[EmployeeRowUnsaved] = Decoder.forProduct15[EmployeeRowUnsaved, BusinessentityId, String, String, String, TypoLocalDate, String, String, TypoLocalDate, Defaulted[Flag], Defaulted[TypoShort], Defaulted[TypoShort], Defaulted[Flag], Defaulted[TypoUUID], Defaulted[TypoLocalDateTime], Defaulted[Option[String]]]("businessentityid", "nationalidnumber", "loginid", "jobtitle", "birthdate", "maritalstatus", "gender", "hiredate", "salariedflag", "vacationhours", "sickleavehours", "currentflag", "rowguid", "modifieddate", "organizationnode")(EmployeeRowUnsaved.apply)(BusinessentityId.decoder, Decoder.decodeString, Decoder.decodeString, Decoder.decodeString, TypoLocalDate.decoder, Decoder.decodeString, Decoder.decodeString, TypoLocalDate.decoder, Defaulted.decoder(Flag.decoder), Defaulted.decoder(TypoShort.decoder), Defaulted.decoder(TypoShort.decoder), Defaulted.decoder(Flag.decoder), Defaulted.decoder(TypoUUID.decoder), Defaulted.decoder(TypoLocalDateTime.decoder), Defaulted.decoder(Decoder.decodeOption(Decoder.decodeString))) + implicit lazy val decoder: Decoder[EmployeeRowUnsaved] = Decoder.forProduct15[EmployeeRowUnsaved, BusinessentityId, String, String, String, TypoLocalDate, String, String, TypoLocalDate, Defaulted[/* user-picked */ SalariedFlag], Defaulted[TypoShort], Defaulted[TypoShort], Defaulted[/* user-picked */ CurrentFlag], Defaulted[TypoUUID], Defaulted[TypoLocalDateTime], Defaulted[Option[String]]]("businessentityid", "nationalidnumber", "loginid", "jobtitle", "birthdate", "maritalstatus", "gender", "hiredate", "salariedflag", "vacationhours", "sickleavehours", "currentflag", "rowguid", "modifieddate", "organizationnode")(EmployeeRowUnsaved.apply)(BusinessentityId.decoder, Decoder.decodeString, Decoder.decodeString, Decoder.decodeString, TypoLocalDate.decoder, Decoder.decodeString, Decoder.decodeString, TypoLocalDate.decoder, Defaulted.decoder(SalariedFlag.decoder), Defaulted.decoder(TypoShort.decoder), Defaulted.decoder(TypoShort.decoder), Defaulted.decoder(CurrentFlag.decoder), Defaulted.decoder(TypoUUID.decoder), Defaulted.decoder(TypoLocalDateTime.decoder), Defaulted.decoder(Decoder.decodeOption(Decoder.decodeString))) - implicit lazy val encoder: Encoder[EmployeeRowUnsaved] = Encoder.forProduct15[EmployeeRowUnsaved, BusinessentityId, String, String, String, TypoLocalDate, String, String, TypoLocalDate, Defaulted[Flag], Defaulted[TypoShort], Defaulted[TypoShort], Defaulted[Flag], Defaulted[TypoUUID], Defaulted[TypoLocalDateTime], Defaulted[Option[String]]]("businessentityid", "nationalidnumber", "loginid", "jobtitle", "birthdate", "maritalstatus", "gender", "hiredate", "salariedflag", "vacationhours", "sickleavehours", "currentflag", "rowguid", "modifieddate", "organizationnode")(x => (x.businessentityid, x.nationalidnumber, x.loginid, x.jobtitle, x.birthdate, x.maritalstatus, x.gender, x.hiredate, x.salariedflag, x.vacationhours, x.sickleavehours, x.currentflag, x.rowguid, x.modifieddate, x.organizationnode))(BusinessentityId.encoder, Encoder.encodeString, Encoder.encodeString, Encoder.encodeString, TypoLocalDate.encoder, Encoder.encodeString, Encoder.encodeString, TypoLocalDate.encoder, Defaulted.encoder(Flag.encoder), Defaulted.encoder(TypoShort.encoder), Defaulted.encoder(TypoShort.encoder), Defaulted.encoder(Flag.encoder), Defaulted.encoder(TypoUUID.encoder), Defaulted.encoder(TypoLocalDateTime.encoder), Defaulted.encoder(Encoder.encodeOption(Encoder.encodeString))) + implicit lazy val encoder: Encoder[EmployeeRowUnsaved] = Encoder.forProduct15[EmployeeRowUnsaved, BusinessentityId, String, String, String, TypoLocalDate, String, String, TypoLocalDate, Defaulted[/* user-picked */ SalariedFlag], Defaulted[TypoShort], Defaulted[TypoShort], Defaulted[/* user-picked */ CurrentFlag], Defaulted[TypoUUID], Defaulted[TypoLocalDateTime], Defaulted[Option[String]]]("businessentityid", "nationalidnumber", "loginid", "jobtitle", "birthdate", "maritalstatus", "gender", "hiredate", "salariedflag", "vacationhours", "sickleavehours", "currentflag", "rowguid", "modifieddate", "organizationnode")(x => (x.businessentityid, x.nationalidnumber, x.loginid, x.jobtitle, x.birthdate, x.maritalstatus, x.gender, x.hiredate, x.salariedflag, x.vacationhours, x.sickleavehours, x.currentflag, x.rowguid, x.modifieddate, x.organizationnode))(BusinessentityId.encoder, Encoder.encodeString, Encoder.encodeString, Encoder.encodeString, TypoLocalDate.encoder, Encoder.encodeString, Encoder.encodeString, TypoLocalDate.encoder, Defaulted.encoder(SalariedFlag.encoder), Defaulted.encoder(TypoShort.encoder), Defaulted.encoder(TypoShort.encoder), Defaulted.encoder(CurrentFlag.encoder), Defaulted.encoder(TypoUUID.encoder), Defaulted.encoder(TypoLocalDateTime.encoder), Defaulted.encoder(Encoder.encodeOption(Encoder.encodeString))) implicit lazy val pgText: Text[EmployeeRowUnsaved] = { Text.instance[EmployeeRowUnsaved]{ (row, sb) => @@ -124,13 +125,13 @@ object EmployeeRowUnsaved { sb.append(Text.DELIMETER) TypoLocalDate.pgText.unsafeEncode(row.hiredate, sb) sb.append(Text.DELIMETER) - Defaulted.pgText(Flag.pgText).unsafeEncode(row.salariedflag, sb) + Defaulted.pgText(SalariedFlag.pgText).unsafeEncode(row.salariedflag, sb) sb.append(Text.DELIMETER) Defaulted.pgText(TypoShort.pgText).unsafeEncode(row.vacationhours, sb) sb.append(Text.DELIMETER) Defaulted.pgText(TypoShort.pgText).unsafeEncode(row.sickleavehours, sb) sb.append(Text.DELIMETER) - Defaulted.pgText(Flag.pgText).unsafeEncode(row.currentflag, sb) + Defaulted.pgText(CurrentFlag.pgText).unsafeEncode(row.currentflag, sb) sb.append(Text.DELIMETER) Defaulted.pgText(TypoUUID.pgText).unsafeEncode(row.rowguid, sb) sb.append(Text.DELIMETER) diff --git a/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/humanresources/vemployee/VemployeeViewFields.scala b/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/humanresources/vemployee/VemployeeViewFields.scala index 406852bac3..d0474bd83d 100644 --- a/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/humanresources/vemployee/VemployeeViewFields.scala +++ b/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/humanresources/vemployee/VemployeeViewFields.scala @@ -10,6 +10,8 @@ import adventureworks.person.businessentity.BusinessentityId import adventureworks.public.Name import adventureworks.public.Phone import adventureworks.userdefined.FirstName +import adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import typr.dsl.Path import typr.dsl.RelationStructure import typr.dsl.SqlExpr.Field @@ -19,8 +21,8 @@ trait VemployeeViewFields { def businessentityid: Field[BusinessentityId, VemployeeViewRow] def title: Field[String, VemployeeViewRow] def firstname: Field[/* user-picked */ FirstName, VemployeeViewRow] - def middlename: Field[Name, VemployeeViewRow] - def lastname: Field[Name, VemployeeViewRow] + def middlename: Field[/* user-picked */ MiddleName, VemployeeViewRow] + def lastname: Field[/* user-picked */ LastName, VemployeeViewRow] def suffix: Field[String, VemployeeViewRow] def jobtitle: Field[String, VemployeeViewRow] def phonenumber: Field[Phone, VemployeeViewRow] @@ -47,8 +49,8 @@ object VemployeeViewFields { override def businessentityid = Field[BusinessentityId, VemployeeViewRow](_path, "businessentityid", None, None, x => x.businessentityid, (row, value) => row.copy(businessentityid = value)) override def title = Field[String, VemployeeViewRow](_path, "title", None, None, x => x.title, (row, value) => row.copy(title = value)) override def firstname = Field[/* user-picked */ FirstName, VemployeeViewRow](_path, "firstname", None, None, x => x.firstname, (row, value) => row.copy(firstname = value)) - override def middlename = Field[Name, VemployeeViewRow](_path, "middlename", None, None, x => x.middlename, (row, value) => row.copy(middlename = value)) - override def lastname = Field[Name, VemployeeViewRow](_path, "lastname", None, None, x => x.lastname, (row, value) => row.copy(lastname = value)) + override def middlename = Field[/* user-picked */ MiddleName, VemployeeViewRow](_path, "middlename", None, None, x => x.middlename, (row, value) => row.copy(middlename = value)) + override def lastname = Field[/* user-picked */ LastName, VemployeeViewRow](_path, "lastname", None, None, x => x.lastname, (row, value) => row.copy(lastname = value)) override def suffix = Field[String, VemployeeViewRow](_path, "suffix", None, None, x => x.suffix, (row, value) => row.copy(suffix = value)) override def jobtitle = Field[String, VemployeeViewRow](_path, "jobtitle", None, None, x => x.jobtitle, (row, value) => row.copy(jobtitle = value)) override def phonenumber = Field[Phone, VemployeeViewRow](_path, "phonenumber", None, None, x => x.phonenumber, (row, value) => row.copy(phonenumber = value)) diff --git a/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/humanresources/vemployee/VemployeeViewRow.scala b/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/humanresources/vemployee/VemployeeViewRow.scala index 8b03e856cd..de9f9f66fc 100644 --- a/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/humanresources/vemployee/VemployeeViewRow.scala +++ b/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/humanresources/vemployee/VemployeeViewRow.scala @@ -10,6 +10,8 @@ import adventureworks.person.businessentity.BusinessentityId import adventureworks.public.Name import adventureworks.public.Phone import adventureworks.userdefined.FirstName +import adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import doobie.util.Read import doobie.util.meta.Meta import io.circe.Decoder @@ -24,9 +26,9 @@ case class VemployeeViewRow( /** Points to [[adventureworks.person.person.PersonRow.firstname]] */ firstname: /* user-picked */ FirstName, /** Points to [[adventureworks.person.person.PersonRow.middlename]] */ - middlename: Name, + middlename: /* user-picked */ MiddleName, /** Points to [[adventureworks.person.person.PersonRow.lastname]] */ - lastname: Name, + lastname: /* user-picked */ LastName, /** Points to [[adventureworks.person.person.PersonRow.suffix]] */ suffix: String, /** Points to [[adventureworks.humanresources.employee.EmployeeRow.jobtitle]] */ @@ -56,17 +58,17 @@ case class VemployeeViewRow( ) object VemployeeViewRow { - implicit lazy val decoder: Decoder[VemployeeViewRow] = Decoder.forProduct18[VemployeeViewRow, BusinessentityId, String, /* user-picked */ FirstName, Name, Name, String, String, Phone, Name, String, Int, String, String, String, Name, String, Name, TypoXml]("businessentityid", "title", "firstname", "middlename", "lastname", "suffix", "jobtitle", "phonenumber", "phonenumbertype", "emailaddress", "emailpromotion", "addressline1", "addressline2", "city", "stateprovincename", "postalcode", "countryregionname", "additionalcontactinfo")(VemployeeViewRow.apply)(BusinessentityId.decoder, Decoder.decodeString, FirstName.decoder, Name.decoder, Name.decoder, Decoder.decodeString, Decoder.decodeString, Phone.decoder, Name.decoder, Decoder.decodeString, Decoder.decodeInt, Decoder.decodeString, Decoder.decodeString, Decoder.decodeString, Name.decoder, Decoder.decodeString, Name.decoder, TypoXml.decoder) + implicit lazy val decoder: Decoder[VemployeeViewRow] = Decoder.forProduct18[VemployeeViewRow, BusinessentityId, String, /* user-picked */ FirstName, /* user-picked */ MiddleName, /* user-picked */ LastName, String, String, Phone, Name, String, Int, String, String, String, Name, String, Name, TypoXml]("businessentityid", "title", "firstname", "middlename", "lastname", "suffix", "jobtitle", "phonenumber", "phonenumbertype", "emailaddress", "emailpromotion", "addressline1", "addressline2", "city", "stateprovincename", "postalcode", "countryregionname", "additionalcontactinfo")(VemployeeViewRow.apply)(BusinessentityId.decoder, Decoder.decodeString, FirstName.decoder, MiddleName.decoder, LastName.decoder, Decoder.decodeString, Decoder.decodeString, Phone.decoder, Name.decoder, Decoder.decodeString, Decoder.decodeInt, Decoder.decodeString, Decoder.decodeString, Decoder.decodeString, Name.decoder, Decoder.decodeString, Name.decoder, TypoXml.decoder) - implicit lazy val encoder: Encoder[VemployeeViewRow] = Encoder.forProduct18[VemployeeViewRow, BusinessentityId, String, /* user-picked */ FirstName, Name, Name, String, String, Phone, Name, String, Int, String, String, String, Name, String, Name, TypoXml]("businessentityid", "title", "firstname", "middlename", "lastname", "suffix", "jobtitle", "phonenumber", "phonenumbertype", "emailaddress", "emailpromotion", "addressline1", "addressline2", "city", "stateprovincename", "postalcode", "countryregionname", "additionalcontactinfo")(x => (x.businessentityid, x.title, x.firstname, x.middlename, x.lastname, x.suffix, x.jobtitle, x.phonenumber, x.phonenumbertype, x.emailaddress, x.emailpromotion, x.addressline1, x.addressline2, x.city, x.stateprovincename, x.postalcode, x.countryregionname, x.additionalcontactinfo))(BusinessentityId.encoder, Encoder.encodeString, FirstName.encoder, Name.encoder, Name.encoder, Encoder.encodeString, Encoder.encodeString, Phone.encoder, Name.encoder, Encoder.encodeString, Encoder.encodeInt, Encoder.encodeString, Encoder.encodeString, Encoder.encodeString, Name.encoder, Encoder.encodeString, Name.encoder, TypoXml.encoder) + implicit lazy val encoder: Encoder[VemployeeViewRow] = Encoder.forProduct18[VemployeeViewRow, BusinessentityId, String, /* user-picked */ FirstName, /* user-picked */ MiddleName, /* user-picked */ LastName, String, String, Phone, Name, String, Int, String, String, String, Name, String, Name, TypoXml]("businessentityid", "title", "firstname", "middlename", "lastname", "suffix", "jobtitle", "phonenumber", "phonenumbertype", "emailaddress", "emailpromotion", "addressline1", "addressline2", "city", "stateprovincename", "postalcode", "countryregionname", "additionalcontactinfo")(x => (x.businessentityid, x.title, x.firstname, x.middlename, x.lastname, x.suffix, x.jobtitle, x.phonenumber, x.phonenumbertype, x.emailaddress, x.emailpromotion, x.addressline1, x.addressline2, x.city, x.stateprovincename, x.postalcode, x.countryregionname, x.additionalcontactinfo))(BusinessentityId.encoder, Encoder.encodeString, FirstName.encoder, MiddleName.encoder, LastName.encoder, Encoder.encodeString, Encoder.encodeString, Phone.encoder, Name.encoder, Encoder.encodeString, Encoder.encodeInt, Encoder.encodeString, Encoder.encodeString, Encoder.encodeString, Name.encoder, Encoder.encodeString, Name.encoder, TypoXml.encoder) implicit lazy val read: Read[VemployeeViewRow] = { new Read.CompositeOfInstances(Array( new Read.Single(BusinessentityId.get).asInstanceOf[Read[Any]], new Read.Single(Meta.StringMeta.get).asInstanceOf[Read[Any]], new Read.Single(/* user-picked */ FirstName.get).asInstanceOf[Read[Any]], - new Read.Single(Name.get).asInstanceOf[Read[Any]], - new Read.Single(Name.get).asInstanceOf[Read[Any]], + new Read.Single(/* user-picked */ MiddleName.get).asInstanceOf[Read[Any]], + new Read.Single(/* user-picked */ LastName.get).asInstanceOf[Read[Any]], new Read.Single(Meta.StringMeta.get).asInstanceOf[Read[Any]], new Read.Single(Meta.StringMeta.get).asInstanceOf[Read[Any]], new Read.Single(Phone.get).asInstanceOf[Read[Any]], @@ -85,8 +87,8 @@ object VemployeeViewRow { businessentityid = arr(0).asInstanceOf[BusinessentityId], title = arr(1).asInstanceOf[String], firstname = arr(2).asInstanceOf[/* user-picked */ FirstName], - middlename = arr(3).asInstanceOf[Name], - lastname = arr(4).asInstanceOf[Name], + middlename = arr(3).asInstanceOf[/* user-picked */ MiddleName], + lastname = arr(4).asInstanceOf[/* user-picked */ LastName], suffix = arr(5).asInstanceOf[String], jobtitle = arr(6).asInstanceOf[String], phonenumber = arr(7).asInstanceOf[Phone], diff --git a/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/person/person/PersonFields.scala b/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/person/person/PersonFields.scala index 27eb19af9f..6fdabb004a 100644 --- a/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/person/person/PersonFields.scala +++ b/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/person/person/PersonFields.scala @@ -11,9 +11,10 @@ import adventureworks.customtypes.TypoXml import adventureworks.person.businessentity.BusinessentityFields import adventureworks.person.businessentity.BusinessentityId import adventureworks.person.businessentity.BusinessentityRow -import adventureworks.public.Name import adventureworks.public.NameStyle import adventureworks.userdefined.FirstName +import adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import typr.dsl.ForeignKey import typr.dsl.Path import typr.dsl.RelationStructure @@ -28,8 +29,8 @@ trait PersonFields { def namestyle: Field[NameStyle, PersonRow] def title: OptField[/* max 8 chars */ String, PersonRow] def firstname: Field[/* user-picked */ FirstName, PersonRow] - def middlename: OptField[Name, PersonRow] - def lastname: Field[Name, PersonRow] + def middlename: OptField[/* user-picked */ MiddleName, PersonRow] + def lastname: Field[/* user-picked */ LastName, PersonRow] def suffix: OptField[/* max 10 chars */ String, PersonRow] def emailpromotion: Field[Int, PersonRow] def additionalcontactinfo: OptField[TypoXml, PersonRow] @@ -54,8 +55,8 @@ object PersonFields { override def namestyle = Field[NameStyle, PersonRow](_path, "namestyle", None, Some("bool"), x => x.namestyle, (row, value) => row.copy(namestyle = value)) override def title = OptField[/* max 8 chars */ String, PersonRow](_path, "title", None, None, x => x.title, (row, value) => row.copy(title = value)) override def firstname = Field[/* user-picked */ FirstName, PersonRow](_path, "firstname", None, Some("varchar"), x => x.firstname, (row, value) => row.copy(firstname = value)) - override def middlename = OptField[Name, PersonRow](_path, "middlename", None, Some("varchar"), x => x.middlename, (row, value) => row.copy(middlename = value)) - override def lastname = Field[Name, PersonRow](_path, "lastname", None, Some("varchar"), x => x.lastname, (row, value) => row.copy(lastname = value)) + override def middlename = OptField[/* user-picked */ MiddleName, PersonRow](_path, "middlename", None, Some("varchar"), x => x.middlename, (row, value) => row.copy(middlename = value)) + override def lastname = Field[/* user-picked */ LastName, PersonRow](_path, "lastname", None, Some("varchar"), x => x.lastname, (row, value) => row.copy(lastname = value)) override def suffix = OptField[/* max 10 chars */ String, PersonRow](_path, "suffix", None, None, x => x.suffix, (row, value) => row.copy(suffix = value)) override def emailpromotion = Field[Int, PersonRow](_path, "emailpromotion", None, Some("int4"), x => x.emailpromotion, (row, value) => row.copy(emailpromotion = value)) override def additionalcontactinfo = OptField[TypoXml, PersonRow](_path, "additionalcontactinfo", None, Some("xml"), x => x.additionalcontactinfo, (row, value) => row.copy(additionalcontactinfo = value)) diff --git a/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/person/person/PersonRepoImpl.scala b/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/person/person/PersonRepoImpl.scala index 7064552c80..fa4012ce0f 100644 --- a/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/person/person/PersonRepoImpl.scala +++ b/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/person/person/PersonRepoImpl.scala @@ -10,9 +10,10 @@ 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 adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import cats.instances.list.catsStdInstancesForList import doobie.free.connection.ConnectionIO import doobie.postgres.syntax.FragmentOps @@ -36,7 +37,7 @@ class PersonRepoImpl extends PersonRepo { 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") - values (${fromWrite(unsaved.businessentityid)(new Write.Single(BusinessentityId.put))}::int4, ${fromWrite(unsaved.persontype)(new Write.Single(Meta.StringMeta.put))}::bpchar, ${fromWrite(unsaved.namestyle)(new Write.Single(NameStyle.put))}::bool, ${fromWrite(unsaved.title)(new Write.SingleOpt(Meta.StringMeta.put))}, ${fromWrite(unsaved.firstname)(new Write.Single(/* user-picked */ FirstName.put))}::varchar, ${fromWrite(unsaved.middlename)(new Write.SingleOpt(Name.put))}::varchar, ${fromWrite(unsaved.lastname)(new Write.Single(Name.put))}::varchar, ${fromWrite(unsaved.suffix)(new Write.SingleOpt(Meta.StringMeta.put))}, ${fromWrite(unsaved.emailpromotion)(new Write.Single(Meta.IntMeta.put))}::int4, ${fromWrite(unsaved.additionalcontactinfo)(new Write.SingleOpt(TypoXml.put))}::xml, ${fromWrite(unsaved.demographics)(new Write.SingleOpt(TypoXml.put))}::xml, ${fromWrite(unsaved.rowguid)(new Write.Single(TypoUUID.put))}::uuid, ${fromWrite(unsaved.modifieddate)(new Write.Single(TypoLocalDateTime.put))}::timestamp) + values (${fromWrite(unsaved.businessentityid)(new Write.Single(BusinessentityId.put))}::int4, ${fromWrite(unsaved.persontype)(new Write.Single(Meta.StringMeta.put))}::bpchar, ${fromWrite(unsaved.namestyle)(new Write.Single(NameStyle.put))}::bool, ${fromWrite(unsaved.title)(new Write.SingleOpt(Meta.StringMeta.put))}, ${fromWrite(unsaved.firstname)(new Write.Single(/* user-picked */ FirstName.put))}::varchar, ${fromWrite(unsaved.middlename)(new Write.SingleOpt(/* user-picked */ MiddleName.put))}::varchar, ${fromWrite(unsaved.lastname)(new Write.Single(/* user-picked */ LastName.put))}::varchar, ${fromWrite(unsaved.suffix)(new Write.SingleOpt(Meta.StringMeta.put))}, ${fromWrite(unsaved.emailpromotion)(new Write.Single(Meta.IntMeta.put))}::int4, ${fromWrite(unsaved.additionalcontactinfo)(new Write.SingleOpt(TypoXml.put))}::xml, ${fromWrite(unsaved.demographics)(new Write.SingleOpt(TypoXml.put))}::xml, ${fromWrite(unsaved.rowguid)(new Write.Single(TypoUUID.put))}::uuid, ${fromWrite(unsaved.modifieddate)(new Write.Single(TypoLocalDateTime.put))}::timestamp) returning "businessentityid", "persontype", "namestyle", "title", "firstname", "middlename", "lastname", "suffix", "emailpromotion", "additionalcontactinfo", "demographics", "rowguid", "modifieddate"::text """.query(PersonRow.read).unique } @@ -47,8 +48,8 @@ class PersonRepoImpl extends PersonRepo { Some((Fragment.const0(s""""persontype""""), fr"${fromWrite(unsaved.persontype)(new Write.Single(Meta.StringMeta.put))}::bpchar")), Some((Fragment.const0(s""""title""""), fr"${fromWrite(unsaved.title)(new Write.SingleOpt(Meta.StringMeta.put))}")), Some((Fragment.const0(s""""firstname""""), fr"${fromWrite(unsaved.firstname)(new Write.Single(/* user-picked */ FirstName.put))}::varchar")), - Some((Fragment.const0(s""""middlename""""), fr"${fromWrite(unsaved.middlename)(new Write.SingleOpt(Name.put))}::varchar")), - Some((Fragment.const0(s""""lastname""""), fr"${fromWrite(unsaved.lastname)(new Write.Single(Name.put))}::varchar")), + Some((Fragment.const0(s""""middlename""""), fr"${fromWrite(unsaved.middlename)(new Write.SingleOpt(/* user-picked */ MiddleName.put))}::varchar")), + Some((Fragment.const0(s""""lastname""""), fr"${fromWrite(unsaved.lastname)(new Write.Single(/* user-picked */ LastName.put))}::varchar")), Some((Fragment.const0(s""""suffix""""), fr"${fromWrite(unsaved.suffix)(new Write.SingleOpt(Meta.StringMeta.put))}")), Some((Fragment.const0(s""""additionalcontactinfo""""), fr"${fromWrite(unsaved.additionalcontactinfo)(new Write.SingleOpt(TypoXml.put))}::xml")), Some((Fragment.const0(s""""demographics""""), fr"${fromWrite(unsaved.demographics)(new Write.SingleOpt(TypoXml.put))}::xml")), @@ -118,8 +119,8 @@ class PersonRepoImpl extends PersonRepo { "namestyle" = ${fromWrite(row.namestyle)(new Write.Single(NameStyle.put))}::bool, "title" = ${fromWrite(row.title)(new Write.SingleOpt(Meta.StringMeta.put))}, "firstname" = ${fromWrite(row.firstname)(new Write.Single(/* user-picked */ FirstName.put))}::varchar, - "middlename" = ${fromWrite(row.middlename)(new Write.SingleOpt(Name.put))}::varchar, - "lastname" = ${fromWrite(row.lastname)(new Write.Single(Name.put))}::varchar, + "middlename" = ${fromWrite(row.middlename)(new Write.SingleOpt(/* user-picked */ MiddleName.put))}::varchar, + "lastname" = ${fromWrite(row.lastname)(new Write.Single(/* user-picked */ LastName.put))}::varchar, "suffix" = ${fromWrite(row.suffix)(new Write.SingleOpt(Meta.StringMeta.put))}, "emailpromotion" = ${fromWrite(row.emailpromotion)(new Write.Single(Meta.IntMeta.put))}::int4, "additionalcontactinfo" = ${fromWrite(row.additionalcontactinfo)(new Write.SingleOpt(TypoXml.put))}::xml, @@ -138,8 +139,8 @@ class PersonRepoImpl extends PersonRepo { ${fromWrite(unsaved.namestyle)(new Write.Single(NameStyle.put))}::bool, ${fromWrite(unsaved.title)(new Write.SingleOpt(Meta.StringMeta.put))}, ${fromWrite(unsaved.firstname)(new Write.Single(/* user-picked */ FirstName.put))}::varchar, - ${fromWrite(unsaved.middlename)(new Write.SingleOpt(Name.put))}::varchar, - ${fromWrite(unsaved.lastname)(new Write.Single(Name.put))}::varchar, + ${fromWrite(unsaved.middlename)(new Write.SingleOpt(/* user-picked */ MiddleName.put))}::varchar, + ${fromWrite(unsaved.lastname)(new Write.Single(/* user-picked */ LastName.put))}::varchar, ${fromWrite(unsaved.suffix)(new Write.SingleOpt(Meta.StringMeta.put))}, ${fromWrite(unsaved.emailpromotion)(new Write.Single(Meta.IntMeta.put))}::int4, ${fromWrite(unsaved.additionalcontactinfo)(new Write.SingleOpt(TypoXml.put))}::xml, diff --git a/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/person/person/PersonRow.scala b/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/person/person/PersonRow.scala index d3145b7f32..f2d4ac22d2 100644 --- a/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/person/person/PersonRow.scala +++ b/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/person/person/PersonRow.scala @@ -10,9 +10,10 @@ 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 adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import doobie.postgres.Text import doobie.util.Read import doobie.util.Write @@ -42,9 +43,9 @@ case class PersonRow( /** First name of the person. */ firstname: /* user-picked */ FirstName, /** Middle name or middle initial of the person. */ - middlename: Option[Name], + middlename: Option[/* user-picked */ MiddleName], /** Last name of the person. */ - lastname: Name, + lastname: /* user-picked */ LastName, /** Surname suffix. For example, Sr. or Jr. */ suffix: Option[/* max 10 chars */ String], /** 0 = Contact does not wish to receive e-mail promotions, 1 = Contact does wish to receive e-mail promotions from AdventureWorks, 2 = Contact does wish to receive e-mail promotions from AdventureWorks and selected partners. @@ -88,9 +89,9 @@ case class PersonRow( } object PersonRow { - implicit lazy val decoder: Decoder[PersonRow] = Decoder.forProduct13[PersonRow, BusinessentityId, String, NameStyle, Option[/* max 8 chars */ String], /* user-picked */ FirstName, Option[Name], Name, Option[/* max 10 chars */ String], Int, Option[TypoXml], Option[TypoXml], TypoUUID, TypoLocalDateTime]("businessentityid", "persontype", "namestyle", "title", "firstname", "middlename", "lastname", "suffix", "emailpromotion", "additionalcontactinfo", "demographics", "rowguid", "modifieddate")(PersonRow.apply)(BusinessentityId.decoder, Decoder.decodeString, NameStyle.decoder, Decoder.decodeOption(Decoder.decodeString), FirstName.decoder, Decoder.decodeOption(Name.decoder), Name.decoder, Decoder.decodeOption(Decoder.decodeString), Decoder.decodeInt, Decoder.decodeOption(TypoXml.decoder), Decoder.decodeOption(TypoXml.decoder), TypoUUID.decoder, TypoLocalDateTime.decoder) + implicit lazy val decoder: Decoder[PersonRow] = Decoder.forProduct13[PersonRow, BusinessentityId, String, NameStyle, Option[/* max 8 chars */ String], /* user-picked */ FirstName, Option[/* user-picked */ MiddleName], /* user-picked */ LastName, Option[/* max 10 chars */ String], Int, Option[TypoXml], Option[TypoXml], TypoUUID, TypoLocalDateTime]("businessentityid", "persontype", "namestyle", "title", "firstname", "middlename", "lastname", "suffix", "emailpromotion", "additionalcontactinfo", "demographics", "rowguid", "modifieddate")(PersonRow.apply)(BusinessentityId.decoder, Decoder.decodeString, NameStyle.decoder, Decoder.decodeOption(Decoder.decodeString), FirstName.decoder, Decoder.decodeOption(MiddleName.decoder), LastName.decoder, Decoder.decodeOption(Decoder.decodeString), Decoder.decodeInt, Decoder.decodeOption(TypoXml.decoder), Decoder.decodeOption(TypoXml.decoder), TypoUUID.decoder, TypoLocalDateTime.decoder) - implicit lazy val encoder: Encoder[PersonRow] = Encoder.forProduct13[PersonRow, BusinessentityId, String, NameStyle, Option[/* max 8 chars */ String], /* user-picked */ FirstName, Option[Name], Name, Option[/* max 10 chars */ String], Int, Option[TypoXml], Option[TypoXml], TypoUUID, TypoLocalDateTime]("businessentityid", "persontype", "namestyle", "title", "firstname", "middlename", "lastname", "suffix", "emailpromotion", "additionalcontactinfo", "demographics", "rowguid", "modifieddate")(x => (x.businessentityid, x.persontype, x.namestyle, x.title, x.firstname, x.middlename, x.lastname, x.suffix, x.emailpromotion, x.additionalcontactinfo, x.demographics, x.rowguid, x.modifieddate))(BusinessentityId.encoder, Encoder.encodeString, NameStyle.encoder, Encoder.encodeOption(Encoder.encodeString), FirstName.encoder, Encoder.encodeOption(Name.encoder), Name.encoder, Encoder.encodeOption(Encoder.encodeString), Encoder.encodeInt, Encoder.encodeOption(TypoXml.encoder), Encoder.encodeOption(TypoXml.encoder), TypoUUID.encoder, TypoLocalDateTime.encoder) + implicit lazy val encoder: Encoder[PersonRow] = Encoder.forProduct13[PersonRow, BusinessentityId, String, NameStyle, Option[/* max 8 chars */ String], /* user-picked */ FirstName, Option[/* user-picked */ MiddleName], /* user-picked */ LastName, Option[/* max 10 chars */ String], Int, Option[TypoXml], Option[TypoXml], TypoUUID, TypoLocalDateTime]("businessentityid", "persontype", "namestyle", "title", "firstname", "middlename", "lastname", "suffix", "emailpromotion", "additionalcontactinfo", "demographics", "rowguid", "modifieddate")(x => (x.businessentityid, x.persontype, x.namestyle, x.title, x.firstname, x.middlename, x.lastname, x.suffix, x.emailpromotion, x.additionalcontactinfo, x.demographics, x.rowguid, x.modifieddate))(BusinessentityId.encoder, Encoder.encodeString, NameStyle.encoder, Encoder.encodeOption(Encoder.encodeString), FirstName.encoder, Encoder.encodeOption(MiddleName.encoder), LastName.encoder, Encoder.encodeOption(Encoder.encodeString), Encoder.encodeInt, Encoder.encodeOption(TypoXml.encoder), Encoder.encodeOption(TypoXml.encoder), TypoUUID.encoder, TypoLocalDateTime.encoder) implicit lazy val pgText: Text[PersonRow] = { Text.instance[PersonRow]{ (row, sb) => @@ -104,9 +105,9 @@ object PersonRow { sb.append(Text.DELIMETER) /* user-picked */ FirstName.pgText.unsafeEncode(row.firstname, sb) sb.append(Text.DELIMETER) - Text.option(Name.pgText).unsafeEncode(row.middlename, sb) + Text.option(MiddleName.pgText).unsafeEncode(row.middlename, sb) sb.append(Text.DELIMETER) - Name.pgText.unsafeEncode(row.lastname, sb) + /* user-picked */ LastName.pgText.unsafeEncode(row.lastname, sb) sb.append(Text.DELIMETER) Text.option(Text.stringInstance).unsafeEncode(row.suffix, sb) sb.append(Text.DELIMETER) @@ -129,8 +130,8 @@ object PersonRow { new Read.Single(NameStyle.get).asInstanceOf[Read[Any]], new Read.SingleOpt(Meta.StringMeta.get).asInstanceOf[Read[Any]], new Read.Single(/* user-picked */ FirstName.get).asInstanceOf[Read[Any]], - new Read.SingleOpt(Name.get).asInstanceOf[Read[Any]], - new Read.Single(Name.get).asInstanceOf[Read[Any]], + new Read.SingleOpt(/* user-picked */ MiddleName.get).asInstanceOf[Read[Any]], + new Read.Single(/* user-picked */ LastName.get).asInstanceOf[Read[Any]], new Read.SingleOpt(Meta.StringMeta.get).asInstanceOf[Read[Any]], new Read.Single(Meta.IntMeta.get).asInstanceOf[Read[Any]], new Read.SingleOpt(TypoXml.get).asInstanceOf[Read[Any]], @@ -144,8 +145,8 @@ object PersonRow { namestyle = arr(2).asInstanceOf[NameStyle], title = arr(3).asInstanceOf[Option[/* max 8 chars */ String]], firstname = arr(4).asInstanceOf[/* user-picked */ FirstName], - middlename = arr(5).asInstanceOf[Option[Name]], - lastname = arr(6).asInstanceOf[Name], + middlename = arr(5).asInstanceOf[Option[/* user-picked */ MiddleName]], + lastname = arr(6).asInstanceOf[/* user-picked */ LastName], suffix = arr(7).asInstanceOf[Option[/* max 10 chars */ String]], emailpromotion = arr(8).asInstanceOf[Int], additionalcontactinfo = arr(9).asInstanceOf[Option[TypoXml]], @@ -163,8 +164,8 @@ object PersonRow { new Write.Single(NameStyle.put), new Write.Single(Meta.StringMeta.put).toOpt, new Write.Single(/* user-picked */ FirstName.put), - new Write.Single(Name.put).toOpt, - new Write.Single(Name.put), + new Write.Single(/* user-picked */ MiddleName.put).toOpt, + new Write.Single(/* user-picked */ LastName.put), new Write.Single(Meta.StringMeta.put).toOpt, new Write.Single(Meta.IntMeta.put), new Write.Single(TypoXml.put).toOpt, diff --git a/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/person/person/PersonRowUnsaved.scala b/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/person/person/PersonRowUnsaved.scala index 4369e61054..0536c45940 100644 --- a/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/person/person/PersonRowUnsaved.scala +++ b/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/person/person/PersonRowUnsaved.scala @@ -11,9 +11,10 @@ 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 adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import doobie.postgres.Text import io.circe.Decoder import io.circe.Encoder @@ -33,9 +34,9 @@ case class PersonRowUnsaved( /** First name of the person. */ firstname: /* user-picked */ FirstName, /** Middle name or middle initial of the person. */ - middlename: Option[Name] = None, + middlename: Option[/* user-picked */ MiddleName] = None, /** Last name of the person. */ - lastname: Name, + lastname: /* user-picked */ LastName, /** Surname suffix. For example, Sr. or Jr. */ suffix: Option[/* max 10 chars */ String] = None, /** Additional contact information about the person stored in xml format. */ @@ -81,9 +82,9 @@ case class PersonRowUnsaved( } object PersonRowUnsaved { - implicit lazy val decoder: Decoder[PersonRowUnsaved] = Decoder.forProduct13[PersonRowUnsaved, BusinessentityId, String, Option[/* max 8 chars */ String], /* user-picked */ FirstName, Option[Name], Name, Option[/* max 10 chars */ String], Option[TypoXml], Option[TypoXml], Defaulted[NameStyle], Defaulted[Int], Defaulted[TypoUUID], Defaulted[TypoLocalDateTime]]("businessentityid", "persontype", "title", "firstname", "middlename", "lastname", "suffix", "additionalcontactinfo", "demographics", "namestyle", "emailpromotion", "rowguid", "modifieddate")(PersonRowUnsaved.apply)(BusinessentityId.decoder, Decoder.decodeString, Decoder.decodeOption(Decoder.decodeString), FirstName.decoder, Decoder.decodeOption(Name.decoder), Name.decoder, Decoder.decodeOption(Decoder.decodeString), Decoder.decodeOption(TypoXml.decoder), Decoder.decodeOption(TypoXml.decoder), Defaulted.decoder(NameStyle.decoder), Defaulted.decoder(Decoder.decodeInt), Defaulted.decoder(TypoUUID.decoder), Defaulted.decoder(TypoLocalDateTime.decoder)) + implicit lazy val decoder: Decoder[PersonRowUnsaved] = Decoder.forProduct13[PersonRowUnsaved, BusinessentityId, String, Option[/* max 8 chars */ String], /* user-picked */ FirstName, Option[/* user-picked */ MiddleName], /* user-picked */ LastName, Option[/* max 10 chars */ String], Option[TypoXml], Option[TypoXml], Defaulted[NameStyle], Defaulted[Int], Defaulted[TypoUUID], Defaulted[TypoLocalDateTime]]("businessentityid", "persontype", "title", "firstname", "middlename", "lastname", "suffix", "additionalcontactinfo", "demographics", "namestyle", "emailpromotion", "rowguid", "modifieddate")(PersonRowUnsaved.apply)(BusinessentityId.decoder, Decoder.decodeString, Decoder.decodeOption(Decoder.decodeString), FirstName.decoder, Decoder.decodeOption(MiddleName.decoder), LastName.decoder, Decoder.decodeOption(Decoder.decodeString), Decoder.decodeOption(TypoXml.decoder), Decoder.decodeOption(TypoXml.decoder), Defaulted.decoder(NameStyle.decoder), Defaulted.decoder(Decoder.decodeInt), Defaulted.decoder(TypoUUID.decoder), Defaulted.decoder(TypoLocalDateTime.decoder)) - implicit lazy val encoder: Encoder[PersonRowUnsaved] = Encoder.forProduct13[PersonRowUnsaved, BusinessentityId, String, Option[/* max 8 chars */ String], /* user-picked */ FirstName, Option[Name], Name, Option[/* max 10 chars */ String], Option[TypoXml], Option[TypoXml], Defaulted[NameStyle], Defaulted[Int], Defaulted[TypoUUID], Defaulted[TypoLocalDateTime]]("businessentityid", "persontype", "title", "firstname", "middlename", "lastname", "suffix", "additionalcontactinfo", "demographics", "namestyle", "emailpromotion", "rowguid", "modifieddate")(x => (x.businessentityid, x.persontype, x.title, x.firstname, x.middlename, x.lastname, x.suffix, x.additionalcontactinfo, x.demographics, x.namestyle, x.emailpromotion, x.rowguid, x.modifieddate))(BusinessentityId.encoder, Encoder.encodeString, Encoder.encodeOption(Encoder.encodeString), FirstName.encoder, Encoder.encodeOption(Name.encoder), Name.encoder, Encoder.encodeOption(Encoder.encodeString), Encoder.encodeOption(TypoXml.encoder), Encoder.encodeOption(TypoXml.encoder), Defaulted.encoder(NameStyle.encoder), Defaulted.encoder(Encoder.encodeInt), Defaulted.encoder(TypoUUID.encoder), Defaulted.encoder(TypoLocalDateTime.encoder)) + implicit lazy val encoder: Encoder[PersonRowUnsaved] = Encoder.forProduct13[PersonRowUnsaved, BusinessentityId, String, Option[/* max 8 chars */ String], /* user-picked */ FirstName, Option[/* user-picked */ MiddleName], /* user-picked */ LastName, Option[/* max 10 chars */ String], Option[TypoXml], Option[TypoXml], Defaulted[NameStyle], Defaulted[Int], Defaulted[TypoUUID], Defaulted[TypoLocalDateTime]]("businessentityid", "persontype", "title", "firstname", "middlename", "lastname", "suffix", "additionalcontactinfo", "demographics", "namestyle", "emailpromotion", "rowguid", "modifieddate")(x => (x.businessentityid, x.persontype, x.title, x.firstname, x.middlename, x.lastname, x.suffix, x.additionalcontactinfo, x.demographics, x.namestyle, x.emailpromotion, x.rowguid, x.modifieddate))(BusinessentityId.encoder, Encoder.encodeString, Encoder.encodeOption(Encoder.encodeString), FirstName.encoder, Encoder.encodeOption(MiddleName.encoder), LastName.encoder, Encoder.encodeOption(Encoder.encodeString), Encoder.encodeOption(TypoXml.encoder), Encoder.encodeOption(TypoXml.encoder), Defaulted.encoder(NameStyle.encoder), Defaulted.encoder(Encoder.encodeInt), Defaulted.encoder(TypoUUID.encoder), Defaulted.encoder(TypoLocalDateTime.encoder)) implicit lazy val pgText: Text[PersonRowUnsaved] = { Text.instance[PersonRowUnsaved]{ (row, sb) => @@ -95,9 +96,9 @@ object PersonRowUnsaved { sb.append(Text.DELIMETER) /* user-picked */ FirstName.pgText.unsafeEncode(row.firstname, sb) sb.append(Text.DELIMETER) - Text.option(Name.pgText).unsafeEncode(row.middlename, sb) + Text.option(MiddleName.pgText).unsafeEncode(row.middlename, sb) sb.append(Text.DELIMETER) - Name.pgText.unsafeEncode(row.lastname, sb) + /* user-picked */ LastName.pgText.unsafeEncode(row.lastname, sb) sb.append(Text.DELIMETER) Text.option(Text.stringInstance).unsafeEncode(row.suffix, sb) sb.append(Text.DELIMETER) diff --git a/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/person_detail/PersonDetailSqlRow.scala b/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/person_detail/PersonDetailSqlRow.scala index 90c1bccfc4..b9cb25c41c 100644 --- a/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/person_detail/PersonDetailSqlRow.scala +++ b/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/person_detail/PersonDetailSqlRow.scala @@ -7,8 +7,9 @@ package adventureworks.person_detail import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Name import adventureworks.userdefined.FirstName +import adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import doobie.util.Read import doobie.util.meta.Meta import io.circe.Decoder @@ -23,9 +24,9 @@ case class PersonDetailSqlRow( /** Points to [[adventureworks.person.person.PersonRow.firstname]] */ firstname: /* user-picked */ FirstName, /** Points to [[adventureworks.person.person.PersonRow.middlename]] */ - middlename: Option[Name], + middlename: Option[/* user-picked */ MiddleName], /** Points to [[adventureworks.person.person.PersonRow.lastname]] */ - lastname: Name, + lastname: /* user-picked */ LastName, /** Points to [[adventureworks.humanresources.employee.EmployeeRow.jobtitle]] */ jobtitle: String, /** Points to [[adventureworks.person.address.AddressRow.addressline1]] */ @@ -39,17 +40,17 @@ case class PersonDetailSqlRow( ) object PersonDetailSqlRow { - implicit lazy val decoder: Decoder[PersonDetailSqlRow] = Decoder.forProduct10[PersonDetailSqlRow, BusinessentityId, Option[/* max 8 chars */ String], /* user-picked */ FirstName, Option[Name], Name, String, Option[String], Option[String], Option[String], Option[TypoUUID]]("businessentityid", "title", "firstname", "middlename", "lastname", "jobtitle", "addressline1", "city", "postalcode", "rowguid")(PersonDetailSqlRow.apply)(BusinessentityId.decoder, Decoder.decodeOption(Decoder.decodeString), FirstName.decoder, Decoder.decodeOption(Name.decoder), Name.decoder, Decoder.decodeString, Decoder.decodeOption(Decoder.decodeString), Decoder.decodeOption(Decoder.decodeString), Decoder.decodeOption(Decoder.decodeString), Decoder.decodeOption(TypoUUID.decoder)) + implicit lazy val decoder: Decoder[PersonDetailSqlRow] = Decoder.forProduct10[PersonDetailSqlRow, BusinessentityId, Option[/* max 8 chars */ String], /* user-picked */ FirstName, Option[/* user-picked */ MiddleName], /* user-picked */ LastName, String, Option[String], Option[String], Option[String], Option[TypoUUID]]("businessentityid", "title", "firstname", "middlename", "lastname", "jobtitle", "addressline1", "city", "postalcode", "rowguid")(PersonDetailSqlRow.apply)(BusinessentityId.decoder, Decoder.decodeOption(Decoder.decodeString), FirstName.decoder, Decoder.decodeOption(MiddleName.decoder), LastName.decoder, Decoder.decodeString, Decoder.decodeOption(Decoder.decodeString), Decoder.decodeOption(Decoder.decodeString), Decoder.decodeOption(Decoder.decodeString), Decoder.decodeOption(TypoUUID.decoder)) - implicit lazy val encoder: Encoder[PersonDetailSqlRow] = Encoder.forProduct10[PersonDetailSqlRow, BusinessentityId, Option[/* max 8 chars */ String], /* user-picked */ FirstName, Option[Name], Name, String, Option[String], Option[String], Option[String], Option[TypoUUID]]("businessentityid", "title", "firstname", "middlename", "lastname", "jobtitle", "addressline1", "city", "postalcode", "rowguid")(x => (x.businessentityid, x.title, x.firstname, x.middlename, x.lastname, x.jobtitle, x.addressline1, x.city, x.postalcode, x.rowguid))(BusinessentityId.encoder, Encoder.encodeOption(Encoder.encodeString), FirstName.encoder, Encoder.encodeOption(Name.encoder), Name.encoder, Encoder.encodeString, Encoder.encodeOption(Encoder.encodeString), Encoder.encodeOption(Encoder.encodeString), Encoder.encodeOption(Encoder.encodeString), Encoder.encodeOption(TypoUUID.encoder)) + implicit lazy val encoder: Encoder[PersonDetailSqlRow] = Encoder.forProduct10[PersonDetailSqlRow, BusinessentityId, Option[/* max 8 chars */ String], /* user-picked */ FirstName, Option[/* user-picked */ MiddleName], /* user-picked */ LastName, String, Option[String], Option[String], Option[String], Option[TypoUUID]]("businessentityid", "title", "firstname", "middlename", "lastname", "jobtitle", "addressline1", "city", "postalcode", "rowguid")(x => (x.businessentityid, x.title, x.firstname, x.middlename, x.lastname, x.jobtitle, x.addressline1, x.city, x.postalcode, x.rowguid))(BusinessentityId.encoder, Encoder.encodeOption(Encoder.encodeString), FirstName.encoder, Encoder.encodeOption(MiddleName.encoder), LastName.encoder, Encoder.encodeString, Encoder.encodeOption(Encoder.encodeString), Encoder.encodeOption(Encoder.encodeString), Encoder.encodeOption(Encoder.encodeString), Encoder.encodeOption(TypoUUID.encoder)) implicit lazy val read: Read[PersonDetailSqlRow] = { new Read.CompositeOfInstances(Array( new Read.Single(BusinessentityId.get).asInstanceOf[Read[Any]], new Read.SingleOpt(Meta.StringMeta.get).asInstanceOf[Read[Any]], new Read.Single(/* user-picked */ FirstName.get).asInstanceOf[Read[Any]], - new Read.SingleOpt(Name.get).asInstanceOf[Read[Any]], - new Read.Single(Name.get).asInstanceOf[Read[Any]], + new Read.SingleOpt(/* user-picked */ MiddleName.get).asInstanceOf[Read[Any]], + new Read.Single(/* user-picked */ LastName.get).asInstanceOf[Read[Any]], new Read.Single(Meta.StringMeta.get).asInstanceOf[Read[Any]], new Read.SingleOpt(Meta.StringMeta.get).asInstanceOf[Read[Any]], new Read.SingleOpt(Meta.StringMeta.get).asInstanceOf[Read[Any]], @@ -60,8 +61,8 @@ object PersonDetailSqlRow { businessentityid = arr(0).asInstanceOf[BusinessentityId], title = arr(1).asInstanceOf[Option[/* max 8 chars */ String]], firstname = arr(2).asInstanceOf[/* user-picked */ FirstName], - middlename = arr(3).asInstanceOf[Option[Name]], - lastname = arr(4).asInstanceOf[Name], + middlename = arr(3).asInstanceOf[Option[/* user-picked */ MiddleName]], + lastname = arr(4).asInstanceOf[/* user-picked */ LastName], jobtitle = arr(5).asInstanceOf[String], addressline1 = arr(6).asInstanceOf[Option[String]], city = arr(7).asInstanceOf[Option[String]], diff --git a/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/person_dynamic/PersonDynamicSqlRow.scala b/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/person_dynamic/PersonDynamicSqlRow.scala index 305d57805b..fe45526d31 100644 --- a/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/person_dynamic/PersonDynamicSqlRow.scala +++ b/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/person_dynamic/PersonDynamicSqlRow.scala @@ -5,8 +5,9 @@ */ package adventureworks.person_dynamic -import adventureworks.public.Name import adventureworks.userdefined.FirstName +import adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import doobie.util.Read import doobie.util.meta.Meta import io.circe.Decoder @@ -19,28 +20,28 @@ case class PersonDynamicSqlRow( /** Points to [[adventureworks.person.person.PersonRow.firstname]] */ firstname: /* user-picked */ FirstName, /** Points to [[adventureworks.person.person.PersonRow.middlename]] */ - middlename: Option[Name], + middlename: Option[/* user-picked */ MiddleName], /** Points to [[adventureworks.person.person.PersonRow.lastname]] */ - lastname: Name + lastname: /* user-picked */ LastName ) object PersonDynamicSqlRow { - implicit lazy val decoder: Decoder[PersonDynamicSqlRow] = Decoder.forProduct4[PersonDynamicSqlRow, Option[/* max 8 chars */ String], /* user-picked */ FirstName, Option[Name], Name]("title", "firstname", "middlename", "lastname")(PersonDynamicSqlRow.apply)(Decoder.decodeOption(Decoder.decodeString), FirstName.decoder, Decoder.decodeOption(Name.decoder), Name.decoder) + implicit lazy val decoder: Decoder[PersonDynamicSqlRow] = Decoder.forProduct4[PersonDynamicSqlRow, Option[/* max 8 chars */ String], /* user-picked */ FirstName, Option[/* user-picked */ MiddleName], /* user-picked */ LastName]("title", "firstname", "middlename", "lastname")(PersonDynamicSqlRow.apply)(Decoder.decodeOption(Decoder.decodeString), FirstName.decoder, Decoder.decodeOption(MiddleName.decoder), LastName.decoder) - implicit lazy val encoder: Encoder[PersonDynamicSqlRow] = Encoder.forProduct4[PersonDynamicSqlRow, Option[/* max 8 chars */ String], /* user-picked */ FirstName, Option[Name], Name]("title", "firstname", "middlename", "lastname")(x => (x.title, x.firstname, x.middlename, x.lastname))(Encoder.encodeOption(Encoder.encodeString), FirstName.encoder, Encoder.encodeOption(Name.encoder), Name.encoder) + implicit lazy val encoder: Encoder[PersonDynamicSqlRow] = Encoder.forProduct4[PersonDynamicSqlRow, Option[/* max 8 chars */ String], /* user-picked */ FirstName, Option[/* user-picked */ MiddleName], /* user-picked */ LastName]("title", "firstname", "middlename", "lastname")(x => (x.title, x.firstname, x.middlename, x.lastname))(Encoder.encodeOption(Encoder.encodeString), FirstName.encoder, Encoder.encodeOption(MiddleName.encoder), LastName.encoder) implicit lazy val read: Read[PersonDynamicSqlRow] = { new Read.CompositeOfInstances(Array( new Read.SingleOpt(Meta.StringMeta.get).asInstanceOf[Read[Any]], new Read.Single(/* user-picked */ FirstName.get).asInstanceOf[Read[Any]], - new Read.SingleOpt(Name.get).asInstanceOf[Read[Any]], - new Read.Single(Name.get).asInstanceOf[Read[Any]] + new Read.SingleOpt(/* user-picked */ MiddleName.get).asInstanceOf[Read[Any]], + new Read.Single(/* user-picked */ LastName.get).asInstanceOf[Read[Any]] ))(scala.reflect.ClassTag.Any).map { arr => PersonDynamicSqlRow( title = arr(0).asInstanceOf[Option[/* max 8 chars */ String]], firstname = arr(1).asInstanceOf[/* user-picked */ FirstName], - middlename = arr(2).asInstanceOf[Option[Name]], - lastname = arr(3).asInstanceOf[Name] + middlename = arr(2).asInstanceOf[Option[/* user-picked */ MiddleName]], + lastname = arr(3).asInstanceOf[/* user-picked */ LastName] ) } } diff --git a/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/userdefined/ActiveFlag.scala b/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/userdefined/ActiveFlag.scala new file mode 100644 index 0000000000..bd40e494d5 --- /dev/null +++ b/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/userdefined/ActiveFlag.scala @@ -0,0 +1,42 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined + +import adventureworks.public.Flag +import doobie.postgres.Text +import doobie.util.Get +import doobie.util.Put +import io.circe.Decoder +import io.circe.Encoder +import typr.dsl.Bijection + +/** Shared type `ActiveFlag` + * Generated from TypeDefinitions matching + */ +case class ActiveFlag(value: Flag) extends scala.AnyVal + +object ActiveFlag { + implicit lazy val arrayGet: Get[Array[ActiveFlag]] = Flag.arrayGet.map(_.map(ActiveFlag.apply)) + + implicit lazy val arrayPut: Put[Array[ActiveFlag]] = Flag.arrayPut.contramap(_.map(_.value)) + + implicit lazy val bijection: Bijection[ActiveFlag, Flag] = Bijection.apply[ActiveFlag, Flag](_.value)(ActiveFlag.apply) + + implicit lazy val decoder: Decoder[ActiveFlag] = Flag.decoder.map(ActiveFlag.apply) + + implicit lazy val encoder: Encoder[ActiveFlag] = Flag.encoder.contramap(_.value) + + implicit lazy val get: Get[ActiveFlag] = Flag.get.map(ActiveFlag.apply) + + implicit lazy val pgText: Text[ActiveFlag] = { + new Text[ActiveFlag] { + override def unsafeEncode(v: ActiveFlag, sb: StringBuilder): Unit = Flag.pgText.unsafeEncode(v.value, sb) + override def unsafeArrayEncode(v: ActiveFlag, sb: StringBuilder): Unit = Flag.pgText.unsafeArrayEncode(v.value, sb) + } + } + + implicit lazy val put: Put[ActiveFlag] = Flag.put.contramap(_.value) +} \ No newline at end of file diff --git a/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/userdefined/CurrentFlag.scala b/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/userdefined/CurrentFlag.scala new file mode 100644 index 0000000000..9b2ed8cbeb --- /dev/null +++ b/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/userdefined/CurrentFlag.scala @@ -0,0 +1,42 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined + +import adventureworks.public.Flag +import doobie.postgres.Text +import doobie.util.Get +import doobie.util.Put +import io.circe.Decoder +import io.circe.Encoder +import typr.dsl.Bijection + +/** Shared type `CurrentFlag` + * Generated from TypeDefinitions matching + */ +case class CurrentFlag(value: Flag) extends scala.AnyVal + +object CurrentFlag { + implicit lazy val arrayGet: Get[Array[CurrentFlag]] = Flag.arrayGet.map(_.map(CurrentFlag.apply)) + + implicit lazy val arrayPut: Put[Array[CurrentFlag]] = Flag.arrayPut.contramap(_.map(_.value)) + + implicit lazy val bijection: Bijection[CurrentFlag, Flag] = Bijection.apply[CurrentFlag, Flag](_.value)(CurrentFlag.apply) + + implicit lazy val decoder: Decoder[CurrentFlag] = Flag.decoder.map(CurrentFlag.apply) + + implicit lazy val encoder: Encoder[CurrentFlag] = Flag.encoder.contramap(_.value) + + implicit lazy val get: Get[CurrentFlag] = Flag.get.map(CurrentFlag.apply) + + implicit lazy val pgText: Text[CurrentFlag] = { + new Text[CurrentFlag] { + override def unsafeEncode(v: CurrentFlag, sb: StringBuilder): Unit = Flag.pgText.unsafeEncode(v.value, sb) + override def unsafeArrayEncode(v: CurrentFlag, sb: StringBuilder): Unit = Flag.pgText.unsafeArrayEncode(v.value, sb) + } + } + + implicit lazy val put: Put[CurrentFlag] = Flag.put.contramap(_.value) +} \ No newline at end of file diff --git a/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/userdefined/FirstName.scala b/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/userdefined/FirstName.scala new file mode 100644 index 0000000000..2c86074a02 --- /dev/null +++ b/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/userdefined/FirstName.scala @@ -0,0 +1,42 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined + +import adventureworks.public.Name +import doobie.postgres.Text +import doobie.util.Get +import doobie.util.Put +import io.circe.Decoder +import io.circe.Encoder +import typr.dsl.Bijection + +/** Shared type `FirstName` + * Generated from TypeDefinitions matching + */ +case class FirstName(value: Name) extends scala.AnyVal + +object FirstName { + implicit lazy val arrayGet: Get[Array[FirstName]] = Name.arrayGet.map(_.map(FirstName.apply)) + + implicit lazy val arrayPut: Put[Array[FirstName]] = Name.arrayPut.contramap(_.map(_.value)) + + implicit lazy val bijection: Bijection[FirstName, Name] = Bijection.apply[FirstName, Name](_.value)(FirstName.apply) + + implicit lazy val decoder: Decoder[FirstName] = Name.decoder.map(FirstName.apply) + + implicit lazy val encoder: Encoder[FirstName] = Name.encoder.contramap(_.value) + + implicit lazy val get: Get[FirstName] = Name.get.map(FirstName.apply) + + implicit lazy val pgText: Text[FirstName] = { + new Text[FirstName] { + override def unsafeEncode(v: FirstName, sb: StringBuilder): Unit = Name.pgText.unsafeEncode(v.value, sb) + override def unsafeArrayEncode(v: FirstName, sb: StringBuilder): Unit = Name.pgText.unsafeArrayEncode(v.value, sb) + } + } + + implicit lazy val put: Put[FirstName] = Name.put.contramap(_.value) +} \ No newline at end of file diff --git a/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/userdefined/LastName.scala b/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/userdefined/LastName.scala new file mode 100644 index 0000000000..e86dc0e742 --- /dev/null +++ b/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/userdefined/LastName.scala @@ -0,0 +1,42 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined + +import adventureworks.public.Name +import doobie.postgres.Text +import doobie.util.Get +import doobie.util.Put +import io.circe.Decoder +import io.circe.Encoder +import typr.dsl.Bijection + +/** Shared type `LastName` + * Generated from TypeDefinitions matching + */ +case class LastName(value: Name) extends scala.AnyVal + +object LastName { + implicit lazy val arrayGet: Get[Array[LastName]] = Name.arrayGet.map(_.map(LastName.apply)) + + implicit lazy val arrayPut: Put[Array[LastName]] = Name.arrayPut.contramap(_.map(_.value)) + + implicit lazy val bijection: Bijection[LastName, Name] = Bijection.apply[LastName, Name](_.value)(LastName.apply) + + implicit lazy val decoder: Decoder[LastName] = Name.decoder.map(LastName.apply) + + implicit lazy val encoder: Encoder[LastName] = Name.encoder.contramap(_.value) + + implicit lazy val get: Get[LastName] = Name.get.map(LastName.apply) + + implicit lazy val pgText: Text[LastName] = { + new Text[LastName] { + override def unsafeEncode(v: LastName, sb: StringBuilder): Unit = Name.pgText.unsafeEncode(v.value, sb) + override def unsafeArrayEncode(v: LastName, sb: StringBuilder): Unit = Name.pgText.unsafeArrayEncode(v.value, sb) + } + } + + implicit lazy val put: Put[LastName] = Name.put.contramap(_.value) +} \ No newline at end of file diff --git a/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/userdefined/MiddleName.scala b/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/userdefined/MiddleName.scala new file mode 100644 index 0000000000..dcf1bd263f --- /dev/null +++ b/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/userdefined/MiddleName.scala @@ -0,0 +1,42 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined + +import adventureworks.public.Name +import doobie.postgres.Text +import doobie.util.Get +import doobie.util.Put +import io.circe.Decoder +import io.circe.Encoder +import typr.dsl.Bijection + +/** Shared type `MiddleName` + * Generated from TypeDefinitions matching + */ +case class MiddleName(value: Name) extends scala.AnyVal + +object MiddleName { + implicit lazy val arrayGet: Get[Array[MiddleName]] = Name.arrayGet.map(_.map(MiddleName.apply)) + + implicit lazy val arrayPut: Put[Array[MiddleName]] = Name.arrayPut.contramap(_.map(_.value)) + + implicit lazy val bijection: Bijection[MiddleName, Name] = Bijection.apply[MiddleName, Name](_.value)(MiddleName.apply) + + implicit lazy val decoder: Decoder[MiddleName] = Name.decoder.map(MiddleName.apply) + + implicit lazy val encoder: Encoder[MiddleName] = Name.encoder.contramap(_.value) + + implicit lazy val get: Get[MiddleName] = Name.get.map(MiddleName.apply) + + implicit lazy val pgText: Text[MiddleName] = { + new Text[MiddleName] { + override def unsafeEncode(v: MiddleName, sb: StringBuilder): Unit = Name.pgText.unsafeEncode(v.value, sb) + override def unsafeArrayEncode(v: MiddleName, sb: StringBuilder): Unit = Name.pgText.unsafeArrayEncode(v.value, sb) + } + } + + implicit lazy val put: Put[MiddleName] = Name.put.contramap(_.value) +} \ No newline at end of file diff --git a/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/userdefined/OnlineOrderFlag.scala b/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/userdefined/OnlineOrderFlag.scala new file mode 100644 index 0000000000..a0ec45e4b1 --- /dev/null +++ b/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/userdefined/OnlineOrderFlag.scala @@ -0,0 +1,42 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined + +import adventureworks.public.Flag +import doobie.postgres.Text +import doobie.util.Get +import doobie.util.Put +import io.circe.Decoder +import io.circe.Encoder +import typr.dsl.Bijection + +/** Shared type `OnlineOrderFlag` + * Generated from TypeDefinitions matching + */ +case class OnlineOrderFlag(value: Flag) extends scala.AnyVal + +object OnlineOrderFlag { + implicit lazy val arrayGet: Get[Array[OnlineOrderFlag]] = Flag.arrayGet.map(_.map(OnlineOrderFlag.apply)) + + implicit lazy val arrayPut: Put[Array[OnlineOrderFlag]] = Flag.arrayPut.contramap(_.map(_.value)) + + implicit lazy val bijection: Bijection[OnlineOrderFlag, Flag] = Bijection.apply[OnlineOrderFlag, Flag](_.value)(OnlineOrderFlag.apply) + + implicit lazy val decoder: Decoder[OnlineOrderFlag] = Flag.decoder.map(OnlineOrderFlag.apply) + + implicit lazy val encoder: Encoder[OnlineOrderFlag] = Flag.encoder.contramap(_.value) + + implicit lazy val get: Get[OnlineOrderFlag] = Flag.get.map(OnlineOrderFlag.apply) + + implicit lazy val pgText: Text[OnlineOrderFlag] = { + new Text[OnlineOrderFlag] { + override def unsafeEncode(v: OnlineOrderFlag, sb: StringBuilder): Unit = Flag.pgText.unsafeEncode(v.value, sb) + override def unsafeArrayEncode(v: OnlineOrderFlag, sb: StringBuilder): Unit = Flag.pgText.unsafeArrayEncode(v.value, sb) + } + } + + implicit lazy val put: Put[OnlineOrderFlag] = Flag.put.contramap(_.value) +} \ No newline at end of file diff --git a/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/userdefined/SalariedFlag.scala b/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/userdefined/SalariedFlag.scala new file mode 100644 index 0000000000..a082535dab --- /dev/null +++ b/testers/pg/scala/doobie/generated-and-checked-in-2.13/adventureworks/userdefined/SalariedFlag.scala @@ -0,0 +1,42 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined + +import adventureworks.public.Flag +import doobie.postgres.Text +import doobie.util.Get +import doobie.util.Put +import io.circe.Decoder +import io.circe.Encoder +import typr.dsl.Bijection + +/** Shared type `SalariedFlag` + * Generated from TypeDefinitions matching + */ +case class SalariedFlag(value: Flag) extends scala.AnyVal + +object SalariedFlag { + implicit lazy val arrayGet: Get[Array[SalariedFlag]] = Flag.arrayGet.map(_.map(SalariedFlag.apply)) + + implicit lazy val arrayPut: Put[Array[SalariedFlag]] = Flag.arrayPut.contramap(_.map(_.value)) + + implicit lazy val bijection: Bijection[SalariedFlag, Flag] = Bijection.apply[SalariedFlag, Flag](_.value)(SalariedFlag.apply) + + implicit lazy val decoder: Decoder[SalariedFlag] = Flag.decoder.map(SalariedFlag.apply) + + implicit lazy val encoder: Encoder[SalariedFlag] = Flag.encoder.contramap(_.value) + + implicit lazy val get: Get[SalariedFlag] = Flag.get.map(SalariedFlag.apply) + + implicit lazy val pgText: Text[SalariedFlag] = { + new Text[SalariedFlag] { + override def unsafeEncode(v: SalariedFlag, sb: StringBuilder): Unit = Flag.pgText.unsafeEncode(v.value, sb) + override def unsafeArrayEncode(v: SalariedFlag, sb: StringBuilder): Unit = Flag.pgText.unsafeArrayEncode(v.value, sb) + } + } + + implicit lazy val put: Put[SalariedFlag] = Flag.put.contramap(_.value) +} \ No newline at end of file diff --git a/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/TestInsert.scala b/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/TestInsert.scala index 14a38e176c..c029beb0f5 100644 --- a/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/TestInsert.scala +++ b/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/TestInsert.scala @@ -151,7 +151,11 @@ import adventureworks.sales.salesterritory.SalesterritoryId import adventureworks.sales.salesterritory.SalesterritoryRepoImpl import adventureworks.sales.salesterritory.SalesterritoryRow import adventureworks.sales.salesterritory.SalesterritoryRowUnsaved +import adventureworks.userdefined.CurrentFlag import adventureworks.userdefined.FirstName +import adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName +import adventureworks.userdefined.SalariedFlag import doobie.free.connection.ConnectionIO import java.time.Instant import java.time.LocalDate @@ -181,10 +185,10 @@ case class TestInsert( nationalidnumber: String = random.alphanumeric.take(15).mkString, loginid: String = random.alphanumeric.take(20).mkString, jobtitle: String = random.alphanumeric.take(20).mkString, - salariedflag: Defaulted[Flag] = new UseDefault(), + salariedflag: Defaulted[/* user-picked */ SalariedFlag] = new UseDefault(), vacationhours: Defaulted[TypoShort] = new UseDefault(), sickleavehours: Defaulted[TypoShort] = new UseDefault(), - currentflag: Defaulted[Flag] = new UseDefault(), + currentflag: Defaulted[/* user-picked */ CurrentFlag] = new UseDefault(), rowguid: Defaulted[TypoUUID] = new UseDefault(), modifieddate: Defaulted[TypoLocalDateTime] = new UseDefault(), organizationnode: Defaulted[Option[String]] = new UseDefault() @@ -265,10 +269,10 @@ case class TestInsert( def personPerson( businessentityid: BusinessentityId, persontype: String, - firstname: /* user-picked */ FirstName, title: Option[/* max 8 chars */ String] = (if (random.nextBoolean()) None else Some(random.alphanumeric.take(8).mkString)), - middlename: Option[Name] = (if (random.nextBoolean()) None else Some(domainInsert.publicName(random))), - lastname: Name = domainInsert.publicName(random), + firstname: /* user-picked */ FirstName = new FirstName(domainInsert.publicName(random)), + middlename: Option[/* user-picked */ MiddleName] = (if (random.nextBoolean()) None else Some(new MiddleName(domainInsert.publicName(random)))), + lastname: /* user-picked */ LastName = new LastName(domainInsert.publicName(random)), suffix: Option[/* max 10 chars */ String] = (if (random.nextBoolean()) None else Some(random.alphanumeric.take(10).mkString)), additionalcontactinfo: Option[TypoXml] = None, demographics: Option[TypoXml] = None, diff --git a/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/humanresources/employee/EmployeeFields.scala b/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/humanresources/employee/EmployeeFields.scala index 1c559fa0dd..c4ad1a140a 100644 --- a/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/humanresources/employee/EmployeeFields.scala +++ b/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/humanresources/employee/EmployeeFields.scala @@ -12,7 +12,8 @@ import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId import adventureworks.person.person.PersonFields import adventureworks.person.person.PersonRow -import adventureworks.public.Flag +import adventureworks.userdefined.CurrentFlag +import adventureworks.userdefined.SalariedFlag import typr.dsl.ForeignKey import typr.dsl.Path import typr.dsl.RelationStructure @@ -30,10 +31,10 @@ trait EmployeeFields { def maritalstatus: Field[String, EmployeeRow] def gender: Field[String, EmployeeRow] def hiredate: Field[TypoLocalDate, EmployeeRow] - def salariedflag: Field[Flag, EmployeeRow] + def salariedflag: Field[/* user-picked */ SalariedFlag, EmployeeRow] def vacationhours: Field[TypoShort, EmployeeRow] def sickleavehours: Field[TypoShort, EmployeeRow] - def currentflag: Field[Flag, EmployeeRow] + def currentflag: Field[/* user-picked */ CurrentFlag, EmployeeRow] def rowguid: Field[TypoUUID, EmployeeRow] def modifieddate: Field[TypoLocalDateTime, EmployeeRow] def organizationnode: OptField[String, EmployeeRow] @@ -58,10 +59,10 @@ object EmployeeFields { override def maritalstatus = Field[String, EmployeeRow](_path, "maritalstatus", None, Some("bpchar"), x => x.maritalstatus, (row, value) => row.copy(maritalstatus = value)) override def gender = Field[String, EmployeeRow](_path, "gender", None, Some("bpchar"), x => x.gender, (row, value) => row.copy(gender = value)) override def hiredate = Field[TypoLocalDate, EmployeeRow](_path, "hiredate", Some("text"), Some("date"), x => x.hiredate, (row, value) => row.copy(hiredate = value)) - override def salariedflag = Field[Flag, EmployeeRow](_path, "salariedflag", None, Some("bool"), x => x.salariedflag, (row, value) => row.copy(salariedflag = value)) + override def salariedflag = Field[/* user-picked */ SalariedFlag, EmployeeRow](_path, "salariedflag", None, Some("bool"), x => x.salariedflag, (row, value) => row.copy(salariedflag = value)) override def vacationhours = Field[TypoShort, EmployeeRow](_path, "vacationhours", None, Some("int2"), x => x.vacationhours, (row, value) => row.copy(vacationhours = value)) override def sickleavehours = Field[TypoShort, EmployeeRow](_path, "sickleavehours", None, Some("int2"), x => x.sickleavehours, (row, value) => row.copy(sickleavehours = value)) - override def currentflag = Field[Flag, EmployeeRow](_path, "currentflag", None, Some("bool"), x => x.currentflag, (row, value) => row.copy(currentflag = value)) + override def currentflag = Field[/* user-picked */ CurrentFlag, EmployeeRow](_path, "currentflag", None, Some("bool"), x => x.currentflag, (row, value) => row.copy(currentflag = value)) override def rowguid = Field[TypoUUID, EmployeeRow](_path, "rowguid", None, Some("uuid"), x => x.rowguid, (row, value) => row.copy(rowguid = value)) override def modifieddate = Field[TypoLocalDateTime, EmployeeRow](_path, "modifieddate", Some("text"), Some("timestamp"), x => x.modifieddate, (row, value) => row.copy(modifieddate = value)) override def organizationnode = OptField[String, EmployeeRow](_path, "organizationnode", None, None, x => x.organizationnode, (row, value) => row.copy(organizationnode = value)) diff --git a/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/humanresources/employee/EmployeeRepoImpl.scala b/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/humanresources/employee/EmployeeRepoImpl.scala index 4a169eb62b..9566c90f40 100644 --- a/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/humanresources/employee/EmployeeRepoImpl.scala +++ b/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/humanresources/employee/EmployeeRepoImpl.scala @@ -11,7 +11,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoShort import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Flag +import adventureworks.userdefined.CurrentFlag +import adventureworks.userdefined.SalariedFlag import cats.instances.list.catsStdInstancesForList import doobie.free.connection.ConnectionIO import doobie.postgres.syntax.FragmentOps @@ -35,7 +36,7 @@ class EmployeeRepoImpl extends EmployeeRepo { 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") - values (${fromWrite(unsaved.businessentityid)(using new Write.Single(BusinessentityId.put))}::int4, ${fromWrite(unsaved.nationalidnumber)(using new Write.Single(Meta.StringMeta.put))}, ${fromWrite(unsaved.loginid)(using new Write.Single(Meta.StringMeta.put))}, ${fromWrite(unsaved.jobtitle)(using new Write.Single(Meta.StringMeta.put))}, ${fromWrite(unsaved.birthdate)(using new Write.Single(TypoLocalDate.put))}::date, ${fromWrite(unsaved.maritalstatus)(using new Write.Single(Meta.StringMeta.put))}::bpchar, ${fromWrite(unsaved.gender)(using new Write.Single(Meta.StringMeta.put))}::bpchar, ${fromWrite(unsaved.hiredate)(using new Write.Single(TypoLocalDate.put))}::date, ${fromWrite(unsaved.salariedflag)(using new Write.Single(Flag.put))}::bool, ${fromWrite(unsaved.vacationhours)(using new Write.Single(TypoShort.put))}::int2, ${fromWrite(unsaved.sickleavehours)(using new Write.Single(TypoShort.put))}::int2, ${fromWrite(unsaved.currentflag)(using new Write.Single(Flag.put))}::bool, ${fromWrite(unsaved.rowguid)(using new Write.Single(TypoUUID.put))}::uuid, ${fromWrite(unsaved.modifieddate)(using new Write.Single(TypoLocalDateTime.put))}::timestamp, ${fromWrite(unsaved.organizationnode)(using new Write.SingleOpt(Meta.StringMeta.put))}) + values (${fromWrite(unsaved.businessentityid)(using new Write.Single(BusinessentityId.put))}::int4, ${fromWrite(unsaved.nationalidnumber)(using new Write.Single(Meta.StringMeta.put))}, ${fromWrite(unsaved.loginid)(using new Write.Single(Meta.StringMeta.put))}, ${fromWrite(unsaved.jobtitle)(using new Write.Single(Meta.StringMeta.put))}, ${fromWrite(unsaved.birthdate)(using new Write.Single(TypoLocalDate.put))}::date, ${fromWrite(unsaved.maritalstatus)(using new Write.Single(Meta.StringMeta.put))}::bpchar, ${fromWrite(unsaved.gender)(using new Write.Single(Meta.StringMeta.put))}::bpchar, ${fromWrite(unsaved.hiredate)(using new Write.Single(TypoLocalDate.put))}::date, ${fromWrite(unsaved.salariedflag)(using new Write.Single(/* user-picked */ SalariedFlag.put))}::bool, ${fromWrite(unsaved.vacationhours)(using new Write.Single(TypoShort.put))}::int2, ${fromWrite(unsaved.sickleavehours)(using new Write.Single(TypoShort.put))}::int2, ${fromWrite(unsaved.currentflag)(using new Write.Single(/* user-picked */ CurrentFlag.put))}::bool, ${fromWrite(unsaved.rowguid)(using new Write.Single(TypoUUID.put))}::uuid, ${fromWrite(unsaved.modifieddate)(using new Write.Single(TypoLocalDateTime.put))}::timestamp, ${fromWrite(unsaved.organizationnode)(using new Write.SingleOpt(Meta.StringMeta.put))}) returning "businessentityid", "nationalidnumber", "loginid", "jobtitle", "birthdate"::text, "maritalstatus", "gender", "hiredate"::text, "salariedflag", "vacationhours", "sickleavehours", "currentflag", "rowguid", "modifieddate"::text, "organizationnode" """.query(using EmployeeRow.read).unique } @@ -52,7 +53,7 @@ class EmployeeRepoImpl extends EmployeeRepo { Some((Fragment.const0(s""""hiredate""""), fr"${fromWrite(unsaved.hiredate)(using new Write.Single(TypoLocalDate.put))}::date")), unsaved.salariedflag match { case Defaulted.UseDefault() => None - case Defaulted.Provided(value) => Some((Fragment.const0(s""""salariedflag""""), fr"${fromWrite(value: Flag)(using new Write.Single(Flag.put))}::bool")) + case Defaulted.Provided(value) => Some((Fragment.const0(s""""salariedflag""""), fr"${fromWrite(value: /* user-picked */ SalariedFlag)(using new Write.Single(/* user-picked */ SalariedFlag.put))}::bool")) }, unsaved.vacationhours match { case Defaulted.UseDefault() => None @@ -64,7 +65,7 @@ class EmployeeRepoImpl extends EmployeeRepo { }, unsaved.currentflag match { case Defaulted.UseDefault() => None - case Defaulted.Provided(value) => Some((Fragment.const0(s""""currentflag""""), fr"${fromWrite(value: Flag)(using new Write.Single(Flag.put))}::bool")) + case Defaulted.Provided(value) => Some((Fragment.const0(s""""currentflag""""), fr"${fromWrite(value: /* user-picked */ CurrentFlag)(using new Write.Single(/* user-picked */ CurrentFlag.put))}::bool")) }, unsaved.rowguid match { case Defaulted.UseDefault() => None @@ -131,10 +132,10 @@ class EmployeeRepoImpl extends EmployeeRepo { "maritalstatus" = ${fromWrite(row.maritalstatus)(using new Write.Single(Meta.StringMeta.put))}::bpchar, "gender" = ${fromWrite(row.gender)(using new Write.Single(Meta.StringMeta.put))}::bpchar, "hiredate" = ${fromWrite(row.hiredate)(using new Write.Single(TypoLocalDate.put))}::date, - "salariedflag" = ${fromWrite(row.salariedflag)(using new Write.Single(Flag.put))}::bool, + "salariedflag" = ${fromWrite(row.salariedflag)(using new Write.Single(/* user-picked */ SalariedFlag.put))}::bool, "vacationhours" = ${fromWrite(row.vacationhours)(using new Write.Single(TypoShort.put))}::int2, "sickleavehours" = ${fromWrite(row.sickleavehours)(using new Write.Single(TypoShort.put))}::int2, - "currentflag" = ${fromWrite(row.currentflag)(using new Write.Single(Flag.put))}::bool, + "currentflag" = ${fromWrite(row.currentflag)(using new Write.Single(/* user-picked */ CurrentFlag.put))}::bool, "rowguid" = ${fromWrite(row.rowguid)(using new Write.Single(TypoUUID.put))}::uuid, "modifieddate" = ${fromWrite(row.modifieddate)(using new Write.Single(TypoLocalDateTime.put))}::timestamp, "organizationnode" = ${fromWrite(row.organizationnode)(using new Write.SingleOpt(Meta.StringMeta.put))} @@ -153,10 +154,10 @@ class EmployeeRepoImpl extends EmployeeRepo { ${fromWrite(unsaved.maritalstatus)(using new Write.Single(Meta.StringMeta.put))}::bpchar, ${fromWrite(unsaved.gender)(using new Write.Single(Meta.StringMeta.put))}::bpchar, ${fromWrite(unsaved.hiredate)(using new Write.Single(TypoLocalDate.put))}::date, - ${fromWrite(unsaved.salariedflag)(using new Write.Single(Flag.put))}::bool, + ${fromWrite(unsaved.salariedflag)(using new Write.Single(/* user-picked */ SalariedFlag.put))}::bool, ${fromWrite(unsaved.vacationhours)(using new Write.Single(TypoShort.put))}::int2, ${fromWrite(unsaved.sickleavehours)(using new Write.Single(TypoShort.put))}::int2, - ${fromWrite(unsaved.currentflag)(using new Write.Single(Flag.put))}::bool, + ${fromWrite(unsaved.currentflag)(using new Write.Single(/* user-picked */ CurrentFlag.put))}::bool, ${fromWrite(unsaved.rowguid)(using new Write.Single(TypoUUID.put))}::uuid, ${fromWrite(unsaved.modifieddate)(using new Write.Single(TypoLocalDateTime.put))}::timestamp, ${fromWrite(unsaved.organizationnode)(using new Write.SingleOpt(Meta.StringMeta.put))} diff --git a/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/humanresources/employee/EmployeeRow.scala b/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/humanresources/employee/EmployeeRow.scala index 7d10ba0275..c129f89df9 100644 --- a/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/humanresources/employee/EmployeeRow.scala +++ b/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/humanresources/employee/EmployeeRow.scala @@ -11,7 +11,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoShort import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Flag +import adventureworks.userdefined.CurrentFlag +import adventureworks.userdefined.SalariedFlag import doobie.postgres.Text import doobie.util.Read import doobie.util.Write @@ -53,7 +54,7 @@ case class EmployeeRow( /** Job classification. 0 = Hourly, not exempt from collective bargaining. 1 = Salaried, exempt from collective bargaining. * Default: true */ - salariedflag: Flag, + salariedflag: /* user-picked */ SalariedFlag, /** Number of available vacation hours. * Default: 0 * Constraint CK_Employee_VacationHours affecting columns vacationhours: (((vacationhours >= '-40'::integer) AND (vacationhours <= 240))) @@ -67,7 +68,7 @@ case class EmployeeRow( /** 0 = Inactive, 1 = Active * Default: true */ - currentflag: Flag, + currentflag: /* user-picked */ CurrentFlag, /** Default: uuid_generate_v1() */ rowguid: TypoUUID, /** Default: now() */ @@ -80,10 +81,10 @@ case class EmployeeRow( def id: BusinessentityId = businessentityid def toUnsavedRow( - salariedflag: Defaulted[Flag] = Defaulted.Provided(this.salariedflag), + salariedflag: Defaulted[/* user-picked */ SalariedFlag] = Defaulted.Provided(this.salariedflag), vacationhours: Defaulted[TypoShort] = Defaulted.Provided(this.vacationhours), sickleavehours: Defaulted[TypoShort] = Defaulted.Provided(this.sickleavehours), - currentflag: Defaulted[Flag] = Defaulted.Provided(this.currentflag), + currentflag: Defaulted[/* user-picked */ CurrentFlag] = Defaulted.Provided(this.currentflag), rowguid: Defaulted[TypoUUID] = Defaulted.Provided(this.rowguid), modifieddate: Defaulted[TypoLocalDateTime] = Defaulted.Provided(this.modifieddate), organizationnode: Defaulted[Option[String]] = Defaulted.Provided(this.organizationnode) @@ -109,9 +110,9 @@ case class EmployeeRow( } object EmployeeRow { - given decoder: Decoder[EmployeeRow] = Decoder.forProduct15[EmployeeRow, BusinessentityId, String, String, String, TypoLocalDate, String, String, TypoLocalDate, Flag, TypoShort, TypoShort, Flag, TypoUUID, TypoLocalDateTime, Option[String]]("businessentityid", "nationalidnumber", "loginid", "jobtitle", "birthdate", "maritalstatus", "gender", "hiredate", "salariedflag", "vacationhours", "sickleavehours", "currentflag", "rowguid", "modifieddate", "organizationnode")(EmployeeRow.apply)(using BusinessentityId.decoder, Decoder.decodeString, Decoder.decodeString, Decoder.decodeString, TypoLocalDate.decoder, Decoder.decodeString, Decoder.decodeString, TypoLocalDate.decoder, Flag.decoder, TypoShort.decoder, TypoShort.decoder, Flag.decoder, TypoUUID.decoder, TypoLocalDateTime.decoder, Decoder.decodeOption(using Decoder.decodeString)) + given decoder: Decoder[EmployeeRow] = Decoder.forProduct15[EmployeeRow, BusinessentityId, String, String, String, TypoLocalDate, String, String, TypoLocalDate, /* user-picked */ SalariedFlag, TypoShort, TypoShort, /* user-picked */ CurrentFlag, TypoUUID, TypoLocalDateTime, Option[String]]("businessentityid", "nationalidnumber", "loginid", "jobtitle", "birthdate", "maritalstatus", "gender", "hiredate", "salariedflag", "vacationhours", "sickleavehours", "currentflag", "rowguid", "modifieddate", "organizationnode")(EmployeeRow.apply)(using BusinessentityId.decoder, Decoder.decodeString, Decoder.decodeString, Decoder.decodeString, TypoLocalDate.decoder, Decoder.decodeString, Decoder.decodeString, TypoLocalDate.decoder, SalariedFlag.decoder, TypoShort.decoder, TypoShort.decoder, CurrentFlag.decoder, TypoUUID.decoder, TypoLocalDateTime.decoder, Decoder.decodeOption(using Decoder.decodeString)) - given encoder: Encoder[EmployeeRow] = Encoder.forProduct15[EmployeeRow, BusinessentityId, String, String, String, TypoLocalDate, String, String, TypoLocalDate, Flag, TypoShort, TypoShort, Flag, TypoUUID, TypoLocalDateTime, Option[String]]("businessentityid", "nationalidnumber", "loginid", "jobtitle", "birthdate", "maritalstatus", "gender", "hiredate", "salariedflag", "vacationhours", "sickleavehours", "currentflag", "rowguid", "modifieddate", "organizationnode")(x => (x.businessentityid, x.nationalidnumber, x.loginid, x.jobtitle, x.birthdate, x.maritalstatus, x.gender, x.hiredate, x.salariedflag, x.vacationhours, x.sickleavehours, x.currentflag, x.rowguid, x.modifieddate, x.organizationnode))(using BusinessentityId.encoder, Encoder.encodeString, Encoder.encodeString, Encoder.encodeString, TypoLocalDate.encoder, Encoder.encodeString, Encoder.encodeString, TypoLocalDate.encoder, Flag.encoder, TypoShort.encoder, TypoShort.encoder, Flag.encoder, TypoUUID.encoder, TypoLocalDateTime.encoder, Encoder.encodeOption(using Encoder.encodeString)) + given encoder: Encoder[EmployeeRow] = Encoder.forProduct15[EmployeeRow, BusinessentityId, String, String, String, TypoLocalDate, String, String, TypoLocalDate, /* user-picked */ SalariedFlag, TypoShort, TypoShort, /* user-picked */ CurrentFlag, TypoUUID, TypoLocalDateTime, Option[String]]("businessentityid", "nationalidnumber", "loginid", "jobtitle", "birthdate", "maritalstatus", "gender", "hiredate", "salariedflag", "vacationhours", "sickleavehours", "currentflag", "rowguid", "modifieddate", "organizationnode")(x => (x.businessentityid, x.nationalidnumber, x.loginid, x.jobtitle, x.birthdate, x.maritalstatus, x.gender, x.hiredate, x.salariedflag, x.vacationhours, x.sickleavehours, x.currentflag, x.rowguid, x.modifieddate, x.organizationnode))(using BusinessentityId.encoder, Encoder.encodeString, Encoder.encodeString, Encoder.encodeString, TypoLocalDate.encoder, Encoder.encodeString, Encoder.encodeString, TypoLocalDate.encoder, SalariedFlag.encoder, TypoShort.encoder, TypoShort.encoder, CurrentFlag.encoder, TypoUUID.encoder, TypoLocalDateTime.encoder, Encoder.encodeOption(using Encoder.encodeString)) given pgText: Text[EmployeeRow] = { Text.instance[EmployeeRow]{ (row, sb) => @@ -131,13 +132,13 @@ object EmployeeRow { sb.append(Text.DELIMETER) TypoLocalDate.pgText.unsafeEncode(row.hiredate, sb) sb.append(Text.DELIMETER) - Flag.pgText.unsafeEncode(row.salariedflag, sb) + /* user-picked */ SalariedFlag.pgText.unsafeEncode(row.salariedflag, sb) sb.append(Text.DELIMETER) TypoShort.pgText.unsafeEncode(row.vacationhours, sb) sb.append(Text.DELIMETER) TypoShort.pgText.unsafeEncode(row.sickleavehours, sb) sb.append(Text.DELIMETER) - Flag.pgText.unsafeEncode(row.currentflag, sb) + /* user-picked */ CurrentFlag.pgText.unsafeEncode(row.currentflag, sb) sb.append(Text.DELIMETER) TypoUUID.pgText.unsafeEncode(row.rowguid, sb) sb.append(Text.DELIMETER) @@ -157,10 +158,10 @@ object EmployeeRow { new Read.Single(Meta.StringMeta.get).asInstanceOf[Read[Any]], new Read.Single(Meta.StringMeta.get).asInstanceOf[Read[Any]], new Read.Single(TypoLocalDate.get).asInstanceOf[Read[Any]], - new Read.Single(Flag.get).asInstanceOf[Read[Any]], + new Read.Single(/* user-picked */ SalariedFlag.get).asInstanceOf[Read[Any]], new Read.Single(TypoShort.get).asInstanceOf[Read[Any]], new Read.Single(TypoShort.get).asInstanceOf[Read[Any]], - new Read.Single(Flag.get).asInstanceOf[Read[Any]], + new Read.Single(/* user-picked */ CurrentFlag.get).asInstanceOf[Read[Any]], new Read.Single(TypoUUID.get).asInstanceOf[Read[Any]], new Read.Single(TypoLocalDateTime.get).asInstanceOf[Read[Any]], new Read.SingleOpt(Meta.StringMeta.get).asInstanceOf[Read[Any]] @@ -174,10 +175,10 @@ object EmployeeRow { maritalstatus = arr(5).asInstanceOf[String], gender = arr(6).asInstanceOf[String], hiredate = arr(7).asInstanceOf[TypoLocalDate], - salariedflag = arr(8).asInstanceOf[Flag], + salariedflag = arr(8).asInstanceOf[/* user-picked */ SalariedFlag], vacationhours = arr(9).asInstanceOf[TypoShort], sickleavehours = arr(10).asInstanceOf[TypoShort], - currentflag = arr(11).asInstanceOf[Flag], + currentflag = arr(11).asInstanceOf[/* user-picked */ CurrentFlag], rowguid = arr(12).asInstanceOf[TypoUUID], modifieddate = arr(13).asInstanceOf[TypoLocalDateTime], organizationnode = arr(14).asInstanceOf[Option[String]] @@ -195,10 +196,10 @@ object EmployeeRow { new Write.Single(Meta.StringMeta.put), new Write.Single(Meta.StringMeta.put), new Write.Single(TypoLocalDate.put), - new Write.Single(Flag.put), + new Write.Single(/* user-picked */ SalariedFlag.put), new Write.Single(TypoShort.put), new Write.Single(TypoShort.put), - new Write.Single(Flag.put), + new Write.Single(/* user-picked */ CurrentFlag.put), new Write.Single(TypoUUID.put), new Write.Single(TypoLocalDateTime.put), new Write.Single(Meta.StringMeta.put).toOpt), diff --git a/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/humanresources/employee/EmployeeRowUnsaved.scala b/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/humanresources/employee/EmployeeRowUnsaved.scala index 66c186575a..02bf9605b3 100644 --- a/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/humanresources/employee/EmployeeRowUnsaved.scala +++ b/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/humanresources/employee/EmployeeRowUnsaved.scala @@ -12,7 +12,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoShort import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Flag +import adventureworks.userdefined.CurrentFlag +import adventureworks.userdefined.SalariedFlag import doobie.postgres.Text import io.circe.Decoder import io.circe.Encoder @@ -48,7 +49,7 @@ case class EmployeeRowUnsaved( /** Default: true * Job classification. 0 = Hourly, not exempt from collective bargaining. 1 = Salaried, exempt from collective bargaining. */ - salariedflag: Defaulted[Flag] = new UseDefault(), + salariedflag: Defaulted[/* user-picked */ SalariedFlag] = new UseDefault(), /** Default: 0 * Number of available vacation hours. * Constraint CK_Employee_VacationHours affecting columns vacationhours: (((vacationhours >= '-40'::integer) AND (vacationhours <= 240))) @@ -62,7 +63,7 @@ case class EmployeeRowUnsaved( /** Default: true * 0 = Inactive, 1 = Active */ - currentflag: Defaulted[Flag] = new UseDefault(), + currentflag: Defaulted[/* user-picked */ CurrentFlag] = new UseDefault(), /** Default: uuid_generate_v1() */ rowguid: Defaulted[TypoUUID] = new UseDefault(), /** Default: now() */ @@ -73,10 +74,10 @@ case class EmployeeRowUnsaved( organizationnode: Defaulted[Option[String]] = new UseDefault() ) { def toRow( - salariedflagDefault: => Flag, + salariedflagDefault: => /* user-picked */ SalariedFlag, vacationhoursDefault: => TypoShort, sickleavehoursDefault: => TypoShort, - currentflagDefault: => Flag, + currentflagDefault: => /* user-picked */ CurrentFlag, rowguidDefault: => TypoUUID, modifieddateDefault: => TypoLocalDateTime, organizationnodeDefault: => Option[String] @@ -102,9 +103,9 @@ case class EmployeeRowUnsaved( } object EmployeeRowUnsaved { - given decoder: Decoder[EmployeeRowUnsaved] = Decoder.forProduct15[EmployeeRowUnsaved, BusinessentityId, String, String, String, TypoLocalDate, String, String, TypoLocalDate, Defaulted[Flag], Defaulted[TypoShort], Defaulted[TypoShort], Defaulted[Flag], Defaulted[TypoUUID], Defaulted[TypoLocalDateTime], Defaulted[Option[String]]]("businessentityid", "nationalidnumber", "loginid", "jobtitle", "birthdate", "maritalstatus", "gender", "hiredate", "salariedflag", "vacationhours", "sickleavehours", "currentflag", "rowguid", "modifieddate", "organizationnode")(EmployeeRowUnsaved.apply)(using BusinessentityId.decoder, Decoder.decodeString, Decoder.decodeString, Decoder.decodeString, TypoLocalDate.decoder, Decoder.decodeString, Decoder.decodeString, TypoLocalDate.decoder, Defaulted.decoder(using Flag.decoder), Defaulted.decoder(using TypoShort.decoder), Defaulted.decoder(using TypoShort.decoder), Defaulted.decoder(using Flag.decoder), Defaulted.decoder(using TypoUUID.decoder), Defaulted.decoder(using TypoLocalDateTime.decoder), Defaulted.decoder(using Decoder.decodeOption(using Decoder.decodeString))) + given decoder: Decoder[EmployeeRowUnsaved] = Decoder.forProduct15[EmployeeRowUnsaved, BusinessentityId, String, String, String, TypoLocalDate, String, String, TypoLocalDate, Defaulted[/* user-picked */ SalariedFlag], Defaulted[TypoShort], Defaulted[TypoShort], Defaulted[/* user-picked */ CurrentFlag], Defaulted[TypoUUID], Defaulted[TypoLocalDateTime], Defaulted[Option[String]]]("businessentityid", "nationalidnumber", "loginid", "jobtitle", "birthdate", "maritalstatus", "gender", "hiredate", "salariedflag", "vacationhours", "sickleavehours", "currentflag", "rowguid", "modifieddate", "organizationnode")(EmployeeRowUnsaved.apply)(using BusinessentityId.decoder, Decoder.decodeString, Decoder.decodeString, Decoder.decodeString, TypoLocalDate.decoder, Decoder.decodeString, Decoder.decodeString, TypoLocalDate.decoder, Defaulted.decoder(using SalariedFlag.decoder), Defaulted.decoder(using TypoShort.decoder), Defaulted.decoder(using TypoShort.decoder), Defaulted.decoder(using CurrentFlag.decoder), Defaulted.decoder(using TypoUUID.decoder), Defaulted.decoder(using TypoLocalDateTime.decoder), Defaulted.decoder(using Decoder.decodeOption(using Decoder.decodeString))) - given encoder: Encoder[EmployeeRowUnsaved] = Encoder.forProduct15[EmployeeRowUnsaved, BusinessentityId, String, String, String, TypoLocalDate, String, String, TypoLocalDate, Defaulted[Flag], Defaulted[TypoShort], Defaulted[TypoShort], Defaulted[Flag], Defaulted[TypoUUID], Defaulted[TypoLocalDateTime], Defaulted[Option[String]]]("businessentityid", "nationalidnumber", "loginid", "jobtitle", "birthdate", "maritalstatus", "gender", "hiredate", "salariedflag", "vacationhours", "sickleavehours", "currentflag", "rowguid", "modifieddate", "organizationnode")(x => (x.businessentityid, x.nationalidnumber, x.loginid, x.jobtitle, x.birthdate, x.maritalstatus, x.gender, x.hiredate, x.salariedflag, x.vacationhours, x.sickleavehours, x.currentflag, x.rowguid, x.modifieddate, x.organizationnode))(using BusinessentityId.encoder, Encoder.encodeString, Encoder.encodeString, Encoder.encodeString, TypoLocalDate.encoder, Encoder.encodeString, Encoder.encodeString, TypoLocalDate.encoder, Defaulted.encoder(using Flag.encoder), Defaulted.encoder(using TypoShort.encoder), Defaulted.encoder(using TypoShort.encoder), Defaulted.encoder(using Flag.encoder), Defaulted.encoder(using TypoUUID.encoder), Defaulted.encoder(using TypoLocalDateTime.encoder), Defaulted.encoder(using Encoder.encodeOption(using Encoder.encodeString))) + given encoder: Encoder[EmployeeRowUnsaved] = Encoder.forProduct15[EmployeeRowUnsaved, BusinessentityId, String, String, String, TypoLocalDate, String, String, TypoLocalDate, Defaulted[/* user-picked */ SalariedFlag], Defaulted[TypoShort], Defaulted[TypoShort], Defaulted[/* user-picked */ CurrentFlag], Defaulted[TypoUUID], Defaulted[TypoLocalDateTime], Defaulted[Option[String]]]("businessentityid", "nationalidnumber", "loginid", "jobtitle", "birthdate", "maritalstatus", "gender", "hiredate", "salariedflag", "vacationhours", "sickleavehours", "currentflag", "rowguid", "modifieddate", "organizationnode")(x => (x.businessentityid, x.nationalidnumber, x.loginid, x.jobtitle, x.birthdate, x.maritalstatus, x.gender, x.hiredate, x.salariedflag, x.vacationhours, x.sickleavehours, x.currentflag, x.rowguid, x.modifieddate, x.organizationnode))(using BusinessentityId.encoder, Encoder.encodeString, Encoder.encodeString, Encoder.encodeString, TypoLocalDate.encoder, Encoder.encodeString, Encoder.encodeString, TypoLocalDate.encoder, Defaulted.encoder(using SalariedFlag.encoder), Defaulted.encoder(using TypoShort.encoder), Defaulted.encoder(using TypoShort.encoder), Defaulted.encoder(using CurrentFlag.encoder), Defaulted.encoder(using TypoUUID.encoder), Defaulted.encoder(using TypoLocalDateTime.encoder), Defaulted.encoder(using Encoder.encodeOption(using Encoder.encodeString))) given pgText: Text[EmployeeRowUnsaved] = { Text.instance[EmployeeRowUnsaved]{ (row, sb) => @@ -124,13 +125,13 @@ object EmployeeRowUnsaved { sb.append(Text.DELIMETER) TypoLocalDate.pgText.unsafeEncode(row.hiredate, sb) sb.append(Text.DELIMETER) - Defaulted.pgText(using Flag.pgText).unsafeEncode(row.salariedflag, sb) + Defaulted.pgText(using SalariedFlag.pgText).unsafeEncode(row.salariedflag, sb) sb.append(Text.DELIMETER) Defaulted.pgText(using TypoShort.pgText).unsafeEncode(row.vacationhours, sb) sb.append(Text.DELIMETER) Defaulted.pgText(using TypoShort.pgText).unsafeEncode(row.sickleavehours, sb) sb.append(Text.DELIMETER) - Defaulted.pgText(using Flag.pgText).unsafeEncode(row.currentflag, sb) + Defaulted.pgText(using CurrentFlag.pgText).unsafeEncode(row.currentflag, sb) sb.append(Text.DELIMETER) Defaulted.pgText(using TypoUUID.pgText).unsafeEncode(row.rowguid, sb) sb.append(Text.DELIMETER) diff --git a/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/humanresources/vemployee/VemployeeViewFields.scala b/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/humanresources/vemployee/VemployeeViewFields.scala index 406852bac3..d0474bd83d 100644 --- a/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/humanresources/vemployee/VemployeeViewFields.scala +++ b/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/humanresources/vemployee/VemployeeViewFields.scala @@ -10,6 +10,8 @@ import adventureworks.person.businessentity.BusinessentityId import adventureworks.public.Name import adventureworks.public.Phone import adventureworks.userdefined.FirstName +import adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import typr.dsl.Path import typr.dsl.RelationStructure import typr.dsl.SqlExpr.Field @@ -19,8 +21,8 @@ trait VemployeeViewFields { def businessentityid: Field[BusinessentityId, VemployeeViewRow] def title: Field[String, VemployeeViewRow] def firstname: Field[/* user-picked */ FirstName, VemployeeViewRow] - def middlename: Field[Name, VemployeeViewRow] - def lastname: Field[Name, VemployeeViewRow] + def middlename: Field[/* user-picked */ MiddleName, VemployeeViewRow] + def lastname: Field[/* user-picked */ LastName, VemployeeViewRow] def suffix: Field[String, VemployeeViewRow] def jobtitle: Field[String, VemployeeViewRow] def phonenumber: Field[Phone, VemployeeViewRow] @@ -47,8 +49,8 @@ object VemployeeViewFields { override def businessentityid = Field[BusinessentityId, VemployeeViewRow](_path, "businessentityid", None, None, x => x.businessentityid, (row, value) => row.copy(businessentityid = value)) override def title = Field[String, VemployeeViewRow](_path, "title", None, None, x => x.title, (row, value) => row.copy(title = value)) override def firstname = Field[/* user-picked */ FirstName, VemployeeViewRow](_path, "firstname", None, None, x => x.firstname, (row, value) => row.copy(firstname = value)) - override def middlename = Field[Name, VemployeeViewRow](_path, "middlename", None, None, x => x.middlename, (row, value) => row.copy(middlename = value)) - override def lastname = Field[Name, VemployeeViewRow](_path, "lastname", None, None, x => x.lastname, (row, value) => row.copy(lastname = value)) + override def middlename = Field[/* user-picked */ MiddleName, VemployeeViewRow](_path, "middlename", None, None, x => x.middlename, (row, value) => row.copy(middlename = value)) + override def lastname = Field[/* user-picked */ LastName, VemployeeViewRow](_path, "lastname", None, None, x => x.lastname, (row, value) => row.copy(lastname = value)) override def suffix = Field[String, VemployeeViewRow](_path, "suffix", None, None, x => x.suffix, (row, value) => row.copy(suffix = value)) override def jobtitle = Field[String, VemployeeViewRow](_path, "jobtitle", None, None, x => x.jobtitle, (row, value) => row.copy(jobtitle = value)) override def phonenumber = Field[Phone, VemployeeViewRow](_path, "phonenumber", None, None, x => x.phonenumber, (row, value) => row.copy(phonenumber = value)) diff --git a/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/humanresources/vemployee/VemployeeViewRow.scala b/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/humanresources/vemployee/VemployeeViewRow.scala index 87851cb21b..996fbdbb7f 100644 --- a/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/humanresources/vemployee/VemployeeViewRow.scala +++ b/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/humanresources/vemployee/VemployeeViewRow.scala @@ -10,6 +10,8 @@ import adventureworks.person.businessentity.BusinessentityId import adventureworks.public.Name import adventureworks.public.Phone import adventureworks.userdefined.FirstName +import adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import doobie.util.Read import doobie.util.meta.Meta import io.circe.Decoder @@ -24,9 +26,9 @@ case class VemployeeViewRow( /** Points to [[adventureworks.person.person.PersonRow.firstname]] */ firstname: /* user-picked */ FirstName, /** Points to [[adventureworks.person.person.PersonRow.middlename]] */ - middlename: Name, + middlename: /* user-picked */ MiddleName, /** Points to [[adventureworks.person.person.PersonRow.lastname]] */ - lastname: Name, + lastname: /* user-picked */ LastName, /** Points to [[adventureworks.person.person.PersonRow.suffix]] */ suffix: String, /** Points to [[adventureworks.humanresources.employee.EmployeeRow.jobtitle]] */ @@ -56,17 +58,17 @@ case class VemployeeViewRow( ) object VemployeeViewRow { - given decoder: Decoder[VemployeeViewRow] = Decoder.forProduct18[VemployeeViewRow, BusinessentityId, String, /* user-picked */ FirstName, Name, Name, String, String, Phone, Name, String, Int, String, String, String, Name, String, Name, TypoXml]("businessentityid", "title", "firstname", "middlename", "lastname", "suffix", "jobtitle", "phonenumber", "phonenumbertype", "emailaddress", "emailpromotion", "addressline1", "addressline2", "city", "stateprovincename", "postalcode", "countryregionname", "additionalcontactinfo")(VemployeeViewRow.apply)(using BusinessentityId.decoder, Decoder.decodeString, FirstName.decoder, Name.decoder, Name.decoder, Decoder.decodeString, Decoder.decodeString, Phone.decoder, Name.decoder, Decoder.decodeString, Decoder.decodeInt, Decoder.decodeString, Decoder.decodeString, Decoder.decodeString, Name.decoder, Decoder.decodeString, Name.decoder, TypoXml.decoder) + given decoder: Decoder[VemployeeViewRow] = Decoder.forProduct18[VemployeeViewRow, BusinessentityId, String, /* user-picked */ FirstName, /* user-picked */ MiddleName, /* user-picked */ LastName, String, String, Phone, Name, String, Int, String, String, String, Name, String, Name, TypoXml]("businessentityid", "title", "firstname", "middlename", "lastname", "suffix", "jobtitle", "phonenumber", "phonenumbertype", "emailaddress", "emailpromotion", "addressline1", "addressline2", "city", "stateprovincename", "postalcode", "countryregionname", "additionalcontactinfo")(VemployeeViewRow.apply)(using BusinessentityId.decoder, Decoder.decodeString, FirstName.decoder, MiddleName.decoder, LastName.decoder, Decoder.decodeString, Decoder.decodeString, Phone.decoder, Name.decoder, Decoder.decodeString, Decoder.decodeInt, Decoder.decodeString, Decoder.decodeString, Decoder.decodeString, Name.decoder, Decoder.decodeString, Name.decoder, TypoXml.decoder) - given encoder: Encoder[VemployeeViewRow] = Encoder.forProduct18[VemployeeViewRow, BusinessentityId, String, /* user-picked */ FirstName, Name, Name, String, String, Phone, Name, String, Int, String, String, String, Name, String, Name, TypoXml]("businessentityid", "title", "firstname", "middlename", "lastname", "suffix", "jobtitle", "phonenumber", "phonenumbertype", "emailaddress", "emailpromotion", "addressline1", "addressline2", "city", "stateprovincename", "postalcode", "countryregionname", "additionalcontactinfo")(x => (x.businessentityid, x.title, x.firstname, x.middlename, x.lastname, x.suffix, x.jobtitle, x.phonenumber, x.phonenumbertype, x.emailaddress, x.emailpromotion, x.addressline1, x.addressline2, x.city, x.stateprovincename, x.postalcode, x.countryregionname, x.additionalcontactinfo))(using BusinessentityId.encoder, Encoder.encodeString, FirstName.encoder, Name.encoder, Name.encoder, Encoder.encodeString, Encoder.encodeString, Phone.encoder, Name.encoder, Encoder.encodeString, Encoder.encodeInt, Encoder.encodeString, Encoder.encodeString, Encoder.encodeString, Name.encoder, Encoder.encodeString, Name.encoder, TypoXml.encoder) + given encoder: Encoder[VemployeeViewRow] = Encoder.forProduct18[VemployeeViewRow, BusinessentityId, String, /* user-picked */ FirstName, /* user-picked */ MiddleName, /* user-picked */ LastName, String, String, Phone, Name, String, Int, String, String, String, Name, String, Name, TypoXml]("businessentityid", "title", "firstname", "middlename", "lastname", "suffix", "jobtitle", "phonenumber", "phonenumbertype", "emailaddress", "emailpromotion", "addressline1", "addressline2", "city", "stateprovincename", "postalcode", "countryregionname", "additionalcontactinfo")(x => (x.businessentityid, x.title, x.firstname, x.middlename, x.lastname, x.suffix, x.jobtitle, x.phonenumber, x.phonenumbertype, x.emailaddress, x.emailpromotion, x.addressline1, x.addressline2, x.city, x.stateprovincename, x.postalcode, x.countryregionname, x.additionalcontactinfo))(using BusinessentityId.encoder, Encoder.encodeString, FirstName.encoder, MiddleName.encoder, LastName.encoder, Encoder.encodeString, Encoder.encodeString, Phone.encoder, Name.encoder, Encoder.encodeString, Encoder.encodeInt, Encoder.encodeString, Encoder.encodeString, Encoder.encodeString, Name.encoder, Encoder.encodeString, Name.encoder, TypoXml.encoder) given read: Read[VemployeeViewRow] = { new Read.CompositeOfInstances(Array( new Read.Single(BusinessentityId.get).asInstanceOf[Read[Any]], new Read.Single(Meta.StringMeta.get).asInstanceOf[Read[Any]], new Read.Single(/* user-picked */ FirstName.get).asInstanceOf[Read[Any]], - new Read.Single(Name.get).asInstanceOf[Read[Any]], - new Read.Single(Name.get).asInstanceOf[Read[Any]], + new Read.Single(/* user-picked */ MiddleName.get).asInstanceOf[Read[Any]], + new Read.Single(/* user-picked */ LastName.get).asInstanceOf[Read[Any]], new Read.Single(Meta.StringMeta.get).asInstanceOf[Read[Any]], new Read.Single(Meta.StringMeta.get).asInstanceOf[Read[Any]], new Read.Single(Phone.get).asInstanceOf[Read[Any]], @@ -85,8 +87,8 @@ object VemployeeViewRow { businessentityid = arr(0).asInstanceOf[BusinessentityId], title = arr(1).asInstanceOf[String], firstname = arr(2).asInstanceOf[/* user-picked */ FirstName], - middlename = arr(3).asInstanceOf[Name], - lastname = arr(4).asInstanceOf[Name], + middlename = arr(3).asInstanceOf[/* user-picked */ MiddleName], + lastname = arr(4).asInstanceOf[/* user-picked */ LastName], suffix = arr(5).asInstanceOf[String], jobtitle = arr(6).asInstanceOf[String], phonenumber = arr(7).asInstanceOf[Phone], diff --git a/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/person/person/PersonFields.scala b/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/person/person/PersonFields.scala index 27eb19af9f..6fdabb004a 100644 --- a/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/person/person/PersonFields.scala +++ b/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/person/person/PersonFields.scala @@ -11,9 +11,10 @@ import adventureworks.customtypes.TypoXml import adventureworks.person.businessentity.BusinessentityFields import adventureworks.person.businessentity.BusinessentityId import adventureworks.person.businessentity.BusinessentityRow -import adventureworks.public.Name import adventureworks.public.NameStyle import adventureworks.userdefined.FirstName +import adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import typr.dsl.ForeignKey import typr.dsl.Path import typr.dsl.RelationStructure @@ -28,8 +29,8 @@ trait PersonFields { def namestyle: Field[NameStyle, PersonRow] def title: OptField[/* max 8 chars */ String, PersonRow] def firstname: Field[/* user-picked */ FirstName, PersonRow] - def middlename: OptField[Name, PersonRow] - def lastname: Field[Name, PersonRow] + def middlename: OptField[/* user-picked */ MiddleName, PersonRow] + def lastname: Field[/* user-picked */ LastName, PersonRow] def suffix: OptField[/* max 10 chars */ String, PersonRow] def emailpromotion: Field[Int, PersonRow] def additionalcontactinfo: OptField[TypoXml, PersonRow] @@ -54,8 +55,8 @@ object PersonFields { override def namestyle = Field[NameStyle, PersonRow](_path, "namestyle", None, Some("bool"), x => x.namestyle, (row, value) => row.copy(namestyle = value)) override def title = OptField[/* max 8 chars */ String, PersonRow](_path, "title", None, None, x => x.title, (row, value) => row.copy(title = value)) override def firstname = Field[/* user-picked */ FirstName, PersonRow](_path, "firstname", None, Some("varchar"), x => x.firstname, (row, value) => row.copy(firstname = value)) - override def middlename = OptField[Name, PersonRow](_path, "middlename", None, Some("varchar"), x => x.middlename, (row, value) => row.copy(middlename = value)) - override def lastname = Field[Name, PersonRow](_path, "lastname", None, Some("varchar"), x => x.lastname, (row, value) => row.copy(lastname = value)) + override def middlename = OptField[/* user-picked */ MiddleName, PersonRow](_path, "middlename", None, Some("varchar"), x => x.middlename, (row, value) => row.copy(middlename = value)) + override def lastname = Field[/* user-picked */ LastName, PersonRow](_path, "lastname", None, Some("varchar"), x => x.lastname, (row, value) => row.copy(lastname = value)) override def suffix = OptField[/* max 10 chars */ String, PersonRow](_path, "suffix", None, None, x => x.suffix, (row, value) => row.copy(suffix = value)) override def emailpromotion = Field[Int, PersonRow](_path, "emailpromotion", None, Some("int4"), x => x.emailpromotion, (row, value) => row.copy(emailpromotion = value)) override def additionalcontactinfo = OptField[TypoXml, PersonRow](_path, "additionalcontactinfo", None, Some("xml"), x => x.additionalcontactinfo, (row, value) => row.copy(additionalcontactinfo = value)) diff --git a/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/person/person/PersonRepoImpl.scala b/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/person/person/PersonRepoImpl.scala index 37df966db1..06e9023ee0 100644 --- a/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/person/person/PersonRepoImpl.scala +++ b/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/person/person/PersonRepoImpl.scala @@ -10,9 +10,10 @@ 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 adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import cats.instances.list.catsStdInstancesForList import doobie.free.connection.ConnectionIO import doobie.postgres.syntax.FragmentOps @@ -36,7 +37,7 @@ class PersonRepoImpl extends PersonRepo { 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") - values (${fromWrite(unsaved.businessentityid)(using new Write.Single(BusinessentityId.put))}::int4, ${fromWrite(unsaved.persontype)(using new Write.Single(Meta.StringMeta.put))}::bpchar, ${fromWrite(unsaved.namestyle)(using new Write.Single(NameStyle.put))}::bool, ${fromWrite(unsaved.title)(using new Write.SingleOpt(Meta.StringMeta.put))}, ${fromWrite(unsaved.firstname)(using new Write.Single(/* user-picked */ FirstName.put))}::varchar, ${fromWrite(unsaved.middlename)(using new Write.SingleOpt(Name.put))}::varchar, ${fromWrite(unsaved.lastname)(using new Write.Single(Name.put))}::varchar, ${fromWrite(unsaved.suffix)(using new Write.SingleOpt(Meta.StringMeta.put))}, ${fromWrite(unsaved.emailpromotion)(using new Write.Single(Meta.IntMeta.put))}::int4, ${fromWrite(unsaved.additionalcontactinfo)(using new Write.SingleOpt(TypoXml.put))}::xml, ${fromWrite(unsaved.demographics)(using new Write.SingleOpt(TypoXml.put))}::xml, ${fromWrite(unsaved.rowguid)(using new Write.Single(TypoUUID.put))}::uuid, ${fromWrite(unsaved.modifieddate)(using new Write.Single(TypoLocalDateTime.put))}::timestamp) + values (${fromWrite(unsaved.businessentityid)(using new Write.Single(BusinessentityId.put))}::int4, ${fromWrite(unsaved.persontype)(using new Write.Single(Meta.StringMeta.put))}::bpchar, ${fromWrite(unsaved.namestyle)(using new Write.Single(NameStyle.put))}::bool, ${fromWrite(unsaved.title)(using new Write.SingleOpt(Meta.StringMeta.put))}, ${fromWrite(unsaved.firstname)(using new Write.Single(/* user-picked */ FirstName.put))}::varchar, ${fromWrite(unsaved.middlename)(using new Write.SingleOpt(/* user-picked */ MiddleName.put))}::varchar, ${fromWrite(unsaved.lastname)(using new Write.Single(/* user-picked */ LastName.put))}::varchar, ${fromWrite(unsaved.suffix)(using new Write.SingleOpt(Meta.StringMeta.put))}, ${fromWrite(unsaved.emailpromotion)(using new Write.Single(Meta.IntMeta.put))}::int4, ${fromWrite(unsaved.additionalcontactinfo)(using new Write.SingleOpt(TypoXml.put))}::xml, ${fromWrite(unsaved.demographics)(using new Write.SingleOpt(TypoXml.put))}::xml, ${fromWrite(unsaved.rowguid)(using new Write.Single(TypoUUID.put))}::uuid, ${fromWrite(unsaved.modifieddate)(using new Write.Single(TypoLocalDateTime.put))}::timestamp) returning "businessentityid", "persontype", "namestyle", "title", "firstname", "middlename", "lastname", "suffix", "emailpromotion", "additionalcontactinfo", "demographics", "rowguid", "modifieddate"::text """.query(using PersonRow.read).unique } @@ -47,8 +48,8 @@ class PersonRepoImpl extends PersonRepo { Some((Fragment.const0(s""""persontype""""), fr"${fromWrite(unsaved.persontype)(using new Write.Single(Meta.StringMeta.put))}::bpchar")), Some((Fragment.const0(s""""title""""), fr"${fromWrite(unsaved.title)(using new Write.SingleOpt(Meta.StringMeta.put))}")), Some((Fragment.const0(s""""firstname""""), fr"${fromWrite(unsaved.firstname)(using new Write.Single(/* user-picked */ FirstName.put))}::varchar")), - Some((Fragment.const0(s""""middlename""""), fr"${fromWrite(unsaved.middlename)(using new Write.SingleOpt(Name.put))}::varchar")), - Some((Fragment.const0(s""""lastname""""), fr"${fromWrite(unsaved.lastname)(using new Write.Single(Name.put))}::varchar")), + Some((Fragment.const0(s""""middlename""""), fr"${fromWrite(unsaved.middlename)(using new Write.SingleOpt(/* user-picked */ MiddleName.put))}::varchar")), + Some((Fragment.const0(s""""lastname""""), fr"${fromWrite(unsaved.lastname)(using new Write.Single(/* user-picked */ LastName.put))}::varchar")), Some((Fragment.const0(s""""suffix""""), fr"${fromWrite(unsaved.suffix)(using new Write.SingleOpt(Meta.StringMeta.put))}")), Some((Fragment.const0(s""""additionalcontactinfo""""), fr"${fromWrite(unsaved.additionalcontactinfo)(using new Write.SingleOpt(TypoXml.put))}::xml")), Some((Fragment.const0(s""""demographics""""), fr"${fromWrite(unsaved.demographics)(using new Write.SingleOpt(TypoXml.put))}::xml")), @@ -118,8 +119,8 @@ class PersonRepoImpl extends PersonRepo { "namestyle" = ${fromWrite(row.namestyle)(using new Write.Single(NameStyle.put))}::bool, "title" = ${fromWrite(row.title)(using new Write.SingleOpt(Meta.StringMeta.put))}, "firstname" = ${fromWrite(row.firstname)(using new Write.Single(/* user-picked */ FirstName.put))}::varchar, - "middlename" = ${fromWrite(row.middlename)(using new Write.SingleOpt(Name.put))}::varchar, - "lastname" = ${fromWrite(row.lastname)(using new Write.Single(Name.put))}::varchar, + "middlename" = ${fromWrite(row.middlename)(using new Write.SingleOpt(/* user-picked */ MiddleName.put))}::varchar, + "lastname" = ${fromWrite(row.lastname)(using new Write.Single(/* user-picked */ LastName.put))}::varchar, "suffix" = ${fromWrite(row.suffix)(using new Write.SingleOpt(Meta.StringMeta.put))}, "emailpromotion" = ${fromWrite(row.emailpromotion)(using new Write.Single(Meta.IntMeta.put))}::int4, "additionalcontactinfo" = ${fromWrite(row.additionalcontactinfo)(using new Write.SingleOpt(TypoXml.put))}::xml, @@ -138,8 +139,8 @@ class PersonRepoImpl extends PersonRepo { ${fromWrite(unsaved.namestyle)(using new Write.Single(NameStyle.put))}::bool, ${fromWrite(unsaved.title)(using new Write.SingleOpt(Meta.StringMeta.put))}, ${fromWrite(unsaved.firstname)(using new Write.Single(/* user-picked */ FirstName.put))}::varchar, - ${fromWrite(unsaved.middlename)(using new Write.SingleOpt(Name.put))}::varchar, - ${fromWrite(unsaved.lastname)(using new Write.Single(Name.put))}::varchar, + ${fromWrite(unsaved.middlename)(using new Write.SingleOpt(/* user-picked */ MiddleName.put))}::varchar, + ${fromWrite(unsaved.lastname)(using new Write.Single(/* user-picked */ LastName.put))}::varchar, ${fromWrite(unsaved.suffix)(using new Write.SingleOpt(Meta.StringMeta.put))}, ${fromWrite(unsaved.emailpromotion)(using new Write.Single(Meta.IntMeta.put))}::int4, ${fromWrite(unsaved.additionalcontactinfo)(using new Write.SingleOpt(TypoXml.put))}::xml, diff --git a/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/person/person/PersonRow.scala b/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/person/person/PersonRow.scala index 9e79fa4f9d..15da2d1531 100644 --- a/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/person/person/PersonRow.scala +++ b/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/person/person/PersonRow.scala @@ -10,9 +10,10 @@ 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 adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import doobie.postgres.Text import doobie.util.Read import doobie.util.Write @@ -42,9 +43,9 @@ case class PersonRow( /** First name of the person. */ firstname: /* user-picked */ FirstName, /** Middle name or middle initial of the person. */ - middlename: Option[Name], + middlename: Option[/* user-picked */ MiddleName], /** Last name of the person. */ - lastname: Name, + lastname: /* user-picked */ LastName, /** Surname suffix. For example, Sr. or Jr. */ suffix: Option[/* max 10 chars */ String], /** 0 = Contact does not wish to receive e-mail promotions, 1 = Contact does wish to receive e-mail promotions from AdventureWorks, 2 = Contact does wish to receive e-mail promotions from AdventureWorks and selected partners. @@ -88,9 +89,9 @@ case class PersonRow( } object PersonRow { - given decoder: Decoder[PersonRow] = Decoder.forProduct13[PersonRow, BusinessentityId, String, NameStyle, Option[/* max 8 chars */ String], /* user-picked */ FirstName, Option[Name], Name, Option[/* max 10 chars */ String], Int, Option[TypoXml], Option[TypoXml], TypoUUID, TypoLocalDateTime]("businessentityid", "persontype", "namestyle", "title", "firstname", "middlename", "lastname", "suffix", "emailpromotion", "additionalcontactinfo", "demographics", "rowguid", "modifieddate")(PersonRow.apply)(using BusinessentityId.decoder, Decoder.decodeString, NameStyle.decoder, Decoder.decodeOption(using Decoder.decodeString), FirstName.decoder, Decoder.decodeOption(using Name.decoder), Name.decoder, Decoder.decodeOption(using Decoder.decodeString), Decoder.decodeInt, Decoder.decodeOption(using TypoXml.decoder), Decoder.decodeOption(using TypoXml.decoder), TypoUUID.decoder, TypoLocalDateTime.decoder) + given decoder: Decoder[PersonRow] = Decoder.forProduct13[PersonRow, BusinessentityId, String, NameStyle, Option[/* max 8 chars */ String], /* user-picked */ FirstName, Option[/* user-picked */ MiddleName], /* user-picked */ LastName, Option[/* max 10 chars */ String], Int, Option[TypoXml], Option[TypoXml], TypoUUID, TypoLocalDateTime]("businessentityid", "persontype", "namestyle", "title", "firstname", "middlename", "lastname", "suffix", "emailpromotion", "additionalcontactinfo", "demographics", "rowguid", "modifieddate")(PersonRow.apply)(using BusinessentityId.decoder, Decoder.decodeString, NameStyle.decoder, Decoder.decodeOption(using Decoder.decodeString), FirstName.decoder, Decoder.decodeOption(using MiddleName.decoder), LastName.decoder, Decoder.decodeOption(using Decoder.decodeString), Decoder.decodeInt, Decoder.decodeOption(using TypoXml.decoder), Decoder.decodeOption(using TypoXml.decoder), TypoUUID.decoder, TypoLocalDateTime.decoder) - given encoder: Encoder[PersonRow] = Encoder.forProduct13[PersonRow, BusinessentityId, String, NameStyle, Option[/* max 8 chars */ String], /* user-picked */ FirstName, Option[Name], Name, Option[/* max 10 chars */ String], Int, Option[TypoXml], Option[TypoXml], TypoUUID, TypoLocalDateTime]("businessentityid", "persontype", "namestyle", "title", "firstname", "middlename", "lastname", "suffix", "emailpromotion", "additionalcontactinfo", "demographics", "rowguid", "modifieddate")(x => (x.businessentityid, x.persontype, x.namestyle, x.title, x.firstname, x.middlename, x.lastname, x.suffix, x.emailpromotion, x.additionalcontactinfo, x.demographics, x.rowguid, x.modifieddate))(using BusinessentityId.encoder, Encoder.encodeString, NameStyle.encoder, Encoder.encodeOption(using Encoder.encodeString), FirstName.encoder, Encoder.encodeOption(using Name.encoder), Name.encoder, Encoder.encodeOption(using Encoder.encodeString), Encoder.encodeInt, Encoder.encodeOption(using TypoXml.encoder), Encoder.encodeOption(using TypoXml.encoder), TypoUUID.encoder, TypoLocalDateTime.encoder) + given encoder: Encoder[PersonRow] = Encoder.forProduct13[PersonRow, BusinessentityId, String, NameStyle, Option[/* max 8 chars */ String], /* user-picked */ FirstName, Option[/* user-picked */ MiddleName], /* user-picked */ LastName, Option[/* max 10 chars */ String], Int, Option[TypoXml], Option[TypoXml], TypoUUID, TypoLocalDateTime]("businessentityid", "persontype", "namestyle", "title", "firstname", "middlename", "lastname", "suffix", "emailpromotion", "additionalcontactinfo", "demographics", "rowguid", "modifieddate")(x => (x.businessentityid, x.persontype, x.namestyle, x.title, x.firstname, x.middlename, x.lastname, x.suffix, x.emailpromotion, x.additionalcontactinfo, x.demographics, x.rowguid, x.modifieddate))(using BusinessentityId.encoder, Encoder.encodeString, NameStyle.encoder, Encoder.encodeOption(using Encoder.encodeString), FirstName.encoder, Encoder.encodeOption(using MiddleName.encoder), LastName.encoder, Encoder.encodeOption(using Encoder.encodeString), Encoder.encodeInt, Encoder.encodeOption(using TypoXml.encoder), Encoder.encodeOption(using TypoXml.encoder), TypoUUID.encoder, TypoLocalDateTime.encoder) given pgText: Text[PersonRow] = { Text.instance[PersonRow]{ (row, sb) => @@ -104,9 +105,9 @@ object PersonRow { sb.append(Text.DELIMETER) /* user-picked */ FirstName.pgText.unsafeEncode(row.firstname, sb) sb.append(Text.DELIMETER) - Text.option(using Name.pgText).unsafeEncode(row.middlename, sb) + Text.option(using MiddleName.pgText).unsafeEncode(row.middlename, sb) sb.append(Text.DELIMETER) - Name.pgText.unsafeEncode(row.lastname, sb) + /* user-picked */ LastName.pgText.unsafeEncode(row.lastname, sb) sb.append(Text.DELIMETER) Text.option(using Text.stringInstance).unsafeEncode(row.suffix, sb) sb.append(Text.DELIMETER) @@ -129,8 +130,8 @@ object PersonRow { new Read.Single(NameStyle.get).asInstanceOf[Read[Any]], new Read.SingleOpt(Meta.StringMeta.get).asInstanceOf[Read[Any]], new Read.Single(/* user-picked */ FirstName.get).asInstanceOf[Read[Any]], - new Read.SingleOpt(Name.get).asInstanceOf[Read[Any]], - new Read.Single(Name.get).asInstanceOf[Read[Any]], + new Read.SingleOpt(/* user-picked */ MiddleName.get).asInstanceOf[Read[Any]], + new Read.Single(/* user-picked */ LastName.get).asInstanceOf[Read[Any]], new Read.SingleOpt(Meta.StringMeta.get).asInstanceOf[Read[Any]], new Read.Single(Meta.IntMeta.get).asInstanceOf[Read[Any]], new Read.SingleOpt(TypoXml.get).asInstanceOf[Read[Any]], @@ -144,8 +145,8 @@ object PersonRow { namestyle = arr(2).asInstanceOf[NameStyle], title = arr(3).asInstanceOf[Option[/* max 8 chars */ String]], firstname = arr(4).asInstanceOf[/* user-picked */ FirstName], - middlename = arr(5).asInstanceOf[Option[Name]], - lastname = arr(6).asInstanceOf[Name], + middlename = arr(5).asInstanceOf[Option[/* user-picked */ MiddleName]], + lastname = arr(6).asInstanceOf[/* user-picked */ LastName], suffix = arr(7).asInstanceOf[Option[/* max 10 chars */ String]], emailpromotion = arr(8).asInstanceOf[Int], additionalcontactinfo = arr(9).asInstanceOf[Option[TypoXml]], @@ -163,8 +164,8 @@ object PersonRow { new Write.Single(NameStyle.put), new Write.Single(Meta.StringMeta.put).toOpt, new Write.Single(/* user-picked */ FirstName.put), - new Write.Single(Name.put).toOpt, - new Write.Single(Name.put), + new Write.Single(/* user-picked */ MiddleName.put).toOpt, + new Write.Single(/* user-picked */ LastName.put), new Write.Single(Meta.StringMeta.put).toOpt, new Write.Single(Meta.IntMeta.put), new Write.Single(TypoXml.put).toOpt, diff --git a/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/person/person/PersonRowUnsaved.scala b/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/person/person/PersonRowUnsaved.scala index 81bd264fb5..1383d1ea6c 100644 --- a/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/person/person/PersonRowUnsaved.scala +++ b/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/person/person/PersonRowUnsaved.scala @@ -11,9 +11,10 @@ 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 adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import doobie.postgres.Text import io.circe.Decoder import io.circe.Encoder @@ -33,9 +34,9 @@ case class PersonRowUnsaved( /** First name of the person. */ firstname: /* user-picked */ FirstName, /** Middle name or middle initial of the person. */ - middlename: Option[Name] = None, + middlename: Option[/* user-picked */ MiddleName] = None, /** Last name of the person. */ - lastname: Name, + lastname: /* user-picked */ LastName, /** Surname suffix. For example, Sr. or Jr. */ suffix: Option[/* max 10 chars */ String] = None, /** Additional contact information about the person stored in xml format. */ @@ -81,9 +82,9 @@ case class PersonRowUnsaved( } object PersonRowUnsaved { - given decoder: Decoder[PersonRowUnsaved] = Decoder.forProduct13[PersonRowUnsaved, BusinessentityId, String, Option[/* max 8 chars */ String], /* user-picked */ FirstName, Option[Name], Name, Option[/* max 10 chars */ String], Option[TypoXml], Option[TypoXml], Defaulted[NameStyle], Defaulted[Int], Defaulted[TypoUUID], Defaulted[TypoLocalDateTime]]("businessentityid", "persontype", "title", "firstname", "middlename", "lastname", "suffix", "additionalcontactinfo", "demographics", "namestyle", "emailpromotion", "rowguid", "modifieddate")(PersonRowUnsaved.apply)(using BusinessentityId.decoder, Decoder.decodeString, Decoder.decodeOption(using Decoder.decodeString), FirstName.decoder, Decoder.decodeOption(using Name.decoder), Name.decoder, Decoder.decodeOption(using Decoder.decodeString), Decoder.decodeOption(using TypoXml.decoder), Decoder.decodeOption(using TypoXml.decoder), Defaulted.decoder(using NameStyle.decoder), Defaulted.decoder(using Decoder.decodeInt), Defaulted.decoder(using TypoUUID.decoder), Defaulted.decoder(using TypoLocalDateTime.decoder)) + given decoder: Decoder[PersonRowUnsaved] = Decoder.forProduct13[PersonRowUnsaved, BusinessentityId, String, Option[/* max 8 chars */ String], /* user-picked */ FirstName, Option[/* user-picked */ MiddleName], /* user-picked */ LastName, Option[/* max 10 chars */ String], Option[TypoXml], Option[TypoXml], Defaulted[NameStyle], Defaulted[Int], Defaulted[TypoUUID], Defaulted[TypoLocalDateTime]]("businessentityid", "persontype", "title", "firstname", "middlename", "lastname", "suffix", "additionalcontactinfo", "demographics", "namestyle", "emailpromotion", "rowguid", "modifieddate")(PersonRowUnsaved.apply)(using BusinessentityId.decoder, Decoder.decodeString, Decoder.decodeOption(using Decoder.decodeString), FirstName.decoder, Decoder.decodeOption(using MiddleName.decoder), LastName.decoder, Decoder.decodeOption(using Decoder.decodeString), Decoder.decodeOption(using TypoXml.decoder), Decoder.decodeOption(using TypoXml.decoder), Defaulted.decoder(using NameStyle.decoder), Defaulted.decoder(using Decoder.decodeInt), Defaulted.decoder(using TypoUUID.decoder), Defaulted.decoder(using TypoLocalDateTime.decoder)) - given encoder: Encoder[PersonRowUnsaved] = Encoder.forProduct13[PersonRowUnsaved, BusinessentityId, String, Option[/* max 8 chars */ String], /* user-picked */ FirstName, Option[Name], Name, Option[/* max 10 chars */ String], Option[TypoXml], Option[TypoXml], Defaulted[NameStyle], Defaulted[Int], Defaulted[TypoUUID], Defaulted[TypoLocalDateTime]]("businessentityid", "persontype", "title", "firstname", "middlename", "lastname", "suffix", "additionalcontactinfo", "demographics", "namestyle", "emailpromotion", "rowguid", "modifieddate")(x => (x.businessentityid, x.persontype, x.title, x.firstname, x.middlename, x.lastname, x.suffix, x.additionalcontactinfo, x.demographics, x.namestyle, x.emailpromotion, x.rowguid, x.modifieddate))(using BusinessentityId.encoder, Encoder.encodeString, Encoder.encodeOption(using Encoder.encodeString), FirstName.encoder, Encoder.encodeOption(using Name.encoder), Name.encoder, Encoder.encodeOption(using Encoder.encodeString), Encoder.encodeOption(using TypoXml.encoder), Encoder.encodeOption(using TypoXml.encoder), Defaulted.encoder(using NameStyle.encoder), Defaulted.encoder(using Encoder.encodeInt), Defaulted.encoder(using TypoUUID.encoder), Defaulted.encoder(using TypoLocalDateTime.encoder)) + given encoder: Encoder[PersonRowUnsaved] = Encoder.forProduct13[PersonRowUnsaved, BusinessentityId, String, Option[/* max 8 chars */ String], /* user-picked */ FirstName, Option[/* user-picked */ MiddleName], /* user-picked */ LastName, Option[/* max 10 chars */ String], Option[TypoXml], Option[TypoXml], Defaulted[NameStyle], Defaulted[Int], Defaulted[TypoUUID], Defaulted[TypoLocalDateTime]]("businessentityid", "persontype", "title", "firstname", "middlename", "lastname", "suffix", "additionalcontactinfo", "demographics", "namestyle", "emailpromotion", "rowguid", "modifieddate")(x => (x.businessentityid, x.persontype, x.title, x.firstname, x.middlename, x.lastname, x.suffix, x.additionalcontactinfo, x.demographics, x.namestyle, x.emailpromotion, x.rowguid, x.modifieddate))(using BusinessentityId.encoder, Encoder.encodeString, Encoder.encodeOption(using Encoder.encodeString), FirstName.encoder, Encoder.encodeOption(using MiddleName.encoder), LastName.encoder, Encoder.encodeOption(using Encoder.encodeString), Encoder.encodeOption(using TypoXml.encoder), Encoder.encodeOption(using TypoXml.encoder), Defaulted.encoder(using NameStyle.encoder), Defaulted.encoder(using Encoder.encodeInt), Defaulted.encoder(using TypoUUID.encoder), Defaulted.encoder(using TypoLocalDateTime.encoder)) given pgText: Text[PersonRowUnsaved] = { Text.instance[PersonRowUnsaved]{ (row, sb) => @@ -95,9 +96,9 @@ object PersonRowUnsaved { sb.append(Text.DELIMETER) /* user-picked */ FirstName.pgText.unsafeEncode(row.firstname, sb) sb.append(Text.DELIMETER) - Text.option(using Name.pgText).unsafeEncode(row.middlename, sb) + Text.option(using MiddleName.pgText).unsafeEncode(row.middlename, sb) sb.append(Text.DELIMETER) - Name.pgText.unsafeEncode(row.lastname, sb) + /* user-picked */ LastName.pgText.unsafeEncode(row.lastname, sb) sb.append(Text.DELIMETER) Text.option(using Text.stringInstance).unsafeEncode(row.suffix, sb) sb.append(Text.DELIMETER) diff --git a/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/person_detail/PersonDetailSqlRow.scala b/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/person_detail/PersonDetailSqlRow.scala index 3633d25ccf..0ee74ea7e6 100644 --- a/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/person_detail/PersonDetailSqlRow.scala +++ b/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/person_detail/PersonDetailSqlRow.scala @@ -7,8 +7,9 @@ package adventureworks.person_detail import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Name import adventureworks.userdefined.FirstName +import adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import doobie.util.Read import doobie.util.meta.Meta import io.circe.Decoder @@ -23,9 +24,9 @@ case class PersonDetailSqlRow( /** Points to [[adventureworks.person.person.PersonRow.firstname]] */ firstname: /* user-picked */ FirstName, /** Points to [[adventureworks.person.person.PersonRow.middlename]] */ - middlename: Option[Name], + middlename: Option[/* user-picked */ MiddleName], /** Points to [[adventureworks.person.person.PersonRow.lastname]] */ - lastname: Name, + lastname: /* user-picked */ LastName, /** Points to [[adventureworks.humanresources.employee.EmployeeRow.jobtitle]] */ jobtitle: String, /** Points to [[adventureworks.person.address.AddressRow.addressline1]] */ @@ -39,17 +40,17 @@ case class PersonDetailSqlRow( ) object PersonDetailSqlRow { - given decoder: Decoder[PersonDetailSqlRow] = Decoder.forProduct10[PersonDetailSqlRow, BusinessentityId, Option[/* max 8 chars */ String], /* user-picked */ FirstName, Option[Name], Name, String, Option[String], Option[String], Option[String], Option[TypoUUID]]("businessentityid", "title", "firstname", "middlename", "lastname", "jobtitle", "addressline1", "city", "postalcode", "rowguid")(PersonDetailSqlRow.apply)(using BusinessentityId.decoder, Decoder.decodeOption(using Decoder.decodeString), FirstName.decoder, Decoder.decodeOption(using Name.decoder), Name.decoder, Decoder.decodeString, Decoder.decodeOption(using Decoder.decodeString), Decoder.decodeOption(using Decoder.decodeString), Decoder.decodeOption(using Decoder.decodeString), Decoder.decodeOption(using TypoUUID.decoder)) + given decoder: Decoder[PersonDetailSqlRow] = Decoder.forProduct10[PersonDetailSqlRow, BusinessentityId, Option[/* max 8 chars */ String], /* user-picked */ FirstName, Option[/* user-picked */ MiddleName], /* user-picked */ LastName, String, Option[String], Option[String], Option[String], Option[TypoUUID]]("businessentityid", "title", "firstname", "middlename", "lastname", "jobtitle", "addressline1", "city", "postalcode", "rowguid")(PersonDetailSqlRow.apply)(using BusinessentityId.decoder, Decoder.decodeOption(using Decoder.decodeString), FirstName.decoder, Decoder.decodeOption(using MiddleName.decoder), LastName.decoder, Decoder.decodeString, Decoder.decodeOption(using Decoder.decodeString), Decoder.decodeOption(using Decoder.decodeString), Decoder.decodeOption(using Decoder.decodeString), Decoder.decodeOption(using TypoUUID.decoder)) - given encoder: Encoder[PersonDetailSqlRow] = Encoder.forProduct10[PersonDetailSqlRow, BusinessentityId, Option[/* max 8 chars */ String], /* user-picked */ FirstName, Option[Name], Name, String, Option[String], Option[String], Option[String], Option[TypoUUID]]("businessentityid", "title", "firstname", "middlename", "lastname", "jobtitle", "addressline1", "city", "postalcode", "rowguid")(x => (x.businessentityid, x.title, x.firstname, x.middlename, x.lastname, x.jobtitle, x.addressline1, x.city, x.postalcode, x.rowguid))(using BusinessentityId.encoder, Encoder.encodeOption(using Encoder.encodeString), FirstName.encoder, Encoder.encodeOption(using Name.encoder), Name.encoder, Encoder.encodeString, Encoder.encodeOption(using Encoder.encodeString), Encoder.encodeOption(using Encoder.encodeString), Encoder.encodeOption(using Encoder.encodeString), Encoder.encodeOption(using TypoUUID.encoder)) + given encoder: Encoder[PersonDetailSqlRow] = Encoder.forProduct10[PersonDetailSqlRow, BusinessentityId, Option[/* max 8 chars */ String], /* user-picked */ FirstName, Option[/* user-picked */ MiddleName], /* user-picked */ LastName, String, Option[String], Option[String], Option[String], Option[TypoUUID]]("businessentityid", "title", "firstname", "middlename", "lastname", "jobtitle", "addressline1", "city", "postalcode", "rowguid")(x => (x.businessentityid, x.title, x.firstname, x.middlename, x.lastname, x.jobtitle, x.addressline1, x.city, x.postalcode, x.rowguid))(using BusinessentityId.encoder, Encoder.encodeOption(using Encoder.encodeString), FirstName.encoder, Encoder.encodeOption(using MiddleName.encoder), LastName.encoder, Encoder.encodeString, Encoder.encodeOption(using Encoder.encodeString), Encoder.encodeOption(using Encoder.encodeString), Encoder.encodeOption(using Encoder.encodeString), Encoder.encodeOption(using TypoUUID.encoder)) given read: Read[PersonDetailSqlRow] = { new Read.CompositeOfInstances(Array( new Read.Single(BusinessentityId.get).asInstanceOf[Read[Any]], new Read.SingleOpt(Meta.StringMeta.get).asInstanceOf[Read[Any]], new Read.Single(/* user-picked */ FirstName.get).asInstanceOf[Read[Any]], - new Read.SingleOpt(Name.get).asInstanceOf[Read[Any]], - new Read.Single(Name.get).asInstanceOf[Read[Any]], + new Read.SingleOpt(/* user-picked */ MiddleName.get).asInstanceOf[Read[Any]], + new Read.Single(/* user-picked */ LastName.get).asInstanceOf[Read[Any]], new Read.Single(Meta.StringMeta.get).asInstanceOf[Read[Any]], new Read.SingleOpt(Meta.StringMeta.get).asInstanceOf[Read[Any]], new Read.SingleOpt(Meta.StringMeta.get).asInstanceOf[Read[Any]], @@ -60,8 +61,8 @@ object PersonDetailSqlRow { businessentityid = arr(0).asInstanceOf[BusinessentityId], title = arr(1).asInstanceOf[Option[/* max 8 chars */ String]], firstname = arr(2).asInstanceOf[/* user-picked */ FirstName], - middlename = arr(3).asInstanceOf[Option[Name]], - lastname = arr(4).asInstanceOf[Name], + middlename = arr(3).asInstanceOf[Option[/* user-picked */ MiddleName]], + lastname = arr(4).asInstanceOf[/* user-picked */ LastName], jobtitle = arr(5).asInstanceOf[String], addressline1 = arr(6).asInstanceOf[Option[String]], city = arr(7).asInstanceOf[Option[String]], diff --git a/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/person_dynamic/PersonDynamicSqlRow.scala b/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/person_dynamic/PersonDynamicSqlRow.scala index f54150da9f..cb35d9fb50 100644 --- a/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/person_dynamic/PersonDynamicSqlRow.scala +++ b/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/person_dynamic/PersonDynamicSqlRow.scala @@ -5,8 +5,9 @@ */ package adventureworks.person_dynamic -import adventureworks.public.Name import adventureworks.userdefined.FirstName +import adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import doobie.util.Read import doobie.util.meta.Meta import io.circe.Decoder @@ -19,28 +20,28 @@ case class PersonDynamicSqlRow( /** Points to [[adventureworks.person.person.PersonRow.firstname]] */ firstname: /* user-picked */ FirstName, /** Points to [[adventureworks.person.person.PersonRow.middlename]] */ - middlename: Option[Name], + middlename: Option[/* user-picked */ MiddleName], /** Points to [[adventureworks.person.person.PersonRow.lastname]] */ - lastname: Name + lastname: /* user-picked */ LastName ) object PersonDynamicSqlRow { - given decoder: Decoder[PersonDynamicSqlRow] = Decoder.forProduct4[PersonDynamicSqlRow, Option[/* max 8 chars */ String], /* user-picked */ FirstName, Option[Name], Name]("title", "firstname", "middlename", "lastname")(PersonDynamicSqlRow.apply)(using Decoder.decodeOption(using Decoder.decodeString), FirstName.decoder, Decoder.decodeOption(using Name.decoder), Name.decoder) + given decoder: Decoder[PersonDynamicSqlRow] = Decoder.forProduct4[PersonDynamicSqlRow, Option[/* max 8 chars */ String], /* user-picked */ FirstName, Option[/* user-picked */ MiddleName], /* user-picked */ LastName]("title", "firstname", "middlename", "lastname")(PersonDynamicSqlRow.apply)(using Decoder.decodeOption(using Decoder.decodeString), FirstName.decoder, Decoder.decodeOption(using MiddleName.decoder), LastName.decoder) - given encoder: Encoder[PersonDynamicSqlRow] = Encoder.forProduct4[PersonDynamicSqlRow, Option[/* max 8 chars */ String], /* user-picked */ FirstName, Option[Name], Name]("title", "firstname", "middlename", "lastname")(x => (x.title, x.firstname, x.middlename, x.lastname))(using Encoder.encodeOption(using Encoder.encodeString), FirstName.encoder, Encoder.encodeOption(using Name.encoder), Name.encoder) + given encoder: Encoder[PersonDynamicSqlRow] = Encoder.forProduct4[PersonDynamicSqlRow, Option[/* max 8 chars */ String], /* user-picked */ FirstName, Option[/* user-picked */ MiddleName], /* user-picked */ LastName]("title", "firstname", "middlename", "lastname")(x => (x.title, x.firstname, x.middlename, x.lastname))(using Encoder.encodeOption(using Encoder.encodeString), FirstName.encoder, Encoder.encodeOption(using MiddleName.encoder), LastName.encoder) given read: Read[PersonDynamicSqlRow] = { new Read.CompositeOfInstances(Array( new Read.SingleOpt(Meta.StringMeta.get).asInstanceOf[Read[Any]], new Read.Single(/* user-picked */ FirstName.get).asInstanceOf[Read[Any]], - new Read.SingleOpt(Name.get).asInstanceOf[Read[Any]], - new Read.Single(Name.get).asInstanceOf[Read[Any]] + new Read.SingleOpt(/* user-picked */ MiddleName.get).asInstanceOf[Read[Any]], + new Read.Single(/* user-picked */ LastName.get).asInstanceOf[Read[Any]] ))(using scala.reflect.ClassTag.Any).map { arr => PersonDynamicSqlRow( title = arr(0).asInstanceOf[Option[/* max 8 chars */ String]], firstname = arr(1).asInstanceOf[/* user-picked */ FirstName], - middlename = arr(2).asInstanceOf[Option[Name]], - lastname = arr(3).asInstanceOf[Name] + middlename = arr(2).asInstanceOf[Option[/* user-picked */ MiddleName]], + lastname = arr(3).asInstanceOf[/* user-picked */ LastName] ) } } diff --git a/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/userdefined/ActiveFlag.scala b/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/userdefined/ActiveFlag.scala new file mode 100644 index 0000000000..02aa7b6178 --- /dev/null +++ b/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/userdefined/ActiveFlag.scala @@ -0,0 +1,42 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined + +import adventureworks.public.Flag +import doobie.postgres.Text +import doobie.util.Get +import doobie.util.Put +import io.circe.Decoder +import io.circe.Encoder +import typr.dsl.Bijection + +/** Shared type `ActiveFlag` + * Generated from TypeDefinitions matching + */ +case class ActiveFlag(value: Flag) extends scala.AnyVal + +object ActiveFlag { + given arrayGet: Get[Array[ActiveFlag]] = Flag.arrayGet.map(_.map(ActiveFlag.apply)) + + given arrayPut: Put[Array[ActiveFlag]] = Flag.arrayPut.contramap(_.map(_.value)) + + given bijection: Bijection[ActiveFlag, Flag] = Bijection.apply[ActiveFlag, Flag](_.value)(ActiveFlag.apply) + + given decoder: Decoder[ActiveFlag] = Flag.decoder.map(ActiveFlag.apply) + + given encoder: Encoder[ActiveFlag] = Flag.encoder.contramap(_.value) + + given get: Get[ActiveFlag] = Flag.get.map(ActiveFlag.apply) + + given pgText: Text[ActiveFlag] = { + new Text[ActiveFlag] { + override def unsafeEncode(v: ActiveFlag, sb: StringBuilder): Unit = Flag.pgText.unsafeEncode(v.value, sb) + override def unsafeArrayEncode(v: ActiveFlag, sb: StringBuilder): Unit = Flag.pgText.unsafeArrayEncode(v.value, sb) + } + } + + given put: Put[ActiveFlag] = Flag.put.contramap(_.value) +} \ No newline at end of file diff --git a/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/userdefined/CurrentFlag.scala b/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/userdefined/CurrentFlag.scala new file mode 100644 index 0000000000..459102c87e --- /dev/null +++ b/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/userdefined/CurrentFlag.scala @@ -0,0 +1,42 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined + +import adventureworks.public.Flag +import doobie.postgres.Text +import doobie.util.Get +import doobie.util.Put +import io.circe.Decoder +import io.circe.Encoder +import typr.dsl.Bijection + +/** Shared type `CurrentFlag` + * Generated from TypeDefinitions matching + */ +case class CurrentFlag(value: Flag) extends scala.AnyVal + +object CurrentFlag { + given arrayGet: Get[Array[CurrentFlag]] = Flag.arrayGet.map(_.map(CurrentFlag.apply)) + + given arrayPut: Put[Array[CurrentFlag]] = Flag.arrayPut.contramap(_.map(_.value)) + + given bijection: Bijection[CurrentFlag, Flag] = Bijection.apply[CurrentFlag, Flag](_.value)(CurrentFlag.apply) + + given decoder: Decoder[CurrentFlag] = Flag.decoder.map(CurrentFlag.apply) + + given encoder: Encoder[CurrentFlag] = Flag.encoder.contramap(_.value) + + given get: Get[CurrentFlag] = Flag.get.map(CurrentFlag.apply) + + given pgText: Text[CurrentFlag] = { + new Text[CurrentFlag] { + override def unsafeEncode(v: CurrentFlag, sb: StringBuilder): Unit = Flag.pgText.unsafeEncode(v.value, sb) + override def unsafeArrayEncode(v: CurrentFlag, sb: StringBuilder): Unit = Flag.pgText.unsafeArrayEncode(v.value, sb) + } + } + + given put: Put[CurrentFlag] = Flag.put.contramap(_.value) +} \ No newline at end of file diff --git a/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/userdefined/FirstName.scala b/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/userdefined/FirstName.scala new file mode 100644 index 0000000000..46fbead971 --- /dev/null +++ b/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/userdefined/FirstName.scala @@ -0,0 +1,42 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined + +import adventureworks.public.Name +import doobie.postgres.Text +import doobie.util.Get +import doobie.util.Put +import io.circe.Decoder +import io.circe.Encoder +import typr.dsl.Bijection + +/** Shared type `FirstName` + * Generated from TypeDefinitions matching + */ +case class FirstName(value: Name) extends scala.AnyVal + +object FirstName { + given arrayGet: Get[Array[FirstName]] = Name.arrayGet.map(_.map(FirstName.apply)) + + given arrayPut: Put[Array[FirstName]] = Name.arrayPut.contramap(_.map(_.value)) + + given bijection: Bijection[FirstName, Name] = Bijection.apply[FirstName, Name](_.value)(FirstName.apply) + + given decoder: Decoder[FirstName] = Name.decoder.map(FirstName.apply) + + given encoder: Encoder[FirstName] = Name.encoder.contramap(_.value) + + given get: Get[FirstName] = Name.get.map(FirstName.apply) + + given pgText: Text[FirstName] = { + new Text[FirstName] { + override def unsafeEncode(v: FirstName, sb: StringBuilder): Unit = Name.pgText.unsafeEncode(v.value, sb) + override def unsafeArrayEncode(v: FirstName, sb: StringBuilder): Unit = Name.pgText.unsafeArrayEncode(v.value, sb) + } + } + + given put: Put[FirstName] = Name.put.contramap(_.value) +} \ No newline at end of file diff --git a/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/userdefined/LastName.scala b/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/userdefined/LastName.scala new file mode 100644 index 0000000000..05f7638ede --- /dev/null +++ b/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/userdefined/LastName.scala @@ -0,0 +1,42 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined + +import adventureworks.public.Name +import doobie.postgres.Text +import doobie.util.Get +import doobie.util.Put +import io.circe.Decoder +import io.circe.Encoder +import typr.dsl.Bijection + +/** Shared type `LastName` + * Generated from TypeDefinitions matching + */ +case class LastName(value: Name) extends scala.AnyVal + +object LastName { + given arrayGet: Get[Array[LastName]] = Name.arrayGet.map(_.map(LastName.apply)) + + given arrayPut: Put[Array[LastName]] = Name.arrayPut.contramap(_.map(_.value)) + + given bijection: Bijection[LastName, Name] = Bijection.apply[LastName, Name](_.value)(LastName.apply) + + given decoder: Decoder[LastName] = Name.decoder.map(LastName.apply) + + given encoder: Encoder[LastName] = Name.encoder.contramap(_.value) + + given get: Get[LastName] = Name.get.map(LastName.apply) + + given pgText: Text[LastName] = { + new Text[LastName] { + override def unsafeEncode(v: LastName, sb: StringBuilder): Unit = Name.pgText.unsafeEncode(v.value, sb) + override def unsafeArrayEncode(v: LastName, sb: StringBuilder): Unit = Name.pgText.unsafeArrayEncode(v.value, sb) + } + } + + given put: Put[LastName] = Name.put.contramap(_.value) +} \ No newline at end of file diff --git a/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/userdefined/MiddleName.scala b/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/userdefined/MiddleName.scala new file mode 100644 index 0000000000..a47fe2dca6 --- /dev/null +++ b/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/userdefined/MiddleName.scala @@ -0,0 +1,42 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined + +import adventureworks.public.Name +import doobie.postgres.Text +import doobie.util.Get +import doobie.util.Put +import io.circe.Decoder +import io.circe.Encoder +import typr.dsl.Bijection + +/** Shared type `MiddleName` + * Generated from TypeDefinitions matching + */ +case class MiddleName(value: Name) extends scala.AnyVal + +object MiddleName { + given arrayGet: Get[Array[MiddleName]] = Name.arrayGet.map(_.map(MiddleName.apply)) + + given arrayPut: Put[Array[MiddleName]] = Name.arrayPut.contramap(_.map(_.value)) + + given bijection: Bijection[MiddleName, Name] = Bijection.apply[MiddleName, Name](_.value)(MiddleName.apply) + + given decoder: Decoder[MiddleName] = Name.decoder.map(MiddleName.apply) + + given encoder: Encoder[MiddleName] = Name.encoder.contramap(_.value) + + given get: Get[MiddleName] = Name.get.map(MiddleName.apply) + + given pgText: Text[MiddleName] = { + new Text[MiddleName] { + override def unsafeEncode(v: MiddleName, sb: StringBuilder): Unit = Name.pgText.unsafeEncode(v.value, sb) + override def unsafeArrayEncode(v: MiddleName, sb: StringBuilder): Unit = Name.pgText.unsafeArrayEncode(v.value, sb) + } + } + + given put: Put[MiddleName] = Name.put.contramap(_.value) +} \ No newline at end of file diff --git a/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/userdefined/OnlineOrderFlag.scala b/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/userdefined/OnlineOrderFlag.scala new file mode 100644 index 0000000000..3e50972ccd --- /dev/null +++ b/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/userdefined/OnlineOrderFlag.scala @@ -0,0 +1,42 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined + +import adventureworks.public.Flag +import doobie.postgres.Text +import doobie.util.Get +import doobie.util.Put +import io.circe.Decoder +import io.circe.Encoder +import typr.dsl.Bijection + +/** Shared type `OnlineOrderFlag` + * Generated from TypeDefinitions matching + */ +case class OnlineOrderFlag(value: Flag) extends scala.AnyVal + +object OnlineOrderFlag { + given arrayGet: Get[Array[OnlineOrderFlag]] = Flag.arrayGet.map(_.map(OnlineOrderFlag.apply)) + + given arrayPut: Put[Array[OnlineOrderFlag]] = Flag.arrayPut.contramap(_.map(_.value)) + + given bijection: Bijection[OnlineOrderFlag, Flag] = Bijection.apply[OnlineOrderFlag, Flag](_.value)(OnlineOrderFlag.apply) + + given decoder: Decoder[OnlineOrderFlag] = Flag.decoder.map(OnlineOrderFlag.apply) + + given encoder: Encoder[OnlineOrderFlag] = Flag.encoder.contramap(_.value) + + given get: Get[OnlineOrderFlag] = Flag.get.map(OnlineOrderFlag.apply) + + given pgText: Text[OnlineOrderFlag] = { + new Text[OnlineOrderFlag] { + override def unsafeEncode(v: OnlineOrderFlag, sb: StringBuilder): Unit = Flag.pgText.unsafeEncode(v.value, sb) + override def unsafeArrayEncode(v: OnlineOrderFlag, sb: StringBuilder): Unit = Flag.pgText.unsafeArrayEncode(v.value, sb) + } + } + + given put: Put[OnlineOrderFlag] = Flag.put.contramap(_.value) +} \ No newline at end of file diff --git a/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/userdefined/SalariedFlag.scala b/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/userdefined/SalariedFlag.scala new file mode 100644 index 0000000000..7fba951eee --- /dev/null +++ b/testers/pg/scala/doobie/generated-and-checked-in-3/adventureworks/userdefined/SalariedFlag.scala @@ -0,0 +1,42 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined + +import adventureworks.public.Flag +import doobie.postgres.Text +import doobie.util.Get +import doobie.util.Put +import io.circe.Decoder +import io.circe.Encoder +import typr.dsl.Bijection + +/** Shared type `SalariedFlag` + * Generated from TypeDefinitions matching + */ +case class SalariedFlag(value: Flag) extends scala.AnyVal + +object SalariedFlag { + given arrayGet: Get[Array[SalariedFlag]] = Flag.arrayGet.map(_.map(SalariedFlag.apply)) + + given arrayPut: Put[Array[SalariedFlag]] = Flag.arrayPut.contramap(_.map(_.value)) + + given bijection: Bijection[SalariedFlag, Flag] = Bijection.apply[SalariedFlag, Flag](_.value)(SalariedFlag.apply) + + given decoder: Decoder[SalariedFlag] = Flag.decoder.map(SalariedFlag.apply) + + given encoder: Encoder[SalariedFlag] = Flag.encoder.contramap(_.value) + + given get: Get[SalariedFlag] = Flag.get.map(SalariedFlag.apply) + + given pgText: Text[SalariedFlag] = { + new Text[SalariedFlag] { + override def unsafeEncode(v: SalariedFlag, sb: StringBuilder): Unit = Flag.pgText.unsafeEncode(v.value, sb) + override def unsafeArrayEncode(v: SalariedFlag, sb: StringBuilder): Unit = Flag.pgText.unsafeArrayEncode(v.value, sb) + } + } + + given put: Put[SalariedFlag] = Flag.put.contramap(_.value) +} \ No newline at end of file diff --git a/testers/pg/scala/doobie/src/scala/adventureworks/DSLTest.scala b/testers/pg/scala/doobie/src/scala/adventureworks/DSLTest.scala index 255080d293..de71a4ffdc 100644 --- a/testers/pg/scala/doobie/src/scala/adventureworks/DSLTest.scala +++ b/testers/pg/scala/doobie/src/scala/adventureworks/DSLTest.scala @@ -7,6 +7,7 @@ import adventureworks.person.emailaddress.EmailaddressRepoImpl import adventureworks.person.person.PersonRepoImpl import adventureworks.public.pgtest.PgtestRepoImpl import adventureworks.sales.salesperson.SalespersonRepoImpl +import adventureworks.public.Name import adventureworks.userdefined.FirstName import doobie.free.connection.delay @@ -24,7 +25,7 @@ class DSLTest extends SnapshotTest { val testInsert = new TestInsert(new Random(0), DomainInsert) for { businessentityRow <- testInsert.personBusinessentity() - personRow <- testInsert.personPerson(businessentityRow.businessentityid, persontype = "EM", FirstName("a")) + personRow <- testInsert.personPerson(businessentityRow.businessentityid, persontype = "EM", firstname = FirstName(Name("a"))) _ <- testInsert.personEmailaddress(personRow.businessentityid, Some("a@b.c")) employeeRow <- testInsert.humanresourcesEmployee(personRow.businessentityid, gender = "M", maritalstatus = "M", birthdate = TypoLocalDate("1998-01-01"), hiredate = TypoLocalDate("1997-01-01")) salespersonRow <- testInsert.salesSalesperson(employeeRow.businessentityid) diff --git a/testers/pg/scala/doobie/src/scala/adventureworks/RecordTest.scala b/testers/pg/scala/doobie/src/scala/adventureworks/RecordTest.scala index c494740437..9c2e58b273 100644 --- a/testers/pg/scala/doobie/src/scala/adventureworks/RecordTest.scala +++ b/testers/pg/scala/doobie/src/scala/adventureworks/RecordTest.scala @@ -2,6 +2,7 @@ package adventureworks import adventureworks.customtypes.* import adventureworks.person_row_join.PersonRowJoinSqlRepoImpl +import adventureworks.public.Name import adventureworks.userdefined.FirstName import doobie.free.connection.delay import org.scalactic.TypeCheckedTripleEquals @@ -17,7 +18,7 @@ class RecordTest extends AnyFunSuite with TypeCheckedTripleEquals { val testInsert = new TestInsert(new Random(0), DomainInsert) for { businessentityRow <- testInsert.personBusinessentity() - personRow <- testInsert.personPerson(businessentityRow.businessentityid, persontype = "EM", FirstName("a")) + personRow <- testInsert.personPerson(businessentityRow.businessentityid, persontype = "EM", firstname = FirstName(Name("a"))) _ <- testInsert.personEmailaddress(personRow.businessentityid, Some("a@b.c")) employeeRow <- testInsert.humanresourcesEmployee(personRow.businessentityid, gender = "M", maritalstatus = "M", birthdate = TypoLocalDate("1998-01-01"), hiredate = TypoLocalDate("1997-01-01")) _ <- testInsert.salesSalesperson(employeeRow.businessentityid) diff --git a/testers/pg/scala/doobie/src/scala/adventureworks/humanresources/employee/EmployeeTest.scala b/testers/pg/scala/doobie/src/scala/adventureworks/humanresources/employee/EmployeeTest.scala index 38548d8ec0..1a61d712d0 100644 --- a/testers/pg/scala/doobie/src/scala/adventureworks/humanresources/employee/EmployeeTest.scala +++ b/testers/pg/scala/doobie/src/scala/adventureworks/humanresources/employee/EmployeeTest.scala @@ -6,7 +6,7 @@ import adventureworks.customtypes.* import adventureworks.person.businessentity.{BusinessentityId, BusinessentityRepoImpl, BusinessentityRowUnsaved} import adventureworks.person.person.{PersonRepoImpl, PersonRowUnsaved} import adventureworks.public.{Flag, Name} -import adventureworks.userdefined.FirstName +import adventureworks.userdefined.{CurrentFlag, FirstName, LastName, MiddleName, SalariedFlag} import doobie.free.connection.delay import org.scalactic.TypeCheckedTripleEquals import org.scalatest.funsuite.AnyFunSuite @@ -24,9 +24,9 @@ class EmployeeTest extends AnyFunSuite with TypeCheckedTripleEquals { businessentityid = BusinessentityId(1), persontype = "SC", title = None, - firstname = FirstName("firstname"), - middlename = Some(Name("middlename")), - lastname = Name("lastname"), + firstname = FirstName(Name("firstname")), + middlename = Some(MiddleName(Name("middlename"))), + lastname = LastName(Name("lastname")), suffix = Some("suffix"), additionalcontactinfo = Some(TypoXml("")), demographics = None @@ -54,9 +54,9 @@ class EmployeeTest extends AnyFunSuite with TypeCheckedTripleEquals { businessentityid = businessentityRow.businessentityid, persontype = "SC", title = None, - firstname = FirstName("firstname"), - middlename = Some(Name("middlename")), - lastname = Name("lastname"), + firstname = FirstName(Name("firstname")), + middlename = Some(MiddleName(Name("middlename"))), + lastname = LastName(Name("lastname")), suffix = Some("suffix"), additionalcontactinfo = Some(TypoXml("")), demographics = None @@ -72,10 +72,10 @@ class EmployeeTest extends AnyFunSuite with TypeCheckedTripleEquals { maritalstatus = "M", gender = "F", hiredate = TypoLocalDate(LocalDate.now().minusYears(1)), - salariedflag = Defaulted.Provided(Flag(true)), + salariedflag = Defaulted.Provided(SalariedFlag(Flag(true))), vacationhours = Defaulted.Provided(TypoShort(1)), sickleavehours = Defaulted.Provided(TypoShort(2)), - currentflag = Defaulted.Provided(Flag(true)), + currentflag = Defaulted.Provided(CurrentFlag(Flag(true))), rowguid = Defaulted.Provided(TypoUUID.randomUUID), modifieddate = Defaulted.Provided(TypoLocalDateTime.now), organizationnode = Defaulted.Provided(Some("/")) @@ -121,10 +121,10 @@ class EmployeeTest extends AnyFunSuite with TypeCheckedTripleEquals { employeeRowUnsaved.gender, employeeRowUnsaved.hiredate, // below: these are assertions for the static default values - Flag(true), + SalariedFlag(Flag(true)), TypoShort(0), TypoShort(0), - Flag(true), + CurrentFlag(Flag(true)), _, _, Some("/") diff --git a/testers/pg/scala/doobie/src/scala/adventureworks/person/MultiRepoTest.scala b/testers/pg/scala/doobie/src/scala/adventureworks/person/MultiRepoTest.scala index eb007e5aca..3b5dbb0d26 100644 --- a/testers/pg/scala/doobie/src/scala/adventureworks/person/MultiRepoTest.scala +++ b/testers/pg/scala/doobie/src/scala/adventureworks/person/MultiRepoTest.scala @@ -6,7 +6,7 @@ import adventureworks.person.businessentityaddress.* import adventureworks.person.countryregion.CountryregionId import adventureworks.person.person.* import adventureworks.public.Name -import adventureworks.userdefined.FirstName +import adventureworks.userdefined.{FirstName, LastName} import adventureworks.{DomainInsert, TestInsert, withConnection} import cats.syntax.applicative.* import cats.syntax.traverse.* @@ -77,7 +77,7 @@ class PersonWithAddressesTest extends AnyFunSuite with TypeCheckedTripleEquals { val testInsert = new TestInsert(new Random(1), DomainInsert) for { businessentityRow <- testInsert.personBusinessentity() - personRow <- testInsert.personPerson(businessentityRow.businessentityid, persontype = "SC", FirstName("name")) + personRow <- testInsert.personPerson(businessentityRow.businessentityid, persontype = "SC", firstname = FirstName(Name("name"))) countryregionRow <- testInsert.personCountryregion(CountryregionId("NOR")) salesterritoryRow <- testInsert.salesSalesterritory(countryregionRow.countryregioncode) stateprovinceRow <- testInsert.personStateprovince(countryregionRow.countryregioncode, salesterritoryRow.territoryid) diff --git a/testers/pg/scala/doobie/src/scala/adventureworks/production/product/CompositeIdsTest.scala b/testers/pg/scala/doobie/src/scala/adventureworks/production/product/CompositeIdsTest.scala index 846e763757..fdc39999a9 100644 --- a/testers/pg/scala/doobie/src/scala/adventureworks/production/product/CompositeIdsTest.scala +++ b/testers/pg/scala/doobie/src/scala/adventureworks/production/product/CompositeIdsTest.scala @@ -7,7 +7,7 @@ import adventureworks.person.person.{PersonRepo, PersonRepoImpl, PersonRepoMock, import adventureworks.production.productcosthistory.* import adventureworks.production.unitmeasure.UnitmeasureId import adventureworks.public.{Name, NameStyle} -import adventureworks.userdefined.FirstName +import adventureworks.userdefined.{FirstName, LastName} import adventureworks.{DomainInsert, SnapshotTest, TestInsert, withConnection} import doobie.free.connection.delay import org.scalatest.Assertion @@ -73,9 +73,9 @@ class CompositeIdsTest extends SnapshotTest { persontype = "SC", namestyle = NameStyle(true), title = None, - firstname = FirstName(s"first name $i"), + firstname = FirstName(Name(s"first name $i")), middlename = None, - lastname = Name(s"last name $i"), + lastname = LastName(Name(s"last name $i")), suffix = None, emailpromotion = 1, additionalcontactinfo = None, diff --git a/testers/pg/scala/doobie/src/scala/adventureworks/userdefined/FirstName.scala b/testers/pg/scala/doobie/src/scala/adventureworks/userdefined/FirstName.scala deleted file mode 100644 index 55581eec2c..0000000000 --- a/testers/pg/scala/doobie/src/scala/adventureworks/userdefined/FirstName.scala +++ /dev/null @@ -1,20 +0,0 @@ -package adventureworks.userdefined - -import doobie.postgres.Text -import doobie.util.meta.Meta -import doobie.util.{Get, Put} -import io.circe.{Decoder, Encoder} -import typr.dsl.Bijection - -case class FirstName(value: String) extends AnyVal -object FirstName { - implicit lazy val arrayGet: Get[Array[FirstName]] = adventureworks.StringArrayMeta.get.map(_.map(FirstName.apply)) - implicit lazy val arrayPut: Put[Array[FirstName]] = adventureworks.StringArrayMeta.put.contramap(_.map(_.value)) - implicit lazy val bijection: Bijection[FirstName, String] = Bijection[FirstName, String](_.value)(FirstName.apply) - implicit lazy val decoder: Decoder[FirstName] = Decoder.decodeString.map(FirstName.apply) - implicit lazy val encoder: Encoder[FirstName] = Encoder.encodeString.contramap(_.value) - implicit lazy val get: Get[FirstName] = Meta.StringMeta.get.map(FirstName.apply) - implicit lazy val ordering: Ordering[FirstName] = Ordering.by(_.value) - implicit lazy val put: Put[FirstName] = Meta.StringMeta.put.contramap(_.value) - implicit lazy val pgText: Text[FirstName] = Text.stringInstance.contramap(_.value) -} diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/TestInsert.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/TestInsert.scala index db1d9a763c..8f101c6eb3 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/TestInsert.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/TestInsert.scala @@ -133,7 +133,11 @@ import adventureworks.sales.salesterritory.SalesterritoryId import adventureworks.sales.salesterritory.SalesterritoryRepoImpl import adventureworks.sales.salesterritory.SalesterritoryRow import adventureworks.sales.salesterritory.SalesterritoryRowUnsaved +import adventureworks.userdefined.CurrentFlag import adventureworks.userdefined.FirstName +import adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName +import adventureworks.userdefined.SalariedFlag import dev.typr.foundations.data.Inet import dev.typr.foundations.data.Int2Vector import dev.typr.foundations.data.Json @@ -190,10 +194,10 @@ case class TestInsert( nationalidnumber: String = RandomHelper.alphanumeric(random, 15), loginid: String = RandomHelper.alphanumeric(random, 20), jobtitle: String = RandomHelper.alphanumeric(random, 20), - salariedflag: Defaulted[Flag] = new UseDefault(), + salariedflag: Defaulted[/* user-picked */ SalariedFlag] = new UseDefault(), vacationhours: Defaulted[java.lang.Short] = new UseDefault(), sickleavehours: Defaulted[java.lang.Short] = new UseDefault(), - currentflag: Defaulted[Flag] = new UseDefault(), + currentflag: Defaulted[/* user-picked */ CurrentFlag] = new UseDefault(), rowguid: Defaulted[UUID] = new UseDefault(), modifieddate: Defaulted[LocalDateTime] = new UseDefault(), organizationnode: Defaulted[Optional[String]] = new UseDefault() @@ -352,10 +356,10 @@ case class TestInsert( def personPerson( businessentityid: BusinessentityId, persontype: String, - firstname: /* user-picked */ FirstName, title: Optional[/* max 8 chars */ String] = (if (random.nextBoolean()) Optional.empty() else Optional.of(RandomHelper.alphanumeric(random, 8))), - middlename: Optional[Name] = (if (random.nextBoolean()) Optional.empty() else Optional.of(domainInsert.publicName(random))), - lastname: Name = domainInsert.publicName(random), + firstname: /* user-picked */ FirstName = new FirstName(domainInsert.publicName(random)), + middlename: Optional[/* user-picked */ MiddleName] = (if (random.nextBoolean()) Optional.empty() else Optional.of(new MiddleName(domainInsert.publicName(random)))), + lastname: /* user-picked */ LastName = new LastName(domainInsert.publicName(random)), suffix: Optional[/* max 10 chars */ String] = (if (random.nextBoolean()) Optional.empty() else Optional.of(RandomHelper.alphanumeric(random, 10))), additionalcontactinfo: Optional[Xml] = (if (random.nextBoolean()) Optional.empty() else Optional.of(new Xml(""))), demographics: Optional[Xml] = (if (random.nextBoolean()) Optional.empty() else Optional.of(new Xml(""))), diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/department/DepartmentFields.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/department/DepartmentFields.scala index cd007f5a61..aadef66bf1 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/department/DepartmentFields.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/department/DepartmentFields.scala @@ -28,7 +28,7 @@ class DepartmentFields(val `_path`: java.util.List[Path]) extends TupleExpr4[Dep Optional.empty(), Optional.of("int4"), (row, value) => row.copy(departmentid = value), - DepartmentId.dbType + DepartmentId.pgType ) } @@ -40,7 +40,7 @@ class DepartmentFields(val `_path`: java.util.List[Path]) extends TupleExpr4[Dep Optional.empty(), Optional.of("varchar"), (row, value) => row.copy(name = value), - Name.dbType + Name.pgType ) } @@ -52,7 +52,7 @@ class DepartmentFields(val `_path`: java.util.List[Path]) extends TupleExpr4[Dep Optional.empty(), Optional.of("varchar"), (row, value) => row.copy(groupname = value), - Name.dbType + Name.pgType ) } diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/department/DepartmentId.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/department/DepartmentId.scala index 3c01c6cd66..98e30dac49 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/department/DepartmentId.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/department/DepartmentId.scala @@ -16,7 +16,7 @@ case class DepartmentId(@JsonValue value: Integer) extends scala.AnyVal object DepartmentId { given bijection: Bijection[DepartmentId, Integer] = Bijection.apply[DepartmentId, Integer](_.value)(DepartmentId.apply) - given dbType: PgType[DepartmentId] = PgTypes.int4.bimap(DepartmentId.apply, _.value) + given pgType: PgType[DepartmentId] = PgTypes.int4.bimap(DepartmentId.apply, _.value) - given dbTypeArray: PgType[Array[DepartmentId]] = PgTypes.int4Array.bimap(xs => xs.map(DepartmentId.apply), xs => xs.map(_.value)) + given pgTypeArray: PgType[Array[DepartmentId]] = PgTypes.int4Array.bimap(xs => xs.map(DepartmentId.apply), xs => xs.map(_.value)) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRepoImpl.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRepoImpl.scala index 095bc2238f..678878236d 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRepoImpl.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRepoImpl.scala @@ -22,19 +22,19 @@ import dev.typr.foundations.Fragment.interpolate class DepartmentRepoImpl extends DepartmentRepo { override def delete: DeleteBuilder[DepartmentFields, DepartmentRow] = DeleteBuilder.of(""""humanresources"."department"""", DepartmentFields.structure, Dialect.POSTGRESQL) - override def deleteById(departmentid: DepartmentId)(using c: Connection): java.lang.Boolean = interpolate(Fragment.lit("""delete from "humanresources"."department" where "departmentid" = """), Fragment.encode(DepartmentId.dbType, departmentid), Fragment.lit("")).update().runUnchecked(c) > 0 + override def deleteById(departmentid: DepartmentId)(using c: Connection): java.lang.Boolean = interpolate(Fragment.lit("""delete from "humanresources"."department" where "departmentid" = """), Fragment.encode(DepartmentId.pgType, departmentid), Fragment.lit("")).update().runUnchecked(c) > 0 override def deleteByIds(departmentids: Array[DepartmentId])(using c: Connection): Integer = { interpolate(Fragment.lit("""delete from "humanresources"."department" - where "departmentid" = ANY("""), Fragment.encode(DepartmentId.dbTypeArray, departmentids), Fragment.lit(")")) + where "departmentid" = ANY("""), Fragment.encode(DepartmentId.pgTypeArray, departmentids), Fragment.lit(")")) .update() .runUnchecked(c) } override def insert(unsaved: DepartmentRow)(using c: Connection): DepartmentRow = { interpolate(Fragment.lit("""insert into "humanresources"."department"("departmentid", "name", "groupname", "modifieddate") - values ("""), Fragment.encode(DepartmentId.dbType, unsaved.departmentid), Fragment.lit("::int4, "), Fragment.encode(Name.dbType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(Name.dbType, unsaved.groupname), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) + values ("""), Fragment.encode(DepartmentId.pgType, unsaved.departmentid), Fragment.lit("::int4, "), Fragment.encode(Name.pgType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(Name.pgType, unsaved.groupname), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) RETURNING "departmentid", "name", "groupname", "modifieddate" """)) .updateReturning(DepartmentRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -44,12 +44,12 @@ class DepartmentRepoImpl extends DepartmentRepo { val columns: ArrayList[Fragment] = new ArrayList() val values: ArrayList[Fragment] = new ArrayList() columns.add(Fragment.lit(""""name"""")): @scala.annotation.nowarn - values.add(interpolate(Fragment.encode(Name.dbType, unsaved.name), Fragment.lit("::varchar"))): @scala.annotation.nowarn + values.add(interpolate(Fragment.encode(Name.pgType, unsaved.name), Fragment.lit("::varchar"))): @scala.annotation.nowarn columns.add(Fragment.lit(""""groupname"""")): @scala.annotation.nowarn - values.add(interpolate(Fragment.encode(Name.dbType, unsaved.groupname), Fragment.lit("::varchar"))): @scala.annotation.nowarn + values.add(interpolate(Fragment.encode(Name.pgType, unsaved.groupname), Fragment.lit("::varchar"))): @scala.annotation.nowarn unsaved.departmentid.visit( { }, - value => { columns.add(Fragment.lit(""""departmentid"""")): @scala.annotation.nowarn; values.add(interpolate(Fragment.encode(DepartmentId.dbType, value), Fragment.lit("::int4"))): @scala.annotation.nowarn } + value => { columns.add(Fragment.lit(""""departmentid"""")): @scala.annotation.nowarn; values.add(interpolate(Fragment.encode(DepartmentId.pgType, value), Fragment.lit("::int4"))): @scala.annotation.nowarn } ); unsaved.modifieddate.visit( { }, @@ -86,13 +86,13 @@ class DepartmentRepoImpl extends DepartmentRepo { override def selectById(departmentid: DepartmentId)(using c: Connection): Optional[DepartmentRow] = { interpolate(Fragment.lit("""select "departmentid", "name", "groupname", "modifieddate" from "humanresources"."department" - where "departmentid" = """), Fragment.encode(DepartmentId.dbType, departmentid), Fragment.lit("")).query(DepartmentRow.`_rowParser`.first()).runUnchecked(c) + where "departmentid" = """), Fragment.encode(DepartmentId.pgType, departmentid), Fragment.lit("")).query(DepartmentRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(departmentids: Array[DepartmentId])(using c: Connection): java.util.List[DepartmentRow] = { interpolate(Fragment.lit("""select "departmentid", "name", "groupname", "modifieddate" from "humanresources"."department" - where "departmentid" = ANY("""), Fragment.encode(DepartmentId.dbTypeArray, departmentids), Fragment.lit(")")).query(DepartmentRow.`_rowParser`.all()).runUnchecked(c) + where "departmentid" = ANY("""), Fragment.encode(DepartmentId.pgTypeArray, departmentids), Fragment.lit(")")).query(DepartmentRow.`_rowParser`.all()).runUnchecked(c) } override def selectByIdsTracked(departmentids: Array[DepartmentId])(using c: Connection): java.util.Map[DepartmentId, DepartmentRow] = { @@ -106,15 +106,15 @@ class DepartmentRepoImpl extends DepartmentRepo { override def update(row: DepartmentRow)(using c: Connection): java.lang.Boolean = { val departmentid: DepartmentId = row.departmentid return interpolate(Fragment.lit("""update "humanresources"."department" - set "name" = """), Fragment.encode(Name.dbType, row.name), Fragment.lit("""::varchar, - "groupname" = """), Fragment.encode(Name.dbType, row.groupname), Fragment.lit("""::varchar, + set "name" = """), Fragment.encode(Name.pgType, row.name), Fragment.lit("""::varchar, + "groupname" = """), Fragment.encode(Name.pgType, row.groupname), Fragment.lit("""::varchar, "modifieddate" = """), Fragment.encode(PgTypes.timestamp, row.modifieddate), Fragment.lit("""::timestamp - where "departmentid" = """), Fragment.encode(DepartmentId.dbType, departmentid), Fragment.lit("")).update().runUnchecked(c) > 0 + where "departmentid" = """), Fragment.encode(DepartmentId.pgType, departmentid), Fragment.lit("")).update().runUnchecked(c) > 0 } override def upsert(unsaved: DepartmentRow)(using c: Connection): DepartmentRow = { interpolate(Fragment.lit("""insert into "humanresources"."department"("departmentid", "name", "groupname", "modifieddate") - values ("""), Fragment.encode(DepartmentId.dbType, unsaved.departmentid), Fragment.lit("::int4, "), Fragment.encode(Name.dbType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(Name.dbType, unsaved.groupname), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) + values ("""), Fragment.encode(DepartmentId.pgType, unsaved.departmentid), Fragment.lit("::int4, "), Fragment.encode(Name.pgType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(Name.pgType, unsaved.groupname), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) on conflict ("departmentid") do update set "name" = EXCLUDED."name", diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRow.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRow.scala index 19542e1855..2194bdc761 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRow.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRow.scala @@ -54,7 +54,7 @@ case class DepartmentRow( } object DepartmentRow { - val `_rowParser`: RowParser[DepartmentRow] = RowParsers.of(DepartmentId.dbType, Name.dbType, Name.dbType, PgTypes.timestamp, DepartmentRow.apply, row => Array[Any](row.departmentid, row.name, row.groupname, row.modifieddate)) + val `_rowParser`: RowParser[DepartmentRow] = RowParsers.of(DepartmentId.pgType, Name.pgType, Name.pgType, PgTypes.timestamp, DepartmentRow.apply, row => Array[Any](row.departmentid, row.name, row.groupname, row.modifieddate)) given pgText: PgText[DepartmentRow] = PgText.from(`_rowParser`) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRowUnsaved.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRowUnsaved.scala index 7c567f0401..251375f85f 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRowUnsaved.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRowUnsaved.scala @@ -39,5 +39,5 @@ case class DepartmentRowUnsaved( } object DepartmentRowUnsaved { - given pgText: PgText[DepartmentRowUnsaved] = PgText.instance((row, sb) => { Name.dbType.text.unsafeEncode(row.name, sb); sb.append(PgText.DELIMETER); Name.dbType.text.unsafeEncode(row.groupname, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using DepartmentId.dbType.text).unsafeEncode(row.departmentid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) + given pgText: PgText[DepartmentRowUnsaved] = PgText.instance((row, sb) => { Name.pgType.text.unsafeEncode(row.name, sb); sb.append(PgText.DELIMETER); Name.pgType.text.unsafeEncode(row.groupname, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using DepartmentId.pgType.text).unsafeEncode(row.departmentid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeFields.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeFields.scala index 3acd9c35d8..da75045d29 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeFields.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeFields.scala @@ -8,7 +8,8 @@ package adventureworks.humanresources.employee import adventureworks.person.businessentity.BusinessentityId import adventureworks.person.person.PersonFields import adventureworks.person.person.PersonRow -import adventureworks.public.Flag +import adventureworks.userdefined.CurrentFlag +import adventureworks.userdefined.SalariedFlag import dev.typr.foundations.PgTypes import dev.typr.foundations.RowParser import dev.typr.foundations.dsl.FieldsBase @@ -26,7 +27,7 @@ import java.time.LocalDateTime import java.util.Optional import java.util.UUID -class EmployeeFields(val `_path`: java.util.List[Path]) extends TupleExpr15[BusinessentityId, String, String, String, LocalDate, String, String, LocalDate, Flag, java.lang.Short, java.lang.Short, Flag, UUID, LocalDateTime, String] with RelationStructure[EmployeeFields, EmployeeRow] with FieldsBase[EmployeeRow] { +class EmployeeFields(val `_path`: java.util.List[Path]) extends TupleExpr15[BusinessentityId, String, String, String, LocalDate, String, String, LocalDate, /* user-picked */ SalariedFlag, java.lang.Short, java.lang.Short, /* user-picked */ CurrentFlag, UUID, LocalDateTime, String] with RelationStructure[EmployeeFields, EmployeeRow] with FieldsBase[EmployeeRow] { def businessentityid: IdField[BusinessentityId, EmployeeRow] = { new IdField[BusinessentityId, EmployeeRow]( _path, @@ -35,7 +36,7 @@ class EmployeeFields(val `_path`: java.util.List[Path]) extends TupleExpr15[Busi Optional.empty(), Optional.of("int4"), (row, value) => row.copy(businessentityid = value), - BusinessentityId.dbType + BusinessentityId.pgType ) } @@ -123,15 +124,15 @@ class EmployeeFields(val `_path`: java.util.List[Path]) extends TupleExpr15[Busi ) } - def salariedflag: Field[Flag, EmployeeRow] = { - new Field[Flag, EmployeeRow]( + def salariedflag: Field[/* user-picked */ SalariedFlag, EmployeeRow] = { + new Field[/* user-picked */ SalariedFlag, EmployeeRow]( _path, "salariedflag", _.salariedflag, Optional.empty(), Optional.of("bool"), (row, value) => row.copy(salariedflag = value), - Flag.dbType + SalariedFlag.pgType ) } @@ -159,15 +160,15 @@ class EmployeeFields(val `_path`: java.util.List[Path]) extends TupleExpr15[Busi ) } - def currentflag: Field[Flag, EmployeeRow] = { - new Field[Flag, EmployeeRow]( + def currentflag: Field[/* user-picked */ CurrentFlag, EmployeeRow] = { + new Field[/* user-picked */ CurrentFlag, EmployeeRow]( _path, "currentflag", _.currentflag, Optional.empty(), Optional.of("bool"), (row, value) => row.copy(currentflag = value), - Flag.dbType + CurrentFlag.pgType ) } @@ -231,13 +232,13 @@ class EmployeeFields(val `_path`: java.util.List[Path]) extends TupleExpr15[Busi override def `_8`: SqlExpr[LocalDate] = hiredate - override def `_9`: SqlExpr[Flag] = salariedflag + override def `_9`: SqlExpr[/* user-picked */ SalariedFlag] = salariedflag override def `_10`: SqlExpr[java.lang.Short] = vacationhours override def `_11`: SqlExpr[java.lang.Short] = sickleavehours - override def `_12`: SqlExpr[Flag] = currentflag + override def `_12`: SqlExpr[/* user-picked */ CurrentFlag] = currentflag override def `_13`: SqlExpr[UUID] = rowguid diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRepoImpl.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRepoImpl.scala index 8e35a54bab..c5493d6493 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRepoImpl.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRepoImpl.scala @@ -6,7 +6,8 @@ package adventureworks.humanresources.employee import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Flag +import adventureworks.userdefined.CurrentFlag +import adventureworks.userdefined.SalariedFlag import dev.typr.foundations.Fragment import dev.typr.foundations.PgTypes import dev.typr.foundations.dsl.DeleteBuilder @@ -23,19 +24,19 @@ import dev.typr.foundations.Fragment.interpolate class EmployeeRepoImpl extends EmployeeRepo { override def delete: DeleteBuilder[EmployeeFields, EmployeeRow] = DeleteBuilder.of(""""humanresources"."employee"""", EmployeeFields.structure, Dialect.POSTGRESQL) - override def deleteById(businessentityid: BusinessentityId)(using c: Connection): java.lang.Boolean = interpolate(Fragment.lit("""delete from "humanresources"."employee" where "businessentityid" = """), Fragment.encode(BusinessentityId.dbType, businessentityid), Fragment.lit("")).update().runUnchecked(c) > 0 + override def deleteById(businessentityid: BusinessentityId)(using c: Connection): java.lang.Boolean = interpolate(Fragment.lit("""delete from "humanresources"."employee" where "businessentityid" = """), Fragment.encode(BusinessentityId.pgType, businessentityid), Fragment.lit("")).update().runUnchecked(c) > 0 override def deleteByIds(businessentityids: Array[BusinessentityId])(using c: Connection): Integer = { interpolate(Fragment.lit("""delete from "humanresources"."employee" - where "businessentityid" = ANY("""), Fragment.encode(BusinessentityId.dbTypeArray, businessentityids), Fragment.lit(")")) + where "businessentityid" = ANY("""), Fragment.encode(BusinessentityId.pgTypeArray, businessentityids), Fragment.lit(")")) .update() .runUnchecked(c) } override def insert(unsaved: EmployeeRow)(using c: Connection): EmployeeRow = { interpolate(Fragment.lit("""insert into "humanresources"."employee"("businessentityid", "nationalidnumber", "loginid", "jobtitle", "birthdate", "maritalstatus", "gender", "hiredate", "salariedflag", "vacationhours", "sickleavehours", "currentflag", "rowguid", "modifieddate", "organizationnode") - values ("""), Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.text, unsaved.nationalidnumber), Fragment.lit(", "), Fragment.encode(PgTypes.text, unsaved.loginid), Fragment.lit(", "), Fragment.encode(PgTypes.text, unsaved.jobtitle), Fragment.lit(", "), Fragment.encode(PgTypes.date, unsaved.birthdate), Fragment.lit("::date, "), Fragment.encode(PgTypes.bpchar, unsaved.maritalstatus), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.bpchar, unsaved.gender), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.date, unsaved.hiredate), Fragment.lit("::date, "), Fragment.encode(Flag.dbType, unsaved.salariedflag), Fragment.lit("::bool, "), Fragment.encode(PgTypes.int2, unsaved.vacationhours), Fragment.lit("::int2, "), Fragment.encode(PgTypes.int2, unsaved.sickleavehours), Fragment.lit("::int2, "), Fragment.encode(Flag.dbType, unsaved.currentflag), Fragment.lit("::bool, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.text.opt(), unsaved.organizationnode), Fragment.lit(""") + values ("""), Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.text, unsaved.nationalidnumber), Fragment.lit(", "), Fragment.encode(PgTypes.text, unsaved.loginid), Fragment.lit(", "), Fragment.encode(PgTypes.text, unsaved.jobtitle), Fragment.lit(", "), Fragment.encode(PgTypes.date, unsaved.birthdate), Fragment.lit("::date, "), Fragment.encode(PgTypes.bpchar, unsaved.maritalstatus), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.bpchar, unsaved.gender), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.date, unsaved.hiredate), Fragment.lit("::date, "), Fragment.encode(SalariedFlag.pgType, unsaved.salariedflag), Fragment.lit("::bool, "), Fragment.encode(PgTypes.int2, unsaved.vacationhours), Fragment.lit("::int2, "), Fragment.encode(PgTypes.int2, unsaved.sickleavehours), Fragment.lit("::int2, "), Fragment.encode(CurrentFlag.pgType, unsaved.currentflag), Fragment.lit("::bool, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.text.opt(), unsaved.organizationnode), Fragment.lit(""") RETURNING "businessentityid", "nationalidnumber", "loginid", "jobtitle", "birthdate", "maritalstatus", "gender", "hiredate", "salariedflag", "vacationhours", "sickleavehours", "currentflag", "rowguid", "modifieddate", "organizationnode" """)) .updateReturning(EmployeeRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -45,7 +46,7 @@ class EmployeeRepoImpl extends EmployeeRepo { val columns: ArrayList[Fragment] = new ArrayList() val values: ArrayList[Fragment] = new ArrayList() columns.add(Fragment.lit(""""businessentityid"""")): @scala.annotation.nowarn - values.add(interpolate(Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid), Fragment.lit("::int4"))): @scala.annotation.nowarn + values.add(interpolate(Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid), Fragment.lit("::int4"))): @scala.annotation.nowarn columns.add(Fragment.lit(""""nationalidnumber"""")): @scala.annotation.nowarn values.add(interpolate(Fragment.encode(PgTypes.text, unsaved.nationalidnumber), Fragment.lit(""))): @scala.annotation.nowarn columns.add(Fragment.lit(""""loginid"""")): @scala.annotation.nowarn @@ -62,7 +63,7 @@ class EmployeeRepoImpl extends EmployeeRepo { values.add(interpolate(Fragment.encode(PgTypes.date, unsaved.hiredate), Fragment.lit("::date"))): @scala.annotation.nowarn unsaved.salariedflag.visit( { }, - value => { columns.add(Fragment.lit(""""salariedflag"""")): @scala.annotation.nowarn; values.add(interpolate(Fragment.encode(Flag.dbType, value), Fragment.lit("::bool"))): @scala.annotation.nowarn } + value => { columns.add(Fragment.lit(""""salariedflag"""")): @scala.annotation.nowarn; values.add(interpolate(Fragment.encode(SalariedFlag.pgType, value), Fragment.lit("::bool"))): @scala.annotation.nowarn } ); unsaved.vacationhours.visit( { }, @@ -74,7 +75,7 @@ class EmployeeRepoImpl extends EmployeeRepo { ); unsaved.currentflag.visit( { }, - value => { columns.add(Fragment.lit(""""currentflag"""")): @scala.annotation.nowarn; values.add(interpolate(Fragment.encode(Flag.dbType, value), Fragment.lit("::bool"))): @scala.annotation.nowarn } + value => { columns.add(Fragment.lit(""""currentflag"""")): @scala.annotation.nowarn; values.add(interpolate(Fragment.encode(CurrentFlag.pgType, value), Fragment.lit("::bool"))): @scala.annotation.nowarn } ); unsaved.rowguid.visit( { }, @@ -119,13 +120,13 @@ class EmployeeRepoImpl extends EmployeeRepo { override def selectById(businessentityid: BusinessentityId)(using c: Connection): Optional[EmployeeRow] = { interpolate(Fragment.lit("""select "businessentityid", "nationalidnumber", "loginid", "jobtitle", "birthdate", "maritalstatus", "gender", "hiredate", "salariedflag", "vacationhours", "sickleavehours", "currentflag", "rowguid", "modifieddate", "organizationnode" from "humanresources"."employee" - where "businessentityid" = """), Fragment.encode(BusinessentityId.dbType, businessentityid), Fragment.lit("")).query(EmployeeRow.`_rowParser`.first()).runUnchecked(c) + where "businessentityid" = """), Fragment.encode(BusinessentityId.pgType, businessentityid), Fragment.lit("")).query(EmployeeRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(businessentityids: Array[BusinessentityId])(using c: Connection): java.util.List[EmployeeRow] = { interpolate(Fragment.lit("""select "businessentityid", "nationalidnumber", "loginid", "jobtitle", "birthdate", "maritalstatus", "gender", "hiredate", "salariedflag", "vacationhours", "sickleavehours", "currentflag", "rowguid", "modifieddate", "organizationnode" from "humanresources"."employee" - where "businessentityid" = ANY("""), Fragment.encode(BusinessentityId.dbTypeArray, businessentityids), Fragment.lit(")")).query(EmployeeRow.`_rowParser`.all()).runUnchecked(c) + where "businessentityid" = ANY("""), Fragment.encode(BusinessentityId.pgTypeArray, businessentityids), Fragment.lit(")")).query(EmployeeRow.`_rowParser`.all()).runUnchecked(c) } override def selectByIdsTracked(businessentityids: Array[BusinessentityId])(using c: Connection): java.util.Map[BusinessentityId, EmployeeRow] = { @@ -146,19 +147,19 @@ class EmployeeRepoImpl extends EmployeeRepo { "maritalstatus" = """), Fragment.encode(PgTypes.bpchar, row.maritalstatus), Fragment.lit("""::bpchar, "gender" = """), Fragment.encode(PgTypes.bpchar, row.gender), Fragment.lit("""::bpchar, "hiredate" = """), Fragment.encode(PgTypes.date, row.hiredate), Fragment.lit("""::date, - "salariedflag" = """), Fragment.encode(Flag.dbType, row.salariedflag), Fragment.lit("""::bool, + "salariedflag" = """), Fragment.encode(SalariedFlag.pgType, row.salariedflag), Fragment.lit("""::bool, "vacationhours" = """), Fragment.encode(PgTypes.int2, row.vacationhours), Fragment.lit("""::int2, "sickleavehours" = """), Fragment.encode(PgTypes.int2, row.sickleavehours), Fragment.lit("""::int2, - "currentflag" = """), Fragment.encode(Flag.dbType, row.currentflag), Fragment.lit("""::bool, + "currentflag" = """), Fragment.encode(CurrentFlag.pgType, row.currentflag), Fragment.lit("""::bool, "rowguid" = """), Fragment.encode(PgTypes.uuid, row.rowguid), Fragment.lit("""::uuid, "modifieddate" = """), Fragment.encode(PgTypes.timestamp, row.modifieddate), Fragment.lit("""::timestamp, "organizationnode" = """), Fragment.encode(PgTypes.text.opt(), row.organizationnode), Fragment.lit(""" - where "businessentityid" = """), Fragment.encode(BusinessentityId.dbType, businessentityid), Fragment.lit("")).update().runUnchecked(c) > 0 + where "businessentityid" = """), Fragment.encode(BusinessentityId.pgType, businessentityid), Fragment.lit("")).update().runUnchecked(c) > 0 } override def upsert(unsaved: EmployeeRow)(using c: Connection): EmployeeRow = { interpolate(Fragment.lit("""insert into "humanresources"."employee"("businessentityid", "nationalidnumber", "loginid", "jobtitle", "birthdate", "maritalstatus", "gender", "hiredate", "salariedflag", "vacationhours", "sickleavehours", "currentflag", "rowguid", "modifieddate", "organizationnode") - values ("""), Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.text, unsaved.nationalidnumber), Fragment.lit(", "), Fragment.encode(PgTypes.text, unsaved.loginid), Fragment.lit(", "), Fragment.encode(PgTypes.text, unsaved.jobtitle), Fragment.lit(", "), Fragment.encode(PgTypes.date, unsaved.birthdate), Fragment.lit("::date, "), Fragment.encode(PgTypes.bpchar, unsaved.maritalstatus), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.bpchar, unsaved.gender), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.date, unsaved.hiredate), Fragment.lit("::date, "), Fragment.encode(Flag.dbType, unsaved.salariedflag), Fragment.lit("::bool, "), Fragment.encode(PgTypes.int2, unsaved.vacationhours), Fragment.lit("::int2, "), Fragment.encode(PgTypes.int2, unsaved.sickleavehours), Fragment.lit("::int2, "), Fragment.encode(Flag.dbType, unsaved.currentflag), Fragment.lit("::bool, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.text.opt(), unsaved.organizationnode), Fragment.lit(""") + values ("""), Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.text, unsaved.nationalidnumber), Fragment.lit(", "), Fragment.encode(PgTypes.text, unsaved.loginid), Fragment.lit(", "), Fragment.encode(PgTypes.text, unsaved.jobtitle), Fragment.lit(", "), Fragment.encode(PgTypes.date, unsaved.birthdate), Fragment.lit("::date, "), Fragment.encode(PgTypes.bpchar, unsaved.maritalstatus), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.bpchar, unsaved.gender), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.date, unsaved.hiredate), Fragment.lit("::date, "), Fragment.encode(SalariedFlag.pgType, unsaved.salariedflag), Fragment.lit("::bool, "), Fragment.encode(PgTypes.int2, unsaved.vacationhours), Fragment.lit("::int2, "), Fragment.encode(PgTypes.int2, unsaved.sickleavehours), Fragment.lit("::int2, "), Fragment.encode(CurrentFlag.pgType, unsaved.currentflag), Fragment.lit("::bool, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.text.opt(), unsaved.organizationnode), Fragment.lit(""") on conflict ("businessentityid") do update set "nationalidnumber" = EXCLUDED."nationalidnumber", diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRow.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRow.scala index 2819f46505..8b8139d0a4 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRow.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRow.scala @@ -7,7 +7,8 @@ package adventureworks.humanresources.employee import adventureworks.customtypes.Defaulted import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Flag +import adventureworks.userdefined.CurrentFlag +import adventureworks.userdefined.SalariedFlag import dev.typr.foundations.PgText import dev.typr.foundations.PgTypes import dev.typr.foundations.RowParser @@ -52,7 +53,7 @@ case class EmployeeRow( /** Job classification. 0 = Hourly, not exempt from collective bargaining. 1 = Salaried, exempt from collective bargaining. * Default: true */ - salariedflag: Flag, + salariedflag: /* user-picked */ SalariedFlag, /** Number of available vacation hours. * Default: 0 * Constraint CK_Employee_VacationHours affecting columns vacationhours: (((vacationhours >= '-40'::integer) AND (vacationhours <= 240))) @@ -66,7 +67,7 @@ case class EmployeeRow( /** 0 = Inactive, 1 = Active * Default: true */ - currentflag: Flag, + currentflag: /* user-picked */ CurrentFlag, /** Default: uuid_generate_v1() */ rowguid: UUID, /** Default: now() */ @@ -75,14 +76,14 @@ case class EmployeeRow( * Default: '/'::character varying */ organizationnode: Optional[String] -) extends Tuple15[BusinessentityId, String, String, String, LocalDate, String, String, LocalDate, Flag, java.lang.Short, java.lang.Short, Flag, UUID, LocalDateTime, Optional[String]] { +) extends Tuple15[BusinessentityId, String, String, String, LocalDate, String, String, LocalDate, /* user-picked */ SalariedFlag, java.lang.Short, java.lang.Short, /* user-picked */ CurrentFlag, UUID, LocalDateTime, Optional[String]] { def id: BusinessentityId = businessentityid def toUnsavedRow( - salariedflag: Defaulted[Flag] = Defaulted.Provided(this.salariedflag), + salariedflag: Defaulted[/* user-picked */ SalariedFlag] = Defaulted.Provided(this.salariedflag), vacationhours: Defaulted[java.lang.Short] = Defaulted.Provided(this.vacationhours), sickleavehours: Defaulted[java.lang.Short] = Defaulted.Provided(this.sickleavehours), - currentflag: Defaulted[Flag] = Defaulted.Provided(this.currentflag), + currentflag: Defaulted[/* user-picked */ CurrentFlag] = Defaulted.Provided(this.currentflag), rowguid: Defaulted[UUID] = Defaulted.Provided(this.rowguid), modifieddate: Defaulted[LocalDateTime] = Defaulted.Provided(this.modifieddate), organizationnode: Defaulted[Optional[String]] = Defaulted.Provided(this.organizationnode) @@ -122,13 +123,13 @@ case class EmployeeRow( override def `_8`: LocalDate = hiredate - override def `_9`: Flag = salariedflag + override def `_9`: /* user-picked */ SalariedFlag = salariedflag override def `_10`: java.lang.Short = vacationhours override def `_11`: java.lang.Short = sickleavehours - override def `_12`: Flag = currentflag + override def `_12`: /* user-picked */ CurrentFlag = currentflag override def `_13`: UUID = rowguid @@ -138,7 +139,7 @@ case class EmployeeRow( } object EmployeeRow { - val `_rowParser`: RowParser[EmployeeRow] = RowParsers.of(BusinessentityId.dbType, PgTypes.text, PgTypes.text, PgTypes.text, PgTypes.date, PgTypes.bpchar, PgTypes.bpchar, PgTypes.date, Flag.dbType, PgTypes.int2, PgTypes.int2, Flag.dbType, PgTypes.uuid, PgTypes.timestamp, PgTypes.text.opt(), EmployeeRow.apply, row => Array[Any](row.businessentityid, row.nationalidnumber, row.loginid, row.jobtitle, row.birthdate, row.maritalstatus, row.gender, row.hiredate, row.salariedflag, row.vacationhours, row.sickleavehours, row.currentflag, row.rowguid, row.modifieddate, row.organizationnode)) + val `_rowParser`: RowParser[EmployeeRow] = RowParsers.of(BusinessentityId.pgType, PgTypes.text, PgTypes.text, PgTypes.text, PgTypes.date, PgTypes.bpchar, PgTypes.bpchar, PgTypes.date, SalariedFlag.pgType, PgTypes.int2, PgTypes.int2, CurrentFlag.pgType, PgTypes.uuid, PgTypes.timestamp, PgTypes.text.opt(), EmployeeRow.apply, row => Array[Any](row.businessentityid, row.nationalidnumber, row.loginid, row.jobtitle, row.birthdate, row.maritalstatus, row.gender, row.hiredate, row.salariedflag, row.vacationhours, row.sickleavehours, row.currentflag, row.rowguid, row.modifieddate, row.organizationnode)) given pgText: PgText[EmployeeRow] = PgText.from(`_rowParser`) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRowUnsaved.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRowUnsaved.scala index 4b2af2a4b9..71207b066e 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRowUnsaved.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRowUnsaved.scala @@ -8,7 +8,8 @@ package adventureworks.humanresources.employee import adventureworks.customtypes.Defaulted import adventureworks.customtypes.Defaulted.UseDefault import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Flag +import adventureworks.userdefined.CurrentFlag +import adventureworks.userdefined.SalariedFlag import dev.typr.foundations.PgText import dev.typr.foundations.PgTypes import java.time.LocalDate @@ -47,7 +48,7 @@ case class EmployeeRowUnsaved( /** Default: true * Job classification. 0 = Hourly, not exempt from collective bargaining. 1 = Salaried, exempt from collective bargaining. */ - salariedflag: Defaulted[Flag] = new UseDefault(), + salariedflag: Defaulted[/* user-picked */ SalariedFlag] = new UseDefault(), /** Default: 0 * Number of available vacation hours. * Constraint CK_Employee_VacationHours affecting columns vacationhours: (((vacationhours >= '-40'::integer) AND (vacationhours <= 240))) @@ -61,7 +62,7 @@ case class EmployeeRowUnsaved( /** Default: true * 0 = Inactive, 1 = Active */ - currentflag: Defaulted[Flag] = new UseDefault(), + currentflag: Defaulted[/* user-picked */ CurrentFlag] = new UseDefault(), /** Default: uuid_generate_v1() */ rowguid: Defaulted[UUID] = new UseDefault(), /** Default: now() */ @@ -72,10 +73,10 @@ case class EmployeeRowUnsaved( organizationnode: Defaulted[Optional[String]] = new UseDefault() ) { def toRow( - salariedflagDefault: => Flag, + salariedflagDefault: => /* user-picked */ SalariedFlag, vacationhoursDefault: => java.lang.Short, sickleavehoursDefault: => java.lang.Short, - currentflagDefault: => Flag, + currentflagDefault: => /* user-picked */ CurrentFlag, rowguidDefault: => UUID, modifieddateDefault: => LocalDateTime, organizationnodeDefault: => Optional[String] @@ -101,5 +102,5 @@ case class EmployeeRowUnsaved( } object EmployeeRowUnsaved { - given pgText: PgText[EmployeeRowUnsaved] = PgText.instance((row, sb) => { BusinessentityId.dbType.text.unsafeEncode(row.businessentityid, sb); sb.append(PgText.DELIMETER); PgTypes.text.text.unsafeEncode(row.nationalidnumber, sb); sb.append(PgText.DELIMETER); PgTypes.text.text.unsafeEncode(row.loginid, sb); sb.append(PgText.DELIMETER); PgTypes.text.text.unsafeEncode(row.jobtitle, sb); sb.append(PgText.DELIMETER); PgTypes.date.text.unsafeEncode(row.birthdate, sb); sb.append(PgText.DELIMETER); PgTypes.bpchar.text.unsafeEncode(row.maritalstatus, sb); sb.append(PgText.DELIMETER); PgTypes.bpchar.text.unsafeEncode(row.gender, sb); sb.append(PgText.DELIMETER); PgTypes.date.text.unsafeEncode(row.hiredate, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using Flag.dbType.text).unsafeEncode(row.salariedflag, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.int2.text).unsafeEncode(row.vacationhours, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.int2.text).unsafeEncode(row.sickleavehours, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using Flag.dbType.text).unsafeEncode(row.currentflag, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.uuid.text).unsafeEncode(row.rowguid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.text.opt().text).unsafeEncode(row.organizationnode, sb) }) + given pgText: PgText[EmployeeRowUnsaved] = PgText.instance((row, sb) => { BusinessentityId.pgType.text.unsafeEncode(row.businessentityid, sb); sb.append(PgText.DELIMETER); PgTypes.text.text.unsafeEncode(row.nationalidnumber, sb); sb.append(PgText.DELIMETER); PgTypes.text.text.unsafeEncode(row.loginid, sb); sb.append(PgText.DELIMETER); PgTypes.text.text.unsafeEncode(row.jobtitle, sb); sb.append(PgText.DELIMETER); PgTypes.date.text.unsafeEncode(row.birthdate, sb); sb.append(PgText.DELIMETER); PgTypes.bpchar.text.unsafeEncode(row.maritalstatus, sb); sb.append(PgText.DELIMETER); PgTypes.bpchar.text.unsafeEncode(row.gender, sb); sb.append(PgText.DELIMETER); PgTypes.date.text.unsafeEncode(row.hiredate, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using SalariedFlag.pgType.text).unsafeEncode(row.salariedflag, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.int2.text).unsafeEncode(row.vacationhours, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.int2.text).unsafeEncode(row.sickleavehours, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using CurrentFlag.pgType.text).unsafeEncode(row.currentflag, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.uuid.text).unsafeEncode(row.rowguid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.text.opt().text).unsafeEncode(row.organizationnode, sb) }) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryFields.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryFields.scala index df5c486863..6761f01822 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryFields.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryFields.scala @@ -40,7 +40,7 @@ class EmployeedepartmenthistoryFields(val `_path`: java.util.List[Path]) extends Optional.empty(), Optional.of("int4"), (row, value) => row.copy(businessentityid = value), - BusinessentityId.dbType + BusinessentityId.pgType ) } @@ -52,7 +52,7 @@ class EmployeedepartmenthistoryFields(val `_path`: java.util.List[Path]) extends Optional.empty(), Optional.of("int2"), (row, value) => row.copy(departmentid = value), - DepartmentId.dbType + DepartmentId.pgType ) } @@ -64,7 +64,7 @@ class EmployeedepartmenthistoryFields(val `_path`: java.util.List[Path]) extends Optional.empty(), Optional.of("int2"), (row, value) => row.copy(shiftid = value), - ShiftId.dbType + ShiftId.pgType ) } diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryId.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryId.scala index a743de8eed..979d1b00d2 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryId.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryId.scala @@ -31,5 +31,5 @@ case class EmployeedepartmenthistoryId( } object EmployeedepartmenthistoryId { - val `_rowParser`: RowParser[EmployeedepartmenthistoryId] = RowParsers.of(BusinessentityId.dbType, PgTypes.date, DepartmentId.dbType, ShiftId.dbType, EmployeedepartmenthistoryId.apply, row => Array[Any](row.businessentityid, row.startdate, row.departmentid, row.shiftid)) + val `_rowParser`: RowParser[EmployeedepartmenthistoryId] = RowParsers.of(BusinessentityId.pgType, PgTypes.date, DepartmentId.pgType, ShiftId.pgType, EmployeedepartmenthistoryId.apply, row => Array[Any](row.businessentityid, row.startdate, row.departmentid, row.shiftid)) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRepoImpl.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRepoImpl.scala index 03a6ebfbb4..a5d54390f0 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRepoImpl.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRepoImpl.scala @@ -25,7 +25,7 @@ import dev.typr.foundations.Fragment.interpolate class EmployeedepartmenthistoryRepoImpl extends EmployeedepartmenthistoryRepo { override def delete: DeleteBuilder[EmployeedepartmenthistoryFields, EmployeedepartmenthistoryRow] = DeleteBuilder.of(""""humanresources"."employeedepartmenthistory"""", EmployeedepartmenthistoryFields.structure, Dialect.POSTGRESQL) - override def deleteById(compositeId: EmployeedepartmenthistoryId)(using c: Connection): java.lang.Boolean = interpolate(Fragment.lit("""delete from "humanresources"."employeedepartmenthistory" where "businessentityid" = """), Fragment.encode(BusinessentityId.dbType, compositeId.businessentityid), Fragment.lit(""" AND "startdate" = """), Fragment.encode(PgTypes.date, compositeId.startdate), Fragment.lit(""" AND "departmentid" = """), Fragment.encode(DepartmentId.dbType, compositeId.departmentid), Fragment.lit(""" AND "shiftid" = """), Fragment.encode(ShiftId.dbType, compositeId.shiftid), Fragment.lit("")).update().runUnchecked(c) > 0 + override def deleteById(compositeId: EmployeedepartmenthistoryId)(using c: Connection): java.lang.Boolean = interpolate(Fragment.lit("""delete from "humanresources"."employeedepartmenthistory" where "businessentityid" = """), Fragment.encode(BusinessentityId.pgType, compositeId.businessentityid), Fragment.lit(""" AND "startdate" = """), Fragment.encode(PgTypes.date, compositeId.startdate), Fragment.lit(""" AND "departmentid" = """), Fragment.encode(DepartmentId.pgType, compositeId.departmentid), Fragment.lit(""" AND "shiftid" = """), Fragment.encode(ShiftId.pgType, compositeId.shiftid), Fragment.lit("")).update().runUnchecked(c) > 0 override def deleteByIds(compositeIds: Array[EmployeedepartmenthistoryId])(using c: Connection): Integer = { val businessentityid: Array[BusinessentityId] = compositeIds.map(_.businessentityid) @@ -35,13 +35,13 @@ class EmployeedepartmenthistoryRepoImpl extends EmployeedepartmenthistoryRepo { return interpolate(Fragment.lit("""delete from "humanresources"."employeedepartmenthistory" where ("businessentityid", "startdate", "departmentid", "shiftid") - in (select * from unnest("""), Fragment.encode(BusinessentityId.dbTypeArray, businessentityid), Fragment.lit(", "), Fragment.encode(PgTypes.dateArray, startdate), Fragment.lit(", "), Fragment.encode(DepartmentId.dbTypeArray, departmentid), Fragment.lit(", "), Fragment.encode(ShiftId.dbTypeArray, shiftid), Fragment.lit(""")) + in (select * from unnest("""), Fragment.encode(BusinessentityId.pgTypeArray, businessentityid), Fragment.lit(", "), Fragment.encode(PgTypes.dateArray, startdate), Fragment.lit(", "), Fragment.encode(DepartmentId.pgTypeArray, departmentid), Fragment.lit(", "), Fragment.encode(ShiftId.pgTypeArray, shiftid), Fragment.lit(""")) """)).update().runUnchecked(c) } override def insert(unsaved: EmployeedepartmenthistoryRow)(using c: Connection): EmployeedepartmenthistoryRow = { interpolate(Fragment.lit("""insert into "humanresources"."employeedepartmenthistory"("businessentityid", "departmentid", "shiftid", "startdate", "enddate", "modifieddate") - values ("""), Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid), Fragment.lit("::int4, "), Fragment.encode(DepartmentId.dbType, unsaved.departmentid), Fragment.lit("::int2, "), Fragment.encode(ShiftId.dbType, unsaved.shiftid), Fragment.lit("::int2, "), Fragment.encode(PgTypes.date, unsaved.startdate), Fragment.lit("::date, "), Fragment.encode(PgTypes.date.opt(), unsaved.enddate), Fragment.lit("::date, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) + values ("""), Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid), Fragment.lit("::int4, "), Fragment.encode(DepartmentId.pgType, unsaved.departmentid), Fragment.lit("::int2, "), Fragment.encode(ShiftId.pgType, unsaved.shiftid), Fragment.lit("::int2, "), Fragment.encode(PgTypes.date, unsaved.startdate), Fragment.lit("::date, "), Fragment.encode(PgTypes.date.opt(), unsaved.enddate), Fragment.lit("::date, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) RETURNING "businessentityid", "departmentid", "shiftid", "startdate", "enddate", "modifieddate" """)) .updateReturning(EmployeedepartmenthistoryRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -51,11 +51,11 @@ class EmployeedepartmenthistoryRepoImpl extends EmployeedepartmenthistoryRepo { val columns: ArrayList[Fragment] = new ArrayList() val values: ArrayList[Fragment] = new ArrayList() columns.add(Fragment.lit(""""businessentityid"""")): @scala.annotation.nowarn - values.add(interpolate(Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid), Fragment.lit("::int4"))): @scala.annotation.nowarn + values.add(interpolate(Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid), Fragment.lit("::int4"))): @scala.annotation.nowarn columns.add(Fragment.lit(""""departmentid"""")): @scala.annotation.nowarn - values.add(interpolate(Fragment.encode(DepartmentId.dbType, unsaved.departmentid), Fragment.lit("::int2"))): @scala.annotation.nowarn + values.add(interpolate(Fragment.encode(DepartmentId.pgType, unsaved.departmentid), Fragment.lit("::int2"))): @scala.annotation.nowarn columns.add(Fragment.lit(""""shiftid"""")): @scala.annotation.nowarn - values.add(interpolate(Fragment.encode(ShiftId.dbType, unsaved.shiftid), Fragment.lit("::int2"))): @scala.annotation.nowarn + values.add(interpolate(Fragment.encode(ShiftId.pgType, unsaved.shiftid), Fragment.lit("::int2"))): @scala.annotation.nowarn columns.add(Fragment.lit(""""startdate"""")): @scala.annotation.nowarn values.add(interpolate(Fragment.encode(PgTypes.date, unsaved.startdate), Fragment.lit("::date"))): @scala.annotation.nowarn columns.add(Fragment.lit(""""enddate"""")): @scala.annotation.nowarn @@ -95,7 +95,7 @@ class EmployeedepartmenthistoryRepoImpl extends EmployeedepartmenthistoryRepo { override def selectById(compositeId: EmployeedepartmenthistoryId)(using c: Connection): Optional[EmployeedepartmenthistoryRow] = { interpolate(Fragment.lit("""select "businessentityid", "departmentid", "shiftid", "startdate", "enddate", "modifieddate" from "humanresources"."employeedepartmenthistory" - where "businessentityid" = """), Fragment.encode(BusinessentityId.dbType, compositeId.businessentityid), Fragment.lit(""" AND "startdate" = """), Fragment.encode(PgTypes.date, compositeId.startdate), Fragment.lit(""" AND "departmentid" = """), Fragment.encode(DepartmentId.dbType, compositeId.departmentid), Fragment.lit(""" AND "shiftid" = """), Fragment.encode(ShiftId.dbType, compositeId.shiftid), Fragment.lit("")).query(EmployeedepartmenthistoryRow.`_rowParser`.first()).runUnchecked(c) + where "businessentityid" = """), Fragment.encode(BusinessentityId.pgType, compositeId.businessentityid), Fragment.lit(""" AND "startdate" = """), Fragment.encode(PgTypes.date, compositeId.startdate), Fragment.lit(""" AND "departmentid" = """), Fragment.encode(DepartmentId.pgType, compositeId.departmentid), Fragment.lit(""" AND "shiftid" = """), Fragment.encode(ShiftId.pgType, compositeId.shiftid), Fragment.lit("")).query(EmployeedepartmenthistoryRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(compositeIds: Array[EmployeedepartmenthistoryId])(using c: Connection): java.util.List[EmployeedepartmenthistoryRow] = { @@ -106,7 +106,7 @@ class EmployeedepartmenthistoryRepoImpl extends EmployeedepartmenthistoryRepo { return interpolate(Fragment.lit("""select "businessentityid", "departmentid", "shiftid", "startdate", "enddate", "modifieddate" from "humanresources"."employeedepartmenthistory" where ("businessentityid", "startdate", "departmentid", "shiftid") - in (select * from unnest("""), Fragment.encode(BusinessentityId.dbTypeArray, businessentityid), Fragment.lit(", "), Fragment.encode(PgTypes.dateArray, startdate), Fragment.lit(", "), Fragment.encode(DepartmentId.dbTypeArray, departmentid), Fragment.lit(", "), Fragment.encode(ShiftId.dbTypeArray, shiftid), Fragment.lit(""")) + in (select * from unnest("""), Fragment.encode(BusinessentityId.pgTypeArray, businessentityid), Fragment.lit(", "), Fragment.encode(PgTypes.dateArray, startdate), Fragment.lit(", "), Fragment.encode(DepartmentId.pgTypeArray, departmentid), Fragment.lit(", "), Fragment.encode(ShiftId.pgTypeArray, shiftid), Fragment.lit(""")) """)).query(EmployeedepartmenthistoryRow.`_rowParser`.all()).runUnchecked(c) } @@ -123,12 +123,12 @@ class EmployeedepartmenthistoryRepoImpl extends EmployeedepartmenthistoryRepo { return interpolate(Fragment.lit("""update "humanresources"."employeedepartmenthistory" set "enddate" = """), Fragment.encode(PgTypes.date.opt(), row.enddate), Fragment.lit("""::date, "modifieddate" = """), Fragment.encode(PgTypes.timestamp, row.modifieddate), Fragment.lit("""::timestamp - where "businessentityid" = """), Fragment.encode(BusinessentityId.dbType, compositeId.businessentityid), Fragment.lit(""" AND "startdate" = """), Fragment.encode(PgTypes.date, compositeId.startdate), Fragment.lit(""" AND "departmentid" = """), Fragment.encode(DepartmentId.dbType, compositeId.departmentid), Fragment.lit(""" AND "shiftid" = """), Fragment.encode(ShiftId.dbType, compositeId.shiftid), Fragment.lit("")).update().runUnchecked(c) > 0 + where "businessentityid" = """), Fragment.encode(BusinessentityId.pgType, compositeId.businessentityid), Fragment.lit(""" AND "startdate" = """), Fragment.encode(PgTypes.date, compositeId.startdate), Fragment.lit(""" AND "departmentid" = """), Fragment.encode(DepartmentId.pgType, compositeId.departmentid), Fragment.lit(""" AND "shiftid" = """), Fragment.encode(ShiftId.pgType, compositeId.shiftid), Fragment.lit("")).update().runUnchecked(c) > 0 } override def upsert(unsaved: EmployeedepartmenthistoryRow)(using c: Connection): EmployeedepartmenthistoryRow = { interpolate(Fragment.lit("""insert into "humanresources"."employeedepartmenthistory"("businessentityid", "departmentid", "shiftid", "startdate", "enddate", "modifieddate") - values ("""), Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid), Fragment.lit("::int4, "), Fragment.encode(DepartmentId.dbType, unsaved.departmentid), Fragment.lit("::int2, "), Fragment.encode(ShiftId.dbType, unsaved.shiftid), Fragment.lit("::int2, "), Fragment.encode(PgTypes.date, unsaved.startdate), Fragment.lit("::date, "), Fragment.encode(PgTypes.date.opt(), unsaved.enddate), Fragment.lit("::date, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) + values ("""), Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid), Fragment.lit("::int4, "), Fragment.encode(DepartmentId.pgType, unsaved.departmentid), Fragment.lit("::int2, "), Fragment.encode(ShiftId.pgType, unsaved.shiftid), Fragment.lit("::int2, "), Fragment.encode(PgTypes.date, unsaved.startdate), Fragment.lit("::date, "), Fragment.encode(PgTypes.date.opt(), unsaved.enddate), Fragment.lit("::date, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) on conflict ("businessentityid", "startdate", "departmentid", "shiftid") do update set "enddate" = EXCLUDED."enddate", diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRow.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRow.scala index a596b318eb..fa7b49704c 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRow.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRow.scala @@ -82,7 +82,7 @@ case class EmployeedepartmenthistoryRow( } object EmployeedepartmenthistoryRow { - val `_rowParser`: RowParser[EmployeedepartmenthistoryRow] = RowParsers.of(BusinessentityId.dbType, DepartmentId.dbType, ShiftId.dbType, PgTypes.date, PgTypes.date.opt(), PgTypes.timestamp, EmployeedepartmenthistoryRow.apply, row => Array[Any](row.businessentityid, row.departmentid, row.shiftid, row.startdate, row.enddate, row.modifieddate)) + val `_rowParser`: RowParser[EmployeedepartmenthistoryRow] = RowParsers.of(BusinessentityId.pgType, DepartmentId.pgType, ShiftId.pgType, PgTypes.date, PgTypes.date.opt(), PgTypes.timestamp, EmployeedepartmenthistoryRow.apply, row => Array[Any](row.businessentityid, row.departmentid, row.shiftid, row.startdate, row.enddate, row.modifieddate)) def apply( compositeId: EmployeedepartmenthistoryId, diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRowUnsaved.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRowUnsaved.scala index d836bdaae1..881b0c62fd 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRowUnsaved.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRowUnsaved.scala @@ -54,5 +54,5 @@ case class EmployeedepartmenthistoryRowUnsaved( } object EmployeedepartmenthistoryRowUnsaved { - given pgText: PgText[EmployeedepartmenthistoryRowUnsaved] = PgText.instance((row, sb) => { BusinessentityId.dbType.text.unsafeEncode(row.businessentityid, sb); sb.append(PgText.DELIMETER); DepartmentId.dbType.text.unsafeEncode(row.departmentid, sb); sb.append(PgText.DELIMETER); ShiftId.dbType.text.unsafeEncode(row.shiftid, sb); sb.append(PgText.DELIMETER); PgTypes.date.text.unsafeEncode(row.startdate, sb); sb.append(PgText.DELIMETER); PgTypes.date.opt().text.unsafeEncode(row.enddate, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) + given pgText: PgText[EmployeedepartmenthistoryRowUnsaved] = PgText.instance((row, sb) => { BusinessentityId.pgType.text.unsafeEncode(row.businessentityid, sb); sb.append(PgText.DELIMETER); DepartmentId.pgType.text.unsafeEncode(row.departmentid, sb); sb.append(PgText.DELIMETER); ShiftId.pgType.text.unsafeEncode(row.shiftid, sb); sb.append(PgText.DELIMETER); PgTypes.date.text.unsafeEncode(row.startdate, sb); sb.append(PgText.DELIMETER); PgTypes.date.opt().text.unsafeEncode(row.enddate, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/shift/ShiftFields.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/shift/ShiftFields.scala index 2990e03d76..3b51eabe91 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/shift/ShiftFields.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/shift/ShiftFields.scala @@ -29,7 +29,7 @@ class ShiftFields(val `_path`: java.util.List[Path]) extends TupleExpr5[ShiftId, Optional.empty(), Optional.of("int4"), (row, value) => row.copy(shiftid = value), - ShiftId.dbType + ShiftId.pgType ) } @@ -41,7 +41,7 @@ class ShiftFields(val `_path`: java.util.List[Path]) extends TupleExpr5[ShiftId, Optional.empty(), Optional.of("varchar"), (row, value) => row.copy(name = value), - Name.dbType + Name.pgType ) } diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/shift/ShiftId.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/shift/ShiftId.scala index 49eb89e912..7168736b69 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/shift/ShiftId.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/shift/ShiftId.scala @@ -16,7 +16,7 @@ case class ShiftId(@JsonValue value: Integer) extends scala.AnyVal object ShiftId { given bijection: Bijection[ShiftId, Integer] = Bijection.apply[ShiftId, Integer](_.value)(ShiftId.apply) - given dbType: PgType[ShiftId] = PgTypes.int4.bimap(ShiftId.apply, _.value) + given pgType: PgType[ShiftId] = PgTypes.int4.bimap(ShiftId.apply, _.value) - given dbTypeArray: PgType[Array[ShiftId]] = PgTypes.int4Array.bimap(xs => xs.map(ShiftId.apply), xs => xs.map(_.value)) + given pgTypeArray: PgType[Array[ShiftId]] = PgTypes.int4Array.bimap(xs => xs.map(ShiftId.apply), xs => xs.map(_.value)) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRepoImpl.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRepoImpl.scala index a39ae378ae..61041729e8 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRepoImpl.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRepoImpl.scala @@ -22,19 +22,19 @@ import dev.typr.foundations.Fragment.interpolate class ShiftRepoImpl extends ShiftRepo { override def delete: DeleteBuilder[ShiftFields, ShiftRow] = DeleteBuilder.of(""""humanresources"."shift"""", ShiftFields.structure, Dialect.POSTGRESQL) - override def deleteById(shiftid: ShiftId)(using c: Connection): java.lang.Boolean = interpolate(Fragment.lit("""delete from "humanresources"."shift" where "shiftid" = """), Fragment.encode(ShiftId.dbType, shiftid), Fragment.lit("")).update().runUnchecked(c) > 0 + override def deleteById(shiftid: ShiftId)(using c: Connection): java.lang.Boolean = interpolate(Fragment.lit("""delete from "humanresources"."shift" where "shiftid" = """), Fragment.encode(ShiftId.pgType, shiftid), Fragment.lit("")).update().runUnchecked(c) > 0 override def deleteByIds(shiftids: Array[ShiftId])(using c: Connection): Integer = { interpolate(Fragment.lit("""delete from "humanresources"."shift" - where "shiftid" = ANY("""), Fragment.encode(ShiftId.dbTypeArray, shiftids), Fragment.lit(")")) + where "shiftid" = ANY("""), Fragment.encode(ShiftId.pgTypeArray, shiftids), Fragment.lit(")")) .update() .runUnchecked(c) } override def insert(unsaved: ShiftRow)(using c: Connection): ShiftRow = { interpolate(Fragment.lit("""insert into "humanresources"."shift"("shiftid", "name", "starttime", "endtime", "modifieddate") - values ("""), Fragment.encode(ShiftId.dbType, unsaved.shiftid), Fragment.lit("::int4, "), Fragment.encode(Name.dbType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.time, unsaved.starttime), Fragment.lit("::time, "), Fragment.encode(PgTypes.time, unsaved.endtime), Fragment.lit("::time, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) + values ("""), Fragment.encode(ShiftId.pgType, unsaved.shiftid), Fragment.lit("::int4, "), Fragment.encode(Name.pgType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.time, unsaved.starttime), Fragment.lit("::time, "), Fragment.encode(PgTypes.time, unsaved.endtime), Fragment.lit("::time, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) RETURNING "shiftid", "name", "starttime", "endtime", "modifieddate" """)) .updateReturning(ShiftRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -44,14 +44,14 @@ class ShiftRepoImpl extends ShiftRepo { val columns: ArrayList[Fragment] = new ArrayList() val values: ArrayList[Fragment] = new ArrayList() columns.add(Fragment.lit(""""name"""")): @scala.annotation.nowarn - values.add(interpolate(Fragment.encode(Name.dbType, unsaved.name), Fragment.lit("::varchar"))): @scala.annotation.nowarn + values.add(interpolate(Fragment.encode(Name.pgType, unsaved.name), Fragment.lit("::varchar"))): @scala.annotation.nowarn columns.add(Fragment.lit(""""starttime"""")): @scala.annotation.nowarn values.add(interpolate(Fragment.encode(PgTypes.time, unsaved.starttime), Fragment.lit("::time"))): @scala.annotation.nowarn columns.add(Fragment.lit(""""endtime"""")): @scala.annotation.nowarn values.add(interpolate(Fragment.encode(PgTypes.time, unsaved.endtime), Fragment.lit("::time"))): @scala.annotation.nowarn unsaved.shiftid.visit( { }, - value => { columns.add(Fragment.lit(""""shiftid"""")): @scala.annotation.nowarn; values.add(interpolate(Fragment.encode(ShiftId.dbType, value), Fragment.lit("::int4"))): @scala.annotation.nowarn } + value => { columns.add(Fragment.lit(""""shiftid"""")): @scala.annotation.nowarn; values.add(interpolate(Fragment.encode(ShiftId.pgType, value), Fragment.lit("::int4"))): @scala.annotation.nowarn } ); unsaved.modifieddate.visit( { }, @@ -88,13 +88,13 @@ class ShiftRepoImpl extends ShiftRepo { override def selectById(shiftid: ShiftId)(using c: Connection): Optional[ShiftRow] = { interpolate(Fragment.lit("""select "shiftid", "name", "starttime", "endtime", "modifieddate" from "humanresources"."shift" - where "shiftid" = """), Fragment.encode(ShiftId.dbType, shiftid), Fragment.lit("")).query(ShiftRow.`_rowParser`.first()).runUnchecked(c) + where "shiftid" = """), Fragment.encode(ShiftId.pgType, shiftid), Fragment.lit("")).query(ShiftRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(shiftids: Array[ShiftId])(using c: Connection): java.util.List[ShiftRow] = { interpolate(Fragment.lit("""select "shiftid", "name", "starttime", "endtime", "modifieddate" from "humanresources"."shift" - where "shiftid" = ANY("""), Fragment.encode(ShiftId.dbTypeArray, shiftids), Fragment.lit(")")).query(ShiftRow.`_rowParser`.all()).runUnchecked(c) + where "shiftid" = ANY("""), Fragment.encode(ShiftId.pgTypeArray, shiftids), Fragment.lit(")")).query(ShiftRow.`_rowParser`.all()).runUnchecked(c) } override def selectByIdsTracked(shiftids: Array[ShiftId])(using c: Connection): java.util.Map[ShiftId, ShiftRow] = { @@ -108,16 +108,16 @@ class ShiftRepoImpl extends ShiftRepo { override def update(row: ShiftRow)(using c: Connection): java.lang.Boolean = { val shiftid: ShiftId = row.shiftid return interpolate(Fragment.lit("""update "humanresources"."shift" - set "name" = """), Fragment.encode(Name.dbType, row.name), Fragment.lit("""::varchar, + set "name" = """), Fragment.encode(Name.pgType, row.name), Fragment.lit("""::varchar, "starttime" = """), Fragment.encode(PgTypes.time, row.starttime), Fragment.lit("""::time, "endtime" = """), Fragment.encode(PgTypes.time, row.endtime), Fragment.lit("""::time, "modifieddate" = """), Fragment.encode(PgTypes.timestamp, row.modifieddate), Fragment.lit("""::timestamp - where "shiftid" = """), Fragment.encode(ShiftId.dbType, shiftid), Fragment.lit("")).update().runUnchecked(c) > 0 + where "shiftid" = """), Fragment.encode(ShiftId.pgType, shiftid), Fragment.lit("")).update().runUnchecked(c) > 0 } override def upsert(unsaved: ShiftRow)(using c: Connection): ShiftRow = { interpolate(Fragment.lit("""insert into "humanresources"."shift"("shiftid", "name", "starttime", "endtime", "modifieddate") - values ("""), Fragment.encode(ShiftId.dbType, unsaved.shiftid), Fragment.lit("::int4, "), Fragment.encode(Name.dbType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.time, unsaved.starttime), Fragment.lit("::time, "), Fragment.encode(PgTypes.time, unsaved.endtime), Fragment.lit("::time, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) + values ("""), Fragment.encode(ShiftId.pgType, unsaved.shiftid), Fragment.lit("::int4, "), Fragment.encode(Name.pgType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.time, unsaved.starttime), Fragment.lit("::time, "), Fragment.encode(PgTypes.time, unsaved.endtime), Fragment.lit("::time, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) on conflict ("shiftid") do update set "name" = EXCLUDED."name", diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRow.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRow.scala index 3648f4a72d..594b0af898 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRow.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRow.scala @@ -60,7 +60,7 @@ case class ShiftRow( } object ShiftRow { - val `_rowParser`: RowParser[ShiftRow] = RowParsers.of(ShiftId.dbType, Name.dbType, PgTypes.time, PgTypes.time, PgTypes.timestamp, ShiftRow.apply, row => Array[Any](row.shiftid, row.name, row.starttime, row.endtime, row.modifieddate)) + val `_rowParser`: RowParser[ShiftRow] = RowParsers.of(ShiftId.pgType, Name.pgType, PgTypes.time, PgTypes.time, PgTypes.timestamp, ShiftRow.apply, row => Array[Any](row.shiftid, row.name, row.starttime, row.endtime, row.modifieddate)) given pgText: PgText[ShiftRow] = PgText.from(`_rowParser`) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRowUnsaved.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRowUnsaved.scala index a66f2cf1c9..e73ae437b4 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRowUnsaved.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRowUnsaved.scala @@ -43,5 +43,5 @@ case class ShiftRowUnsaved( } object ShiftRowUnsaved { - given pgText: PgText[ShiftRowUnsaved] = PgText.instance((row, sb) => { Name.dbType.text.unsafeEncode(row.name, sb); sb.append(PgText.DELIMETER); PgTypes.time.text.unsafeEncode(row.starttime, sb); sb.append(PgText.DELIMETER); PgTypes.time.text.unsafeEncode(row.endtime, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using ShiftId.dbType.text).unsafeEncode(row.shiftid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) + given pgText: PgText[ShiftRowUnsaved] = PgText.instance((row, sb) => { Name.pgType.text.unsafeEncode(row.name, sb); sb.append(PgText.DELIMETER); PgTypes.time.text.unsafeEncode(row.starttime, sb); sb.append(PgText.DELIMETER); PgTypes.time.text.unsafeEncode(row.endtime, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using ShiftId.pgType.text).unsafeEncode(row.shiftid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/vemployee/VemployeeViewFields.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/vemployee/VemployeeViewFields.scala index 0b191c9871..e4ce0e493e 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/vemployee/VemployeeViewFields.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/vemployee/VemployeeViewFields.scala @@ -9,6 +9,8 @@ import adventureworks.person.businessentity.BusinessentityId import adventureworks.public.Name import adventureworks.public.Phone import adventureworks.userdefined.FirstName +import adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import dev.typr.foundations.PgTypes import dev.typr.foundations.RowParser import dev.typr.foundations.data.Xml @@ -21,7 +23,7 @@ import dev.typr.foundations.dsl.SqlExpr.FieldLike import dev.typr.foundations.dsl.TupleExpr.TupleExpr18 import java.util.Optional -class VemployeeViewFields(val `_path`: java.util.List[Path]) extends TupleExpr18[BusinessentityId, String, /* user-picked */ FirstName, Name, Name, String, String, Phone, Name, String, Integer, String, String, String, Name, String, Name, Xml] with RelationStructure[VemployeeViewFields, VemployeeViewRow] with FieldsBase[VemployeeViewRow] { +class VemployeeViewFields(val `_path`: java.util.List[Path]) extends TupleExpr18[BusinessentityId, String, /* user-picked */ FirstName, /* user-picked */ MiddleName, /* user-picked */ LastName, String, String, Phone, Name, String, Integer, String, String, String, Name, String, Name, Xml] with RelationStructure[VemployeeViewFields, VemployeeViewRow] with FieldsBase[VemployeeViewRow] { def businessentityid: Field[BusinessentityId, VemployeeViewRow] = { new Field[BusinessentityId, VemployeeViewRow]( _path, @@ -30,7 +32,7 @@ class VemployeeViewFields(val `_path`: java.util.List[Path]) extends TupleExpr18 Optional.empty(), Optional.empty(), (row, value) => row.copy(businessentityid = value), - BusinessentityId.dbType + BusinessentityId.pgType ) } @@ -54,31 +56,31 @@ class VemployeeViewFields(val `_path`: java.util.List[Path]) extends TupleExpr18 Optional.empty(), Optional.empty(), (row, value) => row.copy(firstname = value), - FirstName.dbType + FirstName.pgType ) } - def middlename: Field[Name, VemployeeViewRow] = { - new Field[Name, VemployeeViewRow]( + def middlename: Field[/* user-picked */ MiddleName, VemployeeViewRow] = { + new Field[/* user-picked */ MiddleName, VemployeeViewRow]( _path, "middlename", _.middlename, Optional.empty(), Optional.empty(), (row, value) => row.copy(middlename = value), - Name.dbType + MiddleName.pgType ) } - def lastname: Field[Name, VemployeeViewRow] = { - new Field[Name, VemployeeViewRow]( + def lastname: Field[/* user-picked */ LastName, VemployeeViewRow] = { + new Field[/* user-picked */ LastName, VemployeeViewRow]( _path, "lastname", _.lastname, Optional.empty(), Optional.empty(), (row, value) => row.copy(lastname = value), - Name.dbType + LastName.pgType ) } @@ -114,7 +116,7 @@ class VemployeeViewFields(val `_path`: java.util.List[Path]) extends TupleExpr18 Optional.empty(), Optional.empty(), (row, value) => row.copy(phonenumber = value), - Phone.dbType + Phone.pgType ) } @@ -126,7 +128,7 @@ class VemployeeViewFields(val `_path`: java.util.List[Path]) extends TupleExpr18 Optional.empty(), Optional.empty(), (row, value) => row.copy(phonenumbertype = value), - Name.dbType + Name.pgType ) } @@ -198,7 +200,7 @@ class VemployeeViewFields(val `_path`: java.util.List[Path]) extends TupleExpr18 Optional.empty(), Optional.empty(), (row, value) => row.copy(stateprovincename = value), - Name.dbType + Name.pgType ) } @@ -222,7 +224,7 @@ class VemployeeViewFields(val `_path`: java.util.List[Path]) extends TupleExpr18 Optional.empty(), Optional.empty(), (row, value) => row.copy(countryregionname = value), - Name.dbType + Name.pgType ) } @@ -250,9 +252,9 @@ class VemployeeViewFields(val `_path`: java.util.List[Path]) extends TupleExpr18 override def `_3`: SqlExpr[/* user-picked */ FirstName] = firstname - override def `_4`: SqlExpr[Name] = middlename + override def `_4`: SqlExpr[/* user-picked */ MiddleName] = middlename - override def `_5`: SqlExpr[Name] = lastname + override def `_5`: SqlExpr[/* user-picked */ LastName] = lastname override def `_6`: SqlExpr[String] = suffix diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/vemployee/VemployeeViewRow.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/vemployee/VemployeeViewRow.scala index 956092114c..c30ac00e65 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/vemployee/VemployeeViewRow.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/humanresources/vemployee/VemployeeViewRow.scala @@ -9,6 +9,8 @@ import adventureworks.person.businessentity.BusinessentityId import adventureworks.public.Name import adventureworks.public.Phone import adventureworks.userdefined.FirstName +import adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import dev.typr.foundations.PgTypes import dev.typr.foundations.RowParser import dev.typr.foundations.RowParsers @@ -24,9 +26,9 @@ case class VemployeeViewRow( /** Points to [[adventureworks.person.person.PersonRow.firstname]] */ firstname: /* user-picked */ FirstName, /** Points to [[adventureworks.person.person.PersonRow.middlename]] */ - middlename: Name, + middlename: /* user-picked */ MiddleName, /** Points to [[adventureworks.person.person.PersonRow.lastname]] */ - lastname: Name, + lastname: /* user-picked */ LastName, /** Points to [[adventureworks.person.person.PersonRow.suffix]] */ suffix: String, /** Points to [[adventureworks.humanresources.employee.EmployeeRow.jobtitle]] */ @@ -53,16 +55,16 @@ case class VemployeeViewRow( countryregionname: Name, /** Points to [[adventureworks.person.person.PersonRow.additionalcontactinfo]] */ additionalcontactinfo: Xml -) extends Tuple18[BusinessentityId, String, /* user-picked */ FirstName, Name, Name, String, String, Phone, Name, String, Integer, String, String, String, Name, String, Name, Xml] { +) extends Tuple18[BusinessentityId, String, /* user-picked */ FirstName, /* user-picked */ MiddleName, /* user-picked */ LastName, String, String, Phone, Name, String, Integer, String, String, String, Name, String, Name, Xml] { override def `_1`: BusinessentityId = businessentityid override def `_2`: String = title override def `_3`: /* user-picked */ FirstName = firstname - override def `_4`: Name = middlename + override def `_4`: /* user-picked */ MiddleName = middlename - override def `_5`: Name = lastname + override def `_5`: /* user-picked */ LastName = lastname override def `_6`: String = suffix @@ -92,5 +94,5 @@ case class VemployeeViewRow( } object VemployeeViewRow { - val `_rowParser`: RowParser[VemployeeViewRow] = RowParsers.of(BusinessentityId.dbType, PgTypes.text, FirstName.dbType, Name.dbType, Name.dbType, PgTypes.text, PgTypes.text, Phone.dbType, Name.dbType, PgTypes.text, PgTypes.int4, PgTypes.text, PgTypes.text, PgTypes.text, Name.dbType, PgTypes.text, Name.dbType, PgTypes.xml, VemployeeViewRow.apply, row => Array[Any](row.businessentityid, row.title, row.firstname, row.middlename, row.lastname, row.suffix, row.jobtitle, row.phonenumber, row.phonenumbertype, row.emailaddress, row.emailpromotion, row.addressline1, row.addressline2, row.city, row.stateprovincename, row.postalcode, row.countryregionname, row.additionalcontactinfo)) + val `_rowParser`: RowParser[VemployeeViewRow] = RowParsers.of(BusinessentityId.pgType, PgTypes.text, FirstName.pgType, MiddleName.pgType, LastName.pgType, PgTypes.text, PgTypes.text, Phone.pgType, Name.pgType, PgTypes.text, PgTypes.int4, PgTypes.text, PgTypes.text, PgTypes.text, Name.pgType, PgTypes.text, Name.pgType, PgTypes.xml, VemployeeViewRow.apply, row => Array[Any](row.businessentityid, row.title, row.firstname, row.middlename, row.lastname, row.suffix, row.jobtitle, row.phonenumber, row.phonenumbertype, row.emailaddress, row.emailpromotion, row.addressline1, row.addressline2, row.city, row.stateprovincename, row.postalcode, row.countryregionname, row.additionalcontactinfo)) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/information_schema/CardinalNumber.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/information_schema/CardinalNumber.scala index 26bf6cc79e..3f333a2f15 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/information_schema/CardinalNumber.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/information_schema/CardinalNumber.scala @@ -18,7 +18,7 @@ case class CardinalNumber(@JsonValue value: Integer) object CardinalNumber { given bijection: Bijection[CardinalNumber, Integer] = Bijection.apply[CardinalNumber, Integer](_.value)(CardinalNumber.apply) - given dbType: PgType[CardinalNumber] = PgTypes.int4.bimap(CardinalNumber.apply, _.value).renamed(""""information_schema"."cardinal_number"""") + given pgType: PgType[CardinalNumber] = PgTypes.int4.bimap(CardinalNumber.apply, _.value).renamed(""""information_schema"."cardinal_number"""") - given dbTypeArray: PgType[Array[CardinalNumber]] = PgTypes.int4Array.bimap(xs => xs.map(CardinalNumber.apply), xs => xs.map(_.value)).renamed(""""information_schema"."cardinal_number"[]""") + given pgTypeArray: PgType[Array[CardinalNumber]] = PgTypes.int4Array.bimap(xs => xs.map(CardinalNumber.apply), xs => xs.map(_.value)).renamed(""""information_schema"."cardinal_number"[]""") } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/information_schema/CharacterData.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/information_schema/CharacterData.scala index c161ced456..7e548d36e2 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/information_schema/CharacterData.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/information_schema/CharacterData.scala @@ -18,7 +18,7 @@ case class CharacterData(@JsonValue value: String) object CharacterData { given bijection: Bijection[CharacterData, String] = Bijection.apply[CharacterData, String](_.value)(CharacterData.apply) - given dbType: PgType[CharacterData] = PgTypes.text.bimap(CharacterData.apply, _.value).renamed(""""information_schema"."character_data"""") + given pgType: PgType[CharacterData] = PgTypes.text.bimap(CharacterData.apply, _.value).renamed(""""information_schema"."character_data"""") - given dbTypeArray: PgType[Array[CharacterData]] = PgTypes.textArray.bimap(xs => xs.map(CharacterData.apply), xs => xs.map(_.value)).renamed(""""information_schema"."character_data"[]""") + given pgTypeArray: PgType[Array[CharacterData]] = PgTypes.textArray.bimap(xs => xs.map(CharacterData.apply), xs => xs.map(_.value)).renamed(""""information_schema"."character_data"[]""") } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/information_schema/SqlIdentifier.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/information_schema/SqlIdentifier.scala index 329a10d7bf..f245692bfb 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/information_schema/SqlIdentifier.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/information_schema/SqlIdentifier.scala @@ -18,7 +18,7 @@ case class SqlIdentifier(@JsonValue value: String) object SqlIdentifier { given bijection: Bijection[SqlIdentifier, String] = Bijection.apply[SqlIdentifier, String](_.value)(SqlIdentifier.apply) - given dbType: PgType[SqlIdentifier] = PgTypes.name.bimap(SqlIdentifier.apply, _.value).renamed(""""information_schema"."sql_identifier"""") + given pgType: PgType[SqlIdentifier] = PgTypes.name.bimap(SqlIdentifier.apply, _.value).renamed(""""information_schema"."sql_identifier"""") - given dbTypeArray: PgType[Array[SqlIdentifier]] = PgTypes.nameArray.bimap(xs => xs.map(SqlIdentifier.apply), xs => xs.map(_.value)).renamed(""""information_schema"."sql_identifier"[]""") + given pgTypeArray: PgType[Array[SqlIdentifier]] = PgTypes.nameArray.bimap(xs => xs.map(SqlIdentifier.apply), xs => xs.map(_.value)).renamed(""""information_schema"."sql_identifier"[]""") } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/information_schema/TimeStamp.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/information_schema/TimeStamp.scala index bd1f7a7f64..957a4ee1f0 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/information_schema/TimeStamp.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/information_schema/TimeStamp.scala @@ -19,7 +19,7 @@ case class TimeStamp(@JsonValue value: Instant) object TimeStamp { given bijection: Bijection[TimeStamp, Instant] = Bijection.apply[TimeStamp, Instant](_.value)(TimeStamp.apply) - given dbType: PgType[TimeStamp] = PgTypes.timestamptz.bimap(TimeStamp.apply, _.value).renamed(""""information_schema"."time_stamp"""") + given pgType: PgType[TimeStamp] = PgTypes.timestamptz.bimap(TimeStamp.apply, _.value).renamed(""""information_schema"."time_stamp"""") - given dbTypeArray: PgType[Array[TimeStamp]] = PgTypes.timestamptzArray.bimap(xs => xs.map(TimeStamp.apply), xs => xs.map(_.value)).renamed(""""information_schema"."time_stamp"[]""") + given pgTypeArray: PgType[Array[TimeStamp]] = PgTypes.timestamptzArray.bimap(xs => xs.map(TimeStamp.apply), xs => xs.map(_.value)).renamed(""""information_schema"."time_stamp"[]""") } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/information_schema/YesOrNo.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/information_schema/YesOrNo.scala index ea98ffff2d..e0774b7697 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/information_schema/YesOrNo.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/information_schema/YesOrNo.scala @@ -18,7 +18,7 @@ case class YesOrNo(@JsonValue value: String) object YesOrNo { given bijection: Bijection[YesOrNo, String] = Bijection.apply[YesOrNo, String](_.value)(YesOrNo.apply) - given dbType: PgType[YesOrNo] = PgTypes.text.bimap(YesOrNo.apply, _.value).renamed(""""information_schema"."yes_or_no"""") + given pgType: PgType[YesOrNo] = PgTypes.text.bimap(YesOrNo.apply, _.value).renamed(""""information_schema"."yes_or_no"""") - given dbTypeArray: PgType[Array[YesOrNo]] = PgTypes.textArray.bimap(xs => xs.map(YesOrNo.apply), xs => xs.map(_.value)).renamed(""""information_schema"."yes_or_no"[]""") + given pgTypeArray: PgType[Array[YesOrNo]] = PgTypes.textArray.bimap(xs => xs.map(YesOrNo.apply), xs => xs.map(_.value)).renamed(""""information_schema"."yes_or_no"[]""") } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/address/AddressFields.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/address/AddressFields.scala index 18a92c0b8f..cd5b89e58c 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/address/AddressFields.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/address/AddressFields.scala @@ -33,7 +33,7 @@ class AddressFields(val `_path`: java.util.List[Path]) extends TupleExpr9[Addres Optional.empty(), Optional.of("int4"), (row, value) => row.copy(addressid = value), - AddressId.dbType + AddressId.pgType ) } @@ -81,7 +81,7 @@ class AddressFields(val `_path`: java.util.List[Path]) extends TupleExpr9[Addres Optional.empty(), Optional.of("int4"), (row, value) => row.copy(stateprovinceid = value), - StateprovinceId.dbType + StateprovinceId.pgType ) } diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/address/AddressId.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/address/AddressId.scala index a32873e331..28f92e28b7 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/address/AddressId.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/address/AddressId.scala @@ -16,7 +16,7 @@ case class AddressId(@JsonValue value: Integer) extends scala.AnyVal object AddressId { given bijection: Bijection[AddressId, Integer] = Bijection.apply[AddressId, Integer](_.value)(AddressId.apply) - given dbType: PgType[AddressId] = PgTypes.int4.bimap(AddressId.apply, _.value) + given pgType: PgType[AddressId] = PgTypes.int4.bimap(AddressId.apply, _.value) - given dbTypeArray: PgType[Array[AddressId]] = PgTypes.int4Array.bimap(xs => xs.map(AddressId.apply), xs => xs.map(_.value)) + given pgTypeArray: PgType[Array[AddressId]] = PgTypes.int4Array.bimap(xs => xs.map(AddressId.apply), xs => xs.map(_.value)) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/address/AddressRepoImpl.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/address/AddressRepoImpl.scala index 0376d6e368..85267504a8 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/address/AddressRepoImpl.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/address/AddressRepoImpl.scala @@ -22,19 +22,19 @@ import dev.typr.foundations.Fragment.interpolate class AddressRepoImpl extends AddressRepo { override def delete: DeleteBuilder[AddressFields, AddressRow] = DeleteBuilder.of(""""person"."address"""", AddressFields.structure, Dialect.POSTGRESQL) - override def deleteById(addressid: AddressId)(using c: Connection): java.lang.Boolean = interpolate(Fragment.lit("""delete from "person"."address" where "addressid" = """), Fragment.encode(AddressId.dbType, addressid), Fragment.lit("")).update().runUnchecked(c) > 0 + override def deleteById(addressid: AddressId)(using c: Connection): java.lang.Boolean = interpolate(Fragment.lit("""delete from "person"."address" where "addressid" = """), Fragment.encode(AddressId.pgType, addressid), Fragment.lit("")).update().runUnchecked(c) > 0 override def deleteByIds(addressids: Array[AddressId])(using c: Connection): Integer = { interpolate(Fragment.lit("""delete from "person"."address" - where "addressid" = ANY("""), Fragment.encode(AddressId.dbTypeArray, addressids), Fragment.lit(")")) + where "addressid" = ANY("""), Fragment.encode(AddressId.pgTypeArray, addressids), Fragment.lit(")")) .update() .runUnchecked(c) } override def insert(unsaved: AddressRow)(using c: Connection): AddressRow = { interpolate(Fragment.lit("""insert into "person"."address"("addressid", "addressline1", "addressline2", "city", "stateprovinceid", "postalcode", "spatiallocation", "rowguid", "modifieddate") - values ("""), Fragment.encode(AddressId.dbType, unsaved.addressid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.text, unsaved.addressline1), Fragment.lit(", "), Fragment.encode(PgTypes.text.opt(), unsaved.addressline2), Fragment.lit(", "), Fragment.encode(PgTypes.text, unsaved.city), Fragment.lit(", "), Fragment.encode(StateprovinceId.dbType, unsaved.stateprovinceid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.text, unsaved.postalcode), Fragment.lit(", "), Fragment.encode(PgTypes.bytea.opt(), unsaved.spatiallocation), Fragment.lit("::bytea, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) + values ("""), Fragment.encode(AddressId.pgType, unsaved.addressid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.text, unsaved.addressline1), Fragment.lit(", "), Fragment.encode(PgTypes.text.opt(), unsaved.addressline2), Fragment.lit(", "), Fragment.encode(PgTypes.text, unsaved.city), Fragment.lit(", "), Fragment.encode(StateprovinceId.pgType, unsaved.stateprovinceid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.text, unsaved.postalcode), Fragment.lit(", "), Fragment.encode(PgTypes.bytea.opt(), unsaved.spatiallocation), Fragment.lit("::bytea, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) RETURNING "addressid", "addressline1", "addressline2", "city", "stateprovinceid", "postalcode", "spatiallocation", "rowguid", "modifieddate" """)) .updateReturning(AddressRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -50,14 +50,14 @@ class AddressRepoImpl extends AddressRepo { columns.add(Fragment.lit(""""city"""")): @scala.annotation.nowarn values.add(interpolate(Fragment.encode(PgTypes.text, unsaved.city), Fragment.lit(""))): @scala.annotation.nowarn columns.add(Fragment.lit(""""stateprovinceid"""")): @scala.annotation.nowarn - values.add(interpolate(Fragment.encode(StateprovinceId.dbType, unsaved.stateprovinceid), Fragment.lit("::int4"))): @scala.annotation.nowarn + values.add(interpolate(Fragment.encode(StateprovinceId.pgType, unsaved.stateprovinceid), Fragment.lit("::int4"))): @scala.annotation.nowarn columns.add(Fragment.lit(""""postalcode"""")): @scala.annotation.nowarn values.add(interpolate(Fragment.encode(PgTypes.text, unsaved.postalcode), Fragment.lit(""))): @scala.annotation.nowarn columns.add(Fragment.lit(""""spatiallocation"""")): @scala.annotation.nowarn values.add(interpolate(Fragment.encode(PgTypes.bytea.opt(), unsaved.spatiallocation), Fragment.lit("::bytea"))): @scala.annotation.nowarn unsaved.addressid.visit( { }, - value => { columns.add(Fragment.lit(""""addressid"""")): @scala.annotation.nowarn; values.add(interpolate(Fragment.encode(AddressId.dbType, value), Fragment.lit("::int4"))): @scala.annotation.nowarn } + value => { columns.add(Fragment.lit(""""addressid"""")): @scala.annotation.nowarn; values.add(interpolate(Fragment.encode(AddressId.pgType, value), Fragment.lit("::int4"))): @scala.annotation.nowarn } ); unsaved.rowguid.visit( { }, @@ -98,13 +98,13 @@ class AddressRepoImpl extends AddressRepo { override def selectById(addressid: AddressId)(using c: Connection): Optional[AddressRow] = { interpolate(Fragment.lit("""select "addressid", "addressline1", "addressline2", "city", "stateprovinceid", "postalcode", "spatiallocation", "rowguid", "modifieddate" from "person"."address" - where "addressid" = """), Fragment.encode(AddressId.dbType, addressid), Fragment.lit("")).query(AddressRow.`_rowParser`.first()).runUnchecked(c) + where "addressid" = """), Fragment.encode(AddressId.pgType, addressid), Fragment.lit("")).query(AddressRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(addressids: Array[AddressId])(using c: Connection): java.util.List[AddressRow] = { interpolate(Fragment.lit("""select "addressid", "addressline1", "addressline2", "city", "stateprovinceid", "postalcode", "spatiallocation", "rowguid", "modifieddate" from "person"."address" - where "addressid" = ANY("""), Fragment.encode(AddressId.dbTypeArray, addressids), Fragment.lit(")")).query(AddressRow.`_rowParser`.all()).runUnchecked(c) + where "addressid" = ANY("""), Fragment.encode(AddressId.pgTypeArray, addressids), Fragment.lit(")")).query(AddressRow.`_rowParser`.all()).runUnchecked(c) } override def selectByIdsTracked(addressids: Array[AddressId])(using c: Connection): java.util.Map[AddressId, AddressRow] = { @@ -121,17 +121,17 @@ class AddressRepoImpl extends AddressRepo { set "addressline1" = """), Fragment.encode(PgTypes.text, row.addressline1), Fragment.lit(""", "addressline2" = """), Fragment.encode(PgTypes.text.opt(), row.addressline2), Fragment.lit(""", "city" = """), Fragment.encode(PgTypes.text, row.city), Fragment.lit(""", - "stateprovinceid" = """), Fragment.encode(StateprovinceId.dbType, row.stateprovinceid), Fragment.lit("""::int4, + "stateprovinceid" = """), Fragment.encode(StateprovinceId.pgType, row.stateprovinceid), Fragment.lit("""::int4, "postalcode" = """), Fragment.encode(PgTypes.text, row.postalcode), Fragment.lit(""", "spatiallocation" = """), Fragment.encode(PgTypes.bytea.opt(), row.spatiallocation), Fragment.lit("""::bytea, "rowguid" = """), Fragment.encode(PgTypes.uuid, row.rowguid), Fragment.lit("""::uuid, "modifieddate" = """), Fragment.encode(PgTypes.timestamp, row.modifieddate), Fragment.lit("""::timestamp - where "addressid" = """), Fragment.encode(AddressId.dbType, addressid), Fragment.lit("")).update().runUnchecked(c) > 0 + where "addressid" = """), Fragment.encode(AddressId.pgType, addressid), Fragment.lit("")).update().runUnchecked(c) > 0 } override def upsert(unsaved: AddressRow)(using c: Connection): AddressRow = { interpolate(Fragment.lit("""insert into "person"."address"("addressid", "addressline1", "addressline2", "city", "stateprovinceid", "postalcode", "spatiallocation", "rowguid", "modifieddate") - values ("""), Fragment.encode(AddressId.dbType, unsaved.addressid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.text, unsaved.addressline1), Fragment.lit(", "), Fragment.encode(PgTypes.text.opt(), unsaved.addressline2), Fragment.lit(", "), Fragment.encode(PgTypes.text, unsaved.city), Fragment.lit(", "), Fragment.encode(StateprovinceId.dbType, unsaved.stateprovinceid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.text, unsaved.postalcode), Fragment.lit(", "), Fragment.encode(PgTypes.bytea.opt(), unsaved.spatiallocation), Fragment.lit("::bytea, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) + values ("""), Fragment.encode(AddressId.pgType, unsaved.addressid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.text, unsaved.addressline1), Fragment.lit(", "), Fragment.encode(PgTypes.text.opt(), unsaved.addressline2), Fragment.lit(", "), Fragment.encode(PgTypes.text, unsaved.city), Fragment.lit(", "), Fragment.encode(StateprovinceId.pgType, unsaved.stateprovinceid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.text, unsaved.postalcode), Fragment.lit(", "), Fragment.encode(PgTypes.bytea.opt(), unsaved.spatiallocation), Fragment.lit("::bytea, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) on conflict ("addressid") do update set "addressline1" = EXCLUDED."addressline1", diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/address/AddressRow.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/address/AddressRow.scala index d02bb0d001..935ac6e28d 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/address/AddressRow.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/address/AddressRow.scala @@ -84,7 +84,7 @@ case class AddressRow( } object AddressRow { - val `_rowParser`: RowParser[AddressRow] = RowParsers.of(AddressId.dbType, PgTypes.text, PgTypes.text.opt(), PgTypes.text, StateprovinceId.dbType, PgTypes.text, PgTypes.bytea.opt(), PgTypes.uuid, PgTypes.timestamp, AddressRow.apply, row => Array[Any](row.addressid, row.addressline1, row.addressline2, row.city, row.stateprovinceid, row.postalcode, row.spatiallocation, row.rowguid, row.modifieddate)) + val `_rowParser`: RowParser[AddressRow] = RowParsers.of(AddressId.pgType, PgTypes.text, PgTypes.text.opt(), PgTypes.text, StateprovinceId.pgType, PgTypes.text, PgTypes.bytea.opt(), PgTypes.uuid, PgTypes.timestamp, AddressRow.apply, row => Array[Any](row.addressid, row.addressline1, row.addressline2, row.city, row.stateprovinceid, row.postalcode, row.spatiallocation, row.rowguid, row.modifieddate)) given pgText: PgText[AddressRow] = PgText.from(`_rowParser`) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/address/AddressRowUnsaved.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/address/AddressRowUnsaved.scala index 358adb4d04..7b8ea1c913 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/address/AddressRowUnsaved.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/address/AddressRowUnsaved.scala @@ -59,5 +59,5 @@ case class AddressRowUnsaved( } object AddressRowUnsaved { - given pgText: PgText[AddressRowUnsaved] = PgText.instance((row, sb) => { PgTypes.text.text.unsafeEncode(row.addressline1, sb); sb.append(PgText.DELIMETER); PgTypes.text.opt().text.unsafeEncode(row.addressline2, sb); sb.append(PgText.DELIMETER); PgTypes.text.text.unsafeEncode(row.city, sb); sb.append(PgText.DELIMETER); StateprovinceId.dbType.text.unsafeEncode(row.stateprovinceid, sb); sb.append(PgText.DELIMETER); PgTypes.text.text.unsafeEncode(row.postalcode, sb); sb.append(PgText.DELIMETER); PgTypes.bytea.opt().text.unsafeEncode(row.spatiallocation, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using AddressId.dbType.text).unsafeEncode(row.addressid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.uuid.text).unsafeEncode(row.rowguid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) + given pgText: PgText[AddressRowUnsaved] = PgText.instance((row, sb) => { PgTypes.text.text.unsafeEncode(row.addressline1, sb); sb.append(PgText.DELIMETER); PgTypes.text.opt().text.unsafeEncode(row.addressline2, sb); sb.append(PgText.DELIMETER); PgTypes.text.text.unsafeEncode(row.city, sb); sb.append(PgText.DELIMETER); StateprovinceId.pgType.text.unsafeEncode(row.stateprovinceid, sb); sb.append(PgText.DELIMETER); PgTypes.text.text.unsafeEncode(row.postalcode, sb); sb.append(PgText.DELIMETER); PgTypes.bytea.opt().text.unsafeEncode(row.spatiallocation, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using AddressId.pgType.text).unsafeEncode(row.addressid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.uuid.text).unsafeEncode(row.rowguid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeFields.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeFields.scala index 056512ba1e..daa4dfb1f0 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeFields.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeFields.scala @@ -29,7 +29,7 @@ class AddresstypeFields(val `_path`: java.util.List[Path]) extends TupleExpr4[Ad Optional.empty(), Optional.of("int4"), (row, value) => row.copy(addresstypeid = value), - AddresstypeId.dbType + AddresstypeId.pgType ) } @@ -41,7 +41,7 @@ class AddresstypeFields(val `_path`: java.util.List[Path]) extends TupleExpr4[Ad Optional.empty(), Optional.of("varchar"), (row, value) => row.copy(name = value), - Name.dbType + Name.pgType ) } diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeId.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeId.scala index 2ccc64f6ed..9d1f3c24cf 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeId.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeId.scala @@ -16,7 +16,7 @@ case class AddresstypeId(@JsonValue value: Integer) extends scala.AnyVal object AddresstypeId { given bijection: Bijection[AddresstypeId, Integer] = Bijection.apply[AddresstypeId, Integer](_.value)(AddresstypeId.apply) - given dbType: PgType[AddresstypeId] = PgTypes.int4.bimap(AddresstypeId.apply, _.value) + given pgType: PgType[AddresstypeId] = PgTypes.int4.bimap(AddresstypeId.apply, _.value) - given dbTypeArray: PgType[Array[AddresstypeId]] = PgTypes.int4Array.bimap(xs => xs.map(AddresstypeId.apply), xs => xs.map(_.value)) + given pgTypeArray: PgType[Array[AddresstypeId]] = PgTypes.int4Array.bimap(xs => xs.map(AddresstypeId.apply), xs => xs.map(_.value)) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRepoImpl.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRepoImpl.scala index 0471f3b43b..d93dcff1ac 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRepoImpl.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRepoImpl.scala @@ -22,19 +22,19 @@ import dev.typr.foundations.Fragment.interpolate class AddresstypeRepoImpl extends AddresstypeRepo { override def delete: DeleteBuilder[AddresstypeFields, AddresstypeRow] = DeleteBuilder.of(""""person"."addresstype"""", AddresstypeFields.structure, Dialect.POSTGRESQL) - override def deleteById(addresstypeid: AddresstypeId)(using c: Connection): java.lang.Boolean = interpolate(Fragment.lit("""delete from "person"."addresstype" where "addresstypeid" = """), Fragment.encode(AddresstypeId.dbType, addresstypeid), Fragment.lit("")).update().runUnchecked(c) > 0 + override def deleteById(addresstypeid: AddresstypeId)(using c: Connection): java.lang.Boolean = interpolate(Fragment.lit("""delete from "person"."addresstype" where "addresstypeid" = """), Fragment.encode(AddresstypeId.pgType, addresstypeid), Fragment.lit("")).update().runUnchecked(c) > 0 override def deleteByIds(addresstypeids: Array[AddresstypeId])(using c: Connection): Integer = { interpolate(Fragment.lit("""delete from "person"."addresstype" - where "addresstypeid" = ANY("""), Fragment.encode(AddresstypeId.dbTypeArray, addresstypeids), Fragment.lit(")")) + where "addresstypeid" = ANY("""), Fragment.encode(AddresstypeId.pgTypeArray, addresstypeids), Fragment.lit(")")) .update() .runUnchecked(c) } override def insert(unsaved: AddresstypeRow)(using c: Connection): AddresstypeRow = { interpolate(Fragment.lit("""insert into "person"."addresstype"("addresstypeid", "name", "rowguid", "modifieddate") - values ("""), Fragment.encode(AddresstypeId.dbType, unsaved.addresstypeid), Fragment.lit("::int4, "), Fragment.encode(Name.dbType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) + values ("""), Fragment.encode(AddresstypeId.pgType, unsaved.addresstypeid), Fragment.lit("::int4, "), Fragment.encode(Name.pgType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) RETURNING "addresstypeid", "name", "rowguid", "modifieddate" """)) .updateReturning(AddresstypeRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -44,10 +44,10 @@ class AddresstypeRepoImpl extends AddresstypeRepo { val columns: ArrayList[Fragment] = new ArrayList() val values: ArrayList[Fragment] = new ArrayList() columns.add(Fragment.lit(""""name"""")): @scala.annotation.nowarn - values.add(interpolate(Fragment.encode(Name.dbType, unsaved.name), Fragment.lit("::varchar"))): @scala.annotation.nowarn + values.add(interpolate(Fragment.encode(Name.pgType, unsaved.name), Fragment.lit("::varchar"))): @scala.annotation.nowarn unsaved.addresstypeid.visit( { }, - value => { columns.add(Fragment.lit(""""addresstypeid"""")): @scala.annotation.nowarn; values.add(interpolate(Fragment.encode(AddresstypeId.dbType, value), Fragment.lit("::int4"))): @scala.annotation.nowarn } + value => { columns.add(Fragment.lit(""""addresstypeid"""")): @scala.annotation.nowarn; values.add(interpolate(Fragment.encode(AddresstypeId.pgType, value), Fragment.lit("::int4"))): @scala.annotation.nowarn } ); unsaved.rowguid.visit( { }, @@ -88,13 +88,13 @@ class AddresstypeRepoImpl extends AddresstypeRepo { override def selectById(addresstypeid: AddresstypeId)(using c: Connection): Optional[AddresstypeRow] = { interpolate(Fragment.lit("""select "addresstypeid", "name", "rowguid", "modifieddate" from "person"."addresstype" - where "addresstypeid" = """), Fragment.encode(AddresstypeId.dbType, addresstypeid), Fragment.lit("")).query(AddresstypeRow.`_rowParser`.first()).runUnchecked(c) + where "addresstypeid" = """), Fragment.encode(AddresstypeId.pgType, addresstypeid), Fragment.lit("")).query(AddresstypeRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(addresstypeids: Array[AddresstypeId])(using c: Connection): java.util.List[AddresstypeRow] = { interpolate(Fragment.lit("""select "addresstypeid", "name", "rowguid", "modifieddate" from "person"."addresstype" - where "addresstypeid" = ANY("""), Fragment.encode(AddresstypeId.dbTypeArray, addresstypeids), Fragment.lit(")")).query(AddresstypeRow.`_rowParser`.all()).runUnchecked(c) + where "addresstypeid" = ANY("""), Fragment.encode(AddresstypeId.pgTypeArray, addresstypeids), Fragment.lit(")")).query(AddresstypeRow.`_rowParser`.all()).runUnchecked(c) } override def selectByIdsTracked(addresstypeids: Array[AddresstypeId])(using c: Connection): java.util.Map[AddresstypeId, AddresstypeRow] = { @@ -108,15 +108,15 @@ class AddresstypeRepoImpl extends AddresstypeRepo { override def update(row: AddresstypeRow)(using c: Connection): java.lang.Boolean = { val addresstypeid: AddresstypeId = row.addresstypeid return interpolate(Fragment.lit("""update "person"."addresstype" - set "name" = """), Fragment.encode(Name.dbType, row.name), Fragment.lit("""::varchar, + set "name" = """), Fragment.encode(Name.pgType, row.name), Fragment.lit("""::varchar, "rowguid" = """), Fragment.encode(PgTypes.uuid, row.rowguid), Fragment.lit("""::uuid, "modifieddate" = """), Fragment.encode(PgTypes.timestamp, row.modifieddate), Fragment.lit("""::timestamp - where "addresstypeid" = """), Fragment.encode(AddresstypeId.dbType, addresstypeid), Fragment.lit("")).update().runUnchecked(c) > 0 + where "addresstypeid" = """), Fragment.encode(AddresstypeId.pgType, addresstypeid), Fragment.lit("")).update().runUnchecked(c) > 0 } override def upsert(unsaved: AddresstypeRow)(using c: Connection): AddresstypeRow = { interpolate(Fragment.lit("""insert into "person"."addresstype"("addresstypeid", "name", "rowguid", "modifieddate") - values ("""), Fragment.encode(AddresstypeId.dbType, unsaved.addresstypeid), Fragment.lit("::int4, "), Fragment.encode(Name.dbType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) + values ("""), Fragment.encode(AddresstypeId.pgType, unsaved.addresstypeid), Fragment.lit("::int4, "), Fragment.encode(Name.pgType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) on conflict ("addresstypeid") do update set "name" = EXCLUDED."name", diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRow.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRow.scala index 97b472338a..bce1acdabc 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRow.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRow.scala @@ -56,7 +56,7 @@ case class AddresstypeRow( } object AddresstypeRow { - val `_rowParser`: RowParser[AddresstypeRow] = RowParsers.of(AddresstypeId.dbType, Name.dbType, PgTypes.uuid, PgTypes.timestamp, AddresstypeRow.apply, row => Array[Any](row.addresstypeid, row.name, row.rowguid, row.modifieddate)) + val `_rowParser`: RowParser[AddresstypeRow] = RowParsers.of(AddresstypeId.pgType, Name.pgType, PgTypes.uuid, PgTypes.timestamp, AddresstypeRow.apply, row => Array[Any](row.addresstypeid, row.name, row.rowguid, row.modifieddate)) given pgText: PgText[AddresstypeRow] = PgText.from(`_rowParser`) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRowUnsaved.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRowUnsaved.scala index 21110107b3..94b7c08089 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRowUnsaved.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRowUnsaved.scala @@ -41,5 +41,5 @@ case class AddresstypeRowUnsaved( } object AddresstypeRowUnsaved { - given pgText: PgText[AddresstypeRowUnsaved] = PgText.instance((row, sb) => { Name.dbType.text.unsafeEncode(row.name, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using AddresstypeId.dbType.text).unsafeEncode(row.addresstypeid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.uuid.text).unsafeEncode(row.rowguid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) + given pgText: PgText[AddresstypeRowUnsaved] = PgText.instance((row, sb) => { Name.pgType.text.unsafeEncode(row.name, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using AddresstypeId.pgType.text).unsafeEncode(row.addresstypeid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.uuid.text).unsafeEncode(row.rowguid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityFields.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityFields.scala index 3c3f536cc2..00aba73aad 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityFields.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityFields.scala @@ -28,7 +28,7 @@ class BusinessentityFields(val `_path`: java.util.List[Path]) extends TupleExpr3 Optional.empty(), Optional.of("int4"), (row, value) => row.copy(businessentityid = value), - BusinessentityId.dbType + BusinessentityId.pgType ) } diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityId.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityId.scala index 21eb0d6d8c..b901f6d6eb 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityId.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityId.scala @@ -16,7 +16,7 @@ case class BusinessentityId(@JsonValue value: Integer) extends scala.AnyVal object BusinessentityId { given bijection: Bijection[BusinessentityId, Integer] = Bijection.apply[BusinessentityId, Integer](_.value)(BusinessentityId.apply) - given dbType: PgType[BusinessentityId] = PgTypes.int4.bimap(BusinessentityId.apply, _.value) + given pgType: PgType[BusinessentityId] = PgTypes.int4.bimap(BusinessentityId.apply, _.value) - given dbTypeArray: PgType[Array[BusinessentityId]] = PgTypes.int4Array.bimap(xs => xs.map(BusinessentityId.apply), xs => xs.map(_.value)) + given pgTypeArray: PgType[Array[BusinessentityId]] = PgTypes.int4Array.bimap(xs => xs.map(BusinessentityId.apply), xs => xs.map(_.value)) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRepoImpl.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRepoImpl.scala index ff504edc76..707651b081 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRepoImpl.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRepoImpl.scala @@ -21,19 +21,19 @@ import dev.typr.foundations.Fragment.interpolate class BusinessentityRepoImpl extends BusinessentityRepo { override def delete: DeleteBuilder[BusinessentityFields, BusinessentityRow] = DeleteBuilder.of(""""person"."businessentity"""", BusinessentityFields.structure, Dialect.POSTGRESQL) - override def deleteById(businessentityid: BusinessentityId)(using c: Connection): java.lang.Boolean = interpolate(Fragment.lit("""delete from "person"."businessentity" where "businessentityid" = """), Fragment.encode(BusinessentityId.dbType, businessentityid), Fragment.lit("")).update().runUnchecked(c) > 0 + override def deleteById(businessentityid: BusinessentityId)(using c: Connection): java.lang.Boolean = interpolate(Fragment.lit("""delete from "person"."businessentity" where "businessentityid" = """), Fragment.encode(BusinessentityId.pgType, businessentityid), Fragment.lit("")).update().runUnchecked(c) > 0 override def deleteByIds(businessentityids: Array[BusinessentityId])(using c: Connection): Integer = { interpolate(Fragment.lit("""delete from "person"."businessentity" - where "businessentityid" = ANY("""), Fragment.encode(BusinessentityId.dbTypeArray, businessentityids), Fragment.lit(")")) + where "businessentityid" = ANY("""), Fragment.encode(BusinessentityId.pgTypeArray, businessentityids), Fragment.lit(")")) .update() .runUnchecked(c) } override def insert(unsaved: BusinessentityRow)(using c: Connection): BusinessentityRow = { interpolate(Fragment.lit("""insert into "person"."businessentity"("businessentityid", "rowguid", "modifieddate") - values ("""), Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) + values ("""), Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) RETURNING "businessentityid", "rowguid", "modifieddate" """)) .updateReturning(BusinessentityRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -44,7 +44,7 @@ class BusinessentityRepoImpl extends BusinessentityRepo { val values: ArrayList[Fragment] = new ArrayList() unsaved.businessentityid.visit( { }, - value => { columns.add(Fragment.lit(""""businessentityid"""")): @scala.annotation.nowarn; values.add(interpolate(Fragment.encode(BusinessentityId.dbType, value), Fragment.lit("::int4"))): @scala.annotation.nowarn } + value => { columns.add(Fragment.lit(""""businessentityid"""")): @scala.annotation.nowarn; values.add(interpolate(Fragment.encode(BusinessentityId.pgType, value), Fragment.lit("::int4"))): @scala.annotation.nowarn } ); unsaved.rowguid.visit( { }, @@ -87,13 +87,13 @@ class BusinessentityRepoImpl extends BusinessentityRepo { override def selectById(businessentityid: BusinessentityId)(using c: Connection): Optional[BusinessentityRow] = { interpolate(Fragment.lit("""select "businessentityid", "rowguid", "modifieddate" from "person"."businessentity" - where "businessentityid" = """), Fragment.encode(BusinessentityId.dbType, businessentityid), Fragment.lit("")).query(BusinessentityRow.`_rowParser`.first()).runUnchecked(c) + where "businessentityid" = """), Fragment.encode(BusinessentityId.pgType, businessentityid), Fragment.lit("")).query(BusinessentityRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(businessentityids: Array[BusinessentityId])(using c: Connection): java.util.List[BusinessentityRow] = { interpolate(Fragment.lit("""select "businessentityid", "rowguid", "modifieddate" from "person"."businessentity" - where "businessentityid" = ANY("""), Fragment.encode(BusinessentityId.dbTypeArray, businessentityids), Fragment.lit(")")).query(BusinessentityRow.`_rowParser`.all()).runUnchecked(c) + where "businessentityid" = ANY("""), Fragment.encode(BusinessentityId.pgTypeArray, businessentityids), Fragment.lit(")")).query(BusinessentityRow.`_rowParser`.all()).runUnchecked(c) } override def selectByIdsTracked(businessentityids: Array[BusinessentityId])(using c: Connection): java.util.Map[BusinessentityId, BusinessentityRow] = { @@ -109,12 +109,12 @@ class BusinessentityRepoImpl extends BusinessentityRepo { return interpolate(Fragment.lit("""update "person"."businessentity" set "rowguid" = """), Fragment.encode(PgTypes.uuid, row.rowguid), Fragment.lit("""::uuid, "modifieddate" = """), Fragment.encode(PgTypes.timestamp, row.modifieddate), Fragment.lit("""::timestamp - where "businessentityid" = """), Fragment.encode(BusinessentityId.dbType, businessentityid), Fragment.lit("")).update().runUnchecked(c) > 0 + where "businessentityid" = """), Fragment.encode(BusinessentityId.pgType, businessentityid), Fragment.lit("")).update().runUnchecked(c) > 0 } override def upsert(unsaved: BusinessentityRow)(using c: Connection): BusinessentityRow = { interpolate(Fragment.lit("""insert into "person"."businessentity"("businessentityid", "rowguid", "modifieddate") - values ("""), Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) + values ("""), Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) on conflict ("businessentityid") do update set "rowguid" = EXCLUDED."rowguid", diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRow.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRow.scala index 1dc1ec8de1..b581e8d001 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRow.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRow.scala @@ -44,7 +44,7 @@ case class BusinessentityRow( } object BusinessentityRow { - val `_rowParser`: RowParser[BusinessentityRow] = RowParsers.of(BusinessentityId.dbType, PgTypes.uuid, PgTypes.timestamp, BusinessentityRow.apply, row => Array[Any](row.businessentityid, row.rowguid, row.modifieddate)) + val `_rowParser`: RowParser[BusinessentityRow] = RowParsers.of(BusinessentityId.pgType, PgTypes.uuid, PgTypes.timestamp, BusinessentityRow.apply, row => Array[Any](row.businessentityid, row.rowguid, row.modifieddate)) given pgText: PgText[BusinessentityRow] = PgText.from(`_rowParser`) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRowUnsaved.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRowUnsaved.scala index 7d629d8432..c8ae363b4d 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRowUnsaved.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRowUnsaved.scala @@ -31,5 +31,5 @@ case class BusinessentityRowUnsaved( } object BusinessentityRowUnsaved { - given pgText: PgText[BusinessentityRowUnsaved] = PgText.instance((row, sb) => { Defaulted.pgText(using BusinessentityId.dbType.text).unsafeEncode(row.businessentityid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.uuid.text).unsafeEncode(row.rowguid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) + given pgText: PgText[BusinessentityRowUnsaved] = PgText.instance((row, sb) => { Defaulted.pgText(using BusinessentityId.pgType.text).unsafeEncode(row.businessentityid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.uuid.text).unsafeEncode(row.rowguid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressFields.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressFields.scala index 3acba84e1e..13a5091b45 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressFields.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressFields.scala @@ -39,7 +39,7 @@ class BusinessentityaddressFields(val `_path`: java.util.List[Path]) extends Tup Optional.empty(), Optional.of("int4"), (row, value) => row.copy(businessentityid = value), - BusinessentityId.dbType + BusinessentityId.pgType ) } @@ -51,7 +51,7 @@ class BusinessentityaddressFields(val `_path`: java.util.List[Path]) extends Tup Optional.empty(), Optional.of("int4"), (row, value) => row.copy(addressid = value), - AddressId.dbType + AddressId.pgType ) } @@ -63,7 +63,7 @@ class BusinessentityaddressFields(val `_path`: java.util.List[Path]) extends Tup Optional.empty(), Optional.of("int4"), (row, value) => row.copy(addresstypeid = value), - AddresstypeId.dbType + AddresstypeId.pgType ) } diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressId.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressId.scala index e1ebeade05..9f8e413dbd 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressId.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressId.scala @@ -26,5 +26,5 @@ case class BusinessentityaddressId( } object BusinessentityaddressId { - val `_rowParser`: RowParser[BusinessentityaddressId] = RowParsers.of(BusinessentityId.dbType, AddressId.dbType, AddresstypeId.dbType, BusinessentityaddressId.apply, row => Array[Any](row.businessentityid, row.addressid, row.addresstypeid)) + val `_rowParser`: RowParser[BusinessentityaddressId] = RowParsers.of(BusinessentityId.pgType, AddressId.pgType, AddresstypeId.pgType, BusinessentityaddressId.apply, row => Array[Any](row.businessentityid, row.addressid, row.addresstypeid)) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRepoImpl.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRepoImpl.scala index a4ed0aa5a8..fa220d8b11 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRepoImpl.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRepoImpl.scala @@ -24,7 +24,7 @@ import dev.typr.foundations.Fragment.interpolate class BusinessentityaddressRepoImpl extends BusinessentityaddressRepo { override def delete: DeleteBuilder[BusinessentityaddressFields, BusinessentityaddressRow] = DeleteBuilder.of(""""person"."businessentityaddress"""", BusinessentityaddressFields.structure, Dialect.POSTGRESQL) - override def deleteById(compositeId: BusinessentityaddressId)(using c: Connection): java.lang.Boolean = interpolate(Fragment.lit("""delete from "person"."businessentityaddress" where "businessentityid" = """), Fragment.encode(BusinessentityId.dbType, compositeId.businessentityid), Fragment.lit(""" AND "addressid" = """), Fragment.encode(AddressId.dbType, compositeId.addressid), Fragment.lit(""" AND "addresstypeid" = """), Fragment.encode(AddresstypeId.dbType, compositeId.addresstypeid), Fragment.lit("")).update().runUnchecked(c) > 0 + override def deleteById(compositeId: BusinessentityaddressId)(using c: Connection): java.lang.Boolean = interpolate(Fragment.lit("""delete from "person"."businessentityaddress" where "businessentityid" = """), Fragment.encode(BusinessentityId.pgType, compositeId.businessentityid), Fragment.lit(""" AND "addressid" = """), Fragment.encode(AddressId.pgType, compositeId.addressid), Fragment.lit(""" AND "addresstypeid" = """), Fragment.encode(AddresstypeId.pgType, compositeId.addresstypeid), Fragment.lit("")).update().runUnchecked(c) > 0 override def deleteByIds(compositeIds: Array[BusinessentityaddressId])(using c: Connection): Integer = { val businessentityid: Array[BusinessentityId] = compositeIds.map(_.businessentityid) @@ -33,13 +33,13 @@ class BusinessentityaddressRepoImpl extends BusinessentityaddressRepo { return interpolate(Fragment.lit("""delete from "person"."businessentityaddress" where ("businessentityid", "addressid", "addresstypeid") - in (select * from unnest("""), Fragment.encode(BusinessentityId.dbTypeArray, businessentityid), Fragment.lit(", "), Fragment.encode(AddressId.dbTypeArray, addressid), Fragment.lit(", "), Fragment.encode(AddresstypeId.dbTypeArray, addresstypeid), Fragment.lit(""")) + in (select * from unnest("""), Fragment.encode(BusinessentityId.pgTypeArray, businessentityid), Fragment.lit(", "), Fragment.encode(AddressId.pgTypeArray, addressid), Fragment.lit(", "), Fragment.encode(AddresstypeId.pgTypeArray, addresstypeid), Fragment.lit(""")) """)).update().runUnchecked(c) } override def insert(unsaved: BusinessentityaddressRow)(using c: Connection): BusinessentityaddressRow = { interpolate(Fragment.lit("""insert into "person"."businessentityaddress"("businessentityid", "addressid", "addresstypeid", "rowguid", "modifieddate") - values ("""), Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid), Fragment.lit("::int4, "), Fragment.encode(AddressId.dbType, unsaved.addressid), Fragment.lit("::int4, "), Fragment.encode(AddresstypeId.dbType, unsaved.addresstypeid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) + values ("""), Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid), Fragment.lit("::int4, "), Fragment.encode(AddressId.pgType, unsaved.addressid), Fragment.lit("::int4, "), Fragment.encode(AddresstypeId.pgType, unsaved.addresstypeid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) RETURNING "businessentityid", "addressid", "addresstypeid", "rowguid", "modifieddate" """)) .updateReturning(BusinessentityaddressRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -49,11 +49,11 @@ class BusinessentityaddressRepoImpl extends BusinessentityaddressRepo { val columns: ArrayList[Fragment] = new ArrayList() val values: ArrayList[Fragment] = new ArrayList() columns.add(Fragment.lit(""""businessentityid"""")): @scala.annotation.nowarn - values.add(interpolate(Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid), Fragment.lit("::int4"))): @scala.annotation.nowarn + values.add(interpolate(Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid), Fragment.lit("::int4"))): @scala.annotation.nowarn columns.add(Fragment.lit(""""addressid"""")): @scala.annotation.nowarn - values.add(interpolate(Fragment.encode(AddressId.dbType, unsaved.addressid), Fragment.lit("::int4"))): @scala.annotation.nowarn + values.add(interpolate(Fragment.encode(AddressId.pgType, unsaved.addressid), Fragment.lit("::int4"))): @scala.annotation.nowarn columns.add(Fragment.lit(""""addresstypeid"""")): @scala.annotation.nowarn - values.add(interpolate(Fragment.encode(AddresstypeId.dbType, unsaved.addresstypeid), Fragment.lit("::int4"))): @scala.annotation.nowarn + values.add(interpolate(Fragment.encode(AddresstypeId.pgType, unsaved.addresstypeid), Fragment.lit("::int4"))): @scala.annotation.nowarn unsaved.rowguid.visit( { }, value => { columns.add(Fragment.lit(""""rowguid"""")): @scala.annotation.nowarn; values.add(interpolate(Fragment.encode(PgTypes.uuid, value), Fragment.lit("::uuid"))): @scala.annotation.nowarn } @@ -93,7 +93,7 @@ class BusinessentityaddressRepoImpl extends BusinessentityaddressRepo { override def selectById(compositeId: BusinessentityaddressId)(using c: Connection): Optional[BusinessentityaddressRow] = { interpolate(Fragment.lit("""select "businessentityid", "addressid", "addresstypeid", "rowguid", "modifieddate" from "person"."businessentityaddress" - where "businessentityid" = """), Fragment.encode(BusinessentityId.dbType, compositeId.businessentityid), Fragment.lit(""" AND "addressid" = """), Fragment.encode(AddressId.dbType, compositeId.addressid), Fragment.lit(""" AND "addresstypeid" = """), Fragment.encode(AddresstypeId.dbType, compositeId.addresstypeid), Fragment.lit("")).query(BusinessentityaddressRow.`_rowParser`.first()).runUnchecked(c) + where "businessentityid" = """), Fragment.encode(BusinessentityId.pgType, compositeId.businessentityid), Fragment.lit(""" AND "addressid" = """), Fragment.encode(AddressId.pgType, compositeId.addressid), Fragment.lit(""" AND "addresstypeid" = """), Fragment.encode(AddresstypeId.pgType, compositeId.addresstypeid), Fragment.lit("")).query(BusinessentityaddressRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(compositeIds: Array[BusinessentityaddressId])(using c: Connection): java.util.List[BusinessentityaddressRow] = { @@ -103,7 +103,7 @@ class BusinessentityaddressRepoImpl extends BusinessentityaddressRepo { return interpolate(Fragment.lit("""select "businessentityid", "addressid", "addresstypeid", "rowguid", "modifieddate" from "person"."businessentityaddress" where ("businessentityid", "addressid", "addresstypeid") - in (select * from unnest("""), Fragment.encode(BusinessentityId.dbTypeArray, businessentityid), Fragment.lit(", "), Fragment.encode(AddressId.dbTypeArray, addressid), Fragment.lit(", "), Fragment.encode(AddresstypeId.dbTypeArray, addresstypeid), Fragment.lit(""")) + in (select * from unnest("""), Fragment.encode(BusinessentityId.pgTypeArray, businessentityid), Fragment.lit(", "), Fragment.encode(AddressId.pgTypeArray, addressid), Fragment.lit(", "), Fragment.encode(AddresstypeId.pgTypeArray, addresstypeid), Fragment.lit(""")) """)).query(BusinessentityaddressRow.`_rowParser`.all()).runUnchecked(c) } @@ -120,12 +120,12 @@ class BusinessentityaddressRepoImpl extends BusinessentityaddressRepo { return interpolate(Fragment.lit("""update "person"."businessentityaddress" set "rowguid" = """), Fragment.encode(PgTypes.uuid, row.rowguid), Fragment.lit("""::uuid, "modifieddate" = """), Fragment.encode(PgTypes.timestamp, row.modifieddate), Fragment.lit("""::timestamp - where "businessentityid" = """), Fragment.encode(BusinessentityId.dbType, compositeId.businessentityid), Fragment.lit(""" AND "addressid" = """), Fragment.encode(AddressId.dbType, compositeId.addressid), Fragment.lit(""" AND "addresstypeid" = """), Fragment.encode(AddresstypeId.dbType, compositeId.addresstypeid), Fragment.lit("")).update().runUnchecked(c) > 0 + where "businessentityid" = """), Fragment.encode(BusinessentityId.pgType, compositeId.businessentityid), Fragment.lit(""" AND "addressid" = """), Fragment.encode(AddressId.pgType, compositeId.addressid), Fragment.lit(""" AND "addresstypeid" = """), Fragment.encode(AddresstypeId.pgType, compositeId.addresstypeid), Fragment.lit("")).update().runUnchecked(c) > 0 } override def upsert(unsaved: BusinessentityaddressRow)(using c: Connection): BusinessentityaddressRow = { interpolate(Fragment.lit("""insert into "person"."businessentityaddress"("businessentityid", "addressid", "addresstypeid", "rowguid", "modifieddate") - values ("""), Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid), Fragment.lit("::int4, "), Fragment.encode(AddressId.dbType, unsaved.addressid), Fragment.lit("::int4, "), Fragment.encode(AddresstypeId.dbType, unsaved.addresstypeid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) + values ("""), Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid), Fragment.lit("::int4, "), Fragment.encode(AddressId.pgType, unsaved.addressid), Fragment.lit("::int4, "), Fragment.encode(AddresstypeId.pgType, unsaved.addresstypeid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) on conflict ("businessentityid", "addressid", "addresstypeid") do update set "rowguid" = EXCLUDED."rowguid", diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRow.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRow.scala index 7734144564..340623305d 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRow.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRow.scala @@ -68,7 +68,7 @@ case class BusinessentityaddressRow( } object BusinessentityaddressRow { - val `_rowParser`: RowParser[BusinessentityaddressRow] = RowParsers.of(BusinessentityId.dbType, AddressId.dbType, AddresstypeId.dbType, PgTypes.uuid, PgTypes.timestamp, BusinessentityaddressRow.apply, row => Array[Any](row.businessentityid, row.addressid, row.addresstypeid, row.rowguid, row.modifieddate)) + val `_rowParser`: RowParser[BusinessentityaddressRow] = RowParsers.of(BusinessentityId.pgType, AddressId.pgType, AddresstypeId.pgType, PgTypes.uuid, PgTypes.timestamp, BusinessentityaddressRow.apply, row => Array[Any](row.businessentityid, row.addressid, row.addresstypeid, row.rowguid, row.modifieddate)) def apply( compositeId: BusinessentityaddressId, diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRowUnsaved.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRowUnsaved.scala index 218192232b..6e338faf58 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRowUnsaved.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRowUnsaved.scala @@ -49,5 +49,5 @@ case class BusinessentityaddressRowUnsaved( } object BusinessentityaddressRowUnsaved { - given pgText: PgText[BusinessentityaddressRowUnsaved] = PgText.instance((row, sb) => { BusinessentityId.dbType.text.unsafeEncode(row.businessentityid, sb); sb.append(PgText.DELIMETER); AddressId.dbType.text.unsafeEncode(row.addressid, sb); sb.append(PgText.DELIMETER); AddresstypeId.dbType.text.unsafeEncode(row.addresstypeid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.uuid.text).unsafeEncode(row.rowguid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) + given pgText: PgText[BusinessentityaddressRowUnsaved] = PgText.instance((row, sb) => { BusinessentityId.pgType.text.unsafeEncode(row.businessentityid, sb); sb.append(PgText.DELIMETER); AddressId.pgType.text.unsafeEncode(row.addressid, sb); sb.append(PgText.DELIMETER); AddresstypeId.pgType.text.unsafeEncode(row.addresstypeid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.uuid.text).unsafeEncode(row.rowguid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/countryregion/CountryregionFields.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/countryregion/CountryregionFields.scala index 71babbb7db..e4fb7e7238 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/countryregion/CountryregionFields.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/countryregion/CountryregionFields.scala @@ -28,7 +28,7 @@ class CountryregionFields(val `_path`: java.util.List[Path]) extends TupleExpr3[ Optional.empty(), Optional.empty(), (row, value) => row.copy(countryregioncode = value), - CountryregionId.dbType + CountryregionId.pgType ) } @@ -40,7 +40,7 @@ class CountryregionFields(val `_path`: java.util.List[Path]) extends TupleExpr3[ Optional.empty(), Optional.of("varchar"), (row, value) => row.copy(name = value), - Name.dbType + Name.pgType ) } diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/countryregion/CountryregionId.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/countryregion/CountryregionId.scala index 691e3bd9d6..41e7a7a992 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/countryregion/CountryregionId.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/countryregion/CountryregionId.scala @@ -16,7 +16,7 @@ case class CountryregionId(@JsonValue value: String) extends scala.AnyVal object CountryregionId { given bijection: Bijection[CountryregionId, String] = Bijection.apply[CountryregionId, String](_.value)(CountryregionId.apply) - given dbType: PgType[CountryregionId] = PgTypes.text.bimap(CountryregionId.apply, _.value) + given pgType: PgType[CountryregionId] = PgTypes.text.bimap(CountryregionId.apply, _.value) - given dbTypeArray: PgType[Array[CountryregionId]] = PgTypes.textArray.bimap(xs => xs.map(CountryregionId.apply), xs => xs.map(_.value)) + given pgTypeArray: PgType[Array[CountryregionId]] = PgTypes.textArray.bimap(xs => xs.map(CountryregionId.apply), xs => xs.map(_.value)) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRepoImpl.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRepoImpl.scala index 065e60638d..b485f1ce1b 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRepoImpl.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRepoImpl.scala @@ -22,19 +22,19 @@ import dev.typr.foundations.Fragment.interpolate class CountryregionRepoImpl extends CountryregionRepo { override def delete: DeleteBuilder[CountryregionFields, CountryregionRow] = DeleteBuilder.of(""""person"."countryregion"""", CountryregionFields.structure, Dialect.POSTGRESQL) - override def deleteById(countryregioncode: CountryregionId)(using c: Connection): java.lang.Boolean = interpolate(Fragment.lit("""delete from "person"."countryregion" where "countryregioncode" = """), Fragment.encode(CountryregionId.dbType, countryregioncode), Fragment.lit("")).update().runUnchecked(c) > 0 + override def deleteById(countryregioncode: CountryregionId)(using c: Connection): java.lang.Boolean = interpolate(Fragment.lit("""delete from "person"."countryregion" where "countryregioncode" = """), Fragment.encode(CountryregionId.pgType, countryregioncode), Fragment.lit("")).update().runUnchecked(c) > 0 override def deleteByIds(countryregioncodes: Array[CountryregionId])(using c: Connection): Integer = { interpolate(Fragment.lit("""delete from "person"."countryregion" - where "countryregioncode" = ANY("""), Fragment.encode(CountryregionId.dbTypeArray, countryregioncodes), Fragment.lit(")")) + where "countryregioncode" = ANY("""), Fragment.encode(CountryregionId.pgTypeArray, countryregioncodes), Fragment.lit(")")) .update() .runUnchecked(c) } override def insert(unsaved: CountryregionRow)(using c: Connection): CountryregionRow = { interpolate(Fragment.lit("""insert into "person"."countryregion"("countryregioncode", "name", "modifieddate") - values ("""), Fragment.encode(CountryregionId.dbType, unsaved.countryregioncode), Fragment.lit(", "), Fragment.encode(Name.dbType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) + values ("""), Fragment.encode(CountryregionId.pgType, unsaved.countryregioncode), Fragment.lit(", "), Fragment.encode(Name.pgType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) RETURNING "countryregioncode", "name", "modifieddate" """)) .updateReturning(CountryregionRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -44,9 +44,9 @@ class CountryregionRepoImpl extends CountryregionRepo { val columns: ArrayList[Fragment] = new ArrayList() val values: ArrayList[Fragment] = new ArrayList() columns.add(Fragment.lit(""""countryregioncode"""")): @scala.annotation.nowarn - values.add(interpolate(Fragment.encode(CountryregionId.dbType, unsaved.countryregioncode), Fragment.lit(""))): @scala.annotation.nowarn + values.add(interpolate(Fragment.encode(CountryregionId.pgType, unsaved.countryregioncode), Fragment.lit(""))): @scala.annotation.nowarn columns.add(Fragment.lit(""""name"""")): @scala.annotation.nowarn - values.add(interpolate(Fragment.encode(Name.dbType, unsaved.name), Fragment.lit("::varchar"))): @scala.annotation.nowarn + values.add(interpolate(Fragment.encode(Name.pgType, unsaved.name), Fragment.lit("::varchar"))): @scala.annotation.nowarn unsaved.modifieddate.visit( { }, value => { columns.add(Fragment.lit(""""modifieddate"""")): @scala.annotation.nowarn; values.add(interpolate(Fragment.encode(PgTypes.timestamp, value), Fragment.lit("::timestamp"))): @scala.annotation.nowarn } @@ -82,13 +82,13 @@ class CountryregionRepoImpl extends CountryregionRepo { override def selectById(countryregioncode: CountryregionId)(using c: Connection): Optional[CountryregionRow] = { interpolate(Fragment.lit("""select "countryregioncode", "name", "modifieddate" from "person"."countryregion" - where "countryregioncode" = """), Fragment.encode(CountryregionId.dbType, countryregioncode), Fragment.lit("")).query(CountryregionRow.`_rowParser`.first()).runUnchecked(c) + where "countryregioncode" = """), Fragment.encode(CountryregionId.pgType, countryregioncode), Fragment.lit("")).query(CountryregionRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(countryregioncodes: Array[CountryregionId])(using c: Connection): java.util.List[CountryregionRow] = { interpolate(Fragment.lit("""select "countryregioncode", "name", "modifieddate" from "person"."countryregion" - where "countryregioncode" = ANY("""), Fragment.encode(CountryregionId.dbTypeArray, countryregioncodes), Fragment.lit(")")).query(CountryregionRow.`_rowParser`.all()).runUnchecked(c) + where "countryregioncode" = ANY("""), Fragment.encode(CountryregionId.pgTypeArray, countryregioncodes), Fragment.lit(")")).query(CountryregionRow.`_rowParser`.all()).runUnchecked(c) } override def selectByIdsTracked(countryregioncodes: Array[CountryregionId])(using c: Connection): java.util.Map[CountryregionId, CountryregionRow] = { @@ -102,14 +102,14 @@ class CountryregionRepoImpl extends CountryregionRepo { override def update(row: CountryregionRow)(using c: Connection): java.lang.Boolean = { val countryregioncode: CountryregionId = row.countryregioncode return interpolate(Fragment.lit("""update "person"."countryregion" - set "name" = """), Fragment.encode(Name.dbType, row.name), Fragment.lit("""::varchar, + set "name" = """), Fragment.encode(Name.pgType, row.name), Fragment.lit("""::varchar, "modifieddate" = """), Fragment.encode(PgTypes.timestamp, row.modifieddate), Fragment.lit("""::timestamp - where "countryregioncode" = """), Fragment.encode(CountryregionId.dbType, countryregioncode), Fragment.lit("")).update().runUnchecked(c) > 0 + where "countryregioncode" = """), Fragment.encode(CountryregionId.pgType, countryregioncode), Fragment.lit("")).update().runUnchecked(c) > 0 } override def upsert(unsaved: CountryregionRow)(using c: Connection): CountryregionRow = { interpolate(Fragment.lit("""insert into "person"."countryregion"("countryregioncode", "name", "modifieddate") - values ("""), Fragment.encode(CountryregionId.dbType, unsaved.countryregioncode), Fragment.lit(", "), Fragment.encode(Name.dbType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) + values ("""), Fragment.encode(CountryregionId.pgType, unsaved.countryregioncode), Fragment.lit(", "), Fragment.encode(Name.pgType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) on conflict ("countryregioncode") do update set "name" = EXCLUDED."name", diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRow.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRow.scala index 750698f471..b0ed47beb0 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRow.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRow.scala @@ -38,7 +38,7 @@ case class CountryregionRow( } object CountryregionRow { - val `_rowParser`: RowParser[CountryregionRow] = RowParsers.of(CountryregionId.dbType, Name.dbType, PgTypes.timestamp, CountryregionRow.apply, row => Array[Any](row.countryregioncode, row.name, row.modifieddate)) + val `_rowParser`: RowParser[CountryregionRow] = RowParsers.of(CountryregionId.pgType, Name.pgType, PgTypes.timestamp, CountryregionRow.apply, row => Array[Any](row.countryregioncode, row.name, row.modifieddate)) given pgText: PgText[CountryregionRow] = PgText.from(`_rowParser`) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRowUnsaved.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRowUnsaved.scala index 43295f688c..760faac8a3 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRowUnsaved.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRowUnsaved.scala @@ -25,5 +25,5 @@ case class CountryregionRowUnsaved( } object CountryregionRowUnsaved { - given pgText: PgText[CountryregionRowUnsaved] = PgText.instance((row, sb) => { CountryregionId.dbType.text.unsafeEncode(row.countryregioncode, sb); sb.append(PgText.DELIMETER); Name.dbType.text.unsafeEncode(row.name, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) + given pgText: PgText[CountryregionRowUnsaved] = PgText.instance((row, sb) => { CountryregionId.pgType.text.unsafeEncode(row.countryregioncode, sb); sb.append(PgText.DELIMETER); Name.pgType.text.unsafeEncode(row.name, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressFields.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressFields.scala index a79130f7ea..6d6defb45b 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressFields.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressFields.scala @@ -34,7 +34,7 @@ class EmailaddressFields(val `_path`: java.util.List[Path]) extends TupleExpr5[B Optional.empty(), Optional.of("int4"), (row, value) => row.copy(businessentityid = value), - BusinessentityId.dbType + BusinessentityId.pgType ) } diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressId.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressId.scala index 509ff8ecd9..b30c74fed8 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressId.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressId.scala @@ -22,5 +22,5 @@ case class EmailaddressId( } object EmailaddressId { - val `_rowParser`: RowParser[EmailaddressId] = RowParsers.of(BusinessentityId.dbType, PgTypes.int4, EmailaddressId.apply, row => Array[Any](row.businessentityid, row.emailaddressid)) + val `_rowParser`: RowParser[EmailaddressId] = RowParsers.of(BusinessentityId.pgType, PgTypes.int4, EmailaddressId.apply, row => Array[Any](row.businessentityid, row.emailaddressid)) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRepoImpl.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRepoImpl.scala index 6b06e04675..fdbc4237b2 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRepoImpl.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRepoImpl.scala @@ -22,7 +22,7 @@ import dev.typr.foundations.Fragment.interpolate class EmailaddressRepoImpl extends EmailaddressRepo { override def delete: DeleteBuilder[EmailaddressFields, EmailaddressRow] = DeleteBuilder.of(""""person"."emailaddress"""", EmailaddressFields.structure, Dialect.POSTGRESQL) - override def deleteById(compositeId: EmailaddressId)(using c: Connection): java.lang.Boolean = interpolate(Fragment.lit("""delete from "person"."emailaddress" where "businessentityid" = """), Fragment.encode(BusinessentityId.dbType, compositeId.businessentityid), Fragment.lit(""" AND "emailaddressid" = """), Fragment.encode(PgTypes.int4, compositeId.emailaddressid), Fragment.lit("")).update().runUnchecked(c) > 0 + override def deleteById(compositeId: EmailaddressId)(using c: Connection): java.lang.Boolean = interpolate(Fragment.lit("""delete from "person"."emailaddress" where "businessentityid" = """), Fragment.encode(BusinessentityId.pgType, compositeId.businessentityid), Fragment.lit(""" AND "emailaddressid" = """), Fragment.encode(PgTypes.int4, compositeId.emailaddressid), Fragment.lit("")).update().runUnchecked(c) > 0 override def deleteByIds(compositeIds: Array[EmailaddressId])(using c: Connection): Integer = { val businessentityid: Array[BusinessentityId] = compositeIds.map(_.businessentityid) @@ -30,13 +30,13 @@ class EmailaddressRepoImpl extends EmailaddressRepo { return interpolate(Fragment.lit("""delete from "person"."emailaddress" where ("businessentityid", "emailaddressid") - in (select * from unnest("""), Fragment.encode(BusinessentityId.dbTypeArray, businessentityid), Fragment.lit(", "), Fragment.encode(PgTypes.int4Array, emailaddressid), Fragment.lit(""")) + in (select * from unnest("""), Fragment.encode(BusinessentityId.pgTypeArray, businessentityid), Fragment.lit(", "), Fragment.encode(PgTypes.int4Array, emailaddressid), Fragment.lit(""")) """)).update().runUnchecked(c) } override def insert(unsaved: EmailaddressRow)(using c: Connection): EmailaddressRow = { interpolate(Fragment.lit("""insert into "person"."emailaddress"("businessentityid", "emailaddressid", "emailaddress", "rowguid", "modifieddate") - values ("""), Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.int4, unsaved.emailaddressid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.text.opt(), unsaved.emailaddress), Fragment.lit(", "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) + values ("""), Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.int4, unsaved.emailaddressid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.text.opt(), unsaved.emailaddress), Fragment.lit(", "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) RETURNING "businessentityid", "emailaddressid", "emailaddress", "rowguid", "modifieddate" """)) .updateReturning(EmailaddressRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -46,7 +46,7 @@ class EmailaddressRepoImpl extends EmailaddressRepo { val columns: ArrayList[Fragment] = new ArrayList() val values: ArrayList[Fragment] = new ArrayList() columns.add(Fragment.lit(""""businessentityid"""")): @scala.annotation.nowarn - values.add(interpolate(Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid), Fragment.lit("::int4"))): @scala.annotation.nowarn + values.add(interpolate(Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid), Fragment.lit("::int4"))): @scala.annotation.nowarn columns.add(Fragment.lit(""""emailaddress"""")): @scala.annotation.nowarn values.add(interpolate(Fragment.encode(PgTypes.text.opt(), unsaved.emailaddress), Fragment.lit(""))): @scala.annotation.nowarn unsaved.emailaddressid.visit( @@ -92,7 +92,7 @@ class EmailaddressRepoImpl extends EmailaddressRepo { override def selectById(compositeId: EmailaddressId)(using c: Connection): Optional[EmailaddressRow] = { interpolate(Fragment.lit("""select "businessentityid", "emailaddressid", "emailaddress", "rowguid", "modifieddate" from "person"."emailaddress" - where "businessentityid" = """), Fragment.encode(BusinessentityId.dbType, compositeId.businessentityid), Fragment.lit(""" AND "emailaddressid" = """), Fragment.encode(PgTypes.int4, compositeId.emailaddressid), Fragment.lit("")).query(EmailaddressRow.`_rowParser`.first()).runUnchecked(c) + where "businessentityid" = """), Fragment.encode(BusinessentityId.pgType, compositeId.businessentityid), Fragment.lit(""" AND "emailaddressid" = """), Fragment.encode(PgTypes.int4, compositeId.emailaddressid), Fragment.lit("")).query(EmailaddressRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(compositeIds: Array[EmailaddressId])(using c: Connection): java.util.List[EmailaddressRow] = { @@ -101,7 +101,7 @@ class EmailaddressRepoImpl extends EmailaddressRepo { return interpolate(Fragment.lit("""select "businessentityid", "emailaddressid", "emailaddress", "rowguid", "modifieddate" from "person"."emailaddress" where ("businessentityid", "emailaddressid") - in (select * from unnest("""), Fragment.encode(BusinessentityId.dbTypeArray, businessentityid), Fragment.lit(", "), Fragment.encode(PgTypes.int4Array, emailaddressid), Fragment.lit(""")) + in (select * from unnest("""), Fragment.encode(BusinessentityId.pgTypeArray, businessentityid), Fragment.lit(", "), Fragment.encode(PgTypes.int4Array, emailaddressid), Fragment.lit(""")) """)).query(EmailaddressRow.`_rowParser`.all()).runUnchecked(c) } @@ -119,12 +119,12 @@ class EmailaddressRepoImpl extends EmailaddressRepo { set "emailaddress" = """), Fragment.encode(PgTypes.text.opt(), row.emailaddress), Fragment.lit(""", "rowguid" = """), Fragment.encode(PgTypes.uuid, row.rowguid), Fragment.lit("""::uuid, "modifieddate" = """), Fragment.encode(PgTypes.timestamp, row.modifieddate), Fragment.lit("""::timestamp - where "businessentityid" = """), Fragment.encode(BusinessentityId.dbType, compositeId.businessentityid), Fragment.lit(""" AND "emailaddressid" = """), Fragment.encode(PgTypes.int4, compositeId.emailaddressid), Fragment.lit("")).update().runUnchecked(c) > 0 + where "businessentityid" = """), Fragment.encode(BusinessentityId.pgType, compositeId.businessentityid), Fragment.lit(""" AND "emailaddressid" = """), Fragment.encode(PgTypes.int4, compositeId.emailaddressid), Fragment.lit("")).update().runUnchecked(c) > 0 } override def upsert(unsaved: EmailaddressRow)(using c: Connection): EmailaddressRow = { interpolate(Fragment.lit("""insert into "person"."emailaddress"("businessentityid", "emailaddressid", "emailaddress", "rowguid", "modifieddate") - values ("""), Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.int4, unsaved.emailaddressid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.text.opt(), unsaved.emailaddress), Fragment.lit(", "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) + values ("""), Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.int4, unsaved.emailaddressid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.text.opt(), unsaved.emailaddress), Fragment.lit(", "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) on conflict ("businessentityid", "emailaddressid") do update set "emailaddress" = EXCLUDED."emailaddress", diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRow.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRow.scala index a279d53d00..8bdf2a165a 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRow.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRow.scala @@ -66,7 +66,7 @@ case class EmailaddressRow( } object EmailaddressRow { - val `_rowParser`: RowParser[EmailaddressRow] = RowParsers.of(BusinessentityId.dbType, PgTypes.int4, PgTypes.text.opt(), PgTypes.uuid, PgTypes.timestamp, EmailaddressRow.apply, row => Array[Any](row.businessentityid, row.emailaddressid, row.emailaddress, row.rowguid, row.modifieddate)) + val `_rowParser`: RowParser[EmailaddressRow] = RowParsers.of(BusinessentityId.pgType, PgTypes.int4, PgTypes.text.opt(), PgTypes.uuid, PgTypes.timestamp, EmailaddressRow.apply, row => Array[Any](row.businessentityid, row.emailaddressid, row.emailaddress, row.rowguid, row.modifieddate)) def apply( compositeId: EmailaddressId, diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRowUnsaved.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRowUnsaved.scala index d07f45d70d..8d73843eb7 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRowUnsaved.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRowUnsaved.scala @@ -47,5 +47,5 @@ case class EmailaddressRowUnsaved( } object EmailaddressRowUnsaved { - given pgText: PgText[EmailaddressRowUnsaved] = PgText.instance((row, sb) => { BusinessentityId.dbType.text.unsafeEncode(row.businessentityid, sb); sb.append(PgText.DELIMETER); PgTypes.text.opt().text.unsafeEncode(row.emailaddress, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.int4.text).unsafeEncode(row.emailaddressid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.uuid.text).unsafeEncode(row.rowguid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) + given pgText: PgText[EmailaddressRowUnsaved] = PgText.instance((row, sb) => { BusinessentityId.pgType.text.unsafeEncode(row.businessentityid, sb); sb.append(PgText.DELIMETER); PgTypes.text.opt().text.unsafeEncode(row.emailaddress, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.int4.text).unsafeEncode(row.emailaddressid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.uuid.text).unsafeEncode(row.rowguid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/password/PasswordFields.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/password/PasswordFields.scala index 679145ac85..96e2cdd199 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/password/PasswordFields.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/password/PasswordFields.scala @@ -32,7 +32,7 @@ class PasswordFields(val `_path`: java.util.List[Path]) extends TupleExpr5[Busin Optional.empty(), Optional.of("int4"), (row, value) => row.copy(businessentityid = value), - BusinessentityId.dbType + BusinessentityId.pgType ) } diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/password/PasswordRepoImpl.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/password/PasswordRepoImpl.scala index ad172907ad..cc6ecabac6 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/password/PasswordRepoImpl.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/password/PasswordRepoImpl.scala @@ -22,19 +22,19 @@ import dev.typr.foundations.Fragment.interpolate class PasswordRepoImpl extends PasswordRepo { override def delete: DeleteBuilder[PasswordFields, PasswordRow] = DeleteBuilder.of(""""person"."password"""", PasswordFields.structure, Dialect.POSTGRESQL) - override def deleteById(businessentityid: BusinessentityId)(using c: Connection): java.lang.Boolean = interpolate(Fragment.lit("""delete from "person"."password" where "businessentityid" = """), Fragment.encode(BusinessentityId.dbType, businessentityid), Fragment.lit("")).update().runUnchecked(c) > 0 + override def deleteById(businessentityid: BusinessentityId)(using c: Connection): java.lang.Boolean = interpolate(Fragment.lit("""delete from "person"."password" where "businessentityid" = """), Fragment.encode(BusinessentityId.pgType, businessentityid), Fragment.lit("")).update().runUnchecked(c) > 0 override def deleteByIds(businessentityids: Array[BusinessentityId])(using c: Connection): Integer = { interpolate(Fragment.lit("""delete from "person"."password" - where "businessentityid" = ANY("""), Fragment.encode(BusinessentityId.dbTypeArray, businessentityids), Fragment.lit(")")) + where "businessentityid" = ANY("""), Fragment.encode(BusinessentityId.pgTypeArray, businessentityids), Fragment.lit(")")) .update() .runUnchecked(c) } override def insert(unsaved: PasswordRow)(using c: Connection): PasswordRow = { interpolate(Fragment.lit("""insert into "person"."password"("businessentityid", "passwordhash", "passwordsalt", "rowguid", "modifieddate") - values ("""), Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.text, unsaved.passwordhash), Fragment.lit(", "), Fragment.encode(PgTypes.text, unsaved.passwordsalt), Fragment.lit(", "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) + values ("""), Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.text, unsaved.passwordhash), Fragment.lit(", "), Fragment.encode(PgTypes.text, unsaved.passwordsalt), Fragment.lit(", "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) RETURNING "businessentityid", "passwordhash", "passwordsalt", "rowguid", "modifieddate" """)) .updateReturning(PasswordRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -44,7 +44,7 @@ class PasswordRepoImpl extends PasswordRepo { val columns: ArrayList[Fragment] = new ArrayList() val values: ArrayList[Fragment] = new ArrayList() columns.add(Fragment.lit(""""businessentityid"""")): @scala.annotation.nowarn - values.add(interpolate(Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid), Fragment.lit("::int4"))): @scala.annotation.nowarn + values.add(interpolate(Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid), Fragment.lit("::int4"))): @scala.annotation.nowarn columns.add(Fragment.lit(""""passwordhash"""")): @scala.annotation.nowarn values.add(interpolate(Fragment.encode(PgTypes.text, unsaved.passwordhash), Fragment.lit(""))): @scala.annotation.nowarn columns.add(Fragment.lit(""""passwordsalt"""")): @scala.annotation.nowarn @@ -88,13 +88,13 @@ class PasswordRepoImpl extends PasswordRepo { override def selectById(businessentityid: BusinessentityId)(using c: Connection): Optional[PasswordRow] = { interpolate(Fragment.lit("""select "businessentityid", "passwordhash", "passwordsalt", "rowguid", "modifieddate" from "person"."password" - where "businessentityid" = """), Fragment.encode(BusinessentityId.dbType, businessentityid), Fragment.lit("")).query(PasswordRow.`_rowParser`.first()).runUnchecked(c) + where "businessentityid" = """), Fragment.encode(BusinessentityId.pgType, businessentityid), Fragment.lit("")).query(PasswordRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(businessentityids: Array[BusinessentityId])(using c: Connection): java.util.List[PasswordRow] = { interpolate(Fragment.lit("""select "businessentityid", "passwordhash", "passwordsalt", "rowguid", "modifieddate" from "person"."password" - where "businessentityid" = ANY("""), Fragment.encode(BusinessentityId.dbTypeArray, businessentityids), Fragment.lit(")")).query(PasswordRow.`_rowParser`.all()).runUnchecked(c) + where "businessentityid" = ANY("""), Fragment.encode(BusinessentityId.pgTypeArray, businessentityids), Fragment.lit(")")).query(PasswordRow.`_rowParser`.all()).runUnchecked(c) } override def selectByIdsTracked(businessentityids: Array[BusinessentityId])(using c: Connection): java.util.Map[BusinessentityId, PasswordRow] = { @@ -112,12 +112,12 @@ class PasswordRepoImpl extends PasswordRepo { "passwordsalt" = """), Fragment.encode(PgTypes.text, row.passwordsalt), Fragment.lit(""", "rowguid" = """), Fragment.encode(PgTypes.uuid, row.rowguid), Fragment.lit("""::uuid, "modifieddate" = """), Fragment.encode(PgTypes.timestamp, row.modifieddate), Fragment.lit("""::timestamp - where "businessentityid" = """), Fragment.encode(BusinessentityId.dbType, businessentityid), Fragment.lit("")).update().runUnchecked(c) > 0 + where "businessentityid" = """), Fragment.encode(BusinessentityId.pgType, businessentityid), Fragment.lit("")).update().runUnchecked(c) > 0 } override def upsert(unsaved: PasswordRow)(using c: Connection): PasswordRow = { interpolate(Fragment.lit("""insert into "person"."password"("businessentityid", "passwordhash", "passwordsalt", "rowguid", "modifieddate") - values ("""), Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.text, unsaved.passwordhash), Fragment.lit(", "), Fragment.encode(PgTypes.text, unsaved.passwordsalt), Fragment.lit(", "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) + values ("""), Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.text, unsaved.passwordhash), Fragment.lit(", "), Fragment.encode(PgTypes.text, unsaved.passwordsalt), Fragment.lit(", "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) on conflict ("businessentityid") do update set "passwordhash" = EXCLUDED."passwordhash", diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/password/PasswordRow.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/password/PasswordRow.scala index e4e5843ced..5da95f21b2 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/password/PasswordRow.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/password/PasswordRow.scala @@ -58,7 +58,7 @@ case class PasswordRow( } object PasswordRow { - val `_rowParser`: RowParser[PasswordRow] = RowParsers.of(BusinessentityId.dbType, PgTypes.text, PgTypes.text, PgTypes.uuid, PgTypes.timestamp, PasswordRow.apply, row => Array[Any](row.businessentityid, row.passwordhash, row.passwordsalt, row.rowguid, row.modifieddate)) + val `_rowParser`: RowParser[PasswordRow] = RowParsers.of(BusinessentityId.pgType, PgTypes.text, PgTypes.text, PgTypes.uuid, PgTypes.timestamp, PasswordRow.apply, row => Array[Any](row.businessentityid, row.passwordhash, row.passwordsalt, row.rowguid, row.modifieddate)) given pgText: PgText[PasswordRow] = PgText.from(`_rowParser`) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/password/PasswordRowUnsaved.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/password/PasswordRowUnsaved.scala index 5b10916697..a41376b948 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/password/PasswordRowUnsaved.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/password/PasswordRowUnsaved.scala @@ -41,5 +41,5 @@ case class PasswordRowUnsaved( } object PasswordRowUnsaved { - given pgText: PgText[PasswordRowUnsaved] = PgText.instance((row, sb) => { BusinessentityId.dbType.text.unsafeEncode(row.businessentityid, sb); sb.append(PgText.DELIMETER); PgTypes.text.text.unsafeEncode(row.passwordhash, sb); sb.append(PgText.DELIMETER); PgTypes.text.text.unsafeEncode(row.passwordsalt, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.uuid.text).unsafeEncode(row.rowguid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) + given pgText: PgText[PasswordRowUnsaved] = PgText.instance((row, sb) => { BusinessentityId.pgType.text.unsafeEncode(row.businessentityid, sb); sb.append(PgText.DELIMETER); PgTypes.text.text.unsafeEncode(row.passwordhash, sb); sb.append(PgText.DELIMETER); PgTypes.text.text.unsafeEncode(row.passwordsalt, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.uuid.text).unsafeEncode(row.rowguid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/person/PersonFields.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/person/PersonFields.scala index dff5ac877b..047bb0434e 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/person/PersonFields.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/person/PersonFields.scala @@ -8,9 +8,10 @@ package adventureworks.person.person import adventureworks.person.businessentity.BusinessentityFields import adventureworks.person.businessentity.BusinessentityId import adventureworks.person.businessentity.BusinessentityRow -import adventureworks.public.Name import adventureworks.public.NameStyle import adventureworks.userdefined.FirstName +import adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import dev.typr.foundations.PgTypes import dev.typr.foundations.RowParser import dev.typr.foundations.data.Xml @@ -28,7 +29,7 @@ import java.time.LocalDateTime import java.util.Optional import java.util.UUID -class PersonFields(val `_path`: java.util.List[Path]) extends TupleExpr13[BusinessentityId, String, NameStyle, /* max 8 chars */ String, /* user-picked */ FirstName, Name, Name, /* max 10 chars */ String, Integer, Xml, Xml, UUID, LocalDateTime] with RelationStructure[PersonFields, PersonRow] with FieldsBase[PersonRow] { +class PersonFields(val `_path`: java.util.List[Path]) extends TupleExpr13[BusinessentityId, String, NameStyle, /* max 8 chars */ String, /* user-picked */ FirstName, /* user-picked */ MiddleName, /* user-picked */ LastName, /* max 10 chars */ String, Integer, Xml, Xml, UUID, LocalDateTime] with RelationStructure[PersonFields, PersonRow] with FieldsBase[PersonRow] { def businessentityid: IdField[BusinessentityId, PersonRow] = { new IdField[BusinessentityId, PersonRow]( _path, @@ -37,7 +38,7 @@ class PersonFields(val `_path`: java.util.List[Path]) extends TupleExpr13[Busine Optional.empty(), Optional.of("int4"), (row, value) => row.copy(businessentityid = value), - BusinessentityId.dbType + BusinessentityId.pgType ) } @@ -61,7 +62,7 @@ class PersonFields(val `_path`: java.util.List[Path]) extends TupleExpr13[Busine Optional.empty(), Optional.of("bool"), (row, value) => row.copy(namestyle = value), - NameStyle.dbType + NameStyle.pgType ) } @@ -85,31 +86,31 @@ class PersonFields(val `_path`: java.util.List[Path]) extends TupleExpr13[Busine Optional.empty(), Optional.of("varchar"), (row, value) => row.copy(firstname = value), - FirstName.dbType + FirstName.pgType ) } - def middlename: OptField[Name, PersonRow] = { - new OptField[Name, PersonRow]( + def middlename: OptField[/* user-picked */ MiddleName, PersonRow] = { + new OptField[/* user-picked */ MiddleName, PersonRow]( _path, "middlename", _.middlename, Optional.empty(), Optional.of("varchar"), (row, value) => row.copy(middlename = value), - Name.dbType + MiddleName.pgType ) } - def lastname: Field[Name, PersonRow] = { - new Field[Name, PersonRow]( + def lastname: Field[/* user-picked */ LastName, PersonRow] = { + new Field[/* user-picked */ LastName, PersonRow]( _path, "lastname", _.lastname, Optional.empty(), Optional.of("varchar"), (row, value) => row.copy(lastname = value), - Name.dbType + LastName.pgType ) } @@ -203,9 +204,9 @@ class PersonFields(val `_path`: java.util.List[Path]) extends TupleExpr13[Busine override def `_5`: SqlExpr[/* user-picked */ FirstName] = firstname - override def `_6`: SqlExpr[Name] = middlename + override def `_6`: SqlExpr[/* user-picked */ MiddleName] = middlename - override def `_7`: SqlExpr[Name] = lastname + override def `_7`: SqlExpr[/* user-picked */ LastName] = lastname override def `_8`: SqlExpr[/* max 10 chars */ String] = suffix diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/person/PersonRepoImpl.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/person/PersonRepoImpl.scala index b2f8f6b11a..6cb4535e00 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/person/PersonRepoImpl.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/person/PersonRepoImpl.scala @@ -6,9 +6,10 @@ package adventureworks.person.person import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Name import adventureworks.public.NameStyle import adventureworks.userdefined.FirstName +import adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import dev.typr.foundations.Fragment import dev.typr.foundations.PgTypes import dev.typr.foundations.dsl.DeleteBuilder @@ -25,19 +26,19 @@ import dev.typr.foundations.Fragment.interpolate class PersonRepoImpl extends PersonRepo { override def delete: DeleteBuilder[PersonFields, PersonRow] = DeleteBuilder.of(""""person"."person"""", PersonFields.structure, Dialect.POSTGRESQL) - override def deleteById(businessentityid: BusinessentityId)(using c: Connection): java.lang.Boolean = interpolate(Fragment.lit("""delete from "person"."person" where "businessentityid" = """), Fragment.encode(BusinessentityId.dbType, businessentityid), Fragment.lit("")).update().runUnchecked(c) > 0 + override def deleteById(businessentityid: BusinessentityId)(using c: Connection): java.lang.Boolean = interpolate(Fragment.lit("""delete from "person"."person" where "businessentityid" = """), Fragment.encode(BusinessentityId.pgType, businessentityid), Fragment.lit("")).update().runUnchecked(c) > 0 override def deleteByIds(businessentityids: Array[BusinessentityId])(using c: Connection): Integer = { interpolate(Fragment.lit("""delete from "person"."person" - where "businessentityid" = ANY("""), Fragment.encode(BusinessentityId.dbTypeArray, businessentityids), Fragment.lit(")")) + where "businessentityid" = ANY("""), Fragment.encode(BusinessentityId.pgTypeArray, businessentityids), Fragment.lit(")")) .update() .runUnchecked(c) } override def insert(unsaved: PersonRow)(using c: Connection): PersonRow = { interpolate(Fragment.lit("""insert into "person"."person"("businessentityid", "persontype", "namestyle", "title", "firstname", "middlename", "lastname", "suffix", "emailpromotion", "additionalcontactinfo", "demographics", "rowguid", "modifieddate") - values ("""), Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.bpchar, unsaved.persontype), Fragment.lit("::bpchar, "), Fragment.encode(NameStyle.dbType, unsaved.namestyle), Fragment.lit("::bool, "), Fragment.encode(PgTypes.text.opt(), unsaved.title), Fragment.lit(", "), Fragment.encode(FirstName.dbType, unsaved.firstname), Fragment.lit("::varchar, "), Fragment.encode(Name.dbType.opt(), unsaved.middlename), Fragment.lit("::varchar, "), Fragment.encode(Name.dbType, unsaved.lastname), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.text.opt(), unsaved.suffix), Fragment.lit(", "), Fragment.encode(PgTypes.int4, unsaved.emailpromotion), Fragment.lit("::int4, "), Fragment.encode(PgTypes.xml.opt(), unsaved.additionalcontactinfo), Fragment.lit("::xml, "), Fragment.encode(PgTypes.xml.opt(), unsaved.demographics), Fragment.lit("::xml, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) + values ("""), Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.bpchar, unsaved.persontype), Fragment.lit("::bpchar, "), Fragment.encode(NameStyle.pgType, unsaved.namestyle), Fragment.lit("::bool, "), Fragment.encode(PgTypes.text.opt(), unsaved.title), Fragment.lit(", "), Fragment.encode(FirstName.pgType, unsaved.firstname), Fragment.lit("::varchar, "), Fragment.encode(MiddleName.pgType.opt(), unsaved.middlename), Fragment.lit("::varchar, "), Fragment.encode(LastName.pgType, unsaved.lastname), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.text.opt(), unsaved.suffix), Fragment.lit(", "), Fragment.encode(PgTypes.int4, unsaved.emailpromotion), Fragment.lit("::int4, "), Fragment.encode(PgTypes.xml.opt(), unsaved.additionalcontactinfo), Fragment.lit("::xml, "), Fragment.encode(PgTypes.xml.opt(), unsaved.demographics), Fragment.lit("::xml, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) RETURNING "businessentityid", "persontype", "namestyle", "title", "firstname", "middlename", "lastname", "suffix", "emailpromotion", "additionalcontactinfo", "demographics", "rowguid", "modifieddate" """)) .updateReturning(PersonRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -47,17 +48,17 @@ class PersonRepoImpl extends PersonRepo { val columns: ArrayList[Fragment] = new ArrayList() val values: ArrayList[Fragment] = new ArrayList() columns.add(Fragment.lit(""""businessentityid"""")): @scala.annotation.nowarn - values.add(interpolate(Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid), Fragment.lit("::int4"))): @scala.annotation.nowarn + values.add(interpolate(Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid), Fragment.lit("::int4"))): @scala.annotation.nowarn columns.add(Fragment.lit(""""persontype"""")): @scala.annotation.nowarn values.add(interpolate(Fragment.encode(PgTypes.bpchar, unsaved.persontype), Fragment.lit("::bpchar"))): @scala.annotation.nowarn columns.add(Fragment.lit(""""title"""")): @scala.annotation.nowarn values.add(interpolate(Fragment.encode(PgTypes.text.opt(), unsaved.title), Fragment.lit(""))): @scala.annotation.nowarn columns.add(Fragment.lit(""""firstname"""")): @scala.annotation.nowarn - values.add(interpolate(Fragment.encode(FirstName.dbType, unsaved.firstname), Fragment.lit("::varchar"))): @scala.annotation.nowarn + values.add(interpolate(Fragment.encode(FirstName.pgType, unsaved.firstname), Fragment.lit("::varchar"))): @scala.annotation.nowarn columns.add(Fragment.lit(""""middlename"""")): @scala.annotation.nowarn - values.add(interpolate(Fragment.encode(Name.dbType.opt(), unsaved.middlename), Fragment.lit("::varchar"))): @scala.annotation.nowarn + values.add(interpolate(Fragment.encode(MiddleName.pgType.opt(), unsaved.middlename), Fragment.lit("::varchar"))): @scala.annotation.nowarn columns.add(Fragment.lit(""""lastname"""")): @scala.annotation.nowarn - values.add(interpolate(Fragment.encode(Name.dbType, unsaved.lastname), Fragment.lit("::varchar"))): @scala.annotation.nowarn + values.add(interpolate(Fragment.encode(LastName.pgType, unsaved.lastname), Fragment.lit("::varchar"))): @scala.annotation.nowarn columns.add(Fragment.lit(""""suffix"""")): @scala.annotation.nowarn values.add(interpolate(Fragment.encode(PgTypes.text.opt(), unsaved.suffix), Fragment.lit(""))): @scala.annotation.nowarn columns.add(Fragment.lit(""""additionalcontactinfo"""")): @scala.annotation.nowarn @@ -66,7 +67,7 @@ class PersonRepoImpl extends PersonRepo { values.add(interpolate(Fragment.encode(PgTypes.xml.opt(), unsaved.demographics), Fragment.lit("::xml"))): @scala.annotation.nowarn unsaved.namestyle.visit( { }, - value => { columns.add(Fragment.lit(""""namestyle"""")): @scala.annotation.nowarn; values.add(interpolate(Fragment.encode(NameStyle.dbType, value), Fragment.lit("::bool"))): @scala.annotation.nowarn } + value => { columns.add(Fragment.lit(""""namestyle"""")): @scala.annotation.nowarn; values.add(interpolate(Fragment.encode(NameStyle.pgType, value), Fragment.lit("::bool"))): @scala.annotation.nowarn } ); unsaved.emailpromotion.visit( { }, @@ -111,13 +112,13 @@ class PersonRepoImpl extends PersonRepo { override def selectById(businessentityid: BusinessentityId)(using c: Connection): Optional[PersonRow] = { interpolate(Fragment.lit("""select "businessentityid", "persontype", "namestyle", "title", "firstname", "middlename", "lastname", "suffix", "emailpromotion", "additionalcontactinfo", "demographics", "rowguid", "modifieddate" from "person"."person" - where "businessentityid" = """), Fragment.encode(BusinessentityId.dbType, businessentityid), Fragment.lit("")).query(PersonRow.`_rowParser`.first()).runUnchecked(c) + where "businessentityid" = """), Fragment.encode(BusinessentityId.pgType, businessentityid), Fragment.lit("")).query(PersonRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(businessentityids: Array[BusinessentityId])(using c: Connection): java.util.List[PersonRow] = { interpolate(Fragment.lit("""select "businessentityid", "persontype", "namestyle", "title", "firstname", "middlename", "lastname", "suffix", "emailpromotion", "additionalcontactinfo", "demographics", "rowguid", "modifieddate" from "person"."person" - where "businessentityid" = ANY("""), Fragment.encode(BusinessentityId.dbTypeArray, businessentityids), Fragment.lit(")")).query(PersonRow.`_rowParser`.all()).runUnchecked(c) + where "businessentityid" = ANY("""), Fragment.encode(BusinessentityId.pgTypeArray, businessentityids), Fragment.lit(")")).query(PersonRow.`_rowParser`.all()).runUnchecked(c) } override def selectByIdsTracked(businessentityids: Array[BusinessentityId])(using c: Connection): java.util.Map[BusinessentityId, PersonRow] = { @@ -132,23 +133,23 @@ class PersonRepoImpl extends PersonRepo { val businessentityid: BusinessentityId = row.businessentityid return interpolate(Fragment.lit("""update "person"."person" set "persontype" = """), Fragment.encode(PgTypes.bpchar, row.persontype), Fragment.lit("""::bpchar, - "namestyle" = """), Fragment.encode(NameStyle.dbType, row.namestyle), Fragment.lit("""::bool, + "namestyle" = """), Fragment.encode(NameStyle.pgType, row.namestyle), Fragment.lit("""::bool, "title" = """), Fragment.encode(PgTypes.text.opt(), row.title), Fragment.lit(""", - "firstname" = """), Fragment.encode(FirstName.dbType, row.firstname), Fragment.lit("""::varchar, - "middlename" = """), Fragment.encode(Name.dbType.opt(), row.middlename), Fragment.lit("""::varchar, - "lastname" = """), Fragment.encode(Name.dbType, row.lastname), Fragment.lit("""::varchar, + "firstname" = """), Fragment.encode(FirstName.pgType, row.firstname), Fragment.lit("""::varchar, + "middlename" = """), Fragment.encode(MiddleName.pgType.opt(), row.middlename), Fragment.lit("""::varchar, + "lastname" = """), Fragment.encode(LastName.pgType, row.lastname), Fragment.lit("""::varchar, "suffix" = """), Fragment.encode(PgTypes.text.opt(), row.suffix), Fragment.lit(""", "emailpromotion" = """), Fragment.encode(PgTypes.int4, row.emailpromotion), Fragment.lit("""::int4, "additionalcontactinfo" = """), Fragment.encode(PgTypes.xml.opt(), row.additionalcontactinfo), Fragment.lit("""::xml, "demographics" = """), Fragment.encode(PgTypes.xml.opt(), row.demographics), Fragment.lit("""::xml, "rowguid" = """), Fragment.encode(PgTypes.uuid, row.rowguid), Fragment.lit("""::uuid, "modifieddate" = """), Fragment.encode(PgTypes.timestamp, row.modifieddate), Fragment.lit("""::timestamp - where "businessentityid" = """), Fragment.encode(BusinessentityId.dbType, businessentityid), Fragment.lit("")).update().runUnchecked(c) > 0 + where "businessentityid" = """), Fragment.encode(BusinessentityId.pgType, businessentityid), Fragment.lit("")).update().runUnchecked(c) > 0 } override def upsert(unsaved: PersonRow)(using c: Connection): PersonRow = { interpolate(Fragment.lit("""insert into "person"."person"("businessentityid", "persontype", "namestyle", "title", "firstname", "middlename", "lastname", "suffix", "emailpromotion", "additionalcontactinfo", "demographics", "rowguid", "modifieddate") - values ("""), Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.bpchar, unsaved.persontype), Fragment.lit("::bpchar, "), Fragment.encode(NameStyle.dbType, unsaved.namestyle), Fragment.lit("::bool, "), Fragment.encode(PgTypes.text.opt(), unsaved.title), Fragment.lit(", "), Fragment.encode(FirstName.dbType, unsaved.firstname), Fragment.lit("::varchar, "), Fragment.encode(Name.dbType.opt(), unsaved.middlename), Fragment.lit("::varchar, "), Fragment.encode(Name.dbType, unsaved.lastname), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.text.opt(), unsaved.suffix), Fragment.lit(", "), Fragment.encode(PgTypes.int4, unsaved.emailpromotion), Fragment.lit("::int4, "), Fragment.encode(PgTypes.xml.opt(), unsaved.additionalcontactinfo), Fragment.lit("::xml, "), Fragment.encode(PgTypes.xml.opt(), unsaved.demographics), Fragment.lit("::xml, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) + values ("""), Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.bpchar, unsaved.persontype), Fragment.lit("::bpchar, "), Fragment.encode(NameStyle.pgType, unsaved.namestyle), Fragment.lit("::bool, "), Fragment.encode(PgTypes.text.opt(), unsaved.title), Fragment.lit(", "), Fragment.encode(FirstName.pgType, unsaved.firstname), Fragment.lit("::varchar, "), Fragment.encode(MiddleName.pgType.opt(), unsaved.middlename), Fragment.lit("::varchar, "), Fragment.encode(LastName.pgType, unsaved.lastname), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.text.opt(), unsaved.suffix), Fragment.lit(", "), Fragment.encode(PgTypes.int4, unsaved.emailpromotion), Fragment.lit("::int4, "), Fragment.encode(PgTypes.xml.opt(), unsaved.additionalcontactinfo), Fragment.lit("::xml, "), Fragment.encode(PgTypes.xml.opt(), unsaved.demographics), Fragment.lit("::xml, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) on conflict ("businessentityid") do update set "persontype" = EXCLUDED."persontype", diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/person/PersonRow.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/person/PersonRow.scala index 28e77b146c..084f0ef85c 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/person/PersonRow.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/person/PersonRow.scala @@ -7,9 +7,10 @@ package adventureworks.person.person import adventureworks.customtypes.Defaulted import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Name import adventureworks.public.NameStyle import adventureworks.userdefined.FirstName +import adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import dev.typr.foundations.PgText import dev.typr.foundations.PgTypes import dev.typr.foundations.RowParser @@ -42,9 +43,9 @@ case class PersonRow( /** First name of the person. */ firstname: /* user-picked */ FirstName, /** Middle name or middle initial of the person. */ - middlename: Optional[Name], + middlename: Optional[/* user-picked */ MiddleName], /** Last name of the person. */ - lastname: Name, + lastname: /* user-picked */ LastName, /** Surname suffix. For example, Sr. or Jr. */ suffix: Optional[/* max 10 chars */ String], /** 0 = Contact does not wish to receive e-mail promotions, 1 = Contact does wish to receive e-mail promotions from AdventureWorks, 2 = Contact does wish to receive e-mail promotions from AdventureWorks and selected partners. @@ -60,7 +61,7 @@ case class PersonRow( rowguid: UUID, /** Default: now() */ modifieddate: LocalDateTime -) extends Tuple13[BusinessentityId, String, NameStyle, Optional[/* max 8 chars */ String], /* user-picked */ FirstName, Optional[Name], Name, Optional[/* max 10 chars */ String], Integer, Optional[Xml], Optional[Xml], UUID, LocalDateTime] { +) extends Tuple13[BusinessentityId, String, NameStyle, Optional[/* max 8 chars */ String], /* user-picked */ FirstName, Optional[/* user-picked */ MiddleName], /* user-picked */ LastName, Optional[/* max 10 chars */ String], Integer, Optional[Xml], Optional[Xml], UUID, LocalDateTime] { def id: BusinessentityId = businessentityid def toUnsavedRow( @@ -96,9 +97,9 @@ case class PersonRow( override def `_5`: /* user-picked */ FirstName = firstname - override def `_6`: Optional[Name] = middlename + override def `_6`: Optional[/* user-picked */ MiddleName] = middlename - override def `_7`: Name = lastname + override def `_7`: /* user-picked */ LastName = lastname override def `_8`: Optional[/* max 10 chars */ String] = suffix @@ -114,7 +115,7 @@ case class PersonRow( } object PersonRow { - val `_rowParser`: RowParser[PersonRow] = RowParsers.of(BusinessentityId.dbType, PgTypes.bpchar, NameStyle.dbType, PgTypes.text.opt(), FirstName.dbType, Name.dbType.opt(), Name.dbType, PgTypes.text.opt(), PgTypes.int4, PgTypes.xml.opt(), PgTypes.xml.opt(), PgTypes.uuid, PgTypes.timestamp, PersonRow.apply, row => Array[Any](row.businessentityid, row.persontype, row.namestyle, row.title, row.firstname, row.middlename, row.lastname, row.suffix, row.emailpromotion, row.additionalcontactinfo, row.demographics, row.rowguid, row.modifieddate)) + val `_rowParser`: RowParser[PersonRow] = RowParsers.of(BusinessentityId.pgType, PgTypes.bpchar, NameStyle.pgType, PgTypes.text.opt(), FirstName.pgType, MiddleName.pgType.opt(), LastName.pgType, PgTypes.text.opt(), PgTypes.int4, PgTypes.xml.opt(), PgTypes.xml.opt(), PgTypes.uuid, PgTypes.timestamp, PersonRow.apply, row => Array[Any](row.businessentityid, row.persontype, row.namestyle, row.title, row.firstname, row.middlename, row.lastname, row.suffix, row.emailpromotion, row.additionalcontactinfo, row.demographics, row.rowguid, row.modifieddate)) given pgText: PgText[PersonRow] = PgText.from(`_rowParser`) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/person/PersonRowUnsaved.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/person/PersonRowUnsaved.scala index b4a779e1ee..ff973a5057 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/person/PersonRowUnsaved.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/person/PersonRowUnsaved.scala @@ -8,9 +8,10 @@ package adventureworks.person.person import adventureworks.customtypes.Defaulted import adventureworks.customtypes.Defaulted.UseDefault import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Name import adventureworks.public.NameStyle import adventureworks.userdefined.FirstName +import adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import dev.typr.foundations.PgText import dev.typr.foundations.PgTypes import dev.typr.foundations.data.Xml @@ -33,9 +34,9 @@ case class PersonRowUnsaved( /** First name of the person. */ firstname: /* user-picked */ FirstName, /** Middle name or middle initial of the person. */ - middlename: Optional[Name] = Optional.empty(), + middlename: Optional[/* user-picked */ MiddleName] = Optional.empty(), /** Last name of the person. */ - lastname: Name, + lastname: /* user-picked */ LastName, /** Surname suffix. For example, Sr. or Jr. */ suffix: Optional[/* max 10 chars */ String] = Optional.empty(), /** Additional contact information about the person stored in xml format. */ @@ -81,5 +82,5 @@ case class PersonRowUnsaved( } object PersonRowUnsaved { - given pgText: PgText[PersonRowUnsaved] = PgText.instance((row, sb) => { BusinessentityId.dbType.text.unsafeEncode(row.businessentityid, sb); sb.append(PgText.DELIMETER); PgTypes.bpchar.text.unsafeEncode(row.persontype, sb); sb.append(PgText.DELIMETER); PgTypes.text.opt().text.unsafeEncode(row.title, sb); sb.append(PgText.DELIMETER); FirstName.dbType.text.unsafeEncode(row.firstname, sb); sb.append(PgText.DELIMETER); Name.dbType.opt().text.unsafeEncode(row.middlename, sb); sb.append(PgText.DELIMETER); Name.dbType.text.unsafeEncode(row.lastname, sb); sb.append(PgText.DELIMETER); PgTypes.text.opt().text.unsafeEncode(row.suffix, sb); sb.append(PgText.DELIMETER); PgTypes.xml.opt().text.unsafeEncode(row.additionalcontactinfo, sb); sb.append(PgText.DELIMETER); PgTypes.xml.opt().text.unsafeEncode(row.demographics, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using NameStyle.dbType.text).unsafeEncode(row.namestyle, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.int4.text).unsafeEncode(row.emailpromotion, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.uuid.text).unsafeEncode(row.rowguid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) + given pgText: PgText[PersonRowUnsaved] = PgText.instance((row, sb) => { BusinessentityId.pgType.text.unsafeEncode(row.businessentityid, sb); sb.append(PgText.DELIMETER); PgTypes.bpchar.text.unsafeEncode(row.persontype, sb); sb.append(PgText.DELIMETER); PgTypes.text.opt().text.unsafeEncode(row.title, sb); sb.append(PgText.DELIMETER); FirstName.pgType.text.unsafeEncode(row.firstname, sb); sb.append(PgText.DELIMETER); MiddleName.pgType.opt().text.unsafeEncode(row.middlename, sb); sb.append(PgText.DELIMETER); LastName.pgType.text.unsafeEncode(row.lastname, sb); sb.append(PgText.DELIMETER); PgTypes.text.opt().text.unsafeEncode(row.suffix, sb); sb.append(PgText.DELIMETER); PgTypes.xml.opt().text.unsafeEncode(row.additionalcontactinfo, sb); sb.append(PgText.DELIMETER); PgTypes.xml.opt().text.unsafeEncode(row.demographics, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using NameStyle.pgType.text).unsafeEncode(row.namestyle, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.int4.text).unsafeEncode(row.emailpromotion, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.uuid.text).unsafeEncode(row.rowguid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceFields.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceFields.scala index b43415beb7..2bed322697 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceFields.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceFields.scala @@ -37,7 +37,7 @@ class StateprovinceFields(val `_path`: java.util.List[Path]) extends TupleExpr8[ Optional.empty(), Optional.of("int4"), (row, value) => row.copy(stateprovinceid = value), - StateprovinceId.dbType + StateprovinceId.pgType ) } @@ -61,7 +61,7 @@ class StateprovinceFields(val `_path`: java.util.List[Path]) extends TupleExpr8[ Optional.empty(), Optional.empty(), (row, value) => row.copy(countryregioncode = value), - CountryregionId.dbType + CountryregionId.pgType ) } @@ -73,7 +73,7 @@ class StateprovinceFields(val `_path`: java.util.List[Path]) extends TupleExpr8[ Optional.empty(), Optional.of("bool"), (row, value) => row.copy(isonlystateprovinceflag = value), - Flag.dbType + Flag.pgType ) } @@ -85,7 +85,7 @@ class StateprovinceFields(val `_path`: java.util.List[Path]) extends TupleExpr8[ Optional.empty(), Optional.of("varchar"), (row, value) => row.copy(name = value), - Name.dbType + Name.pgType ) } @@ -97,7 +97,7 @@ class StateprovinceFields(val `_path`: java.util.List[Path]) extends TupleExpr8[ Optional.empty(), Optional.of("int4"), (row, value) => row.copy(territoryid = value), - SalesterritoryId.dbType + SalesterritoryId.pgType ) } diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceId.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceId.scala index 235be2a121..3bb17909f1 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceId.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceId.scala @@ -16,7 +16,7 @@ case class StateprovinceId(@JsonValue value: Integer) extends scala.AnyVal object StateprovinceId { given bijection: Bijection[StateprovinceId, Integer] = Bijection.apply[StateprovinceId, Integer](_.value)(StateprovinceId.apply) - given dbType: PgType[StateprovinceId] = PgTypes.int4.bimap(StateprovinceId.apply, _.value) + given pgType: PgType[StateprovinceId] = PgTypes.int4.bimap(StateprovinceId.apply, _.value) - given dbTypeArray: PgType[Array[StateprovinceId]] = PgTypes.int4Array.bimap(xs => xs.map(StateprovinceId.apply), xs => xs.map(_.value)) + given pgTypeArray: PgType[Array[StateprovinceId]] = PgTypes.int4Array.bimap(xs => xs.map(StateprovinceId.apply), xs => xs.map(_.value)) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRepoImpl.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRepoImpl.scala index 9d1ec20d81..67305004b1 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRepoImpl.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRepoImpl.scala @@ -25,19 +25,19 @@ import dev.typr.foundations.Fragment.interpolate class StateprovinceRepoImpl extends StateprovinceRepo { override def delete: DeleteBuilder[StateprovinceFields, StateprovinceRow] = DeleteBuilder.of(""""person"."stateprovince"""", StateprovinceFields.structure, Dialect.POSTGRESQL) - override def deleteById(stateprovinceid: StateprovinceId)(using c: Connection): java.lang.Boolean = interpolate(Fragment.lit("""delete from "person"."stateprovince" where "stateprovinceid" = """), Fragment.encode(StateprovinceId.dbType, stateprovinceid), Fragment.lit("")).update().runUnchecked(c) > 0 + override def deleteById(stateprovinceid: StateprovinceId)(using c: Connection): java.lang.Boolean = interpolate(Fragment.lit("""delete from "person"."stateprovince" where "stateprovinceid" = """), Fragment.encode(StateprovinceId.pgType, stateprovinceid), Fragment.lit("")).update().runUnchecked(c) > 0 override def deleteByIds(stateprovinceids: Array[StateprovinceId])(using c: Connection): Integer = { interpolate(Fragment.lit("""delete from "person"."stateprovince" - where "stateprovinceid" = ANY("""), Fragment.encode(StateprovinceId.dbTypeArray, stateprovinceids), Fragment.lit(")")) + where "stateprovinceid" = ANY("""), Fragment.encode(StateprovinceId.pgTypeArray, stateprovinceids), Fragment.lit(")")) .update() .runUnchecked(c) } override def insert(unsaved: StateprovinceRow)(using c: Connection): StateprovinceRow = { interpolate(Fragment.lit("""insert into "person"."stateprovince"("stateprovinceid", "stateprovincecode", "countryregioncode", "isonlystateprovinceflag", "name", "territoryid", "rowguid", "modifieddate") - values ("""), Fragment.encode(StateprovinceId.dbType, unsaved.stateprovinceid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.bpchar, unsaved.stateprovincecode), Fragment.lit("::bpchar, "), Fragment.encode(CountryregionId.dbType, unsaved.countryregioncode), Fragment.lit(", "), Fragment.encode(Flag.dbType, unsaved.isonlystateprovinceflag), Fragment.lit("::bool, "), Fragment.encode(Name.dbType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(SalesterritoryId.dbType, unsaved.territoryid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) + values ("""), Fragment.encode(StateprovinceId.pgType, unsaved.stateprovinceid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.bpchar, unsaved.stateprovincecode), Fragment.lit("::bpchar, "), Fragment.encode(CountryregionId.pgType, unsaved.countryregioncode), Fragment.lit(", "), Fragment.encode(Flag.pgType, unsaved.isonlystateprovinceflag), Fragment.lit("::bool, "), Fragment.encode(Name.pgType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(SalesterritoryId.pgType, unsaved.territoryid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) RETURNING "stateprovinceid", "stateprovincecode", "countryregioncode", "isonlystateprovinceflag", "name", "territoryid", "rowguid", "modifieddate" """)) .updateReturning(StateprovinceRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -49,18 +49,18 @@ class StateprovinceRepoImpl extends StateprovinceRepo { columns.add(Fragment.lit(""""stateprovincecode"""")): @scala.annotation.nowarn values.add(interpolate(Fragment.encode(PgTypes.bpchar, unsaved.stateprovincecode), Fragment.lit("::bpchar"))): @scala.annotation.nowarn columns.add(Fragment.lit(""""countryregioncode"""")): @scala.annotation.nowarn - values.add(interpolate(Fragment.encode(CountryregionId.dbType, unsaved.countryregioncode), Fragment.lit(""))): @scala.annotation.nowarn + values.add(interpolate(Fragment.encode(CountryregionId.pgType, unsaved.countryregioncode), Fragment.lit(""))): @scala.annotation.nowarn columns.add(Fragment.lit(""""name"""")): @scala.annotation.nowarn - values.add(interpolate(Fragment.encode(Name.dbType, unsaved.name), Fragment.lit("::varchar"))): @scala.annotation.nowarn + values.add(interpolate(Fragment.encode(Name.pgType, unsaved.name), Fragment.lit("::varchar"))): @scala.annotation.nowarn columns.add(Fragment.lit(""""territoryid"""")): @scala.annotation.nowarn - values.add(interpolate(Fragment.encode(SalesterritoryId.dbType, unsaved.territoryid), Fragment.lit("::int4"))): @scala.annotation.nowarn + values.add(interpolate(Fragment.encode(SalesterritoryId.pgType, unsaved.territoryid), Fragment.lit("::int4"))): @scala.annotation.nowarn unsaved.stateprovinceid.visit( { }, - value => { columns.add(Fragment.lit(""""stateprovinceid"""")): @scala.annotation.nowarn; values.add(interpolate(Fragment.encode(StateprovinceId.dbType, value), Fragment.lit("::int4"))): @scala.annotation.nowarn } + value => { columns.add(Fragment.lit(""""stateprovinceid"""")): @scala.annotation.nowarn; values.add(interpolate(Fragment.encode(StateprovinceId.pgType, value), Fragment.lit("::int4"))): @scala.annotation.nowarn } ); unsaved.isonlystateprovinceflag.visit( { }, - value => { columns.add(Fragment.lit(""""isonlystateprovinceflag"""")): @scala.annotation.nowarn; values.add(interpolate(Fragment.encode(Flag.dbType, value), Fragment.lit("::bool"))): @scala.annotation.nowarn } + value => { columns.add(Fragment.lit(""""isonlystateprovinceflag"""")): @scala.annotation.nowarn; values.add(interpolate(Fragment.encode(Flag.pgType, value), Fragment.lit("::bool"))): @scala.annotation.nowarn } ); unsaved.rowguid.visit( { }, @@ -101,13 +101,13 @@ class StateprovinceRepoImpl extends StateprovinceRepo { override def selectById(stateprovinceid: StateprovinceId)(using c: Connection): Optional[StateprovinceRow] = { interpolate(Fragment.lit("""select "stateprovinceid", "stateprovincecode", "countryregioncode", "isonlystateprovinceflag", "name", "territoryid", "rowguid", "modifieddate" from "person"."stateprovince" - where "stateprovinceid" = """), Fragment.encode(StateprovinceId.dbType, stateprovinceid), Fragment.lit("")).query(StateprovinceRow.`_rowParser`.first()).runUnchecked(c) + where "stateprovinceid" = """), Fragment.encode(StateprovinceId.pgType, stateprovinceid), Fragment.lit("")).query(StateprovinceRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(stateprovinceids: Array[StateprovinceId])(using c: Connection): java.util.List[StateprovinceRow] = { interpolate(Fragment.lit("""select "stateprovinceid", "stateprovincecode", "countryregioncode", "isonlystateprovinceflag", "name", "territoryid", "rowguid", "modifieddate" from "person"."stateprovince" - where "stateprovinceid" = ANY("""), Fragment.encode(StateprovinceId.dbTypeArray, stateprovinceids), Fragment.lit(")")).query(StateprovinceRow.`_rowParser`.all()).runUnchecked(c) + where "stateprovinceid" = ANY("""), Fragment.encode(StateprovinceId.pgTypeArray, stateprovinceids), Fragment.lit(")")).query(StateprovinceRow.`_rowParser`.all()).runUnchecked(c) } override def selectByIdsTracked(stateprovinceids: Array[StateprovinceId])(using c: Connection): java.util.Map[StateprovinceId, StateprovinceRow] = { @@ -122,18 +122,18 @@ class StateprovinceRepoImpl extends StateprovinceRepo { val stateprovinceid: StateprovinceId = row.stateprovinceid return interpolate(Fragment.lit("""update "person"."stateprovince" set "stateprovincecode" = """), Fragment.encode(PgTypes.bpchar, row.stateprovincecode), Fragment.lit("""::bpchar, - "countryregioncode" = """), Fragment.encode(CountryregionId.dbType, row.countryregioncode), Fragment.lit(""", - "isonlystateprovinceflag" = """), Fragment.encode(Flag.dbType, row.isonlystateprovinceflag), Fragment.lit("""::bool, - "name" = """), Fragment.encode(Name.dbType, row.name), Fragment.lit("""::varchar, - "territoryid" = """), Fragment.encode(SalesterritoryId.dbType, row.territoryid), Fragment.lit("""::int4, + "countryregioncode" = """), Fragment.encode(CountryregionId.pgType, row.countryregioncode), Fragment.lit(""", + "isonlystateprovinceflag" = """), Fragment.encode(Flag.pgType, row.isonlystateprovinceflag), Fragment.lit("""::bool, + "name" = """), Fragment.encode(Name.pgType, row.name), Fragment.lit("""::varchar, + "territoryid" = """), Fragment.encode(SalesterritoryId.pgType, row.territoryid), Fragment.lit("""::int4, "rowguid" = """), Fragment.encode(PgTypes.uuid, row.rowguid), Fragment.lit("""::uuid, "modifieddate" = """), Fragment.encode(PgTypes.timestamp, row.modifieddate), Fragment.lit("""::timestamp - where "stateprovinceid" = """), Fragment.encode(StateprovinceId.dbType, stateprovinceid), Fragment.lit("")).update().runUnchecked(c) > 0 + where "stateprovinceid" = """), Fragment.encode(StateprovinceId.pgType, stateprovinceid), Fragment.lit("")).update().runUnchecked(c) > 0 } override def upsert(unsaved: StateprovinceRow)(using c: Connection): StateprovinceRow = { interpolate(Fragment.lit("""insert into "person"."stateprovince"("stateprovinceid", "stateprovincecode", "countryregioncode", "isonlystateprovinceflag", "name", "territoryid", "rowguid", "modifieddate") - values ("""), Fragment.encode(StateprovinceId.dbType, unsaved.stateprovinceid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.bpchar, unsaved.stateprovincecode), Fragment.lit("::bpchar, "), Fragment.encode(CountryregionId.dbType, unsaved.countryregioncode), Fragment.lit(", "), Fragment.encode(Flag.dbType, unsaved.isonlystateprovinceflag), Fragment.lit("::bool, "), Fragment.encode(Name.dbType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(SalesterritoryId.dbType, unsaved.territoryid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) + values ("""), Fragment.encode(StateprovinceId.pgType, unsaved.stateprovinceid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.bpchar, unsaved.stateprovincecode), Fragment.lit("::bpchar, "), Fragment.encode(CountryregionId.pgType, unsaved.countryregioncode), Fragment.lit(", "), Fragment.encode(Flag.pgType, unsaved.isonlystateprovinceflag), Fragment.lit("::bool, "), Fragment.encode(Name.pgType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(SalesterritoryId.pgType, unsaved.territoryid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) on conflict ("stateprovinceid") do update set "stateprovincecode" = EXCLUDED."stateprovincecode", diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRow.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRow.scala index 09ee5fc757..5b4b090820 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRow.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRow.scala @@ -86,7 +86,7 @@ case class StateprovinceRow( } object StateprovinceRow { - val `_rowParser`: RowParser[StateprovinceRow] = RowParsers.of(StateprovinceId.dbType, PgTypes.bpchar, CountryregionId.dbType, Flag.dbType, Name.dbType, SalesterritoryId.dbType, PgTypes.uuid, PgTypes.timestamp, StateprovinceRow.apply, row => Array[Any](row.stateprovinceid, row.stateprovincecode, row.countryregioncode, row.isonlystateprovinceflag, row.name, row.territoryid, row.rowguid, row.modifieddate)) + val `_rowParser`: RowParser[StateprovinceRow] = RowParsers.of(StateprovinceId.pgType, PgTypes.bpchar, CountryregionId.pgType, Flag.pgType, Name.pgType, SalesterritoryId.pgType, PgTypes.uuid, PgTypes.timestamp, StateprovinceRow.apply, row => Array[Any](row.stateprovinceid, row.stateprovincecode, row.countryregioncode, row.isonlystateprovinceflag, row.name, row.territoryid, row.rowguid, row.modifieddate)) given pgText: PgText[StateprovinceRow] = PgText.from(`_rowParser`) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRowUnsaved.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRowUnsaved.scala index 1b1a08c5a0..e18781c2ba 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRowUnsaved.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRowUnsaved.scala @@ -63,5 +63,5 @@ case class StateprovinceRowUnsaved( } object StateprovinceRowUnsaved { - given pgText: PgText[StateprovinceRowUnsaved] = PgText.instance((row, sb) => { PgTypes.bpchar.text.unsafeEncode(row.stateprovincecode, sb); sb.append(PgText.DELIMETER); CountryregionId.dbType.text.unsafeEncode(row.countryregioncode, sb); sb.append(PgText.DELIMETER); Name.dbType.text.unsafeEncode(row.name, sb); sb.append(PgText.DELIMETER); SalesterritoryId.dbType.text.unsafeEncode(row.territoryid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using StateprovinceId.dbType.text).unsafeEncode(row.stateprovinceid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using Flag.dbType.text).unsafeEncode(row.isonlystateprovinceflag, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.uuid.text).unsafeEncode(row.rowguid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) + given pgText: PgText[StateprovinceRowUnsaved] = PgText.instance((row, sb) => { PgTypes.bpchar.text.unsafeEncode(row.stateprovincecode, sb); sb.append(PgText.DELIMETER); CountryregionId.pgType.text.unsafeEncode(row.countryregioncode, sb); sb.append(PgText.DELIMETER); Name.pgType.text.unsafeEncode(row.name, sb); sb.append(PgText.DELIMETER); SalesterritoryId.pgType.text.unsafeEncode(row.territoryid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using StateprovinceId.pgType.text).unsafeEncode(row.stateprovinceid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using Flag.pgType.text).unsafeEncode(row.isonlystateprovinceflag, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.uuid.text).unsafeEncode(row.rowguid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person_detail/PersonDetailSqlRepoImpl.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person_detail/PersonDetailSqlRepoImpl.scala index b7c87a44ec..344c396701 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person_detail/PersonDetailSqlRepoImpl.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person_detail/PersonDetailSqlRepoImpl.scala @@ -32,7 +32,7 @@ class PersonDetailSqlRepoImpl extends PersonDetailSqlRepo { JOIN person.person p ON p.businessentityid = s.businessentityid JOIN person.businessentityaddress bea ON bea.businessentityid = s.businessentityid LEFT JOIN person.address a ON a.addressid = bea.addressid - where s.businessentityid = """), Fragment.encode(BusinessentityId.dbType, businessentityid), Fragment.lit("""::int4 + where s.businessentityid = """), Fragment.encode(BusinessentityId.pgType, businessentityid), Fragment.lit("""::int4 and p.modifieddate > """), Fragment.encode(PgTypes.timestamp, modifiedAfter), Fragment.lit("::timestamp")).query(PersonDetailSqlRow.`_rowParser`.all()).runUnchecked(c) } } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person_detail/PersonDetailSqlRow.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person_detail/PersonDetailSqlRow.scala index 7b2bb7cb72..84d509db57 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person_detail/PersonDetailSqlRow.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person_detail/PersonDetailSqlRow.scala @@ -6,8 +6,9 @@ package adventureworks.person_detail import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Name import adventureworks.userdefined.FirstName +import adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import dev.typr.foundations.PgTypes import dev.typr.foundations.RowParser import dev.typr.foundations.RowParsers @@ -24,9 +25,9 @@ case class PersonDetailSqlRow( /** Points to [[adventureworks.person.person.PersonRow.firstname]] */ firstname: /* user-picked */ FirstName, /** Points to [[adventureworks.person.person.PersonRow.middlename]] */ - middlename: Optional[Name], + middlename: Optional[/* user-picked */ MiddleName], /** Points to [[adventureworks.person.person.PersonRow.lastname]] */ - lastname: Name, + lastname: /* user-picked */ LastName, /** Points to [[adventureworks.humanresources.employee.EmployeeRow.jobtitle]] */ jobtitle: String, /** Points to [[adventureworks.person.address.AddressRow.addressline1]] */ @@ -37,16 +38,16 @@ case class PersonDetailSqlRow( postalcode: Optional[String], /** Points to [[adventureworks.person.address.AddressRow.rowguid]] */ rowguid: Optional[UUID] -) extends Tuple10[BusinessentityId, Optional[/* max 8 chars */ String], /* user-picked */ FirstName, Optional[Name], Name, String, Optional[String], Optional[String], Optional[String], Optional[UUID]] { +) extends Tuple10[BusinessentityId, Optional[/* max 8 chars */ String], /* user-picked */ FirstName, Optional[/* user-picked */ MiddleName], /* user-picked */ LastName, String, Optional[String], Optional[String], Optional[String], Optional[UUID]] { override def `_1`: BusinessentityId = businessentityid override def `_2`: Optional[/* max 8 chars */ String] = title override def `_3`: /* user-picked */ FirstName = firstname - override def `_4`: Optional[Name] = middlename + override def `_4`: Optional[/* user-picked */ MiddleName] = middlename - override def `_5`: Name = lastname + override def `_5`: /* user-picked */ LastName = lastname override def `_6`: String = jobtitle @@ -60,5 +61,5 @@ case class PersonDetailSqlRow( } object PersonDetailSqlRow { - val `_rowParser`: RowParser[PersonDetailSqlRow] = RowParsers.of(BusinessentityId.dbType, PgTypes.text.opt(), FirstName.dbType, Name.dbType.opt(), Name.dbType, PgTypes.text, PgTypes.text.opt(), PgTypes.text.opt(), PgTypes.text.opt(), PgTypes.uuid.opt(), PersonDetailSqlRow.apply, row => Array[Any](row.businessentityid, row.title, row.firstname, row.middlename, row.lastname, row.jobtitle, row.addressline1, row.city, row.postalcode, row.rowguid)) + val `_rowParser`: RowParser[PersonDetailSqlRow] = RowParsers.of(BusinessentityId.pgType, PgTypes.text.opt(), FirstName.pgType, MiddleName.pgType.opt(), LastName.pgType, PgTypes.text, PgTypes.text.opt(), PgTypes.text.opt(), PgTypes.text.opt(), PgTypes.uuid.opt(), PersonDetailSqlRow.apply, row => Array[Any](row.businessentityid, row.title, row.firstname, row.middlename, row.lastname, row.jobtitle, row.addressline1, row.city, row.postalcode, row.rowguid)) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person_dynamic/PersonDynamicSqlRow.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person_dynamic/PersonDynamicSqlRow.scala index a6eee76c11..538c2ba972 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person_dynamic/PersonDynamicSqlRow.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person_dynamic/PersonDynamicSqlRow.scala @@ -5,8 +5,9 @@ */ package adventureworks.person_dynamic -import adventureworks.public.Name import adventureworks.userdefined.FirstName +import adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import dev.typr.foundations.PgTypes import dev.typr.foundations.RowParser import dev.typr.foundations.RowParsers @@ -20,19 +21,19 @@ case class PersonDynamicSqlRow( /** Points to [[adventureworks.person.person.PersonRow.firstname]] */ firstname: /* user-picked */ FirstName, /** Points to [[adventureworks.person.person.PersonRow.middlename]] */ - middlename: Optional[Name], + middlename: Optional[/* user-picked */ MiddleName], /** Points to [[adventureworks.person.person.PersonRow.lastname]] */ - lastname: Name -) extends Tuple4[Optional[/* max 8 chars */ String], /* user-picked */ FirstName, Optional[Name], Name] { + lastname: /* user-picked */ LastName +) extends Tuple4[Optional[/* max 8 chars */ String], /* user-picked */ FirstName, Optional[/* user-picked */ MiddleName], /* user-picked */ LastName] { override def `_1`: Optional[/* max 8 chars */ String] = title override def `_2`: /* user-picked */ FirstName = firstname - override def `_3`: Optional[Name] = middlename + override def `_3`: Optional[/* user-picked */ MiddleName] = middlename - override def `_4`: Name = lastname + override def `_4`: /* user-picked */ LastName = lastname } object PersonDynamicSqlRow { - val `_rowParser`: RowParser[PersonDynamicSqlRow] = RowParsers.of(PgTypes.text.opt(), FirstName.dbType, Name.dbType.opt(), Name.dbType, PersonDynamicSqlRow.apply, row => Array[Any](row.title, row.firstname, row.middlename, row.lastname)) + val `_rowParser`: RowParser[PersonDynamicSqlRow] = RowParsers.of(PgTypes.text.opt(), FirstName.pgType, MiddleName.pgType.opt(), LastName.pgType, PersonDynamicSqlRow.apply, row => Array[Any](row.title, row.firstname, row.middlename, row.lastname)) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person_row_join/PersonRowJoinSqlRow.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person_row_join/PersonRowJoinSqlRow.scala index e8fc72f5c1..087d01d580 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person_row_join/PersonRowJoinSqlRow.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/person_row_join/PersonRowJoinSqlRow.scala @@ -28,5 +28,5 @@ case class PersonRowJoinSqlRow( } object PersonRowJoinSqlRow { - val `_rowParser`: RowParser[PersonRowJoinSqlRow] = RowParsers.of(BusinessentityId.dbType, PgTypes.recordArray.opt(), PgTypes.recordArray.opt(), PersonRowJoinSqlRow.apply, row => Array[Any](row.businessentityid, row.email, row.emails)) + val `_rowParser`: RowParser[PersonRowJoinSqlRow] = RowParsers.of(BusinessentityId.pgType, PgTypes.recordArray.opt(), PgTypes.recordArray.opt(), PersonRowJoinSqlRow.apply, row => Array[Any](row.businessentityid, row.email, row.emails)) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/precisetypes/PaddedString10.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/precisetypes/PaddedString10.scala index 5ba6e6ed5f..425f14bc2d 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/precisetypes/PaddedString10.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/precisetypes/PaddedString10.scala @@ -32,11 +32,11 @@ case class PaddedString10 private(@JsonValue value: String) extends PaddedString object PaddedString10 { given bijection: Bijection[PaddedString10, String] = Bijection.apply[PaddedString10, String](_.value)(PaddedString10.apply) - given dbType: PgType[PaddedString10] = PgTypes.bpchar.bimap(PaddedString10.apply, _.value) + def of(value: String): Optional[PaddedString10] = (if (value.length <= 10) Optional.of(new PaddedString10(String.format("%-10s", value))) else Optional.empty()) - given dbTypeArray: PgType[Array[PaddedString10]] = PgTypes.bpcharArray.bimap(xs => xs.map(PaddedString10.apply), xs => xs.map(_.value)) + given pgType: PgType[PaddedString10] = PgTypes.bpchar.bimap(PaddedString10.apply, _.value) - def of(value: String): Optional[PaddedString10] = (if (value.length <= 10) Optional.of(new PaddedString10(String.format("%-10s", value))) else Optional.empty()) + given pgTypeArray: PgType[Array[PaddedString10]] = PgTypes.bpcharArray.bimap(xs => xs.map(PaddedString10.apply), xs => xs.map(_.value)) def unsafeForce(value: String): PaddedString10 = { if (value.length > 10) { diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/precisetypes/PaddedString3.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/precisetypes/PaddedString3.scala index 01eaaa9389..fd1e26dba5 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/precisetypes/PaddedString3.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/precisetypes/PaddedString3.scala @@ -32,11 +32,11 @@ case class PaddedString3 private(@JsonValue value: String) extends PaddedStringN object PaddedString3 { given bijection: Bijection[PaddedString3, String] = Bijection.apply[PaddedString3, String](_.value)(PaddedString3.apply) - given dbType: PgType[PaddedString3] = PgTypes.bpchar.bimap(PaddedString3.apply, _.value) + def of(value: String): Optional[PaddedString3] = (if (value.length <= 3) Optional.of(new PaddedString3(String.format("%-3s", value))) else Optional.empty()) - given dbTypeArray: PgType[Array[PaddedString3]] = PgTypes.bpcharArray.bimap(xs => xs.map(PaddedString3.apply), xs => xs.map(_.value)) + given pgType: PgType[PaddedString3] = PgTypes.bpchar.bimap(PaddedString3.apply, _.value) - def of(value: String): Optional[PaddedString3] = (if (value.length <= 3) Optional.of(new PaddedString3(String.format("%-3s", value))) else Optional.empty()) + given pgTypeArray: PgType[Array[PaddedString3]] = PgTypes.bpcharArray.bimap(xs => xs.map(PaddedString3.apply), xs => xs.map(_.value)) def unsafeForce(value: String): PaddedString3 = { if (value.length > 3) { diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/precisetypes/String10.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/precisetypes/String10.scala index 2dc1348d4f..cd6c756aa3 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/precisetypes/String10.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/precisetypes/String10.scala @@ -30,11 +30,11 @@ case class String10 private(@JsonValue value: String) extends StringN { object String10 { given bijection: Bijection[String10, String] = Bijection.apply[String10, String](_.value)(String10.apply) - given dbType: PgType[String10] = PgTypes.text.bimap(String10.apply, _.value) + def of(value: String): Optional[String10] = (if (value.length <= 10) Optional.of(new String10(value)) else Optional.empty()) - given dbTypeArray: PgType[Array[String10]] = PgTypes.textArray.bimap(xs => xs.map(String10.apply), xs => xs.map(_.value)) + given pgType: PgType[String10] = PgTypes.text.bimap(String10.apply, _.value) - def of(value: String): Optional[String10] = (if (value.length <= 10) Optional.of(new String10(value)) else Optional.empty()) + given pgTypeArray: PgType[Array[String10]] = PgTypes.textArray.bimap(xs => xs.map(String10.apply), xs => xs.map(_.value)) def truncate(value: String): String10 = new String10((if (value.length <= 10) value else value.substring(0, 10))) diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/precisetypes/String100.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/precisetypes/String100.scala index e675debb7f..6fe651ca10 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/precisetypes/String100.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/precisetypes/String100.scala @@ -30,11 +30,11 @@ case class String100 private(@JsonValue value: String) extends StringN { object String100 { given bijection: Bijection[String100, String] = Bijection.apply[String100, String](_.value)(String100.apply) - given dbType: PgType[String100] = PgTypes.text.bimap(String100.apply, _.value) + def of(value: String): Optional[String100] = (if (value.length <= 100) Optional.of(new String100(value)) else Optional.empty()) - given dbTypeArray: PgType[Array[String100]] = PgTypes.textArray.bimap(xs => xs.map(String100.apply), xs => xs.map(_.value)) + given pgType: PgType[String100] = PgTypes.text.bimap(String100.apply, _.value) - def of(value: String): Optional[String100] = (if (value.length <= 100) Optional.of(new String100(value)) else Optional.empty()) + given pgTypeArray: PgType[Array[String100]] = PgTypes.textArray.bimap(xs => xs.map(String100.apply), xs => xs.map(_.value)) def truncate(value: String): String100 = new String100((if (value.length <= 100) value else value.substring(0, 100))) diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/precisetypes/String20.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/precisetypes/String20.scala index e7f9956ef7..94cfba37c2 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/precisetypes/String20.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/precisetypes/String20.scala @@ -30,11 +30,11 @@ case class String20 private(@JsonValue value: String) extends StringN { object String20 { given bijection: Bijection[String20, String] = Bijection.apply[String20, String](_.value)(String20.apply) - given dbType: PgType[String20] = PgTypes.text.bimap(String20.apply, _.value) + def of(value: String): Optional[String20] = (if (value.length <= 20) Optional.of(new String20(value)) else Optional.empty()) - given dbTypeArray: PgType[Array[String20]] = PgTypes.textArray.bimap(xs => xs.map(String20.apply), xs => xs.map(_.value)) + given pgType: PgType[String20] = PgTypes.text.bimap(String20.apply, _.value) - def of(value: String): Optional[String20] = (if (value.length <= 20) Optional.of(new String20(value)) else Optional.empty()) + given pgTypeArray: PgType[Array[String20]] = PgTypes.textArray.bimap(xs => xs.map(String20.apply), xs => xs.map(_.value)) def truncate(value: String): String20 = new String20((if (value.length <= 20) value else value.substring(0, 20))) diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/precisetypes/String255.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/precisetypes/String255.scala index 886fdbcc12..caac20b506 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/precisetypes/String255.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/precisetypes/String255.scala @@ -30,11 +30,11 @@ case class String255 private(@JsonValue value: String) extends StringN { object String255 { given bijection: Bijection[String255, String] = Bijection.apply[String255, String](_.value)(String255.apply) - given dbType: PgType[String255] = PgTypes.text.bimap(String255.apply, _.value) + def of(value: String): Optional[String255] = (if (value.length <= 255) Optional.of(new String255(value)) else Optional.empty()) - given dbTypeArray: PgType[Array[String255]] = PgTypes.textArray.bimap(xs => xs.map(String255.apply), xs => xs.map(_.value)) + given pgType: PgType[String255] = PgTypes.text.bimap(String255.apply, _.value) - def of(value: String): Optional[String255] = (if (value.length <= 255) Optional.of(new String255(value)) else Optional.empty()) + given pgTypeArray: PgType[Array[String255]] = PgTypes.textArray.bimap(xs => xs.map(String255.apply), xs => xs.map(_.value)) def truncate(value: String): String255 = new String255((if (value.length <= 255) value else value.substring(0, 255))) diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/precisetypes/String50.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/precisetypes/String50.scala index 4adf662069..326760efa0 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/precisetypes/String50.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/precisetypes/String50.scala @@ -30,11 +30,11 @@ case class String50 private(@JsonValue value: String) extends StringN { object String50 { given bijection: Bijection[String50, String] = Bijection.apply[String50, String](_.value)(String50.apply) - given dbType: PgType[String50] = PgTypes.text.bimap(String50.apply, _.value) + def of(value: String): Optional[String50] = (if (value.length <= 50) Optional.of(new String50(value)) else Optional.empty()) - given dbTypeArray: PgType[Array[String50]] = PgTypes.textArray.bimap(xs => xs.map(String50.apply), xs => xs.map(_.value)) + given pgType: PgType[String50] = PgTypes.text.bimap(String50.apply, _.value) - def of(value: String): Optional[String50] = (if (value.length <= 50) Optional.of(new String50(value)) else Optional.empty()) + given pgTypeArray: PgType[Array[String50]] = PgTypes.textArray.bimap(xs => xs.map(String50.apply), xs => xs.map(_.value)) def truncate(value: String): String50 = new String50((if (value.length <= 50) value else value.substring(0, 50))) diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/product/ProductFields.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/product/ProductFields.scala index fe1ab255b6..184059c21f 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/product/ProductFields.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/product/ProductFields.scala @@ -41,7 +41,7 @@ class ProductFields(val `_path`: java.util.List[Path]) extends TupleExpr25[Produ Optional.empty(), Optional.of("int4"), (row, value) => row.copy(productid = value), - ProductId.dbType + ProductId.pgType ) } @@ -53,7 +53,7 @@ class ProductFields(val `_path`: java.util.List[Path]) extends TupleExpr25[Produ Optional.empty(), Optional.of("varchar"), (row, value) => row.copy(name = value), - Name.dbType + Name.pgType ) } @@ -77,7 +77,7 @@ class ProductFields(val `_path`: java.util.List[Path]) extends TupleExpr25[Produ Optional.empty(), Optional.of("bool"), (row, value) => row.copy(makeflag = value), - Flag.dbType + Flag.pgType ) } @@ -89,7 +89,7 @@ class ProductFields(val `_path`: java.util.List[Path]) extends TupleExpr25[Produ Optional.empty(), Optional.of("bool"), (row, value) => row.copy(finishedgoodsflag = value), - Flag.dbType + Flag.pgType ) } @@ -173,7 +173,7 @@ class ProductFields(val `_path`: java.util.List[Path]) extends TupleExpr25[Produ Optional.empty(), Optional.of("bpchar"), (row, value) => row.copy(sizeunitmeasurecode = value), - UnitmeasureId.dbType + UnitmeasureId.pgType ) } @@ -185,7 +185,7 @@ class ProductFields(val `_path`: java.util.List[Path]) extends TupleExpr25[Produ Optional.empty(), Optional.of("bpchar"), (row, value) => row.copy(weightunitmeasurecode = value), - UnitmeasureId.dbType + UnitmeasureId.pgType ) } @@ -257,7 +257,7 @@ class ProductFields(val `_path`: java.util.List[Path]) extends TupleExpr25[Produ Optional.empty(), Optional.of("int4"), (row, value) => row.copy(productsubcategoryid = value), - ProductsubcategoryId.dbType + ProductsubcategoryId.pgType ) } @@ -269,7 +269,7 @@ class ProductFields(val `_path`: java.util.List[Path]) extends TupleExpr25[Produ Optional.empty(), Optional.of("int4"), (row, value) => row.copy(productmodelid = value), - ProductmodelId.dbType + ProductmodelId.pgType ) } diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/product/ProductId.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/product/ProductId.scala index 06a84e8330..71c767c2bc 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/product/ProductId.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/product/ProductId.scala @@ -16,7 +16,7 @@ case class ProductId(@JsonValue value: Integer) extends scala.AnyVal object ProductId { given bijection: Bijection[ProductId, Integer] = Bijection.apply[ProductId, Integer](_.value)(ProductId.apply) - given dbType: PgType[ProductId] = PgTypes.int4.bimap(ProductId.apply, _.value) + given pgType: PgType[ProductId] = PgTypes.int4.bimap(ProductId.apply, _.value) - given dbTypeArray: PgType[Array[ProductId]] = PgTypes.int4Array.bimap(xs => xs.map(ProductId.apply), xs => xs.map(_.value)) + given pgTypeArray: PgType[Array[ProductId]] = PgTypes.int4Array.bimap(xs => xs.map(ProductId.apply), xs => xs.map(_.value)) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/product/ProductRepoImpl.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/product/ProductRepoImpl.scala index 963bc8eea3..a8dd1209a2 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/product/ProductRepoImpl.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/product/ProductRepoImpl.scala @@ -26,19 +26,19 @@ import dev.typr.foundations.Fragment.interpolate class ProductRepoImpl extends ProductRepo { override def delete: DeleteBuilder[ProductFields, ProductRow] = DeleteBuilder.of(""""production"."product"""", ProductFields.structure, Dialect.POSTGRESQL) - override def deleteById(productid: ProductId)(using c: Connection): java.lang.Boolean = interpolate(Fragment.lit("""delete from "production"."product" where "productid" = """), Fragment.encode(ProductId.dbType, productid), Fragment.lit("")).update().runUnchecked(c) > 0 + override def deleteById(productid: ProductId)(using c: Connection): java.lang.Boolean = interpolate(Fragment.lit("""delete from "production"."product" where "productid" = """), Fragment.encode(ProductId.pgType, productid), Fragment.lit("")).update().runUnchecked(c) > 0 override def deleteByIds(productids: Array[ProductId])(using c: Connection): Integer = { interpolate(Fragment.lit("""delete from "production"."product" - where "productid" = ANY("""), Fragment.encode(ProductId.dbTypeArray, productids), Fragment.lit(")")) + where "productid" = ANY("""), Fragment.encode(ProductId.pgTypeArray, productids), Fragment.lit(")")) .update() .runUnchecked(c) } override def insert(unsaved: ProductRow)(using c: Connection): ProductRow = { interpolate(Fragment.lit("""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") - values ("""), Fragment.encode(ProductId.dbType, unsaved.productid), Fragment.lit("::int4, "), Fragment.encode(Name.dbType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.text, unsaved.productnumber), Fragment.lit(", "), Fragment.encode(Flag.dbType, unsaved.makeflag), Fragment.lit("::bool, "), Fragment.encode(Flag.dbType, unsaved.finishedgoodsflag), Fragment.lit("::bool, "), Fragment.encode(PgTypes.text.opt(), unsaved.color), Fragment.lit(", "), Fragment.encode(PgTypes.int2, unsaved.safetystocklevel), Fragment.lit("::int2, "), Fragment.encode(PgTypes.int2, unsaved.reorderpoint), Fragment.lit("::int2, "), Fragment.encode(PgTypes.numeric, unsaved.standardcost), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.listprice), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.text.opt(), unsaved.size), Fragment.lit(", "), Fragment.encode(UnitmeasureId.dbType.opt(), unsaved.sizeunitmeasurecode), Fragment.lit("::bpchar, "), Fragment.encode(UnitmeasureId.dbType.opt(), unsaved.weightunitmeasurecode), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.numeric.opt(), unsaved.weight), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.int4, unsaved.daystomanufacture), Fragment.lit("::int4, "), Fragment.encode(PgTypes.bpchar.opt(), unsaved.productline), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.bpchar.opt(), unsaved.`class`), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.bpchar.opt(), unsaved.style), Fragment.lit("::bpchar, "), Fragment.encode(ProductsubcategoryId.dbType.opt(), unsaved.productsubcategoryid), Fragment.lit("::int4, "), Fragment.encode(ProductmodelId.dbType.opt(), unsaved.productmodelid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.timestamp, unsaved.sellstartdate), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamp.opt(), unsaved.sellenddate), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamp.opt(), unsaved.discontinueddate), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) + values ("""), Fragment.encode(ProductId.pgType, unsaved.productid), Fragment.lit("::int4, "), Fragment.encode(Name.pgType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.text, unsaved.productnumber), Fragment.lit(", "), Fragment.encode(Flag.pgType, unsaved.makeflag), Fragment.lit("::bool, "), Fragment.encode(Flag.pgType, unsaved.finishedgoodsflag), Fragment.lit("::bool, "), Fragment.encode(PgTypes.text.opt(), unsaved.color), Fragment.lit(", "), Fragment.encode(PgTypes.int2, unsaved.safetystocklevel), Fragment.lit("::int2, "), Fragment.encode(PgTypes.int2, unsaved.reorderpoint), Fragment.lit("::int2, "), Fragment.encode(PgTypes.numeric, unsaved.standardcost), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.listprice), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.text.opt(), unsaved.size), Fragment.lit(", "), Fragment.encode(UnitmeasureId.pgType.opt(), unsaved.sizeunitmeasurecode), Fragment.lit("::bpchar, "), Fragment.encode(UnitmeasureId.pgType.opt(), unsaved.weightunitmeasurecode), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.numeric.opt(), unsaved.weight), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.int4, unsaved.daystomanufacture), Fragment.lit("::int4, "), Fragment.encode(PgTypes.bpchar.opt(), unsaved.productline), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.bpchar.opt(), unsaved.`class`), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.bpchar.opt(), unsaved.style), Fragment.lit("::bpchar, "), Fragment.encode(ProductsubcategoryId.pgType.opt(), unsaved.productsubcategoryid), Fragment.lit("::int4, "), Fragment.encode(ProductmodelId.pgType.opt(), unsaved.productmodelid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.timestamp, unsaved.sellstartdate), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamp.opt(), unsaved.sellenddate), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamp.opt(), unsaved.discontinueddate), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) RETURNING "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" """)) .updateReturning(ProductRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -48,7 +48,7 @@ class ProductRepoImpl extends ProductRepo { val columns: ArrayList[Fragment] = new ArrayList() val values: ArrayList[Fragment] = new ArrayList() columns.add(Fragment.lit(""""name"""")): @scala.annotation.nowarn - values.add(interpolate(Fragment.encode(Name.dbType, unsaved.name), Fragment.lit("::varchar"))): @scala.annotation.nowarn + values.add(interpolate(Fragment.encode(Name.pgType, unsaved.name), Fragment.lit("::varchar"))): @scala.annotation.nowarn columns.add(Fragment.lit(""""productnumber"""")): @scala.annotation.nowarn values.add(interpolate(Fragment.encode(PgTypes.text, unsaved.productnumber), Fragment.lit(""))): @scala.annotation.nowarn columns.add(Fragment.lit(""""color"""")): @scala.annotation.nowarn @@ -64,9 +64,9 @@ class ProductRepoImpl extends ProductRepo { columns.add(Fragment.lit(""""size"""")): @scala.annotation.nowarn values.add(interpolate(Fragment.encode(PgTypes.text.opt(), unsaved.size), Fragment.lit(""))): @scala.annotation.nowarn columns.add(Fragment.lit(""""sizeunitmeasurecode"""")): @scala.annotation.nowarn - values.add(interpolate(Fragment.encode(UnitmeasureId.dbType.opt(), unsaved.sizeunitmeasurecode), Fragment.lit("::bpchar"))): @scala.annotation.nowarn + values.add(interpolate(Fragment.encode(UnitmeasureId.pgType.opt(), unsaved.sizeunitmeasurecode), Fragment.lit("::bpchar"))): @scala.annotation.nowarn columns.add(Fragment.lit(""""weightunitmeasurecode"""")): @scala.annotation.nowarn - values.add(interpolate(Fragment.encode(UnitmeasureId.dbType.opt(), unsaved.weightunitmeasurecode), Fragment.lit("::bpchar"))): @scala.annotation.nowarn + values.add(interpolate(Fragment.encode(UnitmeasureId.pgType.opt(), unsaved.weightunitmeasurecode), Fragment.lit("::bpchar"))): @scala.annotation.nowarn columns.add(Fragment.lit(""""weight"""")): @scala.annotation.nowarn values.add(interpolate(Fragment.encode(PgTypes.numeric.opt(), unsaved.weight), Fragment.lit("::numeric"))): @scala.annotation.nowarn columns.add(Fragment.lit(""""daystomanufacture"""")): @scala.annotation.nowarn @@ -78,9 +78,9 @@ class ProductRepoImpl extends ProductRepo { columns.add(Fragment.lit(""""style"""")): @scala.annotation.nowarn values.add(interpolate(Fragment.encode(PgTypes.bpchar.opt(), unsaved.style), Fragment.lit("::bpchar"))): @scala.annotation.nowarn columns.add(Fragment.lit(""""productsubcategoryid"""")): @scala.annotation.nowarn - values.add(interpolate(Fragment.encode(ProductsubcategoryId.dbType.opt(), unsaved.productsubcategoryid), Fragment.lit("::int4"))): @scala.annotation.nowarn + values.add(interpolate(Fragment.encode(ProductsubcategoryId.pgType.opt(), unsaved.productsubcategoryid), Fragment.lit("::int4"))): @scala.annotation.nowarn columns.add(Fragment.lit(""""productmodelid"""")): @scala.annotation.nowarn - values.add(interpolate(Fragment.encode(ProductmodelId.dbType.opt(), unsaved.productmodelid), Fragment.lit("::int4"))): @scala.annotation.nowarn + values.add(interpolate(Fragment.encode(ProductmodelId.pgType.opt(), unsaved.productmodelid), Fragment.lit("::int4"))): @scala.annotation.nowarn columns.add(Fragment.lit(""""sellstartdate"""")): @scala.annotation.nowarn values.add(interpolate(Fragment.encode(PgTypes.timestamp, unsaved.sellstartdate), Fragment.lit("::timestamp"))): @scala.annotation.nowarn columns.add(Fragment.lit(""""sellenddate"""")): @scala.annotation.nowarn @@ -89,15 +89,15 @@ class ProductRepoImpl extends ProductRepo { values.add(interpolate(Fragment.encode(PgTypes.timestamp.opt(), unsaved.discontinueddate), Fragment.lit("::timestamp"))): @scala.annotation.nowarn unsaved.productid.visit( { }, - value => { columns.add(Fragment.lit(""""productid"""")): @scala.annotation.nowarn; values.add(interpolate(Fragment.encode(ProductId.dbType, value), Fragment.lit("::int4"))): @scala.annotation.nowarn } + value => { columns.add(Fragment.lit(""""productid"""")): @scala.annotation.nowarn; values.add(interpolate(Fragment.encode(ProductId.pgType, value), Fragment.lit("::int4"))): @scala.annotation.nowarn } ); unsaved.makeflag.visit( { }, - value => { columns.add(Fragment.lit(""""makeflag"""")): @scala.annotation.nowarn; values.add(interpolate(Fragment.encode(Flag.dbType, value), Fragment.lit("::bool"))): @scala.annotation.nowarn } + value => { columns.add(Fragment.lit(""""makeflag"""")): @scala.annotation.nowarn; values.add(interpolate(Fragment.encode(Flag.pgType, value), Fragment.lit("::bool"))): @scala.annotation.nowarn } ); unsaved.finishedgoodsflag.visit( { }, - value => { columns.add(Fragment.lit(""""finishedgoodsflag"""")): @scala.annotation.nowarn; values.add(interpolate(Fragment.encode(Flag.dbType, value), Fragment.lit("::bool"))): @scala.annotation.nowarn } + value => { columns.add(Fragment.lit(""""finishedgoodsflag"""")): @scala.annotation.nowarn; values.add(interpolate(Fragment.encode(Flag.pgType, value), Fragment.lit("::bool"))): @scala.annotation.nowarn } ); unsaved.rowguid.visit( { }, @@ -138,13 +138,13 @@ class ProductRepoImpl extends ProductRepo { override def selectById(productid: ProductId)(using c: Connection): Optional[ProductRow] = { interpolate(Fragment.lit("""select "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" from "production"."product" - where "productid" = """), Fragment.encode(ProductId.dbType, productid), Fragment.lit("")).query(ProductRow.`_rowParser`.first()).runUnchecked(c) + where "productid" = """), Fragment.encode(ProductId.pgType, productid), Fragment.lit("")).query(ProductRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(productids: Array[ProductId])(using c: Connection): java.util.List[ProductRow] = { interpolate(Fragment.lit("""select "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" from "production"."product" - where "productid" = ANY("""), Fragment.encode(ProductId.dbTypeArray, productids), Fragment.lit(")")).query(ProductRow.`_rowParser`.all()).runUnchecked(c) + where "productid" = ANY("""), Fragment.encode(ProductId.pgTypeArray, productids), Fragment.lit(")")).query(ProductRow.`_rowParser`.all()).runUnchecked(c) } override def selectByIdsTracked(productids: Array[ProductId])(using c: Connection): java.util.Map[ProductId, ProductRow] = { @@ -158,36 +158,36 @@ class ProductRepoImpl extends ProductRepo { override def update(row: ProductRow)(using c: Connection): java.lang.Boolean = { val productid: ProductId = row.productid return interpolate(Fragment.lit("""update "production"."product" - set "name" = """), Fragment.encode(Name.dbType, row.name), Fragment.lit("""::varchar, + set "name" = """), Fragment.encode(Name.pgType, row.name), Fragment.lit("""::varchar, "productnumber" = """), Fragment.encode(PgTypes.text, row.productnumber), Fragment.lit(""", - "makeflag" = """), Fragment.encode(Flag.dbType, row.makeflag), Fragment.lit("""::bool, - "finishedgoodsflag" = """), Fragment.encode(Flag.dbType, row.finishedgoodsflag), Fragment.lit("""::bool, + "makeflag" = """), Fragment.encode(Flag.pgType, row.makeflag), Fragment.lit("""::bool, + "finishedgoodsflag" = """), Fragment.encode(Flag.pgType, row.finishedgoodsflag), Fragment.lit("""::bool, "color" = """), Fragment.encode(PgTypes.text.opt(), row.color), Fragment.lit(""", "safetystocklevel" = """), Fragment.encode(PgTypes.int2, row.safetystocklevel), Fragment.lit("""::int2, "reorderpoint" = """), Fragment.encode(PgTypes.int2, row.reorderpoint), Fragment.lit("""::int2, "standardcost" = """), Fragment.encode(PgTypes.numeric, row.standardcost), Fragment.lit("""::numeric, "listprice" = """), Fragment.encode(PgTypes.numeric, row.listprice), Fragment.lit("""::numeric, "size" = """), Fragment.encode(PgTypes.text.opt(), row.size), Fragment.lit(""", - "sizeunitmeasurecode" = """), Fragment.encode(UnitmeasureId.dbType.opt(), row.sizeunitmeasurecode), Fragment.lit("""::bpchar, - "weightunitmeasurecode" = """), Fragment.encode(UnitmeasureId.dbType.opt(), row.weightunitmeasurecode), Fragment.lit("""::bpchar, + "sizeunitmeasurecode" = """), Fragment.encode(UnitmeasureId.pgType.opt(), row.sizeunitmeasurecode), Fragment.lit("""::bpchar, + "weightunitmeasurecode" = """), Fragment.encode(UnitmeasureId.pgType.opt(), row.weightunitmeasurecode), Fragment.lit("""::bpchar, "weight" = """), Fragment.encode(PgTypes.numeric.opt(), row.weight), Fragment.lit("""::numeric, "daystomanufacture" = """), Fragment.encode(PgTypes.int4, row.daystomanufacture), Fragment.lit("""::int4, "productline" = """), Fragment.encode(PgTypes.bpchar.opt(), row.productline), Fragment.lit("""::bpchar, "class" = """), Fragment.encode(PgTypes.bpchar.opt(), row.`class`), Fragment.lit("""::bpchar, "style" = """), Fragment.encode(PgTypes.bpchar.opt(), row.style), Fragment.lit("""::bpchar, - "productsubcategoryid" = """), Fragment.encode(ProductsubcategoryId.dbType.opt(), row.productsubcategoryid), Fragment.lit("""::int4, - "productmodelid" = """), Fragment.encode(ProductmodelId.dbType.opt(), row.productmodelid), Fragment.lit("""::int4, + "productsubcategoryid" = """), Fragment.encode(ProductsubcategoryId.pgType.opt(), row.productsubcategoryid), Fragment.lit("""::int4, + "productmodelid" = """), Fragment.encode(ProductmodelId.pgType.opt(), row.productmodelid), Fragment.lit("""::int4, "sellstartdate" = """), Fragment.encode(PgTypes.timestamp, row.sellstartdate), Fragment.lit("""::timestamp, "sellenddate" = """), Fragment.encode(PgTypes.timestamp.opt(), row.sellenddate), Fragment.lit("""::timestamp, "discontinueddate" = """), Fragment.encode(PgTypes.timestamp.opt(), row.discontinueddate), Fragment.lit("""::timestamp, "rowguid" = """), Fragment.encode(PgTypes.uuid, row.rowguid), Fragment.lit("""::uuid, "modifieddate" = """), Fragment.encode(PgTypes.timestamp, row.modifieddate), Fragment.lit("""::timestamp - where "productid" = """), Fragment.encode(ProductId.dbType, productid), Fragment.lit("")).update().runUnchecked(c) > 0 + where "productid" = """), Fragment.encode(ProductId.pgType, productid), Fragment.lit("")).update().runUnchecked(c) > 0 } override def upsert(unsaved: ProductRow)(using c: Connection): ProductRow = { interpolate(Fragment.lit("""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") - values ("""), Fragment.encode(ProductId.dbType, unsaved.productid), Fragment.lit("::int4, "), Fragment.encode(Name.dbType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.text, unsaved.productnumber), Fragment.lit(", "), Fragment.encode(Flag.dbType, unsaved.makeflag), Fragment.lit("::bool, "), Fragment.encode(Flag.dbType, unsaved.finishedgoodsflag), Fragment.lit("::bool, "), Fragment.encode(PgTypes.text.opt(), unsaved.color), Fragment.lit(", "), Fragment.encode(PgTypes.int2, unsaved.safetystocklevel), Fragment.lit("::int2, "), Fragment.encode(PgTypes.int2, unsaved.reorderpoint), Fragment.lit("::int2, "), Fragment.encode(PgTypes.numeric, unsaved.standardcost), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.listprice), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.text.opt(), unsaved.size), Fragment.lit(", "), Fragment.encode(UnitmeasureId.dbType.opt(), unsaved.sizeunitmeasurecode), Fragment.lit("::bpchar, "), Fragment.encode(UnitmeasureId.dbType.opt(), unsaved.weightunitmeasurecode), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.numeric.opt(), unsaved.weight), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.int4, unsaved.daystomanufacture), Fragment.lit("::int4, "), Fragment.encode(PgTypes.bpchar.opt(), unsaved.productline), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.bpchar.opt(), unsaved.`class`), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.bpchar.opt(), unsaved.style), Fragment.lit("::bpchar, "), Fragment.encode(ProductsubcategoryId.dbType.opt(), unsaved.productsubcategoryid), Fragment.lit("::int4, "), Fragment.encode(ProductmodelId.dbType.opt(), unsaved.productmodelid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.timestamp, unsaved.sellstartdate), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamp.opt(), unsaved.sellenddate), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamp.opt(), unsaved.discontinueddate), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) + values ("""), Fragment.encode(ProductId.pgType, unsaved.productid), Fragment.lit("::int4, "), Fragment.encode(Name.pgType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.text, unsaved.productnumber), Fragment.lit(", "), Fragment.encode(Flag.pgType, unsaved.makeflag), Fragment.lit("::bool, "), Fragment.encode(Flag.pgType, unsaved.finishedgoodsflag), Fragment.lit("::bool, "), Fragment.encode(PgTypes.text.opt(), unsaved.color), Fragment.lit(", "), Fragment.encode(PgTypes.int2, unsaved.safetystocklevel), Fragment.lit("::int2, "), Fragment.encode(PgTypes.int2, unsaved.reorderpoint), Fragment.lit("::int2, "), Fragment.encode(PgTypes.numeric, unsaved.standardcost), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.listprice), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.text.opt(), unsaved.size), Fragment.lit(", "), Fragment.encode(UnitmeasureId.pgType.opt(), unsaved.sizeunitmeasurecode), Fragment.lit("::bpchar, "), Fragment.encode(UnitmeasureId.pgType.opt(), unsaved.weightunitmeasurecode), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.numeric.opt(), unsaved.weight), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.int4, unsaved.daystomanufacture), Fragment.lit("::int4, "), Fragment.encode(PgTypes.bpchar.opt(), unsaved.productline), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.bpchar.opt(), unsaved.`class`), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.bpchar.opt(), unsaved.style), Fragment.lit("::bpchar, "), Fragment.encode(ProductsubcategoryId.pgType.opt(), unsaved.productsubcategoryid), Fragment.lit("::int4, "), Fragment.encode(ProductmodelId.pgType.opt(), unsaved.productmodelid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.timestamp, unsaved.sellstartdate), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamp.opt(), unsaved.sellenddate), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamp.opt(), unsaved.discontinueddate), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) on conflict ("productid") do update set "name" = EXCLUDED."name", diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/product/ProductRow.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/product/ProductRow.scala index 14684885a5..4aba4d8fdf 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/product/ProductRow.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/product/ProductRow.scala @@ -204,7 +204,7 @@ case class ProductRow( object ProductRow { val `_rowParser`: RowParser[ProductRow] = { - RowParsers.of(ProductId.dbType, Name.dbType, PgTypes.text, Flag.dbType, Flag.dbType, PgTypes.text.opt(), PgTypes.int2, PgTypes.int2, PgTypes.numeric, PgTypes.numeric, PgTypes.text.opt(), UnitmeasureId.dbType.opt(), UnitmeasureId.dbType.opt(), PgTypes.numeric.opt(), PgTypes.int4, PgTypes.bpchar.opt(), PgTypes.bpchar.opt(), PgTypes.bpchar.opt(), ProductsubcategoryId.dbType.opt(), ProductmodelId.dbType.opt(), PgTypes.timestamp, PgTypes.timestamp.opt(), PgTypes.timestamp.opt(), PgTypes.uuid, PgTypes.timestamp, new Function25[ProductId, Name, String, Flag, Flag, Optional[/* max 15 chars */ String], java.lang.Short, java.lang.Short, java.math.BigDecimal, java.math.BigDecimal, Optional[/* max 5 chars */ String], Optional[UnitmeasureId], Optional[UnitmeasureId], Optional[java.math.BigDecimal], Integer, Optional[/* bpchar, max 2 chars */ String], Optional[/* bpchar, max 2 chars */ String], Optional[/* bpchar, max 2 chars */ String], Optional[ProductsubcategoryId], Optional[ProductmodelId], LocalDateTime, Optional[LocalDateTime], Optional[LocalDateTime], UUID, LocalDateTime, ProductRow] { + RowParsers.of(ProductId.pgType, Name.pgType, PgTypes.text, Flag.pgType, Flag.pgType, PgTypes.text.opt(), PgTypes.int2, PgTypes.int2, PgTypes.numeric, PgTypes.numeric, PgTypes.text.opt(), UnitmeasureId.pgType.opt(), UnitmeasureId.pgType.opt(), PgTypes.numeric.opt(), PgTypes.int4, PgTypes.bpchar.opt(), PgTypes.bpchar.opt(), PgTypes.bpchar.opt(), ProductsubcategoryId.pgType.opt(), ProductmodelId.pgType.opt(), PgTypes.timestamp, PgTypes.timestamp.opt(), PgTypes.timestamp.opt(), PgTypes.uuid, PgTypes.timestamp, new Function25[ProductId, Name, String, Flag, Flag, Optional[/* max 15 chars */ String], java.lang.Short, java.lang.Short, java.math.BigDecimal, java.math.BigDecimal, Optional[/* max 5 chars */ String], Optional[UnitmeasureId], Optional[UnitmeasureId], Optional[java.math.BigDecimal], Integer, Optional[/* bpchar, max 2 chars */ String], Optional[/* bpchar, max 2 chars */ String], Optional[/* bpchar, max 2 chars */ String], Optional[ProductsubcategoryId], Optional[ProductmodelId], LocalDateTime, Optional[LocalDateTime], Optional[LocalDateTime], UUID, LocalDateTime, ProductRow] { override def apply( t0: ProductId, t1: Name, diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/product/ProductRowUnsaved.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/product/ProductRowUnsaved.scala index 4450254d96..fdbd714389 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/product/ProductRowUnsaved.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/product/ProductRowUnsaved.scala @@ -145,5 +145,5 @@ case class ProductRowUnsaved( } object ProductRowUnsaved { - given pgText: PgText[ProductRowUnsaved] = PgText.instance((row, sb) => { Name.dbType.text.unsafeEncode(row.name, sb); sb.append(PgText.DELIMETER); PgTypes.text.text.unsafeEncode(row.productnumber, sb); sb.append(PgText.DELIMETER); PgTypes.text.opt().text.unsafeEncode(row.color, sb); sb.append(PgText.DELIMETER); PgTypes.int2.text.unsafeEncode(row.safetystocklevel, sb); sb.append(PgText.DELIMETER); PgTypes.int2.text.unsafeEncode(row.reorderpoint, sb); sb.append(PgText.DELIMETER); PgTypes.numeric.text.unsafeEncode(row.standardcost, sb); sb.append(PgText.DELIMETER); PgTypes.numeric.text.unsafeEncode(row.listprice, sb); sb.append(PgText.DELIMETER); PgTypes.text.opt().text.unsafeEncode(row.size, sb); sb.append(PgText.DELIMETER); UnitmeasureId.dbType.opt().text.unsafeEncode(row.sizeunitmeasurecode, sb); sb.append(PgText.DELIMETER); UnitmeasureId.dbType.opt().text.unsafeEncode(row.weightunitmeasurecode, sb); sb.append(PgText.DELIMETER); PgTypes.numeric.opt().text.unsafeEncode(row.weight, sb); sb.append(PgText.DELIMETER); PgTypes.int4.text.unsafeEncode(row.daystomanufacture, sb); sb.append(PgText.DELIMETER); PgTypes.bpchar.opt().text.unsafeEncode(row.productline, sb); sb.append(PgText.DELIMETER); PgTypes.bpchar.opt().text.unsafeEncode(row.`class`, sb); sb.append(PgText.DELIMETER); PgTypes.bpchar.opt().text.unsafeEncode(row.style, sb); sb.append(PgText.DELIMETER); ProductsubcategoryId.dbType.opt().text.unsafeEncode(row.productsubcategoryid, sb); sb.append(PgText.DELIMETER); ProductmodelId.dbType.opt().text.unsafeEncode(row.productmodelid, sb); sb.append(PgText.DELIMETER); PgTypes.timestamp.text.unsafeEncode(row.sellstartdate, sb); sb.append(PgText.DELIMETER); PgTypes.timestamp.opt().text.unsafeEncode(row.sellenddate, sb); sb.append(PgText.DELIMETER); PgTypes.timestamp.opt().text.unsafeEncode(row.discontinueddate, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using ProductId.dbType.text).unsafeEncode(row.productid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using Flag.dbType.text).unsafeEncode(row.makeflag, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using Flag.dbType.text).unsafeEncode(row.finishedgoodsflag, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.uuid.text).unsafeEncode(row.rowguid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) + given pgText: PgText[ProductRowUnsaved] = PgText.instance((row, sb) => { Name.pgType.text.unsafeEncode(row.name, sb); sb.append(PgText.DELIMETER); PgTypes.text.text.unsafeEncode(row.productnumber, sb); sb.append(PgText.DELIMETER); PgTypes.text.opt().text.unsafeEncode(row.color, sb); sb.append(PgText.DELIMETER); PgTypes.int2.text.unsafeEncode(row.safetystocklevel, sb); sb.append(PgText.DELIMETER); PgTypes.int2.text.unsafeEncode(row.reorderpoint, sb); sb.append(PgText.DELIMETER); PgTypes.numeric.text.unsafeEncode(row.standardcost, sb); sb.append(PgText.DELIMETER); PgTypes.numeric.text.unsafeEncode(row.listprice, sb); sb.append(PgText.DELIMETER); PgTypes.text.opt().text.unsafeEncode(row.size, sb); sb.append(PgText.DELIMETER); UnitmeasureId.pgType.opt().text.unsafeEncode(row.sizeunitmeasurecode, sb); sb.append(PgText.DELIMETER); UnitmeasureId.pgType.opt().text.unsafeEncode(row.weightunitmeasurecode, sb); sb.append(PgText.DELIMETER); PgTypes.numeric.opt().text.unsafeEncode(row.weight, sb); sb.append(PgText.DELIMETER); PgTypes.int4.text.unsafeEncode(row.daystomanufacture, sb); sb.append(PgText.DELIMETER); PgTypes.bpchar.opt().text.unsafeEncode(row.productline, sb); sb.append(PgText.DELIMETER); PgTypes.bpchar.opt().text.unsafeEncode(row.`class`, sb); sb.append(PgText.DELIMETER); PgTypes.bpchar.opt().text.unsafeEncode(row.style, sb); sb.append(PgText.DELIMETER); ProductsubcategoryId.pgType.opt().text.unsafeEncode(row.productsubcategoryid, sb); sb.append(PgText.DELIMETER); ProductmodelId.pgType.opt().text.unsafeEncode(row.productmodelid, sb); sb.append(PgText.DELIMETER); PgTypes.timestamp.text.unsafeEncode(row.sellstartdate, sb); sb.append(PgText.DELIMETER); PgTypes.timestamp.opt().text.unsafeEncode(row.sellenddate, sb); sb.append(PgText.DELIMETER); PgTypes.timestamp.opt().text.unsafeEncode(row.discontinueddate, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using ProductId.pgType.text).unsafeEncode(row.productid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using Flag.pgType.text).unsafeEncode(row.makeflag, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using Flag.pgType.text).unsafeEncode(row.finishedgoodsflag, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.uuid.text).unsafeEncode(row.rowguid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryFields.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryFields.scala index b85bbdf301..4bc89dfe4e 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryFields.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryFields.scala @@ -29,7 +29,7 @@ class ProductcategoryFields(val `_path`: java.util.List[Path]) extends TupleExpr Optional.empty(), Optional.of("int4"), (row, value) => row.copy(productcategoryid = value), - ProductcategoryId.dbType + ProductcategoryId.pgType ) } @@ -41,7 +41,7 @@ class ProductcategoryFields(val `_path`: java.util.List[Path]) extends TupleExpr Optional.empty(), Optional.of("varchar"), (row, value) => row.copy(name = value), - Name.dbType + Name.pgType ) } diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryId.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryId.scala index 74d480ecbc..3d77440716 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryId.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryId.scala @@ -16,7 +16,7 @@ case class ProductcategoryId(@JsonValue value: Integer) extends scala.AnyVal object ProductcategoryId { given bijection: Bijection[ProductcategoryId, Integer] = Bijection.apply[ProductcategoryId, Integer](_.value)(ProductcategoryId.apply) - given dbType: PgType[ProductcategoryId] = PgTypes.int4.bimap(ProductcategoryId.apply, _.value) + given pgType: PgType[ProductcategoryId] = PgTypes.int4.bimap(ProductcategoryId.apply, _.value) - given dbTypeArray: PgType[Array[ProductcategoryId]] = PgTypes.int4Array.bimap(xs => xs.map(ProductcategoryId.apply), xs => xs.map(_.value)) + given pgTypeArray: PgType[Array[ProductcategoryId]] = PgTypes.int4Array.bimap(xs => xs.map(ProductcategoryId.apply), xs => xs.map(_.value)) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRepoImpl.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRepoImpl.scala index ce6f6986e3..2664f7e1e9 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRepoImpl.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRepoImpl.scala @@ -22,19 +22,19 @@ import dev.typr.foundations.Fragment.interpolate class ProductcategoryRepoImpl extends ProductcategoryRepo { override def delete: DeleteBuilder[ProductcategoryFields, ProductcategoryRow] = DeleteBuilder.of(""""production"."productcategory"""", ProductcategoryFields.structure, Dialect.POSTGRESQL) - override def deleteById(productcategoryid: ProductcategoryId)(using c: Connection): java.lang.Boolean = interpolate(Fragment.lit("""delete from "production"."productcategory" where "productcategoryid" = """), Fragment.encode(ProductcategoryId.dbType, productcategoryid), Fragment.lit("")).update().runUnchecked(c) > 0 + override def deleteById(productcategoryid: ProductcategoryId)(using c: Connection): java.lang.Boolean = interpolate(Fragment.lit("""delete from "production"."productcategory" where "productcategoryid" = """), Fragment.encode(ProductcategoryId.pgType, productcategoryid), Fragment.lit("")).update().runUnchecked(c) > 0 override def deleteByIds(productcategoryids: Array[ProductcategoryId])(using c: Connection): Integer = { interpolate(Fragment.lit("""delete from "production"."productcategory" - where "productcategoryid" = ANY("""), Fragment.encode(ProductcategoryId.dbTypeArray, productcategoryids), Fragment.lit(")")) + where "productcategoryid" = ANY("""), Fragment.encode(ProductcategoryId.pgTypeArray, productcategoryids), Fragment.lit(")")) .update() .runUnchecked(c) } override def insert(unsaved: ProductcategoryRow)(using c: Connection): ProductcategoryRow = { interpolate(Fragment.lit("""insert into "production"."productcategory"("productcategoryid", "name", "rowguid", "modifieddate") - values ("""), Fragment.encode(ProductcategoryId.dbType, unsaved.productcategoryid), Fragment.lit("::int4, "), Fragment.encode(Name.dbType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) + values ("""), Fragment.encode(ProductcategoryId.pgType, unsaved.productcategoryid), Fragment.lit("::int4, "), Fragment.encode(Name.pgType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) RETURNING "productcategoryid", "name", "rowguid", "modifieddate" """)) .updateReturning(ProductcategoryRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -44,10 +44,10 @@ class ProductcategoryRepoImpl extends ProductcategoryRepo { val columns: ArrayList[Fragment] = new ArrayList() val values: ArrayList[Fragment] = new ArrayList() columns.add(Fragment.lit(""""name"""")): @scala.annotation.nowarn - values.add(interpolate(Fragment.encode(Name.dbType, unsaved.name), Fragment.lit("::varchar"))): @scala.annotation.nowarn + values.add(interpolate(Fragment.encode(Name.pgType, unsaved.name), Fragment.lit("::varchar"))): @scala.annotation.nowarn unsaved.productcategoryid.visit( { }, - value => { columns.add(Fragment.lit(""""productcategoryid"""")): @scala.annotation.nowarn; values.add(interpolate(Fragment.encode(ProductcategoryId.dbType, value), Fragment.lit("::int4"))): @scala.annotation.nowarn } + value => { columns.add(Fragment.lit(""""productcategoryid"""")): @scala.annotation.nowarn; values.add(interpolate(Fragment.encode(ProductcategoryId.pgType, value), Fragment.lit("::int4"))): @scala.annotation.nowarn } ); unsaved.rowguid.visit( { }, @@ -88,13 +88,13 @@ class ProductcategoryRepoImpl extends ProductcategoryRepo { override def selectById(productcategoryid: ProductcategoryId)(using c: Connection): Optional[ProductcategoryRow] = { interpolate(Fragment.lit("""select "productcategoryid", "name", "rowguid", "modifieddate" from "production"."productcategory" - where "productcategoryid" = """), Fragment.encode(ProductcategoryId.dbType, productcategoryid), Fragment.lit("")).query(ProductcategoryRow.`_rowParser`.first()).runUnchecked(c) + where "productcategoryid" = """), Fragment.encode(ProductcategoryId.pgType, productcategoryid), Fragment.lit("")).query(ProductcategoryRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(productcategoryids: Array[ProductcategoryId])(using c: Connection): java.util.List[ProductcategoryRow] = { interpolate(Fragment.lit("""select "productcategoryid", "name", "rowguid", "modifieddate" from "production"."productcategory" - where "productcategoryid" = ANY("""), Fragment.encode(ProductcategoryId.dbTypeArray, productcategoryids), Fragment.lit(")")).query(ProductcategoryRow.`_rowParser`.all()).runUnchecked(c) + where "productcategoryid" = ANY("""), Fragment.encode(ProductcategoryId.pgTypeArray, productcategoryids), Fragment.lit(")")).query(ProductcategoryRow.`_rowParser`.all()).runUnchecked(c) } override def selectByIdsTracked(productcategoryids: Array[ProductcategoryId])(using c: Connection): java.util.Map[ProductcategoryId, ProductcategoryRow] = { @@ -108,15 +108,15 @@ class ProductcategoryRepoImpl extends ProductcategoryRepo { override def update(row: ProductcategoryRow)(using c: Connection): java.lang.Boolean = { val productcategoryid: ProductcategoryId = row.productcategoryid return interpolate(Fragment.lit("""update "production"."productcategory" - set "name" = """), Fragment.encode(Name.dbType, row.name), Fragment.lit("""::varchar, + set "name" = """), Fragment.encode(Name.pgType, row.name), Fragment.lit("""::varchar, "rowguid" = """), Fragment.encode(PgTypes.uuid, row.rowguid), Fragment.lit("""::uuid, "modifieddate" = """), Fragment.encode(PgTypes.timestamp, row.modifieddate), Fragment.lit("""::timestamp - where "productcategoryid" = """), Fragment.encode(ProductcategoryId.dbType, productcategoryid), Fragment.lit("")).update().runUnchecked(c) > 0 + where "productcategoryid" = """), Fragment.encode(ProductcategoryId.pgType, productcategoryid), Fragment.lit("")).update().runUnchecked(c) > 0 } override def upsert(unsaved: ProductcategoryRow)(using c: Connection): ProductcategoryRow = { interpolate(Fragment.lit("""insert into "production"."productcategory"("productcategoryid", "name", "rowguid", "modifieddate") - values ("""), Fragment.encode(ProductcategoryId.dbType, unsaved.productcategoryid), Fragment.lit("::int4, "), Fragment.encode(Name.dbType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) + values ("""), Fragment.encode(ProductcategoryId.pgType, unsaved.productcategoryid), Fragment.lit("::int4, "), Fragment.encode(Name.pgType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) on conflict ("productcategoryid") do update set "name" = EXCLUDED."name", diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRow.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRow.scala index 5798503b10..cd7cd458d6 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRow.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRow.scala @@ -56,7 +56,7 @@ case class ProductcategoryRow( } object ProductcategoryRow { - val `_rowParser`: RowParser[ProductcategoryRow] = RowParsers.of(ProductcategoryId.dbType, Name.dbType, PgTypes.uuid, PgTypes.timestamp, ProductcategoryRow.apply, row => Array[Any](row.productcategoryid, row.name, row.rowguid, row.modifieddate)) + val `_rowParser`: RowParser[ProductcategoryRow] = RowParsers.of(ProductcategoryId.pgType, Name.pgType, PgTypes.uuid, PgTypes.timestamp, ProductcategoryRow.apply, row => Array[Any](row.productcategoryid, row.name, row.rowguid, row.modifieddate)) given pgText: PgText[ProductcategoryRow] = PgText.from(`_rowParser`) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRowUnsaved.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRowUnsaved.scala index c3be642029..2011035dcb 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRowUnsaved.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRowUnsaved.scala @@ -41,5 +41,5 @@ case class ProductcategoryRowUnsaved( } object ProductcategoryRowUnsaved { - given pgText: PgText[ProductcategoryRowUnsaved] = PgText.instance((row, sb) => { Name.dbType.text.unsafeEncode(row.name, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using ProductcategoryId.dbType.text).unsafeEncode(row.productcategoryid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.uuid.text).unsafeEncode(row.rowguid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) + given pgText: PgText[ProductcategoryRowUnsaved] = PgText.instance((row, sb) => { Name.pgType.text.unsafeEncode(row.name, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using ProductcategoryId.pgType.text).unsafeEncode(row.productcategoryid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.uuid.text).unsafeEncode(row.rowguid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryFields.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryFields.scala index 173b36b09b..e1213c4abe 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryFields.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryFields.scala @@ -33,7 +33,7 @@ class ProductcosthistoryFields(val `_path`: java.util.List[Path]) extends TupleE Optional.empty(), Optional.of("int4"), (row, value) => row.copy(productid = value), - ProductId.dbType + ProductId.pgType ) } diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryId.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryId.scala index ca5fe91cf6..9890990d5d 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryId.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryId.scala @@ -23,5 +23,5 @@ case class ProductcosthistoryId( } object ProductcosthistoryId { - val `_rowParser`: RowParser[ProductcosthistoryId] = RowParsers.of(ProductId.dbType, PgTypes.timestamp, ProductcosthistoryId.apply, row => Array[Any](row.productid, row.startdate)) + val `_rowParser`: RowParser[ProductcosthistoryId] = RowParsers.of(ProductId.pgType, PgTypes.timestamp, ProductcosthistoryId.apply, row => Array[Any](row.productid, row.startdate)) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRepoImpl.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRepoImpl.scala index 91d9598fc6..b28e039907 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRepoImpl.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRepoImpl.scala @@ -23,7 +23,7 @@ import dev.typr.foundations.Fragment.interpolate class ProductcosthistoryRepoImpl extends ProductcosthistoryRepo { override def delete: DeleteBuilder[ProductcosthistoryFields, ProductcosthistoryRow] = DeleteBuilder.of(""""production"."productcosthistory"""", ProductcosthistoryFields.structure, Dialect.POSTGRESQL) - override def deleteById(compositeId: ProductcosthistoryId)(using c: Connection): java.lang.Boolean = interpolate(Fragment.lit("""delete from "production"."productcosthistory" where "productid" = """), Fragment.encode(ProductId.dbType, compositeId.productid), Fragment.lit(""" AND "startdate" = """), Fragment.encode(PgTypes.timestamp, compositeId.startdate), Fragment.lit("")).update().runUnchecked(c) > 0 + override def deleteById(compositeId: ProductcosthistoryId)(using c: Connection): java.lang.Boolean = interpolate(Fragment.lit("""delete from "production"."productcosthistory" where "productid" = """), Fragment.encode(ProductId.pgType, compositeId.productid), Fragment.lit(""" AND "startdate" = """), Fragment.encode(PgTypes.timestamp, compositeId.startdate), Fragment.lit("")).update().runUnchecked(c) > 0 override def deleteByIds(compositeIds: Array[ProductcosthistoryId])(using c: Connection): Integer = { val productid: Array[ProductId] = compositeIds.map(_.productid) @@ -31,13 +31,13 @@ class ProductcosthistoryRepoImpl extends ProductcosthistoryRepo { return interpolate(Fragment.lit("""delete from "production"."productcosthistory" where ("productid", "startdate") - in (select * from unnest("""), Fragment.encode(ProductId.dbTypeArray, productid), Fragment.lit(", "), Fragment.encode(PgTypes.timestampArray, startdate), Fragment.lit(""")) + in (select * from unnest("""), Fragment.encode(ProductId.pgTypeArray, productid), Fragment.lit(", "), Fragment.encode(PgTypes.timestampArray, startdate), Fragment.lit(""")) """)).update().runUnchecked(c) } override def insert(unsaved: ProductcosthistoryRow)(using c: Connection): ProductcosthistoryRow = { interpolate(Fragment.lit("""insert into "production"."productcosthistory"("productid", "startdate", "enddate", "standardcost", "modifieddate") - values ("""), Fragment.encode(ProductId.dbType, unsaved.productid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.timestamp, unsaved.startdate), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamp.opt(), unsaved.enddate), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.numeric, unsaved.standardcost), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) + values ("""), Fragment.encode(ProductId.pgType, unsaved.productid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.timestamp, unsaved.startdate), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamp.opt(), unsaved.enddate), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.numeric, unsaved.standardcost), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) RETURNING "productid", "startdate", "enddate", "standardcost", "modifieddate" """)) .updateReturning(ProductcosthistoryRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -47,7 +47,7 @@ class ProductcosthistoryRepoImpl extends ProductcosthistoryRepo { val columns: ArrayList[Fragment] = new ArrayList() val values: ArrayList[Fragment] = new ArrayList() columns.add(Fragment.lit(""""productid"""")): @scala.annotation.nowarn - values.add(interpolate(Fragment.encode(ProductId.dbType, unsaved.productid), Fragment.lit("::int4"))): @scala.annotation.nowarn + values.add(interpolate(Fragment.encode(ProductId.pgType, unsaved.productid), Fragment.lit("::int4"))): @scala.annotation.nowarn columns.add(Fragment.lit(""""startdate"""")): @scala.annotation.nowarn values.add(interpolate(Fragment.encode(PgTypes.timestamp, unsaved.startdate), Fragment.lit("::timestamp"))): @scala.annotation.nowarn columns.add(Fragment.lit(""""enddate"""")): @scala.annotation.nowarn @@ -89,7 +89,7 @@ class ProductcosthistoryRepoImpl extends ProductcosthistoryRepo { override def selectById(compositeId: ProductcosthistoryId)(using c: Connection): Optional[ProductcosthistoryRow] = { interpolate(Fragment.lit("""select "productid", "startdate", "enddate", "standardcost", "modifieddate" from "production"."productcosthistory" - where "productid" = """), Fragment.encode(ProductId.dbType, compositeId.productid), Fragment.lit(""" AND "startdate" = """), Fragment.encode(PgTypes.timestamp, compositeId.startdate), Fragment.lit("")).query(ProductcosthistoryRow.`_rowParser`.first()).runUnchecked(c) + where "productid" = """), Fragment.encode(ProductId.pgType, compositeId.productid), Fragment.lit(""" AND "startdate" = """), Fragment.encode(PgTypes.timestamp, compositeId.startdate), Fragment.lit("")).query(ProductcosthistoryRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(compositeIds: Array[ProductcosthistoryId])(using c: Connection): java.util.List[ProductcosthistoryRow] = { @@ -98,7 +98,7 @@ class ProductcosthistoryRepoImpl extends ProductcosthistoryRepo { return interpolate(Fragment.lit("""select "productid", "startdate", "enddate", "standardcost", "modifieddate" from "production"."productcosthistory" where ("productid", "startdate") - in (select * from unnest("""), Fragment.encode(ProductId.dbTypeArray, productid), Fragment.lit(", "), Fragment.encode(PgTypes.timestampArray, startdate), Fragment.lit(""")) + in (select * from unnest("""), Fragment.encode(ProductId.pgTypeArray, productid), Fragment.lit(", "), Fragment.encode(PgTypes.timestampArray, startdate), Fragment.lit(""")) """)).query(ProductcosthistoryRow.`_rowParser`.all()).runUnchecked(c) } @@ -116,12 +116,12 @@ class ProductcosthistoryRepoImpl extends ProductcosthistoryRepo { set "enddate" = """), Fragment.encode(PgTypes.timestamp.opt(), row.enddate), Fragment.lit("""::timestamp, "standardcost" = """), Fragment.encode(PgTypes.numeric, row.standardcost), Fragment.lit("""::numeric, "modifieddate" = """), Fragment.encode(PgTypes.timestamp, row.modifieddate), Fragment.lit("""::timestamp - where "productid" = """), Fragment.encode(ProductId.dbType, compositeId.productid), Fragment.lit(""" AND "startdate" = """), Fragment.encode(PgTypes.timestamp, compositeId.startdate), Fragment.lit("")).update().runUnchecked(c) > 0 + where "productid" = """), Fragment.encode(ProductId.pgType, compositeId.productid), Fragment.lit(""" AND "startdate" = """), Fragment.encode(PgTypes.timestamp, compositeId.startdate), Fragment.lit("")).update().runUnchecked(c) > 0 } override def upsert(unsaved: ProductcosthistoryRow)(using c: Connection): ProductcosthistoryRow = { interpolate(Fragment.lit("""insert into "production"."productcosthistory"("productid", "startdate", "enddate", "standardcost", "modifieddate") - values ("""), Fragment.encode(ProductId.dbType, unsaved.productid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.timestamp, unsaved.startdate), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamp.opt(), unsaved.enddate), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.numeric, unsaved.standardcost), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) + values ("""), Fragment.encode(ProductId.pgType, unsaved.productid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.timestamp, unsaved.startdate), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamp.opt(), unsaved.enddate), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.numeric, unsaved.standardcost), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) on conflict ("productid", "startdate") do update set "enddate" = EXCLUDED."enddate", diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRow.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRow.scala index 3c2ae6b1b3..6c9f132788 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRow.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRow.scala @@ -65,7 +65,7 @@ case class ProductcosthistoryRow( } object ProductcosthistoryRow { - val `_rowParser`: RowParser[ProductcosthistoryRow] = RowParsers.of(ProductId.dbType, PgTypes.timestamp, PgTypes.timestamp.opt(), PgTypes.numeric, PgTypes.timestamp, ProductcosthistoryRow.apply, row => Array[Any](row.productid, row.startdate, row.enddate, row.standardcost, row.modifieddate)) + val `_rowParser`: RowParser[ProductcosthistoryRow] = RowParsers.of(ProductId.pgType, PgTypes.timestamp, PgTypes.timestamp.opt(), PgTypes.numeric, PgTypes.timestamp, ProductcosthistoryRow.apply, row => Array[Any](row.productid, row.startdate, row.enddate, row.standardcost, row.modifieddate)) def apply( compositeId: ProductcosthistoryId, diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRowUnsaved.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRowUnsaved.scala index ca9d326b52..0ccdbd112a 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRowUnsaved.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRowUnsaved.scala @@ -46,5 +46,5 @@ case class ProductcosthistoryRowUnsaved( } object ProductcosthistoryRowUnsaved { - given pgText: PgText[ProductcosthistoryRowUnsaved] = PgText.instance((row, sb) => { ProductId.dbType.text.unsafeEncode(row.productid, sb); sb.append(PgText.DELIMETER); PgTypes.timestamp.text.unsafeEncode(row.startdate, sb); sb.append(PgText.DELIMETER); PgTypes.timestamp.opt().text.unsafeEncode(row.enddate, sb); sb.append(PgText.DELIMETER); PgTypes.numeric.text.unsafeEncode(row.standardcost, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) + given pgText: PgText[ProductcosthistoryRowUnsaved] = PgText.instance((row, sb) => { ProductId.pgType.text.unsafeEncode(row.productid, sb); sb.append(PgText.DELIMETER); PgTypes.timestamp.text.unsafeEncode(row.startdate, sb); sb.append(PgText.DELIMETER); PgTypes.timestamp.opt().text.unsafeEncode(row.enddate, sb); sb.append(PgText.DELIMETER); PgTypes.numeric.text.unsafeEncode(row.standardcost, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelFields.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelFields.scala index de5dbb544d..419eb8f548 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelFields.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelFields.scala @@ -31,7 +31,7 @@ class ProductmodelFields(val `_path`: java.util.List[Path]) extends TupleExpr6[P Optional.empty(), Optional.of("int4"), (row, value) => row.copy(productmodelid = value), - ProductmodelId.dbType + ProductmodelId.pgType ) } @@ -43,7 +43,7 @@ class ProductmodelFields(val `_path`: java.util.List[Path]) extends TupleExpr6[P Optional.empty(), Optional.of("varchar"), (row, value) => row.copy(name = value), - Name.dbType + Name.pgType ) } diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelId.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelId.scala index 2b09e10e85..de0588b731 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelId.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelId.scala @@ -16,7 +16,7 @@ case class ProductmodelId(@JsonValue value: Integer) extends scala.AnyVal object ProductmodelId { given bijection: Bijection[ProductmodelId, Integer] = Bijection.apply[ProductmodelId, Integer](_.value)(ProductmodelId.apply) - given dbType: PgType[ProductmodelId] = PgTypes.int4.bimap(ProductmodelId.apply, _.value) + given pgType: PgType[ProductmodelId] = PgTypes.int4.bimap(ProductmodelId.apply, _.value) - given dbTypeArray: PgType[Array[ProductmodelId]] = PgTypes.int4Array.bimap(xs => xs.map(ProductmodelId.apply), xs => xs.map(_.value)) + given pgTypeArray: PgType[Array[ProductmodelId]] = PgTypes.int4Array.bimap(xs => xs.map(ProductmodelId.apply), xs => xs.map(_.value)) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRepoImpl.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRepoImpl.scala index 90538250e4..8558fd97b5 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRepoImpl.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRepoImpl.scala @@ -22,19 +22,19 @@ import dev.typr.foundations.Fragment.interpolate class ProductmodelRepoImpl extends ProductmodelRepo { override def delete: DeleteBuilder[ProductmodelFields, ProductmodelRow] = DeleteBuilder.of(""""production"."productmodel"""", ProductmodelFields.structure, Dialect.POSTGRESQL) - override def deleteById(productmodelid: ProductmodelId)(using c: Connection): java.lang.Boolean = interpolate(Fragment.lit("""delete from "production"."productmodel" where "productmodelid" = """), Fragment.encode(ProductmodelId.dbType, productmodelid), Fragment.lit("")).update().runUnchecked(c) > 0 + override def deleteById(productmodelid: ProductmodelId)(using c: Connection): java.lang.Boolean = interpolate(Fragment.lit("""delete from "production"."productmodel" where "productmodelid" = """), Fragment.encode(ProductmodelId.pgType, productmodelid), Fragment.lit("")).update().runUnchecked(c) > 0 override def deleteByIds(productmodelids: Array[ProductmodelId])(using c: Connection): Integer = { interpolate(Fragment.lit("""delete from "production"."productmodel" - where "productmodelid" = ANY("""), Fragment.encode(ProductmodelId.dbTypeArray, productmodelids), Fragment.lit(")")) + where "productmodelid" = ANY("""), Fragment.encode(ProductmodelId.pgTypeArray, productmodelids), Fragment.lit(")")) .update() .runUnchecked(c) } override def insert(unsaved: ProductmodelRow)(using c: Connection): ProductmodelRow = { interpolate(Fragment.lit("""insert into "production"."productmodel"("productmodelid", "name", "catalogdescription", "instructions", "rowguid", "modifieddate") - values ("""), Fragment.encode(ProductmodelId.dbType, unsaved.productmodelid), Fragment.lit("::int4, "), Fragment.encode(Name.dbType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.xml.opt(), unsaved.catalogdescription), Fragment.lit("::xml, "), Fragment.encode(PgTypes.xml.opt(), unsaved.instructions), Fragment.lit("::xml, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) + values ("""), Fragment.encode(ProductmodelId.pgType, unsaved.productmodelid), Fragment.lit("::int4, "), Fragment.encode(Name.pgType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.xml.opt(), unsaved.catalogdescription), Fragment.lit("::xml, "), Fragment.encode(PgTypes.xml.opt(), unsaved.instructions), Fragment.lit("::xml, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) RETURNING "productmodelid", "name", "catalogdescription", "instructions", "rowguid", "modifieddate" """)) .updateReturning(ProductmodelRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -44,14 +44,14 @@ class ProductmodelRepoImpl extends ProductmodelRepo { val columns: ArrayList[Fragment] = new ArrayList() val values: ArrayList[Fragment] = new ArrayList() columns.add(Fragment.lit(""""name"""")): @scala.annotation.nowarn - values.add(interpolate(Fragment.encode(Name.dbType, unsaved.name), Fragment.lit("::varchar"))): @scala.annotation.nowarn + values.add(interpolate(Fragment.encode(Name.pgType, unsaved.name), Fragment.lit("::varchar"))): @scala.annotation.nowarn columns.add(Fragment.lit(""""catalogdescription"""")): @scala.annotation.nowarn values.add(interpolate(Fragment.encode(PgTypes.xml.opt(), unsaved.catalogdescription), Fragment.lit("::xml"))): @scala.annotation.nowarn columns.add(Fragment.lit(""""instructions"""")): @scala.annotation.nowarn values.add(interpolate(Fragment.encode(PgTypes.xml.opt(), unsaved.instructions), Fragment.lit("::xml"))): @scala.annotation.nowarn unsaved.productmodelid.visit( { }, - value => { columns.add(Fragment.lit(""""productmodelid"""")): @scala.annotation.nowarn; values.add(interpolate(Fragment.encode(ProductmodelId.dbType, value), Fragment.lit("::int4"))): @scala.annotation.nowarn } + value => { columns.add(Fragment.lit(""""productmodelid"""")): @scala.annotation.nowarn; values.add(interpolate(Fragment.encode(ProductmodelId.pgType, value), Fragment.lit("::int4"))): @scala.annotation.nowarn } ); unsaved.rowguid.visit( { }, @@ -92,13 +92,13 @@ class ProductmodelRepoImpl extends ProductmodelRepo { override def selectById(productmodelid: ProductmodelId)(using c: Connection): Optional[ProductmodelRow] = { interpolate(Fragment.lit("""select "productmodelid", "name", "catalogdescription", "instructions", "rowguid", "modifieddate" from "production"."productmodel" - where "productmodelid" = """), Fragment.encode(ProductmodelId.dbType, productmodelid), Fragment.lit("")).query(ProductmodelRow.`_rowParser`.first()).runUnchecked(c) + where "productmodelid" = """), Fragment.encode(ProductmodelId.pgType, productmodelid), Fragment.lit("")).query(ProductmodelRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(productmodelids: Array[ProductmodelId])(using c: Connection): java.util.List[ProductmodelRow] = { interpolate(Fragment.lit("""select "productmodelid", "name", "catalogdescription", "instructions", "rowguid", "modifieddate" from "production"."productmodel" - where "productmodelid" = ANY("""), Fragment.encode(ProductmodelId.dbTypeArray, productmodelids), Fragment.lit(")")).query(ProductmodelRow.`_rowParser`.all()).runUnchecked(c) + where "productmodelid" = ANY("""), Fragment.encode(ProductmodelId.pgTypeArray, productmodelids), Fragment.lit(")")).query(ProductmodelRow.`_rowParser`.all()).runUnchecked(c) } override def selectByIdsTracked(productmodelids: Array[ProductmodelId])(using c: Connection): java.util.Map[ProductmodelId, ProductmodelRow] = { @@ -112,17 +112,17 @@ class ProductmodelRepoImpl extends ProductmodelRepo { override def update(row: ProductmodelRow)(using c: Connection): java.lang.Boolean = { val productmodelid: ProductmodelId = row.productmodelid return interpolate(Fragment.lit("""update "production"."productmodel" - set "name" = """), Fragment.encode(Name.dbType, row.name), Fragment.lit("""::varchar, + set "name" = """), Fragment.encode(Name.pgType, row.name), Fragment.lit("""::varchar, "catalogdescription" = """), Fragment.encode(PgTypes.xml.opt(), row.catalogdescription), Fragment.lit("""::xml, "instructions" = """), Fragment.encode(PgTypes.xml.opt(), row.instructions), Fragment.lit("""::xml, "rowguid" = """), Fragment.encode(PgTypes.uuid, row.rowguid), Fragment.lit("""::uuid, "modifieddate" = """), Fragment.encode(PgTypes.timestamp, row.modifieddate), Fragment.lit("""::timestamp - where "productmodelid" = """), Fragment.encode(ProductmodelId.dbType, productmodelid), Fragment.lit("")).update().runUnchecked(c) > 0 + where "productmodelid" = """), Fragment.encode(ProductmodelId.pgType, productmodelid), Fragment.lit("")).update().runUnchecked(c) > 0 } override def upsert(unsaved: ProductmodelRow)(using c: Connection): ProductmodelRow = { interpolate(Fragment.lit("""insert into "production"."productmodel"("productmodelid", "name", "catalogdescription", "instructions", "rowguid", "modifieddate") - values ("""), Fragment.encode(ProductmodelId.dbType, unsaved.productmodelid), Fragment.lit("::int4, "), Fragment.encode(Name.dbType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.xml.opt(), unsaved.catalogdescription), Fragment.lit("::xml, "), Fragment.encode(PgTypes.xml.opt(), unsaved.instructions), Fragment.lit("::xml, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) + values ("""), Fragment.encode(ProductmodelId.pgType, unsaved.productmodelid), Fragment.lit("::int4, "), Fragment.encode(Name.pgType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.xml.opt(), unsaved.catalogdescription), Fragment.lit("::xml, "), Fragment.encode(PgTypes.xml.opt(), unsaved.instructions), Fragment.lit("::xml, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) on conflict ("productmodelid") do update set "name" = EXCLUDED."name", diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRow.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRow.scala index 69f46b9255..780ee8bf72 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRow.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRow.scala @@ -68,7 +68,7 @@ case class ProductmodelRow( } object ProductmodelRow { - val `_rowParser`: RowParser[ProductmodelRow] = RowParsers.of(ProductmodelId.dbType, Name.dbType, PgTypes.xml.opt(), PgTypes.xml.opt(), PgTypes.uuid, PgTypes.timestamp, ProductmodelRow.apply, row => Array[Any](row.productmodelid, row.name, row.catalogdescription, row.instructions, row.rowguid, row.modifieddate)) + val `_rowParser`: RowParser[ProductmodelRow] = RowParsers.of(ProductmodelId.pgType, Name.pgType, PgTypes.xml.opt(), PgTypes.xml.opt(), PgTypes.uuid, PgTypes.timestamp, ProductmodelRow.apply, row => Array[Any](row.productmodelid, row.name, row.catalogdescription, row.instructions, row.rowguid, row.modifieddate)) given pgText: PgText[ProductmodelRow] = PgText.from(`_rowParser`) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRowUnsaved.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRowUnsaved.scala index 392370c904..253a88f5f6 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRowUnsaved.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRowUnsaved.scala @@ -49,5 +49,5 @@ case class ProductmodelRowUnsaved( } object ProductmodelRowUnsaved { - given pgText: PgText[ProductmodelRowUnsaved] = PgText.instance((row, sb) => { Name.dbType.text.unsafeEncode(row.name, sb); sb.append(PgText.DELIMETER); PgTypes.xml.opt().text.unsafeEncode(row.catalogdescription, sb); sb.append(PgText.DELIMETER); PgTypes.xml.opt().text.unsafeEncode(row.instructions, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using ProductmodelId.dbType.text).unsafeEncode(row.productmodelid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.uuid.text).unsafeEncode(row.rowguid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) + given pgText: PgText[ProductmodelRowUnsaved] = PgText.instance((row, sb) => { Name.pgType.text.unsafeEncode(row.name, sb); sb.append(PgText.DELIMETER); PgTypes.xml.opt().text.unsafeEncode(row.catalogdescription, sb); sb.append(PgText.DELIMETER); PgTypes.xml.opt().text.unsafeEncode(row.instructions, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using ProductmodelId.pgType.text).unsafeEncode(row.productmodelid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.uuid.text).unsafeEncode(row.rowguid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryFields.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryFields.scala index 272d5ba522..f95e9d486f 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryFields.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryFields.scala @@ -33,7 +33,7 @@ class ProductsubcategoryFields(val `_path`: java.util.List[Path]) extends TupleE Optional.empty(), Optional.of("int4"), (row, value) => row.copy(productsubcategoryid = value), - ProductsubcategoryId.dbType + ProductsubcategoryId.pgType ) } @@ -45,7 +45,7 @@ class ProductsubcategoryFields(val `_path`: java.util.List[Path]) extends TupleE Optional.empty(), Optional.of("int4"), (row, value) => row.copy(productcategoryid = value), - ProductcategoryId.dbType + ProductcategoryId.pgType ) } @@ -57,7 +57,7 @@ class ProductsubcategoryFields(val `_path`: java.util.List[Path]) extends TupleE Optional.empty(), Optional.of("varchar"), (row, value) => row.copy(name = value), - Name.dbType + Name.pgType ) } diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryId.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryId.scala index 49d2c4ddc4..d0a39978b9 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryId.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryId.scala @@ -16,7 +16,7 @@ case class ProductsubcategoryId(@JsonValue value: Integer) extends scala.AnyVal object ProductsubcategoryId { given bijection: Bijection[ProductsubcategoryId, Integer] = Bijection.apply[ProductsubcategoryId, Integer](_.value)(ProductsubcategoryId.apply) - given dbType: PgType[ProductsubcategoryId] = PgTypes.int4.bimap(ProductsubcategoryId.apply, _.value) + given pgType: PgType[ProductsubcategoryId] = PgTypes.int4.bimap(ProductsubcategoryId.apply, _.value) - given dbTypeArray: PgType[Array[ProductsubcategoryId]] = PgTypes.int4Array.bimap(xs => xs.map(ProductsubcategoryId.apply), xs => xs.map(_.value)) + given pgTypeArray: PgType[Array[ProductsubcategoryId]] = PgTypes.int4Array.bimap(xs => xs.map(ProductsubcategoryId.apply), xs => xs.map(_.value)) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRepoImpl.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRepoImpl.scala index 77eaf7294a..c2459d0026 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRepoImpl.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRepoImpl.scala @@ -23,19 +23,19 @@ import dev.typr.foundations.Fragment.interpolate class ProductsubcategoryRepoImpl extends ProductsubcategoryRepo { override def delete: DeleteBuilder[ProductsubcategoryFields, ProductsubcategoryRow] = DeleteBuilder.of(""""production"."productsubcategory"""", ProductsubcategoryFields.structure, Dialect.POSTGRESQL) - override def deleteById(productsubcategoryid: ProductsubcategoryId)(using c: Connection): java.lang.Boolean = interpolate(Fragment.lit("""delete from "production"."productsubcategory" where "productsubcategoryid" = """), Fragment.encode(ProductsubcategoryId.dbType, productsubcategoryid), Fragment.lit("")).update().runUnchecked(c) > 0 + override def deleteById(productsubcategoryid: ProductsubcategoryId)(using c: Connection): java.lang.Boolean = interpolate(Fragment.lit("""delete from "production"."productsubcategory" where "productsubcategoryid" = """), Fragment.encode(ProductsubcategoryId.pgType, productsubcategoryid), Fragment.lit("")).update().runUnchecked(c) > 0 override def deleteByIds(productsubcategoryids: Array[ProductsubcategoryId])(using c: Connection): Integer = { interpolate(Fragment.lit("""delete from "production"."productsubcategory" - where "productsubcategoryid" = ANY("""), Fragment.encode(ProductsubcategoryId.dbTypeArray, productsubcategoryids), Fragment.lit(")")) + where "productsubcategoryid" = ANY("""), Fragment.encode(ProductsubcategoryId.pgTypeArray, productsubcategoryids), Fragment.lit(")")) .update() .runUnchecked(c) } override def insert(unsaved: ProductsubcategoryRow)(using c: Connection): ProductsubcategoryRow = { interpolate(Fragment.lit("""insert into "production"."productsubcategory"("productsubcategoryid", "productcategoryid", "name", "rowguid", "modifieddate") - values ("""), Fragment.encode(ProductsubcategoryId.dbType, unsaved.productsubcategoryid), Fragment.lit("::int4, "), Fragment.encode(ProductcategoryId.dbType, unsaved.productcategoryid), Fragment.lit("::int4, "), Fragment.encode(Name.dbType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) + values ("""), Fragment.encode(ProductsubcategoryId.pgType, unsaved.productsubcategoryid), Fragment.lit("::int4, "), Fragment.encode(ProductcategoryId.pgType, unsaved.productcategoryid), Fragment.lit("::int4, "), Fragment.encode(Name.pgType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) RETURNING "productsubcategoryid", "productcategoryid", "name", "rowguid", "modifieddate" """)) .updateReturning(ProductsubcategoryRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -45,12 +45,12 @@ class ProductsubcategoryRepoImpl extends ProductsubcategoryRepo { val columns: ArrayList[Fragment] = new ArrayList() val values: ArrayList[Fragment] = new ArrayList() columns.add(Fragment.lit(""""productcategoryid"""")): @scala.annotation.nowarn - values.add(interpolate(Fragment.encode(ProductcategoryId.dbType, unsaved.productcategoryid), Fragment.lit("::int4"))): @scala.annotation.nowarn + values.add(interpolate(Fragment.encode(ProductcategoryId.pgType, unsaved.productcategoryid), Fragment.lit("::int4"))): @scala.annotation.nowarn columns.add(Fragment.lit(""""name"""")): @scala.annotation.nowarn - values.add(interpolate(Fragment.encode(Name.dbType, unsaved.name), Fragment.lit("::varchar"))): @scala.annotation.nowarn + values.add(interpolate(Fragment.encode(Name.pgType, unsaved.name), Fragment.lit("::varchar"))): @scala.annotation.nowarn unsaved.productsubcategoryid.visit( { }, - value => { columns.add(Fragment.lit(""""productsubcategoryid"""")): @scala.annotation.nowarn; values.add(interpolate(Fragment.encode(ProductsubcategoryId.dbType, value), Fragment.lit("::int4"))): @scala.annotation.nowarn } + value => { columns.add(Fragment.lit(""""productsubcategoryid"""")): @scala.annotation.nowarn; values.add(interpolate(Fragment.encode(ProductsubcategoryId.pgType, value), Fragment.lit("::int4"))): @scala.annotation.nowarn } ); unsaved.rowguid.visit( { }, @@ -91,13 +91,13 @@ class ProductsubcategoryRepoImpl extends ProductsubcategoryRepo { override def selectById(productsubcategoryid: ProductsubcategoryId)(using c: Connection): Optional[ProductsubcategoryRow] = { interpolate(Fragment.lit("""select "productsubcategoryid", "productcategoryid", "name", "rowguid", "modifieddate" from "production"."productsubcategory" - where "productsubcategoryid" = """), Fragment.encode(ProductsubcategoryId.dbType, productsubcategoryid), Fragment.lit("")).query(ProductsubcategoryRow.`_rowParser`.first()).runUnchecked(c) + where "productsubcategoryid" = """), Fragment.encode(ProductsubcategoryId.pgType, productsubcategoryid), Fragment.lit("")).query(ProductsubcategoryRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(productsubcategoryids: Array[ProductsubcategoryId])(using c: Connection): java.util.List[ProductsubcategoryRow] = { interpolate(Fragment.lit("""select "productsubcategoryid", "productcategoryid", "name", "rowguid", "modifieddate" from "production"."productsubcategory" - where "productsubcategoryid" = ANY("""), Fragment.encode(ProductsubcategoryId.dbTypeArray, productsubcategoryids), Fragment.lit(")")).query(ProductsubcategoryRow.`_rowParser`.all()).runUnchecked(c) + where "productsubcategoryid" = ANY("""), Fragment.encode(ProductsubcategoryId.pgTypeArray, productsubcategoryids), Fragment.lit(")")).query(ProductsubcategoryRow.`_rowParser`.all()).runUnchecked(c) } override def selectByIdsTracked(productsubcategoryids: Array[ProductsubcategoryId])(using c: Connection): java.util.Map[ProductsubcategoryId, ProductsubcategoryRow] = { @@ -111,16 +111,16 @@ class ProductsubcategoryRepoImpl extends ProductsubcategoryRepo { override def update(row: ProductsubcategoryRow)(using c: Connection): java.lang.Boolean = { val productsubcategoryid: ProductsubcategoryId = row.productsubcategoryid return interpolate(Fragment.lit("""update "production"."productsubcategory" - set "productcategoryid" = """), Fragment.encode(ProductcategoryId.dbType, row.productcategoryid), Fragment.lit("""::int4, - "name" = """), Fragment.encode(Name.dbType, row.name), Fragment.lit("""::varchar, + set "productcategoryid" = """), Fragment.encode(ProductcategoryId.pgType, row.productcategoryid), Fragment.lit("""::int4, + "name" = """), Fragment.encode(Name.pgType, row.name), Fragment.lit("""::varchar, "rowguid" = """), Fragment.encode(PgTypes.uuid, row.rowguid), Fragment.lit("""::uuid, "modifieddate" = """), Fragment.encode(PgTypes.timestamp, row.modifieddate), Fragment.lit("""::timestamp - where "productsubcategoryid" = """), Fragment.encode(ProductsubcategoryId.dbType, productsubcategoryid), Fragment.lit("")).update().runUnchecked(c) > 0 + where "productsubcategoryid" = """), Fragment.encode(ProductsubcategoryId.pgType, productsubcategoryid), Fragment.lit("")).update().runUnchecked(c) > 0 } override def upsert(unsaved: ProductsubcategoryRow)(using c: Connection): ProductsubcategoryRow = { interpolate(Fragment.lit("""insert into "production"."productsubcategory"("productsubcategoryid", "productcategoryid", "name", "rowguid", "modifieddate") - values ("""), Fragment.encode(ProductsubcategoryId.dbType, unsaved.productsubcategoryid), Fragment.lit("::int4, "), Fragment.encode(ProductcategoryId.dbType, unsaved.productcategoryid), Fragment.lit("::int4, "), Fragment.encode(Name.dbType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) + values ("""), Fragment.encode(ProductsubcategoryId.pgType, unsaved.productsubcategoryid), Fragment.lit("::int4, "), Fragment.encode(ProductcategoryId.pgType, unsaved.productcategoryid), Fragment.lit("::int4, "), Fragment.encode(Name.pgType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) on conflict ("productsubcategoryid") do update set "productcategoryid" = EXCLUDED."productcategoryid", diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRow.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRow.scala index 13ecd4f2b9..b3ac503bfa 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRow.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRow.scala @@ -64,7 +64,7 @@ case class ProductsubcategoryRow( } object ProductsubcategoryRow { - val `_rowParser`: RowParser[ProductsubcategoryRow] = RowParsers.of(ProductsubcategoryId.dbType, ProductcategoryId.dbType, Name.dbType, PgTypes.uuid, PgTypes.timestamp, ProductsubcategoryRow.apply, row => Array[Any](row.productsubcategoryid, row.productcategoryid, row.name, row.rowguid, row.modifieddate)) + val `_rowParser`: RowParser[ProductsubcategoryRow] = RowParsers.of(ProductsubcategoryId.pgType, ProductcategoryId.pgType, Name.pgType, PgTypes.uuid, PgTypes.timestamp, ProductsubcategoryRow.apply, row => Array[Any](row.productsubcategoryid, row.productcategoryid, row.name, row.rowguid, row.modifieddate)) given pgText: PgText[ProductsubcategoryRow] = PgText.from(`_rowParser`) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRowUnsaved.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRowUnsaved.scala index af6539ebab..6605cc5c30 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRowUnsaved.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRowUnsaved.scala @@ -47,5 +47,5 @@ case class ProductsubcategoryRowUnsaved( } object ProductsubcategoryRowUnsaved { - given pgText: PgText[ProductsubcategoryRowUnsaved] = PgText.instance((row, sb) => { ProductcategoryId.dbType.text.unsafeEncode(row.productcategoryid, sb); sb.append(PgText.DELIMETER); Name.dbType.text.unsafeEncode(row.name, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using ProductsubcategoryId.dbType.text).unsafeEncode(row.productsubcategoryid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.uuid.text).unsafeEncode(row.rowguid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) + given pgText: PgText[ProductsubcategoryRowUnsaved] = PgText.instance((row, sb) => { ProductcategoryId.pgType.text.unsafeEncode(row.productcategoryid, sb); sb.append(PgText.DELIMETER); Name.pgType.text.unsafeEncode(row.name, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using ProductsubcategoryId.pgType.text).unsafeEncode(row.productsubcategoryid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.uuid.text).unsafeEncode(row.rowguid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureFields.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureFields.scala index 31790cca03..7db9bb63d2 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureFields.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureFields.scala @@ -28,7 +28,7 @@ class UnitmeasureFields(val `_path`: java.util.List[Path]) extends TupleExpr3[Un Optional.empty(), Optional.of("bpchar"), (row, value) => row.copy(unitmeasurecode = value), - UnitmeasureId.dbType + UnitmeasureId.pgType ) } @@ -40,7 +40,7 @@ class UnitmeasureFields(val `_path`: java.util.List[Path]) extends TupleExpr3[Un Optional.empty(), Optional.of("varchar"), (row, value) => row.copy(name = value), - Name.dbType + Name.pgType ) } diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureId.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureId.scala index afff77cc29..2c660942d2 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureId.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureId.scala @@ -16,7 +16,7 @@ case class UnitmeasureId(@JsonValue value: String) extends scala.AnyVal object UnitmeasureId { given bijection: Bijection[UnitmeasureId, String] = Bijection.apply[UnitmeasureId, String](_.value)(UnitmeasureId.apply) - given dbType: PgType[UnitmeasureId] = PgTypes.bpchar.bimap(UnitmeasureId.apply, _.value) + given pgType: PgType[UnitmeasureId] = PgTypes.bpchar.bimap(UnitmeasureId.apply, _.value) - given dbTypeArray: PgType[Array[UnitmeasureId]] = PgTypes.bpcharArray.bimap(xs => xs.map(UnitmeasureId.apply), xs => xs.map(_.value)) + given pgTypeArray: PgType[Array[UnitmeasureId]] = PgTypes.bpcharArray.bimap(xs => xs.map(UnitmeasureId.apply), xs => xs.map(_.value)) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRepoImpl.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRepoImpl.scala index 9a0a576e6e..6c5c30d12a 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRepoImpl.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRepoImpl.scala @@ -22,19 +22,19 @@ import dev.typr.foundations.Fragment.interpolate class UnitmeasureRepoImpl extends UnitmeasureRepo { override def delete: DeleteBuilder[UnitmeasureFields, UnitmeasureRow] = DeleteBuilder.of(""""production"."unitmeasure"""", UnitmeasureFields.structure, Dialect.POSTGRESQL) - override def deleteById(unitmeasurecode: UnitmeasureId)(using c: Connection): java.lang.Boolean = interpolate(Fragment.lit("""delete from "production"."unitmeasure" where "unitmeasurecode" = """), Fragment.encode(UnitmeasureId.dbType, unitmeasurecode), Fragment.lit("")).update().runUnchecked(c) > 0 + override def deleteById(unitmeasurecode: UnitmeasureId)(using c: Connection): java.lang.Boolean = interpolate(Fragment.lit("""delete from "production"."unitmeasure" where "unitmeasurecode" = """), Fragment.encode(UnitmeasureId.pgType, unitmeasurecode), Fragment.lit("")).update().runUnchecked(c) > 0 override def deleteByIds(unitmeasurecodes: Array[UnitmeasureId])(using c: Connection): Integer = { interpolate(Fragment.lit("""delete from "production"."unitmeasure" - where "unitmeasurecode" = ANY("""), Fragment.encode(UnitmeasureId.dbTypeArray, unitmeasurecodes), Fragment.lit(")")) + where "unitmeasurecode" = ANY("""), Fragment.encode(UnitmeasureId.pgTypeArray, unitmeasurecodes), Fragment.lit(")")) .update() .runUnchecked(c) } override def insert(unsaved: UnitmeasureRow)(using c: Connection): UnitmeasureRow = { interpolate(Fragment.lit("""insert into "production"."unitmeasure"("unitmeasurecode", "name", "modifieddate") - values ("""), Fragment.encode(UnitmeasureId.dbType, unsaved.unitmeasurecode), Fragment.lit("::bpchar, "), Fragment.encode(Name.dbType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) + values ("""), Fragment.encode(UnitmeasureId.pgType, unsaved.unitmeasurecode), Fragment.lit("::bpchar, "), Fragment.encode(Name.pgType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) RETURNING "unitmeasurecode", "name", "modifieddate" """)) .updateReturning(UnitmeasureRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -44,9 +44,9 @@ class UnitmeasureRepoImpl extends UnitmeasureRepo { val columns: ArrayList[Fragment] = new ArrayList() val values: ArrayList[Fragment] = new ArrayList() columns.add(Fragment.lit(""""unitmeasurecode"""")): @scala.annotation.nowarn - values.add(interpolate(Fragment.encode(UnitmeasureId.dbType, unsaved.unitmeasurecode), Fragment.lit("::bpchar"))): @scala.annotation.nowarn + values.add(interpolate(Fragment.encode(UnitmeasureId.pgType, unsaved.unitmeasurecode), Fragment.lit("::bpchar"))): @scala.annotation.nowarn columns.add(Fragment.lit(""""name"""")): @scala.annotation.nowarn - values.add(interpolate(Fragment.encode(Name.dbType, unsaved.name), Fragment.lit("::varchar"))): @scala.annotation.nowarn + values.add(interpolate(Fragment.encode(Name.pgType, unsaved.name), Fragment.lit("::varchar"))): @scala.annotation.nowarn unsaved.modifieddate.visit( { }, value => { columns.add(Fragment.lit(""""modifieddate"""")): @scala.annotation.nowarn; values.add(interpolate(Fragment.encode(PgTypes.timestamp, value), Fragment.lit("::timestamp"))): @scala.annotation.nowarn } @@ -82,13 +82,13 @@ class UnitmeasureRepoImpl extends UnitmeasureRepo { override def selectById(unitmeasurecode: UnitmeasureId)(using c: Connection): Optional[UnitmeasureRow] = { interpolate(Fragment.lit("""select "unitmeasurecode", "name", "modifieddate" from "production"."unitmeasure" - where "unitmeasurecode" = """), Fragment.encode(UnitmeasureId.dbType, unitmeasurecode), Fragment.lit("")).query(UnitmeasureRow.`_rowParser`.first()).runUnchecked(c) + where "unitmeasurecode" = """), Fragment.encode(UnitmeasureId.pgType, unitmeasurecode), Fragment.lit("")).query(UnitmeasureRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(unitmeasurecodes: Array[UnitmeasureId])(using c: Connection): java.util.List[UnitmeasureRow] = { interpolate(Fragment.lit("""select "unitmeasurecode", "name", "modifieddate" from "production"."unitmeasure" - where "unitmeasurecode" = ANY("""), Fragment.encode(UnitmeasureId.dbTypeArray, unitmeasurecodes), Fragment.lit(")")).query(UnitmeasureRow.`_rowParser`.all()).runUnchecked(c) + where "unitmeasurecode" = ANY("""), Fragment.encode(UnitmeasureId.pgTypeArray, unitmeasurecodes), Fragment.lit(")")).query(UnitmeasureRow.`_rowParser`.all()).runUnchecked(c) } override def selectByIdsTracked(unitmeasurecodes: Array[UnitmeasureId])(using c: Connection): java.util.Map[UnitmeasureId, UnitmeasureRow] = { @@ -102,14 +102,14 @@ class UnitmeasureRepoImpl extends UnitmeasureRepo { override def update(row: UnitmeasureRow)(using c: Connection): java.lang.Boolean = { val unitmeasurecode: UnitmeasureId = row.unitmeasurecode return interpolate(Fragment.lit("""update "production"."unitmeasure" - set "name" = """), Fragment.encode(Name.dbType, row.name), Fragment.lit("""::varchar, + set "name" = """), Fragment.encode(Name.pgType, row.name), Fragment.lit("""::varchar, "modifieddate" = """), Fragment.encode(PgTypes.timestamp, row.modifieddate), Fragment.lit("""::timestamp - where "unitmeasurecode" = """), Fragment.encode(UnitmeasureId.dbType, unitmeasurecode), Fragment.lit("")).update().runUnchecked(c) > 0 + where "unitmeasurecode" = """), Fragment.encode(UnitmeasureId.pgType, unitmeasurecode), Fragment.lit("")).update().runUnchecked(c) > 0 } override def upsert(unsaved: UnitmeasureRow)(using c: Connection): UnitmeasureRow = { interpolate(Fragment.lit("""insert into "production"."unitmeasure"("unitmeasurecode", "name", "modifieddate") - values ("""), Fragment.encode(UnitmeasureId.dbType, unsaved.unitmeasurecode), Fragment.lit("::bpchar, "), Fragment.encode(Name.dbType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) + values ("""), Fragment.encode(UnitmeasureId.pgType, unsaved.unitmeasurecode), Fragment.lit("::bpchar, "), Fragment.encode(Name.pgType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) on conflict ("unitmeasurecode") do update set "name" = EXCLUDED."name", diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRow.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRow.scala index 59b681e3b1..1b8ba8f1b5 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRow.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRow.scala @@ -38,7 +38,7 @@ case class UnitmeasureRow( } object UnitmeasureRow { - val `_rowParser`: RowParser[UnitmeasureRow] = RowParsers.of(UnitmeasureId.dbType, Name.dbType, PgTypes.timestamp, UnitmeasureRow.apply, row => Array[Any](row.unitmeasurecode, row.name, row.modifieddate)) + val `_rowParser`: RowParser[UnitmeasureRow] = RowParsers.of(UnitmeasureId.pgType, Name.pgType, PgTypes.timestamp, UnitmeasureRow.apply, row => Array[Any](row.unitmeasurecode, row.name, row.modifieddate)) given pgText: PgText[UnitmeasureRow] = PgText.from(`_rowParser`) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRowUnsaved.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRowUnsaved.scala index f44831bc65..eec58f3b5b 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRowUnsaved.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRowUnsaved.scala @@ -25,5 +25,5 @@ case class UnitmeasureRowUnsaved( } object UnitmeasureRowUnsaved { - given pgText: PgText[UnitmeasureRowUnsaved] = PgText.instance((row, sb) => { UnitmeasureId.dbType.text.unsafeEncode(row.unitmeasurecode, sb); sb.append(PgText.DELIMETER); Name.dbType.text.unsafeEncode(row.name, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) + given pgText: PgText[UnitmeasureRowUnsaved] = PgText.instance((row, sb) => { UnitmeasureId.pgType.text.unsafeEncode(row.unitmeasurecode, sb); sb.append(PgText.DELIMETER); Name.pgType.text.unsafeEncode(row.name, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/AccountNumber.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/AccountNumber.scala index c8afca6294..5cb3d0ac6f 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/AccountNumber.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/AccountNumber.scala @@ -18,7 +18,7 @@ case class AccountNumber(@JsonValue value: String) object AccountNumber { given bijection: Bijection[AccountNumber, String] = Bijection.apply[AccountNumber, String](_.value)(AccountNumber.apply) - given dbType: PgType[AccountNumber] = PgTypes.text.bimap(AccountNumber.apply, _.value).renamed(""""public"."AccountNumber"""") + given pgType: PgType[AccountNumber] = PgTypes.text.bimap(AccountNumber.apply, _.value).renamed(""""public"."AccountNumber"""") - given dbTypeArray: PgType[Array[AccountNumber]] = PgTypes.textArray.bimap(xs => xs.map(AccountNumber.apply), xs => xs.map(_.value)).renamed(""""public"."AccountNumber"[]""") + given pgTypeArray: PgType[Array[AccountNumber]] = PgTypes.textArray.bimap(xs => xs.map(AccountNumber.apply), xs => xs.map(_.value)).renamed(""""public"."AccountNumber"[]""") } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/Flag.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/Flag.scala index 256b712090..8b90973c45 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/Flag.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/Flag.scala @@ -18,7 +18,7 @@ case class Flag(@JsonValue value: java.lang.Boolean) object Flag { given bijection: Bijection[Flag, java.lang.Boolean] = Bijection.apply[Flag, java.lang.Boolean](_.value)(Flag.apply) - given dbType: PgType[Flag] = PgTypes.bool.bimap(Flag.apply, _.value).renamed(""""public"."Flag"""") + given pgType: PgType[Flag] = PgTypes.bool.bimap(Flag.apply, _.value).renamed(""""public"."Flag"""") - given dbTypeArray: PgType[Array[Flag]] = PgTypes.boolArray.bimap(xs => xs.map(Flag.apply), xs => xs.map(_.value)).renamed(""""public"."Flag"[]""") + given pgTypeArray: PgType[Array[Flag]] = PgTypes.boolArray.bimap(xs => xs.map(Flag.apply), xs => xs.map(_.value)).renamed(""""public"."Flag"[]""") } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/Mydomain.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/Mydomain.scala index 8292e011d4..9edbdad780 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/Mydomain.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/Mydomain.scala @@ -18,7 +18,7 @@ case class Mydomain(@JsonValue value: String) object Mydomain { given bijection: Bijection[Mydomain, String] = Bijection.apply[Mydomain, String](_.value)(Mydomain.apply) - given dbType: PgType[Mydomain] = PgTypes.text.bimap(Mydomain.apply, _.value).renamed(""""public"."mydomain"""") + given pgType: PgType[Mydomain] = PgTypes.text.bimap(Mydomain.apply, _.value).renamed(""""public"."mydomain"""") - given dbTypeArray: PgType[Array[Mydomain]] = PgTypes.textArray.bimap(xs => xs.map(Mydomain.apply), xs => xs.map(_.value)).renamed(""""public"."mydomain"[]""") + given pgTypeArray: PgType[Array[Mydomain]] = PgTypes.textArray.bimap(xs => xs.map(Mydomain.apply), xs => xs.map(_.value)).renamed(""""public"."mydomain"[]""") } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/Myenum.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/Myenum.scala index cee32c674d..e2c4940984 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/Myenum.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/Myenum.scala @@ -17,13 +17,13 @@ import dev.typr.foundations.PgTypes sealed abstract class Myenum(val value: java.lang.String) object Myenum { - given dbTypeArray: PgType[Array[Myenum]] = { + given pgTypeArray: PgType[Array[Myenum]] = { PgTypes.textArray .bimap(xs => xs.map(Myenum.force), xs => xs.map(_.value)) .renamedDropPrecision("public.myenum") } - given dbType: PgType[Myenum] = { + given pgType: PgType[Myenum] = { PgTypes.text.bimap(Myenum.force, _.value) .renamedDropPrecision("public.myenum") } diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/Name.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/Name.scala index 2ce2bc2819..a07661dd63 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/Name.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/Name.scala @@ -18,7 +18,7 @@ case class Name(@JsonValue value: String) object Name { given bijection: Bijection[Name, String] = Bijection.apply[Name, String](_.value)(Name.apply) - given dbType: PgType[Name] = PgTypes.text.bimap(Name.apply, _.value).renamed(""""public"."Name"""") + given pgType: PgType[Name] = PgTypes.text.bimap(Name.apply, _.value).renamed(""""public"."Name"""") - given dbTypeArray: PgType[Array[Name]] = PgTypes.textArray.bimap(xs => xs.map(Name.apply), xs => xs.map(_.value)).renamed(""""public"."Name"[]""") + given pgTypeArray: PgType[Array[Name]] = PgTypes.textArray.bimap(xs => xs.map(Name.apply), xs => xs.map(_.value)).renamed(""""public"."Name"[]""") } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/NameStyle.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/NameStyle.scala index 4911df6bfa..5f5b34032a 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/NameStyle.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/NameStyle.scala @@ -18,7 +18,7 @@ case class NameStyle(@JsonValue value: java.lang.Boolean) object NameStyle { given bijection: Bijection[NameStyle, java.lang.Boolean] = Bijection.apply[NameStyle, java.lang.Boolean](_.value)(NameStyle.apply) - given dbType: PgType[NameStyle] = PgTypes.bool.bimap(NameStyle.apply, _.value).renamed(""""public"."NameStyle"""") + given pgType: PgType[NameStyle] = PgTypes.bool.bimap(NameStyle.apply, _.value).renamed(""""public"."NameStyle"""") - given dbTypeArray: PgType[Array[NameStyle]] = PgTypes.boolArray.bimap(xs => xs.map(NameStyle.apply), xs => xs.map(_.value)).renamed(""""public"."NameStyle"[]""") + given pgTypeArray: PgType[Array[NameStyle]] = PgTypes.boolArray.bimap(xs => xs.map(NameStyle.apply), xs => xs.map(_.value)).renamed(""""public"."NameStyle"[]""") } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/OrderNumber.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/OrderNumber.scala index eb92db283d..0fe67956a5 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/OrderNumber.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/OrderNumber.scala @@ -18,7 +18,7 @@ case class OrderNumber(@JsonValue value: String) object OrderNumber { given bijection: Bijection[OrderNumber, String] = Bijection.apply[OrderNumber, String](_.value)(OrderNumber.apply) - given dbType: PgType[OrderNumber] = PgTypes.text.bimap(OrderNumber.apply, _.value).renamed(""""public"."OrderNumber"""") + given pgType: PgType[OrderNumber] = PgTypes.text.bimap(OrderNumber.apply, _.value).renamed(""""public"."OrderNumber"""") - given dbTypeArray: PgType[Array[OrderNumber]] = PgTypes.textArray.bimap(xs => xs.map(OrderNumber.apply), xs => xs.map(_.value)).renamed(""""public"."OrderNumber"[]""") + given pgTypeArray: PgType[Array[OrderNumber]] = PgTypes.textArray.bimap(xs => xs.map(OrderNumber.apply), xs => xs.map(_.value)).renamed(""""public"."OrderNumber"[]""") } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/Phone.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/Phone.scala index 5d91ab2aba..3855a8030a 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/Phone.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/Phone.scala @@ -18,7 +18,7 @@ case class Phone(@JsonValue value: String) object Phone { given bijection: Bijection[Phone, String] = Bijection.apply[Phone, String](_.value)(Phone.apply) - given dbType: PgType[Phone] = PgTypes.text.bimap(Phone.apply, _.value).renamed(""""public"."Phone"""") + given pgType: PgType[Phone] = PgTypes.text.bimap(Phone.apply, _.value).renamed(""""public"."Phone"""") - given dbTypeArray: PgType[Array[Phone]] = PgTypes.textArray.bimap(xs => xs.map(Phone.apply), xs => xs.map(_.value)).renamed(""""public"."Phone"[]""") + given pgTypeArray: PgType[Array[Phone]] = PgTypes.textArray.bimap(xs => xs.map(Phone.apply), xs => xs.map(_.value)).renamed(""""public"."Phone"[]""") } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/ShortText.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/ShortText.scala index 0619b5e2dd..1a5d83a53c 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/ShortText.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/ShortText.scala @@ -18,7 +18,7 @@ case class ShortText(@JsonValue value: String) object ShortText { given bijection: Bijection[ShortText, String] = Bijection.apply[ShortText, String](_.value)(ShortText.apply) - given dbType: PgType[ShortText] = PgTypes.text.bimap(ShortText.apply, _.value).renamed(""""public"."short_text"""") + given pgType: PgType[ShortText] = PgTypes.text.bimap(ShortText.apply, _.value).renamed(""""public"."short_text"""") - given dbTypeArray: PgType[Array[ShortText]] = PgTypes.textArray.bimap(xs => xs.map(ShortText.apply), xs => xs.map(_.value)).renamed(""""public"."short_text"[]""") + given pgTypeArray: PgType[Array[ShortText]] = PgTypes.textArray.bimap(xs => xs.map(ShortText.apply), xs => xs.map(_.value)).renamed(""""public"."short_text"[]""") } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/flaff/FlaffFields.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/flaff/FlaffFields.scala index 3da3b1b96a..7f82aa81c0 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/flaff/FlaffFields.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/flaff/FlaffFields.scala @@ -29,7 +29,7 @@ class FlaffFields(val `_path`: java.util.List[Path]) extends TupleExpr5[ShortTex Optional.empty(), Optional.of("text"), (row, value) => row.copy(code = value), - ShortText.dbType + ShortText.pgType ) } @@ -65,7 +65,7 @@ class FlaffFields(val `_path`: java.util.List[Path]) extends TupleExpr5[ShortTex Optional.empty(), Optional.of("text"), (row, value) => row.copy(specifier = value), - ShortText.dbType + ShortText.pgType ) } @@ -77,7 +77,7 @@ class FlaffFields(val `_path`: java.util.List[Path]) extends TupleExpr5[ShortTex Optional.empty(), Optional.of("text"), (row, value) => row.copy(parentspecifier = value), - ShortText.dbType + ShortText.pgType ) } diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/flaff/FlaffId.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/flaff/FlaffId.scala index 08e638535f..95bb3a8d4e 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/flaff/FlaffId.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/flaff/FlaffId.scala @@ -29,5 +29,5 @@ case class FlaffId( } object FlaffId { - val `_rowParser`: RowParser[FlaffId] = RowParsers.of(ShortText.dbType, PgTypes.text, PgTypes.int4, ShortText.dbType, FlaffId.apply, row => Array[Any](row.code, row.anotherCode, row.someNumber, row.specifier)) + val `_rowParser`: RowParser[FlaffId] = RowParsers.of(ShortText.pgType, PgTypes.text, PgTypes.int4, ShortText.pgType, FlaffId.apply, row => Array[Any](row.code, row.anotherCode, row.someNumber, row.specifier)) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/flaff/FlaffRepoImpl.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/flaff/FlaffRepoImpl.scala index 82393a9076..697a248a3b 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/flaff/FlaffRepoImpl.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/flaff/FlaffRepoImpl.scala @@ -21,7 +21,7 @@ import dev.typr.foundations.Fragment.interpolate class FlaffRepoImpl extends FlaffRepo { override def delete: DeleteBuilder[FlaffFields, FlaffRow] = DeleteBuilder.of(""""public"."flaff"""", FlaffFields.structure, Dialect.POSTGRESQL) - override def deleteById(compositeId: FlaffId)(using c: Connection): java.lang.Boolean = interpolate(Fragment.lit("""delete from "public"."flaff" where "code" = """), Fragment.encode(ShortText.dbType, compositeId.code), Fragment.lit(""" AND "another_code" = """), Fragment.encode(PgTypes.text, compositeId.anotherCode), Fragment.lit(""" AND "some_number" = """), Fragment.encode(PgTypes.int4, compositeId.someNumber), Fragment.lit(""" AND "specifier" = """), Fragment.encode(ShortText.dbType, compositeId.specifier), Fragment.lit("")).update().runUnchecked(c) > 0 + override def deleteById(compositeId: FlaffId)(using c: Connection): java.lang.Boolean = interpolate(Fragment.lit("""delete from "public"."flaff" where "code" = """), Fragment.encode(ShortText.pgType, compositeId.code), Fragment.lit(""" AND "another_code" = """), Fragment.encode(PgTypes.text, compositeId.anotherCode), Fragment.lit(""" AND "some_number" = """), Fragment.encode(PgTypes.int4, compositeId.someNumber), Fragment.lit(""" AND "specifier" = """), Fragment.encode(ShortText.pgType, compositeId.specifier), Fragment.lit("")).update().runUnchecked(c) > 0 override def deleteByIds(compositeIds: Array[FlaffId])(using c: Connection): Integer = { val code: Array[ShortText] = compositeIds.map(_.code) @@ -31,13 +31,13 @@ class FlaffRepoImpl extends FlaffRepo { return interpolate(Fragment.lit("""delete from "public"."flaff" where ("code", "another_code", "some_number", "specifier") - in (select * from unnest("""), Fragment.encode(ShortText.dbTypeArray, code), Fragment.lit(", "), Fragment.encode(PgTypes.textArray, anotherCode), Fragment.lit(", "), Fragment.encode(PgTypes.int4Array, someNumber), Fragment.lit(", "), Fragment.encode(ShortText.dbTypeArray, specifier), Fragment.lit(""")) + in (select * from unnest("""), Fragment.encode(ShortText.pgTypeArray, code), Fragment.lit(", "), Fragment.encode(PgTypes.textArray, anotherCode), Fragment.lit(", "), Fragment.encode(PgTypes.int4Array, someNumber), Fragment.lit(", "), Fragment.encode(ShortText.pgTypeArray, specifier), Fragment.lit(""")) """)).update().runUnchecked(c) } override def insert(unsaved: FlaffRow)(using c: Connection): FlaffRow = { interpolate(Fragment.lit("""insert into "public"."flaff"("code", "another_code", "some_number", "specifier", "parentspecifier") - values ("""), Fragment.encode(ShortText.dbType, unsaved.code), Fragment.lit("::text, "), Fragment.encode(PgTypes.text, unsaved.anotherCode), Fragment.lit(", "), Fragment.encode(PgTypes.int4, unsaved.someNumber), Fragment.lit("::int4, "), Fragment.encode(ShortText.dbType, unsaved.specifier), Fragment.lit("::text, "), Fragment.encode(ShortText.dbType.opt(), unsaved.parentspecifier), Fragment.lit("""::text) + values ("""), Fragment.encode(ShortText.pgType, unsaved.code), Fragment.lit("::text, "), Fragment.encode(PgTypes.text, unsaved.anotherCode), Fragment.lit(", "), Fragment.encode(PgTypes.int4, unsaved.someNumber), Fragment.lit("::int4, "), Fragment.encode(ShortText.pgType, unsaved.specifier), Fragment.lit("::text, "), Fragment.encode(ShortText.pgType.opt(), unsaved.parentspecifier), Fragment.lit("""::text) RETURNING "code", "another_code", "some_number", "specifier", "parentspecifier" """)) .updateReturning(FlaffRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -59,7 +59,7 @@ class FlaffRepoImpl extends FlaffRepo { override def selectById(compositeId: FlaffId)(using c: Connection): Optional[FlaffRow] = { interpolate(Fragment.lit("""select "code", "another_code", "some_number", "specifier", "parentspecifier" from "public"."flaff" - where "code" = """), Fragment.encode(ShortText.dbType, compositeId.code), Fragment.lit(""" AND "another_code" = """), Fragment.encode(PgTypes.text, compositeId.anotherCode), Fragment.lit(""" AND "some_number" = """), Fragment.encode(PgTypes.int4, compositeId.someNumber), Fragment.lit(""" AND "specifier" = """), Fragment.encode(ShortText.dbType, compositeId.specifier), Fragment.lit("")).query(FlaffRow.`_rowParser`.first()).runUnchecked(c) + where "code" = """), Fragment.encode(ShortText.pgType, compositeId.code), Fragment.lit(""" AND "another_code" = """), Fragment.encode(PgTypes.text, compositeId.anotherCode), Fragment.lit(""" AND "some_number" = """), Fragment.encode(PgTypes.int4, compositeId.someNumber), Fragment.lit(""" AND "specifier" = """), Fragment.encode(ShortText.pgType, compositeId.specifier), Fragment.lit("")).query(FlaffRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(compositeIds: Array[FlaffId])(using c: Connection): java.util.List[FlaffRow] = { @@ -70,7 +70,7 @@ class FlaffRepoImpl extends FlaffRepo { return interpolate(Fragment.lit("""select "code", "another_code", "some_number", "specifier", "parentspecifier" from "public"."flaff" where ("code", "another_code", "some_number", "specifier") - in (select * from unnest("""), Fragment.encode(ShortText.dbTypeArray, code), Fragment.lit(", "), Fragment.encode(PgTypes.textArray, anotherCode), Fragment.lit(", "), Fragment.encode(PgTypes.int4Array, someNumber), Fragment.lit(", "), Fragment.encode(ShortText.dbTypeArray, specifier), Fragment.lit(""")) + in (select * from unnest("""), Fragment.encode(ShortText.pgTypeArray, code), Fragment.lit(", "), Fragment.encode(PgTypes.textArray, anotherCode), Fragment.lit(", "), Fragment.encode(PgTypes.int4Array, someNumber), Fragment.lit(", "), Fragment.encode(ShortText.pgTypeArray, specifier), Fragment.lit(""")) """)).query(FlaffRow.`_rowParser`.all()).runUnchecked(c) } @@ -85,13 +85,13 @@ class FlaffRepoImpl extends FlaffRepo { override def update(row: FlaffRow)(using c: Connection): java.lang.Boolean = { val compositeId: FlaffId = row.compositeId return interpolate(Fragment.lit("""update "public"."flaff" - set "parentspecifier" = """), Fragment.encode(ShortText.dbType.opt(), row.parentspecifier), Fragment.lit("""::text - where "code" = """), Fragment.encode(ShortText.dbType, compositeId.code), Fragment.lit(""" AND "another_code" = """), Fragment.encode(PgTypes.text, compositeId.anotherCode), Fragment.lit(""" AND "some_number" = """), Fragment.encode(PgTypes.int4, compositeId.someNumber), Fragment.lit(""" AND "specifier" = """), Fragment.encode(ShortText.dbType, compositeId.specifier), Fragment.lit("")).update().runUnchecked(c) > 0 + set "parentspecifier" = """), Fragment.encode(ShortText.pgType.opt(), row.parentspecifier), Fragment.lit("""::text + where "code" = """), Fragment.encode(ShortText.pgType, compositeId.code), Fragment.lit(""" AND "another_code" = """), Fragment.encode(PgTypes.text, compositeId.anotherCode), Fragment.lit(""" AND "some_number" = """), Fragment.encode(PgTypes.int4, compositeId.someNumber), Fragment.lit(""" AND "specifier" = """), Fragment.encode(ShortText.pgType, compositeId.specifier), Fragment.lit("")).update().runUnchecked(c) > 0 } override def upsert(unsaved: FlaffRow)(using c: Connection): FlaffRow = { interpolate(Fragment.lit("""insert into "public"."flaff"("code", "another_code", "some_number", "specifier", "parentspecifier") - values ("""), Fragment.encode(ShortText.dbType, unsaved.code), Fragment.lit("::text, "), Fragment.encode(PgTypes.text, unsaved.anotherCode), Fragment.lit(", "), Fragment.encode(PgTypes.int4, unsaved.someNumber), Fragment.lit("::int4, "), Fragment.encode(ShortText.dbType, unsaved.specifier), Fragment.lit("::text, "), Fragment.encode(ShortText.dbType.opt(), unsaved.parentspecifier), Fragment.lit("""::text) + values ("""), Fragment.encode(ShortText.pgType, unsaved.code), Fragment.lit("::text, "), Fragment.encode(PgTypes.text, unsaved.anotherCode), Fragment.lit(", "), Fragment.encode(PgTypes.int4, unsaved.someNumber), Fragment.lit("::int4, "), Fragment.encode(ShortText.pgType, unsaved.specifier), Fragment.lit("::text, "), Fragment.encode(ShortText.pgType.opt(), unsaved.parentspecifier), Fragment.lit("""::text) on conflict ("code", "another_code", "some_number", "specifier") do update set "parentspecifier" = EXCLUDED."parentspecifier" diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/flaff/FlaffRow.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/flaff/FlaffRow.scala index 4b2f43af23..9a8010677f 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/flaff/FlaffRow.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/flaff/FlaffRow.scala @@ -51,7 +51,7 @@ case class FlaffRow( } object FlaffRow { - val `_rowParser`: RowParser[FlaffRow] = RowParsers.of(ShortText.dbType, PgTypes.text, PgTypes.int4, ShortText.dbType, ShortText.dbType.opt(), FlaffRow.apply, row => Array[Any](row.code, row.anotherCode, row.someNumber, row.specifier, row.parentspecifier)) + val `_rowParser`: RowParser[FlaffRow] = RowParsers.of(ShortText.pgType, PgTypes.text, PgTypes.int4, ShortText.pgType, ShortText.pgType.opt(), FlaffRow.apply, row => Array[Any](row.code, row.anotherCode, row.someNumber, row.specifier, row.parentspecifier)) def apply( compositeId: FlaffId, diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestFields.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestFields.scala index 70fea8132f..7679658337 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestFields.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestFields.scala @@ -50,7 +50,7 @@ class IdentityTestFields(val `_path`: java.util.List[Path]) extends TupleExpr3[I Optional.empty(), Optional.empty(), (row, value) => row.copy(name = value), - IdentityTestId.dbType + IdentityTestId.pgType ) } diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestId.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestId.scala index 11cfac231e..0ad9d10310 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestId.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestId.scala @@ -16,7 +16,7 @@ case class IdentityTestId(@JsonValue value: String) extends scala.AnyVal object IdentityTestId { given bijection: Bijection[IdentityTestId, String] = Bijection.apply[IdentityTestId, String](_.value)(IdentityTestId.apply) - given dbType: PgType[IdentityTestId] = PgTypes.text.bimap(IdentityTestId.apply, _.value) + given pgType: PgType[IdentityTestId] = PgTypes.text.bimap(IdentityTestId.apply, _.value) - given dbTypeArray: PgType[Array[IdentityTestId]] = PgTypes.textArray.bimap(xs => xs.map(IdentityTestId.apply), xs => xs.map(_.value)) + given pgTypeArray: PgType[Array[IdentityTestId]] = PgTypes.textArray.bimap(xs => xs.map(IdentityTestId.apply), xs => xs.map(_.value)) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestRepoImpl.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestRepoImpl.scala index f30a2f384f..4cb98b3ce8 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestRepoImpl.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestRepoImpl.scala @@ -21,19 +21,19 @@ import dev.typr.foundations.Fragment.interpolate class IdentityTestRepoImpl extends IdentityTestRepo { override def delete: DeleteBuilder[IdentityTestFields, IdentityTestRow] = DeleteBuilder.of(""""public"."identity-test"""", IdentityTestFields.structure, Dialect.POSTGRESQL) - override def deleteById(name: IdentityTestId)(using c: Connection): java.lang.Boolean = interpolate(Fragment.lit("""delete from "public"."identity-test" where "name" = """), Fragment.encode(IdentityTestId.dbType, name), Fragment.lit("")).update().runUnchecked(c) > 0 + override def deleteById(name: IdentityTestId)(using c: Connection): java.lang.Boolean = interpolate(Fragment.lit("""delete from "public"."identity-test" where "name" = """), Fragment.encode(IdentityTestId.pgType, name), Fragment.lit("")).update().runUnchecked(c) > 0 override def deleteByIds(names: Array[IdentityTestId])(using c: Connection): Integer = { interpolate(Fragment.lit("""delete from "public"."identity-test" - where "name" = ANY("""), Fragment.encode(IdentityTestId.dbTypeArray, names), Fragment.lit(")")) + where "name" = ANY("""), Fragment.encode(IdentityTestId.pgTypeArray, names), Fragment.lit(")")) .update() .runUnchecked(c) } override def insert(unsaved: IdentityTestRow)(using c: Connection): IdentityTestRow = { interpolate(Fragment.lit("""insert into "public"."identity-test"("default_generated", "name") - values ("""), Fragment.encode(PgTypes.int4, unsaved.defaultGenerated), Fragment.lit("::int4, "), Fragment.encode(IdentityTestId.dbType, unsaved.name), Fragment.lit(""") + values ("""), Fragment.encode(PgTypes.int4, unsaved.defaultGenerated), Fragment.lit("::int4, "), Fragment.encode(IdentityTestId.pgType, unsaved.name), Fragment.lit(""") RETURNING "always_generated", "default_generated", "name" """)) .updateReturning(IdentityTestRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -43,7 +43,7 @@ class IdentityTestRepoImpl extends IdentityTestRepo { val columns: ArrayList[Fragment] = new ArrayList() val values: ArrayList[Fragment] = new ArrayList() columns.add(Fragment.lit(""""name"""")): @scala.annotation.nowarn - values.add(interpolate(Fragment.encode(IdentityTestId.dbType, unsaved.name), Fragment.lit(""))): @scala.annotation.nowarn + values.add(interpolate(Fragment.encode(IdentityTestId.pgType, unsaved.name), Fragment.lit(""))): @scala.annotation.nowarn unsaved.defaultGenerated.visit( { }, value => { columns.add(Fragment.lit(""""default_generated"""")): @scala.annotation.nowarn; values.add(interpolate(Fragment.encode(PgTypes.int4, value), Fragment.lit("::int4"))): @scala.annotation.nowarn } @@ -79,13 +79,13 @@ class IdentityTestRepoImpl extends IdentityTestRepo { override def selectById(name: IdentityTestId)(using c: Connection): Optional[IdentityTestRow] = { interpolate(Fragment.lit("""select "always_generated", "default_generated", "name" from "public"."identity-test" - where "name" = """), Fragment.encode(IdentityTestId.dbType, name), Fragment.lit("")).query(IdentityTestRow.`_rowParser`.first()).runUnchecked(c) + where "name" = """), Fragment.encode(IdentityTestId.pgType, name), Fragment.lit("")).query(IdentityTestRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(names: Array[IdentityTestId])(using c: Connection): java.util.List[IdentityTestRow] = { interpolate(Fragment.lit("""select "always_generated", "default_generated", "name" from "public"."identity-test" - where "name" = ANY("""), Fragment.encode(IdentityTestId.dbTypeArray, names), Fragment.lit(")")).query(IdentityTestRow.`_rowParser`.all()).runUnchecked(c) + where "name" = ANY("""), Fragment.encode(IdentityTestId.pgTypeArray, names), Fragment.lit(")")).query(IdentityTestRow.`_rowParser`.all()).runUnchecked(c) } override def selectByIdsTracked(names: Array[IdentityTestId])(using c: Connection): java.util.Map[IdentityTestId, IdentityTestRow] = { @@ -100,12 +100,12 @@ class IdentityTestRepoImpl extends IdentityTestRepo { val name: IdentityTestId = row.name return interpolate(Fragment.lit("""update "public"."identity-test" set "default_generated" = """), Fragment.encode(PgTypes.int4, row.defaultGenerated), Fragment.lit("""::int4 - where "name" = """), Fragment.encode(IdentityTestId.dbType, name), Fragment.lit("")).update().runUnchecked(c) > 0 + where "name" = """), Fragment.encode(IdentityTestId.pgType, name), Fragment.lit("")).update().runUnchecked(c) > 0 } override def upsert(unsaved: IdentityTestRow)(using c: Connection): IdentityTestRow = { interpolate(Fragment.lit("""insert into "public"."identity-test"("default_generated", "name") - values ("""), Fragment.encode(PgTypes.int4, unsaved.defaultGenerated), Fragment.lit("::int4, "), Fragment.encode(IdentityTestId.dbType, unsaved.name), Fragment.lit(""") + values ("""), Fragment.encode(PgTypes.int4, unsaved.defaultGenerated), Fragment.lit("::int4, "), Fragment.encode(IdentityTestId.pgType, unsaved.name), Fragment.lit(""") on conflict ("name") do update set "default_generated" = EXCLUDED."default_generated" diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestRow.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestRow.scala index 5e0c8bed5b..ab9cae824b 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestRow.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestRow.scala @@ -35,7 +35,7 @@ case class IdentityTestRow( } object IdentityTestRow { - val `_rowParser`: RowParser[IdentityTestRow] = RowParsers.of(PgTypes.int4, PgTypes.int4, IdentityTestId.dbType, IdentityTestRow.apply, row => Array[Any](row.alwaysGenerated, row.defaultGenerated, row.name)) + val `_rowParser`: RowParser[IdentityTestRow] = RowParsers.of(PgTypes.int4, PgTypes.int4, IdentityTestId.pgType, IdentityTestRow.apply, row => Array[Any](row.alwaysGenerated, row.defaultGenerated, row.name)) given pgText: PgText[IdentityTestRow] = PgText.from(`_rowParser`) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestRowUnsaved.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestRowUnsaved.scala index 427c1adead..36e6694e7c 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestRowUnsaved.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestRowUnsaved.scala @@ -24,5 +24,5 @@ case class IdentityTestRowUnsaved( } object IdentityTestRowUnsaved { - given pgText: PgText[IdentityTestRowUnsaved] = PgText.instance((row, sb) => { IdentityTestId.dbType.text.unsafeEncode(row.name, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.int4.text).unsafeEncode(row.defaultGenerated, sb) }) + given pgText: PgText[IdentityTestRowUnsaved] = PgText.instance((row, sb) => { IdentityTestId.pgType.text.unsafeEncode(row.name, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.int4.text).unsafeEncode(row.defaultGenerated, sb) }) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/issue142/Issue142Fields.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/issue142/Issue142Fields.scala index 9ef2b459be..8cde138f42 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/issue142/Issue142Fields.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/issue142/Issue142Fields.scala @@ -24,7 +24,7 @@ class Issue142Fields(val `_path`: java.util.List[Path]) extends TupleExpr1[Issue Optional.empty(), Optional.empty(), (row, value) => row.copy(tabellkode = value), - Issue142Id.dbType + Issue142Id.pgType ) } diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/issue142/Issue142Id.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/issue142/Issue142Id.scala index ecc35d507c..b2db2a8aef 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/issue142/Issue142Id.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/issue142/Issue142Id.scala @@ -18,12 +18,12 @@ sealed abstract class Issue142Id(val value: String) object Issue142Id { def apply(underlying: String): Issue142Id = ByName.getOrElse(underlying, Unknown(underlying)) - given dbTypeArray: PgType[Array[Issue142Id]] = { + given pgTypeArray: PgType[Array[Issue142Id]] = { PgTypes.textArray .bimap(xs => xs.map(Issue142Id.apply), xs => xs.map(_.value)) } - given dbType: PgType[Issue142Id] = PgTypes.text.bimap(Issue142Id.apply, _.value) + given pgType: PgType[Issue142Id] = PgTypes.text.bimap(Issue142Id.apply, _.value) case object aa extends Issue142Id("aa") diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/issue142/Issue142RepoImpl.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/issue142/Issue142RepoImpl.scala index 1a8cda6c11..1d8f716b62 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/issue142/Issue142RepoImpl.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/issue142/Issue142RepoImpl.scala @@ -19,19 +19,19 @@ import dev.typr.foundations.Fragment.interpolate class Issue142RepoImpl extends Issue142Repo { override def delete: DeleteBuilder[Issue142Fields, Issue142Row] = DeleteBuilder.of(""""public"."issue142"""", Issue142Fields.structure, Dialect.POSTGRESQL) - override def deleteById(tabellkode: Issue142Id)(using c: Connection): java.lang.Boolean = interpolate(Fragment.lit("""delete from "public"."issue142" where "tabellkode" = """), Fragment.encode(Issue142Id.dbType, tabellkode), Fragment.lit("")).update().runUnchecked(c) > 0 + override def deleteById(tabellkode: Issue142Id)(using c: Connection): java.lang.Boolean = interpolate(Fragment.lit("""delete from "public"."issue142" where "tabellkode" = """), Fragment.encode(Issue142Id.pgType, tabellkode), Fragment.lit("")).update().runUnchecked(c) > 0 override def deleteByIds(tabellkodes: Array[Issue142Id])(using c: Connection): Integer = { interpolate(Fragment.lit("""delete from "public"."issue142" - where "tabellkode" = ANY("""), Fragment.encode(Issue142Id.dbTypeArray, tabellkodes), Fragment.lit(")")) + where "tabellkode" = ANY("""), Fragment.encode(Issue142Id.pgTypeArray, tabellkodes), Fragment.lit(")")) .update() .runUnchecked(c) } override def insert(unsaved: Issue142Row)(using c: Connection): Issue142Row = { interpolate(Fragment.lit("""insert into "public"."issue142"("tabellkode") - values ("""), Fragment.encode(Issue142Id.dbType, unsaved.tabellkode), Fragment.lit(""") + values ("""), Fragment.encode(Issue142Id.pgType, unsaved.tabellkode), Fragment.lit(""") RETURNING "tabellkode" """)) .updateReturning(Issue142Row.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -53,13 +53,13 @@ class Issue142RepoImpl extends Issue142Repo { override def selectById(tabellkode: Issue142Id)(using c: Connection): Optional[Issue142Row] = { interpolate(Fragment.lit("""select "tabellkode" from "public"."issue142" - where "tabellkode" = """), Fragment.encode(Issue142Id.dbType, tabellkode), Fragment.lit("")).query(Issue142Row.`_rowParser`.first()).runUnchecked(c) + where "tabellkode" = """), Fragment.encode(Issue142Id.pgType, tabellkode), Fragment.lit("")).query(Issue142Row.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(tabellkodes: Array[Issue142Id])(using c: Connection): java.util.List[Issue142Row] = { interpolate(Fragment.lit("""select "tabellkode" from "public"."issue142" - where "tabellkode" = ANY("""), Fragment.encode(Issue142Id.dbTypeArray, tabellkodes), Fragment.lit(")")).query(Issue142Row.`_rowParser`.all()).runUnchecked(c) + where "tabellkode" = ANY("""), Fragment.encode(Issue142Id.pgTypeArray, tabellkodes), Fragment.lit(")")).query(Issue142Row.`_rowParser`.all()).runUnchecked(c) } override def selectByIdsTracked(tabellkodes: Array[Issue142Id])(using c: Connection): java.util.Map[Issue142Id, Issue142Row] = { @@ -72,7 +72,7 @@ class Issue142RepoImpl extends Issue142Repo { override def upsert(unsaved: Issue142Row)(using c: Connection): Issue142Row = { interpolate(Fragment.lit("""insert into "public"."issue142"("tabellkode") - values ("""), Fragment.encode(Issue142Id.dbType, unsaved.tabellkode), Fragment.lit(""") + values ("""), Fragment.encode(Issue142Id.pgType, unsaved.tabellkode), Fragment.lit(""") on conflict ("tabellkode") do update set "tabellkode" = EXCLUDED."tabellkode" returning "tabellkode"""")) diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/issue142/Issue142Row.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/issue142/Issue142Row.scala index 4bdcd60c7f..539aefd469 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/issue142/Issue142Row.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/issue142/Issue142Row.scala @@ -20,7 +20,7 @@ case class Issue142Row(tabellkode: Issue142Id) extends Tuple1[Issue142Id] { } object Issue142Row { - val `_rowParser`: RowParser[Issue142Row] = RowParsers.of(Issue142Id.dbType, Issue142Row.apply, row => Array[Any](row.tabellkode)) + val `_rowParser`: RowParser[Issue142Row] = RowParsers.of(Issue142Id.pgType, Issue142Row.apply, row => Array[Any](row.tabellkode)) given pgText: PgText[Issue142Row] = PgText.from(`_rowParser`) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/issue142_2/Issue1422Fields.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/issue142_2/Issue1422Fields.scala index 735ea93e75..f7986f72a4 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/issue142_2/Issue1422Fields.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/issue142_2/Issue1422Fields.scala @@ -28,7 +28,7 @@ class Issue1422Fields(val `_path`: java.util.List[Path]) extends TupleExpr1[Issu Optional.empty(), Optional.empty(), (row, value) => row.copy(tabellkode = value), - Issue142Id.dbType + Issue142Id.pgType ) } diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/issue142_2/Issue1422RepoImpl.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/issue142_2/Issue1422RepoImpl.scala index 1fdafb44fe..bd5b7599d1 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/issue142_2/Issue1422RepoImpl.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/issue142_2/Issue1422RepoImpl.scala @@ -20,19 +20,19 @@ import dev.typr.foundations.Fragment.interpolate class Issue1422RepoImpl extends Issue1422Repo { override def delete: DeleteBuilder[Issue1422Fields, Issue1422Row] = DeleteBuilder.of(""""public"."issue142_2"""", Issue1422Fields.structure, Dialect.POSTGRESQL) - override def deleteById(tabellkode: Issue142Id)(using c: Connection): java.lang.Boolean = interpolate(Fragment.lit("""delete from "public"."issue142_2" where "tabellkode" = """), Fragment.encode(Issue142Id.dbType, tabellkode), Fragment.lit("")).update().runUnchecked(c) > 0 + override def deleteById(tabellkode: Issue142Id)(using c: Connection): java.lang.Boolean = interpolate(Fragment.lit("""delete from "public"."issue142_2" where "tabellkode" = """), Fragment.encode(Issue142Id.pgType, tabellkode), Fragment.lit("")).update().runUnchecked(c) > 0 override def deleteByIds(tabellkodes: Array[Issue142Id])(using c: Connection): Integer = { interpolate(Fragment.lit("""delete from "public"."issue142_2" - where "tabellkode" = ANY("""), Fragment.encode(Issue142Id.dbTypeArray, tabellkodes), Fragment.lit(")")) + where "tabellkode" = ANY("""), Fragment.encode(Issue142Id.pgTypeArray, tabellkodes), Fragment.lit(")")) .update() .runUnchecked(c) } override def insert(unsaved: Issue1422Row)(using c: Connection): Issue1422Row = { interpolate(Fragment.lit("""insert into "public"."issue142_2"("tabellkode") - values ("""), Fragment.encode(Issue142Id.dbType, unsaved.tabellkode), Fragment.lit(""") + values ("""), Fragment.encode(Issue142Id.pgType, unsaved.tabellkode), Fragment.lit(""") RETURNING "tabellkode" """)) .updateReturning(Issue1422Row.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -54,13 +54,13 @@ class Issue1422RepoImpl extends Issue1422Repo { override def selectById(tabellkode: Issue142Id)(using c: Connection): Optional[Issue1422Row] = { interpolate(Fragment.lit("""select "tabellkode" from "public"."issue142_2" - where "tabellkode" = """), Fragment.encode(Issue142Id.dbType, tabellkode), Fragment.lit("")).query(Issue1422Row.`_rowParser`.first()).runUnchecked(c) + where "tabellkode" = """), Fragment.encode(Issue142Id.pgType, tabellkode), Fragment.lit("")).query(Issue1422Row.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(tabellkodes: Array[Issue142Id])(using c: Connection): java.util.List[Issue1422Row] = { interpolate(Fragment.lit("""select "tabellkode" from "public"."issue142_2" - where "tabellkode" = ANY("""), Fragment.encode(Issue142Id.dbTypeArray, tabellkodes), Fragment.lit(")")).query(Issue1422Row.`_rowParser`.all()).runUnchecked(c) + where "tabellkode" = ANY("""), Fragment.encode(Issue142Id.pgTypeArray, tabellkodes), Fragment.lit(")")).query(Issue1422Row.`_rowParser`.all()).runUnchecked(c) } override def selectByIdsTracked(tabellkodes: Array[Issue142Id])(using c: Connection): java.util.Map[Issue142Id, Issue1422Row] = { @@ -73,7 +73,7 @@ class Issue1422RepoImpl extends Issue1422Repo { override def upsert(unsaved: Issue1422Row)(using c: Connection): Issue1422Row = { interpolate(Fragment.lit("""insert into "public"."issue142_2"("tabellkode") - values ("""), Fragment.encode(Issue142Id.dbType, unsaved.tabellkode), Fragment.lit(""") + values ("""), Fragment.encode(Issue142Id.pgType, unsaved.tabellkode), Fragment.lit(""") on conflict ("tabellkode") do update set "tabellkode" = EXCLUDED."tabellkode" returning "tabellkode"""")) diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/issue142_2/Issue1422Row.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/issue142_2/Issue1422Row.scala index 253e09f174..943e8a85d0 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/issue142_2/Issue1422Row.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/issue142_2/Issue1422Row.scala @@ -24,7 +24,7 @@ case class Issue1422Row( } object Issue1422Row { - val `_rowParser`: RowParser[Issue1422Row] = RowParsers.of(Issue142Id.dbType, Issue1422Row.apply, row => Array[Any](row.tabellkode)) + val `_rowParser`: RowParser[Issue1422Row] = RowParsers.of(Issue142Id.pgType, Issue1422Row.apply, row => Array[Any](row.tabellkode)) given pgText: PgText[Issue1422Row] = PgText.from(`_rowParser`) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/pgtest/PgtestFields.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/pgtest/PgtestFields.scala index 17786b9168..85d5101674 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/pgtest/PgtestFields.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/pgtest/PgtestFields.scala @@ -300,7 +300,7 @@ class PgtestFields(val `_path`: java.util.List[Path]) extends TupleExpr70[java.l Optional.empty(), Optional.of("text"), (row, value) => row.copy(mydomain = value), - Mydomain.dbType + Mydomain.pgType ) } @@ -312,7 +312,7 @@ class PgtestFields(val `_path`: java.util.List[Path]) extends TupleExpr70[java.l Optional.empty(), Optional.of("public.myenum"), (row, value) => row.copy(myenum = value), - Myenum.dbType + Myenum.pgType ) } @@ -708,7 +708,7 @@ class PgtestFields(val `_path`: java.util.List[Path]) extends TupleExpr70[java.l Optional.of("text[]"), Optional.of("mydomain[]"), (row, value) => row.copy(mydomaines = value), - Mydomain.dbTypeArray + Mydomain.pgTypeArray ) } @@ -720,7 +720,7 @@ class PgtestFields(val `_path`: java.util.List[Path]) extends TupleExpr70[java.l Optional.empty(), Optional.of("myenum[]"), (row, value) => row.copy(myenumes = value), - Myenum.dbTypeArray + Myenum.pgTypeArray ) } diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/pgtest/PgtestRepoImpl.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/pgtest/PgtestRepoImpl.scala index dc2c8ad45c..5f1c984dc1 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/pgtest/PgtestRepoImpl.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/pgtest/PgtestRepoImpl.scala @@ -22,7 +22,7 @@ class PgtestRepoImpl extends PgtestRepo { override def insert(unsaved: PgtestRow)(using c: Connection): PgtestRow = { interpolate(Fragment.lit("""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", "mydomaines", "myenumes", "namees", "numerices", "pathes", "pointes", "polygones", "textes", "timees", "timestampes", "timestampzes", "timezes", "uuides", "varchares", "xmles") - values ("""), Fragment.encode(PgTypes.bool, unsaved.bool), Fragment.lit(", "), Fragment.encode(PgTypes.box, unsaved.box), Fragment.lit("::box, "), Fragment.encode(PgTypes.bpchar, unsaved.bpchar), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.bytea, unsaved.bytea), Fragment.lit("::bytea, "), Fragment.encode(PgTypes.bpchar, unsaved.char), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.circle, unsaved.circle), Fragment.lit("::circle, "), Fragment.encode(PgTypes.date, unsaved.date), Fragment.lit("::date, "), Fragment.encode(PgTypes.float4, unsaved.float4), Fragment.lit("::float4, "), Fragment.encode(PgTypes.float8, unsaved.float8), Fragment.lit("::float8, "), Fragment.encode(PgTypes.hstore, unsaved.hstore), Fragment.lit("::hstore, "), Fragment.encode(PgTypes.inet, unsaved.inet), Fragment.lit("::inet, "), Fragment.encode(PgTypes.int2, unsaved.int2), Fragment.lit("::int2, "), Fragment.encode(PgTypes.int2vector, unsaved.int2vector), Fragment.lit("::int2vector, "), Fragment.encode(PgTypes.int4, unsaved.int4), Fragment.lit("::int4, "), Fragment.encode(PgTypes.int8, unsaved.int8), Fragment.lit("::int8, "), Fragment.encode(PgTypes.interval, unsaved.interval), Fragment.lit("::interval, "), Fragment.encode(PgTypes.json, unsaved.json), Fragment.lit("::json, "), Fragment.encode(PgTypes.jsonb, unsaved.jsonb), Fragment.lit("::jsonb, "), Fragment.encode(PgTypes.line, unsaved.line), Fragment.lit("::line, "), Fragment.encode(PgTypes.lseg, unsaved.lseg), Fragment.lit("::lseg, "), Fragment.encode(PgTypes.money, unsaved.money), Fragment.lit("::money, "), Fragment.encode(Mydomain.dbType, unsaved.mydomain), Fragment.lit("::text, "), Fragment.encode(Myenum.dbType, unsaved.myenum), Fragment.lit("::public.myenum, "), Fragment.encode(PgTypes.name, unsaved.name), Fragment.lit("::name, "), Fragment.encode(PgTypes.numeric, unsaved.numeric), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.path, unsaved.path), Fragment.lit("::path, "), Fragment.encode(PgTypes.point, unsaved.point), Fragment.lit("::point, "), Fragment.encode(PgTypes.polygon, unsaved.polygon), Fragment.lit("::polygon, "), Fragment.encode(PgTypes.text, unsaved.text), Fragment.lit(", "), Fragment.encode(PgTypes.time, unsaved.time), Fragment.lit("::time, "), Fragment.encode(PgTypes.timestamp, unsaved.timestamp), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamptz, unsaved.timestampz), Fragment.lit("::timestamptz, "), Fragment.encode(PgTypes.timetz, unsaved.timez), Fragment.lit("::timetz, "), Fragment.encode(PgTypes.uuid, unsaved.uuid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.text, unsaved.varchar), Fragment.lit(", "), Fragment.encode(PgTypes.vector, unsaved.vector), Fragment.lit("::vector, "), Fragment.encode(PgTypes.xml, unsaved.xml), Fragment.lit("::xml, "), Fragment.encode(PgTypes.boxArray, unsaved.boxes), Fragment.lit("::box[], "), Fragment.encode(PgTypes.bpcharArray, unsaved.bpchares), Fragment.lit("::bpchar[], "), Fragment.encode(PgTypes.bpcharArray, unsaved.chares), Fragment.lit("::bpchar[], "), Fragment.encode(PgTypes.circleArray, unsaved.circlees), Fragment.lit("::circle[], "), Fragment.encode(PgTypes.dateArray, unsaved.datees), Fragment.lit("::date[], "), Fragment.encode(PgTypes.float4Array, unsaved.float4es), Fragment.lit("::float4[], "), Fragment.encode(PgTypes.float8Array, unsaved.float8es), Fragment.lit("::float8[], "), Fragment.encode(PgTypes.inetArray, unsaved.inetes), Fragment.lit("::inet[], "), Fragment.encode(PgTypes.int2Array, unsaved.int2es), Fragment.lit("::int2[], "), Fragment.encode(PgTypes.int2vectorArray, unsaved.int2vectores), Fragment.lit("::int2vector[], "), Fragment.encode(PgTypes.int4Array, unsaved.int4es), Fragment.lit("::int4[], "), Fragment.encode(PgTypes.int8Array, unsaved.int8es), Fragment.lit("::int8[], "), Fragment.encode(PgTypes.intervalArray, unsaved.intervales), Fragment.lit("::interval[], "), Fragment.encode(PgTypes.jsonArray, unsaved.jsones), Fragment.lit("::json[], "), Fragment.encode(PgTypes.jsonbArray, unsaved.jsonbes), Fragment.lit("::jsonb[], "), Fragment.encode(PgTypes.lineArray, unsaved.linees), Fragment.lit("::line[], "), Fragment.encode(PgTypes.lsegArray, unsaved.lseges), Fragment.lit("::lseg[], "), Fragment.encode(PgTypes.moneyArray, unsaved.moneyes), Fragment.lit("::money[], "), Fragment.encode(Mydomain.dbTypeArray, unsaved.mydomaines), Fragment.lit("::mydomain[], "), Fragment.encode(Myenum.dbTypeArray, unsaved.myenumes), Fragment.lit("::myenum[], "), Fragment.encode(PgTypes.nameArray, unsaved.namees), Fragment.lit("::name[], "), Fragment.encode(PgTypes.numericArray, unsaved.numerices), Fragment.lit("::numeric[], "), Fragment.encode(PgTypes.pathArray, unsaved.pathes), Fragment.lit("::path[], "), Fragment.encode(PgTypes.pointArray, unsaved.pointes), Fragment.lit("::point[], "), Fragment.encode(PgTypes.polygonArray, unsaved.polygones), Fragment.lit("::polygon[], "), Fragment.encode(PgTypes.textArray, unsaved.textes), Fragment.lit("::text[], "), Fragment.encode(PgTypes.timeArray, unsaved.timees), Fragment.lit("::time[], "), Fragment.encode(PgTypes.timestampArray, unsaved.timestampes), Fragment.lit("::timestamp[], "), Fragment.encode(PgTypes.timestamptzArray, unsaved.timestampzes), Fragment.lit("::timestamptz[], "), Fragment.encode(PgTypes.timetzArray, unsaved.timezes), Fragment.lit("::timetz[], "), Fragment.encode(PgTypes.uuidArray, unsaved.uuides), Fragment.lit("::uuid[], "), Fragment.encode(PgTypes.textArray, unsaved.varchares), Fragment.lit("::varchar[], "), Fragment.encode(PgTypes.xmlArray, unsaved.xmles), Fragment.lit("""::xml[]) + values ("""), Fragment.encode(PgTypes.bool, unsaved.bool), Fragment.lit(", "), Fragment.encode(PgTypes.box, unsaved.box), Fragment.lit("::box, "), Fragment.encode(PgTypes.bpchar, unsaved.bpchar), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.bytea, unsaved.bytea), Fragment.lit("::bytea, "), Fragment.encode(PgTypes.bpchar, unsaved.char), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.circle, unsaved.circle), Fragment.lit("::circle, "), Fragment.encode(PgTypes.date, unsaved.date), Fragment.lit("::date, "), Fragment.encode(PgTypes.float4, unsaved.float4), Fragment.lit("::float4, "), Fragment.encode(PgTypes.float8, unsaved.float8), Fragment.lit("::float8, "), Fragment.encode(PgTypes.hstore, unsaved.hstore), Fragment.lit("::hstore, "), Fragment.encode(PgTypes.inet, unsaved.inet), Fragment.lit("::inet, "), Fragment.encode(PgTypes.int2, unsaved.int2), Fragment.lit("::int2, "), Fragment.encode(PgTypes.int2vector, unsaved.int2vector), Fragment.lit("::int2vector, "), Fragment.encode(PgTypes.int4, unsaved.int4), Fragment.lit("::int4, "), Fragment.encode(PgTypes.int8, unsaved.int8), Fragment.lit("::int8, "), Fragment.encode(PgTypes.interval, unsaved.interval), Fragment.lit("::interval, "), Fragment.encode(PgTypes.json, unsaved.json), Fragment.lit("::json, "), Fragment.encode(PgTypes.jsonb, unsaved.jsonb), Fragment.lit("::jsonb, "), Fragment.encode(PgTypes.line, unsaved.line), Fragment.lit("::line, "), Fragment.encode(PgTypes.lseg, unsaved.lseg), Fragment.lit("::lseg, "), Fragment.encode(PgTypes.money, unsaved.money), Fragment.lit("::money, "), Fragment.encode(Mydomain.pgType, unsaved.mydomain), Fragment.lit("::text, "), Fragment.encode(Myenum.pgType, unsaved.myenum), Fragment.lit("::public.myenum, "), Fragment.encode(PgTypes.name, unsaved.name), Fragment.lit("::name, "), Fragment.encode(PgTypes.numeric, unsaved.numeric), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.path, unsaved.path), Fragment.lit("::path, "), Fragment.encode(PgTypes.point, unsaved.point), Fragment.lit("::point, "), Fragment.encode(PgTypes.polygon, unsaved.polygon), Fragment.lit("::polygon, "), Fragment.encode(PgTypes.text, unsaved.text), Fragment.lit(", "), Fragment.encode(PgTypes.time, unsaved.time), Fragment.lit("::time, "), Fragment.encode(PgTypes.timestamp, unsaved.timestamp), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamptz, unsaved.timestampz), Fragment.lit("::timestamptz, "), Fragment.encode(PgTypes.timetz, unsaved.timez), Fragment.lit("::timetz, "), Fragment.encode(PgTypes.uuid, unsaved.uuid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.text, unsaved.varchar), Fragment.lit(", "), Fragment.encode(PgTypes.vector, unsaved.vector), Fragment.lit("::vector, "), Fragment.encode(PgTypes.xml, unsaved.xml), Fragment.lit("::xml, "), Fragment.encode(PgTypes.boxArray, unsaved.boxes), Fragment.lit("::box[], "), Fragment.encode(PgTypes.bpcharArray, unsaved.bpchares), Fragment.lit("::bpchar[], "), Fragment.encode(PgTypes.bpcharArray, unsaved.chares), Fragment.lit("::bpchar[], "), Fragment.encode(PgTypes.circleArray, unsaved.circlees), Fragment.lit("::circle[], "), Fragment.encode(PgTypes.dateArray, unsaved.datees), Fragment.lit("::date[], "), Fragment.encode(PgTypes.float4Array, unsaved.float4es), Fragment.lit("::float4[], "), Fragment.encode(PgTypes.float8Array, unsaved.float8es), Fragment.lit("::float8[], "), Fragment.encode(PgTypes.inetArray, unsaved.inetes), Fragment.lit("::inet[], "), Fragment.encode(PgTypes.int2Array, unsaved.int2es), Fragment.lit("::int2[], "), Fragment.encode(PgTypes.int2vectorArray, unsaved.int2vectores), Fragment.lit("::int2vector[], "), Fragment.encode(PgTypes.int4Array, unsaved.int4es), Fragment.lit("::int4[], "), Fragment.encode(PgTypes.int8Array, unsaved.int8es), Fragment.lit("::int8[], "), Fragment.encode(PgTypes.intervalArray, unsaved.intervales), Fragment.lit("::interval[], "), Fragment.encode(PgTypes.jsonArray, unsaved.jsones), Fragment.lit("::json[], "), Fragment.encode(PgTypes.jsonbArray, unsaved.jsonbes), Fragment.lit("::jsonb[], "), Fragment.encode(PgTypes.lineArray, unsaved.linees), Fragment.lit("::line[], "), Fragment.encode(PgTypes.lsegArray, unsaved.lseges), Fragment.lit("::lseg[], "), Fragment.encode(PgTypes.moneyArray, unsaved.moneyes), Fragment.lit("::money[], "), Fragment.encode(Mydomain.pgTypeArray, unsaved.mydomaines), Fragment.lit("::mydomain[], "), Fragment.encode(Myenum.pgTypeArray, unsaved.myenumes), Fragment.lit("::myenum[], "), Fragment.encode(PgTypes.nameArray, unsaved.namees), Fragment.lit("::name[], "), Fragment.encode(PgTypes.numericArray, unsaved.numerices), Fragment.lit("::numeric[], "), Fragment.encode(PgTypes.pathArray, unsaved.pathes), Fragment.lit("::path[], "), Fragment.encode(PgTypes.pointArray, unsaved.pointes), Fragment.lit("::point[], "), Fragment.encode(PgTypes.polygonArray, unsaved.polygones), Fragment.lit("::polygon[], "), Fragment.encode(PgTypes.textArray, unsaved.textes), Fragment.lit("::text[], "), Fragment.encode(PgTypes.timeArray, unsaved.timees), Fragment.lit("::time[], "), Fragment.encode(PgTypes.timestampArray, unsaved.timestampes), Fragment.lit("::timestamp[], "), Fragment.encode(PgTypes.timestamptzArray, unsaved.timestampzes), Fragment.lit("::timestamptz[], "), Fragment.encode(PgTypes.timetzArray, unsaved.timezes), Fragment.lit("::timetz[], "), Fragment.encode(PgTypes.uuidArray, unsaved.uuides), Fragment.lit("::uuid[], "), Fragment.encode(PgTypes.textArray, unsaved.varchares), Fragment.lit("::varchar[], "), Fragment.encode(PgTypes.xmlArray, unsaved.xmles), Fragment.lit("""::xml[]) RETURNING "bool", "box", "bpchar", "bytea", "char", "circle", "date", "float4", "float8", "hstore", "inet", "int2", "int2vector", "int4", "int8", "interval", "json", "jsonb", "line", "lseg", "money"::numeric, "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"::numeric[], "mydomaines"::text[], "myenumes", "namees", "numerices", "pathes", "pointes", "polygones", "textes", "timees", "timestampes", "timestampzes", "timezes", "uuides", "varchares", "xmles" """)) .updateReturning(PgtestRow.`_rowParser`.exactlyOne()).runUnchecked(c) diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/pgtest/PgtestRow.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/pgtest/PgtestRow.scala index cfb145e9f4..b79c8ebf7d 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/pgtest/PgtestRow.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/pgtest/PgtestRow.scala @@ -251,7 +251,7 @@ case class PgtestRow( object PgtestRow { val `_rowParser`: RowParser[PgtestRow] = { - RowParsers.of(PgTypes.bool, PgTypes.box, PgTypes.bpchar, PgTypes.bytea, PgTypes.bpchar, PgTypes.circle, PgTypes.date, PgTypes.float4, PgTypes.float8, PgTypes.hstore, PgTypes.inet, PgTypes.int2, PgTypes.int2vector, PgTypes.int4, PgTypes.int8, PgTypes.interval, PgTypes.json, PgTypes.jsonb, PgTypes.line, PgTypes.lseg, PgTypes.money, Mydomain.dbType, Myenum.dbType, PgTypes.name, PgTypes.numeric, PgTypes.path, PgTypes.point, PgTypes.polygon, PgTypes.text, PgTypes.time, PgTypes.timestamp, PgTypes.timestamptz, PgTypes.timetz, PgTypes.uuid, PgTypes.text, PgTypes.vector, PgTypes.xml, PgTypes.boxArray, PgTypes.bpcharArray, PgTypes.bpcharArray, PgTypes.circleArray, PgTypes.dateArray, PgTypes.float4Array, PgTypes.float8Array, PgTypes.inetArray, PgTypes.int2Array, PgTypes.int2vectorArray, PgTypes.int4Array, PgTypes.int8Array, PgTypes.intervalArray, PgTypes.jsonArray, PgTypes.jsonbArray, PgTypes.lineArray, PgTypes.lsegArray, PgTypes.moneyArray, Mydomain.dbTypeArray, Myenum.dbTypeArray, PgTypes.nameArray, PgTypes.numericArray, PgTypes.pathArray, PgTypes.pointArray, PgTypes.polygonArray, PgTypes.textArray, PgTypes.timeArray, PgTypes.timestampArray, PgTypes.timestamptzArray, PgTypes.timetzArray, PgTypes.uuidArray, PgTypes.textArray, PgTypes.xmlArray, new Function70[java.lang.Boolean, PGbox, String, Array[scala.Byte], String, PGcircle, LocalDate, java.lang.Float, java.lang.Double, java.util.Map[String, String], Inet, java.lang.Short, Int2Vector, Integer, java.lang.Long, PGInterval, Json, Jsonb, PGline, PGlseg, Money, Mydomain, Myenum, String, java.math.BigDecimal, PGpath, PGpoint, PGpolygon, String, LocalTime, LocalDateTime, Instant, OffsetTime, UUID, String, Vector, Xml, Array[PGbox], Array[/* bpchar */ String], Array[/* bpchar */ String], Array[PGcircle], Array[LocalDate], Array[java.lang.Float], Array[java.lang.Double], Array[Inet], Array[java.lang.Short], Array[Int2Vector], Array[Integer], Array[java.lang.Long], Array[PGInterval], Array[Json], Array[Jsonb], Array[PGline], Array[PGlseg], Array[Money], Array[Mydomain], Array[Myenum], Array[String], Array[java.math.BigDecimal], Array[PGpath], Array[PGpoint], Array[PGpolygon], Array[String], Array[LocalTime], Array[LocalDateTime], Array[Instant], Array[OffsetTime], Array[UUID], Array[String], Array[Xml], PgtestRow] { + RowParsers.of(PgTypes.bool, PgTypes.box, PgTypes.bpchar, PgTypes.bytea, PgTypes.bpchar, PgTypes.circle, PgTypes.date, PgTypes.float4, PgTypes.float8, PgTypes.hstore, PgTypes.inet, PgTypes.int2, PgTypes.int2vector, PgTypes.int4, PgTypes.int8, PgTypes.interval, PgTypes.json, PgTypes.jsonb, PgTypes.line, PgTypes.lseg, PgTypes.money, Mydomain.pgType, Myenum.pgType, PgTypes.name, PgTypes.numeric, PgTypes.path, PgTypes.point, PgTypes.polygon, PgTypes.text, PgTypes.time, PgTypes.timestamp, PgTypes.timestamptz, PgTypes.timetz, PgTypes.uuid, PgTypes.text, PgTypes.vector, PgTypes.xml, PgTypes.boxArray, PgTypes.bpcharArray, PgTypes.bpcharArray, PgTypes.circleArray, PgTypes.dateArray, PgTypes.float4Array, PgTypes.float8Array, PgTypes.inetArray, PgTypes.int2Array, PgTypes.int2vectorArray, PgTypes.int4Array, PgTypes.int8Array, PgTypes.intervalArray, PgTypes.jsonArray, PgTypes.jsonbArray, PgTypes.lineArray, PgTypes.lsegArray, PgTypes.moneyArray, Mydomain.pgTypeArray, Myenum.pgTypeArray, PgTypes.nameArray, PgTypes.numericArray, PgTypes.pathArray, PgTypes.pointArray, PgTypes.polygonArray, PgTypes.textArray, PgTypes.timeArray, PgTypes.timestampArray, PgTypes.timestamptzArray, PgTypes.timetzArray, PgTypes.uuidArray, PgTypes.textArray, PgTypes.xmlArray, new Function70[java.lang.Boolean, PGbox, String, Array[scala.Byte], String, PGcircle, LocalDate, java.lang.Float, java.lang.Double, java.util.Map[String, String], Inet, java.lang.Short, Int2Vector, Integer, java.lang.Long, PGInterval, Json, Jsonb, PGline, PGlseg, Money, Mydomain, Myenum, String, java.math.BigDecimal, PGpath, PGpoint, PGpolygon, String, LocalTime, LocalDateTime, Instant, OffsetTime, UUID, String, Vector, Xml, Array[PGbox], Array[/* bpchar */ String], Array[/* bpchar */ String], Array[PGcircle], Array[LocalDate], Array[java.lang.Float], Array[java.lang.Double], Array[Inet], Array[java.lang.Short], Array[Int2Vector], Array[Integer], Array[java.lang.Long], Array[PGInterval], Array[Json], Array[Jsonb], Array[PGline], Array[PGlseg], Array[Money], Array[Mydomain], Array[Myenum], Array[String], Array[java.math.BigDecimal], Array[PGpath], Array[PGpoint], Array[PGpolygon], Array[String], Array[LocalTime], Array[LocalDateTime], Array[Instant], Array[OffsetTime], Array[UUID], Array[String], Array[Xml], PgtestRow] { override def apply( t0: java.lang.Boolean, t1: PGbox, diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/pgtestnull/PgtestnullFields.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/pgtestnull/PgtestnullFields.scala index f1443323c8..323b22e598 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/pgtestnull/PgtestnullFields.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/pgtestnull/PgtestnullFields.scala @@ -300,7 +300,7 @@ class PgtestnullFields(val `_path`: java.util.List[Path]) extends TupleExpr70[ja Optional.empty(), Optional.of("text"), (row, value) => row.copy(mydomain = value), - Mydomain.dbType + Mydomain.pgType ) } @@ -312,7 +312,7 @@ class PgtestnullFields(val `_path`: java.util.List[Path]) extends TupleExpr70[ja Optional.empty(), Optional.of("public.myenum"), (row, value) => row.copy(myenum = value), - Myenum.dbType + Myenum.pgType ) } @@ -708,7 +708,7 @@ class PgtestnullFields(val `_path`: java.util.List[Path]) extends TupleExpr70[ja Optional.of("text[]"), Optional.of("mydomain[]"), (row, value) => row.copy(mydomaines = value), - Mydomain.dbTypeArray + Mydomain.pgTypeArray ) } @@ -720,7 +720,7 @@ class PgtestnullFields(val `_path`: java.util.List[Path]) extends TupleExpr70[ja Optional.empty(), Optional.of("myenum[]"), (row, value) => row.copy(myenumes = value), - Myenum.dbTypeArray + Myenum.pgTypeArray ) } diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/pgtestnull/PgtestnullRepoImpl.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/pgtestnull/PgtestnullRepoImpl.scala index 26aa726a12..7a694bed4b 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/pgtestnull/PgtestnullRepoImpl.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/pgtestnull/PgtestnullRepoImpl.scala @@ -22,7 +22,7 @@ class PgtestnullRepoImpl extends PgtestnullRepo { override def insert(unsaved: PgtestnullRow)(using c: Connection): PgtestnullRow = { interpolate(Fragment.lit("""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", "mydomaines", "myenumes", "namees", "numerices", "pathes", "pointes", "polygones", "textes", "timees", "timestampes", "timestampzes", "timezes", "uuides", "varchares", "xmles") - values ("""), Fragment.encode(PgTypes.bool.opt(), unsaved.bool), Fragment.lit(", "), Fragment.encode(PgTypes.box.opt(), unsaved.box), Fragment.lit("::box, "), Fragment.encode(PgTypes.bpchar.opt(), unsaved.bpchar), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.bytea.opt(), unsaved.bytea), Fragment.lit("::bytea, "), Fragment.encode(PgTypes.bpchar.opt(), unsaved.char), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.circle.opt(), unsaved.circle), Fragment.lit("::circle, "), Fragment.encode(PgTypes.date.opt(), unsaved.date), Fragment.lit("::date, "), Fragment.encode(PgTypes.float4.opt(), unsaved.float4), Fragment.lit("::float4, "), Fragment.encode(PgTypes.float8.opt(), unsaved.float8), Fragment.lit("::float8, "), Fragment.encode(PgTypes.hstore.opt(), unsaved.hstore), Fragment.lit("::hstore, "), Fragment.encode(PgTypes.inet.opt(), unsaved.inet), Fragment.lit("::inet, "), Fragment.encode(PgTypes.int2.opt(), unsaved.int2), Fragment.lit("::int2, "), Fragment.encode(PgTypes.int2vector.opt(), unsaved.int2vector), Fragment.lit("::int2vector, "), Fragment.encode(PgTypes.int4.opt(), unsaved.int4), Fragment.lit("::int4, "), Fragment.encode(PgTypes.int8.opt(), unsaved.int8), Fragment.lit("::int8, "), Fragment.encode(PgTypes.interval.opt(), unsaved.interval), Fragment.lit("::interval, "), Fragment.encode(PgTypes.json.opt(), unsaved.json), Fragment.lit("::json, "), Fragment.encode(PgTypes.jsonb.opt(), unsaved.jsonb), Fragment.lit("::jsonb, "), Fragment.encode(PgTypes.line.opt(), unsaved.line), Fragment.lit("::line, "), Fragment.encode(PgTypes.lseg.opt(), unsaved.lseg), Fragment.lit("::lseg, "), Fragment.encode(PgTypes.money.opt(), unsaved.money), Fragment.lit("::money, "), Fragment.encode(Mydomain.dbType.opt(), unsaved.mydomain), Fragment.lit("::text, "), Fragment.encode(Myenum.dbType.opt(), unsaved.myenum), Fragment.lit("::public.myenum, "), Fragment.encode(PgTypes.name.opt(), unsaved.name), Fragment.lit("::name, "), Fragment.encode(PgTypes.numeric.opt(), unsaved.numeric), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.path.opt(), unsaved.path), Fragment.lit("::path, "), Fragment.encode(PgTypes.point.opt(), unsaved.point), Fragment.lit("::point, "), Fragment.encode(PgTypes.polygon.opt(), unsaved.polygon), Fragment.lit("::polygon, "), Fragment.encode(PgTypes.text.opt(), unsaved.text), Fragment.lit(", "), Fragment.encode(PgTypes.time.opt(), unsaved.time), Fragment.lit("::time, "), Fragment.encode(PgTypes.timestamp.opt(), unsaved.timestamp), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamptz.opt(), unsaved.timestampz), Fragment.lit("::timestamptz, "), Fragment.encode(PgTypes.timetz.opt(), unsaved.timez), Fragment.lit("::timetz, "), Fragment.encode(PgTypes.uuid.opt(), unsaved.uuid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.text.opt(), unsaved.varchar), Fragment.lit(", "), Fragment.encode(PgTypes.vector.opt(), unsaved.vector), Fragment.lit("::vector, "), Fragment.encode(PgTypes.xml.opt(), unsaved.xml), Fragment.lit("::xml, "), Fragment.encode(PgTypes.boxArray.opt(), unsaved.boxes), Fragment.lit("::box[], "), Fragment.encode(PgTypes.bpcharArray.opt(), unsaved.bpchares), Fragment.lit("::bpchar[], "), Fragment.encode(PgTypes.bpcharArray.opt(), unsaved.chares), Fragment.lit("::bpchar[], "), Fragment.encode(PgTypes.circleArray.opt(), unsaved.circlees), Fragment.lit("::circle[], "), Fragment.encode(PgTypes.dateArray.opt(), unsaved.datees), Fragment.lit("::date[], "), Fragment.encode(PgTypes.float4Array.opt(), unsaved.float4es), Fragment.lit("::float4[], "), Fragment.encode(PgTypes.float8Array.opt(), unsaved.float8es), Fragment.lit("::float8[], "), Fragment.encode(PgTypes.inetArray.opt(), unsaved.inetes), Fragment.lit("::inet[], "), Fragment.encode(PgTypes.int2Array.opt(), unsaved.int2es), Fragment.lit("::int2[], "), Fragment.encode(PgTypes.int2vectorArray.opt(), unsaved.int2vectores), Fragment.lit("::int2vector[], "), Fragment.encode(PgTypes.int4Array.opt(), unsaved.int4es), Fragment.lit("::int4[], "), Fragment.encode(PgTypes.int8Array.opt(), unsaved.int8es), Fragment.lit("::int8[], "), Fragment.encode(PgTypes.intervalArray.opt(), unsaved.intervales), Fragment.lit("::interval[], "), Fragment.encode(PgTypes.jsonArray.opt(), unsaved.jsones), Fragment.lit("::json[], "), Fragment.encode(PgTypes.jsonbArray.opt(), unsaved.jsonbes), Fragment.lit("::jsonb[], "), Fragment.encode(PgTypes.lineArray.opt(), unsaved.linees), Fragment.lit("::line[], "), Fragment.encode(PgTypes.lsegArray.opt(), unsaved.lseges), Fragment.lit("::lseg[], "), Fragment.encode(PgTypes.moneyArray.opt(), unsaved.moneyes), Fragment.lit("::money[], "), Fragment.encode(Mydomain.dbTypeArray.opt(), unsaved.mydomaines), Fragment.lit("::mydomain[], "), Fragment.encode(Myenum.dbTypeArray.opt(), unsaved.myenumes), Fragment.lit("::myenum[], "), Fragment.encode(PgTypes.nameArray.opt(), unsaved.namees), Fragment.lit("::name[], "), Fragment.encode(PgTypes.numericArray.opt(), unsaved.numerices), Fragment.lit("::numeric[], "), Fragment.encode(PgTypes.pathArray.opt(), unsaved.pathes), Fragment.lit("::path[], "), Fragment.encode(PgTypes.pointArray.opt(), unsaved.pointes), Fragment.lit("::point[], "), Fragment.encode(PgTypes.polygonArray.opt(), unsaved.polygones), Fragment.lit("::polygon[], "), Fragment.encode(PgTypes.textArray.opt(), unsaved.textes), Fragment.lit("::text[], "), Fragment.encode(PgTypes.timeArray.opt(), unsaved.timees), Fragment.lit("::time[], "), Fragment.encode(PgTypes.timestampArray.opt(), unsaved.timestampes), Fragment.lit("::timestamp[], "), Fragment.encode(PgTypes.timestamptzArray.opt(), unsaved.timestampzes), Fragment.lit("::timestamptz[], "), Fragment.encode(PgTypes.timetzArray.opt(), unsaved.timezes), Fragment.lit("::timetz[], "), Fragment.encode(PgTypes.uuidArray.opt(), unsaved.uuides), Fragment.lit("::uuid[], "), Fragment.encode(PgTypes.textArray.opt(), unsaved.varchares), Fragment.lit("::varchar[], "), Fragment.encode(PgTypes.xmlArray.opt(), unsaved.xmles), Fragment.lit("""::xml[]) + values ("""), Fragment.encode(PgTypes.bool.opt(), unsaved.bool), Fragment.lit(", "), Fragment.encode(PgTypes.box.opt(), unsaved.box), Fragment.lit("::box, "), Fragment.encode(PgTypes.bpchar.opt(), unsaved.bpchar), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.bytea.opt(), unsaved.bytea), Fragment.lit("::bytea, "), Fragment.encode(PgTypes.bpchar.opt(), unsaved.char), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.circle.opt(), unsaved.circle), Fragment.lit("::circle, "), Fragment.encode(PgTypes.date.opt(), unsaved.date), Fragment.lit("::date, "), Fragment.encode(PgTypes.float4.opt(), unsaved.float4), Fragment.lit("::float4, "), Fragment.encode(PgTypes.float8.opt(), unsaved.float8), Fragment.lit("::float8, "), Fragment.encode(PgTypes.hstore.opt(), unsaved.hstore), Fragment.lit("::hstore, "), Fragment.encode(PgTypes.inet.opt(), unsaved.inet), Fragment.lit("::inet, "), Fragment.encode(PgTypes.int2.opt(), unsaved.int2), Fragment.lit("::int2, "), Fragment.encode(PgTypes.int2vector.opt(), unsaved.int2vector), Fragment.lit("::int2vector, "), Fragment.encode(PgTypes.int4.opt(), unsaved.int4), Fragment.lit("::int4, "), Fragment.encode(PgTypes.int8.opt(), unsaved.int8), Fragment.lit("::int8, "), Fragment.encode(PgTypes.interval.opt(), unsaved.interval), Fragment.lit("::interval, "), Fragment.encode(PgTypes.json.opt(), unsaved.json), Fragment.lit("::json, "), Fragment.encode(PgTypes.jsonb.opt(), unsaved.jsonb), Fragment.lit("::jsonb, "), Fragment.encode(PgTypes.line.opt(), unsaved.line), Fragment.lit("::line, "), Fragment.encode(PgTypes.lseg.opt(), unsaved.lseg), Fragment.lit("::lseg, "), Fragment.encode(PgTypes.money.opt(), unsaved.money), Fragment.lit("::money, "), Fragment.encode(Mydomain.pgType.opt(), unsaved.mydomain), Fragment.lit("::text, "), Fragment.encode(Myenum.pgType.opt(), unsaved.myenum), Fragment.lit("::public.myenum, "), Fragment.encode(PgTypes.name.opt(), unsaved.name), Fragment.lit("::name, "), Fragment.encode(PgTypes.numeric.opt(), unsaved.numeric), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.path.opt(), unsaved.path), Fragment.lit("::path, "), Fragment.encode(PgTypes.point.opt(), unsaved.point), Fragment.lit("::point, "), Fragment.encode(PgTypes.polygon.opt(), unsaved.polygon), Fragment.lit("::polygon, "), Fragment.encode(PgTypes.text.opt(), unsaved.text), Fragment.lit(", "), Fragment.encode(PgTypes.time.opt(), unsaved.time), Fragment.lit("::time, "), Fragment.encode(PgTypes.timestamp.opt(), unsaved.timestamp), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamptz.opt(), unsaved.timestampz), Fragment.lit("::timestamptz, "), Fragment.encode(PgTypes.timetz.opt(), unsaved.timez), Fragment.lit("::timetz, "), Fragment.encode(PgTypes.uuid.opt(), unsaved.uuid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.text.opt(), unsaved.varchar), Fragment.lit(", "), Fragment.encode(PgTypes.vector.opt(), unsaved.vector), Fragment.lit("::vector, "), Fragment.encode(PgTypes.xml.opt(), unsaved.xml), Fragment.lit("::xml, "), Fragment.encode(PgTypes.boxArray.opt(), unsaved.boxes), Fragment.lit("::box[], "), Fragment.encode(PgTypes.bpcharArray.opt(), unsaved.bpchares), Fragment.lit("::bpchar[], "), Fragment.encode(PgTypes.bpcharArray.opt(), unsaved.chares), Fragment.lit("::bpchar[], "), Fragment.encode(PgTypes.circleArray.opt(), unsaved.circlees), Fragment.lit("::circle[], "), Fragment.encode(PgTypes.dateArray.opt(), unsaved.datees), Fragment.lit("::date[], "), Fragment.encode(PgTypes.float4Array.opt(), unsaved.float4es), Fragment.lit("::float4[], "), Fragment.encode(PgTypes.float8Array.opt(), unsaved.float8es), Fragment.lit("::float8[], "), Fragment.encode(PgTypes.inetArray.opt(), unsaved.inetes), Fragment.lit("::inet[], "), Fragment.encode(PgTypes.int2Array.opt(), unsaved.int2es), Fragment.lit("::int2[], "), Fragment.encode(PgTypes.int2vectorArray.opt(), unsaved.int2vectores), Fragment.lit("::int2vector[], "), Fragment.encode(PgTypes.int4Array.opt(), unsaved.int4es), Fragment.lit("::int4[], "), Fragment.encode(PgTypes.int8Array.opt(), unsaved.int8es), Fragment.lit("::int8[], "), Fragment.encode(PgTypes.intervalArray.opt(), unsaved.intervales), Fragment.lit("::interval[], "), Fragment.encode(PgTypes.jsonArray.opt(), unsaved.jsones), Fragment.lit("::json[], "), Fragment.encode(PgTypes.jsonbArray.opt(), unsaved.jsonbes), Fragment.lit("::jsonb[], "), Fragment.encode(PgTypes.lineArray.opt(), unsaved.linees), Fragment.lit("::line[], "), Fragment.encode(PgTypes.lsegArray.opt(), unsaved.lseges), Fragment.lit("::lseg[], "), Fragment.encode(PgTypes.moneyArray.opt(), unsaved.moneyes), Fragment.lit("::money[], "), Fragment.encode(Mydomain.pgTypeArray.opt(), unsaved.mydomaines), Fragment.lit("::mydomain[], "), Fragment.encode(Myenum.pgTypeArray.opt(), unsaved.myenumes), Fragment.lit("::myenum[], "), Fragment.encode(PgTypes.nameArray.opt(), unsaved.namees), Fragment.lit("::name[], "), Fragment.encode(PgTypes.numericArray.opt(), unsaved.numerices), Fragment.lit("::numeric[], "), Fragment.encode(PgTypes.pathArray.opt(), unsaved.pathes), Fragment.lit("::path[], "), Fragment.encode(PgTypes.pointArray.opt(), unsaved.pointes), Fragment.lit("::point[], "), Fragment.encode(PgTypes.polygonArray.opt(), unsaved.polygones), Fragment.lit("::polygon[], "), Fragment.encode(PgTypes.textArray.opt(), unsaved.textes), Fragment.lit("::text[], "), Fragment.encode(PgTypes.timeArray.opt(), unsaved.timees), Fragment.lit("::time[], "), Fragment.encode(PgTypes.timestampArray.opt(), unsaved.timestampes), Fragment.lit("::timestamp[], "), Fragment.encode(PgTypes.timestamptzArray.opt(), unsaved.timestampzes), Fragment.lit("::timestamptz[], "), Fragment.encode(PgTypes.timetzArray.opt(), unsaved.timezes), Fragment.lit("::timetz[], "), Fragment.encode(PgTypes.uuidArray.opt(), unsaved.uuides), Fragment.lit("::uuid[], "), Fragment.encode(PgTypes.textArray.opt(), unsaved.varchares), Fragment.lit("::varchar[], "), Fragment.encode(PgTypes.xmlArray.opt(), unsaved.xmles), Fragment.lit("""::xml[]) RETURNING "bool", "box", "bpchar", "bytea", "char", "circle", "date", "float4", "float8", "hstore", "inet", "int2", "int2vector", "int4", "int8", "interval", "json", "jsonb", "line", "lseg", "money"::numeric, "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"::numeric[], "mydomaines"::text[], "myenumes", "namees", "numerices", "pathes", "pointes", "polygones", "textes", "timees", "timestampes", "timestampzes", "timezes", "uuides", "varchares", "xmles" """)) .updateReturning(PgtestnullRow.`_rowParser`.exactlyOne()).runUnchecked(c) diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/pgtestnull/PgtestnullRow.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/pgtestnull/PgtestnullRow.scala index f242ab8581..4cefb6fc0d 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/pgtestnull/PgtestnullRow.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/pgtestnull/PgtestnullRow.scala @@ -252,7 +252,7 @@ case class PgtestnullRow( object PgtestnullRow { val `_rowParser`: RowParser[PgtestnullRow] = { - RowParsers.of(PgTypes.bool.opt(), PgTypes.box.opt(), PgTypes.bpchar.opt(), PgTypes.bytea.opt(), PgTypes.bpchar.opt(), PgTypes.circle.opt(), PgTypes.date.opt(), PgTypes.float4.opt(), PgTypes.float8.opt(), PgTypes.hstore.opt(), PgTypes.inet.opt(), PgTypes.int2.opt(), PgTypes.int2vector.opt(), PgTypes.int4.opt(), PgTypes.int8.opt(), PgTypes.interval.opt(), PgTypes.json.opt(), PgTypes.jsonb.opt(), PgTypes.line.opt(), PgTypes.lseg.opt(), PgTypes.money.opt(), Mydomain.dbType.opt(), Myenum.dbType.opt(), PgTypes.name.opt(), PgTypes.numeric.opt(), PgTypes.path.opt(), PgTypes.point.opt(), PgTypes.polygon.opt(), PgTypes.text.opt(), PgTypes.time.opt(), PgTypes.timestamp.opt(), PgTypes.timestamptz.opt(), PgTypes.timetz.opt(), PgTypes.uuid.opt(), PgTypes.text.opt(), PgTypes.vector.opt(), PgTypes.xml.opt(), PgTypes.boxArray.opt(), PgTypes.bpcharArray.opt(), PgTypes.bpcharArray.opt(), PgTypes.circleArray.opt(), PgTypes.dateArray.opt(), PgTypes.float4Array.opt(), PgTypes.float8Array.opt(), PgTypes.inetArray.opt(), PgTypes.int2Array.opt(), PgTypes.int2vectorArray.opt(), PgTypes.int4Array.opt(), PgTypes.int8Array.opt(), PgTypes.intervalArray.opt(), PgTypes.jsonArray.opt(), PgTypes.jsonbArray.opt(), PgTypes.lineArray.opt(), PgTypes.lsegArray.opt(), PgTypes.moneyArray.opt(), Mydomain.dbTypeArray.opt(), Myenum.dbTypeArray.opt(), PgTypes.nameArray.opt(), PgTypes.numericArray.opt(), PgTypes.pathArray.opt(), PgTypes.pointArray.opt(), PgTypes.polygonArray.opt(), PgTypes.textArray.opt(), PgTypes.timeArray.opt(), PgTypes.timestampArray.opt(), PgTypes.timestamptzArray.opt(), PgTypes.timetzArray.opt(), PgTypes.uuidArray.opt(), PgTypes.textArray.opt(), PgTypes.xmlArray.opt(), new Function70[Optional[java.lang.Boolean], Optional[PGbox], Optional[/* bpchar, max 3 chars */ String], Optional[Array[scala.Byte]], Optional[/* bpchar, max 1 chars */ String], Optional[PGcircle], Optional[LocalDate], Optional[java.lang.Float], Optional[java.lang.Double], Optional[java.util.Map[String, String]], Optional[Inet], Optional[java.lang.Short], Optional[Int2Vector], Optional[Integer], Optional[java.lang.Long], Optional[PGInterval], Optional[Json], Optional[Jsonb], Optional[PGline], Optional[PGlseg], Optional[Money], Optional[Mydomain], Optional[Myenum], Optional[String], Optional[java.math.BigDecimal], Optional[PGpath], Optional[PGpoint], Optional[PGpolygon], Optional[String], Optional[LocalTime], Optional[LocalDateTime], Optional[Instant], Optional[OffsetTime], Optional[UUID], Optional[String], Optional[Vector], Optional[Xml], Optional[Array[PGbox]], Optional[Array[/* bpchar */ String]], Optional[Array[/* bpchar */ String]], Optional[Array[PGcircle]], Optional[Array[LocalDate]], Optional[Array[java.lang.Float]], Optional[Array[java.lang.Double]], Optional[Array[Inet]], Optional[Array[java.lang.Short]], Optional[Array[Int2Vector]], Optional[Array[Integer]], Optional[Array[java.lang.Long]], Optional[Array[PGInterval]], Optional[Array[Json]], Optional[Array[Jsonb]], Optional[Array[PGline]], Optional[Array[PGlseg]], Optional[Array[Money]], Optional[Array[Mydomain]], Optional[Array[Myenum]], Optional[Array[String]], Optional[Array[java.math.BigDecimal]], Optional[Array[PGpath]], Optional[Array[PGpoint]], Optional[Array[PGpolygon]], Optional[Array[String]], Optional[Array[LocalTime]], Optional[Array[LocalDateTime]], Optional[Array[Instant]], Optional[Array[OffsetTime]], Optional[Array[UUID]], Optional[Array[String]], Optional[Array[Xml]], PgtestnullRow] { + RowParsers.of(PgTypes.bool.opt(), PgTypes.box.opt(), PgTypes.bpchar.opt(), PgTypes.bytea.opt(), PgTypes.bpchar.opt(), PgTypes.circle.opt(), PgTypes.date.opt(), PgTypes.float4.opt(), PgTypes.float8.opt(), PgTypes.hstore.opt(), PgTypes.inet.opt(), PgTypes.int2.opt(), PgTypes.int2vector.opt(), PgTypes.int4.opt(), PgTypes.int8.opt(), PgTypes.interval.opt(), PgTypes.json.opt(), PgTypes.jsonb.opt(), PgTypes.line.opt(), PgTypes.lseg.opt(), PgTypes.money.opt(), Mydomain.pgType.opt(), Myenum.pgType.opt(), PgTypes.name.opt(), PgTypes.numeric.opt(), PgTypes.path.opt(), PgTypes.point.opt(), PgTypes.polygon.opt(), PgTypes.text.opt(), PgTypes.time.opt(), PgTypes.timestamp.opt(), PgTypes.timestamptz.opt(), PgTypes.timetz.opt(), PgTypes.uuid.opt(), PgTypes.text.opt(), PgTypes.vector.opt(), PgTypes.xml.opt(), PgTypes.boxArray.opt(), PgTypes.bpcharArray.opt(), PgTypes.bpcharArray.opt(), PgTypes.circleArray.opt(), PgTypes.dateArray.opt(), PgTypes.float4Array.opt(), PgTypes.float8Array.opt(), PgTypes.inetArray.opt(), PgTypes.int2Array.opt(), PgTypes.int2vectorArray.opt(), PgTypes.int4Array.opt(), PgTypes.int8Array.opt(), PgTypes.intervalArray.opt(), PgTypes.jsonArray.opt(), PgTypes.jsonbArray.opt(), PgTypes.lineArray.opt(), PgTypes.lsegArray.opt(), PgTypes.moneyArray.opt(), Mydomain.pgTypeArray.opt(), Myenum.pgTypeArray.opt(), PgTypes.nameArray.opt(), PgTypes.numericArray.opt(), PgTypes.pathArray.opt(), PgTypes.pointArray.opt(), PgTypes.polygonArray.opt(), PgTypes.textArray.opt(), PgTypes.timeArray.opt(), PgTypes.timestampArray.opt(), PgTypes.timestamptzArray.opt(), PgTypes.timetzArray.opt(), PgTypes.uuidArray.opt(), PgTypes.textArray.opt(), PgTypes.xmlArray.opt(), new Function70[Optional[java.lang.Boolean], Optional[PGbox], Optional[/* bpchar, max 3 chars */ String], Optional[Array[scala.Byte]], Optional[/* bpchar, max 1 chars */ String], Optional[PGcircle], Optional[LocalDate], Optional[java.lang.Float], Optional[java.lang.Double], Optional[java.util.Map[String, String]], Optional[Inet], Optional[java.lang.Short], Optional[Int2Vector], Optional[Integer], Optional[java.lang.Long], Optional[PGInterval], Optional[Json], Optional[Jsonb], Optional[PGline], Optional[PGlseg], Optional[Money], Optional[Mydomain], Optional[Myenum], Optional[String], Optional[java.math.BigDecimal], Optional[PGpath], Optional[PGpoint], Optional[PGpolygon], Optional[String], Optional[LocalTime], Optional[LocalDateTime], Optional[Instant], Optional[OffsetTime], Optional[UUID], Optional[String], Optional[Vector], Optional[Xml], Optional[Array[PGbox]], Optional[Array[/* bpchar */ String]], Optional[Array[/* bpchar */ String]], Optional[Array[PGcircle]], Optional[Array[LocalDate]], Optional[Array[java.lang.Float]], Optional[Array[java.lang.Double]], Optional[Array[Inet]], Optional[Array[java.lang.Short]], Optional[Array[Int2Vector]], Optional[Array[Integer]], Optional[Array[java.lang.Long]], Optional[Array[PGInterval]], Optional[Array[Json]], Optional[Array[Jsonb]], Optional[Array[PGline]], Optional[Array[PGlseg]], Optional[Array[Money]], Optional[Array[Mydomain]], Optional[Array[Myenum]], Optional[Array[String]], Optional[Array[java.math.BigDecimal]], Optional[Array[PGpath]], Optional[Array[PGpoint]], Optional[Array[PGpolygon]], Optional[Array[String]], Optional[Array[LocalTime]], Optional[Array[LocalDateTime]], Optional[Array[Instant]], Optional[Array[OffsetTime]], Optional[Array[UUID]], Optional[Array[String]], Optional[Array[Xml]], PgtestnullRow] { override def apply( t0: Optional[java.lang.Boolean], t1: Optional[PGbox], diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/precision_types/PrecisionTypesFields.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/precision_types/PrecisionTypesFields.scala index 2c076927b3..18ef3e7fa9 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/precision_types/PrecisionTypesFields.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/precision_types/PrecisionTypesFields.scala @@ -37,7 +37,7 @@ class PrecisionTypesFields(val `_path`: java.util.List[Path]) extends TupleExpr2 Optional.empty(), Optional.of("int4"), (row, value) => row.copy(id = value), - PrecisionTypesId.dbType + PrecisionTypesId.pgType ) } @@ -49,7 +49,7 @@ class PrecisionTypesFields(val `_path`: java.util.List[Path]) extends TupleExpr2 Optional.empty(), Optional.empty(), (row, value) => row.copy(string10 = value), - String10.dbType + String10.pgType ) } @@ -61,7 +61,7 @@ class PrecisionTypesFields(val `_path`: java.util.List[Path]) extends TupleExpr2 Optional.empty(), Optional.empty(), (row, value) => row.copy(string20 = value), - String20.dbType + String20.pgType ) } @@ -73,7 +73,7 @@ class PrecisionTypesFields(val `_path`: java.util.List[Path]) extends TupleExpr2 Optional.empty(), Optional.empty(), (row, value) => row.copy(string50 = value), - String50.dbType + String50.pgType ) } @@ -85,7 +85,7 @@ class PrecisionTypesFields(val `_path`: java.util.List[Path]) extends TupleExpr2 Optional.empty(), Optional.empty(), (row, value) => row.copy(string100 = value), - String100.dbType + String100.pgType ) } @@ -97,7 +97,7 @@ class PrecisionTypesFields(val `_path`: java.util.List[Path]) extends TupleExpr2 Optional.empty(), Optional.empty(), (row, value) => row.copy(string255 = value), - String255.dbType + String255.pgType ) } @@ -109,7 +109,7 @@ class PrecisionTypesFields(val `_path`: java.util.List[Path]) extends TupleExpr2 Optional.empty(), Optional.of("bpchar"), (row, value) => row.copy(bpchar3 = value), - PaddedString3.dbType + PaddedString3.pgType ) } @@ -121,7 +121,7 @@ class PrecisionTypesFields(val `_path`: java.util.List[Path]) extends TupleExpr2 Optional.empty(), Optional.of("bpchar"), (row, value) => row.copy(bpchar10 = value), - PaddedString10.dbType + PaddedString10.pgType ) } diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/precision_types/PrecisionTypesId.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/precision_types/PrecisionTypesId.scala index f50e6f4706..9e119506d1 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/precision_types/PrecisionTypesId.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/precision_types/PrecisionTypesId.scala @@ -16,7 +16,7 @@ case class PrecisionTypesId(@JsonValue value: Integer) extends scala.AnyVal object PrecisionTypesId { given bijection: Bijection[PrecisionTypesId, Integer] = Bijection.apply[PrecisionTypesId, Integer](_.value)(PrecisionTypesId.apply) - given dbType: PgType[PrecisionTypesId] = PgTypes.int4.bimap(PrecisionTypesId.apply, _.value) + given pgType: PgType[PrecisionTypesId] = PgTypes.int4.bimap(PrecisionTypesId.apply, _.value) - given dbTypeArray: PgType[Array[PrecisionTypesId]] = PgTypes.int4Array.bimap(xs => xs.map(PrecisionTypesId.apply), xs => xs.map(_.value)) + given pgTypeArray: PgType[Array[PrecisionTypesId]] = PgTypes.int4Array.bimap(xs => xs.map(PrecisionTypesId.apply), xs => xs.map(_.value)) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/precision_types/PrecisionTypesRepoImpl.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/precision_types/PrecisionTypesRepoImpl.scala index 9f468b30d7..b97331d613 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/precision_types/PrecisionTypesRepoImpl.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/precision_types/PrecisionTypesRepoImpl.scala @@ -28,19 +28,19 @@ import dev.typr.foundations.Fragment.interpolate class PrecisionTypesRepoImpl extends PrecisionTypesRepo { override def delete: DeleteBuilder[PrecisionTypesFields, PrecisionTypesRow] = DeleteBuilder.of(""""public"."precision_types"""", PrecisionTypesFields.structure, Dialect.POSTGRESQL) - override def deleteById(id: PrecisionTypesId)(using c: Connection): java.lang.Boolean = interpolate(Fragment.lit("""delete from "public"."precision_types" where "id" = """), Fragment.encode(PrecisionTypesId.dbType, id), Fragment.lit("")).update().runUnchecked(c) > 0 + override def deleteById(id: PrecisionTypesId)(using c: Connection): java.lang.Boolean = interpolate(Fragment.lit("""delete from "public"."precision_types" where "id" = """), Fragment.encode(PrecisionTypesId.pgType, id), Fragment.lit("")).update().runUnchecked(c) > 0 override def deleteByIds(ids: Array[PrecisionTypesId])(using c: Connection): Integer = { interpolate(Fragment.lit("""delete from "public"."precision_types" - where "id" = ANY("""), Fragment.encode(PrecisionTypesId.dbTypeArray, ids), Fragment.lit(")")) + where "id" = ANY("""), Fragment.encode(PrecisionTypesId.pgTypeArray, ids), Fragment.lit(")")) .update() .runUnchecked(c) } override def insert(unsaved: PrecisionTypesRow)(using c: Connection): PrecisionTypesRow = { interpolate(Fragment.lit("""insert into "public"."precision_types"("id", "string10", "string20", "string50", "string100", "string255", "bpchar3", "bpchar10", "decimal5_2", "decimal10_2", "decimal18_4", "numeric8_2", "numeric12_4", "timestamp0", "timestamp3", "timestamp6", "timestamptz0", "timestamptz3", "timestamptz6", "time0", "time3", "time6", "timetz0", "timetz3", "timetz6") - values ("""), Fragment.encode(PrecisionTypesId.dbType, unsaved.id), Fragment.lit("::int4, "), Fragment.encode(String10.dbType, unsaved.string10), Fragment.lit(", "), Fragment.encode(String20.dbType, unsaved.string20), Fragment.lit(", "), Fragment.encode(String50.dbType, unsaved.string50), Fragment.lit(", "), Fragment.encode(String100.dbType, unsaved.string100), Fragment.lit(", "), Fragment.encode(String255.dbType, unsaved.string255), Fragment.lit(", "), Fragment.encode(PaddedString3.dbType, unsaved.bpchar3), Fragment.lit("::bpchar, "), Fragment.encode(PaddedString10.dbType, unsaved.bpchar10), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.numeric, unsaved.decimal52), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.decimal102), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.decimal184), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.numeric82), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.numeric124), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.timestamp, unsaved.timestamp0), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamp, unsaved.timestamp3), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamp, unsaved.timestamp6), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamptz, unsaved.timestamptz0), Fragment.lit("::timestamptz, "), Fragment.encode(PgTypes.timestamptz, unsaved.timestamptz3), Fragment.lit("::timestamptz, "), Fragment.encode(PgTypes.timestamptz, unsaved.timestamptz6), Fragment.lit("::timestamptz, "), Fragment.encode(PgTypes.time, unsaved.time0), Fragment.lit("::time, "), Fragment.encode(PgTypes.time, unsaved.time3), Fragment.lit("::time, "), Fragment.encode(PgTypes.time, unsaved.time6), Fragment.lit("::time, "), Fragment.encode(PgTypes.timetz, unsaved.timetz0), Fragment.lit("::timetz, "), Fragment.encode(PgTypes.timetz, unsaved.timetz3), Fragment.lit("::timetz, "), Fragment.encode(PgTypes.timetz, unsaved.timetz6), Fragment.lit("""::timetz) + values ("""), Fragment.encode(PrecisionTypesId.pgType, unsaved.id), Fragment.lit("::int4, "), Fragment.encode(String10.pgType, unsaved.string10), Fragment.lit(", "), Fragment.encode(String20.pgType, unsaved.string20), Fragment.lit(", "), Fragment.encode(String50.pgType, unsaved.string50), Fragment.lit(", "), Fragment.encode(String100.pgType, unsaved.string100), Fragment.lit(", "), Fragment.encode(String255.pgType, unsaved.string255), Fragment.lit(", "), Fragment.encode(PaddedString3.pgType, unsaved.bpchar3), Fragment.lit("::bpchar, "), Fragment.encode(PaddedString10.pgType, unsaved.bpchar10), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.numeric, unsaved.decimal52), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.decimal102), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.decimal184), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.numeric82), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.numeric124), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.timestamp, unsaved.timestamp0), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamp, unsaved.timestamp3), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamp, unsaved.timestamp6), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamptz, unsaved.timestamptz0), Fragment.lit("::timestamptz, "), Fragment.encode(PgTypes.timestamptz, unsaved.timestamptz3), Fragment.lit("::timestamptz, "), Fragment.encode(PgTypes.timestamptz, unsaved.timestamptz6), Fragment.lit("::timestamptz, "), Fragment.encode(PgTypes.time, unsaved.time0), Fragment.lit("::time, "), Fragment.encode(PgTypes.time, unsaved.time3), Fragment.lit("::time, "), Fragment.encode(PgTypes.time, unsaved.time6), Fragment.lit("::time, "), Fragment.encode(PgTypes.timetz, unsaved.timetz0), Fragment.lit("::timetz, "), Fragment.encode(PgTypes.timetz, unsaved.timetz3), Fragment.lit("::timetz, "), Fragment.encode(PgTypes.timetz, unsaved.timetz6), Fragment.lit("""::timetz) RETURNING "id", "string10", "string20", "string50", "string100", "string255", "bpchar3", "bpchar10", "decimal5_2", "decimal10_2", "decimal18_4", "numeric8_2", "numeric12_4", "timestamp0", "timestamp3", "timestamp6", "timestamptz0", "timestamptz3", "timestamptz6", "time0", "time3", "time6", "timetz0", "timetz3", "timetz6" """)) .updateReturning(PrecisionTypesRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -50,19 +50,19 @@ class PrecisionTypesRepoImpl extends PrecisionTypesRepo { val columns: ArrayList[Fragment] = new ArrayList() val values: ArrayList[Fragment] = new ArrayList() columns.add(Fragment.lit(""""string10"""")): @scala.annotation.nowarn - values.add(interpolate(Fragment.encode(String10.dbType, unsaved.string10), Fragment.lit(""))): @scala.annotation.nowarn + values.add(interpolate(Fragment.encode(String10.pgType, unsaved.string10), Fragment.lit(""))): @scala.annotation.nowarn columns.add(Fragment.lit(""""string20"""")): @scala.annotation.nowarn - values.add(interpolate(Fragment.encode(String20.dbType, unsaved.string20), Fragment.lit(""))): @scala.annotation.nowarn + values.add(interpolate(Fragment.encode(String20.pgType, unsaved.string20), Fragment.lit(""))): @scala.annotation.nowarn columns.add(Fragment.lit(""""string50"""")): @scala.annotation.nowarn - values.add(interpolate(Fragment.encode(String50.dbType, unsaved.string50), Fragment.lit(""))): @scala.annotation.nowarn + values.add(interpolate(Fragment.encode(String50.pgType, unsaved.string50), Fragment.lit(""))): @scala.annotation.nowarn columns.add(Fragment.lit(""""string100"""")): @scala.annotation.nowarn - values.add(interpolate(Fragment.encode(String100.dbType, unsaved.string100), Fragment.lit(""))): @scala.annotation.nowarn + values.add(interpolate(Fragment.encode(String100.pgType, unsaved.string100), Fragment.lit(""))): @scala.annotation.nowarn columns.add(Fragment.lit(""""string255"""")): @scala.annotation.nowarn - values.add(interpolate(Fragment.encode(String255.dbType, unsaved.string255), Fragment.lit(""))): @scala.annotation.nowarn + values.add(interpolate(Fragment.encode(String255.pgType, unsaved.string255), Fragment.lit(""))): @scala.annotation.nowarn columns.add(Fragment.lit(""""bpchar3"""")): @scala.annotation.nowarn - values.add(interpolate(Fragment.encode(PaddedString3.dbType, unsaved.bpchar3), Fragment.lit("::bpchar"))): @scala.annotation.nowarn + values.add(interpolate(Fragment.encode(PaddedString3.pgType, unsaved.bpchar3), Fragment.lit("::bpchar"))): @scala.annotation.nowarn columns.add(Fragment.lit(""""bpchar10"""")): @scala.annotation.nowarn - values.add(interpolate(Fragment.encode(PaddedString10.dbType, unsaved.bpchar10), Fragment.lit("::bpchar"))): @scala.annotation.nowarn + values.add(interpolate(Fragment.encode(PaddedString10.pgType, unsaved.bpchar10), Fragment.lit("::bpchar"))): @scala.annotation.nowarn columns.add(Fragment.lit(""""decimal5_2"""")): @scala.annotation.nowarn values.add(interpolate(Fragment.encode(PgTypes.numeric, unsaved.decimal52), Fragment.lit("::numeric"))): @scala.annotation.nowarn columns.add(Fragment.lit(""""decimal10_2"""")): @scala.annotation.nowarn @@ -99,7 +99,7 @@ class PrecisionTypesRepoImpl extends PrecisionTypesRepo { values.add(interpolate(Fragment.encode(PgTypes.timetz, unsaved.timetz6), Fragment.lit("::timetz"))): @scala.annotation.nowarn unsaved.id.visit( { }, - value => { columns.add(Fragment.lit(""""id"""")): @scala.annotation.nowarn; values.add(interpolate(Fragment.encode(PrecisionTypesId.dbType, value), Fragment.lit("::int4"))): @scala.annotation.nowarn } + value => { columns.add(Fragment.lit(""""id"""")): @scala.annotation.nowarn; values.add(interpolate(Fragment.encode(PrecisionTypesId.pgType, value), Fragment.lit("::int4"))): @scala.annotation.nowarn } ); val q: Fragment = { interpolate(Fragment.lit("""insert into "public"."precision_types"("""), Fragment.comma(columns), Fragment.lit(""") @@ -132,13 +132,13 @@ class PrecisionTypesRepoImpl extends PrecisionTypesRepo { override def selectById(id: PrecisionTypesId)(using c: Connection): Optional[PrecisionTypesRow] = { interpolate(Fragment.lit("""select "id", "string10", "string20", "string50", "string100", "string255", "bpchar3", "bpchar10", "decimal5_2", "decimal10_2", "decimal18_4", "numeric8_2", "numeric12_4", "timestamp0", "timestamp3", "timestamp6", "timestamptz0", "timestamptz3", "timestamptz6", "time0", "time3", "time6", "timetz0", "timetz3", "timetz6" from "public"."precision_types" - where "id" = """), Fragment.encode(PrecisionTypesId.dbType, id), Fragment.lit("")).query(PrecisionTypesRow.`_rowParser`.first()).runUnchecked(c) + where "id" = """), Fragment.encode(PrecisionTypesId.pgType, id), Fragment.lit("")).query(PrecisionTypesRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(ids: Array[PrecisionTypesId])(using c: Connection): java.util.List[PrecisionTypesRow] = { interpolate(Fragment.lit("""select "id", "string10", "string20", "string50", "string100", "string255", "bpchar3", "bpchar10", "decimal5_2", "decimal10_2", "decimal18_4", "numeric8_2", "numeric12_4", "timestamp0", "timestamp3", "timestamp6", "timestamptz0", "timestamptz3", "timestamptz6", "time0", "time3", "time6", "timetz0", "timetz3", "timetz6" from "public"."precision_types" - where "id" = ANY("""), Fragment.encode(PrecisionTypesId.dbTypeArray, ids), Fragment.lit(")")).query(PrecisionTypesRow.`_rowParser`.all()).runUnchecked(c) + where "id" = ANY("""), Fragment.encode(PrecisionTypesId.pgTypeArray, ids), Fragment.lit(")")).query(PrecisionTypesRow.`_rowParser`.all()).runUnchecked(c) } override def selectByIdsTracked(ids: Array[PrecisionTypesId])(using c: Connection): java.util.Map[PrecisionTypesId, PrecisionTypesRow] = { @@ -152,13 +152,13 @@ class PrecisionTypesRepoImpl extends PrecisionTypesRepo { override def update(row: PrecisionTypesRow)(using c: Connection): java.lang.Boolean = { val id: PrecisionTypesId = row.id return interpolate(Fragment.lit("""update "public"."precision_types" - set "string10" = """), Fragment.encode(String10.dbType, row.string10), Fragment.lit(""", - "string20" = """), Fragment.encode(String20.dbType, row.string20), Fragment.lit(""", - "string50" = """), Fragment.encode(String50.dbType, row.string50), Fragment.lit(""", - "string100" = """), Fragment.encode(String100.dbType, row.string100), Fragment.lit(""", - "string255" = """), Fragment.encode(String255.dbType, row.string255), Fragment.lit(""", - "bpchar3" = """), Fragment.encode(PaddedString3.dbType, row.bpchar3), Fragment.lit("""::bpchar, - "bpchar10" = """), Fragment.encode(PaddedString10.dbType, row.bpchar10), Fragment.lit("""::bpchar, + set "string10" = """), Fragment.encode(String10.pgType, row.string10), Fragment.lit(""", + "string20" = """), Fragment.encode(String20.pgType, row.string20), Fragment.lit(""", + "string50" = """), Fragment.encode(String50.pgType, row.string50), Fragment.lit(""", + "string100" = """), Fragment.encode(String100.pgType, row.string100), Fragment.lit(""", + "string255" = """), Fragment.encode(String255.pgType, row.string255), Fragment.lit(""", + "bpchar3" = """), Fragment.encode(PaddedString3.pgType, row.bpchar3), Fragment.lit("""::bpchar, + "bpchar10" = """), Fragment.encode(PaddedString10.pgType, row.bpchar10), Fragment.lit("""::bpchar, "decimal5_2" = """), Fragment.encode(PgTypes.numeric, row.decimal52), Fragment.lit("""::numeric, "decimal10_2" = """), Fragment.encode(PgTypes.numeric, row.decimal102), Fragment.lit("""::numeric, "decimal18_4" = """), Fragment.encode(PgTypes.numeric, row.decimal184), Fragment.lit("""::numeric, @@ -176,12 +176,12 @@ class PrecisionTypesRepoImpl extends PrecisionTypesRepo { "timetz0" = """), Fragment.encode(PgTypes.timetz, row.timetz0), Fragment.lit("""::timetz, "timetz3" = """), Fragment.encode(PgTypes.timetz, row.timetz3), Fragment.lit("""::timetz, "timetz6" = """), Fragment.encode(PgTypes.timetz, row.timetz6), Fragment.lit("""::timetz - where "id" = """), Fragment.encode(PrecisionTypesId.dbType, id), Fragment.lit("")).update().runUnchecked(c) > 0 + where "id" = """), Fragment.encode(PrecisionTypesId.pgType, id), Fragment.lit("")).update().runUnchecked(c) > 0 } override def upsert(unsaved: PrecisionTypesRow)(using c: Connection): PrecisionTypesRow = { interpolate(Fragment.lit("""insert into "public"."precision_types"("id", "string10", "string20", "string50", "string100", "string255", "bpchar3", "bpchar10", "decimal5_2", "decimal10_2", "decimal18_4", "numeric8_2", "numeric12_4", "timestamp0", "timestamp3", "timestamp6", "timestamptz0", "timestamptz3", "timestamptz6", "time0", "time3", "time6", "timetz0", "timetz3", "timetz6") - values ("""), Fragment.encode(PrecisionTypesId.dbType, unsaved.id), Fragment.lit("::int4, "), Fragment.encode(String10.dbType, unsaved.string10), Fragment.lit(", "), Fragment.encode(String20.dbType, unsaved.string20), Fragment.lit(", "), Fragment.encode(String50.dbType, unsaved.string50), Fragment.lit(", "), Fragment.encode(String100.dbType, unsaved.string100), Fragment.lit(", "), Fragment.encode(String255.dbType, unsaved.string255), Fragment.lit(", "), Fragment.encode(PaddedString3.dbType, unsaved.bpchar3), Fragment.lit("::bpchar, "), Fragment.encode(PaddedString10.dbType, unsaved.bpchar10), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.numeric, unsaved.decimal52), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.decimal102), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.decimal184), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.numeric82), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.numeric124), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.timestamp, unsaved.timestamp0), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamp, unsaved.timestamp3), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamp, unsaved.timestamp6), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamptz, unsaved.timestamptz0), Fragment.lit("::timestamptz, "), Fragment.encode(PgTypes.timestamptz, unsaved.timestamptz3), Fragment.lit("::timestamptz, "), Fragment.encode(PgTypes.timestamptz, unsaved.timestamptz6), Fragment.lit("::timestamptz, "), Fragment.encode(PgTypes.time, unsaved.time0), Fragment.lit("::time, "), Fragment.encode(PgTypes.time, unsaved.time3), Fragment.lit("::time, "), Fragment.encode(PgTypes.time, unsaved.time6), Fragment.lit("::time, "), Fragment.encode(PgTypes.timetz, unsaved.timetz0), Fragment.lit("::timetz, "), Fragment.encode(PgTypes.timetz, unsaved.timetz3), Fragment.lit("::timetz, "), Fragment.encode(PgTypes.timetz, unsaved.timetz6), Fragment.lit("""::timetz) + values ("""), Fragment.encode(PrecisionTypesId.pgType, unsaved.id), Fragment.lit("::int4, "), Fragment.encode(String10.pgType, unsaved.string10), Fragment.lit(", "), Fragment.encode(String20.pgType, unsaved.string20), Fragment.lit(", "), Fragment.encode(String50.pgType, unsaved.string50), Fragment.lit(", "), Fragment.encode(String100.pgType, unsaved.string100), Fragment.lit(", "), Fragment.encode(String255.pgType, unsaved.string255), Fragment.lit(", "), Fragment.encode(PaddedString3.pgType, unsaved.bpchar3), Fragment.lit("::bpchar, "), Fragment.encode(PaddedString10.pgType, unsaved.bpchar10), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.numeric, unsaved.decimal52), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.decimal102), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.decimal184), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.numeric82), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.numeric124), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.timestamp, unsaved.timestamp0), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamp, unsaved.timestamp3), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamp, unsaved.timestamp6), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamptz, unsaved.timestamptz0), Fragment.lit("::timestamptz, "), Fragment.encode(PgTypes.timestamptz, unsaved.timestamptz3), Fragment.lit("::timestamptz, "), Fragment.encode(PgTypes.timestamptz, unsaved.timestamptz6), Fragment.lit("::timestamptz, "), Fragment.encode(PgTypes.time, unsaved.time0), Fragment.lit("::time, "), Fragment.encode(PgTypes.time, unsaved.time3), Fragment.lit("::time, "), Fragment.encode(PgTypes.time, unsaved.time6), Fragment.lit("::time, "), Fragment.encode(PgTypes.timetz, unsaved.timetz0), Fragment.lit("::timetz, "), Fragment.encode(PgTypes.timetz, unsaved.timetz3), Fragment.lit("::timetz, "), Fragment.encode(PgTypes.timetz, unsaved.timetz6), Fragment.lit("""::timetz) on conflict ("id") do update set "string10" = EXCLUDED."string10", diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/precision_types/PrecisionTypesRow.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/precision_types/PrecisionTypesRow.scala index 9f3faea1c7..480c1804fe 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/precision_types/PrecisionTypesRow.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/precision_types/PrecisionTypesRow.scala @@ -139,7 +139,7 @@ case class PrecisionTypesRow( object PrecisionTypesRow { val `_rowParser`: RowParser[PrecisionTypesRow] = { - RowParsers.of(PrecisionTypesId.dbType, String10.dbType, String20.dbType, String50.dbType, String100.dbType, String255.dbType, PaddedString3.dbType, PaddedString10.dbType, PgTypes.numeric, PgTypes.numeric, PgTypes.numeric, PgTypes.numeric, PgTypes.numeric, PgTypes.timestamp, PgTypes.timestamp, PgTypes.timestamp, PgTypes.timestamptz, PgTypes.timestamptz, PgTypes.timestamptz, PgTypes.time, PgTypes.time, PgTypes.time, PgTypes.timetz, PgTypes.timetz, PgTypes.timetz, new Function25[PrecisionTypesId, String10, String20, String50, String100, String255, PaddedString3, PaddedString10, java.math.BigDecimal, java.math.BigDecimal, java.math.BigDecimal, java.math.BigDecimal, java.math.BigDecimal, LocalDateTime, LocalDateTime, LocalDateTime, Instant, Instant, Instant, LocalTime, LocalTime, LocalTime, OffsetTime, OffsetTime, OffsetTime, PrecisionTypesRow] { + RowParsers.of(PrecisionTypesId.pgType, String10.pgType, String20.pgType, String50.pgType, String100.pgType, String255.pgType, PaddedString3.pgType, PaddedString10.pgType, PgTypes.numeric, PgTypes.numeric, PgTypes.numeric, PgTypes.numeric, PgTypes.numeric, PgTypes.timestamp, PgTypes.timestamp, PgTypes.timestamp, PgTypes.timestamptz, PgTypes.timestamptz, PgTypes.timestamptz, PgTypes.time, PgTypes.time, PgTypes.time, PgTypes.timetz, PgTypes.timetz, PgTypes.timetz, new Function25[PrecisionTypesId, String10, String20, String50, String100, String255, PaddedString3, PaddedString10, java.math.BigDecimal, java.math.BigDecimal, java.math.BigDecimal, java.math.BigDecimal, java.math.BigDecimal, LocalDateTime, LocalDateTime, LocalDateTime, Instant, Instant, Instant, LocalTime, LocalTime, LocalTime, OffsetTime, OffsetTime, OffsetTime, PrecisionTypesRow] { override def apply( t0: PrecisionTypesId, t1: String10, diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/precision_types/PrecisionTypesRowUnsaved.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/precision_types/PrecisionTypesRowUnsaved.scala index 858200572c..0ad6b9adc9 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/precision_types/PrecisionTypesRowUnsaved.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/precision_types/PrecisionTypesRowUnsaved.scala @@ -83,5 +83,5 @@ case class PrecisionTypesRowUnsaved( } object PrecisionTypesRowUnsaved { - given pgText: PgText[PrecisionTypesRowUnsaved] = PgText.instance((row, sb) => { String10.dbType.text.unsafeEncode(row.string10, sb); sb.append(PgText.DELIMETER); String20.dbType.text.unsafeEncode(row.string20, sb); sb.append(PgText.DELIMETER); String50.dbType.text.unsafeEncode(row.string50, sb); sb.append(PgText.DELIMETER); String100.dbType.text.unsafeEncode(row.string100, sb); sb.append(PgText.DELIMETER); String255.dbType.text.unsafeEncode(row.string255, sb); sb.append(PgText.DELIMETER); PaddedString3.dbType.text.unsafeEncode(row.bpchar3, sb); sb.append(PgText.DELIMETER); PaddedString10.dbType.text.unsafeEncode(row.bpchar10, sb); sb.append(PgText.DELIMETER); PgTypes.numeric.text.unsafeEncode(row.decimal52, sb); sb.append(PgText.DELIMETER); PgTypes.numeric.text.unsafeEncode(row.decimal102, sb); sb.append(PgText.DELIMETER); PgTypes.numeric.text.unsafeEncode(row.decimal184, sb); sb.append(PgText.DELIMETER); PgTypes.numeric.text.unsafeEncode(row.numeric82, sb); sb.append(PgText.DELIMETER); PgTypes.numeric.text.unsafeEncode(row.numeric124, sb); sb.append(PgText.DELIMETER); PgTypes.timestamp.text.unsafeEncode(row.timestamp0, sb); sb.append(PgText.DELIMETER); PgTypes.timestamp.text.unsafeEncode(row.timestamp3, sb); sb.append(PgText.DELIMETER); PgTypes.timestamp.text.unsafeEncode(row.timestamp6, sb); sb.append(PgText.DELIMETER); PgTypes.timestamptz.text.unsafeEncode(row.timestamptz0, sb); sb.append(PgText.DELIMETER); PgTypes.timestamptz.text.unsafeEncode(row.timestamptz3, sb); sb.append(PgText.DELIMETER); PgTypes.timestamptz.text.unsafeEncode(row.timestamptz6, sb); sb.append(PgText.DELIMETER); PgTypes.time.text.unsafeEncode(row.time0, sb); sb.append(PgText.DELIMETER); PgTypes.time.text.unsafeEncode(row.time3, sb); sb.append(PgText.DELIMETER); PgTypes.time.text.unsafeEncode(row.time6, sb); sb.append(PgText.DELIMETER); PgTypes.timetz.text.unsafeEncode(row.timetz0, sb); sb.append(PgText.DELIMETER); PgTypes.timetz.text.unsafeEncode(row.timetz3, sb); sb.append(PgText.DELIMETER); PgTypes.timetz.text.unsafeEncode(row.timetz6, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PrecisionTypesId.dbType.text).unsafeEncode(row.id, sb) }) + given pgText: PgText[PrecisionTypesRowUnsaved] = PgText.instance((row, sb) => { String10.pgType.text.unsafeEncode(row.string10, sb); sb.append(PgText.DELIMETER); String20.pgType.text.unsafeEncode(row.string20, sb); sb.append(PgText.DELIMETER); String50.pgType.text.unsafeEncode(row.string50, sb); sb.append(PgText.DELIMETER); String100.pgType.text.unsafeEncode(row.string100, sb); sb.append(PgText.DELIMETER); String255.pgType.text.unsafeEncode(row.string255, sb); sb.append(PgText.DELIMETER); PaddedString3.pgType.text.unsafeEncode(row.bpchar3, sb); sb.append(PgText.DELIMETER); PaddedString10.pgType.text.unsafeEncode(row.bpchar10, sb); sb.append(PgText.DELIMETER); PgTypes.numeric.text.unsafeEncode(row.decimal52, sb); sb.append(PgText.DELIMETER); PgTypes.numeric.text.unsafeEncode(row.decimal102, sb); sb.append(PgText.DELIMETER); PgTypes.numeric.text.unsafeEncode(row.decimal184, sb); sb.append(PgText.DELIMETER); PgTypes.numeric.text.unsafeEncode(row.numeric82, sb); sb.append(PgText.DELIMETER); PgTypes.numeric.text.unsafeEncode(row.numeric124, sb); sb.append(PgText.DELIMETER); PgTypes.timestamp.text.unsafeEncode(row.timestamp0, sb); sb.append(PgText.DELIMETER); PgTypes.timestamp.text.unsafeEncode(row.timestamp3, sb); sb.append(PgText.DELIMETER); PgTypes.timestamp.text.unsafeEncode(row.timestamp6, sb); sb.append(PgText.DELIMETER); PgTypes.timestamptz.text.unsafeEncode(row.timestamptz0, sb); sb.append(PgText.DELIMETER); PgTypes.timestamptz.text.unsafeEncode(row.timestamptz3, sb); sb.append(PgText.DELIMETER); PgTypes.timestamptz.text.unsafeEncode(row.timestamptz6, sb); sb.append(PgText.DELIMETER); PgTypes.time.text.unsafeEncode(row.time0, sb); sb.append(PgText.DELIMETER); PgTypes.time.text.unsafeEncode(row.time3, sb); sb.append(PgText.DELIMETER); PgTypes.time.text.unsafeEncode(row.time6, sb); sb.append(PgText.DELIMETER); PgTypes.timetz.text.unsafeEncode(row.timetz0, sb); sb.append(PgText.DELIMETER); PgTypes.timetz.text.unsafeEncode(row.timetz3, sb); sb.append(PgText.DELIMETER); PgTypes.timetz.text.unsafeEncode(row.timetz6, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PrecisionTypesId.pgType.text).unsafeEncode(row.id, sb) }) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/precision_types_null/PrecisionTypesNullFields.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/precision_types_null/PrecisionTypesNullFields.scala index d7ed26fbf8..5456b78ae1 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/precision_types_null/PrecisionTypesNullFields.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/precision_types_null/PrecisionTypesNullFields.scala @@ -37,7 +37,7 @@ class PrecisionTypesNullFields(val `_path`: java.util.List[Path]) extends TupleE Optional.empty(), Optional.of("int4"), (row, value) => row.copy(id = value), - PrecisionTypesNullId.dbType + PrecisionTypesNullId.pgType ) } @@ -49,7 +49,7 @@ class PrecisionTypesNullFields(val `_path`: java.util.List[Path]) extends TupleE Optional.empty(), Optional.empty(), (row, value) => row.copy(string10 = value), - String10.dbType + String10.pgType ) } @@ -61,7 +61,7 @@ class PrecisionTypesNullFields(val `_path`: java.util.List[Path]) extends TupleE Optional.empty(), Optional.empty(), (row, value) => row.copy(string20 = value), - String20.dbType + String20.pgType ) } @@ -73,7 +73,7 @@ class PrecisionTypesNullFields(val `_path`: java.util.List[Path]) extends TupleE Optional.empty(), Optional.empty(), (row, value) => row.copy(string50 = value), - String50.dbType + String50.pgType ) } @@ -85,7 +85,7 @@ class PrecisionTypesNullFields(val `_path`: java.util.List[Path]) extends TupleE Optional.empty(), Optional.empty(), (row, value) => row.copy(string100 = value), - String100.dbType + String100.pgType ) } @@ -97,7 +97,7 @@ class PrecisionTypesNullFields(val `_path`: java.util.List[Path]) extends TupleE Optional.empty(), Optional.empty(), (row, value) => row.copy(string255 = value), - String255.dbType + String255.pgType ) } @@ -109,7 +109,7 @@ class PrecisionTypesNullFields(val `_path`: java.util.List[Path]) extends TupleE Optional.empty(), Optional.of("bpchar"), (row, value) => row.copy(bpchar3 = value), - PaddedString3.dbType + PaddedString3.pgType ) } @@ -121,7 +121,7 @@ class PrecisionTypesNullFields(val `_path`: java.util.List[Path]) extends TupleE Optional.empty(), Optional.of("bpchar"), (row, value) => row.copy(bpchar10 = value), - PaddedString10.dbType + PaddedString10.pgType ) } diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/precision_types_null/PrecisionTypesNullId.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/precision_types_null/PrecisionTypesNullId.scala index 51da5fc6a2..9f76b9b0b1 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/precision_types_null/PrecisionTypesNullId.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/precision_types_null/PrecisionTypesNullId.scala @@ -16,7 +16,7 @@ case class PrecisionTypesNullId(@JsonValue value: Integer) extends scala.AnyVal object PrecisionTypesNullId { given bijection: Bijection[PrecisionTypesNullId, Integer] = Bijection.apply[PrecisionTypesNullId, Integer](_.value)(PrecisionTypesNullId.apply) - given dbType: PgType[PrecisionTypesNullId] = PgTypes.int4.bimap(PrecisionTypesNullId.apply, _.value) + given pgType: PgType[PrecisionTypesNullId] = PgTypes.int4.bimap(PrecisionTypesNullId.apply, _.value) - given dbTypeArray: PgType[Array[PrecisionTypesNullId]] = PgTypes.int4Array.bimap(xs => xs.map(PrecisionTypesNullId.apply), xs => xs.map(_.value)) + given pgTypeArray: PgType[Array[PrecisionTypesNullId]] = PgTypes.int4Array.bimap(xs => xs.map(PrecisionTypesNullId.apply), xs => xs.map(_.value)) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/precision_types_null/PrecisionTypesNullRepoImpl.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/precision_types_null/PrecisionTypesNullRepoImpl.scala index c702068be0..2a15143f01 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/precision_types_null/PrecisionTypesNullRepoImpl.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/precision_types_null/PrecisionTypesNullRepoImpl.scala @@ -28,19 +28,19 @@ import dev.typr.foundations.Fragment.interpolate class PrecisionTypesNullRepoImpl extends PrecisionTypesNullRepo { override def delete: DeleteBuilder[PrecisionTypesNullFields, PrecisionTypesNullRow] = DeleteBuilder.of(""""public"."precision_types_null"""", PrecisionTypesNullFields.structure, Dialect.POSTGRESQL) - override def deleteById(id: PrecisionTypesNullId)(using c: Connection): java.lang.Boolean = interpolate(Fragment.lit("""delete from "public"."precision_types_null" where "id" = """), Fragment.encode(PrecisionTypesNullId.dbType, id), Fragment.lit("")).update().runUnchecked(c) > 0 + override def deleteById(id: PrecisionTypesNullId)(using c: Connection): java.lang.Boolean = interpolate(Fragment.lit("""delete from "public"."precision_types_null" where "id" = """), Fragment.encode(PrecisionTypesNullId.pgType, id), Fragment.lit("")).update().runUnchecked(c) > 0 override def deleteByIds(ids: Array[PrecisionTypesNullId])(using c: Connection): Integer = { interpolate(Fragment.lit("""delete from "public"."precision_types_null" - where "id" = ANY("""), Fragment.encode(PrecisionTypesNullId.dbTypeArray, ids), Fragment.lit(")")) + where "id" = ANY("""), Fragment.encode(PrecisionTypesNullId.pgTypeArray, ids), Fragment.lit(")")) .update() .runUnchecked(c) } override def insert(unsaved: PrecisionTypesNullRow)(using c: Connection): PrecisionTypesNullRow = { interpolate(Fragment.lit("""insert into "public"."precision_types_null"("id", "string10", "string20", "string50", "string100", "string255", "bpchar3", "bpchar10", "decimal5_2", "decimal10_2", "decimal18_4", "numeric8_2", "numeric12_4", "timestamp0", "timestamp3", "timestamp6", "timestamptz0", "timestamptz3", "timestamptz6", "time0", "time3", "time6", "timetz0", "timetz3", "timetz6") - values ("""), Fragment.encode(PrecisionTypesNullId.dbType, unsaved.id), Fragment.lit("::int4, "), Fragment.encode(String10.dbType.opt(), unsaved.string10), Fragment.lit(", "), Fragment.encode(String20.dbType.opt(), unsaved.string20), Fragment.lit(", "), Fragment.encode(String50.dbType.opt(), unsaved.string50), Fragment.lit(", "), Fragment.encode(String100.dbType.opt(), unsaved.string100), Fragment.lit(", "), Fragment.encode(String255.dbType.opt(), unsaved.string255), Fragment.lit(", "), Fragment.encode(PaddedString3.dbType.opt(), unsaved.bpchar3), Fragment.lit("::bpchar, "), Fragment.encode(PaddedString10.dbType.opt(), unsaved.bpchar10), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.numeric.opt(), unsaved.decimal52), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric.opt(), unsaved.decimal102), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric.opt(), unsaved.decimal184), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric.opt(), unsaved.numeric82), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric.opt(), unsaved.numeric124), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.timestamp.opt(), unsaved.timestamp0), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamp.opt(), unsaved.timestamp3), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamp.opt(), unsaved.timestamp6), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamptz.opt(), unsaved.timestamptz0), Fragment.lit("::timestamptz, "), Fragment.encode(PgTypes.timestamptz.opt(), unsaved.timestamptz3), Fragment.lit("::timestamptz, "), Fragment.encode(PgTypes.timestamptz.opt(), unsaved.timestamptz6), Fragment.lit("::timestamptz, "), Fragment.encode(PgTypes.time.opt(), unsaved.time0), Fragment.lit("::time, "), Fragment.encode(PgTypes.time.opt(), unsaved.time3), Fragment.lit("::time, "), Fragment.encode(PgTypes.time.opt(), unsaved.time6), Fragment.lit("::time, "), Fragment.encode(PgTypes.timetz.opt(), unsaved.timetz0), Fragment.lit("::timetz, "), Fragment.encode(PgTypes.timetz.opt(), unsaved.timetz3), Fragment.lit("::timetz, "), Fragment.encode(PgTypes.timetz.opt(), unsaved.timetz6), Fragment.lit("""::timetz) + values ("""), Fragment.encode(PrecisionTypesNullId.pgType, unsaved.id), Fragment.lit("::int4, "), Fragment.encode(String10.pgType.opt(), unsaved.string10), Fragment.lit(", "), Fragment.encode(String20.pgType.opt(), unsaved.string20), Fragment.lit(", "), Fragment.encode(String50.pgType.opt(), unsaved.string50), Fragment.lit(", "), Fragment.encode(String100.pgType.opt(), unsaved.string100), Fragment.lit(", "), Fragment.encode(String255.pgType.opt(), unsaved.string255), Fragment.lit(", "), Fragment.encode(PaddedString3.pgType.opt(), unsaved.bpchar3), Fragment.lit("::bpchar, "), Fragment.encode(PaddedString10.pgType.opt(), unsaved.bpchar10), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.numeric.opt(), unsaved.decimal52), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric.opt(), unsaved.decimal102), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric.opt(), unsaved.decimal184), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric.opt(), unsaved.numeric82), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric.opt(), unsaved.numeric124), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.timestamp.opt(), unsaved.timestamp0), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamp.opt(), unsaved.timestamp3), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamp.opt(), unsaved.timestamp6), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamptz.opt(), unsaved.timestamptz0), Fragment.lit("::timestamptz, "), Fragment.encode(PgTypes.timestamptz.opt(), unsaved.timestamptz3), Fragment.lit("::timestamptz, "), Fragment.encode(PgTypes.timestamptz.opt(), unsaved.timestamptz6), Fragment.lit("::timestamptz, "), Fragment.encode(PgTypes.time.opt(), unsaved.time0), Fragment.lit("::time, "), Fragment.encode(PgTypes.time.opt(), unsaved.time3), Fragment.lit("::time, "), Fragment.encode(PgTypes.time.opt(), unsaved.time6), Fragment.lit("::time, "), Fragment.encode(PgTypes.timetz.opt(), unsaved.timetz0), Fragment.lit("::timetz, "), Fragment.encode(PgTypes.timetz.opt(), unsaved.timetz3), Fragment.lit("::timetz, "), Fragment.encode(PgTypes.timetz.opt(), unsaved.timetz6), Fragment.lit("""::timetz) RETURNING "id", "string10", "string20", "string50", "string100", "string255", "bpchar3", "bpchar10", "decimal5_2", "decimal10_2", "decimal18_4", "numeric8_2", "numeric12_4", "timestamp0", "timestamp3", "timestamp6", "timestamptz0", "timestamptz3", "timestamptz6", "time0", "time3", "time6", "timetz0", "timetz3", "timetz6" """)) .updateReturning(PrecisionTypesNullRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -50,19 +50,19 @@ class PrecisionTypesNullRepoImpl extends PrecisionTypesNullRepo { val columns: ArrayList[Fragment] = new ArrayList() val values: ArrayList[Fragment] = new ArrayList() columns.add(Fragment.lit(""""string10"""")): @scala.annotation.nowarn - values.add(interpolate(Fragment.encode(String10.dbType.opt(), unsaved.string10), Fragment.lit(""))): @scala.annotation.nowarn + values.add(interpolate(Fragment.encode(String10.pgType.opt(), unsaved.string10), Fragment.lit(""))): @scala.annotation.nowarn columns.add(Fragment.lit(""""string20"""")): @scala.annotation.nowarn - values.add(interpolate(Fragment.encode(String20.dbType.opt(), unsaved.string20), Fragment.lit(""))): @scala.annotation.nowarn + values.add(interpolate(Fragment.encode(String20.pgType.opt(), unsaved.string20), Fragment.lit(""))): @scala.annotation.nowarn columns.add(Fragment.lit(""""string50"""")): @scala.annotation.nowarn - values.add(interpolate(Fragment.encode(String50.dbType.opt(), unsaved.string50), Fragment.lit(""))): @scala.annotation.nowarn + values.add(interpolate(Fragment.encode(String50.pgType.opt(), unsaved.string50), Fragment.lit(""))): @scala.annotation.nowarn columns.add(Fragment.lit(""""string100"""")): @scala.annotation.nowarn - values.add(interpolate(Fragment.encode(String100.dbType.opt(), unsaved.string100), Fragment.lit(""))): @scala.annotation.nowarn + values.add(interpolate(Fragment.encode(String100.pgType.opt(), unsaved.string100), Fragment.lit(""))): @scala.annotation.nowarn columns.add(Fragment.lit(""""string255"""")): @scala.annotation.nowarn - values.add(interpolate(Fragment.encode(String255.dbType.opt(), unsaved.string255), Fragment.lit(""))): @scala.annotation.nowarn + values.add(interpolate(Fragment.encode(String255.pgType.opt(), unsaved.string255), Fragment.lit(""))): @scala.annotation.nowarn columns.add(Fragment.lit(""""bpchar3"""")): @scala.annotation.nowarn - values.add(interpolate(Fragment.encode(PaddedString3.dbType.opt(), unsaved.bpchar3), Fragment.lit("::bpchar"))): @scala.annotation.nowarn + values.add(interpolate(Fragment.encode(PaddedString3.pgType.opt(), unsaved.bpchar3), Fragment.lit("::bpchar"))): @scala.annotation.nowarn columns.add(Fragment.lit(""""bpchar10"""")): @scala.annotation.nowarn - values.add(interpolate(Fragment.encode(PaddedString10.dbType.opt(), unsaved.bpchar10), Fragment.lit("::bpchar"))): @scala.annotation.nowarn + values.add(interpolate(Fragment.encode(PaddedString10.pgType.opt(), unsaved.bpchar10), Fragment.lit("::bpchar"))): @scala.annotation.nowarn columns.add(Fragment.lit(""""decimal5_2"""")): @scala.annotation.nowarn values.add(interpolate(Fragment.encode(PgTypes.numeric.opt(), unsaved.decimal52), Fragment.lit("::numeric"))): @scala.annotation.nowarn columns.add(Fragment.lit(""""decimal10_2"""")): @scala.annotation.nowarn @@ -99,7 +99,7 @@ class PrecisionTypesNullRepoImpl extends PrecisionTypesNullRepo { values.add(interpolate(Fragment.encode(PgTypes.timetz.opt(), unsaved.timetz6), Fragment.lit("::timetz"))): @scala.annotation.nowarn unsaved.id.visit( { }, - value => { columns.add(Fragment.lit(""""id"""")): @scala.annotation.nowarn; values.add(interpolate(Fragment.encode(PrecisionTypesNullId.dbType, value), Fragment.lit("::int4"))): @scala.annotation.nowarn } + value => { columns.add(Fragment.lit(""""id"""")): @scala.annotation.nowarn; values.add(interpolate(Fragment.encode(PrecisionTypesNullId.pgType, value), Fragment.lit("::int4"))): @scala.annotation.nowarn } ); val q: Fragment = { interpolate(Fragment.lit("""insert into "public"."precision_types_null"("""), Fragment.comma(columns), Fragment.lit(""") @@ -132,13 +132,13 @@ class PrecisionTypesNullRepoImpl extends PrecisionTypesNullRepo { override def selectById(id: PrecisionTypesNullId)(using c: Connection): Optional[PrecisionTypesNullRow] = { interpolate(Fragment.lit("""select "id", "string10", "string20", "string50", "string100", "string255", "bpchar3", "bpchar10", "decimal5_2", "decimal10_2", "decimal18_4", "numeric8_2", "numeric12_4", "timestamp0", "timestamp3", "timestamp6", "timestamptz0", "timestamptz3", "timestamptz6", "time0", "time3", "time6", "timetz0", "timetz3", "timetz6" from "public"."precision_types_null" - where "id" = """), Fragment.encode(PrecisionTypesNullId.dbType, id), Fragment.lit("")).query(PrecisionTypesNullRow.`_rowParser`.first()).runUnchecked(c) + where "id" = """), Fragment.encode(PrecisionTypesNullId.pgType, id), Fragment.lit("")).query(PrecisionTypesNullRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(ids: Array[PrecisionTypesNullId])(using c: Connection): java.util.List[PrecisionTypesNullRow] = { interpolate(Fragment.lit("""select "id", "string10", "string20", "string50", "string100", "string255", "bpchar3", "bpchar10", "decimal5_2", "decimal10_2", "decimal18_4", "numeric8_2", "numeric12_4", "timestamp0", "timestamp3", "timestamp6", "timestamptz0", "timestamptz3", "timestamptz6", "time0", "time3", "time6", "timetz0", "timetz3", "timetz6" from "public"."precision_types_null" - where "id" = ANY("""), Fragment.encode(PrecisionTypesNullId.dbTypeArray, ids), Fragment.lit(")")).query(PrecisionTypesNullRow.`_rowParser`.all()).runUnchecked(c) + where "id" = ANY("""), Fragment.encode(PrecisionTypesNullId.pgTypeArray, ids), Fragment.lit(")")).query(PrecisionTypesNullRow.`_rowParser`.all()).runUnchecked(c) } override def selectByIdsTracked(ids: Array[PrecisionTypesNullId])(using c: Connection): java.util.Map[PrecisionTypesNullId, PrecisionTypesNullRow] = { @@ -152,13 +152,13 @@ class PrecisionTypesNullRepoImpl extends PrecisionTypesNullRepo { override def update(row: PrecisionTypesNullRow)(using c: Connection): java.lang.Boolean = { val id: PrecisionTypesNullId = row.id return interpolate(Fragment.lit("""update "public"."precision_types_null" - set "string10" = """), Fragment.encode(String10.dbType.opt(), row.string10), Fragment.lit(""", - "string20" = """), Fragment.encode(String20.dbType.opt(), row.string20), Fragment.lit(""", - "string50" = """), Fragment.encode(String50.dbType.opt(), row.string50), Fragment.lit(""", - "string100" = """), Fragment.encode(String100.dbType.opt(), row.string100), Fragment.lit(""", - "string255" = """), Fragment.encode(String255.dbType.opt(), row.string255), Fragment.lit(""", - "bpchar3" = """), Fragment.encode(PaddedString3.dbType.opt(), row.bpchar3), Fragment.lit("""::bpchar, - "bpchar10" = """), Fragment.encode(PaddedString10.dbType.opt(), row.bpchar10), Fragment.lit("""::bpchar, + set "string10" = """), Fragment.encode(String10.pgType.opt(), row.string10), Fragment.lit(""", + "string20" = """), Fragment.encode(String20.pgType.opt(), row.string20), Fragment.lit(""", + "string50" = """), Fragment.encode(String50.pgType.opt(), row.string50), Fragment.lit(""", + "string100" = """), Fragment.encode(String100.pgType.opt(), row.string100), Fragment.lit(""", + "string255" = """), Fragment.encode(String255.pgType.opt(), row.string255), Fragment.lit(""", + "bpchar3" = """), Fragment.encode(PaddedString3.pgType.opt(), row.bpchar3), Fragment.lit("""::bpchar, + "bpchar10" = """), Fragment.encode(PaddedString10.pgType.opt(), row.bpchar10), Fragment.lit("""::bpchar, "decimal5_2" = """), Fragment.encode(PgTypes.numeric.opt(), row.decimal52), Fragment.lit("""::numeric, "decimal10_2" = """), Fragment.encode(PgTypes.numeric.opt(), row.decimal102), Fragment.lit("""::numeric, "decimal18_4" = """), Fragment.encode(PgTypes.numeric.opt(), row.decimal184), Fragment.lit("""::numeric, @@ -176,12 +176,12 @@ class PrecisionTypesNullRepoImpl extends PrecisionTypesNullRepo { "timetz0" = """), Fragment.encode(PgTypes.timetz.opt(), row.timetz0), Fragment.lit("""::timetz, "timetz3" = """), Fragment.encode(PgTypes.timetz.opt(), row.timetz3), Fragment.lit("""::timetz, "timetz6" = """), Fragment.encode(PgTypes.timetz.opt(), row.timetz6), Fragment.lit("""::timetz - where "id" = """), Fragment.encode(PrecisionTypesNullId.dbType, id), Fragment.lit("")).update().runUnchecked(c) > 0 + where "id" = """), Fragment.encode(PrecisionTypesNullId.pgType, id), Fragment.lit("")).update().runUnchecked(c) > 0 } override def upsert(unsaved: PrecisionTypesNullRow)(using c: Connection): PrecisionTypesNullRow = { interpolate(Fragment.lit("""insert into "public"."precision_types_null"("id", "string10", "string20", "string50", "string100", "string255", "bpchar3", "bpchar10", "decimal5_2", "decimal10_2", "decimal18_4", "numeric8_2", "numeric12_4", "timestamp0", "timestamp3", "timestamp6", "timestamptz0", "timestamptz3", "timestamptz6", "time0", "time3", "time6", "timetz0", "timetz3", "timetz6") - values ("""), Fragment.encode(PrecisionTypesNullId.dbType, unsaved.id), Fragment.lit("::int4, "), Fragment.encode(String10.dbType.opt(), unsaved.string10), Fragment.lit(", "), Fragment.encode(String20.dbType.opt(), unsaved.string20), Fragment.lit(", "), Fragment.encode(String50.dbType.opt(), unsaved.string50), Fragment.lit(", "), Fragment.encode(String100.dbType.opt(), unsaved.string100), Fragment.lit(", "), Fragment.encode(String255.dbType.opt(), unsaved.string255), Fragment.lit(", "), Fragment.encode(PaddedString3.dbType.opt(), unsaved.bpchar3), Fragment.lit("::bpchar, "), Fragment.encode(PaddedString10.dbType.opt(), unsaved.bpchar10), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.numeric.opt(), unsaved.decimal52), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric.opt(), unsaved.decimal102), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric.opt(), unsaved.decimal184), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric.opt(), unsaved.numeric82), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric.opt(), unsaved.numeric124), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.timestamp.opt(), unsaved.timestamp0), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamp.opt(), unsaved.timestamp3), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamp.opt(), unsaved.timestamp6), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamptz.opt(), unsaved.timestamptz0), Fragment.lit("::timestamptz, "), Fragment.encode(PgTypes.timestamptz.opt(), unsaved.timestamptz3), Fragment.lit("::timestamptz, "), Fragment.encode(PgTypes.timestamptz.opt(), unsaved.timestamptz6), Fragment.lit("::timestamptz, "), Fragment.encode(PgTypes.time.opt(), unsaved.time0), Fragment.lit("::time, "), Fragment.encode(PgTypes.time.opt(), unsaved.time3), Fragment.lit("::time, "), Fragment.encode(PgTypes.time.opt(), unsaved.time6), Fragment.lit("::time, "), Fragment.encode(PgTypes.timetz.opt(), unsaved.timetz0), Fragment.lit("::timetz, "), Fragment.encode(PgTypes.timetz.opt(), unsaved.timetz3), Fragment.lit("::timetz, "), Fragment.encode(PgTypes.timetz.opt(), unsaved.timetz6), Fragment.lit("""::timetz) + values ("""), Fragment.encode(PrecisionTypesNullId.pgType, unsaved.id), Fragment.lit("::int4, "), Fragment.encode(String10.pgType.opt(), unsaved.string10), Fragment.lit(", "), Fragment.encode(String20.pgType.opt(), unsaved.string20), Fragment.lit(", "), Fragment.encode(String50.pgType.opt(), unsaved.string50), Fragment.lit(", "), Fragment.encode(String100.pgType.opt(), unsaved.string100), Fragment.lit(", "), Fragment.encode(String255.pgType.opt(), unsaved.string255), Fragment.lit(", "), Fragment.encode(PaddedString3.pgType.opt(), unsaved.bpchar3), Fragment.lit("::bpchar, "), Fragment.encode(PaddedString10.pgType.opt(), unsaved.bpchar10), Fragment.lit("::bpchar, "), Fragment.encode(PgTypes.numeric.opt(), unsaved.decimal52), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric.opt(), unsaved.decimal102), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric.opt(), unsaved.decimal184), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric.opt(), unsaved.numeric82), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric.opt(), unsaved.numeric124), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.timestamp.opt(), unsaved.timestamp0), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamp.opt(), unsaved.timestamp3), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamp.opt(), unsaved.timestamp6), Fragment.lit("::timestamp, "), Fragment.encode(PgTypes.timestamptz.opt(), unsaved.timestamptz0), Fragment.lit("::timestamptz, "), Fragment.encode(PgTypes.timestamptz.opt(), unsaved.timestamptz3), Fragment.lit("::timestamptz, "), Fragment.encode(PgTypes.timestamptz.opt(), unsaved.timestamptz6), Fragment.lit("::timestamptz, "), Fragment.encode(PgTypes.time.opt(), unsaved.time0), Fragment.lit("::time, "), Fragment.encode(PgTypes.time.opt(), unsaved.time3), Fragment.lit("::time, "), Fragment.encode(PgTypes.time.opt(), unsaved.time6), Fragment.lit("::time, "), Fragment.encode(PgTypes.timetz.opt(), unsaved.timetz0), Fragment.lit("::timetz, "), Fragment.encode(PgTypes.timetz.opt(), unsaved.timetz3), Fragment.lit("::timetz, "), Fragment.encode(PgTypes.timetz.opt(), unsaved.timetz6), Fragment.lit("""::timetz) on conflict ("id") do update set "string10" = EXCLUDED."string10", diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/precision_types_null/PrecisionTypesNullRow.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/precision_types_null/PrecisionTypesNullRow.scala index 8f7fd2aae3..569521ccef 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/precision_types_null/PrecisionTypesNullRow.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/precision_types_null/PrecisionTypesNullRow.scala @@ -140,7 +140,7 @@ case class PrecisionTypesNullRow( object PrecisionTypesNullRow { val `_rowParser`: RowParser[PrecisionTypesNullRow] = { - RowParsers.of(PrecisionTypesNullId.dbType, String10.dbType.opt(), String20.dbType.opt(), String50.dbType.opt(), String100.dbType.opt(), String255.dbType.opt(), PaddedString3.dbType.opt(), PaddedString10.dbType.opt(), PgTypes.numeric.opt(), PgTypes.numeric.opt(), PgTypes.numeric.opt(), PgTypes.numeric.opt(), PgTypes.numeric.opt(), PgTypes.timestamp.opt(), PgTypes.timestamp.opt(), PgTypes.timestamp.opt(), PgTypes.timestamptz.opt(), PgTypes.timestamptz.opt(), PgTypes.timestamptz.opt(), PgTypes.time.opt(), PgTypes.time.opt(), PgTypes.time.opt(), PgTypes.timetz.opt(), PgTypes.timetz.opt(), PgTypes.timetz.opt(), new Function25[PrecisionTypesNullId, Optional[String10], Optional[String20], Optional[String50], Optional[String100], Optional[String255], Optional[PaddedString3], Optional[PaddedString10], Optional[java.math.BigDecimal], Optional[java.math.BigDecimal], Optional[java.math.BigDecimal], Optional[java.math.BigDecimal], Optional[java.math.BigDecimal], Optional[LocalDateTime], Optional[LocalDateTime], Optional[LocalDateTime], Optional[Instant], Optional[Instant], Optional[Instant], Optional[LocalTime], Optional[LocalTime], Optional[LocalTime], Optional[OffsetTime], Optional[OffsetTime], Optional[OffsetTime], PrecisionTypesNullRow] { + RowParsers.of(PrecisionTypesNullId.pgType, String10.pgType.opt(), String20.pgType.opt(), String50.pgType.opt(), String100.pgType.opt(), String255.pgType.opt(), PaddedString3.pgType.opt(), PaddedString10.pgType.opt(), PgTypes.numeric.opt(), PgTypes.numeric.opt(), PgTypes.numeric.opt(), PgTypes.numeric.opt(), PgTypes.numeric.opt(), PgTypes.timestamp.opt(), PgTypes.timestamp.opt(), PgTypes.timestamp.opt(), PgTypes.timestamptz.opt(), PgTypes.timestamptz.opt(), PgTypes.timestamptz.opt(), PgTypes.time.opt(), PgTypes.time.opt(), PgTypes.time.opt(), PgTypes.timetz.opt(), PgTypes.timetz.opt(), PgTypes.timetz.opt(), new Function25[PrecisionTypesNullId, Optional[String10], Optional[String20], Optional[String50], Optional[String100], Optional[String255], Optional[PaddedString3], Optional[PaddedString10], Optional[java.math.BigDecimal], Optional[java.math.BigDecimal], Optional[java.math.BigDecimal], Optional[java.math.BigDecimal], Optional[java.math.BigDecimal], Optional[LocalDateTime], Optional[LocalDateTime], Optional[LocalDateTime], Optional[Instant], Optional[Instant], Optional[Instant], Optional[LocalTime], Optional[LocalTime], Optional[LocalTime], Optional[OffsetTime], Optional[OffsetTime], Optional[OffsetTime], PrecisionTypesNullRow] { override def apply( t0: PrecisionTypesNullId, t1: Optional[String10], diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/precision_types_null/PrecisionTypesNullRowUnsaved.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/precision_types_null/PrecisionTypesNullRowUnsaved.scala index ac88147b3d..a2cf0cec4f 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/precision_types_null/PrecisionTypesNullRowUnsaved.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/precision_types_null/PrecisionTypesNullRowUnsaved.scala @@ -84,5 +84,5 @@ case class PrecisionTypesNullRowUnsaved( } object PrecisionTypesNullRowUnsaved { - given pgText: PgText[PrecisionTypesNullRowUnsaved] = PgText.instance((row, sb) => { String10.dbType.opt().text.unsafeEncode(row.string10, sb); sb.append(PgText.DELIMETER); String20.dbType.opt().text.unsafeEncode(row.string20, sb); sb.append(PgText.DELIMETER); String50.dbType.opt().text.unsafeEncode(row.string50, sb); sb.append(PgText.DELIMETER); String100.dbType.opt().text.unsafeEncode(row.string100, sb); sb.append(PgText.DELIMETER); String255.dbType.opt().text.unsafeEncode(row.string255, sb); sb.append(PgText.DELIMETER); PaddedString3.dbType.opt().text.unsafeEncode(row.bpchar3, sb); sb.append(PgText.DELIMETER); PaddedString10.dbType.opt().text.unsafeEncode(row.bpchar10, sb); sb.append(PgText.DELIMETER); PgTypes.numeric.opt().text.unsafeEncode(row.decimal52, sb); sb.append(PgText.DELIMETER); PgTypes.numeric.opt().text.unsafeEncode(row.decimal102, sb); sb.append(PgText.DELIMETER); PgTypes.numeric.opt().text.unsafeEncode(row.decimal184, sb); sb.append(PgText.DELIMETER); PgTypes.numeric.opt().text.unsafeEncode(row.numeric82, sb); sb.append(PgText.DELIMETER); PgTypes.numeric.opt().text.unsafeEncode(row.numeric124, sb); sb.append(PgText.DELIMETER); PgTypes.timestamp.opt().text.unsafeEncode(row.timestamp0, sb); sb.append(PgText.DELIMETER); PgTypes.timestamp.opt().text.unsafeEncode(row.timestamp3, sb); sb.append(PgText.DELIMETER); PgTypes.timestamp.opt().text.unsafeEncode(row.timestamp6, sb); sb.append(PgText.DELIMETER); PgTypes.timestamptz.opt().text.unsafeEncode(row.timestamptz0, sb); sb.append(PgText.DELIMETER); PgTypes.timestamptz.opt().text.unsafeEncode(row.timestamptz3, sb); sb.append(PgText.DELIMETER); PgTypes.timestamptz.opt().text.unsafeEncode(row.timestamptz6, sb); sb.append(PgText.DELIMETER); PgTypes.time.opt().text.unsafeEncode(row.time0, sb); sb.append(PgText.DELIMETER); PgTypes.time.opt().text.unsafeEncode(row.time3, sb); sb.append(PgText.DELIMETER); PgTypes.time.opt().text.unsafeEncode(row.time6, sb); sb.append(PgText.DELIMETER); PgTypes.timetz.opt().text.unsafeEncode(row.timetz0, sb); sb.append(PgText.DELIMETER); PgTypes.timetz.opt().text.unsafeEncode(row.timetz3, sb); sb.append(PgText.DELIMETER); PgTypes.timetz.opt().text.unsafeEncode(row.timetz6, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PrecisionTypesNullId.dbType.text).unsafeEncode(row.id, sb) }) + given pgText: PgText[PrecisionTypesNullRowUnsaved] = PgText.instance((row, sb) => { String10.pgType.opt().text.unsafeEncode(row.string10, sb); sb.append(PgText.DELIMETER); String20.pgType.opt().text.unsafeEncode(row.string20, sb); sb.append(PgText.DELIMETER); String50.pgType.opt().text.unsafeEncode(row.string50, sb); sb.append(PgText.DELIMETER); String100.pgType.opt().text.unsafeEncode(row.string100, sb); sb.append(PgText.DELIMETER); String255.pgType.opt().text.unsafeEncode(row.string255, sb); sb.append(PgText.DELIMETER); PaddedString3.pgType.opt().text.unsafeEncode(row.bpchar3, sb); sb.append(PgText.DELIMETER); PaddedString10.pgType.opt().text.unsafeEncode(row.bpchar10, sb); sb.append(PgText.DELIMETER); PgTypes.numeric.opt().text.unsafeEncode(row.decimal52, sb); sb.append(PgText.DELIMETER); PgTypes.numeric.opt().text.unsafeEncode(row.decimal102, sb); sb.append(PgText.DELIMETER); PgTypes.numeric.opt().text.unsafeEncode(row.decimal184, sb); sb.append(PgText.DELIMETER); PgTypes.numeric.opt().text.unsafeEncode(row.numeric82, sb); sb.append(PgText.DELIMETER); PgTypes.numeric.opt().text.unsafeEncode(row.numeric124, sb); sb.append(PgText.DELIMETER); PgTypes.timestamp.opt().text.unsafeEncode(row.timestamp0, sb); sb.append(PgText.DELIMETER); PgTypes.timestamp.opt().text.unsafeEncode(row.timestamp3, sb); sb.append(PgText.DELIMETER); PgTypes.timestamp.opt().text.unsafeEncode(row.timestamp6, sb); sb.append(PgText.DELIMETER); PgTypes.timestamptz.opt().text.unsafeEncode(row.timestamptz0, sb); sb.append(PgText.DELIMETER); PgTypes.timestamptz.opt().text.unsafeEncode(row.timestamptz3, sb); sb.append(PgText.DELIMETER); PgTypes.timestamptz.opt().text.unsafeEncode(row.timestamptz6, sb); sb.append(PgText.DELIMETER); PgTypes.time.opt().text.unsafeEncode(row.time0, sb); sb.append(PgText.DELIMETER); PgTypes.time.opt().text.unsafeEncode(row.time3, sb); sb.append(PgText.DELIMETER); PgTypes.time.opt().text.unsafeEncode(row.time6, sb); sb.append(PgText.DELIMETER); PgTypes.timetz.opt().text.unsafeEncode(row.timetz0, sb); sb.append(PgText.DELIMETER); PgTypes.timetz.opt().text.unsafeEncode(row.timetz3, sb); sb.append(PgText.DELIMETER); PgTypes.timetz.opt().text.unsafeEncode(row.timetz6, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PrecisionTypesNullId.pgType.text).unsafeEncode(row.id, sb) }) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/title/TitleFields.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/title/TitleFields.scala index 5673021046..be5cffc2cb 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/title/TitleFields.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/title/TitleFields.scala @@ -24,7 +24,7 @@ class TitleFields(val `_path`: java.util.List[Path]) extends TupleExpr1[TitleId] Optional.empty(), Optional.empty(), (row, value) => row.copy(code = value), - TitleId.dbType + TitleId.pgType ) } diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/title/TitleId.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/title/TitleId.scala index 961c3ec04d..3a02c0ddad 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/title/TitleId.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/title/TitleId.scala @@ -20,12 +20,12 @@ sealed abstract class TitleId(val value: String) object TitleId { def apply(underlying: String): TitleId = ByName.getOrElse(underlying, Unknown(underlying)) - given dbTypeArray: PgType[Array[TitleId]] = { + given pgTypeArray: PgType[Array[TitleId]] = { PgTypes.textArray .bimap(xs => xs.map(TitleId.apply), xs => xs.map(_.value)) } - given dbType: PgType[TitleId] = PgTypes.text.bimap(TitleId.apply, _.value) + given pgType: PgType[TitleId] = PgTypes.text.bimap(TitleId.apply, _.value) case object dr extends TitleId("dr") diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/title/TitleRepoImpl.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/title/TitleRepoImpl.scala index 4432be32b2..4e1b1828d7 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/title/TitleRepoImpl.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/title/TitleRepoImpl.scala @@ -19,19 +19,19 @@ import dev.typr.foundations.Fragment.interpolate class TitleRepoImpl extends TitleRepo { override def delete: DeleteBuilder[TitleFields, TitleRow] = DeleteBuilder.of(""""public"."title"""", TitleFields.structure, Dialect.POSTGRESQL) - override def deleteById(code: TitleId)(using c: Connection): java.lang.Boolean = interpolate(Fragment.lit("""delete from "public"."title" where "code" = """), Fragment.encode(TitleId.dbType, code), Fragment.lit("")).update().runUnchecked(c) > 0 + override def deleteById(code: TitleId)(using c: Connection): java.lang.Boolean = interpolate(Fragment.lit("""delete from "public"."title" where "code" = """), Fragment.encode(TitleId.pgType, code), Fragment.lit("")).update().runUnchecked(c) > 0 override def deleteByIds(codes: Array[TitleId])(using c: Connection): Integer = { interpolate(Fragment.lit("""delete from "public"."title" - where "code" = ANY("""), Fragment.encode(TitleId.dbTypeArray, codes), Fragment.lit(")")) + where "code" = ANY("""), Fragment.encode(TitleId.pgTypeArray, codes), Fragment.lit(")")) .update() .runUnchecked(c) } override def insert(unsaved: TitleRow)(using c: Connection): TitleRow = { interpolate(Fragment.lit("""insert into "public"."title"("code") - values ("""), Fragment.encode(TitleId.dbType, unsaved.code), Fragment.lit(""") + values ("""), Fragment.encode(TitleId.pgType, unsaved.code), Fragment.lit(""") RETURNING "code" """)) .updateReturning(TitleRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -53,13 +53,13 @@ class TitleRepoImpl extends TitleRepo { override def selectById(code: TitleId)(using c: Connection): Optional[TitleRow] = { interpolate(Fragment.lit("""select "code" from "public"."title" - where "code" = """), Fragment.encode(TitleId.dbType, code), Fragment.lit("")).query(TitleRow.`_rowParser`.first()).runUnchecked(c) + where "code" = """), Fragment.encode(TitleId.pgType, code), Fragment.lit("")).query(TitleRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(codes: Array[TitleId])(using c: Connection): java.util.List[TitleRow] = { interpolate(Fragment.lit("""select "code" from "public"."title" - where "code" = ANY("""), Fragment.encode(TitleId.dbTypeArray, codes), Fragment.lit(")")).query(TitleRow.`_rowParser`.all()).runUnchecked(c) + where "code" = ANY("""), Fragment.encode(TitleId.pgTypeArray, codes), Fragment.lit(")")).query(TitleRow.`_rowParser`.all()).runUnchecked(c) } override def selectByIdsTracked(codes: Array[TitleId])(using c: Connection): java.util.Map[TitleId, TitleRow] = { @@ -72,7 +72,7 @@ class TitleRepoImpl extends TitleRepo { override def upsert(unsaved: TitleRow)(using c: Connection): TitleRow = { interpolate(Fragment.lit("""insert into "public"."title"("code") - values ("""), Fragment.encode(TitleId.dbType, unsaved.code), Fragment.lit(""") + values ("""), Fragment.encode(TitleId.pgType, unsaved.code), Fragment.lit(""") on conflict ("code") do update set "code" = EXCLUDED."code" returning "code"""")) diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/title/TitleRow.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/title/TitleRow.scala index 60a61e4545..cccbf258d4 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/title/TitleRow.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/title/TitleRow.scala @@ -20,7 +20,7 @@ case class TitleRow(code: TitleId) extends Tuple1[TitleId] { } object TitleRow { - val `_rowParser`: RowParser[TitleRow] = RowParsers.of(TitleId.dbType, TitleRow.apply, row => Array[Any](row.code)) + val `_rowParser`: RowParser[TitleRow] = RowParsers.of(TitleId.pgType, TitleRow.apply, row => Array[Any](row.code)) given pgText: PgText[TitleRow] = PgText.from(`_rowParser`) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/title_domain/TitleDomainFields.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/title_domain/TitleDomainFields.scala index 59a2678fcd..85baee61e6 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/title_domain/TitleDomainFields.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/title_domain/TitleDomainFields.scala @@ -24,7 +24,7 @@ class TitleDomainFields(val `_path`: java.util.List[Path]) extends TupleExpr1[Ti Optional.empty(), Optional.of("text"), (row, value) => row.copy(code = value), - TitleDomainId.dbType + TitleDomainId.pgType ) } diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/title_domain/TitleDomainId.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/title_domain/TitleDomainId.scala index 8045f9f61d..0738bbc32f 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/title_domain/TitleDomainId.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/title_domain/TitleDomainId.scala @@ -20,12 +20,12 @@ sealed abstract class TitleDomainId(val value: ShortText) object TitleDomainId { def apply(underlying: ShortText): TitleDomainId = ByName.getOrElse(underlying, Unknown(underlying)) - given dbTypeArray: PgType[Array[TitleDomainId]] = { - ShortText.dbTypeArray + given pgTypeArray: PgType[Array[TitleDomainId]] = { + ShortText.pgTypeArray .bimap(xs => xs.map(TitleDomainId.apply), xs => xs.map(_.value)) } - given dbType: PgType[TitleDomainId] = ShortText.dbType.bimap(TitleDomainId.apply, _.value) + given pgType: PgType[TitleDomainId] = ShortText.pgType.bimap(TitleDomainId.apply, _.value) def shortText(value: String): TitleDomainId = apply(new ShortText(value)) diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/title_domain/TitleDomainRepoImpl.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/title_domain/TitleDomainRepoImpl.scala index a658652368..44d19a3e03 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/title_domain/TitleDomainRepoImpl.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/title_domain/TitleDomainRepoImpl.scala @@ -19,19 +19,19 @@ import dev.typr.foundations.Fragment.interpolate class TitleDomainRepoImpl extends TitleDomainRepo { override def delete: DeleteBuilder[TitleDomainFields, TitleDomainRow] = DeleteBuilder.of(""""public"."title_domain"""", TitleDomainFields.structure, Dialect.POSTGRESQL) - override def deleteById(code: TitleDomainId)(using c: Connection): java.lang.Boolean = interpolate(Fragment.lit("""delete from "public"."title_domain" where "code" = """), Fragment.encode(TitleDomainId.dbType, code), Fragment.lit("")).update().runUnchecked(c) > 0 + override def deleteById(code: TitleDomainId)(using c: Connection): java.lang.Boolean = interpolate(Fragment.lit("""delete from "public"."title_domain" where "code" = """), Fragment.encode(TitleDomainId.pgType, code), Fragment.lit("")).update().runUnchecked(c) > 0 override def deleteByIds(codes: Array[TitleDomainId])(using c: Connection): Integer = { interpolate(Fragment.lit("""delete from "public"."title_domain" - where "code" = ANY("""), Fragment.encode(TitleDomainId.dbTypeArray, codes), Fragment.lit(")")) + where "code" = ANY("""), Fragment.encode(TitleDomainId.pgTypeArray, codes), Fragment.lit(")")) .update() .runUnchecked(c) } override def insert(unsaved: TitleDomainRow)(using c: Connection): TitleDomainRow = { interpolate(Fragment.lit("""insert into "public"."title_domain"("code") - values ("""), Fragment.encode(TitleDomainId.dbType, unsaved.code), Fragment.lit("""::text) + values ("""), Fragment.encode(TitleDomainId.pgType, unsaved.code), Fragment.lit("""::text) RETURNING "code" """)) .updateReturning(TitleDomainRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -53,13 +53,13 @@ class TitleDomainRepoImpl extends TitleDomainRepo { override def selectById(code: TitleDomainId)(using c: Connection): Optional[TitleDomainRow] = { interpolate(Fragment.lit("""select "code" from "public"."title_domain" - where "code" = """), Fragment.encode(TitleDomainId.dbType, code), Fragment.lit("")).query(TitleDomainRow.`_rowParser`.first()).runUnchecked(c) + where "code" = """), Fragment.encode(TitleDomainId.pgType, code), Fragment.lit("")).query(TitleDomainRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(codes: Array[TitleDomainId])(using c: Connection): java.util.List[TitleDomainRow] = { interpolate(Fragment.lit("""select "code" from "public"."title_domain" - where "code" = ANY("""), Fragment.encode(TitleDomainId.dbTypeArray, codes), Fragment.lit(")")).query(TitleDomainRow.`_rowParser`.all()).runUnchecked(c) + where "code" = ANY("""), Fragment.encode(TitleDomainId.pgTypeArray, codes), Fragment.lit(")")).query(TitleDomainRow.`_rowParser`.all()).runUnchecked(c) } override def selectByIdsTracked(codes: Array[TitleDomainId])(using c: Connection): java.util.Map[TitleDomainId, TitleDomainRow] = { @@ -72,7 +72,7 @@ class TitleDomainRepoImpl extends TitleDomainRepo { override def upsert(unsaved: TitleDomainRow)(using c: Connection): TitleDomainRow = { interpolate(Fragment.lit("""insert into "public"."title_domain"("code") - values ("""), Fragment.encode(TitleDomainId.dbType, unsaved.code), Fragment.lit("""::text) + values ("""), Fragment.encode(TitleDomainId.pgType, unsaved.code), Fragment.lit("""::text) on conflict ("code") do update set "code" = EXCLUDED."code" returning "code"""")) diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/title_domain/TitleDomainRow.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/title_domain/TitleDomainRow.scala index 3180a822f8..3d43cbf523 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/title_domain/TitleDomainRow.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/title_domain/TitleDomainRow.scala @@ -20,7 +20,7 @@ case class TitleDomainRow(code: TitleDomainId) extends Tuple1[TitleDomainId] { } object TitleDomainRow { - val `_rowParser`: RowParser[TitleDomainRow] = RowParsers.of(TitleDomainId.dbType, TitleDomainRow.apply, row => Array[Any](row.code)) + val `_rowParser`: RowParser[TitleDomainRow] = RowParsers.of(TitleDomainId.pgType, TitleDomainRow.apply, row => Array[Any](row.code)) given pgText: PgText[TitleDomainRow] = PgText.from(`_rowParser`) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/titledperson/TitledpersonFields.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/titledperson/TitledpersonFields.scala index f538b82466..bd2ec570d8 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/titledperson/TitledpersonFields.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/titledperson/TitledpersonFields.scala @@ -32,7 +32,7 @@ class TitledpersonFields(val `_path`: java.util.List[Path]) extends TupleExpr3[T Optional.empty(), Optional.of("text"), (row, value) => row.copy(titleShort = value), - TitleDomainId.dbType + TitleDomainId.pgType ) } @@ -44,7 +44,7 @@ class TitledpersonFields(val `_path`: java.util.List[Path]) extends TupleExpr3[T Optional.empty(), Optional.empty(), (row, value) => row.copy(title = value), - TitleId.dbType + TitleId.pgType ) } diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/titledperson/TitledpersonRepoImpl.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/titledperson/TitledpersonRepoImpl.scala index b4e29976ab..9070df5cee 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/titledperson/TitledpersonRepoImpl.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/titledperson/TitledpersonRepoImpl.scala @@ -22,7 +22,7 @@ class TitledpersonRepoImpl extends TitledpersonRepo { override def insert(unsaved: TitledpersonRow)(using c: Connection): TitledpersonRow = { interpolate(Fragment.lit("""insert into "public"."titledperson"("title_short", "title", "name") - values ("""), Fragment.encode(TitleDomainId.dbType, unsaved.titleShort), Fragment.lit("::text, "), Fragment.encode(TitleId.dbType, unsaved.title), Fragment.lit(", "), Fragment.encode(PgTypes.text, unsaved.name), Fragment.lit(""") + values ("""), Fragment.encode(TitleDomainId.pgType, unsaved.titleShort), Fragment.lit("::text, "), Fragment.encode(TitleId.pgType, unsaved.title), Fragment.lit(", "), Fragment.encode(PgTypes.text, unsaved.name), Fragment.lit(""") RETURNING "title_short", "title", "name" """)) .updateReturning(TitledpersonRow.`_rowParser`.exactlyOne()).runUnchecked(c) diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/titledperson/TitledpersonRow.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/titledperson/TitledpersonRow.scala index 1284d86674..97dfb7d458 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/titledperson/TitledpersonRow.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/titledperson/TitledpersonRow.scala @@ -30,7 +30,7 @@ case class TitledpersonRow( } object TitledpersonRow { - val `_rowParser`: RowParser[TitledpersonRow] = RowParsers.of(TitleDomainId.dbType, TitleId.dbType, PgTypes.text, TitledpersonRow.apply, row => Array[Any](row.titleShort, row.title, row.name)) + val `_rowParser`: RowParser[TitledpersonRow] = RowParsers.of(TitleDomainId.pgType, TitleId.pgType, PgTypes.text, TitledpersonRow.apply, row => Array[Any](row.titleShort, row.title, row.name)) given pgText: PgText[TitledpersonRow] = PgText.from(`_rowParser`) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/users/UsersFields.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/users/UsersFields.scala index 1f14b28110..182eb16c88 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/users/UsersFields.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/users/UsersFields.scala @@ -29,7 +29,7 @@ class UsersFields(val `_path`: java.util.List[Path]) extends TupleExpr7[UsersId, Optional.empty(), Optional.of("uuid"), (row, value) => row.copy(userId = value), - UsersId.dbType + UsersId.pgType ) } diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/users/UsersId.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/users/UsersId.scala index b6f1311a37..f084f39b67 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/users/UsersId.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/users/UsersId.scala @@ -17,7 +17,7 @@ case class UsersId(@JsonValue value: UUID) extends scala.AnyVal object UsersId { given bijection: Bijection[UsersId, UUID] = Bijection.apply[UsersId, UUID](_.value)(UsersId.apply) - given dbType: PgType[UsersId] = PgTypes.uuid.bimap(UsersId.apply, _.value) + given pgType: PgType[UsersId] = PgTypes.uuid.bimap(UsersId.apply, _.value) - given dbTypeArray: PgType[Array[UsersId]] = PgTypes.uuidArray.bimap(xs => xs.map(UsersId.apply), xs => xs.map(_.value)) + given pgTypeArray: PgType[Array[UsersId]] = PgTypes.uuidArray.bimap(xs => xs.map(UsersId.apply), xs => xs.map(_.value)) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/users/UsersRepoImpl.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/users/UsersRepoImpl.scala index ae38d9378a..e7f303d642 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/users/UsersRepoImpl.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/users/UsersRepoImpl.scala @@ -22,19 +22,19 @@ import dev.typr.foundations.Fragment.interpolate class UsersRepoImpl extends UsersRepo { override def delete: DeleteBuilder[UsersFields, UsersRow] = DeleteBuilder.of(""""public"."users"""", UsersFields.structure, Dialect.POSTGRESQL) - override def deleteById(userId: UsersId)(using c: Connection): java.lang.Boolean = interpolate(Fragment.lit("""delete from "public"."users" where "user_id" = """), Fragment.encode(UsersId.dbType, userId), Fragment.lit("")).update().runUnchecked(c) > 0 + override def deleteById(userId: UsersId)(using c: Connection): java.lang.Boolean = interpolate(Fragment.lit("""delete from "public"."users" where "user_id" = """), Fragment.encode(UsersId.pgType, userId), Fragment.lit("")).update().runUnchecked(c) > 0 override def deleteByIds(userIds: Array[UsersId])(using c: Connection): Integer = { interpolate(Fragment.lit("""delete from "public"."users" - where "user_id" = ANY("""), Fragment.encode(UsersId.dbTypeArray, userIds), Fragment.lit(")")) + where "user_id" = ANY("""), Fragment.encode(UsersId.pgTypeArray, userIds), Fragment.lit(")")) .update() .runUnchecked(c) } override def insert(unsaved: UsersRow)(using c: Connection): UsersRow = { interpolate(Fragment.lit("""insert into "public"."users"("user_id", "name", "last_name", "email", "password", "created_at", "verified_on") - values ("""), Fragment.encode(UsersId.dbType, unsaved.userId), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.text, unsaved.name), Fragment.lit(", "), Fragment.encode(PgTypes.text.opt(), unsaved.lastName), Fragment.lit(", "), Fragment.encode(PgTypes.unknown, unsaved.email), Fragment.lit("::citext, "), Fragment.encode(PgTypes.text, unsaved.password), Fragment.lit(", "), Fragment.encode(PgTypes.timestamptz, unsaved.createdAt), Fragment.lit("::timestamptz, "), Fragment.encode(PgTypes.timestamptz.opt(), unsaved.verifiedOn), Fragment.lit("""::timestamptz) + values ("""), Fragment.encode(UsersId.pgType, unsaved.userId), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.text, unsaved.name), Fragment.lit(", "), Fragment.encode(PgTypes.text.opt(), unsaved.lastName), Fragment.lit(", "), Fragment.encode(PgTypes.unknown, unsaved.email), Fragment.lit("::citext, "), Fragment.encode(PgTypes.text, unsaved.password), Fragment.lit(", "), Fragment.encode(PgTypes.timestamptz, unsaved.createdAt), Fragment.lit("::timestamptz, "), Fragment.encode(PgTypes.timestamptz.opt(), unsaved.verifiedOn), Fragment.lit("""::timestamptz) RETURNING "user_id", "name", "last_name", "email"::text, "password", "created_at", "verified_on" """)) .updateReturning(UsersRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -44,7 +44,7 @@ class UsersRepoImpl extends UsersRepo { val columns: ArrayList[Fragment] = new ArrayList() val values: ArrayList[Fragment] = new ArrayList() columns.add(Fragment.lit(""""user_id"""")): @scala.annotation.nowarn - values.add(interpolate(Fragment.encode(UsersId.dbType, unsaved.userId), Fragment.lit("::uuid"))): @scala.annotation.nowarn + values.add(interpolate(Fragment.encode(UsersId.pgType, unsaved.userId), Fragment.lit("::uuid"))): @scala.annotation.nowarn columns.add(Fragment.lit(""""name"""")): @scala.annotation.nowarn values.add(interpolate(Fragment.encode(PgTypes.text, unsaved.name), Fragment.lit(""))): @scala.annotation.nowarn columns.add(Fragment.lit(""""last_name"""")): @scala.annotation.nowarn @@ -90,13 +90,13 @@ class UsersRepoImpl extends UsersRepo { override def selectById(userId: UsersId)(using c: Connection): Optional[UsersRow] = { interpolate(Fragment.lit("""select "user_id", "name", "last_name", "email"::text, "password", "created_at", "verified_on" from "public"."users" - where "user_id" = """), Fragment.encode(UsersId.dbType, userId), Fragment.lit("")).query(UsersRow.`_rowParser`.first()).runUnchecked(c) + where "user_id" = """), Fragment.encode(UsersId.pgType, userId), Fragment.lit("")).query(UsersRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(userIds: Array[UsersId])(using c: Connection): java.util.List[UsersRow] = { interpolate(Fragment.lit("""select "user_id", "name", "last_name", "email"::text, "password", "created_at", "verified_on" from "public"."users" - where "user_id" = ANY("""), Fragment.encode(UsersId.dbTypeArray, userIds), Fragment.lit(")")).query(UsersRow.`_rowParser`.all()).runUnchecked(c) + where "user_id" = ANY("""), Fragment.encode(UsersId.pgTypeArray, userIds), Fragment.lit(")")).query(UsersRow.`_rowParser`.all()).runUnchecked(c) } override def selectByIdsTracked(userIds: Array[UsersId])(using c: Connection): java.util.Map[UsersId, UsersRow] = { @@ -123,12 +123,12 @@ class UsersRepoImpl extends UsersRepo { "password" = """), Fragment.encode(PgTypes.text, row.password), Fragment.lit(""", "created_at" = """), Fragment.encode(PgTypes.timestamptz, row.createdAt), Fragment.lit("""::timestamptz, "verified_on" = """), Fragment.encode(PgTypes.timestamptz.opt(), row.verifiedOn), Fragment.lit("""::timestamptz - where "user_id" = """), Fragment.encode(UsersId.dbType, userId), Fragment.lit("")).update().runUnchecked(c) > 0 + where "user_id" = """), Fragment.encode(UsersId.pgType, userId), Fragment.lit("")).update().runUnchecked(c) > 0 } override def upsert(unsaved: UsersRow)(using c: Connection): UsersRow = { interpolate(Fragment.lit("""insert into "public"."users"("user_id", "name", "last_name", "email", "password", "created_at", "verified_on") - values ("""), Fragment.encode(UsersId.dbType, unsaved.userId), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.text, unsaved.name), Fragment.lit(", "), Fragment.encode(PgTypes.text.opt(), unsaved.lastName), Fragment.lit(", "), Fragment.encode(PgTypes.unknown, unsaved.email), Fragment.lit("::citext, "), Fragment.encode(PgTypes.text, unsaved.password), Fragment.lit(", "), Fragment.encode(PgTypes.timestamptz, unsaved.createdAt), Fragment.lit("::timestamptz, "), Fragment.encode(PgTypes.timestamptz.opt(), unsaved.verifiedOn), Fragment.lit("""::timestamptz) + values ("""), Fragment.encode(UsersId.pgType, unsaved.userId), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.text, unsaved.name), Fragment.lit(", "), Fragment.encode(PgTypes.text.opt(), unsaved.lastName), Fragment.lit(", "), Fragment.encode(PgTypes.unknown, unsaved.email), Fragment.lit("::citext, "), Fragment.encode(PgTypes.text, unsaved.password), Fragment.lit(", "), Fragment.encode(PgTypes.timestamptz, unsaved.createdAt), Fragment.lit("::timestamptz, "), Fragment.encode(PgTypes.timestamptz.opt(), unsaved.verifiedOn), Fragment.lit("""::timestamptz) on conflict ("user_id") do update set "name" = EXCLUDED."name", diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/users/UsersRow.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/users/UsersRow.scala index aa83c2718d..c7ef099ef7 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/users/UsersRow.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/users/UsersRow.scala @@ -59,7 +59,7 @@ case class UsersRow( } object UsersRow { - val `_rowParser`: RowParser[UsersRow] = RowParsers.of(UsersId.dbType, PgTypes.text, PgTypes.text.opt(), PgTypes.unknown, PgTypes.text, PgTypes.timestamptz, PgTypes.timestamptz.opt(), UsersRow.apply, row => Array[Any](row.userId, row.name, row.lastName, row.email, row.password, row.createdAt, row.verifiedOn)) + val `_rowParser`: RowParser[UsersRow] = RowParsers.of(UsersId.pgType, PgTypes.text, PgTypes.text.opt(), PgTypes.unknown, PgTypes.text, PgTypes.timestamptz, PgTypes.timestamptz.opt(), UsersRow.apply, row => Array[Any](row.userId, row.name, row.lastName, row.email, row.password, row.createdAt, row.verifiedOn)) given pgText: PgText[UsersRow] = PgText.from(`_rowParser`) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/users/UsersRowUnsaved.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/users/UsersRowUnsaved.scala index e2f3f55833..09dbd78ba6 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/users/UsersRowUnsaved.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/public/users/UsersRowUnsaved.scala @@ -39,5 +39,5 @@ case class UsersRowUnsaved( } object UsersRowUnsaved { - given pgText: PgText[UsersRowUnsaved] = PgText.instance((row, sb) => { UsersId.dbType.text.unsafeEncode(row.userId, sb); sb.append(PgText.DELIMETER); PgTypes.text.text.unsafeEncode(row.name, sb); sb.append(PgText.DELIMETER); PgTypes.text.opt().text.unsafeEncode(row.lastName, sb); sb.append(PgText.DELIMETER); PgTypes.unknown.text.unsafeEncode(row.email, sb); sb.append(PgText.DELIMETER); PgTypes.text.text.unsafeEncode(row.password, sb); sb.append(PgText.DELIMETER); PgTypes.timestamptz.opt().text.unsafeEncode(row.verifiedOn, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamptz.text).unsafeEncode(row.createdAt, sb) }) + given pgText: PgText[UsersRowUnsaved] = PgText.instance((row, sb) => { UsersId.pgType.text.unsafeEncode(row.userId, sb); sb.append(PgText.DELIMETER); PgTypes.text.text.unsafeEncode(row.name, sb); sb.append(PgText.DELIMETER); PgTypes.text.opt().text.unsafeEncode(row.lastName, sb); sb.append(PgText.DELIMETER); PgTypes.unknown.text.unsafeEncode(row.email, sb); sb.append(PgText.DELIMETER); PgTypes.text.text.unsafeEncode(row.password, sb); sb.append(PgText.DELIMETER); PgTypes.timestamptz.opt().text.unsafeEncode(row.verifiedOn, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamptz.text).unsafeEncode(row.createdAt, sb) }) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonFields.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonFields.scala index f69c82174a..e11627b374 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonFields.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonFields.scala @@ -36,7 +36,7 @@ class SalespersonFields(val `_path`: java.util.List[Path]) extends TupleExpr9[Bu Optional.empty(), Optional.of("int4"), (row, value) => row.copy(businessentityid = value), - BusinessentityId.dbType + BusinessentityId.pgType ) } @@ -48,7 +48,7 @@ class SalespersonFields(val `_path`: java.util.List[Path]) extends TupleExpr9[Bu Optional.empty(), Optional.of("int4"), (row, value) => row.copy(territoryid = value), - SalesterritoryId.dbType + SalesterritoryId.pgType ) } diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRepoImpl.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRepoImpl.scala index 758faf90e7..f074eeeb65 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRepoImpl.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRepoImpl.scala @@ -23,19 +23,19 @@ import dev.typr.foundations.Fragment.interpolate class SalespersonRepoImpl extends SalespersonRepo { override def delete: DeleteBuilder[SalespersonFields, SalespersonRow] = DeleteBuilder.of(""""sales"."salesperson"""", SalespersonFields.structure, Dialect.POSTGRESQL) - override def deleteById(businessentityid: BusinessentityId)(using c: Connection): java.lang.Boolean = interpolate(Fragment.lit("""delete from "sales"."salesperson" where "businessentityid" = """), Fragment.encode(BusinessentityId.dbType, businessentityid), Fragment.lit("")).update().runUnchecked(c) > 0 + override def deleteById(businessentityid: BusinessentityId)(using c: Connection): java.lang.Boolean = interpolate(Fragment.lit("""delete from "sales"."salesperson" where "businessentityid" = """), Fragment.encode(BusinessentityId.pgType, businessentityid), Fragment.lit("")).update().runUnchecked(c) > 0 override def deleteByIds(businessentityids: Array[BusinessentityId])(using c: Connection): Integer = { interpolate(Fragment.lit("""delete from "sales"."salesperson" - where "businessentityid" = ANY("""), Fragment.encode(BusinessentityId.dbTypeArray, businessentityids), Fragment.lit(")")) + where "businessentityid" = ANY("""), Fragment.encode(BusinessentityId.pgTypeArray, businessentityids), Fragment.lit(")")) .update() .runUnchecked(c) } override def insert(unsaved: SalespersonRow)(using c: Connection): SalespersonRow = { interpolate(Fragment.lit("""insert into "sales"."salesperson"("businessentityid", "territoryid", "salesquota", "bonus", "commissionpct", "salesytd", "saleslastyear", "rowguid", "modifieddate") - values ("""), Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid), Fragment.lit("::int4, "), Fragment.encode(SalesterritoryId.dbType.opt(), unsaved.territoryid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.numeric.opt(), unsaved.salesquota), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.bonus), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.commissionpct), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.salesytd), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.saleslastyear), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) + values ("""), Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid), Fragment.lit("::int4, "), Fragment.encode(SalesterritoryId.pgType.opt(), unsaved.territoryid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.numeric.opt(), unsaved.salesquota), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.bonus), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.commissionpct), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.salesytd), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.saleslastyear), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) RETURNING "businessentityid", "territoryid", "salesquota", "bonus", "commissionpct", "salesytd", "saleslastyear", "rowguid", "modifieddate" """)) .updateReturning(SalespersonRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -45,9 +45,9 @@ class SalespersonRepoImpl extends SalespersonRepo { val columns: ArrayList[Fragment] = new ArrayList() val values: ArrayList[Fragment] = new ArrayList() columns.add(Fragment.lit(""""businessentityid"""")): @scala.annotation.nowarn - values.add(interpolate(Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid), Fragment.lit("::int4"))): @scala.annotation.nowarn + values.add(interpolate(Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid), Fragment.lit("::int4"))): @scala.annotation.nowarn columns.add(Fragment.lit(""""territoryid"""")): @scala.annotation.nowarn - values.add(interpolate(Fragment.encode(SalesterritoryId.dbType.opt(), unsaved.territoryid), Fragment.lit("::int4"))): @scala.annotation.nowarn + values.add(interpolate(Fragment.encode(SalesterritoryId.pgType.opt(), unsaved.territoryid), Fragment.lit("::int4"))): @scala.annotation.nowarn columns.add(Fragment.lit(""""salesquota"""")): @scala.annotation.nowarn values.add(interpolate(Fragment.encode(PgTypes.numeric.opt(), unsaved.salesquota), Fragment.lit("::numeric"))): @scala.annotation.nowarn unsaved.bonus.visit( @@ -105,13 +105,13 @@ class SalespersonRepoImpl extends SalespersonRepo { override def selectById(businessentityid: BusinessentityId)(using c: Connection): Optional[SalespersonRow] = { interpolate(Fragment.lit("""select "businessentityid", "territoryid", "salesquota", "bonus", "commissionpct", "salesytd", "saleslastyear", "rowguid", "modifieddate" from "sales"."salesperson" - where "businessentityid" = """), Fragment.encode(BusinessentityId.dbType, businessentityid), Fragment.lit("")).query(SalespersonRow.`_rowParser`.first()).runUnchecked(c) + where "businessentityid" = """), Fragment.encode(BusinessentityId.pgType, businessentityid), Fragment.lit("")).query(SalespersonRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(businessentityids: Array[BusinessentityId])(using c: Connection): java.util.List[SalespersonRow] = { interpolate(Fragment.lit("""select "businessentityid", "territoryid", "salesquota", "bonus", "commissionpct", "salesytd", "saleslastyear", "rowguid", "modifieddate" from "sales"."salesperson" - where "businessentityid" = ANY("""), Fragment.encode(BusinessentityId.dbTypeArray, businessentityids), Fragment.lit(")")).query(SalespersonRow.`_rowParser`.all()).runUnchecked(c) + where "businessentityid" = ANY("""), Fragment.encode(BusinessentityId.pgTypeArray, businessentityids), Fragment.lit(")")).query(SalespersonRow.`_rowParser`.all()).runUnchecked(c) } override def selectByIdsTracked(businessentityids: Array[BusinessentityId])(using c: Connection): java.util.Map[BusinessentityId, SalespersonRow] = { @@ -125,7 +125,7 @@ class SalespersonRepoImpl extends SalespersonRepo { override def update(row: SalespersonRow)(using c: Connection): java.lang.Boolean = { val businessentityid: BusinessentityId = row.businessentityid return interpolate(Fragment.lit("""update "sales"."salesperson" - set "territoryid" = """), Fragment.encode(SalesterritoryId.dbType.opt(), row.territoryid), Fragment.lit("""::int4, + set "territoryid" = """), Fragment.encode(SalesterritoryId.pgType.opt(), row.territoryid), Fragment.lit("""::int4, "salesquota" = """), Fragment.encode(PgTypes.numeric.opt(), row.salesquota), Fragment.lit("""::numeric, "bonus" = """), Fragment.encode(PgTypes.numeric, row.bonus), Fragment.lit("""::numeric, "commissionpct" = """), Fragment.encode(PgTypes.numeric, row.commissionpct), Fragment.lit("""::numeric, @@ -133,12 +133,12 @@ class SalespersonRepoImpl extends SalespersonRepo { "saleslastyear" = """), Fragment.encode(PgTypes.numeric, row.saleslastyear), Fragment.lit("""::numeric, "rowguid" = """), Fragment.encode(PgTypes.uuid, row.rowguid), Fragment.lit("""::uuid, "modifieddate" = """), Fragment.encode(PgTypes.timestamp, row.modifieddate), Fragment.lit("""::timestamp - where "businessentityid" = """), Fragment.encode(BusinessentityId.dbType, businessentityid), Fragment.lit("")).update().runUnchecked(c) > 0 + where "businessentityid" = """), Fragment.encode(BusinessentityId.pgType, businessentityid), Fragment.lit("")).update().runUnchecked(c) > 0 } override def upsert(unsaved: SalespersonRow)(using c: Connection): SalespersonRow = { interpolate(Fragment.lit("""insert into "sales"."salesperson"("businessentityid", "territoryid", "salesquota", "bonus", "commissionpct", "salesytd", "saleslastyear", "rowguid", "modifieddate") - values ("""), Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid), Fragment.lit("::int4, "), Fragment.encode(SalesterritoryId.dbType.opt(), unsaved.territoryid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.numeric.opt(), unsaved.salesquota), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.bonus), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.commissionpct), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.salesytd), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.saleslastyear), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) + values ("""), Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid), Fragment.lit("::int4, "), Fragment.encode(SalesterritoryId.pgType.opt(), unsaved.territoryid), Fragment.lit("::int4, "), Fragment.encode(PgTypes.numeric.opt(), unsaved.salesquota), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.bonus), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.commissionpct), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.salesytd), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.saleslastyear), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) on conflict ("businessentityid") do update set "territoryid" = EXCLUDED."territoryid", diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRow.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRow.scala index a5033dab3c..2d2445667d 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRow.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRow.scala @@ -102,7 +102,7 @@ case class SalespersonRow( } object SalespersonRow { - val `_rowParser`: RowParser[SalespersonRow] = RowParsers.of(BusinessentityId.dbType, SalesterritoryId.dbType.opt(), PgTypes.numeric.opt(), PgTypes.numeric, PgTypes.numeric, PgTypes.numeric, PgTypes.numeric, PgTypes.uuid, PgTypes.timestamp, SalespersonRow.apply, row => Array[Any](row.businessentityid, row.territoryid, row.salesquota, row.bonus, row.commissionpct, row.salesytd, row.saleslastyear, row.rowguid, row.modifieddate)) + val `_rowParser`: RowParser[SalespersonRow] = RowParsers.of(BusinessentityId.pgType, SalesterritoryId.pgType.opt(), PgTypes.numeric.opt(), PgTypes.numeric, PgTypes.numeric, PgTypes.numeric, PgTypes.numeric, PgTypes.uuid, PgTypes.timestamp, SalespersonRow.apply, row => Array[Any](row.businessentityid, row.territoryid, row.salesquota, row.bonus, row.commissionpct, row.salesytd, row.saleslastyear, row.rowguid, row.modifieddate)) given pgText: PgText[SalespersonRow] = PgText.from(`_rowParser`) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRowUnsaved.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRowUnsaved.scala index 2e6aacf33b..d3562cc07b 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRowUnsaved.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRowUnsaved.scala @@ -77,5 +77,5 @@ case class SalespersonRowUnsaved( } object SalespersonRowUnsaved { - given pgText: PgText[SalespersonRowUnsaved] = PgText.instance((row, sb) => { BusinessentityId.dbType.text.unsafeEncode(row.businessentityid, sb); sb.append(PgText.DELIMETER); SalesterritoryId.dbType.opt().text.unsafeEncode(row.territoryid, sb); sb.append(PgText.DELIMETER); PgTypes.numeric.opt().text.unsafeEncode(row.salesquota, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.numeric.text).unsafeEncode(row.bonus, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.numeric.text).unsafeEncode(row.commissionpct, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.numeric.text).unsafeEncode(row.salesytd, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.numeric.text).unsafeEncode(row.saleslastyear, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.uuid.text).unsafeEncode(row.rowguid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) + given pgText: PgText[SalespersonRowUnsaved] = PgText.instance((row, sb) => { BusinessentityId.pgType.text.unsafeEncode(row.businessentityid, sb); sb.append(PgText.DELIMETER); SalesterritoryId.pgType.opt().text.unsafeEncode(row.territoryid, sb); sb.append(PgText.DELIMETER); PgTypes.numeric.opt().text.unsafeEncode(row.salesquota, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.numeric.text).unsafeEncode(row.bonus, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.numeric.text).unsafeEncode(row.commissionpct, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.numeric.text).unsafeEncode(row.salesytd, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.numeric.text).unsafeEncode(row.saleslastyear, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.uuid.text).unsafeEncode(row.rowguid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryFields.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryFields.scala index efda3479a6..dc858b9239 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryFields.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryFields.scala @@ -33,7 +33,7 @@ class SalesterritoryFields(val `_path`: java.util.List[Path]) extends TupleExpr1 Optional.empty(), Optional.of("int4"), (row, value) => row.copy(territoryid = value), - SalesterritoryId.dbType + SalesterritoryId.pgType ) } @@ -45,7 +45,7 @@ class SalesterritoryFields(val `_path`: java.util.List[Path]) extends TupleExpr1 Optional.empty(), Optional.of("varchar"), (row, value) => row.copy(name = value), - Name.dbType + Name.pgType ) } @@ -57,7 +57,7 @@ class SalesterritoryFields(val `_path`: java.util.List[Path]) extends TupleExpr1 Optional.empty(), Optional.empty(), (row, value) => row.copy(countryregioncode = value), - CountryregionId.dbType + CountryregionId.pgType ) } diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryId.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryId.scala index 056e3a3eae..ad96f92277 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryId.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryId.scala @@ -16,7 +16,7 @@ case class SalesterritoryId(@JsonValue value: Integer) extends scala.AnyVal object SalesterritoryId { given bijection: Bijection[SalesterritoryId, Integer] = Bijection.apply[SalesterritoryId, Integer](_.value)(SalesterritoryId.apply) - given dbType: PgType[SalesterritoryId] = PgTypes.int4.bimap(SalesterritoryId.apply, _.value) + given pgType: PgType[SalesterritoryId] = PgTypes.int4.bimap(SalesterritoryId.apply, _.value) - given dbTypeArray: PgType[Array[SalesterritoryId]] = PgTypes.int4Array.bimap(xs => xs.map(SalesterritoryId.apply), xs => xs.map(_.value)) + given pgTypeArray: PgType[Array[SalesterritoryId]] = PgTypes.int4Array.bimap(xs => xs.map(SalesterritoryId.apply), xs => xs.map(_.value)) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRepoImpl.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRepoImpl.scala index a1b3b52112..ed53e775d5 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRepoImpl.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRepoImpl.scala @@ -23,19 +23,19 @@ import dev.typr.foundations.Fragment.interpolate class SalesterritoryRepoImpl extends SalesterritoryRepo { override def delete: DeleteBuilder[SalesterritoryFields, SalesterritoryRow] = DeleteBuilder.of(""""sales"."salesterritory"""", SalesterritoryFields.structure, Dialect.POSTGRESQL) - override def deleteById(territoryid: SalesterritoryId)(using c: Connection): java.lang.Boolean = interpolate(Fragment.lit("""delete from "sales"."salesterritory" where "territoryid" = """), Fragment.encode(SalesterritoryId.dbType, territoryid), Fragment.lit("")).update().runUnchecked(c) > 0 + override def deleteById(territoryid: SalesterritoryId)(using c: Connection): java.lang.Boolean = interpolate(Fragment.lit("""delete from "sales"."salesterritory" where "territoryid" = """), Fragment.encode(SalesterritoryId.pgType, territoryid), Fragment.lit("")).update().runUnchecked(c) > 0 override def deleteByIds(territoryids: Array[SalesterritoryId])(using c: Connection): Integer = { interpolate(Fragment.lit("""delete from "sales"."salesterritory" - where "territoryid" = ANY("""), Fragment.encode(SalesterritoryId.dbTypeArray, territoryids), Fragment.lit(")")) + where "territoryid" = ANY("""), Fragment.encode(SalesterritoryId.pgTypeArray, territoryids), Fragment.lit(")")) .update() .runUnchecked(c) } override def insert(unsaved: SalesterritoryRow)(using c: Connection): SalesterritoryRow = { interpolate(Fragment.lit("""insert into "sales"."salesterritory"("territoryid", "name", "countryregioncode", "group", "salesytd", "saleslastyear", "costytd", "costlastyear", "rowguid", "modifieddate") - values ("""), Fragment.encode(SalesterritoryId.dbType, unsaved.territoryid), Fragment.lit("::int4, "), Fragment.encode(Name.dbType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(CountryregionId.dbType, unsaved.countryregioncode), Fragment.lit(", "), Fragment.encode(PgTypes.text, unsaved.group), Fragment.lit(", "), Fragment.encode(PgTypes.numeric, unsaved.salesytd), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.saleslastyear), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.costytd), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.costlastyear), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) + values ("""), Fragment.encode(SalesterritoryId.pgType, unsaved.territoryid), Fragment.lit("::int4, "), Fragment.encode(Name.pgType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(CountryregionId.pgType, unsaved.countryregioncode), Fragment.lit(", "), Fragment.encode(PgTypes.text, unsaved.group), Fragment.lit(", "), Fragment.encode(PgTypes.numeric, unsaved.salesytd), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.saleslastyear), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.costytd), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.costlastyear), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) RETURNING "territoryid", "name", "countryregioncode", "group", "salesytd", "saleslastyear", "costytd", "costlastyear", "rowguid", "modifieddate" """)) .updateReturning(SalesterritoryRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -45,14 +45,14 @@ class SalesterritoryRepoImpl extends SalesterritoryRepo { val columns: ArrayList[Fragment] = new ArrayList() val values: ArrayList[Fragment] = new ArrayList() columns.add(Fragment.lit(""""name"""")): @scala.annotation.nowarn - values.add(interpolate(Fragment.encode(Name.dbType, unsaved.name), Fragment.lit("::varchar"))): @scala.annotation.nowarn + values.add(interpolate(Fragment.encode(Name.pgType, unsaved.name), Fragment.lit("::varchar"))): @scala.annotation.nowarn columns.add(Fragment.lit(""""countryregioncode"""")): @scala.annotation.nowarn - values.add(interpolate(Fragment.encode(CountryregionId.dbType, unsaved.countryregioncode), Fragment.lit(""))): @scala.annotation.nowarn + values.add(interpolate(Fragment.encode(CountryregionId.pgType, unsaved.countryregioncode), Fragment.lit(""))): @scala.annotation.nowarn columns.add(Fragment.lit(""""group"""")): @scala.annotation.nowarn values.add(interpolate(Fragment.encode(PgTypes.text, unsaved.group), Fragment.lit(""))): @scala.annotation.nowarn unsaved.territoryid.visit( { }, - value => { columns.add(Fragment.lit(""""territoryid"""")): @scala.annotation.nowarn; values.add(interpolate(Fragment.encode(SalesterritoryId.dbType, value), Fragment.lit("::int4"))): @scala.annotation.nowarn } + value => { columns.add(Fragment.lit(""""territoryid"""")): @scala.annotation.nowarn; values.add(interpolate(Fragment.encode(SalesterritoryId.pgType, value), Fragment.lit("::int4"))): @scala.annotation.nowarn } ); unsaved.salesytd.visit( { }, @@ -109,13 +109,13 @@ class SalesterritoryRepoImpl extends SalesterritoryRepo { override def selectById(territoryid: SalesterritoryId)(using c: Connection): Optional[SalesterritoryRow] = { interpolate(Fragment.lit("""select "territoryid", "name", "countryregioncode", "group", "salesytd", "saleslastyear", "costytd", "costlastyear", "rowguid", "modifieddate" from "sales"."salesterritory" - where "territoryid" = """), Fragment.encode(SalesterritoryId.dbType, territoryid), Fragment.lit("")).query(SalesterritoryRow.`_rowParser`.first()).runUnchecked(c) + where "territoryid" = """), Fragment.encode(SalesterritoryId.pgType, territoryid), Fragment.lit("")).query(SalesterritoryRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(territoryids: Array[SalesterritoryId])(using c: Connection): java.util.List[SalesterritoryRow] = { interpolate(Fragment.lit("""select "territoryid", "name", "countryregioncode", "group", "salesytd", "saleslastyear", "costytd", "costlastyear", "rowguid", "modifieddate" from "sales"."salesterritory" - where "territoryid" = ANY("""), Fragment.encode(SalesterritoryId.dbTypeArray, territoryids), Fragment.lit(")")).query(SalesterritoryRow.`_rowParser`.all()).runUnchecked(c) + where "territoryid" = ANY("""), Fragment.encode(SalesterritoryId.pgTypeArray, territoryids), Fragment.lit(")")).query(SalesterritoryRow.`_rowParser`.all()).runUnchecked(c) } override def selectByIdsTracked(territoryids: Array[SalesterritoryId])(using c: Connection): java.util.Map[SalesterritoryId, SalesterritoryRow] = { @@ -129,8 +129,8 @@ class SalesterritoryRepoImpl extends SalesterritoryRepo { override def update(row: SalesterritoryRow)(using c: Connection): java.lang.Boolean = { val territoryid: SalesterritoryId = row.territoryid return interpolate(Fragment.lit("""update "sales"."salesterritory" - set "name" = """), Fragment.encode(Name.dbType, row.name), Fragment.lit("""::varchar, - "countryregioncode" = """), Fragment.encode(CountryregionId.dbType, row.countryregioncode), Fragment.lit(""", + set "name" = """), Fragment.encode(Name.pgType, row.name), Fragment.lit("""::varchar, + "countryregioncode" = """), Fragment.encode(CountryregionId.pgType, row.countryregioncode), Fragment.lit(""", "group" = """), Fragment.encode(PgTypes.text, row.group), Fragment.lit(""", "salesytd" = """), Fragment.encode(PgTypes.numeric, row.salesytd), Fragment.lit("""::numeric, "saleslastyear" = """), Fragment.encode(PgTypes.numeric, row.saleslastyear), Fragment.lit("""::numeric, @@ -138,12 +138,12 @@ class SalesterritoryRepoImpl extends SalesterritoryRepo { "costlastyear" = """), Fragment.encode(PgTypes.numeric, row.costlastyear), Fragment.lit("""::numeric, "rowguid" = """), Fragment.encode(PgTypes.uuid, row.rowguid), Fragment.lit("""::uuid, "modifieddate" = """), Fragment.encode(PgTypes.timestamp, row.modifieddate), Fragment.lit("""::timestamp - where "territoryid" = """), Fragment.encode(SalesterritoryId.dbType, territoryid), Fragment.lit("")).update().runUnchecked(c) > 0 + where "territoryid" = """), Fragment.encode(SalesterritoryId.pgType, territoryid), Fragment.lit("")).update().runUnchecked(c) > 0 } override def upsert(unsaved: SalesterritoryRow)(using c: Connection): SalesterritoryRow = { interpolate(Fragment.lit("""insert into "sales"."salesterritory"("territoryid", "name", "countryregioncode", "group", "salesytd", "saleslastyear", "costytd", "costlastyear", "rowguid", "modifieddate") - values ("""), Fragment.encode(SalesterritoryId.dbType, unsaved.territoryid), Fragment.lit("::int4, "), Fragment.encode(Name.dbType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(CountryregionId.dbType, unsaved.countryregioncode), Fragment.lit(", "), Fragment.encode(PgTypes.text, unsaved.group), Fragment.lit(", "), Fragment.encode(PgTypes.numeric, unsaved.salesytd), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.saleslastyear), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.costytd), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.costlastyear), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) + values ("""), Fragment.encode(SalesterritoryId.pgType, unsaved.territoryid), Fragment.lit("::int4, "), Fragment.encode(Name.pgType, unsaved.name), Fragment.lit("::varchar, "), Fragment.encode(CountryregionId.pgType, unsaved.countryregioncode), Fragment.lit(", "), Fragment.encode(PgTypes.text, unsaved.group), Fragment.lit(", "), Fragment.encode(PgTypes.numeric, unsaved.salesytd), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.saleslastyear), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.costytd), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.numeric, unsaved.costlastyear), Fragment.lit("::numeric, "), Fragment.encode(PgTypes.uuid, unsaved.rowguid), Fragment.lit("::uuid, "), Fragment.encode(PgTypes.timestamp, unsaved.modifieddate), Fragment.lit("""::timestamp) on conflict ("territoryid") do update set "name" = EXCLUDED."name", diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRow.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRow.scala index c72db51738..46dddf89dd 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRow.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRow.scala @@ -105,7 +105,7 @@ case class SalesterritoryRow( } object SalesterritoryRow { - val `_rowParser`: RowParser[SalesterritoryRow] = RowParsers.of(SalesterritoryId.dbType, Name.dbType, CountryregionId.dbType, PgTypes.text, PgTypes.numeric, PgTypes.numeric, PgTypes.numeric, PgTypes.numeric, PgTypes.uuid, PgTypes.timestamp, SalesterritoryRow.apply, row => Array[Any](row.territoryid, row.name, row.countryregioncode, row.group, row.salesytd, row.saleslastyear, row.costytd, row.costlastyear, row.rowguid, row.modifieddate)) + val `_rowParser`: RowParser[SalesterritoryRow] = RowParsers.of(SalesterritoryId.pgType, Name.pgType, CountryregionId.pgType, PgTypes.text, PgTypes.numeric, PgTypes.numeric, PgTypes.numeric, PgTypes.numeric, PgTypes.uuid, PgTypes.timestamp, SalesterritoryRow.apply, row => Array[Any](row.territoryid, row.name, row.countryregioncode, row.group, row.salesytd, row.saleslastyear, row.costytd, row.costlastyear, row.rowguid, row.modifieddate)) given pgText: PgText[SalesterritoryRow] = PgText.from(`_rowParser`) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRowUnsaved.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRowUnsaved.scala index 91e837df11..ad09507d1a 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRowUnsaved.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRowUnsaved.scala @@ -78,5 +78,5 @@ case class SalesterritoryRowUnsaved( } object SalesterritoryRowUnsaved { - given pgText: PgText[SalesterritoryRowUnsaved] = PgText.instance((row, sb) => { Name.dbType.text.unsafeEncode(row.name, sb); sb.append(PgText.DELIMETER); CountryregionId.dbType.text.unsafeEncode(row.countryregioncode, sb); sb.append(PgText.DELIMETER); PgTypes.text.text.unsafeEncode(row.group, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using SalesterritoryId.dbType.text).unsafeEncode(row.territoryid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.numeric.text).unsafeEncode(row.salesytd, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.numeric.text).unsafeEncode(row.saleslastyear, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.numeric.text).unsafeEncode(row.costytd, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.numeric.text).unsafeEncode(row.costlastyear, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.uuid.text).unsafeEncode(row.rowguid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) + given pgText: PgText[SalesterritoryRowUnsaved] = PgText.instance((row, sb) => { Name.pgType.text.unsafeEncode(row.name, sb); sb.append(PgText.DELIMETER); CountryregionId.pgType.text.unsafeEncode(row.countryregioncode, sb); sb.append(PgText.DELIMETER); PgTypes.text.text.unsafeEncode(row.group, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using SalesterritoryId.pgType.text).unsafeEncode(row.territoryid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.numeric.text).unsafeEncode(row.salesytd, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.numeric.text).unsafeEncode(row.saleslastyear, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.numeric.text).unsafeEncode(row.costytd, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.numeric.text).unsafeEncode(row.costlastyear, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.uuid.text).unsafeEncode(row.rowguid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/update_person_returning/UpdatePersonReturningSqlRow.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/update_person_returning/UpdatePersonReturningSqlRow.scala index b5ee44a512..4d13c2012b 100644 --- a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/update_person_returning/UpdatePersonReturningSqlRow.scala +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/update_person_returning/UpdatePersonReturningSqlRow.scala @@ -25,5 +25,5 @@ case class UpdatePersonReturningSqlRow( } object UpdatePersonReturningSqlRow { - val `_rowParser`: RowParser[UpdatePersonReturningSqlRow] = RowParsers.of(FirstName.dbType, PgTypes.timestamp, UpdatePersonReturningSqlRow.apply, row => Array[Any](row.firstname, row.modifieddate)) + val `_rowParser`: RowParser[UpdatePersonReturningSqlRow] = RowParsers.of(FirstName.pgType, PgTypes.timestamp, UpdatePersonReturningSqlRow.apply, row => Array[Any](row.firstname, row.modifieddate)) } \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/userdefined/ActiveFlag.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/userdefined/ActiveFlag.scala new file mode 100644 index 0000000000..995f3e664d --- /dev/null +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/userdefined/ActiveFlag.scala @@ -0,0 +1,24 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined + +import adventureworks.public.Flag +import com.fasterxml.jackson.annotation.JsonValue +import dev.typr.foundations.PgType +import dev.typr.foundations.dsl.Bijection + +/** Shared type `ActiveFlag` + * Generated from TypeDefinitions matching + */ +case class ActiveFlag(@JsonValue value: Flag) extends scala.AnyVal + +object ActiveFlag { + given bijection: Bijection[ActiveFlag, Flag] = Bijection.apply[ActiveFlag, Flag](_.value)(ActiveFlag.apply) + + given pgType: PgType[ActiveFlag] = Flag.pgType.bimap(ActiveFlag.apply, _.value) + + given pgTypeArray: PgType[Array[ActiveFlag]] = Flag.pgTypeArray.bimap(xs => xs.map(ActiveFlag.apply), xs => xs.map(_.value)) +} \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/userdefined/CurrentFlag.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/userdefined/CurrentFlag.scala new file mode 100644 index 0000000000..678a1b6c06 --- /dev/null +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/userdefined/CurrentFlag.scala @@ -0,0 +1,24 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined + +import adventureworks.public.Flag +import com.fasterxml.jackson.annotation.JsonValue +import dev.typr.foundations.PgType +import dev.typr.foundations.dsl.Bijection + +/** Shared type `CurrentFlag` + * Generated from TypeDefinitions matching + */ +case class CurrentFlag(@JsonValue value: Flag) extends scala.AnyVal + +object CurrentFlag { + given bijection: Bijection[CurrentFlag, Flag] = Bijection.apply[CurrentFlag, Flag](_.value)(CurrentFlag.apply) + + given pgType: PgType[CurrentFlag] = Flag.pgType.bimap(CurrentFlag.apply, _.value) + + given pgTypeArray: PgType[Array[CurrentFlag]] = Flag.pgTypeArray.bimap(xs => xs.map(CurrentFlag.apply), xs => xs.map(_.value)) +} \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/userdefined/FirstName.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/userdefined/FirstName.scala new file mode 100644 index 0000000000..c66e2dd2cc --- /dev/null +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/userdefined/FirstName.scala @@ -0,0 +1,24 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined + +import adventureworks.public.Name +import com.fasterxml.jackson.annotation.JsonValue +import dev.typr.foundations.PgType +import dev.typr.foundations.dsl.Bijection + +/** Shared type `FirstName` + * Generated from TypeDefinitions matching + */ +case class FirstName(@JsonValue value: Name) extends scala.AnyVal + +object FirstName { + given bijection: Bijection[FirstName, Name] = Bijection.apply[FirstName, Name](_.value)(FirstName.apply) + + given pgType: PgType[FirstName] = Name.pgType.bimap(FirstName.apply, _.value) + + given pgTypeArray: PgType[Array[FirstName]] = Name.pgTypeArray.bimap(xs => xs.map(FirstName.apply), xs => xs.map(_.value)) +} \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/userdefined/LastName.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/userdefined/LastName.scala new file mode 100644 index 0000000000..ba23e63d69 --- /dev/null +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/userdefined/LastName.scala @@ -0,0 +1,24 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined + +import adventureworks.public.Name +import com.fasterxml.jackson.annotation.JsonValue +import dev.typr.foundations.PgType +import dev.typr.foundations.dsl.Bijection + +/** Shared type `LastName` + * Generated from TypeDefinitions matching + */ +case class LastName(@JsonValue value: Name) extends scala.AnyVal + +object LastName { + given bijection: Bijection[LastName, Name] = Bijection.apply[LastName, Name](_.value)(LastName.apply) + + given pgType: PgType[LastName] = Name.pgType.bimap(LastName.apply, _.value) + + given pgTypeArray: PgType[Array[LastName]] = Name.pgTypeArray.bimap(xs => xs.map(LastName.apply), xs => xs.map(_.value)) +} \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/userdefined/MiddleName.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/userdefined/MiddleName.scala new file mode 100644 index 0000000000..e19b8b347e --- /dev/null +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/userdefined/MiddleName.scala @@ -0,0 +1,24 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined + +import adventureworks.public.Name +import com.fasterxml.jackson.annotation.JsonValue +import dev.typr.foundations.PgType +import dev.typr.foundations.dsl.Bijection + +/** Shared type `MiddleName` + * Generated from TypeDefinitions matching + */ +case class MiddleName(@JsonValue value: Name) extends scala.AnyVal + +object MiddleName { + given bijection: Bijection[MiddleName, Name] = Bijection.apply[MiddleName, Name](_.value)(MiddleName.apply) + + given pgType: PgType[MiddleName] = Name.pgType.bimap(MiddleName.apply, _.value) + + given pgTypeArray: PgType[Array[MiddleName]] = Name.pgTypeArray.bimap(xs => xs.map(MiddleName.apply), xs => xs.map(_.value)) +} \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/userdefined/OnlineOrderFlag.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/userdefined/OnlineOrderFlag.scala new file mode 100644 index 0000000000..9f5f0e3c12 --- /dev/null +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/userdefined/OnlineOrderFlag.scala @@ -0,0 +1,24 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined + +import adventureworks.public.Flag +import com.fasterxml.jackson.annotation.JsonValue +import dev.typr.foundations.PgType +import dev.typr.foundations.dsl.Bijection + +/** Shared type `OnlineOrderFlag` + * Generated from TypeDefinitions matching + */ +case class OnlineOrderFlag(@JsonValue value: Flag) extends scala.AnyVal + +object OnlineOrderFlag { + given bijection: Bijection[OnlineOrderFlag, Flag] = Bijection.apply[OnlineOrderFlag, Flag](_.value)(OnlineOrderFlag.apply) + + given pgType: PgType[OnlineOrderFlag] = Flag.pgType.bimap(OnlineOrderFlag.apply, _.value) + + given pgTypeArray: PgType[Array[OnlineOrderFlag]] = Flag.pgTypeArray.bimap(xs => xs.map(OnlineOrderFlag.apply), xs => xs.map(_.value)) +} \ No newline at end of file diff --git a/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/userdefined/SalariedFlag.scala b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/userdefined/SalariedFlag.scala new file mode 100644 index 0000000000..77b9bf5a0c --- /dev/null +++ b/testers/pg/scala/javatypes/generated-and-checked-in/adventureworks/userdefined/SalariedFlag.scala @@ -0,0 +1,24 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined + +import adventureworks.public.Flag +import com.fasterxml.jackson.annotation.JsonValue +import dev.typr.foundations.PgType +import dev.typr.foundations.dsl.Bijection + +/** Shared type `SalariedFlag` + * Generated from TypeDefinitions matching + */ +case class SalariedFlag(@JsonValue value: Flag) extends scala.AnyVal + +object SalariedFlag { + given bijection: Bijection[SalariedFlag, Flag] = Bijection.apply[SalariedFlag, Flag](_.value)(SalariedFlag.apply) + + given pgType: PgType[SalariedFlag] = Flag.pgType.bimap(SalariedFlag.apply, _.value) + + given pgTypeArray: PgType[Array[SalariedFlag]] = Flag.pgTypeArray.bimap(xs => xs.map(SalariedFlag.apply), xs => xs.map(_.value)) +} \ No newline at end of file diff --git a/testers/pg/scala/javatypes/src/scala/adventureworks/RecordTest.scala b/testers/pg/scala/javatypes/src/scala/adventureworks/RecordTest.scala index 7baea19c9b..18255d4145 100644 --- a/testers/pg/scala/javatypes/src/scala/adventureworks/RecordTest.scala +++ b/testers/pg/scala/javatypes/src/scala/adventureworks/RecordTest.scala @@ -7,7 +7,7 @@ import adventureworks.person.person.* import adventureworks.person_row_join.* import adventureworks.public.Name import adventureworks.sales.salesperson.* -import adventureworks.userdefined.FirstName +import adventureworks.userdefined.{FirstName, LastName} import org.junit.Test import java.time.LocalDate @@ -31,8 +31,8 @@ class RecordTest { PersonRowUnsaved( businessentityid = businessentityRow.businessentityid, persontype = "EM", - firstname = FirstName("a"), - lastname = Name("lastname") + firstname = FirstName(Name("a")), + lastname = LastName(Name("lastname")) ) ) diff --git a/testers/pg/scala/javatypes/src/scala/adventureworks/SeekDbTest.scala b/testers/pg/scala/javatypes/src/scala/adventureworks/SeekDbTest.scala index 64bae09e8e..235cf6dd23 100644 --- a/testers/pg/scala/javatypes/src/scala/adventureworks/SeekDbTest.scala +++ b/testers/pg/scala/javatypes/src/scala/adventureworks/SeekDbTest.scala @@ -32,7 +32,7 @@ class SeekDbTest { val rows1 = businessentityRepo.select .maybeSeek(f => f.modifieddate.asc, java.util.Optional.empty[LocalDateTime](), (v: LocalDateTime) => new SqlExpr.ConstReq(v, timestampPgType)) - .maybeSeek(f => f.businessentityid.asc, java.util.Optional.empty[BusinessentityId](), (v: BusinessentityId) => new SqlExpr.ConstReq(v, BusinessentityId.dbType)) + .maybeSeek(f => f.businessentityid.asc, java.util.Optional.empty[BusinessentityId](), (v: BusinessentityId) => new SqlExpr.ConstReq(v, BusinessentityId.pgType)) .maybeSeek(f => f.rowguid.asc, java.util.Optional.empty[UUID](), (v: UUID) => new SqlExpr.ConstReq(v, PgTypes.uuid)) .limit(limit) .toList(summon[Connection]) @@ -44,7 +44,7 @@ class SeekDbTest { val lastRow = rows1.last val rows2 = businessentityRepo.select .maybeSeek(f => f.modifieddate.asc, java.util.Optional.of(lastRow.modifieddate), (v: LocalDateTime) => new SqlExpr.ConstReq(v, timestampPgType)) - .maybeSeek(f => f.businessentityid.asc, java.util.Optional.of(lastRow.businessentityid), (v: BusinessentityId) => new SqlExpr.ConstReq(v, BusinessentityId.dbType)) + .maybeSeek(f => f.businessentityid.asc, java.util.Optional.of(lastRow.businessentityid), (v: BusinessentityId) => new SqlExpr.ConstReq(v, BusinessentityId.pgType)) .maybeSeek(f => f.rowguid.asc, java.util.Optional.of(lastRow.rowguid), (v: UUID) => new SqlExpr.ConstReq(v, PgTypes.uuid)) .limit(limit) .toList(summon[Connection]) @@ -83,7 +83,7 @@ class SeekDbTest { val rows1 = businessentityRepo.select .maybeSeek(f => f.modifieddate.desc, java.util.Optional.empty[LocalDateTime](), (v: LocalDateTime) => new SqlExpr.ConstReq(v, timestampPgType)) - .maybeSeek(f => f.businessentityid.asc, java.util.Optional.empty[BusinessentityId](), (v: BusinessentityId) => new SqlExpr.ConstReq(v, BusinessentityId.dbType)) + .maybeSeek(f => f.businessentityid.asc, java.util.Optional.empty[BusinessentityId](), (v: BusinessentityId) => new SqlExpr.ConstReq(v, BusinessentityId.pgType)) .maybeSeek(f => f.rowguid.asc, java.util.Optional.empty[UUID](), (v: UUID) => new SqlExpr.ConstReq(v, PgTypes.uuid)) .limit(limit) .toList(summon[Connection]) @@ -95,7 +95,7 @@ class SeekDbTest { val lastRow = rows1.last val rows2 = businessentityRepo.select .maybeSeek(f => f.modifieddate.desc, java.util.Optional.of(lastRow.modifieddate), (v: LocalDateTime) => new SqlExpr.ConstReq(v, timestampPgType)) - .maybeSeek(f => f.businessentityid.asc, java.util.Optional.of(lastRow.businessentityid), (v: BusinessentityId) => new SqlExpr.ConstReq(v, BusinessentityId.dbType)) + .maybeSeek(f => f.businessentityid.asc, java.util.Optional.of(lastRow.businessentityid), (v: BusinessentityId) => new SqlExpr.ConstReq(v, BusinessentityId.pgType)) .maybeSeek(f => f.rowguid.asc, java.util.Optional.of(lastRow.rowguid), (v: UUID) => new SqlExpr.ConstReq(v, PgTypes.uuid)) .limit(limit) .toList(summon[Connection]) diff --git a/testers/pg/scala/javatypes/src/scala/adventureworks/humanresources/employee/EmployeeTest.scala b/testers/pg/scala/javatypes/src/scala/adventureworks/humanresources/employee/EmployeeTest.scala index 350cba2adc..97b3e9b14f 100644 --- a/testers/pg/scala/javatypes/src/scala/adventureworks/humanresources/employee/EmployeeTest.scala +++ b/testers/pg/scala/javatypes/src/scala/adventureworks/humanresources/employee/EmployeeTest.scala @@ -5,7 +5,7 @@ import adventureworks.customtypes.Defaulted import adventureworks.person.businessentity.{BusinessentityId, BusinessentityRepoImpl, BusinessentityRowUnsaved} import adventureworks.person.person.{PersonRepoImpl, PersonRowUnsaved} import adventureworks.public.{Flag, Name} -import adventureworks.userdefined.FirstName +import adventureworks.userdefined.{CurrentFlag, FirstName, LastName, MiddleName, SalariedFlag} import org.junit.Assert.* import org.junit.Test import dev.typr.foundations.data.Xml @@ -29,10 +29,10 @@ class EmployeeTest { PersonRowUnsaved( businessentityid = businessentityRow.businessentityid, persontype = "SC", - firstname = FirstName("firstname"), - lastname = Name("lastname") + firstname = FirstName(Name("firstname")), + lastname = LastName(Name("lastname")) ).copy( - middlename = Optional.of(Name("middlename")), + middlename = Optional.of(MiddleName(Name("middlename"))), suffix = Optional.of("suffix"), additionalcontactinfo = Optional.of(Xml("")) ) @@ -48,10 +48,10 @@ class EmployeeTest { gender = "F", hiredate = LocalDate.now().minusYears(1) ).copy( - salariedflag = Defaulted.Provided(Flag(true)), + salariedflag = Defaulted.Provided(SalariedFlag(Flag(true))), vacationhours = Defaulted.Provided(java.lang.Short.valueOf(1.toShort)), sickleavehours = Defaulted.Provided(java.lang.Short.valueOf(2.toShort)), - currentflag = Defaulted.Provided(Flag(true)), + currentflag = Defaulted.Provided(CurrentFlag(Flag(true))), rowguid = Defaulted.Provided(UUID.randomUUID()), modifieddate = Defaulted.Provided(DbNow.localDateTime()), organizationnode = Defaulted.Provided(Optional.of("/")) @@ -89,10 +89,10 @@ class EmployeeTest { val withDefaults = employeeRepo.insert(minimalUnsaved) - assertEquals(Flag(true), withDefaults.salariedflag) + assertEquals(SalariedFlag(Flag(true)), withDefaults.salariedflag) assertEquals(java.lang.Short.valueOf(0.toShort), withDefaults.vacationhours) assertEquals(java.lang.Short.valueOf(0.toShort), withDefaults.sickleavehours) - assertEquals(Flag(true), withDefaults.currentflag) + assertEquals(CurrentFlag(Flag(true)), withDefaults.currentflag) assertEquals(Optional.of("/"), withDefaults.organizationnode) } } diff --git a/testers/pg/scala/javatypes/src/scala/adventureworks/person/MultiRepoTest.scala b/testers/pg/scala/javatypes/src/scala/adventureworks/person/MultiRepoTest.scala index 7db9e714a3..8b65cc8c8c 100644 --- a/testers/pg/scala/javatypes/src/scala/adventureworks/person/MultiRepoTest.scala +++ b/testers/pg/scala/javatypes/src/scala/adventureworks/person/MultiRepoTest.scala @@ -7,7 +7,7 @@ import adventureworks.person.businessentityaddress.* import adventureworks.person.countryregion.CountryregionId import adventureworks.person.person.* import adventureworks.public.Name -import adventureworks.userdefined.FirstName +import adventureworks.userdefined.{FirstName, LastName} import adventureworks.{DomainInsertImpl, TestInsert, WithConnection} import org.junit.Assert.* import org.junit.Test @@ -91,19 +91,19 @@ class MultiRepoTest { new Defaulted.UseDefault() ) val personRow = testInsert.personPerson( - businessentityRow.businessentityid, - "SC", - FirstName("name"), - Optional.empty(), - Optional.empty(), - Name("lastname"), - Optional.empty(), - Optional.empty(), - Optional.empty(), - new Defaulted.UseDefault(), - new Defaulted.UseDefault(), - new Defaulted.UseDefault(), - new Defaulted.UseDefault() + businessentityid = businessentityRow.businessentityid, + persontype = "SC", + title = Optional.empty(), + firstname = FirstName(Name("name")), + middlename = Optional.empty(), + lastname = LastName(Name("lastname")), + suffix = Optional.empty(), + additionalcontactinfo = Optional.empty(), + demographics = Optional.empty(), + namestyle = new Defaulted.UseDefault(), + emailpromotion = new Defaulted.UseDefault(), + rowguid = new Defaulted.UseDefault(), + modifieddate = new Defaulted.UseDefault() ) val countryregionRow = testInsert.personCountryregion( CountryregionId("NOR"), diff --git a/testers/pg/scala/javatypes/src/scala/adventureworks/production/product/SeekTest.scala b/testers/pg/scala/javatypes/src/scala/adventureworks/production/product/SeekTest.scala index b7a0d2929e..ac457120ed 100644 --- a/testers/pg/scala/javatypes/src/scala/adventureworks/production/product/SeekTest.scala +++ b/testers/pg/scala/javatypes/src/scala/adventureworks/production/product/SeekTest.scala @@ -15,7 +15,7 @@ class SeekTest extends SnapshotTest { @Test def uniformAscending(): Unit = { val query = productRepo.select - .seek(f => f.name.asc, new SqlExpr.ConstReq(Name("foo"), Name.dbType)) + .seek(f => f.name.asc, new SqlExpr.ConstReq(Name("foo"), Name.pgType)) .seek(f => f.weight.asc, new SqlExpr.ConstOpt(Optional.of(new BigDecimal("22.2")), PgTypes.numeric)) .seek(f => f.listprice.asc, new SqlExpr.ConstReq(new BigDecimal("33.3"), PgTypes.numeric)) compareFragment("uniform-ascending", query.sql()) @@ -24,7 +24,7 @@ class SeekTest extends SnapshotTest { @Test def uniformDescending(): Unit = { val query = productRepo.select - .seek(f => f.name.desc, new SqlExpr.ConstReq(Name("foo"), Name.dbType)) + .seek(f => f.name.desc, new SqlExpr.ConstReq(Name("foo"), Name.pgType)) .seek(f => f.weight.desc, new SqlExpr.ConstOpt(Optional.of(new BigDecimal("22.2")), PgTypes.numeric)) .seek(f => f.listprice.desc, new SqlExpr.ConstReq(new BigDecimal("33.3"), PgTypes.numeric)) compareFragment("uniform-descending", query.sql()) @@ -33,7 +33,7 @@ class SeekTest extends SnapshotTest { @Test def complex(): Unit = { val query = productRepo.select - .seek(f => f.name.asc, new SqlExpr.ConstReq(Name("foo"), Name.dbType)) + .seek(f => f.name.asc, new SqlExpr.ConstReq(Name("foo"), Name.pgType)) .seek(f => f.weight.desc, new SqlExpr.ConstOpt(Optional.of(new BigDecimal("22.2")), PgTypes.numeric)) .seek(f => f.listprice.desc, new SqlExpr.ConstReq(new BigDecimal("33.3"), PgTypes.numeric)) compareFragment("complex", query.sql()) diff --git a/testers/pg/scala/javatypes/src/scala/adventureworks/production/productcosthistory/CompositeIdsTest.scala b/testers/pg/scala/javatypes/src/scala/adventureworks/production/productcosthistory/CompositeIdsTest.scala index db3754e5a6..cd4259f1a8 100644 --- a/testers/pg/scala/javatypes/src/scala/adventureworks/production/productcosthistory/CompositeIdsTest.scala +++ b/testers/pg/scala/javatypes/src/scala/adventureworks/production/productcosthistory/CompositeIdsTest.scala @@ -10,7 +10,7 @@ import adventureworks.production.productmodel.* import adventureworks.production.productsubcategory.* import adventureworks.production.unitmeasure.* import adventureworks.public.{Name, NameStyle} -import adventureworks.userdefined.FirstName +import adventureworks.userdefined.{FirstName, LastName} import org.junit.Assert.* import org.junit.Test @@ -174,9 +174,9 @@ class CompositeIdsTest extends SnapshotTest { "SC", NameStyle(true), Optional.empty(), - FirstName(s"first name $i"), + FirstName(Name(s"first name $i")), Optional.empty(), - Name(s"last name $i"), + LastName(Name(s"last name $i")), Optional.empty(), Integer.valueOf(1), Optional.empty(), diff --git a/testers/pg/scala/javatypes/src/scala/adventureworks/userdefined/FirstName.scala b/testers/pg/scala/javatypes/src/scala/adventureworks/userdefined/FirstName.scala deleted file mode 100644 index ece3de2247..0000000000 --- a/testers/pg/scala/javatypes/src/scala/adventureworks/userdefined/FirstName.scala +++ /dev/null @@ -1,15 +0,0 @@ -package adventureworks.userdefined - -import dev.typr.foundations.dsl.Bijection -import dev.typr.foundations.{PgText, PgTypes} - -case class FirstName(value: String) extends AnyVal - -object FirstName { - given bijection: Bijection[FirstName, String] = Bijection.apply[FirstName, String](_.value)(FirstName.apply) - given dbType: dev.typr.foundations.DbType[FirstName] = PgTypes.text.bimap(FirstName.apply, _.value) - given pgText: PgText[FirstName] = new PgText[FirstName] { - override def unsafeEncode(v: FirstName, sb: java.lang.StringBuilder): Unit = PgText.textString.unsafeEncode(v.value, sb) - override def unsafeArrayEncode(v: FirstName, sb: java.lang.StringBuilder): Unit = PgText.textString.unsafeArrayEncode(v.value, sb) - } -} diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/TestInsert.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/TestInsert.scala index 3f7847881b..302010cacb 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/TestInsert.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/TestInsert.scala @@ -133,7 +133,11 @@ import adventureworks.sales.salesterritory.SalesterritoryId import adventureworks.sales.salesterritory.SalesterritoryRepoImpl import adventureworks.sales.salesterritory.SalesterritoryRow import adventureworks.sales.salesterritory.SalesterritoryRowUnsaved +import adventureworks.userdefined.CurrentFlag import adventureworks.userdefined.FirstName +import adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName +import adventureworks.userdefined.SalariedFlag import dev.typr.foundations.data.Inet import dev.typr.foundations.data.Int2Vector import dev.typr.foundations.data.Json @@ -188,10 +192,10 @@ case class TestInsert( nationalidnumber: String = random.alphanumeric.take(15).mkString, loginid: String = random.alphanumeric.take(20).mkString, jobtitle: String = random.alphanumeric.take(20).mkString, - salariedflag: Defaulted[Flag] = new UseDefault(), + salariedflag: Defaulted[/* user-picked */ SalariedFlag] = new UseDefault(), vacationhours: Defaulted[Short] = new UseDefault(), sickleavehours: Defaulted[Short] = new UseDefault(), - currentflag: Defaulted[Flag] = new UseDefault(), + currentflag: Defaulted[/* user-picked */ CurrentFlag] = new UseDefault(), rowguid: Defaulted[UUID] = new UseDefault(), modifieddate: Defaulted[LocalDateTime] = new UseDefault(), organizationnode: Defaulted[Option[String]] = new UseDefault() @@ -350,10 +354,10 @@ case class TestInsert( def personPerson( businessentityid: BusinessentityId, persontype: String, - firstname: /* user-picked */ FirstName, title: Option[/* max 8 chars */ String] = (if (random.nextBoolean()) None else Some(random.alphanumeric.take(8).mkString)), - middlename: Option[Name] = (if (random.nextBoolean()) None else Some(domainInsert.publicName(random))), - lastname: Name = domainInsert.publicName(random), + firstname: /* user-picked */ FirstName = new FirstName(domainInsert.publicName(random)), + middlename: Option[/* user-picked */ MiddleName] = (if (random.nextBoolean()) None else Some(new MiddleName(domainInsert.publicName(random)))), + lastname: /* user-picked */ LastName = new LastName(domainInsert.publicName(random)), suffix: Option[/* max 10 chars */ String] = (if (random.nextBoolean()) None else Some(random.alphanumeric.take(10).mkString)), additionalcontactinfo: Option[Xml] = (if (random.nextBoolean()) None else Some(new Xml(""))), demographics: Option[Xml] = (if (random.nextBoolean()) None else Some(new Xml(""))), diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/department/DepartmentFields.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/department/DepartmentFields.scala index 15dced4fda..e67cd6c3fb 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/department/DepartmentFields.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/department/DepartmentFields.scala @@ -27,7 +27,7 @@ class DepartmentFields(val `_path`: java.util.List[Path]) extends TupleExpr4[Dep None, Some("int4"), (row, value) => row.copy(departmentid = value), - DepartmentId.dbType + DepartmentId.pgType ) } @@ -39,7 +39,7 @@ class DepartmentFields(val `_path`: java.util.List[Path]) extends TupleExpr4[Dep None, Some("varchar"), (row, value) => row.copy(name = value), - Name.dbType + Name.pgType ) } @@ -51,7 +51,7 @@ class DepartmentFields(val `_path`: java.util.List[Path]) extends TupleExpr4[Dep None, Some("varchar"), (row, value) => row.copy(groupname = value), - Name.dbType + Name.pgType ) } diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/department/DepartmentId.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/department/DepartmentId.scala index b30256fdbd..fee57bf66b 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/department/DepartmentId.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/department/DepartmentId.scala @@ -17,7 +17,7 @@ case class DepartmentId(@JsonValue value: Int) extends scala.AnyVal object DepartmentId { given bijection: Bijection[DepartmentId, Int] = Bijection.apply[DepartmentId, Int](_.value)(DepartmentId.apply) - given dbType: PgType[DepartmentId] = ScalaDbTypes.PgTypes.int4.bimap(DepartmentId.apply, _.value) + given pgType: PgType[DepartmentId] = ScalaDbTypes.PgTypes.int4.bimap(DepartmentId.apply, _.value) - given dbTypeArray: PgType[Array[DepartmentId]] = PgTypes.int4ArrayUnboxed.bimap(xs => xs.map(DepartmentId.apply), xs => xs.map(_.value)) + given pgTypeArray: PgType[Array[DepartmentId]] = PgTypes.int4ArrayUnboxed.bimap(xs => xs.map(DepartmentId.apply), xs => xs.map(_.value)) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRepoImpl.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRepoImpl.scala index 6c258b8ba2..c69af7231b 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRepoImpl.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRepoImpl.scala @@ -21,19 +21,19 @@ import dev.typr.foundations.scala.Fragment.sql class DepartmentRepoImpl extends DepartmentRepo { override def delete: DeleteBuilder[DepartmentFields, DepartmentRow] = DeleteBuilder.of(""""humanresources"."department"""", DepartmentFields.structure, Dialect.POSTGRESQL) - override def deleteById(departmentid: DepartmentId)(using c: Connection): Boolean = sql"""delete from "humanresources"."department" where "departmentid" = ${Fragment.encode(DepartmentId.dbType, departmentid)}""".update().runUnchecked(c) > 0 + override def deleteById(departmentid: DepartmentId)(using c: Connection): Boolean = sql"""delete from "humanresources"."department" where "departmentid" = ${Fragment.encode(DepartmentId.pgType, departmentid)}""".update().runUnchecked(c) > 0 override def deleteByIds(departmentids: Array[DepartmentId])(using c: Connection): Int = { sql"""delete from "humanresources"."department" - where "departmentid" = ANY(${Fragment.encode(DepartmentId.dbTypeArray, departmentids)})""" + where "departmentid" = ANY(${Fragment.encode(DepartmentId.pgTypeArray, departmentids)})""" .update() .runUnchecked(c) } override def insert(unsaved: DepartmentRow)(using c: Connection): DepartmentRow = { sql"""insert into "humanresources"."department"("departmentid", "name", "groupname", "modifieddate") - values (${Fragment.encode(DepartmentId.dbType, unsaved.departmentid)}::int4, ${Fragment.encode(Name.dbType, unsaved.name)}::varchar, ${Fragment.encode(Name.dbType, unsaved.groupname)}::varchar, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) + values (${Fragment.encode(DepartmentId.pgType, unsaved.departmentid)}::int4, ${Fragment.encode(Name.pgType, unsaved.name)}::varchar, ${Fragment.encode(Name.pgType, unsaved.groupname)}::varchar, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) RETURNING "departmentid", "name", "groupname", "modifieddate" """ .updateReturning(DepartmentRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -43,12 +43,12 @@ class DepartmentRepoImpl extends DepartmentRepo { val columns: ListBuffer[Fragment] = ListBuffer() val values: ListBuffer[Fragment] = ListBuffer() columns.addOne(Fragment.lit(""""name"""")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(Name.dbType, unsaved.name)}::varchar"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(Name.pgType, unsaved.name)}::varchar"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""groupname"""")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(Name.dbType, unsaved.groupname)}::varchar"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(Name.pgType, unsaved.groupname)}::varchar"): @scala.annotation.nowarn unsaved.departmentid.visit( { }, - value => { columns.addOne(Fragment.lit(""""departmentid"""")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(DepartmentId.dbType, value)}::int4"): @scala.annotation.nowarn } + value => { columns.addOne(Fragment.lit(""""departmentid"""")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(DepartmentId.pgType, value)}::int4"): @scala.annotation.nowarn } ); unsaved.modifieddate.visit( { }, @@ -85,13 +85,13 @@ class DepartmentRepoImpl extends DepartmentRepo { override def selectById(departmentid: DepartmentId)(using c: Connection): Option[DepartmentRow] = { sql"""select "departmentid", "name", "groupname", "modifieddate" from "humanresources"."department" - where "departmentid" = ${Fragment.encode(DepartmentId.dbType, departmentid)}""".query(DepartmentRow.`_rowParser`.first()).runUnchecked(c) + where "departmentid" = ${Fragment.encode(DepartmentId.pgType, departmentid)}""".query(DepartmentRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(departmentids: Array[DepartmentId])(using c: Connection): List[DepartmentRow] = { sql"""select "departmentid", "name", "groupname", "modifieddate" from "humanresources"."department" - where "departmentid" = ANY(${Fragment.encode(DepartmentId.dbTypeArray, departmentids)})""".query(DepartmentRow.`_rowParser`.all()).runUnchecked(c) + where "departmentid" = ANY(${Fragment.encode(DepartmentId.pgTypeArray, departmentids)})""".query(DepartmentRow.`_rowParser`.all()).runUnchecked(c) } override def selectByIdsTracked(departmentids: Array[DepartmentId])(using c: Connection): Map[DepartmentId, DepartmentRow] = { @@ -105,15 +105,15 @@ class DepartmentRepoImpl extends DepartmentRepo { override def update(row: DepartmentRow)(using c: Connection): Boolean = { val departmentid: DepartmentId = row.departmentid return sql"""update "humanresources"."department" - set "name" = ${Fragment.encode(Name.dbType, row.name)}::varchar, - "groupname" = ${Fragment.encode(Name.dbType, row.groupname)}::varchar, + set "name" = ${Fragment.encode(Name.pgType, row.name)}::varchar, + "groupname" = ${Fragment.encode(Name.pgType, row.groupname)}::varchar, "modifieddate" = ${Fragment.encode(PgTypes.timestamp, row.modifieddate)}::timestamp - where "departmentid" = ${Fragment.encode(DepartmentId.dbType, departmentid)}""".update().runUnchecked(c) > 0 + where "departmentid" = ${Fragment.encode(DepartmentId.pgType, departmentid)}""".update().runUnchecked(c) > 0 } override def upsert(unsaved: DepartmentRow)(using c: Connection): DepartmentRow = { sql"""insert into "humanresources"."department"("departmentid", "name", "groupname", "modifieddate") - values (${Fragment.encode(DepartmentId.dbType, unsaved.departmentid)}::int4, ${Fragment.encode(Name.dbType, unsaved.name)}::varchar, ${Fragment.encode(Name.dbType, unsaved.groupname)}::varchar, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) + values (${Fragment.encode(DepartmentId.pgType, unsaved.departmentid)}::int4, ${Fragment.encode(Name.pgType, unsaved.name)}::varchar, ${Fragment.encode(Name.pgType, unsaved.groupname)}::varchar, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) on conflict ("departmentid") do update set "name" = EXCLUDED."name", diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRow.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRow.scala index 0025093617..4da033a924 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRow.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRow.scala @@ -54,7 +54,7 @@ case class DepartmentRow( } object DepartmentRow { - val `_rowParser`: RowParser[DepartmentRow] = RowParsers.of(DepartmentId.dbType, Name.dbType, Name.dbType, PgTypes.timestamp)(DepartmentRow.apply)(row => Array[Any](row.departmentid, row.name, row.groupname, row.modifieddate)) + val `_rowParser`: RowParser[DepartmentRow] = RowParsers.of(DepartmentId.pgType, Name.pgType, Name.pgType, PgTypes.timestamp)(DepartmentRow.apply)(row => Array[Any](row.departmentid, row.name, row.groupname, row.modifieddate)) given pgText: PgText[DepartmentRow] = PgText.from(`_rowParser`.underlying) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRowUnsaved.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRowUnsaved.scala index 7c567f0401..251375f85f 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRowUnsaved.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRowUnsaved.scala @@ -39,5 +39,5 @@ case class DepartmentRowUnsaved( } object DepartmentRowUnsaved { - given pgText: PgText[DepartmentRowUnsaved] = PgText.instance((row, sb) => { Name.dbType.text.unsafeEncode(row.name, sb); sb.append(PgText.DELIMETER); Name.dbType.text.unsafeEncode(row.groupname, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using DepartmentId.dbType.text).unsafeEncode(row.departmentid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) + given pgText: PgText[DepartmentRowUnsaved] = PgText.instance((row, sb) => { Name.pgType.text.unsafeEncode(row.name, sb); sb.append(PgText.DELIMETER); Name.pgType.text.unsafeEncode(row.groupname, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using DepartmentId.pgType.text).unsafeEncode(row.departmentid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeFields.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeFields.scala index f97a3b20da..1b62c7c376 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeFields.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeFields.scala @@ -8,7 +8,8 @@ package adventureworks.humanresources.employee import adventureworks.person.businessentity.BusinessentityId import adventureworks.person.person.PersonFields import adventureworks.person.person.PersonRow -import adventureworks.public.Flag +import adventureworks.userdefined.CurrentFlag +import adventureworks.userdefined.SalariedFlag import dev.typr.foundations.PgTypes import dev.typr.foundations.RowParser import dev.typr.foundations.dsl.FieldsBase @@ -26,7 +27,7 @@ import java.time.LocalDate import java.time.LocalDateTime import java.util.UUID -class EmployeeFields(val `_path`: java.util.List[Path]) extends TupleExpr15[BusinessentityId, String, String, String, LocalDate, String, String, LocalDate, Flag, Short, Short, Flag, UUID, LocalDateTime, String] with RelationStructure[EmployeeFields, EmployeeRow] with FieldsBase[EmployeeRow] { +class EmployeeFields(val `_path`: java.util.List[Path]) extends TupleExpr15[BusinessentityId, String, String, String, LocalDate, String, String, LocalDate, /* user-picked */ SalariedFlag, Short, Short, /* user-picked */ CurrentFlag, UUID, LocalDateTime, String] with RelationStructure[EmployeeFields, EmployeeRow] with FieldsBase[EmployeeRow] { def businessentityid: IdField[BusinessentityId, EmployeeRow] = { new IdField[BusinessentityId, EmployeeRow]( _path, @@ -35,7 +36,7 @@ class EmployeeFields(val `_path`: java.util.List[Path]) extends TupleExpr15[Busi None, Some("int4"), (row, value) => row.copy(businessentityid = value), - BusinessentityId.dbType + BusinessentityId.pgType ) } @@ -123,15 +124,15 @@ class EmployeeFields(val `_path`: java.util.List[Path]) extends TupleExpr15[Busi ) } - def salariedflag: Field[Flag, EmployeeRow] = { - new Field[Flag, EmployeeRow]( + def salariedflag: Field[/* user-picked */ SalariedFlag, EmployeeRow] = { + new Field[/* user-picked */ SalariedFlag, EmployeeRow]( _path, "salariedflag", _.salariedflag, None, Some("bool"), (row, value) => row.copy(salariedflag = value), - Flag.dbType + SalariedFlag.pgType ) } @@ -159,15 +160,15 @@ class EmployeeFields(val `_path`: java.util.List[Path]) extends TupleExpr15[Busi ) } - def currentflag: Field[Flag, EmployeeRow] = { - new Field[Flag, EmployeeRow]( + def currentflag: Field[/* user-picked */ CurrentFlag, EmployeeRow] = { + new Field[/* user-picked */ CurrentFlag, EmployeeRow]( _path, "currentflag", _.currentflag, None, Some("bool"), (row, value) => row.copy(currentflag = value), - Flag.dbType + CurrentFlag.pgType ) } @@ -231,13 +232,13 @@ class EmployeeFields(val `_path`: java.util.List[Path]) extends TupleExpr15[Busi override def `_8`: SqlExpr[LocalDate] = hiredate - override def `_9`: SqlExpr[Flag] = salariedflag + override def `_9`: SqlExpr[/* user-picked */ SalariedFlag] = salariedflag override def `_10`: SqlExpr[Short] = vacationhours override def `_11`: SqlExpr[Short] = sickleavehours - override def `_12`: SqlExpr[Flag] = currentflag + override def `_12`: SqlExpr[/* user-picked */ CurrentFlag] = currentflag override def `_13`: SqlExpr[UUID] = rowguid diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRepoImpl.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRepoImpl.scala index 7a153b4db3..13105052c5 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRepoImpl.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRepoImpl.scala @@ -6,7 +6,8 @@ package adventureworks.humanresources.employee import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Flag +import adventureworks.userdefined.CurrentFlag +import adventureworks.userdefined.SalariedFlag import dev.typr.foundations.PgTypes import dev.typr.foundations.scala.DbTypeOps import dev.typr.foundations.scala.DeleteBuilder @@ -24,19 +25,19 @@ import dev.typr.foundations.scala.Fragment.sql class EmployeeRepoImpl extends EmployeeRepo { override def delete: DeleteBuilder[EmployeeFields, EmployeeRow] = DeleteBuilder.of(""""humanresources"."employee"""", EmployeeFields.structure, Dialect.POSTGRESQL) - override def deleteById(businessentityid: BusinessentityId)(using c: Connection): Boolean = sql"""delete from "humanresources"."employee" where "businessentityid" = ${Fragment.encode(BusinessentityId.dbType, businessentityid)}""".update().runUnchecked(c) > 0 + override def deleteById(businessentityid: BusinessentityId)(using c: Connection): Boolean = sql"""delete from "humanresources"."employee" where "businessentityid" = ${Fragment.encode(BusinessentityId.pgType, businessentityid)}""".update().runUnchecked(c) > 0 override def deleteByIds(businessentityids: Array[BusinessentityId])(using c: Connection): Int = { sql"""delete from "humanresources"."employee" - where "businessentityid" = ANY(${Fragment.encode(BusinessentityId.dbTypeArray, businessentityids)})""" + where "businessentityid" = ANY(${Fragment.encode(BusinessentityId.pgTypeArray, businessentityids)})""" .update() .runUnchecked(c) } override def insert(unsaved: EmployeeRow)(using c: Connection): EmployeeRow = { sql"""insert into "humanresources"."employee"("businessentityid", "nationalidnumber", "loginid", "jobtitle", "birthdate", "maritalstatus", "gender", "hiredate", "salariedflag", "vacationhours", "sickleavehours", "currentflag", "rowguid", "modifieddate", "organizationnode") - values (${Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid)}::int4, ${Fragment.encode(PgTypes.text, unsaved.nationalidnumber)}, ${Fragment.encode(PgTypes.text, unsaved.loginid)}, ${Fragment.encode(PgTypes.text, unsaved.jobtitle)}, ${Fragment.encode(PgTypes.date, unsaved.birthdate)}::date, ${Fragment.encode(PgTypes.bpchar, unsaved.maritalstatus)}::bpchar, ${Fragment.encode(PgTypes.bpchar, unsaved.gender)}::bpchar, ${Fragment.encode(PgTypes.date, unsaved.hiredate)}::date, ${Fragment.encode(Flag.dbType, unsaved.salariedflag)}::bool, ${Fragment.encode(ScalaDbTypes.PgTypes.int2, unsaved.vacationhours)}::int2, ${Fragment.encode(ScalaDbTypes.PgTypes.int2, unsaved.sickleavehours)}::int2, ${Fragment.encode(Flag.dbType, unsaved.currentflag)}::bool, ${Fragment.encode(PgTypes.uuid, unsaved.rowguid)}::uuid, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp, ${Fragment.encode(PgTypes.text.nullable, unsaved.organizationnode)}) + values (${Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid)}::int4, ${Fragment.encode(PgTypes.text, unsaved.nationalidnumber)}, ${Fragment.encode(PgTypes.text, unsaved.loginid)}, ${Fragment.encode(PgTypes.text, unsaved.jobtitle)}, ${Fragment.encode(PgTypes.date, unsaved.birthdate)}::date, ${Fragment.encode(PgTypes.bpchar, unsaved.maritalstatus)}::bpchar, ${Fragment.encode(PgTypes.bpchar, unsaved.gender)}::bpchar, ${Fragment.encode(PgTypes.date, unsaved.hiredate)}::date, ${Fragment.encode(SalariedFlag.pgType, unsaved.salariedflag)}::bool, ${Fragment.encode(ScalaDbTypes.PgTypes.int2, unsaved.vacationhours)}::int2, ${Fragment.encode(ScalaDbTypes.PgTypes.int2, unsaved.sickleavehours)}::int2, ${Fragment.encode(CurrentFlag.pgType, unsaved.currentflag)}::bool, ${Fragment.encode(PgTypes.uuid, unsaved.rowguid)}::uuid, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp, ${Fragment.encode(PgTypes.text.nullable, unsaved.organizationnode)}) RETURNING "businessentityid", "nationalidnumber", "loginid", "jobtitle", "birthdate", "maritalstatus", "gender", "hiredate", "salariedflag", "vacationhours", "sickleavehours", "currentflag", "rowguid", "modifieddate", "organizationnode" """ .updateReturning(EmployeeRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -46,7 +47,7 @@ class EmployeeRepoImpl extends EmployeeRepo { val columns: ListBuffer[Fragment] = ListBuffer() val values: ListBuffer[Fragment] = ListBuffer() columns.addOne(Fragment.lit(""""businessentityid"""")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid)}::int4"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid)}::int4"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""nationalidnumber"""")): @scala.annotation.nowarn values.addOne(sql"${Fragment.encode(PgTypes.text, unsaved.nationalidnumber)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""loginid"""")): @scala.annotation.nowarn @@ -63,7 +64,7 @@ class EmployeeRepoImpl extends EmployeeRepo { values.addOne(sql"${Fragment.encode(PgTypes.date, unsaved.hiredate)}::date"): @scala.annotation.nowarn unsaved.salariedflag.visit( { }, - value => { columns.addOne(Fragment.lit(""""salariedflag"""")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(Flag.dbType, value)}::bool"): @scala.annotation.nowarn } + value => { columns.addOne(Fragment.lit(""""salariedflag"""")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(SalariedFlag.pgType, value)}::bool"): @scala.annotation.nowarn } ); unsaved.vacationhours.visit( { }, @@ -75,7 +76,7 @@ class EmployeeRepoImpl extends EmployeeRepo { ); unsaved.currentflag.visit( { }, - value => { columns.addOne(Fragment.lit(""""currentflag"""")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(Flag.dbType, value)}::bool"): @scala.annotation.nowarn } + value => { columns.addOne(Fragment.lit(""""currentflag"""")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(CurrentFlag.pgType, value)}::bool"): @scala.annotation.nowarn } ); unsaved.rowguid.visit( { }, @@ -120,13 +121,13 @@ class EmployeeRepoImpl extends EmployeeRepo { override def selectById(businessentityid: BusinessentityId)(using c: Connection): Option[EmployeeRow] = { sql"""select "businessentityid", "nationalidnumber", "loginid", "jobtitle", "birthdate", "maritalstatus", "gender", "hiredate", "salariedflag", "vacationhours", "sickleavehours", "currentflag", "rowguid", "modifieddate", "organizationnode" from "humanresources"."employee" - where "businessentityid" = ${Fragment.encode(BusinessentityId.dbType, businessentityid)}""".query(EmployeeRow.`_rowParser`.first()).runUnchecked(c) + where "businessentityid" = ${Fragment.encode(BusinessentityId.pgType, businessentityid)}""".query(EmployeeRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(businessentityids: Array[BusinessentityId])(using c: Connection): List[EmployeeRow] = { sql"""select "businessentityid", "nationalidnumber", "loginid", "jobtitle", "birthdate", "maritalstatus", "gender", "hiredate", "salariedflag", "vacationhours", "sickleavehours", "currentflag", "rowguid", "modifieddate", "organizationnode" from "humanresources"."employee" - where "businessentityid" = ANY(${Fragment.encode(BusinessentityId.dbTypeArray, businessentityids)})""".query(EmployeeRow.`_rowParser`.all()).runUnchecked(c) + where "businessentityid" = ANY(${Fragment.encode(BusinessentityId.pgTypeArray, businessentityids)})""".query(EmployeeRow.`_rowParser`.all()).runUnchecked(c) } override def selectByIdsTracked(businessentityids: Array[BusinessentityId])(using c: Connection): Map[BusinessentityId, EmployeeRow] = { @@ -147,19 +148,19 @@ class EmployeeRepoImpl extends EmployeeRepo { "maritalstatus" = ${Fragment.encode(PgTypes.bpchar, row.maritalstatus)}::bpchar, "gender" = ${Fragment.encode(PgTypes.bpchar, row.gender)}::bpchar, "hiredate" = ${Fragment.encode(PgTypes.date, row.hiredate)}::date, - "salariedflag" = ${Fragment.encode(Flag.dbType, row.salariedflag)}::bool, + "salariedflag" = ${Fragment.encode(SalariedFlag.pgType, row.salariedflag)}::bool, "vacationhours" = ${Fragment.encode(ScalaDbTypes.PgTypes.int2, row.vacationhours)}::int2, "sickleavehours" = ${Fragment.encode(ScalaDbTypes.PgTypes.int2, row.sickleavehours)}::int2, - "currentflag" = ${Fragment.encode(Flag.dbType, row.currentflag)}::bool, + "currentflag" = ${Fragment.encode(CurrentFlag.pgType, row.currentflag)}::bool, "rowguid" = ${Fragment.encode(PgTypes.uuid, row.rowguid)}::uuid, "modifieddate" = ${Fragment.encode(PgTypes.timestamp, row.modifieddate)}::timestamp, "organizationnode" = ${Fragment.encode(PgTypes.text.nullable, row.organizationnode)} - where "businessentityid" = ${Fragment.encode(BusinessentityId.dbType, businessentityid)}""".update().runUnchecked(c) > 0 + where "businessentityid" = ${Fragment.encode(BusinessentityId.pgType, businessentityid)}""".update().runUnchecked(c) > 0 } override def upsert(unsaved: EmployeeRow)(using c: Connection): EmployeeRow = { sql"""insert into "humanresources"."employee"("businessentityid", "nationalidnumber", "loginid", "jobtitle", "birthdate", "maritalstatus", "gender", "hiredate", "salariedflag", "vacationhours", "sickleavehours", "currentflag", "rowguid", "modifieddate", "organizationnode") - values (${Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid)}::int4, ${Fragment.encode(PgTypes.text, unsaved.nationalidnumber)}, ${Fragment.encode(PgTypes.text, unsaved.loginid)}, ${Fragment.encode(PgTypes.text, unsaved.jobtitle)}, ${Fragment.encode(PgTypes.date, unsaved.birthdate)}::date, ${Fragment.encode(PgTypes.bpchar, unsaved.maritalstatus)}::bpchar, ${Fragment.encode(PgTypes.bpchar, unsaved.gender)}::bpchar, ${Fragment.encode(PgTypes.date, unsaved.hiredate)}::date, ${Fragment.encode(Flag.dbType, unsaved.salariedflag)}::bool, ${Fragment.encode(ScalaDbTypes.PgTypes.int2, unsaved.vacationhours)}::int2, ${Fragment.encode(ScalaDbTypes.PgTypes.int2, unsaved.sickleavehours)}::int2, ${Fragment.encode(Flag.dbType, unsaved.currentflag)}::bool, ${Fragment.encode(PgTypes.uuid, unsaved.rowguid)}::uuid, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp, ${Fragment.encode(PgTypes.text.nullable, unsaved.organizationnode)}) + values (${Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid)}::int4, ${Fragment.encode(PgTypes.text, unsaved.nationalidnumber)}, ${Fragment.encode(PgTypes.text, unsaved.loginid)}, ${Fragment.encode(PgTypes.text, unsaved.jobtitle)}, ${Fragment.encode(PgTypes.date, unsaved.birthdate)}::date, ${Fragment.encode(PgTypes.bpchar, unsaved.maritalstatus)}::bpchar, ${Fragment.encode(PgTypes.bpchar, unsaved.gender)}::bpchar, ${Fragment.encode(PgTypes.date, unsaved.hiredate)}::date, ${Fragment.encode(SalariedFlag.pgType, unsaved.salariedflag)}::bool, ${Fragment.encode(ScalaDbTypes.PgTypes.int2, unsaved.vacationhours)}::int2, ${Fragment.encode(ScalaDbTypes.PgTypes.int2, unsaved.sickleavehours)}::int2, ${Fragment.encode(CurrentFlag.pgType, unsaved.currentflag)}::bool, ${Fragment.encode(PgTypes.uuid, unsaved.rowguid)}::uuid, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp, ${Fragment.encode(PgTypes.text.nullable, unsaved.organizationnode)}) on conflict ("businessentityid") do update set "nationalidnumber" = EXCLUDED."nationalidnumber", diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRow.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRow.scala index fe23483442..96ab36cfc1 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRow.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRow.scala @@ -7,7 +7,8 @@ package adventureworks.humanresources.employee import adventureworks.customtypes.Defaulted import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Flag +import adventureworks.userdefined.CurrentFlag +import adventureworks.userdefined.SalariedFlag import dev.typr.foundations.PgText import dev.typr.foundations.PgTypes import dev.typr.foundations.Tuple.Tuple15 @@ -53,7 +54,7 @@ case class EmployeeRow( /** Job classification. 0 = Hourly, not exempt from collective bargaining. 1 = Salaried, exempt from collective bargaining. * Default: true */ - salariedflag: Flag, + salariedflag: /* user-picked */ SalariedFlag, /** Number of available vacation hours. * Default: 0 * Constraint CK_Employee_VacationHours affecting columns vacationhours: (((vacationhours >= '-40'::integer) AND (vacationhours <= 240))) @@ -67,7 +68,7 @@ case class EmployeeRow( /** 0 = Inactive, 1 = Active * Default: true */ - currentflag: Flag, + currentflag: /* user-picked */ CurrentFlag, /** Default: uuid_generate_v1() */ rowguid: UUID, /** Default: now() */ @@ -76,14 +77,14 @@ case class EmployeeRow( * Default: '/'::character varying */ organizationnode: Option[String] -) extends Tuple15[BusinessentityId, String, String, String, LocalDate, String, String, LocalDate, Flag, Short, Short, Flag, UUID, LocalDateTime, Option[String]] { +) extends Tuple15[BusinessentityId, String, String, String, LocalDate, String, String, LocalDate, /* user-picked */ SalariedFlag, Short, Short, /* user-picked */ CurrentFlag, UUID, LocalDateTime, Option[String]] { def id: BusinessentityId = businessentityid def toUnsavedRow( - salariedflag: Defaulted[Flag] = Defaulted.Provided(this.salariedflag), + salariedflag: Defaulted[/* user-picked */ SalariedFlag] = Defaulted.Provided(this.salariedflag), vacationhours: Defaulted[Short] = Defaulted.Provided(this.vacationhours), sickleavehours: Defaulted[Short] = Defaulted.Provided(this.sickleavehours), - currentflag: Defaulted[Flag] = Defaulted.Provided(this.currentflag), + currentflag: Defaulted[/* user-picked */ CurrentFlag] = Defaulted.Provided(this.currentflag), rowguid: Defaulted[UUID] = Defaulted.Provided(this.rowguid), modifieddate: Defaulted[LocalDateTime] = Defaulted.Provided(this.modifieddate), organizationnode: Defaulted[Option[String]] = Defaulted.Provided(this.organizationnode) @@ -123,13 +124,13 @@ case class EmployeeRow( override def `_8`: LocalDate = hiredate - override def `_9`: Flag = salariedflag + override def `_9`: /* user-picked */ SalariedFlag = salariedflag override def `_10`: Short = vacationhours override def `_11`: Short = sickleavehours - override def `_12`: Flag = currentflag + override def `_12`: /* user-picked */ CurrentFlag = currentflag override def `_13`: UUID = rowguid @@ -139,7 +140,7 @@ case class EmployeeRow( } object EmployeeRow { - val `_rowParser`: RowParser[EmployeeRow] = RowParsers.of(BusinessentityId.dbType, PgTypes.text, PgTypes.text, PgTypes.text, PgTypes.date, PgTypes.bpchar, PgTypes.bpchar, PgTypes.date, Flag.dbType, ScalaDbTypes.PgTypes.int2, ScalaDbTypes.PgTypes.int2, Flag.dbType, PgTypes.uuid, PgTypes.timestamp, PgTypes.text.nullable)(EmployeeRow.apply)(row => Array[Any](row.businessentityid, row.nationalidnumber, row.loginid, row.jobtitle, row.birthdate, row.maritalstatus, row.gender, row.hiredate, row.salariedflag, row.vacationhours, row.sickleavehours, row.currentflag, row.rowguid, row.modifieddate, row.organizationnode)) + val `_rowParser`: RowParser[EmployeeRow] = RowParsers.of(BusinessentityId.pgType, PgTypes.text, PgTypes.text, PgTypes.text, PgTypes.date, PgTypes.bpchar, PgTypes.bpchar, PgTypes.date, SalariedFlag.pgType, ScalaDbTypes.PgTypes.int2, ScalaDbTypes.PgTypes.int2, CurrentFlag.pgType, PgTypes.uuid, PgTypes.timestamp, PgTypes.text.nullable)(EmployeeRow.apply)(row => Array[Any](row.businessentityid, row.nationalidnumber, row.loginid, row.jobtitle, row.birthdate, row.maritalstatus, row.gender, row.hiredate, row.salariedflag, row.vacationhours, row.sickleavehours, row.currentflag, row.rowguid, row.modifieddate, row.organizationnode)) given pgText: PgText[EmployeeRow] = PgText.from(`_rowParser`.underlying) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRowUnsaved.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRowUnsaved.scala index 4debc6cde8..18814f82ab 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRowUnsaved.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRowUnsaved.scala @@ -8,7 +8,8 @@ package adventureworks.humanresources.employee import adventureworks.customtypes.Defaulted import adventureworks.customtypes.Defaulted.UseDefault import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Flag +import adventureworks.userdefined.CurrentFlag +import adventureworks.userdefined.SalariedFlag import dev.typr.foundations.PgText import dev.typr.foundations.PgTypes import dev.typr.foundations.scala.DbTypeOps @@ -48,7 +49,7 @@ case class EmployeeRowUnsaved( /** Default: true * Job classification. 0 = Hourly, not exempt from collective bargaining. 1 = Salaried, exempt from collective bargaining. */ - salariedflag: Defaulted[Flag] = new UseDefault(), + salariedflag: Defaulted[/* user-picked */ SalariedFlag] = new UseDefault(), /** Default: 0 * Number of available vacation hours. * Constraint CK_Employee_VacationHours affecting columns vacationhours: (((vacationhours >= '-40'::integer) AND (vacationhours <= 240))) @@ -62,7 +63,7 @@ case class EmployeeRowUnsaved( /** Default: true * 0 = Inactive, 1 = Active */ - currentflag: Defaulted[Flag] = new UseDefault(), + currentflag: Defaulted[/* user-picked */ CurrentFlag] = new UseDefault(), /** Default: uuid_generate_v1() */ rowguid: Defaulted[UUID] = new UseDefault(), /** Default: now() */ @@ -73,10 +74,10 @@ case class EmployeeRowUnsaved( organizationnode: Defaulted[Option[String]] = new UseDefault() ) { def toRow( - salariedflagDefault: => Flag, + salariedflagDefault: => /* user-picked */ SalariedFlag, vacationhoursDefault: => Short, sickleavehoursDefault: => Short, - currentflagDefault: => Flag, + currentflagDefault: => /* user-picked */ CurrentFlag, rowguidDefault: => UUID, modifieddateDefault: => LocalDateTime, organizationnodeDefault: => Option[String] @@ -102,5 +103,5 @@ case class EmployeeRowUnsaved( } object EmployeeRowUnsaved { - given pgText: PgText[EmployeeRowUnsaved] = PgText.instance((row, sb) => { BusinessentityId.dbType.text.unsafeEncode(row.businessentityid, sb); sb.append(PgText.DELIMETER); PgTypes.text.text.unsafeEncode(row.nationalidnumber, sb); sb.append(PgText.DELIMETER); PgTypes.text.text.unsafeEncode(row.loginid, sb); sb.append(PgText.DELIMETER); PgTypes.text.text.unsafeEncode(row.jobtitle, sb); sb.append(PgText.DELIMETER); PgTypes.date.text.unsafeEncode(row.birthdate, sb); sb.append(PgText.DELIMETER); PgTypes.bpchar.text.unsafeEncode(row.maritalstatus, sb); sb.append(PgText.DELIMETER); PgTypes.bpchar.text.unsafeEncode(row.gender, sb); sb.append(PgText.DELIMETER); PgTypes.date.text.unsafeEncode(row.hiredate, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using Flag.dbType.text).unsafeEncode(row.salariedflag, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using ScalaDbTypes.PgTypes.int2.text).unsafeEncode(row.vacationhours, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using ScalaDbTypes.PgTypes.int2.text).unsafeEncode(row.sickleavehours, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using Flag.dbType.text).unsafeEncode(row.currentflag, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.uuid.text).unsafeEncode(row.rowguid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.text.nullable.text).unsafeEncode(row.organizationnode, sb) }) + given pgText: PgText[EmployeeRowUnsaved] = PgText.instance((row, sb) => { BusinessentityId.pgType.text.unsafeEncode(row.businessentityid, sb); sb.append(PgText.DELIMETER); PgTypes.text.text.unsafeEncode(row.nationalidnumber, sb); sb.append(PgText.DELIMETER); PgTypes.text.text.unsafeEncode(row.loginid, sb); sb.append(PgText.DELIMETER); PgTypes.text.text.unsafeEncode(row.jobtitle, sb); sb.append(PgText.DELIMETER); PgTypes.date.text.unsafeEncode(row.birthdate, sb); sb.append(PgText.DELIMETER); PgTypes.bpchar.text.unsafeEncode(row.maritalstatus, sb); sb.append(PgText.DELIMETER); PgTypes.bpchar.text.unsafeEncode(row.gender, sb); sb.append(PgText.DELIMETER); PgTypes.date.text.unsafeEncode(row.hiredate, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using SalariedFlag.pgType.text).unsafeEncode(row.salariedflag, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using ScalaDbTypes.PgTypes.int2.text).unsafeEncode(row.vacationhours, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using ScalaDbTypes.PgTypes.int2.text).unsafeEncode(row.sickleavehours, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using CurrentFlag.pgType.text).unsafeEncode(row.currentflag, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.uuid.text).unsafeEncode(row.rowguid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.text.nullable.text).unsafeEncode(row.organizationnode, sb) }) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryFields.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryFields.scala index 672c81fdd0..50b1d3f4d4 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryFields.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryFields.scala @@ -39,7 +39,7 @@ class EmployeedepartmenthistoryFields(val `_path`: java.util.List[Path]) extends None, Some("int4"), (row, value) => row.copy(businessentityid = value), - BusinessentityId.dbType + BusinessentityId.pgType ) } @@ -51,7 +51,7 @@ class EmployeedepartmenthistoryFields(val `_path`: java.util.List[Path]) extends None, Some("int2"), (row, value) => row.copy(departmentid = value), - DepartmentId.dbType + DepartmentId.pgType ) } @@ -63,7 +63,7 @@ class EmployeedepartmenthistoryFields(val `_path`: java.util.List[Path]) extends None, Some("int2"), (row, value) => row.copy(shiftid = value), - ShiftId.dbType + ShiftId.pgType ) } diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryId.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryId.scala index 57299f8c05..448a4a808f 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryId.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryId.scala @@ -31,5 +31,5 @@ case class EmployeedepartmenthistoryId( } object EmployeedepartmenthistoryId { - val `_rowParser`: RowParser[EmployeedepartmenthistoryId] = RowParsers.of(BusinessentityId.dbType, PgTypes.date, DepartmentId.dbType, ShiftId.dbType)(EmployeedepartmenthistoryId.apply)(row => Array[Any](row.businessentityid, row.startdate, row.departmentid, row.shiftid)) + val `_rowParser`: RowParser[EmployeedepartmenthistoryId] = RowParsers.of(BusinessentityId.pgType, PgTypes.date, DepartmentId.pgType, ShiftId.pgType)(EmployeedepartmenthistoryId.apply)(row => Array[Any](row.businessentityid, row.startdate, row.departmentid, row.shiftid)) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRepoImpl.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRepoImpl.scala index b945a45f2d..4c0098a4c0 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRepoImpl.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRepoImpl.scala @@ -25,7 +25,7 @@ import dev.typr.foundations.scala.Fragment.sql class EmployeedepartmenthistoryRepoImpl extends EmployeedepartmenthistoryRepo { override def delete: DeleteBuilder[EmployeedepartmenthistoryFields, EmployeedepartmenthistoryRow] = DeleteBuilder.of(""""humanresources"."employeedepartmenthistory"""", EmployeedepartmenthistoryFields.structure, Dialect.POSTGRESQL) - override def deleteById(compositeId: EmployeedepartmenthistoryId)(using c: Connection): Boolean = sql"""delete from "humanresources"."employeedepartmenthistory" where "businessentityid" = ${Fragment.encode(BusinessentityId.dbType, compositeId.businessentityid)} AND "startdate" = ${Fragment.encode(PgTypes.date, compositeId.startdate)} AND "departmentid" = ${Fragment.encode(DepartmentId.dbType, compositeId.departmentid)} AND "shiftid" = ${Fragment.encode(ShiftId.dbType, compositeId.shiftid)}""".update().runUnchecked(c) > 0 + override def deleteById(compositeId: EmployeedepartmenthistoryId)(using c: Connection): Boolean = sql"""delete from "humanresources"."employeedepartmenthistory" where "businessentityid" = ${Fragment.encode(BusinessentityId.pgType, compositeId.businessentityid)} AND "startdate" = ${Fragment.encode(PgTypes.date, compositeId.startdate)} AND "departmentid" = ${Fragment.encode(DepartmentId.pgType, compositeId.departmentid)} AND "shiftid" = ${Fragment.encode(ShiftId.pgType, compositeId.shiftid)}""".update().runUnchecked(c) > 0 override def deleteByIds(compositeIds: Array[EmployeedepartmenthistoryId])(using c: Connection): Int = { val businessentityid: Array[BusinessentityId] = compositeIds.map(_.businessentityid) @@ -35,13 +35,13 @@ class EmployeedepartmenthistoryRepoImpl extends EmployeedepartmenthistoryRepo { return sql"""delete from "humanresources"."employeedepartmenthistory" where ("businessentityid", "startdate", "departmentid", "shiftid") - in (select * from unnest(${Fragment.encode(BusinessentityId.dbTypeArray, businessentityid)}, ${Fragment.encode(PgTypes.dateArray, startdate)}, ${Fragment.encode(DepartmentId.dbTypeArray, departmentid)}, ${Fragment.encode(ShiftId.dbTypeArray, shiftid)})) + in (select * from unnest(${Fragment.encode(BusinessentityId.pgTypeArray, businessentityid)}, ${Fragment.encode(PgTypes.dateArray, startdate)}, ${Fragment.encode(DepartmentId.pgTypeArray, departmentid)}, ${Fragment.encode(ShiftId.pgTypeArray, shiftid)})) """.update().runUnchecked(c) } override def insert(unsaved: EmployeedepartmenthistoryRow)(using c: Connection): EmployeedepartmenthistoryRow = { sql"""insert into "humanresources"."employeedepartmenthistory"("businessentityid", "departmentid", "shiftid", "startdate", "enddate", "modifieddate") - values (${Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid)}::int4, ${Fragment.encode(DepartmentId.dbType, unsaved.departmentid)}::int2, ${Fragment.encode(ShiftId.dbType, unsaved.shiftid)}::int2, ${Fragment.encode(PgTypes.date, unsaved.startdate)}::date, ${Fragment.encode(PgTypes.date.nullable, unsaved.enddate)}::date, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) + values (${Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid)}::int4, ${Fragment.encode(DepartmentId.pgType, unsaved.departmentid)}::int2, ${Fragment.encode(ShiftId.pgType, unsaved.shiftid)}::int2, ${Fragment.encode(PgTypes.date, unsaved.startdate)}::date, ${Fragment.encode(PgTypes.date.nullable, unsaved.enddate)}::date, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) RETURNING "businessentityid", "departmentid", "shiftid", "startdate", "enddate", "modifieddate" """ .updateReturning(EmployeedepartmenthistoryRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -51,11 +51,11 @@ class EmployeedepartmenthistoryRepoImpl extends EmployeedepartmenthistoryRepo { val columns: ListBuffer[Fragment] = ListBuffer() val values: ListBuffer[Fragment] = ListBuffer() columns.addOne(Fragment.lit(""""businessentityid"""")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid)}::int4"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid)}::int4"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""departmentid"""")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(DepartmentId.dbType, unsaved.departmentid)}::int2"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(DepartmentId.pgType, unsaved.departmentid)}::int2"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""shiftid"""")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(ShiftId.dbType, unsaved.shiftid)}::int2"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(ShiftId.pgType, unsaved.shiftid)}::int2"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""startdate"""")): @scala.annotation.nowarn values.addOne(sql"${Fragment.encode(PgTypes.date, unsaved.startdate)}::date"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""enddate"""")): @scala.annotation.nowarn @@ -95,7 +95,7 @@ class EmployeedepartmenthistoryRepoImpl extends EmployeedepartmenthistoryRepo { override def selectById(compositeId: EmployeedepartmenthistoryId)(using c: Connection): Option[EmployeedepartmenthistoryRow] = { sql"""select "businessentityid", "departmentid", "shiftid", "startdate", "enddate", "modifieddate" from "humanresources"."employeedepartmenthistory" - where "businessentityid" = ${Fragment.encode(BusinessentityId.dbType, compositeId.businessentityid)} AND "startdate" = ${Fragment.encode(PgTypes.date, compositeId.startdate)} AND "departmentid" = ${Fragment.encode(DepartmentId.dbType, compositeId.departmentid)} AND "shiftid" = ${Fragment.encode(ShiftId.dbType, compositeId.shiftid)}""".query(EmployeedepartmenthistoryRow.`_rowParser`.first()).runUnchecked(c) + where "businessentityid" = ${Fragment.encode(BusinessentityId.pgType, compositeId.businessentityid)} AND "startdate" = ${Fragment.encode(PgTypes.date, compositeId.startdate)} AND "departmentid" = ${Fragment.encode(DepartmentId.pgType, compositeId.departmentid)} AND "shiftid" = ${Fragment.encode(ShiftId.pgType, compositeId.shiftid)}""".query(EmployeedepartmenthistoryRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(compositeIds: Array[EmployeedepartmenthistoryId])(using c: Connection): List[EmployeedepartmenthistoryRow] = { @@ -106,7 +106,7 @@ class EmployeedepartmenthistoryRepoImpl extends EmployeedepartmenthistoryRepo { return sql"""select "businessentityid", "departmentid", "shiftid", "startdate", "enddate", "modifieddate" from "humanresources"."employeedepartmenthistory" where ("businessentityid", "startdate", "departmentid", "shiftid") - in (select * from unnest(${Fragment.encode(BusinessentityId.dbTypeArray, businessentityid)}, ${Fragment.encode(PgTypes.dateArray, startdate)}, ${Fragment.encode(DepartmentId.dbTypeArray, departmentid)}, ${Fragment.encode(ShiftId.dbTypeArray, shiftid)})) + in (select * from unnest(${Fragment.encode(BusinessentityId.pgTypeArray, businessentityid)}, ${Fragment.encode(PgTypes.dateArray, startdate)}, ${Fragment.encode(DepartmentId.pgTypeArray, departmentid)}, ${Fragment.encode(ShiftId.pgTypeArray, shiftid)})) """.query(EmployeedepartmenthistoryRow.`_rowParser`.all()).runUnchecked(c) } @@ -123,12 +123,12 @@ class EmployeedepartmenthistoryRepoImpl extends EmployeedepartmenthistoryRepo { return sql"""update "humanresources"."employeedepartmenthistory" set "enddate" = ${Fragment.encode(PgTypes.date.nullable, row.enddate)}::date, "modifieddate" = ${Fragment.encode(PgTypes.timestamp, row.modifieddate)}::timestamp - where "businessentityid" = ${Fragment.encode(BusinessentityId.dbType, compositeId.businessentityid)} AND "startdate" = ${Fragment.encode(PgTypes.date, compositeId.startdate)} AND "departmentid" = ${Fragment.encode(DepartmentId.dbType, compositeId.departmentid)} AND "shiftid" = ${Fragment.encode(ShiftId.dbType, compositeId.shiftid)}""".update().runUnchecked(c) > 0 + where "businessentityid" = ${Fragment.encode(BusinessentityId.pgType, compositeId.businessentityid)} AND "startdate" = ${Fragment.encode(PgTypes.date, compositeId.startdate)} AND "departmentid" = ${Fragment.encode(DepartmentId.pgType, compositeId.departmentid)} AND "shiftid" = ${Fragment.encode(ShiftId.pgType, compositeId.shiftid)}""".update().runUnchecked(c) > 0 } override def upsert(unsaved: EmployeedepartmenthistoryRow)(using c: Connection): EmployeedepartmenthistoryRow = { sql"""insert into "humanresources"."employeedepartmenthistory"("businessentityid", "departmentid", "shiftid", "startdate", "enddate", "modifieddate") - values (${Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid)}::int4, ${Fragment.encode(DepartmentId.dbType, unsaved.departmentid)}::int2, ${Fragment.encode(ShiftId.dbType, unsaved.shiftid)}::int2, ${Fragment.encode(PgTypes.date, unsaved.startdate)}::date, ${Fragment.encode(PgTypes.date.nullable, unsaved.enddate)}::date, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) + values (${Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid)}::int4, ${Fragment.encode(DepartmentId.pgType, unsaved.departmentid)}::int2, ${Fragment.encode(ShiftId.pgType, unsaved.shiftid)}::int2, ${Fragment.encode(PgTypes.date, unsaved.startdate)}::date, ${Fragment.encode(PgTypes.date.nullable, unsaved.enddate)}::date, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) on conflict ("businessentityid", "startdate", "departmentid", "shiftid") do update set "enddate" = EXCLUDED."enddate", diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRow.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRow.scala index b75f3e2f36..4b841ff57e 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRow.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRow.scala @@ -82,7 +82,7 @@ case class EmployeedepartmenthistoryRow( } object EmployeedepartmenthistoryRow { - val `_rowParser`: RowParser[EmployeedepartmenthistoryRow] = RowParsers.of(BusinessentityId.dbType, DepartmentId.dbType, ShiftId.dbType, PgTypes.date, PgTypes.date.nullable, PgTypes.timestamp)(EmployeedepartmenthistoryRow.apply)(row => Array[Any](row.businessentityid, row.departmentid, row.shiftid, row.startdate, row.enddate, row.modifieddate)) + val `_rowParser`: RowParser[EmployeedepartmenthistoryRow] = RowParsers.of(BusinessentityId.pgType, DepartmentId.pgType, ShiftId.pgType, PgTypes.date, PgTypes.date.nullable, PgTypes.timestamp)(EmployeedepartmenthistoryRow.apply)(row => Array[Any](row.businessentityid, row.departmentid, row.shiftid, row.startdate, row.enddate, row.modifieddate)) def apply( compositeId: EmployeedepartmenthistoryId, diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRowUnsaved.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRowUnsaved.scala index 76a0f8d49d..8750d56f0a 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRowUnsaved.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRowUnsaved.scala @@ -54,5 +54,5 @@ case class EmployeedepartmenthistoryRowUnsaved( } object EmployeedepartmenthistoryRowUnsaved { - given pgText: PgText[EmployeedepartmenthistoryRowUnsaved] = PgText.instance((row, sb) => { BusinessentityId.dbType.text.unsafeEncode(row.businessentityid, sb); sb.append(PgText.DELIMETER); DepartmentId.dbType.text.unsafeEncode(row.departmentid, sb); sb.append(PgText.DELIMETER); ShiftId.dbType.text.unsafeEncode(row.shiftid, sb); sb.append(PgText.DELIMETER); PgTypes.date.text.unsafeEncode(row.startdate, sb); sb.append(PgText.DELIMETER); PgTypes.date.nullable.text.unsafeEncode(row.enddate, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) + given pgText: PgText[EmployeedepartmenthistoryRowUnsaved] = PgText.instance((row, sb) => { BusinessentityId.pgType.text.unsafeEncode(row.businessentityid, sb); sb.append(PgText.DELIMETER); DepartmentId.pgType.text.unsafeEncode(row.departmentid, sb); sb.append(PgText.DELIMETER); ShiftId.pgType.text.unsafeEncode(row.shiftid, sb); sb.append(PgText.DELIMETER); PgTypes.date.text.unsafeEncode(row.startdate, sb); sb.append(PgText.DELIMETER); PgTypes.date.nullable.text.unsafeEncode(row.enddate, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/shift/ShiftFields.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/shift/ShiftFields.scala index 662c6b9878..cd29b47641 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/shift/ShiftFields.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/shift/ShiftFields.scala @@ -28,7 +28,7 @@ class ShiftFields(val `_path`: java.util.List[Path]) extends TupleExpr5[ShiftId, None, Some("int4"), (row, value) => row.copy(shiftid = value), - ShiftId.dbType + ShiftId.pgType ) } @@ -40,7 +40,7 @@ class ShiftFields(val `_path`: java.util.List[Path]) extends TupleExpr5[ShiftId, None, Some("varchar"), (row, value) => row.copy(name = value), - Name.dbType + Name.pgType ) } diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/shift/ShiftId.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/shift/ShiftId.scala index 4dcd2f907b..e33ba2e14f 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/shift/ShiftId.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/shift/ShiftId.scala @@ -17,7 +17,7 @@ case class ShiftId(@JsonValue value: Int) extends scala.AnyVal object ShiftId { given bijection: Bijection[ShiftId, Int] = Bijection.apply[ShiftId, Int](_.value)(ShiftId.apply) - given dbType: PgType[ShiftId] = ScalaDbTypes.PgTypes.int4.bimap(ShiftId.apply, _.value) + given pgType: PgType[ShiftId] = ScalaDbTypes.PgTypes.int4.bimap(ShiftId.apply, _.value) - given dbTypeArray: PgType[Array[ShiftId]] = PgTypes.int4ArrayUnboxed.bimap(xs => xs.map(ShiftId.apply), xs => xs.map(_.value)) + given pgTypeArray: PgType[Array[ShiftId]] = PgTypes.int4ArrayUnboxed.bimap(xs => xs.map(ShiftId.apply), xs => xs.map(_.value)) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRepoImpl.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRepoImpl.scala index 70f082d503..30bc4237ec 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRepoImpl.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRepoImpl.scala @@ -21,19 +21,19 @@ import dev.typr.foundations.scala.Fragment.sql class ShiftRepoImpl extends ShiftRepo { override def delete: DeleteBuilder[ShiftFields, ShiftRow] = DeleteBuilder.of(""""humanresources"."shift"""", ShiftFields.structure, Dialect.POSTGRESQL) - override def deleteById(shiftid: ShiftId)(using c: Connection): Boolean = sql"""delete from "humanresources"."shift" where "shiftid" = ${Fragment.encode(ShiftId.dbType, shiftid)}""".update().runUnchecked(c) > 0 + override def deleteById(shiftid: ShiftId)(using c: Connection): Boolean = sql"""delete from "humanresources"."shift" where "shiftid" = ${Fragment.encode(ShiftId.pgType, shiftid)}""".update().runUnchecked(c) > 0 override def deleteByIds(shiftids: Array[ShiftId])(using c: Connection): Int = { sql"""delete from "humanresources"."shift" - where "shiftid" = ANY(${Fragment.encode(ShiftId.dbTypeArray, shiftids)})""" + where "shiftid" = ANY(${Fragment.encode(ShiftId.pgTypeArray, shiftids)})""" .update() .runUnchecked(c) } override def insert(unsaved: ShiftRow)(using c: Connection): ShiftRow = { sql"""insert into "humanresources"."shift"("shiftid", "name", "starttime", "endtime", "modifieddate") - values (${Fragment.encode(ShiftId.dbType, unsaved.shiftid)}::int4, ${Fragment.encode(Name.dbType, unsaved.name)}::varchar, ${Fragment.encode(PgTypes.time, unsaved.starttime)}::time, ${Fragment.encode(PgTypes.time, unsaved.endtime)}::time, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) + values (${Fragment.encode(ShiftId.pgType, unsaved.shiftid)}::int4, ${Fragment.encode(Name.pgType, unsaved.name)}::varchar, ${Fragment.encode(PgTypes.time, unsaved.starttime)}::time, ${Fragment.encode(PgTypes.time, unsaved.endtime)}::time, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) RETURNING "shiftid", "name", "starttime", "endtime", "modifieddate" """ .updateReturning(ShiftRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -43,14 +43,14 @@ class ShiftRepoImpl extends ShiftRepo { val columns: ListBuffer[Fragment] = ListBuffer() val values: ListBuffer[Fragment] = ListBuffer() columns.addOne(Fragment.lit(""""name"""")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(Name.dbType, unsaved.name)}::varchar"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(Name.pgType, unsaved.name)}::varchar"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""starttime"""")): @scala.annotation.nowarn values.addOne(sql"${Fragment.encode(PgTypes.time, unsaved.starttime)}::time"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""endtime"""")): @scala.annotation.nowarn values.addOne(sql"${Fragment.encode(PgTypes.time, unsaved.endtime)}::time"): @scala.annotation.nowarn unsaved.shiftid.visit( { }, - value => { columns.addOne(Fragment.lit(""""shiftid"""")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(ShiftId.dbType, value)}::int4"): @scala.annotation.nowarn } + value => { columns.addOne(Fragment.lit(""""shiftid"""")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(ShiftId.pgType, value)}::int4"): @scala.annotation.nowarn } ); unsaved.modifieddate.visit( { }, @@ -87,13 +87,13 @@ class ShiftRepoImpl extends ShiftRepo { override def selectById(shiftid: ShiftId)(using c: Connection): Option[ShiftRow] = { sql"""select "shiftid", "name", "starttime", "endtime", "modifieddate" from "humanresources"."shift" - where "shiftid" = ${Fragment.encode(ShiftId.dbType, shiftid)}""".query(ShiftRow.`_rowParser`.first()).runUnchecked(c) + where "shiftid" = ${Fragment.encode(ShiftId.pgType, shiftid)}""".query(ShiftRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(shiftids: Array[ShiftId])(using c: Connection): List[ShiftRow] = { sql"""select "shiftid", "name", "starttime", "endtime", "modifieddate" from "humanresources"."shift" - where "shiftid" = ANY(${Fragment.encode(ShiftId.dbTypeArray, shiftids)})""".query(ShiftRow.`_rowParser`.all()).runUnchecked(c) + where "shiftid" = ANY(${Fragment.encode(ShiftId.pgTypeArray, shiftids)})""".query(ShiftRow.`_rowParser`.all()).runUnchecked(c) } override def selectByIdsTracked(shiftids: Array[ShiftId])(using c: Connection): Map[ShiftId, ShiftRow] = { @@ -107,16 +107,16 @@ class ShiftRepoImpl extends ShiftRepo { override def update(row: ShiftRow)(using c: Connection): Boolean = { val shiftid: ShiftId = row.shiftid return sql"""update "humanresources"."shift" - set "name" = ${Fragment.encode(Name.dbType, row.name)}::varchar, + set "name" = ${Fragment.encode(Name.pgType, row.name)}::varchar, "starttime" = ${Fragment.encode(PgTypes.time, row.starttime)}::time, "endtime" = ${Fragment.encode(PgTypes.time, row.endtime)}::time, "modifieddate" = ${Fragment.encode(PgTypes.timestamp, row.modifieddate)}::timestamp - where "shiftid" = ${Fragment.encode(ShiftId.dbType, shiftid)}""".update().runUnchecked(c) > 0 + where "shiftid" = ${Fragment.encode(ShiftId.pgType, shiftid)}""".update().runUnchecked(c) > 0 } override def upsert(unsaved: ShiftRow)(using c: Connection): ShiftRow = { sql"""insert into "humanresources"."shift"("shiftid", "name", "starttime", "endtime", "modifieddate") - values (${Fragment.encode(ShiftId.dbType, unsaved.shiftid)}::int4, ${Fragment.encode(Name.dbType, unsaved.name)}::varchar, ${Fragment.encode(PgTypes.time, unsaved.starttime)}::time, ${Fragment.encode(PgTypes.time, unsaved.endtime)}::time, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) + values (${Fragment.encode(ShiftId.pgType, unsaved.shiftid)}::int4, ${Fragment.encode(Name.pgType, unsaved.name)}::varchar, ${Fragment.encode(PgTypes.time, unsaved.starttime)}::time, ${Fragment.encode(PgTypes.time, unsaved.endtime)}::time, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) on conflict ("shiftid") do update set "name" = EXCLUDED."name", diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRow.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRow.scala index c03980311c..dccdc58760 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRow.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRow.scala @@ -60,7 +60,7 @@ case class ShiftRow( } object ShiftRow { - val `_rowParser`: RowParser[ShiftRow] = RowParsers.of(ShiftId.dbType, Name.dbType, PgTypes.time, PgTypes.time, PgTypes.timestamp)(ShiftRow.apply)(row => Array[Any](row.shiftid, row.name, row.starttime, row.endtime, row.modifieddate)) + val `_rowParser`: RowParser[ShiftRow] = RowParsers.of(ShiftId.pgType, Name.pgType, PgTypes.time, PgTypes.time, PgTypes.timestamp)(ShiftRow.apply)(row => Array[Any](row.shiftid, row.name, row.starttime, row.endtime, row.modifieddate)) given pgText: PgText[ShiftRow] = PgText.from(`_rowParser`.underlying) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRowUnsaved.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRowUnsaved.scala index a66f2cf1c9..e73ae437b4 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRowUnsaved.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRowUnsaved.scala @@ -43,5 +43,5 @@ case class ShiftRowUnsaved( } object ShiftRowUnsaved { - given pgText: PgText[ShiftRowUnsaved] = PgText.instance((row, sb) => { Name.dbType.text.unsafeEncode(row.name, sb); sb.append(PgText.DELIMETER); PgTypes.time.text.unsafeEncode(row.starttime, sb); sb.append(PgText.DELIMETER); PgTypes.time.text.unsafeEncode(row.endtime, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using ShiftId.dbType.text).unsafeEncode(row.shiftid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) + given pgText: PgText[ShiftRowUnsaved] = PgText.instance((row, sb) => { Name.pgType.text.unsafeEncode(row.name, sb); sb.append(PgText.DELIMETER); PgTypes.time.text.unsafeEncode(row.starttime, sb); sb.append(PgText.DELIMETER); PgTypes.time.text.unsafeEncode(row.endtime, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using ShiftId.pgType.text).unsafeEncode(row.shiftid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/vemployee/VemployeeViewFields.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/vemployee/VemployeeViewFields.scala index 8ab6a08f5e..cdaa18a84a 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/vemployee/VemployeeViewFields.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/vemployee/VemployeeViewFields.scala @@ -9,6 +9,8 @@ import adventureworks.person.businessentity.BusinessentityId import adventureworks.public.Name import adventureworks.public.Phone import adventureworks.userdefined.FirstName +import adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import dev.typr.foundations.PgTypes import dev.typr.foundations.RowParser import dev.typr.foundations.data.Xml @@ -21,7 +23,7 @@ import dev.typr.foundations.scala.SqlExpr import dev.typr.foundations.scala.SqlExpr.Field import dev.typr.foundations.scala.TupleExpr18 -class VemployeeViewFields(val `_path`: java.util.List[Path]) extends TupleExpr18[BusinessentityId, String, /* user-picked */ FirstName, Name, Name, String, String, Phone, Name, String, Int, String, String, String, Name, String, Name, Xml] with RelationStructure[VemployeeViewFields, VemployeeViewRow] with FieldsBase[VemployeeViewRow] { +class VemployeeViewFields(val `_path`: java.util.List[Path]) extends TupleExpr18[BusinessentityId, String, /* user-picked */ FirstName, /* user-picked */ MiddleName, /* user-picked */ LastName, String, String, Phone, Name, String, Int, String, String, String, Name, String, Name, Xml] with RelationStructure[VemployeeViewFields, VemployeeViewRow] with FieldsBase[VemployeeViewRow] { def businessentityid: Field[BusinessentityId, VemployeeViewRow] = { new Field[BusinessentityId, VemployeeViewRow]( _path, @@ -30,7 +32,7 @@ class VemployeeViewFields(val `_path`: java.util.List[Path]) extends TupleExpr18 None, None, (row, value) => row.copy(businessentityid = value), - BusinessentityId.dbType + BusinessentityId.pgType ) } @@ -54,31 +56,31 @@ class VemployeeViewFields(val `_path`: java.util.List[Path]) extends TupleExpr18 None, None, (row, value) => row.copy(firstname = value), - FirstName.dbType + FirstName.pgType ) } - def middlename: Field[Name, VemployeeViewRow] = { - new Field[Name, VemployeeViewRow]( + def middlename: Field[/* user-picked */ MiddleName, VemployeeViewRow] = { + new Field[/* user-picked */ MiddleName, VemployeeViewRow]( _path, "middlename", _.middlename, None, None, (row, value) => row.copy(middlename = value), - Name.dbType + MiddleName.pgType ) } - def lastname: Field[Name, VemployeeViewRow] = { - new Field[Name, VemployeeViewRow]( + def lastname: Field[/* user-picked */ LastName, VemployeeViewRow] = { + new Field[/* user-picked */ LastName, VemployeeViewRow]( _path, "lastname", _.lastname, None, None, (row, value) => row.copy(lastname = value), - Name.dbType + LastName.pgType ) } @@ -114,7 +116,7 @@ class VemployeeViewFields(val `_path`: java.util.List[Path]) extends TupleExpr18 None, None, (row, value) => row.copy(phonenumber = value), - Phone.dbType + Phone.pgType ) } @@ -126,7 +128,7 @@ class VemployeeViewFields(val `_path`: java.util.List[Path]) extends TupleExpr18 None, None, (row, value) => row.copy(phonenumbertype = value), - Name.dbType + Name.pgType ) } @@ -198,7 +200,7 @@ class VemployeeViewFields(val `_path`: java.util.List[Path]) extends TupleExpr18 None, None, (row, value) => row.copy(stateprovincename = value), - Name.dbType + Name.pgType ) } @@ -222,7 +224,7 @@ class VemployeeViewFields(val `_path`: java.util.List[Path]) extends TupleExpr18 None, None, (row, value) => row.copy(countryregionname = value), - Name.dbType + Name.pgType ) } @@ -250,9 +252,9 @@ class VemployeeViewFields(val `_path`: java.util.List[Path]) extends TupleExpr18 override def `_3`: SqlExpr[/* user-picked */ FirstName] = firstname - override def `_4`: SqlExpr[Name] = middlename + override def `_4`: SqlExpr[/* user-picked */ MiddleName] = middlename - override def `_5`: SqlExpr[Name] = lastname + override def `_5`: SqlExpr[/* user-picked */ LastName] = lastname override def `_6`: SqlExpr[String] = suffix diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/vemployee/VemployeeViewRow.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/vemployee/VemployeeViewRow.scala index 75f6c7dfb6..44b449b669 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/vemployee/VemployeeViewRow.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/humanresources/vemployee/VemployeeViewRow.scala @@ -9,6 +9,8 @@ import adventureworks.person.businessentity.BusinessentityId import adventureworks.public.Name import adventureworks.public.Phone import adventureworks.userdefined.FirstName +import adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import dev.typr.foundations.PgTypes import dev.typr.foundations.Tuple.Tuple18 import dev.typr.foundations.data.Xml @@ -25,9 +27,9 @@ case class VemployeeViewRow( /** Points to [[adventureworks.person.person.PersonRow.firstname]] */ firstname: /* user-picked */ FirstName, /** Points to [[adventureworks.person.person.PersonRow.middlename]] */ - middlename: Name, + middlename: /* user-picked */ MiddleName, /** Points to [[adventureworks.person.person.PersonRow.lastname]] */ - lastname: Name, + lastname: /* user-picked */ LastName, /** Points to [[adventureworks.person.person.PersonRow.suffix]] */ suffix: String, /** Points to [[adventureworks.humanresources.employee.EmployeeRow.jobtitle]] */ @@ -54,16 +56,16 @@ case class VemployeeViewRow( countryregionname: Name, /** Points to [[adventureworks.person.person.PersonRow.additionalcontactinfo]] */ additionalcontactinfo: Xml -) extends Tuple18[BusinessentityId, String, /* user-picked */ FirstName, Name, Name, String, String, Phone, Name, String, Int, String, String, String, Name, String, Name, Xml] { +) extends Tuple18[BusinessentityId, String, /* user-picked */ FirstName, /* user-picked */ MiddleName, /* user-picked */ LastName, String, String, Phone, Name, String, Int, String, String, String, Name, String, Name, Xml] { override def `_1`: BusinessentityId = businessentityid override def `_2`: String = title override def `_3`: /* user-picked */ FirstName = firstname - override def `_4`: Name = middlename + override def `_4`: /* user-picked */ MiddleName = middlename - override def `_5`: Name = lastname + override def `_5`: /* user-picked */ LastName = lastname override def `_6`: String = suffix @@ -93,5 +95,5 @@ case class VemployeeViewRow( } object VemployeeViewRow { - val `_rowParser`: RowParser[VemployeeViewRow] = RowParsers.of(BusinessentityId.dbType, PgTypes.text, FirstName.dbType, Name.dbType, Name.dbType, PgTypes.text, PgTypes.text, Phone.dbType, Name.dbType, PgTypes.text, ScalaDbTypes.PgTypes.int4, PgTypes.text, PgTypes.text, PgTypes.text, Name.dbType, PgTypes.text, Name.dbType, PgTypes.xml)(VemployeeViewRow.apply)(row => Array[Any](row.businessentityid, row.title, row.firstname, row.middlename, row.lastname, row.suffix, row.jobtitle, row.phonenumber, row.phonenumbertype, row.emailaddress, row.emailpromotion, row.addressline1, row.addressline2, row.city, row.stateprovincename, row.postalcode, row.countryregionname, row.additionalcontactinfo)) + val `_rowParser`: RowParser[VemployeeViewRow] = RowParsers.of(BusinessentityId.pgType, PgTypes.text, FirstName.pgType, MiddleName.pgType, LastName.pgType, PgTypes.text, PgTypes.text, Phone.pgType, Name.pgType, PgTypes.text, ScalaDbTypes.PgTypes.int4, PgTypes.text, PgTypes.text, PgTypes.text, Name.pgType, PgTypes.text, Name.pgType, PgTypes.xml)(VemployeeViewRow.apply)(row => Array[Any](row.businessentityid, row.title, row.firstname, row.middlename, row.lastname, row.suffix, row.jobtitle, row.phonenumber, row.phonenumbertype, row.emailaddress, row.emailpromotion, row.addressline1, row.addressline2, row.city, row.stateprovincename, row.postalcode, row.countryregionname, row.additionalcontactinfo)) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/information_schema/CardinalNumber.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/information_schema/CardinalNumber.scala index f08791c2b4..fecc14c3b6 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/information_schema/CardinalNumber.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/information_schema/CardinalNumber.scala @@ -19,7 +19,7 @@ case class CardinalNumber(@JsonValue value: Int) object CardinalNumber { given bijection: Bijection[CardinalNumber, Int] = Bijection.apply[CardinalNumber, Int](_.value)(CardinalNumber.apply) - given dbType: PgType[CardinalNumber] = ScalaDbTypes.PgTypes.int4.bimap(CardinalNumber.apply, _.value).renamed(""""information_schema"."cardinal_number"""") + given pgType: PgType[CardinalNumber] = ScalaDbTypes.PgTypes.int4.bimap(CardinalNumber.apply, _.value).renamed(""""information_schema"."cardinal_number"""") - given dbTypeArray: PgType[Array[CardinalNumber]] = PgTypes.int4ArrayUnboxed.bimap(xs => xs.map(CardinalNumber.apply), xs => xs.map(_.value)).renamed(""""information_schema"."cardinal_number"[]""") + given pgTypeArray: PgType[Array[CardinalNumber]] = PgTypes.int4ArrayUnboxed.bimap(xs => xs.map(CardinalNumber.apply), xs => xs.map(_.value)).renamed(""""information_schema"."cardinal_number"[]""") } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/information_schema/CharacterData.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/information_schema/CharacterData.scala index 30e1532d3b..8c1dda4aa7 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/information_schema/CharacterData.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/information_schema/CharacterData.scala @@ -18,7 +18,7 @@ case class CharacterData(@JsonValue value: String) object CharacterData { given bijection: Bijection[CharacterData, String] = Bijection.apply[CharacterData, String](_.value)(CharacterData.apply) - given dbType: PgType[CharacterData] = PgTypes.text.bimap(CharacterData.apply, _.value).renamed(""""information_schema"."character_data"""") + given pgType: PgType[CharacterData] = PgTypes.text.bimap(CharacterData.apply, _.value).renamed(""""information_schema"."character_data"""") - given dbTypeArray: PgType[Array[CharacterData]] = PgTypes.textArray.bimap(xs => xs.map(CharacterData.apply), xs => xs.map(_.value)).renamed(""""information_schema"."character_data"[]""") + given pgTypeArray: PgType[Array[CharacterData]] = PgTypes.textArray.bimap(xs => xs.map(CharacterData.apply), xs => xs.map(_.value)).renamed(""""information_schema"."character_data"[]""") } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/information_schema/SqlIdentifier.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/information_schema/SqlIdentifier.scala index 3197b15fe8..ebbe92a406 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/information_schema/SqlIdentifier.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/information_schema/SqlIdentifier.scala @@ -18,7 +18,7 @@ case class SqlIdentifier(@JsonValue value: String) object SqlIdentifier { given bijection: Bijection[SqlIdentifier, String] = Bijection.apply[SqlIdentifier, String](_.value)(SqlIdentifier.apply) - given dbType: PgType[SqlIdentifier] = PgTypes.name.bimap(SqlIdentifier.apply, _.value).renamed(""""information_schema"."sql_identifier"""") + given pgType: PgType[SqlIdentifier] = PgTypes.name.bimap(SqlIdentifier.apply, _.value).renamed(""""information_schema"."sql_identifier"""") - given dbTypeArray: PgType[Array[SqlIdentifier]] = PgTypes.nameArray.bimap(xs => xs.map(SqlIdentifier.apply), xs => xs.map(_.value)).renamed(""""information_schema"."sql_identifier"[]""") + given pgTypeArray: PgType[Array[SqlIdentifier]] = PgTypes.nameArray.bimap(xs => xs.map(SqlIdentifier.apply), xs => xs.map(_.value)).renamed(""""information_schema"."sql_identifier"[]""") } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/information_schema/TimeStamp.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/information_schema/TimeStamp.scala index 2c0abca155..1891a14ad1 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/information_schema/TimeStamp.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/information_schema/TimeStamp.scala @@ -19,7 +19,7 @@ case class TimeStamp(@JsonValue value: Instant) object TimeStamp { given bijection: Bijection[TimeStamp, Instant] = Bijection.apply[TimeStamp, Instant](_.value)(TimeStamp.apply) - given dbType: PgType[TimeStamp] = PgTypes.timestamptz.bimap(TimeStamp.apply, _.value).renamed(""""information_schema"."time_stamp"""") + given pgType: PgType[TimeStamp] = PgTypes.timestamptz.bimap(TimeStamp.apply, _.value).renamed(""""information_schema"."time_stamp"""") - given dbTypeArray: PgType[Array[TimeStamp]] = PgTypes.timestamptzArray.bimap(xs => xs.map(TimeStamp.apply), xs => xs.map(_.value)).renamed(""""information_schema"."time_stamp"[]""") + given pgTypeArray: PgType[Array[TimeStamp]] = PgTypes.timestamptzArray.bimap(xs => xs.map(TimeStamp.apply), xs => xs.map(_.value)).renamed(""""information_schema"."time_stamp"[]""") } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/information_schema/YesOrNo.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/information_schema/YesOrNo.scala index 9a124a9317..020069c293 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/information_schema/YesOrNo.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/information_schema/YesOrNo.scala @@ -18,7 +18,7 @@ case class YesOrNo(@JsonValue value: String) object YesOrNo { given bijection: Bijection[YesOrNo, String] = Bijection.apply[YesOrNo, String](_.value)(YesOrNo.apply) - given dbType: PgType[YesOrNo] = PgTypes.text.bimap(YesOrNo.apply, _.value).renamed(""""information_schema"."yes_or_no"""") + given pgType: PgType[YesOrNo] = PgTypes.text.bimap(YesOrNo.apply, _.value).renamed(""""information_schema"."yes_or_no"""") - given dbTypeArray: PgType[Array[YesOrNo]] = PgTypes.textArray.bimap(xs => xs.map(YesOrNo.apply), xs => xs.map(_.value)).renamed(""""information_schema"."yes_or_no"[]""") + given pgTypeArray: PgType[Array[YesOrNo]] = PgTypes.textArray.bimap(xs => xs.map(YesOrNo.apply), xs => xs.map(_.value)).renamed(""""information_schema"."yes_or_no"[]""") } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/address/AddressFields.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/address/AddressFields.scala index 9fc3259cd9..16a6fd4825 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/address/AddressFields.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/address/AddressFields.scala @@ -32,7 +32,7 @@ class AddressFields(val `_path`: java.util.List[Path]) extends TupleExpr9[Addres None, Some("int4"), (row, value) => row.copy(addressid = value), - AddressId.dbType + AddressId.pgType ) } @@ -80,7 +80,7 @@ class AddressFields(val `_path`: java.util.List[Path]) extends TupleExpr9[Addres None, Some("int4"), (row, value) => row.copy(stateprovinceid = value), - StateprovinceId.dbType + StateprovinceId.pgType ) } diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/address/AddressId.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/address/AddressId.scala index 1e38d1e262..86b108e1cc 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/address/AddressId.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/address/AddressId.scala @@ -17,7 +17,7 @@ case class AddressId(@JsonValue value: Int) extends scala.AnyVal object AddressId { given bijection: Bijection[AddressId, Int] = Bijection.apply[AddressId, Int](_.value)(AddressId.apply) - given dbType: PgType[AddressId] = ScalaDbTypes.PgTypes.int4.bimap(AddressId.apply, _.value) + given pgType: PgType[AddressId] = ScalaDbTypes.PgTypes.int4.bimap(AddressId.apply, _.value) - given dbTypeArray: PgType[Array[AddressId]] = PgTypes.int4ArrayUnboxed.bimap(xs => xs.map(AddressId.apply), xs => xs.map(_.value)) + given pgTypeArray: PgType[Array[AddressId]] = PgTypes.int4ArrayUnboxed.bimap(xs => xs.map(AddressId.apply), xs => xs.map(_.value)) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/address/AddressRepoImpl.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/address/AddressRepoImpl.scala index 310df4ee5f..1f6ee9964c 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/address/AddressRepoImpl.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/address/AddressRepoImpl.scala @@ -22,19 +22,19 @@ import dev.typr.foundations.scala.Fragment.sql class AddressRepoImpl extends AddressRepo { override def delete: DeleteBuilder[AddressFields, AddressRow] = DeleteBuilder.of(""""person"."address"""", AddressFields.structure, Dialect.POSTGRESQL) - override def deleteById(addressid: AddressId)(using c: Connection): Boolean = sql"""delete from "person"."address" where "addressid" = ${Fragment.encode(AddressId.dbType, addressid)}""".update().runUnchecked(c) > 0 + override def deleteById(addressid: AddressId)(using c: Connection): Boolean = sql"""delete from "person"."address" where "addressid" = ${Fragment.encode(AddressId.pgType, addressid)}""".update().runUnchecked(c) > 0 override def deleteByIds(addressids: Array[AddressId])(using c: Connection): Int = { sql"""delete from "person"."address" - where "addressid" = ANY(${Fragment.encode(AddressId.dbTypeArray, addressids)})""" + where "addressid" = ANY(${Fragment.encode(AddressId.pgTypeArray, addressids)})""" .update() .runUnchecked(c) } override def insert(unsaved: AddressRow)(using c: Connection): AddressRow = { sql"""insert into "person"."address"("addressid", "addressline1", "addressline2", "city", "stateprovinceid", "postalcode", "spatiallocation", "rowguid", "modifieddate") - values (${Fragment.encode(AddressId.dbType, unsaved.addressid)}::int4, ${Fragment.encode(PgTypes.text, unsaved.addressline1)}, ${Fragment.encode(PgTypes.text.nullable, unsaved.addressline2)}, ${Fragment.encode(PgTypes.text, unsaved.city)}, ${Fragment.encode(StateprovinceId.dbType, unsaved.stateprovinceid)}::int4, ${Fragment.encode(PgTypes.text, unsaved.postalcode)}, ${Fragment.encode(PgTypes.bytea.nullable, unsaved.spatiallocation)}::bytea, ${Fragment.encode(PgTypes.uuid, unsaved.rowguid)}::uuid, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) + values (${Fragment.encode(AddressId.pgType, unsaved.addressid)}::int4, ${Fragment.encode(PgTypes.text, unsaved.addressline1)}, ${Fragment.encode(PgTypes.text.nullable, unsaved.addressline2)}, ${Fragment.encode(PgTypes.text, unsaved.city)}, ${Fragment.encode(StateprovinceId.pgType, unsaved.stateprovinceid)}::int4, ${Fragment.encode(PgTypes.text, unsaved.postalcode)}, ${Fragment.encode(PgTypes.bytea.nullable, unsaved.spatiallocation)}::bytea, ${Fragment.encode(PgTypes.uuid, unsaved.rowguid)}::uuid, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) RETURNING "addressid", "addressline1", "addressline2", "city", "stateprovinceid", "postalcode", "spatiallocation", "rowguid", "modifieddate" """ .updateReturning(AddressRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -50,14 +50,14 @@ class AddressRepoImpl extends AddressRepo { columns.addOne(Fragment.lit(""""city"""")): @scala.annotation.nowarn values.addOne(sql"${Fragment.encode(PgTypes.text, unsaved.city)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""stateprovinceid"""")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(StateprovinceId.dbType, unsaved.stateprovinceid)}::int4"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(StateprovinceId.pgType, unsaved.stateprovinceid)}::int4"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""postalcode"""")): @scala.annotation.nowarn values.addOne(sql"${Fragment.encode(PgTypes.text, unsaved.postalcode)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""spatiallocation"""")): @scala.annotation.nowarn values.addOne(sql"${Fragment.encode(PgTypes.bytea.nullable, unsaved.spatiallocation)}::bytea"): @scala.annotation.nowarn unsaved.addressid.visit( { }, - value => { columns.addOne(Fragment.lit(""""addressid"""")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(AddressId.dbType, value)}::int4"): @scala.annotation.nowarn } + value => { columns.addOne(Fragment.lit(""""addressid"""")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(AddressId.pgType, value)}::int4"): @scala.annotation.nowarn } ); unsaved.rowguid.visit( { }, @@ -98,13 +98,13 @@ class AddressRepoImpl extends AddressRepo { override def selectById(addressid: AddressId)(using c: Connection): Option[AddressRow] = { sql"""select "addressid", "addressline1", "addressline2", "city", "stateprovinceid", "postalcode", "spatiallocation", "rowguid", "modifieddate" from "person"."address" - where "addressid" = ${Fragment.encode(AddressId.dbType, addressid)}""".query(AddressRow.`_rowParser`.first()).runUnchecked(c) + where "addressid" = ${Fragment.encode(AddressId.pgType, addressid)}""".query(AddressRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(addressids: Array[AddressId])(using c: Connection): List[AddressRow] = { sql"""select "addressid", "addressline1", "addressline2", "city", "stateprovinceid", "postalcode", "spatiallocation", "rowguid", "modifieddate" from "person"."address" - where "addressid" = ANY(${Fragment.encode(AddressId.dbTypeArray, addressids)})""".query(AddressRow.`_rowParser`.all()).runUnchecked(c) + where "addressid" = ANY(${Fragment.encode(AddressId.pgTypeArray, addressids)})""".query(AddressRow.`_rowParser`.all()).runUnchecked(c) } override def selectByIdsTracked(addressids: Array[AddressId])(using c: Connection): Map[AddressId, AddressRow] = { @@ -121,17 +121,17 @@ class AddressRepoImpl extends AddressRepo { set "addressline1" = ${Fragment.encode(PgTypes.text, row.addressline1)}, "addressline2" = ${Fragment.encode(PgTypes.text.nullable, row.addressline2)}, "city" = ${Fragment.encode(PgTypes.text, row.city)}, - "stateprovinceid" = ${Fragment.encode(StateprovinceId.dbType, row.stateprovinceid)}::int4, + "stateprovinceid" = ${Fragment.encode(StateprovinceId.pgType, row.stateprovinceid)}::int4, "postalcode" = ${Fragment.encode(PgTypes.text, row.postalcode)}, "spatiallocation" = ${Fragment.encode(PgTypes.bytea.nullable, row.spatiallocation)}::bytea, "rowguid" = ${Fragment.encode(PgTypes.uuid, row.rowguid)}::uuid, "modifieddate" = ${Fragment.encode(PgTypes.timestamp, row.modifieddate)}::timestamp - where "addressid" = ${Fragment.encode(AddressId.dbType, addressid)}""".update().runUnchecked(c) > 0 + where "addressid" = ${Fragment.encode(AddressId.pgType, addressid)}""".update().runUnchecked(c) > 0 } override def upsert(unsaved: AddressRow)(using c: Connection): AddressRow = { sql"""insert into "person"."address"("addressid", "addressline1", "addressline2", "city", "stateprovinceid", "postalcode", "spatiallocation", "rowguid", "modifieddate") - values (${Fragment.encode(AddressId.dbType, unsaved.addressid)}::int4, ${Fragment.encode(PgTypes.text, unsaved.addressline1)}, ${Fragment.encode(PgTypes.text.nullable, unsaved.addressline2)}, ${Fragment.encode(PgTypes.text, unsaved.city)}, ${Fragment.encode(StateprovinceId.dbType, unsaved.stateprovinceid)}::int4, ${Fragment.encode(PgTypes.text, unsaved.postalcode)}, ${Fragment.encode(PgTypes.bytea.nullable, unsaved.spatiallocation)}::bytea, ${Fragment.encode(PgTypes.uuid, unsaved.rowguid)}::uuid, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) + values (${Fragment.encode(AddressId.pgType, unsaved.addressid)}::int4, ${Fragment.encode(PgTypes.text, unsaved.addressline1)}, ${Fragment.encode(PgTypes.text.nullable, unsaved.addressline2)}, ${Fragment.encode(PgTypes.text, unsaved.city)}, ${Fragment.encode(StateprovinceId.pgType, unsaved.stateprovinceid)}::int4, ${Fragment.encode(PgTypes.text, unsaved.postalcode)}, ${Fragment.encode(PgTypes.bytea.nullable, unsaved.spatiallocation)}::bytea, ${Fragment.encode(PgTypes.uuid, unsaved.rowguid)}::uuid, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) on conflict ("addressid") do update set "addressline1" = EXCLUDED."addressline1", diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/address/AddressRow.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/address/AddressRow.scala index 613960568d..e50946fff1 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/address/AddressRow.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/address/AddressRow.scala @@ -84,7 +84,7 @@ case class AddressRow( } object AddressRow { - val `_rowParser`: RowParser[AddressRow] = RowParsers.of(AddressId.dbType, PgTypes.text, PgTypes.text.nullable, PgTypes.text, StateprovinceId.dbType, PgTypes.text, PgTypes.bytea.nullable, PgTypes.uuid, PgTypes.timestamp)(AddressRow.apply)(row => Array[Any](row.addressid, row.addressline1, row.addressline2, row.city, row.stateprovinceid, row.postalcode, row.spatiallocation, row.rowguid, row.modifieddate)) + val `_rowParser`: RowParser[AddressRow] = RowParsers.of(AddressId.pgType, PgTypes.text, PgTypes.text.nullable, PgTypes.text, StateprovinceId.pgType, PgTypes.text, PgTypes.bytea.nullable, PgTypes.uuid, PgTypes.timestamp)(AddressRow.apply)(row => Array[Any](row.addressid, row.addressline1, row.addressline2, row.city, row.stateprovinceid, row.postalcode, row.spatiallocation, row.rowguid, row.modifieddate)) given pgText: PgText[AddressRow] = PgText.from(`_rowParser`.underlying) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/address/AddressRowUnsaved.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/address/AddressRowUnsaved.scala index 6932d29dee..f075cb6a3f 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/address/AddressRowUnsaved.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/address/AddressRowUnsaved.scala @@ -59,5 +59,5 @@ case class AddressRowUnsaved( } object AddressRowUnsaved { - given pgText: PgText[AddressRowUnsaved] = PgText.instance((row, sb) => { PgTypes.text.text.unsafeEncode(row.addressline1, sb); sb.append(PgText.DELIMETER); PgTypes.text.nullable.text.unsafeEncode(row.addressline2, sb); sb.append(PgText.DELIMETER); PgTypes.text.text.unsafeEncode(row.city, sb); sb.append(PgText.DELIMETER); StateprovinceId.dbType.text.unsafeEncode(row.stateprovinceid, sb); sb.append(PgText.DELIMETER); PgTypes.text.text.unsafeEncode(row.postalcode, sb); sb.append(PgText.DELIMETER); PgTypes.bytea.nullable.text.unsafeEncode(row.spatiallocation, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using AddressId.dbType.text).unsafeEncode(row.addressid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.uuid.text).unsafeEncode(row.rowguid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) + given pgText: PgText[AddressRowUnsaved] = PgText.instance((row, sb) => { PgTypes.text.text.unsafeEncode(row.addressline1, sb); sb.append(PgText.DELIMETER); PgTypes.text.nullable.text.unsafeEncode(row.addressline2, sb); sb.append(PgText.DELIMETER); PgTypes.text.text.unsafeEncode(row.city, sb); sb.append(PgText.DELIMETER); StateprovinceId.pgType.text.unsafeEncode(row.stateprovinceid, sb); sb.append(PgText.DELIMETER); PgTypes.text.text.unsafeEncode(row.postalcode, sb); sb.append(PgText.DELIMETER); PgTypes.bytea.nullable.text.unsafeEncode(row.spatiallocation, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using AddressId.pgType.text).unsafeEncode(row.addressid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.uuid.text).unsafeEncode(row.rowguid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeFields.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeFields.scala index ba2998dcb9..2f1a014ae7 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeFields.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeFields.scala @@ -28,7 +28,7 @@ class AddresstypeFields(val `_path`: java.util.List[Path]) extends TupleExpr4[Ad None, Some("int4"), (row, value) => row.copy(addresstypeid = value), - AddresstypeId.dbType + AddresstypeId.pgType ) } @@ -40,7 +40,7 @@ class AddresstypeFields(val `_path`: java.util.List[Path]) extends TupleExpr4[Ad None, Some("varchar"), (row, value) => row.copy(name = value), - Name.dbType + Name.pgType ) } diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeId.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeId.scala index 611f4adb7e..0b2cf1e232 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeId.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeId.scala @@ -17,7 +17,7 @@ case class AddresstypeId(@JsonValue value: Int) extends scala.AnyVal object AddresstypeId { given bijection: Bijection[AddresstypeId, Int] = Bijection.apply[AddresstypeId, Int](_.value)(AddresstypeId.apply) - given dbType: PgType[AddresstypeId] = ScalaDbTypes.PgTypes.int4.bimap(AddresstypeId.apply, _.value) + given pgType: PgType[AddresstypeId] = ScalaDbTypes.PgTypes.int4.bimap(AddresstypeId.apply, _.value) - given dbTypeArray: PgType[Array[AddresstypeId]] = PgTypes.int4ArrayUnboxed.bimap(xs => xs.map(AddresstypeId.apply), xs => xs.map(_.value)) + given pgTypeArray: PgType[Array[AddresstypeId]] = PgTypes.int4ArrayUnboxed.bimap(xs => xs.map(AddresstypeId.apply), xs => xs.map(_.value)) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRepoImpl.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRepoImpl.scala index 510a2cc914..9702c06776 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRepoImpl.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRepoImpl.scala @@ -21,19 +21,19 @@ import dev.typr.foundations.scala.Fragment.sql class AddresstypeRepoImpl extends AddresstypeRepo { override def delete: DeleteBuilder[AddresstypeFields, AddresstypeRow] = DeleteBuilder.of(""""person"."addresstype"""", AddresstypeFields.structure, Dialect.POSTGRESQL) - override def deleteById(addresstypeid: AddresstypeId)(using c: Connection): Boolean = sql"""delete from "person"."addresstype" where "addresstypeid" = ${Fragment.encode(AddresstypeId.dbType, addresstypeid)}""".update().runUnchecked(c) > 0 + override def deleteById(addresstypeid: AddresstypeId)(using c: Connection): Boolean = sql"""delete from "person"."addresstype" where "addresstypeid" = ${Fragment.encode(AddresstypeId.pgType, addresstypeid)}""".update().runUnchecked(c) > 0 override def deleteByIds(addresstypeids: Array[AddresstypeId])(using c: Connection): Int = { sql"""delete from "person"."addresstype" - where "addresstypeid" = ANY(${Fragment.encode(AddresstypeId.dbTypeArray, addresstypeids)})""" + where "addresstypeid" = ANY(${Fragment.encode(AddresstypeId.pgTypeArray, addresstypeids)})""" .update() .runUnchecked(c) } override def insert(unsaved: AddresstypeRow)(using c: Connection): AddresstypeRow = { sql"""insert into "person"."addresstype"("addresstypeid", "name", "rowguid", "modifieddate") - values (${Fragment.encode(AddresstypeId.dbType, unsaved.addresstypeid)}::int4, ${Fragment.encode(Name.dbType, unsaved.name)}::varchar, ${Fragment.encode(PgTypes.uuid, unsaved.rowguid)}::uuid, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) + values (${Fragment.encode(AddresstypeId.pgType, unsaved.addresstypeid)}::int4, ${Fragment.encode(Name.pgType, unsaved.name)}::varchar, ${Fragment.encode(PgTypes.uuid, unsaved.rowguid)}::uuid, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) RETURNING "addresstypeid", "name", "rowguid", "modifieddate" """ .updateReturning(AddresstypeRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -43,10 +43,10 @@ class AddresstypeRepoImpl extends AddresstypeRepo { val columns: ListBuffer[Fragment] = ListBuffer() val values: ListBuffer[Fragment] = ListBuffer() columns.addOne(Fragment.lit(""""name"""")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(Name.dbType, unsaved.name)}::varchar"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(Name.pgType, unsaved.name)}::varchar"): @scala.annotation.nowarn unsaved.addresstypeid.visit( { }, - value => { columns.addOne(Fragment.lit(""""addresstypeid"""")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(AddresstypeId.dbType, value)}::int4"): @scala.annotation.nowarn } + value => { columns.addOne(Fragment.lit(""""addresstypeid"""")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(AddresstypeId.pgType, value)}::int4"): @scala.annotation.nowarn } ); unsaved.rowguid.visit( { }, @@ -87,13 +87,13 @@ class AddresstypeRepoImpl extends AddresstypeRepo { override def selectById(addresstypeid: AddresstypeId)(using c: Connection): Option[AddresstypeRow] = { sql"""select "addresstypeid", "name", "rowguid", "modifieddate" from "person"."addresstype" - where "addresstypeid" = ${Fragment.encode(AddresstypeId.dbType, addresstypeid)}""".query(AddresstypeRow.`_rowParser`.first()).runUnchecked(c) + where "addresstypeid" = ${Fragment.encode(AddresstypeId.pgType, addresstypeid)}""".query(AddresstypeRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(addresstypeids: Array[AddresstypeId])(using c: Connection): List[AddresstypeRow] = { sql"""select "addresstypeid", "name", "rowguid", "modifieddate" from "person"."addresstype" - where "addresstypeid" = ANY(${Fragment.encode(AddresstypeId.dbTypeArray, addresstypeids)})""".query(AddresstypeRow.`_rowParser`.all()).runUnchecked(c) + where "addresstypeid" = ANY(${Fragment.encode(AddresstypeId.pgTypeArray, addresstypeids)})""".query(AddresstypeRow.`_rowParser`.all()).runUnchecked(c) } override def selectByIdsTracked(addresstypeids: Array[AddresstypeId])(using c: Connection): Map[AddresstypeId, AddresstypeRow] = { @@ -107,15 +107,15 @@ class AddresstypeRepoImpl extends AddresstypeRepo { override def update(row: AddresstypeRow)(using c: Connection): Boolean = { val addresstypeid: AddresstypeId = row.addresstypeid return sql"""update "person"."addresstype" - set "name" = ${Fragment.encode(Name.dbType, row.name)}::varchar, + set "name" = ${Fragment.encode(Name.pgType, row.name)}::varchar, "rowguid" = ${Fragment.encode(PgTypes.uuid, row.rowguid)}::uuid, "modifieddate" = ${Fragment.encode(PgTypes.timestamp, row.modifieddate)}::timestamp - where "addresstypeid" = ${Fragment.encode(AddresstypeId.dbType, addresstypeid)}""".update().runUnchecked(c) > 0 + where "addresstypeid" = ${Fragment.encode(AddresstypeId.pgType, addresstypeid)}""".update().runUnchecked(c) > 0 } override def upsert(unsaved: AddresstypeRow)(using c: Connection): AddresstypeRow = { sql"""insert into "person"."addresstype"("addresstypeid", "name", "rowguid", "modifieddate") - values (${Fragment.encode(AddresstypeId.dbType, unsaved.addresstypeid)}::int4, ${Fragment.encode(Name.dbType, unsaved.name)}::varchar, ${Fragment.encode(PgTypes.uuid, unsaved.rowguid)}::uuid, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) + values (${Fragment.encode(AddresstypeId.pgType, unsaved.addresstypeid)}::int4, ${Fragment.encode(Name.pgType, unsaved.name)}::varchar, ${Fragment.encode(PgTypes.uuid, unsaved.rowguid)}::uuid, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) on conflict ("addresstypeid") do update set "name" = EXCLUDED."name", diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRow.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRow.scala index c27a9f5784..d41d71e95d 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRow.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRow.scala @@ -56,7 +56,7 @@ case class AddresstypeRow( } object AddresstypeRow { - val `_rowParser`: RowParser[AddresstypeRow] = RowParsers.of(AddresstypeId.dbType, Name.dbType, PgTypes.uuid, PgTypes.timestamp)(AddresstypeRow.apply)(row => Array[Any](row.addresstypeid, row.name, row.rowguid, row.modifieddate)) + val `_rowParser`: RowParser[AddresstypeRow] = RowParsers.of(AddresstypeId.pgType, Name.pgType, PgTypes.uuid, PgTypes.timestamp)(AddresstypeRow.apply)(row => Array[Any](row.addresstypeid, row.name, row.rowguid, row.modifieddate)) given pgText: PgText[AddresstypeRow] = PgText.from(`_rowParser`.underlying) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRowUnsaved.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRowUnsaved.scala index 21110107b3..94b7c08089 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRowUnsaved.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRowUnsaved.scala @@ -41,5 +41,5 @@ case class AddresstypeRowUnsaved( } object AddresstypeRowUnsaved { - given pgText: PgText[AddresstypeRowUnsaved] = PgText.instance((row, sb) => { Name.dbType.text.unsafeEncode(row.name, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using AddresstypeId.dbType.text).unsafeEncode(row.addresstypeid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.uuid.text).unsafeEncode(row.rowguid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) + given pgText: PgText[AddresstypeRowUnsaved] = PgText.instance((row, sb) => { Name.pgType.text.unsafeEncode(row.name, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using AddresstypeId.pgType.text).unsafeEncode(row.addresstypeid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.uuid.text).unsafeEncode(row.rowguid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityFields.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityFields.scala index da2098fef5..7a527a285b 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityFields.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityFields.scala @@ -27,7 +27,7 @@ class BusinessentityFields(val `_path`: java.util.List[Path]) extends TupleExpr3 None, Some("int4"), (row, value) => row.copy(businessentityid = value), - BusinessentityId.dbType + BusinessentityId.pgType ) } diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityId.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityId.scala index 00ef362917..20b89258dc 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityId.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityId.scala @@ -17,7 +17,7 @@ case class BusinessentityId(@JsonValue value: Int) extends scala.AnyVal object BusinessentityId { given bijection: Bijection[BusinessentityId, Int] = Bijection.apply[BusinessentityId, Int](_.value)(BusinessentityId.apply) - given dbType: PgType[BusinessentityId] = ScalaDbTypes.PgTypes.int4.bimap(BusinessentityId.apply, _.value) + given pgType: PgType[BusinessentityId] = ScalaDbTypes.PgTypes.int4.bimap(BusinessentityId.apply, _.value) - given dbTypeArray: PgType[Array[BusinessentityId]] = PgTypes.int4ArrayUnboxed.bimap(xs => xs.map(BusinessentityId.apply), xs => xs.map(_.value)) + given pgTypeArray: PgType[Array[BusinessentityId]] = PgTypes.int4ArrayUnboxed.bimap(xs => xs.map(BusinessentityId.apply), xs => xs.map(_.value)) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRepoImpl.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRepoImpl.scala index 11d5072676..9f4dc955af 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRepoImpl.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRepoImpl.scala @@ -20,19 +20,19 @@ import dev.typr.foundations.scala.Fragment.sql class BusinessentityRepoImpl extends BusinessentityRepo { override def delete: DeleteBuilder[BusinessentityFields, BusinessentityRow] = DeleteBuilder.of(""""person"."businessentity"""", BusinessentityFields.structure, Dialect.POSTGRESQL) - override def deleteById(businessentityid: BusinessentityId)(using c: Connection): Boolean = sql"""delete from "person"."businessentity" where "businessentityid" = ${Fragment.encode(BusinessentityId.dbType, businessentityid)}""".update().runUnchecked(c) > 0 + override def deleteById(businessentityid: BusinessentityId)(using c: Connection): Boolean = sql"""delete from "person"."businessentity" where "businessentityid" = ${Fragment.encode(BusinessentityId.pgType, businessentityid)}""".update().runUnchecked(c) > 0 override def deleteByIds(businessentityids: Array[BusinessentityId])(using c: Connection): Int = { sql"""delete from "person"."businessentity" - where "businessentityid" = ANY(${Fragment.encode(BusinessentityId.dbTypeArray, businessentityids)})""" + where "businessentityid" = ANY(${Fragment.encode(BusinessentityId.pgTypeArray, businessentityids)})""" .update() .runUnchecked(c) } override def insert(unsaved: BusinessentityRow)(using c: Connection): BusinessentityRow = { sql"""insert into "person"."businessentity"("businessentityid", "rowguid", "modifieddate") - values (${Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid)}::int4, ${Fragment.encode(PgTypes.uuid, unsaved.rowguid)}::uuid, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) + values (${Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid)}::int4, ${Fragment.encode(PgTypes.uuid, unsaved.rowguid)}::uuid, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) RETURNING "businessentityid", "rowguid", "modifieddate" """ .updateReturning(BusinessentityRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -43,7 +43,7 @@ class BusinessentityRepoImpl extends BusinessentityRepo { val values: ListBuffer[Fragment] = ListBuffer() unsaved.businessentityid.visit( { }, - value => { columns.addOne(Fragment.lit(""""businessentityid"""")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(BusinessentityId.dbType, value)}::int4"): @scala.annotation.nowarn } + value => { columns.addOne(Fragment.lit(""""businessentityid"""")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(BusinessentityId.pgType, value)}::int4"): @scala.annotation.nowarn } ); unsaved.rowguid.visit( { }, @@ -86,13 +86,13 @@ class BusinessentityRepoImpl extends BusinessentityRepo { override def selectById(businessentityid: BusinessentityId)(using c: Connection): Option[BusinessentityRow] = { sql"""select "businessentityid", "rowguid", "modifieddate" from "person"."businessentity" - where "businessentityid" = ${Fragment.encode(BusinessentityId.dbType, businessentityid)}""".query(BusinessentityRow.`_rowParser`.first()).runUnchecked(c) + where "businessentityid" = ${Fragment.encode(BusinessentityId.pgType, businessentityid)}""".query(BusinessentityRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(businessentityids: Array[BusinessentityId])(using c: Connection): List[BusinessentityRow] = { sql"""select "businessentityid", "rowguid", "modifieddate" from "person"."businessentity" - where "businessentityid" = ANY(${Fragment.encode(BusinessentityId.dbTypeArray, businessentityids)})""".query(BusinessentityRow.`_rowParser`.all()).runUnchecked(c) + where "businessentityid" = ANY(${Fragment.encode(BusinessentityId.pgTypeArray, businessentityids)})""".query(BusinessentityRow.`_rowParser`.all()).runUnchecked(c) } override def selectByIdsTracked(businessentityids: Array[BusinessentityId])(using c: Connection): Map[BusinessentityId, BusinessentityRow] = { @@ -108,12 +108,12 @@ class BusinessentityRepoImpl extends BusinessentityRepo { return sql"""update "person"."businessentity" set "rowguid" = ${Fragment.encode(PgTypes.uuid, row.rowguid)}::uuid, "modifieddate" = ${Fragment.encode(PgTypes.timestamp, row.modifieddate)}::timestamp - where "businessentityid" = ${Fragment.encode(BusinessentityId.dbType, businessentityid)}""".update().runUnchecked(c) > 0 + where "businessentityid" = ${Fragment.encode(BusinessentityId.pgType, businessentityid)}""".update().runUnchecked(c) > 0 } override def upsert(unsaved: BusinessentityRow)(using c: Connection): BusinessentityRow = { sql"""insert into "person"."businessentity"("businessentityid", "rowguid", "modifieddate") - values (${Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid)}::int4, ${Fragment.encode(PgTypes.uuid, unsaved.rowguid)}::uuid, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) + values (${Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid)}::int4, ${Fragment.encode(PgTypes.uuid, unsaved.rowguid)}::uuid, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) on conflict ("businessentityid") do update set "rowguid" = EXCLUDED."rowguid", diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRow.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRow.scala index 5d7b6ce691..3d6fcb9585 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRow.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRow.scala @@ -44,7 +44,7 @@ case class BusinessentityRow( } object BusinessentityRow { - val `_rowParser`: RowParser[BusinessentityRow] = RowParsers.of(BusinessentityId.dbType, PgTypes.uuid, PgTypes.timestamp)(BusinessentityRow.apply)(row => Array[Any](row.businessentityid, row.rowguid, row.modifieddate)) + val `_rowParser`: RowParser[BusinessentityRow] = RowParsers.of(BusinessentityId.pgType, PgTypes.uuid, PgTypes.timestamp)(BusinessentityRow.apply)(row => Array[Any](row.businessentityid, row.rowguid, row.modifieddate)) given pgText: PgText[BusinessentityRow] = PgText.from(`_rowParser`.underlying) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRowUnsaved.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRowUnsaved.scala index 7d629d8432..c8ae363b4d 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRowUnsaved.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRowUnsaved.scala @@ -31,5 +31,5 @@ case class BusinessentityRowUnsaved( } object BusinessentityRowUnsaved { - given pgText: PgText[BusinessentityRowUnsaved] = PgText.instance((row, sb) => { Defaulted.pgText(using BusinessentityId.dbType.text).unsafeEncode(row.businessentityid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.uuid.text).unsafeEncode(row.rowguid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) + given pgText: PgText[BusinessentityRowUnsaved] = PgText.instance((row, sb) => { Defaulted.pgText(using BusinessentityId.pgType.text).unsafeEncode(row.businessentityid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.uuid.text).unsafeEncode(row.rowguid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressFields.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressFields.scala index ce2a997002..73e04d0083 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressFields.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressFields.scala @@ -38,7 +38,7 @@ class BusinessentityaddressFields(val `_path`: java.util.List[Path]) extends Tup None, Some("int4"), (row, value) => row.copy(businessentityid = value), - BusinessentityId.dbType + BusinessentityId.pgType ) } @@ -50,7 +50,7 @@ class BusinessentityaddressFields(val `_path`: java.util.List[Path]) extends Tup None, Some("int4"), (row, value) => row.copy(addressid = value), - AddressId.dbType + AddressId.pgType ) } @@ -62,7 +62,7 @@ class BusinessentityaddressFields(val `_path`: java.util.List[Path]) extends Tup None, Some("int4"), (row, value) => row.copy(addresstypeid = value), - AddresstypeId.dbType + AddresstypeId.pgType ) } diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressId.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressId.scala index dc73126baf..98b2dfcd6a 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressId.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressId.scala @@ -26,5 +26,5 @@ case class BusinessentityaddressId( } object BusinessentityaddressId { - val `_rowParser`: RowParser[BusinessentityaddressId] = RowParsers.of(BusinessentityId.dbType, AddressId.dbType, AddresstypeId.dbType)(BusinessentityaddressId.apply)(row => Array[Any](row.businessentityid, row.addressid, row.addresstypeid)) + val `_rowParser`: RowParser[BusinessentityaddressId] = RowParsers.of(BusinessentityId.pgType, AddressId.pgType, AddresstypeId.pgType)(BusinessentityaddressId.apply)(row => Array[Any](row.businessentityid, row.addressid, row.addresstypeid)) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRepoImpl.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRepoImpl.scala index b23f680ef5..00fee79656 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRepoImpl.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRepoImpl.scala @@ -23,7 +23,7 @@ import dev.typr.foundations.scala.Fragment.sql class BusinessentityaddressRepoImpl extends BusinessentityaddressRepo { override def delete: DeleteBuilder[BusinessentityaddressFields, BusinessentityaddressRow] = DeleteBuilder.of(""""person"."businessentityaddress"""", BusinessentityaddressFields.structure, Dialect.POSTGRESQL) - override def deleteById(compositeId: BusinessentityaddressId)(using c: Connection): Boolean = sql"""delete from "person"."businessentityaddress" where "businessentityid" = ${Fragment.encode(BusinessentityId.dbType, compositeId.businessentityid)} AND "addressid" = ${Fragment.encode(AddressId.dbType, compositeId.addressid)} AND "addresstypeid" = ${Fragment.encode(AddresstypeId.dbType, compositeId.addresstypeid)}""".update().runUnchecked(c) > 0 + override def deleteById(compositeId: BusinessentityaddressId)(using c: Connection): Boolean = sql"""delete from "person"."businessentityaddress" where "businessentityid" = ${Fragment.encode(BusinessentityId.pgType, compositeId.businessentityid)} AND "addressid" = ${Fragment.encode(AddressId.pgType, compositeId.addressid)} AND "addresstypeid" = ${Fragment.encode(AddresstypeId.pgType, compositeId.addresstypeid)}""".update().runUnchecked(c) > 0 override def deleteByIds(compositeIds: Array[BusinessentityaddressId])(using c: Connection): Int = { val businessentityid: Array[BusinessentityId] = compositeIds.map(_.businessentityid) @@ -32,13 +32,13 @@ class BusinessentityaddressRepoImpl extends BusinessentityaddressRepo { return sql"""delete from "person"."businessentityaddress" where ("businessentityid", "addressid", "addresstypeid") - in (select * from unnest(${Fragment.encode(BusinessentityId.dbTypeArray, businessentityid)}, ${Fragment.encode(AddressId.dbTypeArray, addressid)}, ${Fragment.encode(AddresstypeId.dbTypeArray, addresstypeid)})) + in (select * from unnest(${Fragment.encode(BusinessentityId.pgTypeArray, businessentityid)}, ${Fragment.encode(AddressId.pgTypeArray, addressid)}, ${Fragment.encode(AddresstypeId.pgTypeArray, addresstypeid)})) """.update().runUnchecked(c) } override def insert(unsaved: BusinessentityaddressRow)(using c: Connection): BusinessentityaddressRow = { sql"""insert into "person"."businessentityaddress"("businessentityid", "addressid", "addresstypeid", "rowguid", "modifieddate") - values (${Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid)}::int4, ${Fragment.encode(AddressId.dbType, unsaved.addressid)}::int4, ${Fragment.encode(AddresstypeId.dbType, unsaved.addresstypeid)}::int4, ${Fragment.encode(PgTypes.uuid, unsaved.rowguid)}::uuid, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) + values (${Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid)}::int4, ${Fragment.encode(AddressId.pgType, unsaved.addressid)}::int4, ${Fragment.encode(AddresstypeId.pgType, unsaved.addresstypeid)}::int4, ${Fragment.encode(PgTypes.uuid, unsaved.rowguid)}::uuid, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) RETURNING "businessentityid", "addressid", "addresstypeid", "rowguid", "modifieddate" """ .updateReturning(BusinessentityaddressRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -48,11 +48,11 @@ class BusinessentityaddressRepoImpl extends BusinessentityaddressRepo { val columns: ListBuffer[Fragment] = ListBuffer() val values: ListBuffer[Fragment] = ListBuffer() columns.addOne(Fragment.lit(""""businessentityid"""")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid)}::int4"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid)}::int4"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""addressid"""")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(AddressId.dbType, unsaved.addressid)}::int4"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(AddressId.pgType, unsaved.addressid)}::int4"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""addresstypeid"""")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(AddresstypeId.dbType, unsaved.addresstypeid)}::int4"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(AddresstypeId.pgType, unsaved.addresstypeid)}::int4"): @scala.annotation.nowarn unsaved.rowguid.visit( { }, value => { columns.addOne(Fragment.lit(""""rowguid"""")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(PgTypes.uuid, value)}::uuid"): @scala.annotation.nowarn } @@ -92,7 +92,7 @@ class BusinessentityaddressRepoImpl extends BusinessentityaddressRepo { override def selectById(compositeId: BusinessentityaddressId)(using c: Connection): Option[BusinessentityaddressRow] = { sql"""select "businessentityid", "addressid", "addresstypeid", "rowguid", "modifieddate" from "person"."businessentityaddress" - where "businessentityid" = ${Fragment.encode(BusinessentityId.dbType, compositeId.businessentityid)} AND "addressid" = ${Fragment.encode(AddressId.dbType, compositeId.addressid)} AND "addresstypeid" = ${Fragment.encode(AddresstypeId.dbType, compositeId.addresstypeid)}""".query(BusinessentityaddressRow.`_rowParser`.first()).runUnchecked(c) + where "businessentityid" = ${Fragment.encode(BusinessentityId.pgType, compositeId.businessentityid)} AND "addressid" = ${Fragment.encode(AddressId.pgType, compositeId.addressid)} AND "addresstypeid" = ${Fragment.encode(AddresstypeId.pgType, compositeId.addresstypeid)}""".query(BusinessentityaddressRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(compositeIds: Array[BusinessentityaddressId])(using c: Connection): List[BusinessentityaddressRow] = { @@ -102,7 +102,7 @@ class BusinessentityaddressRepoImpl extends BusinessentityaddressRepo { return sql"""select "businessentityid", "addressid", "addresstypeid", "rowguid", "modifieddate" from "person"."businessentityaddress" where ("businessentityid", "addressid", "addresstypeid") - in (select * from unnest(${Fragment.encode(BusinessentityId.dbTypeArray, businessentityid)}, ${Fragment.encode(AddressId.dbTypeArray, addressid)}, ${Fragment.encode(AddresstypeId.dbTypeArray, addresstypeid)})) + in (select * from unnest(${Fragment.encode(BusinessentityId.pgTypeArray, businessentityid)}, ${Fragment.encode(AddressId.pgTypeArray, addressid)}, ${Fragment.encode(AddresstypeId.pgTypeArray, addresstypeid)})) """.query(BusinessentityaddressRow.`_rowParser`.all()).runUnchecked(c) } @@ -119,12 +119,12 @@ class BusinessentityaddressRepoImpl extends BusinessentityaddressRepo { return sql"""update "person"."businessentityaddress" set "rowguid" = ${Fragment.encode(PgTypes.uuid, row.rowguid)}::uuid, "modifieddate" = ${Fragment.encode(PgTypes.timestamp, row.modifieddate)}::timestamp - where "businessentityid" = ${Fragment.encode(BusinessentityId.dbType, compositeId.businessentityid)} AND "addressid" = ${Fragment.encode(AddressId.dbType, compositeId.addressid)} AND "addresstypeid" = ${Fragment.encode(AddresstypeId.dbType, compositeId.addresstypeid)}""".update().runUnchecked(c) > 0 + where "businessentityid" = ${Fragment.encode(BusinessentityId.pgType, compositeId.businessentityid)} AND "addressid" = ${Fragment.encode(AddressId.pgType, compositeId.addressid)} AND "addresstypeid" = ${Fragment.encode(AddresstypeId.pgType, compositeId.addresstypeid)}""".update().runUnchecked(c) > 0 } override def upsert(unsaved: BusinessentityaddressRow)(using c: Connection): BusinessentityaddressRow = { sql"""insert into "person"."businessentityaddress"("businessentityid", "addressid", "addresstypeid", "rowguid", "modifieddate") - values (${Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid)}::int4, ${Fragment.encode(AddressId.dbType, unsaved.addressid)}::int4, ${Fragment.encode(AddresstypeId.dbType, unsaved.addresstypeid)}::int4, ${Fragment.encode(PgTypes.uuid, unsaved.rowguid)}::uuid, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) + values (${Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid)}::int4, ${Fragment.encode(AddressId.pgType, unsaved.addressid)}::int4, ${Fragment.encode(AddresstypeId.pgType, unsaved.addresstypeid)}::int4, ${Fragment.encode(PgTypes.uuid, unsaved.rowguid)}::uuid, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) on conflict ("businessentityid", "addressid", "addresstypeid") do update set "rowguid" = EXCLUDED."rowguid", diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRow.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRow.scala index e0f9e70c57..b669db94bc 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRow.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRow.scala @@ -68,7 +68,7 @@ case class BusinessentityaddressRow( } object BusinessentityaddressRow { - val `_rowParser`: RowParser[BusinessentityaddressRow] = RowParsers.of(BusinessentityId.dbType, AddressId.dbType, AddresstypeId.dbType, PgTypes.uuid, PgTypes.timestamp)(BusinessentityaddressRow.apply)(row => Array[Any](row.businessentityid, row.addressid, row.addresstypeid, row.rowguid, row.modifieddate)) + val `_rowParser`: RowParser[BusinessentityaddressRow] = RowParsers.of(BusinessentityId.pgType, AddressId.pgType, AddresstypeId.pgType, PgTypes.uuid, PgTypes.timestamp)(BusinessentityaddressRow.apply)(row => Array[Any](row.businessentityid, row.addressid, row.addresstypeid, row.rowguid, row.modifieddate)) def apply( compositeId: BusinessentityaddressId, diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRowUnsaved.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRowUnsaved.scala index 218192232b..6e338faf58 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRowUnsaved.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRowUnsaved.scala @@ -49,5 +49,5 @@ case class BusinessentityaddressRowUnsaved( } object BusinessentityaddressRowUnsaved { - given pgText: PgText[BusinessentityaddressRowUnsaved] = PgText.instance((row, sb) => { BusinessentityId.dbType.text.unsafeEncode(row.businessentityid, sb); sb.append(PgText.DELIMETER); AddressId.dbType.text.unsafeEncode(row.addressid, sb); sb.append(PgText.DELIMETER); AddresstypeId.dbType.text.unsafeEncode(row.addresstypeid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.uuid.text).unsafeEncode(row.rowguid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) + given pgText: PgText[BusinessentityaddressRowUnsaved] = PgText.instance((row, sb) => { BusinessentityId.pgType.text.unsafeEncode(row.businessentityid, sb); sb.append(PgText.DELIMETER); AddressId.pgType.text.unsafeEncode(row.addressid, sb); sb.append(PgText.DELIMETER); AddresstypeId.pgType.text.unsafeEncode(row.addresstypeid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.uuid.text).unsafeEncode(row.rowguid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/countryregion/CountryregionFields.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/countryregion/CountryregionFields.scala index cb7d499475..2737a46559 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/countryregion/CountryregionFields.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/countryregion/CountryregionFields.scala @@ -27,7 +27,7 @@ class CountryregionFields(val `_path`: java.util.List[Path]) extends TupleExpr3[ None, None, (row, value) => row.copy(countryregioncode = value), - CountryregionId.dbType + CountryregionId.pgType ) } @@ -39,7 +39,7 @@ class CountryregionFields(val `_path`: java.util.List[Path]) extends TupleExpr3[ None, Some("varchar"), (row, value) => row.copy(name = value), - Name.dbType + Name.pgType ) } diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/countryregion/CountryregionId.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/countryregion/CountryregionId.scala index 1e216c1295..8a6e4caf9c 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/countryregion/CountryregionId.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/countryregion/CountryregionId.scala @@ -16,7 +16,7 @@ case class CountryregionId(@JsonValue value: String) extends scala.AnyVal object CountryregionId { given bijection: Bijection[CountryregionId, String] = Bijection.apply[CountryregionId, String](_.value)(CountryregionId.apply) - given dbType: PgType[CountryregionId] = PgTypes.text.bimap(CountryregionId.apply, _.value) + given pgType: PgType[CountryregionId] = PgTypes.text.bimap(CountryregionId.apply, _.value) - given dbTypeArray: PgType[Array[CountryregionId]] = PgTypes.textArray.bimap(xs => xs.map(CountryregionId.apply), xs => xs.map(_.value)) + given pgTypeArray: PgType[Array[CountryregionId]] = PgTypes.textArray.bimap(xs => xs.map(CountryregionId.apply), xs => xs.map(_.value)) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRepoImpl.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRepoImpl.scala index 06781e7437..082795f981 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRepoImpl.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRepoImpl.scala @@ -21,19 +21,19 @@ import dev.typr.foundations.scala.Fragment.sql class CountryregionRepoImpl extends CountryregionRepo { override def delete: DeleteBuilder[CountryregionFields, CountryregionRow] = DeleteBuilder.of(""""person"."countryregion"""", CountryregionFields.structure, Dialect.POSTGRESQL) - override def deleteById(countryregioncode: CountryregionId)(using c: Connection): Boolean = sql"""delete from "person"."countryregion" where "countryregioncode" = ${Fragment.encode(CountryregionId.dbType, countryregioncode)}""".update().runUnchecked(c) > 0 + override def deleteById(countryregioncode: CountryregionId)(using c: Connection): Boolean = sql"""delete from "person"."countryregion" where "countryregioncode" = ${Fragment.encode(CountryregionId.pgType, countryregioncode)}""".update().runUnchecked(c) > 0 override def deleteByIds(countryregioncodes: Array[CountryregionId])(using c: Connection): Int = { sql"""delete from "person"."countryregion" - where "countryregioncode" = ANY(${Fragment.encode(CountryregionId.dbTypeArray, countryregioncodes)})""" + where "countryregioncode" = ANY(${Fragment.encode(CountryregionId.pgTypeArray, countryregioncodes)})""" .update() .runUnchecked(c) } override def insert(unsaved: CountryregionRow)(using c: Connection): CountryregionRow = { sql"""insert into "person"."countryregion"("countryregioncode", "name", "modifieddate") - values (${Fragment.encode(CountryregionId.dbType, unsaved.countryregioncode)}, ${Fragment.encode(Name.dbType, unsaved.name)}::varchar, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) + values (${Fragment.encode(CountryregionId.pgType, unsaved.countryregioncode)}, ${Fragment.encode(Name.pgType, unsaved.name)}::varchar, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) RETURNING "countryregioncode", "name", "modifieddate" """ .updateReturning(CountryregionRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -43,9 +43,9 @@ class CountryregionRepoImpl extends CountryregionRepo { val columns: ListBuffer[Fragment] = ListBuffer() val values: ListBuffer[Fragment] = ListBuffer() columns.addOne(Fragment.lit(""""countryregioncode"""")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(CountryregionId.dbType, unsaved.countryregioncode)}"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(CountryregionId.pgType, unsaved.countryregioncode)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""name"""")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(Name.dbType, unsaved.name)}::varchar"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(Name.pgType, unsaved.name)}::varchar"): @scala.annotation.nowarn unsaved.modifieddate.visit( { }, value => { columns.addOne(Fragment.lit(""""modifieddate"""")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(PgTypes.timestamp, value)}::timestamp"): @scala.annotation.nowarn } @@ -81,13 +81,13 @@ class CountryregionRepoImpl extends CountryregionRepo { override def selectById(countryregioncode: CountryregionId)(using c: Connection): Option[CountryregionRow] = { sql"""select "countryregioncode", "name", "modifieddate" from "person"."countryregion" - where "countryregioncode" = ${Fragment.encode(CountryregionId.dbType, countryregioncode)}""".query(CountryregionRow.`_rowParser`.first()).runUnchecked(c) + where "countryregioncode" = ${Fragment.encode(CountryregionId.pgType, countryregioncode)}""".query(CountryregionRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(countryregioncodes: Array[CountryregionId])(using c: Connection): List[CountryregionRow] = { sql"""select "countryregioncode", "name", "modifieddate" from "person"."countryregion" - where "countryregioncode" = ANY(${Fragment.encode(CountryregionId.dbTypeArray, countryregioncodes)})""".query(CountryregionRow.`_rowParser`.all()).runUnchecked(c) + where "countryregioncode" = ANY(${Fragment.encode(CountryregionId.pgTypeArray, countryregioncodes)})""".query(CountryregionRow.`_rowParser`.all()).runUnchecked(c) } override def selectByIdsTracked(countryregioncodes: Array[CountryregionId])(using c: Connection): Map[CountryregionId, CountryregionRow] = { @@ -101,14 +101,14 @@ class CountryregionRepoImpl extends CountryregionRepo { override def update(row: CountryregionRow)(using c: Connection): Boolean = { val countryregioncode: CountryregionId = row.countryregioncode return sql"""update "person"."countryregion" - set "name" = ${Fragment.encode(Name.dbType, row.name)}::varchar, + set "name" = ${Fragment.encode(Name.pgType, row.name)}::varchar, "modifieddate" = ${Fragment.encode(PgTypes.timestamp, row.modifieddate)}::timestamp - where "countryregioncode" = ${Fragment.encode(CountryregionId.dbType, countryregioncode)}""".update().runUnchecked(c) > 0 + where "countryregioncode" = ${Fragment.encode(CountryregionId.pgType, countryregioncode)}""".update().runUnchecked(c) > 0 } override def upsert(unsaved: CountryregionRow)(using c: Connection): CountryregionRow = { sql"""insert into "person"."countryregion"("countryregioncode", "name", "modifieddate") - values (${Fragment.encode(CountryregionId.dbType, unsaved.countryregioncode)}, ${Fragment.encode(Name.dbType, unsaved.name)}::varchar, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) + values (${Fragment.encode(CountryregionId.pgType, unsaved.countryregioncode)}, ${Fragment.encode(Name.pgType, unsaved.name)}::varchar, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) on conflict ("countryregioncode") do update set "name" = EXCLUDED."name", diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRow.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRow.scala index 2547f2bc3b..d20c9362f7 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRow.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRow.scala @@ -38,7 +38,7 @@ case class CountryregionRow( } object CountryregionRow { - val `_rowParser`: RowParser[CountryregionRow] = RowParsers.of(CountryregionId.dbType, Name.dbType, PgTypes.timestamp)(CountryregionRow.apply)(row => Array[Any](row.countryregioncode, row.name, row.modifieddate)) + val `_rowParser`: RowParser[CountryregionRow] = RowParsers.of(CountryregionId.pgType, Name.pgType, PgTypes.timestamp)(CountryregionRow.apply)(row => Array[Any](row.countryregioncode, row.name, row.modifieddate)) given pgText: PgText[CountryregionRow] = PgText.from(`_rowParser`.underlying) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRowUnsaved.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRowUnsaved.scala index 43295f688c..760faac8a3 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRowUnsaved.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRowUnsaved.scala @@ -25,5 +25,5 @@ case class CountryregionRowUnsaved( } object CountryregionRowUnsaved { - given pgText: PgText[CountryregionRowUnsaved] = PgText.instance((row, sb) => { CountryregionId.dbType.text.unsafeEncode(row.countryregioncode, sb); sb.append(PgText.DELIMETER); Name.dbType.text.unsafeEncode(row.name, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) + given pgText: PgText[CountryregionRowUnsaved] = PgText.instance((row, sb) => { CountryregionId.pgType.text.unsafeEncode(row.countryregioncode, sb); sb.append(PgText.DELIMETER); Name.pgType.text.unsafeEncode(row.name, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressFields.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressFields.scala index 0c927a1992..4d5428155c 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressFields.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressFields.scala @@ -34,7 +34,7 @@ class EmailaddressFields(val `_path`: java.util.List[Path]) extends TupleExpr5[B None, Some("int4"), (row, value) => row.copy(businessentityid = value), - BusinessentityId.dbType + BusinessentityId.pgType ) } diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressId.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressId.scala index 209f591fa6..0b818ed8e7 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressId.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressId.scala @@ -22,5 +22,5 @@ case class EmailaddressId( } object EmailaddressId { - val `_rowParser`: RowParser[EmailaddressId] = RowParsers.of(BusinessentityId.dbType, ScalaDbTypes.PgTypes.int4)(EmailaddressId.apply)(row => Array[Any](row.businessentityid, row.emailaddressid)) + val `_rowParser`: RowParser[EmailaddressId] = RowParsers.of(BusinessentityId.pgType, ScalaDbTypes.PgTypes.int4)(EmailaddressId.apply)(row => Array[Any](row.businessentityid, row.emailaddressid)) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRepoImpl.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRepoImpl.scala index 339ef1176f..bcc74fcc71 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRepoImpl.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRepoImpl.scala @@ -23,7 +23,7 @@ import dev.typr.foundations.scala.Fragment.sql class EmailaddressRepoImpl extends EmailaddressRepo { override def delete: DeleteBuilder[EmailaddressFields, EmailaddressRow] = DeleteBuilder.of(""""person"."emailaddress"""", EmailaddressFields.structure, Dialect.POSTGRESQL) - override def deleteById(compositeId: EmailaddressId)(using c: Connection): Boolean = sql"""delete from "person"."emailaddress" where "businessentityid" = ${Fragment.encode(BusinessentityId.dbType, compositeId.businessentityid)} AND "emailaddressid" = ${Fragment.encode(ScalaDbTypes.PgTypes.int4, compositeId.emailaddressid)}""".update().runUnchecked(c) > 0 + override def deleteById(compositeId: EmailaddressId)(using c: Connection): Boolean = sql"""delete from "person"."emailaddress" where "businessentityid" = ${Fragment.encode(BusinessentityId.pgType, compositeId.businessentityid)} AND "emailaddressid" = ${Fragment.encode(ScalaDbTypes.PgTypes.int4, compositeId.emailaddressid)}""".update().runUnchecked(c) > 0 override def deleteByIds(compositeIds: Array[EmailaddressId])(using c: Connection): Int = { val businessentityid: Array[BusinessentityId] = compositeIds.map(_.businessentityid) @@ -31,13 +31,13 @@ class EmailaddressRepoImpl extends EmailaddressRepo { return sql"""delete from "person"."emailaddress" where ("businessentityid", "emailaddressid") - in (select * from unnest(${Fragment.encode(BusinessentityId.dbTypeArray, businessentityid)}, ${Fragment.encode(PgTypes.int4ArrayUnboxed, emailaddressid)})) + in (select * from unnest(${Fragment.encode(BusinessentityId.pgTypeArray, businessentityid)}, ${Fragment.encode(PgTypes.int4ArrayUnboxed, emailaddressid)})) """.update().runUnchecked(c) } override def insert(unsaved: EmailaddressRow)(using c: Connection): EmailaddressRow = { sql"""insert into "person"."emailaddress"("businessentityid", "emailaddressid", "emailaddress", "rowguid", "modifieddate") - values (${Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid)}::int4, ${Fragment.encode(ScalaDbTypes.PgTypes.int4, unsaved.emailaddressid)}::int4, ${Fragment.encode(PgTypes.text.nullable, unsaved.emailaddress)}, ${Fragment.encode(PgTypes.uuid, unsaved.rowguid)}::uuid, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) + values (${Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid)}::int4, ${Fragment.encode(ScalaDbTypes.PgTypes.int4, unsaved.emailaddressid)}::int4, ${Fragment.encode(PgTypes.text.nullable, unsaved.emailaddress)}, ${Fragment.encode(PgTypes.uuid, unsaved.rowguid)}::uuid, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) RETURNING "businessentityid", "emailaddressid", "emailaddress", "rowguid", "modifieddate" """ .updateReturning(EmailaddressRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -47,7 +47,7 @@ class EmailaddressRepoImpl extends EmailaddressRepo { val columns: ListBuffer[Fragment] = ListBuffer() val values: ListBuffer[Fragment] = ListBuffer() columns.addOne(Fragment.lit(""""businessentityid"""")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid)}::int4"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid)}::int4"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""emailaddress"""")): @scala.annotation.nowarn values.addOne(sql"${Fragment.encode(PgTypes.text.nullable, unsaved.emailaddress)}"): @scala.annotation.nowarn unsaved.emailaddressid.visit( @@ -93,7 +93,7 @@ class EmailaddressRepoImpl extends EmailaddressRepo { override def selectById(compositeId: EmailaddressId)(using c: Connection): Option[EmailaddressRow] = { sql"""select "businessentityid", "emailaddressid", "emailaddress", "rowguid", "modifieddate" from "person"."emailaddress" - where "businessentityid" = ${Fragment.encode(BusinessentityId.dbType, compositeId.businessentityid)} AND "emailaddressid" = ${Fragment.encode(ScalaDbTypes.PgTypes.int4, compositeId.emailaddressid)}""".query(EmailaddressRow.`_rowParser`.first()).runUnchecked(c) + where "businessentityid" = ${Fragment.encode(BusinessentityId.pgType, compositeId.businessentityid)} AND "emailaddressid" = ${Fragment.encode(ScalaDbTypes.PgTypes.int4, compositeId.emailaddressid)}""".query(EmailaddressRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(compositeIds: Array[EmailaddressId])(using c: Connection): List[EmailaddressRow] = { @@ -102,7 +102,7 @@ class EmailaddressRepoImpl extends EmailaddressRepo { return sql"""select "businessentityid", "emailaddressid", "emailaddress", "rowguid", "modifieddate" from "person"."emailaddress" where ("businessentityid", "emailaddressid") - in (select * from unnest(${Fragment.encode(BusinessentityId.dbTypeArray, businessentityid)}, ${Fragment.encode(PgTypes.int4ArrayUnboxed, emailaddressid)})) + in (select * from unnest(${Fragment.encode(BusinessentityId.pgTypeArray, businessentityid)}, ${Fragment.encode(PgTypes.int4ArrayUnboxed, emailaddressid)})) """.query(EmailaddressRow.`_rowParser`.all()).runUnchecked(c) } @@ -120,12 +120,12 @@ class EmailaddressRepoImpl extends EmailaddressRepo { set "emailaddress" = ${Fragment.encode(PgTypes.text.nullable, row.emailaddress)}, "rowguid" = ${Fragment.encode(PgTypes.uuid, row.rowguid)}::uuid, "modifieddate" = ${Fragment.encode(PgTypes.timestamp, row.modifieddate)}::timestamp - where "businessentityid" = ${Fragment.encode(BusinessentityId.dbType, compositeId.businessentityid)} AND "emailaddressid" = ${Fragment.encode(ScalaDbTypes.PgTypes.int4, compositeId.emailaddressid)}""".update().runUnchecked(c) > 0 + where "businessentityid" = ${Fragment.encode(BusinessentityId.pgType, compositeId.businessentityid)} AND "emailaddressid" = ${Fragment.encode(ScalaDbTypes.PgTypes.int4, compositeId.emailaddressid)}""".update().runUnchecked(c) > 0 } override def upsert(unsaved: EmailaddressRow)(using c: Connection): EmailaddressRow = { sql"""insert into "person"."emailaddress"("businessentityid", "emailaddressid", "emailaddress", "rowguid", "modifieddate") - values (${Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid)}::int4, ${Fragment.encode(ScalaDbTypes.PgTypes.int4, unsaved.emailaddressid)}::int4, ${Fragment.encode(PgTypes.text.nullable, unsaved.emailaddress)}, ${Fragment.encode(PgTypes.uuid, unsaved.rowguid)}::uuid, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) + values (${Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid)}::int4, ${Fragment.encode(ScalaDbTypes.PgTypes.int4, unsaved.emailaddressid)}::int4, ${Fragment.encode(PgTypes.text.nullable, unsaved.emailaddress)}, ${Fragment.encode(PgTypes.uuid, unsaved.rowguid)}::uuid, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) on conflict ("businessentityid", "emailaddressid") do update set "emailaddress" = EXCLUDED."emailaddress", diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRow.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRow.scala index f855aa4cf6..0b21f91f93 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRow.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRow.scala @@ -67,7 +67,7 @@ case class EmailaddressRow( } object EmailaddressRow { - val `_rowParser`: RowParser[EmailaddressRow] = RowParsers.of(BusinessentityId.dbType, ScalaDbTypes.PgTypes.int4, PgTypes.text.nullable, PgTypes.uuid, PgTypes.timestamp)(EmailaddressRow.apply)(row => Array[Any](row.businessentityid, row.emailaddressid, row.emailaddress, row.rowguid, row.modifieddate)) + val `_rowParser`: RowParser[EmailaddressRow] = RowParsers.of(BusinessentityId.pgType, ScalaDbTypes.PgTypes.int4, PgTypes.text.nullable, PgTypes.uuid, PgTypes.timestamp)(EmailaddressRow.apply)(row => Array[Any](row.businessentityid, row.emailaddressid, row.emailaddress, row.rowguid, row.modifieddate)) def apply( compositeId: EmailaddressId, diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRowUnsaved.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRowUnsaved.scala index 255cf19fbc..3389cddd54 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRowUnsaved.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRowUnsaved.scala @@ -48,5 +48,5 @@ case class EmailaddressRowUnsaved( } object EmailaddressRowUnsaved { - given pgText: PgText[EmailaddressRowUnsaved] = PgText.instance((row, sb) => { BusinessentityId.dbType.text.unsafeEncode(row.businessentityid, sb); sb.append(PgText.DELIMETER); PgTypes.text.nullable.text.unsafeEncode(row.emailaddress, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using ScalaDbTypes.PgTypes.int4.text).unsafeEncode(row.emailaddressid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.uuid.text).unsafeEncode(row.rowguid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) + given pgText: PgText[EmailaddressRowUnsaved] = PgText.instance((row, sb) => { BusinessentityId.pgType.text.unsafeEncode(row.businessentityid, sb); sb.append(PgText.DELIMETER); PgTypes.text.nullable.text.unsafeEncode(row.emailaddress, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using ScalaDbTypes.PgTypes.int4.text).unsafeEncode(row.emailaddressid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.uuid.text).unsafeEncode(row.rowguid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/password/PasswordFields.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/password/PasswordFields.scala index f69b908a5e..69eb32252c 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/password/PasswordFields.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/password/PasswordFields.scala @@ -31,7 +31,7 @@ class PasswordFields(val `_path`: java.util.List[Path]) extends TupleExpr5[Busin None, Some("int4"), (row, value) => row.copy(businessentityid = value), - BusinessentityId.dbType + BusinessentityId.pgType ) } diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/password/PasswordRepoImpl.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/password/PasswordRepoImpl.scala index 18ea3b5c92..87db5c1479 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/password/PasswordRepoImpl.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/password/PasswordRepoImpl.scala @@ -21,19 +21,19 @@ import dev.typr.foundations.scala.Fragment.sql class PasswordRepoImpl extends PasswordRepo { override def delete: DeleteBuilder[PasswordFields, PasswordRow] = DeleteBuilder.of(""""person"."password"""", PasswordFields.structure, Dialect.POSTGRESQL) - override def deleteById(businessentityid: BusinessentityId)(using c: Connection): Boolean = sql"""delete from "person"."password" where "businessentityid" = ${Fragment.encode(BusinessentityId.dbType, businessentityid)}""".update().runUnchecked(c) > 0 + override def deleteById(businessentityid: BusinessentityId)(using c: Connection): Boolean = sql"""delete from "person"."password" where "businessentityid" = ${Fragment.encode(BusinessentityId.pgType, businessentityid)}""".update().runUnchecked(c) > 0 override def deleteByIds(businessentityids: Array[BusinessentityId])(using c: Connection): Int = { sql"""delete from "person"."password" - where "businessentityid" = ANY(${Fragment.encode(BusinessentityId.dbTypeArray, businessentityids)})""" + where "businessentityid" = ANY(${Fragment.encode(BusinessentityId.pgTypeArray, businessentityids)})""" .update() .runUnchecked(c) } override def insert(unsaved: PasswordRow)(using c: Connection): PasswordRow = { sql"""insert into "person"."password"("businessentityid", "passwordhash", "passwordsalt", "rowguid", "modifieddate") - values (${Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid)}::int4, ${Fragment.encode(PgTypes.text, unsaved.passwordhash)}, ${Fragment.encode(PgTypes.text, unsaved.passwordsalt)}, ${Fragment.encode(PgTypes.uuid, unsaved.rowguid)}::uuid, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) + values (${Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid)}::int4, ${Fragment.encode(PgTypes.text, unsaved.passwordhash)}, ${Fragment.encode(PgTypes.text, unsaved.passwordsalt)}, ${Fragment.encode(PgTypes.uuid, unsaved.rowguid)}::uuid, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) RETURNING "businessentityid", "passwordhash", "passwordsalt", "rowguid", "modifieddate" """ .updateReturning(PasswordRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -43,7 +43,7 @@ class PasswordRepoImpl extends PasswordRepo { val columns: ListBuffer[Fragment] = ListBuffer() val values: ListBuffer[Fragment] = ListBuffer() columns.addOne(Fragment.lit(""""businessentityid"""")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid)}::int4"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid)}::int4"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""passwordhash"""")): @scala.annotation.nowarn values.addOne(sql"${Fragment.encode(PgTypes.text, unsaved.passwordhash)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""passwordsalt"""")): @scala.annotation.nowarn @@ -87,13 +87,13 @@ class PasswordRepoImpl extends PasswordRepo { override def selectById(businessentityid: BusinessentityId)(using c: Connection): Option[PasswordRow] = { sql"""select "businessentityid", "passwordhash", "passwordsalt", "rowguid", "modifieddate" from "person"."password" - where "businessentityid" = ${Fragment.encode(BusinessentityId.dbType, businessentityid)}""".query(PasswordRow.`_rowParser`.first()).runUnchecked(c) + where "businessentityid" = ${Fragment.encode(BusinessentityId.pgType, businessentityid)}""".query(PasswordRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(businessentityids: Array[BusinessentityId])(using c: Connection): List[PasswordRow] = { sql"""select "businessentityid", "passwordhash", "passwordsalt", "rowguid", "modifieddate" from "person"."password" - where "businessentityid" = ANY(${Fragment.encode(BusinessentityId.dbTypeArray, businessentityids)})""".query(PasswordRow.`_rowParser`.all()).runUnchecked(c) + where "businessentityid" = ANY(${Fragment.encode(BusinessentityId.pgTypeArray, businessentityids)})""".query(PasswordRow.`_rowParser`.all()).runUnchecked(c) } override def selectByIdsTracked(businessentityids: Array[BusinessentityId])(using c: Connection): Map[BusinessentityId, PasswordRow] = { @@ -111,12 +111,12 @@ class PasswordRepoImpl extends PasswordRepo { "passwordsalt" = ${Fragment.encode(PgTypes.text, row.passwordsalt)}, "rowguid" = ${Fragment.encode(PgTypes.uuid, row.rowguid)}::uuid, "modifieddate" = ${Fragment.encode(PgTypes.timestamp, row.modifieddate)}::timestamp - where "businessentityid" = ${Fragment.encode(BusinessentityId.dbType, businessentityid)}""".update().runUnchecked(c) > 0 + where "businessentityid" = ${Fragment.encode(BusinessentityId.pgType, businessentityid)}""".update().runUnchecked(c) > 0 } override def upsert(unsaved: PasswordRow)(using c: Connection): PasswordRow = { sql"""insert into "person"."password"("businessentityid", "passwordhash", "passwordsalt", "rowguid", "modifieddate") - values (${Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid)}::int4, ${Fragment.encode(PgTypes.text, unsaved.passwordhash)}, ${Fragment.encode(PgTypes.text, unsaved.passwordsalt)}, ${Fragment.encode(PgTypes.uuid, unsaved.rowguid)}::uuid, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) + values (${Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid)}::int4, ${Fragment.encode(PgTypes.text, unsaved.passwordhash)}, ${Fragment.encode(PgTypes.text, unsaved.passwordsalt)}, ${Fragment.encode(PgTypes.uuid, unsaved.rowguid)}::uuid, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) on conflict ("businessentityid") do update set "passwordhash" = EXCLUDED."passwordhash", diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/password/PasswordRow.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/password/PasswordRow.scala index e38868c985..f157f201e0 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/password/PasswordRow.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/password/PasswordRow.scala @@ -58,7 +58,7 @@ case class PasswordRow( } object PasswordRow { - val `_rowParser`: RowParser[PasswordRow] = RowParsers.of(BusinessentityId.dbType, PgTypes.text, PgTypes.text, PgTypes.uuid, PgTypes.timestamp)(PasswordRow.apply)(row => Array[Any](row.businessentityid, row.passwordhash, row.passwordsalt, row.rowguid, row.modifieddate)) + val `_rowParser`: RowParser[PasswordRow] = RowParsers.of(BusinessentityId.pgType, PgTypes.text, PgTypes.text, PgTypes.uuid, PgTypes.timestamp)(PasswordRow.apply)(row => Array[Any](row.businessentityid, row.passwordhash, row.passwordsalt, row.rowguid, row.modifieddate)) given pgText: PgText[PasswordRow] = PgText.from(`_rowParser`.underlying) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/password/PasswordRowUnsaved.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/password/PasswordRowUnsaved.scala index 5b10916697..a41376b948 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/password/PasswordRowUnsaved.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/password/PasswordRowUnsaved.scala @@ -41,5 +41,5 @@ case class PasswordRowUnsaved( } object PasswordRowUnsaved { - given pgText: PgText[PasswordRowUnsaved] = PgText.instance((row, sb) => { BusinessentityId.dbType.text.unsafeEncode(row.businessentityid, sb); sb.append(PgText.DELIMETER); PgTypes.text.text.unsafeEncode(row.passwordhash, sb); sb.append(PgText.DELIMETER); PgTypes.text.text.unsafeEncode(row.passwordsalt, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.uuid.text).unsafeEncode(row.rowguid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) + given pgText: PgText[PasswordRowUnsaved] = PgText.instance((row, sb) => { BusinessentityId.pgType.text.unsafeEncode(row.businessentityid, sb); sb.append(PgText.DELIMETER); PgTypes.text.text.unsafeEncode(row.passwordhash, sb); sb.append(PgText.DELIMETER); PgTypes.text.text.unsafeEncode(row.passwordsalt, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.uuid.text).unsafeEncode(row.rowguid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/person/PersonFields.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/person/PersonFields.scala index b555af58d4..d47b0d7381 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/person/PersonFields.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/person/PersonFields.scala @@ -8,9 +8,10 @@ package adventureworks.person.person import adventureworks.person.businessentity.BusinessentityFields import adventureworks.person.businessentity.BusinessentityId import adventureworks.person.businessentity.BusinessentityRow -import adventureworks.public.Name import adventureworks.public.NameStyle import adventureworks.userdefined.FirstName +import adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import dev.typr.foundations.PgTypes import dev.typr.foundations.RowParser import dev.typr.foundations.data.Xml @@ -28,7 +29,7 @@ import dev.typr.foundations.scala.TupleExpr13 import java.time.LocalDateTime import java.util.UUID -class PersonFields(val `_path`: java.util.List[Path]) extends TupleExpr13[BusinessentityId, String, NameStyle, /* max 8 chars */ String, /* user-picked */ FirstName, Name, Name, /* max 10 chars */ String, Int, Xml, Xml, UUID, LocalDateTime] with RelationStructure[PersonFields, PersonRow] with FieldsBase[PersonRow] { +class PersonFields(val `_path`: java.util.List[Path]) extends TupleExpr13[BusinessentityId, String, NameStyle, /* max 8 chars */ String, /* user-picked */ FirstName, /* user-picked */ MiddleName, /* user-picked */ LastName, /* max 10 chars */ String, Int, Xml, Xml, UUID, LocalDateTime] with RelationStructure[PersonFields, PersonRow] with FieldsBase[PersonRow] { def businessentityid: IdField[BusinessentityId, PersonRow] = { new IdField[BusinessentityId, PersonRow]( _path, @@ -37,7 +38,7 @@ class PersonFields(val `_path`: java.util.List[Path]) extends TupleExpr13[Busine None, Some("int4"), (row, value) => row.copy(businessentityid = value), - BusinessentityId.dbType + BusinessentityId.pgType ) } @@ -61,7 +62,7 @@ class PersonFields(val `_path`: java.util.List[Path]) extends TupleExpr13[Busine None, Some("bool"), (row, value) => row.copy(namestyle = value), - NameStyle.dbType + NameStyle.pgType ) } @@ -85,31 +86,31 @@ class PersonFields(val `_path`: java.util.List[Path]) extends TupleExpr13[Busine None, Some("varchar"), (row, value) => row.copy(firstname = value), - FirstName.dbType + FirstName.pgType ) } - def middlename: OptField[Name, PersonRow] = { - new OptField[Name, PersonRow]( + def middlename: OptField[/* user-picked */ MiddleName, PersonRow] = { + new OptField[/* user-picked */ MiddleName, PersonRow]( _path, "middlename", _.middlename, None, Some("varchar"), (row, value) => row.copy(middlename = value), - Name.dbType + MiddleName.pgType ) } - def lastname: Field[Name, PersonRow] = { - new Field[Name, PersonRow]( + def lastname: Field[/* user-picked */ LastName, PersonRow] = { + new Field[/* user-picked */ LastName, PersonRow]( _path, "lastname", _.lastname, None, Some("varchar"), (row, value) => row.copy(lastname = value), - Name.dbType + LastName.pgType ) } @@ -203,9 +204,9 @@ class PersonFields(val `_path`: java.util.List[Path]) extends TupleExpr13[Busine override def `_5`: SqlExpr[/* user-picked */ FirstName] = firstname - override def `_6`: SqlExpr[Name] = middlename + override def `_6`: SqlExpr[/* user-picked */ MiddleName] = middlename - override def `_7`: SqlExpr[Name] = lastname + override def `_7`: SqlExpr[/* user-picked */ LastName] = lastname override def `_8`: SqlExpr[/* max 10 chars */ String] = suffix diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/person/PersonRepoImpl.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/person/PersonRepoImpl.scala index 2ec44827a4..9f98ebf2bf 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/person/PersonRepoImpl.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/person/PersonRepoImpl.scala @@ -6,9 +6,10 @@ package adventureworks.person.person import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Name import adventureworks.public.NameStyle import adventureworks.userdefined.FirstName +import adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import dev.typr.foundations.PgTypes import dev.typr.foundations.scala.DbTypeOps import dev.typr.foundations.scala.DeleteBuilder @@ -26,19 +27,19 @@ import dev.typr.foundations.scala.Fragment.sql class PersonRepoImpl extends PersonRepo { override def delete: DeleteBuilder[PersonFields, PersonRow] = DeleteBuilder.of(""""person"."person"""", PersonFields.structure, Dialect.POSTGRESQL) - override def deleteById(businessentityid: BusinessentityId)(using c: Connection): Boolean = sql"""delete from "person"."person" where "businessentityid" = ${Fragment.encode(BusinessentityId.dbType, businessentityid)}""".update().runUnchecked(c) > 0 + override def deleteById(businessentityid: BusinessentityId)(using c: Connection): Boolean = sql"""delete from "person"."person" where "businessentityid" = ${Fragment.encode(BusinessentityId.pgType, businessentityid)}""".update().runUnchecked(c) > 0 override def deleteByIds(businessentityids: Array[BusinessentityId])(using c: Connection): Int = { sql"""delete from "person"."person" - where "businessentityid" = ANY(${Fragment.encode(BusinessentityId.dbTypeArray, businessentityids)})""" + where "businessentityid" = ANY(${Fragment.encode(BusinessentityId.pgTypeArray, businessentityids)})""" .update() .runUnchecked(c) } override def insert(unsaved: PersonRow)(using c: Connection): PersonRow = { sql"""insert into "person"."person"("businessentityid", "persontype", "namestyle", "title", "firstname", "middlename", "lastname", "suffix", "emailpromotion", "additionalcontactinfo", "demographics", "rowguid", "modifieddate") - values (${Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid)}::int4, ${Fragment.encode(PgTypes.bpchar, unsaved.persontype)}::bpchar, ${Fragment.encode(NameStyle.dbType, unsaved.namestyle)}::bool, ${Fragment.encode(PgTypes.text.nullable, unsaved.title)}, ${Fragment.encode(FirstName.dbType, unsaved.firstname)}::varchar, ${Fragment.encode(Name.dbType.nullable, unsaved.middlename)}::varchar, ${Fragment.encode(Name.dbType, unsaved.lastname)}::varchar, ${Fragment.encode(PgTypes.text.nullable, unsaved.suffix)}, ${Fragment.encode(ScalaDbTypes.PgTypes.int4, unsaved.emailpromotion)}::int4, ${Fragment.encode(PgTypes.xml.nullable, unsaved.additionalcontactinfo)}::xml, ${Fragment.encode(PgTypes.xml.nullable, unsaved.demographics)}::xml, ${Fragment.encode(PgTypes.uuid, unsaved.rowguid)}::uuid, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) + values (${Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid)}::int4, ${Fragment.encode(PgTypes.bpchar, unsaved.persontype)}::bpchar, ${Fragment.encode(NameStyle.pgType, unsaved.namestyle)}::bool, ${Fragment.encode(PgTypes.text.nullable, unsaved.title)}, ${Fragment.encode(FirstName.pgType, unsaved.firstname)}::varchar, ${Fragment.encode(MiddleName.pgType.nullable, unsaved.middlename)}::varchar, ${Fragment.encode(LastName.pgType, unsaved.lastname)}::varchar, ${Fragment.encode(PgTypes.text.nullable, unsaved.suffix)}, ${Fragment.encode(ScalaDbTypes.PgTypes.int4, unsaved.emailpromotion)}::int4, ${Fragment.encode(PgTypes.xml.nullable, unsaved.additionalcontactinfo)}::xml, ${Fragment.encode(PgTypes.xml.nullable, unsaved.demographics)}::xml, ${Fragment.encode(PgTypes.uuid, unsaved.rowguid)}::uuid, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) RETURNING "businessentityid", "persontype", "namestyle", "title", "firstname", "middlename", "lastname", "suffix", "emailpromotion", "additionalcontactinfo", "demographics", "rowguid", "modifieddate" """ .updateReturning(PersonRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -48,17 +49,17 @@ class PersonRepoImpl extends PersonRepo { val columns: ListBuffer[Fragment] = ListBuffer() val values: ListBuffer[Fragment] = ListBuffer() columns.addOne(Fragment.lit(""""businessentityid"""")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid)}::int4"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid)}::int4"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""persontype"""")): @scala.annotation.nowarn values.addOne(sql"${Fragment.encode(PgTypes.bpchar, unsaved.persontype)}::bpchar"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""title"""")): @scala.annotation.nowarn values.addOne(sql"${Fragment.encode(PgTypes.text.nullable, unsaved.title)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""firstname"""")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(FirstName.dbType, unsaved.firstname)}::varchar"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(FirstName.pgType, unsaved.firstname)}::varchar"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""middlename"""")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(Name.dbType.nullable, unsaved.middlename)}::varchar"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(MiddleName.pgType.nullable, unsaved.middlename)}::varchar"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""lastname"""")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(Name.dbType, unsaved.lastname)}::varchar"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(LastName.pgType, unsaved.lastname)}::varchar"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""suffix"""")): @scala.annotation.nowarn values.addOne(sql"${Fragment.encode(PgTypes.text.nullable, unsaved.suffix)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""additionalcontactinfo"""")): @scala.annotation.nowarn @@ -67,7 +68,7 @@ class PersonRepoImpl extends PersonRepo { values.addOne(sql"${Fragment.encode(PgTypes.xml.nullable, unsaved.demographics)}::xml"): @scala.annotation.nowarn unsaved.namestyle.visit( { }, - value => { columns.addOne(Fragment.lit(""""namestyle"""")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(NameStyle.dbType, value)}::bool"): @scala.annotation.nowarn } + value => { columns.addOne(Fragment.lit(""""namestyle"""")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(NameStyle.pgType, value)}::bool"): @scala.annotation.nowarn } ); unsaved.emailpromotion.visit( { }, @@ -112,13 +113,13 @@ class PersonRepoImpl extends PersonRepo { override def selectById(businessentityid: BusinessentityId)(using c: Connection): Option[PersonRow] = { sql"""select "businessentityid", "persontype", "namestyle", "title", "firstname", "middlename", "lastname", "suffix", "emailpromotion", "additionalcontactinfo", "demographics", "rowguid", "modifieddate" from "person"."person" - where "businessentityid" = ${Fragment.encode(BusinessentityId.dbType, businessentityid)}""".query(PersonRow.`_rowParser`.first()).runUnchecked(c) + where "businessentityid" = ${Fragment.encode(BusinessentityId.pgType, businessentityid)}""".query(PersonRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(businessentityids: Array[BusinessentityId])(using c: Connection): List[PersonRow] = { sql"""select "businessentityid", "persontype", "namestyle", "title", "firstname", "middlename", "lastname", "suffix", "emailpromotion", "additionalcontactinfo", "demographics", "rowguid", "modifieddate" from "person"."person" - where "businessentityid" = ANY(${Fragment.encode(BusinessentityId.dbTypeArray, businessentityids)})""".query(PersonRow.`_rowParser`.all()).runUnchecked(c) + where "businessentityid" = ANY(${Fragment.encode(BusinessentityId.pgTypeArray, businessentityids)})""".query(PersonRow.`_rowParser`.all()).runUnchecked(c) } override def selectByIdsTracked(businessentityids: Array[BusinessentityId])(using c: Connection): Map[BusinessentityId, PersonRow] = { @@ -133,23 +134,23 @@ class PersonRepoImpl extends PersonRepo { val businessentityid: BusinessentityId = row.businessentityid return sql"""update "person"."person" set "persontype" = ${Fragment.encode(PgTypes.bpchar, row.persontype)}::bpchar, - "namestyle" = ${Fragment.encode(NameStyle.dbType, row.namestyle)}::bool, + "namestyle" = ${Fragment.encode(NameStyle.pgType, row.namestyle)}::bool, "title" = ${Fragment.encode(PgTypes.text.nullable, row.title)}, - "firstname" = ${Fragment.encode(FirstName.dbType, row.firstname)}::varchar, - "middlename" = ${Fragment.encode(Name.dbType.nullable, row.middlename)}::varchar, - "lastname" = ${Fragment.encode(Name.dbType, row.lastname)}::varchar, + "firstname" = ${Fragment.encode(FirstName.pgType, row.firstname)}::varchar, + "middlename" = ${Fragment.encode(MiddleName.pgType.nullable, row.middlename)}::varchar, + "lastname" = ${Fragment.encode(LastName.pgType, row.lastname)}::varchar, "suffix" = ${Fragment.encode(PgTypes.text.nullable, row.suffix)}, "emailpromotion" = ${Fragment.encode(ScalaDbTypes.PgTypes.int4, row.emailpromotion)}::int4, "additionalcontactinfo" = ${Fragment.encode(PgTypes.xml.nullable, row.additionalcontactinfo)}::xml, "demographics" = ${Fragment.encode(PgTypes.xml.nullable, row.demographics)}::xml, "rowguid" = ${Fragment.encode(PgTypes.uuid, row.rowguid)}::uuid, "modifieddate" = ${Fragment.encode(PgTypes.timestamp, row.modifieddate)}::timestamp - where "businessentityid" = ${Fragment.encode(BusinessentityId.dbType, businessentityid)}""".update().runUnchecked(c) > 0 + where "businessentityid" = ${Fragment.encode(BusinessentityId.pgType, businessentityid)}""".update().runUnchecked(c) > 0 } override def upsert(unsaved: PersonRow)(using c: Connection): PersonRow = { sql"""insert into "person"."person"("businessentityid", "persontype", "namestyle", "title", "firstname", "middlename", "lastname", "suffix", "emailpromotion", "additionalcontactinfo", "demographics", "rowguid", "modifieddate") - values (${Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid)}::int4, ${Fragment.encode(PgTypes.bpchar, unsaved.persontype)}::bpchar, ${Fragment.encode(NameStyle.dbType, unsaved.namestyle)}::bool, ${Fragment.encode(PgTypes.text.nullable, unsaved.title)}, ${Fragment.encode(FirstName.dbType, unsaved.firstname)}::varchar, ${Fragment.encode(Name.dbType.nullable, unsaved.middlename)}::varchar, ${Fragment.encode(Name.dbType, unsaved.lastname)}::varchar, ${Fragment.encode(PgTypes.text.nullable, unsaved.suffix)}, ${Fragment.encode(ScalaDbTypes.PgTypes.int4, unsaved.emailpromotion)}::int4, ${Fragment.encode(PgTypes.xml.nullable, unsaved.additionalcontactinfo)}::xml, ${Fragment.encode(PgTypes.xml.nullable, unsaved.demographics)}::xml, ${Fragment.encode(PgTypes.uuid, unsaved.rowguid)}::uuid, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) + values (${Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid)}::int4, ${Fragment.encode(PgTypes.bpchar, unsaved.persontype)}::bpchar, ${Fragment.encode(NameStyle.pgType, unsaved.namestyle)}::bool, ${Fragment.encode(PgTypes.text.nullable, unsaved.title)}, ${Fragment.encode(FirstName.pgType, unsaved.firstname)}::varchar, ${Fragment.encode(MiddleName.pgType.nullable, unsaved.middlename)}::varchar, ${Fragment.encode(LastName.pgType, unsaved.lastname)}::varchar, ${Fragment.encode(PgTypes.text.nullable, unsaved.suffix)}, ${Fragment.encode(ScalaDbTypes.PgTypes.int4, unsaved.emailpromotion)}::int4, ${Fragment.encode(PgTypes.xml.nullable, unsaved.additionalcontactinfo)}::xml, ${Fragment.encode(PgTypes.xml.nullable, unsaved.demographics)}::xml, ${Fragment.encode(PgTypes.uuid, unsaved.rowguid)}::uuid, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) on conflict ("businessentityid") do update set "persontype" = EXCLUDED."persontype", diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/person/PersonRow.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/person/PersonRow.scala index e6616ed222..2b2fc41ecd 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/person/PersonRow.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/person/PersonRow.scala @@ -7,9 +7,10 @@ package adventureworks.person.person import adventureworks.customtypes.Defaulted import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Name import adventureworks.public.NameStyle import adventureworks.userdefined.FirstName +import adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import dev.typr.foundations.PgText import dev.typr.foundations.PgTypes import dev.typr.foundations.Tuple.Tuple13 @@ -43,9 +44,9 @@ case class PersonRow( /** First name of the person. */ firstname: /* user-picked */ FirstName, /** Middle name or middle initial of the person. */ - middlename: Option[Name], + middlename: Option[/* user-picked */ MiddleName], /** Last name of the person. */ - lastname: Name, + lastname: /* user-picked */ LastName, /** Surname suffix. For example, Sr. or Jr. */ suffix: Option[/* max 10 chars */ String], /** 0 = Contact does not wish to receive e-mail promotions, 1 = Contact does wish to receive e-mail promotions from AdventureWorks, 2 = Contact does wish to receive e-mail promotions from AdventureWorks and selected partners. @@ -61,7 +62,7 @@ case class PersonRow( rowguid: UUID, /** Default: now() */ modifieddate: LocalDateTime -) extends Tuple13[BusinessentityId, String, NameStyle, Option[/* max 8 chars */ String], /* user-picked */ FirstName, Option[Name], Name, Option[/* max 10 chars */ String], Int, Option[Xml], Option[Xml], UUID, LocalDateTime] { +) extends Tuple13[BusinessentityId, String, NameStyle, Option[/* max 8 chars */ String], /* user-picked */ FirstName, Option[/* user-picked */ MiddleName], /* user-picked */ LastName, Option[/* max 10 chars */ String], Int, Option[Xml], Option[Xml], UUID, LocalDateTime] { def id: BusinessentityId = businessentityid def toUnsavedRow( @@ -97,9 +98,9 @@ case class PersonRow( override def `_5`: /* user-picked */ FirstName = firstname - override def `_6`: Option[Name] = middlename + override def `_6`: Option[/* user-picked */ MiddleName] = middlename - override def `_7`: Name = lastname + override def `_7`: /* user-picked */ LastName = lastname override def `_8`: Option[/* max 10 chars */ String] = suffix @@ -115,7 +116,7 @@ case class PersonRow( } object PersonRow { - val `_rowParser`: RowParser[PersonRow] = RowParsers.of(BusinessentityId.dbType, PgTypes.bpchar, NameStyle.dbType, PgTypes.text.nullable, FirstName.dbType, Name.dbType.nullable, Name.dbType, PgTypes.text.nullable, ScalaDbTypes.PgTypes.int4, PgTypes.xml.nullable, PgTypes.xml.nullable, PgTypes.uuid, PgTypes.timestamp)(PersonRow.apply)(row => Array[Any](row.businessentityid, row.persontype, row.namestyle, row.title, row.firstname, row.middlename, row.lastname, row.suffix, row.emailpromotion, row.additionalcontactinfo, row.demographics, row.rowguid, row.modifieddate)) + val `_rowParser`: RowParser[PersonRow] = RowParsers.of(BusinessentityId.pgType, PgTypes.bpchar, NameStyle.pgType, PgTypes.text.nullable, FirstName.pgType, MiddleName.pgType.nullable, LastName.pgType, PgTypes.text.nullable, ScalaDbTypes.PgTypes.int4, PgTypes.xml.nullable, PgTypes.xml.nullable, PgTypes.uuid, PgTypes.timestamp)(PersonRow.apply)(row => Array[Any](row.businessentityid, row.persontype, row.namestyle, row.title, row.firstname, row.middlename, row.lastname, row.suffix, row.emailpromotion, row.additionalcontactinfo, row.demographics, row.rowguid, row.modifieddate)) given pgText: PgText[PersonRow] = PgText.from(`_rowParser`.underlying) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/person/PersonRowUnsaved.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/person/PersonRowUnsaved.scala index 90e66ea4f9..2e18d99dbe 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/person/PersonRowUnsaved.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/person/PersonRowUnsaved.scala @@ -8,9 +8,10 @@ package adventureworks.person.person import adventureworks.customtypes.Defaulted import adventureworks.customtypes.Defaulted.UseDefault import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Name import adventureworks.public.NameStyle import adventureworks.userdefined.FirstName +import adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import dev.typr.foundations.PgText import dev.typr.foundations.PgTypes import dev.typr.foundations.data.Xml @@ -34,9 +35,9 @@ case class PersonRowUnsaved( /** First name of the person. */ firstname: /* user-picked */ FirstName, /** Middle name or middle initial of the person. */ - middlename: Option[Name] = None, + middlename: Option[/* user-picked */ MiddleName] = None, /** Last name of the person. */ - lastname: Name, + lastname: /* user-picked */ LastName, /** Surname suffix. For example, Sr. or Jr. */ suffix: Option[/* max 10 chars */ String] = None, /** Additional contact information about the person stored in xml format. */ @@ -82,5 +83,5 @@ case class PersonRowUnsaved( } object PersonRowUnsaved { - given pgText: PgText[PersonRowUnsaved] = PgText.instance((row, sb) => { BusinessentityId.dbType.text.unsafeEncode(row.businessentityid, sb); sb.append(PgText.DELIMETER); PgTypes.bpchar.text.unsafeEncode(row.persontype, sb); sb.append(PgText.DELIMETER); PgTypes.text.nullable.text.unsafeEncode(row.title, sb); sb.append(PgText.DELIMETER); FirstName.dbType.text.unsafeEncode(row.firstname, sb); sb.append(PgText.DELIMETER); Name.dbType.nullable.text.unsafeEncode(row.middlename, sb); sb.append(PgText.DELIMETER); Name.dbType.text.unsafeEncode(row.lastname, sb); sb.append(PgText.DELIMETER); PgTypes.text.nullable.text.unsafeEncode(row.suffix, sb); sb.append(PgText.DELIMETER); PgTypes.xml.nullable.text.unsafeEncode(row.additionalcontactinfo, sb); sb.append(PgText.DELIMETER); PgTypes.xml.nullable.text.unsafeEncode(row.demographics, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using NameStyle.dbType.text).unsafeEncode(row.namestyle, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using ScalaDbTypes.PgTypes.int4.text).unsafeEncode(row.emailpromotion, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.uuid.text).unsafeEncode(row.rowguid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) + given pgText: PgText[PersonRowUnsaved] = PgText.instance((row, sb) => { BusinessentityId.pgType.text.unsafeEncode(row.businessentityid, sb); sb.append(PgText.DELIMETER); PgTypes.bpchar.text.unsafeEncode(row.persontype, sb); sb.append(PgText.DELIMETER); PgTypes.text.nullable.text.unsafeEncode(row.title, sb); sb.append(PgText.DELIMETER); FirstName.pgType.text.unsafeEncode(row.firstname, sb); sb.append(PgText.DELIMETER); MiddleName.pgType.nullable.text.unsafeEncode(row.middlename, sb); sb.append(PgText.DELIMETER); LastName.pgType.text.unsafeEncode(row.lastname, sb); sb.append(PgText.DELIMETER); PgTypes.text.nullable.text.unsafeEncode(row.suffix, sb); sb.append(PgText.DELIMETER); PgTypes.xml.nullable.text.unsafeEncode(row.additionalcontactinfo, sb); sb.append(PgText.DELIMETER); PgTypes.xml.nullable.text.unsafeEncode(row.demographics, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using NameStyle.pgType.text).unsafeEncode(row.namestyle, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using ScalaDbTypes.PgTypes.int4.text).unsafeEncode(row.emailpromotion, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.uuid.text).unsafeEncode(row.rowguid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceFields.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceFields.scala index b87ba1d22c..6db438b6b8 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceFields.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceFields.scala @@ -36,7 +36,7 @@ class StateprovinceFields(val `_path`: java.util.List[Path]) extends TupleExpr8[ None, Some("int4"), (row, value) => row.copy(stateprovinceid = value), - StateprovinceId.dbType + StateprovinceId.pgType ) } @@ -60,7 +60,7 @@ class StateprovinceFields(val `_path`: java.util.List[Path]) extends TupleExpr8[ None, None, (row, value) => row.copy(countryregioncode = value), - CountryregionId.dbType + CountryregionId.pgType ) } @@ -72,7 +72,7 @@ class StateprovinceFields(val `_path`: java.util.List[Path]) extends TupleExpr8[ None, Some("bool"), (row, value) => row.copy(isonlystateprovinceflag = value), - Flag.dbType + Flag.pgType ) } @@ -84,7 +84,7 @@ class StateprovinceFields(val `_path`: java.util.List[Path]) extends TupleExpr8[ None, Some("varchar"), (row, value) => row.copy(name = value), - Name.dbType + Name.pgType ) } @@ -96,7 +96,7 @@ class StateprovinceFields(val `_path`: java.util.List[Path]) extends TupleExpr8[ None, Some("int4"), (row, value) => row.copy(territoryid = value), - SalesterritoryId.dbType + SalesterritoryId.pgType ) } diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceId.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceId.scala index 4905282291..ebda0c3941 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceId.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceId.scala @@ -17,7 +17,7 @@ case class StateprovinceId(@JsonValue value: Int) extends scala.AnyVal object StateprovinceId { given bijection: Bijection[StateprovinceId, Int] = Bijection.apply[StateprovinceId, Int](_.value)(StateprovinceId.apply) - given dbType: PgType[StateprovinceId] = ScalaDbTypes.PgTypes.int4.bimap(StateprovinceId.apply, _.value) + given pgType: PgType[StateprovinceId] = ScalaDbTypes.PgTypes.int4.bimap(StateprovinceId.apply, _.value) - given dbTypeArray: PgType[Array[StateprovinceId]] = PgTypes.int4ArrayUnboxed.bimap(xs => xs.map(StateprovinceId.apply), xs => xs.map(_.value)) + given pgTypeArray: PgType[Array[StateprovinceId]] = PgTypes.int4ArrayUnboxed.bimap(xs => xs.map(StateprovinceId.apply), xs => xs.map(_.value)) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRepoImpl.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRepoImpl.scala index 1a6218219a..ba02d0f576 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRepoImpl.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRepoImpl.scala @@ -24,19 +24,19 @@ import dev.typr.foundations.scala.Fragment.sql class StateprovinceRepoImpl extends StateprovinceRepo { override def delete: DeleteBuilder[StateprovinceFields, StateprovinceRow] = DeleteBuilder.of(""""person"."stateprovince"""", StateprovinceFields.structure, Dialect.POSTGRESQL) - override def deleteById(stateprovinceid: StateprovinceId)(using c: Connection): Boolean = sql"""delete from "person"."stateprovince" where "stateprovinceid" = ${Fragment.encode(StateprovinceId.dbType, stateprovinceid)}""".update().runUnchecked(c) > 0 + override def deleteById(stateprovinceid: StateprovinceId)(using c: Connection): Boolean = sql"""delete from "person"."stateprovince" where "stateprovinceid" = ${Fragment.encode(StateprovinceId.pgType, stateprovinceid)}""".update().runUnchecked(c) > 0 override def deleteByIds(stateprovinceids: Array[StateprovinceId])(using c: Connection): Int = { sql"""delete from "person"."stateprovince" - where "stateprovinceid" = ANY(${Fragment.encode(StateprovinceId.dbTypeArray, stateprovinceids)})""" + where "stateprovinceid" = ANY(${Fragment.encode(StateprovinceId.pgTypeArray, stateprovinceids)})""" .update() .runUnchecked(c) } override def insert(unsaved: StateprovinceRow)(using c: Connection): StateprovinceRow = { sql"""insert into "person"."stateprovince"("stateprovinceid", "stateprovincecode", "countryregioncode", "isonlystateprovinceflag", "name", "territoryid", "rowguid", "modifieddate") - values (${Fragment.encode(StateprovinceId.dbType, unsaved.stateprovinceid)}::int4, ${Fragment.encode(PgTypes.bpchar, unsaved.stateprovincecode)}::bpchar, ${Fragment.encode(CountryregionId.dbType, unsaved.countryregioncode)}, ${Fragment.encode(Flag.dbType, unsaved.isonlystateprovinceflag)}::bool, ${Fragment.encode(Name.dbType, unsaved.name)}::varchar, ${Fragment.encode(SalesterritoryId.dbType, unsaved.territoryid)}::int4, ${Fragment.encode(PgTypes.uuid, unsaved.rowguid)}::uuid, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) + values (${Fragment.encode(StateprovinceId.pgType, unsaved.stateprovinceid)}::int4, ${Fragment.encode(PgTypes.bpchar, unsaved.stateprovincecode)}::bpchar, ${Fragment.encode(CountryregionId.pgType, unsaved.countryregioncode)}, ${Fragment.encode(Flag.pgType, unsaved.isonlystateprovinceflag)}::bool, ${Fragment.encode(Name.pgType, unsaved.name)}::varchar, ${Fragment.encode(SalesterritoryId.pgType, unsaved.territoryid)}::int4, ${Fragment.encode(PgTypes.uuid, unsaved.rowguid)}::uuid, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) RETURNING "stateprovinceid", "stateprovincecode", "countryregioncode", "isonlystateprovinceflag", "name", "territoryid", "rowguid", "modifieddate" """ .updateReturning(StateprovinceRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -48,18 +48,18 @@ class StateprovinceRepoImpl extends StateprovinceRepo { columns.addOne(Fragment.lit(""""stateprovincecode"""")): @scala.annotation.nowarn values.addOne(sql"${Fragment.encode(PgTypes.bpchar, unsaved.stateprovincecode)}::bpchar"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""countryregioncode"""")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(CountryregionId.dbType, unsaved.countryregioncode)}"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(CountryregionId.pgType, unsaved.countryregioncode)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""name"""")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(Name.dbType, unsaved.name)}::varchar"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(Name.pgType, unsaved.name)}::varchar"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""territoryid"""")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(SalesterritoryId.dbType, unsaved.territoryid)}::int4"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(SalesterritoryId.pgType, unsaved.territoryid)}::int4"): @scala.annotation.nowarn unsaved.stateprovinceid.visit( { }, - value => { columns.addOne(Fragment.lit(""""stateprovinceid"""")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(StateprovinceId.dbType, value)}::int4"): @scala.annotation.nowarn } + value => { columns.addOne(Fragment.lit(""""stateprovinceid"""")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(StateprovinceId.pgType, value)}::int4"): @scala.annotation.nowarn } ); unsaved.isonlystateprovinceflag.visit( { }, - value => { columns.addOne(Fragment.lit(""""isonlystateprovinceflag"""")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(Flag.dbType, value)}::bool"): @scala.annotation.nowarn } + value => { columns.addOne(Fragment.lit(""""isonlystateprovinceflag"""")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(Flag.pgType, value)}::bool"): @scala.annotation.nowarn } ); unsaved.rowguid.visit( { }, @@ -100,13 +100,13 @@ class StateprovinceRepoImpl extends StateprovinceRepo { override def selectById(stateprovinceid: StateprovinceId)(using c: Connection): Option[StateprovinceRow] = { sql"""select "stateprovinceid", "stateprovincecode", "countryregioncode", "isonlystateprovinceflag", "name", "territoryid", "rowguid", "modifieddate" from "person"."stateprovince" - where "stateprovinceid" = ${Fragment.encode(StateprovinceId.dbType, stateprovinceid)}""".query(StateprovinceRow.`_rowParser`.first()).runUnchecked(c) + where "stateprovinceid" = ${Fragment.encode(StateprovinceId.pgType, stateprovinceid)}""".query(StateprovinceRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(stateprovinceids: Array[StateprovinceId])(using c: Connection): List[StateprovinceRow] = { sql"""select "stateprovinceid", "stateprovincecode", "countryregioncode", "isonlystateprovinceflag", "name", "territoryid", "rowguid", "modifieddate" from "person"."stateprovince" - where "stateprovinceid" = ANY(${Fragment.encode(StateprovinceId.dbTypeArray, stateprovinceids)})""".query(StateprovinceRow.`_rowParser`.all()).runUnchecked(c) + where "stateprovinceid" = ANY(${Fragment.encode(StateprovinceId.pgTypeArray, stateprovinceids)})""".query(StateprovinceRow.`_rowParser`.all()).runUnchecked(c) } override def selectByIdsTracked(stateprovinceids: Array[StateprovinceId])(using c: Connection): Map[StateprovinceId, StateprovinceRow] = { @@ -121,18 +121,18 @@ class StateprovinceRepoImpl extends StateprovinceRepo { val stateprovinceid: StateprovinceId = row.stateprovinceid return sql"""update "person"."stateprovince" set "stateprovincecode" = ${Fragment.encode(PgTypes.bpchar, row.stateprovincecode)}::bpchar, - "countryregioncode" = ${Fragment.encode(CountryregionId.dbType, row.countryregioncode)}, - "isonlystateprovinceflag" = ${Fragment.encode(Flag.dbType, row.isonlystateprovinceflag)}::bool, - "name" = ${Fragment.encode(Name.dbType, row.name)}::varchar, - "territoryid" = ${Fragment.encode(SalesterritoryId.dbType, row.territoryid)}::int4, + "countryregioncode" = ${Fragment.encode(CountryregionId.pgType, row.countryregioncode)}, + "isonlystateprovinceflag" = ${Fragment.encode(Flag.pgType, row.isonlystateprovinceflag)}::bool, + "name" = ${Fragment.encode(Name.pgType, row.name)}::varchar, + "territoryid" = ${Fragment.encode(SalesterritoryId.pgType, row.territoryid)}::int4, "rowguid" = ${Fragment.encode(PgTypes.uuid, row.rowguid)}::uuid, "modifieddate" = ${Fragment.encode(PgTypes.timestamp, row.modifieddate)}::timestamp - where "stateprovinceid" = ${Fragment.encode(StateprovinceId.dbType, stateprovinceid)}""".update().runUnchecked(c) > 0 + where "stateprovinceid" = ${Fragment.encode(StateprovinceId.pgType, stateprovinceid)}""".update().runUnchecked(c) > 0 } override def upsert(unsaved: StateprovinceRow)(using c: Connection): StateprovinceRow = { sql"""insert into "person"."stateprovince"("stateprovinceid", "stateprovincecode", "countryregioncode", "isonlystateprovinceflag", "name", "territoryid", "rowguid", "modifieddate") - values (${Fragment.encode(StateprovinceId.dbType, unsaved.stateprovinceid)}::int4, ${Fragment.encode(PgTypes.bpchar, unsaved.stateprovincecode)}::bpchar, ${Fragment.encode(CountryregionId.dbType, unsaved.countryregioncode)}, ${Fragment.encode(Flag.dbType, unsaved.isonlystateprovinceflag)}::bool, ${Fragment.encode(Name.dbType, unsaved.name)}::varchar, ${Fragment.encode(SalesterritoryId.dbType, unsaved.territoryid)}::int4, ${Fragment.encode(PgTypes.uuid, unsaved.rowguid)}::uuid, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) + values (${Fragment.encode(StateprovinceId.pgType, unsaved.stateprovinceid)}::int4, ${Fragment.encode(PgTypes.bpchar, unsaved.stateprovincecode)}::bpchar, ${Fragment.encode(CountryregionId.pgType, unsaved.countryregioncode)}, ${Fragment.encode(Flag.pgType, unsaved.isonlystateprovinceflag)}::bool, ${Fragment.encode(Name.pgType, unsaved.name)}::varchar, ${Fragment.encode(SalesterritoryId.pgType, unsaved.territoryid)}::int4, ${Fragment.encode(PgTypes.uuid, unsaved.rowguid)}::uuid, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) on conflict ("stateprovinceid") do update set "stateprovincecode" = EXCLUDED."stateprovincecode", diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRow.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRow.scala index 680b2641b6..99ef25ed3d 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRow.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRow.scala @@ -86,7 +86,7 @@ case class StateprovinceRow( } object StateprovinceRow { - val `_rowParser`: RowParser[StateprovinceRow] = RowParsers.of(StateprovinceId.dbType, PgTypes.bpchar, CountryregionId.dbType, Flag.dbType, Name.dbType, SalesterritoryId.dbType, PgTypes.uuid, PgTypes.timestamp)(StateprovinceRow.apply)(row => Array[Any](row.stateprovinceid, row.stateprovincecode, row.countryregioncode, row.isonlystateprovinceflag, row.name, row.territoryid, row.rowguid, row.modifieddate)) + val `_rowParser`: RowParser[StateprovinceRow] = RowParsers.of(StateprovinceId.pgType, PgTypes.bpchar, CountryregionId.pgType, Flag.pgType, Name.pgType, SalesterritoryId.pgType, PgTypes.uuid, PgTypes.timestamp)(StateprovinceRow.apply)(row => Array[Any](row.stateprovinceid, row.stateprovincecode, row.countryregioncode, row.isonlystateprovinceflag, row.name, row.territoryid, row.rowguid, row.modifieddate)) given pgText: PgText[StateprovinceRow] = PgText.from(`_rowParser`.underlying) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRowUnsaved.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRowUnsaved.scala index 1b1a08c5a0..e18781c2ba 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRowUnsaved.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRowUnsaved.scala @@ -63,5 +63,5 @@ case class StateprovinceRowUnsaved( } object StateprovinceRowUnsaved { - given pgText: PgText[StateprovinceRowUnsaved] = PgText.instance((row, sb) => { PgTypes.bpchar.text.unsafeEncode(row.stateprovincecode, sb); sb.append(PgText.DELIMETER); CountryregionId.dbType.text.unsafeEncode(row.countryregioncode, sb); sb.append(PgText.DELIMETER); Name.dbType.text.unsafeEncode(row.name, sb); sb.append(PgText.DELIMETER); SalesterritoryId.dbType.text.unsafeEncode(row.territoryid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using StateprovinceId.dbType.text).unsafeEncode(row.stateprovinceid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using Flag.dbType.text).unsafeEncode(row.isonlystateprovinceflag, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.uuid.text).unsafeEncode(row.rowguid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) + given pgText: PgText[StateprovinceRowUnsaved] = PgText.instance((row, sb) => { PgTypes.bpchar.text.unsafeEncode(row.stateprovincecode, sb); sb.append(PgText.DELIMETER); CountryregionId.pgType.text.unsafeEncode(row.countryregioncode, sb); sb.append(PgText.DELIMETER); Name.pgType.text.unsafeEncode(row.name, sb); sb.append(PgText.DELIMETER); SalesterritoryId.pgType.text.unsafeEncode(row.territoryid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using StateprovinceId.pgType.text).unsafeEncode(row.stateprovinceid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using Flag.pgType.text).unsafeEncode(row.isonlystateprovinceflag, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.uuid.text).unsafeEncode(row.rowguid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person_detail/PersonDetailSqlRepoImpl.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person_detail/PersonDetailSqlRepoImpl.scala index 22d1d7322b..66ccf39afb 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person_detail/PersonDetailSqlRepoImpl.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person_detail/PersonDetailSqlRepoImpl.scala @@ -32,7 +32,7 @@ class PersonDetailSqlRepoImpl extends PersonDetailSqlRepo { JOIN person.person p ON p.businessentityid = s.businessentityid JOIN person.businessentityaddress bea ON bea.businessentityid = s.businessentityid LEFT JOIN person.address a ON a.addressid = bea.addressid - where s.businessentityid = ${Fragment.encode(BusinessentityId.dbType, businessentityid)}::int4 + where s.businessentityid = ${Fragment.encode(BusinessentityId.pgType, businessentityid)}::int4 and p.modifieddate > ${Fragment.encode(PgTypes.timestamp, modifiedAfter)}::timestamp""".query(PersonDetailSqlRow.`_rowParser`.all()).runUnchecked(c) } } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person_detail/PersonDetailSqlRow.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person_detail/PersonDetailSqlRow.scala index 72706ce0ea..1dd7751d94 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person_detail/PersonDetailSqlRow.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person_detail/PersonDetailSqlRow.scala @@ -6,8 +6,9 @@ package adventureworks.person_detail import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Name import adventureworks.userdefined.FirstName +import adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import dev.typr.foundations.PgTypes import dev.typr.foundations.Tuple.Tuple10 import dev.typr.foundations.scala.DbTypeOps @@ -24,9 +25,9 @@ case class PersonDetailSqlRow( /** Points to [[adventureworks.person.person.PersonRow.firstname]] */ firstname: /* user-picked */ FirstName, /** Points to [[adventureworks.person.person.PersonRow.middlename]] */ - middlename: Option[Name], + middlename: Option[/* user-picked */ MiddleName], /** Points to [[adventureworks.person.person.PersonRow.lastname]] */ - lastname: Name, + lastname: /* user-picked */ LastName, /** Points to [[adventureworks.humanresources.employee.EmployeeRow.jobtitle]] */ jobtitle: String, /** Points to [[adventureworks.person.address.AddressRow.addressline1]] */ @@ -37,16 +38,16 @@ case class PersonDetailSqlRow( postalcode: Option[String], /** Points to [[adventureworks.person.address.AddressRow.rowguid]] */ rowguid: Option[UUID] -) extends Tuple10[BusinessentityId, Option[/* max 8 chars */ String], /* user-picked */ FirstName, Option[Name], Name, String, Option[String], Option[String], Option[String], Option[UUID]] { +) extends Tuple10[BusinessentityId, Option[/* max 8 chars */ String], /* user-picked */ FirstName, Option[/* user-picked */ MiddleName], /* user-picked */ LastName, String, Option[String], Option[String], Option[String], Option[UUID]] { override def `_1`: BusinessentityId = businessentityid override def `_2`: Option[/* max 8 chars */ String] = title override def `_3`: /* user-picked */ FirstName = firstname - override def `_4`: Option[Name] = middlename + override def `_4`: Option[/* user-picked */ MiddleName] = middlename - override def `_5`: Name = lastname + override def `_5`: /* user-picked */ LastName = lastname override def `_6`: String = jobtitle @@ -60,5 +61,5 @@ case class PersonDetailSqlRow( } object PersonDetailSqlRow { - val `_rowParser`: RowParser[PersonDetailSqlRow] = RowParsers.of(BusinessentityId.dbType, PgTypes.text.nullable, FirstName.dbType, Name.dbType.nullable, Name.dbType, PgTypes.text, PgTypes.text.nullable, PgTypes.text.nullable, PgTypes.text.nullable, PgTypes.uuid.nullable)(PersonDetailSqlRow.apply)(row => Array[Any](row.businessentityid, row.title, row.firstname, row.middlename, row.lastname, row.jobtitle, row.addressline1, row.city, row.postalcode, row.rowguid)) + val `_rowParser`: RowParser[PersonDetailSqlRow] = RowParsers.of(BusinessentityId.pgType, PgTypes.text.nullable, FirstName.pgType, MiddleName.pgType.nullable, LastName.pgType, PgTypes.text, PgTypes.text.nullable, PgTypes.text.nullable, PgTypes.text.nullable, PgTypes.uuid.nullable)(PersonDetailSqlRow.apply)(row => Array[Any](row.businessentityid, row.title, row.firstname, row.middlename, row.lastname, row.jobtitle, row.addressline1, row.city, row.postalcode, row.rowguid)) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person_dynamic/PersonDynamicSqlRow.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person_dynamic/PersonDynamicSqlRow.scala index 337a1972b8..e0b8a8ed2e 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person_dynamic/PersonDynamicSqlRow.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person_dynamic/PersonDynamicSqlRow.scala @@ -5,8 +5,9 @@ */ package adventureworks.person_dynamic -import adventureworks.public.Name import adventureworks.userdefined.FirstName +import adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import dev.typr.foundations.PgTypes import dev.typr.foundations.Tuple.Tuple4 import dev.typr.foundations.scala.DbTypeOps @@ -20,19 +21,19 @@ case class PersonDynamicSqlRow( /** Points to [[adventureworks.person.person.PersonRow.firstname]] */ firstname: /* user-picked */ FirstName, /** Points to [[adventureworks.person.person.PersonRow.middlename]] */ - middlename: Option[Name], + middlename: Option[/* user-picked */ MiddleName], /** Points to [[adventureworks.person.person.PersonRow.lastname]] */ - lastname: Name -) extends Tuple4[Option[/* max 8 chars */ String], /* user-picked */ FirstName, Option[Name], Name] { + lastname: /* user-picked */ LastName +) extends Tuple4[Option[/* max 8 chars */ String], /* user-picked */ FirstName, Option[/* user-picked */ MiddleName], /* user-picked */ LastName] { override def `_1`: Option[/* max 8 chars */ String] = title override def `_2`: /* user-picked */ FirstName = firstname - override def `_3`: Option[Name] = middlename + override def `_3`: Option[/* user-picked */ MiddleName] = middlename - override def `_4`: Name = lastname + override def `_4`: /* user-picked */ LastName = lastname } object PersonDynamicSqlRow { - val `_rowParser`: RowParser[PersonDynamicSqlRow] = RowParsers.of(PgTypes.text.nullable, FirstName.dbType, Name.dbType.nullable, Name.dbType)(PersonDynamicSqlRow.apply)(row => Array[Any](row.title, row.firstname, row.middlename, row.lastname)) + val `_rowParser`: RowParser[PersonDynamicSqlRow] = RowParsers.of(PgTypes.text.nullable, FirstName.pgType, MiddleName.pgType.nullable, LastName.pgType)(PersonDynamicSqlRow.apply)(row => Array[Any](row.title, row.firstname, row.middlename, row.lastname)) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person_row_join/PersonRowJoinSqlRow.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person_row_join/PersonRowJoinSqlRow.scala index fc4b3f6b20..1ba0912203 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person_row_join/PersonRowJoinSqlRow.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/person_row_join/PersonRowJoinSqlRow.scala @@ -28,5 +28,5 @@ case class PersonRowJoinSqlRow( } object PersonRowJoinSqlRow { - val `_rowParser`: RowParser[PersonRowJoinSqlRow] = RowParsers.of(BusinessentityId.dbType, PgTypes.recordArray.nullable, PgTypes.recordArray.nullable)(PersonRowJoinSqlRow.apply)(row => Array[Any](row.businessentityid, row.email, row.emails)) + val `_rowParser`: RowParser[PersonRowJoinSqlRow] = RowParsers.of(BusinessentityId.pgType, PgTypes.recordArray.nullable, PgTypes.recordArray.nullable)(PersonRowJoinSqlRow.apply)(row => Array[Any](row.businessentityid, row.email, row.emails)) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/precisetypes/PaddedString10.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/precisetypes/PaddedString10.scala index 7e6f41be8b..9b83ad18cc 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/precisetypes/PaddedString10.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/precisetypes/PaddedString10.scala @@ -31,11 +31,11 @@ case class PaddedString10 private(@JsonValue value: String) extends PaddedString object PaddedString10 { given bijection: Bijection[PaddedString10, String] = Bijection.apply[PaddedString10, String](_.value)(PaddedString10.apply) - given dbType: PgType[PaddedString10] = PgTypes.bpchar.bimap(PaddedString10.apply, _.value) + def of(value: String): Option[PaddedString10] = (if (value.length <= 10) Some(new PaddedString10(String.format("%-10s", value))) else None) - given dbTypeArray: PgType[Array[PaddedString10]] = PgTypes.bpcharArray.bimap(xs => xs.map(PaddedString10.apply), xs => xs.map(_.value)) + given pgType: PgType[PaddedString10] = PgTypes.bpchar.bimap(PaddedString10.apply, _.value) - def of(value: String): Option[PaddedString10] = (if (value.length <= 10) Some(new PaddedString10(String.format("%-10s", value))) else None) + given pgTypeArray: PgType[Array[PaddedString10]] = PgTypes.bpcharArray.bimap(xs => xs.map(PaddedString10.apply), xs => xs.map(_.value)) def unsafeForce(value: String): PaddedString10 = { if (value.length > 10) { diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/precisetypes/PaddedString3.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/precisetypes/PaddedString3.scala index 3d97e91964..0b6e40772c 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/precisetypes/PaddedString3.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/precisetypes/PaddedString3.scala @@ -31,11 +31,11 @@ case class PaddedString3 private(@JsonValue value: String) extends PaddedStringN object PaddedString3 { given bijection: Bijection[PaddedString3, String] = Bijection.apply[PaddedString3, String](_.value)(PaddedString3.apply) - given dbType: PgType[PaddedString3] = PgTypes.bpchar.bimap(PaddedString3.apply, _.value) + def of(value: String): Option[PaddedString3] = (if (value.length <= 3) Some(new PaddedString3(String.format("%-3s", value))) else None) - given dbTypeArray: PgType[Array[PaddedString3]] = PgTypes.bpcharArray.bimap(xs => xs.map(PaddedString3.apply), xs => xs.map(_.value)) + given pgType: PgType[PaddedString3] = PgTypes.bpchar.bimap(PaddedString3.apply, _.value) - def of(value: String): Option[PaddedString3] = (if (value.length <= 3) Some(new PaddedString3(String.format("%-3s", value))) else None) + given pgTypeArray: PgType[Array[PaddedString3]] = PgTypes.bpcharArray.bimap(xs => xs.map(PaddedString3.apply), xs => xs.map(_.value)) def unsafeForce(value: String): PaddedString3 = { if (value.length > 3) { diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/precisetypes/String10.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/precisetypes/String10.scala index df669b4742..5b96d4c177 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/precisetypes/String10.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/precisetypes/String10.scala @@ -29,11 +29,11 @@ case class String10 private(@JsonValue value: String) extends StringN { object String10 { given bijection: Bijection[String10, String] = Bijection.apply[String10, String](_.value)(String10.apply) - given dbType: PgType[String10] = PgTypes.text.bimap(String10.apply, _.value) + def of(value: String): Option[String10] = (if (value.length <= 10) Some(new String10(value)) else None) - given dbTypeArray: PgType[Array[String10]] = PgTypes.textArray.bimap(xs => xs.map(String10.apply), xs => xs.map(_.value)) + given pgType: PgType[String10] = PgTypes.text.bimap(String10.apply, _.value) - def of(value: String): Option[String10] = (if (value.length <= 10) Some(new String10(value)) else None) + given pgTypeArray: PgType[Array[String10]] = PgTypes.textArray.bimap(xs => xs.map(String10.apply), xs => xs.map(_.value)) def truncate(value: String): String10 = new String10((if (value.length <= 10) value else value.substring(0, 10))) diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/precisetypes/String100.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/precisetypes/String100.scala index 540ed228db..a32ced9cbb 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/precisetypes/String100.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/precisetypes/String100.scala @@ -29,11 +29,11 @@ case class String100 private(@JsonValue value: String) extends StringN { object String100 { given bijection: Bijection[String100, String] = Bijection.apply[String100, String](_.value)(String100.apply) - given dbType: PgType[String100] = PgTypes.text.bimap(String100.apply, _.value) + def of(value: String): Option[String100] = (if (value.length <= 100) Some(new String100(value)) else None) - given dbTypeArray: PgType[Array[String100]] = PgTypes.textArray.bimap(xs => xs.map(String100.apply), xs => xs.map(_.value)) + given pgType: PgType[String100] = PgTypes.text.bimap(String100.apply, _.value) - def of(value: String): Option[String100] = (if (value.length <= 100) Some(new String100(value)) else None) + given pgTypeArray: PgType[Array[String100]] = PgTypes.textArray.bimap(xs => xs.map(String100.apply), xs => xs.map(_.value)) def truncate(value: String): String100 = new String100((if (value.length <= 100) value else value.substring(0, 100))) diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/precisetypes/String20.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/precisetypes/String20.scala index 6934a1b24b..332a9f569c 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/precisetypes/String20.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/precisetypes/String20.scala @@ -29,11 +29,11 @@ case class String20 private(@JsonValue value: String) extends StringN { object String20 { given bijection: Bijection[String20, String] = Bijection.apply[String20, String](_.value)(String20.apply) - given dbType: PgType[String20] = PgTypes.text.bimap(String20.apply, _.value) + def of(value: String): Option[String20] = (if (value.length <= 20) Some(new String20(value)) else None) - given dbTypeArray: PgType[Array[String20]] = PgTypes.textArray.bimap(xs => xs.map(String20.apply), xs => xs.map(_.value)) + given pgType: PgType[String20] = PgTypes.text.bimap(String20.apply, _.value) - def of(value: String): Option[String20] = (if (value.length <= 20) Some(new String20(value)) else None) + given pgTypeArray: PgType[Array[String20]] = PgTypes.textArray.bimap(xs => xs.map(String20.apply), xs => xs.map(_.value)) def truncate(value: String): String20 = new String20((if (value.length <= 20) value else value.substring(0, 20))) diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/precisetypes/String255.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/precisetypes/String255.scala index 72c820a381..a6f8551861 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/precisetypes/String255.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/precisetypes/String255.scala @@ -29,11 +29,11 @@ case class String255 private(@JsonValue value: String) extends StringN { object String255 { given bijection: Bijection[String255, String] = Bijection.apply[String255, String](_.value)(String255.apply) - given dbType: PgType[String255] = PgTypes.text.bimap(String255.apply, _.value) + def of(value: String): Option[String255] = (if (value.length <= 255) Some(new String255(value)) else None) - given dbTypeArray: PgType[Array[String255]] = PgTypes.textArray.bimap(xs => xs.map(String255.apply), xs => xs.map(_.value)) + given pgType: PgType[String255] = PgTypes.text.bimap(String255.apply, _.value) - def of(value: String): Option[String255] = (if (value.length <= 255) Some(new String255(value)) else None) + given pgTypeArray: PgType[Array[String255]] = PgTypes.textArray.bimap(xs => xs.map(String255.apply), xs => xs.map(_.value)) def truncate(value: String): String255 = new String255((if (value.length <= 255) value else value.substring(0, 255))) diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/precisetypes/String50.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/precisetypes/String50.scala index 1a7f81eb62..fdacdfe381 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/precisetypes/String50.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/precisetypes/String50.scala @@ -29,11 +29,11 @@ case class String50 private(@JsonValue value: String) extends StringN { object String50 { given bijection: Bijection[String50, String] = Bijection.apply[String50, String](_.value)(String50.apply) - given dbType: PgType[String50] = PgTypes.text.bimap(String50.apply, _.value) + def of(value: String): Option[String50] = (if (value.length <= 50) Some(new String50(value)) else None) - given dbTypeArray: PgType[Array[String50]] = PgTypes.textArray.bimap(xs => xs.map(String50.apply), xs => xs.map(_.value)) + given pgType: PgType[String50] = PgTypes.text.bimap(String50.apply, _.value) - def of(value: String): Option[String50] = (if (value.length <= 50) Some(new String50(value)) else None) + given pgTypeArray: PgType[Array[String50]] = PgTypes.textArray.bimap(xs => xs.map(String50.apply), xs => xs.map(_.value)) def truncate(value: String): String50 = new String50((if (value.length <= 50) value else value.substring(0, 50))) diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/product/ProductFields.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/product/ProductFields.scala index 74f94783a1..7852e853c2 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/product/ProductFields.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/product/ProductFields.scala @@ -41,7 +41,7 @@ class ProductFields(val `_path`: java.util.List[Path]) extends TupleExpr25[Produ None, Some("int4"), (row, value) => row.copy(productid = value), - ProductId.dbType + ProductId.pgType ) } @@ -53,7 +53,7 @@ class ProductFields(val `_path`: java.util.List[Path]) extends TupleExpr25[Produ None, Some("varchar"), (row, value) => row.copy(name = value), - Name.dbType + Name.pgType ) } @@ -77,7 +77,7 @@ class ProductFields(val `_path`: java.util.List[Path]) extends TupleExpr25[Produ None, Some("bool"), (row, value) => row.copy(makeflag = value), - Flag.dbType + Flag.pgType ) } @@ -89,7 +89,7 @@ class ProductFields(val `_path`: java.util.List[Path]) extends TupleExpr25[Produ None, Some("bool"), (row, value) => row.copy(finishedgoodsflag = value), - Flag.dbType + Flag.pgType ) } @@ -173,7 +173,7 @@ class ProductFields(val `_path`: java.util.List[Path]) extends TupleExpr25[Produ None, Some("bpchar"), (row, value) => row.copy(sizeunitmeasurecode = value), - UnitmeasureId.dbType + UnitmeasureId.pgType ) } @@ -185,7 +185,7 @@ class ProductFields(val `_path`: java.util.List[Path]) extends TupleExpr25[Produ None, Some("bpchar"), (row, value) => row.copy(weightunitmeasurecode = value), - UnitmeasureId.dbType + UnitmeasureId.pgType ) } @@ -257,7 +257,7 @@ class ProductFields(val `_path`: java.util.List[Path]) extends TupleExpr25[Produ None, Some("int4"), (row, value) => row.copy(productsubcategoryid = value), - ProductsubcategoryId.dbType + ProductsubcategoryId.pgType ) } @@ -269,7 +269,7 @@ class ProductFields(val `_path`: java.util.List[Path]) extends TupleExpr25[Produ None, Some("int4"), (row, value) => row.copy(productmodelid = value), - ProductmodelId.dbType + ProductmodelId.pgType ) } diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/product/ProductId.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/product/ProductId.scala index 4180d43d1b..ca96961f53 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/product/ProductId.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/product/ProductId.scala @@ -17,7 +17,7 @@ case class ProductId(@JsonValue value: Int) extends scala.AnyVal object ProductId { given bijection: Bijection[ProductId, Int] = Bijection.apply[ProductId, Int](_.value)(ProductId.apply) - given dbType: PgType[ProductId] = ScalaDbTypes.PgTypes.int4.bimap(ProductId.apply, _.value) + given pgType: PgType[ProductId] = ScalaDbTypes.PgTypes.int4.bimap(ProductId.apply, _.value) - given dbTypeArray: PgType[Array[ProductId]] = PgTypes.int4ArrayUnboxed.bimap(xs => xs.map(ProductId.apply), xs => xs.map(_.value)) + given pgTypeArray: PgType[Array[ProductId]] = PgTypes.int4ArrayUnboxed.bimap(xs => xs.map(ProductId.apply), xs => xs.map(_.value)) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/product/ProductRepoImpl.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/product/ProductRepoImpl.scala index f96bf0e40f..8eb2918e55 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/product/ProductRepoImpl.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/product/ProductRepoImpl.scala @@ -27,19 +27,19 @@ import dev.typr.foundations.scala.Fragment.sql class ProductRepoImpl extends ProductRepo { override def delete: DeleteBuilder[ProductFields, ProductRow] = DeleteBuilder.of(""""production"."product"""", ProductFields.structure, Dialect.POSTGRESQL) - override def deleteById(productid: ProductId)(using c: Connection): Boolean = sql"""delete from "production"."product" where "productid" = ${Fragment.encode(ProductId.dbType, productid)}""".update().runUnchecked(c) > 0 + override def deleteById(productid: ProductId)(using c: Connection): Boolean = sql"""delete from "production"."product" where "productid" = ${Fragment.encode(ProductId.pgType, productid)}""".update().runUnchecked(c) > 0 override def deleteByIds(productids: Array[ProductId])(using c: Connection): Int = { sql"""delete from "production"."product" - where "productid" = ANY(${Fragment.encode(ProductId.dbTypeArray, productids)})""" + where "productid" = ANY(${Fragment.encode(ProductId.pgTypeArray, productids)})""" .update() .runUnchecked(c) } override def insert(unsaved: ProductRow)(using 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") - values (${Fragment.encode(ProductId.dbType, unsaved.productid)}::int4, ${Fragment.encode(Name.dbType, unsaved.name)}::varchar, ${Fragment.encode(PgTypes.text, unsaved.productnumber)}, ${Fragment.encode(Flag.dbType, unsaved.makeflag)}::bool, ${Fragment.encode(Flag.dbType, unsaved.finishedgoodsflag)}::bool, ${Fragment.encode(PgTypes.text.nullable, unsaved.color)}, ${Fragment.encode(ScalaDbTypes.PgTypes.int2, unsaved.safetystocklevel)}::int2, ${Fragment.encode(ScalaDbTypes.PgTypes.int2, unsaved.reorderpoint)}::int2, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, unsaved.standardcost)}::numeric, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, unsaved.listprice)}::numeric, ${Fragment.encode(PgTypes.text.nullable, unsaved.size)}, ${Fragment.encode(UnitmeasureId.dbType.nullable, unsaved.sizeunitmeasurecode)}::bpchar, ${Fragment.encode(UnitmeasureId.dbType.nullable, unsaved.weightunitmeasurecode)}::bpchar, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric.nullable, unsaved.weight)}::numeric, ${Fragment.encode(ScalaDbTypes.PgTypes.int4, unsaved.daystomanufacture)}::int4, ${Fragment.encode(PgTypes.bpchar.nullable, unsaved.productline)}::bpchar, ${Fragment.encode(PgTypes.bpchar.nullable, unsaved.`class`)}::bpchar, ${Fragment.encode(PgTypes.bpchar.nullable, unsaved.style)}::bpchar, ${Fragment.encode(ProductsubcategoryId.dbType.nullable, unsaved.productsubcategoryid)}::int4, ${Fragment.encode(ProductmodelId.dbType.nullable, unsaved.productmodelid)}::int4, ${Fragment.encode(PgTypes.timestamp, unsaved.sellstartdate)}::timestamp, ${Fragment.encode(PgTypes.timestamp.nullable, unsaved.sellenddate)}::timestamp, ${Fragment.encode(PgTypes.timestamp.nullable, unsaved.discontinueddate)}::timestamp, ${Fragment.encode(PgTypes.uuid, unsaved.rowguid)}::uuid, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) + values (${Fragment.encode(ProductId.pgType, unsaved.productid)}::int4, ${Fragment.encode(Name.pgType, unsaved.name)}::varchar, ${Fragment.encode(PgTypes.text, unsaved.productnumber)}, ${Fragment.encode(Flag.pgType, unsaved.makeflag)}::bool, ${Fragment.encode(Flag.pgType, unsaved.finishedgoodsflag)}::bool, ${Fragment.encode(PgTypes.text.nullable, unsaved.color)}, ${Fragment.encode(ScalaDbTypes.PgTypes.int2, unsaved.safetystocklevel)}::int2, ${Fragment.encode(ScalaDbTypes.PgTypes.int2, unsaved.reorderpoint)}::int2, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, unsaved.standardcost)}::numeric, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, unsaved.listprice)}::numeric, ${Fragment.encode(PgTypes.text.nullable, unsaved.size)}, ${Fragment.encode(UnitmeasureId.pgType.nullable, unsaved.sizeunitmeasurecode)}::bpchar, ${Fragment.encode(UnitmeasureId.pgType.nullable, unsaved.weightunitmeasurecode)}::bpchar, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric.nullable, unsaved.weight)}::numeric, ${Fragment.encode(ScalaDbTypes.PgTypes.int4, unsaved.daystomanufacture)}::int4, ${Fragment.encode(PgTypes.bpchar.nullable, unsaved.productline)}::bpchar, ${Fragment.encode(PgTypes.bpchar.nullable, unsaved.`class`)}::bpchar, ${Fragment.encode(PgTypes.bpchar.nullable, unsaved.style)}::bpchar, ${Fragment.encode(ProductsubcategoryId.pgType.nullable, unsaved.productsubcategoryid)}::int4, ${Fragment.encode(ProductmodelId.pgType.nullable, unsaved.productmodelid)}::int4, ${Fragment.encode(PgTypes.timestamp, unsaved.sellstartdate)}::timestamp, ${Fragment.encode(PgTypes.timestamp.nullable, unsaved.sellenddate)}::timestamp, ${Fragment.encode(PgTypes.timestamp.nullable, unsaved.discontinueddate)}::timestamp, ${Fragment.encode(PgTypes.uuid, unsaved.rowguid)}::uuid, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) RETURNING "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" """ .updateReturning(ProductRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -49,7 +49,7 @@ class ProductRepoImpl extends ProductRepo { val columns: ListBuffer[Fragment] = ListBuffer() val values: ListBuffer[Fragment] = ListBuffer() columns.addOne(Fragment.lit(""""name"""")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(Name.dbType, unsaved.name)}::varchar"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(Name.pgType, unsaved.name)}::varchar"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""productnumber"""")): @scala.annotation.nowarn values.addOne(sql"${Fragment.encode(PgTypes.text, unsaved.productnumber)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""color"""")): @scala.annotation.nowarn @@ -65,9 +65,9 @@ class ProductRepoImpl extends ProductRepo { columns.addOne(Fragment.lit(""""size"""")): @scala.annotation.nowarn values.addOne(sql"${Fragment.encode(PgTypes.text.nullable, unsaved.size)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""sizeunitmeasurecode"""")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(UnitmeasureId.dbType.nullable, unsaved.sizeunitmeasurecode)}::bpchar"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(UnitmeasureId.pgType.nullable, unsaved.sizeunitmeasurecode)}::bpchar"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""weightunitmeasurecode"""")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(UnitmeasureId.dbType.nullable, unsaved.weightunitmeasurecode)}::bpchar"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(UnitmeasureId.pgType.nullable, unsaved.weightunitmeasurecode)}::bpchar"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""weight"""")): @scala.annotation.nowarn values.addOne(sql"${Fragment.encode(ScalaDbTypes.PgTypes.numeric.nullable, unsaved.weight)}::numeric"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""daystomanufacture"""")): @scala.annotation.nowarn @@ -79,9 +79,9 @@ class ProductRepoImpl extends ProductRepo { columns.addOne(Fragment.lit(""""style"""")): @scala.annotation.nowarn values.addOne(sql"${Fragment.encode(PgTypes.bpchar.nullable, unsaved.style)}::bpchar"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""productsubcategoryid"""")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(ProductsubcategoryId.dbType.nullable, unsaved.productsubcategoryid)}::int4"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(ProductsubcategoryId.pgType.nullable, unsaved.productsubcategoryid)}::int4"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""productmodelid"""")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(ProductmodelId.dbType.nullable, unsaved.productmodelid)}::int4"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(ProductmodelId.pgType.nullable, unsaved.productmodelid)}::int4"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""sellstartdate"""")): @scala.annotation.nowarn values.addOne(sql"${Fragment.encode(PgTypes.timestamp, unsaved.sellstartdate)}::timestamp"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""sellenddate"""")): @scala.annotation.nowarn @@ -90,15 +90,15 @@ class ProductRepoImpl extends ProductRepo { values.addOne(sql"${Fragment.encode(PgTypes.timestamp.nullable, unsaved.discontinueddate)}::timestamp"): @scala.annotation.nowarn unsaved.productid.visit( { }, - value => { columns.addOne(Fragment.lit(""""productid"""")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(ProductId.dbType, value)}::int4"): @scala.annotation.nowarn } + value => { columns.addOne(Fragment.lit(""""productid"""")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(ProductId.pgType, value)}::int4"): @scala.annotation.nowarn } ); unsaved.makeflag.visit( { }, - value => { columns.addOne(Fragment.lit(""""makeflag"""")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(Flag.dbType, value)}::bool"): @scala.annotation.nowarn } + value => { columns.addOne(Fragment.lit(""""makeflag"""")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(Flag.pgType, value)}::bool"): @scala.annotation.nowarn } ); unsaved.finishedgoodsflag.visit( { }, - value => { columns.addOne(Fragment.lit(""""finishedgoodsflag"""")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(Flag.dbType, value)}::bool"): @scala.annotation.nowarn } + value => { columns.addOne(Fragment.lit(""""finishedgoodsflag"""")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(Flag.pgType, value)}::bool"): @scala.annotation.nowarn } ); unsaved.rowguid.visit( { }, @@ -139,13 +139,13 @@ class ProductRepoImpl extends ProductRepo { override def selectById(productid: ProductId)(using c: Connection): Option[ProductRow] = { sql"""select "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" from "production"."product" - where "productid" = ${Fragment.encode(ProductId.dbType, productid)}""".query(ProductRow.`_rowParser`.first()).runUnchecked(c) + where "productid" = ${Fragment.encode(ProductId.pgType, productid)}""".query(ProductRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(productids: Array[ProductId])(using 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", "sellenddate", "discontinueddate", "rowguid", "modifieddate" from "production"."product" - where "productid" = ANY(${Fragment.encode(ProductId.dbTypeArray, productids)})""".query(ProductRow.`_rowParser`.all()).runUnchecked(c) + where "productid" = ANY(${Fragment.encode(ProductId.pgTypeArray, productids)})""".query(ProductRow.`_rowParser`.all()).runUnchecked(c) } override def selectByIdsTracked(productids: Array[ProductId])(using c: Connection): Map[ProductId, ProductRow] = { @@ -159,36 +159,36 @@ class ProductRepoImpl extends ProductRepo { override def update(row: ProductRow)(using c: Connection): Boolean = { val productid: ProductId = row.productid return sql"""update "production"."product" - set "name" = ${Fragment.encode(Name.dbType, row.name)}::varchar, + set "name" = ${Fragment.encode(Name.pgType, row.name)}::varchar, "productnumber" = ${Fragment.encode(PgTypes.text, row.productnumber)}, - "makeflag" = ${Fragment.encode(Flag.dbType, row.makeflag)}::bool, - "finishedgoodsflag" = ${Fragment.encode(Flag.dbType, row.finishedgoodsflag)}::bool, + "makeflag" = ${Fragment.encode(Flag.pgType, row.makeflag)}::bool, + "finishedgoodsflag" = ${Fragment.encode(Flag.pgType, row.finishedgoodsflag)}::bool, "color" = ${Fragment.encode(PgTypes.text.nullable, row.color)}, "safetystocklevel" = ${Fragment.encode(ScalaDbTypes.PgTypes.int2, row.safetystocklevel)}::int2, "reorderpoint" = ${Fragment.encode(ScalaDbTypes.PgTypes.int2, row.reorderpoint)}::int2, "standardcost" = ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, row.standardcost)}::numeric, "listprice" = ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, row.listprice)}::numeric, "size" = ${Fragment.encode(PgTypes.text.nullable, row.size)}, - "sizeunitmeasurecode" = ${Fragment.encode(UnitmeasureId.dbType.nullable, row.sizeunitmeasurecode)}::bpchar, - "weightunitmeasurecode" = ${Fragment.encode(UnitmeasureId.dbType.nullable, row.weightunitmeasurecode)}::bpchar, + "sizeunitmeasurecode" = ${Fragment.encode(UnitmeasureId.pgType.nullable, row.sizeunitmeasurecode)}::bpchar, + "weightunitmeasurecode" = ${Fragment.encode(UnitmeasureId.pgType.nullable, row.weightunitmeasurecode)}::bpchar, "weight" = ${Fragment.encode(ScalaDbTypes.PgTypes.numeric.nullable, row.weight)}::numeric, "daystomanufacture" = ${Fragment.encode(ScalaDbTypes.PgTypes.int4, row.daystomanufacture)}::int4, "productline" = ${Fragment.encode(PgTypes.bpchar.nullable, row.productline)}::bpchar, "class" = ${Fragment.encode(PgTypes.bpchar.nullable, row.`class`)}::bpchar, "style" = ${Fragment.encode(PgTypes.bpchar.nullable, row.style)}::bpchar, - "productsubcategoryid" = ${Fragment.encode(ProductsubcategoryId.dbType.nullable, row.productsubcategoryid)}::int4, - "productmodelid" = ${Fragment.encode(ProductmodelId.dbType.nullable, row.productmodelid)}::int4, + "productsubcategoryid" = ${Fragment.encode(ProductsubcategoryId.pgType.nullable, row.productsubcategoryid)}::int4, + "productmodelid" = ${Fragment.encode(ProductmodelId.pgType.nullable, row.productmodelid)}::int4, "sellstartdate" = ${Fragment.encode(PgTypes.timestamp, row.sellstartdate)}::timestamp, "sellenddate" = ${Fragment.encode(PgTypes.timestamp.nullable, row.sellenddate)}::timestamp, "discontinueddate" = ${Fragment.encode(PgTypes.timestamp.nullable, row.discontinueddate)}::timestamp, "rowguid" = ${Fragment.encode(PgTypes.uuid, row.rowguid)}::uuid, "modifieddate" = ${Fragment.encode(PgTypes.timestamp, row.modifieddate)}::timestamp - where "productid" = ${Fragment.encode(ProductId.dbType, productid)}""".update().runUnchecked(c) > 0 + where "productid" = ${Fragment.encode(ProductId.pgType, productid)}""".update().runUnchecked(c) > 0 } override def upsert(unsaved: ProductRow)(using 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") - values (${Fragment.encode(ProductId.dbType, unsaved.productid)}::int4, ${Fragment.encode(Name.dbType, unsaved.name)}::varchar, ${Fragment.encode(PgTypes.text, unsaved.productnumber)}, ${Fragment.encode(Flag.dbType, unsaved.makeflag)}::bool, ${Fragment.encode(Flag.dbType, unsaved.finishedgoodsflag)}::bool, ${Fragment.encode(PgTypes.text.nullable, unsaved.color)}, ${Fragment.encode(ScalaDbTypes.PgTypes.int2, unsaved.safetystocklevel)}::int2, ${Fragment.encode(ScalaDbTypes.PgTypes.int2, unsaved.reorderpoint)}::int2, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, unsaved.standardcost)}::numeric, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, unsaved.listprice)}::numeric, ${Fragment.encode(PgTypes.text.nullable, unsaved.size)}, ${Fragment.encode(UnitmeasureId.dbType.nullable, unsaved.sizeunitmeasurecode)}::bpchar, ${Fragment.encode(UnitmeasureId.dbType.nullable, unsaved.weightunitmeasurecode)}::bpchar, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric.nullable, unsaved.weight)}::numeric, ${Fragment.encode(ScalaDbTypes.PgTypes.int4, unsaved.daystomanufacture)}::int4, ${Fragment.encode(PgTypes.bpchar.nullable, unsaved.productline)}::bpchar, ${Fragment.encode(PgTypes.bpchar.nullable, unsaved.`class`)}::bpchar, ${Fragment.encode(PgTypes.bpchar.nullable, unsaved.style)}::bpchar, ${Fragment.encode(ProductsubcategoryId.dbType.nullable, unsaved.productsubcategoryid)}::int4, ${Fragment.encode(ProductmodelId.dbType.nullable, unsaved.productmodelid)}::int4, ${Fragment.encode(PgTypes.timestamp, unsaved.sellstartdate)}::timestamp, ${Fragment.encode(PgTypes.timestamp.nullable, unsaved.sellenddate)}::timestamp, ${Fragment.encode(PgTypes.timestamp.nullable, unsaved.discontinueddate)}::timestamp, ${Fragment.encode(PgTypes.uuid, unsaved.rowguid)}::uuid, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) + values (${Fragment.encode(ProductId.pgType, unsaved.productid)}::int4, ${Fragment.encode(Name.pgType, unsaved.name)}::varchar, ${Fragment.encode(PgTypes.text, unsaved.productnumber)}, ${Fragment.encode(Flag.pgType, unsaved.makeflag)}::bool, ${Fragment.encode(Flag.pgType, unsaved.finishedgoodsflag)}::bool, ${Fragment.encode(PgTypes.text.nullable, unsaved.color)}, ${Fragment.encode(ScalaDbTypes.PgTypes.int2, unsaved.safetystocklevel)}::int2, ${Fragment.encode(ScalaDbTypes.PgTypes.int2, unsaved.reorderpoint)}::int2, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, unsaved.standardcost)}::numeric, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, unsaved.listprice)}::numeric, ${Fragment.encode(PgTypes.text.nullable, unsaved.size)}, ${Fragment.encode(UnitmeasureId.pgType.nullable, unsaved.sizeunitmeasurecode)}::bpchar, ${Fragment.encode(UnitmeasureId.pgType.nullable, unsaved.weightunitmeasurecode)}::bpchar, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric.nullable, unsaved.weight)}::numeric, ${Fragment.encode(ScalaDbTypes.PgTypes.int4, unsaved.daystomanufacture)}::int4, ${Fragment.encode(PgTypes.bpchar.nullable, unsaved.productline)}::bpchar, ${Fragment.encode(PgTypes.bpchar.nullable, unsaved.`class`)}::bpchar, ${Fragment.encode(PgTypes.bpchar.nullable, unsaved.style)}::bpchar, ${Fragment.encode(ProductsubcategoryId.pgType.nullable, unsaved.productsubcategoryid)}::int4, ${Fragment.encode(ProductmodelId.pgType.nullable, unsaved.productmodelid)}::int4, ${Fragment.encode(PgTypes.timestamp, unsaved.sellstartdate)}::timestamp, ${Fragment.encode(PgTypes.timestamp.nullable, unsaved.sellenddate)}::timestamp, ${Fragment.encode(PgTypes.timestamp.nullable, unsaved.discontinueddate)}::timestamp, ${Fragment.encode(PgTypes.uuid, unsaved.rowguid)}::uuid, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) on conflict ("productid") do update set "name" = EXCLUDED."name", diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/product/ProductRow.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/product/ProductRow.scala index 882d633606..4d0a64fa7e 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/product/ProductRow.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/product/ProductRow.scala @@ -203,7 +203,7 @@ case class ProductRow( } object ProductRow { - val `_rowParser`: RowParser[ProductRow] = RowParsers.of(ProductId.dbType, Name.dbType, PgTypes.text, Flag.dbType, Flag.dbType, PgTypes.text.nullable, ScalaDbTypes.PgTypes.int2, ScalaDbTypes.PgTypes.int2, ScalaDbTypes.PgTypes.numeric, ScalaDbTypes.PgTypes.numeric, PgTypes.text.nullable, UnitmeasureId.dbType.nullable, UnitmeasureId.dbType.nullable, ScalaDbTypes.PgTypes.numeric.nullable, ScalaDbTypes.PgTypes.int4, PgTypes.bpchar.nullable, PgTypes.bpchar.nullable, PgTypes.bpchar.nullable, ProductsubcategoryId.dbType.nullable, ProductmodelId.dbType.nullable, PgTypes.timestamp, PgTypes.timestamp.nullable, PgTypes.timestamp.nullable, PgTypes.uuid, PgTypes.timestamp)(ProductRow.apply)(row => Array[Any](row.productid, row.name, row.productnumber, row.makeflag, row.finishedgoodsflag, row.color, row.safetystocklevel, row.reorderpoint, row.standardcost, row.listprice, row.size, row.sizeunitmeasurecode, row.weightunitmeasurecode, row.weight, row.daystomanufacture, row.productline, row.`class`, row.style, row.productsubcategoryid, row.productmodelid, row.sellstartdate, row.sellenddate, row.discontinueddate, row.rowguid, row.modifieddate)) + val `_rowParser`: RowParser[ProductRow] = RowParsers.of(ProductId.pgType, Name.pgType, PgTypes.text, Flag.pgType, Flag.pgType, PgTypes.text.nullable, ScalaDbTypes.PgTypes.int2, ScalaDbTypes.PgTypes.int2, ScalaDbTypes.PgTypes.numeric, ScalaDbTypes.PgTypes.numeric, PgTypes.text.nullable, UnitmeasureId.pgType.nullable, UnitmeasureId.pgType.nullable, ScalaDbTypes.PgTypes.numeric.nullable, ScalaDbTypes.PgTypes.int4, PgTypes.bpchar.nullable, PgTypes.bpchar.nullable, PgTypes.bpchar.nullable, ProductsubcategoryId.pgType.nullable, ProductmodelId.pgType.nullable, PgTypes.timestamp, PgTypes.timestamp.nullable, PgTypes.timestamp.nullable, PgTypes.uuid, PgTypes.timestamp)(ProductRow.apply)(row => Array[Any](row.productid, row.name, row.productnumber, row.makeflag, row.finishedgoodsflag, row.color, row.safetystocklevel, row.reorderpoint, row.standardcost, row.listprice, row.size, row.sizeunitmeasurecode, row.weightunitmeasurecode, row.weight, row.daystomanufacture, row.productline, row.`class`, row.style, row.productsubcategoryid, row.productmodelid, row.sellstartdate, row.sellenddate, row.discontinueddate, row.rowguid, row.modifieddate)) given pgText: PgText[ProductRow] = PgText.from(`_rowParser`.underlying) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/product/ProductRowUnsaved.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/product/ProductRowUnsaved.scala index 14e816d0c3..43c5f01470 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/product/ProductRowUnsaved.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/product/ProductRowUnsaved.scala @@ -146,5 +146,5 @@ case class ProductRowUnsaved( } object ProductRowUnsaved { - given pgText: PgText[ProductRowUnsaved] = PgText.instance((row, sb) => { Name.dbType.text.unsafeEncode(row.name, sb); sb.append(PgText.DELIMETER); PgTypes.text.text.unsafeEncode(row.productnumber, sb); sb.append(PgText.DELIMETER); PgTypes.text.nullable.text.unsafeEncode(row.color, sb); sb.append(PgText.DELIMETER); ScalaDbTypes.PgTypes.int2.text.unsafeEncode(row.safetystocklevel, sb); sb.append(PgText.DELIMETER); ScalaDbTypes.PgTypes.int2.text.unsafeEncode(row.reorderpoint, sb); sb.append(PgText.DELIMETER); ScalaDbTypes.PgTypes.numeric.text.unsafeEncode(row.standardcost, sb); sb.append(PgText.DELIMETER); ScalaDbTypes.PgTypes.numeric.text.unsafeEncode(row.listprice, sb); sb.append(PgText.DELIMETER); PgTypes.text.nullable.text.unsafeEncode(row.size, sb); sb.append(PgText.DELIMETER); UnitmeasureId.dbType.nullable.text.unsafeEncode(row.sizeunitmeasurecode, sb); sb.append(PgText.DELIMETER); UnitmeasureId.dbType.nullable.text.unsafeEncode(row.weightunitmeasurecode, sb); sb.append(PgText.DELIMETER); ScalaDbTypes.PgTypes.numeric.nullable.text.unsafeEncode(row.weight, sb); sb.append(PgText.DELIMETER); ScalaDbTypes.PgTypes.int4.text.unsafeEncode(row.daystomanufacture, sb); sb.append(PgText.DELIMETER); PgTypes.bpchar.nullable.text.unsafeEncode(row.productline, sb); sb.append(PgText.DELIMETER); PgTypes.bpchar.nullable.text.unsafeEncode(row.`class`, sb); sb.append(PgText.DELIMETER); PgTypes.bpchar.nullable.text.unsafeEncode(row.style, sb); sb.append(PgText.DELIMETER); ProductsubcategoryId.dbType.nullable.text.unsafeEncode(row.productsubcategoryid, sb); sb.append(PgText.DELIMETER); ProductmodelId.dbType.nullable.text.unsafeEncode(row.productmodelid, sb); sb.append(PgText.DELIMETER); PgTypes.timestamp.text.unsafeEncode(row.sellstartdate, sb); sb.append(PgText.DELIMETER); PgTypes.timestamp.nullable.text.unsafeEncode(row.sellenddate, sb); sb.append(PgText.DELIMETER); PgTypes.timestamp.nullable.text.unsafeEncode(row.discontinueddate, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using ProductId.dbType.text).unsafeEncode(row.productid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using Flag.dbType.text).unsafeEncode(row.makeflag, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using Flag.dbType.text).unsafeEncode(row.finishedgoodsflag, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.uuid.text).unsafeEncode(row.rowguid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) + given pgText: PgText[ProductRowUnsaved] = PgText.instance((row, sb) => { Name.pgType.text.unsafeEncode(row.name, sb); sb.append(PgText.DELIMETER); PgTypes.text.text.unsafeEncode(row.productnumber, sb); sb.append(PgText.DELIMETER); PgTypes.text.nullable.text.unsafeEncode(row.color, sb); sb.append(PgText.DELIMETER); ScalaDbTypes.PgTypes.int2.text.unsafeEncode(row.safetystocklevel, sb); sb.append(PgText.DELIMETER); ScalaDbTypes.PgTypes.int2.text.unsafeEncode(row.reorderpoint, sb); sb.append(PgText.DELIMETER); ScalaDbTypes.PgTypes.numeric.text.unsafeEncode(row.standardcost, sb); sb.append(PgText.DELIMETER); ScalaDbTypes.PgTypes.numeric.text.unsafeEncode(row.listprice, sb); sb.append(PgText.DELIMETER); PgTypes.text.nullable.text.unsafeEncode(row.size, sb); sb.append(PgText.DELIMETER); UnitmeasureId.pgType.nullable.text.unsafeEncode(row.sizeunitmeasurecode, sb); sb.append(PgText.DELIMETER); UnitmeasureId.pgType.nullable.text.unsafeEncode(row.weightunitmeasurecode, sb); sb.append(PgText.DELIMETER); ScalaDbTypes.PgTypes.numeric.nullable.text.unsafeEncode(row.weight, sb); sb.append(PgText.DELIMETER); ScalaDbTypes.PgTypes.int4.text.unsafeEncode(row.daystomanufacture, sb); sb.append(PgText.DELIMETER); PgTypes.bpchar.nullable.text.unsafeEncode(row.productline, sb); sb.append(PgText.DELIMETER); PgTypes.bpchar.nullable.text.unsafeEncode(row.`class`, sb); sb.append(PgText.DELIMETER); PgTypes.bpchar.nullable.text.unsafeEncode(row.style, sb); sb.append(PgText.DELIMETER); ProductsubcategoryId.pgType.nullable.text.unsafeEncode(row.productsubcategoryid, sb); sb.append(PgText.DELIMETER); ProductmodelId.pgType.nullable.text.unsafeEncode(row.productmodelid, sb); sb.append(PgText.DELIMETER); PgTypes.timestamp.text.unsafeEncode(row.sellstartdate, sb); sb.append(PgText.DELIMETER); PgTypes.timestamp.nullable.text.unsafeEncode(row.sellenddate, sb); sb.append(PgText.DELIMETER); PgTypes.timestamp.nullable.text.unsafeEncode(row.discontinueddate, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using ProductId.pgType.text).unsafeEncode(row.productid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using Flag.pgType.text).unsafeEncode(row.makeflag, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using Flag.pgType.text).unsafeEncode(row.finishedgoodsflag, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.uuid.text).unsafeEncode(row.rowguid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryFields.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryFields.scala index 7ae5a70fcc..a71e1f5a91 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryFields.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryFields.scala @@ -28,7 +28,7 @@ class ProductcategoryFields(val `_path`: java.util.List[Path]) extends TupleExpr None, Some("int4"), (row, value) => row.copy(productcategoryid = value), - ProductcategoryId.dbType + ProductcategoryId.pgType ) } @@ -40,7 +40,7 @@ class ProductcategoryFields(val `_path`: java.util.List[Path]) extends TupleExpr None, Some("varchar"), (row, value) => row.copy(name = value), - Name.dbType + Name.pgType ) } diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryId.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryId.scala index 8eeca0f205..e4af82d248 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryId.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryId.scala @@ -17,7 +17,7 @@ case class ProductcategoryId(@JsonValue value: Int) extends scala.AnyVal object ProductcategoryId { given bijection: Bijection[ProductcategoryId, Int] = Bijection.apply[ProductcategoryId, Int](_.value)(ProductcategoryId.apply) - given dbType: PgType[ProductcategoryId] = ScalaDbTypes.PgTypes.int4.bimap(ProductcategoryId.apply, _.value) + given pgType: PgType[ProductcategoryId] = ScalaDbTypes.PgTypes.int4.bimap(ProductcategoryId.apply, _.value) - given dbTypeArray: PgType[Array[ProductcategoryId]] = PgTypes.int4ArrayUnboxed.bimap(xs => xs.map(ProductcategoryId.apply), xs => xs.map(_.value)) + given pgTypeArray: PgType[Array[ProductcategoryId]] = PgTypes.int4ArrayUnboxed.bimap(xs => xs.map(ProductcategoryId.apply), xs => xs.map(_.value)) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRepoImpl.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRepoImpl.scala index c5afb4e218..22bf4f7d24 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRepoImpl.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRepoImpl.scala @@ -21,19 +21,19 @@ import dev.typr.foundations.scala.Fragment.sql class ProductcategoryRepoImpl extends ProductcategoryRepo { override def delete: DeleteBuilder[ProductcategoryFields, ProductcategoryRow] = DeleteBuilder.of(""""production"."productcategory"""", ProductcategoryFields.structure, Dialect.POSTGRESQL) - override def deleteById(productcategoryid: ProductcategoryId)(using c: Connection): Boolean = sql"""delete from "production"."productcategory" where "productcategoryid" = ${Fragment.encode(ProductcategoryId.dbType, productcategoryid)}""".update().runUnchecked(c) > 0 + override def deleteById(productcategoryid: ProductcategoryId)(using c: Connection): Boolean = sql"""delete from "production"."productcategory" where "productcategoryid" = ${Fragment.encode(ProductcategoryId.pgType, productcategoryid)}""".update().runUnchecked(c) > 0 override def deleteByIds(productcategoryids: Array[ProductcategoryId])(using c: Connection): Int = { sql"""delete from "production"."productcategory" - where "productcategoryid" = ANY(${Fragment.encode(ProductcategoryId.dbTypeArray, productcategoryids)})""" + where "productcategoryid" = ANY(${Fragment.encode(ProductcategoryId.pgTypeArray, productcategoryids)})""" .update() .runUnchecked(c) } override def insert(unsaved: ProductcategoryRow)(using c: Connection): ProductcategoryRow = { sql"""insert into "production"."productcategory"("productcategoryid", "name", "rowguid", "modifieddate") - values (${Fragment.encode(ProductcategoryId.dbType, unsaved.productcategoryid)}::int4, ${Fragment.encode(Name.dbType, unsaved.name)}::varchar, ${Fragment.encode(PgTypes.uuid, unsaved.rowguid)}::uuid, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) + values (${Fragment.encode(ProductcategoryId.pgType, unsaved.productcategoryid)}::int4, ${Fragment.encode(Name.pgType, unsaved.name)}::varchar, ${Fragment.encode(PgTypes.uuid, unsaved.rowguid)}::uuid, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) RETURNING "productcategoryid", "name", "rowguid", "modifieddate" """ .updateReturning(ProductcategoryRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -43,10 +43,10 @@ class ProductcategoryRepoImpl extends ProductcategoryRepo { val columns: ListBuffer[Fragment] = ListBuffer() val values: ListBuffer[Fragment] = ListBuffer() columns.addOne(Fragment.lit(""""name"""")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(Name.dbType, unsaved.name)}::varchar"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(Name.pgType, unsaved.name)}::varchar"): @scala.annotation.nowarn unsaved.productcategoryid.visit( { }, - value => { columns.addOne(Fragment.lit(""""productcategoryid"""")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(ProductcategoryId.dbType, value)}::int4"): @scala.annotation.nowarn } + value => { columns.addOne(Fragment.lit(""""productcategoryid"""")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(ProductcategoryId.pgType, value)}::int4"): @scala.annotation.nowarn } ); unsaved.rowguid.visit( { }, @@ -87,13 +87,13 @@ class ProductcategoryRepoImpl extends ProductcategoryRepo { override def selectById(productcategoryid: ProductcategoryId)(using c: Connection): Option[ProductcategoryRow] = { sql"""select "productcategoryid", "name", "rowguid", "modifieddate" from "production"."productcategory" - where "productcategoryid" = ${Fragment.encode(ProductcategoryId.dbType, productcategoryid)}""".query(ProductcategoryRow.`_rowParser`.first()).runUnchecked(c) + where "productcategoryid" = ${Fragment.encode(ProductcategoryId.pgType, productcategoryid)}""".query(ProductcategoryRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(productcategoryids: Array[ProductcategoryId])(using c: Connection): List[ProductcategoryRow] = { sql"""select "productcategoryid", "name", "rowguid", "modifieddate" from "production"."productcategory" - where "productcategoryid" = ANY(${Fragment.encode(ProductcategoryId.dbTypeArray, productcategoryids)})""".query(ProductcategoryRow.`_rowParser`.all()).runUnchecked(c) + where "productcategoryid" = ANY(${Fragment.encode(ProductcategoryId.pgTypeArray, productcategoryids)})""".query(ProductcategoryRow.`_rowParser`.all()).runUnchecked(c) } override def selectByIdsTracked(productcategoryids: Array[ProductcategoryId])(using c: Connection): Map[ProductcategoryId, ProductcategoryRow] = { @@ -107,15 +107,15 @@ class ProductcategoryRepoImpl extends ProductcategoryRepo { override def update(row: ProductcategoryRow)(using c: Connection): Boolean = { val productcategoryid: ProductcategoryId = row.productcategoryid return sql"""update "production"."productcategory" - set "name" = ${Fragment.encode(Name.dbType, row.name)}::varchar, + set "name" = ${Fragment.encode(Name.pgType, row.name)}::varchar, "rowguid" = ${Fragment.encode(PgTypes.uuid, row.rowguid)}::uuid, "modifieddate" = ${Fragment.encode(PgTypes.timestamp, row.modifieddate)}::timestamp - where "productcategoryid" = ${Fragment.encode(ProductcategoryId.dbType, productcategoryid)}""".update().runUnchecked(c) > 0 + where "productcategoryid" = ${Fragment.encode(ProductcategoryId.pgType, productcategoryid)}""".update().runUnchecked(c) > 0 } override def upsert(unsaved: ProductcategoryRow)(using c: Connection): ProductcategoryRow = { sql"""insert into "production"."productcategory"("productcategoryid", "name", "rowguid", "modifieddate") - values (${Fragment.encode(ProductcategoryId.dbType, unsaved.productcategoryid)}::int4, ${Fragment.encode(Name.dbType, unsaved.name)}::varchar, ${Fragment.encode(PgTypes.uuid, unsaved.rowguid)}::uuid, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) + values (${Fragment.encode(ProductcategoryId.pgType, unsaved.productcategoryid)}::int4, ${Fragment.encode(Name.pgType, unsaved.name)}::varchar, ${Fragment.encode(PgTypes.uuid, unsaved.rowguid)}::uuid, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) on conflict ("productcategoryid") do update set "name" = EXCLUDED."name", diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRow.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRow.scala index 19d727b729..030e80e324 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRow.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRow.scala @@ -56,7 +56,7 @@ case class ProductcategoryRow( } object ProductcategoryRow { - val `_rowParser`: RowParser[ProductcategoryRow] = RowParsers.of(ProductcategoryId.dbType, Name.dbType, PgTypes.uuid, PgTypes.timestamp)(ProductcategoryRow.apply)(row => Array[Any](row.productcategoryid, row.name, row.rowguid, row.modifieddate)) + val `_rowParser`: RowParser[ProductcategoryRow] = RowParsers.of(ProductcategoryId.pgType, Name.pgType, PgTypes.uuid, PgTypes.timestamp)(ProductcategoryRow.apply)(row => Array[Any](row.productcategoryid, row.name, row.rowguid, row.modifieddate)) given pgText: PgText[ProductcategoryRow] = PgText.from(`_rowParser`.underlying) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRowUnsaved.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRowUnsaved.scala index c3be642029..2011035dcb 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRowUnsaved.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRowUnsaved.scala @@ -41,5 +41,5 @@ case class ProductcategoryRowUnsaved( } object ProductcategoryRowUnsaved { - given pgText: PgText[ProductcategoryRowUnsaved] = PgText.instance((row, sb) => { Name.dbType.text.unsafeEncode(row.name, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using ProductcategoryId.dbType.text).unsafeEncode(row.productcategoryid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.uuid.text).unsafeEncode(row.rowguid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) + given pgText: PgText[ProductcategoryRowUnsaved] = PgText.instance((row, sb) => { Name.pgType.text.unsafeEncode(row.name, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using ProductcategoryId.pgType.text).unsafeEncode(row.productcategoryid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.uuid.text).unsafeEncode(row.rowguid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryFields.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryFields.scala index cc7d458042..a5e8d17ab5 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryFields.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryFields.scala @@ -33,7 +33,7 @@ class ProductcosthistoryFields(val `_path`: java.util.List[Path]) extends TupleE None, Some("int4"), (row, value) => row.copy(productid = value), - ProductId.dbType + ProductId.pgType ) } diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryId.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryId.scala index be57ee990a..29d7592cd5 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryId.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryId.scala @@ -23,5 +23,5 @@ case class ProductcosthistoryId( } object ProductcosthistoryId { - val `_rowParser`: RowParser[ProductcosthistoryId] = RowParsers.of(ProductId.dbType, PgTypes.timestamp)(ProductcosthistoryId.apply)(row => Array[Any](row.productid, row.startdate)) + val `_rowParser`: RowParser[ProductcosthistoryId] = RowParsers.of(ProductId.pgType, PgTypes.timestamp)(ProductcosthistoryId.apply)(row => Array[Any](row.productid, row.startdate)) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRepoImpl.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRepoImpl.scala index e7a644adb9..c77a66339a 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRepoImpl.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRepoImpl.scala @@ -24,7 +24,7 @@ import dev.typr.foundations.scala.Fragment.sql class ProductcosthistoryRepoImpl extends ProductcosthistoryRepo { override def delete: DeleteBuilder[ProductcosthistoryFields, ProductcosthistoryRow] = DeleteBuilder.of(""""production"."productcosthistory"""", ProductcosthistoryFields.structure, Dialect.POSTGRESQL) - override def deleteById(compositeId: ProductcosthistoryId)(using c: Connection): Boolean = sql"""delete from "production"."productcosthistory" where "productid" = ${Fragment.encode(ProductId.dbType, compositeId.productid)} AND "startdate" = ${Fragment.encode(PgTypes.timestamp, compositeId.startdate)}""".update().runUnchecked(c) > 0 + override def deleteById(compositeId: ProductcosthistoryId)(using c: Connection): Boolean = sql"""delete from "production"."productcosthistory" where "productid" = ${Fragment.encode(ProductId.pgType, compositeId.productid)} AND "startdate" = ${Fragment.encode(PgTypes.timestamp, compositeId.startdate)}""".update().runUnchecked(c) > 0 override def deleteByIds(compositeIds: Array[ProductcosthistoryId])(using c: Connection): Int = { val productid: Array[ProductId] = compositeIds.map(_.productid) @@ -32,13 +32,13 @@ class ProductcosthistoryRepoImpl extends ProductcosthistoryRepo { return sql"""delete from "production"."productcosthistory" where ("productid", "startdate") - in (select * from unnest(${Fragment.encode(ProductId.dbTypeArray, productid)}, ${Fragment.encode(PgTypes.timestampArray, startdate)})) + in (select * from unnest(${Fragment.encode(ProductId.pgTypeArray, productid)}, ${Fragment.encode(PgTypes.timestampArray, startdate)})) """.update().runUnchecked(c) } override def insert(unsaved: ProductcosthistoryRow)(using c: Connection): ProductcosthistoryRow = { sql"""insert into "production"."productcosthistory"("productid", "startdate", "enddate", "standardcost", "modifieddate") - values (${Fragment.encode(ProductId.dbType, unsaved.productid)}::int4, ${Fragment.encode(PgTypes.timestamp, unsaved.startdate)}::timestamp, ${Fragment.encode(PgTypes.timestamp.nullable, unsaved.enddate)}::timestamp, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, unsaved.standardcost)}::numeric, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) + values (${Fragment.encode(ProductId.pgType, unsaved.productid)}::int4, ${Fragment.encode(PgTypes.timestamp, unsaved.startdate)}::timestamp, ${Fragment.encode(PgTypes.timestamp.nullable, unsaved.enddate)}::timestamp, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, unsaved.standardcost)}::numeric, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) RETURNING "productid", "startdate", "enddate", "standardcost", "modifieddate" """ .updateReturning(ProductcosthistoryRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -48,7 +48,7 @@ class ProductcosthistoryRepoImpl extends ProductcosthistoryRepo { val columns: ListBuffer[Fragment] = ListBuffer() val values: ListBuffer[Fragment] = ListBuffer() columns.addOne(Fragment.lit(""""productid"""")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(ProductId.dbType, unsaved.productid)}::int4"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(ProductId.pgType, unsaved.productid)}::int4"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""startdate"""")): @scala.annotation.nowarn values.addOne(sql"${Fragment.encode(PgTypes.timestamp, unsaved.startdate)}::timestamp"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""enddate"""")): @scala.annotation.nowarn @@ -90,7 +90,7 @@ class ProductcosthistoryRepoImpl extends ProductcosthistoryRepo { override def selectById(compositeId: ProductcosthistoryId)(using c: Connection): Option[ProductcosthistoryRow] = { sql"""select "productid", "startdate", "enddate", "standardcost", "modifieddate" from "production"."productcosthistory" - where "productid" = ${Fragment.encode(ProductId.dbType, compositeId.productid)} AND "startdate" = ${Fragment.encode(PgTypes.timestamp, compositeId.startdate)}""".query(ProductcosthistoryRow.`_rowParser`.first()).runUnchecked(c) + where "productid" = ${Fragment.encode(ProductId.pgType, compositeId.productid)} AND "startdate" = ${Fragment.encode(PgTypes.timestamp, compositeId.startdate)}""".query(ProductcosthistoryRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(compositeIds: Array[ProductcosthistoryId])(using c: Connection): List[ProductcosthistoryRow] = { @@ -99,7 +99,7 @@ class ProductcosthistoryRepoImpl extends ProductcosthistoryRepo { return sql"""select "productid", "startdate", "enddate", "standardcost", "modifieddate" from "production"."productcosthistory" where ("productid", "startdate") - in (select * from unnest(${Fragment.encode(ProductId.dbTypeArray, productid)}, ${Fragment.encode(PgTypes.timestampArray, startdate)})) + in (select * from unnest(${Fragment.encode(ProductId.pgTypeArray, productid)}, ${Fragment.encode(PgTypes.timestampArray, startdate)})) """.query(ProductcosthistoryRow.`_rowParser`.all()).runUnchecked(c) } @@ -117,12 +117,12 @@ class ProductcosthistoryRepoImpl extends ProductcosthistoryRepo { set "enddate" = ${Fragment.encode(PgTypes.timestamp.nullable, row.enddate)}::timestamp, "standardcost" = ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, row.standardcost)}::numeric, "modifieddate" = ${Fragment.encode(PgTypes.timestamp, row.modifieddate)}::timestamp - where "productid" = ${Fragment.encode(ProductId.dbType, compositeId.productid)} AND "startdate" = ${Fragment.encode(PgTypes.timestamp, compositeId.startdate)}""".update().runUnchecked(c) > 0 + where "productid" = ${Fragment.encode(ProductId.pgType, compositeId.productid)} AND "startdate" = ${Fragment.encode(PgTypes.timestamp, compositeId.startdate)}""".update().runUnchecked(c) > 0 } override def upsert(unsaved: ProductcosthistoryRow)(using c: Connection): ProductcosthistoryRow = { sql"""insert into "production"."productcosthistory"("productid", "startdate", "enddate", "standardcost", "modifieddate") - values (${Fragment.encode(ProductId.dbType, unsaved.productid)}::int4, ${Fragment.encode(PgTypes.timestamp, unsaved.startdate)}::timestamp, ${Fragment.encode(PgTypes.timestamp.nullable, unsaved.enddate)}::timestamp, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, unsaved.standardcost)}::numeric, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) + values (${Fragment.encode(ProductId.pgType, unsaved.productid)}::int4, ${Fragment.encode(PgTypes.timestamp, unsaved.startdate)}::timestamp, ${Fragment.encode(PgTypes.timestamp.nullable, unsaved.enddate)}::timestamp, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, unsaved.standardcost)}::numeric, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) on conflict ("productid", "startdate") do update set "enddate" = EXCLUDED."enddate", diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRow.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRow.scala index a8044bf648..648caa3f30 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRow.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRow.scala @@ -66,7 +66,7 @@ case class ProductcosthistoryRow( } object ProductcosthistoryRow { - val `_rowParser`: RowParser[ProductcosthistoryRow] = RowParsers.of(ProductId.dbType, PgTypes.timestamp, PgTypes.timestamp.nullable, ScalaDbTypes.PgTypes.numeric, PgTypes.timestamp)(ProductcosthistoryRow.apply)(row => Array[Any](row.productid, row.startdate, row.enddate, row.standardcost, row.modifieddate)) + val `_rowParser`: RowParser[ProductcosthistoryRow] = RowParsers.of(ProductId.pgType, PgTypes.timestamp, PgTypes.timestamp.nullable, ScalaDbTypes.PgTypes.numeric, PgTypes.timestamp)(ProductcosthistoryRow.apply)(row => Array[Any](row.productid, row.startdate, row.enddate, row.standardcost, row.modifieddate)) def apply( compositeId: ProductcosthistoryId, diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRowUnsaved.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRowUnsaved.scala index 6bb5b43efc..4771ef1880 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRowUnsaved.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRowUnsaved.scala @@ -47,5 +47,5 @@ case class ProductcosthistoryRowUnsaved( } object ProductcosthistoryRowUnsaved { - given pgText: PgText[ProductcosthistoryRowUnsaved] = PgText.instance((row, sb) => { ProductId.dbType.text.unsafeEncode(row.productid, sb); sb.append(PgText.DELIMETER); PgTypes.timestamp.text.unsafeEncode(row.startdate, sb); sb.append(PgText.DELIMETER); PgTypes.timestamp.nullable.text.unsafeEncode(row.enddate, sb); sb.append(PgText.DELIMETER); ScalaDbTypes.PgTypes.numeric.text.unsafeEncode(row.standardcost, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) + given pgText: PgText[ProductcosthistoryRowUnsaved] = PgText.instance((row, sb) => { ProductId.pgType.text.unsafeEncode(row.productid, sb); sb.append(PgText.DELIMETER); PgTypes.timestamp.text.unsafeEncode(row.startdate, sb); sb.append(PgText.DELIMETER); PgTypes.timestamp.nullable.text.unsafeEncode(row.enddate, sb); sb.append(PgText.DELIMETER); ScalaDbTypes.PgTypes.numeric.text.unsafeEncode(row.standardcost, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelFields.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelFields.scala index 07b56b03b7..8e12b03009 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelFields.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelFields.scala @@ -30,7 +30,7 @@ class ProductmodelFields(val `_path`: java.util.List[Path]) extends TupleExpr6[P None, Some("int4"), (row, value) => row.copy(productmodelid = value), - ProductmodelId.dbType + ProductmodelId.pgType ) } @@ -42,7 +42,7 @@ class ProductmodelFields(val `_path`: java.util.List[Path]) extends TupleExpr6[P None, Some("varchar"), (row, value) => row.copy(name = value), - Name.dbType + Name.pgType ) } diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelId.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelId.scala index 8b753c9839..760e67cbf9 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelId.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelId.scala @@ -17,7 +17,7 @@ case class ProductmodelId(@JsonValue value: Int) extends scala.AnyVal object ProductmodelId { given bijection: Bijection[ProductmodelId, Int] = Bijection.apply[ProductmodelId, Int](_.value)(ProductmodelId.apply) - given dbType: PgType[ProductmodelId] = ScalaDbTypes.PgTypes.int4.bimap(ProductmodelId.apply, _.value) + given pgType: PgType[ProductmodelId] = ScalaDbTypes.PgTypes.int4.bimap(ProductmodelId.apply, _.value) - given dbTypeArray: PgType[Array[ProductmodelId]] = PgTypes.int4ArrayUnboxed.bimap(xs => xs.map(ProductmodelId.apply), xs => xs.map(_.value)) + given pgTypeArray: PgType[Array[ProductmodelId]] = PgTypes.int4ArrayUnboxed.bimap(xs => xs.map(ProductmodelId.apply), xs => xs.map(_.value)) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRepoImpl.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRepoImpl.scala index 69d8aaf055..9b83090651 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRepoImpl.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRepoImpl.scala @@ -22,19 +22,19 @@ import dev.typr.foundations.scala.Fragment.sql class ProductmodelRepoImpl extends ProductmodelRepo { override def delete: DeleteBuilder[ProductmodelFields, ProductmodelRow] = DeleteBuilder.of(""""production"."productmodel"""", ProductmodelFields.structure, Dialect.POSTGRESQL) - override def deleteById(productmodelid: ProductmodelId)(using c: Connection): Boolean = sql"""delete from "production"."productmodel" where "productmodelid" = ${Fragment.encode(ProductmodelId.dbType, productmodelid)}""".update().runUnchecked(c) > 0 + override def deleteById(productmodelid: ProductmodelId)(using c: Connection): Boolean = sql"""delete from "production"."productmodel" where "productmodelid" = ${Fragment.encode(ProductmodelId.pgType, productmodelid)}""".update().runUnchecked(c) > 0 override def deleteByIds(productmodelids: Array[ProductmodelId])(using c: Connection): Int = { sql"""delete from "production"."productmodel" - where "productmodelid" = ANY(${Fragment.encode(ProductmodelId.dbTypeArray, productmodelids)})""" + where "productmodelid" = ANY(${Fragment.encode(ProductmodelId.pgTypeArray, productmodelids)})""" .update() .runUnchecked(c) } override def insert(unsaved: ProductmodelRow)(using c: Connection): ProductmodelRow = { sql"""insert into "production"."productmodel"("productmodelid", "name", "catalogdescription", "instructions", "rowguid", "modifieddate") - values (${Fragment.encode(ProductmodelId.dbType, unsaved.productmodelid)}::int4, ${Fragment.encode(Name.dbType, unsaved.name)}::varchar, ${Fragment.encode(PgTypes.xml.nullable, unsaved.catalogdescription)}::xml, ${Fragment.encode(PgTypes.xml.nullable, unsaved.instructions)}::xml, ${Fragment.encode(PgTypes.uuid, unsaved.rowguid)}::uuid, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) + values (${Fragment.encode(ProductmodelId.pgType, unsaved.productmodelid)}::int4, ${Fragment.encode(Name.pgType, unsaved.name)}::varchar, ${Fragment.encode(PgTypes.xml.nullable, unsaved.catalogdescription)}::xml, ${Fragment.encode(PgTypes.xml.nullable, unsaved.instructions)}::xml, ${Fragment.encode(PgTypes.uuid, unsaved.rowguid)}::uuid, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) RETURNING "productmodelid", "name", "catalogdescription", "instructions", "rowguid", "modifieddate" """ .updateReturning(ProductmodelRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -44,14 +44,14 @@ class ProductmodelRepoImpl extends ProductmodelRepo { val columns: ListBuffer[Fragment] = ListBuffer() val values: ListBuffer[Fragment] = ListBuffer() columns.addOne(Fragment.lit(""""name"""")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(Name.dbType, unsaved.name)}::varchar"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(Name.pgType, unsaved.name)}::varchar"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""catalogdescription"""")): @scala.annotation.nowarn values.addOne(sql"${Fragment.encode(PgTypes.xml.nullable, unsaved.catalogdescription)}::xml"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""instructions"""")): @scala.annotation.nowarn values.addOne(sql"${Fragment.encode(PgTypes.xml.nullable, unsaved.instructions)}::xml"): @scala.annotation.nowarn unsaved.productmodelid.visit( { }, - value => { columns.addOne(Fragment.lit(""""productmodelid"""")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(ProductmodelId.dbType, value)}::int4"): @scala.annotation.nowarn } + value => { columns.addOne(Fragment.lit(""""productmodelid"""")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(ProductmodelId.pgType, value)}::int4"): @scala.annotation.nowarn } ); unsaved.rowguid.visit( { }, @@ -92,13 +92,13 @@ class ProductmodelRepoImpl extends ProductmodelRepo { override def selectById(productmodelid: ProductmodelId)(using c: Connection): Option[ProductmodelRow] = { sql"""select "productmodelid", "name", "catalogdescription", "instructions", "rowguid", "modifieddate" from "production"."productmodel" - where "productmodelid" = ${Fragment.encode(ProductmodelId.dbType, productmodelid)}""".query(ProductmodelRow.`_rowParser`.first()).runUnchecked(c) + where "productmodelid" = ${Fragment.encode(ProductmodelId.pgType, productmodelid)}""".query(ProductmodelRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(productmodelids: Array[ProductmodelId])(using c: Connection): List[ProductmodelRow] = { sql"""select "productmodelid", "name", "catalogdescription", "instructions", "rowguid", "modifieddate" from "production"."productmodel" - where "productmodelid" = ANY(${Fragment.encode(ProductmodelId.dbTypeArray, productmodelids)})""".query(ProductmodelRow.`_rowParser`.all()).runUnchecked(c) + where "productmodelid" = ANY(${Fragment.encode(ProductmodelId.pgTypeArray, productmodelids)})""".query(ProductmodelRow.`_rowParser`.all()).runUnchecked(c) } override def selectByIdsTracked(productmodelids: Array[ProductmodelId])(using c: Connection): Map[ProductmodelId, ProductmodelRow] = { @@ -112,17 +112,17 @@ class ProductmodelRepoImpl extends ProductmodelRepo { override def update(row: ProductmodelRow)(using c: Connection): Boolean = { val productmodelid: ProductmodelId = row.productmodelid return sql"""update "production"."productmodel" - set "name" = ${Fragment.encode(Name.dbType, row.name)}::varchar, + set "name" = ${Fragment.encode(Name.pgType, row.name)}::varchar, "catalogdescription" = ${Fragment.encode(PgTypes.xml.nullable, row.catalogdescription)}::xml, "instructions" = ${Fragment.encode(PgTypes.xml.nullable, row.instructions)}::xml, "rowguid" = ${Fragment.encode(PgTypes.uuid, row.rowguid)}::uuid, "modifieddate" = ${Fragment.encode(PgTypes.timestamp, row.modifieddate)}::timestamp - where "productmodelid" = ${Fragment.encode(ProductmodelId.dbType, productmodelid)}""".update().runUnchecked(c) > 0 + where "productmodelid" = ${Fragment.encode(ProductmodelId.pgType, productmodelid)}""".update().runUnchecked(c) > 0 } override def upsert(unsaved: ProductmodelRow)(using c: Connection): ProductmodelRow = { sql"""insert into "production"."productmodel"("productmodelid", "name", "catalogdescription", "instructions", "rowguid", "modifieddate") - values (${Fragment.encode(ProductmodelId.dbType, unsaved.productmodelid)}::int4, ${Fragment.encode(Name.dbType, unsaved.name)}::varchar, ${Fragment.encode(PgTypes.xml.nullable, unsaved.catalogdescription)}::xml, ${Fragment.encode(PgTypes.xml.nullable, unsaved.instructions)}::xml, ${Fragment.encode(PgTypes.uuid, unsaved.rowguid)}::uuid, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) + values (${Fragment.encode(ProductmodelId.pgType, unsaved.productmodelid)}::int4, ${Fragment.encode(Name.pgType, unsaved.name)}::varchar, ${Fragment.encode(PgTypes.xml.nullable, unsaved.catalogdescription)}::xml, ${Fragment.encode(PgTypes.xml.nullable, unsaved.instructions)}::xml, ${Fragment.encode(PgTypes.uuid, unsaved.rowguid)}::uuid, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) on conflict ("productmodelid") do update set "name" = EXCLUDED."name", diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRow.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRow.scala index 5cdd8dc904..fc1b7797cc 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRow.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRow.scala @@ -68,7 +68,7 @@ case class ProductmodelRow( } object ProductmodelRow { - val `_rowParser`: RowParser[ProductmodelRow] = RowParsers.of(ProductmodelId.dbType, Name.dbType, PgTypes.xml.nullable, PgTypes.xml.nullable, PgTypes.uuid, PgTypes.timestamp)(ProductmodelRow.apply)(row => Array[Any](row.productmodelid, row.name, row.catalogdescription, row.instructions, row.rowguid, row.modifieddate)) + val `_rowParser`: RowParser[ProductmodelRow] = RowParsers.of(ProductmodelId.pgType, Name.pgType, PgTypes.xml.nullable, PgTypes.xml.nullable, PgTypes.uuid, PgTypes.timestamp)(ProductmodelRow.apply)(row => Array[Any](row.productmodelid, row.name, row.catalogdescription, row.instructions, row.rowguid, row.modifieddate)) given pgText: PgText[ProductmodelRow] = PgText.from(`_rowParser`.underlying) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRowUnsaved.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRowUnsaved.scala index 3c0b0baf4e..ea0fa60fab 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRowUnsaved.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRowUnsaved.scala @@ -49,5 +49,5 @@ case class ProductmodelRowUnsaved( } object ProductmodelRowUnsaved { - given pgText: PgText[ProductmodelRowUnsaved] = PgText.instance((row, sb) => { Name.dbType.text.unsafeEncode(row.name, sb); sb.append(PgText.DELIMETER); PgTypes.xml.nullable.text.unsafeEncode(row.catalogdescription, sb); sb.append(PgText.DELIMETER); PgTypes.xml.nullable.text.unsafeEncode(row.instructions, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using ProductmodelId.dbType.text).unsafeEncode(row.productmodelid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.uuid.text).unsafeEncode(row.rowguid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) + given pgText: PgText[ProductmodelRowUnsaved] = PgText.instance((row, sb) => { Name.pgType.text.unsafeEncode(row.name, sb); sb.append(PgText.DELIMETER); PgTypes.xml.nullable.text.unsafeEncode(row.catalogdescription, sb); sb.append(PgText.DELIMETER); PgTypes.xml.nullable.text.unsafeEncode(row.instructions, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using ProductmodelId.pgType.text).unsafeEncode(row.productmodelid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.uuid.text).unsafeEncode(row.rowguid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryFields.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryFields.scala index 3a13007d48..a7f9090b99 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryFields.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryFields.scala @@ -32,7 +32,7 @@ class ProductsubcategoryFields(val `_path`: java.util.List[Path]) extends TupleE None, Some("int4"), (row, value) => row.copy(productsubcategoryid = value), - ProductsubcategoryId.dbType + ProductsubcategoryId.pgType ) } @@ -44,7 +44,7 @@ class ProductsubcategoryFields(val `_path`: java.util.List[Path]) extends TupleE None, Some("int4"), (row, value) => row.copy(productcategoryid = value), - ProductcategoryId.dbType + ProductcategoryId.pgType ) } @@ -56,7 +56,7 @@ class ProductsubcategoryFields(val `_path`: java.util.List[Path]) extends TupleE None, Some("varchar"), (row, value) => row.copy(name = value), - Name.dbType + Name.pgType ) } diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryId.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryId.scala index 86f0b1106d..c622edf038 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryId.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryId.scala @@ -17,7 +17,7 @@ case class ProductsubcategoryId(@JsonValue value: Int) extends scala.AnyVal object ProductsubcategoryId { given bijection: Bijection[ProductsubcategoryId, Int] = Bijection.apply[ProductsubcategoryId, Int](_.value)(ProductsubcategoryId.apply) - given dbType: PgType[ProductsubcategoryId] = ScalaDbTypes.PgTypes.int4.bimap(ProductsubcategoryId.apply, _.value) + given pgType: PgType[ProductsubcategoryId] = ScalaDbTypes.PgTypes.int4.bimap(ProductsubcategoryId.apply, _.value) - given dbTypeArray: PgType[Array[ProductsubcategoryId]] = PgTypes.int4ArrayUnboxed.bimap(xs => xs.map(ProductsubcategoryId.apply), xs => xs.map(_.value)) + given pgTypeArray: PgType[Array[ProductsubcategoryId]] = PgTypes.int4ArrayUnboxed.bimap(xs => xs.map(ProductsubcategoryId.apply), xs => xs.map(_.value)) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRepoImpl.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRepoImpl.scala index 108002abec..712be676ae 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRepoImpl.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRepoImpl.scala @@ -22,19 +22,19 @@ import dev.typr.foundations.scala.Fragment.sql class ProductsubcategoryRepoImpl extends ProductsubcategoryRepo { override def delete: DeleteBuilder[ProductsubcategoryFields, ProductsubcategoryRow] = DeleteBuilder.of(""""production"."productsubcategory"""", ProductsubcategoryFields.structure, Dialect.POSTGRESQL) - override def deleteById(productsubcategoryid: ProductsubcategoryId)(using c: Connection): Boolean = sql"""delete from "production"."productsubcategory" where "productsubcategoryid" = ${Fragment.encode(ProductsubcategoryId.dbType, productsubcategoryid)}""".update().runUnchecked(c) > 0 + override def deleteById(productsubcategoryid: ProductsubcategoryId)(using c: Connection): Boolean = sql"""delete from "production"."productsubcategory" where "productsubcategoryid" = ${Fragment.encode(ProductsubcategoryId.pgType, productsubcategoryid)}""".update().runUnchecked(c) > 0 override def deleteByIds(productsubcategoryids: Array[ProductsubcategoryId])(using c: Connection): Int = { sql"""delete from "production"."productsubcategory" - where "productsubcategoryid" = ANY(${Fragment.encode(ProductsubcategoryId.dbTypeArray, productsubcategoryids)})""" + where "productsubcategoryid" = ANY(${Fragment.encode(ProductsubcategoryId.pgTypeArray, productsubcategoryids)})""" .update() .runUnchecked(c) } override def insert(unsaved: ProductsubcategoryRow)(using c: Connection): ProductsubcategoryRow = { sql"""insert into "production"."productsubcategory"("productsubcategoryid", "productcategoryid", "name", "rowguid", "modifieddate") - values (${Fragment.encode(ProductsubcategoryId.dbType, unsaved.productsubcategoryid)}::int4, ${Fragment.encode(ProductcategoryId.dbType, unsaved.productcategoryid)}::int4, ${Fragment.encode(Name.dbType, unsaved.name)}::varchar, ${Fragment.encode(PgTypes.uuid, unsaved.rowguid)}::uuid, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) + values (${Fragment.encode(ProductsubcategoryId.pgType, unsaved.productsubcategoryid)}::int4, ${Fragment.encode(ProductcategoryId.pgType, unsaved.productcategoryid)}::int4, ${Fragment.encode(Name.pgType, unsaved.name)}::varchar, ${Fragment.encode(PgTypes.uuid, unsaved.rowguid)}::uuid, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) RETURNING "productsubcategoryid", "productcategoryid", "name", "rowguid", "modifieddate" """ .updateReturning(ProductsubcategoryRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -44,12 +44,12 @@ class ProductsubcategoryRepoImpl extends ProductsubcategoryRepo { val columns: ListBuffer[Fragment] = ListBuffer() val values: ListBuffer[Fragment] = ListBuffer() columns.addOne(Fragment.lit(""""productcategoryid"""")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(ProductcategoryId.dbType, unsaved.productcategoryid)}::int4"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(ProductcategoryId.pgType, unsaved.productcategoryid)}::int4"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""name"""")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(Name.dbType, unsaved.name)}::varchar"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(Name.pgType, unsaved.name)}::varchar"): @scala.annotation.nowarn unsaved.productsubcategoryid.visit( { }, - value => { columns.addOne(Fragment.lit(""""productsubcategoryid"""")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(ProductsubcategoryId.dbType, value)}::int4"): @scala.annotation.nowarn } + value => { columns.addOne(Fragment.lit(""""productsubcategoryid"""")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(ProductsubcategoryId.pgType, value)}::int4"): @scala.annotation.nowarn } ); unsaved.rowguid.visit( { }, @@ -90,13 +90,13 @@ class ProductsubcategoryRepoImpl extends ProductsubcategoryRepo { override def selectById(productsubcategoryid: ProductsubcategoryId)(using c: Connection): Option[ProductsubcategoryRow] = { sql"""select "productsubcategoryid", "productcategoryid", "name", "rowguid", "modifieddate" from "production"."productsubcategory" - where "productsubcategoryid" = ${Fragment.encode(ProductsubcategoryId.dbType, productsubcategoryid)}""".query(ProductsubcategoryRow.`_rowParser`.first()).runUnchecked(c) + where "productsubcategoryid" = ${Fragment.encode(ProductsubcategoryId.pgType, productsubcategoryid)}""".query(ProductsubcategoryRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(productsubcategoryids: Array[ProductsubcategoryId])(using c: Connection): List[ProductsubcategoryRow] = { sql"""select "productsubcategoryid", "productcategoryid", "name", "rowguid", "modifieddate" from "production"."productsubcategory" - where "productsubcategoryid" = ANY(${Fragment.encode(ProductsubcategoryId.dbTypeArray, productsubcategoryids)})""".query(ProductsubcategoryRow.`_rowParser`.all()).runUnchecked(c) + where "productsubcategoryid" = ANY(${Fragment.encode(ProductsubcategoryId.pgTypeArray, productsubcategoryids)})""".query(ProductsubcategoryRow.`_rowParser`.all()).runUnchecked(c) } override def selectByIdsTracked(productsubcategoryids: Array[ProductsubcategoryId])(using c: Connection): Map[ProductsubcategoryId, ProductsubcategoryRow] = { @@ -110,16 +110,16 @@ class ProductsubcategoryRepoImpl extends ProductsubcategoryRepo { override def update(row: ProductsubcategoryRow)(using c: Connection): Boolean = { val productsubcategoryid: ProductsubcategoryId = row.productsubcategoryid return sql"""update "production"."productsubcategory" - set "productcategoryid" = ${Fragment.encode(ProductcategoryId.dbType, row.productcategoryid)}::int4, - "name" = ${Fragment.encode(Name.dbType, row.name)}::varchar, + set "productcategoryid" = ${Fragment.encode(ProductcategoryId.pgType, row.productcategoryid)}::int4, + "name" = ${Fragment.encode(Name.pgType, row.name)}::varchar, "rowguid" = ${Fragment.encode(PgTypes.uuid, row.rowguid)}::uuid, "modifieddate" = ${Fragment.encode(PgTypes.timestamp, row.modifieddate)}::timestamp - where "productsubcategoryid" = ${Fragment.encode(ProductsubcategoryId.dbType, productsubcategoryid)}""".update().runUnchecked(c) > 0 + where "productsubcategoryid" = ${Fragment.encode(ProductsubcategoryId.pgType, productsubcategoryid)}""".update().runUnchecked(c) > 0 } override def upsert(unsaved: ProductsubcategoryRow)(using c: Connection): ProductsubcategoryRow = { sql"""insert into "production"."productsubcategory"("productsubcategoryid", "productcategoryid", "name", "rowguid", "modifieddate") - values (${Fragment.encode(ProductsubcategoryId.dbType, unsaved.productsubcategoryid)}::int4, ${Fragment.encode(ProductcategoryId.dbType, unsaved.productcategoryid)}::int4, ${Fragment.encode(Name.dbType, unsaved.name)}::varchar, ${Fragment.encode(PgTypes.uuid, unsaved.rowguid)}::uuid, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) + values (${Fragment.encode(ProductsubcategoryId.pgType, unsaved.productsubcategoryid)}::int4, ${Fragment.encode(ProductcategoryId.pgType, unsaved.productcategoryid)}::int4, ${Fragment.encode(Name.pgType, unsaved.name)}::varchar, ${Fragment.encode(PgTypes.uuid, unsaved.rowguid)}::uuid, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) on conflict ("productsubcategoryid") do update set "productcategoryid" = EXCLUDED."productcategoryid", diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRow.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRow.scala index 9937736373..88e15b9f6b 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRow.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRow.scala @@ -64,7 +64,7 @@ case class ProductsubcategoryRow( } object ProductsubcategoryRow { - val `_rowParser`: RowParser[ProductsubcategoryRow] = RowParsers.of(ProductsubcategoryId.dbType, ProductcategoryId.dbType, Name.dbType, PgTypes.uuid, PgTypes.timestamp)(ProductsubcategoryRow.apply)(row => Array[Any](row.productsubcategoryid, row.productcategoryid, row.name, row.rowguid, row.modifieddate)) + val `_rowParser`: RowParser[ProductsubcategoryRow] = RowParsers.of(ProductsubcategoryId.pgType, ProductcategoryId.pgType, Name.pgType, PgTypes.uuid, PgTypes.timestamp)(ProductsubcategoryRow.apply)(row => Array[Any](row.productsubcategoryid, row.productcategoryid, row.name, row.rowguid, row.modifieddate)) given pgText: PgText[ProductsubcategoryRow] = PgText.from(`_rowParser`.underlying) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRowUnsaved.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRowUnsaved.scala index af6539ebab..6605cc5c30 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRowUnsaved.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRowUnsaved.scala @@ -47,5 +47,5 @@ case class ProductsubcategoryRowUnsaved( } object ProductsubcategoryRowUnsaved { - given pgText: PgText[ProductsubcategoryRowUnsaved] = PgText.instance((row, sb) => { ProductcategoryId.dbType.text.unsafeEncode(row.productcategoryid, sb); sb.append(PgText.DELIMETER); Name.dbType.text.unsafeEncode(row.name, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using ProductsubcategoryId.dbType.text).unsafeEncode(row.productsubcategoryid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.uuid.text).unsafeEncode(row.rowguid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) + given pgText: PgText[ProductsubcategoryRowUnsaved] = PgText.instance((row, sb) => { ProductcategoryId.pgType.text.unsafeEncode(row.productcategoryid, sb); sb.append(PgText.DELIMETER); Name.pgType.text.unsafeEncode(row.name, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using ProductsubcategoryId.pgType.text).unsafeEncode(row.productsubcategoryid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.uuid.text).unsafeEncode(row.rowguid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureFields.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureFields.scala index d2ca5b6549..f47fc4b6a1 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureFields.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureFields.scala @@ -27,7 +27,7 @@ class UnitmeasureFields(val `_path`: java.util.List[Path]) extends TupleExpr3[Un None, Some("bpchar"), (row, value) => row.copy(unitmeasurecode = value), - UnitmeasureId.dbType + UnitmeasureId.pgType ) } @@ -39,7 +39,7 @@ class UnitmeasureFields(val `_path`: java.util.List[Path]) extends TupleExpr3[Un None, Some("varchar"), (row, value) => row.copy(name = value), - Name.dbType + Name.pgType ) } diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureId.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureId.scala index 74327e8322..5b31734405 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureId.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureId.scala @@ -16,7 +16,7 @@ case class UnitmeasureId(@JsonValue value: String) extends scala.AnyVal object UnitmeasureId { given bijection: Bijection[UnitmeasureId, String] = Bijection.apply[UnitmeasureId, String](_.value)(UnitmeasureId.apply) - given dbType: PgType[UnitmeasureId] = PgTypes.bpchar.bimap(UnitmeasureId.apply, _.value) + given pgType: PgType[UnitmeasureId] = PgTypes.bpchar.bimap(UnitmeasureId.apply, _.value) - given dbTypeArray: PgType[Array[UnitmeasureId]] = PgTypes.bpcharArray.bimap(xs => xs.map(UnitmeasureId.apply), xs => xs.map(_.value)) + given pgTypeArray: PgType[Array[UnitmeasureId]] = PgTypes.bpcharArray.bimap(xs => xs.map(UnitmeasureId.apply), xs => xs.map(_.value)) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRepoImpl.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRepoImpl.scala index d799ddd0e9..917084876c 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRepoImpl.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRepoImpl.scala @@ -21,19 +21,19 @@ import dev.typr.foundations.scala.Fragment.sql class UnitmeasureRepoImpl extends UnitmeasureRepo { override def delete: DeleteBuilder[UnitmeasureFields, UnitmeasureRow] = DeleteBuilder.of(""""production"."unitmeasure"""", UnitmeasureFields.structure, Dialect.POSTGRESQL) - override def deleteById(unitmeasurecode: UnitmeasureId)(using c: Connection): Boolean = sql"""delete from "production"."unitmeasure" where "unitmeasurecode" = ${Fragment.encode(UnitmeasureId.dbType, unitmeasurecode)}""".update().runUnchecked(c) > 0 + override def deleteById(unitmeasurecode: UnitmeasureId)(using c: Connection): Boolean = sql"""delete from "production"."unitmeasure" where "unitmeasurecode" = ${Fragment.encode(UnitmeasureId.pgType, unitmeasurecode)}""".update().runUnchecked(c) > 0 override def deleteByIds(unitmeasurecodes: Array[UnitmeasureId])(using c: Connection): Int = { sql"""delete from "production"."unitmeasure" - where "unitmeasurecode" = ANY(${Fragment.encode(UnitmeasureId.dbTypeArray, unitmeasurecodes)})""" + where "unitmeasurecode" = ANY(${Fragment.encode(UnitmeasureId.pgTypeArray, unitmeasurecodes)})""" .update() .runUnchecked(c) } override def insert(unsaved: UnitmeasureRow)(using c: Connection): UnitmeasureRow = { sql"""insert into "production"."unitmeasure"("unitmeasurecode", "name", "modifieddate") - values (${Fragment.encode(UnitmeasureId.dbType, unsaved.unitmeasurecode)}::bpchar, ${Fragment.encode(Name.dbType, unsaved.name)}::varchar, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) + values (${Fragment.encode(UnitmeasureId.pgType, unsaved.unitmeasurecode)}::bpchar, ${Fragment.encode(Name.pgType, unsaved.name)}::varchar, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) RETURNING "unitmeasurecode", "name", "modifieddate" """ .updateReturning(UnitmeasureRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -43,9 +43,9 @@ class UnitmeasureRepoImpl extends UnitmeasureRepo { val columns: ListBuffer[Fragment] = ListBuffer() val values: ListBuffer[Fragment] = ListBuffer() columns.addOne(Fragment.lit(""""unitmeasurecode"""")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(UnitmeasureId.dbType, unsaved.unitmeasurecode)}::bpchar"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(UnitmeasureId.pgType, unsaved.unitmeasurecode)}::bpchar"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""name"""")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(Name.dbType, unsaved.name)}::varchar"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(Name.pgType, unsaved.name)}::varchar"): @scala.annotation.nowarn unsaved.modifieddate.visit( { }, value => { columns.addOne(Fragment.lit(""""modifieddate"""")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(PgTypes.timestamp, value)}::timestamp"): @scala.annotation.nowarn } @@ -81,13 +81,13 @@ class UnitmeasureRepoImpl extends UnitmeasureRepo { override def selectById(unitmeasurecode: UnitmeasureId)(using c: Connection): Option[UnitmeasureRow] = { sql"""select "unitmeasurecode", "name", "modifieddate" from "production"."unitmeasure" - where "unitmeasurecode" = ${Fragment.encode(UnitmeasureId.dbType, unitmeasurecode)}""".query(UnitmeasureRow.`_rowParser`.first()).runUnchecked(c) + where "unitmeasurecode" = ${Fragment.encode(UnitmeasureId.pgType, unitmeasurecode)}""".query(UnitmeasureRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(unitmeasurecodes: Array[UnitmeasureId])(using c: Connection): List[UnitmeasureRow] = { sql"""select "unitmeasurecode", "name", "modifieddate" from "production"."unitmeasure" - where "unitmeasurecode" = ANY(${Fragment.encode(UnitmeasureId.dbTypeArray, unitmeasurecodes)})""".query(UnitmeasureRow.`_rowParser`.all()).runUnchecked(c) + where "unitmeasurecode" = ANY(${Fragment.encode(UnitmeasureId.pgTypeArray, unitmeasurecodes)})""".query(UnitmeasureRow.`_rowParser`.all()).runUnchecked(c) } override def selectByIdsTracked(unitmeasurecodes: Array[UnitmeasureId])(using c: Connection): Map[UnitmeasureId, UnitmeasureRow] = { @@ -101,14 +101,14 @@ class UnitmeasureRepoImpl extends UnitmeasureRepo { override def update(row: UnitmeasureRow)(using c: Connection): Boolean = { val unitmeasurecode: UnitmeasureId = row.unitmeasurecode return sql"""update "production"."unitmeasure" - set "name" = ${Fragment.encode(Name.dbType, row.name)}::varchar, + set "name" = ${Fragment.encode(Name.pgType, row.name)}::varchar, "modifieddate" = ${Fragment.encode(PgTypes.timestamp, row.modifieddate)}::timestamp - where "unitmeasurecode" = ${Fragment.encode(UnitmeasureId.dbType, unitmeasurecode)}""".update().runUnchecked(c) > 0 + where "unitmeasurecode" = ${Fragment.encode(UnitmeasureId.pgType, unitmeasurecode)}""".update().runUnchecked(c) > 0 } override def upsert(unsaved: UnitmeasureRow)(using c: Connection): UnitmeasureRow = { sql"""insert into "production"."unitmeasure"("unitmeasurecode", "name", "modifieddate") - values (${Fragment.encode(UnitmeasureId.dbType, unsaved.unitmeasurecode)}::bpchar, ${Fragment.encode(Name.dbType, unsaved.name)}::varchar, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) + values (${Fragment.encode(UnitmeasureId.pgType, unsaved.unitmeasurecode)}::bpchar, ${Fragment.encode(Name.pgType, unsaved.name)}::varchar, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) on conflict ("unitmeasurecode") do update set "name" = EXCLUDED."name", diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRow.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRow.scala index 3d2f2e8635..8733853c4f 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRow.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRow.scala @@ -38,7 +38,7 @@ case class UnitmeasureRow( } object UnitmeasureRow { - val `_rowParser`: RowParser[UnitmeasureRow] = RowParsers.of(UnitmeasureId.dbType, Name.dbType, PgTypes.timestamp)(UnitmeasureRow.apply)(row => Array[Any](row.unitmeasurecode, row.name, row.modifieddate)) + val `_rowParser`: RowParser[UnitmeasureRow] = RowParsers.of(UnitmeasureId.pgType, Name.pgType, PgTypes.timestamp)(UnitmeasureRow.apply)(row => Array[Any](row.unitmeasurecode, row.name, row.modifieddate)) given pgText: PgText[UnitmeasureRow] = PgText.from(`_rowParser`.underlying) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRowUnsaved.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRowUnsaved.scala index f44831bc65..eec58f3b5b 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRowUnsaved.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRowUnsaved.scala @@ -25,5 +25,5 @@ case class UnitmeasureRowUnsaved( } object UnitmeasureRowUnsaved { - given pgText: PgText[UnitmeasureRowUnsaved] = PgText.instance((row, sb) => { UnitmeasureId.dbType.text.unsafeEncode(row.unitmeasurecode, sb); sb.append(PgText.DELIMETER); Name.dbType.text.unsafeEncode(row.name, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) + given pgText: PgText[UnitmeasureRowUnsaved] = PgText.instance((row, sb) => { UnitmeasureId.pgType.text.unsafeEncode(row.unitmeasurecode, sb); sb.append(PgText.DELIMETER); Name.pgType.text.unsafeEncode(row.name, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/AccountNumber.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/AccountNumber.scala index a622dbd785..a48e5e171b 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/AccountNumber.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/AccountNumber.scala @@ -18,7 +18,7 @@ case class AccountNumber(@JsonValue value: String) object AccountNumber { given bijection: Bijection[AccountNumber, String] = Bijection.apply[AccountNumber, String](_.value)(AccountNumber.apply) - given dbType: PgType[AccountNumber] = PgTypes.text.bimap(AccountNumber.apply, _.value).renamed(""""public"."AccountNumber"""") + given pgType: PgType[AccountNumber] = PgTypes.text.bimap(AccountNumber.apply, _.value).renamed(""""public"."AccountNumber"""") - given dbTypeArray: PgType[Array[AccountNumber]] = PgTypes.textArray.bimap(xs => xs.map(AccountNumber.apply), xs => xs.map(_.value)).renamed(""""public"."AccountNumber"[]""") + given pgTypeArray: PgType[Array[AccountNumber]] = PgTypes.textArray.bimap(xs => xs.map(AccountNumber.apply), xs => xs.map(_.value)).renamed(""""public"."AccountNumber"[]""") } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/Flag.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/Flag.scala index e443921c3c..fab9e281df 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/Flag.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/Flag.scala @@ -19,7 +19,7 @@ case class Flag(@JsonValue value: Boolean) object Flag { given bijection: Bijection[Flag, Boolean] = Bijection.apply[Flag, Boolean](_.value)(Flag.apply) - given dbType: PgType[Flag] = ScalaDbTypes.PgTypes.bool.bimap(Flag.apply, _.value).renamed(""""public"."Flag"""") + given pgType: PgType[Flag] = ScalaDbTypes.PgTypes.bool.bimap(Flag.apply, _.value).renamed(""""public"."Flag"""") - given dbTypeArray: PgType[Array[Flag]] = PgTypes.boolArrayUnboxed.bimap(xs => xs.map(Flag.apply), xs => xs.map(_.value)).renamed(""""public"."Flag"[]""") + given pgTypeArray: PgType[Array[Flag]] = PgTypes.boolArrayUnboxed.bimap(xs => xs.map(Flag.apply), xs => xs.map(_.value)).renamed(""""public"."Flag"[]""") } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/Mydomain.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/Mydomain.scala index e4150bdc53..b0b38ff463 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/Mydomain.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/Mydomain.scala @@ -18,7 +18,7 @@ case class Mydomain(@JsonValue value: String) object Mydomain { given bijection: Bijection[Mydomain, String] = Bijection.apply[Mydomain, String](_.value)(Mydomain.apply) - given dbType: PgType[Mydomain] = PgTypes.text.bimap(Mydomain.apply, _.value).renamed(""""public"."mydomain"""") + given pgType: PgType[Mydomain] = PgTypes.text.bimap(Mydomain.apply, _.value).renamed(""""public"."mydomain"""") - given dbTypeArray: PgType[Array[Mydomain]] = PgTypes.textArray.bimap(xs => xs.map(Mydomain.apply), xs => xs.map(_.value)).renamed(""""public"."mydomain"[]""") + given pgTypeArray: PgType[Array[Mydomain]] = PgTypes.textArray.bimap(xs => xs.map(Mydomain.apply), xs => xs.map(_.value)).renamed(""""public"."mydomain"[]""") } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/Myenum.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/Myenum.scala index cee32c674d..e2c4940984 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/Myenum.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/Myenum.scala @@ -17,13 +17,13 @@ import dev.typr.foundations.PgTypes sealed abstract class Myenum(val value: java.lang.String) object Myenum { - given dbTypeArray: PgType[Array[Myenum]] = { + given pgTypeArray: PgType[Array[Myenum]] = { PgTypes.textArray .bimap(xs => xs.map(Myenum.force), xs => xs.map(_.value)) .renamedDropPrecision("public.myenum") } - given dbType: PgType[Myenum] = { + given pgType: PgType[Myenum] = { PgTypes.text.bimap(Myenum.force, _.value) .renamedDropPrecision("public.myenum") } diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/Name.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/Name.scala index 81ab0bfec2..fbdc8d23c0 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/Name.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/Name.scala @@ -18,7 +18,7 @@ case class Name(@JsonValue value: String) object Name { given bijection: Bijection[Name, String] = Bijection.apply[Name, String](_.value)(Name.apply) - given dbType: PgType[Name] = PgTypes.text.bimap(Name.apply, _.value).renamed(""""public"."Name"""") + given pgType: PgType[Name] = PgTypes.text.bimap(Name.apply, _.value).renamed(""""public"."Name"""") - given dbTypeArray: PgType[Array[Name]] = PgTypes.textArray.bimap(xs => xs.map(Name.apply), xs => xs.map(_.value)).renamed(""""public"."Name"[]""") + given pgTypeArray: PgType[Array[Name]] = PgTypes.textArray.bimap(xs => xs.map(Name.apply), xs => xs.map(_.value)).renamed(""""public"."Name"[]""") } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/NameStyle.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/NameStyle.scala index 9d50eed784..3a6e6d986a 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/NameStyle.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/NameStyle.scala @@ -19,7 +19,7 @@ case class NameStyle(@JsonValue value: Boolean) object NameStyle { given bijection: Bijection[NameStyle, Boolean] = Bijection.apply[NameStyle, Boolean](_.value)(NameStyle.apply) - given dbType: PgType[NameStyle] = ScalaDbTypes.PgTypes.bool.bimap(NameStyle.apply, _.value).renamed(""""public"."NameStyle"""") + given pgType: PgType[NameStyle] = ScalaDbTypes.PgTypes.bool.bimap(NameStyle.apply, _.value).renamed(""""public"."NameStyle"""") - given dbTypeArray: PgType[Array[NameStyle]] = PgTypes.boolArrayUnboxed.bimap(xs => xs.map(NameStyle.apply), xs => xs.map(_.value)).renamed(""""public"."NameStyle"[]""") + given pgTypeArray: PgType[Array[NameStyle]] = PgTypes.boolArrayUnboxed.bimap(xs => xs.map(NameStyle.apply), xs => xs.map(_.value)).renamed(""""public"."NameStyle"[]""") } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/OrderNumber.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/OrderNumber.scala index f825cd1652..7c49e569a8 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/OrderNumber.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/OrderNumber.scala @@ -18,7 +18,7 @@ case class OrderNumber(@JsonValue value: String) object OrderNumber { given bijection: Bijection[OrderNumber, String] = Bijection.apply[OrderNumber, String](_.value)(OrderNumber.apply) - given dbType: PgType[OrderNumber] = PgTypes.text.bimap(OrderNumber.apply, _.value).renamed(""""public"."OrderNumber"""") + given pgType: PgType[OrderNumber] = PgTypes.text.bimap(OrderNumber.apply, _.value).renamed(""""public"."OrderNumber"""") - given dbTypeArray: PgType[Array[OrderNumber]] = PgTypes.textArray.bimap(xs => xs.map(OrderNumber.apply), xs => xs.map(_.value)).renamed(""""public"."OrderNumber"[]""") + given pgTypeArray: PgType[Array[OrderNumber]] = PgTypes.textArray.bimap(xs => xs.map(OrderNumber.apply), xs => xs.map(_.value)).renamed(""""public"."OrderNumber"[]""") } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/Phone.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/Phone.scala index 41ca648d22..ed74b53142 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/Phone.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/Phone.scala @@ -18,7 +18,7 @@ case class Phone(@JsonValue value: String) object Phone { given bijection: Bijection[Phone, String] = Bijection.apply[Phone, String](_.value)(Phone.apply) - given dbType: PgType[Phone] = PgTypes.text.bimap(Phone.apply, _.value).renamed(""""public"."Phone"""") + given pgType: PgType[Phone] = PgTypes.text.bimap(Phone.apply, _.value).renamed(""""public"."Phone"""") - given dbTypeArray: PgType[Array[Phone]] = PgTypes.textArray.bimap(xs => xs.map(Phone.apply), xs => xs.map(_.value)).renamed(""""public"."Phone"[]""") + given pgTypeArray: PgType[Array[Phone]] = PgTypes.textArray.bimap(xs => xs.map(Phone.apply), xs => xs.map(_.value)).renamed(""""public"."Phone"[]""") } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/ShortText.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/ShortText.scala index a1dcce232b..59ec14a99d 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/ShortText.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/ShortText.scala @@ -18,7 +18,7 @@ case class ShortText(@JsonValue value: String) object ShortText { given bijection: Bijection[ShortText, String] = Bijection.apply[ShortText, String](_.value)(ShortText.apply) - given dbType: PgType[ShortText] = PgTypes.text.bimap(ShortText.apply, _.value).renamed(""""public"."short_text"""") + given pgType: PgType[ShortText] = PgTypes.text.bimap(ShortText.apply, _.value).renamed(""""public"."short_text"""") - given dbTypeArray: PgType[Array[ShortText]] = PgTypes.textArray.bimap(xs => xs.map(ShortText.apply), xs => xs.map(_.value)).renamed(""""public"."short_text"[]""") + given pgTypeArray: PgType[Array[ShortText]] = PgTypes.textArray.bimap(xs => xs.map(ShortText.apply), xs => xs.map(_.value)).renamed(""""public"."short_text"[]""") } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/flaff/FlaffFields.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/flaff/FlaffFields.scala index 64641be3b4..40dc07c059 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/flaff/FlaffFields.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/flaff/FlaffFields.scala @@ -29,7 +29,7 @@ class FlaffFields(val `_path`: java.util.List[Path]) extends TupleExpr5[ShortTex None, Some("text"), (row, value) => row.copy(code = value), - ShortText.dbType + ShortText.pgType ) } @@ -65,7 +65,7 @@ class FlaffFields(val `_path`: java.util.List[Path]) extends TupleExpr5[ShortTex None, Some("text"), (row, value) => row.copy(specifier = value), - ShortText.dbType + ShortText.pgType ) } @@ -77,7 +77,7 @@ class FlaffFields(val `_path`: java.util.List[Path]) extends TupleExpr5[ShortTex None, Some("text"), (row, value) => row.copy(parentspecifier = value), - ShortText.dbType + ShortText.pgType ) } diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/flaff/FlaffId.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/flaff/FlaffId.scala index e6533a5bda..9ab2b8a3ce 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/flaff/FlaffId.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/flaff/FlaffId.scala @@ -30,5 +30,5 @@ case class FlaffId( } object FlaffId { - val `_rowParser`: RowParser[FlaffId] = RowParsers.of(ShortText.dbType, PgTypes.text, ScalaDbTypes.PgTypes.int4, ShortText.dbType)(FlaffId.apply)(row => Array[Any](row.code, row.anotherCode, row.someNumber, row.specifier)) + val `_rowParser`: RowParser[FlaffId] = RowParsers.of(ShortText.pgType, PgTypes.text, ScalaDbTypes.PgTypes.int4, ShortText.pgType)(FlaffId.apply)(row => Array[Any](row.code, row.anotherCode, row.someNumber, row.specifier)) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/flaff/FlaffRepoImpl.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/flaff/FlaffRepoImpl.scala index f0be6492d7..0f03b61a9b 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/flaff/FlaffRepoImpl.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/flaff/FlaffRepoImpl.scala @@ -22,7 +22,7 @@ import dev.typr.foundations.scala.Fragment.sql class FlaffRepoImpl extends FlaffRepo { override def delete: DeleteBuilder[FlaffFields, FlaffRow] = DeleteBuilder.of(""""public"."flaff"""", FlaffFields.structure, Dialect.POSTGRESQL) - override def deleteById(compositeId: FlaffId)(using c: Connection): Boolean = sql"""delete from "public"."flaff" where "code" = ${Fragment.encode(ShortText.dbType, compositeId.code)} AND "another_code" = ${Fragment.encode(PgTypes.text, compositeId.anotherCode)} AND "some_number" = ${Fragment.encode(ScalaDbTypes.PgTypes.int4, compositeId.someNumber)} AND "specifier" = ${Fragment.encode(ShortText.dbType, compositeId.specifier)}""".update().runUnchecked(c) > 0 + override def deleteById(compositeId: FlaffId)(using c: Connection): Boolean = sql"""delete from "public"."flaff" where "code" = ${Fragment.encode(ShortText.pgType, compositeId.code)} AND "another_code" = ${Fragment.encode(PgTypes.text, compositeId.anotherCode)} AND "some_number" = ${Fragment.encode(ScalaDbTypes.PgTypes.int4, compositeId.someNumber)} AND "specifier" = ${Fragment.encode(ShortText.pgType, compositeId.specifier)}""".update().runUnchecked(c) > 0 override def deleteByIds(compositeIds: Array[FlaffId])(using c: Connection): Int = { val code: Array[ShortText] = compositeIds.map(_.code) @@ -32,13 +32,13 @@ class FlaffRepoImpl extends FlaffRepo { return sql"""delete from "public"."flaff" where ("code", "another_code", "some_number", "specifier") - in (select * from unnest(${Fragment.encode(ShortText.dbTypeArray, code)}, ${Fragment.encode(PgTypes.textArray, anotherCode)}, ${Fragment.encode(PgTypes.int4ArrayUnboxed, someNumber)}, ${Fragment.encode(ShortText.dbTypeArray, specifier)})) + in (select * from unnest(${Fragment.encode(ShortText.pgTypeArray, code)}, ${Fragment.encode(PgTypes.textArray, anotherCode)}, ${Fragment.encode(PgTypes.int4ArrayUnboxed, someNumber)}, ${Fragment.encode(ShortText.pgTypeArray, specifier)})) """.update().runUnchecked(c) } override def insert(unsaved: FlaffRow)(using c: Connection): FlaffRow = { sql"""insert into "public"."flaff"("code", "another_code", "some_number", "specifier", "parentspecifier") - values (${Fragment.encode(ShortText.dbType, unsaved.code)}::text, ${Fragment.encode(PgTypes.text, unsaved.anotherCode)}, ${Fragment.encode(ScalaDbTypes.PgTypes.int4, unsaved.someNumber)}::int4, ${Fragment.encode(ShortText.dbType, unsaved.specifier)}::text, ${Fragment.encode(ShortText.dbType.nullable, unsaved.parentspecifier)}::text) + values (${Fragment.encode(ShortText.pgType, unsaved.code)}::text, ${Fragment.encode(PgTypes.text, unsaved.anotherCode)}, ${Fragment.encode(ScalaDbTypes.PgTypes.int4, unsaved.someNumber)}::int4, ${Fragment.encode(ShortText.pgType, unsaved.specifier)}::text, ${Fragment.encode(ShortText.pgType.nullable, unsaved.parentspecifier)}::text) RETURNING "code", "another_code", "some_number", "specifier", "parentspecifier" """ .updateReturning(FlaffRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -60,7 +60,7 @@ class FlaffRepoImpl extends FlaffRepo { override def selectById(compositeId: FlaffId)(using c: Connection): Option[FlaffRow] = { sql"""select "code", "another_code", "some_number", "specifier", "parentspecifier" from "public"."flaff" - where "code" = ${Fragment.encode(ShortText.dbType, compositeId.code)} AND "another_code" = ${Fragment.encode(PgTypes.text, compositeId.anotherCode)} AND "some_number" = ${Fragment.encode(ScalaDbTypes.PgTypes.int4, compositeId.someNumber)} AND "specifier" = ${Fragment.encode(ShortText.dbType, compositeId.specifier)}""".query(FlaffRow.`_rowParser`.first()).runUnchecked(c) + where "code" = ${Fragment.encode(ShortText.pgType, compositeId.code)} AND "another_code" = ${Fragment.encode(PgTypes.text, compositeId.anotherCode)} AND "some_number" = ${Fragment.encode(ScalaDbTypes.PgTypes.int4, compositeId.someNumber)} AND "specifier" = ${Fragment.encode(ShortText.pgType, compositeId.specifier)}""".query(FlaffRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(compositeIds: Array[FlaffId])(using c: Connection): List[FlaffRow] = { @@ -71,7 +71,7 @@ class FlaffRepoImpl extends FlaffRepo { return sql"""select "code", "another_code", "some_number", "specifier", "parentspecifier" from "public"."flaff" where ("code", "another_code", "some_number", "specifier") - in (select * from unnest(${Fragment.encode(ShortText.dbTypeArray, code)}, ${Fragment.encode(PgTypes.textArray, anotherCode)}, ${Fragment.encode(PgTypes.int4ArrayUnboxed, someNumber)}, ${Fragment.encode(ShortText.dbTypeArray, specifier)})) + in (select * from unnest(${Fragment.encode(ShortText.pgTypeArray, code)}, ${Fragment.encode(PgTypes.textArray, anotherCode)}, ${Fragment.encode(PgTypes.int4ArrayUnboxed, someNumber)}, ${Fragment.encode(ShortText.pgTypeArray, specifier)})) """.query(FlaffRow.`_rowParser`.all()).runUnchecked(c) } @@ -86,13 +86,13 @@ class FlaffRepoImpl extends FlaffRepo { override def update(row: FlaffRow)(using c: Connection): Boolean = { val compositeId: FlaffId = row.compositeId return sql"""update "public"."flaff" - set "parentspecifier" = ${Fragment.encode(ShortText.dbType.nullable, row.parentspecifier)}::text - where "code" = ${Fragment.encode(ShortText.dbType, compositeId.code)} AND "another_code" = ${Fragment.encode(PgTypes.text, compositeId.anotherCode)} AND "some_number" = ${Fragment.encode(ScalaDbTypes.PgTypes.int4, compositeId.someNumber)} AND "specifier" = ${Fragment.encode(ShortText.dbType, compositeId.specifier)}""".update().runUnchecked(c) > 0 + set "parentspecifier" = ${Fragment.encode(ShortText.pgType.nullable, row.parentspecifier)}::text + where "code" = ${Fragment.encode(ShortText.pgType, compositeId.code)} AND "another_code" = ${Fragment.encode(PgTypes.text, compositeId.anotherCode)} AND "some_number" = ${Fragment.encode(ScalaDbTypes.PgTypes.int4, compositeId.someNumber)} AND "specifier" = ${Fragment.encode(ShortText.pgType, compositeId.specifier)}""".update().runUnchecked(c) > 0 } override def upsert(unsaved: FlaffRow)(using c: Connection): FlaffRow = { sql"""insert into "public"."flaff"("code", "another_code", "some_number", "specifier", "parentspecifier") - values (${Fragment.encode(ShortText.dbType, unsaved.code)}::text, ${Fragment.encode(PgTypes.text, unsaved.anotherCode)}, ${Fragment.encode(ScalaDbTypes.PgTypes.int4, unsaved.someNumber)}::int4, ${Fragment.encode(ShortText.dbType, unsaved.specifier)}::text, ${Fragment.encode(ShortText.dbType.nullable, unsaved.parentspecifier)}::text) + values (${Fragment.encode(ShortText.pgType, unsaved.code)}::text, ${Fragment.encode(PgTypes.text, unsaved.anotherCode)}, ${Fragment.encode(ScalaDbTypes.PgTypes.int4, unsaved.someNumber)}::int4, ${Fragment.encode(ShortText.pgType, unsaved.specifier)}::text, ${Fragment.encode(ShortText.pgType.nullable, unsaved.parentspecifier)}::text) on conflict ("code", "another_code", "some_number", "specifier") do update set "parentspecifier" = EXCLUDED."parentspecifier" diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/flaff/FlaffRow.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/flaff/FlaffRow.scala index 4540f00ce7..045cd2a0f7 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/flaff/FlaffRow.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/flaff/FlaffRow.scala @@ -52,7 +52,7 @@ case class FlaffRow( } object FlaffRow { - val `_rowParser`: RowParser[FlaffRow] = RowParsers.of(ShortText.dbType, PgTypes.text, ScalaDbTypes.PgTypes.int4, ShortText.dbType, ShortText.dbType.nullable)(FlaffRow.apply)(row => Array[Any](row.code, row.anotherCode, row.someNumber, row.specifier, row.parentspecifier)) + val `_rowParser`: RowParser[FlaffRow] = RowParsers.of(ShortText.pgType, PgTypes.text, ScalaDbTypes.PgTypes.int4, ShortText.pgType, ShortText.pgType.nullable)(FlaffRow.apply)(row => Array[Any](row.code, row.anotherCode, row.someNumber, row.specifier, row.parentspecifier)) def apply( compositeId: FlaffId, diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestFields.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestFields.scala index 3fce71ba48..1e741309c8 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestFields.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestFields.scala @@ -49,7 +49,7 @@ class IdentityTestFields(val `_path`: java.util.List[Path]) extends TupleExpr3[I None, None, (row, value) => row.copy(name = value), - IdentityTestId.dbType + IdentityTestId.pgType ) } diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestId.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestId.scala index d3ce7c7d16..d8d4db1766 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestId.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestId.scala @@ -16,7 +16,7 @@ case class IdentityTestId(@JsonValue value: String) extends scala.AnyVal object IdentityTestId { given bijection: Bijection[IdentityTestId, String] = Bijection.apply[IdentityTestId, String](_.value)(IdentityTestId.apply) - given dbType: PgType[IdentityTestId] = PgTypes.text.bimap(IdentityTestId.apply, _.value) + given pgType: PgType[IdentityTestId] = PgTypes.text.bimap(IdentityTestId.apply, _.value) - given dbTypeArray: PgType[Array[IdentityTestId]] = PgTypes.textArray.bimap(xs => xs.map(IdentityTestId.apply), xs => xs.map(_.value)) + given pgTypeArray: PgType[Array[IdentityTestId]] = PgTypes.textArray.bimap(xs => xs.map(IdentityTestId.apply), xs => xs.map(_.value)) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestRepoImpl.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestRepoImpl.scala index e6fb9cccff..56e0070ca6 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestRepoImpl.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestRepoImpl.scala @@ -20,19 +20,19 @@ import dev.typr.foundations.scala.Fragment.sql class IdentityTestRepoImpl extends IdentityTestRepo { override def delete: DeleteBuilder[IdentityTestFields, IdentityTestRow] = DeleteBuilder.of(""""public"."identity-test"""", IdentityTestFields.structure, Dialect.POSTGRESQL) - override def deleteById(name: IdentityTestId)(using c: Connection): Boolean = sql"""delete from "public"."identity-test" where "name" = ${Fragment.encode(IdentityTestId.dbType, name)}""".update().runUnchecked(c) > 0 + override def deleteById(name: IdentityTestId)(using c: Connection): Boolean = sql"""delete from "public"."identity-test" where "name" = ${Fragment.encode(IdentityTestId.pgType, name)}""".update().runUnchecked(c) > 0 override def deleteByIds(names: Array[IdentityTestId])(using c: Connection): Int = { sql"""delete from "public"."identity-test" - where "name" = ANY(${Fragment.encode(IdentityTestId.dbTypeArray, names)})""" + where "name" = ANY(${Fragment.encode(IdentityTestId.pgTypeArray, names)})""" .update() .runUnchecked(c) } override def insert(unsaved: IdentityTestRow)(using c: Connection): IdentityTestRow = { sql"""insert into "public"."identity-test"("default_generated", "name") - values (${Fragment.encode(ScalaDbTypes.PgTypes.int4, unsaved.defaultGenerated)}::int4, ${Fragment.encode(IdentityTestId.dbType, unsaved.name)}) + values (${Fragment.encode(ScalaDbTypes.PgTypes.int4, unsaved.defaultGenerated)}::int4, ${Fragment.encode(IdentityTestId.pgType, unsaved.name)}) RETURNING "always_generated", "default_generated", "name" """ .updateReturning(IdentityTestRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -42,7 +42,7 @@ class IdentityTestRepoImpl extends IdentityTestRepo { val columns: ListBuffer[Fragment] = ListBuffer() val values: ListBuffer[Fragment] = ListBuffer() columns.addOne(Fragment.lit(""""name"""")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(IdentityTestId.dbType, unsaved.name)}"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(IdentityTestId.pgType, unsaved.name)}"): @scala.annotation.nowarn unsaved.defaultGenerated.visit( { }, value => { columns.addOne(Fragment.lit(""""default_generated"""")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(ScalaDbTypes.PgTypes.int4, value)}::int4"): @scala.annotation.nowarn } @@ -78,13 +78,13 @@ class IdentityTestRepoImpl extends IdentityTestRepo { override def selectById(name: IdentityTestId)(using c: Connection): Option[IdentityTestRow] = { sql"""select "always_generated", "default_generated", "name" from "public"."identity-test" - where "name" = ${Fragment.encode(IdentityTestId.dbType, name)}""".query(IdentityTestRow.`_rowParser`.first()).runUnchecked(c) + where "name" = ${Fragment.encode(IdentityTestId.pgType, name)}""".query(IdentityTestRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(names: Array[IdentityTestId])(using c: Connection): List[IdentityTestRow] = { sql"""select "always_generated", "default_generated", "name" from "public"."identity-test" - where "name" = ANY(${Fragment.encode(IdentityTestId.dbTypeArray, names)})""".query(IdentityTestRow.`_rowParser`.all()).runUnchecked(c) + where "name" = ANY(${Fragment.encode(IdentityTestId.pgTypeArray, names)})""".query(IdentityTestRow.`_rowParser`.all()).runUnchecked(c) } override def selectByIdsTracked(names: Array[IdentityTestId])(using c: Connection): Map[IdentityTestId, IdentityTestRow] = { @@ -99,12 +99,12 @@ class IdentityTestRepoImpl extends IdentityTestRepo { val name: IdentityTestId = row.name return sql"""update "public"."identity-test" set "default_generated" = ${Fragment.encode(ScalaDbTypes.PgTypes.int4, row.defaultGenerated)}::int4 - where "name" = ${Fragment.encode(IdentityTestId.dbType, name)}""".update().runUnchecked(c) > 0 + where "name" = ${Fragment.encode(IdentityTestId.pgType, name)}""".update().runUnchecked(c) > 0 } override def upsert(unsaved: IdentityTestRow)(using c: Connection): IdentityTestRow = { sql"""insert into "public"."identity-test"("default_generated", "name") - values (${Fragment.encode(ScalaDbTypes.PgTypes.int4, unsaved.defaultGenerated)}::int4, ${Fragment.encode(IdentityTestId.dbType, unsaved.name)}) + values (${Fragment.encode(ScalaDbTypes.PgTypes.int4, unsaved.defaultGenerated)}::int4, ${Fragment.encode(IdentityTestId.pgType, unsaved.name)}) on conflict ("name") do update set "default_generated" = EXCLUDED."default_generated" diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestRow.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestRow.scala index 71a0eef695..e03238df45 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestRow.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestRow.scala @@ -35,7 +35,7 @@ case class IdentityTestRow( } object IdentityTestRow { - val `_rowParser`: RowParser[IdentityTestRow] = RowParsers.of(ScalaDbTypes.PgTypes.int4, ScalaDbTypes.PgTypes.int4, IdentityTestId.dbType)(IdentityTestRow.apply)(row => Array[Any](row.alwaysGenerated, row.defaultGenerated, row.name)) + val `_rowParser`: RowParser[IdentityTestRow] = RowParsers.of(ScalaDbTypes.PgTypes.int4, ScalaDbTypes.PgTypes.int4, IdentityTestId.pgType)(IdentityTestRow.apply)(row => Array[Any](row.alwaysGenerated, row.defaultGenerated, row.name)) given pgText: PgText[IdentityTestRow] = PgText.from(`_rowParser`.underlying) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestRowUnsaved.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestRowUnsaved.scala index 0677a51e8e..b73f02165e 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestRowUnsaved.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestRowUnsaved.scala @@ -24,5 +24,5 @@ case class IdentityTestRowUnsaved( } object IdentityTestRowUnsaved { - given pgText: PgText[IdentityTestRowUnsaved] = PgText.instance((row, sb) => { IdentityTestId.dbType.text.unsafeEncode(row.name, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using ScalaDbTypes.PgTypes.int4.text).unsafeEncode(row.defaultGenerated, sb) }) + given pgText: PgText[IdentityTestRowUnsaved] = PgText.instance((row, sb) => { IdentityTestId.pgType.text.unsafeEncode(row.name, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using ScalaDbTypes.PgTypes.int4.text).unsafeEncode(row.defaultGenerated, sb) }) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/issue142/Issue142Fields.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/issue142/Issue142Fields.scala index c8d76a3c0e..0e737bfd96 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/issue142/Issue142Fields.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/issue142/Issue142Fields.scala @@ -23,7 +23,7 @@ class Issue142Fields(val `_path`: java.util.List[Path]) extends TupleExpr1[Issue None, None, (row, value) => row.copy(tabellkode = value), - Issue142Id.dbType + Issue142Id.pgType ) } diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/issue142/Issue142Id.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/issue142/Issue142Id.scala index ecc35d507c..b2db2a8aef 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/issue142/Issue142Id.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/issue142/Issue142Id.scala @@ -18,12 +18,12 @@ sealed abstract class Issue142Id(val value: String) object Issue142Id { def apply(underlying: String): Issue142Id = ByName.getOrElse(underlying, Unknown(underlying)) - given dbTypeArray: PgType[Array[Issue142Id]] = { + given pgTypeArray: PgType[Array[Issue142Id]] = { PgTypes.textArray .bimap(xs => xs.map(Issue142Id.apply), xs => xs.map(_.value)) } - given dbType: PgType[Issue142Id] = PgTypes.text.bimap(Issue142Id.apply, _.value) + given pgType: PgType[Issue142Id] = PgTypes.text.bimap(Issue142Id.apply, _.value) case object aa extends Issue142Id("aa") diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/issue142/Issue142RepoImpl.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/issue142/Issue142RepoImpl.scala index 810c399fe6..4c83360366 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/issue142/Issue142RepoImpl.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/issue142/Issue142RepoImpl.scala @@ -18,19 +18,19 @@ import dev.typr.foundations.scala.Fragment.sql class Issue142RepoImpl extends Issue142Repo { override def delete: DeleteBuilder[Issue142Fields, Issue142Row] = DeleteBuilder.of(""""public"."issue142"""", Issue142Fields.structure, Dialect.POSTGRESQL) - override def deleteById(tabellkode: Issue142Id)(using c: Connection): Boolean = sql"""delete from "public"."issue142" where "tabellkode" = ${Fragment.encode(Issue142Id.dbType, tabellkode)}""".update().runUnchecked(c) > 0 + override def deleteById(tabellkode: Issue142Id)(using c: Connection): Boolean = sql"""delete from "public"."issue142" where "tabellkode" = ${Fragment.encode(Issue142Id.pgType, tabellkode)}""".update().runUnchecked(c) > 0 override def deleteByIds(tabellkodes: Array[Issue142Id])(using c: Connection): Int = { sql"""delete from "public"."issue142" - where "tabellkode" = ANY(${Fragment.encode(Issue142Id.dbTypeArray, tabellkodes)})""" + where "tabellkode" = ANY(${Fragment.encode(Issue142Id.pgTypeArray, tabellkodes)})""" .update() .runUnchecked(c) } override def insert(unsaved: Issue142Row)(using c: Connection): Issue142Row = { sql"""insert into "public"."issue142"("tabellkode") - values (${Fragment.encode(Issue142Id.dbType, unsaved.tabellkode)}) + values (${Fragment.encode(Issue142Id.pgType, unsaved.tabellkode)}) RETURNING "tabellkode" """ .updateReturning(Issue142Row.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -52,13 +52,13 @@ class Issue142RepoImpl extends Issue142Repo { override def selectById(tabellkode: Issue142Id)(using c: Connection): Option[Issue142Row] = { sql"""select "tabellkode" from "public"."issue142" - where "tabellkode" = ${Fragment.encode(Issue142Id.dbType, tabellkode)}""".query(Issue142Row.`_rowParser`.first()).runUnchecked(c) + where "tabellkode" = ${Fragment.encode(Issue142Id.pgType, tabellkode)}""".query(Issue142Row.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(tabellkodes: Array[Issue142Id])(using c: Connection): List[Issue142Row] = { sql"""select "tabellkode" from "public"."issue142" - where "tabellkode" = ANY(${Fragment.encode(Issue142Id.dbTypeArray, tabellkodes)})""".query(Issue142Row.`_rowParser`.all()).runUnchecked(c) + where "tabellkode" = ANY(${Fragment.encode(Issue142Id.pgTypeArray, tabellkodes)})""".query(Issue142Row.`_rowParser`.all()).runUnchecked(c) } override def selectByIdsTracked(tabellkodes: Array[Issue142Id])(using c: Connection): Map[Issue142Id, Issue142Row] = { @@ -71,7 +71,7 @@ class Issue142RepoImpl extends Issue142Repo { override def upsert(unsaved: Issue142Row)(using c: Connection): Issue142Row = { sql"""insert into "public"."issue142"("tabellkode") - values (${Fragment.encode(Issue142Id.dbType, unsaved.tabellkode)}) + values (${Fragment.encode(Issue142Id.pgType, unsaved.tabellkode)}) on conflict ("tabellkode") do update set "tabellkode" = EXCLUDED."tabellkode" returning "tabellkode"""" diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/issue142/Issue142Row.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/issue142/Issue142Row.scala index 95c3c65f7f..4084ac709b 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/issue142/Issue142Row.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/issue142/Issue142Row.scala @@ -20,7 +20,7 @@ case class Issue142Row(tabellkode: Issue142Id) extends Tuple1[Issue142Id] { } object Issue142Row { - val `_rowParser`: RowParser[Issue142Row] = RowParsers.of(Issue142Id.dbType)(Issue142Row.apply)(row => Array[Any](row.tabellkode)) + val `_rowParser`: RowParser[Issue142Row] = RowParsers.of(Issue142Id.pgType)(Issue142Row.apply)(row => Array[Any](row.tabellkode)) given pgText: PgText[Issue142Row] = PgText.from(`_rowParser`.underlying) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/issue142_2/Issue1422Fields.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/issue142_2/Issue1422Fields.scala index 9d997022eb..0ec294d3ef 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/issue142_2/Issue1422Fields.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/issue142_2/Issue1422Fields.scala @@ -27,7 +27,7 @@ class Issue1422Fields(val `_path`: java.util.List[Path]) extends TupleExpr1[Issu None, None, (row, value) => row.copy(tabellkode = value), - Issue142Id.dbType + Issue142Id.pgType ) } diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/issue142_2/Issue1422RepoImpl.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/issue142_2/Issue1422RepoImpl.scala index 2191b39508..60d289989f 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/issue142_2/Issue1422RepoImpl.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/issue142_2/Issue1422RepoImpl.scala @@ -19,19 +19,19 @@ import dev.typr.foundations.scala.Fragment.sql class Issue1422RepoImpl extends Issue1422Repo { override def delete: DeleteBuilder[Issue1422Fields, Issue1422Row] = DeleteBuilder.of(""""public"."issue142_2"""", Issue1422Fields.structure, Dialect.POSTGRESQL) - override def deleteById(tabellkode: Issue142Id)(using c: Connection): Boolean = sql"""delete from "public"."issue142_2" where "tabellkode" = ${Fragment.encode(Issue142Id.dbType, tabellkode)}""".update().runUnchecked(c) > 0 + override def deleteById(tabellkode: Issue142Id)(using c: Connection): Boolean = sql"""delete from "public"."issue142_2" where "tabellkode" = ${Fragment.encode(Issue142Id.pgType, tabellkode)}""".update().runUnchecked(c) > 0 override def deleteByIds(tabellkodes: Array[Issue142Id])(using c: Connection): Int = { sql"""delete from "public"."issue142_2" - where "tabellkode" = ANY(${Fragment.encode(Issue142Id.dbTypeArray, tabellkodes)})""" + where "tabellkode" = ANY(${Fragment.encode(Issue142Id.pgTypeArray, tabellkodes)})""" .update() .runUnchecked(c) } override def insert(unsaved: Issue1422Row)(using c: Connection): Issue1422Row = { sql"""insert into "public"."issue142_2"("tabellkode") - values (${Fragment.encode(Issue142Id.dbType, unsaved.tabellkode)}) + values (${Fragment.encode(Issue142Id.pgType, unsaved.tabellkode)}) RETURNING "tabellkode" """ .updateReturning(Issue1422Row.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -53,13 +53,13 @@ class Issue1422RepoImpl extends Issue1422Repo { override def selectById(tabellkode: Issue142Id)(using c: Connection): Option[Issue1422Row] = { sql"""select "tabellkode" from "public"."issue142_2" - where "tabellkode" = ${Fragment.encode(Issue142Id.dbType, tabellkode)}""".query(Issue1422Row.`_rowParser`.first()).runUnchecked(c) + where "tabellkode" = ${Fragment.encode(Issue142Id.pgType, tabellkode)}""".query(Issue1422Row.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(tabellkodes: Array[Issue142Id])(using c: Connection): List[Issue1422Row] = { sql"""select "tabellkode" from "public"."issue142_2" - where "tabellkode" = ANY(${Fragment.encode(Issue142Id.dbTypeArray, tabellkodes)})""".query(Issue1422Row.`_rowParser`.all()).runUnchecked(c) + where "tabellkode" = ANY(${Fragment.encode(Issue142Id.pgTypeArray, tabellkodes)})""".query(Issue1422Row.`_rowParser`.all()).runUnchecked(c) } override def selectByIdsTracked(tabellkodes: Array[Issue142Id])(using c: Connection): Map[Issue142Id, Issue1422Row] = { @@ -72,7 +72,7 @@ class Issue1422RepoImpl extends Issue1422Repo { override def upsert(unsaved: Issue1422Row)(using c: Connection): Issue1422Row = { sql"""insert into "public"."issue142_2"("tabellkode") - values (${Fragment.encode(Issue142Id.dbType, unsaved.tabellkode)}) + values (${Fragment.encode(Issue142Id.pgType, unsaved.tabellkode)}) on conflict ("tabellkode") do update set "tabellkode" = EXCLUDED."tabellkode" returning "tabellkode"""" diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/issue142_2/Issue1422Row.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/issue142_2/Issue1422Row.scala index da07196332..b1af2f1b40 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/issue142_2/Issue1422Row.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/issue142_2/Issue1422Row.scala @@ -24,7 +24,7 @@ case class Issue1422Row( } object Issue1422Row { - val `_rowParser`: RowParser[Issue1422Row] = RowParsers.of(Issue142Id.dbType)(Issue1422Row.apply)(row => Array[Any](row.tabellkode)) + val `_rowParser`: RowParser[Issue1422Row] = RowParsers.of(Issue142Id.pgType)(Issue1422Row.apply)(row => Array[Any](row.tabellkode)) given pgText: PgText[Issue1422Row] = PgText.from(`_rowParser`.underlying) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/pgtest/PgtestFields.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/pgtest/PgtestFields.scala index 0df6af28e9..8d0d9f41df 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/pgtest/PgtestFields.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/pgtest/PgtestFields.scala @@ -300,7 +300,7 @@ class PgtestFields(val `_path`: java.util.List[Path]) extends TupleExpr70[Boolea None, Some("text"), (row, value) => row.copy(mydomain = value), - Mydomain.dbType + Mydomain.pgType ) } @@ -312,7 +312,7 @@ class PgtestFields(val `_path`: java.util.List[Path]) extends TupleExpr70[Boolea None, Some("public.myenum"), (row, value) => row.copy(myenum = value), - Myenum.dbType + Myenum.pgType ) } @@ -708,7 +708,7 @@ class PgtestFields(val `_path`: java.util.List[Path]) extends TupleExpr70[Boolea Some("text[]"), Some("mydomain[]"), (row, value) => row.copy(mydomaines = value), - Mydomain.dbTypeArray + Mydomain.pgTypeArray ) } @@ -720,7 +720,7 @@ class PgtestFields(val `_path`: java.util.List[Path]) extends TupleExpr70[Boolea None, Some("myenum[]"), (row, value) => row.copy(myenumes = value), - Myenum.dbTypeArray + Myenum.pgTypeArray ) } diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/pgtest/PgtestRepoImpl.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/pgtest/PgtestRepoImpl.scala index 09bbaa5918..1411c1405c 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/pgtest/PgtestRepoImpl.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/pgtest/PgtestRepoImpl.scala @@ -24,7 +24,7 @@ class PgtestRepoImpl extends PgtestRepo { override def insert(unsaved: PgtestRow)(using 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", "mydomaines", "myenumes", "namees", "numerices", "pathes", "pointes", "polygones", "textes", "timees", "timestampes", "timestampzes", "timezes", "uuides", "varchares", "xmles") - values (${Fragment.encode(ScalaDbTypes.PgTypes.bool, unsaved.bool)}, ${Fragment.encode(PgTypes.box, unsaved.box)}::box, ${Fragment.encode(PgTypes.bpchar, unsaved.bpchar)}::bpchar, ${Fragment.encode(PgTypes.bytea, unsaved.bytea)}::bytea, ${Fragment.encode(PgTypes.bpchar, unsaved.char)}::bpchar, ${Fragment.encode(PgTypes.circle, unsaved.circle)}::circle, ${Fragment.encode(PgTypes.date, unsaved.date)}::date, ${Fragment.encode(ScalaDbTypes.PgTypes.float4, unsaved.float4)}::float4, ${Fragment.encode(ScalaDbTypes.PgTypes.float8, unsaved.float8)}::float8, ${Fragment.encode(ScalaDbTypes.PgTypes.hstore, unsaved.hstore)}::hstore, ${Fragment.encode(PgTypes.inet, unsaved.inet)}::inet, ${Fragment.encode(ScalaDbTypes.PgTypes.int2, unsaved.int2)}::int2, ${Fragment.encode(PgTypes.int2vector, unsaved.int2vector)}::int2vector, ${Fragment.encode(ScalaDbTypes.PgTypes.int4, unsaved.int4)}::int4, ${Fragment.encode(ScalaDbTypes.PgTypes.int8, unsaved.int8)}::int8, ${Fragment.encode(PgTypes.interval, unsaved.interval)}::interval, ${Fragment.encode(PgTypes.json, unsaved.json)}::json, ${Fragment.encode(PgTypes.jsonb, unsaved.jsonb)}::jsonb, ${Fragment.encode(PgTypes.line, unsaved.line)}::line, ${Fragment.encode(PgTypes.lseg, unsaved.lseg)}::lseg, ${Fragment.encode(PgTypes.money, unsaved.money)}::money, ${Fragment.encode(Mydomain.dbType, unsaved.mydomain)}::text, ${Fragment.encode(Myenum.dbType, unsaved.myenum)}::public.myenum, ${Fragment.encode(PgTypes.name, unsaved.name)}::name, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, unsaved.numeric)}::numeric, ${Fragment.encode(PgTypes.path, unsaved.path)}::path, ${Fragment.encode(PgTypes.point, unsaved.point)}::point, ${Fragment.encode(PgTypes.polygon, unsaved.polygon)}::polygon, ${Fragment.encode(PgTypes.text, unsaved.text)}, ${Fragment.encode(PgTypes.time, unsaved.time)}::time, ${Fragment.encode(PgTypes.timestamp, unsaved.timestamp)}::timestamp, ${Fragment.encode(PgTypes.timestamptz, unsaved.timestampz)}::timestamptz, ${Fragment.encode(PgTypes.timetz, unsaved.timez)}::timetz, ${Fragment.encode(PgTypes.uuid, unsaved.uuid)}::uuid, ${Fragment.encode(PgTypes.text, unsaved.varchar)}, ${Fragment.encode(PgTypes.vector, unsaved.vector)}::vector, ${Fragment.encode(PgTypes.xml, unsaved.xml)}::xml, ${Fragment.encode(PgTypes.boxArray, unsaved.boxes)}::box[], ${Fragment.encode(PgTypes.bpcharArray, unsaved.bpchares)}::bpchar[], ${Fragment.encode(PgTypes.bpcharArray, unsaved.chares)}::bpchar[], ${Fragment.encode(PgTypes.circleArray, unsaved.circlees)}::circle[], ${Fragment.encode(PgTypes.dateArray, unsaved.datees)}::date[], ${Fragment.encode(PgTypes.float4ArrayUnboxed, unsaved.float4es)}::float4[], ${Fragment.encode(PgTypes.float8ArrayUnboxed, unsaved.float8es)}::float8[], ${Fragment.encode(PgTypes.inetArray, unsaved.inetes)}::inet[], ${Fragment.encode(PgTypes.int2ArrayUnboxed, unsaved.int2es)}::int2[], ${Fragment.encode(PgTypes.int2vectorArray, unsaved.int2vectores)}::int2vector[], ${Fragment.encode(PgTypes.int4ArrayUnboxed, unsaved.int4es)}::int4[], ${Fragment.encode(PgTypes.int8ArrayUnboxed, unsaved.int8es)}::int8[], ${Fragment.encode(PgTypes.intervalArray, unsaved.intervales)}::interval[], ${Fragment.encode(PgTypes.jsonArray, unsaved.jsones)}::json[], ${Fragment.encode(PgTypes.jsonbArray, unsaved.jsonbes)}::jsonb[], ${Fragment.encode(PgTypes.lineArray, unsaved.linees)}::line[], ${Fragment.encode(PgTypes.lsegArray, unsaved.lseges)}::lseg[], ${Fragment.encode(PgTypes.moneyArray, unsaved.moneyes)}::money[], ${Fragment.encode(Mydomain.dbTypeArray, unsaved.mydomaines)}::mydomain[], ${Fragment.encode(Myenum.dbTypeArray, unsaved.myenumes)}::myenum[], ${Fragment.encode(PgTypes.nameArray, unsaved.namees)}::name[], ${Fragment.encode(ScalaDbTypes.PgTypes.numericArray, unsaved.numerices)}::numeric[], ${Fragment.encode(PgTypes.pathArray, unsaved.pathes)}::path[], ${Fragment.encode(PgTypes.pointArray, unsaved.pointes)}::point[], ${Fragment.encode(PgTypes.polygonArray, unsaved.polygones)}::polygon[], ${Fragment.encode(PgTypes.textArray, unsaved.textes)}::text[], ${Fragment.encode(PgTypes.timeArray, unsaved.timees)}::time[], ${Fragment.encode(PgTypes.timestampArray, unsaved.timestampes)}::timestamp[], ${Fragment.encode(PgTypes.timestamptzArray, unsaved.timestampzes)}::timestamptz[], ${Fragment.encode(PgTypes.timetzArray, unsaved.timezes)}::timetz[], ${Fragment.encode(PgTypes.uuidArray, unsaved.uuides)}::uuid[], ${Fragment.encode(PgTypes.textArray, unsaved.varchares)}::varchar[], ${Fragment.encode(PgTypes.xmlArray, unsaved.xmles)}::xml[]) + values (${Fragment.encode(ScalaDbTypes.PgTypes.bool, unsaved.bool)}, ${Fragment.encode(PgTypes.box, unsaved.box)}::box, ${Fragment.encode(PgTypes.bpchar, unsaved.bpchar)}::bpchar, ${Fragment.encode(PgTypes.bytea, unsaved.bytea)}::bytea, ${Fragment.encode(PgTypes.bpchar, unsaved.char)}::bpchar, ${Fragment.encode(PgTypes.circle, unsaved.circle)}::circle, ${Fragment.encode(PgTypes.date, unsaved.date)}::date, ${Fragment.encode(ScalaDbTypes.PgTypes.float4, unsaved.float4)}::float4, ${Fragment.encode(ScalaDbTypes.PgTypes.float8, unsaved.float8)}::float8, ${Fragment.encode(ScalaDbTypes.PgTypes.hstore, unsaved.hstore)}::hstore, ${Fragment.encode(PgTypes.inet, unsaved.inet)}::inet, ${Fragment.encode(ScalaDbTypes.PgTypes.int2, unsaved.int2)}::int2, ${Fragment.encode(PgTypes.int2vector, unsaved.int2vector)}::int2vector, ${Fragment.encode(ScalaDbTypes.PgTypes.int4, unsaved.int4)}::int4, ${Fragment.encode(ScalaDbTypes.PgTypes.int8, unsaved.int8)}::int8, ${Fragment.encode(PgTypes.interval, unsaved.interval)}::interval, ${Fragment.encode(PgTypes.json, unsaved.json)}::json, ${Fragment.encode(PgTypes.jsonb, unsaved.jsonb)}::jsonb, ${Fragment.encode(PgTypes.line, unsaved.line)}::line, ${Fragment.encode(PgTypes.lseg, unsaved.lseg)}::lseg, ${Fragment.encode(PgTypes.money, unsaved.money)}::money, ${Fragment.encode(Mydomain.pgType, unsaved.mydomain)}::text, ${Fragment.encode(Myenum.pgType, unsaved.myenum)}::public.myenum, ${Fragment.encode(PgTypes.name, unsaved.name)}::name, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, unsaved.numeric)}::numeric, ${Fragment.encode(PgTypes.path, unsaved.path)}::path, ${Fragment.encode(PgTypes.point, unsaved.point)}::point, ${Fragment.encode(PgTypes.polygon, unsaved.polygon)}::polygon, ${Fragment.encode(PgTypes.text, unsaved.text)}, ${Fragment.encode(PgTypes.time, unsaved.time)}::time, ${Fragment.encode(PgTypes.timestamp, unsaved.timestamp)}::timestamp, ${Fragment.encode(PgTypes.timestamptz, unsaved.timestampz)}::timestamptz, ${Fragment.encode(PgTypes.timetz, unsaved.timez)}::timetz, ${Fragment.encode(PgTypes.uuid, unsaved.uuid)}::uuid, ${Fragment.encode(PgTypes.text, unsaved.varchar)}, ${Fragment.encode(PgTypes.vector, unsaved.vector)}::vector, ${Fragment.encode(PgTypes.xml, unsaved.xml)}::xml, ${Fragment.encode(PgTypes.boxArray, unsaved.boxes)}::box[], ${Fragment.encode(PgTypes.bpcharArray, unsaved.bpchares)}::bpchar[], ${Fragment.encode(PgTypes.bpcharArray, unsaved.chares)}::bpchar[], ${Fragment.encode(PgTypes.circleArray, unsaved.circlees)}::circle[], ${Fragment.encode(PgTypes.dateArray, unsaved.datees)}::date[], ${Fragment.encode(PgTypes.float4ArrayUnboxed, unsaved.float4es)}::float4[], ${Fragment.encode(PgTypes.float8ArrayUnboxed, unsaved.float8es)}::float8[], ${Fragment.encode(PgTypes.inetArray, unsaved.inetes)}::inet[], ${Fragment.encode(PgTypes.int2ArrayUnboxed, unsaved.int2es)}::int2[], ${Fragment.encode(PgTypes.int2vectorArray, unsaved.int2vectores)}::int2vector[], ${Fragment.encode(PgTypes.int4ArrayUnboxed, unsaved.int4es)}::int4[], ${Fragment.encode(PgTypes.int8ArrayUnboxed, unsaved.int8es)}::int8[], ${Fragment.encode(PgTypes.intervalArray, unsaved.intervales)}::interval[], ${Fragment.encode(PgTypes.jsonArray, unsaved.jsones)}::json[], ${Fragment.encode(PgTypes.jsonbArray, unsaved.jsonbes)}::jsonb[], ${Fragment.encode(PgTypes.lineArray, unsaved.linees)}::line[], ${Fragment.encode(PgTypes.lsegArray, unsaved.lseges)}::lseg[], ${Fragment.encode(PgTypes.moneyArray, unsaved.moneyes)}::money[], ${Fragment.encode(Mydomain.pgTypeArray, unsaved.mydomaines)}::mydomain[], ${Fragment.encode(Myenum.pgTypeArray, unsaved.myenumes)}::myenum[], ${Fragment.encode(PgTypes.nameArray, unsaved.namees)}::name[], ${Fragment.encode(ScalaDbTypes.PgTypes.numericArray, unsaved.numerices)}::numeric[], ${Fragment.encode(PgTypes.pathArray, unsaved.pathes)}::path[], ${Fragment.encode(PgTypes.pointArray, unsaved.pointes)}::point[], ${Fragment.encode(PgTypes.polygonArray, unsaved.polygones)}::polygon[], ${Fragment.encode(PgTypes.textArray, unsaved.textes)}::text[], ${Fragment.encode(PgTypes.timeArray, unsaved.timees)}::time[], ${Fragment.encode(PgTypes.timestampArray, unsaved.timestampes)}::timestamp[], ${Fragment.encode(PgTypes.timestamptzArray, unsaved.timestampzes)}::timestamptz[], ${Fragment.encode(PgTypes.timetzArray, unsaved.timezes)}::timetz[], ${Fragment.encode(PgTypes.uuidArray, unsaved.uuides)}::uuid[], ${Fragment.encode(PgTypes.textArray, unsaved.varchares)}::varchar[], ${Fragment.encode(PgTypes.xmlArray, unsaved.xmles)}::xml[]) RETURNING "bool", "box", "bpchar", "bytea", "char", "circle", "date", "float4", "float8", "hstore", "inet", "int2", "int2vector", "int4", "int8", "interval", "json", "jsonb", "line", "lseg", "money"::numeric, "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"::numeric[], "mydomaines"::text[], "myenumes", "namees", "numerices", "pathes", "pointes", "polygones", "textes", "timees", "timestampes", "timestampzes", "timezes", "uuides", "varchares", "xmles" """ .updateReturning(PgtestRow.`_rowParser`.exactlyOne()).runUnchecked(c) diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/pgtest/PgtestRow.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/pgtest/PgtestRow.scala index b329d54aa4..9e69f7cf91 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/pgtest/PgtestRow.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/pgtest/PgtestRow.scala @@ -250,7 +250,7 @@ case class PgtestRow( } object PgtestRow { - val `_rowParser`: RowParser[PgtestRow] = RowParsers.of(ScalaDbTypes.PgTypes.bool, PgTypes.box, PgTypes.bpchar, PgTypes.bytea, PgTypes.bpchar, PgTypes.circle, PgTypes.date, ScalaDbTypes.PgTypes.float4, ScalaDbTypes.PgTypes.float8, ScalaDbTypes.PgTypes.hstore, PgTypes.inet, ScalaDbTypes.PgTypes.int2, PgTypes.int2vector, ScalaDbTypes.PgTypes.int4, ScalaDbTypes.PgTypes.int8, PgTypes.interval, PgTypes.json, PgTypes.jsonb, PgTypes.line, PgTypes.lseg, PgTypes.money, Mydomain.dbType, Myenum.dbType, PgTypes.name, ScalaDbTypes.PgTypes.numeric, PgTypes.path, PgTypes.point, PgTypes.polygon, PgTypes.text, PgTypes.time, PgTypes.timestamp, PgTypes.timestamptz, PgTypes.timetz, PgTypes.uuid, PgTypes.text, PgTypes.vector, PgTypes.xml, PgTypes.boxArray, PgTypes.bpcharArray, PgTypes.bpcharArray, PgTypes.circleArray, PgTypes.dateArray, PgTypes.float4ArrayUnboxed, PgTypes.float8ArrayUnboxed, PgTypes.inetArray, PgTypes.int2ArrayUnboxed, PgTypes.int2vectorArray, PgTypes.int4ArrayUnboxed, PgTypes.int8ArrayUnboxed, PgTypes.intervalArray, PgTypes.jsonArray, PgTypes.jsonbArray, PgTypes.lineArray, PgTypes.lsegArray, PgTypes.moneyArray, Mydomain.dbTypeArray, Myenum.dbTypeArray, PgTypes.nameArray, ScalaDbTypes.PgTypes.numericArray, PgTypes.pathArray, PgTypes.pointArray, PgTypes.polygonArray, PgTypes.textArray, PgTypes.timeArray, PgTypes.timestampArray, PgTypes.timestamptzArray, PgTypes.timetzArray, PgTypes.uuidArray, PgTypes.textArray, PgTypes.xmlArray)(PgtestRow.apply)(row => Array[Any](row.bool, row.box, row.bpchar, row.bytea, row.char, row.circle, row.date, row.float4, row.float8, row.hstore, row.inet, row.int2, row.int2vector, row.int4, row.int8, row.interval, row.json, row.jsonb, row.line, row.lseg, row.money, row.mydomain, row.myenum, row.name, row.numeric, row.path, row.point, row.polygon, row.text, row.time, row.timestamp, row.timestampz, row.timez, row.uuid, row.varchar, row.vector, row.xml, row.boxes, row.bpchares, row.chares, row.circlees, row.datees, row.float4es, row.float8es, row.inetes, row.int2es, row.int2vectores, row.int4es, row.int8es, row.intervales, row.jsones, row.jsonbes, row.linees, row.lseges, row.moneyes, row.mydomaines, row.myenumes, row.namees, row.numerices, row.pathes, row.pointes, row.polygones, row.textes, row.timees, row.timestampes, row.timestampzes, row.timezes, row.uuides, row.varchares, row.xmles)) + val `_rowParser`: RowParser[PgtestRow] = RowParsers.of(ScalaDbTypes.PgTypes.bool, PgTypes.box, PgTypes.bpchar, PgTypes.bytea, PgTypes.bpchar, PgTypes.circle, PgTypes.date, ScalaDbTypes.PgTypes.float4, ScalaDbTypes.PgTypes.float8, ScalaDbTypes.PgTypes.hstore, PgTypes.inet, ScalaDbTypes.PgTypes.int2, PgTypes.int2vector, ScalaDbTypes.PgTypes.int4, ScalaDbTypes.PgTypes.int8, PgTypes.interval, PgTypes.json, PgTypes.jsonb, PgTypes.line, PgTypes.lseg, PgTypes.money, Mydomain.pgType, Myenum.pgType, PgTypes.name, ScalaDbTypes.PgTypes.numeric, PgTypes.path, PgTypes.point, PgTypes.polygon, PgTypes.text, PgTypes.time, PgTypes.timestamp, PgTypes.timestamptz, PgTypes.timetz, PgTypes.uuid, PgTypes.text, PgTypes.vector, PgTypes.xml, PgTypes.boxArray, PgTypes.bpcharArray, PgTypes.bpcharArray, PgTypes.circleArray, PgTypes.dateArray, PgTypes.float4ArrayUnboxed, PgTypes.float8ArrayUnboxed, PgTypes.inetArray, PgTypes.int2ArrayUnboxed, PgTypes.int2vectorArray, PgTypes.int4ArrayUnboxed, PgTypes.int8ArrayUnboxed, PgTypes.intervalArray, PgTypes.jsonArray, PgTypes.jsonbArray, PgTypes.lineArray, PgTypes.lsegArray, PgTypes.moneyArray, Mydomain.pgTypeArray, Myenum.pgTypeArray, PgTypes.nameArray, ScalaDbTypes.PgTypes.numericArray, PgTypes.pathArray, PgTypes.pointArray, PgTypes.polygonArray, PgTypes.textArray, PgTypes.timeArray, PgTypes.timestampArray, PgTypes.timestamptzArray, PgTypes.timetzArray, PgTypes.uuidArray, PgTypes.textArray, PgTypes.xmlArray)(PgtestRow.apply)(row => Array[Any](row.bool, row.box, row.bpchar, row.bytea, row.char, row.circle, row.date, row.float4, row.float8, row.hstore, row.inet, row.int2, row.int2vector, row.int4, row.int8, row.interval, row.json, row.jsonb, row.line, row.lseg, row.money, row.mydomain, row.myenum, row.name, row.numeric, row.path, row.point, row.polygon, row.text, row.time, row.timestamp, row.timestampz, row.timez, row.uuid, row.varchar, row.vector, row.xml, row.boxes, row.bpchares, row.chares, row.circlees, row.datees, row.float4es, row.float8es, row.inetes, row.int2es, row.int2vectores, row.int4es, row.int8es, row.intervales, row.jsones, row.jsonbes, row.linees, row.lseges, row.moneyes, row.mydomaines, row.myenumes, row.namees, row.numerices, row.pathes, row.pointes, row.polygones, row.textes, row.timees, row.timestampes, row.timestampzes, row.timezes, row.uuides, row.varchares, row.xmles)) given pgText: PgText[PgtestRow] = PgText.from(`_rowParser`.underlying) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/pgtestnull/PgtestnullFields.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/pgtestnull/PgtestnullFields.scala index 0aab8264b1..abfc1c5a06 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/pgtestnull/PgtestnullFields.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/pgtestnull/PgtestnullFields.scala @@ -300,7 +300,7 @@ class PgtestnullFields(val `_path`: java.util.List[Path]) extends TupleExpr70[Bo None, Some("text"), (row, value) => row.copy(mydomain = value), - Mydomain.dbType + Mydomain.pgType ) } @@ -312,7 +312,7 @@ class PgtestnullFields(val `_path`: java.util.List[Path]) extends TupleExpr70[Bo None, Some("public.myenum"), (row, value) => row.copy(myenum = value), - Myenum.dbType + Myenum.pgType ) } @@ -708,7 +708,7 @@ class PgtestnullFields(val `_path`: java.util.List[Path]) extends TupleExpr70[Bo Some("text[]"), Some("mydomain[]"), (row, value) => row.copy(mydomaines = value), - Mydomain.dbTypeArray + Mydomain.pgTypeArray ) } @@ -720,7 +720,7 @@ class PgtestnullFields(val `_path`: java.util.List[Path]) extends TupleExpr70[Bo None, Some("myenum[]"), (row, value) => row.copy(myenumes = value), - Myenum.dbTypeArray + Myenum.pgTypeArray ) } diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/pgtestnull/PgtestnullRepoImpl.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/pgtestnull/PgtestnullRepoImpl.scala index 39aca20ebd..5c2afa4504 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/pgtestnull/PgtestnullRepoImpl.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/pgtestnull/PgtestnullRepoImpl.scala @@ -25,7 +25,7 @@ class PgtestnullRepoImpl extends PgtestnullRepo { override def insert(unsaved: PgtestnullRow)(using 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", "mydomaines", "myenumes", "namees", "numerices", "pathes", "pointes", "polygones", "textes", "timees", "timestampes", "timestampzes", "timezes", "uuides", "varchares", "xmles") - values (${Fragment.encode(ScalaDbTypes.PgTypes.bool.nullable, unsaved.bool)}, ${Fragment.encode(PgTypes.box.nullable, unsaved.box)}::box, ${Fragment.encode(PgTypes.bpchar.nullable, unsaved.bpchar)}::bpchar, ${Fragment.encode(PgTypes.bytea.nullable, unsaved.bytea)}::bytea, ${Fragment.encode(PgTypes.bpchar.nullable, unsaved.char)}::bpchar, ${Fragment.encode(PgTypes.circle.nullable, unsaved.circle)}::circle, ${Fragment.encode(PgTypes.date.nullable, unsaved.date)}::date, ${Fragment.encode(ScalaDbTypes.PgTypes.float4.nullable, unsaved.float4)}::float4, ${Fragment.encode(ScalaDbTypes.PgTypes.float8.nullable, unsaved.float8)}::float8, ${Fragment.encode(ScalaDbTypes.PgTypes.hstore.nullable, unsaved.hstore)}::hstore, ${Fragment.encode(PgTypes.inet.nullable, unsaved.inet)}::inet, ${Fragment.encode(ScalaDbTypes.PgTypes.int2.nullable, unsaved.int2)}::int2, ${Fragment.encode(PgTypes.int2vector.nullable, unsaved.int2vector)}::int2vector, ${Fragment.encode(ScalaDbTypes.PgTypes.int4.nullable, unsaved.int4)}::int4, ${Fragment.encode(ScalaDbTypes.PgTypes.int8.nullable, unsaved.int8)}::int8, ${Fragment.encode(PgTypes.interval.nullable, unsaved.interval)}::interval, ${Fragment.encode(PgTypes.json.nullable, unsaved.json)}::json, ${Fragment.encode(PgTypes.jsonb.nullable, unsaved.jsonb)}::jsonb, ${Fragment.encode(PgTypes.line.nullable, unsaved.line)}::line, ${Fragment.encode(PgTypes.lseg.nullable, unsaved.lseg)}::lseg, ${Fragment.encode(PgTypes.money.nullable, unsaved.money)}::money, ${Fragment.encode(Mydomain.dbType.nullable, unsaved.mydomain)}::text, ${Fragment.encode(Myenum.dbType.nullable, unsaved.myenum)}::public.myenum, ${Fragment.encode(PgTypes.name.nullable, unsaved.name)}::name, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric.nullable, unsaved.numeric)}::numeric, ${Fragment.encode(PgTypes.path.nullable, unsaved.path)}::path, ${Fragment.encode(PgTypes.point.nullable, unsaved.point)}::point, ${Fragment.encode(PgTypes.polygon.nullable, unsaved.polygon)}::polygon, ${Fragment.encode(PgTypes.text.nullable, unsaved.text)}, ${Fragment.encode(PgTypes.time.nullable, unsaved.time)}::time, ${Fragment.encode(PgTypes.timestamp.nullable, unsaved.timestamp)}::timestamp, ${Fragment.encode(PgTypes.timestamptz.nullable, unsaved.timestampz)}::timestamptz, ${Fragment.encode(PgTypes.timetz.nullable, unsaved.timez)}::timetz, ${Fragment.encode(PgTypes.uuid.nullable, unsaved.uuid)}::uuid, ${Fragment.encode(PgTypes.text.nullable, unsaved.varchar)}, ${Fragment.encode(PgTypes.vector.nullable, unsaved.vector)}::vector, ${Fragment.encode(PgTypes.xml.nullable, unsaved.xml)}::xml, ${Fragment.encode(PgTypes.boxArray.nullable, unsaved.boxes)}::box[], ${Fragment.encode(PgTypes.bpcharArray.nullable, unsaved.bpchares)}::bpchar[], ${Fragment.encode(PgTypes.bpcharArray.nullable, unsaved.chares)}::bpchar[], ${Fragment.encode(PgTypes.circleArray.nullable, unsaved.circlees)}::circle[], ${Fragment.encode(PgTypes.dateArray.nullable, unsaved.datees)}::date[], ${Fragment.encode(PgTypes.float4ArrayUnboxed.nullable, unsaved.float4es)}::float4[], ${Fragment.encode(PgTypes.float8ArrayUnboxed.nullable, unsaved.float8es)}::float8[], ${Fragment.encode(PgTypes.inetArray.nullable, unsaved.inetes)}::inet[], ${Fragment.encode(PgTypes.int2ArrayUnboxed.nullable, unsaved.int2es)}::int2[], ${Fragment.encode(PgTypes.int2vectorArray.nullable, unsaved.int2vectores)}::int2vector[], ${Fragment.encode(PgTypes.int4ArrayUnboxed.nullable, unsaved.int4es)}::int4[], ${Fragment.encode(PgTypes.int8ArrayUnboxed.nullable, unsaved.int8es)}::int8[], ${Fragment.encode(PgTypes.intervalArray.nullable, unsaved.intervales)}::interval[], ${Fragment.encode(PgTypes.jsonArray.nullable, unsaved.jsones)}::json[], ${Fragment.encode(PgTypes.jsonbArray.nullable, unsaved.jsonbes)}::jsonb[], ${Fragment.encode(PgTypes.lineArray.nullable, unsaved.linees)}::line[], ${Fragment.encode(PgTypes.lsegArray.nullable, unsaved.lseges)}::lseg[], ${Fragment.encode(PgTypes.moneyArray.nullable, unsaved.moneyes)}::money[], ${Fragment.encode(Mydomain.dbTypeArray.nullable, unsaved.mydomaines)}::mydomain[], ${Fragment.encode(Myenum.dbTypeArray.nullable, unsaved.myenumes)}::myenum[], ${Fragment.encode(PgTypes.nameArray.nullable, unsaved.namees)}::name[], ${Fragment.encode(ScalaDbTypes.PgTypes.numericArray.nullable, unsaved.numerices)}::numeric[], ${Fragment.encode(PgTypes.pathArray.nullable, unsaved.pathes)}::path[], ${Fragment.encode(PgTypes.pointArray.nullable, unsaved.pointes)}::point[], ${Fragment.encode(PgTypes.polygonArray.nullable, unsaved.polygones)}::polygon[], ${Fragment.encode(PgTypes.textArray.nullable, unsaved.textes)}::text[], ${Fragment.encode(PgTypes.timeArray.nullable, unsaved.timees)}::time[], ${Fragment.encode(PgTypes.timestampArray.nullable, unsaved.timestampes)}::timestamp[], ${Fragment.encode(PgTypes.timestamptzArray.nullable, unsaved.timestampzes)}::timestamptz[], ${Fragment.encode(PgTypes.timetzArray.nullable, unsaved.timezes)}::timetz[], ${Fragment.encode(PgTypes.uuidArray.nullable, unsaved.uuides)}::uuid[], ${Fragment.encode(PgTypes.textArray.nullable, unsaved.varchares)}::varchar[], ${Fragment.encode(PgTypes.xmlArray.nullable, unsaved.xmles)}::xml[]) + values (${Fragment.encode(ScalaDbTypes.PgTypes.bool.nullable, unsaved.bool)}, ${Fragment.encode(PgTypes.box.nullable, unsaved.box)}::box, ${Fragment.encode(PgTypes.bpchar.nullable, unsaved.bpchar)}::bpchar, ${Fragment.encode(PgTypes.bytea.nullable, unsaved.bytea)}::bytea, ${Fragment.encode(PgTypes.bpchar.nullable, unsaved.char)}::bpchar, ${Fragment.encode(PgTypes.circle.nullable, unsaved.circle)}::circle, ${Fragment.encode(PgTypes.date.nullable, unsaved.date)}::date, ${Fragment.encode(ScalaDbTypes.PgTypes.float4.nullable, unsaved.float4)}::float4, ${Fragment.encode(ScalaDbTypes.PgTypes.float8.nullable, unsaved.float8)}::float8, ${Fragment.encode(ScalaDbTypes.PgTypes.hstore.nullable, unsaved.hstore)}::hstore, ${Fragment.encode(PgTypes.inet.nullable, unsaved.inet)}::inet, ${Fragment.encode(ScalaDbTypes.PgTypes.int2.nullable, unsaved.int2)}::int2, ${Fragment.encode(PgTypes.int2vector.nullable, unsaved.int2vector)}::int2vector, ${Fragment.encode(ScalaDbTypes.PgTypes.int4.nullable, unsaved.int4)}::int4, ${Fragment.encode(ScalaDbTypes.PgTypes.int8.nullable, unsaved.int8)}::int8, ${Fragment.encode(PgTypes.interval.nullable, unsaved.interval)}::interval, ${Fragment.encode(PgTypes.json.nullable, unsaved.json)}::json, ${Fragment.encode(PgTypes.jsonb.nullable, unsaved.jsonb)}::jsonb, ${Fragment.encode(PgTypes.line.nullable, unsaved.line)}::line, ${Fragment.encode(PgTypes.lseg.nullable, unsaved.lseg)}::lseg, ${Fragment.encode(PgTypes.money.nullable, unsaved.money)}::money, ${Fragment.encode(Mydomain.pgType.nullable, unsaved.mydomain)}::text, ${Fragment.encode(Myenum.pgType.nullable, unsaved.myenum)}::public.myenum, ${Fragment.encode(PgTypes.name.nullable, unsaved.name)}::name, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric.nullable, unsaved.numeric)}::numeric, ${Fragment.encode(PgTypes.path.nullable, unsaved.path)}::path, ${Fragment.encode(PgTypes.point.nullable, unsaved.point)}::point, ${Fragment.encode(PgTypes.polygon.nullable, unsaved.polygon)}::polygon, ${Fragment.encode(PgTypes.text.nullable, unsaved.text)}, ${Fragment.encode(PgTypes.time.nullable, unsaved.time)}::time, ${Fragment.encode(PgTypes.timestamp.nullable, unsaved.timestamp)}::timestamp, ${Fragment.encode(PgTypes.timestamptz.nullable, unsaved.timestampz)}::timestamptz, ${Fragment.encode(PgTypes.timetz.nullable, unsaved.timez)}::timetz, ${Fragment.encode(PgTypes.uuid.nullable, unsaved.uuid)}::uuid, ${Fragment.encode(PgTypes.text.nullable, unsaved.varchar)}, ${Fragment.encode(PgTypes.vector.nullable, unsaved.vector)}::vector, ${Fragment.encode(PgTypes.xml.nullable, unsaved.xml)}::xml, ${Fragment.encode(PgTypes.boxArray.nullable, unsaved.boxes)}::box[], ${Fragment.encode(PgTypes.bpcharArray.nullable, unsaved.bpchares)}::bpchar[], ${Fragment.encode(PgTypes.bpcharArray.nullable, unsaved.chares)}::bpchar[], ${Fragment.encode(PgTypes.circleArray.nullable, unsaved.circlees)}::circle[], ${Fragment.encode(PgTypes.dateArray.nullable, unsaved.datees)}::date[], ${Fragment.encode(PgTypes.float4ArrayUnboxed.nullable, unsaved.float4es)}::float4[], ${Fragment.encode(PgTypes.float8ArrayUnboxed.nullable, unsaved.float8es)}::float8[], ${Fragment.encode(PgTypes.inetArray.nullable, unsaved.inetes)}::inet[], ${Fragment.encode(PgTypes.int2ArrayUnboxed.nullable, unsaved.int2es)}::int2[], ${Fragment.encode(PgTypes.int2vectorArray.nullable, unsaved.int2vectores)}::int2vector[], ${Fragment.encode(PgTypes.int4ArrayUnboxed.nullable, unsaved.int4es)}::int4[], ${Fragment.encode(PgTypes.int8ArrayUnboxed.nullable, unsaved.int8es)}::int8[], ${Fragment.encode(PgTypes.intervalArray.nullable, unsaved.intervales)}::interval[], ${Fragment.encode(PgTypes.jsonArray.nullable, unsaved.jsones)}::json[], ${Fragment.encode(PgTypes.jsonbArray.nullable, unsaved.jsonbes)}::jsonb[], ${Fragment.encode(PgTypes.lineArray.nullable, unsaved.linees)}::line[], ${Fragment.encode(PgTypes.lsegArray.nullable, unsaved.lseges)}::lseg[], ${Fragment.encode(PgTypes.moneyArray.nullable, unsaved.moneyes)}::money[], ${Fragment.encode(Mydomain.pgTypeArray.nullable, unsaved.mydomaines)}::mydomain[], ${Fragment.encode(Myenum.pgTypeArray.nullable, unsaved.myenumes)}::myenum[], ${Fragment.encode(PgTypes.nameArray.nullable, unsaved.namees)}::name[], ${Fragment.encode(ScalaDbTypes.PgTypes.numericArray.nullable, unsaved.numerices)}::numeric[], ${Fragment.encode(PgTypes.pathArray.nullable, unsaved.pathes)}::path[], ${Fragment.encode(PgTypes.pointArray.nullable, unsaved.pointes)}::point[], ${Fragment.encode(PgTypes.polygonArray.nullable, unsaved.polygones)}::polygon[], ${Fragment.encode(PgTypes.textArray.nullable, unsaved.textes)}::text[], ${Fragment.encode(PgTypes.timeArray.nullable, unsaved.timees)}::time[], ${Fragment.encode(PgTypes.timestampArray.nullable, unsaved.timestampes)}::timestamp[], ${Fragment.encode(PgTypes.timestamptzArray.nullable, unsaved.timestampzes)}::timestamptz[], ${Fragment.encode(PgTypes.timetzArray.nullable, unsaved.timezes)}::timetz[], ${Fragment.encode(PgTypes.uuidArray.nullable, unsaved.uuides)}::uuid[], ${Fragment.encode(PgTypes.textArray.nullable, unsaved.varchares)}::varchar[], ${Fragment.encode(PgTypes.xmlArray.nullable, unsaved.xmles)}::xml[]) RETURNING "bool", "box", "bpchar", "bytea", "char", "circle", "date", "float4", "float8", "hstore", "inet", "int2", "int2vector", "int4", "int8", "interval", "json", "jsonb", "line", "lseg", "money"::numeric, "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"::numeric[], "mydomaines"::text[], "myenumes", "namees", "numerices", "pathes", "pointes", "polygones", "textes", "timees", "timestampes", "timestampzes", "timezes", "uuides", "varchares", "xmles" """ .updateReturning(PgtestnullRow.`_rowParser`.exactlyOne()).runUnchecked(c) diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/pgtestnull/PgtestnullRow.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/pgtestnull/PgtestnullRow.scala index 5d2bcac38a..0e2b61d336 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/pgtestnull/PgtestnullRow.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/pgtestnull/PgtestnullRow.scala @@ -251,7 +251,7 @@ case class PgtestnullRow( } object PgtestnullRow { - val `_rowParser`: RowParser[PgtestnullRow] = RowParsers.of(ScalaDbTypes.PgTypes.bool.nullable, PgTypes.box.nullable, PgTypes.bpchar.nullable, PgTypes.bytea.nullable, PgTypes.bpchar.nullable, PgTypes.circle.nullable, PgTypes.date.nullable, ScalaDbTypes.PgTypes.float4.nullable, ScalaDbTypes.PgTypes.float8.nullable, ScalaDbTypes.PgTypes.hstore.nullable, PgTypes.inet.nullable, ScalaDbTypes.PgTypes.int2.nullable, PgTypes.int2vector.nullable, ScalaDbTypes.PgTypes.int4.nullable, ScalaDbTypes.PgTypes.int8.nullable, PgTypes.interval.nullable, PgTypes.json.nullable, PgTypes.jsonb.nullable, PgTypes.line.nullable, PgTypes.lseg.nullable, PgTypes.money.nullable, Mydomain.dbType.nullable, Myenum.dbType.nullable, PgTypes.name.nullable, ScalaDbTypes.PgTypes.numeric.nullable, PgTypes.path.nullable, PgTypes.point.nullable, PgTypes.polygon.nullable, PgTypes.text.nullable, PgTypes.time.nullable, PgTypes.timestamp.nullable, PgTypes.timestamptz.nullable, PgTypes.timetz.nullable, PgTypes.uuid.nullable, PgTypes.text.nullable, PgTypes.vector.nullable, PgTypes.xml.nullable, PgTypes.boxArray.nullable, PgTypes.bpcharArray.nullable, PgTypes.bpcharArray.nullable, PgTypes.circleArray.nullable, PgTypes.dateArray.nullable, PgTypes.float4ArrayUnboxed.nullable, PgTypes.float8ArrayUnboxed.nullable, PgTypes.inetArray.nullable, PgTypes.int2ArrayUnboxed.nullable, PgTypes.int2vectorArray.nullable, PgTypes.int4ArrayUnboxed.nullable, PgTypes.int8ArrayUnboxed.nullable, PgTypes.intervalArray.nullable, PgTypes.jsonArray.nullable, PgTypes.jsonbArray.nullable, PgTypes.lineArray.nullable, PgTypes.lsegArray.nullable, PgTypes.moneyArray.nullable, Mydomain.dbTypeArray.nullable, Myenum.dbTypeArray.nullable, PgTypes.nameArray.nullable, ScalaDbTypes.PgTypes.numericArray.nullable, PgTypes.pathArray.nullable, PgTypes.pointArray.nullable, PgTypes.polygonArray.nullable, PgTypes.textArray.nullable, PgTypes.timeArray.nullable, PgTypes.timestampArray.nullable, PgTypes.timestamptzArray.nullable, PgTypes.timetzArray.nullable, PgTypes.uuidArray.nullable, PgTypes.textArray.nullable, PgTypes.xmlArray.nullable)(PgtestnullRow.apply)(row => Array[Any](row.bool, row.box, row.bpchar, row.bytea, row.char, row.circle, row.date, row.float4, row.float8, row.hstore, row.inet, row.int2, row.int2vector, row.int4, row.int8, row.interval, row.json, row.jsonb, row.line, row.lseg, row.money, row.mydomain, row.myenum, row.name, row.numeric, row.path, row.point, row.polygon, row.text, row.time, row.timestamp, row.timestampz, row.timez, row.uuid, row.varchar, row.vector, row.xml, row.boxes, row.bpchares, row.chares, row.circlees, row.datees, row.float4es, row.float8es, row.inetes, row.int2es, row.int2vectores, row.int4es, row.int8es, row.intervales, row.jsones, row.jsonbes, row.linees, row.lseges, row.moneyes, row.mydomaines, row.myenumes, row.namees, row.numerices, row.pathes, row.pointes, row.polygones, row.textes, row.timees, row.timestampes, row.timestampzes, row.timezes, row.uuides, row.varchares, row.xmles)) + val `_rowParser`: RowParser[PgtestnullRow] = RowParsers.of(ScalaDbTypes.PgTypes.bool.nullable, PgTypes.box.nullable, PgTypes.bpchar.nullable, PgTypes.bytea.nullable, PgTypes.bpchar.nullable, PgTypes.circle.nullable, PgTypes.date.nullable, ScalaDbTypes.PgTypes.float4.nullable, ScalaDbTypes.PgTypes.float8.nullable, ScalaDbTypes.PgTypes.hstore.nullable, PgTypes.inet.nullable, ScalaDbTypes.PgTypes.int2.nullable, PgTypes.int2vector.nullable, ScalaDbTypes.PgTypes.int4.nullable, ScalaDbTypes.PgTypes.int8.nullable, PgTypes.interval.nullable, PgTypes.json.nullable, PgTypes.jsonb.nullable, PgTypes.line.nullable, PgTypes.lseg.nullable, PgTypes.money.nullable, Mydomain.pgType.nullable, Myenum.pgType.nullable, PgTypes.name.nullable, ScalaDbTypes.PgTypes.numeric.nullable, PgTypes.path.nullable, PgTypes.point.nullable, PgTypes.polygon.nullable, PgTypes.text.nullable, PgTypes.time.nullable, PgTypes.timestamp.nullable, PgTypes.timestamptz.nullable, PgTypes.timetz.nullable, PgTypes.uuid.nullable, PgTypes.text.nullable, PgTypes.vector.nullable, PgTypes.xml.nullable, PgTypes.boxArray.nullable, PgTypes.bpcharArray.nullable, PgTypes.bpcharArray.nullable, PgTypes.circleArray.nullable, PgTypes.dateArray.nullable, PgTypes.float4ArrayUnboxed.nullable, PgTypes.float8ArrayUnboxed.nullable, PgTypes.inetArray.nullable, PgTypes.int2ArrayUnboxed.nullable, PgTypes.int2vectorArray.nullable, PgTypes.int4ArrayUnboxed.nullable, PgTypes.int8ArrayUnboxed.nullable, PgTypes.intervalArray.nullable, PgTypes.jsonArray.nullable, PgTypes.jsonbArray.nullable, PgTypes.lineArray.nullable, PgTypes.lsegArray.nullable, PgTypes.moneyArray.nullable, Mydomain.pgTypeArray.nullable, Myenum.pgTypeArray.nullable, PgTypes.nameArray.nullable, ScalaDbTypes.PgTypes.numericArray.nullable, PgTypes.pathArray.nullable, PgTypes.pointArray.nullable, PgTypes.polygonArray.nullable, PgTypes.textArray.nullable, PgTypes.timeArray.nullable, PgTypes.timestampArray.nullable, PgTypes.timestamptzArray.nullable, PgTypes.timetzArray.nullable, PgTypes.uuidArray.nullable, PgTypes.textArray.nullable, PgTypes.xmlArray.nullable)(PgtestnullRow.apply)(row => Array[Any](row.bool, row.box, row.bpchar, row.bytea, row.char, row.circle, row.date, row.float4, row.float8, row.hstore, row.inet, row.int2, row.int2vector, row.int4, row.int8, row.interval, row.json, row.jsonb, row.line, row.lseg, row.money, row.mydomain, row.myenum, row.name, row.numeric, row.path, row.point, row.polygon, row.text, row.time, row.timestamp, row.timestampz, row.timez, row.uuid, row.varchar, row.vector, row.xml, row.boxes, row.bpchares, row.chares, row.circlees, row.datees, row.float4es, row.float8es, row.inetes, row.int2es, row.int2vectores, row.int4es, row.int8es, row.intervales, row.jsones, row.jsonbes, row.linees, row.lseges, row.moneyes, row.mydomaines, row.myenumes, row.namees, row.numerices, row.pathes, row.pointes, row.polygones, row.textes, row.timees, row.timestampes, row.timestampzes, row.timezes, row.uuides, row.varchares, row.xmles)) given pgText: PgText[PgtestnullRow] = PgText.from(`_rowParser`.underlying) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/precision_types/PrecisionTypesFields.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/precision_types/PrecisionTypesFields.scala index dd93c70a34..2d1d0ef9d6 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/precision_types/PrecisionTypesFields.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/precision_types/PrecisionTypesFields.scala @@ -37,7 +37,7 @@ class PrecisionTypesFields(val `_path`: java.util.List[Path]) extends TupleExpr2 None, Some("int4"), (row, value) => row.copy(id = value), - PrecisionTypesId.dbType + PrecisionTypesId.pgType ) } @@ -49,7 +49,7 @@ class PrecisionTypesFields(val `_path`: java.util.List[Path]) extends TupleExpr2 None, None, (row, value) => row.copy(string10 = value), - String10.dbType + String10.pgType ) } @@ -61,7 +61,7 @@ class PrecisionTypesFields(val `_path`: java.util.List[Path]) extends TupleExpr2 None, None, (row, value) => row.copy(string20 = value), - String20.dbType + String20.pgType ) } @@ -73,7 +73,7 @@ class PrecisionTypesFields(val `_path`: java.util.List[Path]) extends TupleExpr2 None, None, (row, value) => row.copy(string50 = value), - String50.dbType + String50.pgType ) } @@ -85,7 +85,7 @@ class PrecisionTypesFields(val `_path`: java.util.List[Path]) extends TupleExpr2 None, None, (row, value) => row.copy(string100 = value), - String100.dbType + String100.pgType ) } @@ -97,7 +97,7 @@ class PrecisionTypesFields(val `_path`: java.util.List[Path]) extends TupleExpr2 None, None, (row, value) => row.copy(string255 = value), - String255.dbType + String255.pgType ) } @@ -109,7 +109,7 @@ class PrecisionTypesFields(val `_path`: java.util.List[Path]) extends TupleExpr2 None, Some("bpchar"), (row, value) => row.copy(bpchar3 = value), - PaddedString3.dbType + PaddedString3.pgType ) } @@ -121,7 +121,7 @@ class PrecisionTypesFields(val `_path`: java.util.List[Path]) extends TupleExpr2 None, Some("bpchar"), (row, value) => row.copy(bpchar10 = value), - PaddedString10.dbType + PaddedString10.pgType ) } diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/precision_types/PrecisionTypesId.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/precision_types/PrecisionTypesId.scala index 7c008f9f86..9971a7cfca 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/precision_types/PrecisionTypesId.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/precision_types/PrecisionTypesId.scala @@ -17,7 +17,7 @@ case class PrecisionTypesId(@JsonValue value: Int) extends scala.AnyVal object PrecisionTypesId { given bijection: Bijection[PrecisionTypesId, Int] = Bijection.apply[PrecisionTypesId, Int](_.value)(PrecisionTypesId.apply) - given dbType: PgType[PrecisionTypesId] = ScalaDbTypes.PgTypes.int4.bimap(PrecisionTypesId.apply, _.value) + given pgType: PgType[PrecisionTypesId] = ScalaDbTypes.PgTypes.int4.bimap(PrecisionTypesId.apply, _.value) - given dbTypeArray: PgType[Array[PrecisionTypesId]] = PgTypes.int4ArrayUnboxed.bimap(xs => xs.map(PrecisionTypesId.apply), xs => xs.map(_.value)) + given pgTypeArray: PgType[Array[PrecisionTypesId]] = PgTypes.int4ArrayUnboxed.bimap(xs => xs.map(PrecisionTypesId.apply), xs => xs.map(_.value)) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/precision_types/PrecisionTypesRepoImpl.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/precision_types/PrecisionTypesRepoImpl.scala index 64e7af1e86..5e4b21f4e8 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/precision_types/PrecisionTypesRepoImpl.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/precision_types/PrecisionTypesRepoImpl.scala @@ -28,19 +28,19 @@ import dev.typr.foundations.scala.Fragment.sql class PrecisionTypesRepoImpl extends PrecisionTypesRepo { override def delete: DeleteBuilder[PrecisionTypesFields, PrecisionTypesRow] = DeleteBuilder.of(""""public"."precision_types"""", PrecisionTypesFields.structure, Dialect.POSTGRESQL) - override def deleteById(id: PrecisionTypesId)(using c: Connection): Boolean = sql"""delete from "public"."precision_types" where "id" = ${Fragment.encode(PrecisionTypesId.dbType, id)}""".update().runUnchecked(c) > 0 + override def deleteById(id: PrecisionTypesId)(using c: Connection): Boolean = sql"""delete from "public"."precision_types" where "id" = ${Fragment.encode(PrecisionTypesId.pgType, id)}""".update().runUnchecked(c) > 0 override def deleteByIds(ids: Array[PrecisionTypesId])(using c: Connection): Int = { sql"""delete from "public"."precision_types" - where "id" = ANY(${Fragment.encode(PrecisionTypesId.dbTypeArray, ids)})""" + where "id" = ANY(${Fragment.encode(PrecisionTypesId.pgTypeArray, ids)})""" .update() .runUnchecked(c) } override def insert(unsaved: PrecisionTypesRow)(using c: Connection): PrecisionTypesRow = { sql"""insert into "public"."precision_types"("id", "string10", "string20", "string50", "string100", "string255", "bpchar3", "bpchar10", "decimal5_2", "decimal10_2", "decimal18_4", "numeric8_2", "numeric12_4", "timestamp0", "timestamp3", "timestamp6", "timestamptz0", "timestamptz3", "timestamptz6", "time0", "time3", "time6", "timetz0", "timetz3", "timetz6") - values (${Fragment.encode(PrecisionTypesId.dbType, unsaved.id)}::int4, ${Fragment.encode(String10.dbType, unsaved.string10)}, ${Fragment.encode(String20.dbType, unsaved.string20)}, ${Fragment.encode(String50.dbType, unsaved.string50)}, ${Fragment.encode(String100.dbType, unsaved.string100)}, ${Fragment.encode(String255.dbType, unsaved.string255)}, ${Fragment.encode(PaddedString3.dbType, unsaved.bpchar3)}::bpchar, ${Fragment.encode(PaddedString10.dbType, unsaved.bpchar10)}::bpchar, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, unsaved.decimal52)}::numeric, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, unsaved.decimal102)}::numeric, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, unsaved.decimal184)}::numeric, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, unsaved.numeric82)}::numeric, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, unsaved.numeric124)}::numeric, ${Fragment.encode(PgTypes.timestamp, unsaved.timestamp0)}::timestamp, ${Fragment.encode(PgTypes.timestamp, unsaved.timestamp3)}::timestamp, ${Fragment.encode(PgTypes.timestamp, unsaved.timestamp6)}::timestamp, ${Fragment.encode(PgTypes.timestamptz, unsaved.timestamptz0)}::timestamptz, ${Fragment.encode(PgTypes.timestamptz, unsaved.timestamptz3)}::timestamptz, ${Fragment.encode(PgTypes.timestamptz, unsaved.timestamptz6)}::timestamptz, ${Fragment.encode(PgTypes.time, unsaved.time0)}::time, ${Fragment.encode(PgTypes.time, unsaved.time3)}::time, ${Fragment.encode(PgTypes.time, unsaved.time6)}::time, ${Fragment.encode(PgTypes.timetz, unsaved.timetz0)}::timetz, ${Fragment.encode(PgTypes.timetz, unsaved.timetz3)}::timetz, ${Fragment.encode(PgTypes.timetz, unsaved.timetz6)}::timetz) + values (${Fragment.encode(PrecisionTypesId.pgType, unsaved.id)}::int4, ${Fragment.encode(String10.pgType, unsaved.string10)}, ${Fragment.encode(String20.pgType, unsaved.string20)}, ${Fragment.encode(String50.pgType, unsaved.string50)}, ${Fragment.encode(String100.pgType, unsaved.string100)}, ${Fragment.encode(String255.pgType, unsaved.string255)}, ${Fragment.encode(PaddedString3.pgType, unsaved.bpchar3)}::bpchar, ${Fragment.encode(PaddedString10.pgType, unsaved.bpchar10)}::bpchar, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, unsaved.decimal52)}::numeric, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, unsaved.decimal102)}::numeric, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, unsaved.decimal184)}::numeric, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, unsaved.numeric82)}::numeric, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, unsaved.numeric124)}::numeric, ${Fragment.encode(PgTypes.timestamp, unsaved.timestamp0)}::timestamp, ${Fragment.encode(PgTypes.timestamp, unsaved.timestamp3)}::timestamp, ${Fragment.encode(PgTypes.timestamp, unsaved.timestamp6)}::timestamp, ${Fragment.encode(PgTypes.timestamptz, unsaved.timestamptz0)}::timestamptz, ${Fragment.encode(PgTypes.timestamptz, unsaved.timestamptz3)}::timestamptz, ${Fragment.encode(PgTypes.timestamptz, unsaved.timestamptz6)}::timestamptz, ${Fragment.encode(PgTypes.time, unsaved.time0)}::time, ${Fragment.encode(PgTypes.time, unsaved.time3)}::time, ${Fragment.encode(PgTypes.time, unsaved.time6)}::time, ${Fragment.encode(PgTypes.timetz, unsaved.timetz0)}::timetz, ${Fragment.encode(PgTypes.timetz, unsaved.timetz3)}::timetz, ${Fragment.encode(PgTypes.timetz, unsaved.timetz6)}::timetz) RETURNING "id", "string10", "string20", "string50", "string100", "string255", "bpchar3", "bpchar10", "decimal5_2", "decimal10_2", "decimal18_4", "numeric8_2", "numeric12_4", "timestamp0", "timestamp3", "timestamp6", "timestamptz0", "timestamptz3", "timestamptz6", "time0", "time3", "time6", "timetz0", "timetz3", "timetz6" """ .updateReturning(PrecisionTypesRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -50,19 +50,19 @@ class PrecisionTypesRepoImpl extends PrecisionTypesRepo { val columns: ListBuffer[Fragment] = ListBuffer() val values: ListBuffer[Fragment] = ListBuffer() columns.addOne(Fragment.lit(""""string10"""")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(String10.dbType, unsaved.string10)}"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(String10.pgType, unsaved.string10)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""string20"""")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(String20.dbType, unsaved.string20)}"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(String20.pgType, unsaved.string20)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""string50"""")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(String50.dbType, unsaved.string50)}"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(String50.pgType, unsaved.string50)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""string100"""")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(String100.dbType, unsaved.string100)}"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(String100.pgType, unsaved.string100)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""string255"""")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(String255.dbType, unsaved.string255)}"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(String255.pgType, unsaved.string255)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""bpchar3"""")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(PaddedString3.dbType, unsaved.bpchar3)}::bpchar"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(PaddedString3.pgType, unsaved.bpchar3)}::bpchar"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""bpchar10"""")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(PaddedString10.dbType, unsaved.bpchar10)}::bpchar"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(PaddedString10.pgType, unsaved.bpchar10)}::bpchar"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""decimal5_2"""")): @scala.annotation.nowarn values.addOne(sql"${Fragment.encode(ScalaDbTypes.PgTypes.numeric, unsaved.decimal52)}::numeric"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""decimal10_2"""")): @scala.annotation.nowarn @@ -99,7 +99,7 @@ class PrecisionTypesRepoImpl extends PrecisionTypesRepo { values.addOne(sql"${Fragment.encode(PgTypes.timetz, unsaved.timetz6)}::timetz"): @scala.annotation.nowarn unsaved.id.visit( { }, - value => { columns.addOne(Fragment.lit(""""id"""")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(PrecisionTypesId.dbType, value)}::int4"): @scala.annotation.nowarn } + value => { columns.addOne(Fragment.lit(""""id"""")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(PrecisionTypesId.pgType, value)}::int4"): @scala.annotation.nowarn } ); val q: Fragment = { sql"""insert into "public"."precision_types"(${Fragment.comma(columns)}) @@ -132,13 +132,13 @@ class PrecisionTypesRepoImpl extends PrecisionTypesRepo { override def selectById(id: PrecisionTypesId)(using c: Connection): Option[PrecisionTypesRow] = { sql"""select "id", "string10", "string20", "string50", "string100", "string255", "bpchar3", "bpchar10", "decimal5_2", "decimal10_2", "decimal18_4", "numeric8_2", "numeric12_4", "timestamp0", "timestamp3", "timestamp6", "timestamptz0", "timestamptz3", "timestamptz6", "time0", "time3", "time6", "timetz0", "timetz3", "timetz6" from "public"."precision_types" - where "id" = ${Fragment.encode(PrecisionTypesId.dbType, id)}""".query(PrecisionTypesRow.`_rowParser`.first()).runUnchecked(c) + where "id" = ${Fragment.encode(PrecisionTypesId.pgType, id)}""".query(PrecisionTypesRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(ids: Array[PrecisionTypesId])(using c: Connection): List[PrecisionTypesRow] = { sql"""select "id", "string10", "string20", "string50", "string100", "string255", "bpchar3", "bpchar10", "decimal5_2", "decimal10_2", "decimal18_4", "numeric8_2", "numeric12_4", "timestamp0", "timestamp3", "timestamp6", "timestamptz0", "timestamptz3", "timestamptz6", "time0", "time3", "time6", "timetz0", "timetz3", "timetz6" from "public"."precision_types" - where "id" = ANY(${Fragment.encode(PrecisionTypesId.dbTypeArray, ids)})""".query(PrecisionTypesRow.`_rowParser`.all()).runUnchecked(c) + where "id" = ANY(${Fragment.encode(PrecisionTypesId.pgTypeArray, ids)})""".query(PrecisionTypesRow.`_rowParser`.all()).runUnchecked(c) } override def selectByIdsTracked(ids: Array[PrecisionTypesId])(using c: Connection): Map[PrecisionTypesId, PrecisionTypesRow] = { @@ -152,13 +152,13 @@ class PrecisionTypesRepoImpl extends PrecisionTypesRepo { override def update(row: PrecisionTypesRow)(using c: Connection): Boolean = { val id: PrecisionTypesId = row.id return sql"""update "public"."precision_types" - set "string10" = ${Fragment.encode(String10.dbType, row.string10)}, - "string20" = ${Fragment.encode(String20.dbType, row.string20)}, - "string50" = ${Fragment.encode(String50.dbType, row.string50)}, - "string100" = ${Fragment.encode(String100.dbType, row.string100)}, - "string255" = ${Fragment.encode(String255.dbType, row.string255)}, - "bpchar3" = ${Fragment.encode(PaddedString3.dbType, row.bpchar3)}::bpchar, - "bpchar10" = ${Fragment.encode(PaddedString10.dbType, row.bpchar10)}::bpchar, + set "string10" = ${Fragment.encode(String10.pgType, row.string10)}, + "string20" = ${Fragment.encode(String20.pgType, row.string20)}, + "string50" = ${Fragment.encode(String50.pgType, row.string50)}, + "string100" = ${Fragment.encode(String100.pgType, row.string100)}, + "string255" = ${Fragment.encode(String255.pgType, row.string255)}, + "bpchar3" = ${Fragment.encode(PaddedString3.pgType, row.bpchar3)}::bpchar, + "bpchar10" = ${Fragment.encode(PaddedString10.pgType, row.bpchar10)}::bpchar, "decimal5_2" = ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, row.decimal52)}::numeric, "decimal10_2" = ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, row.decimal102)}::numeric, "decimal18_4" = ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, row.decimal184)}::numeric, @@ -176,12 +176,12 @@ class PrecisionTypesRepoImpl extends PrecisionTypesRepo { "timetz0" = ${Fragment.encode(PgTypes.timetz, row.timetz0)}::timetz, "timetz3" = ${Fragment.encode(PgTypes.timetz, row.timetz3)}::timetz, "timetz6" = ${Fragment.encode(PgTypes.timetz, row.timetz6)}::timetz - where "id" = ${Fragment.encode(PrecisionTypesId.dbType, id)}""".update().runUnchecked(c) > 0 + where "id" = ${Fragment.encode(PrecisionTypesId.pgType, id)}""".update().runUnchecked(c) > 0 } override def upsert(unsaved: PrecisionTypesRow)(using c: Connection): PrecisionTypesRow = { sql"""insert into "public"."precision_types"("id", "string10", "string20", "string50", "string100", "string255", "bpchar3", "bpchar10", "decimal5_2", "decimal10_2", "decimal18_4", "numeric8_2", "numeric12_4", "timestamp0", "timestamp3", "timestamp6", "timestamptz0", "timestamptz3", "timestamptz6", "time0", "time3", "time6", "timetz0", "timetz3", "timetz6") - values (${Fragment.encode(PrecisionTypesId.dbType, unsaved.id)}::int4, ${Fragment.encode(String10.dbType, unsaved.string10)}, ${Fragment.encode(String20.dbType, unsaved.string20)}, ${Fragment.encode(String50.dbType, unsaved.string50)}, ${Fragment.encode(String100.dbType, unsaved.string100)}, ${Fragment.encode(String255.dbType, unsaved.string255)}, ${Fragment.encode(PaddedString3.dbType, unsaved.bpchar3)}::bpchar, ${Fragment.encode(PaddedString10.dbType, unsaved.bpchar10)}::bpchar, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, unsaved.decimal52)}::numeric, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, unsaved.decimal102)}::numeric, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, unsaved.decimal184)}::numeric, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, unsaved.numeric82)}::numeric, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, unsaved.numeric124)}::numeric, ${Fragment.encode(PgTypes.timestamp, unsaved.timestamp0)}::timestamp, ${Fragment.encode(PgTypes.timestamp, unsaved.timestamp3)}::timestamp, ${Fragment.encode(PgTypes.timestamp, unsaved.timestamp6)}::timestamp, ${Fragment.encode(PgTypes.timestamptz, unsaved.timestamptz0)}::timestamptz, ${Fragment.encode(PgTypes.timestamptz, unsaved.timestamptz3)}::timestamptz, ${Fragment.encode(PgTypes.timestamptz, unsaved.timestamptz6)}::timestamptz, ${Fragment.encode(PgTypes.time, unsaved.time0)}::time, ${Fragment.encode(PgTypes.time, unsaved.time3)}::time, ${Fragment.encode(PgTypes.time, unsaved.time6)}::time, ${Fragment.encode(PgTypes.timetz, unsaved.timetz0)}::timetz, ${Fragment.encode(PgTypes.timetz, unsaved.timetz3)}::timetz, ${Fragment.encode(PgTypes.timetz, unsaved.timetz6)}::timetz) + values (${Fragment.encode(PrecisionTypesId.pgType, unsaved.id)}::int4, ${Fragment.encode(String10.pgType, unsaved.string10)}, ${Fragment.encode(String20.pgType, unsaved.string20)}, ${Fragment.encode(String50.pgType, unsaved.string50)}, ${Fragment.encode(String100.pgType, unsaved.string100)}, ${Fragment.encode(String255.pgType, unsaved.string255)}, ${Fragment.encode(PaddedString3.pgType, unsaved.bpchar3)}::bpchar, ${Fragment.encode(PaddedString10.pgType, unsaved.bpchar10)}::bpchar, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, unsaved.decimal52)}::numeric, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, unsaved.decimal102)}::numeric, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, unsaved.decimal184)}::numeric, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, unsaved.numeric82)}::numeric, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, unsaved.numeric124)}::numeric, ${Fragment.encode(PgTypes.timestamp, unsaved.timestamp0)}::timestamp, ${Fragment.encode(PgTypes.timestamp, unsaved.timestamp3)}::timestamp, ${Fragment.encode(PgTypes.timestamp, unsaved.timestamp6)}::timestamp, ${Fragment.encode(PgTypes.timestamptz, unsaved.timestamptz0)}::timestamptz, ${Fragment.encode(PgTypes.timestamptz, unsaved.timestamptz3)}::timestamptz, ${Fragment.encode(PgTypes.timestamptz, unsaved.timestamptz6)}::timestamptz, ${Fragment.encode(PgTypes.time, unsaved.time0)}::time, ${Fragment.encode(PgTypes.time, unsaved.time3)}::time, ${Fragment.encode(PgTypes.time, unsaved.time6)}::time, ${Fragment.encode(PgTypes.timetz, unsaved.timetz0)}::timetz, ${Fragment.encode(PgTypes.timetz, unsaved.timetz3)}::timetz, ${Fragment.encode(PgTypes.timetz, unsaved.timetz6)}::timetz) on conflict ("id") do update set "string10" = EXCLUDED."string10", diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/precision_types/PrecisionTypesRow.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/precision_types/PrecisionTypesRow.scala index d1e28cf229..d727e6fedd 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/precision_types/PrecisionTypesRow.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/precision_types/PrecisionTypesRow.scala @@ -138,7 +138,7 @@ case class PrecisionTypesRow( } object PrecisionTypesRow { - val `_rowParser`: RowParser[PrecisionTypesRow] = RowParsers.of(PrecisionTypesId.dbType, String10.dbType, String20.dbType, String50.dbType, String100.dbType, String255.dbType, PaddedString3.dbType, PaddedString10.dbType, ScalaDbTypes.PgTypes.numeric, ScalaDbTypes.PgTypes.numeric, ScalaDbTypes.PgTypes.numeric, ScalaDbTypes.PgTypes.numeric, ScalaDbTypes.PgTypes.numeric, PgTypes.timestamp, PgTypes.timestamp, PgTypes.timestamp, PgTypes.timestamptz, PgTypes.timestamptz, PgTypes.timestamptz, PgTypes.time, PgTypes.time, PgTypes.time, PgTypes.timetz, PgTypes.timetz, PgTypes.timetz)(PrecisionTypesRow.apply)(row => Array[Any](row.id, row.string10, row.string20, row.string50, row.string100, row.string255, row.bpchar3, row.bpchar10, row.decimal52, row.decimal102, row.decimal184, row.numeric82, row.numeric124, row.timestamp0, row.timestamp3, row.timestamp6, row.timestamptz0, row.timestamptz3, row.timestamptz6, row.time0, row.time3, row.time6, row.timetz0, row.timetz3, row.timetz6)) + val `_rowParser`: RowParser[PrecisionTypesRow] = RowParsers.of(PrecisionTypesId.pgType, String10.pgType, String20.pgType, String50.pgType, String100.pgType, String255.pgType, PaddedString3.pgType, PaddedString10.pgType, ScalaDbTypes.PgTypes.numeric, ScalaDbTypes.PgTypes.numeric, ScalaDbTypes.PgTypes.numeric, ScalaDbTypes.PgTypes.numeric, ScalaDbTypes.PgTypes.numeric, PgTypes.timestamp, PgTypes.timestamp, PgTypes.timestamp, PgTypes.timestamptz, PgTypes.timestamptz, PgTypes.timestamptz, PgTypes.time, PgTypes.time, PgTypes.time, PgTypes.timetz, PgTypes.timetz, PgTypes.timetz)(PrecisionTypesRow.apply)(row => Array[Any](row.id, row.string10, row.string20, row.string50, row.string100, row.string255, row.bpchar3, row.bpchar10, row.decimal52, row.decimal102, row.decimal184, row.numeric82, row.numeric124, row.timestamp0, row.timestamp3, row.timestamp6, row.timestamptz0, row.timestamptz3, row.timestamptz6, row.time0, row.time3, row.time6, row.timetz0, row.timetz3, row.timetz6)) given pgText: PgText[PrecisionTypesRow] = PgText.from(`_rowParser`.underlying) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/precision_types/PrecisionTypesRowUnsaved.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/precision_types/PrecisionTypesRowUnsaved.scala index debb51b255..2727eb01cc 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/precision_types/PrecisionTypesRowUnsaved.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/precision_types/PrecisionTypesRowUnsaved.scala @@ -84,5 +84,5 @@ case class PrecisionTypesRowUnsaved( } object PrecisionTypesRowUnsaved { - given pgText: PgText[PrecisionTypesRowUnsaved] = PgText.instance((row, sb) => { String10.dbType.text.unsafeEncode(row.string10, sb); sb.append(PgText.DELIMETER); String20.dbType.text.unsafeEncode(row.string20, sb); sb.append(PgText.DELIMETER); String50.dbType.text.unsafeEncode(row.string50, sb); sb.append(PgText.DELIMETER); String100.dbType.text.unsafeEncode(row.string100, sb); sb.append(PgText.DELIMETER); String255.dbType.text.unsafeEncode(row.string255, sb); sb.append(PgText.DELIMETER); PaddedString3.dbType.text.unsafeEncode(row.bpchar3, sb); sb.append(PgText.DELIMETER); PaddedString10.dbType.text.unsafeEncode(row.bpchar10, sb); sb.append(PgText.DELIMETER); ScalaDbTypes.PgTypes.numeric.text.unsafeEncode(row.decimal52, sb); sb.append(PgText.DELIMETER); ScalaDbTypes.PgTypes.numeric.text.unsafeEncode(row.decimal102, sb); sb.append(PgText.DELIMETER); ScalaDbTypes.PgTypes.numeric.text.unsafeEncode(row.decimal184, sb); sb.append(PgText.DELIMETER); ScalaDbTypes.PgTypes.numeric.text.unsafeEncode(row.numeric82, sb); sb.append(PgText.DELIMETER); ScalaDbTypes.PgTypes.numeric.text.unsafeEncode(row.numeric124, sb); sb.append(PgText.DELIMETER); PgTypes.timestamp.text.unsafeEncode(row.timestamp0, sb); sb.append(PgText.DELIMETER); PgTypes.timestamp.text.unsafeEncode(row.timestamp3, sb); sb.append(PgText.DELIMETER); PgTypes.timestamp.text.unsafeEncode(row.timestamp6, sb); sb.append(PgText.DELIMETER); PgTypes.timestamptz.text.unsafeEncode(row.timestamptz0, sb); sb.append(PgText.DELIMETER); PgTypes.timestamptz.text.unsafeEncode(row.timestamptz3, sb); sb.append(PgText.DELIMETER); PgTypes.timestamptz.text.unsafeEncode(row.timestamptz6, sb); sb.append(PgText.DELIMETER); PgTypes.time.text.unsafeEncode(row.time0, sb); sb.append(PgText.DELIMETER); PgTypes.time.text.unsafeEncode(row.time3, sb); sb.append(PgText.DELIMETER); PgTypes.time.text.unsafeEncode(row.time6, sb); sb.append(PgText.DELIMETER); PgTypes.timetz.text.unsafeEncode(row.timetz0, sb); sb.append(PgText.DELIMETER); PgTypes.timetz.text.unsafeEncode(row.timetz3, sb); sb.append(PgText.DELIMETER); PgTypes.timetz.text.unsafeEncode(row.timetz6, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PrecisionTypesId.dbType.text).unsafeEncode(row.id, sb) }) + given pgText: PgText[PrecisionTypesRowUnsaved] = PgText.instance((row, sb) => { String10.pgType.text.unsafeEncode(row.string10, sb); sb.append(PgText.DELIMETER); String20.pgType.text.unsafeEncode(row.string20, sb); sb.append(PgText.DELIMETER); String50.pgType.text.unsafeEncode(row.string50, sb); sb.append(PgText.DELIMETER); String100.pgType.text.unsafeEncode(row.string100, sb); sb.append(PgText.DELIMETER); String255.pgType.text.unsafeEncode(row.string255, sb); sb.append(PgText.DELIMETER); PaddedString3.pgType.text.unsafeEncode(row.bpchar3, sb); sb.append(PgText.DELIMETER); PaddedString10.pgType.text.unsafeEncode(row.bpchar10, sb); sb.append(PgText.DELIMETER); ScalaDbTypes.PgTypes.numeric.text.unsafeEncode(row.decimal52, sb); sb.append(PgText.DELIMETER); ScalaDbTypes.PgTypes.numeric.text.unsafeEncode(row.decimal102, sb); sb.append(PgText.DELIMETER); ScalaDbTypes.PgTypes.numeric.text.unsafeEncode(row.decimal184, sb); sb.append(PgText.DELIMETER); ScalaDbTypes.PgTypes.numeric.text.unsafeEncode(row.numeric82, sb); sb.append(PgText.DELIMETER); ScalaDbTypes.PgTypes.numeric.text.unsafeEncode(row.numeric124, sb); sb.append(PgText.DELIMETER); PgTypes.timestamp.text.unsafeEncode(row.timestamp0, sb); sb.append(PgText.DELIMETER); PgTypes.timestamp.text.unsafeEncode(row.timestamp3, sb); sb.append(PgText.DELIMETER); PgTypes.timestamp.text.unsafeEncode(row.timestamp6, sb); sb.append(PgText.DELIMETER); PgTypes.timestamptz.text.unsafeEncode(row.timestamptz0, sb); sb.append(PgText.DELIMETER); PgTypes.timestamptz.text.unsafeEncode(row.timestamptz3, sb); sb.append(PgText.DELIMETER); PgTypes.timestamptz.text.unsafeEncode(row.timestamptz6, sb); sb.append(PgText.DELIMETER); PgTypes.time.text.unsafeEncode(row.time0, sb); sb.append(PgText.DELIMETER); PgTypes.time.text.unsafeEncode(row.time3, sb); sb.append(PgText.DELIMETER); PgTypes.time.text.unsafeEncode(row.time6, sb); sb.append(PgText.DELIMETER); PgTypes.timetz.text.unsafeEncode(row.timetz0, sb); sb.append(PgText.DELIMETER); PgTypes.timetz.text.unsafeEncode(row.timetz3, sb); sb.append(PgText.DELIMETER); PgTypes.timetz.text.unsafeEncode(row.timetz6, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PrecisionTypesId.pgType.text).unsafeEncode(row.id, sb) }) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/precision_types_null/PrecisionTypesNullFields.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/precision_types_null/PrecisionTypesNullFields.scala index d737a9c240..893f52411e 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/precision_types_null/PrecisionTypesNullFields.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/precision_types_null/PrecisionTypesNullFields.scala @@ -37,7 +37,7 @@ class PrecisionTypesNullFields(val `_path`: java.util.List[Path]) extends TupleE None, Some("int4"), (row, value) => row.copy(id = value), - PrecisionTypesNullId.dbType + PrecisionTypesNullId.pgType ) } @@ -49,7 +49,7 @@ class PrecisionTypesNullFields(val `_path`: java.util.List[Path]) extends TupleE None, None, (row, value) => row.copy(string10 = value), - String10.dbType + String10.pgType ) } @@ -61,7 +61,7 @@ class PrecisionTypesNullFields(val `_path`: java.util.List[Path]) extends TupleE None, None, (row, value) => row.copy(string20 = value), - String20.dbType + String20.pgType ) } @@ -73,7 +73,7 @@ class PrecisionTypesNullFields(val `_path`: java.util.List[Path]) extends TupleE None, None, (row, value) => row.copy(string50 = value), - String50.dbType + String50.pgType ) } @@ -85,7 +85,7 @@ class PrecisionTypesNullFields(val `_path`: java.util.List[Path]) extends TupleE None, None, (row, value) => row.copy(string100 = value), - String100.dbType + String100.pgType ) } @@ -97,7 +97,7 @@ class PrecisionTypesNullFields(val `_path`: java.util.List[Path]) extends TupleE None, None, (row, value) => row.copy(string255 = value), - String255.dbType + String255.pgType ) } @@ -109,7 +109,7 @@ class PrecisionTypesNullFields(val `_path`: java.util.List[Path]) extends TupleE None, Some("bpchar"), (row, value) => row.copy(bpchar3 = value), - PaddedString3.dbType + PaddedString3.pgType ) } @@ -121,7 +121,7 @@ class PrecisionTypesNullFields(val `_path`: java.util.List[Path]) extends TupleE None, Some("bpchar"), (row, value) => row.copy(bpchar10 = value), - PaddedString10.dbType + PaddedString10.pgType ) } diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/precision_types_null/PrecisionTypesNullId.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/precision_types_null/PrecisionTypesNullId.scala index 9010ea5e69..ca83039d3e 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/precision_types_null/PrecisionTypesNullId.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/precision_types_null/PrecisionTypesNullId.scala @@ -17,7 +17,7 @@ case class PrecisionTypesNullId(@JsonValue value: Int) extends scala.AnyVal object PrecisionTypesNullId { given bijection: Bijection[PrecisionTypesNullId, Int] = Bijection.apply[PrecisionTypesNullId, Int](_.value)(PrecisionTypesNullId.apply) - given dbType: PgType[PrecisionTypesNullId] = ScalaDbTypes.PgTypes.int4.bimap(PrecisionTypesNullId.apply, _.value) + given pgType: PgType[PrecisionTypesNullId] = ScalaDbTypes.PgTypes.int4.bimap(PrecisionTypesNullId.apply, _.value) - given dbTypeArray: PgType[Array[PrecisionTypesNullId]] = PgTypes.int4ArrayUnboxed.bimap(xs => xs.map(PrecisionTypesNullId.apply), xs => xs.map(_.value)) + given pgTypeArray: PgType[Array[PrecisionTypesNullId]] = PgTypes.int4ArrayUnboxed.bimap(xs => xs.map(PrecisionTypesNullId.apply), xs => xs.map(_.value)) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/precision_types_null/PrecisionTypesNullRepoImpl.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/precision_types_null/PrecisionTypesNullRepoImpl.scala index bc6c7e758e..1a0118a414 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/precision_types_null/PrecisionTypesNullRepoImpl.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/precision_types_null/PrecisionTypesNullRepoImpl.scala @@ -29,19 +29,19 @@ import dev.typr.foundations.scala.Fragment.sql class PrecisionTypesNullRepoImpl extends PrecisionTypesNullRepo { override def delete: DeleteBuilder[PrecisionTypesNullFields, PrecisionTypesNullRow] = DeleteBuilder.of(""""public"."precision_types_null"""", PrecisionTypesNullFields.structure, Dialect.POSTGRESQL) - override def deleteById(id: PrecisionTypesNullId)(using c: Connection): Boolean = sql"""delete from "public"."precision_types_null" where "id" = ${Fragment.encode(PrecisionTypesNullId.dbType, id)}""".update().runUnchecked(c) > 0 + override def deleteById(id: PrecisionTypesNullId)(using c: Connection): Boolean = sql"""delete from "public"."precision_types_null" where "id" = ${Fragment.encode(PrecisionTypesNullId.pgType, id)}""".update().runUnchecked(c) > 0 override def deleteByIds(ids: Array[PrecisionTypesNullId])(using c: Connection): Int = { sql"""delete from "public"."precision_types_null" - where "id" = ANY(${Fragment.encode(PrecisionTypesNullId.dbTypeArray, ids)})""" + where "id" = ANY(${Fragment.encode(PrecisionTypesNullId.pgTypeArray, ids)})""" .update() .runUnchecked(c) } override def insert(unsaved: PrecisionTypesNullRow)(using c: Connection): PrecisionTypesNullRow = { sql"""insert into "public"."precision_types_null"("id", "string10", "string20", "string50", "string100", "string255", "bpchar3", "bpchar10", "decimal5_2", "decimal10_2", "decimal18_4", "numeric8_2", "numeric12_4", "timestamp0", "timestamp3", "timestamp6", "timestamptz0", "timestamptz3", "timestamptz6", "time0", "time3", "time6", "timetz0", "timetz3", "timetz6") - values (${Fragment.encode(PrecisionTypesNullId.dbType, unsaved.id)}::int4, ${Fragment.encode(String10.dbType.nullable, unsaved.string10)}, ${Fragment.encode(String20.dbType.nullable, unsaved.string20)}, ${Fragment.encode(String50.dbType.nullable, unsaved.string50)}, ${Fragment.encode(String100.dbType.nullable, unsaved.string100)}, ${Fragment.encode(String255.dbType.nullable, unsaved.string255)}, ${Fragment.encode(PaddedString3.dbType.nullable, unsaved.bpchar3)}::bpchar, ${Fragment.encode(PaddedString10.dbType.nullable, unsaved.bpchar10)}::bpchar, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric.nullable, unsaved.decimal52)}::numeric, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric.nullable, unsaved.decimal102)}::numeric, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric.nullable, unsaved.decimal184)}::numeric, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric.nullable, unsaved.numeric82)}::numeric, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric.nullable, unsaved.numeric124)}::numeric, ${Fragment.encode(PgTypes.timestamp.nullable, unsaved.timestamp0)}::timestamp, ${Fragment.encode(PgTypes.timestamp.nullable, unsaved.timestamp3)}::timestamp, ${Fragment.encode(PgTypes.timestamp.nullable, unsaved.timestamp6)}::timestamp, ${Fragment.encode(PgTypes.timestamptz.nullable, unsaved.timestamptz0)}::timestamptz, ${Fragment.encode(PgTypes.timestamptz.nullable, unsaved.timestamptz3)}::timestamptz, ${Fragment.encode(PgTypes.timestamptz.nullable, unsaved.timestamptz6)}::timestamptz, ${Fragment.encode(PgTypes.time.nullable, unsaved.time0)}::time, ${Fragment.encode(PgTypes.time.nullable, unsaved.time3)}::time, ${Fragment.encode(PgTypes.time.nullable, unsaved.time6)}::time, ${Fragment.encode(PgTypes.timetz.nullable, unsaved.timetz0)}::timetz, ${Fragment.encode(PgTypes.timetz.nullable, unsaved.timetz3)}::timetz, ${Fragment.encode(PgTypes.timetz.nullable, unsaved.timetz6)}::timetz) + values (${Fragment.encode(PrecisionTypesNullId.pgType, unsaved.id)}::int4, ${Fragment.encode(String10.pgType.nullable, unsaved.string10)}, ${Fragment.encode(String20.pgType.nullable, unsaved.string20)}, ${Fragment.encode(String50.pgType.nullable, unsaved.string50)}, ${Fragment.encode(String100.pgType.nullable, unsaved.string100)}, ${Fragment.encode(String255.pgType.nullable, unsaved.string255)}, ${Fragment.encode(PaddedString3.pgType.nullable, unsaved.bpchar3)}::bpchar, ${Fragment.encode(PaddedString10.pgType.nullable, unsaved.bpchar10)}::bpchar, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric.nullable, unsaved.decimal52)}::numeric, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric.nullable, unsaved.decimal102)}::numeric, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric.nullable, unsaved.decimal184)}::numeric, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric.nullable, unsaved.numeric82)}::numeric, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric.nullable, unsaved.numeric124)}::numeric, ${Fragment.encode(PgTypes.timestamp.nullable, unsaved.timestamp0)}::timestamp, ${Fragment.encode(PgTypes.timestamp.nullable, unsaved.timestamp3)}::timestamp, ${Fragment.encode(PgTypes.timestamp.nullable, unsaved.timestamp6)}::timestamp, ${Fragment.encode(PgTypes.timestamptz.nullable, unsaved.timestamptz0)}::timestamptz, ${Fragment.encode(PgTypes.timestamptz.nullable, unsaved.timestamptz3)}::timestamptz, ${Fragment.encode(PgTypes.timestamptz.nullable, unsaved.timestamptz6)}::timestamptz, ${Fragment.encode(PgTypes.time.nullable, unsaved.time0)}::time, ${Fragment.encode(PgTypes.time.nullable, unsaved.time3)}::time, ${Fragment.encode(PgTypes.time.nullable, unsaved.time6)}::time, ${Fragment.encode(PgTypes.timetz.nullable, unsaved.timetz0)}::timetz, ${Fragment.encode(PgTypes.timetz.nullable, unsaved.timetz3)}::timetz, ${Fragment.encode(PgTypes.timetz.nullable, unsaved.timetz6)}::timetz) RETURNING "id", "string10", "string20", "string50", "string100", "string255", "bpchar3", "bpchar10", "decimal5_2", "decimal10_2", "decimal18_4", "numeric8_2", "numeric12_4", "timestamp0", "timestamp3", "timestamp6", "timestamptz0", "timestamptz3", "timestamptz6", "time0", "time3", "time6", "timetz0", "timetz3", "timetz6" """ .updateReturning(PrecisionTypesNullRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -51,19 +51,19 @@ class PrecisionTypesNullRepoImpl extends PrecisionTypesNullRepo { val columns: ListBuffer[Fragment] = ListBuffer() val values: ListBuffer[Fragment] = ListBuffer() columns.addOne(Fragment.lit(""""string10"""")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(String10.dbType.nullable, unsaved.string10)}"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(String10.pgType.nullable, unsaved.string10)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""string20"""")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(String20.dbType.nullable, unsaved.string20)}"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(String20.pgType.nullable, unsaved.string20)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""string50"""")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(String50.dbType.nullable, unsaved.string50)}"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(String50.pgType.nullable, unsaved.string50)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""string100"""")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(String100.dbType.nullable, unsaved.string100)}"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(String100.pgType.nullable, unsaved.string100)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""string255"""")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(String255.dbType.nullable, unsaved.string255)}"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(String255.pgType.nullable, unsaved.string255)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""bpchar3"""")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(PaddedString3.dbType.nullable, unsaved.bpchar3)}::bpchar"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(PaddedString3.pgType.nullable, unsaved.bpchar3)}::bpchar"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""bpchar10"""")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(PaddedString10.dbType.nullable, unsaved.bpchar10)}::bpchar"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(PaddedString10.pgType.nullable, unsaved.bpchar10)}::bpchar"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""decimal5_2"""")): @scala.annotation.nowarn values.addOne(sql"${Fragment.encode(ScalaDbTypes.PgTypes.numeric.nullable, unsaved.decimal52)}::numeric"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""decimal10_2"""")): @scala.annotation.nowarn @@ -100,7 +100,7 @@ class PrecisionTypesNullRepoImpl extends PrecisionTypesNullRepo { values.addOne(sql"${Fragment.encode(PgTypes.timetz.nullable, unsaved.timetz6)}::timetz"): @scala.annotation.nowarn unsaved.id.visit( { }, - value => { columns.addOne(Fragment.lit(""""id"""")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(PrecisionTypesNullId.dbType, value)}::int4"): @scala.annotation.nowarn } + value => { columns.addOne(Fragment.lit(""""id"""")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(PrecisionTypesNullId.pgType, value)}::int4"): @scala.annotation.nowarn } ); val q: Fragment = { sql"""insert into "public"."precision_types_null"(${Fragment.comma(columns)}) @@ -133,13 +133,13 @@ class PrecisionTypesNullRepoImpl extends PrecisionTypesNullRepo { override def selectById(id: PrecisionTypesNullId)(using c: Connection): Option[PrecisionTypesNullRow] = { sql"""select "id", "string10", "string20", "string50", "string100", "string255", "bpchar3", "bpchar10", "decimal5_2", "decimal10_2", "decimal18_4", "numeric8_2", "numeric12_4", "timestamp0", "timestamp3", "timestamp6", "timestamptz0", "timestamptz3", "timestamptz6", "time0", "time3", "time6", "timetz0", "timetz3", "timetz6" from "public"."precision_types_null" - where "id" = ${Fragment.encode(PrecisionTypesNullId.dbType, id)}""".query(PrecisionTypesNullRow.`_rowParser`.first()).runUnchecked(c) + where "id" = ${Fragment.encode(PrecisionTypesNullId.pgType, id)}""".query(PrecisionTypesNullRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(ids: Array[PrecisionTypesNullId])(using c: Connection): List[PrecisionTypesNullRow] = { sql"""select "id", "string10", "string20", "string50", "string100", "string255", "bpchar3", "bpchar10", "decimal5_2", "decimal10_2", "decimal18_4", "numeric8_2", "numeric12_4", "timestamp0", "timestamp3", "timestamp6", "timestamptz0", "timestamptz3", "timestamptz6", "time0", "time3", "time6", "timetz0", "timetz3", "timetz6" from "public"."precision_types_null" - where "id" = ANY(${Fragment.encode(PrecisionTypesNullId.dbTypeArray, ids)})""".query(PrecisionTypesNullRow.`_rowParser`.all()).runUnchecked(c) + where "id" = ANY(${Fragment.encode(PrecisionTypesNullId.pgTypeArray, ids)})""".query(PrecisionTypesNullRow.`_rowParser`.all()).runUnchecked(c) } override def selectByIdsTracked(ids: Array[PrecisionTypesNullId])(using c: Connection): Map[PrecisionTypesNullId, PrecisionTypesNullRow] = { @@ -153,13 +153,13 @@ class PrecisionTypesNullRepoImpl extends PrecisionTypesNullRepo { override def update(row: PrecisionTypesNullRow)(using c: Connection): Boolean = { val id: PrecisionTypesNullId = row.id return sql"""update "public"."precision_types_null" - set "string10" = ${Fragment.encode(String10.dbType.nullable, row.string10)}, - "string20" = ${Fragment.encode(String20.dbType.nullable, row.string20)}, - "string50" = ${Fragment.encode(String50.dbType.nullable, row.string50)}, - "string100" = ${Fragment.encode(String100.dbType.nullable, row.string100)}, - "string255" = ${Fragment.encode(String255.dbType.nullable, row.string255)}, - "bpchar3" = ${Fragment.encode(PaddedString3.dbType.nullable, row.bpchar3)}::bpchar, - "bpchar10" = ${Fragment.encode(PaddedString10.dbType.nullable, row.bpchar10)}::bpchar, + set "string10" = ${Fragment.encode(String10.pgType.nullable, row.string10)}, + "string20" = ${Fragment.encode(String20.pgType.nullable, row.string20)}, + "string50" = ${Fragment.encode(String50.pgType.nullable, row.string50)}, + "string100" = ${Fragment.encode(String100.pgType.nullable, row.string100)}, + "string255" = ${Fragment.encode(String255.pgType.nullable, row.string255)}, + "bpchar3" = ${Fragment.encode(PaddedString3.pgType.nullable, row.bpchar3)}::bpchar, + "bpchar10" = ${Fragment.encode(PaddedString10.pgType.nullable, row.bpchar10)}::bpchar, "decimal5_2" = ${Fragment.encode(ScalaDbTypes.PgTypes.numeric.nullable, row.decimal52)}::numeric, "decimal10_2" = ${Fragment.encode(ScalaDbTypes.PgTypes.numeric.nullable, row.decimal102)}::numeric, "decimal18_4" = ${Fragment.encode(ScalaDbTypes.PgTypes.numeric.nullable, row.decimal184)}::numeric, @@ -177,12 +177,12 @@ class PrecisionTypesNullRepoImpl extends PrecisionTypesNullRepo { "timetz0" = ${Fragment.encode(PgTypes.timetz.nullable, row.timetz0)}::timetz, "timetz3" = ${Fragment.encode(PgTypes.timetz.nullable, row.timetz3)}::timetz, "timetz6" = ${Fragment.encode(PgTypes.timetz.nullable, row.timetz6)}::timetz - where "id" = ${Fragment.encode(PrecisionTypesNullId.dbType, id)}""".update().runUnchecked(c) > 0 + where "id" = ${Fragment.encode(PrecisionTypesNullId.pgType, id)}""".update().runUnchecked(c) > 0 } override def upsert(unsaved: PrecisionTypesNullRow)(using c: Connection): PrecisionTypesNullRow = { sql"""insert into "public"."precision_types_null"("id", "string10", "string20", "string50", "string100", "string255", "bpchar3", "bpchar10", "decimal5_2", "decimal10_2", "decimal18_4", "numeric8_2", "numeric12_4", "timestamp0", "timestamp3", "timestamp6", "timestamptz0", "timestamptz3", "timestamptz6", "time0", "time3", "time6", "timetz0", "timetz3", "timetz6") - values (${Fragment.encode(PrecisionTypesNullId.dbType, unsaved.id)}::int4, ${Fragment.encode(String10.dbType.nullable, unsaved.string10)}, ${Fragment.encode(String20.dbType.nullable, unsaved.string20)}, ${Fragment.encode(String50.dbType.nullable, unsaved.string50)}, ${Fragment.encode(String100.dbType.nullable, unsaved.string100)}, ${Fragment.encode(String255.dbType.nullable, unsaved.string255)}, ${Fragment.encode(PaddedString3.dbType.nullable, unsaved.bpchar3)}::bpchar, ${Fragment.encode(PaddedString10.dbType.nullable, unsaved.bpchar10)}::bpchar, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric.nullable, unsaved.decimal52)}::numeric, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric.nullable, unsaved.decimal102)}::numeric, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric.nullable, unsaved.decimal184)}::numeric, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric.nullable, unsaved.numeric82)}::numeric, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric.nullable, unsaved.numeric124)}::numeric, ${Fragment.encode(PgTypes.timestamp.nullable, unsaved.timestamp0)}::timestamp, ${Fragment.encode(PgTypes.timestamp.nullable, unsaved.timestamp3)}::timestamp, ${Fragment.encode(PgTypes.timestamp.nullable, unsaved.timestamp6)}::timestamp, ${Fragment.encode(PgTypes.timestamptz.nullable, unsaved.timestamptz0)}::timestamptz, ${Fragment.encode(PgTypes.timestamptz.nullable, unsaved.timestamptz3)}::timestamptz, ${Fragment.encode(PgTypes.timestamptz.nullable, unsaved.timestamptz6)}::timestamptz, ${Fragment.encode(PgTypes.time.nullable, unsaved.time0)}::time, ${Fragment.encode(PgTypes.time.nullable, unsaved.time3)}::time, ${Fragment.encode(PgTypes.time.nullable, unsaved.time6)}::time, ${Fragment.encode(PgTypes.timetz.nullable, unsaved.timetz0)}::timetz, ${Fragment.encode(PgTypes.timetz.nullable, unsaved.timetz3)}::timetz, ${Fragment.encode(PgTypes.timetz.nullable, unsaved.timetz6)}::timetz) + values (${Fragment.encode(PrecisionTypesNullId.pgType, unsaved.id)}::int4, ${Fragment.encode(String10.pgType.nullable, unsaved.string10)}, ${Fragment.encode(String20.pgType.nullable, unsaved.string20)}, ${Fragment.encode(String50.pgType.nullable, unsaved.string50)}, ${Fragment.encode(String100.pgType.nullable, unsaved.string100)}, ${Fragment.encode(String255.pgType.nullable, unsaved.string255)}, ${Fragment.encode(PaddedString3.pgType.nullable, unsaved.bpchar3)}::bpchar, ${Fragment.encode(PaddedString10.pgType.nullable, unsaved.bpchar10)}::bpchar, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric.nullable, unsaved.decimal52)}::numeric, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric.nullable, unsaved.decimal102)}::numeric, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric.nullable, unsaved.decimal184)}::numeric, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric.nullable, unsaved.numeric82)}::numeric, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric.nullable, unsaved.numeric124)}::numeric, ${Fragment.encode(PgTypes.timestamp.nullable, unsaved.timestamp0)}::timestamp, ${Fragment.encode(PgTypes.timestamp.nullable, unsaved.timestamp3)}::timestamp, ${Fragment.encode(PgTypes.timestamp.nullable, unsaved.timestamp6)}::timestamp, ${Fragment.encode(PgTypes.timestamptz.nullable, unsaved.timestamptz0)}::timestamptz, ${Fragment.encode(PgTypes.timestamptz.nullable, unsaved.timestamptz3)}::timestamptz, ${Fragment.encode(PgTypes.timestamptz.nullable, unsaved.timestamptz6)}::timestamptz, ${Fragment.encode(PgTypes.time.nullable, unsaved.time0)}::time, ${Fragment.encode(PgTypes.time.nullable, unsaved.time3)}::time, ${Fragment.encode(PgTypes.time.nullable, unsaved.time6)}::time, ${Fragment.encode(PgTypes.timetz.nullable, unsaved.timetz0)}::timetz, ${Fragment.encode(PgTypes.timetz.nullable, unsaved.timetz3)}::timetz, ${Fragment.encode(PgTypes.timetz.nullable, unsaved.timetz6)}::timetz) on conflict ("id") do update set "string10" = EXCLUDED."string10", diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/precision_types_null/PrecisionTypesNullRow.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/precision_types_null/PrecisionTypesNullRow.scala index 357e90854e..d9766fdbdf 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/precision_types_null/PrecisionTypesNullRow.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/precision_types_null/PrecisionTypesNullRow.scala @@ -139,7 +139,7 @@ case class PrecisionTypesNullRow( } object PrecisionTypesNullRow { - val `_rowParser`: RowParser[PrecisionTypesNullRow] = RowParsers.of(PrecisionTypesNullId.dbType, String10.dbType.nullable, String20.dbType.nullable, String50.dbType.nullable, String100.dbType.nullable, String255.dbType.nullable, PaddedString3.dbType.nullable, PaddedString10.dbType.nullable, ScalaDbTypes.PgTypes.numeric.nullable, ScalaDbTypes.PgTypes.numeric.nullable, ScalaDbTypes.PgTypes.numeric.nullable, ScalaDbTypes.PgTypes.numeric.nullable, ScalaDbTypes.PgTypes.numeric.nullable, PgTypes.timestamp.nullable, PgTypes.timestamp.nullable, PgTypes.timestamp.nullable, PgTypes.timestamptz.nullable, PgTypes.timestamptz.nullable, PgTypes.timestamptz.nullable, PgTypes.time.nullable, PgTypes.time.nullable, PgTypes.time.nullable, PgTypes.timetz.nullable, PgTypes.timetz.nullable, PgTypes.timetz.nullable)(PrecisionTypesNullRow.apply)(row => Array[Any](row.id, row.string10, row.string20, row.string50, row.string100, row.string255, row.bpchar3, row.bpchar10, row.decimal52, row.decimal102, row.decimal184, row.numeric82, row.numeric124, row.timestamp0, row.timestamp3, row.timestamp6, row.timestamptz0, row.timestamptz3, row.timestamptz6, row.time0, row.time3, row.time6, row.timetz0, row.timetz3, row.timetz6)) + val `_rowParser`: RowParser[PrecisionTypesNullRow] = RowParsers.of(PrecisionTypesNullId.pgType, String10.pgType.nullable, String20.pgType.nullable, String50.pgType.nullable, String100.pgType.nullable, String255.pgType.nullable, PaddedString3.pgType.nullable, PaddedString10.pgType.nullable, ScalaDbTypes.PgTypes.numeric.nullable, ScalaDbTypes.PgTypes.numeric.nullable, ScalaDbTypes.PgTypes.numeric.nullable, ScalaDbTypes.PgTypes.numeric.nullable, ScalaDbTypes.PgTypes.numeric.nullable, PgTypes.timestamp.nullable, PgTypes.timestamp.nullable, PgTypes.timestamp.nullable, PgTypes.timestamptz.nullable, PgTypes.timestamptz.nullable, PgTypes.timestamptz.nullable, PgTypes.time.nullable, PgTypes.time.nullable, PgTypes.time.nullable, PgTypes.timetz.nullable, PgTypes.timetz.nullable, PgTypes.timetz.nullable)(PrecisionTypesNullRow.apply)(row => Array[Any](row.id, row.string10, row.string20, row.string50, row.string100, row.string255, row.bpchar3, row.bpchar10, row.decimal52, row.decimal102, row.decimal184, row.numeric82, row.numeric124, row.timestamp0, row.timestamp3, row.timestamp6, row.timestamptz0, row.timestamptz3, row.timestamptz6, row.time0, row.time3, row.time6, row.timetz0, row.timetz3, row.timetz6)) given pgText: PgText[PrecisionTypesNullRow] = PgText.from(`_rowParser`.underlying) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/precision_types_null/PrecisionTypesNullRowUnsaved.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/precision_types_null/PrecisionTypesNullRowUnsaved.scala index 520568f0f6..508f30af0f 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/precision_types_null/PrecisionTypesNullRowUnsaved.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/precision_types_null/PrecisionTypesNullRowUnsaved.scala @@ -85,5 +85,5 @@ case class PrecisionTypesNullRowUnsaved( } object PrecisionTypesNullRowUnsaved { - given pgText: PgText[PrecisionTypesNullRowUnsaved] = PgText.instance((row, sb) => { String10.dbType.nullable.text.unsafeEncode(row.string10, sb); sb.append(PgText.DELIMETER); String20.dbType.nullable.text.unsafeEncode(row.string20, sb); sb.append(PgText.DELIMETER); String50.dbType.nullable.text.unsafeEncode(row.string50, sb); sb.append(PgText.DELIMETER); String100.dbType.nullable.text.unsafeEncode(row.string100, sb); sb.append(PgText.DELIMETER); String255.dbType.nullable.text.unsafeEncode(row.string255, sb); sb.append(PgText.DELIMETER); PaddedString3.dbType.nullable.text.unsafeEncode(row.bpchar3, sb); sb.append(PgText.DELIMETER); PaddedString10.dbType.nullable.text.unsafeEncode(row.bpchar10, sb); sb.append(PgText.DELIMETER); ScalaDbTypes.PgTypes.numeric.nullable.text.unsafeEncode(row.decimal52, sb); sb.append(PgText.DELIMETER); ScalaDbTypes.PgTypes.numeric.nullable.text.unsafeEncode(row.decimal102, sb); sb.append(PgText.DELIMETER); ScalaDbTypes.PgTypes.numeric.nullable.text.unsafeEncode(row.decimal184, sb); sb.append(PgText.DELIMETER); ScalaDbTypes.PgTypes.numeric.nullable.text.unsafeEncode(row.numeric82, sb); sb.append(PgText.DELIMETER); ScalaDbTypes.PgTypes.numeric.nullable.text.unsafeEncode(row.numeric124, sb); sb.append(PgText.DELIMETER); PgTypes.timestamp.nullable.text.unsafeEncode(row.timestamp0, sb); sb.append(PgText.DELIMETER); PgTypes.timestamp.nullable.text.unsafeEncode(row.timestamp3, sb); sb.append(PgText.DELIMETER); PgTypes.timestamp.nullable.text.unsafeEncode(row.timestamp6, sb); sb.append(PgText.DELIMETER); PgTypes.timestamptz.nullable.text.unsafeEncode(row.timestamptz0, sb); sb.append(PgText.DELIMETER); PgTypes.timestamptz.nullable.text.unsafeEncode(row.timestamptz3, sb); sb.append(PgText.DELIMETER); PgTypes.timestamptz.nullable.text.unsafeEncode(row.timestamptz6, sb); sb.append(PgText.DELIMETER); PgTypes.time.nullable.text.unsafeEncode(row.time0, sb); sb.append(PgText.DELIMETER); PgTypes.time.nullable.text.unsafeEncode(row.time3, sb); sb.append(PgText.DELIMETER); PgTypes.time.nullable.text.unsafeEncode(row.time6, sb); sb.append(PgText.DELIMETER); PgTypes.timetz.nullable.text.unsafeEncode(row.timetz0, sb); sb.append(PgText.DELIMETER); PgTypes.timetz.nullable.text.unsafeEncode(row.timetz3, sb); sb.append(PgText.DELIMETER); PgTypes.timetz.nullable.text.unsafeEncode(row.timetz6, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PrecisionTypesNullId.dbType.text).unsafeEncode(row.id, sb) }) + given pgText: PgText[PrecisionTypesNullRowUnsaved] = PgText.instance((row, sb) => { String10.pgType.nullable.text.unsafeEncode(row.string10, sb); sb.append(PgText.DELIMETER); String20.pgType.nullable.text.unsafeEncode(row.string20, sb); sb.append(PgText.DELIMETER); String50.pgType.nullable.text.unsafeEncode(row.string50, sb); sb.append(PgText.DELIMETER); String100.pgType.nullable.text.unsafeEncode(row.string100, sb); sb.append(PgText.DELIMETER); String255.pgType.nullable.text.unsafeEncode(row.string255, sb); sb.append(PgText.DELIMETER); PaddedString3.pgType.nullable.text.unsafeEncode(row.bpchar3, sb); sb.append(PgText.DELIMETER); PaddedString10.pgType.nullable.text.unsafeEncode(row.bpchar10, sb); sb.append(PgText.DELIMETER); ScalaDbTypes.PgTypes.numeric.nullable.text.unsafeEncode(row.decimal52, sb); sb.append(PgText.DELIMETER); ScalaDbTypes.PgTypes.numeric.nullable.text.unsafeEncode(row.decimal102, sb); sb.append(PgText.DELIMETER); ScalaDbTypes.PgTypes.numeric.nullable.text.unsafeEncode(row.decimal184, sb); sb.append(PgText.DELIMETER); ScalaDbTypes.PgTypes.numeric.nullable.text.unsafeEncode(row.numeric82, sb); sb.append(PgText.DELIMETER); ScalaDbTypes.PgTypes.numeric.nullable.text.unsafeEncode(row.numeric124, sb); sb.append(PgText.DELIMETER); PgTypes.timestamp.nullable.text.unsafeEncode(row.timestamp0, sb); sb.append(PgText.DELIMETER); PgTypes.timestamp.nullable.text.unsafeEncode(row.timestamp3, sb); sb.append(PgText.DELIMETER); PgTypes.timestamp.nullable.text.unsafeEncode(row.timestamp6, sb); sb.append(PgText.DELIMETER); PgTypes.timestamptz.nullable.text.unsafeEncode(row.timestamptz0, sb); sb.append(PgText.DELIMETER); PgTypes.timestamptz.nullable.text.unsafeEncode(row.timestamptz3, sb); sb.append(PgText.DELIMETER); PgTypes.timestamptz.nullable.text.unsafeEncode(row.timestamptz6, sb); sb.append(PgText.DELIMETER); PgTypes.time.nullable.text.unsafeEncode(row.time0, sb); sb.append(PgText.DELIMETER); PgTypes.time.nullable.text.unsafeEncode(row.time3, sb); sb.append(PgText.DELIMETER); PgTypes.time.nullable.text.unsafeEncode(row.time6, sb); sb.append(PgText.DELIMETER); PgTypes.timetz.nullable.text.unsafeEncode(row.timetz0, sb); sb.append(PgText.DELIMETER); PgTypes.timetz.nullable.text.unsafeEncode(row.timetz3, sb); sb.append(PgText.DELIMETER); PgTypes.timetz.nullable.text.unsafeEncode(row.timetz6, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PrecisionTypesNullId.pgType.text).unsafeEncode(row.id, sb) }) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/title/TitleFields.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/title/TitleFields.scala index 2d0f0dc200..18421c38fa 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/title/TitleFields.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/title/TitleFields.scala @@ -23,7 +23,7 @@ class TitleFields(val `_path`: java.util.List[Path]) extends TupleExpr1[TitleId] None, None, (row, value) => row.copy(code = value), - TitleId.dbType + TitleId.pgType ) } diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/title/TitleId.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/title/TitleId.scala index 961c3ec04d..3a02c0ddad 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/title/TitleId.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/title/TitleId.scala @@ -20,12 +20,12 @@ sealed abstract class TitleId(val value: String) object TitleId { def apply(underlying: String): TitleId = ByName.getOrElse(underlying, Unknown(underlying)) - given dbTypeArray: PgType[Array[TitleId]] = { + given pgTypeArray: PgType[Array[TitleId]] = { PgTypes.textArray .bimap(xs => xs.map(TitleId.apply), xs => xs.map(_.value)) } - given dbType: PgType[TitleId] = PgTypes.text.bimap(TitleId.apply, _.value) + given pgType: PgType[TitleId] = PgTypes.text.bimap(TitleId.apply, _.value) case object dr extends TitleId("dr") diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/title/TitleRepoImpl.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/title/TitleRepoImpl.scala index 32dcadfc18..8ef55b00c7 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/title/TitleRepoImpl.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/title/TitleRepoImpl.scala @@ -18,19 +18,19 @@ import dev.typr.foundations.scala.Fragment.sql class TitleRepoImpl extends TitleRepo { override def delete: DeleteBuilder[TitleFields, TitleRow] = DeleteBuilder.of(""""public"."title"""", TitleFields.structure, Dialect.POSTGRESQL) - override def deleteById(code: TitleId)(using c: Connection): Boolean = sql"""delete from "public"."title" where "code" = ${Fragment.encode(TitleId.dbType, code)}""".update().runUnchecked(c) > 0 + override def deleteById(code: TitleId)(using c: Connection): Boolean = sql"""delete from "public"."title" where "code" = ${Fragment.encode(TitleId.pgType, code)}""".update().runUnchecked(c) > 0 override def deleteByIds(codes: Array[TitleId])(using c: Connection): Int = { sql"""delete from "public"."title" - where "code" = ANY(${Fragment.encode(TitleId.dbTypeArray, codes)})""" + where "code" = ANY(${Fragment.encode(TitleId.pgTypeArray, codes)})""" .update() .runUnchecked(c) } override def insert(unsaved: TitleRow)(using c: Connection): TitleRow = { sql"""insert into "public"."title"("code") - values (${Fragment.encode(TitleId.dbType, unsaved.code)}) + values (${Fragment.encode(TitleId.pgType, unsaved.code)}) RETURNING "code" """ .updateReturning(TitleRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -52,13 +52,13 @@ class TitleRepoImpl extends TitleRepo { override def selectById(code: TitleId)(using c: Connection): Option[TitleRow] = { sql"""select "code" from "public"."title" - where "code" = ${Fragment.encode(TitleId.dbType, code)}""".query(TitleRow.`_rowParser`.first()).runUnchecked(c) + where "code" = ${Fragment.encode(TitleId.pgType, code)}""".query(TitleRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(codes: Array[TitleId])(using c: Connection): List[TitleRow] = { sql"""select "code" from "public"."title" - where "code" = ANY(${Fragment.encode(TitleId.dbTypeArray, codes)})""".query(TitleRow.`_rowParser`.all()).runUnchecked(c) + where "code" = ANY(${Fragment.encode(TitleId.pgTypeArray, codes)})""".query(TitleRow.`_rowParser`.all()).runUnchecked(c) } override def selectByIdsTracked(codes: Array[TitleId])(using c: Connection): Map[TitleId, TitleRow] = { @@ -71,7 +71,7 @@ class TitleRepoImpl extends TitleRepo { override def upsert(unsaved: TitleRow)(using c: Connection): TitleRow = { sql"""insert into "public"."title"("code") - values (${Fragment.encode(TitleId.dbType, unsaved.code)}) + values (${Fragment.encode(TitleId.pgType, unsaved.code)}) on conflict ("code") do update set "code" = EXCLUDED."code" returning "code"""" diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/title/TitleRow.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/title/TitleRow.scala index 278b18c57e..cbac49de1b 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/title/TitleRow.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/title/TitleRow.scala @@ -20,7 +20,7 @@ case class TitleRow(code: TitleId) extends Tuple1[TitleId] { } object TitleRow { - val `_rowParser`: RowParser[TitleRow] = RowParsers.of(TitleId.dbType)(TitleRow.apply)(row => Array[Any](row.code)) + val `_rowParser`: RowParser[TitleRow] = RowParsers.of(TitleId.pgType)(TitleRow.apply)(row => Array[Any](row.code)) given pgText: PgText[TitleRow] = PgText.from(`_rowParser`.underlying) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/title_domain/TitleDomainFields.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/title_domain/TitleDomainFields.scala index fac953e0af..d3fdd9598e 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/title_domain/TitleDomainFields.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/title_domain/TitleDomainFields.scala @@ -23,7 +23,7 @@ class TitleDomainFields(val `_path`: java.util.List[Path]) extends TupleExpr1[Ti None, Some("text"), (row, value) => row.copy(code = value), - TitleDomainId.dbType + TitleDomainId.pgType ) } diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/title_domain/TitleDomainId.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/title_domain/TitleDomainId.scala index 8045f9f61d..0738bbc32f 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/title_domain/TitleDomainId.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/title_domain/TitleDomainId.scala @@ -20,12 +20,12 @@ sealed abstract class TitleDomainId(val value: ShortText) object TitleDomainId { def apply(underlying: ShortText): TitleDomainId = ByName.getOrElse(underlying, Unknown(underlying)) - given dbTypeArray: PgType[Array[TitleDomainId]] = { - ShortText.dbTypeArray + given pgTypeArray: PgType[Array[TitleDomainId]] = { + ShortText.pgTypeArray .bimap(xs => xs.map(TitleDomainId.apply), xs => xs.map(_.value)) } - given dbType: PgType[TitleDomainId] = ShortText.dbType.bimap(TitleDomainId.apply, _.value) + given pgType: PgType[TitleDomainId] = ShortText.pgType.bimap(TitleDomainId.apply, _.value) def shortText(value: String): TitleDomainId = apply(new ShortText(value)) diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/title_domain/TitleDomainRepoImpl.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/title_domain/TitleDomainRepoImpl.scala index 57b2a14728..7d74052f4f 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/title_domain/TitleDomainRepoImpl.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/title_domain/TitleDomainRepoImpl.scala @@ -18,19 +18,19 @@ import dev.typr.foundations.scala.Fragment.sql class TitleDomainRepoImpl extends TitleDomainRepo { override def delete: DeleteBuilder[TitleDomainFields, TitleDomainRow] = DeleteBuilder.of(""""public"."title_domain"""", TitleDomainFields.structure, Dialect.POSTGRESQL) - override def deleteById(code: TitleDomainId)(using c: Connection): Boolean = sql"""delete from "public"."title_domain" where "code" = ${Fragment.encode(TitleDomainId.dbType, code)}""".update().runUnchecked(c) > 0 + override def deleteById(code: TitleDomainId)(using c: Connection): Boolean = sql"""delete from "public"."title_domain" where "code" = ${Fragment.encode(TitleDomainId.pgType, code)}""".update().runUnchecked(c) > 0 override def deleteByIds(codes: Array[TitleDomainId])(using c: Connection): Int = { sql"""delete from "public"."title_domain" - where "code" = ANY(${Fragment.encode(TitleDomainId.dbTypeArray, codes)})""" + where "code" = ANY(${Fragment.encode(TitleDomainId.pgTypeArray, codes)})""" .update() .runUnchecked(c) } override def insert(unsaved: TitleDomainRow)(using c: Connection): TitleDomainRow = { sql"""insert into "public"."title_domain"("code") - values (${Fragment.encode(TitleDomainId.dbType, unsaved.code)}::text) + values (${Fragment.encode(TitleDomainId.pgType, unsaved.code)}::text) RETURNING "code" """ .updateReturning(TitleDomainRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -52,13 +52,13 @@ class TitleDomainRepoImpl extends TitleDomainRepo { override def selectById(code: TitleDomainId)(using c: Connection): Option[TitleDomainRow] = { sql"""select "code" from "public"."title_domain" - where "code" = ${Fragment.encode(TitleDomainId.dbType, code)}""".query(TitleDomainRow.`_rowParser`.first()).runUnchecked(c) + where "code" = ${Fragment.encode(TitleDomainId.pgType, code)}""".query(TitleDomainRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(codes: Array[TitleDomainId])(using c: Connection): List[TitleDomainRow] = { sql"""select "code" from "public"."title_domain" - where "code" = ANY(${Fragment.encode(TitleDomainId.dbTypeArray, codes)})""".query(TitleDomainRow.`_rowParser`.all()).runUnchecked(c) + where "code" = ANY(${Fragment.encode(TitleDomainId.pgTypeArray, codes)})""".query(TitleDomainRow.`_rowParser`.all()).runUnchecked(c) } override def selectByIdsTracked(codes: Array[TitleDomainId])(using c: Connection): Map[TitleDomainId, TitleDomainRow] = { @@ -71,7 +71,7 @@ class TitleDomainRepoImpl extends TitleDomainRepo { override def upsert(unsaved: TitleDomainRow)(using c: Connection): TitleDomainRow = { sql"""insert into "public"."title_domain"("code") - values (${Fragment.encode(TitleDomainId.dbType, unsaved.code)}::text) + values (${Fragment.encode(TitleDomainId.pgType, unsaved.code)}::text) on conflict ("code") do update set "code" = EXCLUDED."code" returning "code"""" diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/title_domain/TitleDomainRow.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/title_domain/TitleDomainRow.scala index 5bedc1f9f8..628a0a0b72 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/title_domain/TitleDomainRow.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/title_domain/TitleDomainRow.scala @@ -20,7 +20,7 @@ case class TitleDomainRow(code: TitleDomainId) extends Tuple1[TitleDomainId] { } object TitleDomainRow { - val `_rowParser`: RowParser[TitleDomainRow] = RowParsers.of(TitleDomainId.dbType)(TitleDomainRow.apply)(row => Array[Any](row.code)) + val `_rowParser`: RowParser[TitleDomainRow] = RowParsers.of(TitleDomainId.pgType)(TitleDomainRow.apply)(row => Array[Any](row.code)) given pgText: PgText[TitleDomainRow] = PgText.from(`_rowParser`.underlying) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/titledperson/TitledpersonFields.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/titledperson/TitledpersonFields.scala index 567fa9dbeb..9f9d4072a5 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/titledperson/TitledpersonFields.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/titledperson/TitledpersonFields.scala @@ -31,7 +31,7 @@ class TitledpersonFields(val `_path`: java.util.List[Path]) extends TupleExpr3[T None, Some("text"), (row, value) => row.copy(titleShort = value), - TitleDomainId.dbType + TitleDomainId.pgType ) } @@ -43,7 +43,7 @@ class TitledpersonFields(val `_path`: java.util.List[Path]) extends TupleExpr3[T None, None, (row, value) => row.copy(title = value), - TitleId.dbType + TitleId.pgType ) } diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/titledperson/TitledpersonRepoImpl.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/titledperson/TitledpersonRepoImpl.scala index 93bc913ba5..5058d3b3ba 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/titledperson/TitledpersonRepoImpl.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/titledperson/TitledpersonRepoImpl.scala @@ -23,7 +23,7 @@ class TitledpersonRepoImpl extends TitledpersonRepo { override def insert(unsaved: TitledpersonRow)(using c: Connection): TitledpersonRow = { sql"""insert into "public"."titledperson"("title_short", "title", "name") - values (${Fragment.encode(TitleDomainId.dbType, unsaved.titleShort)}::text, ${Fragment.encode(TitleId.dbType, unsaved.title)}, ${Fragment.encode(PgTypes.text, unsaved.name)}) + values (${Fragment.encode(TitleDomainId.pgType, unsaved.titleShort)}::text, ${Fragment.encode(TitleId.pgType, unsaved.title)}, ${Fragment.encode(PgTypes.text, unsaved.name)}) RETURNING "title_short", "title", "name" """ .updateReturning(TitledpersonRow.`_rowParser`.exactlyOne()).runUnchecked(c) diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/titledperson/TitledpersonRow.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/titledperson/TitledpersonRow.scala index 1fab45acf0..f1427fea8f 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/titledperson/TitledpersonRow.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/titledperson/TitledpersonRow.scala @@ -30,7 +30,7 @@ case class TitledpersonRow( } object TitledpersonRow { - val `_rowParser`: RowParser[TitledpersonRow] = RowParsers.of(TitleDomainId.dbType, TitleId.dbType, PgTypes.text)(TitledpersonRow.apply)(row => Array[Any](row.titleShort, row.title, row.name)) + val `_rowParser`: RowParser[TitledpersonRow] = RowParsers.of(TitleDomainId.pgType, TitleId.pgType, PgTypes.text)(TitledpersonRow.apply)(row => Array[Any](row.titleShort, row.title, row.name)) given pgText: PgText[TitledpersonRow] = PgText.from(`_rowParser`.underlying) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/users/UsersFields.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/users/UsersFields.scala index 1d7cd79780..6deebf0b4b 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/users/UsersFields.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/users/UsersFields.scala @@ -28,7 +28,7 @@ class UsersFields(val `_path`: java.util.List[Path]) extends TupleExpr7[UsersId, None, Some("uuid"), (row, value) => row.copy(userId = value), - UsersId.dbType + UsersId.pgType ) } diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/users/UsersId.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/users/UsersId.scala index d237c70262..8e8d2b8e8d 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/users/UsersId.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/users/UsersId.scala @@ -17,7 +17,7 @@ case class UsersId(@JsonValue value: UUID) extends scala.AnyVal object UsersId { given bijection: Bijection[UsersId, UUID] = Bijection.apply[UsersId, UUID](_.value)(UsersId.apply) - given dbType: PgType[UsersId] = PgTypes.uuid.bimap(UsersId.apply, _.value) + given pgType: PgType[UsersId] = PgTypes.uuid.bimap(UsersId.apply, _.value) - given dbTypeArray: PgType[Array[UsersId]] = PgTypes.uuidArray.bimap(xs => xs.map(UsersId.apply), xs => xs.map(_.value)) + given pgTypeArray: PgType[Array[UsersId]] = PgTypes.uuidArray.bimap(xs => xs.map(UsersId.apply), xs => xs.map(_.value)) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/users/UsersRepoImpl.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/users/UsersRepoImpl.scala index c5a03cdcc5..eede1ac66e 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/users/UsersRepoImpl.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/users/UsersRepoImpl.scala @@ -22,19 +22,19 @@ import dev.typr.foundations.scala.Fragment.sql class UsersRepoImpl extends UsersRepo { override def delete: DeleteBuilder[UsersFields, UsersRow] = DeleteBuilder.of(""""public"."users"""", UsersFields.structure, Dialect.POSTGRESQL) - override def deleteById(userId: UsersId)(using c: Connection): Boolean = sql"""delete from "public"."users" where "user_id" = ${Fragment.encode(UsersId.dbType, userId)}""".update().runUnchecked(c) > 0 + override def deleteById(userId: UsersId)(using c: Connection): Boolean = sql"""delete from "public"."users" where "user_id" = ${Fragment.encode(UsersId.pgType, userId)}""".update().runUnchecked(c) > 0 override def deleteByIds(userIds: Array[UsersId])(using c: Connection): Int = { sql"""delete from "public"."users" - where "user_id" = ANY(${Fragment.encode(UsersId.dbTypeArray, userIds)})""" + where "user_id" = ANY(${Fragment.encode(UsersId.pgTypeArray, userIds)})""" .update() .runUnchecked(c) } override def insert(unsaved: UsersRow)(using c: Connection): UsersRow = { sql"""insert into "public"."users"("user_id", "name", "last_name", "email", "password", "created_at", "verified_on") - values (${Fragment.encode(UsersId.dbType, unsaved.userId)}::uuid, ${Fragment.encode(PgTypes.text, unsaved.name)}, ${Fragment.encode(PgTypes.text.nullable, unsaved.lastName)}, ${Fragment.encode(PgTypes.unknown, unsaved.email)}::citext, ${Fragment.encode(PgTypes.text, unsaved.password)}, ${Fragment.encode(PgTypes.timestamptz, unsaved.createdAt)}::timestamptz, ${Fragment.encode(PgTypes.timestamptz.nullable, unsaved.verifiedOn)}::timestamptz) + values (${Fragment.encode(UsersId.pgType, unsaved.userId)}::uuid, ${Fragment.encode(PgTypes.text, unsaved.name)}, ${Fragment.encode(PgTypes.text.nullable, unsaved.lastName)}, ${Fragment.encode(PgTypes.unknown, unsaved.email)}::citext, ${Fragment.encode(PgTypes.text, unsaved.password)}, ${Fragment.encode(PgTypes.timestamptz, unsaved.createdAt)}::timestamptz, ${Fragment.encode(PgTypes.timestamptz.nullable, unsaved.verifiedOn)}::timestamptz) RETURNING "user_id", "name", "last_name", "email"::text, "password", "created_at", "verified_on" """ .updateReturning(UsersRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -44,7 +44,7 @@ class UsersRepoImpl extends UsersRepo { val columns: ListBuffer[Fragment] = ListBuffer() val values: ListBuffer[Fragment] = ListBuffer() columns.addOne(Fragment.lit(""""user_id"""")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(UsersId.dbType, unsaved.userId)}::uuid"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(UsersId.pgType, unsaved.userId)}::uuid"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""name"""")): @scala.annotation.nowarn values.addOne(sql"${Fragment.encode(PgTypes.text, unsaved.name)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""last_name"""")): @scala.annotation.nowarn @@ -90,13 +90,13 @@ class UsersRepoImpl extends UsersRepo { override def selectById(userId: UsersId)(using c: Connection): Option[UsersRow] = { sql"""select "user_id", "name", "last_name", "email"::text, "password", "created_at", "verified_on" from "public"."users" - where "user_id" = ${Fragment.encode(UsersId.dbType, userId)}""".query(UsersRow.`_rowParser`.first()).runUnchecked(c) + where "user_id" = ${Fragment.encode(UsersId.pgType, userId)}""".query(UsersRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(userIds: Array[UsersId])(using c: Connection): List[UsersRow] = { sql"""select "user_id", "name", "last_name", "email"::text, "password", "created_at", "verified_on" from "public"."users" - where "user_id" = ANY(${Fragment.encode(UsersId.dbTypeArray, userIds)})""".query(UsersRow.`_rowParser`.all()).runUnchecked(c) + where "user_id" = ANY(${Fragment.encode(UsersId.pgTypeArray, userIds)})""".query(UsersRow.`_rowParser`.all()).runUnchecked(c) } override def selectByIdsTracked(userIds: Array[UsersId])(using c: Connection): Map[UsersId, UsersRow] = { @@ -123,12 +123,12 @@ class UsersRepoImpl extends UsersRepo { "password" = ${Fragment.encode(PgTypes.text, row.password)}, "created_at" = ${Fragment.encode(PgTypes.timestamptz, row.createdAt)}::timestamptz, "verified_on" = ${Fragment.encode(PgTypes.timestamptz.nullable, row.verifiedOn)}::timestamptz - where "user_id" = ${Fragment.encode(UsersId.dbType, userId)}""".update().runUnchecked(c) > 0 + where "user_id" = ${Fragment.encode(UsersId.pgType, userId)}""".update().runUnchecked(c) > 0 } override def upsert(unsaved: UsersRow)(using c: Connection): UsersRow = { sql"""insert into "public"."users"("user_id", "name", "last_name", "email", "password", "created_at", "verified_on") - values (${Fragment.encode(UsersId.dbType, unsaved.userId)}::uuid, ${Fragment.encode(PgTypes.text, unsaved.name)}, ${Fragment.encode(PgTypes.text.nullable, unsaved.lastName)}, ${Fragment.encode(PgTypes.unknown, unsaved.email)}::citext, ${Fragment.encode(PgTypes.text, unsaved.password)}, ${Fragment.encode(PgTypes.timestamptz, unsaved.createdAt)}::timestamptz, ${Fragment.encode(PgTypes.timestamptz.nullable, unsaved.verifiedOn)}::timestamptz) + values (${Fragment.encode(UsersId.pgType, unsaved.userId)}::uuid, ${Fragment.encode(PgTypes.text, unsaved.name)}, ${Fragment.encode(PgTypes.text.nullable, unsaved.lastName)}, ${Fragment.encode(PgTypes.unknown, unsaved.email)}::citext, ${Fragment.encode(PgTypes.text, unsaved.password)}, ${Fragment.encode(PgTypes.timestamptz, unsaved.createdAt)}::timestamptz, ${Fragment.encode(PgTypes.timestamptz.nullable, unsaved.verifiedOn)}::timestamptz) on conflict ("user_id") do update set "name" = EXCLUDED."name", diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/users/UsersRow.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/users/UsersRow.scala index 463b2ef693..a2b160b973 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/users/UsersRow.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/users/UsersRow.scala @@ -59,7 +59,7 @@ case class UsersRow( } object UsersRow { - val `_rowParser`: RowParser[UsersRow] = RowParsers.of(UsersId.dbType, PgTypes.text, PgTypes.text.nullable, PgTypes.unknown, PgTypes.text, PgTypes.timestamptz, PgTypes.timestamptz.nullable)(UsersRow.apply)(row => Array[Any](row.userId, row.name, row.lastName, row.email, row.password, row.createdAt, row.verifiedOn)) + val `_rowParser`: RowParser[UsersRow] = RowParsers.of(UsersId.pgType, PgTypes.text, PgTypes.text.nullable, PgTypes.unknown, PgTypes.text, PgTypes.timestamptz, PgTypes.timestamptz.nullable)(UsersRow.apply)(row => Array[Any](row.userId, row.name, row.lastName, row.email, row.password, row.createdAt, row.verifiedOn)) given pgText: PgText[UsersRow] = PgText.from(`_rowParser`.underlying) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/users/UsersRowUnsaved.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/users/UsersRowUnsaved.scala index 73b2e5e161..691ad2f7fd 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/users/UsersRowUnsaved.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/public/users/UsersRowUnsaved.scala @@ -39,5 +39,5 @@ case class UsersRowUnsaved( } object UsersRowUnsaved { - given pgText: PgText[UsersRowUnsaved] = PgText.instance((row, sb) => { UsersId.dbType.text.unsafeEncode(row.userId, sb); sb.append(PgText.DELIMETER); PgTypes.text.text.unsafeEncode(row.name, sb); sb.append(PgText.DELIMETER); PgTypes.text.nullable.text.unsafeEncode(row.lastName, sb); sb.append(PgText.DELIMETER); PgTypes.unknown.text.unsafeEncode(row.email, sb); sb.append(PgText.DELIMETER); PgTypes.text.text.unsafeEncode(row.password, sb); sb.append(PgText.DELIMETER); PgTypes.timestamptz.nullable.text.unsafeEncode(row.verifiedOn, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamptz.text).unsafeEncode(row.createdAt, sb) }) + given pgText: PgText[UsersRowUnsaved] = PgText.instance((row, sb) => { UsersId.pgType.text.unsafeEncode(row.userId, sb); sb.append(PgText.DELIMETER); PgTypes.text.text.unsafeEncode(row.name, sb); sb.append(PgText.DELIMETER); PgTypes.text.nullable.text.unsafeEncode(row.lastName, sb); sb.append(PgText.DELIMETER); PgTypes.unknown.text.unsafeEncode(row.email, sb); sb.append(PgText.DELIMETER); PgTypes.text.text.unsafeEncode(row.password, sb); sb.append(PgText.DELIMETER); PgTypes.timestamptz.nullable.text.unsafeEncode(row.verifiedOn, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamptz.text).unsafeEncode(row.createdAt, sb) }) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonFields.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonFields.scala index b98a0301e2..8f86428bd5 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonFields.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonFields.scala @@ -36,7 +36,7 @@ class SalespersonFields(val `_path`: java.util.List[Path]) extends TupleExpr9[Bu None, Some("int4"), (row, value) => row.copy(businessentityid = value), - BusinessentityId.dbType + BusinessentityId.pgType ) } @@ -48,7 +48,7 @@ class SalespersonFields(val `_path`: java.util.List[Path]) extends TupleExpr9[Bu None, Some("int4"), (row, value) => row.copy(territoryid = value), - SalesterritoryId.dbType + SalesterritoryId.pgType ) } diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRepoImpl.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRepoImpl.scala index b333c013d0..1111e0395d 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRepoImpl.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRepoImpl.scala @@ -24,19 +24,19 @@ import dev.typr.foundations.scala.Fragment.sql class SalespersonRepoImpl extends SalespersonRepo { override def delete: DeleteBuilder[SalespersonFields, SalespersonRow] = DeleteBuilder.of(""""sales"."salesperson"""", SalespersonFields.structure, Dialect.POSTGRESQL) - override def deleteById(businessentityid: BusinessentityId)(using c: Connection): Boolean = sql"""delete from "sales"."salesperson" where "businessentityid" = ${Fragment.encode(BusinessentityId.dbType, businessentityid)}""".update().runUnchecked(c) > 0 + override def deleteById(businessentityid: BusinessentityId)(using c: Connection): Boolean = sql"""delete from "sales"."salesperson" where "businessentityid" = ${Fragment.encode(BusinessentityId.pgType, businessentityid)}""".update().runUnchecked(c) > 0 override def deleteByIds(businessentityids: Array[BusinessentityId])(using c: Connection): Int = { sql"""delete from "sales"."salesperson" - where "businessentityid" = ANY(${Fragment.encode(BusinessentityId.dbTypeArray, businessentityids)})""" + where "businessentityid" = ANY(${Fragment.encode(BusinessentityId.pgTypeArray, businessentityids)})""" .update() .runUnchecked(c) } override def insert(unsaved: SalespersonRow)(using c: Connection): SalespersonRow = { sql"""insert into "sales"."salesperson"("businessentityid", "territoryid", "salesquota", "bonus", "commissionpct", "salesytd", "saleslastyear", "rowguid", "modifieddate") - values (${Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid)}::int4, ${Fragment.encode(SalesterritoryId.dbType.nullable, unsaved.territoryid)}::int4, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric.nullable, unsaved.salesquota)}::numeric, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, unsaved.bonus)}::numeric, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, unsaved.commissionpct)}::numeric, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, unsaved.salesytd)}::numeric, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, unsaved.saleslastyear)}::numeric, ${Fragment.encode(PgTypes.uuid, unsaved.rowguid)}::uuid, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) + values (${Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid)}::int4, ${Fragment.encode(SalesterritoryId.pgType.nullable, unsaved.territoryid)}::int4, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric.nullable, unsaved.salesquota)}::numeric, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, unsaved.bonus)}::numeric, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, unsaved.commissionpct)}::numeric, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, unsaved.salesytd)}::numeric, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, unsaved.saleslastyear)}::numeric, ${Fragment.encode(PgTypes.uuid, unsaved.rowguid)}::uuid, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) RETURNING "businessentityid", "territoryid", "salesquota", "bonus", "commissionpct", "salesytd", "saleslastyear", "rowguid", "modifieddate" """ .updateReturning(SalespersonRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -46,9 +46,9 @@ class SalespersonRepoImpl extends SalespersonRepo { val columns: ListBuffer[Fragment] = ListBuffer() val values: ListBuffer[Fragment] = ListBuffer() columns.addOne(Fragment.lit(""""businessentityid"""")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid)}::int4"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid)}::int4"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""territoryid"""")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(SalesterritoryId.dbType.nullable, unsaved.territoryid)}::int4"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(SalesterritoryId.pgType.nullable, unsaved.territoryid)}::int4"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""salesquota"""")): @scala.annotation.nowarn values.addOne(sql"${Fragment.encode(ScalaDbTypes.PgTypes.numeric.nullable, unsaved.salesquota)}::numeric"): @scala.annotation.nowarn unsaved.bonus.visit( @@ -106,13 +106,13 @@ class SalespersonRepoImpl extends SalespersonRepo { override def selectById(businessentityid: BusinessentityId)(using c: Connection): Option[SalespersonRow] = { sql"""select "businessentityid", "territoryid", "salesquota", "bonus", "commissionpct", "salesytd", "saleslastyear", "rowguid", "modifieddate" from "sales"."salesperson" - where "businessentityid" = ${Fragment.encode(BusinessentityId.dbType, businessentityid)}""".query(SalespersonRow.`_rowParser`.first()).runUnchecked(c) + where "businessentityid" = ${Fragment.encode(BusinessentityId.pgType, businessentityid)}""".query(SalespersonRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(businessentityids: Array[BusinessentityId])(using c: Connection): List[SalespersonRow] = { sql"""select "businessentityid", "territoryid", "salesquota", "bonus", "commissionpct", "salesytd", "saleslastyear", "rowguid", "modifieddate" from "sales"."salesperson" - where "businessentityid" = ANY(${Fragment.encode(BusinessentityId.dbTypeArray, businessentityids)})""".query(SalespersonRow.`_rowParser`.all()).runUnchecked(c) + where "businessentityid" = ANY(${Fragment.encode(BusinessentityId.pgTypeArray, businessentityids)})""".query(SalespersonRow.`_rowParser`.all()).runUnchecked(c) } override def selectByIdsTracked(businessentityids: Array[BusinessentityId])(using c: Connection): Map[BusinessentityId, SalespersonRow] = { @@ -126,7 +126,7 @@ class SalespersonRepoImpl extends SalespersonRepo { override def update(row: SalespersonRow)(using c: Connection): Boolean = { val businessentityid: BusinessentityId = row.businessentityid return sql"""update "sales"."salesperson" - set "territoryid" = ${Fragment.encode(SalesterritoryId.dbType.nullable, row.territoryid)}::int4, + set "territoryid" = ${Fragment.encode(SalesterritoryId.pgType.nullable, row.territoryid)}::int4, "salesquota" = ${Fragment.encode(ScalaDbTypes.PgTypes.numeric.nullable, row.salesquota)}::numeric, "bonus" = ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, row.bonus)}::numeric, "commissionpct" = ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, row.commissionpct)}::numeric, @@ -134,12 +134,12 @@ class SalespersonRepoImpl extends SalespersonRepo { "saleslastyear" = ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, row.saleslastyear)}::numeric, "rowguid" = ${Fragment.encode(PgTypes.uuid, row.rowguid)}::uuid, "modifieddate" = ${Fragment.encode(PgTypes.timestamp, row.modifieddate)}::timestamp - where "businessentityid" = ${Fragment.encode(BusinessentityId.dbType, businessentityid)}""".update().runUnchecked(c) > 0 + where "businessentityid" = ${Fragment.encode(BusinessentityId.pgType, businessentityid)}""".update().runUnchecked(c) > 0 } override def upsert(unsaved: SalespersonRow)(using c: Connection): SalespersonRow = { sql"""insert into "sales"."salesperson"("businessentityid", "territoryid", "salesquota", "bonus", "commissionpct", "salesytd", "saleslastyear", "rowguid", "modifieddate") - values (${Fragment.encode(BusinessentityId.dbType, unsaved.businessentityid)}::int4, ${Fragment.encode(SalesterritoryId.dbType.nullable, unsaved.territoryid)}::int4, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric.nullable, unsaved.salesquota)}::numeric, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, unsaved.bonus)}::numeric, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, unsaved.commissionpct)}::numeric, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, unsaved.salesytd)}::numeric, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, unsaved.saleslastyear)}::numeric, ${Fragment.encode(PgTypes.uuid, unsaved.rowguid)}::uuid, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) + values (${Fragment.encode(BusinessentityId.pgType, unsaved.businessentityid)}::int4, ${Fragment.encode(SalesterritoryId.pgType.nullable, unsaved.territoryid)}::int4, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric.nullable, unsaved.salesquota)}::numeric, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, unsaved.bonus)}::numeric, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, unsaved.commissionpct)}::numeric, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, unsaved.salesytd)}::numeric, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, unsaved.saleslastyear)}::numeric, ${Fragment.encode(PgTypes.uuid, unsaved.rowguid)}::uuid, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) on conflict ("businessentityid") do update set "territoryid" = EXCLUDED."territoryid", diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRow.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRow.scala index 306504361b..0977e1d45c 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRow.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRow.scala @@ -103,7 +103,7 @@ case class SalespersonRow( } object SalespersonRow { - val `_rowParser`: RowParser[SalespersonRow] = RowParsers.of(BusinessentityId.dbType, SalesterritoryId.dbType.nullable, ScalaDbTypes.PgTypes.numeric.nullable, ScalaDbTypes.PgTypes.numeric, ScalaDbTypes.PgTypes.numeric, ScalaDbTypes.PgTypes.numeric, ScalaDbTypes.PgTypes.numeric, PgTypes.uuid, PgTypes.timestamp)(SalespersonRow.apply)(row => Array[Any](row.businessentityid, row.territoryid, row.salesquota, row.bonus, row.commissionpct, row.salesytd, row.saleslastyear, row.rowguid, row.modifieddate)) + val `_rowParser`: RowParser[SalespersonRow] = RowParsers.of(BusinessentityId.pgType, SalesterritoryId.pgType.nullable, ScalaDbTypes.PgTypes.numeric.nullable, ScalaDbTypes.PgTypes.numeric, ScalaDbTypes.PgTypes.numeric, ScalaDbTypes.PgTypes.numeric, ScalaDbTypes.PgTypes.numeric, PgTypes.uuid, PgTypes.timestamp)(SalespersonRow.apply)(row => Array[Any](row.businessentityid, row.territoryid, row.salesquota, row.bonus, row.commissionpct, row.salesytd, row.saleslastyear, row.rowguid, row.modifieddate)) given pgText: PgText[SalespersonRow] = PgText.from(`_rowParser`.underlying) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRowUnsaved.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRowUnsaved.scala index 4ee85b49ba..672bec74c4 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRowUnsaved.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRowUnsaved.scala @@ -78,5 +78,5 @@ case class SalespersonRowUnsaved( } object SalespersonRowUnsaved { - given pgText: PgText[SalespersonRowUnsaved] = PgText.instance((row, sb) => { BusinessentityId.dbType.text.unsafeEncode(row.businessentityid, sb); sb.append(PgText.DELIMETER); SalesterritoryId.dbType.nullable.text.unsafeEncode(row.territoryid, sb); sb.append(PgText.DELIMETER); ScalaDbTypes.PgTypes.numeric.nullable.text.unsafeEncode(row.salesquota, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using ScalaDbTypes.PgTypes.numeric.text).unsafeEncode(row.bonus, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using ScalaDbTypes.PgTypes.numeric.text).unsafeEncode(row.commissionpct, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using ScalaDbTypes.PgTypes.numeric.text).unsafeEncode(row.salesytd, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using ScalaDbTypes.PgTypes.numeric.text).unsafeEncode(row.saleslastyear, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.uuid.text).unsafeEncode(row.rowguid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) + given pgText: PgText[SalespersonRowUnsaved] = PgText.instance((row, sb) => { BusinessentityId.pgType.text.unsafeEncode(row.businessentityid, sb); sb.append(PgText.DELIMETER); SalesterritoryId.pgType.nullable.text.unsafeEncode(row.territoryid, sb); sb.append(PgText.DELIMETER); ScalaDbTypes.PgTypes.numeric.nullable.text.unsafeEncode(row.salesquota, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using ScalaDbTypes.PgTypes.numeric.text).unsafeEncode(row.bonus, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using ScalaDbTypes.PgTypes.numeric.text).unsafeEncode(row.commissionpct, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using ScalaDbTypes.PgTypes.numeric.text).unsafeEncode(row.salesytd, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using ScalaDbTypes.PgTypes.numeric.text).unsafeEncode(row.saleslastyear, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.uuid.text).unsafeEncode(row.rowguid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryFields.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryFields.scala index 4df7d8e149..0f2467c38a 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryFields.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryFields.scala @@ -33,7 +33,7 @@ class SalesterritoryFields(val `_path`: java.util.List[Path]) extends TupleExpr1 None, Some("int4"), (row, value) => row.copy(territoryid = value), - SalesterritoryId.dbType + SalesterritoryId.pgType ) } @@ -45,7 +45,7 @@ class SalesterritoryFields(val `_path`: java.util.List[Path]) extends TupleExpr1 None, Some("varchar"), (row, value) => row.copy(name = value), - Name.dbType + Name.pgType ) } @@ -57,7 +57,7 @@ class SalesterritoryFields(val `_path`: java.util.List[Path]) extends TupleExpr1 None, None, (row, value) => row.copy(countryregioncode = value), - CountryregionId.dbType + CountryregionId.pgType ) } diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryId.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryId.scala index 1a04163259..3cac42c363 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryId.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryId.scala @@ -17,7 +17,7 @@ case class SalesterritoryId(@JsonValue value: Int) extends scala.AnyVal object SalesterritoryId { given bijection: Bijection[SalesterritoryId, Int] = Bijection.apply[SalesterritoryId, Int](_.value)(SalesterritoryId.apply) - given dbType: PgType[SalesterritoryId] = ScalaDbTypes.PgTypes.int4.bimap(SalesterritoryId.apply, _.value) + given pgType: PgType[SalesterritoryId] = ScalaDbTypes.PgTypes.int4.bimap(SalesterritoryId.apply, _.value) - given dbTypeArray: PgType[Array[SalesterritoryId]] = PgTypes.int4ArrayUnboxed.bimap(xs => xs.map(SalesterritoryId.apply), xs => xs.map(_.value)) + given pgTypeArray: PgType[Array[SalesterritoryId]] = PgTypes.int4ArrayUnboxed.bimap(xs => xs.map(SalesterritoryId.apply), xs => xs.map(_.value)) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRepoImpl.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRepoImpl.scala index 47549fbfae..a6b5c33544 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRepoImpl.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRepoImpl.scala @@ -23,19 +23,19 @@ import dev.typr.foundations.scala.Fragment.sql class SalesterritoryRepoImpl extends SalesterritoryRepo { override def delete: DeleteBuilder[SalesterritoryFields, SalesterritoryRow] = DeleteBuilder.of(""""sales"."salesterritory"""", SalesterritoryFields.structure, Dialect.POSTGRESQL) - override def deleteById(territoryid: SalesterritoryId)(using c: Connection): Boolean = sql"""delete from "sales"."salesterritory" where "territoryid" = ${Fragment.encode(SalesterritoryId.dbType, territoryid)}""".update().runUnchecked(c) > 0 + override def deleteById(territoryid: SalesterritoryId)(using c: Connection): Boolean = sql"""delete from "sales"."salesterritory" where "territoryid" = ${Fragment.encode(SalesterritoryId.pgType, territoryid)}""".update().runUnchecked(c) > 0 override def deleteByIds(territoryids: Array[SalesterritoryId])(using c: Connection): Int = { sql"""delete from "sales"."salesterritory" - where "territoryid" = ANY(${Fragment.encode(SalesterritoryId.dbTypeArray, territoryids)})""" + where "territoryid" = ANY(${Fragment.encode(SalesterritoryId.pgTypeArray, territoryids)})""" .update() .runUnchecked(c) } override def insert(unsaved: SalesterritoryRow)(using c: Connection): SalesterritoryRow = { sql"""insert into "sales"."salesterritory"("territoryid", "name", "countryregioncode", "group", "salesytd", "saleslastyear", "costytd", "costlastyear", "rowguid", "modifieddate") - values (${Fragment.encode(SalesterritoryId.dbType, unsaved.territoryid)}::int4, ${Fragment.encode(Name.dbType, unsaved.name)}::varchar, ${Fragment.encode(CountryregionId.dbType, unsaved.countryregioncode)}, ${Fragment.encode(PgTypes.text, unsaved.group)}, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, unsaved.salesytd)}::numeric, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, unsaved.saleslastyear)}::numeric, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, unsaved.costytd)}::numeric, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, unsaved.costlastyear)}::numeric, ${Fragment.encode(PgTypes.uuid, unsaved.rowguid)}::uuid, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) + values (${Fragment.encode(SalesterritoryId.pgType, unsaved.territoryid)}::int4, ${Fragment.encode(Name.pgType, unsaved.name)}::varchar, ${Fragment.encode(CountryregionId.pgType, unsaved.countryregioncode)}, ${Fragment.encode(PgTypes.text, unsaved.group)}, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, unsaved.salesytd)}::numeric, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, unsaved.saleslastyear)}::numeric, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, unsaved.costytd)}::numeric, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, unsaved.costlastyear)}::numeric, ${Fragment.encode(PgTypes.uuid, unsaved.rowguid)}::uuid, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) RETURNING "territoryid", "name", "countryregioncode", "group", "salesytd", "saleslastyear", "costytd", "costlastyear", "rowguid", "modifieddate" """ .updateReturning(SalesterritoryRow.`_rowParser`.exactlyOne()).runUnchecked(c) @@ -45,14 +45,14 @@ class SalesterritoryRepoImpl extends SalesterritoryRepo { val columns: ListBuffer[Fragment] = ListBuffer() val values: ListBuffer[Fragment] = ListBuffer() columns.addOne(Fragment.lit(""""name"""")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(Name.dbType, unsaved.name)}::varchar"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(Name.pgType, unsaved.name)}::varchar"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""countryregioncode"""")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(CountryregionId.dbType, unsaved.countryregioncode)}"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(CountryregionId.pgType, unsaved.countryregioncode)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit(""""group"""")): @scala.annotation.nowarn values.addOne(sql"${Fragment.encode(PgTypes.text, unsaved.group)}"): @scala.annotation.nowarn unsaved.territoryid.visit( { }, - value => { columns.addOne(Fragment.lit(""""territoryid"""")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(SalesterritoryId.dbType, value)}::int4"): @scala.annotation.nowarn } + value => { columns.addOne(Fragment.lit(""""territoryid"""")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(SalesterritoryId.pgType, value)}::int4"): @scala.annotation.nowarn } ); unsaved.salesytd.visit( { }, @@ -109,13 +109,13 @@ class SalesterritoryRepoImpl extends SalesterritoryRepo { override def selectById(territoryid: SalesterritoryId)(using c: Connection): Option[SalesterritoryRow] = { sql"""select "territoryid", "name", "countryregioncode", "group", "salesytd", "saleslastyear", "costytd", "costlastyear", "rowguid", "modifieddate" from "sales"."salesterritory" - where "territoryid" = ${Fragment.encode(SalesterritoryId.dbType, territoryid)}""".query(SalesterritoryRow.`_rowParser`.first()).runUnchecked(c) + where "territoryid" = ${Fragment.encode(SalesterritoryId.pgType, territoryid)}""".query(SalesterritoryRow.`_rowParser`.first()).runUnchecked(c) } override def selectByIds(territoryids: Array[SalesterritoryId])(using c: Connection): List[SalesterritoryRow] = { sql"""select "territoryid", "name", "countryregioncode", "group", "salesytd", "saleslastyear", "costytd", "costlastyear", "rowguid", "modifieddate" from "sales"."salesterritory" - where "territoryid" = ANY(${Fragment.encode(SalesterritoryId.dbTypeArray, territoryids)})""".query(SalesterritoryRow.`_rowParser`.all()).runUnchecked(c) + where "territoryid" = ANY(${Fragment.encode(SalesterritoryId.pgTypeArray, territoryids)})""".query(SalesterritoryRow.`_rowParser`.all()).runUnchecked(c) } override def selectByIdsTracked(territoryids: Array[SalesterritoryId])(using c: Connection): Map[SalesterritoryId, SalesterritoryRow] = { @@ -129,8 +129,8 @@ class SalesterritoryRepoImpl extends SalesterritoryRepo { override def update(row: SalesterritoryRow)(using c: Connection): Boolean = { val territoryid: SalesterritoryId = row.territoryid return sql"""update "sales"."salesterritory" - set "name" = ${Fragment.encode(Name.dbType, row.name)}::varchar, - "countryregioncode" = ${Fragment.encode(CountryregionId.dbType, row.countryregioncode)}, + set "name" = ${Fragment.encode(Name.pgType, row.name)}::varchar, + "countryregioncode" = ${Fragment.encode(CountryregionId.pgType, row.countryregioncode)}, "group" = ${Fragment.encode(PgTypes.text, row.group)}, "salesytd" = ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, row.salesytd)}::numeric, "saleslastyear" = ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, row.saleslastyear)}::numeric, @@ -138,12 +138,12 @@ class SalesterritoryRepoImpl extends SalesterritoryRepo { "costlastyear" = ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, row.costlastyear)}::numeric, "rowguid" = ${Fragment.encode(PgTypes.uuid, row.rowguid)}::uuid, "modifieddate" = ${Fragment.encode(PgTypes.timestamp, row.modifieddate)}::timestamp - where "territoryid" = ${Fragment.encode(SalesterritoryId.dbType, territoryid)}""".update().runUnchecked(c) > 0 + where "territoryid" = ${Fragment.encode(SalesterritoryId.pgType, territoryid)}""".update().runUnchecked(c) > 0 } override def upsert(unsaved: SalesterritoryRow)(using c: Connection): SalesterritoryRow = { sql"""insert into "sales"."salesterritory"("territoryid", "name", "countryregioncode", "group", "salesytd", "saleslastyear", "costytd", "costlastyear", "rowguid", "modifieddate") - values (${Fragment.encode(SalesterritoryId.dbType, unsaved.territoryid)}::int4, ${Fragment.encode(Name.dbType, unsaved.name)}::varchar, ${Fragment.encode(CountryregionId.dbType, unsaved.countryregioncode)}, ${Fragment.encode(PgTypes.text, unsaved.group)}, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, unsaved.salesytd)}::numeric, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, unsaved.saleslastyear)}::numeric, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, unsaved.costytd)}::numeric, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, unsaved.costlastyear)}::numeric, ${Fragment.encode(PgTypes.uuid, unsaved.rowguid)}::uuid, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) + values (${Fragment.encode(SalesterritoryId.pgType, unsaved.territoryid)}::int4, ${Fragment.encode(Name.pgType, unsaved.name)}::varchar, ${Fragment.encode(CountryregionId.pgType, unsaved.countryregioncode)}, ${Fragment.encode(PgTypes.text, unsaved.group)}, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, unsaved.salesytd)}::numeric, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, unsaved.saleslastyear)}::numeric, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, unsaved.costytd)}::numeric, ${Fragment.encode(ScalaDbTypes.PgTypes.numeric, unsaved.costlastyear)}::numeric, ${Fragment.encode(PgTypes.uuid, unsaved.rowguid)}::uuid, ${Fragment.encode(PgTypes.timestamp, unsaved.modifieddate)}::timestamp) on conflict ("territoryid") do update set "name" = EXCLUDED."name", diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRow.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRow.scala index 650dfac3c3..2c5675c6d5 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRow.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRow.scala @@ -106,7 +106,7 @@ case class SalesterritoryRow( } object SalesterritoryRow { - val `_rowParser`: RowParser[SalesterritoryRow] = RowParsers.of(SalesterritoryId.dbType, Name.dbType, CountryregionId.dbType, PgTypes.text, ScalaDbTypes.PgTypes.numeric, ScalaDbTypes.PgTypes.numeric, ScalaDbTypes.PgTypes.numeric, ScalaDbTypes.PgTypes.numeric, PgTypes.uuid, PgTypes.timestamp)(SalesterritoryRow.apply)(row => Array[Any](row.territoryid, row.name, row.countryregioncode, row.group, row.salesytd, row.saleslastyear, row.costytd, row.costlastyear, row.rowguid, row.modifieddate)) + val `_rowParser`: RowParser[SalesterritoryRow] = RowParsers.of(SalesterritoryId.pgType, Name.pgType, CountryregionId.pgType, PgTypes.text, ScalaDbTypes.PgTypes.numeric, ScalaDbTypes.PgTypes.numeric, ScalaDbTypes.PgTypes.numeric, ScalaDbTypes.PgTypes.numeric, PgTypes.uuid, PgTypes.timestamp)(SalesterritoryRow.apply)(row => Array[Any](row.territoryid, row.name, row.countryregioncode, row.group, row.salesytd, row.saleslastyear, row.costytd, row.costlastyear, row.rowguid, row.modifieddate)) given pgText: PgText[SalesterritoryRow] = PgText.from(`_rowParser`.underlying) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRowUnsaved.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRowUnsaved.scala index a2d22a7b1c..57b4fa2256 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRowUnsaved.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRowUnsaved.scala @@ -79,5 +79,5 @@ case class SalesterritoryRowUnsaved( } object SalesterritoryRowUnsaved { - given pgText: PgText[SalesterritoryRowUnsaved] = PgText.instance((row, sb) => { Name.dbType.text.unsafeEncode(row.name, sb); sb.append(PgText.DELIMETER); CountryregionId.dbType.text.unsafeEncode(row.countryregioncode, sb); sb.append(PgText.DELIMETER); PgTypes.text.text.unsafeEncode(row.group, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using SalesterritoryId.dbType.text).unsafeEncode(row.territoryid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using ScalaDbTypes.PgTypes.numeric.text).unsafeEncode(row.salesytd, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using ScalaDbTypes.PgTypes.numeric.text).unsafeEncode(row.saleslastyear, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using ScalaDbTypes.PgTypes.numeric.text).unsafeEncode(row.costytd, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using ScalaDbTypes.PgTypes.numeric.text).unsafeEncode(row.costlastyear, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.uuid.text).unsafeEncode(row.rowguid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) + given pgText: PgText[SalesterritoryRowUnsaved] = PgText.instance((row, sb) => { Name.pgType.text.unsafeEncode(row.name, sb); sb.append(PgText.DELIMETER); CountryregionId.pgType.text.unsafeEncode(row.countryregioncode, sb); sb.append(PgText.DELIMETER); PgTypes.text.text.unsafeEncode(row.group, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using SalesterritoryId.pgType.text).unsafeEncode(row.territoryid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using ScalaDbTypes.PgTypes.numeric.text).unsafeEncode(row.salesytd, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using ScalaDbTypes.PgTypes.numeric.text).unsafeEncode(row.saleslastyear, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using ScalaDbTypes.PgTypes.numeric.text).unsafeEncode(row.costytd, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using ScalaDbTypes.PgTypes.numeric.text).unsafeEncode(row.costlastyear, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.uuid.text).unsafeEncode(row.rowguid, sb); sb.append(PgText.DELIMETER); Defaulted.pgText(using PgTypes.timestamp.text).unsafeEncode(row.modifieddate, sb) }) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/update_person_returning/UpdatePersonReturningSqlRow.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/update_person_returning/UpdatePersonReturningSqlRow.scala index 0d1940b7ae..b49b590660 100644 --- a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/update_person_returning/UpdatePersonReturningSqlRow.scala +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/update_person_returning/UpdatePersonReturningSqlRow.scala @@ -25,5 +25,5 @@ case class UpdatePersonReturningSqlRow( } object UpdatePersonReturningSqlRow { - val `_rowParser`: RowParser[UpdatePersonReturningSqlRow] = RowParsers.of(FirstName.dbType, PgTypes.timestamp)(UpdatePersonReturningSqlRow.apply)(row => Array[Any](row.firstname, row.modifieddate)) + val `_rowParser`: RowParser[UpdatePersonReturningSqlRow] = RowParsers.of(FirstName.pgType, PgTypes.timestamp)(UpdatePersonReturningSqlRow.apply)(row => Array[Any](row.firstname, row.modifieddate)) } \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/userdefined/ActiveFlag.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/userdefined/ActiveFlag.scala new file mode 100644 index 0000000000..341e27ca20 --- /dev/null +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/userdefined/ActiveFlag.scala @@ -0,0 +1,24 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined + +import adventureworks.public.Flag +import com.fasterxml.jackson.annotation.JsonValue +import dev.typr.foundations.PgType +import dev.typr.foundations.scala.Bijection + +/** Shared type `ActiveFlag` + * Generated from TypeDefinitions matching + */ +case class ActiveFlag(@JsonValue value: Flag) extends scala.AnyVal + +object ActiveFlag { + given bijection: Bijection[ActiveFlag, Flag] = Bijection.apply[ActiveFlag, Flag](_.value)(ActiveFlag.apply) + + given pgType: PgType[ActiveFlag] = Flag.pgType.bimap(ActiveFlag.apply, _.value) + + given pgTypeArray: PgType[Array[ActiveFlag]] = Flag.pgTypeArray.bimap(xs => xs.map(ActiveFlag.apply), xs => xs.map(_.value)) +} \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/userdefined/CurrentFlag.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/userdefined/CurrentFlag.scala new file mode 100644 index 0000000000..d52c54640f --- /dev/null +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/userdefined/CurrentFlag.scala @@ -0,0 +1,24 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined + +import adventureworks.public.Flag +import com.fasterxml.jackson.annotation.JsonValue +import dev.typr.foundations.PgType +import dev.typr.foundations.scala.Bijection + +/** Shared type `CurrentFlag` + * Generated from TypeDefinitions matching + */ +case class CurrentFlag(@JsonValue value: Flag) extends scala.AnyVal + +object CurrentFlag { + given bijection: Bijection[CurrentFlag, Flag] = Bijection.apply[CurrentFlag, Flag](_.value)(CurrentFlag.apply) + + given pgType: PgType[CurrentFlag] = Flag.pgType.bimap(CurrentFlag.apply, _.value) + + given pgTypeArray: PgType[Array[CurrentFlag]] = Flag.pgTypeArray.bimap(xs => xs.map(CurrentFlag.apply), xs => xs.map(_.value)) +} \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/userdefined/FirstName.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/userdefined/FirstName.scala new file mode 100644 index 0000000000..b51208258d --- /dev/null +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/userdefined/FirstName.scala @@ -0,0 +1,24 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined + +import adventureworks.public.Name +import com.fasterxml.jackson.annotation.JsonValue +import dev.typr.foundations.PgType +import dev.typr.foundations.scala.Bijection + +/** Shared type `FirstName` + * Generated from TypeDefinitions matching + */ +case class FirstName(@JsonValue value: Name) extends scala.AnyVal + +object FirstName { + given bijection: Bijection[FirstName, Name] = Bijection.apply[FirstName, Name](_.value)(FirstName.apply) + + given pgType: PgType[FirstName] = Name.pgType.bimap(FirstName.apply, _.value) + + given pgTypeArray: PgType[Array[FirstName]] = Name.pgTypeArray.bimap(xs => xs.map(FirstName.apply), xs => xs.map(_.value)) +} \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/userdefined/LastName.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/userdefined/LastName.scala new file mode 100644 index 0000000000..ddb453682c --- /dev/null +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/userdefined/LastName.scala @@ -0,0 +1,24 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined + +import adventureworks.public.Name +import com.fasterxml.jackson.annotation.JsonValue +import dev.typr.foundations.PgType +import dev.typr.foundations.scala.Bijection + +/** Shared type `LastName` + * Generated from TypeDefinitions matching + */ +case class LastName(@JsonValue value: Name) extends scala.AnyVal + +object LastName { + given bijection: Bijection[LastName, Name] = Bijection.apply[LastName, Name](_.value)(LastName.apply) + + given pgType: PgType[LastName] = Name.pgType.bimap(LastName.apply, _.value) + + given pgTypeArray: PgType[Array[LastName]] = Name.pgTypeArray.bimap(xs => xs.map(LastName.apply), xs => xs.map(_.value)) +} \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/userdefined/MiddleName.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/userdefined/MiddleName.scala new file mode 100644 index 0000000000..d8a56559de --- /dev/null +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/userdefined/MiddleName.scala @@ -0,0 +1,24 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined + +import adventureworks.public.Name +import com.fasterxml.jackson.annotation.JsonValue +import dev.typr.foundations.PgType +import dev.typr.foundations.scala.Bijection + +/** Shared type `MiddleName` + * Generated from TypeDefinitions matching + */ +case class MiddleName(@JsonValue value: Name) extends scala.AnyVal + +object MiddleName { + given bijection: Bijection[MiddleName, Name] = Bijection.apply[MiddleName, Name](_.value)(MiddleName.apply) + + given pgType: PgType[MiddleName] = Name.pgType.bimap(MiddleName.apply, _.value) + + given pgTypeArray: PgType[Array[MiddleName]] = Name.pgTypeArray.bimap(xs => xs.map(MiddleName.apply), xs => xs.map(_.value)) +} \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/userdefined/OnlineOrderFlag.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/userdefined/OnlineOrderFlag.scala new file mode 100644 index 0000000000..28f77f346d --- /dev/null +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/userdefined/OnlineOrderFlag.scala @@ -0,0 +1,24 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined + +import adventureworks.public.Flag +import com.fasterxml.jackson.annotation.JsonValue +import dev.typr.foundations.PgType +import dev.typr.foundations.scala.Bijection + +/** Shared type `OnlineOrderFlag` + * Generated from TypeDefinitions matching + */ +case class OnlineOrderFlag(@JsonValue value: Flag) extends scala.AnyVal + +object OnlineOrderFlag { + given bijection: Bijection[OnlineOrderFlag, Flag] = Bijection.apply[OnlineOrderFlag, Flag](_.value)(OnlineOrderFlag.apply) + + given pgType: PgType[OnlineOrderFlag] = Flag.pgType.bimap(OnlineOrderFlag.apply, _.value) + + given pgTypeArray: PgType[Array[OnlineOrderFlag]] = Flag.pgTypeArray.bimap(xs => xs.map(OnlineOrderFlag.apply), xs => xs.map(_.value)) +} \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/userdefined/SalariedFlag.scala b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/userdefined/SalariedFlag.scala new file mode 100644 index 0000000000..2232538979 --- /dev/null +++ b/testers/pg/scala/scalatypes/generated-and-checked-in/adventureworks/userdefined/SalariedFlag.scala @@ -0,0 +1,24 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined + +import adventureworks.public.Flag +import com.fasterxml.jackson.annotation.JsonValue +import dev.typr.foundations.PgType +import dev.typr.foundations.scala.Bijection + +/** Shared type `SalariedFlag` + * Generated from TypeDefinitions matching + */ +case class SalariedFlag(@JsonValue value: Flag) extends scala.AnyVal + +object SalariedFlag { + given bijection: Bijection[SalariedFlag, Flag] = Bijection.apply[SalariedFlag, Flag](_.value)(SalariedFlag.apply) + + given pgType: PgType[SalariedFlag] = Flag.pgType.bimap(SalariedFlag.apply, _.value) + + given pgTypeArray: PgType[Array[SalariedFlag]] = Flag.pgTypeArray.bimap(xs => xs.map(SalariedFlag.apply), xs => xs.map(_.value)) +} \ No newline at end of file diff --git a/testers/pg/scala/scalatypes/src/scala/adventureworks/RecordTest.scala b/testers/pg/scala/scalatypes/src/scala/adventureworks/RecordTest.scala index 0edd06002d..01c13c9e6a 100644 --- a/testers/pg/scala/scalatypes/src/scala/adventureworks/RecordTest.scala +++ b/testers/pg/scala/scalatypes/src/scala/adventureworks/RecordTest.scala @@ -7,7 +7,7 @@ import adventureworks.person.person.* import adventureworks.person_row_join.* import adventureworks.public.Name import adventureworks.sales.salesperson.* -import adventureworks.userdefined.FirstName +import adventureworks.userdefined.{FirstName, LastName} import org.junit.Test import java.time.LocalDate @@ -29,8 +29,8 @@ class RecordTest { PersonRowUnsaved( businessentityid = businessentityRow.businessentityid, persontype = "EM", - firstname = FirstName("a"), - lastname = Name("lastname") + firstname = FirstName(Name("a")), + lastname = LastName(Name("lastname")) ) ) diff --git a/testers/pg/scala/scalatypes/src/scala/adventureworks/SeekDbTest.scala b/testers/pg/scala/scalatypes/src/scala/adventureworks/SeekDbTest.scala index f729e4951b..93069912d3 100644 --- a/testers/pg/scala/scalatypes/src/scala/adventureworks/SeekDbTest.scala +++ b/testers/pg/scala/scalatypes/src/scala/adventureworks/SeekDbTest.scala @@ -33,7 +33,7 @@ class SeekDbTest { .maybeSeek( f => f.businessentityid.asc, Option.empty[BusinessentityId], - (v: BusinessentityId) => SqlExpr.ConstReq(v, BusinessentityId.dbType) + (v: BusinessentityId) => SqlExpr.ConstReq(v, BusinessentityId.pgType) ) .maybeSeek(f => f.rowguid.asc, Option.empty[UUID], (v: UUID) => SqlExpr.ConstReq(v, PgTypes.uuid)) .limit(limit) @@ -47,7 +47,7 @@ class SeekDbTest { .maybeSeek( f => f.businessentityid.asc, Some(lastRow.businessentityid), - (v: BusinessentityId) => SqlExpr.ConstReq(v, BusinessentityId.dbType) + (v: BusinessentityId) => SqlExpr.ConstReq(v, BusinessentityId.pgType) ) .maybeSeek(f => f.rowguid.asc, Some(lastRow.rowguid), (v: UUID) => SqlExpr.ConstReq(v, PgTypes.uuid)) .limit(limit) @@ -88,7 +88,7 @@ class SeekDbTest { .maybeSeek( f => f.businessentityid.asc, Option.empty[BusinessentityId], - (v: BusinessentityId) => SqlExpr.ConstReq(v, BusinessentityId.dbType) + (v: BusinessentityId) => SqlExpr.ConstReq(v, BusinessentityId.pgType) ) .maybeSeek(f => f.rowguid.asc, Option.empty[UUID], (v: UUID) => SqlExpr.ConstReq(v, PgTypes.uuid)) .limit(limit) @@ -102,7 +102,7 @@ class SeekDbTest { .maybeSeek( f => f.businessentityid.asc, Some(lastRow.businessentityid), - (v: BusinessentityId) => SqlExpr.ConstReq(v, BusinessentityId.dbType) + (v: BusinessentityId) => SqlExpr.ConstReq(v, BusinessentityId.pgType) ) .maybeSeek(f => f.rowguid.asc, Some(lastRow.rowguid), (v: UUID) => SqlExpr.ConstReq(v, PgTypes.uuid)) .limit(limit) diff --git a/testers/pg/scala/scalatypes/src/scala/adventureworks/humanresources/employee/EmployeeTest.scala b/testers/pg/scala/scalatypes/src/scala/adventureworks/humanresources/employee/EmployeeTest.scala index 04f51237de..68e4c047ce 100644 --- a/testers/pg/scala/scalatypes/src/scala/adventureworks/humanresources/employee/EmployeeTest.scala +++ b/testers/pg/scala/scalatypes/src/scala/adventureworks/humanresources/employee/EmployeeTest.scala @@ -5,7 +5,7 @@ import adventureworks.customtypes.Defaulted import adventureworks.person.businessentity.{BusinessentityId, BusinessentityRepoImpl, BusinessentityRowUnsaved} import adventureworks.person.person.{PersonRepoImpl, PersonRowUnsaved} import adventureworks.public.{Flag, Name} -import adventureworks.userdefined.FirstName +import adventureworks.userdefined.{CurrentFlag, FirstName, LastName, MiddleName, SalariedFlag} import org.junit.Assert.* import org.junit.Test import dev.typr.foundations.data.Xml @@ -27,10 +27,10 @@ class EmployeeTest { PersonRowUnsaved( businessentityid = businessentityRow.businessentityid, persontype = "SC", - firstname = FirstName("firstname"), - lastname = Name("lastname") + firstname = FirstName(Name("firstname")), + lastname = LastName(Name("lastname")) ).copy( - middlename = Some(Name("middlename")), + middlename = Some(MiddleName(Name("middlename"))), suffix = Some("suffix"), additionalcontactinfo = Some(Xml("")) ) @@ -46,10 +46,10 @@ class EmployeeTest { gender = "F", hiredate = LocalDate.now().minusYears(1) ).copy( - salariedflag = Defaulted.Provided(Flag(true)), + salariedflag = Defaulted.Provided(SalariedFlag(Flag(true))), vacationhours = Defaulted.Provided(1: Short), sickleavehours = Defaulted.Provided(2: Short), - currentflag = Defaulted.Provided(Flag(true)), + currentflag = Defaulted.Provided(CurrentFlag(Flag(true))), rowguid = Defaulted.Provided(UUID.randomUUID()), modifieddate = Defaulted.Provided(DbNow.localDateTime()), organizationnode = Defaulted.Provided(Some("/")) @@ -87,10 +87,10 @@ class EmployeeTest { val withDefaults = employeeRepo.insert(minimalUnsaved) - assertEquals(Flag(true), withDefaults.salariedflag) + assertEquals(SalariedFlag(Flag(true)), withDefaults.salariedflag) assertEquals(0: Short, withDefaults.vacationhours) assertEquals(0: Short, withDefaults.sickleavehours) - assertEquals(Flag(true), withDefaults.currentflag) + assertEquals(CurrentFlag(Flag(true)), withDefaults.currentflag) assertEquals(Some("/"), withDefaults.organizationnode) } } diff --git a/testers/pg/scala/scalatypes/src/scala/adventureworks/person/MultiRepoTest.scala b/testers/pg/scala/scalatypes/src/scala/adventureworks/person/MultiRepoTest.scala index 679159016c..61027b6536 100644 --- a/testers/pg/scala/scalatypes/src/scala/adventureworks/person/MultiRepoTest.scala +++ b/testers/pg/scala/scalatypes/src/scala/adventureworks/person/MultiRepoTest.scala @@ -7,7 +7,7 @@ import adventureworks.person.businessentityaddress.* import adventureworks.person.countryregion.CountryregionId import adventureworks.person.person.* import adventureworks.public.Name -import adventureworks.userdefined.FirstName +import adventureworks.userdefined.{FirstName, LastName} import adventureworks.{DomainInsertImpl, TestInsert, WithConnection} import org.junit.Assert.* import org.junit.Test @@ -90,10 +90,10 @@ class MultiRepoTest { val personRow = testInsert.personPerson( businessentityRow.businessentityid, "SC", - FirstName("name"), None, + FirstName(Name("name")), None, - Name("lastname"), + LastName(Name("lastname")), None, None, None, diff --git a/testers/pg/scala/scalatypes/src/scala/adventureworks/production/product/SeekTest.scala b/testers/pg/scala/scalatypes/src/scala/adventureworks/production/product/SeekTest.scala index 20b945380e..1a67109ab9 100644 --- a/testers/pg/scala/scalatypes/src/scala/adventureworks/production/product/SeekTest.scala +++ b/testers/pg/scala/scalatypes/src/scala/adventureworks/production/product/SeekTest.scala @@ -11,7 +11,7 @@ class SeekTest extends SnapshotTest { @Test def uniformAscending(): Unit = { val query = productRepo.select - .seek(f => f.name.asc, SqlExpr.ConstReq(Name("foo"), Name.dbType)) + .seek(f => f.name.asc, SqlExpr.ConstReq(Name("foo"), Name.pgType)) .seek(f => f.weight.asc, SqlExpr.ConstOpt(Some(BigDecimal("22.2")), ScalaDbTypes.PgTypes.numeric)) .seek(f => f.listprice.asc, SqlExpr.ConstReq(BigDecimal("33.3"), ScalaDbTypes.PgTypes.numeric)) compareFragment("uniform-ascending", query.sql()) @@ -20,7 +20,7 @@ class SeekTest extends SnapshotTest { @Test def uniformDescending(): Unit = { val query = productRepo.select - .seek(f => f.name.desc, SqlExpr.ConstReq(Name("foo"), Name.dbType)) + .seek(f => f.name.desc, SqlExpr.ConstReq(Name("foo"), Name.pgType)) .seek(f => f.weight.desc, SqlExpr.ConstOpt(Some(BigDecimal("22.2")), ScalaDbTypes.PgTypes.numeric)) .seek(f => f.listprice.desc, SqlExpr.ConstReq(BigDecimal("33.3"), ScalaDbTypes.PgTypes.numeric)) compareFragment("uniform-descending", query.sql()) @@ -29,7 +29,7 @@ class SeekTest extends SnapshotTest { @Test def complex(): Unit = { val query = productRepo.select - .seek(f => f.name.asc, SqlExpr.ConstReq(Name("foo"), Name.dbType)) + .seek(f => f.name.asc, SqlExpr.ConstReq(Name("foo"), Name.pgType)) .seek(f => f.weight.desc, SqlExpr.ConstOpt(Some(BigDecimal("22.2")), ScalaDbTypes.PgTypes.numeric)) .seek(f => f.listprice.desc, SqlExpr.ConstReq(BigDecimal("33.3"), ScalaDbTypes.PgTypes.numeric)) compareFragment("complex", query.sql()) diff --git a/testers/pg/scala/scalatypes/src/scala/adventureworks/production/productcosthistory/CompositeIdsTest.scala b/testers/pg/scala/scalatypes/src/scala/adventureworks/production/productcosthistory/CompositeIdsTest.scala index a96d51457b..0985b9a927 100644 --- a/testers/pg/scala/scalatypes/src/scala/adventureworks/production/productcosthistory/CompositeIdsTest.scala +++ b/testers/pg/scala/scalatypes/src/scala/adventureworks/production/productcosthistory/CompositeIdsTest.scala @@ -10,7 +10,7 @@ import adventureworks.production.productmodel.* import adventureworks.production.productsubcategory.* import adventureworks.production.unitmeasure.* import adventureworks.public.{Name, NameStyle} -import adventureworks.userdefined.FirstName +import adventureworks.userdefined.{FirstName, LastName} import org.junit.Assert.* import org.junit.Test @@ -169,9 +169,9 @@ class CompositeIdsTest extends SnapshotTest { "SC", NameStyle(true), None, - FirstName(s"first name $i"), + FirstName(Name(s"first name $i")), None, - Name(s"last name $i"), + LastName(Name(s"last name $i")), None, 1, None, diff --git a/testers/pg/scala/scalatypes/src/scala/adventureworks/userdefined/FirstName.scala b/testers/pg/scala/scalatypes/src/scala/adventureworks/userdefined/FirstName.scala deleted file mode 100644 index 50e5f81ac3..0000000000 --- a/testers/pg/scala/scalatypes/src/scala/adventureworks/userdefined/FirstName.scala +++ /dev/null @@ -1,15 +0,0 @@ -package adventureworks.userdefined - -import dev.typr.foundations.scala.Bijection -import dev.typr.foundations.{PgText, PgTypes} - -case class FirstName(value: String) extends AnyVal - -object FirstName { - given bijection: Bijection[FirstName, String] = Bijection.apply[FirstName, String](_.value)(FirstName.apply) - given dbType: dev.typr.foundations.DbType[FirstName] = PgTypes.text.bimap(FirstName.apply, _.value) - given pgText: PgText[FirstName] = new PgText[FirstName] { - override def unsafeEncode(v: FirstName, sb: java.lang.StringBuilder): Unit = PgText.textString.unsafeEncode(v.value, sb) - override def unsafeArrayEncode(v: FirstName, sb: java.lang.StringBuilder): Unit = PgText.textString.unsafeArrayEncode(v.value, sb) - } -} diff --git a/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/TestInsert.scala b/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/TestInsert.scala index 91a343a257..45d2176a3b 100644 --- a/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/TestInsert.scala +++ b/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/TestInsert.scala @@ -151,7 +151,11 @@ import adventureworks.sales.salesterritory.SalesterritoryId import adventureworks.sales.salesterritory.SalesterritoryRepoImpl import adventureworks.sales.salesterritory.SalesterritoryRow import adventureworks.sales.salesterritory.SalesterritoryRowUnsaved +import adventureworks.userdefined.CurrentFlag import adventureworks.userdefined.FirstName +import adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName +import adventureworks.userdefined.SalariedFlag import java.time.Instant import java.time.LocalDate import java.time.LocalDateTime @@ -182,10 +186,10 @@ case class TestInsert( nationalidnumber: String = random.alphanumeric.take(15).mkString, loginid: String = random.alphanumeric.take(20).mkString, jobtitle: String = random.alphanumeric.take(20).mkString, - salariedflag: Defaulted[Flag] = new UseDefault(), + salariedflag: Defaulted[/* user-picked */ SalariedFlag] = new UseDefault(), vacationhours: Defaulted[TypoShort] = new UseDefault(), sickleavehours: Defaulted[TypoShort] = new UseDefault(), - currentflag: Defaulted[Flag] = new UseDefault(), + currentflag: Defaulted[/* user-picked */ CurrentFlag] = new UseDefault(), rowguid: Defaulted[TypoUUID] = new UseDefault(), modifieddate: Defaulted[TypoLocalDateTime] = new UseDefault(), organizationnode: Defaulted[Option[String]] = new UseDefault() @@ -266,10 +270,10 @@ case class TestInsert( def personPerson( businessentityid: BusinessentityId, persontype: String, - firstname: /* user-picked */ FirstName, title: Option[/* max 8 chars */ String] = (if (random.nextBoolean()) None else Some(random.alphanumeric.take(8).mkString)), - middlename: Option[Name] = (if (random.nextBoolean()) None else Some(domainInsert.publicName(random))), - lastname: Name = domainInsert.publicName(random), + firstname: /* user-picked */ FirstName = new FirstName(domainInsert.publicName(random)), + middlename: Option[/* user-picked */ MiddleName] = (if (random.nextBoolean()) None else Some(new MiddleName(domainInsert.publicName(random)))), + lastname: /* user-picked */ LastName = new LastName(domainInsert.publicName(random)), suffix: Option[/* max 10 chars */ String] = (if (random.nextBoolean()) None else Some(random.alphanumeric.take(10).mkString)), additionalcontactinfo: Option[TypoXml] = None, demographics: Option[TypoXml] = None, diff --git a/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/humanresources/employee/EmployeeFields.scala b/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/humanresources/employee/EmployeeFields.scala index 1c559fa0dd..c4ad1a140a 100644 --- a/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/humanresources/employee/EmployeeFields.scala +++ b/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/humanresources/employee/EmployeeFields.scala @@ -12,7 +12,8 @@ import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId import adventureworks.person.person.PersonFields import adventureworks.person.person.PersonRow -import adventureworks.public.Flag +import adventureworks.userdefined.CurrentFlag +import adventureworks.userdefined.SalariedFlag import typr.dsl.ForeignKey import typr.dsl.Path import typr.dsl.RelationStructure @@ -30,10 +31,10 @@ trait EmployeeFields { def maritalstatus: Field[String, EmployeeRow] def gender: Field[String, EmployeeRow] def hiredate: Field[TypoLocalDate, EmployeeRow] - def salariedflag: Field[Flag, EmployeeRow] + def salariedflag: Field[/* user-picked */ SalariedFlag, EmployeeRow] def vacationhours: Field[TypoShort, EmployeeRow] def sickleavehours: Field[TypoShort, EmployeeRow] - def currentflag: Field[Flag, EmployeeRow] + def currentflag: Field[/* user-picked */ CurrentFlag, EmployeeRow] def rowguid: Field[TypoUUID, EmployeeRow] def modifieddate: Field[TypoLocalDateTime, EmployeeRow] def organizationnode: OptField[String, EmployeeRow] @@ -58,10 +59,10 @@ object EmployeeFields { override def maritalstatus = Field[String, EmployeeRow](_path, "maritalstatus", None, Some("bpchar"), x => x.maritalstatus, (row, value) => row.copy(maritalstatus = value)) override def gender = Field[String, EmployeeRow](_path, "gender", None, Some("bpchar"), x => x.gender, (row, value) => row.copy(gender = value)) override def hiredate = Field[TypoLocalDate, EmployeeRow](_path, "hiredate", Some("text"), Some("date"), x => x.hiredate, (row, value) => row.copy(hiredate = value)) - override def salariedflag = Field[Flag, EmployeeRow](_path, "salariedflag", None, Some("bool"), x => x.salariedflag, (row, value) => row.copy(salariedflag = value)) + override def salariedflag = Field[/* user-picked */ SalariedFlag, EmployeeRow](_path, "salariedflag", None, Some("bool"), x => x.salariedflag, (row, value) => row.copy(salariedflag = value)) override def vacationhours = Field[TypoShort, EmployeeRow](_path, "vacationhours", None, Some("int2"), x => x.vacationhours, (row, value) => row.copy(vacationhours = value)) override def sickleavehours = Field[TypoShort, EmployeeRow](_path, "sickleavehours", None, Some("int2"), x => x.sickleavehours, (row, value) => row.copy(sickleavehours = value)) - override def currentflag = Field[Flag, EmployeeRow](_path, "currentflag", None, Some("bool"), x => x.currentflag, (row, value) => row.copy(currentflag = value)) + override def currentflag = Field[/* user-picked */ CurrentFlag, EmployeeRow](_path, "currentflag", None, Some("bool"), x => x.currentflag, (row, value) => row.copy(currentflag = value)) override def rowguid = Field[TypoUUID, EmployeeRow](_path, "rowguid", None, Some("uuid"), x => x.rowguid, (row, value) => row.copy(rowguid = value)) override def modifieddate = Field[TypoLocalDateTime, EmployeeRow](_path, "modifieddate", Some("text"), Some("timestamp"), x => x.modifieddate, (row, value) => row.copy(modifieddate = value)) override def organizationnode = OptField[String, EmployeeRow](_path, "organizationnode", None, None, x => x.organizationnode, (row, value) => row.copy(organizationnode = value)) diff --git a/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/humanresources/employee/EmployeeRepoImpl.scala b/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/humanresources/employee/EmployeeRepoImpl.scala index 59adb621c2..d0cc2c01b5 100644 --- a/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/humanresources/employee/EmployeeRepoImpl.scala +++ b/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/humanresources/employee/EmployeeRepoImpl.scala @@ -11,8 +11,9 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoShort import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Flag import adventureworks.streamingInsert +import adventureworks.userdefined.CurrentFlag +import adventureworks.userdefined.SalariedFlag import typr.dsl.DeleteBuilder import typr.dsl.SelectBuilder import typr.dsl.UpdateBuilder @@ -34,7 +35,7 @@ class EmployeeRepoImpl extends EmployeeRepo { 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") - values (${Segment.paramSegment(unsaved.businessentityid)(BusinessentityId.setter)}::int4, ${Segment.paramSegment(unsaved.nationalidnumber)(Setter.stringSetter)}, ${Segment.paramSegment(unsaved.loginid)(Setter.stringSetter)}, ${Segment.paramSegment(unsaved.jobtitle)(Setter.stringSetter)}, ${Segment.paramSegment(unsaved.birthdate)(TypoLocalDate.setter)}::date, ${Segment.paramSegment(unsaved.maritalstatus)(Setter.stringSetter)}::bpchar, ${Segment.paramSegment(unsaved.gender)(Setter.stringSetter)}::bpchar, ${Segment.paramSegment(unsaved.hiredate)(TypoLocalDate.setter)}::date, ${Segment.paramSegment(unsaved.salariedflag)(Flag.setter)}::bool, ${Segment.paramSegment(unsaved.vacationhours)(TypoShort.setter)}::int2, ${Segment.paramSegment(unsaved.sickleavehours)(TypoShort.setter)}::int2, ${Segment.paramSegment(unsaved.currentflag)(Flag.setter)}::bool, ${Segment.paramSegment(unsaved.rowguid)(TypoUUID.setter)}::uuid, ${Segment.paramSegment(unsaved.modifieddate)(TypoLocalDateTime.setter)}::timestamp, ${Segment.paramSegment(unsaved.organizationnode)(Setter.optionParamSetter(Setter.stringSetter))}) + values (${Segment.paramSegment(unsaved.businessentityid)(BusinessentityId.setter)}::int4, ${Segment.paramSegment(unsaved.nationalidnumber)(Setter.stringSetter)}, ${Segment.paramSegment(unsaved.loginid)(Setter.stringSetter)}, ${Segment.paramSegment(unsaved.jobtitle)(Setter.stringSetter)}, ${Segment.paramSegment(unsaved.birthdate)(TypoLocalDate.setter)}::date, ${Segment.paramSegment(unsaved.maritalstatus)(Setter.stringSetter)}::bpchar, ${Segment.paramSegment(unsaved.gender)(Setter.stringSetter)}::bpchar, ${Segment.paramSegment(unsaved.hiredate)(TypoLocalDate.setter)}::date, ${Segment.paramSegment(unsaved.salariedflag)(/* user-picked */ SalariedFlag.setter)}::bool, ${Segment.paramSegment(unsaved.vacationhours)(TypoShort.setter)}::int2, ${Segment.paramSegment(unsaved.sickleavehours)(TypoShort.setter)}::int2, ${Segment.paramSegment(unsaved.currentflag)(/* user-picked */ CurrentFlag.setter)}::bool, ${Segment.paramSegment(unsaved.rowguid)(TypoUUID.setter)}::uuid, ${Segment.paramSegment(unsaved.modifieddate)(TypoLocalDateTime.setter)}::timestamp, ${Segment.paramSegment(unsaved.organizationnode)(Setter.optionParamSetter(Setter.stringSetter))}) returning "businessentityid", "nationalidnumber", "loginid", "jobtitle", "birthdate"::text, "maritalstatus", "gender", "hiredate"::text, "salariedflag", "vacationhours", "sickleavehours", "currentflag", "rowguid", "modifieddate"::text, "organizationnode" """.insertReturning(EmployeeRow.jdbcDecoder).map(_.updatedKeys.head) } @@ -51,7 +52,7 @@ class EmployeeRepoImpl extends EmployeeRepo { Some((sql""""hiredate"""", sql"${Segment.paramSegment(unsaved.hiredate)(TypoLocalDate.setter)}::date")), unsaved.salariedflag match { case Defaulted.UseDefault() => None - case Defaulted.Provided(value) => Some((sql""""salariedflag"""", sql"${Segment.paramSegment(value: Flag)(Flag.setter)}::bool")) + case Defaulted.Provided(value) => Some((sql""""salariedflag"""", sql"${Segment.paramSegment(value: /* user-picked */ SalariedFlag)(/* user-picked */ SalariedFlag.setter)}::bool")) }, unsaved.vacationhours match { case Defaulted.UseDefault() => None @@ -63,7 +64,7 @@ class EmployeeRepoImpl extends EmployeeRepo { }, unsaved.currentflag match { case Defaulted.UseDefault() => None - case Defaulted.Provided(value) => Some((sql""""currentflag"""", sql"${Segment.paramSegment(value: Flag)(Flag.setter)}::bool")) + case Defaulted.Provided(value) => Some((sql""""currentflag"""", sql"${Segment.paramSegment(value: /* user-picked */ CurrentFlag)(/* user-picked */ CurrentFlag.setter)}::bool")) }, unsaved.rowguid match { case Defaulted.UseDefault() => None @@ -128,10 +129,10 @@ class EmployeeRepoImpl extends EmployeeRepo { "maritalstatus" = ${Segment.paramSegment(row.maritalstatus)(Setter.stringSetter)}::bpchar, "gender" = ${Segment.paramSegment(row.gender)(Setter.stringSetter)}::bpchar, "hiredate" = ${Segment.paramSegment(row.hiredate)(TypoLocalDate.setter)}::date, - "salariedflag" = ${Segment.paramSegment(row.salariedflag)(Flag.setter)}::bool, + "salariedflag" = ${Segment.paramSegment(row.salariedflag)(/* user-picked */ SalariedFlag.setter)}::bool, "vacationhours" = ${Segment.paramSegment(row.vacationhours)(TypoShort.setter)}::int2, "sickleavehours" = ${Segment.paramSegment(row.sickleavehours)(TypoShort.setter)}::int2, - "currentflag" = ${Segment.paramSegment(row.currentflag)(Flag.setter)}::bool, + "currentflag" = ${Segment.paramSegment(row.currentflag)(/* user-picked */ CurrentFlag.setter)}::bool, "rowguid" = ${Segment.paramSegment(row.rowguid)(TypoUUID.setter)}::uuid, "modifieddate" = ${Segment.paramSegment(row.modifieddate)(TypoLocalDateTime.setter)}::timestamp, "organizationnode" = ${Segment.paramSegment(row.organizationnode)(Setter.optionParamSetter(Setter.stringSetter))} @@ -152,10 +153,10 @@ class EmployeeRepoImpl extends EmployeeRepo { ${Segment.paramSegment(unsaved.maritalstatus)(Setter.stringSetter)}::bpchar, ${Segment.paramSegment(unsaved.gender)(Setter.stringSetter)}::bpchar, ${Segment.paramSegment(unsaved.hiredate)(TypoLocalDate.setter)}::date, - ${Segment.paramSegment(unsaved.salariedflag)(Flag.setter)}::bool, + ${Segment.paramSegment(unsaved.salariedflag)(/* user-picked */ SalariedFlag.setter)}::bool, ${Segment.paramSegment(unsaved.vacationhours)(TypoShort.setter)}::int2, ${Segment.paramSegment(unsaved.sickleavehours)(TypoShort.setter)}::int2, - ${Segment.paramSegment(unsaved.currentflag)(Flag.setter)}::bool, + ${Segment.paramSegment(unsaved.currentflag)(/* user-picked */ CurrentFlag.setter)}::bool, ${Segment.paramSegment(unsaved.rowguid)(TypoUUID.setter)}::uuid, ${Segment.paramSegment(unsaved.modifieddate)(TypoLocalDateTime.setter)}::timestamp, ${Segment.paramSegment(unsaved.organizationnode)(Setter.optionParamSetter(Setter.stringSetter))} diff --git a/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/humanresources/employee/EmployeeRow.scala b/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/humanresources/employee/EmployeeRow.scala index eac058f353..177725c9e9 100644 --- a/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/humanresources/employee/EmployeeRow.scala +++ b/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/humanresources/employee/EmployeeRow.scala @@ -12,7 +12,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoShort import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Flag +import adventureworks.userdefined.CurrentFlag +import adventureworks.userdefined.SalariedFlag import java.sql.ResultSet import zio.jdbc.JdbcDecoder import zio.json.JsonDecoder @@ -54,7 +55,7 @@ case class EmployeeRow( /** Job classification. 0 = Hourly, not exempt from collective bargaining. 1 = Salaried, exempt from collective bargaining. * Default: true */ - salariedflag: Flag, + salariedflag: /* user-picked */ SalariedFlag, /** Number of available vacation hours. * Default: 0 * Constraint CK_Employee_VacationHours affecting columns vacationhours: (((vacationhours >= '-40'::integer) AND (vacationhours <= 240))) @@ -68,7 +69,7 @@ case class EmployeeRow( /** 0 = Inactive, 1 = Active * Default: true */ - currentflag: Flag, + currentflag: /* user-picked */ CurrentFlag, /** Default: uuid_generate_v1() */ rowguid: TypoUUID, /** Default: now() */ @@ -81,10 +82,10 @@ case class EmployeeRow( def id: BusinessentityId = businessentityid def toUnsavedRow( - salariedflag: Defaulted[Flag] = Defaulted.Provided(this.salariedflag), + salariedflag: Defaulted[/* user-picked */ SalariedFlag] = Defaulted.Provided(this.salariedflag), vacationhours: Defaulted[TypoShort] = Defaulted.Provided(this.vacationhours), sickleavehours: Defaulted[TypoShort] = Defaulted.Provided(this.sickleavehours), - currentflag: Defaulted[Flag] = Defaulted.Provided(this.currentflag), + currentflag: Defaulted[/* user-picked */ CurrentFlag] = Defaulted.Provided(this.currentflag), rowguid: Defaulted[TypoUUID] = Defaulted.Provided(this.rowguid), modifieddate: Defaulted[TypoLocalDateTime] = Defaulted.Provided(this.modifieddate), organizationnode: Defaulted[Option[String]] = Defaulted.Provided(this.organizationnode) @@ -123,10 +124,10 @@ object EmployeeRow { maritalstatus = JdbcDecoder.stringDecoder.unsafeDecode(columIndex + 5, rs)._2, gender = JdbcDecoder.stringDecoder.unsafeDecode(columIndex + 6, rs)._2, hiredate = TypoLocalDate.jdbcDecoder.unsafeDecode(columIndex + 7, rs)._2, - salariedflag = Flag.jdbcDecoder.unsafeDecode(columIndex + 8, rs)._2, + salariedflag = SalariedFlag.jdbcDecoder.unsafeDecode(columIndex + 8, rs)._2, vacationhours = TypoShort.jdbcDecoder.unsafeDecode(columIndex + 9, rs)._2, sickleavehours = TypoShort.jdbcDecoder.unsafeDecode(columIndex + 10, rs)._2, - currentflag = Flag.jdbcDecoder.unsafeDecode(columIndex + 11, rs)._2, + currentflag = CurrentFlag.jdbcDecoder.unsafeDecode(columIndex + 11, rs)._2, rowguid = TypoUUID.jdbcDecoder.unsafeDecode(columIndex + 12, rs)._2, modifieddate = TypoLocalDateTime.jdbcDecoder.unsafeDecode(columIndex + 13, rs)._2, organizationnode = JdbcDecoder.optionDecoder(JdbcDecoder.stringDecoder).unsafeDecode(columIndex + 14, rs)._2 @@ -144,10 +145,10 @@ object EmployeeRow { val maritalstatus = jsonObj.get("maritalstatus").toRight("Missing field 'maritalstatus'").flatMap(_.as(JsonDecoder.string)) val gender = jsonObj.get("gender").toRight("Missing field 'gender'").flatMap(_.as(JsonDecoder.string)) val hiredate = jsonObj.get("hiredate").toRight("Missing field 'hiredate'").flatMap(_.as(TypoLocalDate.jsonDecoder)) - val salariedflag = jsonObj.get("salariedflag").toRight("Missing field 'salariedflag'").flatMap(_.as(Flag.jsonDecoder)) + val salariedflag = jsonObj.get("salariedflag").toRight("Missing field 'salariedflag'").flatMap(_.as(SalariedFlag.jsonDecoder)) val vacationhours = jsonObj.get("vacationhours").toRight("Missing field 'vacationhours'").flatMap(_.as(TypoShort.jsonDecoder)) val sickleavehours = jsonObj.get("sickleavehours").toRight("Missing field 'sickleavehours'").flatMap(_.as(TypoShort.jsonDecoder)) - val currentflag = jsonObj.get("currentflag").toRight("Missing field 'currentflag'").flatMap(_.as(Flag.jsonDecoder)) + val currentflag = jsonObj.get("currentflag").toRight("Missing field 'currentflag'").flatMap(_.as(CurrentFlag.jsonDecoder)) val rowguid = jsonObj.get("rowguid").toRight("Missing field 'rowguid'").flatMap(_.as(TypoUUID.jsonDecoder)) val modifieddate = jsonObj.get("modifieddate").toRight("Missing field 'modifieddate'").flatMap(_.as(TypoLocalDateTime.jsonDecoder)) val organizationnode = jsonObj.get("organizationnode").fold[Either[String, Option[String]]](Right(None))(_.as(JsonDecoder.option(JsonDecoder.string))) @@ -186,7 +187,7 @@ object EmployeeRow { TypoLocalDate.jsonEncoder.unsafeEncode(a.hiredate, indent, out) out.write(",") out.write(""""salariedflag":""") - Flag.jsonEncoder.unsafeEncode(a.salariedflag, indent, out) + SalariedFlag.jsonEncoder.unsafeEncode(a.salariedflag, indent, out) out.write(",") out.write(""""vacationhours":""") TypoShort.jsonEncoder.unsafeEncode(a.vacationhours, indent, out) @@ -195,7 +196,7 @@ object EmployeeRow { TypoShort.jsonEncoder.unsafeEncode(a.sickleavehours, indent, out) out.write(",") out.write(""""currentflag":""") - Flag.jsonEncoder.unsafeEncode(a.currentflag, indent, out) + CurrentFlag.jsonEncoder.unsafeEncode(a.currentflag, indent, out) out.write(",") out.write(""""rowguid":""") TypoUUID.jsonEncoder.unsafeEncode(a.rowguid, indent, out) @@ -228,13 +229,13 @@ object EmployeeRow { sb.append(Text.DELIMETER) TypoLocalDate.pgText.unsafeEncode(row.hiredate, sb) sb.append(Text.DELIMETER) - Flag.pgText.unsafeEncode(row.salariedflag, sb) + /* user-picked */ SalariedFlag.pgText.unsafeEncode(row.salariedflag, sb) sb.append(Text.DELIMETER) TypoShort.pgText.unsafeEncode(row.vacationhours, sb) sb.append(Text.DELIMETER) TypoShort.pgText.unsafeEncode(row.sickleavehours, sb) sb.append(Text.DELIMETER) - Flag.pgText.unsafeEncode(row.currentflag, sb) + /* user-picked */ CurrentFlag.pgText.unsafeEncode(row.currentflag, sb) sb.append(Text.DELIMETER) TypoUUID.pgText.unsafeEncode(row.rowguid, sb) sb.append(Text.DELIMETER) diff --git a/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/humanresources/employee/EmployeeRowUnsaved.scala b/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/humanresources/employee/EmployeeRowUnsaved.scala index c437bf2ffb..8bce6bfd82 100644 --- a/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/humanresources/employee/EmployeeRowUnsaved.scala +++ b/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/humanresources/employee/EmployeeRowUnsaved.scala @@ -13,7 +13,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoShort import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Flag +import adventureworks.userdefined.CurrentFlag +import adventureworks.userdefined.SalariedFlag import zio.json.JsonDecoder import zio.json.JsonEncoder import zio.json.ast.Json @@ -50,7 +51,7 @@ case class EmployeeRowUnsaved( /** Default: true * Job classification. 0 = Hourly, not exempt from collective bargaining. 1 = Salaried, exempt from collective bargaining. */ - salariedflag: Defaulted[Flag] = new UseDefault(), + salariedflag: Defaulted[/* user-picked */ SalariedFlag] = new UseDefault(), /** Default: 0 * Number of available vacation hours. * Constraint CK_Employee_VacationHours affecting columns vacationhours: (((vacationhours >= '-40'::integer) AND (vacationhours <= 240))) @@ -64,7 +65,7 @@ case class EmployeeRowUnsaved( /** Default: true * 0 = Inactive, 1 = Active */ - currentflag: Defaulted[Flag] = new UseDefault(), + currentflag: Defaulted[/* user-picked */ CurrentFlag] = new UseDefault(), /** Default: uuid_generate_v1() */ rowguid: Defaulted[TypoUUID] = new UseDefault(), /** Default: now() */ @@ -75,10 +76,10 @@ case class EmployeeRowUnsaved( organizationnode: Defaulted[Option[String]] = new UseDefault() ) { def toRow( - salariedflagDefault: => Flag, + salariedflagDefault: => /* user-picked */ SalariedFlag, vacationhoursDefault: => TypoShort, sickleavehoursDefault: => TypoShort, - currentflagDefault: => Flag, + currentflagDefault: => /* user-picked */ CurrentFlag, rowguidDefault: => TypoUUID, modifieddateDefault: => TypoLocalDateTime, organizationnodeDefault: => Option[String] @@ -114,10 +115,10 @@ object EmployeeRowUnsaved { val maritalstatus = jsonObj.get("maritalstatus").toRight("Missing field 'maritalstatus'").flatMap(_.as(JsonDecoder.string)) val gender = jsonObj.get("gender").toRight("Missing field 'gender'").flatMap(_.as(JsonDecoder.string)) val hiredate = jsonObj.get("hiredate").toRight("Missing field 'hiredate'").flatMap(_.as(TypoLocalDate.jsonDecoder)) - val salariedflag = jsonObj.get("salariedflag").toRight("Missing field 'salariedflag'").flatMap(_.as(Defaulted.jsonDecoder(Flag.jsonDecoder))) + val salariedflag = jsonObj.get("salariedflag").toRight("Missing field 'salariedflag'").flatMap(_.as(Defaulted.jsonDecoder(SalariedFlag.jsonDecoder))) val vacationhours = jsonObj.get("vacationhours").toRight("Missing field 'vacationhours'").flatMap(_.as(Defaulted.jsonDecoder(TypoShort.jsonDecoder))) val sickleavehours = jsonObj.get("sickleavehours").toRight("Missing field 'sickleavehours'").flatMap(_.as(Defaulted.jsonDecoder(TypoShort.jsonDecoder))) - val currentflag = jsonObj.get("currentflag").toRight("Missing field 'currentflag'").flatMap(_.as(Defaulted.jsonDecoder(Flag.jsonDecoder))) + val currentflag = jsonObj.get("currentflag").toRight("Missing field 'currentflag'").flatMap(_.as(Defaulted.jsonDecoder(CurrentFlag.jsonDecoder))) val rowguid = jsonObj.get("rowguid").toRight("Missing field 'rowguid'").flatMap(_.as(Defaulted.jsonDecoder(TypoUUID.jsonDecoder))) val modifieddate = jsonObj.get("modifieddate").toRight("Missing field 'modifieddate'").flatMap(_.as(Defaulted.jsonDecoder(TypoLocalDateTime.jsonDecoder))) val organizationnode = jsonObj.get("organizationnode").toRight("Missing field 'organizationnode'").flatMap(_.as(Defaulted.jsonDecoder(JsonDecoder.option(JsonDecoder.string)))) @@ -156,7 +157,7 @@ object EmployeeRowUnsaved { TypoLocalDate.jsonEncoder.unsafeEncode(a.hiredate, indent, out) out.write(",") out.write(""""salariedflag":""") - Defaulted.jsonEncoder(Flag.jsonEncoder).unsafeEncode(a.salariedflag, indent, out) + Defaulted.jsonEncoder(SalariedFlag.jsonEncoder).unsafeEncode(a.salariedflag, indent, out) out.write(",") out.write(""""vacationhours":""") Defaulted.jsonEncoder(TypoShort.jsonEncoder).unsafeEncode(a.vacationhours, indent, out) @@ -165,7 +166,7 @@ object EmployeeRowUnsaved { Defaulted.jsonEncoder(TypoShort.jsonEncoder).unsafeEncode(a.sickleavehours, indent, out) out.write(",") out.write(""""currentflag":""") - Defaulted.jsonEncoder(Flag.jsonEncoder).unsafeEncode(a.currentflag, indent, out) + Defaulted.jsonEncoder(CurrentFlag.jsonEncoder).unsafeEncode(a.currentflag, indent, out) out.write(",") out.write(""""rowguid":""") Defaulted.jsonEncoder(TypoUUID.jsonEncoder).unsafeEncode(a.rowguid, indent, out) @@ -198,13 +199,13 @@ object EmployeeRowUnsaved { sb.append(Text.DELIMETER) TypoLocalDate.pgText.unsafeEncode(row.hiredate, sb) sb.append(Text.DELIMETER) - Defaulted.pgText(Flag.pgText).unsafeEncode(row.salariedflag, sb) + Defaulted.pgText(SalariedFlag.pgText).unsafeEncode(row.salariedflag, sb) sb.append(Text.DELIMETER) Defaulted.pgText(TypoShort.pgText).unsafeEncode(row.vacationhours, sb) sb.append(Text.DELIMETER) Defaulted.pgText(TypoShort.pgText).unsafeEncode(row.sickleavehours, sb) sb.append(Text.DELIMETER) - Defaulted.pgText(Flag.pgText).unsafeEncode(row.currentflag, sb) + Defaulted.pgText(CurrentFlag.pgText).unsafeEncode(row.currentflag, sb) sb.append(Text.DELIMETER) Defaulted.pgText(TypoUUID.pgText).unsafeEncode(row.rowguid, sb) sb.append(Text.DELIMETER) diff --git a/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/humanresources/vemployee/VemployeeViewFields.scala b/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/humanresources/vemployee/VemployeeViewFields.scala index 406852bac3..d0474bd83d 100644 --- a/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/humanresources/vemployee/VemployeeViewFields.scala +++ b/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/humanresources/vemployee/VemployeeViewFields.scala @@ -10,6 +10,8 @@ import adventureworks.person.businessentity.BusinessentityId import adventureworks.public.Name import adventureworks.public.Phone import adventureworks.userdefined.FirstName +import adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import typr.dsl.Path import typr.dsl.RelationStructure import typr.dsl.SqlExpr.Field @@ -19,8 +21,8 @@ trait VemployeeViewFields { def businessentityid: Field[BusinessentityId, VemployeeViewRow] def title: Field[String, VemployeeViewRow] def firstname: Field[/* user-picked */ FirstName, VemployeeViewRow] - def middlename: Field[Name, VemployeeViewRow] - def lastname: Field[Name, VemployeeViewRow] + def middlename: Field[/* user-picked */ MiddleName, VemployeeViewRow] + def lastname: Field[/* user-picked */ LastName, VemployeeViewRow] def suffix: Field[String, VemployeeViewRow] def jobtitle: Field[String, VemployeeViewRow] def phonenumber: Field[Phone, VemployeeViewRow] @@ -47,8 +49,8 @@ object VemployeeViewFields { override def businessentityid = Field[BusinessentityId, VemployeeViewRow](_path, "businessentityid", None, None, x => x.businessentityid, (row, value) => row.copy(businessentityid = value)) override def title = Field[String, VemployeeViewRow](_path, "title", None, None, x => x.title, (row, value) => row.copy(title = value)) override def firstname = Field[/* user-picked */ FirstName, VemployeeViewRow](_path, "firstname", None, None, x => x.firstname, (row, value) => row.copy(firstname = value)) - override def middlename = Field[Name, VemployeeViewRow](_path, "middlename", None, None, x => x.middlename, (row, value) => row.copy(middlename = value)) - override def lastname = Field[Name, VemployeeViewRow](_path, "lastname", None, None, x => x.lastname, (row, value) => row.copy(lastname = value)) + override def middlename = Field[/* user-picked */ MiddleName, VemployeeViewRow](_path, "middlename", None, None, x => x.middlename, (row, value) => row.copy(middlename = value)) + override def lastname = Field[/* user-picked */ LastName, VemployeeViewRow](_path, "lastname", None, None, x => x.lastname, (row, value) => row.copy(lastname = value)) override def suffix = Field[String, VemployeeViewRow](_path, "suffix", None, None, x => x.suffix, (row, value) => row.copy(suffix = value)) override def jobtitle = Field[String, VemployeeViewRow](_path, "jobtitle", None, None, x => x.jobtitle, (row, value) => row.copy(jobtitle = value)) override def phonenumber = Field[Phone, VemployeeViewRow](_path, "phonenumber", None, None, x => x.phonenumber, (row, value) => row.copy(phonenumber = value)) diff --git a/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/humanresources/vemployee/VemployeeViewRow.scala b/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/humanresources/vemployee/VemployeeViewRow.scala index a8de83e5fe..6d47aebbdf 100644 --- a/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/humanresources/vemployee/VemployeeViewRow.scala +++ b/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/humanresources/vemployee/VemployeeViewRow.scala @@ -10,6 +10,8 @@ import adventureworks.person.businessentity.BusinessentityId import adventureworks.public.Name import adventureworks.public.Phone import adventureworks.userdefined.FirstName +import adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import java.sql.ResultSet import zio.jdbc.JdbcDecoder import zio.json.JsonDecoder @@ -26,9 +28,9 @@ case class VemployeeViewRow( /** Points to [[adventureworks.person.person.PersonRow.firstname]] */ firstname: /* user-picked */ FirstName, /** Points to [[adventureworks.person.person.PersonRow.middlename]] */ - middlename: Name, + middlename: /* user-picked */ MiddleName, /** Points to [[adventureworks.person.person.PersonRow.lastname]] */ - lastname: Name, + lastname: /* user-picked */ LastName, /** Points to [[adventureworks.person.person.PersonRow.suffix]] */ suffix: String, /** Points to [[adventureworks.humanresources.employee.EmployeeRow.jobtitle]] */ @@ -66,8 +68,8 @@ object VemployeeViewRow { businessentityid = BusinessentityId.jdbcDecoder.unsafeDecode(columIndex + 0, rs)._2, title = JdbcDecoder.stringDecoder.unsafeDecode(columIndex + 1, rs)._2, firstname = FirstName.jdbcDecoder.unsafeDecode(columIndex + 2, rs)._2, - middlename = Name.jdbcDecoder.unsafeDecode(columIndex + 3, rs)._2, - lastname = Name.jdbcDecoder.unsafeDecode(columIndex + 4, rs)._2, + middlename = MiddleName.jdbcDecoder.unsafeDecode(columIndex + 3, rs)._2, + lastname = LastName.jdbcDecoder.unsafeDecode(columIndex + 4, rs)._2, suffix = JdbcDecoder.stringDecoder.unsafeDecode(columIndex + 5, rs)._2, jobtitle = JdbcDecoder.stringDecoder.unsafeDecode(columIndex + 6, rs)._2, phonenumber = Phone.jdbcDecoder.unsafeDecode(columIndex + 7, rs)._2, @@ -90,8 +92,8 @@ object VemployeeViewRow { val businessentityid = jsonObj.get("businessentityid").toRight("Missing field 'businessentityid'").flatMap(_.as(BusinessentityId.jsonDecoder)) val title = jsonObj.get("title").toRight("Missing field 'title'").flatMap(_.as(JsonDecoder.string)) val firstname = jsonObj.get("firstname").toRight("Missing field 'firstname'").flatMap(_.as(FirstName.jsonDecoder)) - val middlename = jsonObj.get("middlename").toRight("Missing field 'middlename'").flatMap(_.as(Name.jsonDecoder)) - val lastname = jsonObj.get("lastname").toRight("Missing field 'lastname'").flatMap(_.as(Name.jsonDecoder)) + val middlename = jsonObj.get("middlename").toRight("Missing field 'middlename'").flatMap(_.as(MiddleName.jsonDecoder)) + val lastname = jsonObj.get("lastname").toRight("Missing field 'lastname'").flatMap(_.as(LastName.jsonDecoder)) val suffix = jsonObj.get("suffix").toRight("Missing field 'suffix'").flatMap(_.as(JsonDecoder.string)) val jobtitle = jsonObj.get("jobtitle").toRight("Missing field 'jobtitle'").flatMap(_.as(JsonDecoder.string)) val phonenumber = jsonObj.get("phonenumber").toRight("Missing field 'phonenumber'").flatMap(_.as(Phone.jsonDecoder)) @@ -125,10 +127,10 @@ object VemployeeViewRow { FirstName.jsonEncoder.unsafeEncode(a.firstname, indent, out) out.write(",") out.write(""""middlename":""") - Name.jsonEncoder.unsafeEncode(a.middlename, indent, out) + MiddleName.jsonEncoder.unsafeEncode(a.middlename, indent, out) out.write(",") out.write(""""lastname":""") - Name.jsonEncoder.unsafeEncode(a.lastname, indent, out) + LastName.jsonEncoder.unsafeEncode(a.lastname, indent, out) out.write(",") out.write(""""suffix":""") JsonEncoder.string.unsafeEncode(a.suffix, indent, out) diff --git a/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/person/person/PersonFields.scala b/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/person/person/PersonFields.scala index 27eb19af9f..6fdabb004a 100644 --- a/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/person/person/PersonFields.scala +++ b/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/person/person/PersonFields.scala @@ -11,9 +11,10 @@ import adventureworks.customtypes.TypoXml import adventureworks.person.businessentity.BusinessentityFields import adventureworks.person.businessentity.BusinessentityId import adventureworks.person.businessentity.BusinessentityRow -import adventureworks.public.Name import adventureworks.public.NameStyle import adventureworks.userdefined.FirstName +import adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import typr.dsl.ForeignKey import typr.dsl.Path import typr.dsl.RelationStructure @@ -28,8 +29,8 @@ trait PersonFields { def namestyle: Field[NameStyle, PersonRow] def title: OptField[/* max 8 chars */ String, PersonRow] def firstname: Field[/* user-picked */ FirstName, PersonRow] - def middlename: OptField[Name, PersonRow] - def lastname: Field[Name, PersonRow] + def middlename: OptField[/* user-picked */ MiddleName, PersonRow] + def lastname: Field[/* user-picked */ LastName, PersonRow] def suffix: OptField[/* max 10 chars */ String, PersonRow] def emailpromotion: Field[Int, PersonRow] def additionalcontactinfo: OptField[TypoXml, PersonRow] @@ -54,8 +55,8 @@ object PersonFields { override def namestyle = Field[NameStyle, PersonRow](_path, "namestyle", None, Some("bool"), x => x.namestyle, (row, value) => row.copy(namestyle = value)) override def title = OptField[/* max 8 chars */ String, PersonRow](_path, "title", None, None, x => x.title, (row, value) => row.copy(title = value)) override def firstname = Field[/* user-picked */ FirstName, PersonRow](_path, "firstname", None, Some("varchar"), x => x.firstname, (row, value) => row.copy(firstname = value)) - override def middlename = OptField[Name, PersonRow](_path, "middlename", None, Some("varchar"), x => x.middlename, (row, value) => row.copy(middlename = value)) - override def lastname = Field[Name, PersonRow](_path, "lastname", None, Some("varchar"), x => x.lastname, (row, value) => row.copy(lastname = value)) + override def middlename = OptField[/* user-picked */ MiddleName, PersonRow](_path, "middlename", None, Some("varchar"), x => x.middlename, (row, value) => row.copy(middlename = value)) + override def lastname = Field[/* user-picked */ LastName, PersonRow](_path, "lastname", None, Some("varchar"), x => x.lastname, (row, value) => row.copy(lastname = value)) override def suffix = OptField[/* max 10 chars */ String, PersonRow](_path, "suffix", None, None, x => x.suffix, (row, value) => row.copy(suffix = value)) override def emailpromotion = Field[Int, PersonRow](_path, "emailpromotion", None, Some("int4"), x => x.emailpromotion, (row, value) => row.copy(emailpromotion = value)) override def additionalcontactinfo = OptField[TypoXml, PersonRow](_path, "additionalcontactinfo", None, Some("xml"), x => x.additionalcontactinfo, (row, value) => row.copy(additionalcontactinfo = value)) diff --git a/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/person/person/PersonRepoImpl.scala b/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/person/person/PersonRepoImpl.scala index cc217958cf..b164d1782d 100644 --- a/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/person/person/PersonRepoImpl.scala +++ b/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/person/person/PersonRepoImpl.scala @@ -10,10 +10,11 @@ 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.streamingInsert import adventureworks.userdefined.FirstName +import adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import typr.dsl.DeleteBuilder import typr.dsl.SelectBuilder import typr.dsl.UpdateBuilder @@ -35,7 +36,7 @@ class PersonRepoImpl extends PersonRepo { 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") - values (${Segment.paramSegment(unsaved.businessentityid)(BusinessentityId.setter)}::int4, ${Segment.paramSegment(unsaved.persontype)(Setter.stringSetter)}::bpchar, ${Segment.paramSegment(unsaved.namestyle)(NameStyle.setter)}::bool, ${Segment.paramSegment(unsaved.title)(Setter.optionParamSetter(Setter.stringSetter))}, ${Segment.paramSegment(unsaved.firstname)(/* user-picked */ FirstName.setter)}::varchar, ${Segment.paramSegment(unsaved.middlename)(Setter.optionParamSetter(Name.setter))}::varchar, ${Segment.paramSegment(unsaved.lastname)(Name.setter)}::varchar, ${Segment.paramSegment(unsaved.suffix)(Setter.optionParamSetter(Setter.stringSetter))}, ${Segment.paramSegment(unsaved.emailpromotion)(Setter.intSetter)}::int4, ${Segment.paramSegment(unsaved.additionalcontactinfo)(Setter.optionParamSetter(TypoXml.setter))}::xml, ${Segment.paramSegment(unsaved.demographics)(Setter.optionParamSetter(TypoXml.setter))}::xml, ${Segment.paramSegment(unsaved.rowguid)(TypoUUID.setter)}::uuid, ${Segment.paramSegment(unsaved.modifieddate)(TypoLocalDateTime.setter)}::timestamp) + values (${Segment.paramSegment(unsaved.businessentityid)(BusinessentityId.setter)}::int4, ${Segment.paramSegment(unsaved.persontype)(Setter.stringSetter)}::bpchar, ${Segment.paramSegment(unsaved.namestyle)(NameStyle.setter)}::bool, ${Segment.paramSegment(unsaved.title)(Setter.optionParamSetter(Setter.stringSetter))}, ${Segment.paramSegment(unsaved.firstname)(/* user-picked */ FirstName.setter)}::varchar, ${Segment.paramSegment(unsaved.middlename)(Setter.optionParamSetter(MiddleName.setter))}::varchar, ${Segment.paramSegment(unsaved.lastname)(/* user-picked */ LastName.setter)}::varchar, ${Segment.paramSegment(unsaved.suffix)(Setter.optionParamSetter(Setter.stringSetter))}, ${Segment.paramSegment(unsaved.emailpromotion)(Setter.intSetter)}::int4, ${Segment.paramSegment(unsaved.additionalcontactinfo)(Setter.optionParamSetter(TypoXml.setter))}::xml, ${Segment.paramSegment(unsaved.demographics)(Setter.optionParamSetter(TypoXml.setter))}::xml, ${Segment.paramSegment(unsaved.rowguid)(TypoUUID.setter)}::uuid, ${Segment.paramSegment(unsaved.modifieddate)(TypoLocalDateTime.setter)}::timestamp) returning "businessentityid", "persontype", "namestyle", "title", "firstname", "middlename", "lastname", "suffix", "emailpromotion", "additionalcontactinfo", "demographics", "rowguid", "modifieddate"::text """.insertReturning(PersonRow.jdbcDecoder).map(_.updatedKeys.head) } @@ -46,8 +47,8 @@ class PersonRepoImpl extends PersonRepo { Some((sql""""persontype"""", sql"${Segment.paramSegment(unsaved.persontype)(Setter.stringSetter)}::bpchar")), Some((sql""""title"""", sql"${Segment.paramSegment(unsaved.title)(Setter.optionParamSetter(Setter.stringSetter))}")), Some((sql""""firstname"""", sql"${Segment.paramSegment(unsaved.firstname)(/* user-picked */ FirstName.setter)}::varchar")), - Some((sql""""middlename"""", sql"${Segment.paramSegment(unsaved.middlename)(Setter.optionParamSetter(Name.setter))}::varchar")), - Some((sql""""lastname"""", sql"${Segment.paramSegment(unsaved.lastname)(Name.setter)}::varchar")), + Some((sql""""middlename"""", sql"${Segment.paramSegment(unsaved.middlename)(Setter.optionParamSetter(MiddleName.setter))}::varchar")), + Some((sql""""lastname"""", sql"${Segment.paramSegment(unsaved.lastname)(/* user-picked */ LastName.setter)}::varchar")), Some((sql""""suffix"""", sql"${Segment.paramSegment(unsaved.suffix)(Setter.optionParamSetter(Setter.stringSetter))}")), Some((sql""""additionalcontactinfo"""", sql"${Segment.paramSegment(unsaved.additionalcontactinfo)(Setter.optionParamSetter(TypoXml.setter))}::xml")), Some((sql""""demographics"""", sql"${Segment.paramSegment(unsaved.demographics)(Setter.optionParamSetter(TypoXml.setter))}::xml")), @@ -115,8 +116,8 @@ class PersonRepoImpl extends PersonRepo { "namestyle" = ${Segment.paramSegment(row.namestyle)(NameStyle.setter)}::bool, "title" = ${Segment.paramSegment(row.title)(Setter.optionParamSetter(Setter.stringSetter))}, "firstname" = ${Segment.paramSegment(row.firstname)(/* user-picked */ FirstName.setter)}::varchar, - "middlename" = ${Segment.paramSegment(row.middlename)(Setter.optionParamSetter(Name.setter))}::varchar, - "lastname" = ${Segment.paramSegment(row.lastname)(Name.setter)}::varchar, + "middlename" = ${Segment.paramSegment(row.middlename)(Setter.optionParamSetter(MiddleName.setter))}::varchar, + "lastname" = ${Segment.paramSegment(row.lastname)(/* user-picked */ LastName.setter)}::varchar, "suffix" = ${Segment.paramSegment(row.suffix)(Setter.optionParamSetter(Setter.stringSetter))}, "emailpromotion" = ${Segment.paramSegment(row.emailpromotion)(Setter.intSetter)}::int4, "additionalcontactinfo" = ${Segment.paramSegment(row.additionalcontactinfo)(Setter.optionParamSetter(TypoXml.setter))}::xml, @@ -137,8 +138,8 @@ class PersonRepoImpl extends PersonRepo { ${Segment.paramSegment(unsaved.namestyle)(NameStyle.setter)}::bool, ${Segment.paramSegment(unsaved.title)(Setter.optionParamSetter(Setter.stringSetter))}, ${Segment.paramSegment(unsaved.firstname)(/* user-picked */ FirstName.setter)}::varchar, - ${Segment.paramSegment(unsaved.middlename)(Setter.optionParamSetter(Name.setter))}::varchar, - ${Segment.paramSegment(unsaved.lastname)(Name.setter)}::varchar, + ${Segment.paramSegment(unsaved.middlename)(Setter.optionParamSetter(MiddleName.setter))}::varchar, + ${Segment.paramSegment(unsaved.lastname)(/* user-picked */ LastName.setter)}::varchar, ${Segment.paramSegment(unsaved.suffix)(Setter.optionParamSetter(Setter.stringSetter))}, ${Segment.paramSegment(unsaved.emailpromotion)(Setter.intSetter)}::int4, ${Segment.paramSegment(unsaved.additionalcontactinfo)(Setter.optionParamSetter(TypoXml.setter))}::xml, diff --git a/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/person/person/PersonRow.scala b/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/person/person/PersonRow.scala index fdcd2c3e74..e6f3a906a0 100644 --- a/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/person/person/PersonRow.scala +++ b/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/person/person/PersonRow.scala @@ -11,9 +11,10 @@ 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 adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import java.sql.ResultSet import zio.jdbc.JdbcDecoder import zio.json.JsonDecoder @@ -43,9 +44,9 @@ case class PersonRow( /** First name of the person. */ firstname: /* user-picked */ FirstName, /** Middle name or middle initial of the person. */ - middlename: Option[Name], + middlename: Option[/* user-picked */ MiddleName], /** Last name of the person. */ - lastname: Name, + lastname: /* user-picked */ LastName, /** Surname suffix. For example, Sr. or Jr. */ suffix: Option[/* max 10 chars */ String], /** 0 = Contact does not wish to receive e-mail promotions, 1 = Contact does wish to receive e-mail promotions from AdventureWorks, 2 = Contact does wish to receive e-mail promotions from AdventureWorks and selected partners. @@ -99,8 +100,8 @@ object PersonRow { namestyle = NameStyle.jdbcDecoder.unsafeDecode(columIndex + 2, rs)._2, title = JdbcDecoder.optionDecoder(JdbcDecoder.stringDecoder).unsafeDecode(columIndex + 3, rs)._2, firstname = FirstName.jdbcDecoder.unsafeDecode(columIndex + 4, rs)._2, - middlename = JdbcDecoder.optionDecoder(Name.jdbcDecoder).unsafeDecode(columIndex + 5, rs)._2, - lastname = Name.jdbcDecoder.unsafeDecode(columIndex + 6, rs)._2, + middlename = JdbcDecoder.optionDecoder(MiddleName.jdbcDecoder).unsafeDecode(columIndex + 5, rs)._2, + lastname = LastName.jdbcDecoder.unsafeDecode(columIndex + 6, rs)._2, suffix = JdbcDecoder.optionDecoder(JdbcDecoder.stringDecoder).unsafeDecode(columIndex + 7, rs)._2, emailpromotion = JdbcDecoder.intDecoder.unsafeDecode(columIndex + 8, rs)._2, additionalcontactinfo = JdbcDecoder.optionDecoder(TypoXml.jdbcDecoder).unsafeDecode(columIndex + 9, rs)._2, @@ -118,8 +119,8 @@ object PersonRow { val namestyle = jsonObj.get("namestyle").toRight("Missing field 'namestyle'").flatMap(_.as(NameStyle.jsonDecoder)) val title = jsonObj.get("title").fold[Either[String, Option[String]]](Right(None))(_.as(JsonDecoder.option(JsonDecoder.string))) val firstname = jsonObj.get("firstname").toRight("Missing field 'firstname'").flatMap(_.as(FirstName.jsonDecoder)) - val middlename = jsonObj.get("middlename").fold[Either[String, Option[Name]]](Right(None))(_.as(JsonDecoder.option(Name.jsonDecoder))) - val lastname = jsonObj.get("lastname").toRight("Missing field 'lastname'").flatMap(_.as(Name.jsonDecoder)) + val middlename = jsonObj.get("middlename").fold[Either[String, Option[MiddleName]]](Right(None))(_.as(JsonDecoder.option(MiddleName.jsonDecoder))) + val lastname = jsonObj.get("lastname").toRight("Missing field 'lastname'").flatMap(_.as(LastName.jsonDecoder)) val suffix = jsonObj.get("suffix").fold[Either[String, Option[String]]](Right(None))(_.as(JsonDecoder.option(JsonDecoder.string))) val emailpromotion = jsonObj.get("emailpromotion").toRight("Missing field 'emailpromotion'").flatMap(_.as(JsonDecoder.int)) val additionalcontactinfo = jsonObj.get("additionalcontactinfo").fold[Either[String, Option[TypoXml]]](Right(None))(_.as(JsonDecoder.option(TypoXml.jsonDecoder))) @@ -152,10 +153,10 @@ object PersonRow { FirstName.jsonEncoder.unsafeEncode(a.firstname, indent, out) out.write(",") out.write(""""middlename":""") - JsonEncoder.option(Name.jsonEncoder).unsafeEncode(a.middlename, indent, out) + JsonEncoder.option(MiddleName.jsonEncoder).unsafeEncode(a.middlename, indent, out) out.write(",") out.write(""""lastname":""") - Name.jsonEncoder.unsafeEncode(a.lastname, indent, out) + LastName.jsonEncoder.unsafeEncode(a.lastname, indent, out) out.write(",") out.write(""""suffix":""") JsonEncoder.option(JsonEncoder.string).unsafeEncode(a.suffix, indent, out) @@ -191,9 +192,9 @@ object PersonRow { sb.append(Text.DELIMETER) /* user-picked */ FirstName.pgText.unsafeEncode(row.firstname, sb) sb.append(Text.DELIMETER) - Text.option(Name.pgText).unsafeEncode(row.middlename, sb) + Text.option(MiddleName.pgText).unsafeEncode(row.middlename, sb) sb.append(Text.DELIMETER) - Name.pgText.unsafeEncode(row.lastname, sb) + /* user-picked */ LastName.pgText.unsafeEncode(row.lastname, sb) sb.append(Text.DELIMETER) Text.option(Text.stringInstance).unsafeEncode(row.suffix, sb) sb.append(Text.DELIMETER) diff --git a/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/person/person/PersonRowUnsaved.scala b/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/person/person/PersonRowUnsaved.scala index a2ffae06f4..cf03038f25 100644 --- a/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/person/person/PersonRowUnsaved.scala +++ b/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/person/person/PersonRowUnsaved.scala @@ -12,9 +12,10 @@ 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 adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import zio.json.JsonDecoder import zio.json.JsonEncoder import zio.json.ast.Json @@ -35,9 +36,9 @@ case class PersonRowUnsaved( /** First name of the person. */ firstname: /* user-picked */ FirstName, /** Middle name or middle initial of the person. */ - middlename: Option[Name] = None, + middlename: Option[/* user-picked */ MiddleName] = None, /** Last name of the person. */ - lastname: Name, + lastname: /* user-picked */ LastName, /** Surname suffix. For example, Sr. or Jr. */ suffix: Option[/* max 10 chars */ String] = None, /** Additional contact information about the person stored in xml format. */ @@ -89,8 +90,8 @@ object PersonRowUnsaved { val persontype = jsonObj.get("persontype").toRight("Missing field 'persontype'").flatMap(_.as(JsonDecoder.string)) val title = jsonObj.get("title").fold[Either[String, Option[String]]](Right(None))(_.as(JsonDecoder.option(JsonDecoder.string))) val firstname = jsonObj.get("firstname").toRight("Missing field 'firstname'").flatMap(_.as(FirstName.jsonDecoder)) - val middlename = jsonObj.get("middlename").fold[Either[String, Option[Name]]](Right(None))(_.as(JsonDecoder.option(Name.jsonDecoder))) - val lastname = jsonObj.get("lastname").toRight("Missing field 'lastname'").flatMap(_.as(Name.jsonDecoder)) + val middlename = jsonObj.get("middlename").fold[Either[String, Option[MiddleName]]](Right(None))(_.as(JsonDecoder.option(MiddleName.jsonDecoder))) + val lastname = jsonObj.get("lastname").toRight("Missing field 'lastname'").flatMap(_.as(LastName.jsonDecoder)) val suffix = jsonObj.get("suffix").fold[Either[String, Option[String]]](Right(None))(_.as(JsonDecoder.option(JsonDecoder.string))) val additionalcontactinfo = jsonObj.get("additionalcontactinfo").fold[Either[String, Option[TypoXml]]](Right(None))(_.as(JsonDecoder.option(TypoXml.jsonDecoder))) val demographics = jsonObj.get("demographics").fold[Either[String, Option[TypoXml]]](Right(None))(_.as(JsonDecoder.option(TypoXml.jsonDecoder))) @@ -121,10 +122,10 @@ object PersonRowUnsaved { FirstName.jsonEncoder.unsafeEncode(a.firstname, indent, out) out.write(",") out.write(""""middlename":""") - JsonEncoder.option(Name.jsonEncoder).unsafeEncode(a.middlename, indent, out) + JsonEncoder.option(MiddleName.jsonEncoder).unsafeEncode(a.middlename, indent, out) out.write(",") out.write(""""lastname":""") - Name.jsonEncoder.unsafeEncode(a.lastname, indent, out) + LastName.jsonEncoder.unsafeEncode(a.lastname, indent, out) out.write(",") out.write(""""suffix":""") JsonEncoder.option(JsonEncoder.string).unsafeEncode(a.suffix, indent, out) @@ -161,9 +162,9 @@ object PersonRowUnsaved { sb.append(Text.DELIMETER) /* user-picked */ FirstName.pgText.unsafeEncode(row.firstname, sb) sb.append(Text.DELIMETER) - Text.option(Name.pgText).unsafeEncode(row.middlename, sb) + Text.option(MiddleName.pgText).unsafeEncode(row.middlename, sb) sb.append(Text.DELIMETER) - Name.pgText.unsafeEncode(row.lastname, sb) + /* user-picked */ LastName.pgText.unsafeEncode(row.lastname, sb) sb.append(Text.DELIMETER) Text.option(Text.stringInstance).unsafeEncode(row.suffix, sb) sb.append(Text.DELIMETER) diff --git a/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/person_detail/PersonDetailSqlRow.scala b/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/person_detail/PersonDetailSqlRow.scala index 4ddbb4fc98..77eb873fff 100644 --- a/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/person_detail/PersonDetailSqlRow.scala +++ b/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/person_detail/PersonDetailSqlRow.scala @@ -7,8 +7,9 @@ package adventureworks.person_detail import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Name import adventureworks.userdefined.FirstName +import adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import java.sql.ResultSet import zio.jdbc.JdbcDecoder import zio.json.JsonDecoder @@ -25,9 +26,9 @@ case class PersonDetailSqlRow( /** Points to [[adventureworks.person.person.PersonRow.firstname]] */ firstname: /* user-picked */ FirstName, /** Points to [[adventureworks.person.person.PersonRow.middlename]] */ - middlename: Option[Name], + middlename: Option[/* user-picked */ MiddleName], /** Points to [[adventureworks.person.person.PersonRow.lastname]] */ - lastname: Name, + lastname: /* user-picked */ LastName, /** Points to [[adventureworks.humanresources.employee.EmployeeRow.jobtitle]] */ jobtitle: String, /** Points to [[adventureworks.person.address.AddressRow.addressline1]] */ @@ -49,8 +50,8 @@ object PersonDetailSqlRow { businessentityid = BusinessentityId.jdbcDecoder.unsafeDecode(columIndex + 0, rs)._2, title = JdbcDecoder.optionDecoder(JdbcDecoder.stringDecoder).unsafeDecode(columIndex + 1, rs)._2, firstname = FirstName.jdbcDecoder.unsafeDecode(columIndex + 2, rs)._2, - middlename = JdbcDecoder.optionDecoder(Name.jdbcDecoder).unsafeDecode(columIndex + 3, rs)._2, - lastname = Name.jdbcDecoder.unsafeDecode(columIndex + 4, rs)._2, + middlename = JdbcDecoder.optionDecoder(MiddleName.jdbcDecoder).unsafeDecode(columIndex + 3, rs)._2, + lastname = LastName.jdbcDecoder.unsafeDecode(columIndex + 4, rs)._2, jobtitle = JdbcDecoder.stringDecoder.unsafeDecode(columIndex + 5, rs)._2, addressline1 = JdbcDecoder.optionDecoder(JdbcDecoder.stringDecoder).unsafeDecode(columIndex + 6, rs)._2, city = JdbcDecoder.optionDecoder(JdbcDecoder.stringDecoder).unsafeDecode(columIndex + 7, rs)._2, @@ -65,8 +66,8 @@ object PersonDetailSqlRow { val businessentityid = jsonObj.get("businessentityid").toRight("Missing field 'businessentityid'").flatMap(_.as(BusinessentityId.jsonDecoder)) val title = jsonObj.get("title").fold[Either[String, Option[String]]](Right(None))(_.as(JsonDecoder.option(JsonDecoder.string))) val firstname = jsonObj.get("firstname").toRight("Missing field 'firstname'").flatMap(_.as(FirstName.jsonDecoder)) - val middlename = jsonObj.get("middlename").fold[Either[String, Option[Name]]](Right(None))(_.as(JsonDecoder.option(Name.jsonDecoder))) - val lastname = jsonObj.get("lastname").toRight("Missing field 'lastname'").flatMap(_.as(Name.jsonDecoder)) + val middlename = jsonObj.get("middlename").fold[Either[String, Option[MiddleName]]](Right(None))(_.as(JsonDecoder.option(MiddleName.jsonDecoder))) + val lastname = jsonObj.get("lastname").toRight("Missing field 'lastname'").flatMap(_.as(LastName.jsonDecoder)) val jobtitle = jsonObj.get("jobtitle").toRight("Missing field 'jobtitle'").flatMap(_.as(JsonDecoder.string)) val addressline1 = jsonObj.get("addressline1").fold[Either[String, Option[String]]](Right(None))(_.as(JsonDecoder.option(JsonDecoder.string))) val city = jsonObj.get("city").fold[Either[String, Option[String]]](Right(None))(_.as(JsonDecoder.option(JsonDecoder.string))) @@ -92,10 +93,10 @@ object PersonDetailSqlRow { FirstName.jsonEncoder.unsafeEncode(a.firstname, indent, out) out.write(",") out.write(""""middlename":""") - JsonEncoder.option(Name.jsonEncoder).unsafeEncode(a.middlename, indent, out) + JsonEncoder.option(MiddleName.jsonEncoder).unsafeEncode(a.middlename, indent, out) out.write(",") out.write(""""lastname":""") - Name.jsonEncoder.unsafeEncode(a.lastname, indent, out) + LastName.jsonEncoder.unsafeEncode(a.lastname, indent, out) out.write(",") out.write(""""jobtitle":""") JsonEncoder.string.unsafeEncode(a.jobtitle, indent, out) diff --git a/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/person_dynamic/PersonDynamicSqlRow.scala b/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/person_dynamic/PersonDynamicSqlRow.scala index ce4eeb1a6d..9933d9bfe5 100644 --- a/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/person_dynamic/PersonDynamicSqlRow.scala +++ b/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/person_dynamic/PersonDynamicSqlRow.scala @@ -5,8 +5,9 @@ */ package adventureworks.person_dynamic -import adventureworks.public.Name import adventureworks.userdefined.FirstName +import adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import java.sql.ResultSet import zio.jdbc.JdbcDecoder import zio.json.JsonDecoder @@ -21,9 +22,9 @@ case class PersonDynamicSqlRow( /** Points to [[adventureworks.person.person.PersonRow.firstname]] */ firstname: /* user-picked */ FirstName, /** Points to [[adventureworks.person.person.PersonRow.middlename]] */ - middlename: Option[Name], + middlename: Option[/* user-picked */ MiddleName], /** Points to [[adventureworks.person.person.PersonRow.lastname]] */ - lastname: Name + lastname: /* user-picked */ LastName ) object PersonDynamicSqlRow { @@ -34,8 +35,8 @@ object PersonDynamicSqlRow { PersonDynamicSqlRow( title = JdbcDecoder.optionDecoder(JdbcDecoder.stringDecoder).unsafeDecode(columIndex + 0, rs)._2, firstname = FirstName.jdbcDecoder.unsafeDecode(columIndex + 1, rs)._2, - middlename = JdbcDecoder.optionDecoder(Name.jdbcDecoder).unsafeDecode(columIndex + 2, rs)._2, - lastname = Name.jdbcDecoder.unsafeDecode(columIndex + 3, rs)._2 + middlename = JdbcDecoder.optionDecoder(MiddleName.jdbcDecoder).unsafeDecode(columIndex + 2, rs)._2, + lastname = LastName.jdbcDecoder.unsafeDecode(columIndex + 3, rs)._2 ) } } @@ -44,8 +45,8 @@ object PersonDynamicSqlRow { JsonDecoder[Json.Obj].mapOrFail { jsonObj => val title = jsonObj.get("title").fold[Either[String, Option[String]]](Right(None))(_.as(JsonDecoder.option(JsonDecoder.string))) val firstname = jsonObj.get("firstname").toRight("Missing field 'firstname'").flatMap(_.as(FirstName.jsonDecoder)) - val middlename = jsonObj.get("middlename").fold[Either[String, Option[Name]]](Right(None))(_.as(JsonDecoder.option(Name.jsonDecoder))) - val lastname = jsonObj.get("lastname").toRight("Missing field 'lastname'").flatMap(_.as(Name.jsonDecoder)) + val middlename = jsonObj.get("middlename").fold[Either[String, Option[MiddleName]]](Right(None))(_.as(JsonDecoder.option(MiddleName.jsonDecoder))) + val lastname = jsonObj.get("lastname").toRight("Missing field 'lastname'").flatMap(_.as(LastName.jsonDecoder)) if (title.isRight && firstname.isRight && middlename.isRight && lastname.isRight) Right(PersonDynamicSqlRow(title = title.toOption.get, firstname = firstname.toOption.get, middlename = middlename.toOption.get, lastname = lastname.toOption.get)) else Left(List[Either[String, Any]](title, firstname, middlename, lastname).flatMap(_.left.toOption).mkString(", ")) @@ -63,10 +64,10 @@ object PersonDynamicSqlRow { FirstName.jsonEncoder.unsafeEncode(a.firstname, indent, out) out.write(",") out.write(""""middlename":""") - JsonEncoder.option(Name.jsonEncoder).unsafeEncode(a.middlename, indent, out) + JsonEncoder.option(MiddleName.jsonEncoder).unsafeEncode(a.middlename, indent, out) out.write(",") out.write(""""lastname":""") - Name.jsonEncoder.unsafeEncode(a.lastname, indent, out) + LastName.jsonEncoder.unsafeEncode(a.lastname, indent, out) out.write("}") } } diff --git a/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/userdefined/ActiveFlag.scala b/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/userdefined/ActiveFlag.scala new file mode 100644 index 0000000000..ea5537f304 --- /dev/null +++ b/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/userdefined/ActiveFlag.scala @@ -0,0 +1,50 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined + +import adventureworks.Text +import adventureworks.public.Flag +import typr.dsl.Bijection +import typr.dsl.PGType +import zio.jdbc.JdbcDecoder +import zio.jdbc.JdbcEncoder +import zio.jdbc.SqlFragment.Setter +import zio.json.JsonDecoder +import zio.json.JsonEncoder + +/** Shared type `ActiveFlag` + * Generated from TypeDefinitions matching + */ +case class ActiveFlag(value: Flag) extends scala.AnyVal + +object ActiveFlag { + implicit lazy val arrayJdbcDecoder: JdbcDecoder[Array[ActiveFlag]] = Flag.arrayJdbcDecoder.map(_.map(ActiveFlag.apply)) + + implicit lazy val arrayJdbcEncoder: JdbcEncoder[Array[ActiveFlag]] = Flag.arrayJdbcEncoder.contramap(_.map(_.value)) + + implicit lazy val arraySetter: Setter[Array[ActiveFlag]] = Flag.arraySetter.contramap(_.map(_.value)) + + implicit lazy val bijection: Bijection[ActiveFlag, Flag] = Bijection.apply[ActiveFlag, Flag](_.value)(ActiveFlag.apply) + + implicit lazy val jdbcDecoder: JdbcDecoder[ActiveFlag] = Flag.jdbcDecoder.map(ActiveFlag.apply) + + implicit lazy val jdbcEncoder: JdbcEncoder[ActiveFlag] = Flag.jdbcEncoder.contramap(_.value) + + implicit lazy val jsonDecoder: JsonDecoder[ActiveFlag] = Flag.jsonDecoder.map(ActiveFlag.apply) + + implicit lazy val jsonEncoder: JsonEncoder[ActiveFlag] = Flag.jsonEncoder.contramap(_.value) + + implicit lazy val pgText: Text[ActiveFlag] = { + new Text[ActiveFlag] { + override def unsafeEncode(v: ActiveFlag, sb: StringBuilder): Unit = Flag.pgText.unsafeEncode(v.value, sb) + override def unsafeArrayEncode(v: ActiveFlag, sb: StringBuilder): Unit = Flag.pgText.unsafeArrayEncode(v.value, sb) + } + } + + implicit lazy val pgType: PGType[ActiveFlag] = Flag.pgType.as + + implicit lazy val setter: Setter[ActiveFlag] = Flag.setter.contramap(_.value) +} \ No newline at end of file diff --git a/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/userdefined/CurrentFlag.scala b/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/userdefined/CurrentFlag.scala new file mode 100644 index 0000000000..7b074b5471 --- /dev/null +++ b/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/userdefined/CurrentFlag.scala @@ -0,0 +1,50 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined + +import adventureworks.Text +import adventureworks.public.Flag +import typr.dsl.Bijection +import typr.dsl.PGType +import zio.jdbc.JdbcDecoder +import zio.jdbc.JdbcEncoder +import zio.jdbc.SqlFragment.Setter +import zio.json.JsonDecoder +import zio.json.JsonEncoder + +/** Shared type `CurrentFlag` + * Generated from TypeDefinitions matching + */ +case class CurrentFlag(value: Flag) extends scala.AnyVal + +object CurrentFlag { + implicit lazy val arrayJdbcDecoder: JdbcDecoder[Array[CurrentFlag]] = Flag.arrayJdbcDecoder.map(_.map(CurrentFlag.apply)) + + implicit lazy val arrayJdbcEncoder: JdbcEncoder[Array[CurrentFlag]] = Flag.arrayJdbcEncoder.contramap(_.map(_.value)) + + implicit lazy val arraySetter: Setter[Array[CurrentFlag]] = Flag.arraySetter.contramap(_.map(_.value)) + + implicit lazy val bijection: Bijection[CurrentFlag, Flag] = Bijection.apply[CurrentFlag, Flag](_.value)(CurrentFlag.apply) + + implicit lazy val jdbcDecoder: JdbcDecoder[CurrentFlag] = Flag.jdbcDecoder.map(CurrentFlag.apply) + + implicit lazy val jdbcEncoder: JdbcEncoder[CurrentFlag] = Flag.jdbcEncoder.contramap(_.value) + + implicit lazy val jsonDecoder: JsonDecoder[CurrentFlag] = Flag.jsonDecoder.map(CurrentFlag.apply) + + implicit lazy val jsonEncoder: JsonEncoder[CurrentFlag] = Flag.jsonEncoder.contramap(_.value) + + implicit lazy val pgText: Text[CurrentFlag] = { + new Text[CurrentFlag] { + override def unsafeEncode(v: CurrentFlag, sb: StringBuilder): Unit = Flag.pgText.unsafeEncode(v.value, sb) + override def unsafeArrayEncode(v: CurrentFlag, sb: StringBuilder): Unit = Flag.pgText.unsafeArrayEncode(v.value, sb) + } + } + + implicit lazy val pgType: PGType[CurrentFlag] = Flag.pgType.as + + implicit lazy val setter: Setter[CurrentFlag] = Flag.setter.contramap(_.value) +} \ No newline at end of file diff --git a/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/userdefined/FirstName.scala b/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/userdefined/FirstName.scala new file mode 100644 index 0000000000..dc7dba9f26 --- /dev/null +++ b/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/userdefined/FirstName.scala @@ -0,0 +1,50 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined + +import adventureworks.Text +import adventureworks.public.Name +import typr.dsl.Bijection +import typr.dsl.PGType +import zio.jdbc.JdbcDecoder +import zio.jdbc.JdbcEncoder +import zio.jdbc.SqlFragment.Setter +import zio.json.JsonDecoder +import zio.json.JsonEncoder + +/** Shared type `FirstName` + * Generated from TypeDefinitions matching + */ +case class FirstName(value: Name) extends scala.AnyVal + +object FirstName { + implicit lazy val arrayJdbcDecoder: JdbcDecoder[Array[FirstName]] = Name.arrayJdbcDecoder.map(_.map(FirstName.apply)) + + implicit lazy val arrayJdbcEncoder: JdbcEncoder[Array[FirstName]] = Name.arrayJdbcEncoder.contramap(_.map(_.value)) + + implicit lazy val arraySetter: Setter[Array[FirstName]] = Name.arraySetter.contramap(_.map(_.value)) + + implicit lazy val bijection: Bijection[FirstName, Name] = Bijection.apply[FirstName, Name](_.value)(FirstName.apply) + + implicit lazy val jdbcDecoder: JdbcDecoder[FirstName] = Name.jdbcDecoder.map(FirstName.apply) + + implicit lazy val jdbcEncoder: JdbcEncoder[FirstName] = Name.jdbcEncoder.contramap(_.value) + + implicit lazy val jsonDecoder: JsonDecoder[FirstName] = Name.jsonDecoder.map(FirstName.apply) + + implicit lazy val jsonEncoder: JsonEncoder[FirstName] = Name.jsonEncoder.contramap(_.value) + + implicit lazy val pgText: Text[FirstName] = { + new Text[FirstName] { + override def unsafeEncode(v: FirstName, sb: StringBuilder): Unit = Name.pgText.unsafeEncode(v.value, sb) + override def unsafeArrayEncode(v: FirstName, sb: StringBuilder): Unit = Name.pgText.unsafeArrayEncode(v.value, sb) + } + } + + implicit lazy val pgType: PGType[FirstName] = Name.pgType.as + + implicit lazy val setter: Setter[FirstName] = Name.setter.contramap(_.value) +} \ No newline at end of file diff --git a/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/userdefined/LastName.scala b/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/userdefined/LastName.scala new file mode 100644 index 0000000000..140251d006 --- /dev/null +++ b/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/userdefined/LastName.scala @@ -0,0 +1,50 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined + +import adventureworks.Text +import adventureworks.public.Name +import typr.dsl.Bijection +import typr.dsl.PGType +import zio.jdbc.JdbcDecoder +import zio.jdbc.JdbcEncoder +import zio.jdbc.SqlFragment.Setter +import zio.json.JsonDecoder +import zio.json.JsonEncoder + +/** Shared type `LastName` + * Generated from TypeDefinitions matching + */ +case class LastName(value: Name) extends scala.AnyVal + +object LastName { + implicit lazy val arrayJdbcDecoder: JdbcDecoder[Array[LastName]] = Name.arrayJdbcDecoder.map(_.map(LastName.apply)) + + implicit lazy val arrayJdbcEncoder: JdbcEncoder[Array[LastName]] = Name.arrayJdbcEncoder.contramap(_.map(_.value)) + + implicit lazy val arraySetter: Setter[Array[LastName]] = Name.arraySetter.contramap(_.map(_.value)) + + implicit lazy val bijection: Bijection[LastName, Name] = Bijection.apply[LastName, Name](_.value)(LastName.apply) + + implicit lazy val jdbcDecoder: JdbcDecoder[LastName] = Name.jdbcDecoder.map(LastName.apply) + + implicit lazy val jdbcEncoder: JdbcEncoder[LastName] = Name.jdbcEncoder.contramap(_.value) + + implicit lazy val jsonDecoder: JsonDecoder[LastName] = Name.jsonDecoder.map(LastName.apply) + + implicit lazy val jsonEncoder: JsonEncoder[LastName] = Name.jsonEncoder.contramap(_.value) + + implicit lazy val pgText: Text[LastName] = { + new Text[LastName] { + override def unsafeEncode(v: LastName, sb: StringBuilder): Unit = Name.pgText.unsafeEncode(v.value, sb) + override def unsafeArrayEncode(v: LastName, sb: StringBuilder): Unit = Name.pgText.unsafeArrayEncode(v.value, sb) + } + } + + implicit lazy val pgType: PGType[LastName] = Name.pgType.as + + implicit lazy val setter: Setter[LastName] = Name.setter.contramap(_.value) +} \ No newline at end of file diff --git a/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/userdefined/MiddleName.scala b/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/userdefined/MiddleName.scala new file mode 100644 index 0000000000..69a67df1a4 --- /dev/null +++ b/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/userdefined/MiddleName.scala @@ -0,0 +1,50 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined + +import adventureworks.Text +import adventureworks.public.Name +import typr.dsl.Bijection +import typr.dsl.PGType +import zio.jdbc.JdbcDecoder +import zio.jdbc.JdbcEncoder +import zio.jdbc.SqlFragment.Setter +import zio.json.JsonDecoder +import zio.json.JsonEncoder + +/** Shared type `MiddleName` + * Generated from TypeDefinitions matching + */ +case class MiddleName(value: Name) extends scala.AnyVal + +object MiddleName { + implicit lazy val arrayJdbcDecoder: JdbcDecoder[Array[MiddleName]] = Name.arrayJdbcDecoder.map(_.map(MiddleName.apply)) + + implicit lazy val arrayJdbcEncoder: JdbcEncoder[Array[MiddleName]] = Name.arrayJdbcEncoder.contramap(_.map(_.value)) + + implicit lazy val arraySetter: Setter[Array[MiddleName]] = Name.arraySetter.contramap(_.map(_.value)) + + implicit lazy val bijection: Bijection[MiddleName, Name] = Bijection.apply[MiddleName, Name](_.value)(MiddleName.apply) + + implicit lazy val jdbcDecoder: JdbcDecoder[MiddleName] = Name.jdbcDecoder.map(MiddleName.apply) + + implicit lazy val jdbcEncoder: JdbcEncoder[MiddleName] = Name.jdbcEncoder.contramap(_.value) + + implicit lazy val jsonDecoder: JsonDecoder[MiddleName] = Name.jsonDecoder.map(MiddleName.apply) + + implicit lazy val jsonEncoder: JsonEncoder[MiddleName] = Name.jsonEncoder.contramap(_.value) + + implicit lazy val pgText: Text[MiddleName] = { + new Text[MiddleName] { + override def unsafeEncode(v: MiddleName, sb: StringBuilder): Unit = Name.pgText.unsafeEncode(v.value, sb) + override def unsafeArrayEncode(v: MiddleName, sb: StringBuilder): Unit = Name.pgText.unsafeArrayEncode(v.value, sb) + } + } + + implicit lazy val pgType: PGType[MiddleName] = Name.pgType.as + + implicit lazy val setter: Setter[MiddleName] = Name.setter.contramap(_.value) +} \ No newline at end of file diff --git a/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/userdefined/OnlineOrderFlag.scala b/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/userdefined/OnlineOrderFlag.scala new file mode 100644 index 0000000000..de4da67798 --- /dev/null +++ b/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/userdefined/OnlineOrderFlag.scala @@ -0,0 +1,50 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined + +import adventureworks.Text +import adventureworks.public.Flag +import typr.dsl.Bijection +import typr.dsl.PGType +import zio.jdbc.JdbcDecoder +import zio.jdbc.JdbcEncoder +import zio.jdbc.SqlFragment.Setter +import zio.json.JsonDecoder +import zio.json.JsonEncoder + +/** Shared type `OnlineOrderFlag` + * Generated from TypeDefinitions matching + */ +case class OnlineOrderFlag(value: Flag) extends scala.AnyVal + +object OnlineOrderFlag { + implicit lazy val arrayJdbcDecoder: JdbcDecoder[Array[OnlineOrderFlag]] = Flag.arrayJdbcDecoder.map(_.map(OnlineOrderFlag.apply)) + + implicit lazy val arrayJdbcEncoder: JdbcEncoder[Array[OnlineOrderFlag]] = Flag.arrayJdbcEncoder.contramap(_.map(_.value)) + + implicit lazy val arraySetter: Setter[Array[OnlineOrderFlag]] = Flag.arraySetter.contramap(_.map(_.value)) + + implicit lazy val bijection: Bijection[OnlineOrderFlag, Flag] = Bijection.apply[OnlineOrderFlag, Flag](_.value)(OnlineOrderFlag.apply) + + implicit lazy val jdbcDecoder: JdbcDecoder[OnlineOrderFlag] = Flag.jdbcDecoder.map(OnlineOrderFlag.apply) + + implicit lazy val jdbcEncoder: JdbcEncoder[OnlineOrderFlag] = Flag.jdbcEncoder.contramap(_.value) + + implicit lazy val jsonDecoder: JsonDecoder[OnlineOrderFlag] = Flag.jsonDecoder.map(OnlineOrderFlag.apply) + + implicit lazy val jsonEncoder: JsonEncoder[OnlineOrderFlag] = Flag.jsonEncoder.contramap(_.value) + + implicit lazy val pgText: Text[OnlineOrderFlag] = { + new Text[OnlineOrderFlag] { + override def unsafeEncode(v: OnlineOrderFlag, sb: StringBuilder): Unit = Flag.pgText.unsafeEncode(v.value, sb) + override def unsafeArrayEncode(v: OnlineOrderFlag, sb: StringBuilder): Unit = Flag.pgText.unsafeArrayEncode(v.value, sb) + } + } + + implicit lazy val pgType: PGType[OnlineOrderFlag] = Flag.pgType.as + + implicit lazy val setter: Setter[OnlineOrderFlag] = Flag.setter.contramap(_.value) +} \ No newline at end of file diff --git a/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/userdefined/SalariedFlag.scala b/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/userdefined/SalariedFlag.scala new file mode 100644 index 0000000000..e386f13838 --- /dev/null +++ b/testers/pg/scala/zio-jdbc/generated-and-checked-in-2.13/adventureworks/userdefined/SalariedFlag.scala @@ -0,0 +1,50 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined + +import adventureworks.Text +import adventureworks.public.Flag +import typr.dsl.Bijection +import typr.dsl.PGType +import zio.jdbc.JdbcDecoder +import zio.jdbc.JdbcEncoder +import zio.jdbc.SqlFragment.Setter +import zio.json.JsonDecoder +import zio.json.JsonEncoder + +/** Shared type `SalariedFlag` + * Generated from TypeDefinitions matching + */ +case class SalariedFlag(value: Flag) extends scala.AnyVal + +object SalariedFlag { + implicit lazy val arrayJdbcDecoder: JdbcDecoder[Array[SalariedFlag]] = Flag.arrayJdbcDecoder.map(_.map(SalariedFlag.apply)) + + implicit lazy val arrayJdbcEncoder: JdbcEncoder[Array[SalariedFlag]] = Flag.arrayJdbcEncoder.contramap(_.map(_.value)) + + implicit lazy val arraySetter: Setter[Array[SalariedFlag]] = Flag.arraySetter.contramap(_.map(_.value)) + + implicit lazy val bijection: Bijection[SalariedFlag, Flag] = Bijection.apply[SalariedFlag, Flag](_.value)(SalariedFlag.apply) + + implicit lazy val jdbcDecoder: JdbcDecoder[SalariedFlag] = Flag.jdbcDecoder.map(SalariedFlag.apply) + + implicit lazy val jdbcEncoder: JdbcEncoder[SalariedFlag] = Flag.jdbcEncoder.contramap(_.value) + + implicit lazy val jsonDecoder: JsonDecoder[SalariedFlag] = Flag.jsonDecoder.map(SalariedFlag.apply) + + implicit lazy val jsonEncoder: JsonEncoder[SalariedFlag] = Flag.jsonEncoder.contramap(_.value) + + implicit lazy val pgText: Text[SalariedFlag] = { + new Text[SalariedFlag] { + override def unsafeEncode(v: SalariedFlag, sb: StringBuilder): Unit = Flag.pgText.unsafeEncode(v.value, sb) + override def unsafeArrayEncode(v: SalariedFlag, sb: StringBuilder): Unit = Flag.pgText.unsafeArrayEncode(v.value, sb) + } + } + + implicit lazy val pgType: PGType[SalariedFlag] = Flag.pgType.as + + implicit lazy val setter: Setter[SalariedFlag] = Flag.setter.contramap(_.value) +} \ No newline at end of file diff --git a/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/TestInsert.scala b/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/TestInsert.scala index 91a343a257..45d2176a3b 100644 --- a/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/TestInsert.scala +++ b/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/TestInsert.scala @@ -151,7 +151,11 @@ import adventureworks.sales.salesterritory.SalesterritoryId import adventureworks.sales.salesterritory.SalesterritoryRepoImpl import adventureworks.sales.salesterritory.SalesterritoryRow import adventureworks.sales.salesterritory.SalesterritoryRowUnsaved +import adventureworks.userdefined.CurrentFlag import adventureworks.userdefined.FirstName +import adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName +import adventureworks.userdefined.SalariedFlag import java.time.Instant import java.time.LocalDate import java.time.LocalDateTime @@ -182,10 +186,10 @@ case class TestInsert( nationalidnumber: String = random.alphanumeric.take(15).mkString, loginid: String = random.alphanumeric.take(20).mkString, jobtitle: String = random.alphanumeric.take(20).mkString, - salariedflag: Defaulted[Flag] = new UseDefault(), + salariedflag: Defaulted[/* user-picked */ SalariedFlag] = new UseDefault(), vacationhours: Defaulted[TypoShort] = new UseDefault(), sickleavehours: Defaulted[TypoShort] = new UseDefault(), - currentflag: Defaulted[Flag] = new UseDefault(), + currentflag: Defaulted[/* user-picked */ CurrentFlag] = new UseDefault(), rowguid: Defaulted[TypoUUID] = new UseDefault(), modifieddate: Defaulted[TypoLocalDateTime] = new UseDefault(), organizationnode: Defaulted[Option[String]] = new UseDefault() @@ -266,10 +270,10 @@ case class TestInsert( def personPerson( businessentityid: BusinessentityId, persontype: String, - firstname: /* user-picked */ FirstName, title: Option[/* max 8 chars */ String] = (if (random.nextBoolean()) None else Some(random.alphanumeric.take(8).mkString)), - middlename: Option[Name] = (if (random.nextBoolean()) None else Some(domainInsert.publicName(random))), - lastname: Name = domainInsert.publicName(random), + firstname: /* user-picked */ FirstName = new FirstName(domainInsert.publicName(random)), + middlename: Option[/* user-picked */ MiddleName] = (if (random.nextBoolean()) None else Some(new MiddleName(domainInsert.publicName(random)))), + lastname: /* user-picked */ LastName = new LastName(domainInsert.publicName(random)), suffix: Option[/* max 10 chars */ String] = (if (random.nextBoolean()) None else Some(random.alphanumeric.take(10).mkString)), additionalcontactinfo: Option[TypoXml] = None, demographics: Option[TypoXml] = None, diff --git a/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/humanresources/employee/EmployeeFields.scala b/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/humanresources/employee/EmployeeFields.scala index 1c559fa0dd..c4ad1a140a 100644 --- a/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/humanresources/employee/EmployeeFields.scala +++ b/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/humanresources/employee/EmployeeFields.scala @@ -12,7 +12,8 @@ import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId import adventureworks.person.person.PersonFields import adventureworks.person.person.PersonRow -import adventureworks.public.Flag +import adventureworks.userdefined.CurrentFlag +import adventureworks.userdefined.SalariedFlag import typr.dsl.ForeignKey import typr.dsl.Path import typr.dsl.RelationStructure @@ -30,10 +31,10 @@ trait EmployeeFields { def maritalstatus: Field[String, EmployeeRow] def gender: Field[String, EmployeeRow] def hiredate: Field[TypoLocalDate, EmployeeRow] - def salariedflag: Field[Flag, EmployeeRow] + def salariedflag: Field[/* user-picked */ SalariedFlag, EmployeeRow] def vacationhours: Field[TypoShort, EmployeeRow] def sickleavehours: Field[TypoShort, EmployeeRow] - def currentflag: Field[Flag, EmployeeRow] + def currentflag: Field[/* user-picked */ CurrentFlag, EmployeeRow] def rowguid: Field[TypoUUID, EmployeeRow] def modifieddate: Field[TypoLocalDateTime, EmployeeRow] def organizationnode: OptField[String, EmployeeRow] @@ -58,10 +59,10 @@ object EmployeeFields { override def maritalstatus = Field[String, EmployeeRow](_path, "maritalstatus", None, Some("bpchar"), x => x.maritalstatus, (row, value) => row.copy(maritalstatus = value)) override def gender = Field[String, EmployeeRow](_path, "gender", None, Some("bpchar"), x => x.gender, (row, value) => row.copy(gender = value)) override def hiredate = Field[TypoLocalDate, EmployeeRow](_path, "hiredate", Some("text"), Some("date"), x => x.hiredate, (row, value) => row.copy(hiredate = value)) - override def salariedflag = Field[Flag, EmployeeRow](_path, "salariedflag", None, Some("bool"), x => x.salariedflag, (row, value) => row.copy(salariedflag = value)) + override def salariedflag = Field[/* user-picked */ SalariedFlag, EmployeeRow](_path, "salariedflag", None, Some("bool"), x => x.salariedflag, (row, value) => row.copy(salariedflag = value)) override def vacationhours = Field[TypoShort, EmployeeRow](_path, "vacationhours", None, Some("int2"), x => x.vacationhours, (row, value) => row.copy(vacationhours = value)) override def sickleavehours = Field[TypoShort, EmployeeRow](_path, "sickleavehours", None, Some("int2"), x => x.sickleavehours, (row, value) => row.copy(sickleavehours = value)) - override def currentflag = Field[Flag, EmployeeRow](_path, "currentflag", None, Some("bool"), x => x.currentflag, (row, value) => row.copy(currentflag = value)) + override def currentflag = Field[/* user-picked */ CurrentFlag, EmployeeRow](_path, "currentflag", None, Some("bool"), x => x.currentflag, (row, value) => row.copy(currentflag = value)) override def rowguid = Field[TypoUUID, EmployeeRow](_path, "rowguid", None, Some("uuid"), x => x.rowguid, (row, value) => row.copy(rowguid = value)) override def modifieddate = Field[TypoLocalDateTime, EmployeeRow](_path, "modifieddate", Some("text"), Some("timestamp"), x => x.modifieddate, (row, value) => row.copy(modifieddate = value)) override def organizationnode = OptField[String, EmployeeRow](_path, "organizationnode", None, None, x => x.organizationnode, (row, value) => row.copy(organizationnode = value)) diff --git a/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/humanresources/employee/EmployeeRepoImpl.scala b/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/humanresources/employee/EmployeeRepoImpl.scala index 67dd806d24..827e6d8b29 100644 --- a/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/humanresources/employee/EmployeeRepoImpl.scala +++ b/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/humanresources/employee/EmployeeRepoImpl.scala @@ -11,8 +11,9 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoShort import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Flag import adventureworks.streamingInsert +import adventureworks.userdefined.CurrentFlag +import adventureworks.userdefined.SalariedFlag import typr.dsl.DeleteBuilder import typr.dsl.SelectBuilder import typr.dsl.UpdateBuilder @@ -34,7 +35,7 @@ class EmployeeRepoImpl extends EmployeeRepo { 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") - values (${Segment.paramSegment(unsaved.businessentityid)(using BusinessentityId.setter)}::int4, ${Segment.paramSegment(unsaved.nationalidnumber)(using Setter.stringSetter)}, ${Segment.paramSegment(unsaved.loginid)(using Setter.stringSetter)}, ${Segment.paramSegment(unsaved.jobtitle)(using Setter.stringSetter)}, ${Segment.paramSegment(unsaved.birthdate)(using TypoLocalDate.setter)}::date, ${Segment.paramSegment(unsaved.maritalstatus)(using Setter.stringSetter)}::bpchar, ${Segment.paramSegment(unsaved.gender)(using Setter.stringSetter)}::bpchar, ${Segment.paramSegment(unsaved.hiredate)(using TypoLocalDate.setter)}::date, ${Segment.paramSegment(unsaved.salariedflag)(using Flag.setter)}::bool, ${Segment.paramSegment(unsaved.vacationhours)(using TypoShort.setter)}::int2, ${Segment.paramSegment(unsaved.sickleavehours)(using TypoShort.setter)}::int2, ${Segment.paramSegment(unsaved.currentflag)(using Flag.setter)}::bool, ${Segment.paramSegment(unsaved.rowguid)(using TypoUUID.setter)}::uuid, ${Segment.paramSegment(unsaved.modifieddate)(using TypoLocalDateTime.setter)}::timestamp, ${Segment.paramSegment(unsaved.organizationnode)(using Setter.optionParamSetter(using Setter.stringSetter))}) + values (${Segment.paramSegment(unsaved.businessentityid)(using BusinessentityId.setter)}::int4, ${Segment.paramSegment(unsaved.nationalidnumber)(using Setter.stringSetter)}, ${Segment.paramSegment(unsaved.loginid)(using Setter.stringSetter)}, ${Segment.paramSegment(unsaved.jobtitle)(using Setter.stringSetter)}, ${Segment.paramSegment(unsaved.birthdate)(using TypoLocalDate.setter)}::date, ${Segment.paramSegment(unsaved.maritalstatus)(using Setter.stringSetter)}::bpchar, ${Segment.paramSegment(unsaved.gender)(using Setter.stringSetter)}::bpchar, ${Segment.paramSegment(unsaved.hiredate)(using TypoLocalDate.setter)}::date, ${Segment.paramSegment(unsaved.salariedflag)(using /* user-picked */ SalariedFlag.setter)}::bool, ${Segment.paramSegment(unsaved.vacationhours)(using TypoShort.setter)}::int2, ${Segment.paramSegment(unsaved.sickleavehours)(using TypoShort.setter)}::int2, ${Segment.paramSegment(unsaved.currentflag)(using /* user-picked */ CurrentFlag.setter)}::bool, ${Segment.paramSegment(unsaved.rowguid)(using TypoUUID.setter)}::uuid, ${Segment.paramSegment(unsaved.modifieddate)(using TypoLocalDateTime.setter)}::timestamp, ${Segment.paramSegment(unsaved.organizationnode)(using Setter.optionParamSetter(using Setter.stringSetter))}) returning "businessentityid", "nationalidnumber", "loginid", "jobtitle", "birthdate"::text, "maritalstatus", "gender", "hiredate"::text, "salariedflag", "vacationhours", "sickleavehours", "currentflag", "rowguid", "modifieddate"::text, "organizationnode" """.insertReturning(using EmployeeRow.jdbcDecoder).map(_.updatedKeys.head) } @@ -51,7 +52,7 @@ class EmployeeRepoImpl extends EmployeeRepo { Some((sql""""hiredate"""", sql"${Segment.paramSegment(unsaved.hiredate)(using TypoLocalDate.setter)}::date")), unsaved.salariedflag match { case Defaulted.UseDefault() => None - case Defaulted.Provided(value) => Some((sql""""salariedflag"""", sql"${Segment.paramSegment(value: Flag)(using Flag.setter)}::bool")) + case Defaulted.Provided(value) => Some((sql""""salariedflag"""", sql"${Segment.paramSegment(value: /* user-picked */ SalariedFlag)(using /* user-picked */ SalariedFlag.setter)}::bool")) }, unsaved.vacationhours match { case Defaulted.UseDefault() => None @@ -63,7 +64,7 @@ class EmployeeRepoImpl extends EmployeeRepo { }, unsaved.currentflag match { case Defaulted.UseDefault() => None - case Defaulted.Provided(value) => Some((sql""""currentflag"""", sql"${Segment.paramSegment(value: Flag)(using Flag.setter)}::bool")) + case Defaulted.Provided(value) => Some((sql""""currentflag"""", sql"${Segment.paramSegment(value: /* user-picked */ CurrentFlag)(using /* user-picked */ CurrentFlag.setter)}::bool")) }, unsaved.rowguid match { case Defaulted.UseDefault() => None @@ -128,10 +129,10 @@ class EmployeeRepoImpl extends EmployeeRepo { "maritalstatus" = ${Segment.paramSegment(row.maritalstatus)(using Setter.stringSetter)}::bpchar, "gender" = ${Segment.paramSegment(row.gender)(using Setter.stringSetter)}::bpchar, "hiredate" = ${Segment.paramSegment(row.hiredate)(using TypoLocalDate.setter)}::date, - "salariedflag" = ${Segment.paramSegment(row.salariedflag)(using Flag.setter)}::bool, + "salariedflag" = ${Segment.paramSegment(row.salariedflag)(using /* user-picked */ SalariedFlag.setter)}::bool, "vacationhours" = ${Segment.paramSegment(row.vacationhours)(using TypoShort.setter)}::int2, "sickleavehours" = ${Segment.paramSegment(row.sickleavehours)(using TypoShort.setter)}::int2, - "currentflag" = ${Segment.paramSegment(row.currentflag)(using Flag.setter)}::bool, + "currentflag" = ${Segment.paramSegment(row.currentflag)(using /* user-picked */ CurrentFlag.setter)}::bool, "rowguid" = ${Segment.paramSegment(row.rowguid)(using TypoUUID.setter)}::uuid, "modifieddate" = ${Segment.paramSegment(row.modifieddate)(using TypoLocalDateTime.setter)}::timestamp, "organizationnode" = ${Segment.paramSegment(row.organizationnode)(using Setter.optionParamSetter(using Setter.stringSetter))} @@ -152,10 +153,10 @@ class EmployeeRepoImpl extends EmployeeRepo { ${Segment.paramSegment(unsaved.maritalstatus)(using Setter.stringSetter)}::bpchar, ${Segment.paramSegment(unsaved.gender)(using Setter.stringSetter)}::bpchar, ${Segment.paramSegment(unsaved.hiredate)(using TypoLocalDate.setter)}::date, - ${Segment.paramSegment(unsaved.salariedflag)(using Flag.setter)}::bool, + ${Segment.paramSegment(unsaved.salariedflag)(using /* user-picked */ SalariedFlag.setter)}::bool, ${Segment.paramSegment(unsaved.vacationhours)(using TypoShort.setter)}::int2, ${Segment.paramSegment(unsaved.sickleavehours)(using TypoShort.setter)}::int2, - ${Segment.paramSegment(unsaved.currentflag)(using Flag.setter)}::bool, + ${Segment.paramSegment(unsaved.currentflag)(using /* user-picked */ CurrentFlag.setter)}::bool, ${Segment.paramSegment(unsaved.rowguid)(using TypoUUID.setter)}::uuid, ${Segment.paramSegment(unsaved.modifieddate)(using TypoLocalDateTime.setter)}::timestamp, ${Segment.paramSegment(unsaved.organizationnode)(using Setter.optionParamSetter(using Setter.stringSetter))} diff --git a/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/humanresources/employee/EmployeeRow.scala b/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/humanresources/employee/EmployeeRow.scala index 95ee8103fd..c8653389c6 100644 --- a/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/humanresources/employee/EmployeeRow.scala +++ b/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/humanresources/employee/EmployeeRow.scala @@ -12,7 +12,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoShort import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Flag +import adventureworks.userdefined.CurrentFlag +import adventureworks.userdefined.SalariedFlag import java.sql.ResultSet import zio.jdbc.JdbcDecoder import zio.json.JsonDecoder @@ -54,7 +55,7 @@ case class EmployeeRow( /** Job classification. 0 = Hourly, not exempt from collective bargaining. 1 = Salaried, exempt from collective bargaining. * Default: true */ - salariedflag: Flag, + salariedflag: /* user-picked */ SalariedFlag, /** Number of available vacation hours. * Default: 0 * Constraint CK_Employee_VacationHours affecting columns vacationhours: (((vacationhours >= '-40'::integer) AND (vacationhours <= 240))) @@ -68,7 +69,7 @@ case class EmployeeRow( /** 0 = Inactive, 1 = Active * Default: true */ - currentflag: Flag, + currentflag: /* user-picked */ CurrentFlag, /** Default: uuid_generate_v1() */ rowguid: TypoUUID, /** Default: now() */ @@ -81,10 +82,10 @@ case class EmployeeRow( def id: BusinessentityId = businessentityid def toUnsavedRow( - salariedflag: Defaulted[Flag] = Defaulted.Provided(this.salariedflag), + salariedflag: Defaulted[/* user-picked */ SalariedFlag] = Defaulted.Provided(this.salariedflag), vacationhours: Defaulted[TypoShort] = Defaulted.Provided(this.vacationhours), sickleavehours: Defaulted[TypoShort] = Defaulted.Provided(this.sickleavehours), - currentflag: Defaulted[Flag] = Defaulted.Provided(this.currentflag), + currentflag: Defaulted[/* user-picked */ CurrentFlag] = Defaulted.Provided(this.currentflag), rowguid: Defaulted[TypoUUID] = Defaulted.Provided(this.rowguid), modifieddate: Defaulted[TypoLocalDateTime] = Defaulted.Provided(this.modifieddate), organizationnode: Defaulted[Option[String]] = Defaulted.Provided(this.organizationnode) @@ -123,10 +124,10 @@ object EmployeeRow { maritalstatus = JdbcDecoder.stringDecoder.unsafeDecode(columIndex + 5, rs)._2, gender = JdbcDecoder.stringDecoder.unsafeDecode(columIndex + 6, rs)._2, hiredate = TypoLocalDate.jdbcDecoder.unsafeDecode(columIndex + 7, rs)._2, - salariedflag = Flag.jdbcDecoder.unsafeDecode(columIndex + 8, rs)._2, + salariedflag = SalariedFlag.jdbcDecoder.unsafeDecode(columIndex + 8, rs)._2, vacationhours = TypoShort.jdbcDecoder.unsafeDecode(columIndex + 9, rs)._2, sickleavehours = TypoShort.jdbcDecoder.unsafeDecode(columIndex + 10, rs)._2, - currentflag = Flag.jdbcDecoder.unsafeDecode(columIndex + 11, rs)._2, + currentflag = CurrentFlag.jdbcDecoder.unsafeDecode(columIndex + 11, rs)._2, rowguid = TypoUUID.jdbcDecoder.unsafeDecode(columIndex + 12, rs)._2, modifieddate = TypoLocalDateTime.jdbcDecoder.unsafeDecode(columIndex + 13, rs)._2, organizationnode = JdbcDecoder.optionDecoder(using JdbcDecoder.stringDecoder).unsafeDecode(columIndex + 14, rs)._2 @@ -144,10 +145,10 @@ object EmployeeRow { val maritalstatus = jsonObj.get("maritalstatus").toRight("Missing field 'maritalstatus'").flatMap(_.as(using JsonDecoder.string)) val gender = jsonObj.get("gender").toRight("Missing field 'gender'").flatMap(_.as(using JsonDecoder.string)) val hiredate = jsonObj.get("hiredate").toRight("Missing field 'hiredate'").flatMap(_.as(using TypoLocalDate.jsonDecoder)) - val salariedflag = jsonObj.get("salariedflag").toRight("Missing field 'salariedflag'").flatMap(_.as(using Flag.jsonDecoder)) + val salariedflag = jsonObj.get("salariedflag").toRight("Missing field 'salariedflag'").flatMap(_.as(using SalariedFlag.jsonDecoder)) val vacationhours = jsonObj.get("vacationhours").toRight("Missing field 'vacationhours'").flatMap(_.as(using TypoShort.jsonDecoder)) val sickleavehours = jsonObj.get("sickleavehours").toRight("Missing field 'sickleavehours'").flatMap(_.as(using TypoShort.jsonDecoder)) - val currentflag = jsonObj.get("currentflag").toRight("Missing field 'currentflag'").flatMap(_.as(using Flag.jsonDecoder)) + val currentflag = jsonObj.get("currentflag").toRight("Missing field 'currentflag'").flatMap(_.as(using CurrentFlag.jsonDecoder)) val rowguid = jsonObj.get("rowguid").toRight("Missing field 'rowguid'").flatMap(_.as(using TypoUUID.jsonDecoder)) val modifieddate = jsonObj.get("modifieddate").toRight("Missing field 'modifieddate'").flatMap(_.as(using TypoLocalDateTime.jsonDecoder)) val organizationnode = jsonObj.get("organizationnode").fold[Either[String, Option[String]]](Right(None))(_.as(using JsonDecoder.option(using JsonDecoder.string))) @@ -186,7 +187,7 @@ object EmployeeRow { TypoLocalDate.jsonEncoder.unsafeEncode(a.hiredate, indent, out) out.write(",") out.write(""""salariedflag":""") - Flag.jsonEncoder.unsafeEncode(a.salariedflag, indent, out) + SalariedFlag.jsonEncoder.unsafeEncode(a.salariedflag, indent, out) out.write(",") out.write(""""vacationhours":""") TypoShort.jsonEncoder.unsafeEncode(a.vacationhours, indent, out) @@ -195,7 +196,7 @@ object EmployeeRow { TypoShort.jsonEncoder.unsafeEncode(a.sickleavehours, indent, out) out.write(",") out.write(""""currentflag":""") - Flag.jsonEncoder.unsafeEncode(a.currentflag, indent, out) + CurrentFlag.jsonEncoder.unsafeEncode(a.currentflag, indent, out) out.write(",") out.write(""""rowguid":""") TypoUUID.jsonEncoder.unsafeEncode(a.rowguid, indent, out) @@ -228,13 +229,13 @@ object EmployeeRow { sb.append(Text.DELIMETER) TypoLocalDate.pgText.unsafeEncode(row.hiredate, sb) sb.append(Text.DELIMETER) - Flag.pgText.unsafeEncode(row.salariedflag, sb) + /* user-picked */ SalariedFlag.pgText.unsafeEncode(row.salariedflag, sb) sb.append(Text.DELIMETER) TypoShort.pgText.unsafeEncode(row.vacationhours, sb) sb.append(Text.DELIMETER) TypoShort.pgText.unsafeEncode(row.sickleavehours, sb) sb.append(Text.DELIMETER) - Flag.pgText.unsafeEncode(row.currentflag, sb) + /* user-picked */ CurrentFlag.pgText.unsafeEncode(row.currentflag, sb) sb.append(Text.DELIMETER) TypoUUID.pgText.unsafeEncode(row.rowguid, sb) sb.append(Text.DELIMETER) diff --git a/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/humanresources/employee/EmployeeRowUnsaved.scala b/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/humanresources/employee/EmployeeRowUnsaved.scala index f09c02b72b..8dc935f7a9 100644 --- a/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/humanresources/employee/EmployeeRowUnsaved.scala +++ b/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/humanresources/employee/EmployeeRowUnsaved.scala @@ -13,7 +13,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoShort import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Flag +import adventureworks.userdefined.CurrentFlag +import adventureworks.userdefined.SalariedFlag import zio.json.JsonDecoder import zio.json.JsonEncoder import zio.json.ast.Json @@ -50,7 +51,7 @@ case class EmployeeRowUnsaved( /** Default: true * Job classification. 0 = Hourly, not exempt from collective bargaining. 1 = Salaried, exempt from collective bargaining. */ - salariedflag: Defaulted[Flag] = new UseDefault(), + salariedflag: Defaulted[/* user-picked */ SalariedFlag] = new UseDefault(), /** Default: 0 * Number of available vacation hours. * Constraint CK_Employee_VacationHours affecting columns vacationhours: (((vacationhours >= '-40'::integer) AND (vacationhours <= 240))) @@ -64,7 +65,7 @@ case class EmployeeRowUnsaved( /** Default: true * 0 = Inactive, 1 = Active */ - currentflag: Defaulted[Flag] = new UseDefault(), + currentflag: Defaulted[/* user-picked */ CurrentFlag] = new UseDefault(), /** Default: uuid_generate_v1() */ rowguid: Defaulted[TypoUUID] = new UseDefault(), /** Default: now() */ @@ -75,10 +76,10 @@ case class EmployeeRowUnsaved( organizationnode: Defaulted[Option[String]] = new UseDefault() ) { def toRow( - salariedflagDefault: => Flag, + salariedflagDefault: => /* user-picked */ SalariedFlag, vacationhoursDefault: => TypoShort, sickleavehoursDefault: => TypoShort, - currentflagDefault: => Flag, + currentflagDefault: => /* user-picked */ CurrentFlag, rowguidDefault: => TypoUUID, modifieddateDefault: => TypoLocalDateTime, organizationnodeDefault: => Option[String] @@ -114,10 +115,10 @@ object EmployeeRowUnsaved { val maritalstatus = jsonObj.get("maritalstatus").toRight("Missing field 'maritalstatus'").flatMap(_.as(using JsonDecoder.string)) val gender = jsonObj.get("gender").toRight("Missing field 'gender'").flatMap(_.as(using JsonDecoder.string)) val hiredate = jsonObj.get("hiredate").toRight("Missing field 'hiredate'").flatMap(_.as(using TypoLocalDate.jsonDecoder)) - val salariedflag = jsonObj.get("salariedflag").toRight("Missing field 'salariedflag'").flatMap(_.as(using Defaulted.jsonDecoder(using Flag.jsonDecoder))) + val salariedflag = jsonObj.get("salariedflag").toRight("Missing field 'salariedflag'").flatMap(_.as(using Defaulted.jsonDecoder(using SalariedFlag.jsonDecoder))) val vacationhours = jsonObj.get("vacationhours").toRight("Missing field 'vacationhours'").flatMap(_.as(using Defaulted.jsonDecoder(using TypoShort.jsonDecoder))) val sickleavehours = jsonObj.get("sickleavehours").toRight("Missing field 'sickleavehours'").flatMap(_.as(using Defaulted.jsonDecoder(using TypoShort.jsonDecoder))) - val currentflag = jsonObj.get("currentflag").toRight("Missing field 'currentflag'").flatMap(_.as(using Defaulted.jsonDecoder(using Flag.jsonDecoder))) + val currentflag = jsonObj.get("currentflag").toRight("Missing field 'currentflag'").flatMap(_.as(using Defaulted.jsonDecoder(using CurrentFlag.jsonDecoder))) val rowguid = jsonObj.get("rowguid").toRight("Missing field 'rowguid'").flatMap(_.as(using Defaulted.jsonDecoder(using TypoUUID.jsonDecoder))) val modifieddate = jsonObj.get("modifieddate").toRight("Missing field 'modifieddate'").flatMap(_.as(using Defaulted.jsonDecoder(using TypoLocalDateTime.jsonDecoder))) val organizationnode = jsonObj.get("organizationnode").toRight("Missing field 'organizationnode'").flatMap(_.as(using Defaulted.jsonDecoder(using JsonDecoder.option(using JsonDecoder.string)))) @@ -156,7 +157,7 @@ object EmployeeRowUnsaved { TypoLocalDate.jsonEncoder.unsafeEncode(a.hiredate, indent, out) out.write(",") out.write(""""salariedflag":""") - Defaulted.jsonEncoder(using Flag.jsonEncoder).unsafeEncode(a.salariedflag, indent, out) + Defaulted.jsonEncoder(using SalariedFlag.jsonEncoder).unsafeEncode(a.salariedflag, indent, out) out.write(",") out.write(""""vacationhours":""") Defaulted.jsonEncoder(using TypoShort.jsonEncoder).unsafeEncode(a.vacationhours, indent, out) @@ -165,7 +166,7 @@ object EmployeeRowUnsaved { Defaulted.jsonEncoder(using TypoShort.jsonEncoder).unsafeEncode(a.sickleavehours, indent, out) out.write(",") out.write(""""currentflag":""") - Defaulted.jsonEncoder(using Flag.jsonEncoder).unsafeEncode(a.currentflag, indent, out) + Defaulted.jsonEncoder(using CurrentFlag.jsonEncoder).unsafeEncode(a.currentflag, indent, out) out.write(",") out.write(""""rowguid":""") Defaulted.jsonEncoder(using TypoUUID.jsonEncoder).unsafeEncode(a.rowguid, indent, out) @@ -198,13 +199,13 @@ object EmployeeRowUnsaved { sb.append(Text.DELIMETER) TypoLocalDate.pgText.unsafeEncode(row.hiredate, sb) sb.append(Text.DELIMETER) - Defaulted.pgText(using Flag.pgText).unsafeEncode(row.salariedflag, sb) + Defaulted.pgText(using SalariedFlag.pgText).unsafeEncode(row.salariedflag, sb) sb.append(Text.DELIMETER) Defaulted.pgText(using TypoShort.pgText).unsafeEncode(row.vacationhours, sb) sb.append(Text.DELIMETER) Defaulted.pgText(using TypoShort.pgText).unsafeEncode(row.sickleavehours, sb) sb.append(Text.DELIMETER) - Defaulted.pgText(using Flag.pgText).unsafeEncode(row.currentflag, sb) + Defaulted.pgText(using CurrentFlag.pgText).unsafeEncode(row.currentflag, sb) sb.append(Text.DELIMETER) Defaulted.pgText(using TypoUUID.pgText).unsafeEncode(row.rowguid, sb) sb.append(Text.DELIMETER) diff --git a/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/humanresources/vemployee/VemployeeViewFields.scala b/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/humanresources/vemployee/VemployeeViewFields.scala index 406852bac3..d0474bd83d 100644 --- a/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/humanresources/vemployee/VemployeeViewFields.scala +++ b/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/humanresources/vemployee/VemployeeViewFields.scala @@ -10,6 +10,8 @@ import adventureworks.person.businessentity.BusinessentityId import adventureworks.public.Name import adventureworks.public.Phone import adventureworks.userdefined.FirstName +import adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import typr.dsl.Path import typr.dsl.RelationStructure import typr.dsl.SqlExpr.Field @@ -19,8 +21,8 @@ trait VemployeeViewFields { def businessentityid: Field[BusinessentityId, VemployeeViewRow] def title: Field[String, VemployeeViewRow] def firstname: Field[/* user-picked */ FirstName, VemployeeViewRow] - def middlename: Field[Name, VemployeeViewRow] - def lastname: Field[Name, VemployeeViewRow] + def middlename: Field[/* user-picked */ MiddleName, VemployeeViewRow] + def lastname: Field[/* user-picked */ LastName, VemployeeViewRow] def suffix: Field[String, VemployeeViewRow] def jobtitle: Field[String, VemployeeViewRow] def phonenumber: Field[Phone, VemployeeViewRow] @@ -47,8 +49,8 @@ object VemployeeViewFields { override def businessentityid = Field[BusinessentityId, VemployeeViewRow](_path, "businessentityid", None, None, x => x.businessentityid, (row, value) => row.copy(businessentityid = value)) override def title = Field[String, VemployeeViewRow](_path, "title", None, None, x => x.title, (row, value) => row.copy(title = value)) override def firstname = Field[/* user-picked */ FirstName, VemployeeViewRow](_path, "firstname", None, None, x => x.firstname, (row, value) => row.copy(firstname = value)) - override def middlename = Field[Name, VemployeeViewRow](_path, "middlename", None, None, x => x.middlename, (row, value) => row.copy(middlename = value)) - override def lastname = Field[Name, VemployeeViewRow](_path, "lastname", None, None, x => x.lastname, (row, value) => row.copy(lastname = value)) + override def middlename = Field[/* user-picked */ MiddleName, VemployeeViewRow](_path, "middlename", None, None, x => x.middlename, (row, value) => row.copy(middlename = value)) + override def lastname = Field[/* user-picked */ LastName, VemployeeViewRow](_path, "lastname", None, None, x => x.lastname, (row, value) => row.copy(lastname = value)) override def suffix = Field[String, VemployeeViewRow](_path, "suffix", None, None, x => x.suffix, (row, value) => row.copy(suffix = value)) override def jobtitle = Field[String, VemployeeViewRow](_path, "jobtitle", None, None, x => x.jobtitle, (row, value) => row.copy(jobtitle = value)) override def phonenumber = Field[Phone, VemployeeViewRow](_path, "phonenumber", None, None, x => x.phonenumber, (row, value) => row.copy(phonenumber = value)) diff --git a/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/humanresources/vemployee/VemployeeViewRow.scala b/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/humanresources/vemployee/VemployeeViewRow.scala index 6ca0cd1614..0a770bffea 100644 --- a/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/humanresources/vemployee/VemployeeViewRow.scala +++ b/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/humanresources/vemployee/VemployeeViewRow.scala @@ -10,6 +10,8 @@ import adventureworks.person.businessentity.BusinessentityId import adventureworks.public.Name import adventureworks.public.Phone import adventureworks.userdefined.FirstName +import adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import java.sql.ResultSet import zio.jdbc.JdbcDecoder import zio.json.JsonDecoder @@ -26,9 +28,9 @@ case class VemployeeViewRow( /** Points to [[adventureworks.person.person.PersonRow.firstname]] */ firstname: /* user-picked */ FirstName, /** Points to [[adventureworks.person.person.PersonRow.middlename]] */ - middlename: Name, + middlename: /* user-picked */ MiddleName, /** Points to [[adventureworks.person.person.PersonRow.lastname]] */ - lastname: Name, + lastname: /* user-picked */ LastName, /** Points to [[adventureworks.person.person.PersonRow.suffix]] */ suffix: String, /** Points to [[adventureworks.humanresources.employee.EmployeeRow.jobtitle]] */ @@ -66,8 +68,8 @@ object VemployeeViewRow { businessentityid = BusinessentityId.jdbcDecoder.unsafeDecode(columIndex + 0, rs)._2, title = JdbcDecoder.stringDecoder.unsafeDecode(columIndex + 1, rs)._2, firstname = FirstName.jdbcDecoder.unsafeDecode(columIndex + 2, rs)._2, - middlename = Name.jdbcDecoder.unsafeDecode(columIndex + 3, rs)._2, - lastname = Name.jdbcDecoder.unsafeDecode(columIndex + 4, rs)._2, + middlename = MiddleName.jdbcDecoder.unsafeDecode(columIndex + 3, rs)._2, + lastname = LastName.jdbcDecoder.unsafeDecode(columIndex + 4, rs)._2, suffix = JdbcDecoder.stringDecoder.unsafeDecode(columIndex + 5, rs)._2, jobtitle = JdbcDecoder.stringDecoder.unsafeDecode(columIndex + 6, rs)._2, phonenumber = Phone.jdbcDecoder.unsafeDecode(columIndex + 7, rs)._2, @@ -90,8 +92,8 @@ object VemployeeViewRow { val businessentityid = jsonObj.get("businessentityid").toRight("Missing field 'businessentityid'").flatMap(_.as(using BusinessentityId.jsonDecoder)) val title = jsonObj.get("title").toRight("Missing field 'title'").flatMap(_.as(using JsonDecoder.string)) val firstname = jsonObj.get("firstname").toRight("Missing field 'firstname'").flatMap(_.as(using FirstName.jsonDecoder)) - val middlename = jsonObj.get("middlename").toRight("Missing field 'middlename'").flatMap(_.as(using Name.jsonDecoder)) - val lastname = jsonObj.get("lastname").toRight("Missing field 'lastname'").flatMap(_.as(using Name.jsonDecoder)) + val middlename = jsonObj.get("middlename").toRight("Missing field 'middlename'").flatMap(_.as(using MiddleName.jsonDecoder)) + val lastname = jsonObj.get("lastname").toRight("Missing field 'lastname'").flatMap(_.as(using LastName.jsonDecoder)) val suffix = jsonObj.get("suffix").toRight("Missing field 'suffix'").flatMap(_.as(using JsonDecoder.string)) val jobtitle = jsonObj.get("jobtitle").toRight("Missing field 'jobtitle'").flatMap(_.as(using JsonDecoder.string)) val phonenumber = jsonObj.get("phonenumber").toRight("Missing field 'phonenumber'").flatMap(_.as(using Phone.jsonDecoder)) @@ -125,10 +127,10 @@ object VemployeeViewRow { FirstName.jsonEncoder.unsafeEncode(a.firstname, indent, out) out.write(",") out.write(""""middlename":""") - Name.jsonEncoder.unsafeEncode(a.middlename, indent, out) + MiddleName.jsonEncoder.unsafeEncode(a.middlename, indent, out) out.write(",") out.write(""""lastname":""") - Name.jsonEncoder.unsafeEncode(a.lastname, indent, out) + LastName.jsonEncoder.unsafeEncode(a.lastname, indent, out) out.write(",") out.write(""""suffix":""") JsonEncoder.string.unsafeEncode(a.suffix, indent, out) diff --git a/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/person/person/PersonFields.scala b/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/person/person/PersonFields.scala index 27eb19af9f..6fdabb004a 100644 --- a/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/person/person/PersonFields.scala +++ b/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/person/person/PersonFields.scala @@ -11,9 +11,10 @@ import adventureworks.customtypes.TypoXml import adventureworks.person.businessentity.BusinessentityFields import adventureworks.person.businessentity.BusinessentityId import adventureworks.person.businessentity.BusinessentityRow -import adventureworks.public.Name import adventureworks.public.NameStyle import adventureworks.userdefined.FirstName +import adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import typr.dsl.ForeignKey import typr.dsl.Path import typr.dsl.RelationStructure @@ -28,8 +29,8 @@ trait PersonFields { def namestyle: Field[NameStyle, PersonRow] def title: OptField[/* max 8 chars */ String, PersonRow] def firstname: Field[/* user-picked */ FirstName, PersonRow] - def middlename: OptField[Name, PersonRow] - def lastname: Field[Name, PersonRow] + def middlename: OptField[/* user-picked */ MiddleName, PersonRow] + def lastname: Field[/* user-picked */ LastName, PersonRow] def suffix: OptField[/* max 10 chars */ String, PersonRow] def emailpromotion: Field[Int, PersonRow] def additionalcontactinfo: OptField[TypoXml, PersonRow] @@ -54,8 +55,8 @@ object PersonFields { override def namestyle = Field[NameStyle, PersonRow](_path, "namestyle", None, Some("bool"), x => x.namestyle, (row, value) => row.copy(namestyle = value)) override def title = OptField[/* max 8 chars */ String, PersonRow](_path, "title", None, None, x => x.title, (row, value) => row.copy(title = value)) override def firstname = Field[/* user-picked */ FirstName, PersonRow](_path, "firstname", None, Some("varchar"), x => x.firstname, (row, value) => row.copy(firstname = value)) - override def middlename = OptField[Name, PersonRow](_path, "middlename", None, Some("varchar"), x => x.middlename, (row, value) => row.copy(middlename = value)) - override def lastname = Field[Name, PersonRow](_path, "lastname", None, Some("varchar"), x => x.lastname, (row, value) => row.copy(lastname = value)) + override def middlename = OptField[/* user-picked */ MiddleName, PersonRow](_path, "middlename", None, Some("varchar"), x => x.middlename, (row, value) => row.copy(middlename = value)) + override def lastname = Field[/* user-picked */ LastName, PersonRow](_path, "lastname", None, Some("varchar"), x => x.lastname, (row, value) => row.copy(lastname = value)) override def suffix = OptField[/* max 10 chars */ String, PersonRow](_path, "suffix", None, None, x => x.suffix, (row, value) => row.copy(suffix = value)) override def emailpromotion = Field[Int, PersonRow](_path, "emailpromotion", None, Some("int4"), x => x.emailpromotion, (row, value) => row.copy(emailpromotion = value)) override def additionalcontactinfo = OptField[TypoXml, PersonRow](_path, "additionalcontactinfo", None, Some("xml"), x => x.additionalcontactinfo, (row, value) => row.copy(additionalcontactinfo = value)) diff --git a/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/person/person/PersonRepoImpl.scala b/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/person/person/PersonRepoImpl.scala index 57be2edbf4..6f3a95a56c 100644 --- a/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/person/person/PersonRepoImpl.scala +++ b/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/person/person/PersonRepoImpl.scala @@ -10,10 +10,11 @@ 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.streamingInsert import adventureworks.userdefined.FirstName +import adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import typr.dsl.DeleteBuilder import typr.dsl.SelectBuilder import typr.dsl.UpdateBuilder @@ -35,7 +36,7 @@ class PersonRepoImpl extends PersonRepo { 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") - values (${Segment.paramSegment(unsaved.businessentityid)(using BusinessentityId.setter)}::int4, ${Segment.paramSegment(unsaved.persontype)(using Setter.stringSetter)}::bpchar, ${Segment.paramSegment(unsaved.namestyle)(using NameStyle.setter)}::bool, ${Segment.paramSegment(unsaved.title)(using Setter.optionParamSetter(using Setter.stringSetter))}, ${Segment.paramSegment(unsaved.firstname)(using /* user-picked */ FirstName.setter)}::varchar, ${Segment.paramSegment(unsaved.middlename)(using Setter.optionParamSetter(using Name.setter))}::varchar, ${Segment.paramSegment(unsaved.lastname)(using Name.setter)}::varchar, ${Segment.paramSegment(unsaved.suffix)(using Setter.optionParamSetter(using Setter.stringSetter))}, ${Segment.paramSegment(unsaved.emailpromotion)(using Setter.intSetter)}::int4, ${Segment.paramSegment(unsaved.additionalcontactinfo)(using Setter.optionParamSetter(using TypoXml.setter))}::xml, ${Segment.paramSegment(unsaved.demographics)(using Setter.optionParamSetter(using TypoXml.setter))}::xml, ${Segment.paramSegment(unsaved.rowguid)(using TypoUUID.setter)}::uuid, ${Segment.paramSegment(unsaved.modifieddate)(using TypoLocalDateTime.setter)}::timestamp) + values (${Segment.paramSegment(unsaved.businessentityid)(using BusinessentityId.setter)}::int4, ${Segment.paramSegment(unsaved.persontype)(using Setter.stringSetter)}::bpchar, ${Segment.paramSegment(unsaved.namestyle)(using NameStyle.setter)}::bool, ${Segment.paramSegment(unsaved.title)(using Setter.optionParamSetter(using Setter.stringSetter))}, ${Segment.paramSegment(unsaved.firstname)(using /* user-picked */ FirstName.setter)}::varchar, ${Segment.paramSegment(unsaved.middlename)(using Setter.optionParamSetter(using MiddleName.setter))}::varchar, ${Segment.paramSegment(unsaved.lastname)(using /* user-picked */ LastName.setter)}::varchar, ${Segment.paramSegment(unsaved.suffix)(using Setter.optionParamSetter(using Setter.stringSetter))}, ${Segment.paramSegment(unsaved.emailpromotion)(using Setter.intSetter)}::int4, ${Segment.paramSegment(unsaved.additionalcontactinfo)(using Setter.optionParamSetter(using TypoXml.setter))}::xml, ${Segment.paramSegment(unsaved.demographics)(using Setter.optionParamSetter(using TypoXml.setter))}::xml, ${Segment.paramSegment(unsaved.rowguid)(using TypoUUID.setter)}::uuid, ${Segment.paramSegment(unsaved.modifieddate)(using TypoLocalDateTime.setter)}::timestamp) returning "businessentityid", "persontype", "namestyle", "title", "firstname", "middlename", "lastname", "suffix", "emailpromotion", "additionalcontactinfo", "demographics", "rowguid", "modifieddate"::text """.insertReturning(using PersonRow.jdbcDecoder).map(_.updatedKeys.head) } @@ -46,8 +47,8 @@ class PersonRepoImpl extends PersonRepo { Some((sql""""persontype"""", sql"${Segment.paramSegment(unsaved.persontype)(using Setter.stringSetter)}::bpchar")), Some((sql""""title"""", sql"${Segment.paramSegment(unsaved.title)(using Setter.optionParamSetter(using Setter.stringSetter))}")), Some((sql""""firstname"""", sql"${Segment.paramSegment(unsaved.firstname)(using /* user-picked */ FirstName.setter)}::varchar")), - Some((sql""""middlename"""", sql"${Segment.paramSegment(unsaved.middlename)(using Setter.optionParamSetter(using Name.setter))}::varchar")), - Some((sql""""lastname"""", sql"${Segment.paramSegment(unsaved.lastname)(using Name.setter)}::varchar")), + Some((sql""""middlename"""", sql"${Segment.paramSegment(unsaved.middlename)(using Setter.optionParamSetter(using MiddleName.setter))}::varchar")), + Some((sql""""lastname"""", sql"${Segment.paramSegment(unsaved.lastname)(using /* user-picked */ LastName.setter)}::varchar")), Some((sql""""suffix"""", sql"${Segment.paramSegment(unsaved.suffix)(using Setter.optionParamSetter(using Setter.stringSetter))}")), Some((sql""""additionalcontactinfo"""", sql"${Segment.paramSegment(unsaved.additionalcontactinfo)(using Setter.optionParamSetter(using TypoXml.setter))}::xml")), Some((sql""""demographics"""", sql"${Segment.paramSegment(unsaved.demographics)(using Setter.optionParamSetter(using TypoXml.setter))}::xml")), @@ -115,8 +116,8 @@ class PersonRepoImpl extends PersonRepo { "namestyle" = ${Segment.paramSegment(row.namestyle)(using NameStyle.setter)}::bool, "title" = ${Segment.paramSegment(row.title)(using Setter.optionParamSetter(using Setter.stringSetter))}, "firstname" = ${Segment.paramSegment(row.firstname)(using /* user-picked */ FirstName.setter)}::varchar, - "middlename" = ${Segment.paramSegment(row.middlename)(using Setter.optionParamSetter(using Name.setter))}::varchar, - "lastname" = ${Segment.paramSegment(row.lastname)(using Name.setter)}::varchar, + "middlename" = ${Segment.paramSegment(row.middlename)(using Setter.optionParamSetter(using MiddleName.setter))}::varchar, + "lastname" = ${Segment.paramSegment(row.lastname)(using /* user-picked */ LastName.setter)}::varchar, "suffix" = ${Segment.paramSegment(row.suffix)(using Setter.optionParamSetter(using Setter.stringSetter))}, "emailpromotion" = ${Segment.paramSegment(row.emailpromotion)(using Setter.intSetter)}::int4, "additionalcontactinfo" = ${Segment.paramSegment(row.additionalcontactinfo)(using Setter.optionParamSetter(using TypoXml.setter))}::xml, @@ -137,8 +138,8 @@ class PersonRepoImpl extends PersonRepo { ${Segment.paramSegment(unsaved.namestyle)(using NameStyle.setter)}::bool, ${Segment.paramSegment(unsaved.title)(using Setter.optionParamSetter(using Setter.stringSetter))}, ${Segment.paramSegment(unsaved.firstname)(using /* user-picked */ FirstName.setter)}::varchar, - ${Segment.paramSegment(unsaved.middlename)(using Setter.optionParamSetter(using Name.setter))}::varchar, - ${Segment.paramSegment(unsaved.lastname)(using Name.setter)}::varchar, + ${Segment.paramSegment(unsaved.middlename)(using Setter.optionParamSetter(using MiddleName.setter))}::varchar, + ${Segment.paramSegment(unsaved.lastname)(using /* user-picked */ LastName.setter)}::varchar, ${Segment.paramSegment(unsaved.suffix)(using Setter.optionParamSetter(using Setter.stringSetter))}, ${Segment.paramSegment(unsaved.emailpromotion)(using Setter.intSetter)}::int4, ${Segment.paramSegment(unsaved.additionalcontactinfo)(using Setter.optionParamSetter(using TypoXml.setter))}::xml, diff --git a/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/person/person/PersonRow.scala b/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/person/person/PersonRow.scala index 0abf55028a..b6d6445efa 100644 --- a/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/person/person/PersonRow.scala +++ b/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/person/person/PersonRow.scala @@ -11,9 +11,10 @@ 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 adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import java.sql.ResultSet import zio.jdbc.JdbcDecoder import zio.json.JsonDecoder @@ -43,9 +44,9 @@ case class PersonRow( /** First name of the person. */ firstname: /* user-picked */ FirstName, /** Middle name or middle initial of the person. */ - middlename: Option[Name], + middlename: Option[/* user-picked */ MiddleName], /** Last name of the person. */ - lastname: Name, + lastname: /* user-picked */ LastName, /** Surname suffix. For example, Sr. or Jr. */ suffix: Option[/* max 10 chars */ String], /** 0 = Contact does not wish to receive e-mail promotions, 1 = Contact does wish to receive e-mail promotions from AdventureWorks, 2 = Contact does wish to receive e-mail promotions from AdventureWorks and selected partners. @@ -99,8 +100,8 @@ object PersonRow { namestyle = NameStyle.jdbcDecoder.unsafeDecode(columIndex + 2, rs)._2, title = JdbcDecoder.optionDecoder(using JdbcDecoder.stringDecoder).unsafeDecode(columIndex + 3, rs)._2, firstname = FirstName.jdbcDecoder.unsafeDecode(columIndex + 4, rs)._2, - middlename = JdbcDecoder.optionDecoder(using Name.jdbcDecoder).unsafeDecode(columIndex + 5, rs)._2, - lastname = Name.jdbcDecoder.unsafeDecode(columIndex + 6, rs)._2, + middlename = JdbcDecoder.optionDecoder(using MiddleName.jdbcDecoder).unsafeDecode(columIndex + 5, rs)._2, + lastname = LastName.jdbcDecoder.unsafeDecode(columIndex + 6, rs)._2, suffix = JdbcDecoder.optionDecoder(using JdbcDecoder.stringDecoder).unsafeDecode(columIndex + 7, rs)._2, emailpromotion = JdbcDecoder.intDecoder.unsafeDecode(columIndex + 8, rs)._2, additionalcontactinfo = JdbcDecoder.optionDecoder(using TypoXml.jdbcDecoder).unsafeDecode(columIndex + 9, rs)._2, @@ -118,8 +119,8 @@ object PersonRow { val namestyle = jsonObj.get("namestyle").toRight("Missing field 'namestyle'").flatMap(_.as(using NameStyle.jsonDecoder)) val title = jsonObj.get("title").fold[Either[String, Option[String]]](Right(None))(_.as(using JsonDecoder.option(using JsonDecoder.string))) val firstname = jsonObj.get("firstname").toRight("Missing field 'firstname'").flatMap(_.as(using FirstName.jsonDecoder)) - val middlename = jsonObj.get("middlename").fold[Either[String, Option[Name]]](Right(None))(_.as(using JsonDecoder.option(using Name.jsonDecoder))) - val lastname = jsonObj.get("lastname").toRight("Missing field 'lastname'").flatMap(_.as(using Name.jsonDecoder)) + val middlename = jsonObj.get("middlename").fold[Either[String, Option[MiddleName]]](Right(None))(_.as(using JsonDecoder.option(using MiddleName.jsonDecoder))) + val lastname = jsonObj.get("lastname").toRight("Missing field 'lastname'").flatMap(_.as(using LastName.jsonDecoder)) val suffix = jsonObj.get("suffix").fold[Either[String, Option[String]]](Right(None))(_.as(using JsonDecoder.option(using JsonDecoder.string))) val emailpromotion = jsonObj.get("emailpromotion").toRight("Missing field 'emailpromotion'").flatMap(_.as(using JsonDecoder.int)) val additionalcontactinfo = jsonObj.get("additionalcontactinfo").fold[Either[String, Option[TypoXml]]](Right(None))(_.as(using JsonDecoder.option(using TypoXml.jsonDecoder))) @@ -152,10 +153,10 @@ object PersonRow { FirstName.jsonEncoder.unsafeEncode(a.firstname, indent, out) out.write(",") out.write(""""middlename":""") - JsonEncoder.option(using Name.jsonEncoder).unsafeEncode(a.middlename, indent, out) + JsonEncoder.option(using MiddleName.jsonEncoder).unsafeEncode(a.middlename, indent, out) out.write(",") out.write(""""lastname":""") - Name.jsonEncoder.unsafeEncode(a.lastname, indent, out) + LastName.jsonEncoder.unsafeEncode(a.lastname, indent, out) out.write(",") out.write(""""suffix":""") JsonEncoder.option(using JsonEncoder.string).unsafeEncode(a.suffix, indent, out) @@ -191,9 +192,9 @@ object PersonRow { sb.append(Text.DELIMETER) /* user-picked */ FirstName.pgText.unsafeEncode(row.firstname, sb) sb.append(Text.DELIMETER) - Text.option(using Name.pgText).unsafeEncode(row.middlename, sb) + Text.option(using MiddleName.pgText).unsafeEncode(row.middlename, sb) sb.append(Text.DELIMETER) - Name.pgText.unsafeEncode(row.lastname, sb) + /* user-picked */ LastName.pgText.unsafeEncode(row.lastname, sb) sb.append(Text.DELIMETER) Text.option(using Text.stringInstance).unsafeEncode(row.suffix, sb) sb.append(Text.DELIMETER) diff --git a/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/person/person/PersonRowUnsaved.scala b/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/person/person/PersonRowUnsaved.scala index 941a82ce2d..10c40f650f 100644 --- a/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/person/person/PersonRowUnsaved.scala +++ b/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/person/person/PersonRowUnsaved.scala @@ -12,9 +12,10 @@ 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 adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import zio.json.JsonDecoder import zio.json.JsonEncoder import zio.json.ast.Json @@ -35,9 +36,9 @@ case class PersonRowUnsaved( /** First name of the person. */ firstname: /* user-picked */ FirstName, /** Middle name or middle initial of the person. */ - middlename: Option[Name] = None, + middlename: Option[/* user-picked */ MiddleName] = None, /** Last name of the person. */ - lastname: Name, + lastname: /* user-picked */ LastName, /** Surname suffix. For example, Sr. or Jr. */ suffix: Option[/* max 10 chars */ String] = None, /** Additional contact information about the person stored in xml format. */ @@ -89,8 +90,8 @@ object PersonRowUnsaved { val persontype = jsonObj.get("persontype").toRight("Missing field 'persontype'").flatMap(_.as(using JsonDecoder.string)) val title = jsonObj.get("title").fold[Either[String, Option[String]]](Right(None))(_.as(using JsonDecoder.option(using JsonDecoder.string))) val firstname = jsonObj.get("firstname").toRight("Missing field 'firstname'").flatMap(_.as(using FirstName.jsonDecoder)) - val middlename = jsonObj.get("middlename").fold[Either[String, Option[Name]]](Right(None))(_.as(using JsonDecoder.option(using Name.jsonDecoder))) - val lastname = jsonObj.get("lastname").toRight("Missing field 'lastname'").flatMap(_.as(using Name.jsonDecoder)) + val middlename = jsonObj.get("middlename").fold[Either[String, Option[MiddleName]]](Right(None))(_.as(using JsonDecoder.option(using MiddleName.jsonDecoder))) + val lastname = jsonObj.get("lastname").toRight("Missing field 'lastname'").flatMap(_.as(using LastName.jsonDecoder)) val suffix = jsonObj.get("suffix").fold[Either[String, Option[String]]](Right(None))(_.as(using JsonDecoder.option(using JsonDecoder.string))) val additionalcontactinfo = jsonObj.get("additionalcontactinfo").fold[Either[String, Option[TypoXml]]](Right(None))(_.as(using JsonDecoder.option(using TypoXml.jsonDecoder))) val demographics = jsonObj.get("demographics").fold[Either[String, Option[TypoXml]]](Right(None))(_.as(using JsonDecoder.option(using TypoXml.jsonDecoder))) @@ -121,10 +122,10 @@ object PersonRowUnsaved { FirstName.jsonEncoder.unsafeEncode(a.firstname, indent, out) out.write(",") out.write(""""middlename":""") - JsonEncoder.option(using Name.jsonEncoder).unsafeEncode(a.middlename, indent, out) + JsonEncoder.option(using MiddleName.jsonEncoder).unsafeEncode(a.middlename, indent, out) out.write(",") out.write(""""lastname":""") - Name.jsonEncoder.unsafeEncode(a.lastname, indent, out) + LastName.jsonEncoder.unsafeEncode(a.lastname, indent, out) out.write(",") out.write(""""suffix":""") JsonEncoder.option(using JsonEncoder.string).unsafeEncode(a.suffix, indent, out) @@ -161,9 +162,9 @@ object PersonRowUnsaved { sb.append(Text.DELIMETER) /* user-picked */ FirstName.pgText.unsafeEncode(row.firstname, sb) sb.append(Text.DELIMETER) - Text.option(using Name.pgText).unsafeEncode(row.middlename, sb) + Text.option(using MiddleName.pgText).unsafeEncode(row.middlename, sb) sb.append(Text.DELIMETER) - Name.pgText.unsafeEncode(row.lastname, sb) + /* user-picked */ LastName.pgText.unsafeEncode(row.lastname, sb) sb.append(Text.DELIMETER) Text.option(using Text.stringInstance).unsafeEncode(row.suffix, sb) sb.append(Text.DELIMETER) diff --git a/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/person_detail/PersonDetailSqlRow.scala b/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/person_detail/PersonDetailSqlRow.scala index eeed3b0131..729c2c1cd9 100644 --- a/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/person_detail/PersonDetailSqlRow.scala +++ b/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/person_detail/PersonDetailSqlRow.scala @@ -7,8 +7,9 @@ package adventureworks.person_detail import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Name import adventureworks.userdefined.FirstName +import adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import java.sql.ResultSet import zio.jdbc.JdbcDecoder import zio.json.JsonDecoder @@ -25,9 +26,9 @@ case class PersonDetailSqlRow( /** Points to [[adventureworks.person.person.PersonRow.firstname]] */ firstname: /* user-picked */ FirstName, /** Points to [[adventureworks.person.person.PersonRow.middlename]] */ - middlename: Option[Name], + middlename: Option[/* user-picked */ MiddleName], /** Points to [[adventureworks.person.person.PersonRow.lastname]] */ - lastname: Name, + lastname: /* user-picked */ LastName, /** Points to [[adventureworks.humanresources.employee.EmployeeRow.jobtitle]] */ jobtitle: String, /** Points to [[adventureworks.person.address.AddressRow.addressline1]] */ @@ -49,8 +50,8 @@ object PersonDetailSqlRow { businessentityid = BusinessentityId.jdbcDecoder.unsafeDecode(columIndex + 0, rs)._2, title = JdbcDecoder.optionDecoder(using JdbcDecoder.stringDecoder).unsafeDecode(columIndex + 1, rs)._2, firstname = FirstName.jdbcDecoder.unsafeDecode(columIndex + 2, rs)._2, - middlename = JdbcDecoder.optionDecoder(using Name.jdbcDecoder).unsafeDecode(columIndex + 3, rs)._2, - lastname = Name.jdbcDecoder.unsafeDecode(columIndex + 4, rs)._2, + middlename = JdbcDecoder.optionDecoder(using MiddleName.jdbcDecoder).unsafeDecode(columIndex + 3, rs)._2, + lastname = LastName.jdbcDecoder.unsafeDecode(columIndex + 4, rs)._2, jobtitle = JdbcDecoder.stringDecoder.unsafeDecode(columIndex + 5, rs)._2, addressline1 = JdbcDecoder.optionDecoder(using JdbcDecoder.stringDecoder).unsafeDecode(columIndex + 6, rs)._2, city = JdbcDecoder.optionDecoder(using JdbcDecoder.stringDecoder).unsafeDecode(columIndex + 7, rs)._2, @@ -65,8 +66,8 @@ object PersonDetailSqlRow { val businessentityid = jsonObj.get("businessentityid").toRight("Missing field 'businessentityid'").flatMap(_.as(using BusinessentityId.jsonDecoder)) val title = jsonObj.get("title").fold[Either[String, Option[String]]](Right(None))(_.as(using JsonDecoder.option(using JsonDecoder.string))) val firstname = jsonObj.get("firstname").toRight("Missing field 'firstname'").flatMap(_.as(using FirstName.jsonDecoder)) - val middlename = jsonObj.get("middlename").fold[Either[String, Option[Name]]](Right(None))(_.as(using JsonDecoder.option(using Name.jsonDecoder))) - val lastname = jsonObj.get("lastname").toRight("Missing field 'lastname'").flatMap(_.as(using Name.jsonDecoder)) + val middlename = jsonObj.get("middlename").fold[Either[String, Option[MiddleName]]](Right(None))(_.as(using JsonDecoder.option(using MiddleName.jsonDecoder))) + val lastname = jsonObj.get("lastname").toRight("Missing field 'lastname'").flatMap(_.as(using LastName.jsonDecoder)) val jobtitle = jsonObj.get("jobtitle").toRight("Missing field 'jobtitle'").flatMap(_.as(using JsonDecoder.string)) val addressline1 = jsonObj.get("addressline1").fold[Either[String, Option[String]]](Right(None))(_.as(using JsonDecoder.option(using JsonDecoder.string))) val city = jsonObj.get("city").fold[Either[String, Option[String]]](Right(None))(_.as(using JsonDecoder.option(using JsonDecoder.string))) @@ -92,10 +93,10 @@ object PersonDetailSqlRow { FirstName.jsonEncoder.unsafeEncode(a.firstname, indent, out) out.write(",") out.write(""""middlename":""") - JsonEncoder.option(using Name.jsonEncoder).unsafeEncode(a.middlename, indent, out) + JsonEncoder.option(using MiddleName.jsonEncoder).unsafeEncode(a.middlename, indent, out) out.write(",") out.write(""""lastname":""") - Name.jsonEncoder.unsafeEncode(a.lastname, indent, out) + LastName.jsonEncoder.unsafeEncode(a.lastname, indent, out) out.write(",") out.write(""""jobtitle":""") JsonEncoder.string.unsafeEncode(a.jobtitle, indent, out) diff --git a/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/person_dynamic/PersonDynamicSqlRow.scala b/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/person_dynamic/PersonDynamicSqlRow.scala index 78f974e879..84e9dde63b 100644 --- a/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/person_dynamic/PersonDynamicSqlRow.scala +++ b/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/person_dynamic/PersonDynamicSqlRow.scala @@ -5,8 +5,9 @@ */ package adventureworks.person_dynamic -import adventureworks.public.Name import adventureworks.userdefined.FirstName +import adventureworks.userdefined.LastName +import adventureworks.userdefined.MiddleName import java.sql.ResultSet import zio.jdbc.JdbcDecoder import zio.json.JsonDecoder @@ -21,9 +22,9 @@ case class PersonDynamicSqlRow( /** Points to [[adventureworks.person.person.PersonRow.firstname]] */ firstname: /* user-picked */ FirstName, /** Points to [[adventureworks.person.person.PersonRow.middlename]] */ - middlename: Option[Name], + middlename: Option[/* user-picked */ MiddleName], /** Points to [[adventureworks.person.person.PersonRow.lastname]] */ - lastname: Name + lastname: /* user-picked */ LastName ) object PersonDynamicSqlRow { @@ -34,8 +35,8 @@ object PersonDynamicSqlRow { PersonDynamicSqlRow( title = JdbcDecoder.optionDecoder(using JdbcDecoder.stringDecoder).unsafeDecode(columIndex + 0, rs)._2, firstname = FirstName.jdbcDecoder.unsafeDecode(columIndex + 1, rs)._2, - middlename = JdbcDecoder.optionDecoder(using Name.jdbcDecoder).unsafeDecode(columIndex + 2, rs)._2, - lastname = Name.jdbcDecoder.unsafeDecode(columIndex + 3, rs)._2 + middlename = JdbcDecoder.optionDecoder(using MiddleName.jdbcDecoder).unsafeDecode(columIndex + 2, rs)._2, + lastname = LastName.jdbcDecoder.unsafeDecode(columIndex + 3, rs)._2 ) } } @@ -44,8 +45,8 @@ object PersonDynamicSqlRow { JsonDecoder[Json.Obj].mapOrFail { jsonObj => val title = jsonObj.get("title").fold[Either[String, Option[String]]](Right(None))(_.as(using JsonDecoder.option(using JsonDecoder.string))) val firstname = jsonObj.get("firstname").toRight("Missing field 'firstname'").flatMap(_.as(using FirstName.jsonDecoder)) - val middlename = jsonObj.get("middlename").fold[Either[String, Option[Name]]](Right(None))(_.as(using JsonDecoder.option(using Name.jsonDecoder))) - val lastname = jsonObj.get("lastname").toRight("Missing field 'lastname'").flatMap(_.as(using Name.jsonDecoder)) + val middlename = jsonObj.get("middlename").fold[Either[String, Option[MiddleName]]](Right(None))(_.as(using JsonDecoder.option(using MiddleName.jsonDecoder))) + val lastname = jsonObj.get("lastname").toRight("Missing field 'lastname'").flatMap(_.as(using LastName.jsonDecoder)) if (title.isRight && firstname.isRight && middlename.isRight && lastname.isRight) Right(PersonDynamicSqlRow(title = title.toOption.get, firstname = firstname.toOption.get, middlename = middlename.toOption.get, lastname = lastname.toOption.get)) else Left(List[Either[String, Any]](title, firstname, middlename, lastname).flatMap(_.left.toOption).mkString(", ")) @@ -63,10 +64,10 @@ object PersonDynamicSqlRow { FirstName.jsonEncoder.unsafeEncode(a.firstname, indent, out) out.write(",") out.write(""""middlename":""") - JsonEncoder.option(using Name.jsonEncoder).unsafeEncode(a.middlename, indent, out) + JsonEncoder.option(using MiddleName.jsonEncoder).unsafeEncode(a.middlename, indent, out) out.write(",") out.write(""""lastname":""") - Name.jsonEncoder.unsafeEncode(a.lastname, indent, out) + LastName.jsonEncoder.unsafeEncode(a.lastname, indent, out) out.write("}") } } diff --git a/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/userdefined/ActiveFlag.scala b/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/userdefined/ActiveFlag.scala new file mode 100644 index 0000000000..a47f6560c2 --- /dev/null +++ b/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/userdefined/ActiveFlag.scala @@ -0,0 +1,50 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined + +import adventureworks.Text +import adventureworks.public.Flag +import typr.dsl.Bijection +import typr.dsl.PGType +import zio.jdbc.JdbcDecoder +import zio.jdbc.JdbcEncoder +import zio.jdbc.SqlFragment.Setter +import zio.json.JsonDecoder +import zio.json.JsonEncoder + +/** Shared type `ActiveFlag` + * Generated from TypeDefinitions matching + */ +case class ActiveFlag(value: Flag) extends scala.AnyVal + +object ActiveFlag { + given arrayJdbcDecoder: JdbcDecoder[Array[ActiveFlag]] = Flag.arrayJdbcDecoder.map(_.map(ActiveFlag.apply)) + + given arrayJdbcEncoder: JdbcEncoder[Array[ActiveFlag]] = Flag.arrayJdbcEncoder.contramap(_.map(_.value)) + + given arraySetter: Setter[Array[ActiveFlag]] = Flag.arraySetter.contramap(_.map(_.value)) + + given bijection: Bijection[ActiveFlag, Flag] = Bijection.apply[ActiveFlag, Flag](_.value)(ActiveFlag.apply) + + given jdbcDecoder: JdbcDecoder[ActiveFlag] = Flag.jdbcDecoder.map(ActiveFlag.apply) + + given jdbcEncoder: JdbcEncoder[ActiveFlag] = Flag.jdbcEncoder.contramap(_.value) + + given jsonDecoder: JsonDecoder[ActiveFlag] = Flag.jsonDecoder.map(ActiveFlag.apply) + + given jsonEncoder: JsonEncoder[ActiveFlag] = Flag.jsonEncoder.contramap(_.value) + + given pgText: Text[ActiveFlag] = { + new Text[ActiveFlag] { + override def unsafeEncode(v: ActiveFlag, sb: StringBuilder): Unit = Flag.pgText.unsafeEncode(v.value, sb) + override def unsafeArrayEncode(v: ActiveFlag, sb: StringBuilder): Unit = Flag.pgText.unsafeArrayEncode(v.value, sb) + } + } + + given pgType: PGType[ActiveFlag] = Flag.pgType.as + + given setter: Setter[ActiveFlag] = Flag.setter.contramap(_.value) +} \ No newline at end of file diff --git a/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/userdefined/CurrentFlag.scala b/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/userdefined/CurrentFlag.scala new file mode 100644 index 0000000000..d2b8d0e4d8 --- /dev/null +++ b/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/userdefined/CurrentFlag.scala @@ -0,0 +1,50 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined + +import adventureworks.Text +import adventureworks.public.Flag +import typr.dsl.Bijection +import typr.dsl.PGType +import zio.jdbc.JdbcDecoder +import zio.jdbc.JdbcEncoder +import zio.jdbc.SqlFragment.Setter +import zio.json.JsonDecoder +import zio.json.JsonEncoder + +/** Shared type `CurrentFlag` + * Generated from TypeDefinitions matching + */ +case class CurrentFlag(value: Flag) extends scala.AnyVal + +object CurrentFlag { + given arrayJdbcDecoder: JdbcDecoder[Array[CurrentFlag]] = Flag.arrayJdbcDecoder.map(_.map(CurrentFlag.apply)) + + given arrayJdbcEncoder: JdbcEncoder[Array[CurrentFlag]] = Flag.arrayJdbcEncoder.contramap(_.map(_.value)) + + given arraySetter: Setter[Array[CurrentFlag]] = Flag.arraySetter.contramap(_.map(_.value)) + + given bijection: Bijection[CurrentFlag, Flag] = Bijection.apply[CurrentFlag, Flag](_.value)(CurrentFlag.apply) + + given jdbcDecoder: JdbcDecoder[CurrentFlag] = Flag.jdbcDecoder.map(CurrentFlag.apply) + + given jdbcEncoder: JdbcEncoder[CurrentFlag] = Flag.jdbcEncoder.contramap(_.value) + + given jsonDecoder: JsonDecoder[CurrentFlag] = Flag.jsonDecoder.map(CurrentFlag.apply) + + given jsonEncoder: JsonEncoder[CurrentFlag] = Flag.jsonEncoder.contramap(_.value) + + given pgText: Text[CurrentFlag] = { + new Text[CurrentFlag] { + override def unsafeEncode(v: CurrentFlag, sb: StringBuilder): Unit = Flag.pgText.unsafeEncode(v.value, sb) + override def unsafeArrayEncode(v: CurrentFlag, sb: StringBuilder): Unit = Flag.pgText.unsafeArrayEncode(v.value, sb) + } + } + + given pgType: PGType[CurrentFlag] = Flag.pgType.as + + given setter: Setter[CurrentFlag] = Flag.setter.contramap(_.value) +} \ No newline at end of file diff --git a/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/userdefined/FirstName.scala b/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/userdefined/FirstName.scala new file mode 100644 index 0000000000..1041535a89 --- /dev/null +++ b/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/userdefined/FirstName.scala @@ -0,0 +1,50 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined + +import adventureworks.Text +import adventureworks.public.Name +import typr.dsl.Bijection +import typr.dsl.PGType +import zio.jdbc.JdbcDecoder +import zio.jdbc.JdbcEncoder +import zio.jdbc.SqlFragment.Setter +import zio.json.JsonDecoder +import zio.json.JsonEncoder + +/** Shared type `FirstName` + * Generated from TypeDefinitions matching + */ +case class FirstName(value: Name) extends scala.AnyVal + +object FirstName { + given arrayJdbcDecoder: JdbcDecoder[Array[FirstName]] = Name.arrayJdbcDecoder.map(_.map(FirstName.apply)) + + given arrayJdbcEncoder: JdbcEncoder[Array[FirstName]] = Name.arrayJdbcEncoder.contramap(_.map(_.value)) + + given arraySetter: Setter[Array[FirstName]] = Name.arraySetter.contramap(_.map(_.value)) + + given bijection: Bijection[FirstName, Name] = Bijection.apply[FirstName, Name](_.value)(FirstName.apply) + + given jdbcDecoder: JdbcDecoder[FirstName] = Name.jdbcDecoder.map(FirstName.apply) + + given jdbcEncoder: JdbcEncoder[FirstName] = Name.jdbcEncoder.contramap(_.value) + + given jsonDecoder: JsonDecoder[FirstName] = Name.jsonDecoder.map(FirstName.apply) + + given jsonEncoder: JsonEncoder[FirstName] = Name.jsonEncoder.contramap(_.value) + + given pgText: Text[FirstName] = { + new Text[FirstName] { + override def unsafeEncode(v: FirstName, sb: StringBuilder): Unit = Name.pgText.unsafeEncode(v.value, sb) + override def unsafeArrayEncode(v: FirstName, sb: StringBuilder): Unit = Name.pgText.unsafeArrayEncode(v.value, sb) + } + } + + given pgType: PGType[FirstName] = Name.pgType.as + + given setter: Setter[FirstName] = Name.setter.contramap(_.value) +} \ No newline at end of file diff --git a/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/userdefined/LastName.scala b/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/userdefined/LastName.scala new file mode 100644 index 0000000000..5ab6f10a0d --- /dev/null +++ b/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/userdefined/LastName.scala @@ -0,0 +1,50 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined + +import adventureworks.Text +import adventureworks.public.Name +import typr.dsl.Bijection +import typr.dsl.PGType +import zio.jdbc.JdbcDecoder +import zio.jdbc.JdbcEncoder +import zio.jdbc.SqlFragment.Setter +import zio.json.JsonDecoder +import zio.json.JsonEncoder + +/** Shared type `LastName` + * Generated from TypeDefinitions matching + */ +case class LastName(value: Name) extends scala.AnyVal + +object LastName { + given arrayJdbcDecoder: JdbcDecoder[Array[LastName]] = Name.arrayJdbcDecoder.map(_.map(LastName.apply)) + + given arrayJdbcEncoder: JdbcEncoder[Array[LastName]] = Name.arrayJdbcEncoder.contramap(_.map(_.value)) + + given arraySetter: Setter[Array[LastName]] = Name.arraySetter.contramap(_.map(_.value)) + + given bijection: Bijection[LastName, Name] = Bijection.apply[LastName, Name](_.value)(LastName.apply) + + given jdbcDecoder: JdbcDecoder[LastName] = Name.jdbcDecoder.map(LastName.apply) + + given jdbcEncoder: JdbcEncoder[LastName] = Name.jdbcEncoder.contramap(_.value) + + given jsonDecoder: JsonDecoder[LastName] = Name.jsonDecoder.map(LastName.apply) + + given jsonEncoder: JsonEncoder[LastName] = Name.jsonEncoder.contramap(_.value) + + given pgText: Text[LastName] = { + new Text[LastName] { + override def unsafeEncode(v: LastName, sb: StringBuilder): Unit = Name.pgText.unsafeEncode(v.value, sb) + override def unsafeArrayEncode(v: LastName, sb: StringBuilder): Unit = Name.pgText.unsafeArrayEncode(v.value, sb) + } + } + + given pgType: PGType[LastName] = Name.pgType.as + + given setter: Setter[LastName] = Name.setter.contramap(_.value) +} \ No newline at end of file diff --git a/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/userdefined/MiddleName.scala b/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/userdefined/MiddleName.scala new file mode 100644 index 0000000000..28962dde5b --- /dev/null +++ b/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/userdefined/MiddleName.scala @@ -0,0 +1,50 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined + +import adventureworks.Text +import adventureworks.public.Name +import typr.dsl.Bijection +import typr.dsl.PGType +import zio.jdbc.JdbcDecoder +import zio.jdbc.JdbcEncoder +import zio.jdbc.SqlFragment.Setter +import zio.json.JsonDecoder +import zio.json.JsonEncoder + +/** Shared type `MiddleName` + * Generated from TypeDefinitions matching + */ +case class MiddleName(value: Name) extends scala.AnyVal + +object MiddleName { + given arrayJdbcDecoder: JdbcDecoder[Array[MiddleName]] = Name.arrayJdbcDecoder.map(_.map(MiddleName.apply)) + + given arrayJdbcEncoder: JdbcEncoder[Array[MiddleName]] = Name.arrayJdbcEncoder.contramap(_.map(_.value)) + + given arraySetter: Setter[Array[MiddleName]] = Name.arraySetter.contramap(_.map(_.value)) + + given bijection: Bijection[MiddleName, Name] = Bijection.apply[MiddleName, Name](_.value)(MiddleName.apply) + + given jdbcDecoder: JdbcDecoder[MiddleName] = Name.jdbcDecoder.map(MiddleName.apply) + + given jdbcEncoder: JdbcEncoder[MiddleName] = Name.jdbcEncoder.contramap(_.value) + + given jsonDecoder: JsonDecoder[MiddleName] = Name.jsonDecoder.map(MiddleName.apply) + + given jsonEncoder: JsonEncoder[MiddleName] = Name.jsonEncoder.contramap(_.value) + + given pgText: Text[MiddleName] = { + new Text[MiddleName] { + override def unsafeEncode(v: MiddleName, sb: StringBuilder): Unit = Name.pgText.unsafeEncode(v.value, sb) + override def unsafeArrayEncode(v: MiddleName, sb: StringBuilder): Unit = Name.pgText.unsafeArrayEncode(v.value, sb) + } + } + + given pgType: PGType[MiddleName] = Name.pgType.as + + given setter: Setter[MiddleName] = Name.setter.contramap(_.value) +} \ No newline at end of file diff --git a/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/userdefined/OnlineOrderFlag.scala b/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/userdefined/OnlineOrderFlag.scala new file mode 100644 index 0000000000..64b5dd5ace --- /dev/null +++ b/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/userdefined/OnlineOrderFlag.scala @@ -0,0 +1,50 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined + +import adventureworks.Text +import adventureworks.public.Flag +import typr.dsl.Bijection +import typr.dsl.PGType +import zio.jdbc.JdbcDecoder +import zio.jdbc.JdbcEncoder +import zio.jdbc.SqlFragment.Setter +import zio.json.JsonDecoder +import zio.json.JsonEncoder + +/** Shared type `OnlineOrderFlag` + * Generated from TypeDefinitions matching + */ +case class OnlineOrderFlag(value: Flag) extends scala.AnyVal + +object OnlineOrderFlag { + given arrayJdbcDecoder: JdbcDecoder[Array[OnlineOrderFlag]] = Flag.arrayJdbcDecoder.map(_.map(OnlineOrderFlag.apply)) + + given arrayJdbcEncoder: JdbcEncoder[Array[OnlineOrderFlag]] = Flag.arrayJdbcEncoder.contramap(_.map(_.value)) + + given arraySetter: Setter[Array[OnlineOrderFlag]] = Flag.arraySetter.contramap(_.map(_.value)) + + given bijection: Bijection[OnlineOrderFlag, Flag] = Bijection.apply[OnlineOrderFlag, Flag](_.value)(OnlineOrderFlag.apply) + + given jdbcDecoder: JdbcDecoder[OnlineOrderFlag] = Flag.jdbcDecoder.map(OnlineOrderFlag.apply) + + given jdbcEncoder: JdbcEncoder[OnlineOrderFlag] = Flag.jdbcEncoder.contramap(_.value) + + given jsonDecoder: JsonDecoder[OnlineOrderFlag] = Flag.jsonDecoder.map(OnlineOrderFlag.apply) + + given jsonEncoder: JsonEncoder[OnlineOrderFlag] = Flag.jsonEncoder.contramap(_.value) + + given pgText: Text[OnlineOrderFlag] = { + new Text[OnlineOrderFlag] { + override def unsafeEncode(v: OnlineOrderFlag, sb: StringBuilder): Unit = Flag.pgText.unsafeEncode(v.value, sb) + override def unsafeArrayEncode(v: OnlineOrderFlag, sb: StringBuilder): Unit = Flag.pgText.unsafeArrayEncode(v.value, sb) + } + } + + given pgType: PGType[OnlineOrderFlag] = Flag.pgType.as + + given setter: Setter[OnlineOrderFlag] = Flag.setter.contramap(_.value) +} \ No newline at end of file diff --git a/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/userdefined/SalariedFlag.scala b/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/userdefined/SalariedFlag.scala new file mode 100644 index 0000000000..4099c1fe53 --- /dev/null +++ b/testers/pg/scala/zio-jdbc/generated-and-checked-in-3/adventureworks/userdefined/SalariedFlag.scala @@ -0,0 +1,50 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package adventureworks.userdefined + +import adventureworks.Text +import adventureworks.public.Flag +import typr.dsl.Bijection +import typr.dsl.PGType +import zio.jdbc.JdbcDecoder +import zio.jdbc.JdbcEncoder +import zio.jdbc.SqlFragment.Setter +import zio.json.JsonDecoder +import zio.json.JsonEncoder + +/** Shared type `SalariedFlag` + * Generated from TypeDefinitions matching + */ +case class SalariedFlag(value: Flag) extends scala.AnyVal + +object SalariedFlag { + given arrayJdbcDecoder: JdbcDecoder[Array[SalariedFlag]] = Flag.arrayJdbcDecoder.map(_.map(SalariedFlag.apply)) + + given arrayJdbcEncoder: JdbcEncoder[Array[SalariedFlag]] = Flag.arrayJdbcEncoder.contramap(_.map(_.value)) + + given arraySetter: Setter[Array[SalariedFlag]] = Flag.arraySetter.contramap(_.map(_.value)) + + given bijection: Bijection[SalariedFlag, Flag] = Bijection.apply[SalariedFlag, Flag](_.value)(SalariedFlag.apply) + + given jdbcDecoder: JdbcDecoder[SalariedFlag] = Flag.jdbcDecoder.map(SalariedFlag.apply) + + given jdbcEncoder: JdbcEncoder[SalariedFlag] = Flag.jdbcEncoder.contramap(_.value) + + given jsonDecoder: JsonDecoder[SalariedFlag] = Flag.jsonDecoder.map(SalariedFlag.apply) + + given jsonEncoder: JsonEncoder[SalariedFlag] = Flag.jsonEncoder.contramap(_.value) + + given pgText: Text[SalariedFlag] = { + new Text[SalariedFlag] { + override def unsafeEncode(v: SalariedFlag, sb: StringBuilder): Unit = Flag.pgText.unsafeEncode(v.value, sb) + override def unsafeArrayEncode(v: SalariedFlag, sb: StringBuilder): Unit = Flag.pgText.unsafeArrayEncode(v.value, sb) + } + } + + given pgType: PGType[SalariedFlag] = Flag.pgType.as + + given setter: Setter[SalariedFlag] = Flag.setter.contramap(_.value) +} \ No newline at end of file diff --git a/testers/pg/scala/zio-jdbc/src/scala/adventureworks/DSLTest.scala b/testers/pg/scala/zio-jdbc/src/scala/adventureworks/DSLTest.scala index 48f6a9f2b3..6f2556b16c 100644 --- a/testers/pg/scala/zio-jdbc/src/scala/adventureworks/DSLTest.scala +++ b/testers/pg/scala/zio-jdbc/src/scala/adventureworks/DSLTest.scala @@ -6,6 +6,7 @@ import adventureworks.person.businessentity.BusinessentityRepoImpl import adventureworks.person.emailaddress.EmailaddressRepoImpl import adventureworks.person.person.PersonRepoImpl import adventureworks.sales.salesperson.SalespersonRepoImpl +import adventureworks.public.Name import adventureworks.userdefined.FirstName import zio.ZIO @@ -23,7 +24,7 @@ class DSLTest extends SnapshotTest { val testInsert = new TestInsert(new Random(0), DomainInsert) for { businessentityRow <- testInsert.personBusinessentity() - personRow <- testInsert.personPerson(businessentityRow.businessentityid, persontype = "EM", FirstName("a")) + personRow <- testInsert.personPerson(businessentityRow.businessentityid, persontype = "EM", firstname = FirstName(Name("a"))) _ <- testInsert.personEmailaddress(personRow.businessentityid, Some("a@b.c")) employeeRow <- testInsert.humanresourcesEmployee(personRow.businessentityid, gender = "M", maritalstatus = "M", birthdate = TypoLocalDate("1998-01-01"), hiredate = TypoLocalDate("1997-01-01")) salespersonRow <- testInsert.salesSalesperson(employeeRow.businessentityid) diff --git a/testers/pg/scala/zio-jdbc/src/scala/adventureworks/RecordTest.scala b/testers/pg/scala/zio-jdbc/src/scala/adventureworks/RecordTest.scala index 2e697f4b69..390b30d053 100644 --- a/testers/pg/scala/zio-jdbc/src/scala/adventureworks/RecordTest.scala +++ b/testers/pg/scala/zio-jdbc/src/scala/adventureworks/RecordTest.scala @@ -2,6 +2,7 @@ package adventureworks import adventureworks.customtypes.* import adventureworks.person_row_join.PersonRowJoinSqlRepoImpl +import adventureworks.public.Name import adventureworks.userdefined.FirstName import org.scalactic.TypeCheckedTripleEquals import org.scalatest.funsuite.AnyFunSuite @@ -17,7 +18,7 @@ class RecordTest extends AnyFunSuite with TypeCheckedTripleEquals { val testInsert = new TestInsert(new Random(0), DomainInsert) for { businessentityRow <- testInsert.personBusinessentity() - personRow <- testInsert.personPerson(businessentityRow.businessentityid, persontype = "EM", FirstName("a")) + personRow <- testInsert.personPerson(businessentityRow.businessentityid, persontype = "EM", firstname = FirstName(Name("a"))) _ <- testInsert.personEmailaddress(personRow.businessentityid, Some("a@b.c")) employeeRow <- testInsert.humanresourcesEmployee(personRow.businessentityid, gender = "M", maritalstatus = "M", birthdate = TypoLocalDate("1998-01-01"), hiredate = TypoLocalDate("1997-01-01")) _ <- testInsert.salesSalesperson(employeeRow.businessentityid) diff --git a/testers/pg/scala/zio-jdbc/src/scala/adventureworks/humanresources/employee/EmployeeTest.scala b/testers/pg/scala/zio-jdbc/src/scala/adventureworks/humanresources/employee/EmployeeTest.scala index 00d157f2d0..b84265ead1 100644 --- a/testers/pg/scala/zio-jdbc/src/scala/adventureworks/humanresources/employee/EmployeeTest.scala +++ b/testers/pg/scala/zio-jdbc/src/scala/adventureworks/humanresources/employee/EmployeeTest.scala @@ -6,7 +6,7 @@ import adventureworks.customtypes.* import adventureworks.person.businessentity.{BusinessentityId, BusinessentityRepoImpl, BusinessentityRowUnsaved} import adventureworks.person.person.{PersonRepoImpl, PersonRowUnsaved} import adventureworks.public.{Flag, Name} -import adventureworks.userdefined.FirstName +import adventureworks.userdefined.{CurrentFlag, FirstName, LastName, MiddleName, SalariedFlag} import org.scalactic.TypeCheckedTripleEquals import org.scalatest.funsuite.AnyFunSuite import zio.ZIO @@ -24,9 +24,9 @@ class EmployeeTest extends AnyFunSuite with TypeCheckedTripleEquals { businessentityid = BusinessentityId(1), persontype = "SC", title = None, - firstname = FirstName("firstname"), - middlename = Some(Name("middlename")), - lastname = Name("lastname"), + firstname = FirstName(Name("firstname")), + middlename = Some(MiddleName(Name("middlename"))), + lastname = LastName(Name("lastname")), suffix = Some("suffix"), additionalcontactinfo = Some(TypoXml("")), demographics = None @@ -55,9 +55,9 @@ class EmployeeTest extends AnyFunSuite with TypeCheckedTripleEquals { businessentityid = businessentityRow.businessentityid, persontype = "SC", title = None, - firstname = FirstName("firstname"), - middlename = Some(Name("middlename")), - lastname = Name("lastname"), + firstname = FirstName(Name("firstname")), + middlename = Some(MiddleName(Name("middlename"))), + lastname = LastName(Name("lastname")), suffix = Some("suffix"), additionalcontactinfo = Some(TypoXml("")), demographics = None @@ -73,10 +73,10 @@ class EmployeeTest extends AnyFunSuite with TypeCheckedTripleEquals { maritalstatus = "M", gender = "F", hiredate = TypoLocalDate(LocalDate.now().minusYears(1)), - salariedflag = Defaulted.Provided(Flag(true)), + salariedflag = Defaulted.Provided(SalariedFlag(Flag(true))), vacationhours = Defaulted.Provided(TypoShort(1)), sickleavehours = Defaulted.Provided(TypoShort(2)), - currentflag = Defaulted.Provided(Flag(true)), + currentflag = Defaulted.Provided(CurrentFlag(Flag(true))), rowguid = Defaulted.Provided(TypoUUID.randomUUID), modifieddate = Defaulted.Provided(TypoLocalDateTime.now), organizationnode = Defaulted.Provided(Some("/")) @@ -122,10 +122,10 @@ class EmployeeTest extends AnyFunSuite with TypeCheckedTripleEquals { employeeRowUnsaved.gender, employeeRowUnsaved.hiredate, // below: these are assertions for the static default values - Flag(true), + SalariedFlag(Flag(true)), TypoShort(0), TypoShort(0), - Flag(true), + CurrentFlag(Flag(true)), _, _, Some("/") diff --git a/testers/pg/scala/zio-jdbc/src/scala/adventureworks/person/MultiRepoTest.scala b/testers/pg/scala/zio-jdbc/src/scala/adventureworks/person/MultiRepoTest.scala index 638c7fadca..1fd35fd09d 100644 --- a/testers/pg/scala/zio-jdbc/src/scala/adventureworks/person/MultiRepoTest.scala +++ b/testers/pg/scala/zio-jdbc/src/scala/adventureworks/person/MultiRepoTest.scala @@ -77,7 +77,7 @@ class PersonWithAddressesTest extends AnyFunSuite with TypeCheckedTripleEquals { val testInsert = new TestInsert(new Random(1), DomainInsert) for { businessentityRow <- testInsert.personBusinessentity() - personRow <- testInsert.personPerson(businessentityRow.businessentityid, persontype = "SC", FirstName("name")) + personRow <- testInsert.personPerson(businessentityRow.businessentityid, persontype = "SC", firstname = FirstName(Name("name"))) countryregionRow <- testInsert.personCountryregion(CountryregionId("NOR")) salesterritoryRow <- testInsert.salesSalesterritory(countryregionRow.countryregioncode) stateprovinceRow <- testInsert.personStateprovince(countryregionRow.countryregioncode, salesterritoryRow.territoryid) diff --git a/testers/pg/scala/zio-jdbc/src/scala/adventureworks/production/product/CompositeIdsTest.scala b/testers/pg/scala/zio-jdbc/src/scala/adventureworks/production/product/CompositeIdsTest.scala index 187dd18a8a..4fec4039b1 100644 --- a/testers/pg/scala/zio-jdbc/src/scala/adventureworks/production/product/CompositeIdsTest.scala +++ b/testers/pg/scala/zio-jdbc/src/scala/adventureworks/production/product/CompositeIdsTest.scala @@ -7,7 +7,7 @@ import adventureworks.person.person.{PersonRepo, PersonRepoImpl, PersonRepoMock, import adventureworks.production.productcosthistory.ProductcosthistoryRepoImpl import adventureworks.production.unitmeasure.UnitmeasureId import adventureworks.public.{Name, NameStyle} -import adventureworks.userdefined.FirstName +import adventureworks.userdefined.{FirstName, LastName} import adventureworks.{DomainInsert, SnapshotTest, TestInsert, withConnection} import org.scalatest.Assertion import zio.{Chunk, ZIO} @@ -73,9 +73,9 @@ class CompositeIdsTest extends SnapshotTest { persontype = "SC", namestyle = NameStyle(true), title = None, - firstname = FirstName(s"first name $i"), + firstname = FirstName(Name(s"first name $i")), middlename = None, - lastname = Name(s"last name $i"), + lastname = LastName(Name(s"last name $i")), suffix = None, emailpromotion = 1, additionalcontactinfo = None, diff --git a/testers/pg/scala/zio-jdbc/src/scala/adventureworks/userdefined/FirstName.scala b/testers/pg/scala/zio-jdbc/src/scala/adventureworks/userdefined/FirstName.scala deleted file mode 100644 index 73b8a9587a..0000000000 --- a/testers/pg/scala/zio-jdbc/src/scala/adventureworks/userdefined/FirstName.scala +++ /dev/null @@ -1,19 +0,0 @@ -package adventureworks.userdefined - -import adventureworks.Text -import typr.dsl.Bijection -import zio.jdbc.SqlFragment.Setter -import zio.jdbc.{JdbcDecoder, JdbcEncoder} -import zio.json.* - -case class FirstName(value: String) extends AnyVal -object FirstName { - implicit lazy val bijection: Bijection[FirstName, String] = Bijection[FirstName, String](_.value)(FirstName.apply) - implicit lazy val jsonDecoder: JsonDecoder[FirstName] = JsonDecoder.string.map(FirstName.apply) - implicit lazy val jsonEncoder: JsonEncoder[FirstName] = JsonEncoder.string.contramap(_.value) - implicit lazy val jdbcDecoder: JdbcDecoder[FirstName] = JdbcDecoder.stringDecoder.map(FirstName.apply) - implicit lazy val jdbcEncoder: JdbcEncoder[FirstName] = JdbcEncoder.stringEncoder.contramap(_.value) - implicit lazy val ordering: Ordering[FirstName] = Ordering.by(_.value) - implicit lazy val setter: Setter[FirstName] = Setter.stringSetter.contramap(_.value) - implicit lazy val pgText: Text[FirstName] = Text.stringInstance.contramap(_.value) -} diff --git a/testers/showcase/specs/showcase-api.yaml b/testers/showcase/specs/showcase-api.yaml new file mode 100644 index 0000000000..41bf9099bc --- /dev/null +++ b/testers/showcase/specs/showcase-api.yaml @@ -0,0 +1,268 @@ +openapi: 3.0.3 +info: + title: Showcase API + description: | + A pedagogical API demonstrating how TypeDefinitions matches fields across: + - Database columns (e.g., first_name, email, hired_at) + - API fields (e.g., firstName, email, hiredAt) + + This creates shared semantic wrapper types that ensure type safety + across heterogeneous systems. + + Key TypeDefinitions matches in this API: + - firstName, lastName -> Name columns in databases + - email -> Email columns + - isActive -> Boolean status columns + - salary -> Monetary amounts + version: 1.0.0 + +servers: + - url: http://localhost:8080/api + description: Local development server + +tags: + - name: Employees + description: Employee management + - name: Customers + description: Customer management + - name: Products + description: Product catalog + +paths: + /employees: + get: + tags: [Employees] + operationId: listEmployees + summary: List all employees + parameters: + - name: isActive + in: query + description: Filter by active status + schema: + type: boolean + - name: departmentId + in: query + description: Filter by department + schema: + type: integer + format: int64 + responses: + '200': + description: List of employees + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Employee' + post: + tags: [Employees] + operationId: createEmployee + summary: Create a new employee + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/EmployeeCreate' + responses: + '201': + description: Employee created + content: + application/json: + schema: + $ref: '#/components/schemas/Employee' + + /employees/{id}: + get: + tags: [Employees] + operationId: getEmployee + summary: Get employee by ID + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: Employee details + content: + application/json: + schema: + $ref: '#/components/schemas/Employee' + '404': + description: Employee not found + + /customers: + get: + tags: [Customers] + operationId: listCustomers + summary: List all customers + parameters: + - name: isActive + in: query + schema: + type: boolean + responses: + '200': + description: List of customers + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Customer' + + /products: + get: + tags: [Products] + operationId: listProducts + summary: List all products + parameters: + - name: isActive + in: query + schema: + type: boolean + responses: + '200': + description: List of products + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Product' + +components: + schemas: + Employee: + type: object + description: | + Employee record demonstrating TypeDefinitions matching: + - firstName/lastName match database first_name/last_name columns + - email matches database email column + - isActive matches database active/is_active columns + - salary matches database salary column (decimal amount) + required: + - id + - firstName + - lastName + - email + - salary + - isActive + - hiredAt + properties: + id: + type: integer + format: int64 + firstName: + type: string + description: First name (matches TypeDefinitions 'FirstName') + maxLength: 100 + lastName: + type: string + description: Last name (matches TypeDefinitions 'LastName') + maxLength: 100 + email: + type: string + format: email + description: Email address (matches TypeDefinitions 'Email') + salary: + type: number + format: double + description: Annual salary (matches TypeDefinitions 'Salary') + isActive: + type: boolean + description: Active status (matches TypeDefinitions 'IsActive') + hiredAt: + type: string + format: date-time + description: Hire date + + EmployeeCreate: + type: object + required: + - firstName + - lastName + - email + - salary + - departmentId + properties: + firstName: + type: string + description: First name (matches TypeDefinitions 'FirstName') + maxLength: 100 + lastName: + type: string + description: Last name (matches TypeDefinitions 'LastName') + maxLength: 100 + email: + type: string + format: email + description: Email address (matches TypeDefinitions 'Email') + salary: + type: number + format: double + description: Annual salary (matches TypeDefinitions 'Salary') + departmentId: + type: integer + format: int64 + description: Department ID + + Customer: + type: object + description: | + Customer record with fields matching TypeDefinitions + required: + - id + - firstName + - lastName + - email + - isActive + properties: + id: + type: integer + format: int64 + firstName: + type: string + description: First name (matches TypeDefinitions 'FirstName') + lastName: + type: string + description: Last name (matches TypeDefinitions 'LastName') + email: + type: string + format: email + description: Email (matches TypeDefinitions 'Email') + isActive: + type: boolean + description: Active status (matches TypeDefinitions 'IsActive') + createdAt: + type: string + format: date-time + + Product: + type: object + required: + - id + - name + - price + - isActive + properties: + id: + type: integer + format: int64 + name: + type: string + description: + type: string + price: + type: number + format: double + stockQuantity: + type: integer + format: int32 + isActive: + type: boolean + description: Whether product is active (matches TypeDefinitions 'IsActive') diff --git a/testers/sqlserver/java/generated-and-checked-in/testdb/TestInsert.java b/testers/sqlserver/java/generated-and-checked-in/testdb/TestInsert.java index 6c4239be7e..50625c6488 100644 --- a/testers/sqlserver/java/generated-and-checked-in/testdb/TestInsert.java +++ b/testers/sqlserver/java/generated-and-checked-in/testdb/TestInsert.java @@ -66,6 +66,7 @@ import testdb.test_connection.TestConnectionRepoImpl; import testdb.test_connection.TestConnectionRow; import testdb.test_connection.TestConnectionRowUnsaved; +import testdb.userdefined.Email; /** Methods to generate random data for `Ident(TestInsert)` */ public record TestInsert(Random random) { @@ -176,7 +177,7 @@ public Inserter Customers() { return Inserter.of( new CustomersRowUnsaved( RandomHelper.alphanumeric(random, 20), - RandomHelper.alphanumeric(random, 20), + new Email(RandomHelper.alphanumeric(random, 20)), new UseDefault()), (CustomersRowUnsaved row, Connection c) -> (new CustomersRepoImpl()).insert(row, c)); } diff --git a/testers/sqlserver/java/generated-and-checked-in/testdb/customer_orders_summary/CustomerOrdersSummarySqlRow.java b/testers/sqlserver/java/generated-and-checked-in/testdb/customer_orders_summary/CustomerOrdersSummarySqlRow.java index 45d3f2efd1..f69c15bb7f 100644 --- a/testers/sqlserver/java/generated-and-checked-in/testdb/customer_orders_summary/CustomerOrdersSummarySqlRow.java +++ b/testers/sqlserver/java/generated-and-checked-in/testdb/customer_orders_summary/CustomerOrdersSummarySqlRow.java @@ -15,6 +15,7 @@ import java.util.Optional; import testdb.customers.CustomersId; import testdb.orders.OrdersId; +import testdb.userdefined.Email; /** SQL file: customer-orders-summary.sql */ public record CustomerOrdersSummarySqlRow( @@ -23,7 +24,7 @@ public record CustomerOrdersSummarySqlRow( /** Points to {@link testdb.customers.CustomersRow#name()} */ @JsonProperty("customer_name") String customerName, /** Points to {@link testdb.customers.CustomersRow#email()} */ - @JsonProperty("customer_email") String customerEmail, + @JsonProperty("customer_email") /* user-picked */ Email customerEmail, /** Points to {@link testdb.orders.OrdersRow#orderId()} */ @JsonProperty("order_count") Optional orderCount, /** Points to {@link testdb.orders.OrdersRow#totalAmount()} */ @@ -34,8 +35,8 @@ public record CustomerOrdersSummarySqlRow( @JsonProperty("last_order_date") Optional lastOrderDate) implements Tuple7< CustomersId, - String, - String, + String, /* user-picked */ + Email, Optional, Optional, Optional, @@ -67,7 +68,7 @@ public CustomerOrdersSummarySqlRow withCustomerName(String customerName) { ; /** Points to {@link testdb.customers.CustomersRow#email()} */ - public CustomerOrdersSummarySqlRow withCustomerEmail(String customerEmail) { + public CustomerOrdersSummarySqlRow withCustomerEmail(/* user-picked */ Email customerEmail) { return new CustomerOrdersSummarySqlRow( customerId, customerName, @@ -135,7 +136,7 @@ public CustomerOrdersSummarySqlRow withLastOrderDate(Optional las RowParsers.of( CustomersId.sqlServerType, SqlServerTypes.nvarchar, - SqlServerTypes.nvarchar, + Email.sqlServerType, OrdersId.sqlServerType.opt(), SqlServerTypes.money.opt(), SqlServerTypes.money.opt(), @@ -166,7 +167,7 @@ public String _2() { ; @Override - public String _3() { + public /* user-picked */ Email _3() { return customerEmail; } ; diff --git a/testers/sqlserver/java/generated-and-checked-in/testdb/customers/CustomersFields.java b/testers/sqlserver/java/generated-and-checked-in/testdb/customers/CustomersFields.java index fb592bd55a..c5522a8e59 100644 --- a/testers/sqlserver/java/generated-and-checked-in/testdb/customers/CustomersFields.java +++ b/testers/sqlserver/java/generated-and-checked-in/testdb/customers/CustomersFields.java @@ -19,8 +19,10 @@ import java.time.LocalDateTime; import java.util.List; import java.util.Optional; +import testdb.userdefined.Email; -public class CustomersFields extends TupleExpr4 +public class CustomersFields + extends TupleExpr4 implements RelationStructure, FieldsBase { List _path; @@ -52,15 +54,15 @@ public Field name() { SqlServerTypes.nvarchar); } - public Field email() { - return new Field( + public Field email() { + return new Field( _path, "email", CustomersRow::email, Optional.empty(), Optional.empty(), (row, value) -> row.withEmail(value), - SqlServerTypes.nvarchar); + Email.sqlServerType); } public OptField createdAt() { @@ -105,7 +107,7 @@ public SqlExpr _2() { } @Override - public SqlExpr _3() { + public SqlExpr _3() { return email(); } diff --git a/testers/sqlserver/java/generated-and-checked-in/testdb/customers/CustomersRepo.java b/testers/sqlserver/java/generated-and-checked-in/testdb/customers/CustomersRepo.java index a463267d4f..25d83b2c13 100644 --- a/testers/sqlserver/java/generated-and-checked-in/testdb/customers/CustomersRepo.java +++ b/testers/sqlserver/java/generated-and-checked-in/testdb/customers/CustomersRepo.java @@ -13,6 +13,7 @@ import java.util.List; import java.util.Map; import java.util.Optional; +import testdb.userdefined.Email; public interface CustomersRepo { DeleteBuilder delete(); @@ -35,7 +36,7 @@ public interface CustomersRepo { Map selectByIdsTracked(CustomersId[] customerIds, Connection c); - Optional selectByUniqueEmail(String email, Connection c); + Optional selectByUniqueEmail(/* user-picked */ Email email, Connection c); UpdateBuilder update(); diff --git a/testers/sqlserver/java/generated-and-checked-in/testdb/customers/CustomersRepoImpl.java b/testers/sqlserver/java/generated-and-checked-in/testdb/customers/CustomersRepoImpl.java index b78f602fd6..e19a183314 100644 --- a/testers/sqlserver/java/generated-and-checked-in/testdb/customers/CustomersRepoImpl.java +++ b/testers/sqlserver/java/generated-and-checked-in/testdb/customers/CustomersRepoImpl.java @@ -20,6 +20,7 @@ import java.util.List; import java.util.Map; import java.util.Optional; +import testdb.userdefined.Email; public class CustomersRepoImpl implements CustomersRepo { @Override @@ -63,7 +64,7 @@ public CustomersRow insert(CustomersRow unsaved, Connection c) { + "values ("), Fragment.encode(SqlServerTypes.nvarchar, unsaved.name()), Fragment.lit(", "), - Fragment.encode(SqlServerTypes.nvarchar, unsaved.email()), + Fragment.encode(Email.sqlServerType, unsaved.email()), Fragment.lit(", "), Fragment.encode(SqlServerTypes.datetime2.opt(), unsaved.createdAt()), Fragment.lit(")\n")) @@ -82,7 +83,7 @@ public CustomersRow insert(CustomersRowUnsaved unsaved, Connection c) { interpolate(Fragment.encode(SqlServerTypes.nvarchar, unsaved.name()), Fragment.lit(""))); columns.add(Fragment.lit("[email]")); values.add( - interpolate(Fragment.encode(SqlServerTypes.nvarchar, unsaved.email()), Fragment.lit(""))); + interpolate(Fragment.encode(Email.sqlServerType, unsaved.email()), Fragment.lit(""))); unsaved .createdAt() .visit( @@ -162,13 +163,13 @@ public Map selectByIdsTracked( } @Override - public Optional selectByUniqueEmail(String email, Connection c) { + public Optional selectByUniqueEmail(/* user-picked */ Email email, Connection c) { return interpolate( Fragment.lit( "select [customer_id], [name], [email], [created_at]\n" + "from [customers]\n" + "where [email] = "), - Fragment.encode(SqlServerTypes.nvarchar, email), + Fragment.encode(Email.sqlServerType, email), Fragment.lit("\n")) .query(CustomersRow._rowParser.first()) .runUnchecked(c); @@ -188,7 +189,7 @@ public Boolean update(CustomersRow row, Connection c) { Fragment.lit("update [customers]\nset [name] = "), Fragment.encode(SqlServerTypes.nvarchar, row.name()), Fragment.lit(",\n[email] = "), - Fragment.encode(SqlServerTypes.nvarchar, row.email()), + Fragment.encode(Email.sqlServerType, row.email()), Fragment.lit(",\n[created_at] = "), Fragment.encode(SqlServerTypes.datetime2.opt(), row.createdAt()), Fragment.lit("\nwhere [customer_id] = "), @@ -207,7 +208,7 @@ public CustomersRow upsert(CustomersRow unsaved, Connection c) { Fragment.lit(", "), Fragment.encode(SqlServerTypes.nvarchar, unsaved.name()), Fragment.lit(", "), - Fragment.encode(SqlServerTypes.nvarchar, unsaved.email()), + Fragment.encode(Email.sqlServerType, unsaved.email()), Fragment.lit(", "), Fragment.encode(SqlServerTypes.datetime2.opt(), unsaved.createdAt()), Fragment.lit( @@ -222,7 +223,7 @@ public CustomersRow upsert(CustomersRow unsaved, Connection c) { Fragment.lit(", "), Fragment.encode(SqlServerTypes.nvarchar, unsaved.name()), Fragment.lit(", "), - Fragment.encode(SqlServerTypes.nvarchar, unsaved.email()), + Fragment.encode(Email.sqlServerType, unsaved.email()), Fragment.lit(", "), Fragment.encode(SqlServerTypes.datetime2.opt(), unsaved.createdAt()), Fragment.lit( diff --git a/testers/sqlserver/java/generated-and-checked-in/testdb/customers/CustomersRepoMock.java b/testers/sqlserver/java/generated-and-checked-in/testdb/customers/CustomersRepoMock.java index 680c874a97..aaff9cc976 100644 --- a/testers/sqlserver/java/generated-and-checked-in/testdb/customers/CustomersRepoMock.java +++ b/testers/sqlserver/java/generated-and-checked-in/testdb/customers/CustomersRepoMock.java @@ -23,6 +23,7 @@ import java.util.Optional; import java.util.function.Function; import java.util.stream.Collectors; +import testdb.userdefined.Email; public record CustomersRepoMock( java.util.function.Function toRow, @@ -136,7 +137,7 @@ public Map selectByIdsTracked( ; @Override - public Optional selectByUniqueEmail(String email, Connection c) { + public Optional selectByUniqueEmail(/* user-picked */ Email email, Connection c) { return new ArrayList<>(map.values()).stream().filter(v -> email.equals(v.email())).findFirst(); } ; diff --git a/testers/sqlserver/java/generated-and-checked-in/testdb/customers/CustomersRow.java b/testers/sqlserver/java/generated-and-checked-in/testdb/customers/CustomersRow.java index 9a9a2d2106..50a4cdab8d 100644 --- a/testers/sqlserver/java/generated-and-checked-in/testdb/customers/CustomersRow.java +++ b/testers/sqlserver/java/generated-and-checked-in/testdb/customers/CustomersRow.java @@ -13,16 +13,17 @@ import java.time.LocalDateTime; import java.util.Optional; import testdb.customtypes.Defaulted; +import testdb.userdefined.Email; /** Table: customers Primary key: customer_id */ public record CustomersRow( /** IDENTITY(1, 1) */ @JsonProperty("customer_id") CustomersId customerId, String name, - String email, + /* user-picked */ Email email, /** Default: (getdate()) */ @JsonProperty("created_at") Optional createdAt) - implements Tuple4> { + implements Tuple4> { /** IDENTITY(1, 1) */ public CustomersRow withCustomerId(CustomersId customerId) { return new CustomersRow(customerId, name, email, createdAt); @@ -34,7 +35,7 @@ public CustomersRow withName(String name) { } ; - public CustomersRow withEmail(String email) { + public CustomersRow withEmail(/* user-picked */ Email email) { return new CustomersRow(customerId, name, email, createdAt); } ; @@ -49,7 +50,7 @@ public CustomersRow withCreatedAt(Optional createdAt) { RowParsers.of( CustomersId.sqlServerType, SqlServerTypes.nvarchar, - SqlServerTypes.nvarchar, + Email.sqlServerType, SqlServerTypes.datetime2.opt(), CustomersRow::new, row -> new Object[] {row.customerId(), row.name(), row.email(), row.createdAt()}); @@ -68,7 +69,7 @@ public String _2() { ; @Override - public String _3() { + public /* user-picked */ Email _3() { return email; } ; diff --git a/testers/sqlserver/java/generated-and-checked-in/testdb/customers/CustomersRowUnsaved.java b/testers/sqlserver/java/generated-and-checked-in/testdb/customers/CustomersRowUnsaved.java index 233d09942d..10b0b1f39f 100644 --- a/testers/sqlserver/java/generated-and-checked-in/testdb/customers/CustomersRowUnsaved.java +++ b/testers/sqlserver/java/generated-and-checked-in/testdb/customers/CustomersRowUnsaved.java @@ -10,14 +10,15 @@ import java.util.Optional; import testdb.customtypes.Defaulted; import testdb.customtypes.Defaulted.UseDefault; +import testdb.userdefined.Email; /** This class corresponds to a row in table `customers` which has not been persisted yet */ public record CustomersRowUnsaved( String name, - String email, + /* user-picked */ Email email, /** Default: (getdate()) */ @JsonProperty("created_at") Defaulted> createdAt) { - public CustomersRowUnsaved(String name, String email) { + public CustomersRowUnsaved(String name, /* user-picked */ Email email) { this(name, email, new UseDefault<>()); } ; @@ -27,7 +28,7 @@ public CustomersRowUnsaved withName(String name) { } ; - public CustomersRowUnsaved withEmail(String email) { + public CustomersRowUnsaved withEmail(/* user-picked */ Email email) { return new CustomersRowUnsaved(name, email, createdAt); } ; diff --git a/testers/sqlserver/java/generated-and-checked-in/testdb/find_customers_by_email/FindCustomersByEmailSqlRow.java b/testers/sqlserver/java/generated-and-checked-in/testdb/find_customers_by_email/FindCustomersByEmailSqlRow.java index 00bebb234b..1b499770a6 100644 --- a/testers/sqlserver/java/generated-and-checked-in/testdb/find_customers_by_email/FindCustomersByEmailSqlRow.java +++ b/testers/sqlserver/java/generated-and-checked-in/testdb/find_customers_by_email/FindCustomersByEmailSqlRow.java @@ -13,6 +13,7 @@ import java.time.LocalDateTime; import java.util.Optional; import testdb.customers.CustomersId; +import testdb.userdefined.Email; /** SQL file: find-customers-by-email.sql */ public record FindCustomersByEmailSqlRow( @@ -21,10 +22,10 @@ public record FindCustomersByEmailSqlRow( /** Points to {@link testdb.customers.CustomersRow#name()} */ @JsonProperty("customer_name") String customerName, /** Points to {@link testdb.customers.CustomersRow#email()} */ - @JsonProperty("customer_email") String customerEmail, + @JsonProperty("customer_email") /* user-picked */ Email customerEmail, /** Points to {@link testdb.customers.CustomersRow#createdAt()} */ @JsonProperty("created_at") Optional createdAt) - implements Tuple4> { + implements Tuple4> { /** Points to {@link testdb.customers.CustomersRow#customerId()} */ public FindCustomersByEmailSqlRow withCustomerId(CustomersId customerId) { return new FindCustomersByEmailSqlRow(customerId, customerName, customerEmail, createdAt); @@ -38,7 +39,7 @@ public FindCustomersByEmailSqlRow withCustomerName(String customerName) { ; /** Points to {@link testdb.customers.CustomersRow#email()} */ - public FindCustomersByEmailSqlRow withCustomerEmail(String customerEmail) { + public FindCustomersByEmailSqlRow withCustomerEmail(/* user-picked */ Email customerEmail) { return new FindCustomersByEmailSqlRow(customerId, customerName, customerEmail, createdAt); } ; @@ -53,7 +54,7 @@ public FindCustomersByEmailSqlRow withCreatedAt(Optional createdA RowParsers.of( CustomersId.sqlServerType, SqlServerTypes.nvarchar, - SqlServerTypes.nvarchar, + Email.sqlServerType, SqlServerTypes.datetime2.opt(), FindCustomersByEmailSqlRow::new, row -> @@ -75,7 +76,7 @@ public String _2() { ; @Override - public String _3() { + public /* user-picked */ Email _3() { return customerEmail; } ; diff --git a/testers/sqlserver/java/generated-and-checked-in/testdb/order_items/OrderItemsFields.java b/testers/sqlserver/java/generated-and-checked-in/testdb/order_items/OrderItemsFields.java index 5520d9efae..19037874b5 100644 --- a/testers/sqlserver/java/generated-and-checked-in/testdb/order_items/OrderItemsFields.java +++ b/testers/sqlserver/java/generated-and-checked-in/testdb/order_items/OrderItemsFields.java @@ -99,12 +99,12 @@ public List _path() { } public ForeignKey fkOrders() { - return ForeignKey.of("FK__order_ite__order__47DBAE45") + return ForeignKey.of("FK__order_ite__order__44FF419A") .withColumnPair(orderId(), OrdersFields::orderId); } public ForeignKey fkProducts() { - return ForeignKey.of("FK__order_ite__produ__48CFD27E") + return ForeignKey.of("FK__order_ite__produ__45F365D3") .withColumnPair(productId(), ProductsFields::productId); } diff --git a/testers/sqlserver/java/generated-and-checked-in/testdb/orders/OrdersFields.java b/testers/sqlserver/java/generated-and-checked-in/testdb/orders/OrdersFields.java index 30e769068f..5b48bb14f0 100644 --- a/testers/sqlserver/java/generated-and-checked-in/testdb/orders/OrdersFields.java +++ b/testers/sqlserver/java/generated-and-checked-in/testdb/orders/OrdersFields.java @@ -85,7 +85,7 @@ public List _path() { } public ForeignKey fkCustomers() { - return ForeignKey.of("FK__orders__customer__440B1D61") + return ForeignKey.of("FK__orders__customer__412EB0B6") .withColumnPair(customerId(), CustomersFields::customerId); } diff --git a/testers/sqlserver/java/generated-and-checked-in/testdb/orders_with_customer_details/OrdersWithCustomerDetailsSqlRow.java b/testers/sqlserver/java/generated-and-checked-in/testdb/orders_with_customer_details/OrdersWithCustomerDetailsSqlRow.java index db61b93890..6bd887acc3 100644 --- a/testers/sqlserver/java/generated-and-checked-in/testdb/orders_with_customer_details/OrdersWithCustomerDetailsSqlRow.java +++ b/testers/sqlserver/java/generated-and-checked-in/testdb/orders_with_customer_details/OrdersWithCustomerDetailsSqlRow.java @@ -15,6 +15,7 @@ import java.util.Optional; import testdb.customers.CustomersId; import testdb.orders.OrdersId; +import testdb.userdefined.Email; /** SQL file: orders-with-customer-details.sql */ public record OrdersWithCustomerDetailsSqlRow( @@ -29,8 +30,14 @@ public record OrdersWithCustomerDetailsSqlRow( /** Points to {@link testdb.customers.CustomersRow#name()} */ @JsonProperty("customer_name") String customerName, /** Points to {@link testdb.customers.CustomersRow#email()} */ - @JsonProperty("customer_email") String customerEmail) - implements Tuple6, BigDecimal, CustomersId, String, String> { + @JsonProperty("customer_email") /* user-picked */ Email customerEmail) + implements Tuple6< + OrdersId, + Optional, + BigDecimal, + CustomersId, + String, /* user-picked */ + Email> { /** Points to {@link testdb.orders.OrdersRow#orderId()} */ public OrdersWithCustomerDetailsSqlRow withOrderId(OrdersId orderId) { return new OrdersWithCustomerDetailsSqlRow( @@ -67,7 +74,7 @@ public OrdersWithCustomerDetailsSqlRow withCustomerName(String customerName) { ; /** Points to {@link testdb.customers.CustomersRow#email()} */ - public OrdersWithCustomerDetailsSqlRow withCustomerEmail(String customerEmail) { + public OrdersWithCustomerDetailsSqlRow withCustomerEmail(/* user-picked */ Email customerEmail) { return new OrdersWithCustomerDetailsSqlRow( orderId, orderDate, totalAmount, customerId, customerName, customerEmail); } @@ -80,7 +87,7 @@ public OrdersWithCustomerDetailsSqlRow withCustomerEmail(String customerEmail) { SqlServerTypes.money, CustomersId.sqlServerType, SqlServerTypes.nvarchar, - SqlServerTypes.nvarchar, + Email.sqlServerType, OrdersWithCustomerDetailsSqlRow::new, row -> new Object[] { @@ -124,7 +131,7 @@ public String _5() { ; @Override - public String _6() { + public /* user-picked */ Email _6() { return customerEmail; } ; diff --git a/testers/sqlserver/java/generated-and-checked-in/testdb/userdefined/Email.java b/testers/sqlserver/java/generated-and-checked-in/testdb/userdefined/Email.java new file mode 100644 index 0000000000..75f8a123a4 --- /dev/null +++ b/testers/sqlserver/java/generated-and-checked-in/testdb/userdefined/Email.java @@ -0,0 +1,30 @@ +/** + * File has been automatically generated by `typo`. + * + *

IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package testdb.userdefined; + +import com.fasterxml.jackson.annotation.JsonValue; +import dev.typr.foundations.SqlServerType; +import dev.typr.foundations.SqlServerTypes; +import dev.typr.foundations.dsl.Bijection; + +/** Shared type `Email` Generated from TypeDefinitions matching */ +public record Email(@JsonValue String value) { + public Email withValue(String value) { + return new Email(value); + } + ; + + @Override + public java.lang.String toString() { + return value.toString(); + } + ; + + public static Bijection bijection = Bijection.of(Email::value, Email::new); + + public static SqlServerType sqlServerType = + SqlServerTypes.nvarchar.bimap(Email::new, Email::value); +} diff --git a/testers/sqlserver/java/src/java/testdb/DSLTest.java b/testers/sqlserver/java/src/java/testdb/DSLTest.java index f09d2c8153..ee798adf75 100644 --- a/testers/sqlserver/java/src/java/testdb/DSLTest.java +++ b/testers/sqlserver/java/src/java/testdb/DSLTest.java @@ -9,6 +9,7 @@ import testdb.customers.*; import testdb.orders.*; import testdb.products.*; +import testdb.userdefined.Email; /** * Tests for the DSL query builder functionality. Tests type-safe query building with where, @@ -118,7 +119,7 @@ public void testSelectWithProjection() { c -> { testInsert .Customers() - .with(r -> r.withName("ProjectionTest").withEmail("projection@test.com")) + .with(r -> r.withName("ProjectionTest").withEmail(new Email("projection@test.com"))) .insert(c); var results = @@ -130,7 +131,7 @@ public void testSelectWithProjection() { assertEquals(1, results.size()); assertEquals("ProjectionTest", results.get(0)._1()); - assertEquals("projection@test.com", results.get(0)._2()); + assertEquals(new Email("projection@test.com"), results.get(0)._2()); }); } @@ -194,15 +195,15 @@ public void testComplexWhereClause() { c -> { testInsert .Customers() - .with(r -> r.withName("Complex A").withEmail("complex-a@test.com")) + .with(r -> r.withName("Complex A").withEmail(new Email("complex-a@test.com"))) .insert(c); testInsert .Customers() - .with(r -> r.withName("Complex B").withEmail("complex-b@test.com")) + .with(r -> r.withName("Complex B").withEmail(new Email("complex-b@test.com"))) .insert(c); testInsert .Customers() - .with(r -> r.withName("Other").withEmail("other@test.com")) + .with(r -> r.withName("Other").withEmail(new Email("other@test.com"))) .insert(c); var results = @@ -213,7 +214,7 @@ public void testComplexWhereClause() { cust.name() .like("Complex%", Bijection.asString()) .and( - cust.email().like("%@test.com", Bijection.asString()), + cust.email().like("%@test.com", Email.bijection), Bijection.asBool())) .toList(c); diff --git a/testers/sqlserver/java/src/java/testdb/DatabaseFeaturesTest.java b/testers/sqlserver/java/src/java/testdb/DatabaseFeaturesTest.java index a027e24310..d36e42996f 100644 --- a/testers/sqlserver/java/src/java/testdb/DatabaseFeaturesTest.java +++ b/testers/sqlserver/java/src/java/testdb/DatabaseFeaturesTest.java @@ -15,6 +15,7 @@ import testdb.customer_orders_view.*; import testdb.customers.*; import testdb.orders.*; +import testdb.userdefined.Email; /** * Tests for SQL Server-specific features: MONEY, ROWVERSION, XML, JSON, UUID, DATETIMEOFFSET, @@ -285,7 +286,10 @@ public void testCustomerOrdersView() { var customer = testInsert .Customers() - .with(r -> r.withName("View Test Customer").withEmail("viewtest@example.com")) + .with( + r -> + r.withName("View Test Customer") + .withEmail(new Email("viewtest@example.com"))) .insert(c); var order = testInsert diff --git a/testers/sqlserver/java/src/java/testdb/MockRepoTest.java b/testers/sqlserver/java/src/java/testdb/MockRepoTest.java index f55b580e22..381062c3dd 100644 --- a/testers/sqlserver/java/src/java/testdb/MockRepoTest.java +++ b/testers/sqlserver/java/src/java/testdb/MockRepoTest.java @@ -10,6 +10,7 @@ import org.junit.Test; import testdb.customers.*; import testdb.products.*; +import testdb.userdefined.Email; /** * Tests for mock repository implementations. Mock repos provide in-memory implementations for unit @@ -38,7 +39,10 @@ public void testMockInsertAndSelect() { var mock = createCustomersMock(); var customer = new CustomersRow( - new CustomersId(1), "Mock User", "mock@test.com", Optional.of(LocalDateTime.now())); + new CustomersId(1), + "Mock User", + new Email("mock@test.com"), + Optional.of(LocalDateTime.now())); var inserted = mock.insert(customer, null); assertNotNull(inserted); @@ -56,7 +60,7 @@ public void testMockUpdate() { new CustomersRow( new CustomersId(2), "Original Name", - "original@test.com", + new Email("original@test.com"), Optional.of(LocalDateTime.now())); mock.insert(customer, null); @@ -73,7 +77,10 @@ public void testMockDelete() { var mock = createCustomersMock(); var customer = new CustomersRow( - new CustomersId(3), "To Delete", "delete@test.com", Optional.of(LocalDateTime.now())); + new CustomersId(3), + "To Delete", + new Email("delete@test.com"), + Optional.of(LocalDateTime.now())); mock.insert(customer, null); assertTrue(mock.selectById(new CustomersId(3), null).isPresent()); @@ -107,15 +114,24 @@ public void testMockDSLQuery() { mock.insert( new CustomersRow( - new CustomersId(100), "Alice", "alice@test.com", Optional.of(LocalDateTime.now())), + new CustomersId(100), + "Alice", + new Email("alice@test.com"), + Optional.of(LocalDateTime.now())), null); mock.insert( new CustomersRow( - new CustomersId(101), "Bob", "bob@test.com", Optional.of(LocalDateTime.now())), + new CustomersId(101), + "Bob", + new Email("bob@test.com"), + Optional.of(LocalDateTime.now())), null); mock.insert( new CustomersRow( - new CustomersId(102), "Charlie", "charlie@test.com", Optional.of(LocalDateTime.now())), + new CustomersId(102), + "Charlie", + new Email("charlie@test.com"), + Optional.of(LocalDateTime.now())), null); var results = @@ -135,15 +151,24 @@ public void testMockDSLCount() { mock.insert( new CustomersRow( - new CustomersId(200), "Count1", "count1@test.com", Optional.of(LocalDateTime.now())), + new CustomersId(200), + "Count1", + new Email("count1@test.com"), + Optional.of(LocalDateTime.now())), null); mock.insert( new CustomersRow( - new CustomersId(201), "Count2", "count2@test.com", Optional.of(LocalDateTime.now())), + new CustomersId(201), + "Count2", + new Email("count2@test.com"), + Optional.of(LocalDateTime.now())), null); mock.insert( new CustomersRow( - new CustomersId(202), "Other", "other@test.com", Optional.of(LocalDateTime.now())), + new CustomersId(202), + "Other", + new Email("other@test.com"), + Optional.of(LocalDateTime.now())), null); var count = @@ -161,7 +186,10 @@ public void testMockIsolation() { mock1.insert( new CustomersRow( - new CustomersId(400), "Mock1 Only", "mock1@test.com", Optional.of(LocalDateTime.now())), + new CustomersId(400), + "Mock1 Only", + new Email("mock1@test.com"), + Optional.of(LocalDateTime.now())), null); assertTrue(mock1.selectById(new CustomersId(400), null).isPresent()); diff --git a/testers/sqlserver/java/src/java/testdb/SqlScriptTest.java b/testers/sqlserver/java/src/java/testdb/SqlScriptTest.java index 7c1fb9c32e..9741e1834a 100644 --- a/testers/sqlserver/java/src/java/testdb/SqlScriptTest.java +++ b/testers/sqlserver/java/src/java/testdb/SqlScriptTest.java @@ -11,6 +11,7 @@ import testdb.find_customers_by_email.*; import testdb.orders.*; import testdb.products.*; +import testdb.userdefined.Email; /** * Tests for SQL script generated repositories. These tests exercise the typed query classes @@ -96,7 +97,7 @@ public void testFindCustomersByEmail() { var customer = testInsert .Customers() - .with(r -> r.withEmail("unique-sqlserver-test@example.com")) + .with(r -> r.withEmail(new Email("unique-sqlserver-test@example.com"))) .insert(c); var results = findByEmailRepo.apply("%unique-sqlserver-test%", c); diff --git a/testers/sqlserver/java/src/java/testdb/TestInsertTest.java b/testers/sqlserver/java/src/java/testdb/TestInsertTest.java index 3b387be0c6..6d44795792 100644 --- a/testers/sqlserver/java/src/java/testdb/TestInsertTest.java +++ b/testers/sqlserver/java/src/java/testdb/TestInsertTest.java @@ -4,6 +4,7 @@ import java.util.Random; import org.junit.Test; +import testdb.userdefined.Email; /** * Tests for the TestInsert helper class that generates random test data. Tests seeded randomness, @@ -115,11 +116,11 @@ public void testChainedCustomization() { testInsert .Customers() .with(r -> r.withName("First")) - .with(r -> r.withEmail("first@test.com")) + .with(r -> r.withEmail(new Email("first@test.com"))) .insert(c); assertEquals("First", row.name()); - assertEquals("first@test.com", row.email()); + assertEquals(new Email("first@test.com"), row.email()); }); } } diff --git a/testers/sqlserver/kotlin/generated-and-checked-in/testdb/TestInsert.kt b/testers/sqlserver/kotlin/generated-and-checked-in/testdb/TestInsert.kt index fa213ba130..2e5c28b79f 100644 --- a/testers/sqlserver/kotlin/generated-and-checked-in/testdb/TestInsert.kt +++ b/testers/sqlserver/kotlin/generated-and-checked-in/testdb/TestInsert.kt @@ -69,6 +69,7 @@ import testdb.products.ProductsRowUnsaved import testdb.test_connection.TestConnectionRepoImpl import testdb.test_connection.TestConnectionRow import testdb.test_connection.TestConnectionRowUnsaved +import testdb.userdefined.Email /** Methods to generate random data for `Ident(TestInsert)` */ data class TestInsert(val random: Random) { @@ -114,7 +115,7 @@ data class TestInsert(val random: Random) { fun Customers( name: String, - email: String, + email: /* user-picked */ Email, createdAt: Defaulted = UseDefault(), c: Connection ): CustomersRow = (CustomersRepoImpl()).insert(CustomersRowUnsaved(name = name, email = email, createdAt = createdAt), c) diff --git a/testers/sqlserver/kotlin/generated-and-checked-in/testdb/customer_orders_summary/CustomerOrdersSummarySqlRow.kt b/testers/sqlserver/kotlin/generated-and-checked-in/testdb/customer_orders_summary/CustomerOrdersSummarySqlRow.kt index 54a4739387..02ee8a2403 100644 --- a/testers/sqlserver/kotlin/generated-and-checked-in/testdb/customer_orders_summary/CustomerOrdersSummarySqlRow.kt +++ b/testers/sqlserver/kotlin/generated-and-checked-in/testdb/customer_orders_summary/CustomerOrdersSummarySqlRow.kt @@ -16,6 +16,7 @@ import java.math.BigDecimal import java.time.LocalDateTime import testdb.customers.CustomersId import testdb.orders.OrdersId +import testdb.userdefined.Email /** SQL file: customer-orders-summary.sql */ data class CustomerOrdersSummarySqlRow( @@ -24,7 +25,7 @@ data class CustomerOrdersSummarySqlRow( /** Points to [testdb.customers.CustomersRow.name] */ @field:JsonProperty("customer_name") val customerName: String, /** Points to [testdb.customers.CustomersRow.email] */ - @field:JsonProperty("customer_email") val customerEmail: String, + @field:JsonProperty("customer_email") val customerEmail: /* user-picked */ Email, /** Points to [testdb.orders.OrdersRow.orderId] */ @field:JsonProperty("order_count") val orderCount: OrdersId?, /** Points to [testdb.orders.OrdersRow.totalAmount] */ @@ -33,12 +34,12 @@ data class CustomerOrdersSummarySqlRow( @field:JsonProperty("avg_order_amount") val avgOrderAmount: BigDecimal?, /** Points to [testdb.orders.OrdersRow.orderDate] */ @field:JsonProperty("last_order_date") val lastOrderDate: LocalDateTime? -) : Tuple7 { +) : Tuple7 { override fun _1(): CustomersId = customerId override fun _2(): String = customerName - override fun _3(): String = customerEmail + override fun _3(): /* user-picked */ Email = customerEmail override fun _4(): OrdersId? = orderCount @@ -49,6 +50,6 @@ data class CustomerOrdersSummarySqlRow( override fun _7(): LocalDateTime? = lastOrderDate companion object { - val _rowParser: RowParser = RowParsers.of(CustomersId.sqlServerType, SqlServerTypes.nvarchar, SqlServerTypes.nvarchar, OrdersId.sqlServerType.nullable(), KotlinDbTypes.SqlServerTypes.money.nullable(), KotlinDbTypes.SqlServerTypes.money.nullable(), SqlServerTypes.datetime2.nullable(), { t0, t1, t2, t3, t4, t5, t6 -> CustomerOrdersSummarySqlRow(t0, t1, t2, t3, t4, t5, t6) }, { row -> arrayOf(row.customerId, row.customerName, row.customerEmail, row.orderCount, row.totalSpent, row.avgOrderAmount, row.lastOrderDate) }) + val _rowParser: RowParser = RowParsers.of(CustomersId.sqlServerType, SqlServerTypes.nvarchar, Email.sqlServerType, OrdersId.sqlServerType.nullable(), KotlinDbTypes.SqlServerTypes.money.nullable(), KotlinDbTypes.SqlServerTypes.money.nullable(), SqlServerTypes.datetime2.nullable(), { t0, t1, t2, t3, t4, t5, t6 -> CustomerOrdersSummarySqlRow(t0, t1, t2, t3, t4, t5, t6) }, { row -> arrayOf(row.customerId, row.customerName, row.customerEmail, row.orderCount, row.totalSpent, row.avgOrderAmount, row.lastOrderDate) }) } } \ No newline at end of file diff --git a/testers/sqlserver/kotlin/generated-and-checked-in/testdb/customers/CustomersFields.kt b/testers/sqlserver/kotlin/generated-and-checked-in/testdb/customers/CustomersFields.kt index b2caea5b39..3dcfb484aa 100644 --- a/testers/sqlserver/kotlin/generated-and-checked-in/testdb/customers/CustomersFields.kt +++ b/testers/sqlserver/kotlin/generated-and-checked-in/testdb/customers/CustomersFields.kt @@ -18,13 +18,14 @@ import dev.typr.foundations.kotlin.SqlExpr.OptField import dev.typr.foundations.kotlin.TupleExpr4 import java.time.LocalDateTime import kotlin.collections.List +import testdb.userdefined.Email -data class CustomersFields(val _path: List) : TupleExpr4, RelationStructure, FieldsBase { +data class CustomersFields(val _path: List) : TupleExpr4, RelationStructure, FieldsBase { override fun _1(): SqlExpr = customerId() override fun _2(): SqlExpr = name() - override fun _3(): SqlExpr = email() + override fun _3(): SqlExpr = email() override fun _4(): SqlExpr = createdAt() @@ -36,7 +37,7 @@ data class CustomersFields(val _path: List) : TupleExpr4 = IdField(_path, "customer_id", CustomersRow::customerId, null, null, { row, value -> row.copy(customerId = value) }, CustomersId.sqlServerType) - fun email(): Field = Field(_path, "email", CustomersRow::email, null, null, { row, value -> row.copy(email = value) }, SqlServerTypes.nvarchar) + fun email(): Field = Field(_path, "email", CustomersRow::email, null, null, { row, value -> row.copy(email = value) }, Email.sqlServerType) fun name(): Field = Field(_path, "name", CustomersRow::name, null, null, { row, value -> row.copy(name = value) }, SqlServerTypes.nvarchar) diff --git a/testers/sqlserver/kotlin/generated-and-checked-in/testdb/customers/CustomersRepo.kt b/testers/sqlserver/kotlin/generated-and-checked-in/testdb/customers/CustomersRepo.kt index d7ef6aa564..7bfa17cc13 100644 --- a/testers/sqlserver/kotlin/generated-and-checked-in/testdb/customers/CustomersRepo.kt +++ b/testers/sqlserver/kotlin/generated-and-checked-in/testdb/customers/CustomersRepo.kt @@ -12,6 +12,7 @@ import java.sql.Connection import kotlin.collections.Iterator import kotlin.collections.List import kotlin.collections.Map +import testdb.userdefined.Email interface CustomersRepo { abstract fun delete(): DeleteBuilder @@ -56,7 +57,7 @@ interface CustomersRepo { ): Map abstract fun selectByUniqueEmail( - email: String, + email: /* user-picked */ Email, c: Connection ): CustomersRow? diff --git a/testers/sqlserver/kotlin/generated-and-checked-in/testdb/customers/CustomersRepoImpl.kt b/testers/sqlserver/kotlin/generated-and-checked-in/testdb/customers/CustomersRepoImpl.kt index cea5073990..07b258870b 100644 --- a/testers/sqlserver/kotlin/generated-and-checked-in/testdb/customers/CustomersRepoImpl.kt +++ b/testers/sqlserver/kotlin/generated-and-checked-in/testdb/customers/CustomersRepoImpl.kt @@ -18,6 +18,7 @@ import kotlin.collections.Iterator import kotlin.collections.List import kotlin.collections.Map import kotlin.collections.MutableMap +import testdb.userdefined.Email class CustomersRepoImpl() : CustomersRepo { override fun delete(): DeleteBuilder = DeleteBuilder.of("[customers]", CustomersFields.structure, Dialect.SQLSERVER) @@ -39,7 +40,7 @@ class CustomersRepoImpl() : CustomersRepo { override fun insert( unsaved: CustomersRow, c: Connection - ): CustomersRow = Fragment.interpolate(Fragment.lit("insert into [customers]([name], [email], [created_at])\nOUTPUT INSERTED.[customer_id], INSERTED.[name], INSERTED.[email], INSERTED.[created_at]\nvalues ("), Fragment.encode(SqlServerTypes.nvarchar, unsaved.name), Fragment.lit(", "), Fragment.encode(SqlServerTypes.nvarchar, unsaved.email), Fragment.lit(", "), Fragment.encode(SqlServerTypes.datetime2.nullable(), unsaved.createdAt), Fragment.lit(")\n")) + ): CustomersRow = Fragment.interpolate(Fragment.lit("insert into [customers]([name], [email], [created_at])\nOUTPUT INSERTED.[customer_id], INSERTED.[name], INSERTED.[email], INSERTED.[created_at]\nvalues ("), Fragment.encode(SqlServerTypes.nvarchar, unsaved.name), Fragment.lit(", "), Fragment.encode(Email.sqlServerType, unsaved.email), Fragment.lit(", "), Fragment.encode(SqlServerTypes.datetime2.nullable(), unsaved.createdAt), Fragment.lit(")\n")) .updateReturning(CustomersRow._rowParser.exactlyOne()).runUnchecked(c) override fun insert( @@ -51,7 +52,7 @@ class CustomersRepoImpl() : CustomersRepo { columns.add(Fragment.lit("[name]")) values.add(Fragment.interpolate(Fragment.encode(SqlServerTypes.nvarchar, unsaved.name), Fragment.lit(""))) columns.add(Fragment.lit("[email]")) - values.add(Fragment.interpolate(Fragment.encode(SqlServerTypes.nvarchar, unsaved.email), Fragment.lit(""))) + values.add(Fragment.interpolate(Fragment.encode(Email.sqlServerType, unsaved.email), Fragment.lit(""))) unsaved.createdAt.visit( { }, { value -> columns.add(Fragment.lit("[created_at]")) @@ -89,9 +90,9 @@ class CustomersRepoImpl() : CustomersRepo { } override fun selectByUniqueEmail( - email: String, + email: /* user-picked */ Email, c: Connection - ): CustomersRow? = Fragment.interpolate(Fragment.lit("select [customer_id], [name], [email], [created_at]\nfrom [customers]\nwhere [email] = "), Fragment.encode(SqlServerTypes.nvarchar, email), Fragment.lit("\n")).query(CustomersRow._rowParser.first()).runUnchecked(c) + ): CustomersRow? = Fragment.interpolate(Fragment.lit("select [customer_id], [name], [email], [created_at]\nfrom [customers]\nwhere [email] = "), Fragment.encode(Email.sqlServerType, email), Fragment.lit("\n")).query(CustomersRow._rowParser.first()).runUnchecked(c) override fun update(): UpdateBuilder = UpdateBuilder.of("[customers]", CustomersFields.structure, CustomersRow._rowParser, Dialect.SQLSERVER) @@ -100,13 +101,13 @@ class CustomersRepoImpl() : CustomersRepo { c: Connection ): Boolean { val customerId: CustomersId = row.customerId - return Fragment.interpolate(Fragment.lit("update [customers]\nset [name] = "), Fragment.encode(SqlServerTypes.nvarchar, row.name), Fragment.lit(",\n[email] = "), Fragment.encode(SqlServerTypes.nvarchar, row.email), Fragment.lit(",\n[created_at] = "), Fragment.encode(SqlServerTypes.datetime2.nullable(), row.createdAt), Fragment.lit("\nwhere [customer_id] = "), Fragment.encode(CustomersId.sqlServerType, customerId), Fragment.lit("")).update().runUnchecked(c) > 0 + return Fragment.interpolate(Fragment.lit("update [customers]\nset [name] = "), Fragment.encode(SqlServerTypes.nvarchar, row.name), Fragment.lit(",\n[email] = "), Fragment.encode(Email.sqlServerType, row.email), Fragment.lit(",\n[created_at] = "), Fragment.encode(SqlServerTypes.datetime2.nullable(), row.createdAt), Fragment.lit("\nwhere [customer_id] = "), Fragment.encode(CustomersId.sqlServerType, customerId), Fragment.lit("")).update().runUnchecked(c) > 0 } override fun upsert( unsaved: CustomersRow, c: Connection - ): CustomersRow = Fragment.interpolate(Fragment.lit("MERGE INTO [customers] AS target\nUSING (VALUES ("), Fragment.encode(CustomersId.sqlServerType, unsaved.customerId), Fragment.lit(", "), Fragment.encode(SqlServerTypes.nvarchar, unsaved.name), Fragment.lit(", "), Fragment.encode(SqlServerTypes.nvarchar, unsaved.email), Fragment.lit(", "), Fragment.encode(SqlServerTypes.datetime2.nullable(), unsaved.createdAt), Fragment.lit(")) AS source([customer_id], [name], [email], [created_at])\nON target.[customer_id] = source.[customer_id]\nWHEN MATCHED THEN UPDATE SET [name] = source.[name],\n[email] = source.[email],\n[created_at] = source.[created_at]\nWHEN NOT MATCHED THEN INSERT ([customer_id], [name], [email], [created_at]) VALUES ("), Fragment.encode(CustomersId.sqlServerType, unsaved.customerId), Fragment.lit(", "), Fragment.encode(SqlServerTypes.nvarchar, unsaved.name), Fragment.lit(", "), Fragment.encode(SqlServerTypes.nvarchar, unsaved.email), Fragment.lit(", "), Fragment.encode(SqlServerTypes.datetime2.nullable(), unsaved.createdAt), Fragment.lit(")\nOUTPUT INSERTED.[customer_id], INSERTED.[name], INSERTED.[email], INSERTED.[created_at];")) + ): CustomersRow = Fragment.interpolate(Fragment.lit("MERGE INTO [customers] AS target\nUSING (VALUES ("), Fragment.encode(CustomersId.sqlServerType, unsaved.customerId), Fragment.lit(", "), Fragment.encode(SqlServerTypes.nvarchar, unsaved.name), Fragment.lit(", "), Fragment.encode(Email.sqlServerType, unsaved.email), Fragment.lit(", "), Fragment.encode(SqlServerTypes.datetime2.nullable(), unsaved.createdAt), Fragment.lit(")) AS source([customer_id], [name], [email], [created_at])\nON target.[customer_id] = source.[customer_id]\nWHEN MATCHED THEN UPDATE SET [name] = source.[name],\n[email] = source.[email],\n[created_at] = source.[created_at]\nWHEN NOT MATCHED THEN INSERT ([customer_id], [name], [email], [created_at]) VALUES ("), Fragment.encode(CustomersId.sqlServerType, unsaved.customerId), Fragment.lit(", "), Fragment.encode(SqlServerTypes.nvarchar, unsaved.name), Fragment.lit(", "), Fragment.encode(Email.sqlServerType, unsaved.email), Fragment.lit(", "), Fragment.encode(SqlServerTypes.datetime2.nullable(), unsaved.createdAt), Fragment.lit(")\nOUTPUT INSERTED.[customer_id], INSERTED.[name], INSERTED.[email], INSERTED.[created_at];")) .updateReturning(CustomersRow._rowParser.exactlyOne()) .runUnchecked(c) diff --git a/testers/sqlserver/kotlin/generated-and-checked-in/testdb/customers/CustomersRepoMock.kt b/testers/sqlserver/kotlin/generated-and-checked-in/testdb/customers/CustomersRepoMock.kt index a7230ccc90..cae7bd3c7b 100644 --- a/testers/sqlserver/kotlin/generated-and-checked-in/testdb/customers/CustomersRepoMock.kt +++ b/testers/sqlserver/kotlin/generated-and-checked-in/testdb/customers/CustomersRepoMock.kt @@ -21,6 +21,7 @@ import kotlin.collections.Iterator import kotlin.collections.List import kotlin.collections.Map import kotlin.collections.MutableMap +import testdb.userdefined.Email data class CustomersRepoMock( val toRow: (CustomersRowUnsaved) -> CustomersRow, @@ -91,7 +92,7 @@ data class CustomersRepoMock( ): Map = selectByIds(customerIds, c).associateBy({ row: CustomersRow -> row.customerId }) override fun selectByUniqueEmail( - email: String, + email: /* user-picked */ Email, c: Connection ): CustomersRow? = map.values.toList().find({ v -> (email == v.email) }) diff --git a/testers/sqlserver/kotlin/generated-and-checked-in/testdb/customers/CustomersRow.kt b/testers/sqlserver/kotlin/generated-and-checked-in/testdb/customers/CustomersRow.kt index 329a87743e..4ce7767d92 100644 --- a/testers/sqlserver/kotlin/generated-and-checked-in/testdb/customers/CustomersRow.kt +++ b/testers/sqlserver/kotlin/generated-and-checked-in/testdb/customers/CustomersRow.kt @@ -13,6 +13,7 @@ import dev.typr.foundations.kotlin.RowParsers import dev.typr.foundations.kotlin.nullable import java.time.LocalDateTime import testdb.customtypes.Defaulted +import testdb.userdefined.Email /** Table: customers * Primary key: customer_id @@ -21,15 +22,15 @@ data class CustomersRow( /** IDENTITY(1, 1) */ @field:JsonProperty("customer_id") val customerId: CustomersId, val name: String, - val email: String, + val email: /* user-picked */ Email, /** Default: (getdate()) */ @field:JsonProperty("created_at") val createdAt: LocalDateTime? -) : Tuple4 { +) : Tuple4 { override fun _1(): CustomersId = customerId override fun _2(): String = name - override fun _3(): String = email + override fun _3(): /* user-picked */ Email = email override fun _4(): LocalDateTime? = createdAt @@ -38,6 +39,6 @@ data class CustomersRow( fun toUnsavedRow(createdAt: Defaulted = Defaulted.Provided(this.createdAt)): CustomersRowUnsaved = CustomersRowUnsaved(name, email, createdAt) companion object { - val _rowParser: RowParser = RowParsers.of(CustomersId.sqlServerType, SqlServerTypes.nvarchar, SqlServerTypes.nvarchar, SqlServerTypes.datetime2.nullable(), { t0, t1, t2, t3 -> CustomersRow(t0, t1, t2, t3) }, { row -> arrayOf(row.customerId, row.name, row.email, row.createdAt) }) + val _rowParser: RowParser = RowParsers.of(CustomersId.sqlServerType, SqlServerTypes.nvarchar, Email.sqlServerType, SqlServerTypes.datetime2.nullable(), { t0, t1, t2, t3 -> CustomersRow(t0, t1, t2, t3) }, { row -> arrayOf(row.customerId, row.name, row.email, row.createdAt) }) } } \ No newline at end of file diff --git a/testers/sqlserver/kotlin/generated-and-checked-in/testdb/customers/CustomersRowUnsaved.kt b/testers/sqlserver/kotlin/generated-and-checked-in/testdb/customers/CustomersRowUnsaved.kt index 149fb6d45c..6e641ebdad 100644 --- a/testers/sqlserver/kotlin/generated-and-checked-in/testdb/customers/CustomersRowUnsaved.kt +++ b/testers/sqlserver/kotlin/generated-and-checked-in/testdb/customers/CustomersRowUnsaved.kt @@ -9,11 +9,12 @@ import com.fasterxml.jackson.annotation.JsonProperty import java.time.LocalDateTime import testdb.customtypes.Defaulted import testdb.customtypes.Defaulted.UseDefault +import testdb.userdefined.Email /** This class corresponds to a row in table `customers` which has not been persisted yet */ data class CustomersRowUnsaved( val name: String, - val email: String, + val email: /* user-picked */ Email, /** Default: (getdate()) */ @field:JsonProperty("created_at") val createdAt: Defaulted = UseDefault() ) { diff --git a/testers/sqlserver/kotlin/generated-and-checked-in/testdb/find_customers_by_email/FindCustomersByEmailSqlRow.kt b/testers/sqlserver/kotlin/generated-and-checked-in/testdb/find_customers_by_email/FindCustomersByEmailSqlRow.kt index 7eb22245e9..e152a7a8c5 100644 --- a/testers/sqlserver/kotlin/generated-and-checked-in/testdb/find_customers_by_email/FindCustomersByEmailSqlRow.kt +++ b/testers/sqlserver/kotlin/generated-and-checked-in/testdb/find_customers_by_email/FindCustomersByEmailSqlRow.kt @@ -13,6 +13,7 @@ import dev.typr.foundations.kotlin.RowParsers import dev.typr.foundations.kotlin.nullable import java.time.LocalDateTime import testdb.customers.CustomersId +import testdb.userdefined.Email /** SQL file: find-customers-by-email.sql */ data class FindCustomersByEmailSqlRow( @@ -21,19 +22,19 @@ data class FindCustomersByEmailSqlRow( /** Points to [testdb.customers.CustomersRow.name] */ @field:JsonProperty("customer_name") val customerName: String, /** Points to [testdb.customers.CustomersRow.email] */ - @field:JsonProperty("customer_email") val customerEmail: String, + @field:JsonProperty("customer_email") val customerEmail: /* user-picked */ Email, /** Points to [testdb.customers.CustomersRow.createdAt] */ @field:JsonProperty("created_at") val createdAt: LocalDateTime? -) : Tuple4 { +) : Tuple4 { override fun _1(): CustomersId = customerId override fun _2(): String = customerName - override fun _3(): String = customerEmail + override fun _3(): /* user-picked */ Email = customerEmail override fun _4(): LocalDateTime? = createdAt companion object { - val _rowParser: RowParser = RowParsers.of(CustomersId.sqlServerType, SqlServerTypes.nvarchar, SqlServerTypes.nvarchar, SqlServerTypes.datetime2.nullable(), { t0, t1, t2, t3 -> FindCustomersByEmailSqlRow(t0, t1, t2, t3) }, { row -> arrayOf(row.customerId, row.customerName, row.customerEmail, row.createdAt) }) + val _rowParser: RowParser = RowParsers.of(CustomersId.sqlServerType, SqlServerTypes.nvarchar, Email.sqlServerType, SqlServerTypes.datetime2.nullable(), { t0, t1, t2, t3 -> FindCustomersByEmailSqlRow(t0, t1, t2, t3) }, { row -> arrayOf(row.customerId, row.customerName, row.customerEmail, row.createdAt) }) } } \ No newline at end of file diff --git a/testers/sqlserver/kotlin/generated-and-checked-in/testdb/order_items/OrderItemsFields.kt b/testers/sqlserver/kotlin/generated-and-checked-in/testdb/order_items/OrderItemsFields.kt index f57683a6f2..85c729e2b2 100644 --- a/testers/sqlserver/kotlin/generated-and-checked-in/testdb/order_items/OrderItemsFields.kt +++ b/testers/sqlserver/kotlin/generated-and-checked-in/testdb/order_items/OrderItemsFields.kt @@ -40,9 +40,9 @@ data class OrderItemsFields(val _path: List) : TupleExpr5> = listOf(this.orderItemId().underlying, this.orderId().underlying, this.productId().underlying, this.quantity().underlying, this.price().underlying) - fun fkOrders(): ForeignKey = ForeignKey.of("FK__order_ite__order__47DBAE45").withColumnPair(orderId(), OrdersFields::orderId) + fun fkOrders(): ForeignKey = ForeignKey.of("FK__order_ite__order__44FF419A").withColumnPair(orderId(), OrdersFields::orderId) - fun fkProducts(): ForeignKey = ForeignKey.of("FK__order_ite__produ__48CFD27E").withColumnPair(productId(), ProductsFields::productId) + fun fkProducts(): ForeignKey = ForeignKey.of("FK__order_ite__produ__45F365D3").withColumnPair(productId(), ProductsFields::productId) fun orderId(): Field = Field(_path, "order_id", OrderItemsRow::orderId, null, null, { row, value -> row.copy(orderId = value) }, OrdersId.sqlServerType) diff --git a/testers/sqlserver/kotlin/generated-and-checked-in/testdb/orders/OrdersFields.kt b/testers/sqlserver/kotlin/generated-and-checked-in/testdb/orders/OrdersFields.kt index c48f43f706..ba44fb6fd8 100644 --- a/testers/sqlserver/kotlin/generated-and-checked-in/testdb/orders/OrdersFields.kt +++ b/testers/sqlserver/kotlin/generated-and-checked-in/testdb/orders/OrdersFields.kt @@ -40,7 +40,7 @@ data class OrdersFields(val _path: List) : TupleExpr4 = Field(_path, "customer_id", OrdersRow::customerId, null, null, { row, value -> row.copy(customerId = value) }, CustomersId.sqlServerType) - fun fkCustomers(): ForeignKey = ForeignKey.of("FK__orders__customer__440B1D61").withColumnPair(customerId(), CustomersFields::customerId) + fun fkCustomers(): ForeignKey = ForeignKey.of("FK__orders__customer__412EB0B6").withColumnPair(customerId(), CustomersFields::customerId) fun orderDate(): OptField = OptField(_path, "order_date", OrdersRow::orderDate, null, null, { row, value -> row.copy(orderDate = value) }, SqlServerTypes.datetime2) diff --git a/testers/sqlserver/kotlin/generated-and-checked-in/testdb/orders_with_customer_details/OrdersWithCustomerDetailsSqlRow.kt b/testers/sqlserver/kotlin/generated-and-checked-in/testdb/orders_with_customer_details/OrdersWithCustomerDetailsSqlRow.kt index a1ee1386a6..7f65f2be6f 100644 --- a/testers/sqlserver/kotlin/generated-and-checked-in/testdb/orders_with_customer_details/OrdersWithCustomerDetailsSqlRow.kt +++ b/testers/sqlserver/kotlin/generated-and-checked-in/testdb/orders_with_customer_details/OrdersWithCustomerDetailsSqlRow.kt @@ -16,6 +16,7 @@ import java.math.BigDecimal import java.time.LocalDateTime import testdb.customers.CustomersId import testdb.orders.OrdersId +import testdb.userdefined.Email /** SQL file: orders-with-customer-details.sql */ data class OrdersWithCustomerDetailsSqlRow( @@ -30,8 +31,8 @@ data class OrdersWithCustomerDetailsSqlRow( /** Points to [testdb.customers.CustomersRow.name] */ @field:JsonProperty("customer_name") val customerName: String, /** Points to [testdb.customers.CustomersRow.email] */ - @field:JsonProperty("customer_email") val customerEmail: String -) : Tuple6 { + @field:JsonProperty("customer_email") val customerEmail: /* user-picked */ Email +) : Tuple6 { override fun _1(): OrdersId = orderId override fun _2(): LocalDateTime? = orderDate @@ -42,9 +43,9 @@ data class OrdersWithCustomerDetailsSqlRow( override fun _5(): String = customerName - override fun _6(): String = customerEmail + override fun _6(): /* user-picked */ Email = customerEmail companion object { - val _rowParser: RowParser = RowParsers.of(OrdersId.sqlServerType, SqlServerTypes.datetime2.nullable(), KotlinDbTypes.SqlServerTypes.money, CustomersId.sqlServerType, SqlServerTypes.nvarchar, SqlServerTypes.nvarchar, { t0, t1, t2, t3, t4, t5 -> OrdersWithCustomerDetailsSqlRow(t0, t1, t2, t3, t4, t5) }, { row -> arrayOf(row.orderId, row.orderDate, row.totalAmount, row.customerId, row.customerName, row.customerEmail) }) + val _rowParser: RowParser = RowParsers.of(OrdersId.sqlServerType, SqlServerTypes.datetime2.nullable(), KotlinDbTypes.SqlServerTypes.money, CustomersId.sqlServerType, SqlServerTypes.nvarchar, Email.sqlServerType, { t0, t1, t2, t3, t4, t5 -> OrdersWithCustomerDetailsSqlRow(t0, t1, t2, t3, t4, t5) }, { row -> arrayOf(row.orderId, row.orderDate, row.totalAmount, row.customerId, row.customerName, row.customerEmail) }) } } \ No newline at end of file diff --git a/testers/sqlserver/kotlin/generated-and-checked-in/testdb/userdefined/Email.kt b/testers/sqlserver/kotlin/generated-and-checked-in/testdb/userdefined/Email.kt new file mode 100644 index 0000000000..a64f316a6b --- /dev/null +++ b/testers/sqlserver/kotlin/generated-and-checked-in/testdb/userdefined/Email.kt @@ -0,0 +1,28 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package testdb.userdefined + +import com.fasterxml.jackson.annotation.JsonValue +import dev.typr.foundations.SqlServerType +import dev.typr.foundations.SqlServerTypes +import dev.typr.foundations.kotlin.Bijection + +/** Shared type `Email` + * Generated from TypeDefinitions matching + */ +data class Email(@field:JsonValue val value: String) { + override fun toString(): kotlin.String { + return value.toString() + } + + companion object { + val bijection: Bijection = + Bijection.of(Email::value, ::Email) + + val sqlServerType: SqlServerType = + SqlServerTypes.nvarchar.bimap(::Email, Email::value) + } +} \ No newline at end of file diff --git a/testers/sqlserver/kotlin/src/kotlin/testdb/DSLTest.kt b/testers/sqlserver/kotlin/src/kotlin/testdb/DSLTest.kt index 303604c079..249fb0008b 100644 --- a/testers/sqlserver/kotlin/src/kotlin/testdb/DSLTest.kt +++ b/testers/sqlserver/kotlin/src/kotlin/testdb/DSLTest.kt @@ -5,6 +5,7 @@ import org.junit.Test import testdb.customers.* import testdb.orders.* import testdb.products.* +import testdb.userdefined.Email import java.math.BigDecimal import java.util.Random @@ -23,7 +24,7 @@ class DSLTest { SqlServerTestHelper.run { c -> val customer = testInsert.Customers( name = "Kotlin DSL Where Test", - email = "dsl-where@test.com", + email = Email("dsl-where@test.com"), c = c ) @@ -39,9 +40,9 @@ class DSLTest { @Test fun testSelectWithOrderBy() { SqlServerTestHelper.run { c -> - testInsert.Customers(name = "KotlinZebra", email = "zebra@test.com", c = c) - testInsert.Customers(name = "KotlinAlpha", email = "alpha@test.com", c = c) - testInsert.Customers(name = "KotlinMike", email = "mike@test.com", c = c) + testInsert.Customers(name = "KotlinZebra", email = Email("zebra@test.com"), c = c) + testInsert.Customers(name = "KotlinAlpha", email = Email("alpha@test.com"), c = c) + testInsert.Customers(name = "KotlinMike", email = Email("mike@test.com"), c = c) val results = customersRepo.select() .orderBy { cust -> cust.name().asc() } @@ -61,7 +62,7 @@ class DSLTest { fun testSelectWithLimit() { SqlServerTestHelper.run { c -> for (i in 0 until 10) { - testInsert.Customers(name = "KotlinLimitTest$i", email = "limit$i@test.com", c = c) + testInsert.Customers(name = "KotlinLimitTest$i", email = Email("limit$i@test.com"), c = c) } val results = customersRepo.select() @@ -76,9 +77,9 @@ class DSLTest { @Test fun testSelectWithCount() { SqlServerTestHelper.run { c -> - testInsert.Customers(name = "KotlinCountA", email = "counta@test.com", c = c) - testInsert.Customers(name = "KotlinCountB", email = "countb@test.com", c = c) - testInsert.Customers(name = "KotlinCountC", email = "countc@test.com", c = c) + testInsert.Customers(name = "KotlinCountA", email = Email("counta@test.com"), c = c) + testInsert.Customers(name = "KotlinCountB", email = Email("countb@test.com"), c = c) + testInsert.Customers(name = "KotlinCountC", email = Email("countc@test.com"), c = c) val count = customersRepo.select() .where { cust -> cust.name().like("KotlinCount%") } @@ -91,9 +92,9 @@ class DSLTest { @Test fun testSelectWithIn() { SqlServerTestHelper.run { c -> - val c1 = testInsert.Customers(name = "KotlinInTest1", email = "in1@test.com", c = c) - testInsert.Customers(name = "KotlinInTest2", email = "in2@test.com", c = c) - val c3 = testInsert.Customers(name = "KotlinInTest3", email = "in3@test.com", c = c) + val c1 = testInsert.Customers(name = "KotlinInTest1", email = Email("in1@test.com"), c = c) + testInsert.Customers(name = "KotlinInTest2", email = Email("in2@test.com"), c = c) + val c3 = testInsert.Customers(name = "KotlinInTest3", email = Email("in3@test.com"), c = c) val results = customersRepo.select() .where { cust -> cust.customerId().`in`(c1.customerId, c3.customerId) } @@ -108,7 +109,7 @@ class DSLTest { SqlServerTestHelper.run { c -> testInsert.Customers( name = "KotlinProjectionTest", - email = "kotlin-projection@test.com", + email = Email("kotlin-projection@test.com"), c = c ) @@ -119,7 +120,7 @@ class DSLTest { assertEquals(1, results.size) assertEquals("KotlinProjectionTest", results[0]._1()) - assertEquals("kotlin-projection@test.com", results[0]._2()) + assertEquals(Email("kotlin-projection@test.com"), results[0]._2()) } } @@ -143,7 +144,7 @@ class DSLTest { SqlServerTestHelper.run { c -> val customer = testInsert.Customers( name = "Orders DSL Customer", - email = "orders-dsl@test.com", + email = Email("orders-dsl@test.com"), c = c ) @@ -162,13 +163,13 @@ class DSLTest { @Test fun testComplexWhereClause() { SqlServerTestHelper.run { c -> - testInsert.Customers(name = "Kotlin Complex A", email = "kotlin-complex-a@test.com", c = c) - testInsert.Customers(name = "Kotlin Complex B", email = "kotlin-complex-b@test.com", c = c) - testInsert.Customers(name = "Kotlin Other", email = "kotlin-other@test.com", c = c) + testInsert.Customers(name = "Kotlin Complex A", email = Email("kotlin-complex-a@test.com"), c = c) + testInsert.Customers(name = "Kotlin Complex B", email = Email("kotlin-complex-b@test.com"), c = c) + testInsert.Customers(name = "Kotlin Other", email = Email("kotlin-other@test.com"), c = c) val results = customersRepo.select() .where { cust -> - cust.name().like("Kotlin Complex%").and(cust.email().like("%@test.com")) + cust.name().like("Kotlin Complex%").and(cust.email().like("%@test.com", Email.bijection)) } .toList(c) diff --git a/testers/sqlserver/kotlin/src/kotlin/testdb/DatabaseFeaturesTest.kt b/testers/sqlserver/kotlin/src/kotlin/testdb/DatabaseFeaturesTest.kt index 0865c5281f..9753ba7045 100644 --- a/testers/sqlserver/kotlin/src/kotlin/testdb/DatabaseFeaturesTest.kt +++ b/testers/sqlserver/kotlin/src/kotlin/testdb/DatabaseFeaturesTest.kt @@ -9,6 +9,7 @@ import testdb.all_scalar_types.* import testdb.customers.* import testdb.orders.* import testdb.customer_orders_view.* +import testdb.userdefined.Email import java.math.BigDecimal import java.time.* import java.util.Random @@ -220,7 +221,7 @@ class DatabaseFeaturesTest { SqlServerTestHelper.run { c -> val customer = testInsert.Customers( name = "View Test Customer", - email = "viewtest@example.com", + email = Email("viewtest@example.com"), c = c ) testInsert.Orders( @@ -242,8 +243,8 @@ class DatabaseFeaturesTest { @Test fun testViewDSLFilter() { SqlServerTestHelper.run { c -> - val customer1 = testInsert.Customers(name = "View Filter A", email = "filter-a@test.com", c = c) - val customer2 = testInsert.Customers(name = "View Filter B", email = "filter-b@test.com", c = c) + val customer1 = testInsert.Customers(name = "View Filter A", email = Email("filter-a@test.com"), c = c) + val customer2 = testInsert.Customers(name = "View Filter B", email = Email("filter-b@test.com"), c = c) testInsert.Orders(customerId = customer1.customerId, c = c) testInsert.Orders(customerId = customer2.customerId, c = c) diff --git a/testers/sqlserver/kotlin/src/kotlin/testdb/ForeignKeyTest.kt b/testers/sqlserver/kotlin/src/kotlin/testdb/ForeignKeyTest.kt index 96bcaf9714..a61b385372 100644 --- a/testers/sqlserver/kotlin/src/kotlin/testdb/ForeignKeyTest.kt +++ b/testers/sqlserver/kotlin/src/kotlin/testdb/ForeignKeyTest.kt @@ -6,6 +6,7 @@ import testdb.customers.* import testdb.order_items.* import testdb.orders.* import testdb.products.* +import testdb.userdefined.Email import java.math.BigDecimal import java.util.Random @@ -25,7 +26,7 @@ class ForeignKeyTest { SqlServerTestHelper.run { c -> val customer = testInsert.Customers( name = "FK Test Customer", - email = "fktest@example.com", + email = Email("fktest@example.com"), c = c ) val order = testInsert.Orders( @@ -48,7 +49,7 @@ class ForeignKeyTest { SqlServerTestHelper.run { c -> val customer = testInsert.Customers( name = "OrderItems Test Customer", - email = "orderitems@example.com", + email = Email("orderitems@example.com"), c = c ) val product = testInsert.Products(name = "Test Product", c = c) @@ -79,7 +80,7 @@ class ForeignKeyTest { SqlServerTestHelper.run { c -> val customer = testInsert.Customers( name = "Multiple Orders Customer", - email = "multiorder@example.com", + email = Email("multiorder@example.com"), c = c ) @@ -113,7 +114,7 @@ class ForeignKeyTest { SqlServerTestHelper.run { c -> val customer = testInsert.Customers( name = "Multiple Items Customer", - email = "multiitems@example.com", + email = Email("multiitems@example.com"), c = c ) val product1 = testInsert.Products(name = "Product 1", c = c) @@ -145,7 +146,7 @@ class ForeignKeyTest { SqlServerTestHelper.run { c -> val customer = testInsert.Customers( name = "Cascade Test Customer", - email = "cascade@example.com", + email = Email("cascade@example.com"), c = c ) val product = testInsert.Products(name = "Cascade Product", c = c) diff --git a/testers/sqlserver/kotlin/src/kotlin/testdb/MockRepoTest.kt b/testers/sqlserver/kotlin/src/kotlin/testdb/MockRepoTest.kt index 7ba01779f8..17edfb3bb5 100644 --- a/testers/sqlserver/kotlin/src/kotlin/testdb/MockRepoTest.kt +++ b/testers/sqlserver/kotlin/src/kotlin/testdb/MockRepoTest.kt @@ -5,6 +5,7 @@ import org.junit.Assert.* import org.junit.Test import testdb.customers.* import testdb.products.* +import testdb.userdefined.Email import java.math.BigDecimal import java.time.LocalDateTime import java.util.concurrent.atomic.AtomicInteger @@ -47,7 +48,7 @@ class MockRepoTest { val customer = CustomersRow( CustomersId(1), "Mock User", - "mock@test.com", + Email("mock@test.com"), LocalDateTime.now() ) @@ -66,7 +67,7 @@ class MockRepoTest { val customer = CustomersRow( CustomersId(2), "Original Name", - "original@test.com", + Email("original@test.com"), LocalDateTime.now() ) @@ -85,7 +86,7 @@ class MockRepoTest { val customer = CustomersRow( CustomersId(3), "To Delete", - "delete@test.com", + Email("delete@test.com"), LocalDateTime.now() ) @@ -119,9 +120,9 @@ class MockRepoTest { fun testMockDSLQuery() { val (mock, _) = createCustomersMock() - mock.insert(CustomersRow(CustomersId(100), "Alice", "alice@test.com", LocalDateTime.now()), MockConnection.instance) - mock.insert(CustomersRow(CustomersId(101), "Bob", "bob@test.com", LocalDateTime.now()), MockConnection.instance) - mock.insert(CustomersRow(CustomersId(102), "Charlie", "charlie@test.com", LocalDateTime.now()), MockConnection.instance) + mock.insert(CustomersRow(CustomersId(100), "Alice", Email("alice@test.com"), LocalDateTime.now()), MockConnection.instance) + mock.insert(CustomersRow(CustomersId(101), "Bob", Email("bob@test.com"), LocalDateTime.now()), MockConnection.instance) + mock.insert(CustomersRow(CustomersId(102), "Charlie", Email("charlie@test.com"), LocalDateTime.now()), MockConnection.instance) val results = mock.select() .where { customer -> customer.customerId().greaterThan(CustomersId(100)) } @@ -137,9 +138,9 @@ class MockRepoTest { fun testMockDSLCount() { val (mock, _) = createCustomersMock() - mock.insert(CustomersRow(CustomersId(200), "Count1", "count1@test.com", LocalDateTime.now()), MockConnection.instance) - mock.insert(CustomersRow(CustomersId(201), "Count2", "count2@test.com", LocalDateTime.now()), MockConnection.instance) - mock.insert(CustomersRow(CustomersId(202), "Other", "other@test.com", LocalDateTime.now()), MockConnection.instance) + mock.insert(CustomersRow(CustomersId(200), "Count1", Email("count1@test.com"), LocalDateTime.now()), MockConnection.instance) + mock.insert(CustomersRow(CustomersId(201), "Count2", Email("count2@test.com"), LocalDateTime.now()), MockConnection.instance) + mock.insert(CustomersRow(CustomersId(202), "Other", Email("other@test.com"), LocalDateTime.now()), MockConnection.instance) val count = mock.select() .where { customer -> customer.name().like("Count%") } @@ -154,7 +155,7 @@ class MockRepoTest { val (mock2, _) = createCustomersMock() mock1.insert( - CustomersRow(CustomersId(400), "Mock1 Only", "mock1@test.com", LocalDateTime.now()), + CustomersRow(CustomersId(400), "Mock1 Only", Email("mock1@test.com"), LocalDateTime.now()), MockConnection.instance ) diff --git a/testers/sqlserver/kotlin/src/kotlin/testdb/SqlScriptTest.kt b/testers/sqlserver/kotlin/src/kotlin/testdb/SqlScriptTest.kt index e97c2cac29..464d763b7d 100644 --- a/testers/sqlserver/kotlin/src/kotlin/testdb/SqlScriptTest.kt +++ b/testers/sqlserver/kotlin/src/kotlin/testdb/SqlScriptTest.kt @@ -4,6 +4,7 @@ import org.junit.Assert.* import org.junit.Test import testdb.customer_orders_summary.* import testdb.find_customers_by_email.* +import testdb.userdefined.Email import java.math.BigDecimal import java.util.Random @@ -21,7 +22,7 @@ class SqlScriptTest { SqlServerTestHelper.run { c -> val customer = testInsert.Customers( name = "Kotlin Summary Test", - email = "summary@test.com", + email = Email("summary@test.com"), c = c ) testInsert.Orders( @@ -48,7 +49,7 @@ class SqlScriptTest { SqlServerTestHelper.run { c -> val customer = testInsert.Customers( name = "KotlinPatternMatch Customer", - email = "pattern@test.com", + email = Email("pattern@test.com"), c = c ) testInsert.Orders(customerId = customer.customerId, c = c) @@ -69,7 +70,7 @@ class SqlScriptTest { SqlServerTestHelper.run { c -> val bigSpender = testInsert.Customers( name = "Kotlin Big Spender", - email = "big@test.com", + email = Email("big@test.com"), c = c ) testInsert.Orders( @@ -80,7 +81,7 @@ class SqlScriptTest { val smallSpender = testInsert.Customers( name = "Kotlin Small Spender", - email = "small@test.com", + email = Email("small@test.com"), c = c ) testInsert.Orders( @@ -105,7 +106,7 @@ class SqlScriptTest { SqlServerTestHelper.run { c -> val customer = testInsert.Customers( name = "Email Test", - email = "unique-kotlin-sqlserver@example.com", + email = Email("unique-kotlin-sqlserver@example.com"), c = c ) @@ -124,7 +125,7 @@ class SqlScriptTest { SqlServerTestHelper.run { c -> testInsert.Customers( name = "No Match", - email = "nomatch@test.com", + email = Email("nomatch@test.com"), c = c ) @@ -142,7 +143,7 @@ class SqlScriptTest { SqlServerTestHelper.run { c -> val customer = testInsert.Customers( name = "Kotlin Multi Order Customer", - email = "multi@test.com", + email = Email("multi@test.com"), c = c ) diff --git a/testers/sqlserver/kotlin/src/kotlin/testdb/SqlServerTestHelper.kt b/testers/sqlserver/kotlin/src/kotlin/testdb/SqlServerTestHelper.kt index 9089a7c24c..0f1f7f4163 100644 --- a/testers/sqlserver/kotlin/src/kotlin/testdb/SqlServerTestHelper.kt +++ b/testers/sqlserver/kotlin/src/kotlin/testdb/SqlServerTestHelper.kt @@ -2,6 +2,8 @@ package testdb import dev.typr.foundations.SqlFunction import dev.typr.foundations.Transactor +import dev.typr.foundations.connect.ConnectionSettings +import dev.typr.foundations.connect.TransactionIsolation import dev.typr.foundations.connect.sqlserver.SqlServerConfig import dev.typr.foundations.connect.sqlserver.SqlServerEncrypt import java.sql.Connection @@ -12,7 +14,13 @@ object SqlServerTestHelper { .encrypt(SqlServerEncrypt.FALSE) .build() - private val TRANSACTOR: Transactor = CONFIG.transactor(Transactor.testStrategy()) + // SQL Server uses pessimistic locking by default, which causes deadlocks when + // multiple tests run in parallel and access the same tables. READ_UNCOMMITTED + // prevents lock contention. Since tests rollback anyway, dirty reads are fine. + private val TRANSACTOR: Transactor = CONFIG.transactor( + ConnectionSettings.builder().transactionIsolation(TransactionIsolation.READ_UNCOMMITTED).build(), + Transactor.testStrategy() + ) fun apply(f: (Connection) -> T): T { return TRANSACTOR.execute(SqlFunction { conn -> f(conn) }) diff --git a/testers/sqlserver/kotlin/src/kotlin/testdb/TestInsertTest.kt b/testers/sqlserver/kotlin/src/kotlin/testdb/TestInsertTest.kt index 6ee6afe28a..00a327d14e 100644 --- a/testers/sqlserver/kotlin/src/kotlin/testdb/TestInsertTest.kt +++ b/testers/sqlserver/kotlin/src/kotlin/testdb/TestInsertTest.kt @@ -2,6 +2,7 @@ package testdb import org.junit.Assert.* import org.junit.Test +import testdb.userdefined.Email import java.math.BigDecimal import java.util.Random @@ -16,14 +17,14 @@ class TestInsertTest { SqlServerTestHelper.run { c -> val row = testInsert.Customers( name = "Test Customer", - email = "test@example.com", + email = Email("test@example.com"), c = c ) assertNotNull(row) assertNotNull(row.customerId) assertEquals("Test Customer", row.name) - assertEquals("test@example.com", row.email) + assertEquals(Email("test@example.com"), row.email) } } @@ -59,7 +60,7 @@ class TestInsertTest { SqlServerTestHelper.run { c -> val customer = testInsert.Customers( name = "FK Customer", - email = "fk@example.com", + email = Email("fk@example.com"), c = c ) @@ -78,7 +79,7 @@ class TestInsertTest { SqlServerTestHelper.run { c -> val customer = testInsert.Customers( name = "OrderItem Customer", - email = "orderitem@example.com", + email = Email("orderitem@example.com"), c = c ) val product = testInsert.Products( @@ -106,9 +107,9 @@ class TestInsertTest { @Test fun testMultipleInserts() { SqlServerTestHelper.run { c -> - val row1 = testInsert.Customers(name = "Customer1", email = "c1@test.com", c = c) - val row2 = testInsert.Customers(name = "Customer2", email = "c2@test.com", c = c) - val row3 = testInsert.Customers(name = "Customer3", email = "c3@test.com", c = c) + val row1 = testInsert.Customers(name = "Customer1", email = Email("c1@test.com"), c = c) + val row2 = testInsert.Customers(name = "Customer2", email = Email("c2@test.com"), c = c) + val row3 = testInsert.Customers(name = "Customer3", email = Email("c3@test.com"), c = c) assertNotEquals(row1.customerId, row2.customerId) assertNotEquals(row2.customerId, row3.customerId) @@ -119,13 +120,13 @@ class TestInsertTest { @Test fun testInsertWithDifferentValues() { SqlServerTestHelper.run { c -> - val row1 = testInsert.Customers(name = "Alpha", email = "alpha@test.com", c = c) - val row2 = testInsert.Customers(name = "Beta", email = "beta@test.com", c = c) + val row1 = testInsert.Customers(name = "Alpha", email = Email("alpha@test.com"), c = c) + val row2 = testInsert.Customers(name = "Beta", email = Email("beta@test.com"), c = c) assertEquals("Alpha", row1.name) assertEquals("Beta", row2.name) - assertEquals("alpha@test.com", row1.email) - assertEquals("beta@test.com", row2.email) + assertEquals(Email("alpha@test.com"), row1.email) + assertEquals(Email("beta@test.com"), row2.email) } } } diff --git a/testers/sqlserver/scala/generated-and-checked-in/testdb/TestInsert.scala b/testers/sqlserver/scala/generated-and-checked-in/testdb/TestInsert.scala index e98ca8c6f5..2b70addedd 100644 --- a/testers/sqlserver/scala/generated-and-checked-in/testdb/TestInsert.scala +++ b/testers/sqlserver/scala/generated-and-checked-in/testdb/TestInsert.scala @@ -67,6 +67,7 @@ import testdb.products.ProductsRowUnsaved import testdb.test_connection.TestConnectionRepoImpl import testdb.test_connection.TestConnectionRow import testdb.test_connection.TestConnectionRowUnsaved +import testdb.userdefined.Email /** Methods to generate random data for `Ident(TestInsert)` */ case class TestInsert(random: Random) { @@ -150,7 +151,7 @@ case class TestInsert(random: Random) { def Customers( name: String = random.alphanumeric.take(20).mkString, - email: String = random.alphanumeric.take(20).mkString, + email: /* user-picked */ Email = new Email(random.alphanumeric.take(20).mkString), createdAt: Defaulted[Option[LocalDateTime]] = new UseDefault() )(using c: Connection): CustomersRow = (new CustomersRepoImpl()).insert(new CustomersRowUnsaved(name = name, email = email, createdAt = createdAt))(using c) diff --git a/testers/sqlserver/scala/generated-and-checked-in/testdb/customer_orders_summary/CustomerOrdersSummarySqlRow.scala b/testers/sqlserver/scala/generated-and-checked-in/testdb/customer_orders_summary/CustomerOrdersSummarySqlRow.scala index dc1a18c7d2..b639ad2cec 100644 --- a/testers/sqlserver/scala/generated-and-checked-in/testdb/customer_orders_summary/CustomerOrdersSummarySqlRow.scala +++ b/testers/sqlserver/scala/generated-and-checked-in/testdb/customer_orders_summary/CustomerOrdersSummarySqlRow.scala @@ -15,6 +15,7 @@ import dev.typr.foundations.scala.ScalaDbTypes import java.time.LocalDateTime import testdb.customers.CustomersId import testdb.orders.OrdersId +import testdb.userdefined.Email /** SQL file: customer-orders-summary.sql */ case class CustomerOrdersSummarySqlRow( @@ -23,7 +24,7 @@ case class CustomerOrdersSummarySqlRow( /** Points to [[testdb.customers.CustomersRow.name]] */ @JsonProperty("customer_name") customerName: String, /** Points to [[testdb.customers.CustomersRow.email]] */ - @JsonProperty("customer_email") customerEmail: String, + @JsonProperty("customer_email") customerEmail: /* user-picked */ Email, /** Points to [[testdb.orders.OrdersRow.orderId]] */ @JsonProperty("order_count") orderCount: Option[OrdersId], /** Points to [[testdb.orders.OrdersRow.totalAmount]] */ @@ -32,12 +33,12 @@ case class CustomerOrdersSummarySqlRow( @JsonProperty("avg_order_amount") avgOrderAmount: Option[BigDecimal], /** Points to [[testdb.orders.OrdersRow.orderDate]] */ @JsonProperty("last_order_date") lastOrderDate: Option[LocalDateTime] -) extends Tuple7[CustomersId, String, String, Option[OrdersId], Option[BigDecimal], Option[BigDecimal], Option[LocalDateTime]] { +) extends Tuple7[CustomersId, String, /* user-picked */ Email, Option[OrdersId], Option[BigDecimal], Option[BigDecimal], Option[LocalDateTime]] { override def `_1`: CustomersId = customerId override def `_2`: String = customerName - override def `_3`: String = customerEmail + override def `_3`: /* user-picked */ Email = customerEmail override def `_4`: Option[OrdersId] = orderCount @@ -49,5 +50,5 @@ case class CustomerOrdersSummarySqlRow( } object CustomerOrdersSummarySqlRow { - val `_rowParser`: RowParser[CustomerOrdersSummarySqlRow] = RowParsers.of(CustomersId.sqlServerType, SqlServerTypes.nvarchar, SqlServerTypes.nvarchar, OrdersId.sqlServerType.nullable, ScalaDbTypes.SqlServerTypes.money.nullable, ScalaDbTypes.SqlServerTypes.money.nullable, SqlServerTypes.datetime2.nullable)(CustomerOrdersSummarySqlRow.apply)(row => Array[Any](row.customerId, row.customerName, row.customerEmail, row.orderCount, row.totalSpent, row.avgOrderAmount, row.lastOrderDate)) + val `_rowParser`: RowParser[CustomerOrdersSummarySqlRow] = RowParsers.of(CustomersId.sqlServerType, SqlServerTypes.nvarchar, Email.sqlServerType, OrdersId.sqlServerType.nullable, ScalaDbTypes.SqlServerTypes.money.nullable, ScalaDbTypes.SqlServerTypes.money.nullable, SqlServerTypes.datetime2.nullable)(CustomerOrdersSummarySqlRow.apply)(row => Array[Any](row.customerId, row.customerName, row.customerEmail, row.orderCount, row.totalSpent, row.avgOrderAmount, row.lastOrderDate)) } \ No newline at end of file diff --git a/testers/sqlserver/scala/generated-and-checked-in/testdb/customers/CustomersFields.scala b/testers/sqlserver/scala/generated-and-checked-in/testdb/customers/CustomersFields.scala index 46d2af3f21..cdcbe0d5ad 100644 --- a/testers/sqlserver/scala/generated-and-checked-in/testdb/customers/CustomersFields.scala +++ b/testers/sqlserver/scala/generated-and-checked-in/testdb/customers/CustomersFields.scala @@ -17,8 +17,9 @@ import dev.typr.foundations.scala.SqlExpr.IdField import dev.typr.foundations.scala.SqlExpr.OptField import dev.typr.foundations.scala.TupleExpr4 import java.time.LocalDateTime +import testdb.userdefined.Email -class CustomersFields(val `_path`: java.util.List[Path]) extends TupleExpr4[CustomersId, String, String, LocalDateTime] with RelationStructure[CustomersFields, CustomersRow] with FieldsBase[CustomersRow] { +class CustomersFields(val `_path`: java.util.List[Path]) extends TupleExpr4[CustomersId, String, /* user-picked */ Email, LocalDateTime] with RelationStructure[CustomersFields, CustomersRow] with FieldsBase[CustomersRow] { def customerId: IdField[CustomersId, CustomersRow] = { new IdField[CustomersId, CustomersRow]( _path, @@ -43,15 +44,15 @@ class CustomersFields(val `_path`: java.util.List[Path]) extends TupleExpr4[Cust ) } - def email: Field[String, CustomersRow] = { - new Field[String, CustomersRow]( + def email: Field[/* user-picked */ Email, CustomersRow] = { + new Field[/* user-picked */ Email, CustomersRow]( _path, "email", _.email, None, None, (row, value) => row.copy(email = value), - SqlServerTypes.nvarchar + Email.sqlServerType ) } @@ -77,7 +78,7 @@ class CustomersFields(val `_path`: java.util.List[Path]) extends TupleExpr4[Cust override def `_2`: SqlExpr[String] = name - override def `_3`: SqlExpr[String] = email + override def `_3`: SqlExpr[/* user-picked */ Email] = email override def `_4`: SqlExpr[LocalDateTime] = createdAt } diff --git a/testers/sqlserver/scala/generated-and-checked-in/testdb/customers/CustomersRepo.scala b/testers/sqlserver/scala/generated-and-checked-in/testdb/customers/CustomersRepo.scala index 32a3be5e13..0c49d96cb1 100644 --- a/testers/sqlserver/scala/generated-and-checked-in/testdb/customers/CustomersRepo.scala +++ b/testers/sqlserver/scala/generated-and-checked-in/testdb/customers/CustomersRepo.scala @@ -9,6 +9,7 @@ import dev.typr.foundations.scala.DeleteBuilder import dev.typr.foundations.scala.SelectBuilder import dev.typr.foundations.scala.UpdateBuilder import java.sql.Connection +import testdb.userdefined.Email trait CustomersRepo { def delete: DeleteBuilder[CustomersFields, CustomersRow] @@ -31,7 +32,7 @@ trait CustomersRepo { def selectByIdsTracked(customerIds: Array[CustomersId])(using c: Connection): Map[CustomersId, CustomersRow] - def selectByUniqueEmail(email: String)(using c: Connection): Option[CustomersRow] + def selectByUniqueEmail(email: /* user-picked */ Email)(using c: Connection): Option[CustomersRow] def update: UpdateBuilder[CustomersFields, CustomersRow] diff --git a/testers/sqlserver/scala/generated-and-checked-in/testdb/customers/CustomersRepoImpl.scala b/testers/sqlserver/scala/generated-and-checked-in/testdb/customers/CustomersRepoImpl.scala index 8a289a9aaa..fdda79e3cb 100644 --- a/testers/sqlserver/scala/generated-and-checked-in/testdb/customers/CustomersRepoImpl.scala +++ b/testers/sqlserver/scala/generated-and-checked-in/testdb/customers/CustomersRepoImpl.scala @@ -14,6 +14,7 @@ import dev.typr.foundations.scala.SelectBuilder import dev.typr.foundations.scala.UpdateBuilder import java.sql.Connection import scala.collection.mutable.ListBuffer +import testdb.userdefined.Email import dev.typr.foundations.scala.Fragment.sql class CustomersRepoImpl extends CustomersRepo { @@ -30,7 +31,7 @@ class CustomersRepoImpl extends CustomersRepo { override def insert(unsaved: CustomersRow)(using c: Connection): CustomersRow = { sql"""insert into [customers]([name], [email], [created_at]) OUTPUT INSERTED.[customer_id], INSERTED.[name], INSERTED.[email], INSERTED.[created_at] - values (${Fragment.encode(SqlServerTypes.nvarchar, unsaved.name)}, ${Fragment.encode(SqlServerTypes.nvarchar, unsaved.email)}, ${Fragment.encode(SqlServerTypes.datetime2.nullable, unsaved.createdAt)}) + values (${Fragment.encode(SqlServerTypes.nvarchar, unsaved.name)}, ${Fragment.encode(Email.sqlServerType, unsaved.email)}, ${Fragment.encode(SqlServerTypes.datetime2.nullable, unsaved.createdAt)}) """ .updateReturning(CustomersRow.`_rowParser`.exactlyOne()).runUnchecked(c) } @@ -41,7 +42,7 @@ class CustomersRepoImpl extends CustomersRepo { columns.addOne(Fragment.lit("[name]")): @scala.annotation.nowarn values.addOne(sql"${Fragment.encode(SqlServerTypes.nvarchar, unsaved.name)}"): @scala.annotation.nowarn columns.addOne(Fragment.lit("[email]")): @scala.annotation.nowarn - values.addOne(sql"${Fragment.encode(SqlServerTypes.nvarchar, unsaved.email)}"): @scala.annotation.nowarn + values.addOne(sql"${Fragment.encode(Email.sqlServerType, unsaved.email)}"): @scala.annotation.nowarn unsaved.createdAt.visit( { }, value => { columns.addOne(Fragment.lit("[created_at]")): @scala.annotation.nowarn; values.addOne(sql"${Fragment.encode(SqlServerTypes.datetime2.nullable, value)}"): @scala.annotation.nowarn } @@ -81,10 +82,10 @@ class CustomersRepoImpl extends CustomersRepo { return ret.toMap } - override def selectByUniqueEmail(email: String)(using c: Connection): Option[CustomersRow] = { + override def selectByUniqueEmail(email: /* user-picked */ Email)(using c: Connection): Option[CustomersRow] = { sql"""select [customer_id], [name], [email], [created_at] from [customers] - where [email] = ${Fragment.encode(SqlServerTypes.nvarchar, email)} + where [email] = ${Fragment.encode(Email.sqlServerType, email)} """.query(CustomersRow.`_rowParser`.first()).runUnchecked(c) } @@ -94,19 +95,19 @@ class CustomersRepoImpl extends CustomersRepo { val customerId: CustomersId = row.customerId return sql"""update [customers] set [name] = ${Fragment.encode(SqlServerTypes.nvarchar, row.name)}, - [email] = ${Fragment.encode(SqlServerTypes.nvarchar, row.email)}, + [email] = ${Fragment.encode(Email.sqlServerType, row.email)}, [created_at] = ${Fragment.encode(SqlServerTypes.datetime2.nullable, row.createdAt)} where [customer_id] = ${Fragment.encode(CustomersId.sqlServerType, customerId)}""".update().runUnchecked(c) > 0 } override def upsert(unsaved: CustomersRow)(using c: Connection): CustomersRow = { sql"""MERGE INTO [customers] AS target - USING (VALUES (${Fragment.encode(CustomersId.sqlServerType, unsaved.customerId)}, ${Fragment.encode(SqlServerTypes.nvarchar, unsaved.name)}, ${Fragment.encode(SqlServerTypes.nvarchar, unsaved.email)}, ${Fragment.encode(SqlServerTypes.datetime2.nullable, unsaved.createdAt)})) AS source([customer_id], [name], [email], [created_at]) + USING (VALUES (${Fragment.encode(CustomersId.sqlServerType, unsaved.customerId)}, ${Fragment.encode(SqlServerTypes.nvarchar, unsaved.name)}, ${Fragment.encode(Email.sqlServerType, unsaved.email)}, ${Fragment.encode(SqlServerTypes.datetime2.nullable, unsaved.createdAt)})) AS source([customer_id], [name], [email], [created_at]) ON target.[customer_id] = source.[customer_id] WHEN MATCHED THEN UPDATE SET [name] = source.[name], [email] = source.[email], [created_at] = source.[created_at] - WHEN NOT MATCHED THEN INSERT ([customer_id], [name], [email], [created_at]) VALUES (${Fragment.encode(CustomersId.sqlServerType, unsaved.customerId)}, ${Fragment.encode(SqlServerTypes.nvarchar, unsaved.name)}, ${Fragment.encode(SqlServerTypes.nvarchar, unsaved.email)}, ${Fragment.encode(SqlServerTypes.datetime2.nullable, unsaved.createdAt)}) + WHEN NOT MATCHED THEN INSERT ([customer_id], [name], [email], [created_at]) VALUES (${Fragment.encode(CustomersId.sqlServerType, unsaved.customerId)}, ${Fragment.encode(SqlServerTypes.nvarchar, unsaved.name)}, ${Fragment.encode(Email.sqlServerType, unsaved.email)}, ${Fragment.encode(SqlServerTypes.datetime2.nullable, unsaved.createdAt)}) OUTPUT INSERTED.[customer_id], INSERTED.[name], INSERTED.[email], INSERTED.[created_at];""" .updateReturning(CustomersRow.`_rowParser`.exactlyOne()) .runUnchecked(c) diff --git a/testers/sqlserver/scala/generated-and-checked-in/testdb/customers/CustomersRepoMock.scala b/testers/sqlserver/scala/generated-and-checked-in/testdb/customers/CustomersRepoMock.scala index 20eea5f1ca..6cdf10f02e 100644 --- a/testers/sqlserver/scala/generated-and-checked-in/testdb/customers/CustomersRepoMock.scala +++ b/testers/sqlserver/scala/generated-and-checked-in/testdb/customers/CustomersRepoMock.scala @@ -16,6 +16,7 @@ import dev.typr.foundations.scala.UpdateBuilderMock import dev.typr.foundations.scala.UpdateParams import java.lang.RuntimeException import java.sql.Connection +import testdb.userdefined.Email case class CustomersRepoMock( toRow: CustomersRowUnsaved => CustomersRow, @@ -53,7 +54,7 @@ case class CustomersRepoMock( override def selectByIdsTracked(customerIds: Array[CustomersId])(using c: Connection): Map[CustomersId, CustomersRow] = selectByIds(customerIds)(using c).map(x => (((row: CustomersRow) => row.customerId).apply(x), x)).toMap - override def selectByUniqueEmail(email: String)(using c: Connection): Option[CustomersRow] = map.values.toList.find(v => (email == v.email)) + override def selectByUniqueEmail(email: /* user-picked */ Email)(using c: Connection): Option[CustomersRow] = map.values.toList.find(v => (email == v.email)) override def update: UpdateBuilder[CustomersFields, CustomersRow] = UpdateBuilderMock(CustomersFields.structure, () => map.values.toList, UpdateParams.empty(), row => row) diff --git a/testers/sqlserver/scala/generated-and-checked-in/testdb/customers/CustomersRow.scala b/testers/sqlserver/scala/generated-and-checked-in/testdb/customers/CustomersRow.scala index 2148b14121..52012521a6 100644 --- a/testers/sqlserver/scala/generated-and-checked-in/testdb/customers/CustomersRow.scala +++ b/testers/sqlserver/scala/generated-and-checked-in/testdb/customers/CustomersRow.scala @@ -13,6 +13,7 @@ import dev.typr.foundations.scala.RowParser import dev.typr.foundations.scala.RowParsers import java.time.LocalDateTime import testdb.customtypes.Defaulted +import testdb.userdefined.Email /** Table: customers * Primary key: customer_id @@ -21,10 +22,10 @@ case class CustomersRow( /** IDENTITY(1, 1) */ @JsonProperty("customer_id") customerId: CustomersId, name: String, - email: String, + email: /* user-picked */ Email, /** Default: (getdate()) */ @JsonProperty("created_at") createdAt: Option[LocalDateTime] -) extends Tuple4[CustomersId, String, String, Option[LocalDateTime]] { +) extends Tuple4[CustomersId, String, /* user-picked */ Email, Option[LocalDateTime]] { def id: CustomersId = customerId def toUnsavedRow(createdAt: Defaulted[Option[LocalDateTime]] = Defaulted.Provided(this.createdAt)): CustomersRowUnsaved = new CustomersRowUnsaved(name, email, createdAt) @@ -33,11 +34,11 @@ case class CustomersRow( override def `_2`: String = name - override def `_3`: String = email + override def `_3`: /* user-picked */ Email = email override def `_4`: Option[LocalDateTime] = createdAt } object CustomersRow { - val `_rowParser`: RowParser[CustomersRow] = RowParsers.of(CustomersId.sqlServerType, SqlServerTypes.nvarchar, SqlServerTypes.nvarchar, SqlServerTypes.datetime2.nullable)(CustomersRow.apply)(row => Array[Any](row.customerId, row.name, row.email, row.createdAt)) + val `_rowParser`: RowParser[CustomersRow] = RowParsers.of(CustomersId.sqlServerType, SqlServerTypes.nvarchar, Email.sqlServerType, SqlServerTypes.datetime2.nullable)(CustomersRow.apply)(row => Array[Any](row.customerId, row.name, row.email, row.createdAt)) } \ No newline at end of file diff --git a/testers/sqlserver/scala/generated-and-checked-in/testdb/customers/CustomersRowUnsaved.scala b/testers/sqlserver/scala/generated-and-checked-in/testdb/customers/CustomersRowUnsaved.scala index bec9f63829..7c8642b9e4 100644 --- a/testers/sqlserver/scala/generated-and-checked-in/testdb/customers/CustomersRowUnsaved.scala +++ b/testers/sqlserver/scala/generated-and-checked-in/testdb/customers/CustomersRowUnsaved.scala @@ -9,11 +9,12 @@ import com.fasterxml.jackson.annotation.JsonProperty import java.time.LocalDateTime import testdb.customtypes.Defaulted import testdb.customtypes.Defaulted.UseDefault +import testdb.userdefined.Email /** This class corresponds to a row in table `customers` which has not been persisted yet */ case class CustomersRowUnsaved( name: String, - email: String, + email: /* user-picked */ Email, /** Default: (getdate()) */ @JsonProperty("created_at") createdAt: Defaulted[Option[LocalDateTime]] = new UseDefault() ) { diff --git a/testers/sqlserver/scala/generated-and-checked-in/testdb/find_customers_by_email/FindCustomersByEmailSqlRow.scala b/testers/sqlserver/scala/generated-and-checked-in/testdb/find_customers_by_email/FindCustomersByEmailSqlRow.scala index 07fc3a813e..109b462916 100644 --- a/testers/sqlserver/scala/generated-and-checked-in/testdb/find_customers_by_email/FindCustomersByEmailSqlRow.scala +++ b/testers/sqlserver/scala/generated-and-checked-in/testdb/find_customers_by_email/FindCustomersByEmailSqlRow.scala @@ -13,6 +13,7 @@ import dev.typr.foundations.scala.RowParser import dev.typr.foundations.scala.RowParsers import java.time.LocalDateTime import testdb.customers.CustomersId +import testdb.userdefined.Email /** SQL file: find-customers-by-email.sql */ case class FindCustomersByEmailSqlRow( @@ -21,19 +22,19 @@ case class FindCustomersByEmailSqlRow( /** Points to [[testdb.customers.CustomersRow.name]] */ @JsonProperty("customer_name") customerName: String, /** Points to [[testdb.customers.CustomersRow.email]] */ - @JsonProperty("customer_email") customerEmail: String, + @JsonProperty("customer_email") customerEmail: /* user-picked */ Email, /** Points to [[testdb.customers.CustomersRow.createdAt]] */ @JsonProperty("created_at") createdAt: Option[LocalDateTime] -) extends Tuple4[CustomersId, String, String, Option[LocalDateTime]] { +) extends Tuple4[CustomersId, String, /* user-picked */ Email, Option[LocalDateTime]] { override def `_1`: CustomersId = customerId override def `_2`: String = customerName - override def `_3`: String = customerEmail + override def `_3`: /* user-picked */ Email = customerEmail override def `_4`: Option[LocalDateTime] = createdAt } object FindCustomersByEmailSqlRow { - val `_rowParser`: RowParser[FindCustomersByEmailSqlRow] = RowParsers.of(CustomersId.sqlServerType, SqlServerTypes.nvarchar, SqlServerTypes.nvarchar, SqlServerTypes.datetime2.nullable)(FindCustomersByEmailSqlRow.apply)(row => Array[Any](row.customerId, row.customerName, row.customerEmail, row.createdAt)) + val `_rowParser`: RowParser[FindCustomersByEmailSqlRow] = RowParsers.of(CustomersId.sqlServerType, SqlServerTypes.nvarchar, Email.sqlServerType, SqlServerTypes.datetime2.nullable)(FindCustomersByEmailSqlRow.apply)(row => Array[Any](row.customerId, row.customerName, row.customerEmail, row.createdAt)) } \ No newline at end of file diff --git a/testers/sqlserver/scala/generated-and-checked-in/testdb/order_items/OrderItemsFields.scala b/testers/sqlserver/scala/generated-and-checked-in/testdb/order_items/OrderItemsFields.scala index 3cb9df4477..c9eab683b5 100644 --- a/testers/sqlserver/scala/generated-and-checked-in/testdb/order_items/OrderItemsFields.scala +++ b/testers/sqlserver/scala/generated-and-checked-in/testdb/order_items/OrderItemsFields.scala @@ -84,9 +84,9 @@ class OrderItemsFields(val `_path`: java.util.List[Path]) extends TupleExpr5[Ord ) } - def fkOrders: ForeignKey[OrdersFields, OrdersRow] = ForeignKey.of[OrdersFields, OrdersRow]("FK__order_ite__order__47DBAE45").withColumnPair[OrdersId](orderId, _.orderId) + def fkOrders: ForeignKey[OrdersFields, OrdersRow] = ForeignKey.of[OrdersFields, OrdersRow]("FK__order_ite__order__44FF419A").withColumnPair[OrdersId](orderId, _.orderId) - def fkProducts: ForeignKey[ProductsFields, ProductsRow] = ForeignKey.of[ProductsFields, ProductsRow]("FK__order_ite__produ__48CFD27E").withColumnPair[ProductsId](productId, _.productId) + def fkProducts: ForeignKey[ProductsFields, ProductsRow] = ForeignKey.of[ProductsFields, ProductsRow]("FK__order_ite__produ__45F365D3").withColumnPair[ProductsId](productId, _.productId) override def columns: java.util.List[FieldLike[?, OrderItemsRow]] = java.util.List.of(this.orderItemId.underlying, this.orderId.underlying, this.productId.underlying, this.quantity.underlying, this.price.underlying) diff --git a/testers/sqlserver/scala/generated-and-checked-in/testdb/orders/OrdersFields.scala b/testers/sqlserver/scala/generated-and-checked-in/testdb/orders/OrdersFields.scala index 700341f065..8cc972df7e 100644 --- a/testers/sqlserver/scala/generated-and-checked-in/testdb/orders/OrdersFields.scala +++ b/testers/sqlserver/scala/generated-and-checked-in/testdb/orders/OrdersFields.scala @@ -72,7 +72,7 @@ class OrdersFields(val `_path`: java.util.List[Path]) extends TupleExpr4[OrdersI ) } - def fkCustomers: ForeignKey[CustomersFields, CustomersRow] = ForeignKey.of[CustomersFields, CustomersRow]("FK__orders__customer__440B1D61").withColumnPair[CustomersId](customerId, _.customerId) + def fkCustomers: ForeignKey[CustomersFields, CustomersRow] = ForeignKey.of[CustomersFields, CustomersRow]("FK__orders__customer__412EB0B6").withColumnPair[CustomersId](customerId, _.customerId) override def columns: java.util.List[FieldLike[?, OrdersRow]] = java.util.List.of(this.orderId.underlying, this.customerId.underlying, this.orderDate.underlying, this.totalAmount.underlying) diff --git a/testers/sqlserver/scala/generated-and-checked-in/testdb/orders_with_customer_details/OrdersWithCustomerDetailsSqlRow.scala b/testers/sqlserver/scala/generated-and-checked-in/testdb/orders_with_customer_details/OrdersWithCustomerDetailsSqlRow.scala index dacc5955d8..1046992270 100644 --- a/testers/sqlserver/scala/generated-and-checked-in/testdb/orders_with_customer_details/OrdersWithCustomerDetailsSqlRow.scala +++ b/testers/sqlserver/scala/generated-and-checked-in/testdb/orders_with_customer_details/OrdersWithCustomerDetailsSqlRow.scala @@ -15,6 +15,7 @@ import dev.typr.foundations.scala.ScalaDbTypes import java.time.LocalDateTime import testdb.customers.CustomersId import testdb.orders.OrdersId +import testdb.userdefined.Email /** SQL file: orders-with-customer-details.sql */ case class OrdersWithCustomerDetailsSqlRow( @@ -29,8 +30,8 @@ case class OrdersWithCustomerDetailsSqlRow( /** Points to [[testdb.customers.CustomersRow.name]] */ @JsonProperty("customer_name") customerName: String, /** Points to [[testdb.customers.CustomersRow.email]] */ - @JsonProperty("customer_email") customerEmail: String -) extends Tuple6[OrdersId, Option[LocalDateTime], BigDecimal, CustomersId, String, String] { + @JsonProperty("customer_email") customerEmail: /* user-picked */ Email +) extends Tuple6[OrdersId, Option[LocalDateTime], BigDecimal, CustomersId, String, /* user-picked */ Email] { override def `_1`: OrdersId = orderId override def `_2`: Option[LocalDateTime] = orderDate @@ -41,9 +42,9 @@ case class OrdersWithCustomerDetailsSqlRow( override def `_5`: String = customerName - override def `_6`: String = customerEmail + override def `_6`: /* user-picked */ Email = customerEmail } object OrdersWithCustomerDetailsSqlRow { - val `_rowParser`: RowParser[OrdersWithCustomerDetailsSqlRow] = RowParsers.of(OrdersId.sqlServerType, SqlServerTypes.datetime2.nullable, ScalaDbTypes.SqlServerTypes.money, CustomersId.sqlServerType, SqlServerTypes.nvarchar, SqlServerTypes.nvarchar)(OrdersWithCustomerDetailsSqlRow.apply)(row => Array[Any](row.orderId, row.orderDate, row.totalAmount, row.customerId, row.customerName, row.customerEmail)) + val `_rowParser`: RowParser[OrdersWithCustomerDetailsSqlRow] = RowParsers.of(OrdersId.sqlServerType, SqlServerTypes.datetime2.nullable, ScalaDbTypes.SqlServerTypes.money, CustomersId.sqlServerType, SqlServerTypes.nvarchar, Email.sqlServerType)(OrdersWithCustomerDetailsSqlRow.apply)(row => Array[Any](row.orderId, row.orderDate, row.totalAmount, row.customerId, row.customerName, row.customerEmail)) } \ No newline at end of file diff --git a/testers/sqlserver/scala/generated-and-checked-in/testdb/precisetypes/Decimal10_2.scala b/testers/sqlserver/scala/generated-and-checked-in/testdb/precisetypes/Decimal10_2.scala index 045907af4c..05a1ce2667 100644 --- a/testers/sqlserver/scala/generated-and-checked-in/testdb/precisetypes/Decimal10_2.scala +++ b/testers/sqlserver/scala/generated-and-checked-in/testdb/precisetypes/Decimal10_2.scala @@ -33,7 +33,7 @@ object Decimal10_2 { given bijection: Bijection[Decimal10_2, BigDecimal] = Bijection.apply[Decimal10_2, BigDecimal](_.value)(Decimal10_2.apply) - def of(value: BigDecimal): Option[Decimal10_2] = { val scaled = value.setScale(2, scala.math.BigDecimal.RoundingMode.HALF_UP); if (scaled.precision <= 10) Some(new Decimal10_2(scaled)) else None } + def of(value: BigDecimal): Option[Decimal10_2] = { val scaled = value.setScale(2, BigDecimal.RoundingMode.HALF_UP); if (scaled.precision <= 10) Some(new Decimal10_2(scaled)) else None } def of(value: Int): Decimal10_2 = new Decimal10_2(BigDecimal(value)) @@ -43,5 +43,5 @@ object Decimal10_2 { given sqlServerType: SqlServerType[Decimal10_2] = ScalaDbTypes.SqlServerTypes.numeric.bimap(Decimal10_2.apply, _.value) - def unsafeForce(value: BigDecimal): Decimal10_2 = { val scaled = value.setScale(2, scala.math.BigDecimal.RoundingMode.HALF_UP); if (scaled.precision > 10) throw new IllegalArgumentException("Value exceeds precision(10, 2)"); new Decimal10_2(scaled) } + def unsafeForce(value: BigDecimal): Decimal10_2 = { val scaled = value.setScale(2, BigDecimal.RoundingMode.HALF_UP); if (scaled.precision > 10) throw new IllegalArgumentException("Value exceeds precision(10, 2)"); new Decimal10_2(scaled) } } \ No newline at end of file diff --git a/testers/sqlserver/scala/generated-and-checked-in/testdb/precisetypes/Decimal12_4.scala b/testers/sqlserver/scala/generated-and-checked-in/testdb/precisetypes/Decimal12_4.scala index 0a3b7defb0..d668bd98d6 100644 --- a/testers/sqlserver/scala/generated-and-checked-in/testdb/precisetypes/Decimal12_4.scala +++ b/testers/sqlserver/scala/generated-and-checked-in/testdb/precisetypes/Decimal12_4.scala @@ -33,7 +33,7 @@ object Decimal12_4 { given bijection: Bijection[Decimal12_4, BigDecimal] = Bijection.apply[Decimal12_4, BigDecimal](_.value)(Decimal12_4.apply) - def of(value: BigDecimal): Option[Decimal12_4] = { val scaled = value.setScale(4, scala.math.BigDecimal.RoundingMode.HALF_UP); if (scaled.precision <= 12) Some(new Decimal12_4(scaled)) else None } + def of(value: BigDecimal): Option[Decimal12_4] = { val scaled = value.setScale(4, BigDecimal.RoundingMode.HALF_UP); if (scaled.precision <= 12) Some(new Decimal12_4(scaled)) else None } def of(value: Int): Decimal12_4 = new Decimal12_4(BigDecimal(value)) @@ -43,5 +43,5 @@ object Decimal12_4 { given sqlServerType: SqlServerType[Decimal12_4] = ScalaDbTypes.SqlServerTypes.numeric.bimap(Decimal12_4.apply, _.value) - def unsafeForce(value: BigDecimal): Decimal12_4 = { val scaled = value.setScale(4, scala.math.BigDecimal.RoundingMode.HALF_UP); if (scaled.precision > 12) throw new IllegalArgumentException("Value exceeds precision(12, 4)"); new Decimal12_4(scaled) } + def unsafeForce(value: BigDecimal): Decimal12_4 = { val scaled = value.setScale(4, BigDecimal.RoundingMode.HALF_UP); if (scaled.precision > 12) throw new IllegalArgumentException("Value exceeds precision(12, 4)"); new Decimal12_4(scaled) } } \ No newline at end of file diff --git a/testers/sqlserver/scala/generated-and-checked-in/testdb/precisetypes/Decimal18_4.scala b/testers/sqlserver/scala/generated-and-checked-in/testdb/precisetypes/Decimal18_4.scala index e27f41c47f..d95bcd3a3b 100644 --- a/testers/sqlserver/scala/generated-and-checked-in/testdb/precisetypes/Decimal18_4.scala +++ b/testers/sqlserver/scala/generated-and-checked-in/testdb/precisetypes/Decimal18_4.scala @@ -33,7 +33,7 @@ object Decimal18_4 { given bijection: Bijection[Decimal18_4, BigDecimal] = Bijection.apply[Decimal18_4, BigDecimal](_.value)(Decimal18_4.apply) - def of(value: BigDecimal): Option[Decimal18_4] = { val scaled = value.setScale(4, scala.math.BigDecimal.RoundingMode.HALF_UP); if (scaled.precision <= 18) Some(new Decimal18_4(scaled)) else None } + def of(value: BigDecimal): Option[Decimal18_4] = { val scaled = value.setScale(4, BigDecimal.RoundingMode.HALF_UP); if (scaled.precision <= 18) Some(new Decimal18_4(scaled)) else None } def of(value: Int): Decimal18_4 = new Decimal18_4(BigDecimal(value)) @@ -43,5 +43,5 @@ object Decimal18_4 { given sqlServerType: SqlServerType[Decimal18_4] = ScalaDbTypes.SqlServerTypes.numeric.bimap(Decimal18_4.apply, _.value) - def unsafeForce(value: BigDecimal): Decimal18_4 = { val scaled = value.setScale(4, scala.math.BigDecimal.RoundingMode.HALF_UP); if (scaled.precision > 18) throw new IllegalArgumentException("Value exceeds precision(18, 4)"); new Decimal18_4(scaled) } + def unsafeForce(value: BigDecimal): Decimal18_4 = { val scaled = value.setScale(4, BigDecimal.RoundingMode.HALF_UP); if (scaled.precision > 18) throw new IllegalArgumentException("Value exceeds precision(18, 4)"); new Decimal18_4(scaled) } } \ No newline at end of file diff --git a/testers/sqlserver/scala/generated-and-checked-in/testdb/precisetypes/Decimal5_2.scala b/testers/sqlserver/scala/generated-and-checked-in/testdb/precisetypes/Decimal5_2.scala index d72f70fae2..7e06bec21b 100644 --- a/testers/sqlserver/scala/generated-and-checked-in/testdb/precisetypes/Decimal5_2.scala +++ b/testers/sqlserver/scala/generated-and-checked-in/testdb/precisetypes/Decimal5_2.scala @@ -33,7 +33,7 @@ object Decimal5_2 { given bijection: Bijection[Decimal5_2, BigDecimal] = Bijection.apply[Decimal5_2, BigDecimal](_.value)(Decimal5_2.apply) - def of(value: BigDecimal): Option[Decimal5_2] = { val scaled = value.setScale(2, scala.math.BigDecimal.RoundingMode.HALF_UP); if (scaled.precision <= 5) Some(new Decimal5_2(scaled)) else None } + def of(value: BigDecimal): Option[Decimal5_2] = { val scaled = value.setScale(2, BigDecimal.RoundingMode.HALF_UP); if (scaled.precision <= 5) Some(new Decimal5_2(scaled)) else None } def of(value: Int): Decimal5_2 = new Decimal5_2(BigDecimal(value)) @@ -43,5 +43,5 @@ object Decimal5_2 { given sqlServerType: SqlServerType[Decimal5_2] = ScalaDbTypes.SqlServerTypes.numeric.bimap(Decimal5_2.apply, _.value) - def unsafeForce(value: BigDecimal): Decimal5_2 = { val scaled = value.setScale(2, scala.math.BigDecimal.RoundingMode.HALF_UP); if (scaled.precision > 5) throw new IllegalArgumentException("Value exceeds precision(5, 2)"); new Decimal5_2(scaled) } + def unsafeForce(value: BigDecimal): Decimal5_2 = { val scaled = value.setScale(2, BigDecimal.RoundingMode.HALF_UP); if (scaled.precision > 5) throw new IllegalArgumentException("Value exceeds precision(5, 2)"); new Decimal5_2(scaled) } } \ No newline at end of file diff --git a/testers/sqlserver/scala/generated-and-checked-in/testdb/precisetypes/Decimal8_2.scala b/testers/sqlserver/scala/generated-and-checked-in/testdb/precisetypes/Decimal8_2.scala index e1dc52db5c..4c5325d171 100644 --- a/testers/sqlserver/scala/generated-and-checked-in/testdb/precisetypes/Decimal8_2.scala +++ b/testers/sqlserver/scala/generated-and-checked-in/testdb/precisetypes/Decimal8_2.scala @@ -33,7 +33,7 @@ object Decimal8_2 { given bijection: Bijection[Decimal8_2, BigDecimal] = Bijection.apply[Decimal8_2, BigDecimal](_.value)(Decimal8_2.apply) - def of(value: BigDecimal): Option[Decimal8_2] = { val scaled = value.setScale(2, scala.math.BigDecimal.RoundingMode.HALF_UP); if (scaled.precision <= 8) Some(new Decimal8_2(scaled)) else None } + def of(value: BigDecimal): Option[Decimal8_2] = { val scaled = value.setScale(2, BigDecimal.RoundingMode.HALF_UP); if (scaled.precision <= 8) Some(new Decimal8_2(scaled)) else None } def of(value: Int): Decimal8_2 = new Decimal8_2(BigDecimal(value)) @@ -43,5 +43,5 @@ object Decimal8_2 { given sqlServerType: SqlServerType[Decimal8_2] = ScalaDbTypes.SqlServerTypes.numeric.bimap(Decimal8_2.apply, _.value) - def unsafeForce(value: BigDecimal): Decimal8_2 = { val scaled = value.setScale(2, scala.math.BigDecimal.RoundingMode.HALF_UP); if (scaled.precision > 8) throw new IllegalArgumentException("Value exceeds precision(8, 2)"); new Decimal8_2(scaled) } + def unsafeForce(value: BigDecimal): Decimal8_2 = { val scaled = value.setScale(2, BigDecimal.RoundingMode.HALF_UP); if (scaled.precision > 8) throw new IllegalArgumentException("Value exceeds precision(8, 2)"); new Decimal8_2(scaled) } } \ No newline at end of file diff --git a/testers/sqlserver/scala/generated-and-checked-in/testdb/userdefined/Email.scala b/testers/sqlserver/scala/generated-and-checked-in/testdb/userdefined/Email.scala new file mode 100644 index 0000000000..2e2e8cb716 --- /dev/null +++ b/testers/sqlserver/scala/generated-and-checked-in/testdb/userdefined/Email.scala @@ -0,0 +1,22 @@ +/** + * File has been automatically generated by `typo`. + * + * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. + */ +package testdb.userdefined + +import com.fasterxml.jackson.annotation.JsonValue +import dev.typr.foundations.SqlServerType +import dev.typr.foundations.SqlServerTypes +import dev.typr.foundations.scala.Bijection + +/** Shared type `Email` + * Generated from TypeDefinitions matching + */ +case class Email(@JsonValue value: String) extends scala.AnyVal + +object Email { + given bijection: Bijection[Email, String] = Bijection.apply[Email, String](_.value)(Email.apply) + + given sqlServerType: SqlServerType[Email] = SqlServerTypes.nvarchar.bimap(Email.apply, _.value) +} \ No newline at end of file diff --git a/testers/sqlserver/scala/src/scala/testdb/DSLTest.scala b/testers/sqlserver/scala/src/scala/testdb/DSLTest.scala index 59d7d92b30..500d051909 100644 --- a/testers/sqlserver/scala/src/scala/testdb/DSLTest.scala +++ b/testers/sqlserver/scala/src/scala/testdb/DSLTest.scala @@ -6,6 +6,7 @@ import org.junit.Test import testdb.customers._ import testdb.orders._ import testdb.products._ +import testdb.userdefined.Email import scala.util.Random @@ -104,7 +105,7 @@ class DSLTest { def testSelectWithProjection(): Unit = withConnection { c => given java.sql.Connection = c - val _ = testInsert.Customers(name = "ProjectionTest", email = "projection@test.com") + val _ = testInsert.Customers(email = Email("projection@test.com"), name = "ProjectionTest") val results = customersRepo.select .where(_.name.isEqual("ProjectionTest")) @@ -113,7 +114,7 @@ class DSLTest { assertEquals(1, results.size) assertEquals("ProjectionTest", results.head._1) - assertEquals("projection@test.com", results.head._2) + assertEquals(Email("projection@test.com"), results.head._2) } @Test @@ -152,15 +153,15 @@ class DSLTest { def testComplexWhereClause(): Unit = withConnection { c => given java.sql.Connection = c - val _ = testInsert.Customers(name = "Complex A", email = "complex-a@test.com") - val _ = testInsert.Customers(name = "Complex B", email = "complex-b@test.com") - val _ = testInsert.Customers(name = "Other", email = "other@test.com") + val _ = testInsert.Customers(email = Email("complex-a@test.com"), name = "Complex A") + val _ = testInsert.Customers(email = Email("complex-b@test.com"), name = "Complex B") + val _ = testInsert.Customers(email = Email("other@test.com"), name = "Other") val results = customersRepo.select .where(cust => cust.name .like("Complex%", Bijection.asString()) - .and(cust.email.like("%@test.com", Bijection.asString())) + .and(cust.email.like("%@test.com", Email.bijection)) ) .toList diff --git a/testers/sqlserver/scala/src/scala/testdb/DatabaseFeaturesTest.scala b/testers/sqlserver/scala/src/scala/testdb/DatabaseFeaturesTest.scala index 92f00343a5..823dd5ea9c 100644 --- a/testers/sqlserver/scala/src/scala/testdb/DatabaseFeaturesTest.scala +++ b/testers/sqlserver/scala/src/scala/testdb/DatabaseFeaturesTest.scala @@ -5,6 +5,7 @@ import org.junit.Assert._ import org.junit.Test import testdb.all_scalar_types._ import testdb.customer_orders_view._ +import testdb.userdefined.Email import java.time._ import java.util.UUID @@ -212,7 +213,7 @@ class DatabaseFeaturesTest { def testCustomerOrdersView(): Unit = withConnection { c => given java.sql.Connection = c - val customer = testInsert.Customers(name = "View Test Customer", email = "viewtest@example.com") + val customer = testInsert.Customers(email = Email("viewtest@example.com"), name = "View Test Customer") val _ = testInsert.Orders(customer.customerId, totalAmount = BigDecimal("199.99")) val viewResults = customerOrdersViewRepo.select.toList @@ -228,8 +229,8 @@ class DatabaseFeaturesTest { def testViewDSLFilter(): Unit = withConnection { c => given java.sql.Connection = c - val customer1 = testInsert.Customers(name = "View Filter A") - val customer2 = testInsert.Customers(name = "View Filter B") + val customer1 = testInsert.Customers(email = Email("filter-a@example.com"), name = "View Filter A") + val customer2 = testInsert.Customers(email = Email("filter-b@example.com"), name = "View Filter B") val _ = testInsert.Orders(customer1.customerId) val _ = testInsert.Orders(customer2.customerId) diff --git a/testers/sqlserver/scala/src/scala/testdb/ForeignKeyTest.scala b/testers/sqlserver/scala/src/scala/testdb/ForeignKeyTest.scala index 4da2530b76..8406c7780f 100644 --- a/testers/sqlserver/scala/src/scala/testdb/ForeignKeyTest.scala +++ b/testers/sqlserver/scala/src/scala/testdb/ForeignKeyTest.scala @@ -6,6 +6,7 @@ import testdb.customers._ import testdb.order_items._ import testdb.orders._ import testdb.products._ +import testdb.userdefined.Email import scala.util.Random @@ -22,7 +23,7 @@ class ForeignKeyTest { def testOrderReferencesCustomer(): Unit = withConnection { c => given java.sql.Connection = c - val customer = testInsert.Customers() + val customer = testInsert.Customers(email = Email("order-ref@example.com")) val order = testInsert.Orders(customerId = customer.customerId, totalAmount = BigDecimal("99.99")) assertNotNull(order) @@ -37,7 +38,7 @@ class ForeignKeyTest { def testOrderItemsReferencesOrderAndProduct(): Unit = withConnection { c => given java.sql.Connection = c - val customer = testInsert.Customers() + val customer = testInsert.Customers(email = Email("item-refs@example.com")) val product = testInsert.Products() val order = testInsert.Orders(customerId = customer.customerId) @@ -63,7 +64,7 @@ class ForeignKeyTest { def testMultipleOrdersForCustomer(): Unit = withConnection { c => given java.sql.Connection = c - val customer = testInsert.Customers() + val customer = testInsert.Customers(email = Email("multi-orders@example.com")) val order1 = testInsert.Orders(customerId = customer.customerId, totalAmount = BigDecimal("100.00")) val order2 = testInsert.Orders(customerId = customer.customerId, totalAmount = BigDecimal("200.00")) @@ -81,7 +82,7 @@ class ForeignKeyTest { def testMultipleItemsForOrder(): Unit = withConnection { c => given java.sql.Connection = c - val customer = testInsert.Customers() + val customer = testInsert.Customers(email = Email("multi-items@example.com")) val product1 = testInsert.Products() val product2 = testInsert.Products() val order = testInsert.Orders(customerId = customer.customerId) @@ -109,7 +110,7 @@ class ForeignKeyTest { def testCascadingForeignKeys(): Unit = withConnection { c => given java.sql.Connection = c - val customer = testInsert.Customers() + val customer = testInsert.Customers(email = Email("cascade-fk@example.com")) val product = testInsert.Products() val order = testInsert.Orders(customerId = customer.customerId) val orderItem = testInsert.OrderItems( diff --git a/testers/sqlserver/scala/src/scala/testdb/MockRepoTest.scala b/testers/sqlserver/scala/src/scala/testdb/MockRepoTest.scala index 0f0a01769e..e45f25b62b 100644 --- a/testers/sqlserver/scala/src/scala/testdb/MockRepoTest.scala +++ b/testers/sqlserver/scala/src/scala/testdb/MockRepoTest.scala @@ -5,6 +5,7 @@ import org.junit.Assert._ import org.junit.Test import testdb.customers._ import testdb.products._ +import testdb.userdefined.Email import java.time.LocalDateTime import java.util.concurrent.atomic.AtomicInteger @@ -35,7 +36,7 @@ class MockRepoTest { val customer = CustomersRow( CustomersId(1), "Mock User", - "mock@test.com", + Email("mock@test.com"), Some(LocalDateTime.now()) ) @@ -54,7 +55,7 @@ class MockRepoTest { val customer = CustomersRow( CustomersId(2), "Original Name", - "original@test.com", + Email("original@test.com"), Some(LocalDateTime.now()) ) @@ -73,7 +74,7 @@ class MockRepoTest { val customer = CustomersRow( CustomersId(3), "To Delete", - "delete@test.com", + Email("delete@test.com"), Some(LocalDateTime.now()) ) @@ -111,7 +112,7 @@ class MockRepoTest { CustomersRow( CustomersId(100), "Alice", - "alice@test.com", + Email("alice@test.com"), Some(LocalDateTime.now()) ) )(using null) @@ -119,7 +120,7 @@ class MockRepoTest { CustomersRow( CustomersId(101), "Bob", - "bob@test.com", + Email("bob@test.com"), Some(LocalDateTime.now()) ) )(using null) @@ -127,7 +128,7 @@ class MockRepoTest { CustomersRow( CustomersId(102), "Charlie", - "charlie@test.com", + Email("charlie@test.com"), Some(LocalDateTime.now()) ) )(using null) @@ -150,7 +151,7 @@ class MockRepoTest { CustomersRow( CustomersId(200), "Count1", - "count1@test.com", + Email("count1@test.com"), Some(LocalDateTime.now()) ) )(using null) @@ -158,7 +159,7 @@ class MockRepoTest { CustomersRow( CustomersId(201), "Count2", - "count2@test.com", + Email("count2@test.com"), Some(LocalDateTime.now()) ) )(using null) @@ -166,7 +167,7 @@ class MockRepoTest { CustomersRow( CustomersId(202), "Other", - "other@test.com", + Email("other@test.com"), Some(LocalDateTime.now()) ) )(using null) @@ -187,7 +188,7 @@ class MockRepoTest { CustomersRow( CustomersId(400), "Mock1 Only", - "mock1@test.com", + Email("mock1@test.com"), Some(LocalDateTime.now()) ) )(using null) diff --git a/testers/sqlserver/scala/src/scala/testdb/SqlScriptTest.scala b/testers/sqlserver/scala/src/scala/testdb/SqlScriptTest.scala index 5cbdc53f8a..5efca4f97f 100644 --- a/testers/sqlserver/scala/src/scala/testdb/SqlScriptTest.scala +++ b/testers/sqlserver/scala/src/scala/testdb/SqlScriptTest.scala @@ -4,6 +4,7 @@ import org.junit.Assert._ import org.junit.Test import testdb.customer_orders_summary._ import testdb.find_customers_by_email._ +import testdb.userdefined.Email import scala.util.Random @@ -62,7 +63,7 @@ class SqlScriptTest { def testFindCustomersByEmail(): Unit = withConnection { c => given java.sql.Connection = c - val customer = testInsert.Customers(email = "unique-sqlserver-test@example.com") + val customer = testInsert.Customers(email = Email("unique-sqlserver-test@example.com")) val results = findByEmailRepo("%unique-sqlserver-test%") diff --git a/testers/sqlserver/scala/src/scala/testdb/TestInsertTest.scala b/testers/sqlserver/scala/src/scala/testdb/TestInsertTest.scala index fb3ce64fd3..7e3a46d791 100644 --- a/testers/sqlserver/scala/src/scala/testdb/TestInsertTest.scala +++ b/testers/sqlserver/scala/src/scala/testdb/TestInsertTest.scala @@ -2,6 +2,7 @@ package testdb import org.junit.Assert._ import org.junit.Test +import testdb.userdefined.Email import scala.util.Random @@ -14,7 +15,7 @@ class TestInsertTest { def testCustomersInsert(): Unit = withConnection { c => given java.sql.Connection = c - val row = testInsert.Customers() + val row = testInsert.Customers(email = Email("test@example.com")) assertNotNull(row) assertNotNull(row.customerId) assertNotNull(row.name) @@ -24,7 +25,7 @@ class TestInsertTest { def testCustomersWithCustomization(): Unit = withConnection { c => given java.sql.Connection = c - val row = testInsert.Customers(name = "Custom Name") + val row = testInsert.Customers(email = Email("custom@example.com"), name = "Custom Name") assertNotNull(row) assertEquals("Custom Name", row.name) @@ -57,7 +58,7 @@ class TestInsertTest { def testOrdersWithCustomerFK(): Unit = withConnection { c => given java.sql.Connection = c - val customer = testInsert.Customers() + val customer = testInsert.Customers(email = Email("orders-fk@example.com")) val order = testInsert.Orders(customer.customerId) @@ -69,7 +70,7 @@ class TestInsertTest { def testOrderItemsWithFKs(): Unit = withConnection { c => given java.sql.Connection = c - val customer = testInsert.Customers() + val customer = testInsert.Customers(email = Email("orderitems-fk@example.com")) val product = testInsert.Products() val order = testInsert.Orders(customer.customerId) @@ -84,9 +85,9 @@ class TestInsertTest { def testMultipleInserts(): Unit = withConnection { c => given java.sql.Connection = c - val row1 = testInsert.Customers() - val row2 = testInsert.Customers() - val row3 = testInsert.Customers() + val row1 = testInsert.Customers(email = Email("multi1@example.com")) + val row2 = testInsert.Customers(email = Email("multi2@example.com")) + val row3 = testInsert.Customers(email = Email("multi3@example.com")) assertNotEquals(row1.customerId, row2.customerId) assertNotEquals(row2.customerId, row3.customerId) @@ -100,9 +101,9 @@ class TestInsertTest { val testInsert1 = TestInsert(Random(123)) val testInsert2 = TestInsert(Random(123)) - val row1 = testInsert1.Customers() + val row1 = testInsert1.Customers(email = Email("seeded1@test.com")) // Use different email to avoid UNIQUE constraint violation (same seed = same email) - val row2 = testInsert2.Customers(email = "unique2@test.com") + val row2 = testInsert2.Customers(email = Email("seeded2@test.com")) assertEquals(row1.name, row2.name) } @@ -111,9 +112,9 @@ class TestInsertTest { def testChainedCustomization(): Unit = withConnection { c => given java.sql.Connection = c - val row = testInsert.Customers(name = "First", email = "first@test.com") + val row = testInsert.Customers(email = Email("first@test.com"), name = "First") assertEquals("First", row.name) - assertEquals("first@test.com", row.email) + assertEquals(Email("first@test.com"), row.email) } } diff --git a/testers/sqlserver/scala/src/scala/testdb/withConnection.scala b/testers/sqlserver/scala/src/scala/testdb/withConnection.scala index 19729496dd..703fe7ed44 100644 --- a/testers/sqlserver/scala/src/scala/testdb/withConnection.scala +++ b/testers/sqlserver/scala/src/scala/testdb/withConnection.scala @@ -1,6 +1,7 @@ package testdb import dev.typr.foundations.{SqlFunction, Transactor} +import dev.typr.foundations.connect.{ConnectionSettings, TransactionIsolation} import dev.typr.foundations.connect.sqlserver.{SqlServerConfig, SqlServerEncrypt} object withConnection { @@ -8,7 +9,13 @@ object withConnection { .builder("localhost", 1433, "typr", "sa", "YourStrong@Passw0rd") .encrypt(SqlServerEncrypt.FALSE) .build() - private val transactor = config.transactor(Transactor.testStrategy()) + // SQL Server uses pessimistic locking by default, which causes deadlocks when + // multiple tests run in parallel and access the same tables. READ_UNCOMMITTED + // prevents lock contention. Since tests rollback anyway, dirty reads are fine. + private val transactor = config.transactor( + ConnectionSettings.builder().transactionIsolation(TransactionIsolation.READ_UNCOMMITTED).build(), + Transactor.testStrategy() + ) def apply[T](f: java.sql.Connection => T): T = { transactor.execute[T]((conn => f(conn)): SqlFunction[java.sql.Connection, T]) diff --git a/typr-scripts/src/scala/scripts/CompileBenchmark.scala b/typr-scripts/src/scala/scripts/CompileBenchmark.scala index 5e3c7c285a..c102c69d83 100644 --- a/typr-scripts/src/scala/scripts/CompileBenchmark.scala +++ b/typr-scripts/src/scala/scripts/CompileBenchmark.scala @@ -66,19 +66,21 @@ object CompileBenchmark extends BleepScript("CompileBenchmark") { inlineImplicits = inlineImplicits, fixVerySlowImplicit = fixVerySlowImplicit ) - generate( - options, - metadb, - ProjectGraph( - name = "", - targetSources, - None, - Selector.ExcludePostgresInternal, // All - sqlFiles, - Nil - ), - Map.empty - ).foreach(_.overwriteFolder()) + generate + .orThrow( + options, + metadb, + ProjectGraph( + name = "", + targetSources, + None, + Selector.ExcludePostgresInternal, // All + sqlFiles, + Nil + ), + Map.empty + ) + .foreach(_.overwriteFolder()) crossIds.map { crossId => started.projectPaths(CrossProjectName(ProjectName(projectName), Some(crossId))).sourcesDirs.fromSourceLayout.foreach { p => diff --git a/typr-scripts/src/scala/scripts/GenerateCombinedTest.scala b/typr-scripts/src/scala/scripts/GenerateCombinedTest.scala new file mode 100644 index 0000000000..bfe8bcf0d6 --- /dev/null +++ b/typr-scripts/src/scala/scripts/GenerateCombinedTest.scala @@ -0,0 +1,200 @@ +package scripts + +import ryddig.{Formatter, LogLevel, LogPatterns, Loggers} +import typr.* +import typr.internal.FileSync +import typr.internal.codegen.LangJava +import typr.openapi.{OpenApiJsonLib, OpenApiOptions, OpenApiServerLib} + +import java.nio.file.Path + +/** Generates code for the combined multi-database + OpenAPI integration test. + * + * This demonstrates how TypeDefinitions can match across: + * - PostgreSQL database columns (firstname, lastname, currentflag, etc.) + * - MariaDB database columns (first_name, last_name, is_active, etc.) + * - OpenAPI fields (firstName, lastName, isActive, etc.) + * + * All three sources share the same TypeDefinitions, creating unified wrapper types. + */ +object GenerateCombinedTest { + val buildDir: Path = Path.of(sys.props("user.dir")) + + implicit val PathFormatter: Formatter[Path] = _.toUri.toString + + def main(args: Array[String]): Unit = + Loggers + .stdout(LogPatterns.interface(None, noColor = false), disableProgress = true) + .map(_.withMinLogLevel(LogLevel.info)) + .use { logger => + val typoLogger = TypoLogger.Console + + // TypeDefinitions that match across ALL sources: + // - PostgreSQL columns: firstname, lastname, middlename, currentflag, salariedflag + // - MariaDB columns: first_name, last_name, email, is_active + // - OpenAPI fields: firstName, lastName, middleName, email, isActive, isSalaried + val sharedTypeDefinitions = TypeDefinitions( + // Name types - match different naming conventions across sources + TypeEntry( + name = "FirstName", + db = DbMatch.column("firstname", "first_name"), + api = ApiMatch.name("firstName") + ), + TypeEntry( + name = "LastName", + db = DbMatch.column("lastname", "last_name"), + api = ApiMatch.name("lastName") + ), + TypeEntry( + name = "MiddleName", + db = DbMatch.column("middlename"), + api = ApiMatch.name("middleName") + ), + // Boolean flags with semantic meaning + TypeEntry( + name = "IsActive", + db = DbMatch.column("currentflag", "is_active", "activeflag"), + api = ApiMatch.name("isActive") + ), + TypeEntry( + name = "IsSalaried", + db = DbMatch.column("salariedflag"), + api = ApiMatch.name("isSalaried") + ) + ) + + // Configure the three sources + val postgresSource = SchemaSource.Database( + name = "postgres", + dataSource = TypoDataSource.hikariPostgres( + server = "localhost", + port = 6432, + databaseName = "Adventureworks", + username = "postgres", + password = "password" + ), + pkg = jvm.QIdent("combined.postgres"), + targetFolder = buildDir.resolve("testers/combined/java/generated-and-checked-in/postgres"), + testTargetFolder = None, + // Only include HR-related tables for this demo + selector = Selector.relationNames( + "employee", + "person", + "emailaddress", + "businessentity" + ) and Selector.schemas("humanresources", "person"), + schemaMode = SchemaMode.MultiSchema, + scriptsPaths = Nil, + dbLib = DbLibName.Typo, + nullabilityOverride = NullabilityOverride.Empty, + generateMockRepos = Selector.All, + enablePrimaryKeyType = Selector.All, + enableTestInserts = Selector.None, + enableFieldValue = Selector.None, + readonlyRepo = Selector.None, + enableDsl = true, + openEnums = Selector.None + ) + + val mariaDbSource = SchemaSource.Database( + name = "mariadb", + dataSource = TypoDataSource.hikariMariaDb( + server = "localhost", + port = 3307, + databaseName = "typr", + username = "typr", + password = "password" + ), + pkg = jvm.QIdent("combined.mariadb"), + targetFolder = buildDir.resolve("testers/combined/java/generated-and-checked-in/mariadb"), + testTargetFolder = None, + // Only include customer-related tables for this demo + selector = Selector.relationNames( + "customers", + "customer_status", + "addresses", + "products", + "brands", + "categories" + ), + schemaMode = SchemaMode.SingleSchema("typr"), + scriptsPaths = Nil, + dbLib = DbLibName.Typo, + nullabilityOverride = NullabilityOverride.Empty, + generateMockRepos = Selector.All, + enablePrimaryKeyType = Selector.All, + enableTestInserts = Selector.None, + enableFieldValue = Selector.None, + readonlyRepo = Selector.None, + enableDsl = true, + openEnums = Selector.None + ) + + val openApiSource = SchemaSource.OpenApi( + name = "api", + specPath = buildDir.resolve("testers/combined/specs/combined-api.yaml"), + pkg = jvm.QIdent("combined.api"), + targetFolder = buildDir.resolve("testers/combined/java/generated-and-checked-in/api"), + testTargetFolder = None, + options = OpenApiOptions + .default(jvm.QIdent("combined.api")) + .copy( + jsonLib = OpenApiJsonLib.Jackson, + serverLib = Some(OpenApiServerLib.QuarkusReactive), + generateValidation = true, + useGenericResponseTypes = false + ) + ) + + // Generate code from all sources with shared TypeDefinitions + // Shared types (FirstName, LastName, etc.) go to combined.shared package + val sharedTargetFolder = buildDir.resolve("testers/combined/java/generated-and-checked-in/shared") + + val config = GenerateConfig( + sharedPkg = Some(jvm.QIdent("combined.shared")), + sharedTargetFolder = Some(sharedTargetFolder), + sources = List(postgresSource, mariaDbSource, openApiSource), + lang = LangJava, + jsonLibs = List(JsonLibName.Jackson), + typeDefinitions = sharedTypeDefinitions, + typeOverride = TypeOverride.Empty, + fileHeader = Options.header, + logger = typoLogger, + inlineImplicits = true, + fixVerySlowImplicit = true, + keepDependencies = false, + debugTypes = false + ) + + logger.warn("Generating combined multi-database + OpenAPI code...") + logger.warn(s"TypeDefinitions: ${sharedTypeDefinitions.entries.map(_.name).mkString(", ")}") + + val results = generateFromConfig.applyAndWrite( + config, + softWrite = FileSync.SoftWrite.Yes(Set.empty) + ) + + results.foreach { case (source, synced) => + val changed = synced.filter { case (_, status) => status != FileSync.Synced.Unchanged } + logger.warn(s"Source '${source.name}': ${synced.size} files (${changed.size} changed)") + changed.foreach { case (path, status) => + logger.withContext("path", path).info(status.toString) + } + } + + // Git add the generated files (including shared types folder) + GitOps.gitAdd( + "add combined test files", + buildDir, + List( + "testers/combined/java/generated-and-checked-in/postgres", + "testers/combined/java/generated-and-checked-in/mariadb", + "testers/combined/java/generated-and-checked-in/api", + "testers/combined/java/generated-and-checked-in/shared" + ), + logger + ) + + logger.warn("Done!") + } +} diff --git a/typr-scripts/src/scala/scripts/GeneratedDb2.scala b/typr-scripts/src/scala/scripts/GeneratedDb2.scala index 163a05de48..75b9aaeea8 100644 --- a/typr-scripts/src/scala/scripts/GeneratedDb2.scala +++ b/typr-scripts/src/scala/scripts/GeneratedDb2.scala @@ -61,7 +61,7 @@ object GeneratedDb2 { val targetSources = buildDir.resolve(s"$projectPath/generated-and-checked-in$suffix") val newFiles: Generated = - generate(options, metadb, ProjectGraph(name = "", targetSources, None, selector, newSqlScripts, Nil), Map.empty).head + generate.orThrow(options, metadb, ProjectGraph(name = "", targetSources, None, selector, newSqlScripts, Nil), Map.empty).head newFiles .overwriteFolder(softWrite = FileSync.SoftWrite.Yes(Set.empty)) diff --git a/typr-scripts/src/scala/scripts/GeneratedDuckDb.scala b/typr-scripts/src/scala/scripts/GeneratedDuckDb.scala index 831307d7d5..2d061199a7 100644 --- a/typr-scripts/src/scala/scripts/GeneratedDuckDb.scala +++ b/typr-scripts/src/scala/scripts/GeneratedDuckDb.scala @@ -83,6 +83,10 @@ object GeneratedDuckDb { lang = lang, dbLib = Some(dbLib), jsonLibs = List(jsonLib), + typeDefinitions = TypeDefinitions( + // Shared type for email columns + TypeEntry.db("Email", DbMatch.column("email")) + ), generateMockRepos = Selector.All, enablePrimaryKeyType = Selector.All, enableTestInserts = Selector.All, @@ -92,7 +96,7 @@ object GeneratedDuckDb { val targetSources = buildDir.resolve(s"$projectPath/generated-and-checked-in$suffix") val newFiles: Generated = - generate(options, metadb, ProjectGraph(name = "", targetSources, None, selector, newSqlScripts, Nil), Map.empty).head + generate.orThrow(options, metadb, ProjectGraph(name = "", targetSources, None, selector, newSqlScripts, Nil), Map.empty).head val changedFiles = newFiles .overwriteFolder(softWrite = FileSync.SoftWrite.Yes(Set.empty)) diff --git a/typr-scripts/src/scala/scripts/GeneratedMariaDb.scala b/typr-scripts/src/scala/scripts/GeneratedMariaDb.scala index d7b406963b..2151cae2cf 100644 --- a/typr-scripts/src/scala/scripts/GeneratedMariaDb.scala +++ b/typr-scripts/src/scala/scripts/GeneratedMariaDb.scala @@ -55,6 +55,18 @@ object GeneratedMariaDb { lang = lang, dbLib = Some(dbLib), jsonLibs = List(jsonLib), + typeDefinitions = TypeDefinitions( + // Name types - shared across customer-related tables + TypeEntry.db("FirstName", DbMatch.column("first_name")), + TypeEntry.db("LastName", DbMatch.column("last_name")), + TypeEntry.db("Email", DbMatch.column("email", "contact_email")), + // Boolean flags with semantic meaning + TypeEntry.db("IsActive", DbMatch.column("is_active")), + TypeEntry.db("IsDefault", DbMatch.column("is_default")), + TypeEntry.db("IsPrimary", DbMatch.column("is_primary")), + TypeEntry.db("IsApproved", DbMatch.column("is_approved")), + TypeEntry.db("IsVerifiedPurchase", DbMatch.column("is_verified_purchase")) + ), generateMockRepos = Selector.All, enablePrimaryKeyType = Selector.All, enableTestInserts = Selector.All, @@ -64,7 +76,7 @@ object GeneratedMariaDb { val targetSources = buildDir.resolve(s"$projectPath/generated-and-checked-in$suffix") val newFiles: Generated = - generate(options, metadb, ProjectGraph(name = "", targetSources, None, selector, newSqlScripts, Nil), Map.empty).head + generate.orThrow(options, metadb, ProjectGraph(name = "", targetSources, None, selector, newSqlScripts, Nil), Map.empty).head newFiles .overwriteFolder(softWrite = FileSync.SoftWrite.Yes(Set.empty)) diff --git a/typr-scripts/src/scala/scripts/GeneratedOracle.scala b/typr-scripts/src/scala/scripts/GeneratedOracle.scala index 02a6211b7d..d3189d511e 100644 --- a/typr-scripts/src/scala/scripts/GeneratedOracle.scala +++ b/typr-scripts/src/scala/scripts/GeneratedOracle.scala @@ -81,6 +81,9 @@ object GeneratedOracle { lang = lang, dbLib = Some(dbLib), // Use Typo's Java DSL jsonLibs = List(jsonLib), // Jackson for JSON serialization + typeDefinitions = TypeDefinitions( + TypeEntry.db("Email", DbMatch.column("*email*")) + ), generateMockRepos = Selector.All, enablePrimaryKeyType = Selector.All, // Generate type-safe ID types enableTestInserts = Selector.All, // Generate test data factories @@ -90,7 +93,7 @@ object GeneratedOracle { val targetSources = buildDir.resolve(s"$projectPath/generated-and-checked-in$suffix") val newFiles: Generated = - generate(options, metadb, ProjectGraph(name = "", targetSources, None, selector, newSqlScripts, Nil), Map.empty).head + generate.orThrow(options, metadb, ProjectGraph(name = "", targetSources, None, selector, newSqlScripts, Nil), Map.empty).head val changedFiles = newFiles .overwriteFolder(softWrite = FileSync.SoftWrite.Yes(Set.empty)) diff --git a/typr-scripts/src/scala/scripts/GeneratedPostgres.scala b/typr-scripts/src/scala/scripts/GeneratedPostgres.scala index dbdf23c2d3..6e92e24f0a 100644 --- a/typr-scripts/src/scala/scripts/GeneratedPostgres.scala +++ b/typr-scripts/src/scala/scripts/GeneratedPostgres.scala @@ -112,10 +112,20 @@ object GeneratedPostgres { lang = lang, dbLib = Some(dbLib), jsonLibs = List(jsonLib), - typeOverride = TypeOverride.relation { - case (_, "firstname") => "adventureworks.userdefined.FirstName" - case ("sales.creditcard", "creditcardid") => "adventureworks.userdefined.CustomCreditcardId" + typeOverride = TypeOverride.relation { case ("sales.creditcard", "creditcardid") => + "adventureworks.userdefined.CustomCreditcardId" }, + typeDefinitions = TypeDefinitions( + // Name types - shared across person-related tables + TypeEntry.db("FirstName", DbMatch.column("firstname")), + TypeEntry.db("LastName", DbMatch.column("lastname")), + TypeEntry.db("MiddleName", DbMatch.column("middlename")), + // Boolean flags with semantic meaning + TypeEntry.db("CurrentFlag", DbMatch.column("currentflag")), + TypeEntry.db("SalariedFlag", DbMatch.column("salariedflag")), + TypeEntry.db("OnlineOrderFlag", DbMatch.column("onlineorderflag")), + TypeEntry.db("ActiveFlag", DbMatch.column("activeflag")) + ), openEnums = openEnumSelector, generateMockRepos = !Selector.relationNames("purchaseorderdetail"), enablePrimaryKeyType = !Selector.relationNames("billofmaterials"), @@ -128,7 +138,7 @@ object GeneratedPostgres { val targetSources = buildDir.resolve(s"$projectPath/generated-and-checked-in$suffix") val newFiles: Generated = - generate(options, metadb, ProjectGraph(name = "", targetSources, None, selector, newSqlScripts, Nil), relationNameToOpenEnum).head + generate.orThrow(options, metadb, ProjectGraph(name = "", targetSources, None, selector, newSqlScripts, Nil), relationNameToOpenEnum).head newFiles .overwriteFolder(softWrite = FileSync.SoftWrite.Yes(Set.empty)) diff --git a/typr-scripts/src/scala/scripts/GeneratedShowcase.scala b/typr-scripts/src/scala/scripts/GeneratedShowcase.scala index a92e3550b4..414118d7a6 100644 --- a/typr-scripts/src/scala/scripts/GeneratedShowcase.scala +++ b/typr-scripts/src/scala/scripts/GeneratedShowcase.scala @@ -116,7 +116,7 @@ object GeneratedShowcase { val targetSources = buildDir.resolve(s"showcase-generated/$dbName/$langName") val newFiles: Generated = - generate(options, metadb, ProjectGraph(name = "", targetSources, None, Selector.All, Nil, Nil), Map.empty).head + generate.orThrow(options, metadb, ProjectGraph(name = "", targetSources, None, Selector.All, Nil, Nil), Map.empty).head val changedFiles = newFiles .overwriteFolder(softWrite = FileSync.SoftWrite.Yes(Set.empty)) diff --git a/typr-scripts/src/scala/scripts/GeneratedSqlServer.scala b/typr-scripts/src/scala/scripts/GeneratedSqlServer.scala index 0d6e8744a3..e5a4be6e14 100644 --- a/typr-scripts/src/scala/scripts/GeneratedSqlServer.scala +++ b/typr-scripts/src/scala/scripts/GeneratedSqlServer.scala @@ -55,6 +55,10 @@ object GeneratedSqlServer { lang = lang, dbLib = Some(dbLib), jsonLibs = List(jsonLib), + typeDefinitions = TypeDefinitions( + // Shared type for email columns + TypeEntry.db("Email", DbMatch.column("email", "*_email")) + ), generateMockRepos = Selector.All, enablePrimaryKeyType = Selector.All, enableTestInserts = Selector.All, @@ -64,7 +68,7 @@ object GeneratedSqlServer { val targetSources = buildDir.resolve(s"$projectPath/generated-and-checked-in$suffix") val newFiles: Generated = - generate(options, metadb, ProjectGraph(name = "", targetSources, None, selector, newSqlScripts, Nil), Map.empty).head + generate.orThrow(options, metadb, ProjectGraph(name = "", targetSources, None, selector, newSqlScripts, Nil), Map.empty).head newFiles .overwriteFolder(softWrite = FileSync.SoftWrite.Yes(Set.empty)) diff --git a/typr-scripts/src/scala/scripts/ShowcaseGeneration.scala b/typr-scripts/src/scala/scripts/ShowcaseGeneration.scala index 49cd4a7168..4981b9c1cf 100644 --- a/typr-scripts/src/scala/scripts/ShowcaseGeneration.scala +++ b/typr-scripts/src/scala/scripts/ShowcaseGeneration.scala @@ -77,7 +77,7 @@ object ShowcaseGeneration { val targetSources = buildDir.resolve(s"showcase-generated/$dbName/$langName") val newFiles: Generated = - typr.internal.generate(options, metadb, ProjectGraph(name = "", targetSources, None, selector, sqlScripts, Nil), Map.empty).head + typr.internal.generate.orThrow(options, metadb, ProjectGraph(name = "", targetSources, None, selector, sqlScripts, Nil), Map.empty).head val changedFiles = newFiles .overwriteFolder(softWrite = FileSync.SoftWrite.Yes(Set.empty)) diff --git a/typr/src/scala/typr/GenerateConfig.scala b/typr/src/scala/typr/GenerateConfig.scala new file mode 100644 index 0000000000..bf756cfa74 --- /dev/null +++ b/typr/src/scala/typr/GenerateConfig.scala @@ -0,0 +1,114 @@ +package typr + +import java.nio.file.Path + +/** Configuration for unified code generation across multiple schema sources. + * + * This allows combining database schemas and OpenAPI specs in a single generation run, with shared TypeDefinitions that can match across all sources. + * + * @param sharedPkg + * Optional package for unified shared types. When specified, TypeDefinitions-matched types are aligned across sources and placed here instead of in each source's userdefined package. + * @param sharedTargetFolder + * Where to write shared type files. Required when sharedPkg is set. + * @param sources + * List of schema sources (databases, OpenAPI specs) + * @param lang + * Target language for code generation + * @param jsonLibs + * JSON libraries to generate support for + * @param typeDefinitions + * Shared type definitions that can match across all sources + * @param typeOverride + * Additional type overrides (applied after TypeDefinitions) + * @param fileHeader + * Header to add to generated files + * @param logger + * Logger for status messages + * @param inlineImplicits + * Whether to inline implicits (Scala-specific) + * @param fixVerySlowImplicit + * Whether to fix slow implicit resolution (Doobie-specific) + * @param keepDependencies + * Whether to keep transitive dependencies in output + * @param debugTypes + * Whether to output debug info about types + */ +case class GenerateConfig( + sharedPkg: Option[jvm.QIdent], + sharedTargetFolder: Option[Path], + sources: List[SchemaSource], + lang: Lang, + jsonLibs: List[JsonLibName], + typeDefinitions: TypeDefinitions, + typeOverride: TypeOverride, + fileHeader: String, + logger: TypoLogger, + inlineImplicits: Boolean, + fixVerySlowImplicit: Boolean, + keepDependencies: Boolean, + debugTypes: Boolean +) + +object GenerateConfig { + + /** Create a config with sensible defaults (no unified shared types) */ + def apply( + sources: List[SchemaSource], + lang: Lang + ): GenerateConfig = GenerateConfig( + sharedPkg = None, + sharedTargetFolder = None, + sources = sources, + lang = lang, + jsonLibs = List(JsonLibName.Jackson), + typeDefinitions = TypeDefinitions.Empty, + typeOverride = TypeOverride.Empty, + fileHeader = Options.header, + logger = TypoLogger.Console, + inlineImplicits = true, + fixVerySlowImplicit = true, + keepDependencies = false, + debugTypes = false + ) + + /** Create a config with unified shared types in a shared package */ + def withSharedTypes( + sharedPkg: jvm.QIdent, + sharedTargetFolder: java.nio.file.Path, + sources: List[SchemaSource], + lang: Lang + ): GenerateConfig = GenerateConfig( + sharedPkg = Some(sharedPkg), + sharedTargetFolder = Some(sharedTargetFolder), + sources = sources, + lang = lang, + jsonLibs = List(JsonLibName.Jackson), + typeDefinitions = TypeDefinitions.Empty, + typeOverride = TypeOverride.Empty, + fileHeader = Options.header, + logger = TypoLogger.Console, + inlineImplicits = true, + fixVerySlowImplicit = true, + keepDependencies = false, + debugTypes = false + ) + + /** Create a config with a single database source */ + def database( + source: SchemaSource.Database, + lang: Lang + ): GenerateConfig = apply(List(source), lang) + + /** Create a config with a single OpenAPI source */ + def openApi( + source: SchemaSource.OpenApi, + lang: Lang + ): GenerateConfig = apply(List(source), lang) + + /** Create a config combining database and OpenAPI sources */ + def combined( + databases: List[SchemaSource.Database], + apis: List[SchemaSource.OpenApi], + lang: Lang + ): GenerateConfig = apply(databases ++ apis, lang) +} diff --git a/typr/src/scala/typr/Options.scala b/typr/src/scala/typr/Options.scala index f4c4e24f06..d13ac77a28 100644 --- a/typr/src/scala/typr/Options.scala +++ b/typr/src/scala/typr/Options.scala @@ -28,7 +28,8 @@ case class Options( executionContext: ExecutionContext = ExecutionContext.global, schemaMode: SchemaMode = SchemaMode.MultiSchema, openEnums: Selector = Selector.None, - enablePreciseTypes: Selector = Selector.None + enablePreciseTypes: Selector = Selector.None, + typeDefinitions: TypeDefinitions = TypeDefinitions.Empty ) object Options { diff --git a/typr/src/scala/typr/SchemaSource.scala b/typr/src/scala/typr/SchemaSource.scala new file mode 100644 index 0000000000..e550d78066 --- /dev/null +++ b/typr/src/scala/typr/SchemaSource.scala @@ -0,0 +1,181 @@ +package typr + +import typr.openapi.{OpenApiOptions, ParsedSpec} + +import java.nio.file.Path + +/** A source of schema information for code generation. + * + * SchemaSource represents different origins of type information: + * - Database tables and views + * - OpenAPI specifications + * + * Multiple sources can be combined in a single generation run, allowing TypeDefinitions to match across all sources. + */ +sealed trait SchemaSource { + + /** Unique name for this source (used in error messages and logging) */ + def name: String + + /** The output package for generated code from this source */ + def pkg: jvm.QIdent + + /** Output directory for generated code */ + def targetFolder: Path + + /** Optional test output directory */ + def testTargetFolder: Option[Path] +} + +object SchemaSource { + + /** A database schema source. + * + * @param name + * Unique identifier for this database (e.g., "postgres", "mariadb") + * @param dataSource + * Connection to the database + * @param pkg + * Output package for generated code + * @param targetFolder + * Output directory + * @param testTargetFolder + * Optional test output directory + * @param selector + * Which tables/views to include + * @param schemaMode + * How to handle database schemas + * @param scriptsPaths + * Paths to SQL script files + * @param dbLib + * Database library to use (Typo, Anorm, etc.) + * @param nullabilityOverride + * Custom nullability rules + * @param generateMockRepos + * Which tables get mock repositories + * @param enablePrimaryKeyType + * Which tables get type-safe ID types + * @param enableTestInserts + * Which tables get test data factories + * @param enableFieldValue + * Which tables get FieldValue support + * @param readonlyRepo + * Which tables get read-only repositories + * @param enableDsl + * Whether to generate SQL DSL + * @param openEnums + * Which tables use open enums + */ + case class Database( + name: String, + dataSource: TypoDataSource, + pkg: jvm.QIdent, + targetFolder: Path, + testTargetFolder: Option[Path], + selector: Selector, + schemaMode: SchemaMode, + scriptsPaths: List[Path], + dbLib: DbLibName, + nullabilityOverride: NullabilityOverride, + generateMockRepos: Selector, + enablePrimaryKeyType: Selector, + enableTestInserts: Selector, + enableFieldValue: Selector, + readonlyRepo: Selector, + enableDsl: Boolean, + openEnums: Selector + ) extends SchemaSource + + object Database { + def apply( + name: String, + dataSource: TypoDataSource, + pkg: jvm.QIdent, + targetFolder: Path + ): Database = Database( + name = name, + dataSource = dataSource, + pkg = pkg, + targetFolder = targetFolder, + testTargetFolder = None, + selector = Selector.ExcludePostgresInternal, + schemaMode = SchemaMode.MultiSchema, + scriptsPaths = Nil, + dbLib = DbLibName.Typo, + nullabilityOverride = NullabilityOverride.Empty, + generateMockRepos = Selector.All, + enablePrimaryKeyType = Selector.All, + enableTestInserts = Selector.None, + enableFieldValue = Selector.None, + readonlyRepo = Selector.None, + enableDsl = true, + openEnums = Selector.None + ) + } + + /** An OpenAPI specification source. + * + * @param name + * Unique identifier for this spec (e.g., "petstore-api") + * @param specPath + * Path to the OpenAPI YAML/JSON file + * @param pkg + * Output package for generated code + * @param targetFolder + * Output directory + * @param testTargetFolder + * Optional test output directory + * @param options + * OpenAPI-specific generation options + */ + case class OpenApi( + name: String, + specPath: Path, + pkg: jvm.QIdent, + targetFolder: Path, + testTargetFolder: Option[Path], + options: OpenApiOptions + ) extends SchemaSource + + object OpenApi { + def apply( + name: String, + specPath: Path, + pkg: jvm.QIdent, + targetFolder: Path, + options: OpenApiOptions + ): OpenApi = OpenApi( + name = name, + specPath = specPath, + pkg = pkg, + targetFolder = targetFolder, + testTargetFolder = None, + options = options + ) + } + + /** An already-parsed OpenAPI specification source. + * + * Useful when you want to manipulate the spec before generation, or when generating from in-memory specs. + */ + case class OpenApiParsed( + name: String, + spec: ParsedSpec, + pkg: jvm.QIdent, + targetFolder: Path, + testTargetFolder: Option[Path], + options: OpenApiOptions + ) extends SchemaSource + + /** Synthetic source for shared/aligned types generated across multiple sources. + * + * This is created internally by generateFromConfig when sharedPkg is set. + */ + case class Shared( + pkg: jvm.QIdent, + targetFolder: Path + ) extends SchemaSource { + def name: String = "shared" + def testTargetFolder: Option[Path] = None + } +} diff --git a/typr/src/scala/typr/TypeDefinitions.scala b/typr/src/scala/typr/TypeDefinitions.scala new file mode 100644 index 0000000000..bf39dc6a7f --- /dev/null +++ b/typr/src/scala/typr/TypeDefinitions.scala @@ -0,0 +1,208 @@ +package typr + +/** Defines shared wrapper types that can be used across databases and OpenAPI specs. + * + * Types are matched using predicates (DbMatch for databases, ApiMatch for OpenAPI). When a column or field matches, it uses the named type instead of the default generated type. + * + * Match semantics: + * - Empty list means "match any" for that field + * - Non-empty list means "match any of these patterns" (OR within field) + * - All non-empty fields must match (AND across fields) + * - String patterns support glob syntax (*, ?) + */ +case class TypeDefinitions( + entries: List[TypeEntry] +) { + def isEmpty: Boolean = entries.isEmpty + + def ++(other: TypeDefinitions): TypeDefinitions = + TypeDefinitions(entries ++ other.entries) + + def filterNot(pred: TypeEntry => Boolean): TypeDefinitions = + TypeDefinitions(entries.filterNot(pred)) +} + +object TypeDefinitions { + val Empty: TypeDefinitions = TypeDefinitions(Nil) + + def apply(entries: TypeEntry*): TypeDefinitions = + TypeDefinitions(entries.toList) +} + +/** A single type definition - underlying type is inferred from matches */ +case class TypeEntry( + /** The type name (e.g., "UserId", "IsAdmin") */ + name: String, + /** Predicate for matching database columns */ + db: DbMatch, + /** Predicate for matching OpenAPI fields */ + api: ApiMatch +) + +object TypeEntry { + def apply(name: String): TypeEntry = + TypeEntry(name, DbMatch.Empty, ApiMatch.Empty) + + def db(name: String, db: DbMatch): TypeEntry = + TypeEntry(name, db, ApiMatch.Empty) + + def api(name: String, api: ApiMatch): TypeEntry = + TypeEntry(name, DbMatch.Empty, api) +} + +/** Predicate for matching database columns. + * + * All non-empty fields must match (AND). Within each field's list, any match suffices (OR). Empty list means "match any". + */ +case class DbMatch( + /** Match specific database names (for multi-database setups) */ + database: List[String], + /** Match schema names (glob patterns supported) */ + schema: List[String], + /** Match table/view names (glob patterns supported) */ + table: List[String], + /** Match column names (glob patterns supported) */ + column: List[String], + /** Match database type names (e.g., "int4", "varchar") */ + dbType: List[String], + /** Match domain names */ + domain: List[String], + /** Match only primary key columns */ + primaryKey: Option[Boolean], + /** Match nullability */ + nullable: Option[Boolean], + /** Match columns that reference specific tables (glob patterns) */ + references: List[String], + /** Match column comments (glob patterns) */ + comment: List[String], + /** Match extracted annotations from comments */ + annotation: List[String] +) + +object DbMatch { + val Empty: DbMatch = DbMatch( + database = Nil, + schema = Nil, + table = Nil, + column = Nil, + dbType = Nil, + domain = Nil, + primaryKey = None, + nullable = None, + references = Nil, + comment = Nil, + annotation = Nil + ) + + def column(patterns: String*): DbMatch = + Empty.copy(column = patterns.toList) + + def table(patterns: String*): DbMatch = + Empty.copy(table = patterns.toList) + + def schema(patterns: String*): DbMatch = + Empty.copy(schema = patterns.toList) + + def database(names: String*): DbMatch = + Empty.copy(database = names.toList) + + def domain(patterns: String*): DbMatch = + Empty.copy(domain = patterns.toList) + + def primaryKey: DbMatch = + Empty.copy(primaryKey = Some(true)) + + def references(patterns: String*): DbMatch = + Empty.copy(references = patterns.toList) + + def annotation(patterns: String*): DbMatch = + Empty.copy(annotation = patterns.toList) +} + +/** Where an OpenAPI field appears in the API */ +sealed trait ApiLocation + +object ApiLocation { + case object PathParam extends ApiLocation + case object QueryParam extends ApiLocation + case object HeaderParam extends ApiLocation + case object CookieParam extends ApiLocation + case object RequestBody extends ApiLocation + case object ResponseBody extends ApiLocation + + // Convenience groupings + case object AnyParam extends ApiLocation // Matches PathParam, QueryParam, HeaderParam, CookieParam + case object AnyBody extends ApiLocation // Matches RequestBody, ResponseBody +} + +/** Predicate for matching OpenAPI fields. + * + * All non-empty fields must match (AND). Within each field's list, any match suffices (OR). Empty list means "match any". + */ +case class ApiMatch( + /** Match field location in API */ + location: List[ApiLocation], + /** Match specific OpenAPI spec names (for multi-spec setups) */ + spec: List[String], + /** Match operation IDs (glob patterns) */ + operationId: List[String], + /** Match HTTP methods (GET, POST, etc.) */ + httpMethod: List[String], + /** Match URL paths (glob patterns) */ + path: List[String], + /** Match field/parameter names (glob patterns) */ + name: List[String], + /** Match JSON path within request/response body */ + jsonPath: List[String], + /** Match OpenAPI schema type (string, integer, etc.) */ + schemaType: List[String], + /** Match OpenAPI format (uuid, date-time, etc.) */ + format: List[String], + /** Match schema $ref names */ + schemaRef: List[String], + /** Match required status */ + required: Option[Boolean], + /** Match x-* extension values */ + extension: Map[String, String] +) + +object ApiMatch { + val Empty: ApiMatch = ApiMatch( + location = Nil, + spec = Nil, + operationId = Nil, + httpMethod = Nil, + path = Nil, + name = Nil, + jsonPath = Nil, + schemaType = Nil, + format = Nil, + schemaRef = Nil, + required = None, + extension = Map.empty + ) + + def name(patterns: String*): ApiMatch = + Empty.copy(name = patterns.toList) + + def path(patterns: String*): ApiMatch = + Empty.copy(path = patterns.toList) + + def operationId(patterns: String*): ApiMatch = + Empty.copy(operationId = patterns.toList) + + def format(formats: String*): ApiMatch = + Empty.copy(format = formats.toList) + + def schemaType(types: String*): ApiMatch = + Empty.copy(schemaType = types.toList) + + def location(locations: ApiLocation*): ApiMatch = + Empty.copy(location = locations.toList) + + def schemaRef(refs: String*): ApiMatch = + Empty.copy(schemaRef = refs.toList) + + def extension(key: String, value: String): ApiMatch = + Empty.copy(extension = Map(key -> value)) +} diff --git a/typr/src/scala/typr/generateFromConfig.scala b/typr/src/scala/typr/generateFromConfig.scala new file mode 100644 index 0000000000..a03db87842 --- /dev/null +++ b/typr/src/scala/typr/generateFromConfig.scala @@ -0,0 +1,563 @@ +package typr + +import typr.internal.external.{ExternalTools, ExternalToolsConfig} +import typr.internal.pg.OpenEnum +import typr.internal.sqlfiles.SqlFileReader +import typr.internal.{FileSync, TypeAligner, TypeMatcher, TypoType, generate} +import typr.internal.codegen.{CodeInterpolator, DbAdapter, MariaDbAdapter, PostgresAdapter, toCode} +import typr.openapi.OpenApiCodegen +import typr.openapi.parser.OpenApiParser + +import scala.concurrent.{Await, ExecutionContext, Future} +import scala.concurrent.duration.Duration + +/** Result of generating code from a SchemaSource */ +case class SourceGenerated( + source: SchemaSource, + generated: List[Generated] +) + +/** Unified code generation from multiple schema sources. + * + * This is the main entry point for generating code from a combination of databases and OpenAPI specs, with shared TypeDefinitions that can match across all sources. + */ +object generateFromConfig { + + /** Generate code from all configured sources. + * + * @param config + * Generation configuration with sources and shared settings + * @return + * List of generated results, one per source + */ + def apply(config: GenerateConfig): List[SourceGenerated] = { + implicit val ec: ExecutionContext = ExecutionContext.global + + // Initialize external tools once for all sources + val externalTools = ExternalTools.init(config.logger, ExternalToolsConfig.default) + + // If sharedPkg is set and we have TypeDefinitions, run alignment across sources + val alignmentInfo: Option[AlignmentInfo] = config.sharedPkg.flatMap { sharedPkg => + if (config.typeDefinitions.isEmpty) None + else Some(collectAlignmentInfo(config, sharedPkg, externalTools)) + } + + // Log alignment warnings + alignmentInfo.foreach { info => + info.alignmentResult.warnings.foreach(w => config.logger.warn(w)) + } + + // Generate shared types if we have aligned entries + val sharedGenerated: List[SourceGenerated] = (config.sharedPkg, config.sharedTargetFolder, alignmentInfo) match { + case (Some(sharedPkg), Some(sharedFolder), Some(info)) if info.alignmentResult.alignedEntries.nonEmpty => + // Log aligned types + info.alignmentResult.alignedEntries.foreach { aligned => + val sources = aligned.sourceAlignments.map(sa => s"${sa.sourceName}(${sa.locations.mkString(", ")})").mkString(", ") + config.logger.info(s"Aligned type '${aligned.entry.name}' across sources: $sources") + } + + // Generate shared type files + val files = generateSharedTypes(config, sharedPkg, info) + if (files.nonEmpty) { + val generated = Generated( + language = config.lang, + folder = sharedFolder, + testFolder = None, + files = files.iterator + ) + List(SourceGenerated(SchemaSource.Shared(sharedPkg, sharedFolder), generated)) + } else Nil + case _ => Nil + } + + // Process each source with alignment info + val sourceGenerated = config.sources.map { + case dbSource: SchemaSource.Database => + generateFromDatabase(config, dbSource, externalTools, alignmentInfo) + + case apiSource: SchemaSource.OpenApi => + generateFromOpenApi(config, apiSource, alignmentInfo) + + case parsedSource: SchemaSource.OpenApiParsed => + generateFromParsedOpenApi(config, parsedSource, alignmentInfo) + + case _: SchemaSource.Shared => + throw new IllegalArgumentException("SchemaSource.Shared is a synthetic source and should not be in config.sources") + } + + sharedGenerated ++ sourceGenerated + } + + /** Information collected for cross-source alignment */ + private case class AlignmentInfo( + alignmentResult: TypeAligner.AlignmentResult, + sharedPkg: jvm.QIdent, + dbScanResultsBySource: Map[String, TypeMatcher.ScanResult], + apiScanResultsBySource: Map[String, TypeMatcher.OpenApiScanResult] + ) { + + /** Build a TypeOverride that maps aligned entries to the shared package */ + def sharedTypeOverride: TypeOverride = { (relation, colName) => + // Check if this column is part of an aligned entry + alignmentResult.alignedEntries.flatMap { aligned => + aligned.sourceAlignments.flatMap { sa => + sa.locations.collectFirst { + case loc if matchesLocation(loc, relation, colName) => + s"${sharedPkg.dotName}.${aligned.entry.name}" + } + } + }.headOption + } + + /** Get the names of all aligned entries (for filtering TypeDefinitions in OpenAPI codegen) */ + def alignedEntryNames: Set[String] = + alignmentResult.alignedEntries.map(_.entry.name).toSet + + /** Build a map of field name -> shared type for OpenAPI sources */ + def apiTypeOverrides: Map[String, jvm.Type.Qualified] = { + alignmentResult.alignedEntries.flatMap { aligned => + // Get field names from the API locations + aligned.sourceAlignments.collect { case sa if sa.sourceKind.isInstanceOf[TypeAligner.SourceKind.OpenApi] => sa }.flatMap { sa => + // Also include the entry's API name patterns for matching + val apiNames = aligned.entry.api.name + val locationNames = sa.locations.map(_.split('.').last) + (apiNames ++ locationNames).map(_.toLowerCase -> jvm.Type.Qualified(sharedPkg / jvm.Ident(aligned.entry.name))) + } + }.toMap + } + + private def matchesLocation(location: String, relation: db.RelationName, colName: db.ColName): Boolean = { + // Location format: "schema.table.column" or "table.column" + val parts = location.split('.') + parts.length match { + case 3 => + val schema = parts(0) + val table = parts(1) + val col = parts(2) + relation.schema.contains(schema) && relation.name == table && colName.value == col + case 2 => + val table = parts(0) + val col = parts(1) + relation.name == table && colName.value == col + case _ => false + } + } + } + + /** Collect alignment info from all sources (databases and OpenAPI) */ + private def collectAlignmentInfo( + config: GenerateConfig, + sharedPkg: jvm.QIdent, + externalTools: ExternalTools + )(implicit ec: ExecutionContext): AlignmentInfo = { + // Collect scan results from all database sources + val dbSources = config.sources.collect { case db: SchemaSource.Database => db } + + val dbScanResults: List[(String, DbType, TypeMatcher.ScanResult)] = dbSources.flatMap { source => + val eventualMetaDb = MetaDb.fromDb(config.logger, source.dataSource, source.selector, source.schemaMode, externalTools) + val metaDb = Await.result(eventualMetaDb, Duration.Inf) + + val tablesForTypeDefs = metaDb.relations.values.flatMap(_.get).collect { case t: db.Table => t }.toList + val sharedTypesPackage = source.pkg / jvm.Ident("userdefined") + + val scanResult = TypeMatcher.scanTables( + config.typeDefinitions, + source.name, + tablesForTypeDefs, + sharedTypesPackage + ) + + Some((source.name, metaDb.dbType, scanResult)) + } + + // Collect scan results from all OpenAPI sources + val apiSources = config.sources.collect { + case api: SchemaSource.OpenApi => api + case api: SchemaSource.OpenApiParsed => api + } + + val apiScanResults: List[(String, TypeMatcher.OpenApiScanResult)] = apiSources.flatMap { + case api: SchemaSource.OpenApi => + OpenApiParser.parseFile(api.specPath) match { + case Left(_) => None + case Right(spec) => Some((api.name, TypeMatcher.scanOpenApi(config.typeDefinitions, api.name, spec))) + } + case api: SchemaSource.OpenApiParsed => + Some((api.name, TypeMatcher.scanOpenApi(config.typeDefinitions, api.name, api.spec))) + case _ => None // unreachable but needed for exhaustiveness + } + + val dbScanResultsBySource = dbScanResults.map { case (name, _, result) => name -> result }.toMap + val apiScanResultsBySource = apiScanResults.toMap + + // Run alignment with both database and OpenAPI sources + val alignmentResult = TypeAligner.align(config.typeDefinitions, dbScanResults, apiScanResults) + + AlignmentInfo(alignmentResult, sharedPkg, dbScanResultsBySource, apiScanResultsBySource) + } + + /** Generate shared type files for aligned entries */ + private def generateSharedTypes( + config: GenerateConfig, + sharedPkg: jvm.QIdent, + info: AlignmentInfo + ): List[jvm.File] = { + import typr.internal.codegen.{addPackageAndImports, scaladoc, toCode} + + // Build map of source name -> source package + val sourcePackages: Map[String, jvm.QIdent] = config.sources.collect { case db: SchemaSource.Database => + db.name -> db.pkg + }.toMap + + info.alignmentResult.alignedEntries.map { aligned => + val tpe = jvm.Type.Qualified(sharedPkg / jvm.Ident(aligned.entry.name)) + + val comments = scaladoc( + List( + s"Shared type `${aligned.entry.name}` aligned across sources:", + aligned.sourceAlignments + .map { sa => + val kindStr = sa.sourceKind match { + case TypeAligner.SourceKind.Database(dbType) => s"${sa.sourceName} ($dbType)" + case TypeAligner.SourceKind.OpenApi(_) => s"${sa.sourceName} (OpenAPI)" + } + s" - $kindStr: ${sa.locations.mkString(", ")}" + } + .mkString("\n") + ) + ) + + val value = jvm.Ident("value") + + // Determine the canonical JVM type from the aligned db type + val underlyingJvmType: jvm.Type = canonicalJvmType(aligned.canonicalDbType, config.lang) + + // Jackson @JsonValue annotation for the value field + val jsonValueAnnotation = jvm.Annotation( + jvm.Type.Qualified("com.fasterxml.jackson.annotation.JsonValue"), + Nil + ) + + // Generate database instances for each source alignment + val dbInstances = aligned.sourceAlignments.flatMap { sa => + generateDbInstance(config.lang, tpe, underlyingJvmType, sa, sourcePackages.get(sa.sourceName)) + } + + val cls = jvm.Adt.Record( + annotations = Nil, + constructorAnnotations = Nil, + isWrapper = true, + privateConstructor = false, + comments = comments, + name = tpe, + tparams = Nil, + params = List(jvm.Param(List(jsonValueAnnotation), jvm.Comments.Empty, value, underlyingJvmType, None)), + implicitParams = Nil, + `extends` = None, + implements = Nil, + members = Nil, + staticMembers = dbInstances + ) + + val file = jvm.File(tpe, cls, secondaryTypes = Nil, scope = Scope.Main) + + // Build known names map for import resolution + val knownNamesByPkg: Map[jvm.QIdent, Map[jvm.Ident, jvm.Type.Qualified]] = Map( + sharedPkg -> Map(tpe.value.name -> tpe) + ) + val withImports = addPackageAndImports(config.lang, knownNamesByPkg, file) + withImports.copy(contents = jvm.Code.Str(config.fileHeader) ++ withImports.contents) + } + } + + /** Generate database type instance for a source alignment using DbAdapter infrastructure. + * + * Uses the same patterns as DbLibFoundations.generateUnpackInstances for consistency. + */ + @annotation.nowarn("msg=unused") + private def generateDbInstance( + lang: Lang, + wrapperType: jvm.Type.Qualified, + underlyingJvmType: jvm.Type, + alignment: TypeAligner.SourceAlignment, + sourcePkg: Option[jvm.QIdent] + ): Option[jvm.Given] = { + val value = jvm.Ident("value") + + // Get the adapter for this database type (OpenAPI sources don't need db instances) + val adapter: DbAdapter = alignment.sourceKind match { + case TypeAligner.SourceKind.Database(DbType.PostgreSQL) => PostgresAdapter.NoTimestampCasts + case TypeAligner.SourceKind.Database(DbType.MariaDB) => MariaDbAdapter + case _ => return None // Skip OpenAPI and unsupported databases + } + + val body: jvm.Code = alignment.transform match { + case TypoType.AlignmentTransform.Direct => + // Direct: simple bimap from base type lookup + // e.g., MariaTypes.bool.bimap(IsActive::new, IsActive::value) + val baseTypeLookup = adapter.lookupTypeByDbType(alignment.sampleDbType, adapter.Types, new Naming(jvm.QIdent("unused"), lang), lang.typeSupport) + code"$baseTypeLookup.bimap(${jvm.ConstructorMethodRef(wrapperType)}, ${jvm.FieldGetterRef(wrapperType, value)})" + + case TypoType.AlignmentTransform.Unpack => + // Unpack: bimap through intermediate domain type using proper AST nodes + // e.g., Name.pgType.bimap(x -> new FirstName(x.value()), w -> new Name(w.value())) + val domainType: Option[jvm.Type.Qualified] = (alignment.sampleDbType, sourcePkg) match { + case (db.PgType.DomainRef(relName, _, _), Some(pkg)) => + val schemaStr = relName.schema.getOrElse("public") + val schemaIdent = jvm.Ident(if (schemaStr == "public") "public_" else schemaStr) + Some(jvm.Type.Qualified(pkg / schemaIdent / jvm.Ident(toCamelCase(relName.name)))) + case _ => None + } + + domainType match { + case Some(domain) => + // Use proper AST nodes for lambdas with method calls on lambda parameters + val x = jvm.Ident("x") + val w = jvm.Ident("w") + // x -> new WrapperType(x.value()) - call .value() on lambda param x + val toWrapper = jvm.Lambda(x, code"new $wrapperType($x.$value())") + // w -> new DomainType(w.value()) - call .value() on lambda param w + val fromWrapper = jvm.Lambda(w, code"new $domain($w.$value())") + code"${jvm.Import(domain)}$domain.${adapter.typeFieldName}.bimap($toWrapper, $fromWrapper)" + case None => + // Fallback to direct if we can't resolve the domain + val baseTypeLookup = adapter.lookupTypeByDbType(alignment.sampleDbType, adapter.Types, new Naming(jvm.QIdent("unused"), lang), lang.typeSupport) + code"$baseTypeLookup.bimap(${jvm.ConstructorMethodRef(wrapperType)}, ${jvm.FieldGetterRef(wrapperType, value)})" + } + } + + Some( + jvm.Given( + tparams = Nil, + name = adapter.typeFieldName, + implicitParams = Nil, + tpe = adapter.TypeClass.of(wrapperType), + body = body + ) + ) + } + + /** Convert snake_case or lowercase to CamelCase */ + private def toCamelCase(s: String): String = + s.split("_").map(_.capitalize).mkString + + /** Map a canonical db.Type to the corresponding JVM primitive type. + * + * For shared types, we always want the underlying primitive type, not domain wrappers. E.g., a PostgreSQL domain Flag -> boolean should return lang.Boolean, not the Flag type. + */ + private def canonicalJvmType(dbType: db.Type, lang: Lang): jvm.Type = { + // Unwrap domain/alias types to their underlying primitive + val unwrapped = unwrapDbType(dbType) + + val mapper = typr.internal.TypeMapperJvmNew( + lang = lang, + typeOverride = TypeOverride.Empty, + nullabilityOverride = NullabilityOverride.Empty, + naming = new Naming(jvm.QIdent("unused"), lang), + duckDbStructLookup = Map.empty + ) + mapper.baseType(unwrapped) + } + + /** Unwrap domain/alias types to their underlying primitive type. */ + private def unwrapDbType(dbType: db.Type): db.Type = dbType match { + case db.PgType.DomainRef(_, _, underlyingType) => unwrapDbType(underlyingType) + case db.SqlServerType.AliasTypeRef(_, _, underlyingType, _) => unwrapDbType(underlyingType) + case db.DB2Type.DistinctType(_, underlying) => unwrapDbType(underlying) + case other => other + } + + /** Generate and write files from all configured sources. + * + * @param config + * Generation configuration + * @param softWrite + * Whether to use soft write (skip unchanged files) + * @return + * Map of path to sync status for each source + */ + def applyAndWrite( + config: GenerateConfig, + softWrite: FileSync.SoftWrite + ): List[(SchemaSource, Map[java.nio.file.Path, FileSync.Synced])] = { + apply(config).map { result => + val synced = result.generated.flatMap { gen => + gen.overwriteFolder(softWrite) + }.toMap + (result.source, synced) + } + } + + @annotation.nowarn("msg=unused") + private def generateFromDatabase( + config: GenerateConfig, + source: SchemaSource.Database, + externalTools: ExternalTools, + alignmentInfo: Option[AlignmentInfo] + )(implicit ec: ExecutionContext): SourceGenerated = { + val viewSelector = source.selector + val eventualMetaDb = MetaDb.fromDb(config.logger, source.dataSource, viewSelector, source.schemaMode, externalTools) + + val eventualScripts = Future + .sequence( + source.scriptsPaths.map(p => SqlFileReader(config.logger, p, source.dataSource, externalTools)) + ) + .map(_.flatten) + + val combined = for { + metaDb <- eventualMetaDb + eventualOpenEnums = OpenEnum.find(source.dataSource, config.logger, viewSelector, openEnumSelector = source.openEnums, metaDb = metaDb) + openEnums <- eventualOpenEnums + scripts <- eventualScripts + } yield { + // If we have alignment info, combine the shared type override with config's typeOverride + // This makes aligned entries reference the shared package instead of generating locally + val effectiveTypeOverride = alignmentInfo match { + case Some(info) => info.sharedTypeOverride.orElse(config.typeOverride) + case None => config.typeOverride + } + + // For aligned entries, we don't want to generate local shared types + // The TypeDefinitions should be filtered to exclude aligned entries + val effectiveTypeDefinitions = alignmentInfo match { + case Some(info) => + val alignedNames = info.alignmentResult.alignedEntries.map(_.entry.name).toSet + config.typeDefinitions.filterNot(e => alignedNames.contains(e.name)) + case None => + config.typeDefinitions + } + + // Build Options from config + source settings + val options = Options( + pkg = source.pkg.dotName, + lang = config.lang, + dbLib = Some(source.dbLib), + jsonLibs = config.jsonLibs, + silentBanner = true, + logger = config.logger, + fileHeader = config.fileHeader, + typeOverride = effectiveTypeOverride, + nullabilityOverride = source.nullabilityOverride, + generateMockRepos = source.generateMockRepos, + enablePrimaryKeyType = source.enablePrimaryKeyType, + enableFieldValue = source.enableFieldValue, + enableTestInserts = source.enableTestInserts, + readonlyRepo = source.readonlyRepo, + enableStreamingInserts = true, + enableDsl = source.enableDsl, + debugTypes = config.debugTypes, + inlineImplicits = config.inlineImplicits, + fixVerySlowImplicit = config.fixVerySlowImplicit, + keepDependencies = config.keepDependencies, + schemaMode = source.schemaMode, + openEnums = source.openEnums, + typeDefinitions = effectiveTypeDefinitions + ) + + val graph = ProjectGraph( + name = source.name, + target = source.targetFolder, + testTarget = source.testTargetFolder, + value = source.selector, + scripts = scripts, + downstream = Nil + ) + + generate.orThrow(options, metaDb, graph, openEnums) + } + + val generated = Await.result(combined, Duration.Inf) + SourceGenerated(source, generated) + } + + private def generateFromOpenApi( + config: GenerateConfig, + source: SchemaSource.OpenApi, + alignmentInfo: Option[AlignmentInfo] + ): SourceGenerated = { + // Parse the spec + OpenApiParser.parseFile(source.specPath) match { + case Left(errors) => + throw new RuntimeException(s"Failed to parse OpenAPI spec ${source.specPath}: ${errors.mkString(", ")}") + case Right(parsedSpec) => + generateFromParsedOpenApi( + config, + SchemaSource.OpenApiParsed( + name = source.name, + spec = parsedSpec, + pkg = source.pkg, + targetFolder = source.targetFolder, + testTargetFolder = source.testTargetFolder, + options = source.options + ), + alignmentInfo + ) + } + } + + private def generateFromParsedOpenApi( + config: GenerateConfig, + source: SchemaSource.OpenApiParsed, + alignmentInfo: Option[AlignmentInfo] + ): SourceGenerated = { + import typr.internal.codegen.addPackageAndImports + + // For aligned entries, filter them out from TypeDefinitions (they're in shared package) + // and add fieldTypeOverrides to reference the shared types + val (effectiveTypeDefinitions, extraFieldTypeOverrides) = alignmentInfo match { + case Some(info) => + val alignedNames = info.alignedEntryNames + val filtered = config.typeDefinitions.filterNot(e => alignedNames.contains(e.name)) + (filtered, info.apiTypeOverrides) + case None => + (config.typeDefinitions, Map.empty[String, jvm.Type.Qualified]) + } + + // Merge config-level TypeDefinitions with source-level options + val optionsWithTypeDefinitions = source.options.copy( + typeDefinitions = source.options.typeDefinitions ++ effectiveTypeDefinitions, + fieldTypeOverrides = source.options.fieldTypeOverrides ++ extraFieldTypeOverrides + ) + + val result = OpenApiCodegen.generateFromSpec(source.spec, optionsWithTypeDefinitions, config.lang) + + if (result.errors.nonEmpty) { + throw new RuntimeException(s"OpenAPI generation errors for ${source.name}: ${result.errors.mkString(", ")}") + } + + // Build known names by package for import resolution + // Include shared types if we have alignment info + val sharedTypeNames: Map[jvm.QIdent, Map[jvm.Ident, jvm.Type.Qualified]] = alignmentInfo match { + case Some(info) => + val sharedTypes = info.alignedEntryNames.map { name => + jvm.Ident(name) -> jvm.Type.Qualified(info.sharedPkg / jvm.Ident(name)) + }.toMap + Map(info.sharedPkg -> sharedTypes) + case None => Map.empty + } + + val knownNamesByPkg: Map[jvm.QIdent, Map[jvm.Ident, jvm.Type.Qualified]] = result.files + .groupBy(_.pkg) + .map { case (pkg, files) => + pkg -> files.flatMap { f => + f.secondaryTypes.map(st => st.value.name -> st) :+ (f.tpe.value.name -> f.tpe) + }.toMap + } ++ sharedTypeNames + + // Add imports and file header + val filesWithImports = result.files.map { file => + val withImports = addPackageAndImports(config.lang, knownNamesByPkg, file) + withImports.copy(contents = jvm.Code.Str(config.fileHeader) ++ withImports.contents) + } + + // Create Generated wrapper using the apply that returns List[Generated] + val generated = Generated( + language = config.lang, + folder = source.targetFolder, + testFolder = source.testTargetFolder, + files = filesWithImports.iterator + ) + + SourceGenerated(source, generated) + } +} diff --git a/typr/src/scala/typr/generateFromDb.scala b/typr/src/scala/typr/generateFromDb.scala index 01a550d908..6b24a3f82b 100644 --- a/typr/src/scala/typr/generateFromDb.scala +++ b/typr/src/scala/typr/generateFromDb.scala @@ -49,6 +49,14 @@ object generateFromDb { scripts <- eventualScripts } yield internal.generate(options, metaDb, scripts, openEnums) - Await.result(combined, Duration.Inf) + Await.result(combined, Duration.Inf) match { + case Right(generated) => generated + case Left(error) => + error match { + case internal.generate.GenerateError.IncompatibleTypes(errors) => + errors.foreach(options.logger.warn) + sys.error(s"TypeDefinitions has ${errors.size} incompatible type(s). See warnings above.") + } + } } } diff --git a/typr/src/scala/typr/internal/ComputedSharedType.scala b/typr/src/scala/typr/internal/ComputedSharedType.scala new file mode 100644 index 0000000000..ad29252b75 --- /dev/null +++ b/typr/src/scala/typr/internal/ComputedSharedType.scala @@ -0,0 +1,63 @@ +package typr +package internal + +/** Computed representation of a shared type from TypeDefinitions. + * + * A shared type is a wrapper type (like UserId or FirstName) that is generated from TypeEntry definitions. + */ +case class ComputedSharedType( + /** The qualified type name for the wrapper (e.g., myapp.userdefined.FirstName) */ + tpe: jvm.Type.Qualified, + /** The underlying JVM type for the value field (e.g., String, Long) */ + underlyingJvmType: jvm.Type, + /** The canonical database type from compatibility checking */ + underlyingDbType: db.Type, + /** The original TypeEntry definition */ + entry: TypeEntry, + /** The compatibility check result with all matches */ + compatResult: TypeCompatibilityChecker.CheckResult.Compatible +) + +object ComputedSharedType { + + /** Create computed shared types from scan results. + * + * @param scanResult + * The result from TypeMatcher.scanTables + * @param sharedTypesPackage + * Package where shared types will be generated + * @param typeMapper + * The type mapper to convert db.Type to jvm.Type + * @return + * List of computed shared types for compatible entries + */ + def fromScanResult( + scanResult: TypeMatcher.ScanResult, + sharedTypesPackage: jvm.QIdent, + typeMapper: TypeMapperJvm + ): List[ComputedSharedType] = + scanResult.compatibilityResults.collect { case c: TypeCompatibilityChecker.CheckResult.Compatible => + val tpe = jvm.Type.Qualified(sharedTypesPackage / jvm.Ident(c.entry.name)) + val underlyingJvmType = mapCanonicalType(c.canonicalType, typeMapper) + ComputedSharedType( + tpe = tpe, + underlyingJvmType = underlyingJvmType, + underlyingDbType = c.canonicalType, + entry = c.entry, + compatResult = c + ) + } + + /** Map a canonical db.Type to jvm.Type, handling arrays */ + private def mapCanonicalType(dbType: db.Type, typeMapper: TypeMapperJvm): jvm.Type = + dbType match { + case db.PgType.Array(inner) => + jvm.Type.ArrayOf(typeMapper.baseType(inner)) + case db.DuckDbType.ListType(inner) => + jvm.Type.ArrayOf(typeMapper.baseType(inner)) + case db.DuckDbType.ArrayType(inner, _) => + jvm.Type.ArrayOf(typeMapper.baseType(inner)) + case other => + typeMapper.baseType(other) + } +} diff --git a/typr/src/scala/typr/internal/ComputedTestInserts.scala b/typr/src/scala/typr/internal/ComputedTestInserts.scala index a47c69036a..eb93c64a6e 100644 --- a/typr/src/scala/typr/internal/ComputedTestInserts.scala +++ b/typr/src/scala/typr/internal/ComputedTestInserts.scala @@ -21,6 +21,7 @@ object ComputedTestInserts { domains: List[ComputedDomain], enums: List[ComputedStringEnum], mariaSets: List[ComputedMariaSet], + sharedTypes: List[ComputedSharedType], allTablesByName: Map[db.RelationName, ComputedTable], // project data tables: Iterable[ComputedTable] @@ -34,6 +35,9 @@ object ComputedTestInserts { val openEnumsByType: Map[jvm.Type, OpenEnum] = tables.flatMap { table => table.maybeId.collect { case x: IdComputed.UnaryOpenEnum => (x.tpe, x.openEnum) } }.toMap + val sharedTypesByType: Map[jvm.Type, ComputedSharedType] = + sharedTypes.iterator.map(x => (x.tpe: jvm.Type) -> x).toMap + val maybeDomainMethods: Option[GenerateDomainMethods] = GenerateDomainMethod .of(domains, tables) @@ -351,6 +355,12 @@ object ComputedTestInserts { case other => sys.error(s"Unexpected language: $other") } + case tpe if sharedTypesByType.contains(tpe) => + // Shared types wrap an underlying type + val shared = sharedTypesByType(tpe) + go(shared.underlyingJvmType, shared.underlyingDbType, None).map { default => + jvm.New(shared.tpe, List(jvm.Arg.Pos(default))).code + } case _ => None } diff --git a/typr/src/scala/typr/internal/InstanceRequirements.scala b/typr/src/scala/typr/internal/InstanceRequirements.scala new file mode 100644 index 0000000000..c15beef3cc --- /dev/null +++ b/typr/src/scala/typr/internal/InstanceRequirements.scala @@ -0,0 +1,89 @@ +package typr +package internal + +/** Determines what typeclass instances need to be generated for each shared type. + * + * When a TypeEntry is used across multiple databases and API specs, it needs different typeclass instances depending on where it's used: + * - Database-specific instances (pgType, mariaType, etc.) + * - JSON library instances (Jackson, Circe, etc.) + */ +object InstanceRequirements { + + /** Requirements for a single TypeEntry */ + case class Requirements( + entry: TypeEntry, + underlyingType: db.Type, + databases: Set[DbType], + hasApiUsage: Boolean + ) { + + /** Database-specific type instance field names needed */ + def dbTypeFieldNames: Set[String] = + databases.map(dbTypeFieldNameFor) + + /** Whether the underlying type is an array type */ + def hasArrayType: Boolean = underlyingType match { + case db.PgType.Array(_) => true + case db.DuckDbType.ListType(_) => true + case db.DuckDbType.ArrayType(_, _) => true + case _ => false + } + } + + /** Collect requirements from compatibility check results */ + def collect( + results: List[TypeCompatibilityChecker.CheckResult.Compatible] + ): List[Requirements] = + results.map { result => + val databases = result.matches.flatMap { m => + m.source match { + case TypeMatcher.MatchSource.DbColumn(dbName, _, _, _) => + guessDbTypeFromName(dbName) + case TypeMatcher.MatchSource.ApiField(_, _, _, _) => + None + } + }.toSet + + val hasApiUsage = result.matches.exists { + case TypeMatcher.MatchResult(_, TypeMatcher.MatchSource.ApiField(_, _, _, _), _) => true + case _ => false + } + + Requirements( + entry = result.entry, + underlyingType = result.canonicalType, + databases = databases, + hasApiUsage = hasApiUsage + ) + } + + /** Try to guess DbType from database name. This is a heuristic - users can also explicitly specify the database type. + */ + private def guessDbTypeFromName(name: String): Option[DbType] = { + val lower = name.toLowerCase + if (lower.contains("postgres") || lower.contains("pg")) + Some(DbType.PostgreSQL) + else if (lower.contains("maria") || lower.contains("mysql")) + Some(DbType.MariaDB) + else if (lower.contains("duck")) + Some(DbType.DuckDB) + else if (lower.contains("oracle")) + Some(DbType.Oracle) + else if (lower.contains("sqlserver") || lower.contains("mssql")) + Some(DbType.SqlServer) + else if (lower.contains("db2")) + Some(DbType.DB2) + else + None + } + + /** Get the database type field name for a DbType */ + private def dbTypeFieldNameFor(dbType: DbType): String = dbType match { + case DbType.PostgreSQL => "pgType" + case DbType.MariaDB => "mariaType" + case DbType.DuckDB => "duckDbType" + case DbType.Oracle => "oracleType" + case DbType.SqlServer => "sqlServerType" + case DbType.DB2 => "db2Type" + } +} diff --git a/typr/src/scala/typr/internal/InternalOptions.scala b/typr/src/scala/typr/internal/InternalOptions.scala index 3362bbc018..6d3d84b856 100644 --- a/typr/src/scala/typr/internal/InternalOptions.scala +++ b/typr/src/scala/typr/internal/InternalOptions.scala @@ -21,5 +21,6 @@ case class InternalOptions( naming: Naming, pkg: jvm.QIdent, readonlyRepo: Selector, - typeOverride: TypeOverride + typeOverride: TypeOverride, + typeDefinitions: TypeDefinitions ) diff --git a/typr/src/scala/typr/internal/TypeAligner.scala b/typr/src/scala/typr/internal/TypeAligner.scala new file mode 100644 index 0000000000..fa66f1c22e --- /dev/null +++ b/typr/src/scala/typr/internal/TypeAligner.scala @@ -0,0 +1,252 @@ +package typr +package internal + +/** Aligns TypeDefinitions across multiple sources (databases, OpenAPI) to create unified shared types. + * + * When generating from multiple sources, TypeAligner: + * 1. Collects scan results from each source 2. Finds TypeEntries that match across multiple sources 3. Determines the canonical db type for each entry 4. Creates alignment info for generating + * unified wrapper types + * + * Entries that only match in one source keep their original type (no alignment needed). + */ +object TypeAligner { + + /** Represents the kind of source a type alignment comes from. */ + sealed trait SourceKind + object SourceKind { + case class Database(dbType: DbType) extends SourceKind + case class OpenApi(specName: String) extends SourceKind + } + + /** Result of aligning a TypeEntry across multiple sources. */ + case class AlignedEntry( + entry: TypeEntry, + canonicalDbType: db.Type, + sourceAlignments: List[SourceAlignment] + ) + + /** Entry that matched in only one source - keeps original behavior. */ + case class SingleSourceEntry( + entry: TypeEntry, + sourceName: String, + sourceKind: SourceKind, + compatResult: TypeCompatibilityChecker.CheckResult.Compatible + ) + + /** How a single source aligns to the canonical type. */ + case class SourceAlignment( + sourceName: String, + sourceKind: SourceKind, + sampleDbType: db.Type, + transform: TypoType.AlignmentTransform, + locations: List[String] + ) + + /** Result from aligning across sources. */ + case class AlignmentResult( + /** Entries successfully aligned across multiple sources */ + alignedEntries: List[AlignedEntry], + /** Entries that only matched in one source - use original type */ + singleSourceEntries: List[SingleSourceEntry], + /** Warnings about alignment issues (not errors - generation continues) */ + warnings: List[String], + /** Errors that prevent generation */ + errors: List[String] + ) + + /** Align TypeDefinitions across multiple source scan results. + * + * @param typeDefinitions + * The shared TypeDefinitions + * @param dbScanResults + * Scan results from database sources, keyed by source name and DbType + * @param apiScanResults + * Scan results from OpenAPI sources, keyed by source name + * @return + * AlignmentResult with aligned entries, single-source entries, and any issues + */ + def align( + typeDefinitions: TypeDefinitions, + dbScanResults: List[(String, DbType, TypeMatcher.ScanResult)], + apiScanResults: List[(String, TypeMatcher.OpenApiScanResult)] = Nil + ): AlignmentResult = { + // Group compatible results by entry name across all sources + val dbCompatible: List[(String, (String, SourceKind, TypeCompatibilityChecker.CheckResult.Compatible))] = + dbScanResults.flatMap { case (sourceName, dbType, scanResult) => + scanResult.compatibilityResults.collect { case c: TypeCompatibilityChecker.CheckResult.Compatible => + (c.entry.name, (sourceName, SourceKind.Database(dbType), c)) + } + } + + val apiCompatible: List[(String, (String, SourceKind, TypeCompatibilityChecker.CheckResult.Compatible))] = + apiScanResults.flatMap { case (sourceName, scanResult) => + scanResult.compatibilityResults.collect { case c: TypeCompatibilityChecker.CheckResult.Compatible => + (c.entry.name, (sourceName, SourceKind.OpenApi(sourceName), c)) + } + } + + val compatibleByEntry: Map[String, List[(String, SourceKind, TypeCompatibilityChecker.CheckResult.Compatible)]] = + (dbCompatible ++ apiCompatible) + .groupBy(_._1) + .map { case (k, v) => k -> v.map(_._2) } + + val alignedEntries = List.newBuilder[AlignedEntry] + val singleSourceEntries = List.newBuilder[SingleSourceEntry] + val warnings = List.newBuilder[String] + + // Process each TypeEntry + typeDefinitions.entries.foreach { entry => + compatibleByEntry.get(entry.name) match { + case Some(sources) if sources.size > 1 => + // Multiple sources - try to align + alignMultipleSources(entry, sources) match { + case Right(aligned) => + alignedEntries += aligned + case Left(warning) => + warnings += warning + // Fall back to single-source entries + sources.foreach { case (sourceName, sourceKind, compatResult) => + singleSourceEntries += SingleSourceEntry(entry, sourceName, sourceKind, compatResult) + } + } + + case Some(sources) if sources.size == 1 => + // Single source - keep original type + val (sourceName, sourceKind, compatResult) = sources.head + singleSourceEntries += SingleSourceEntry(entry, sourceName, sourceKind, compatResult) + + case _ => + // No matches - nothing to do + () + } + } + + // Collect errors from all sources + val dbErrors = dbScanResults.flatMap { case (sourceName, _, scanResult) => + scanResult.errors.map(e => s"[$sourceName] $e") + } + val apiErrors = apiScanResults.flatMap { case (sourceName, scanResult) => + scanResult.errors.map(e => s"[$sourceName] $e") + } + val allErrors = dbErrors ++ apiErrors + + AlignmentResult( + alignedEntries = alignedEntries.result(), + singleSourceEntries = singleSourceEntries.result(), + warnings = warnings.result(), + errors = allErrors + ) + } + + /** Try to align an entry across multiple sources. + * + * @return + * Right(AlignedEntry) if successful, Left(warning message) if alignment failed + */ + private def alignMultipleSources( + entry: TypeEntry, + sources: List[(String, SourceKind, TypeCompatibilityChecker.CheckResult.Compatible)] + ): Either[String, AlignedEntry] = { + // Check that all sources have compatible canonical types + val canonicalTypes = sources.map { case (_, _, c) => c.canonicalType }.distinct + val compatibilityClasses = canonicalTypes.map(TypeCompatibilityChecker.compatibilityClass).distinct + + if (compatibilityClasses.size > 1) { + // Different compatibility classes - can't align + val details = sources + .map { case (name, _, c) => + s"$name: ${TypeCompatibilityChecker.compatibilityClass(c.canonicalType).description}" + } + .mkString(", ") + Left(s"Type '${entry.name}' has incompatible canonical types across sources: $details") + } else { + // All compatible - use the first source's canonical type + val (_, _, firstResult) = sources.head + val canonicalDbType = firstResult.canonicalType + + val sourceAlignments = sources.map { case (sourceName, sourceKind, compatResult) => + // Get a sample db type from the matches - this tells us the actual source type + val sampleDbType = compatResult.matches.headOption.map(_.dbType).getOrElse(compatResult.canonicalType) + + // Determine if this is a domain/wrapper type that needs unwrapping + val transform = determineTransform(sampleDbType, compatResult.canonicalType) + + // Build location strings for documentation + val locations = compatResult.matches.map { m => + m.source match { + case TypeMatcher.MatchSource.DbColumn(_, schema, table, col) => + if (schema.isEmpty) s"$table.$col" else s"$schema.$table.$col" + case TypeMatcher.MatchSource.ApiField(_, path, field, _) => + s"$path.$field" + } + } + + SourceAlignment( + sourceName = sourceName, + sourceKind = sourceKind, + sampleDbType = sampleDbType, + transform = transform, + locations = locations + ) + } + + Right(AlignedEntry(entry, canonicalDbType, sourceAlignments)) + } + } + + /** Create a TypoType.Aligned for a specific source from an AlignedEntry. + * + * @param entry + * The aligned entry + * @param sourceAlignment + * The specific source's alignment + * @param canonicalJvmType + * The canonical JVM type (computed by caller using TypeMapper) + * @param sourceTypoType + * The TypoType from the source (could be Generated for domain, Standard for raw type) + */ + def createAlignedTypoType( + entry: AlignedEntry, + sourceAlignment: SourceAlignment, + canonicalJvmType: jvm.Type, + sourceTypoType: TypoType + ): TypoType.Aligned = { + val alignments = entry.sourceAlignments.map { sa => + TypoType.TypeAlignment( + sourceKind = sa.sourceKind, + dbType = sa.sampleDbType, + locations = sa.locations + ) + } + + TypoType.Aligned( + jvmType = canonicalJvmType, + sourceType = sourceTypoType, + transform = sourceAlignment.transform, + alignments = alignments + ) + } + + /** Determine the alignment transform based on source and canonical types. + * + * If the source type is a domain/wrapper around the canonical type, we need Unpack. If the source type IS the canonical type, we use Direct. + */ + private def determineTransform(sampleDbType: db.Type, @annotation.nowarn canonicalType: db.Type): TypoType.AlignmentTransform = + sampleDbType match { + // PostgreSQL domain reference - needs unwrapping + case db.PgType.DomainRef(_, _, _) => + TypoType.AlignmentTransform.Unpack + + // SQL Server alias type reference - needs unwrapping + case db.SqlServerType.AliasTypeRef(_, _, _, _) => + TypoType.AlignmentTransform.Unpack + + // DB2 distinct type - needs unwrapping + case db.DB2Type.DistinctType(_, _) => + TypoType.AlignmentTransform.Unpack + + // Same type or compatible base type - direct mapping + case _ => + TypoType.AlignmentTransform.Direct + } +} diff --git a/typr/src/scala/typr/internal/TypeCompatibilityChecker.scala b/typr/src/scala/typr/internal/TypeCompatibilityChecker.scala new file mode 100644 index 0000000000..b1b5e2952f --- /dev/null +++ b/typr/src/scala/typr/internal/TypeCompatibilityChecker.scala @@ -0,0 +1,225 @@ +package typr +package internal + +/** Checks that all sources matching a TypeEntry have compatible underlying types. + * + * When a TypeEntry matches multiple columns and API fields, they must all have compatible types (i.e., they can all be represented by the same JVM type). + */ +object TypeCompatibilityChecker { + + /** Result of checking type compatibility for a TypeEntry */ + sealed trait CheckResult { + def entry: TypeEntry + } + + object CheckResult { + + /** All matched sources have compatible types */ + case class Compatible( + entry: TypeEntry, + matches: List[TypeMatcher.MatchResult], + canonicalType: db.Type + ) extends CheckResult + + /** No sources matched this entry */ + case class NoMatches(entry: TypeEntry) extends CheckResult + + /** Matched sources have incompatible types */ + case class Incompatible( + entry: TypeEntry, + matches: List[TypeMatcher.MatchResult], + typeGroups: Map[CompatibilityClass, List[TypeMatcher.MatchResult]] + ) extends CheckResult { + def errorMessage: String = { + val groupDescriptions = typeGroups + .map { case (cls, results) => + val sources = results.map(r => sourceDescription(r.source)).mkString(", ") + s" - ${cls.description}: $sources" + } + .mkString("\n") + s"""Type '${entry.name}' has incompatible underlying types: + |$groupDescriptions""".stripMargin + } + + private def sourceDescription(source: TypeMatcher.MatchSource): String = source match { + case TypeMatcher.MatchSource.DbColumn(db, schema, table, col) => + s"$db.$schema.$table.$col" + case TypeMatcher.MatchSource.ApiField(spec, path, field, _) => + s"$spec:$path.$field" + } + } + } + + /** A compatibility class groups types that map to the same JVM type */ + case class CompatibilityClass(description: String) + + /** Check compatibility for a single TypeEntry given its matches */ + def check(entry: TypeEntry, matches: List[TypeMatcher.MatchResult]): CheckResult = { + if (matches.isEmpty) { + CheckResult.NoMatches(entry) + } else { + val grouped = matches.groupBy(m => compatibilityClass(m.dbType)) + if (grouped.size == 1) { + val (_, results) = grouped.head + CheckResult.Compatible(entry, matches, results.head.dbType) + } else { + CheckResult.Incompatible(entry, matches, grouped) + } + } + } + + /** Check compatibility for all entries in TypeDefinitions */ + def checkAll( + definitions: TypeDefinitions, + allMatches: Map[TypeEntry, List[TypeMatcher.MatchResult]] + ): List[CheckResult] = + definitions.entries.map { entry => + check(entry, allMatches.getOrElse(entry, Nil)) + } + + /** Determine the compatibility class for a database type. Types in the same class can be represented by the same JVM type. + */ + def compatibilityClass(tpe: db.Type): CompatibilityClass = tpe match { + // Text types + case db.PgType.Text | db.PgType.VarChar(_) | db.PgType.Bpchar(_) | db.PgType.Char | db.PgType.Name => + CompatibilityClass("String") + case db.MariaType.Text | db.MariaType.TinyText | db.MariaType.MediumText | db.MariaType.LongText | db.MariaType.VarChar(_) | db.MariaType.Char(_) => + CompatibilityClass("String") + case db.DuckDbType.Text | db.DuckDbType.VarChar(_) | db.DuckDbType.Char(_) => + CompatibilityClass("String") + case db.OracleType.Varchar2(_) | db.OracleType.NVarchar2(_) | db.OracleType.Char(_) | db.OracleType.NChar(_) | db.OracleType.Clob | db.OracleType.NClob | db.OracleType.Long => + CompatibilityClass("String") + case db.SqlServerType.VarChar(_) | db.SqlServerType.NVarChar(_) | db.SqlServerType.Char(_) | db.SqlServerType.NChar(_) | db.SqlServerType.Text | db.SqlServerType.NText => + CompatibilityClass("String") + case db.DB2Type.VarChar(_) | db.DB2Type.Char(_) | db.DB2Type.Clob | db.DB2Type.Long | db.DB2Type.Graphic(_) | db.DB2Type.VarGraphic(_) | db.DB2Type.DbClob | db.DB2Type.LongVarGraphic => + CompatibilityClass("String") + + // Boolean types + case db.PgType.Boolean => CompatibilityClass("Boolean") + case db.MariaType.Boolean => CompatibilityClass("Boolean") + case db.DuckDbType.Boolean => CompatibilityClass("Boolean") + case db.OracleType.Boolean => CompatibilityClass("Boolean") + case db.SqlServerType.Bit => CompatibilityClass("Boolean") + case db.DB2Type.Boolean => CompatibilityClass("Boolean") + + // 32-bit integer types + case db.PgType.Int4 => CompatibilityClass("Int") + case db.MariaType.Int => CompatibilityClass("Int") + case db.DuckDbType.Integer => CompatibilityClass("Int") + case db.SqlServerType.Int => CompatibilityClass("Int") + case db.DB2Type.Integer => CompatibilityClass("Int") + + // 64-bit integer types + case db.PgType.Int8 => CompatibilityClass("Long") + case db.MariaType.BigInt => CompatibilityClass("Long") + case db.DuckDbType.BigInt => CompatibilityClass("Long") + case db.SqlServerType.BigInt => CompatibilityClass("Long") + case db.DB2Type.BigInt => CompatibilityClass("Long") + case db.OracleType.Number(Some(p), Some(0)) if p > 9 && p <= 18 => CompatibilityClass("Long") + + // 16-bit integer types + case db.PgType.Int2 => CompatibilityClass("Short") + case db.MariaType.SmallInt => CompatibilityClass("Short") + case db.DuckDbType.SmallInt => CompatibilityClass("Short") + case db.SqlServerType.SmallInt => CompatibilityClass("Short") + case db.DB2Type.SmallInt => CompatibilityClass("Short") + + // Single-precision float + case db.PgType.Float4 => CompatibilityClass("Float") + case db.MariaType.Float => CompatibilityClass("Float") + case db.DuckDbType.Float => CompatibilityClass("Float") + case db.SqlServerType.Real => CompatibilityClass("Float") + case db.DB2Type.Real => CompatibilityClass("Float") + case db.OracleType.BinaryFloat => CompatibilityClass("Float") + + // Double-precision float + case db.PgType.Float8 => CompatibilityClass("Double") + case db.MariaType.Double => CompatibilityClass("Double") + case db.DuckDbType.Double => CompatibilityClass("Double") + case db.SqlServerType.Float => CompatibilityClass("Double") + case db.DB2Type.Double => CompatibilityClass("Double") + case db.OracleType.BinaryDouble => CompatibilityClass("Double") + + // Decimal/Numeric types -> BigDecimal + case db.PgType.Numeric => CompatibilityClass("BigDecimal") + case db.MariaType.Decimal(_, _) => CompatibilityClass("BigDecimal") + case db.DuckDbType.Decimal(_, _) => CompatibilityClass("BigDecimal") + case db.OracleType.Number(_, _) => CompatibilityClass("BigDecimal") + case db.OracleType.Float(_) => CompatibilityClass("BigDecimal") + case db.SqlServerType.Decimal(_, _) | db.SqlServerType.Numeric(_, _) | db.SqlServerType.Money | db.SqlServerType.SmallMoney => CompatibilityClass("BigDecimal") + case db.DB2Type.Decimal(_, _) | db.DB2Type.DecFloat(_) => CompatibilityClass("BigDecimal") + + // Date types + case db.PgType.Date => CompatibilityClass("LocalDate") + case db.MariaType.Date => CompatibilityClass("LocalDate") + case db.DuckDbType.Date => CompatibilityClass("LocalDate") + case db.OracleType.Date => CompatibilityClass("LocalDate") + case db.SqlServerType.Date => CompatibilityClass("LocalDate") + case db.DB2Type.Date => CompatibilityClass("LocalDate") + + // Time types + case db.PgType.Time => CompatibilityClass("LocalTime") + case db.MariaType.Time(_) => CompatibilityClass("LocalTime") + case db.DuckDbType.Time => CompatibilityClass("LocalTime") + case db.SqlServerType.Time(_) => CompatibilityClass("LocalTime") + case db.DB2Type.Time => CompatibilityClass("LocalTime") + + // Timestamp with timezone + case db.PgType.TimestampTz => CompatibilityClass("Instant") + case db.DuckDbType.TimestampTz => CompatibilityClass("Instant") + case db.OracleType.TimestampWithTimeZone(_) => CompatibilityClass("Instant") + case db.SqlServerType.DateTimeOffset(_) => CompatibilityClass("Instant") + + // Timestamp without timezone + case db.PgType.Timestamp => CompatibilityClass("LocalDateTime") + case db.MariaType.DateTime(_) | db.MariaType.Timestamp(_) => CompatibilityClass("LocalDateTime") + case db.DuckDbType.Timestamp => CompatibilityClass("LocalDateTime") + case db.OracleType.Timestamp(_) | db.OracleType.TimestampWithLocalTimeZone(_) => CompatibilityClass("LocalDateTime") + case db.SqlServerType.DateTime | db.SqlServerType.DateTime2(_) | db.SqlServerType.SmallDateTime => CompatibilityClass("LocalDateTime") + case db.DB2Type.Timestamp(_) => CompatibilityClass("LocalDateTime") + + // UUID + case db.PgType.UUID => CompatibilityClass("UUID") + case db.DuckDbType.UUID => CompatibilityClass("UUID") + case db.SqlServerType.UniqueIdentifier => CompatibilityClass("UUID") + + // Binary types + case db.PgType.Bytea => CompatibilityClass("ByteArray") + case db.MariaType.Blob | db.MariaType.TinyBlob | db.MariaType.MediumBlob | db.MariaType.LongBlob | db.MariaType.Binary(_) | db.MariaType.VarBinary(_) => CompatibilityClass("ByteArray") + case db.DuckDbType.Blob => CompatibilityClass("ByteArray") + case db.OracleType.Blob | db.OracleType.Raw(_) | db.OracleType.LongRaw => CompatibilityClass("ByteArray") + case db.SqlServerType.Binary(_) | db.SqlServerType.VarBinary(_) | db.SqlServerType.Image => CompatibilityClass("ByteArray") + case db.DB2Type.Blob | db.DB2Type.Binary(_) | db.DB2Type.VarBinary(_) => CompatibilityClass("ByteArray") + + // JSON types + case db.PgType.Json | db.PgType.Jsonb => CompatibilityClass("Json") + case db.MariaType.Json => CompatibilityClass("Json") + case db.DuckDbType.Json => CompatibilityClass("Json") + case db.OracleType.Json => CompatibilityClass("Json") + case db.SqlServerType.Json => CompatibilityClass("Json") + + // Array types - compatible if element types are compatible + case db.PgType.Array(inner) => CompatibilityClass(s"Array[${compatibilityClass(inner).description}]") + case db.DuckDbType.ListType(inner) => CompatibilityClass(s"Array[${compatibilityClass(inner).description}]") + case db.DuckDbType.ArrayType(inner, _) => CompatibilityClass(s"Array[${compatibilityClass(inner).description}]") + + // Enums - each enum is its own class + case db.PgType.EnumRef(enm) => CompatibilityClass(s"Enum[${enm.name.value}]") + case db.MariaType.Enum(values) => CompatibilityClass(s"Enum[${values.mkString(",")}]") + case db.DuckDbType.Enum(name, _) => CompatibilityClass(s"Enum[$name]") + + // Domain/Alias types - use underlying type's class + case db.PgType.DomainRef(_, _, underlyingType) => compatibilityClass(underlyingType) + case db.SqlServerType.AliasTypeRef(_, _, underlyingType, _) => compatibilityClass(underlyingType) + case db.DB2Type.DistinctType(_, sourceType) => compatibilityClass(sourceType) + + // Fallback - each unknown type is its own class + case other => CompatibilityClass(typeName(other)) + } + + /** Get a descriptive name for a db.Type */ + private def typeName(tpe: db.Type): String = tpe match { + case db.Unknown(sqlType) => sqlType + case other => other.toString + } +} diff --git a/typr/src/scala/typr/internal/TypeMatcher.scala b/typr/src/scala/typr/internal/TypeMatcher.scala new file mode 100644 index 0000000000..2e8408a857 --- /dev/null +++ b/typr/src/scala/typr/internal/TypeMatcher.scala @@ -0,0 +1,812 @@ +package typr +package internal + +/** Evaluates TypeDefinitions predicates against database columns and OpenAPI fields. */ +object TypeMatcher { + + /** Result of matching a TypeEntry against a source */ + case class MatchResult( + entry: TypeEntry, + source: MatchSource, + dbType: db.Type + ) + + sealed trait MatchSource + object MatchSource { + case class DbColumn(database: String, schema: String, table: String, column: String) extends MatchSource + case class ApiField(spec: String, path: String, fieldName: String, kind: ApiFieldKind) extends MatchSource + } + + sealed trait ApiFieldKind + object ApiFieldKind { + case object ModelProperty extends ApiFieldKind + case object Parameter extends ApiFieldKind + } + + /** Context needed to match a database column */ + case class DbColumnContext( + databaseName: String, + schema: String, + table: String, + col: db.Col, + isPrimaryKey: Boolean, + foreignKeys: List[db.ForeignKey] + ) { + + /** Get foreign key references for this column as "table.column" strings */ + def references: List[String] = + foreignKeys.flatMap { fk => + fk.cols.toList.zip(fk.otherCols.toList).collectFirst { + case (colName, otherColName) if colName == col.name => + s"${fk.otherTable.value}.${otherColName.value}" + } + } + } + + object DbColumnContext { + + /** Construct from ComputedTable and column */ + def from(databaseName: String, table: db.Table, col: db.Col): DbColumnContext = { + val isPk = table.primaryKey.exists(_.colNames.toList.contains(col.name)) + DbColumnContext( + databaseName = databaseName, + schema = table.name.schema.getOrElse(""), + table = table.name.name, + col = col, + isPrimaryKey = isPk, + foreignKeys = table.foreignKeys + ) + } + } + + /** Find all TypeEntry matches for a database column */ + def findDbMatches( + definitions: TypeDefinitions, + ctx: DbColumnContext + ): List[MatchResult] = + definitions.entries + .filter { entry => + entry.db != DbMatch.Empty && matchesDb(entry.db, ctx) + } + .map { entry => + MatchResult( + entry = entry, + source = MatchSource.DbColumn(ctx.databaseName, ctx.schema, ctx.table, ctx.col.name.value), + dbType = ctx.col.tpe + ) + } + + /** Evaluate a DbMatch predicate against a column context */ + def matchesDb( + m: DbMatch, + ctx: DbColumnContext + ): Boolean = { + val col = ctx.col + + matchesGlob(m.database, ctx.databaseName) && + matchesGlob(m.schema, ctx.schema) && + matchesGlob(m.table, ctx.table) && + matchesGlob(m.column, col.name.value) && + matchesGlob(m.dbType, typeName(col.tpe)) && + matchesGlob(m.domain, domainName(col.tpe)) && + matchesOpt(m.primaryKey, ctx.isPrimaryKey) && + matchesOpt(m.nullable, col.nullability == Nullability.Nullable) && + matchesGlob(m.references, ctx.references.mkString(",")) && + matchesGlob(m.comment, col.comment.getOrElse("")) && + matchesGlob(m.annotation, extractAnnotations(col.comment).mkString(",")) + } + + /** Extract the type name for matching */ + private def typeName(tpe: db.Type): String = tpe match { + // PostgreSQL types + case db.PgType.Array(inner) => s"${typeName(inner)}[]" + case db.PgType.Boolean => "boolean" + case db.PgType.Bpchar(len) => len.fold("bpchar")(l => s"bpchar($l)") + case db.PgType.Bytea => "bytea" + case db.PgType.Char => "char" + case db.PgType.Date => "date" + case db.PgType.DomainRef(name, _, _) => name.value + case db.PgType.Float4 => "float4" + case db.PgType.Float8 => "float8" + case db.PgType.Hstore => "hstore" + case db.PgType.Inet => "inet" + case db.PgType.Cidr => "cidr" + case db.PgType.MacAddr => "macaddr" + case db.PgType.MacAddr8 => "macaddr8" + case db.PgType.Int2 => "int2" + case db.PgType.Int4 => "int4" + case db.PgType.Int8 => "int8" + case db.PgType.Json => "json" + case db.PgType.Jsonb => "jsonb" + case db.PgType.Name => "name" + case db.PgType.Numeric => "numeric" + case db.PgType.Oid => "oid" + case db.PgType.PGInterval => "interval" + case db.PgType.PGbox => "box" + case db.PgType.PGcircle => "circle" + case db.PgType.PGline => "line" + case db.PgType.PGlsn => "pg_lsn" + case db.PgType.PGlseg => "lseg" + case db.PgType.PGmoney => "money" + case db.PgType.PGpath => "path" + case db.PgType.PGpoint => "point" + case db.PgType.PGpolygon => "polygon" + case db.PgType.aclitem => "aclitem" + case db.PgType.anyarray => "anyarray" + case db.PgType.int2vector => "int2vector" + case db.PgType.oidvector => "oidvector" + case db.PgType.pg_node_tree => "pg_node_tree" + case db.PgType.record => "record" + case db.PgType.regclass => "regclass" + case db.PgType.regconfig => "regconfig" + case db.PgType.regdictionary => "regdictionary" + case db.PgType.regnamespace => "regnamespace" + case db.PgType.regoper => "regoper" + case db.PgType.regoperator => "regoperator" + case db.PgType.regproc => "regproc" + case db.PgType.regprocedure => "regprocedure" + case db.PgType.regrole => "regrole" + case db.PgType.regtype => "regtype" + case db.PgType.xid => "xid" + case db.PgType.EnumRef(enm) => enm.name.value + case db.PgType.Text => "text" + case db.PgType.Time => "time" + case db.PgType.TimeTz => "timetz" + case db.PgType.Timestamp => "timestamp" + case db.PgType.TimestampTz => "timestamptz" + case db.PgType.UUID => "uuid" + case db.PgType.Xml => "xml" + case db.PgType.VarChar(len) => len.fold("varchar")(l => s"varchar($l)") + case db.PgType.Vector => "vector" + case db.PgType.CompositeType(name, _) => name.value + + // MariaDB types + case db.MariaType.TinyInt => "tinyint" + case db.MariaType.SmallInt => "smallint" + case db.MariaType.MediumInt => "mediumint" + case db.MariaType.Int => "int" + case db.MariaType.BigInt => "bigint" + case db.MariaType.TinyIntUnsigned => "tinyint unsigned" + case db.MariaType.SmallIntUnsigned => "smallint unsigned" + case db.MariaType.MediumIntUnsigned => "mediumint unsigned" + case db.MariaType.IntUnsigned => "int unsigned" + case db.MariaType.BigIntUnsigned => "bigint unsigned" + case db.MariaType.Decimal(_, _) => "decimal" + case db.MariaType.Float => "float" + case db.MariaType.Double => "double" + case db.MariaType.Boolean => "boolean" + case db.MariaType.Bit(_) => "bit" + case db.MariaType.Char(_) => "char" + case db.MariaType.VarChar(_) => "varchar" + case db.MariaType.TinyText => "tinytext" + case db.MariaType.Text => "text" + case db.MariaType.MediumText => "mediumtext" + case db.MariaType.LongText => "longtext" + case db.MariaType.Binary(_) => "binary" + case db.MariaType.VarBinary(_) => "varbinary" + case db.MariaType.TinyBlob => "tinyblob" + case db.MariaType.Blob => "blob" + case db.MariaType.MediumBlob => "mediumblob" + case db.MariaType.LongBlob => "longblob" + case db.MariaType.Date => "date" + case db.MariaType.Time(_) => "time" + case db.MariaType.DateTime(_) => "datetime" + case db.MariaType.Timestamp(_) => "timestamp" + case db.MariaType.Year => "year" + case db.MariaType.Enum(_) => "enum" + case db.MariaType.Set(_) => "set" + case db.MariaType.Inet4 => "inet4" + case db.MariaType.Inet6 => "inet6" + case db.MariaType.Geometry => "geometry" + case db.MariaType.Point => "point" + case db.MariaType.LineString => "linestring" + case db.MariaType.Polygon => "polygon" + case db.MariaType.MultiPoint => "multipoint" + case db.MariaType.MultiLineString => "multilinestring" + case db.MariaType.MultiPolygon => "multipolygon" + case db.MariaType.GeometryCollection => "geometrycollection" + case db.MariaType.Json => "json" + + // DuckDB types + case db.DuckDbType.TinyInt => "tinyint" + case db.DuckDbType.SmallInt => "smallint" + case db.DuckDbType.Integer => "integer" + case db.DuckDbType.BigInt => "bigint" + case db.DuckDbType.HugeInt => "hugeint" + case db.DuckDbType.UTinyInt => "utinyint" + case db.DuckDbType.USmallInt => "usmallint" + case db.DuckDbType.UInteger => "uinteger" + case db.DuckDbType.UBigInt => "ubigint" + case db.DuckDbType.UHugeInt => "uhugeint" + case db.DuckDbType.Float => "float" + case db.DuckDbType.Double => "double" + case db.DuckDbType.Decimal(_, _) => "decimal" + case db.DuckDbType.Boolean => "boolean" + case db.DuckDbType.VarChar(_) => "varchar" + case db.DuckDbType.Char(_) => "char" + case db.DuckDbType.Text => "text" + case db.DuckDbType.Blob => "blob" + case db.DuckDbType.Bit(_) => "bit" + case db.DuckDbType.Date => "date" + case db.DuckDbType.Time => "time" + case db.DuckDbType.Timestamp => "timestamp" + case db.DuckDbType.TimestampTz => "timestamptz" + case db.DuckDbType.TimestampS => "timestamp_s" + case db.DuckDbType.TimestampMS => "timestamp_ms" + case db.DuckDbType.TimestampNS => "timestamp_ns" + case db.DuckDbType.TimeTz => "timetz" + case db.DuckDbType.Interval => "interval" + case db.DuckDbType.UUID => "uuid" + case db.DuckDbType.Json => "json" + case db.DuckDbType.Enum(name, _) => name + case db.DuckDbType.ListType(inner) => s"${typeName(inner)}[]" + case db.DuckDbType.ArrayType(inner, _) => s"${typeName(inner)}[]" + case db.DuckDbType.MapType(k, v) => s"map(${typeName(k)},${typeName(v)})" + case db.DuckDbType.StructType(_) => "struct" + case db.DuckDbType.UnionType(_) => "union" + + // Oracle types + case db.OracleType.Number(_, _) => "number" + case db.OracleType.BinaryFloat => "binary_float" + case db.OracleType.BinaryDouble => "binary_double" + case db.OracleType.Float(_) => "float" + case db.OracleType.Varchar2(_) => "varchar2" + case db.OracleType.NVarchar2(_) => "nvarchar2" + case db.OracleType.Char(_) => "char" + case db.OracleType.NChar(_) => "nchar" + case db.OracleType.Clob => "clob" + case db.OracleType.NClob => "nclob" + case db.OracleType.Long => "long" + case db.OracleType.Raw(_) => "raw" + case db.OracleType.Blob => "blob" + case db.OracleType.LongRaw => "long raw" + case db.OracleType.Date => "date" + case db.OracleType.Timestamp(_) => "timestamp" + case db.OracleType.TimestampWithTimeZone(_) => "timestamp with time zone" + case db.OracleType.TimestampWithLocalTimeZone(_) => "timestamp with local time zone" + case db.OracleType.IntervalYearToMonth(_) => "interval year to month" + case db.OracleType.IntervalDayToSecond(_, _) => "interval day to second" + case db.OracleType.RowId => "rowid" + case db.OracleType.URowId(_) => "urowid" + case db.OracleType.XmlType => "xmltype" + case db.OracleType.Json => "json" + case db.OracleType.Boolean => "boolean" + case db.OracleType.ObjectType(name, _, _, _, _) => name.value + case db.OracleType.VArray(name, _, _) => name.value + case db.OracleType.NestedTable(name, _, _) => name.value + case db.OracleType.RefType(objTpe) => s"ref ${objTpe.value}" + case db.OracleType.SdoGeometry => "sdo_geometry" + case db.OracleType.SdoPoint => "sdo_point" + case db.OracleType.AnyData => "anydata" + + // SQL Server types + case db.SqlServerType.TinyInt => "tinyint" + case db.SqlServerType.SmallInt => "smallint" + case db.SqlServerType.Int => "int" + case db.SqlServerType.BigInt => "bigint" + case db.SqlServerType.Decimal(_, _) => "decimal" + case db.SqlServerType.Numeric(_, _) => "numeric" + case db.SqlServerType.Money => "money" + case db.SqlServerType.SmallMoney => "smallmoney" + case db.SqlServerType.Float => "float" + case db.SqlServerType.Real => "real" + case db.SqlServerType.Bit => "bit" + case db.SqlServerType.Char(_) => "char" + case db.SqlServerType.VarChar(_) => "varchar" + case db.SqlServerType.Text => "text" + case db.SqlServerType.NChar(_) => "nchar" + case db.SqlServerType.NVarChar(_) => "nvarchar" + case db.SqlServerType.NText => "ntext" + case db.SqlServerType.Binary(_) => "binary" + case db.SqlServerType.VarBinary(_) => "varbinary" + case db.SqlServerType.Image => "image" + case db.SqlServerType.Date => "date" + case db.SqlServerType.Time(_) => "time" + case db.SqlServerType.DateTime => "datetime" + case db.SqlServerType.SmallDateTime => "smalldatetime" + case db.SqlServerType.DateTime2(_) => "datetime2" + case db.SqlServerType.DateTimeOffset(_) => "datetimeoffset" + case db.SqlServerType.UniqueIdentifier => "uniqueidentifier" + case db.SqlServerType.Xml => "xml" + case db.SqlServerType.Json => "json" + case db.SqlServerType.Vector => "vector" + case db.SqlServerType.Geography => "geography" + case db.SqlServerType.Geometry => "geometry" + case db.SqlServerType.RowVersion => "rowversion" + case db.SqlServerType.HierarchyId => "hierarchyid" + case db.SqlServerType.SqlVariant => "sql_variant" + case db.SqlServerType.TableTypeRef(name, _) => name.value + case db.SqlServerType.AliasTypeRef(name, _, _, _) => name.value + case db.SqlServerType.ClrTypeRef(name, _, _) => name.value + + // DB2 types + case db.DB2Type.SmallInt => "smallint" + case db.DB2Type.Integer => "integer" + case db.DB2Type.BigInt => "bigint" + case db.DB2Type.Decimal(_, _) => "decimal" + case db.DB2Type.DecFloat(_) => "decfloat" + case db.DB2Type.Real => "real" + case db.DB2Type.Double => "double" + case db.DB2Type.Boolean => "boolean" + case db.DB2Type.Char(_) => "char" + case db.DB2Type.VarChar(_) => "varchar" + case db.DB2Type.Clob => "clob" + case db.DB2Type.Long => "long" + case db.DB2Type.Graphic(_) => "graphic" + case db.DB2Type.VarGraphic(_) => "vargraphic" + case db.DB2Type.DbClob => "dbclob" + case db.DB2Type.LongVarGraphic => "long vargraphic" + case db.DB2Type.Binary(_) => "binary" + case db.DB2Type.VarBinary(_) => "varbinary" + case db.DB2Type.Blob => "blob" + case db.DB2Type.Date => "date" + case db.DB2Type.Time => "time" + case db.DB2Type.Timestamp(_) => "timestamp" + case db.DB2Type.Xml => "xml" + case db.DB2Type.RowId => "rowid" + case db.DB2Type.DistinctType(name, _) => name.value + + // Unknown + case db.Unknown(sqlType) => sqlType + } + + /** Extract domain name if this is a domain reference type */ + private def domainName(tpe: db.Type): String = tpe match { + case db.PgType.DomainRef(name, _, _) => name.value + case db.DB2Type.DistinctType(name, _) => name.value + case db.SqlServerType.AliasTypeRef(name, _, _, _) => name.value + case _ => "" + } + + /** Check if a value matches any of the glob patterns (OR semantics). Empty pattern list means "match any". + */ + private def matchesGlob(patterns: List[String], value: String): Boolean = + patterns.isEmpty || patterns.exists(p => globMatch(p, value)) + + /** Check if an optional constraint matches (if constraint is specified). None means "match any". + */ + private def matchesOpt[A](constraint: Option[A], value: A): Boolean = + constraint.isEmpty || constraint.contains(value) + + /** Simple glob matching: * matches any sequence, ? matches single char */ + def globMatch(pattern: String, value: String): Boolean = { + val regex = pattern + .replace(".", "\\.") + .replace("*", ".*") + .replace("?", ".") + value.matches(s"(?i)$regex") // case-insensitive + } + + /** Extract @annotations from column comments. Format: @annotation or @annotation(value) + */ + private def extractAnnotations(comment: Option[String]): List[String] = + comment match { + case None => Nil + case Some(text) => + val pattern = """@(\w+)(?:\(([^)]*)\))?""".r + pattern + .findAllMatchIn(text) + .map { m => + val name = m.group(1) + val value = Option(m.group(2)) + value.fold(name)(v => s"$name($v)") + } + .toList + } + + // ═══════════════════════════════════════════════════════════════════════════════ + // OpenAPI Field Matching + // ═══════════════════════════════════════════════════════════════════════════════ + + /** Context needed to match an OpenAPI field */ + case class ApiFieldContext( + specName: String, + operationId: String, + httpMethod: String, + path: String, + location: ApiLocation, + fieldName: String, + jsonPath: String, + typeInfo: openapi.TypeInfo, + required: Boolean, + extensions: Map[String, String] + ) + + object ApiFieldContext { + + /** Create context for a path/query/header/cookie parameter */ + def fromParameter( + specName: String, + method: openapi.ApiMethod, + param: openapi.ApiParameter + ): ApiFieldContext = { + val location = param.in match { + case openapi.ParameterIn.Path => ApiLocation.PathParam + case openapi.ParameterIn.Query => ApiLocation.QueryParam + case openapi.ParameterIn.Header => ApiLocation.HeaderParam + case openapi.ParameterIn.Cookie => ApiLocation.CookieParam + } + ApiFieldContext( + specName = specName, + operationId = method.name, + httpMethod = httpMethodString(method.httpMethod), + path = method.path, + location = location, + fieldName = param.name, + jsonPath = param.name, + typeInfo = param.typeInfo, + required = param.required, + extensions = Map.empty + ) + } + + /** Create context for a request body field */ + def fromRequestBody( + specName: String, + method: openapi.ApiMethod, + body: openapi.RequestBody, + jsonPath: String + ): ApiFieldContext = + ApiFieldContext( + specName = specName, + operationId = method.name, + httpMethod = httpMethodString(method.httpMethod), + path = method.path, + location = ApiLocation.RequestBody, + fieldName = jsonPath.split("/").lastOption.getOrElse(""), + jsonPath = jsonPath, + typeInfo = body.typeInfo, + required = body.required, + extensions = Map.empty + ) + + /** Create context for a response body */ + def fromResponseBody( + specName: String, + method: openapi.ApiMethod, + response: openapi.ApiResponse, + jsonPath: String + ): Option[ApiFieldContext] = + response.typeInfo.map { typeInfo => + ApiFieldContext( + specName = specName, + operationId = method.name, + httpMethod = httpMethodString(method.httpMethod), + path = method.path, + location = ApiLocation.ResponseBody, + fieldName = jsonPath.split("/").lastOption.getOrElse(""), + jsonPath = jsonPath, + typeInfo = typeInfo, + required = true, + extensions = Map.empty + ) + } + + private def httpMethodString(method: openapi.HttpMethod): String = method match { + case openapi.HttpMethod.Get => "GET" + case openapi.HttpMethod.Post => "POST" + case openapi.HttpMethod.Put => "PUT" + case openapi.HttpMethod.Delete => "DELETE" + case openapi.HttpMethod.Patch => "PATCH" + case openapi.HttpMethod.Head => "HEAD" + case openapi.HttpMethod.Options => "OPTIONS" + } + } + + /** Find all TypeEntry matches for an API field */ + def findApiMatches( + definitions: TypeDefinitions, + ctx: ApiFieldContext + ): List[MatchResult] = { + val kind = ctx.location match { + case ApiLocation.ResponseBody | ApiLocation.RequestBody | ApiLocation.AnyBody => ApiFieldKind.ModelProperty + case _ => ApiFieldKind.Parameter + } + definitions.entries + .filter { entry => + entry.api != ApiMatch.Empty && matchesApi(entry.api, ctx) + } + .map { entry => + MatchResult( + entry = entry, + source = MatchSource.ApiField(ctx.specName, ctx.path, ctx.fieldName, kind), + dbType = typeInfoToDbType(ctx.typeInfo) + ) + } + } + + /** Evaluate an ApiMatch predicate against an API field context */ + def matchesApi( + m: ApiMatch, + ctx: ApiFieldContext + ): Boolean = { + matchesLocation(m.location, ctx.location) && + matchesGlob(m.spec, ctx.specName) && + matchesGlob(m.operationId, ctx.operationId) && + matchesGlob(m.httpMethod, ctx.httpMethod) && + matchesGlob(m.path, ctx.path) && + matchesGlob(m.name, ctx.fieldName) && + matchesGlob(m.jsonPath, ctx.jsonPath) && + matchesGlob(m.schemaType, schemaTypeName(ctx.typeInfo)) && + matchesGlob(m.format, schemaFormat(ctx.typeInfo)) && + matchesGlob(m.schemaRef, schemaRefName(ctx.typeInfo)) && + matchesOpt(m.required, ctx.required) && + matchesExtensions(m.extension, ctx.extensions) + } + + /** Check if a location matches any of the allowed locations */ + private def matchesLocation(patterns: List[ApiLocation], value: ApiLocation): Boolean = + patterns.isEmpty || patterns.exists { pattern => + pattern == value || expandLocation(pattern).contains(value) + } + + /** Expand convenience groupings */ + private def expandLocation(loc: ApiLocation): Set[ApiLocation] = loc match { + case ApiLocation.AnyParam => Set(ApiLocation.PathParam, ApiLocation.QueryParam, ApiLocation.HeaderParam, ApiLocation.CookieParam) + case ApiLocation.AnyBody => Set(ApiLocation.RequestBody, ApiLocation.ResponseBody) + case other => Set(other) + } + + /** Check if all required extensions match */ + private def matchesExtensions(required: Map[String, String], actual: Map[String, String]): Boolean = + required.forall { case (key, pattern) => + actual.get(key).exists(value => globMatch(pattern, value)) + } + + /** Extract OpenAPI schema type name for matching */ + private def schemaTypeName(typeInfo: openapi.TypeInfo): String = typeInfo match { + case openapi.TypeInfo.Primitive(prim) => primitiveTypeName(prim) + case openapi.TypeInfo.ListOf(_) => "array" + case openapi.TypeInfo.Optional(inner) => schemaTypeName(inner) + case openapi.TypeInfo.MapOf(_, _) => "object" + case openapi.TypeInfo.Ref(_) => "object" + case openapi.TypeInfo.Any => "any" + case openapi.TypeInfo.InlineEnum(_) => "string" + } + + private def primitiveTypeName(prim: openapi.PrimitiveType): String = prim match { + case openapi.PrimitiveType.String => "string" + case openapi.PrimitiveType.Int32 => "integer" + case openapi.PrimitiveType.Int64 => "integer" + case openapi.PrimitiveType.Float => "number" + case openapi.PrimitiveType.Double => "number" + case openapi.PrimitiveType.Boolean => "boolean" + case openapi.PrimitiveType.Date => "string" + case openapi.PrimitiveType.DateTime => "string" + case openapi.PrimitiveType.Time => "string" + case openapi.PrimitiveType.UUID => "string" + case openapi.PrimitiveType.URI => "string" + case openapi.PrimitiveType.Email => "string" + case openapi.PrimitiveType.Binary => "string" + case openapi.PrimitiveType.Byte => "string" + case openapi.PrimitiveType.BigDecimal => "number" + } + + /** Extract OpenAPI format for matching */ + private def schemaFormat(typeInfo: openapi.TypeInfo): String = typeInfo match { + case openapi.TypeInfo.Primitive(prim) => primitiveFormat(prim) + case openapi.TypeInfo.Optional(inner) => schemaFormat(inner) + case _ => "" + } + + private def primitiveFormat(prim: openapi.PrimitiveType): String = prim match { + case openapi.PrimitiveType.String => "" + case openapi.PrimitiveType.Int32 => "int32" + case openapi.PrimitiveType.Int64 => "int64" + case openapi.PrimitiveType.Float => "float" + case openapi.PrimitiveType.Double => "double" + case openapi.PrimitiveType.Boolean => "" + case openapi.PrimitiveType.Date => "date" + case openapi.PrimitiveType.DateTime => "date-time" + case openapi.PrimitiveType.Time => "time" + case openapi.PrimitiveType.UUID => "uuid" + case openapi.PrimitiveType.URI => "uri" + case openapi.PrimitiveType.Email => "email" + case openapi.PrimitiveType.Binary => "binary" + case openapi.PrimitiveType.Byte => "byte" + case openapi.PrimitiveType.BigDecimal => "decimal" + } + + /** Extract schema $ref name for matching */ + private def schemaRefName(typeInfo: openapi.TypeInfo): String = typeInfo match { + case openapi.TypeInfo.Ref(name) => name + case openapi.TypeInfo.Optional(inner) => schemaRefName(inner) + case openapi.TypeInfo.ListOf(inner) => schemaRefName(inner) + case _ => "" + } + + /** Convert OpenAPI TypeInfo to a db.Type for MatchResult. This creates a synthetic db.Type for type compatibility checking. + */ + private def typeInfoToDbType(typeInfo: openapi.TypeInfo): db.Type = typeInfo match { + case openapi.TypeInfo.Primitive(prim) => primitiveToDbType(prim) + case openapi.TypeInfo.ListOf(inner) => db.PgType.Array(typeInfoToDbType(inner)) + case openapi.TypeInfo.Optional(inner) => typeInfoToDbType(inner) + case openapi.TypeInfo.MapOf(_, _) => db.PgType.Jsonb + case openapi.TypeInfo.Ref(_) => db.PgType.Jsonb + case openapi.TypeInfo.Any => db.PgType.Jsonb + case openapi.TypeInfo.InlineEnum(_) => db.PgType.Text + } + + private def primitiveToDbType(prim: openapi.PrimitiveType): db.Type = prim match { + case openapi.PrimitiveType.String => db.PgType.Text + case openapi.PrimitiveType.Int32 => db.PgType.Int4 + case openapi.PrimitiveType.Int64 => db.PgType.Int8 + case openapi.PrimitiveType.Float => db.PgType.Float4 + case openapi.PrimitiveType.Double => db.PgType.Float8 + case openapi.PrimitiveType.Boolean => db.PgType.Boolean + case openapi.PrimitiveType.Date => db.PgType.Date + case openapi.PrimitiveType.DateTime => db.PgType.TimestampTz + case openapi.PrimitiveType.Time => db.PgType.Time + case openapi.PrimitiveType.UUID => db.PgType.UUID + case openapi.PrimitiveType.URI => db.PgType.Text + case openapi.PrimitiveType.Email => db.PgType.Text + case openapi.PrimitiveType.Binary => db.PgType.Bytea + case openapi.PrimitiveType.Byte => db.PgType.Bytea + case openapi.PrimitiveType.BigDecimal => db.PgType.Numeric + } + + // ═══════════════════════════════════════════════════════════════════════════════ + // Integration Helpers + // ═══════════════════════════════════════════════════════════════════════════════ + + /** Result of scanning OpenAPI spec for TypeDefinitions matches */ + case class OpenApiScanResult( + /** All matches found, grouped by TypeEntry */ + matchesByEntry: Map[TypeEntry, List[MatchResult]], + /** Compatibility check results for validation */ + compatibilityResults: List[TypeCompatibilityChecker.CheckResult], + /** Errors found during compatibility checking */ + errors: List[String] + ) + + /** Scan an OpenAPI spec for TypeDefinitions matches. + * + * @param definitions + * The TypeDefinitions to match against + * @param specName + * Name of the spec (for multi-spec matching) + * @param spec + * The parsed OpenAPI spec + * @return + * OpenApiScanResult with matches, compatibility results, and errors + */ + def scanOpenApi( + definitions: TypeDefinitions, + specName: String, + spec: openapi.ParsedSpec + ): OpenApiScanResult = { + if (definitions.isEmpty || definitions.entries.forall(_.api == ApiMatch.Empty)) { + return OpenApiScanResult(Map.empty, Nil, Nil) + } + + // Collect matches from model properties + val modelMatches: List[MatchResult] = spec.models.flatMap { + case obj: openapi.ModelClass.ObjectType => + obj.properties.flatMap { prop => + val ctx = ApiFieldContext( + specName = specName, + operationId = "", + httpMethod = "", + path = obj.name, + location = ApiLocation.ResponseBody, + fieldName = prop.name, + jsonPath = s"${obj.name}.${prop.name}", + typeInfo = prop.typeInfo, + required = prop.required, + extensions = Map.empty + ) + findApiMatches(definitions, ctx) + } + case _ => Nil + } + + // Collect matches from API parameters + val paramMatches: List[MatchResult] = spec.apis.flatMap { api => + api.methods.flatMap { method => + method.parameters.flatMap { param => + val ctx = ApiFieldContext.fromParameter(specName, method, param) + findApiMatches(definitions, ctx) + } + } + } + + val allMatches = modelMatches ++ paramMatches + + // Group by TypeEntry + val matchesByEntry: Map[TypeEntry, List[MatchResult]] = + allMatches.groupBy(_.entry) + + // Check compatibility + val compatibilityResults = definitions.entries.map { entry => + TypeCompatibilityChecker.check(entry, matchesByEntry.getOrElse(entry, Nil)) + } + + // Collect errors + val errors = compatibilityResults.collect { case e: TypeCompatibilityChecker.CheckResult.Incompatible => + e.errorMessage + } + + OpenApiScanResult(matchesByEntry, compatibilityResults, errors) + } + + /** Result of scanning tables for TypeDefinitions matches */ + case class ScanResult( + /** All matches found, grouped by TypeEntry */ + matchesByEntry: Map[TypeEntry, List[MatchResult]], + /** TypeOverride to use during code generation */ + typeOverride: TypeOverride, + /** Compatibility check results for validation */ + compatibilityResults: List[TypeCompatibilityChecker.CheckResult], + /** Errors found during compatibility checking */ + errors: List[String] + ) + + /** Scan all tables for TypeDefinitions matches and build a TypeOverride. + * + * @param definitions + * The TypeDefinitions to match against + * @param databaseName + * Name of the database (for multi-database matching) + * @param tables + * All tables to scan + * @param sharedTypesPackage + * Package where shared types will be generated + * @return + * ScanResult with matches, TypeOverride, and any errors + */ + def scanTables( + definitions: TypeDefinitions, + databaseName: String, + tables: List[db.Table], + sharedTypesPackage: jvm.QIdent + ): ScanResult = { + if (definitions.isEmpty) { + return ScanResult(Map.empty, TypeOverride.Empty, Nil, Nil) + } + + // Collect all matches + val allMatches: List[MatchResult] = tables.flatMap { table => + table.cols.toList.flatMap { col => + val ctx = DbColumnContext.from(databaseName, table, col) + findDbMatches(definitions, ctx) + } + } + + // Group by TypeEntry + val matchesByEntry: Map[TypeEntry, List[MatchResult]] = + allMatches.groupBy(_.entry) + + // Check compatibility + val compatibilityResults = definitions.entries.map { entry => + TypeCompatibilityChecker.check(entry, matchesByEntry.getOrElse(entry, Nil)) + } + + // Collect errors + val errors = compatibilityResults.collect { case e: TypeCompatibilityChecker.CheckResult.Incompatible => + e.errorMessage + } + + // Build TypeOverride for compatible entries + val typeOverrideMap: Map[(db.RelationName, db.ColName), String] = { + val compatible = compatibilityResults.collect { case c: TypeCompatibilityChecker.CheckResult.Compatible => + c + } + + compatible.flatMap { result => + val typeName = s"${sharedTypesPackage.dotName}.${result.entry.name}" + result.matches.flatMap { m => + m.source match { + case MatchSource.DbColumn(_, schema, table, column) => + val relName = db.RelationName(if (schema.isEmpty) None else Some(schema), table) + Some((relName, db.ColName(column)) -> typeName) + case _ => None + } + } + }.toMap + } + + val typeOverride: TypeOverride = (relation, colName) => typeOverrideMap.get((relation, colName)) + + ScanResult(matchesByEntry, typeOverride, compatibilityResults, errors) + } +} diff --git a/typr/src/scala/typr/internal/TypoType.scala b/typr/src/scala/typr/internal/TypoType.scala index 6e665928b5..8b0e5c1672 100644 --- a/typr/src/scala/typr/internal/TypoType.scala +++ b/typr/src/scala/typr/internal/TypoType.scala @@ -131,6 +131,57 @@ object TypoType { def withJvmType(newJvmType: jvm.Type): OffsetDateTimeN = copy(jvmType = newJvmType) } + /** How to transform from a source type to the canonical type. */ + sealed trait AlignmentTransform + + object AlignmentTransform { + + /** Direct mapping - source type already matches canonical type */ + case object Direct extends AlignmentTransform + + /** Unpack through the source type via bimap. + * + * Example: PostgreSQL Name domain wraps String. To align FirstName(String) with a Name column, we unpack through Name: `Name.pgType.bimap(n -> new FirstName(n.value()), fn -> new + * Name(fn.value()))` + */ + case object Unpack extends AlignmentTransform + } + + /** Represents a type aligned across multiple sources (databases, OpenAPI). + * + * Used when generating unified shared types. Each source may have a different underlying type (e.g., PostgreSQL uses Name domain, MariaDB uses varchar directly), but they all align to the same + * canonical JVM type. + * + * @param jvmType + * The canonical JVM type all sources align to (e.g., String) + * @param sourceType + * The source's TypoType for this generation (e.g., Generated(Name, DomainRef, Name) or Standard(String, VarChar)) + * @param transform + * How to transform: Direct if sourceType matches canonical, Unpack if bimap needed + * @param alignments + * All source alignments for documentation (shows where type was matched across all sources) + */ + case class Aligned(jvmType: jvm.Type, sourceType: TypoType, transform: AlignmentTransform, alignments: List[TypeAlignment]) extends TypoType { + def underlyingDbType: db.Type = sourceType.underlyingDbType + def innerJvmType: jvm.Type = jvmType + def withJvmType(newJvmType: jvm.Type): Aligned = copy(jvmType = newJvmType) + } + + /** Information about how a type aligns from a specific source (for documentation). + * + * @param sourceKind + * The kind of source (Database or OpenApi) + * @param dbType + * The source's database type (e.g., DomainRef(Name), VarChar, Text) + * @param locations + * Where this type was matched (e.g., "person.firstname", "Employee.firstName") + */ + case class TypeAlignment( + sourceKind: TypeAligner.SourceKind, + dbType: db.Type, + locations: List[String] + ) + /** Compute TypoType from JVM type and database type */ def fromJvmAndDb(jvmType: jvm.Type, dbType: db.Type, pkg: jvm.QIdent, lang: Lang): TypoType = { def compute(jvmType: jvm.Type, dbType: db.Type): TypoType = jvmType match { diff --git a/typr/src/scala/typr/internal/codegen/Db2Adapter.scala b/typr/src/scala/typr/internal/codegen/Db2Adapter.scala index 26ea41293e..bdbece633e 100644 --- a/typr/src/scala/typr/internal/codegen/Db2Adapter.scala +++ b/typr/src/scala/typr/internal/codegen/Db2Adapter.scala @@ -42,7 +42,7 @@ object Db2Adapter extends DbAdapter { val Types: jvm.Type.Qualified = jvm.Type.Qualified("dev.typr.foundations.Db2Types") val TypeClass: jvm.Type.Qualified = jvm.Type.Qualified("dev.typr.foundations.Db2Type") val TextClass: jvm.Type.Qualified = jvm.Type.Qualified("dev.typr.foundations.Db2Text") - val typeFieldName: jvm.Ident = jvm.Ident("dbType") + val typeFieldName: jvm.Ident = jvm.Ident("db2Type") val textFieldName: jvm.Ident = jvm.Ident("db2Text") def dialectRef(lang: Lang): Code = code"${lang.dsl.Dialect}.DB2" @@ -78,6 +78,9 @@ object Db2Adapter extends DbAdapter { case TypoType.Array(_, _) => sys.error("Db2Adapter.lookupType: DB2 does not support array types") + + case TypoType.Aligned(_, sourceType, _, _) => + lookupType(sourceType, naming, typeSupport) } def lookupPrimitive(primitive: analysis.WellKnownPrimitive, typeSupport: TypeSupport): Code = { diff --git a/typr/src/scala/typr/internal/codegen/DbAdapter.scala b/typr/src/scala/typr/internal/codegen/DbAdapter.scala index f87a5bb43a..0a27082425 100644 --- a/typr/src/scala/typr/internal/codegen/DbAdapter.scala +++ b/typr/src/scala/typr/internal/codegen/DbAdapter.scala @@ -57,6 +57,9 @@ trait DbAdapter { /** Field name for type instance on generated types */ def typeFieldName: jvm.Ident + /** Field name for array type instance on generated types (derived from typeFieldName) */ + def typeArrayFieldName: jvm.Ident = jvm.Ident(typeFieldName.value + "Array") + /** Field name for text instance on generated types */ def textFieldName: jvm.Ident diff --git a/typr/src/scala/typr/internal/codegen/DbLib.scala b/typr/src/scala/typr/internal/codegen/DbLib.scala index 49f8f53036..9538e1eb74 100644 --- a/typr/src/scala/typr/internal/codegen/DbLib.scala +++ b/typr/src/scala/typr/internal/codegen/DbLib.scala @@ -12,6 +12,10 @@ trait DbLib { def testInsertMethod(x: ComputedTestInserts.InsertMethod): jvm.Method def stringEnumInstances(wrapperType: jvm.Type, underlyingTypoType: TypoType, sqlType: String, openEnum: Boolean): List[jvm.ClassMember] def wrapperTypeInstances(wrapperType: jvm.Type.Qualified, underlyingJvmType: jvm.Type, underlyingDbType: db.Type, overrideDbType: Option[String]): List[jvm.ClassMember] + + /** Generate type instances for a wrapper type using full TypoType information. This overload handles Aligned types with Unpack transforms, generating two-step bimaps. + */ + def wrapperTypeInstances(wrapperType: jvm.Type.Qualified, typoType: TypoType, overrideDbType: Option[String]): List[jvm.ClassMember] def structInstances(computed: ComputedOracleObjectType): List[jvm.ClassMember] def collectionInstances(computed: ComputedOracleCollectionType): List[jvm.ClassMember] def missingInstances: List[jvm.ClassMember] diff --git a/typr/src/scala/typr/internal/codegen/DbLibFoundations.scala b/typr/src/scala/typr/internal/codegen/DbLibFoundations.scala index 0eeb93644a..d9bbbd5409 100644 --- a/typr/src/scala/typr/internal/codegen/DbLibFoundations.scala +++ b/typr/src/scala/typr/internal/codegen/DbLibFoundations.scala @@ -139,7 +139,7 @@ class DbLibFoundations( } def FR(content: jvm.Code) = SQL(content) - val dbTypeArrayName = jvm.Ident("dbTypeArray") + val dbTypeArrayName = adapter.typeArrayFieldName val rowParserName: jvm.Ident = jvm.Ident("_rowParser") import lang.prop @@ -2014,6 +2014,75 @@ class DbLibFoundations( ).flatten } + /** Generate type instances using full TypoType information. Handles Aligned types with Unpack transforms by generating two-step bimaps. + */ + override def wrapperTypeInstances(wrapperType: jvm.Type.Qualified, typoType: TypoType, overrideDbType: Option[String]): List[jvm.ClassMember] = + typoType match { + case TypoType.Aligned(canonicalJvmType, sourceType, transform, _) => + transform match { + case TypoType.AlignmentTransform.Direct => + // Direct mapping - same as standard + wrapperTypeInstances(wrapperType, canonicalJvmType, sourceType.underlyingDbType, overrideDbType) + + case TypoType.AlignmentTransform.Unpack => + // Two-step bimap through the source type wrapper + generateUnpackInstances(wrapperType, canonicalJvmType, sourceType, overrideDbType) + } + + case TypoType.Standard(jvmType, dbType) => + wrapperTypeInstances(wrapperType, jvmType, dbType, overrideDbType) + + case TypoType.Generated(_, dbType, qualifiedType) => + wrapperTypeInstances(wrapperType, qualifiedType, dbType, overrideDbType) + + case other => + // For other TypoTypes, use the underlying info + wrapperTypeInstances(wrapperType, other.jvmType, other.underlyingDbType, overrideDbType) + } + + /** Generate instances for Unpack transform - bimap through an intermediate wrapper type. + * + * For unified FirstName(String) where PostgreSQL uses Name domain: `Name.pgType.bimap(n -> new FirstName(n.value()), fn -> new Name(fn.value()))` + */ + private def generateUnpackInstances( + wrapperType: jvm.Type.Qualified, + @annotation.nowarn canonicalJvmType: jvm.Type, + sourceType: TypoType, + overrideDbType: Option[String] + ): List[jvm.ClassMember] = { + val value = jvm.Ident("value") + val x = jvm.Ident("x") + val w = jvm.Ident("w") + + // The intermediate wrapper must be a generated qualified type for us to reference its fields + val intermediateQualified: jvm.Type.Qualified = sourceType match { + case TypoType.Generated(_, _, q) => q + case _ => sys.error(s"Unpack transform requires Generated sourceType, got: $sourceType") + } + + def maybeRename(baseCode: jvm.Code, sqlType: String): jvm.Code = { + val sqlTypeLit = jvm.StrLit(sqlType) + code"$baseCode.renamed($sqlTypeLit)" + } + + List[jvm.ClassMember]( + jvm.Given( + tparams = Nil, + name = adapter.typeFieldName, + implicitParams = Nil, + tpe = adapter.TypeClass.of(wrapperType), + body = { + // Generate: IntermediateType.pgType.bimap(x -> new WrapperType(x.value()), w -> new IntermediateType(w.value())) + // Note: Use direct method calls ($x.$value()) not FieldGetterRef which is for method references + val toWrapper = jvm.Lambda(x, code"new $wrapperType($x.$value())") + val fromWrapper = jvm.Lambda(w, code"new $intermediateQualified($w.$value())") + val base = code"$intermediateQualified.${adapter.typeFieldName}.bimap($toWrapper, $fromWrapper)" + overrideDbType.fold(base)(maybeRename(base, _)) + } + ) + ) + } + override val missingInstances: List[jvm.ClassMember] = Nil override def rowInstances(tpe: jvm.Type, cols: NonEmptyList[ComputedColumn], rowType: DbLib.RowType): List[jvm.ClassMember] = { diff --git a/typr/src/scala/typr/internal/codegen/DbLibLegacy.scala b/typr/src/scala/typr/internal/codegen/DbLibLegacy.scala index c412c230be..13b75260d1 100644 --- a/typr/src/scala/typr/internal/codegen/DbLibLegacy.scala +++ b/typr/src/scala/typr/internal/codegen/DbLibLegacy.scala @@ -31,4 +31,13 @@ trait DbLibLegacy extends DbLib { override def booleanAndChain(exprs: NonEmptyList[jvm.Code]): jvm.Code = exprs.toList.reduceLeft[jvm.Code] { case (acc, current) => code"$acc.and($current)" } + + /** Legacy DbLibs don't support Aligned types - they're PostgreSQL-only and don't do multi-source generation. */ + override def wrapperTypeInstances(wrapperType: jvm.Type.Qualified, typoType: TypoType, overrideDbType: Option[String]): List[jvm.ClassMember] = + typoType match { + case TypoType.Aligned(_, _, _, _) => + sys.error("Legacy DbLibs (Anorm, Doobie, ZioJdbc) do not support Aligned types. Use DbLibFoundations for multi-source generation.") + case _ => + wrapperTypeInstances(wrapperType, typoType.jvmType, typoType.underlyingDbType, overrideDbType) + } } diff --git a/typr/src/scala/typr/internal/codegen/DuckDbAdapter.scala b/typr/src/scala/typr/internal/codegen/DuckDbAdapter.scala index 9d51582a53..4ec3b0486a 100644 --- a/typr/src/scala/typr/internal/codegen/DuckDbAdapter.scala +++ b/typr/src/scala/typr/internal/codegen/DuckDbAdapter.scala @@ -85,11 +85,11 @@ object DuckDbAdapter extends DbAdapter { case db.DuckDbType.Double => code"$ScalaDbTypes.DuckDbTypes.doubleArrayUnboxed" case _ => code"${lookupType(element, naming, TypeSupportJava)}.array()" } - // For Scala, Generated and UserDefined types have a dbTypeArray given + // For Scala, Generated and UserDefined types have a typeArrayFieldName given case TypoType.Generated(_, _, qualifiedType) => - code"$qualifiedType.dbTypeArray" + code"$qualifiedType.$typeArrayFieldName" case TypoType.UserDefined(_, _, Left(qualifiedType)) => - code"$qualifiedType.dbTypeArray" + code"$qualifiedType.$typeArrayFieldName" case _ => code"${lookupType(element, naming, TypeSupportJava)}.array()" } case _ => @@ -122,14 +122,17 @@ object DuckDbAdapter extends DbAdapter { case db.DuckDbType.Json => code"$Types.jsonArray" case _ => code"${lookupType(element, naming, TypeSupportJava)}.array()" } - // For Generated and UserDefined types, use the pre-defined dbTypeArray field + // For Generated and UserDefined types, use the pre-defined typeArrayFieldName field case TypoType.Generated(_, _, qualifiedType) => - code"$qualifiedType.dbTypeArray" + code"$qualifiedType.$typeArrayFieldName" case TypoType.UserDefined(_, _, Left(qualifiedType)) => - code"$qualifiedType.dbTypeArray" + code"$qualifiedType.$typeArrayFieldName" case _ => code"${lookupType(element, naming, TypeSupportJava)}.array()" } } + + case TypoType.Aligned(_, sourceType, _, _) => + lookupType(sourceType, naming, typeSupport) } def lookupPrimitive(primitive: analysis.WellKnownPrimitive, typeSupport: TypeSupport): Code = { diff --git a/typr/src/scala/typr/internal/codegen/FileMariaSet.scala b/typr/src/scala/typr/internal/codegen/FileMariaSet.scala index 3a6e68ac25..a195c60c6c 100644 --- a/typr/src/scala/typr/internal/codegen/FileMariaSet.scala +++ b/typr/src/scala/typr/internal/codegen/FileMariaSet.scala @@ -100,7 +100,7 @@ object FileMariaSet { List( jvm.Given( tparams = Nil, - name = jvm.Ident("dbType"), + name = jvm.Ident("mariaType"), implicitParams = Nil, tpe = MariaType.of(setType.tpe), body = body diff --git a/typr/src/scala/typr/internal/codegen/FileSharedType.scala b/typr/src/scala/typr/internal/codegen/FileSharedType.scala new file mode 100644 index 0000000000..d7c182ffe9 --- /dev/null +++ b/typr/src/scala/typr/internal/codegen/FileSharedType.scala @@ -0,0 +1,67 @@ +package typr +package internal +package codegen + +/** Generates wrapper type files for TypeDefinitions-based shared types. */ +object FileSharedType { + + def apply(computed: ComputedSharedType, options: InternalOptions, lang: Lang): jvm.File = { + val comments = scaladoc( + List( + s"Shared type `${computed.entry.name}`", + "Generated from TypeDefinitions matching" + ) + ) + val value = jvm.Ident("value") + + val bijection = + if (options.enableDsl) + Some { + val thisBijection = lang.dsl.Bijection.of(computed.tpe, computed.underlyingJvmType) + val expr = lang.bijection(computed.tpe, computed.underlyingJvmType, jvm.FieldGetterRef(computed.tpe, value), jvm.ConstructorMethodRef(computed.tpe)) + jvm.Given(Nil, jvm.Ident("bijection"), Nil, thisBijection, expr) + } + else None + + val jsonInstances = options.jsonLibs.map(_.wrapperTypeInstances(wrapperType = computed.tpe, fieldName = value, underlying = computed.underlyingJvmType)) + val instances = List( + bijection.toList, + jsonInstances.flatMap(_.givens), + options.dbLib.toList.flatMap( + _.wrapperTypeInstances( + wrapperType = computed.tpe, + underlyingJvmType = computed.underlyingJvmType, + underlyingDbType = computed.underlyingDbType, + overrideDbType = None + ) + ) + ).flatten + val fieldAnnotations = JsonLib.mergeFieldAnnotations(jsonInstances.flatMap(_.fieldAnnotations.toList)) + val typeAnnotations = jsonInstances.flatMap(_.typeAnnotations) + + val paramsWithAnnotations = List(jvm.Param(value, computed.underlyingJvmType)).map { p => + fieldAnnotations.get(p.name) match { + case Some(anns) => p.copy(annotations = p.annotations ++ anns) + case None => p + } + } + + val cls = jvm.Adt.Record( + annotations = typeAnnotations, + constructorAnnotations = Nil, + isWrapper = true, + privateConstructor = false, + comments = comments, + name = computed.tpe, + tparams = Nil, + params = paramsWithAnnotations, + implicitParams = Nil, + `extends` = None, + implements = Nil, + members = Nil, + staticMembers = instances + ) + + jvm.File(computed.tpe, cls, secondaryTypes = Nil, scope = Scope.Main) + } +} diff --git a/typr/src/scala/typr/internal/codegen/MariaDbAdapter.scala b/typr/src/scala/typr/internal/codegen/MariaDbAdapter.scala index dd112fe5d1..270718d57f 100644 --- a/typr/src/scala/typr/internal/codegen/MariaDbAdapter.scala +++ b/typr/src/scala/typr/internal/codegen/MariaDbAdapter.scala @@ -32,7 +32,7 @@ object MariaDbAdapter extends DbAdapter { val Types: jvm.Type.Qualified = jvm.Type.Qualified("dev.typr.foundations.MariaTypes") val TypeClass: jvm.Type.Qualified = jvm.Type.Qualified("dev.typr.foundations.MariaType") val TextClass: jvm.Type.Qualified = jvm.Type.Qualified("dev.typr.foundations.MariaText") - val typeFieldName: jvm.Ident = jvm.Ident("dbType") + val typeFieldName: jvm.Ident = jvm.Ident("mariaType") val textFieldName: jvm.Ident = jvm.Ident("mariaText") def dialectRef(lang: Lang): Code = code"${lang.dsl.Dialect}.MARIADB" @@ -70,6 +70,9 @@ object MariaDbAdapter extends DbAdapter { case TypoType.Array(_, _) => sys.error("MariaDbAdapter.lookupType: MariaDB does not support array types") + + case TypoType.Aligned(_, sourceType, _, _) => + lookupType(sourceType, naming, typeSupport) } def lookupPrimitive(primitive: analysis.WellKnownPrimitive, typeSupport: TypeSupport): Code = { diff --git a/typr/src/scala/typr/internal/codegen/OracleAdapter.scala b/typr/src/scala/typr/internal/codegen/OracleAdapter.scala index 2f742c7981..332c6492d4 100644 --- a/typr/src/scala/typr/internal/codegen/OracleAdapter.scala +++ b/typr/src/scala/typr/internal/codegen/OracleAdapter.scala @@ -73,6 +73,9 @@ object OracleAdapter extends DbAdapter { case TypoType.Array(_, _) => sys.error("OracleAdapter.lookupType: Oracle does not support array types in the same way as PostgreSQL") + + case TypoType.Aligned(_, sourceType, _, _) => + lookupType(sourceType, naming, typeSupport) } def lookupPrimitive(primitive: analysis.WellKnownPrimitive, typeSupport: TypeSupport): Code = { diff --git a/typr/src/scala/typr/internal/codegen/PostgresAdapter.scala b/typr/src/scala/typr/internal/codegen/PostgresAdapter.scala index 5ce06a9bb3..0e2e871e6e 100644 --- a/typr/src/scala/typr/internal/codegen/PostgresAdapter.scala +++ b/typr/src/scala/typr/internal/codegen/PostgresAdapter.scala @@ -86,7 +86,7 @@ class PostgresAdapter(needsTimestampCasts: Boolean) extends DbAdapter { val Types: jvm.Type.Qualified = jvm.Type.Qualified("dev.typr.foundations.PgTypes") val TypeClass: jvm.Type.Qualified = jvm.Type.Qualified("dev.typr.foundations.PgType") val TextClass: jvm.Type.Qualified = jvm.Type.Qualified("dev.typr.foundations.PgText") - val typeFieldName: jvm.Ident = jvm.Ident("dbType") + val typeFieldName: jvm.Ident = jvm.Ident("pgType") val textFieldName: jvm.Ident = jvm.Ident("pgText") def dialectRef(lang: Lang): Code = code"${lang.dsl.Dialect}.POSTGRESQL" @@ -145,6 +145,10 @@ class PostgresAdapter(needsTimestampCasts: Boolean) extends DbAdapter { // Java and Kotlin use boxed arrays code"${lookupType(element, naming, TypeSupportJava)}Array" } + + case TypoType.Aligned(_, sourceType, _, _) => + // For aligned types, lookup through the source type + lookupType(sourceType, naming, typeSupport) } def lookupPrimitive(primitive: analysis.WellKnownPrimitive, typeSupport: TypeSupport): Code = { diff --git a/typr/src/scala/typr/internal/codegen/SqlServerAdapter.scala b/typr/src/scala/typr/internal/codegen/SqlServerAdapter.scala index affc147900..df2a2c40bf 100644 --- a/typr/src/scala/typr/internal/codegen/SqlServerAdapter.scala +++ b/typr/src/scala/typr/internal/codegen/SqlServerAdapter.scala @@ -68,6 +68,9 @@ object SqlServerAdapter extends DbAdapter { case TypoType.Array(_, _) => sys.error("SqlServerAdapter.lookupType: SQL Server does not support array types") + + case TypoType.Aligned(_, sourceType, _, _) => + lookupType(sourceType, naming, typeSupport) } def lookupPrimitive(primitive: analysis.WellKnownPrimitive, typeSupport: TypeSupport): Code = { diff --git a/typr/src/scala/typr/internal/generate.scala b/typr/src/scala/typr/internal/generate.scala index a49836a2be..5168e85d8b 100644 --- a/typr/src/scala/typr/internal/generate.scala +++ b/typr/src/scala/typr/internal/generate.scala @@ -11,13 +11,35 @@ import scala.collection.immutable.SortedMap object generate { private type Files = Map[jvm.Type.Qualified, jvm.File] + /** Errors that can occur during code generation */ + sealed trait GenerateError { + def message: String + } + object GenerateError { + case class IncompatibleTypes(errors: List[String]) extends GenerateError { + def message: String = s"TypeDefinitions has ${errors.size} incompatible type(s):\n${errors.mkString("\n")}" + } + } + + /** Convenience method that throws on error. Use `apply` for proper error handling. */ + def orThrow( + publicOptions: Options, + metaDb0: MetaDb, + graph: ProjectGraph[Selector, List[SqlFile]], + openEnumsByTable: Map[db.RelationName, OpenEnum] + ): List[Generated] = + apply(publicOptions, metaDb0, graph, openEnumsByTable) match { + case Right(generated) => generated + case Left(error) => sys.error(error.message) + } + // use this constructor if you need to run `typo` multiple times with different options but same database/scripts def apply( publicOptions: Options, metaDb0: MetaDb, graph: ProjectGraph[Selector, List[SqlFile]], openEnumsByTable: Map[db.RelationName, OpenEnum] - ): List[Generated] = { + ): Either[GenerateError, List[Generated]] = { Banner.maybePrint(publicOptions) val metaDb = publicOptions.rewriteDatabase(metaDb0) val pkg = jvm.Type.Qualified(publicOptions.pkg).value @@ -28,6 +50,33 @@ object generate { val naming = publicOptions.naming(pkg, publicOptions.lang) val language = publicOptions.lang + val sharedTypesPackage = pkg / jvm.Ident("userdefined") + + // Scan tables for TypeDefinitions matches + val tablesForTypeDefs = metaDb.relations.values.flatMap(_.get).collect { case t: db.Table => t }.toList + val databaseName = metaDb.dbType match { + case DbType.PostgreSQL => "postgres" + case DbType.MariaDB => "mariadb" + case DbType.DuckDB => "duckdb" + case DbType.Oracle => "oracle" + case DbType.SqlServer => "sqlserver" + case DbType.DB2 => "db2" + } + + val scanResult = TypeMatcher.scanTables( + publicOptions.typeDefinitions, + databaseName, + tablesForTypeDefs, + sharedTypesPackage + ) + + // Check for TypeDefinitions errors - return early if any + if (scanResult.errors.nonEmpty) { + return Left(GenerateError.IncompatibleTypes(scanResult.errors)) + } + + // Combine TypeDefinitions override with user-provided override (user takes precedence) + val combinedTypeOverride = publicOptions.typeOverride.orElse(scanResult.typeOverride) /** Old DbLibs (Anorm, Doobie, ZioJdbc) use typr.dsl (Legacy DSL) */ def requireScalaWithLegacyDsl(lib: String): LangScala = language match { @@ -81,15 +130,16 @@ object generate { naming = naming, pkg = pkg, readonlyRepo = publicOptions.readonlyRepo, - typeOverride = publicOptions.typeOverride + typeOverride = combinedTypeOverride, + typeDefinitions = publicOptions.typeDefinitions ) val customTypes = new CustomTypes(customTypesPackage, language) val duckDbStructLookup = MetaDb.buildStructLookup(metaDb.duckDbStructTypes) val mariaSetTypes = metaDb.mariaSetTypes.map(ComputedMariaSet(naming)) val mariaSetLookup = mariaSetTypes.map(s => s.sortedValues.toList -> s).toMap val scalaTypeMapper = publicOptions.dbLib match { - case Some(DbLibName.Typo) => TypeMapperJvmNew(language, options.typeOverride, publicOptions.nullabilityOverride, naming, duckDbStructLookup, mariaSetLookup, publicOptions.enablePreciseTypes) - case _ => TypeMapperJvmOld(language, options.typeOverride, publicOptions.nullabilityOverride, naming, customTypes) + case Some(DbLibName.Typo) => TypeMapperJvmNew(language, combinedTypeOverride, publicOptions.nullabilityOverride, naming, duckDbStructLookup, mariaSetLookup, publicOptions.enablePreciseTypes) + case _ => TypeMapperJvmOld(language, combinedTypeOverride, publicOptions.nullabilityOverride, naming, customTypes) } val enums = metaDb.enums.map(ComputedStringEnum(naming)) val domains = metaDb.domains.map(ComputedDomain(naming, scalaTypeMapper)) @@ -103,6 +153,10 @@ object generate { val pgCompositeTypes = metaDb.pgCompositeTypes .map(ComputedPgCompositeType(naming, scalaTypeMapper)) val pgCompositeLookup = pgCompositeTypes.map(c => c.underlying.compositeType.name -> c).toMap + + // Generate shared types from TypeDefinitions + val computedSharedTypes = ComputedSharedType.fromScanResult(scanResult, sharedTypesPackage, scalaTypeMapper) + val projectsWithFiles: ProjectGraph[Files, List[jvm.File]] = graph.valueFromProject { project => val isRoot = graph == project @@ -249,6 +303,8 @@ object generate { } } } + val sharedTypeFiles = computedSharedTypes.map(FileSharedType(_, options, language)) + val defaultFile = FileDefault(default, options.jsonLibs, options.dbLib, language) val mostFiles: List[jvm.File] = List( @@ -262,6 +318,7 @@ object generate { pgCompositeTypeFiles, mariaSetTypeFiles, preciseTypeFiles, + sharedTypeFiles, customTypes.All.values.map(FileCustomType(options, language)), relationFilesByName.map { case (_, f) => f }, sqlFileFiles @@ -280,7 +337,7 @@ object generate { } minimize( mostFiles, - entryPoints = sqlFileFiles ++ keptRelations ++ domainFiles ++ oracleObjectTypeFiles ++ oracleCollectionTypeFiles ++ duckDbStructTypeFiles ++ compositeEntryPoints + entryPoints = sqlFileFiles ++ keptRelations ++ domainFiles ++ oracleObjectTypeFiles ++ oracleCollectionTypeFiles ++ duckDbStructTypeFiles ++ compositeEntryPoints ++ sharedTypeFiles ) } @@ -295,7 +352,7 @@ object generate { val keptTables = computedRelations.collect { case x: ComputedTable if options.enableTestInserts.include(x.dbTable.name) && keptTypes(x.names.RepoImplName) => x } if (keptTables.nonEmpty) { - val computed = ComputedTestInserts(project.name, options, language, customTypes, domains, enums, mariaSetTypes, computedRelationsByName, keptTables) + val computed = ComputedTestInserts(project.name, options, language, customTypes, domains, enums, mariaSetTypes, computedSharedTypes, computedRelationsByName, keptTables) FileTestInserts(computed, dbLib, language) } else Nil case _ => Nil @@ -322,7 +379,7 @@ object generate { } val deduplicated = deduplicate(projectsWithFiles) - deduplicated.toList.flatMap { p => Generated(publicOptions.lang, p.target, p.testTarget, p.value.valuesIterator ++ p.scripts) } + Right(deduplicated.toList.flatMap { p => Generated(publicOptions.lang, p.target, p.testTarget, p.value.valuesIterator ++ p.scripts) }) } // projects in graph will have duplicated files, this will pull the files up until they are no longer duplicated diff --git a/typr/src/scala/typr/openapi/OpenApiCodegen.scala b/typr/src/scala/typr/openapi/OpenApiCodegen.scala index 1ff5f2ef7b..bdf7e6bb5a 100644 --- a/typr/src/scala/typr/openapi/OpenApiCodegen.scala +++ b/typr/src/scala/typr/openapi/OpenApiCodegen.scala @@ -170,7 +170,16 @@ object OpenApiCodegen { } else { new TypeMapper(modelPkg, options.typeOverrides, lang) } - val modelCodegen = new ModelCodegen(modelPkg, typeMapper, lang, jsonLib, validationSupport, serverFrameworkSupport.getOrElse(NoFrameworkSupport)) + val modelCodegen = new ModelCodegen( + modelPkg, + typeMapper, + lang, + jsonLib, + validationSupport, + serverFrameworkSupport.getOrElse(NoFrameworkSupport), + options.typeDefinitions, + options.fieldTypeOverrides + ) val apiCodegen = new ApiCodegen( apiPkg, typeMapper, @@ -186,6 +195,16 @@ object OpenApiCodegen { val files = List.newBuilder[jvm.File] + // Generate wrapper types for TypeDefinitions entries that have api name patterns + if (!options.typeDefinitions.isEmpty) { + options.typeDefinitions.entries.foreach { entry => + if (entry.api.name.nonEmpty) { + val wrapperFile = generateWrapperTypeForEntry(entry, modelPkg, lang, jsonLib, serverFrameworkSupport.getOrElse(NoFrameworkSupport)) + files += wrapperFile + } + } + } + // Generate model classes spec.models.foreach { model => files += modelCodegen.generate(model) @@ -252,4 +271,62 @@ object OpenApiCodegen { .groupBy(_._1) .map { case (code, pairs) => (code, pairs.map(_._2)) } } + + /** Generate a wrapper type for a TypeDefinitions entry. + * + * The underlying type is inferred from the entry name: + * - Names containing "Is" or ending with "Flag" -> Boolean + * - Everything else -> String + */ + private def generateWrapperTypeForEntry( + entry: typr.TypeEntry, + modelPkg: jvm.QIdent, + lang: Lang, + jsonLib: codegen.JsonLibSupport, + serverFramework: codegen.FrameworkSupport + ): jvm.File = { + import typr.Scope + + val tpe = jvm.Type.Qualified(modelPkg / jvm.Ident(entry.name)) + + // Infer underlying type based on naming convention + val underlyingType: jvm.Type = { + val nameLower = entry.name.toLowerCase + if (nameLower.startsWith("is") || nameLower.endsWith("flag") || nameLower.contains("active") || nameLower.contains("salaried")) { + lang.Boolean + } else { + lang.String + } + } + + val valueParam = jvm.Param( + annotations = jsonLib.valueAnnotations, + comments = jvm.Comments.Empty, + name = jvm.Ident("value"), + tpe = underlyingType, + default = None + ) + + val staticMembers = jsonLib.wrapperTypeStaticMembers(tpe, underlyingType) ++ + serverFramework.wrapperTypeStaticMembers(tpe, underlyingType) + + val record = jvm.Adt.Record( + annotations = jsonLib.wrapperAnnotations(tpe), + constructorAnnotations = jsonLib.constructorAnnotations, + isWrapper = true, + privateConstructor = false, + comments = jvm.Comments.Empty, + name = tpe, + tparams = Nil, + params = List(valueParam), + implicitParams = Nil, + `extends` = None, + implements = Nil, + members = Nil, + staticMembers = staticMembers + ) + + val generatedCode = lang.renderTree(record, lang.Ctx.Empty) + jvm.File(tpe, generatedCode, secondaryTypes = Nil, scope = Scope.Main) + } } diff --git a/typr/src/scala/typr/openapi/OpenApiOptions.scala b/typr/src/scala/typr/openapi/OpenApiOptions.scala index 935b501260..76ec1da77e 100644 --- a/typr/src/scala/typr/openapi/OpenApiOptions.scala +++ b/typr/src/scala/typr/openapi/OpenApiOptions.scala @@ -1,6 +1,6 @@ package typr.openapi -import typr.jvm +import typr.{jvm, TypeDefinitions} /** Configuration options for OpenAPI code generation */ case class OpenApiOptions( @@ -20,6 +20,12 @@ case class OpenApiOptions( generateWrapperTypes: Boolean, /** Custom type mappings: schema name -> qualified type name */ typeOverrides: Map[String, jvm.Type.Qualified], + /** Explicit field name -> type mappings. These override field types by property name (lowercase). Used for shared types across sources where the type is defined elsewhere. + */ + fieldTypeOverrides: Map[String, jvm.Type.Qualified], + /** TypeDefinitions for matching fields to shared types. When a field matches an ApiMatch predicate, it uses the corresponding wrapper type. + */ + typeDefinitions: TypeDefinitions, /** Whether to generate nullable fields as Optional instead of using @Nullable */ useOptionalForNullable: Boolean, /** Whether to generate deprecated annotations */ @@ -49,6 +55,8 @@ object OpenApiOptions { clientLib = None, generateWrapperTypes = true, typeOverrides = Map.empty, + fieldTypeOverrides = Map.empty, + typeDefinitions = TypeDefinitions.Empty, useOptionalForNullable = false, includeDeprecated = true, generateValidation = false, diff --git a/typr/src/scala/typr/openapi/codegen/ModelCodegen.scala b/typr/src/scala/typr/openapi/codegen/ModelCodegen.scala index 7867c374d8..abdfdaabc2 100644 --- a/typr/src/scala/typr/openapi/codegen/ModelCodegen.scala +++ b/typr/src/scala/typr/openapi/codegen/ModelCodegen.scala @@ -1,8 +1,8 @@ package typr.openapi.codegen -import typr.{jvm, Lang, Scope} +import typr.{jvm, Lang, Scope, TypeDefinitions} import typr.internal.codegen._ -import typr.openapi.{ModelClass, SumType} +import typr.openapi.{ModelClass, SumType, TypeInfo} /** Generates jvm.File for model classes */ class ModelCodegen( @@ -11,9 +11,46 @@ class ModelCodegen( lang: Lang, jsonLib: JsonLibSupport, validationSupport: ValidationSupport, - serverFramework: FrameworkSupport + serverFramework: FrameworkSupport, + typeDefinitions: TypeDefinitions, + externalFieldTypeOverrides: Map[String, jvm.Type.Qualified] ) { + /** Build field name to wrapper type mapping from TypeDefinitions. + * + * This matches property names against ApiMatch predicates and returns a map of field names to wrapper types. External overrides (from shared types) take precedence over TypeDefinitions-generated + * mappings. + */ + private val fieldTypeOverrides: Map[String, jvm.Type.Qualified] = { + val fromTypeDefinitions = + if (typeDefinitions.isEmpty) Map.empty[String, jvm.Type.Qualified] + else { + typeDefinitions.entries.flatMap { entry => + if (entry.api.name.nonEmpty) { + entry.api.name.map { pattern => + pattern.toLowerCase -> jvm.Type.Qualified(modelPkg / jvm.Ident(entry.name)) + } + } else Nil + }.toMap + } + fromTypeDefinitions ++ externalFieldTypeOverrides + } + + /** Resolve the type for a property, checking TypeDefinitions first */ + private def resolvePropertyType(propName: String, typeInfo: TypeInfo): jvm.Type = { + val baseType = typeMapper.map(typeInfo) + + fieldTypeOverrides.get(propName.toLowerCase) match { + case Some(wrapperType) => + typeInfo match { + case TypeInfo.Optional(_) => lang.Optional.tpe(wrapperType) + case TypeInfo.ListOf(_) => lang.ListType.tpe.of(wrapperType) + case _ => wrapperType + } + case None => baseType + } + } + def generate(model: ModelClass): jvm.File = model match { case obj: ModelClass.ObjectType => generateObjectType(obj) case enumType: ModelClass.EnumType => generateEnumType(enumType) @@ -26,7 +63,7 @@ class ModelCodegen( val comments = obj.description.map(d => jvm.Comments(List(d))).getOrElse(jvm.Comments.Empty) val params = obj.properties.map { prop => - val propType = typeMapper.map(prop.typeInfo) + val propType = resolvePropertyType(prop.originalName, prop.typeInfo) val jsonAnnotations = jsonLib.propertyAnnotations(prop.originalName) val validationAnnotations = validationSupport.propertyAnnotations(prop) jvm.Param( @@ -182,7 +219,7 @@ class ModelCodegen( // Generate common property abstract methods val commonMethods = sumType.commonProperties.map { prop => - val propType = typeMapper.map(prop.typeInfo) + val propType = resolvePropertyType(prop.originalName, prop.typeInfo) jvm.Method( annotations = jsonLib.methodPropertyAnnotations(prop.originalName), comments = prop.description.map(d => jvm.Comments(List(d))).getOrElse(jvm.Comments.Empty),