neoorm 0.8.0 → 0.8.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -6
- package/dist/bin/neoorm.d.ts +1 -1
- package/dist/bin/neoorm.d.ts.map +1 -1
- package/dist/bin/neoorm.js +148 -75
- package/dist/bin/neoorm.js.map +1 -1
- package/dist/codegen/diff-manifest.d.ts.map +1 -1
- package/dist/codegen/diff-manifest.js +106 -4
- package/dist/codegen/diff-manifest.js.map +1 -1
- package/dist/codegen/generate-summary.d.ts +5 -1
- package/dist/codegen/generate-summary.d.ts.map +1 -1
- package/dist/codegen/generate-summary.js +10 -1
- package/dist/codegen/generate-summary.js.map +1 -1
- package/dist/codegen/generate.d.ts +24 -4
- package/dist/codegen/generate.d.ts.map +1 -1
- package/dist/codegen/generate.js +150 -13
- package/dist/codegen/generate.js.map +1 -1
- package/dist/codegen/manifest-relations.d.ts +2 -0
- package/dist/codegen/manifest-relations.d.ts.map +1 -1
- package/dist/codegen/manifest-relations.js +2 -1
- package/dist/codegen/manifest-relations.js.map +1 -1
- package/dist/codegen/schema-to-manifest.d.ts +1 -1
- package/dist/codegen/schema-to-manifest.d.ts.map +1 -1
- package/dist/codegen/schema-to-manifest.js +349 -29
- package/dist/codegen/schema-to-manifest.js.map +1 -1
- package/dist/codegen/validation/emit-elysia.d.ts +4 -0
- package/dist/codegen/validation/emit-elysia.d.ts.map +1 -0
- package/dist/codegen/validation/emit-elysia.js +304 -0
- package/dist/codegen/validation/emit-elysia.js.map +1 -0
- package/dist/codegen/validation/emit-typebox.d.ts +4 -0
- package/dist/codegen/validation/emit-typebox.d.ts.map +1 -0
- package/dist/codegen/validation/emit-typebox.js +360 -0
- package/dist/codegen/validation/emit-typebox.js.map +1 -0
- package/dist/codegen/validation/emit-zod.d.ts +4 -0
- package/dist/codegen/validation/emit-zod.d.ts.map +1 -0
- package/dist/codegen/validation/emit-zod.js +288 -0
- package/dist/codegen/validation/emit-zod.js.map +1 -0
- package/dist/codegen/validation/from-manifest.d.ts +5 -0
- package/dist/codegen/validation/from-manifest.d.ts.map +1 -0
- package/dist/codegen/validation/from-manifest.js +284 -0
- package/dist/codegen/validation/from-manifest.js.map +1 -0
- package/dist/codegen/validation/infer.d.ts +47 -0
- package/dist/codegen/validation/infer.d.ts.map +1 -0
- package/dist/codegen/validation/infer.js +2 -0
- package/dist/codegen/validation/infer.js.map +1 -0
- package/dist/codegen/validation/json-generic-types.d.ts +7 -0
- package/dist/codegen/validation/json-generic-types.d.ts.map +1 -0
- package/dist/codegen/validation/json-generic-types.js +295 -0
- package/dist/codegen/validation/json-generic-types.js.map +1 -0
- package/dist/codegen/validation/types.d.ts +84 -0
- package/dist/codegen/validation/types.d.ts.map +1 -0
- package/dist/codegen/validation/types.js +6 -0
- package/dist/codegen/validation/types.js.map +1 -0
- package/dist/config.d.ts +8 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +30 -0
- package/dist/config.js.map +1 -1
- package/dist/datasource-provider.d.ts +5 -1
- package/dist/datasource-provider.d.ts.map +1 -1
- package/dist/datasource-provider.js +21 -2
- package/dist/datasource-provider.js.map +1 -1
- package/dist/dialect/column-kind-support.d.ts +9 -0
- package/dist/dialect/column-kind-support.d.ts.map +1 -0
- package/dist/dialect/column-kind-support.js +25 -0
- package/dist/dialect/column-kind-support.js.map +1 -0
- package/dist/dialect/fk.d.ts +30 -1
- package/dist/dialect/fk.d.ts.map +1 -1
- package/dist/dialect/fk.js +113 -0
- package/dist/dialect/fk.js.map +1 -1
- package/dist/dialect/index.d.ts +6 -1
- package/dist/dialect/index.d.ts.map +1 -1
- package/dist/dialect/index.js +5 -0
- package/dist/dialect/index.js.map +1 -1
- package/dist/dialect/mariadb.d.ts +4 -0
- package/dist/dialect/mariadb.d.ts.map +1 -0
- package/dist/dialect/mariadb.js +15 -0
- package/dist/dialect/mariadb.js.map +1 -0
- package/dist/dialect/mariadb.test.d.ts +2 -0
- package/dist/dialect/mariadb.test.d.ts.map +1 -0
- package/dist/dialect/mariadb.test.js +151 -0
- package/dist/dialect/mariadb.test.js.map +1 -0
- package/dist/dialect/mysql-family.d.ts +14 -0
- package/dist/dialect/mysql-family.d.ts.map +1 -0
- package/dist/dialect/mysql-family.js +453 -0
- package/dist/dialect/mysql-family.js.map +1 -0
- package/dist/dialect/mysql.d.ts +6 -0
- package/dist/dialect/mysql.d.ts.map +1 -0
- package/dist/dialect/mysql.js +16 -0
- package/dist/dialect/mysql.js.map +1 -0
- package/dist/dialect/mysql.test.d.ts +2 -0
- package/dist/dialect/mysql.test.d.ts.map +1 -0
- package/dist/dialect/mysql.test.js +211 -0
- package/dist/dialect/mysql.test.js.map +1 -0
- package/dist/dialect/placeholders.d.ts +7 -0
- package/dist/dialect/placeholders.d.ts.map +1 -0
- package/dist/dialect/placeholders.js +18 -0
- package/dist/dialect/placeholders.js.map +1 -0
- package/dist/dialect/postgres.d.ts +2 -1
- package/dist/dialect/postgres.d.ts.map +1 -1
- package/dist/dialect/postgres.js +93 -30
- package/dist/dialect/postgres.js.map +1 -1
- package/dist/dialect/resolve.d.ts +13 -0
- package/dist/dialect/resolve.d.ts.map +1 -0
- package/dist/dialect/resolve.js +66 -0
- package/dist/dialect/resolve.js.map +1 -0
- package/dist/dialect/shared.d.ts +8 -1
- package/dist/dialect/shared.d.ts.map +1 -1
- package/dist/dialect/shared.js +37 -0
- package/dist/dialect/shared.js.map +1 -1
- package/dist/dialect/sqlite.d.ts.map +1 -1
- package/dist/dialect/sqlite.js +50 -18
- package/dist/dialect/sqlite.js.map +1 -1
- package/dist/dialect/sqlite.test.js +43 -1
- package/dist/dialect/sqlite.test.js.map +1 -1
- package/dist/dialect/types.d.ts +60 -3
- package/dist/dialect/types.d.ts.map +1 -1
- package/dist/docs/pages.d.ts.map +1 -1
- package/dist/docs/pages.js +5 -0
- package/dist/docs/pages.js.map +1 -1
- package/dist/docs/render.js +1 -1
- package/dist/index.d.ts +6 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -2
- package/dist/index.js.map +1 -1
- package/dist/init/scaffold.d.ts +2 -1
- package/dist/init/scaffold.d.ts.map +1 -1
- package/dist/init/scaffold.js.map +1 -1
- package/dist/init/templates.d.ts +3 -2
- package/dist/init/templates.d.ts.map +1 -1
- package/dist/init/templates.js +19 -9
- package/dist/init/templates.js.map +1 -1
- package/dist/introspect/group-fks.d.ts +24 -0
- package/dist/introspect/group-fks.d.ts.map +1 -0
- package/dist/introspect/group-fks.js +48 -0
- package/dist/introspect/group-fks.js.map +1 -0
- package/dist/introspect/mysql/to-manifest.d.ts +4 -0
- package/dist/introspect/mysql/to-manifest.d.ts.map +1 -0
- package/dist/introspect/mysql/to-manifest.js +317 -0
- package/dist/introspect/mysql/to-manifest.js.map +1 -0
- package/dist/introspect/pull.d.ts +1 -0
- package/dist/introspect/pull.d.ts.map +1 -1
- package/dist/introspect/pull.js +186 -9
- package/dist/introspect/pull.js.map +1 -1
- package/dist/introspect/queries.d.ts +11 -1
- package/dist/introspect/queries.d.ts.map +1 -1
- package/dist/introspect/queries.js +43 -12
- package/dist/introspect/queries.js.map +1 -1
- package/dist/introspect/sqlite/to-manifest.d.ts.map +1 -1
- package/dist/introspect/sqlite/to-manifest.js +99 -26
- package/dist/introspect/sqlite/to-manifest.js.map +1 -1
- package/dist/introspect/to-manifest.d.ts.map +1 -1
- package/dist/introspect/to-manifest.js +154 -28
- package/dist/introspect/to-manifest.js.map +1 -1
- package/dist/migrate/dev-lock.d.ts +15 -0
- package/dist/migrate/dev-lock.d.ts.map +1 -0
- package/dist/migrate/dev-lock.js +101 -0
- package/dist/migrate/dev-lock.js.map +1 -0
- package/dist/migrate/runner.d.ts.map +1 -1
- package/dist/migrate/runner.js +143 -51
- package/dist/migrate/runner.js.map +1 -1
- package/dist/plugins/builtin.d.ts +62 -12
- package/dist/plugins/builtin.d.ts.map +1 -1
- package/dist/plugins/builtin.js +378 -30
- package/dist/plugins/builtin.js.map +1 -1
- package/dist/plugins/index.d.ts +1 -0
- package/dist/plugins/index.d.ts.map +1 -1
- package/dist/plugins/index.js.map +1 -1
- package/dist/plugins/json/operators.d.ts.map +1 -1
- package/dist/plugins/json/operators.js +69 -3
- package/dist/plugins/json/operators.js.map +1 -1
- package/dist/plugins/postgis/columns.d.ts.map +1 -1
- package/dist/plugins/postgis/columns.js +52 -0
- package/dist/plugins/postgis/columns.js.map +1 -1
- package/dist/plugins/postgis/columns.test.js +13 -0
- package/dist/plugins/postgis/columns.test.js.map +1 -1
- package/dist/plugins/postgis/operators.d.ts.map +1 -1
- package/dist/plugins/postgis/operators.js +15 -3
- package/dist/plugins/postgis/operators.js.map +1 -1
- package/dist/plugins/types.d.ts +3 -0
- package/dist/plugins/types.d.ts.map +1 -1
- package/dist/runtime/client.d.ts +31 -4
- package/dist/runtime/client.d.ts.map +1 -1
- package/dist/runtime/client.js +131 -6
- package/dist/runtime/client.js.map +1 -1
- package/dist/runtime/driver.d.ts +2 -0
- package/dist/runtime/driver.d.ts.map +1 -1
- package/dist/runtime/driver.js +12 -0
- package/dist/runtime/driver.js.map +1 -1
- package/dist/runtime/error-hints.d.ts.map +1 -1
- package/dist/runtime/error-hints.js +37 -10
- package/dist/runtime/error-hints.js.map +1 -1
- package/dist/runtime/executor.d.ts +1 -0
- package/dist/runtime/executor.d.ts.map +1 -1
- package/dist/runtime/executor.js +7 -1
- package/dist/runtime/executor.js.map +1 -1
- package/dist/runtime/mariadb-driver.d.ts +25 -0
- package/dist/runtime/mariadb-driver.d.ts.map +1 -0
- package/dist/runtime/mariadb-driver.js +103 -0
- package/dist/runtime/mariadb-driver.js.map +1 -0
- package/dist/runtime/mysql-driver.d.ts +25 -0
- package/dist/runtime/mysql-driver.d.ts.map +1 -0
- package/dist/runtime/mysql-driver.js +101 -0
- package/dist/runtime/mysql-driver.js.map +1 -0
- package/dist/runtime/mysql-error.d.ts +15 -0
- package/dist/runtime/mysql-error.d.ts.map +1 -0
- package/dist/runtime/mysql-error.js +119 -0
- package/dist/runtime/mysql-error.js.map +1 -0
- package/dist/runtime/mysql-family-pool.d.ts +50 -0
- package/dist/runtime/mysql-family-pool.d.ts.map +1 -0
- package/dist/runtime/mysql-family-pool.js +52 -0
- package/dist/runtime/mysql-family-pool.js.map +1 -0
- package/dist/runtime/mysql-family-pool.test.d.ts +2 -0
- package/dist/runtime/mysql-family-pool.test.d.ts.map +1 -0
- package/dist/runtime/mysql-family-pool.test.js +169 -0
- package/dist/runtime/mysql-family-pool.test.js.map +1 -0
- package/dist/runtime/mysql-placeholders.d.ts +18 -0
- package/dist/runtime/mysql-placeholders.d.ts.map +1 -0
- package/dist/runtime/mysql-placeholders.js +133 -0
- package/dist/runtime/mysql-placeholders.js.map +1 -0
- package/dist/runtime/mysql-placeholders.test.d.ts +2 -0
- package/dist/runtime/mysql-placeholders.test.d.ts.map +1 -0
- package/dist/runtime/mysql-placeholders.test.js +33 -0
- package/dist/runtime/mysql-placeholders.test.js.map +1 -0
- package/dist/runtime/query/aggregate.d.ts.map +1 -1
- package/dist/runtime/query/aggregate.js +3 -3
- package/dist/runtime/query/aggregate.js.map +1 -1
- package/dist/runtime/query/compile-aggregate.d.ts +1 -1
- package/dist/runtime/query/compile-aggregate.d.ts.map +1 -1
- package/dist/runtime/query/compile-aggregate.js +33 -28
- package/dist/runtime/query/compile-aggregate.js.map +1 -1
- package/dist/runtime/query/compile-where.d.ts +9 -9
- package/dist/runtime/query/compile-where.d.ts.map +1 -1
- package/dist/runtime/query/compile-where.js +108 -76
- package/dist/runtime/query/compile-where.js.map +1 -1
- package/dist/runtime/query/compile-write.d.ts +9 -9
- package/dist/runtime/query/compile-write.d.ts.map +1 -1
- package/dist/runtime/query/compile-write.js +77 -63
- package/dist/runtime/query/compile-write.js.map +1 -1
- package/dist/runtime/query/count.d.ts.map +1 -1
- package/dist/runtime/query/count.js +4 -1
- package/dist/runtime/query/count.js.map +1 -1
- package/dist/runtime/query/create.d.ts.map +1 -1
- package/dist/runtime/query/create.js +38 -12
- package/dist/runtime/query/create.js.map +1 -1
- package/dist/runtime/query/cursor.d.ts +1 -1
- package/dist/runtime/query/cursor.d.ts.map +1 -1
- package/dist/runtime/query/cursor.js +6 -7
- package/dist/runtime/query/cursor.js.map +1 -1
- package/dist/runtime/query/delete.d.ts.map +1 -1
- package/dist/runtime/query/delete.js +41 -15
- package/dist/runtime/query/delete.js.map +1 -1
- package/dist/runtime/query/execute.d.ts +1 -0
- package/dist/runtime/query/execute.d.ts.map +1 -1
- package/dist/runtime/query/execute.js +23 -8
- package/dist/runtime/query/execute.js.map +1 -1
- package/dist/runtime/query/find-or-create.d.ts +1 -1
- package/dist/runtime/query/find-or-create.d.ts.map +1 -1
- package/dist/runtime/query/find-or-create.js +16 -8
- package/dist/runtime/query/find-or-create.js.map +1 -1
- package/dist/runtime/query/find.d.ts +2 -0
- package/dist/runtime/query/find.d.ts.map +1 -1
- package/dist/runtime/query/find.js +116 -68
- package/dist/runtime/query/find.js.map +1 -1
- package/dist/runtime/query/group-by.d.ts.map +1 -1
- package/dist/runtime/query/group-by.js.map +1 -1
- package/dist/runtime/query/mutation-returning.d.ts +10 -0
- package/dist/runtime/query/mutation-returning.d.ts.map +1 -0
- package/dist/runtime/query/mutation-returning.js +85 -0
- package/dist/runtime/query/mutation-returning.js.map +1 -0
- package/dist/runtime/query/paginate.d.ts.map +1 -1
- package/dist/runtime/query/paginate.js +3 -3
- package/dist/runtime/query/paginate.js.map +1 -1
- package/dist/runtime/query/projection.d.ts.map +1 -1
- package/dist/runtime/query/projection.js +1 -1
- package/dist/runtime/query/projection.js.map +1 -1
- package/dist/runtime/query/relation-join.d.ts +5 -0
- package/dist/runtime/query/relation-join.d.ts.map +1 -0
- package/dist/runtime/query/relation-join.js +26 -0
- package/dist/runtime/query/relation-join.js.map +1 -0
- package/dist/runtime/query/relation-planner.d.ts +1 -1
- package/dist/runtime/query/relation-planner.d.ts.map +1 -1
- package/dist/runtime/query/relation-planner.js +72 -58
- package/dist/runtime/query/relation-planner.js.map +1 -1
- package/dist/runtime/query/relation-writes.d.ts +2 -2
- package/dist/runtime/query/relation-writes.d.ts.map +1 -1
- package/dist/runtime/query/relation-writes.js +272 -116
- package/dist/runtime/query/relation-writes.js.map +1 -1
- package/dist/runtime/query/table-index.d.ts +1 -1
- package/dist/runtime/query/table-index.d.ts.map +1 -1
- package/dist/runtime/query/table-index.js +17 -10
- package/dist/runtime/query/table-index.js.map +1 -1
- package/dist/runtime/query/unique.d.ts +3 -0
- package/dist/runtime/query/unique.d.ts.map +1 -1
- package/dist/runtime/query/unique.js +26 -6
- package/dist/runtime/query/unique.js.map +1 -1
- package/dist/runtime/query/unique.test.js +110 -7
- package/dist/runtime/query/unique.test.js.map +1 -1
- package/dist/runtime/query/update.d.ts.map +1 -1
- package/dist/runtime/query/update.js +89 -23
- package/dist/runtime/query/update.js.map +1 -1
- package/dist/runtime/query/updated-at.js +2 -2
- package/dist/runtime/query/updated-at.js.map +1 -1
- package/dist/runtime/query/upsert.d.ts.map +1 -1
- package/dist/runtime/query/upsert.js +29 -5
- package/dist/runtime/query/upsert.js.map +1 -1
- package/dist/runtime/sqlite-open.js +1 -1
- package/dist/runtime/sqlite-open.js.map +1 -1
- package/dist/runtime/transaction.d.ts +1 -0
- package/dist/runtime/transaction.d.ts.map +1 -1
- package/dist/runtime/transaction.js +8 -0
- package/dist/runtime/transaction.js.map +1 -1
- package/dist/runtime/types.d.ts +10 -2
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/schema/column-constraints.d.ts +26 -0
- package/dist/schema/column-constraints.d.ts.map +1 -0
- package/dist/schema/column-constraints.js +143 -0
- package/dist/schema/column-constraints.js.map +1 -0
- package/dist/schema/column.d.ts +92 -3
- package/dist/schema/column.d.ts.map +1 -1
- package/dist/schema/column.js +17 -11
- package/dist/schema/column.js.map +1 -1
- package/dist/schema/index.d.ts +9 -6
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/index.js +8 -2
- package/dist/schema/index.js.map +1 -1
- package/dist/schema/json-column.d.ts +9 -0
- package/dist/schema/json-column.d.ts.map +1 -0
- package/dist/schema/json-column.js +11 -0
- package/dist/schema/json-column.js.map +1 -0
- package/dist/schema/many-to-many.d.ts +1 -1
- package/dist/schema/many-to-many.d.ts.map +1 -1
- package/dist/schema/nested-relation-types.d.ts +10 -9
- package/dist/schema/nested-relation-types.d.ts.map +1 -1
- package/dist/schema/relation-types.d.ts +80 -19
- package/dist/schema/relation-types.d.ts.map +1 -1
- package/dist/schema/relation.d.ts +11 -1
- package/dist/schema/relation.d.ts.map +1 -1
- package/dist/schema/relation.js +6 -0
- package/dist/schema/relation.js.map +1 -1
- package/dist/schema/table.d.ts +74 -11
- package/dist/schema/table.d.ts.map +1 -1
- package/dist/schema/table.js +93 -7
- package/dist/schema/table.js.map +1 -1
- package/dist/schema/types.d.ts +7 -6
- package/dist/schema/types.d.ts.map +1 -1
- package/dist/sql/builder.d.ts +13 -3
- package/dist/sql/builder.d.ts.map +1 -1
- package/dist/sql/builder.js +155 -5
- package/dist/sql/builder.js.map +1 -1
- package/dist/sql/index.d.ts +1 -0
- package/dist/sql/index.d.ts.map +1 -1
- package/dist/sql/index.js.map +1 -1
- package/dist/sql/qualify-tables.d.ts +15 -0
- package/dist/sql/qualify-tables.d.ts.map +1 -0
- package/dist/sql/qualify-tables.js +206 -0
- package/dist/sql/qualify-tables.js.map +1 -0
- package/dist/sql/template.d.ts +5 -0
- package/dist/sql/template.d.ts.map +1 -1
- package/dist/sql/template.js +23 -3
- package/dist/sql/template.js.map +1 -1
- package/dist/utils/load-ts.d.ts +2 -1
- package/dist/utils/load-ts.d.ts.map +1 -1
- package/dist/utils/load-ts.js +13 -1
- package/dist/utils/load-ts.js.map +1 -1
- package/docs/cli.md +4 -4
- package/docs/configuration.md +12 -5
- package/docs/elysia.md +131 -0
- package/docs/errors.md +1 -1
- package/docs/examples.md +4 -2
- package/docs/getting-started.md +28 -2
- package/docs/mariadb.md +149 -0
- package/docs/migrations.md +5 -3
- package/docs/mysql.md +134 -0
- package/docs/plugins.md +2 -0
- package/docs/queries.md +14 -11
- package/docs/relations.md +19 -4
- package/docs/schema.md +100 -9
- package/docs/sqlite.md +14 -2
- package/docs/typebox.md +139 -0
- package/docs/zod.md +128 -0
- package/package.json +33 -3
package/dist/plugins/builtin.js
CHANGED
|
@@ -1,16 +1,30 @@
|
|
|
1
1
|
import { parseDbJsonValue } from "../runtime/parse-db-json.js";
|
|
2
2
|
import { createColumnBuilder, createTimestampColumnBuilder, } from "../schema/column.js";
|
|
3
|
+
import { createNumericConstraintExtras, createTextConstraintExtras, } from "../schema/column-constraints.js";
|
|
4
|
+
import { createJsonValidationExtras, } from "../schema/json-column.js";
|
|
3
5
|
import { jsonWhereOperators } from "./json/operators.js";
|
|
6
|
+
function textSqlType(col) {
|
|
7
|
+
const maxLength = col.typeOptions?.maxLength;
|
|
8
|
+
if (maxLength !== undefined) {
|
|
9
|
+
return `VARCHAR(${maxLength})`;
|
|
10
|
+
}
|
|
11
|
+
return "TEXT";
|
|
12
|
+
}
|
|
4
13
|
function scalarTsType(col, base) {
|
|
5
14
|
return col.nullable ? `${base} | null` : base;
|
|
6
15
|
}
|
|
7
16
|
function jsonCastKind(kind) {
|
|
8
17
|
return kind === "json" ? "json" : "jsonb";
|
|
9
18
|
}
|
|
19
|
+
function isSqliteOrMysqlFamily(dialect) {
|
|
20
|
+
return (dialect?.name === "sqlite" ||
|
|
21
|
+
dialect?.name === "mysql" ||
|
|
22
|
+
dialect?.name === "mariadb");
|
|
23
|
+
}
|
|
10
24
|
function formatJsonDefault(col, value, dialect) {
|
|
11
25
|
const cast = jsonCastKind(col.kind);
|
|
12
26
|
const json = JSON.stringify(value).replace(/'/g, "''");
|
|
13
|
-
if (dialect
|
|
27
|
+
if (isSqliteOrMysqlFamily(dialect)) {
|
|
14
28
|
return `'${json}'`;
|
|
15
29
|
}
|
|
16
30
|
return `'${json}'::${cast}`;
|
|
@@ -64,24 +78,33 @@ const idType = {
|
|
|
64
78
|
columnTsType(col) {
|
|
65
79
|
return scalarTsType(col, "string");
|
|
66
80
|
},
|
|
81
|
+
columnValidation() {
|
|
82
|
+
return { kind: "string" };
|
|
83
|
+
},
|
|
67
84
|
};
|
|
68
85
|
const textType = {
|
|
69
86
|
kind: "text",
|
|
70
|
-
createBuilder() {
|
|
87
|
+
createBuilder(options) {
|
|
88
|
+
const maxLength = options?.maxLength;
|
|
89
|
+
const typeOptions = maxLength !== undefined ? { maxLength } : undefined;
|
|
71
90
|
return createColumnBuilder({
|
|
72
91
|
kind: "text",
|
|
73
92
|
nullable: true,
|
|
74
93
|
unique: false,
|
|
75
94
|
primary: false,
|
|
76
95
|
defaultNow: false,
|
|
77
|
-
|
|
96
|
+
...(typeOptions ? { typeOptions } : {}),
|
|
97
|
+
}, (rebuild, meta) => createTextConstraintExtras(meta, rebuild));
|
|
78
98
|
},
|
|
79
|
-
columnType() {
|
|
80
|
-
return
|
|
99
|
+
columnType(col) {
|
|
100
|
+
return textSqlType(col);
|
|
81
101
|
},
|
|
82
102
|
columnTsType(col) {
|
|
83
103
|
return scalarTsType(col, "string");
|
|
84
104
|
},
|
|
105
|
+
columnValidation() {
|
|
106
|
+
return { kind: "string" };
|
|
107
|
+
},
|
|
85
108
|
introspect(pgDataType) {
|
|
86
109
|
return pgDataType === "text" || pgDataType === "character varying";
|
|
87
110
|
},
|
|
@@ -103,10 +126,13 @@ const boolType = {
|
|
|
103
126
|
columnTsType(col) {
|
|
104
127
|
return scalarTsType(col, "boolean");
|
|
105
128
|
},
|
|
129
|
+
columnValidation() {
|
|
130
|
+
return { kind: "boolean" };
|
|
131
|
+
},
|
|
106
132
|
serializeValue(_col, value, dialect) {
|
|
107
133
|
if (value === null || value === undefined)
|
|
108
134
|
return value;
|
|
109
|
-
if (dialect
|
|
135
|
+
if (isSqliteOrMysqlFamily(dialect))
|
|
110
136
|
return value ? 1 : 0;
|
|
111
137
|
return value;
|
|
112
138
|
},
|
|
@@ -130,7 +156,7 @@ const intType = {
|
|
|
130
156
|
unique: false,
|
|
131
157
|
primary: false,
|
|
132
158
|
defaultNow: false,
|
|
133
|
-
});
|
|
159
|
+
}, (rebuild, meta) => createNumericConstraintExtras(meta, rebuild));
|
|
134
160
|
},
|
|
135
161
|
columnType() {
|
|
136
162
|
return "INTEGER";
|
|
@@ -138,6 +164,9 @@ const intType = {
|
|
|
138
164
|
columnTsType(col) {
|
|
139
165
|
return scalarTsType(col, "number");
|
|
140
166
|
},
|
|
167
|
+
columnValidation() {
|
|
168
|
+
return { kind: "number", int: true };
|
|
169
|
+
},
|
|
141
170
|
introspect(pgDataType) {
|
|
142
171
|
return pgDataType === "integer" || pgDataType === "smallint";
|
|
143
172
|
},
|
|
@@ -151,7 +180,7 @@ const bigintType = {
|
|
|
151
180
|
unique: false,
|
|
152
181
|
primary: false,
|
|
153
182
|
defaultNow: false,
|
|
154
|
-
});
|
|
183
|
+
}, (rebuild, meta) => createNumericConstraintExtras(meta, rebuild));
|
|
155
184
|
},
|
|
156
185
|
columnType() {
|
|
157
186
|
return "BIGINT";
|
|
@@ -159,6 +188,9 @@ const bigintType = {
|
|
|
159
188
|
columnTsType(col) {
|
|
160
189
|
return scalarTsType(col, "bigint");
|
|
161
190
|
},
|
|
191
|
+
columnValidation() {
|
|
192
|
+
return { kind: "bigint" };
|
|
193
|
+
},
|
|
162
194
|
introspect(pgDataType) {
|
|
163
195
|
return pgDataType === "bigint";
|
|
164
196
|
},
|
|
@@ -186,6 +218,9 @@ const timestampType = {
|
|
|
186
218
|
columnTsType(col) {
|
|
187
219
|
return scalarTsType(col, "Date");
|
|
188
220
|
},
|
|
221
|
+
columnValidation() {
|
|
222
|
+
return { kind: "date" };
|
|
223
|
+
},
|
|
189
224
|
serializeValue(_col, value, dialect) {
|
|
190
225
|
if (value === null || value === undefined)
|
|
191
226
|
return value;
|
|
@@ -201,12 +236,10 @@ const timestampType = {
|
|
|
201
236
|
return new Date(dbValue);
|
|
202
237
|
},
|
|
203
238
|
introspect(pgDataType) {
|
|
204
|
-
return
|
|
205
|
-
pgDataType === "date" ||
|
|
206
|
-
pgDataType === "time without time zone");
|
|
239
|
+
return pgDataType.includes("timestamp");
|
|
207
240
|
},
|
|
208
241
|
updatedAtExpression(_col, dialect) {
|
|
209
|
-
return dialect?.
|
|
242
|
+
return dialect?.defaultNowExpression() ?? "NOW()";
|
|
210
243
|
},
|
|
211
244
|
};
|
|
212
245
|
const uuidType = {
|
|
@@ -228,20 +261,25 @@ const uuidType = {
|
|
|
228
261
|
columnTsType(col) {
|
|
229
262
|
return scalarTsType(col, "string");
|
|
230
263
|
},
|
|
264
|
+
columnValidation() {
|
|
265
|
+
return { kind: "string", format: "uuid" };
|
|
266
|
+
},
|
|
231
267
|
introspect(_pgDataType, udtName) {
|
|
232
268
|
return udtName === "uuid";
|
|
233
269
|
},
|
|
234
270
|
};
|
|
235
271
|
const jsonType = {
|
|
236
272
|
kind: "json",
|
|
237
|
-
createBuilder() {
|
|
273
|
+
createBuilder(options) {
|
|
274
|
+
const validation = options?.validation;
|
|
238
275
|
return createColumnBuilder({
|
|
239
276
|
kind: "json",
|
|
240
277
|
nullable: true,
|
|
241
278
|
unique: false,
|
|
242
279
|
primary: false,
|
|
243
280
|
defaultNow: false,
|
|
244
|
-
|
|
281
|
+
...(validation !== undefined ? { validation } : {}),
|
|
282
|
+
}, (rebuild, meta) => createJsonValidationExtras(meta, rebuild));
|
|
245
283
|
},
|
|
246
284
|
columnType() {
|
|
247
285
|
return "JSON";
|
|
@@ -249,6 +287,12 @@ const jsonType = {
|
|
|
249
287
|
columnTsType(col) {
|
|
250
288
|
return scalarTsType(col, "unknown");
|
|
251
289
|
},
|
|
290
|
+
columnValidation(col) {
|
|
291
|
+
return (col.validation ?? {
|
|
292
|
+
kind: "record",
|
|
293
|
+
value: { kind: "unknown" },
|
|
294
|
+
});
|
|
295
|
+
},
|
|
252
296
|
formatDefault: formatJsonDefault,
|
|
253
297
|
deserializeValue(col, dbValue) {
|
|
254
298
|
return parseJsonValue(dbValue, col);
|
|
@@ -260,14 +304,16 @@ const jsonType = {
|
|
|
260
304
|
};
|
|
261
305
|
const jsonbType = {
|
|
262
306
|
kind: "jsonb",
|
|
263
|
-
createBuilder() {
|
|
307
|
+
createBuilder(options) {
|
|
308
|
+
const validation = options?.validation;
|
|
264
309
|
return createColumnBuilder({
|
|
265
310
|
kind: "jsonb",
|
|
266
311
|
nullable: true,
|
|
267
312
|
unique: false,
|
|
268
313
|
primary: false,
|
|
269
314
|
defaultNow: false,
|
|
270
|
-
|
|
315
|
+
...(validation !== undefined ? { validation } : {}),
|
|
316
|
+
}, (rebuild, meta) => createJsonValidationExtras(meta, rebuild));
|
|
271
317
|
},
|
|
272
318
|
columnType() {
|
|
273
319
|
return "JSONB";
|
|
@@ -275,6 +321,12 @@ const jsonbType = {
|
|
|
275
321
|
columnTsType(col) {
|
|
276
322
|
return scalarTsType(col, "unknown");
|
|
277
323
|
},
|
|
324
|
+
columnValidation(col) {
|
|
325
|
+
return (col.validation ?? {
|
|
326
|
+
kind: "record",
|
|
327
|
+
value: { kind: "unknown" },
|
|
328
|
+
});
|
|
329
|
+
},
|
|
278
330
|
formatDefault: formatJsonDefault,
|
|
279
331
|
deserializeValue(col, dbValue) {
|
|
280
332
|
return parseJsonValue(dbValue, col);
|
|
@@ -301,7 +353,7 @@ const decimalType = {
|
|
|
301
353
|
primary: false,
|
|
302
354
|
defaultNow: false,
|
|
303
355
|
...(Object.keys(typeOptions).length > 0 ? { typeOptions } : {}),
|
|
304
|
-
});
|
|
356
|
+
}, (rebuild, meta) => createNumericConstraintExtras(meta, rebuild));
|
|
305
357
|
},
|
|
306
358
|
columnType(col) {
|
|
307
359
|
return decimalSqlType(col);
|
|
@@ -309,6 +361,9 @@ const decimalType = {
|
|
|
309
361
|
columnTsType(col) {
|
|
310
362
|
return scalarTsType(col, "string");
|
|
311
363
|
},
|
|
364
|
+
columnValidation() {
|
|
365
|
+
return { kind: "string" };
|
|
366
|
+
},
|
|
312
367
|
introspect(pgDataType) {
|
|
313
368
|
return pgDataType === "numeric";
|
|
314
369
|
},
|
|
@@ -322,7 +377,7 @@ const serialType = {
|
|
|
322
377
|
unique: false,
|
|
323
378
|
primary: false,
|
|
324
379
|
defaultNow: false,
|
|
325
|
-
});
|
|
380
|
+
}, (rebuild, meta) => createNumericConstraintExtras(meta, rebuild));
|
|
326
381
|
},
|
|
327
382
|
columnType() {
|
|
328
383
|
return "INTEGER GENERATED BY DEFAULT AS IDENTITY";
|
|
@@ -330,6 +385,9 @@ const serialType = {
|
|
|
330
385
|
columnTsType(col) {
|
|
331
386
|
return scalarTsType(col, "number");
|
|
332
387
|
},
|
|
388
|
+
columnValidation() {
|
|
389
|
+
return { kind: "number", int: true };
|
|
390
|
+
},
|
|
333
391
|
};
|
|
334
392
|
const enumColumnType = {
|
|
335
393
|
kind: "enum",
|
|
@@ -355,6 +413,19 @@ const enumColumnType = {
|
|
|
355
413
|
columnTsType(col) {
|
|
356
414
|
return enumUnionTsType(col);
|
|
357
415
|
},
|
|
416
|
+
columnValidation(col) {
|
|
417
|
+
const values = col.typeOptions?.values;
|
|
418
|
+
const first = values?.[0];
|
|
419
|
+
if (first === undefined || !values) {
|
|
420
|
+
return { kind: "string" };
|
|
421
|
+
}
|
|
422
|
+
const name = col.typeOptions?.name;
|
|
423
|
+
return {
|
|
424
|
+
kind: "enum",
|
|
425
|
+
values: [first, ...values.slice(1)],
|
|
426
|
+
...(typeof name === "string" ? { name } : {}),
|
|
427
|
+
};
|
|
428
|
+
},
|
|
358
429
|
};
|
|
359
430
|
const byteaType = {
|
|
360
431
|
kind: "bytea",
|
|
@@ -373,6 +444,9 @@ const byteaType = {
|
|
|
373
444
|
columnTsType(col) {
|
|
374
445
|
return scalarTsType(col, "Buffer");
|
|
375
446
|
},
|
|
447
|
+
columnValidation() {
|
|
448
|
+
return { kind: "instance", tsName: "Buffer" };
|
|
449
|
+
},
|
|
376
450
|
serializeValue(_col, value) {
|
|
377
451
|
if (value instanceof Uint8Array && !(value instanceof Buffer)) {
|
|
378
452
|
return Buffer.from(value);
|
|
@@ -408,10 +482,13 @@ const textArrayType = {
|
|
|
408
482
|
columnTsType(col) {
|
|
409
483
|
return col.nullable ? "string[] | null" : "string[]";
|
|
410
484
|
},
|
|
485
|
+
columnValidation() {
|
|
486
|
+
return { kind: "array", element: { kind: "string" } };
|
|
487
|
+
},
|
|
411
488
|
serializeValue(_col, value, dialect) {
|
|
412
489
|
if (value === null || value === undefined)
|
|
413
490
|
return value;
|
|
414
|
-
if (dialect
|
|
491
|
+
if (isSqliteOrMysqlFamily(dialect))
|
|
415
492
|
return JSON.stringify(value);
|
|
416
493
|
return value;
|
|
417
494
|
},
|
|
@@ -443,10 +520,13 @@ const intArrayType = {
|
|
|
443
520
|
columnTsType(col) {
|
|
444
521
|
return col.nullable ? "number[] | null" : "number[]";
|
|
445
522
|
},
|
|
523
|
+
columnValidation() {
|
|
524
|
+
return { kind: "array", element: { kind: "number", int: true } };
|
|
525
|
+
},
|
|
446
526
|
serializeValue(_col, value, dialect) {
|
|
447
527
|
if (value === null || value === undefined)
|
|
448
528
|
return value;
|
|
449
|
-
if (dialect
|
|
529
|
+
if (isSqliteOrMysqlFamily(dialect))
|
|
450
530
|
return JSON.stringify(value);
|
|
451
531
|
return value;
|
|
452
532
|
},
|
|
@@ -461,6 +541,179 @@ const intArrayType = {
|
|
|
461
541
|
return pgDataType === "ARRAY" && udtName === "_int4";
|
|
462
542
|
},
|
|
463
543
|
};
|
|
544
|
+
function createNumericFloatPlugin(kind, sqlType, introspect) {
|
|
545
|
+
return {
|
|
546
|
+
kind,
|
|
547
|
+
createBuilder() {
|
|
548
|
+
return createColumnBuilder({
|
|
549
|
+
kind,
|
|
550
|
+
nullable: true,
|
|
551
|
+
unique: false,
|
|
552
|
+
primary: false,
|
|
553
|
+
defaultNow: false,
|
|
554
|
+
}, (rebuild, meta) => createNumericConstraintExtras(meta, rebuild));
|
|
555
|
+
},
|
|
556
|
+
columnType() {
|
|
557
|
+
return sqlType;
|
|
558
|
+
},
|
|
559
|
+
columnTsType(col) {
|
|
560
|
+
return scalarTsType(col, "number");
|
|
561
|
+
},
|
|
562
|
+
columnValidation() {
|
|
563
|
+
return { kind: "number" };
|
|
564
|
+
},
|
|
565
|
+
introspect,
|
|
566
|
+
};
|
|
567
|
+
}
|
|
568
|
+
function createStringScalarPlugin(kind, sqlType, introspect) {
|
|
569
|
+
return {
|
|
570
|
+
kind,
|
|
571
|
+
createBuilder() {
|
|
572
|
+
return createColumnBuilder({
|
|
573
|
+
kind,
|
|
574
|
+
nullable: true,
|
|
575
|
+
unique: false,
|
|
576
|
+
primary: false,
|
|
577
|
+
defaultNow: false,
|
|
578
|
+
});
|
|
579
|
+
},
|
|
580
|
+
columnType() {
|
|
581
|
+
return sqlType;
|
|
582
|
+
},
|
|
583
|
+
columnTsType(col) {
|
|
584
|
+
return scalarTsType(col, "string");
|
|
585
|
+
},
|
|
586
|
+
columnValidation() {
|
|
587
|
+
return { kind: "string" };
|
|
588
|
+
},
|
|
589
|
+
introspect,
|
|
590
|
+
};
|
|
591
|
+
}
|
|
592
|
+
const realType = createNumericFloatPlugin("real", "REAL", (pgDataType, udtName) => pgDataType === "real" || udtName === "float4");
|
|
593
|
+
const doubleType = createNumericFloatPlugin("double", "DOUBLE PRECISION", (pgDataType, udtName) => pgDataType === "double precision" || udtName === "float8");
|
|
594
|
+
const dateType = createStringScalarPlugin("date", "DATE", (pgDataType) => pgDataType === "date");
|
|
595
|
+
const timeType = createStringScalarPlugin("time", "TIME", (pgDataType) => pgDataType === "time without time zone" ||
|
|
596
|
+
pgDataType === "time with time zone" ||
|
|
597
|
+
pgDataType === "time");
|
|
598
|
+
const intervalType = createStringScalarPlugin("interval", "INTERVAL", (pgDataType) => pgDataType === "interval");
|
|
599
|
+
const inetType = createStringScalarPlugin("inet", "INET", (pgDataType, udtName) => pgDataType === "inet" || udtName === "inet");
|
|
600
|
+
const cidrType = createStringScalarPlugin("cidr", "CIDR", (pgDataType, udtName) => pgDataType === "cidr" || udtName === "cidr");
|
|
601
|
+
const xmlType = createStringScalarPlugin("xml", "XML", (pgDataType, udtName) => pgDataType === "xml" || udtName === "xml");
|
|
602
|
+
const moneyType = createStringScalarPlugin("money", "MONEY", (pgDataType, udtName) => pgDataType === "money" || udtName === "money");
|
|
603
|
+
const int4RangeType = createStringScalarPlugin("int4Range", "INT4RANGE", (_pg, udtName) => udtName === "int4range");
|
|
604
|
+
const int8RangeType = createStringScalarPlugin("int8Range", "INT8RANGE", (_pg, udtName) => udtName === "int8range");
|
|
605
|
+
const numRangeType = createStringScalarPlugin("numRange", "NUMRANGE", (_pg, udtName) => udtName === "numrange");
|
|
606
|
+
const tsRangeType = createStringScalarPlugin("tsRange", "TSRANGE", (_pg, udtName) => udtName === "tsrange");
|
|
607
|
+
const tstzRangeType = createStringScalarPlugin("tstzRange", "TSTZRANGE", (_pg, udtName) => udtName === "tstzrange");
|
|
608
|
+
const dateRangeType = createStringScalarPlugin("dateRange", "DATERANGE", (_pg, udtName) => udtName === "daterange");
|
|
609
|
+
const uuidArrayType = {
|
|
610
|
+
kind: "uuidArray",
|
|
611
|
+
createBuilder() {
|
|
612
|
+
return createColumnBuilder({
|
|
613
|
+
kind: "uuidArray",
|
|
614
|
+
nullable: true,
|
|
615
|
+
unique: false,
|
|
616
|
+
primary: false,
|
|
617
|
+
defaultNow: false,
|
|
618
|
+
});
|
|
619
|
+
},
|
|
620
|
+
columnType() {
|
|
621
|
+
return "UUID[]";
|
|
622
|
+
},
|
|
623
|
+
columnTsType(col) {
|
|
624
|
+
return col.nullable ? "string[] | null" : "string[]";
|
|
625
|
+
},
|
|
626
|
+
columnValidation() {
|
|
627
|
+
return { kind: "array", element: { kind: "string", format: "uuid" } };
|
|
628
|
+
},
|
|
629
|
+
serializeValue(_col, value, dialect) {
|
|
630
|
+
if (value === null || value === undefined)
|
|
631
|
+
return value;
|
|
632
|
+
if (isSqliteOrMysqlFamily(dialect))
|
|
633
|
+
return JSON.stringify(value);
|
|
634
|
+
return value;
|
|
635
|
+
},
|
|
636
|
+
deserializeValue(col, dbValue) {
|
|
637
|
+
if (dbValue === null || dbValue === undefined)
|
|
638
|
+
return dbValue;
|
|
639
|
+
if (Array.isArray(dbValue))
|
|
640
|
+
return dbValue;
|
|
641
|
+
return parseJsonValue(dbValue, col);
|
|
642
|
+
},
|
|
643
|
+
introspect(pgDataType, udtName) {
|
|
644
|
+
return pgDataType === "ARRAY" && udtName === "_uuid";
|
|
645
|
+
},
|
|
646
|
+
};
|
|
647
|
+
function enumArrayTsType(col) {
|
|
648
|
+
const values = col.typeOptions?.values;
|
|
649
|
+
if (!values || values.length === 0) {
|
|
650
|
+
return col.nullable ? "string[] | null" : "string[]";
|
|
651
|
+
}
|
|
652
|
+
const union = values.map((value) => JSON.stringify(value)).join(" | ");
|
|
653
|
+
return col.nullable ? `(${union})[] | null` : `(${union})[]`;
|
|
654
|
+
}
|
|
655
|
+
function enumArraySqlType(col) {
|
|
656
|
+
const nativeTypeName = col.typeOptions?.nativeTypeName;
|
|
657
|
+
if (nativeTypeName) {
|
|
658
|
+
return `${nativeTypeName}[]`;
|
|
659
|
+
}
|
|
660
|
+
return "TEXT[]";
|
|
661
|
+
}
|
|
662
|
+
const enumArrayType = {
|
|
663
|
+
kind: "enumArray",
|
|
664
|
+
createBuilder(options) {
|
|
665
|
+
const values = options?.values;
|
|
666
|
+
const name = options?.name;
|
|
667
|
+
const typeOptions = { values };
|
|
668
|
+
if (name !== undefined) {
|
|
669
|
+
typeOptions.name = name;
|
|
670
|
+
}
|
|
671
|
+
return createColumnBuilder({
|
|
672
|
+
kind: "enumArray",
|
|
673
|
+
nullable: true,
|
|
674
|
+
unique: false,
|
|
675
|
+
primary: false,
|
|
676
|
+
defaultNow: false,
|
|
677
|
+
typeOptions,
|
|
678
|
+
});
|
|
679
|
+
},
|
|
680
|
+
columnType(col) {
|
|
681
|
+
return enumArraySqlType(col);
|
|
682
|
+
},
|
|
683
|
+
columnTsType(col) {
|
|
684
|
+
return enumArrayTsType(col);
|
|
685
|
+
},
|
|
686
|
+
columnValidation(col) {
|
|
687
|
+
const values = col.typeOptions?.values;
|
|
688
|
+
const first = values?.[0];
|
|
689
|
+
if (first === undefined || !values) {
|
|
690
|
+
return { kind: "array", element: { kind: "string" } };
|
|
691
|
+
}
|
|
692
|
+
const name = col.typeOptions?.name;
|
|
693
|
+
return {
|
|
694
|
+
kind: "array",
|
|
695
|
+
element: {
|
|
696
|
+
kind: "enum",
|
|
697
|
+
values: [first, ...values.slice(1)],
|
|
698
|
+
...(typeof name === "string" ? { name } : {}),
|
|
699
|
+
},
|
|
700
|
+
};
|
|
701
|
+
},
|
|
702
|
+
serializeValue(_col, value, dialect) {
|
|
703
|
+
if (value === null || value === undefined)
|
|
704
|
+
return value;
|
|
705
|
+
if (isSqliteOrMysqlFamily(dialect))
|
|
706
|
+
return JSON.stringify(value);
|
|
707
|
+
return value;
|
|
708
|
+
},
|
|
709
|
+
deserializeValue(col, dbValue) {
|
|
710
|
+
if (dbValue === null || dbValue === undefined)
|
|
711
|
+
return dbValue;
|
|
712
|
+
if (Array.isArray(dbValue))
|
|
713
|
+
return dbValue;
|
|
714
|
+
return parseJsonValue(dbValue, col);
|
|
715
|
+
},
|
|
716
|
+
};
|
|
464
717
|
const citextType = {
|
|
465
718
|
kind: "citext",
|
|
466
719
|
createBuilder() {
|
|
@@ -470,7 +723,7 @@ const citextType = {
|
|
|
470
723
|
unique: false,
|
|
471
724
|
primary: false,
|
|
472
725
|
defaultNow: false,
|
|
473
|
-
});
|
|
726
|
+
}, (rebuild, meta) => createTextConstraintExtras(meta, rebuild));
|
|
474
727
|
},
|
|
475
728
|
columnType() {
|
|
476
729
|
return "CITEXT";
|
|
@@ -478,6 +731,9 @@ const citextType = {
|
|
|
478
731
|
columnTsType(col) {
|
|
479
732
|
return scalarTsType(col, "string");
|
|
480
733
|
},
|
|
734
|
+
columnValidation() {
|
|
735
|
+
return { kind: "string" };
|
|
736
|
+
},
|
|
481
737
|
introspect(_pgDataType, udtName) {
|
|
482
738
|
return udtName === "citext";
|
|
483
739
|
},
|
|
@@ -500,6 +756,23 @@ export const builtinPlugin = {
|
|
|
500
756
|
byteaType,
|
|
501
757
|
textArrayType,
|
|
502
758
|
intArrayType,
|
|
759
|
+
realType,
|
|
760
|
+
doubleType,
|
|
761
|
+
dateType,
|
|
762
|
+
timeType,
|
|
763
|
+
intervalType,
|
|
764
|
+
inetType,
|
|
765
|
+
cidrType,
|
|
766
|
+
xmlType,
|
|
767
|
+
moneyType,
|
|
768
|
+
int4RangeType,
|
|
769
|
+
int8RangeType,
|
|
770
|
+
numRangeType,
|
|
771
|
+
tsRangeType,
|
|
772
|
+
tstzRangeType,
|
|
773
|
+
dateRangeType,
|
|
774
|
+
uuidArrayType,
|
|
775
|
+
enumArrayType,
|
|
503
776
|
],
|
|
504
777
|
};
|
|
505
778
|
export const citextPlugin = {
|
|
@@ -511,9 +784,9 @@ export const citextPlugin = {
|
|
|
511
784
|
export function id() {
|
|
512
785
|
return idType.createBuilder();
|
|
513
786
|
}
|
|
514
|
-
/** `TEXT` column. */
|
|
515
|
-
export function text() {
|
|
516
|
-
return textType.createBuilder();
|
|
787
|
+
/** `TEXT` column. Pass `{ maxLength: n }` for `VARCHAR(n)` on Postgres. */
|
|
788
|
+
export function text(options) {
|
|
789
|
+
return textType.createBuilder(options);
|
|
517
790
|
}
|
|
518
791
|
/** `BOOLEAN` column. */
|
|
519
792
|
export function bool() {
|
|
@@ -539,13 +812,13 @@ export function timestamp() {
|
|
|
539
812
|
export function uuid(options) {
|
|
540
813
|
return uuidType.createBuilder(options);
|
|
541
814
|
}
|
|
542
|
-
/** `JSON` column. */
|
|
543
|
-
export function json() {
|
|
544
|
-
return jsonType.createBuilder();
|
|
815
|
+
/** `JSON` column. Default Zod shape matches `Record<string, unknown>`. */
|
|
816
|
+
export function json(validation) {
|
|
817
|
+
return jsonType.createBuilder(validation !== undefined ? { validation } : undefined);
|
|
545
818
|
}
|
|
546
|
-
/** `JSONB` column (PostgreSQL; `JSON` on SQLite). */
|
|
547
|
-
export function jsonb() {
|
|
548
|
-
return jsonbType.createBuilder();
|
|
819
|
+
/** `JSONB` column (PostgreSQL; `JSON` on SQLite). Default Zod shape matches `Record<string, unknown>`. */
|
|
820
|
+
export function jsonb(validation) {
|
|
821
|
+
return jsonbType.createBuilder(validation !== undefined ? { validation } : undefined);
|
|
549
822
|
}
|
|
550
823
|
/** `NUMERIC` column — use string values to avoid float loss. */
|
|
551
824
|
export function decimal(options) {
|
|
@@ -578,6 +851,81 @@ export function textArray() {
|
|
|
578
851
|
export function intArray() {
|
|
579
852
|
return intArrayType.createBuilder();
|
|
580
853
|
}
|
|
854
|
+
/** `REAL` / `float4` column. Maps to `FLOAT` on MySQL. Prisma `Float` is {@link double}. */
|
|
855
|
+
export function real() {
|
|
856
|
+
return realType.createBuilder();
|
|
857
|
+
}
|
|
858
|
+
/** Alias for {@link real}. */
|
|
859
|
+
export function float() {
|
|
860
|
+
return real();
|
|
861
|
+
}
|
|
862
|
+
/** `DOUBLE PRECISION` / `float8` column. Maps to `DOUBLE` on MySQL. Closest to Prisma `Float`. */
|
|
863
|
+
export function double() {
|
|
864
|
+
return doubleType.createBuilder();
|
|
865
|
+
}
|
|
866
|
+
/** `DATE` column (`YYYY-MM-DD` string, not `Date`). */
|
|
867
|
+
export function date() {
|
|
868
|
+
return dateType.createBuilder();
|
|
869
|
+
}
|
|
870
|
+
/** `TIME` column (string). */
|
|
871
|
+
export function time() {
|
|
872
|
+
return timeType.createBuilder();
|
|
873
|
+
}
|
|
874
|
+
/** `INTERVAL` column (string). PostgreSQL native; SQLite `TEXT`; rejected on MySQL/MariaDB. */
|
|
875
|
+
export function interval() {
|
|
876
|
+
return intervalType.createBuilder();
|
|
877
|
+
}
|
|
878
|
+
/** `INET` column (string). PostgreSQL native; SQLite `TEXT`; rejected on MySQL/MariaDB. */
|
|
879
|
+
export function inet() {
|
|
880
|
+
return inetType.createBuilder();
|
|
881
|
+
}
|
|
882
|
+
/** `CIDR` column (string). PostgreSQL native; SQLite `TEXT`; rejected on MySQL/MariaDB. */
|
|
883
|
+
export function cidr() {
|
|
884
|
+
return cidrType.createBuilder();
|
|
885
|
+
}
|
|
886
|
+
/** `XML` column. Maps to `LONGTEXT` on MySQL and `TEXT` on SQLite. */
|
|
887
|
+
export function xml() {
|
|
888
|
+
return xmlType.createBuilder();
|
|
889
|
+
}
|
|
890
|
+
/** `MONEY` column (string). Maps to `DECIMAL(19,4)` on MySQL and `TEXT` on SQLite. */
|
|
891
|
+
export function money() {
|
|
892
|
+
return moneyType.createBuilder();
|
|
893
|
+
}
|
|
894
|
+
/** PostgreSQL `int4range` (string). Rejected on SQLite and MySQL/MariaDB. */
|
|
895
|
+
export function int4Range() {
|
|
896
|
+
return int4RangeType.createBuilder();
|
|
897
|
+
}
|
|
898
|
+
/** PostgreSQL `int8range` (string). Rejected on SQLite and MySQL/MariaDB. */
|
|
899
|
+
export function int8Range() {
|
|
900
|
+
return int8RangeType.createBuilder();
|
|
901
|
+
}
|
|
902
|
+
/** PostgreSQL `numrange` (string). Rejected on SQLite and MySQL/MariaDB. */
|
|
903
|
+
export function numRange() {
|
|
904
|
+
return numRangeType.createBuilder();
|
|
905
|
+
}
|
|
906
|
+
/** PostgreSQL `tsrange` (string). Rejected on SQLite and MySQL/MariaDB. */
|
|
907
|
+
export function tsRange() {
|
|
908
|
+
return tsRangeType.createBuilder();
|
|
909
|
+
}
|
|
910
|
+
/** PostgreSQL `tstzrange` (string). Rejected on SQLite and MySQL/MariaDB. */
|
|
911
|
+
export function tstzRange() {
|
|
912
|
+
return tstzRangeType.createBuilder();
|
|
913
|
+
}
|
|
914
|
+
/** PostgreSQL `daterange` (string). Rejected on SQLite and MySQL/MariaDB. */
|
|
915
|
+
export function dateRange() {
|
|
916
|
+
return dateRangeType.createBuilder();
|
|
917
|
+
}
|
|
918
|
+
/** `UUID[]` array column. JSON on SQLite/MySQL. */
|
|
919
|
+
export function uuidArray() {
|
|
920
|
+
return uuidArrayType.createBuilder();
|
|
921
|
+
}
|
|
922
|
+
/** Enum array column. Native `name[]` or `TEXT[]` on Postgres; JSON on SQLite/MySQL. */
|
|
923
|
+
export function enumArray(values, options) {
|
|
924
|
+
return enumArrayType.createBuilder({
|
|
925
|
+
values,
|
|
926
|
+
...(options?.name !== undefined ? { name: options.name } : {}),
|
|
927
|
+
});
|
|
928
|
+
}
|
|
581
929
|
/** `CITEXT` case-insensitive text (requires `citext` extension). */
|
|
582
930
|
export function citext() {
|
|
583
931
|
return citextType.createBuilder();
|