@axium/server 0.36.5 → 0.37.0
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/dist/acl.js +1 -1
- package/dist/database.d.ts +11 -507
- package/dist/database.js +8 -557
- package/dist/db/connection.d.ts +5 -0
- package/dist/db/connection.js +18 -0
- package/dist/db/data.d.ts +119 -0
- package/dist/db/data.js +113 -0
- package/dist/db/delta.d.ts +147 -0
- package/dist/db/delta.js +390 -0
- package/dist/db/schema.d.ts +268 -0
- package/dist/db/schema.js +169 -0
- package/dist/{db.json → db/schema.json} +5 -3
- package/dist/main.js +37 -23
- package/package.json +3 -3
- package/routes/admin/users/+page.svelte +3 -3
- package/schemas/db.json +48 -13
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* - Zod schemas for the DB schema config
|
|
3
|
+
* - DB config const type -> value type used by Kysely
|
|
4
|
+
*/
|
|
5
|
+
import { type ColumnDefinitionBuilder, type Generated } from 'kysely';
|
|
6
|
+
import type { Tuple } from 'utilium';
|
|
7
|
+
import * as z from 'zod';
|
|
8
|
+
declare const numberTypes: readonly ["integer", "int2", "int4", "int8", "smallint", "real", "double precision", "float4", "float8", "decimal", "numeric", "serial"];
|
|
9
|
+
declare const bigintTypes: readonly ["bigint", "bigserial"];
|
|
10
|
+
declare const booleanTypes: readonly ["boolean", "bool"];
|
|
11
|
+
declare const stringTypes: readonly ["varchar", "char", "text"];
|
|
12
|
+
declare const dateTypes: readonly ["date", "datetime", "time", "timetz", "timestamp", "timestamptz"];
|
|
13
|
+
declare const binaryTypes: readonly ["binary", "bytea", "varbinary", "blob"];
|
|
14
|
+
declare const numericRangeTypes: readonly ["int4range", "numrange"];
|
|
15
|
+
declare const stringRangeTypes: readonly ["tsrange", "tstzrange", "daterange"];
|
|
16
|
+
declare const multirangeTypes: readonly ["int4multirange", "int8multirange", "nummultirange", "tsmultirange", "tstzmultirange", "datemultirange"];
|
|
17
|
+
declare const _primitive: z.ZodLiteral<"bigint" | "boolean" | "uuid" | "date" | "binary" | "integer" | "int2" | "int4" | "int8" | "smallint" | "real" | "double precision" | "float4" | "float8" | "decimal" | "numeric" | "serial" | "bigserial" | "bool" | "varchar" | "char" | "text" | "datetime" | "time" | "timetz" | "timestamp" | "timestamptz" | "bytea" | "varbinary" | "blob" | "int4range" | "numrange" | "tsrange" | "tstzrange" | "daterange" | "int4multirange" | "int8multirange" | "nummultirange" | "tsmultirange" | "tstzmultirange" | "datemultirange" | "json" | "jsonb">;
|
|
18
|
+
declare const _ColumnType: z.ZodUnion<readonly [z.ZodLiteral<"bigint" | "boolean" | "uuid" | "date" | "binary" | "integer" | "int2" | "int4" | "int8" | "smallint" | "real" | "double precision" | "float4" | "float8" | "decimal" | "numeric" | "serial" | "bigserial" | "bool" | "varchar" | "char" | "text" | "datetime" | "time" | "timetz" | "timestamp" | "timestamptz" | "bytea" | "varbinary" | "blob" | "int4range" | "numrange" | "tsrange" | "tstzrange" | "daterange" | "int4multirange" | "int8multirange" | "nummultirange" | "tsmultirange" | "tstzmultirange" | "datemultirange" | "json" | "jsonb">, z.ZodTemplateLiteral<`binary(${number})` | `varchar(${number})` | `char(${number})` | `datetime(${number})` | `time(${number})` | `timetz(${number})` | `timestamp(${number})` | `timestamptz(${number})` | `varbinary(${number})`>, z.ZodTemplateLiteral<`decimal(${number},${number})` | `decimal(${number}, ${number})` | `numeric(${number},${number})` | `numeric(${number}, ${number})`>]>;
|
|
19
|
+
export declare const ColumnType: z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodLiteral<"bigint" | "boolean" | "uuid" | "date" | "binary" | "integer" | "int2" | "int4" | "int8" | "smallint" | "real" | "double precision" | "float4" | "float8" | "decimal" | "numeric" | "serial" | "bigserial" | "bool" | "varchar" | "char" | "text" | "datetime" | "time" | "timetz" | "timestamp" | "timestamptz" | "bytea" | "varbinary" | "blob" | "int4range" | "numrange" | "tsrange" | "tstzrange" | "daterange" | "int4multirange" | "int8multirange" | "nummultirange" | "tsmultirange" | "tstzmultirange" | "datemultirange" | "json" | "jsonb">, z.ZodTemplateLiteral<`binary(${number})` | `varchar(${number})` | `char(${number})` | `datetime(${number})` | `time(${number})` | `timetz(${number})` | `timestamp(${number})` | `timestamptz(${number})` | `varbinary(${number})`>, z.ZodTemplateLiteral<`decimal(${number},${number})` | `decimal(${number}, ${number})` | `numeric(${number},${number})` | `numeric(${number}, ${number})`>]>, z.ZodTemplateLiteral<"bigint[]" | "boolean[]" | "uuid[]" | "date[]" | "binary[]" | "integer[]" | "int2[]" | "int4[]" | "int8[]" | "smallint[]" | "real[]" | "double precision[]" | "float4[]" | "float8[]" | "decimal[]" | "numeric[]" | "serial[]" | "bigserial[]" | "bool[]" | "varchar[]" | "char[]" | "text[]" | "datetime[]" | "time[]" | "timetz[]" | "timestamp[]" | "timestamptz[]" | "bytea[]" | "varbinary[]" | "blob[]" | "int4range[]" | "numrange[]" | "tsrange[]" | "tstzrange[]" | "daterange[]" | "int4multirange[]" | "int8multirange[]" | "nummultirange[]" | "tsmultirange[]" | "tstzmultirange[]" | "datemultirange[]" | "json[]" | "jsonb[]" | `binary(${number})[]` | `varchar(${number})[]` | `char(${number})[]` | `datetime(${number})[]` | `time(${number})[]` | `timetz(${number})[]` | `timestamp(${number})[]` | `timestamptz(${number})[]` | `varbinary(${number})[]` | `decimal(${number},${number})[]` | `decimal(${number}, ${number})[]` | `numeric(${number},${number})[]` | `numeric(${number}, ${number})[]` | `bigint[${number}]` | `boolean[${number}]` | `uuid[${number}]` | `date[${number}]` | `binary[${number}]` | `integer[${number}]` | `int2[${number}]` | `int4[${number}]` | `int8[${number}]` | `smallint[${number}]` | `real[${number}]` | `double precision[${number}]` | `float4[${number}]` | `float8[${number}]` | `decimal[${number}]` | `numeric[${number}]` | `serial[${number}]` | `bigserial[${number}]` | `bool[${number}]` | `varchar[${number}]` | `char[${number}]` | `text[${number}]` | `datetime[${number}]` | `time[${number}]` | `timetz[${number}]` | `timestamp[${number}]` | `timestamptz[${number}]` | `bytea[${number}]` | `varbinary[${number}]` | `blob[${number}]` | `int4range[${number}]` | `numrange[${number}]` | `tsrange[${number}]` | `tstzrange[${number}]` | `daterange[${number}]` | `int4multirange[${number}]` | `int8multirange[${number}]` | `nummultirange[${number}]` | `tsmultirange[${number}]` | `tstzmultirange[${number}]` | `datemultirange[${number}]` | `json[${number}]` | `jsonb[${number}]` | `binary(${number})[${number}]` | `varchar(${number})[${number}]` | `char(${number})[${number}]` | `datetime(${number})[${number}]` | `time(${number})[${number}]` | `timetz(${number})[${number}]` | `timestamp(${number})[${number}]` | `timestamptz(${number})[${number}]` | `varbinary(${number})[${number}]` | `decimal(${number},${number})[${number}]` | `decimal(${number}, ${number})[${number}]` | `numeric(${number},${number})[${number}]` | `numeric(${number}, ${number})[${number}]`>]>;
|
|
20
|
+
export type ColumnType = z.infer<typeof ColumnType>;
|
|
21
|
+
export declare const Column: z.ZodObject<{
|
|
22
|
+
type: z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodLiteral<"bigint" | "boolean" | "uuid" | "date" | "binary" | "integer" | "int2" | "int4" | "int8" | "smallint" | "real" | "double precision" | "float4" | "float8" | "decimal" | "numeric" | "serial" | "bigserial" | "bool" | "varchar" | "char" | "text" | "datetime" | "time" | "timetz" | "timestamp" | "timestamptz" | "bytea" | "varbinary" | "blob" | "int4range" | "numrange" | "tsrange" | "tstzrange" | "daterange" | "int4multirange" | "int8multirange" | "nummultirange" | "tsmultirange" | "tstzmultirange" | "datemultirange" | "json" | "jsonb">, z.ZodTemplateLiteral<`binary(${number})` | `varchar(${number})` | `char(${number})` | `datetime(${number})` | `time(${number})` | `timetz(${number})` | `timestamp(${number})` | `timestamptz(${number})` | `varbinary(${number})`>, z.ZodTemplateLiteral<`decimal(${number},${number})` | `decimal(${number}, ${number})` | `numeric(${number},${number})` | `numeric(${number}, ${number})`>]>, z.ZodTemplateLiteral<"bigint[]" | "boolean[]" | "uuid[]" | "date[]" | "binary[]" | "integer[]" | "int2[]" | "int4[]" | "int8[]" | "smallint[]" | "real[]" | "double precision[]" | "float4[]" | "float8[]" | "decimal[]" | "numeric[]" | "serial[]" | "bigserial[]" | "bool[]" | "varchar[]" | "char[]" | "text[]" | "datetime[]" | "time[]" | "timetz[]" | "timestamp[]" | "timestamptz[]" | "bytea[]" | "varbinary[]" | "blob[]" | "int4range[]" | "numrange[]" | "tsrange[]" | "tstzrange[]" | "daterange[]" | "int4multirange[]" | "int8multirange[]" | "nummultirange[]" | "tsmultirange[]" | "tstzmultirange[]" | "datemultirange[]" | "json[]" | "jsonb[]" | `binary(${number})[]` | `varchar(${number})[]` | `char(${number})[]` | `datetime(${number})[]` | `time(${number})[]` | `timetz(${number})[]` | `timestamp(${number})[]` | `timestamptz(${number})[]` | `varbinary(${number})[]` | `decimal(${number},${number})[]` | `decimal(${number}, ${number})[]` | `numeric(${number},${number})[]` | `numeric(${number}, ${number})[]` | `bigint[${number}]` | `boolean[${number}]` | `uuid[${number}]` | `date[${number}]` | `binary[${number}]` | `integer[${number}]` | `int2[${number}]` | `int4[${number}]` | `int8[${number}]` | `smallint[${number}]` | `real[${number}]` | `double precision[${number}]` | `float4[${number}]` | `float8[${number}]` | `decimal[${number}]` | `numeric[${number}]` | `serial[${number}]` | `bigserial[${number}]` | `bool[${number}]` | `varchar[${number}]` | `char[${number}]` | `text[${number}]` | `datetime[${number}]` | `time[${number}]` | `timetz[${number}]` | `timestamp[${number}]` | `timestamptz[${number}]` | `bytea[${number}]` | `varbinary[${number}]` | `blob[${number}]` | `int4range[${number}]` | `numrange[${number}]` | `tsrange[${number}]` | `tstzrange[${number}]` | `daterange[${number}]` | `int4multirange[${number}]` | `int8multirange[${number}]` | `nummultirange[${number}]` | `tsmultirange[${number}]` | `tstzmultirange[${number}]` | `datemultirange[${number}]` | `json[${number}]` | `jsonb[${number}]` | `binary(${number})[${number}]` | `varchar(${number})[${number}]` | `char(${number})[${number}]` | `datetime(${number})[${number}]` | `time(${number})[${number}]` | `timetz(${number})[${number}]` | `timestamp(${number})[${number}]` | `timestamptz(${number})[${number}]` | `varbinary(${number})[${number}]` | `decimal(${number},${number})[${number}]` | `decimal(${number}, ${number})[${number}]` | `numeric(${number},${number})[${number}]` | `numeric(${number}, ${number})[${number}]`>]>;
|
|
23
|
+
required: z.ZodDefault<z.ZodBoolean>;
|
|
24
|
+
unique: z.ZodDefault<z.ZodBoolean>;
|
|
25
|
+
primary: z.ZodDefault<z.ZodBoolean>;
|
|
26
|
+
references: z.ZodOptional<z.ZodString>;
|
|
27
|
+
onDelete: z.ZodOptional<z.ZodEnum<{
|
|
28
|
+
cascade: "cascade";
|
|
29
|
+
restrict: "restrict";
|
|
30
|
+
"no action": "no action";
|
|
31
|
+
"set null": "set null";
|
|
32
|
+
"set default": "set default";
|
|
33
|
+
}>>;
|
|
34
|
+
default: z.ZodOptional<z.ZodAny>;
|
|
35
|
+
check: z.ZodOptional<z.ZodString>;
|
|
36
|
+
}, z.core.$strict>;
|
|
37
|
+
export interface Column extends z.infer<typeof Column> {
|
|
38
|
+
}
|
|
39
|
+
export declare const Constraint: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
40
|
+
type: z.ZodLiteral<"primary_key">;
|
|
41
|
+
on: z.ZodArray<z.ZodString>;
|
|
42
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
43
|
+
type: z.ZodLiteral<"foreign_key">;
|
|
44
|
+
on: z.ZodArray<z.ZodString>;
|
|
45
|
+
target: z.ZodString;
|
|
46
|
+
references: z.ZodArray<z.ZodString>;
|
|
47
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
48
|
+
type: z.ZodLiteral<"unique">;
|
|
49
|
+
on: z.ZodArray<z.ZodString>;
|
|
50
|
+
nulls_not_distinct: z.ZodOptional<z.ZodBoolean>;
|
|
51
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
52
|
+
type: z.ZodLiteral<"check">;
|
|
53
|
+
check: z.ZodString;
|
|
54
|
+
}, z.core.$strict>], "type">;
|
|
55
|
+
export type Constraint = z.infer<typeof Constraint>;
|
|
56
|
+
export declare const Table: z.ZodObject<{
|
|
57
|
+
columns: z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
58
|
+
type: z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodLiteral<"bigint" | "boolean" | "uuid" | "date" | "binary" | "integer" | "int2" | "int4" | "int8" | "smallint" | "real" | "double precision" | "float4" | "float8" | "decimal" | "numeric" | "serial" | "bigserial" | "bool" | "varchar" | "char" | "text" | "datetime" | "time" | "timetz" | "timestamp" | "timestamptz" | "bytea" | "varbinary" | "blob" | "int4range" | "numrange" | "tsrange" | "tstzrange" | "daterange" | "int4multirange" | "int8multirange" | "nummultirange" | "tsmultirange" | "tstzmultirange" | "datemultirange" | "json" | "jsonb">, z.ZodTemplateLiteral<`binary(${number})` | `varchar(${number})` | `char(${number})` | `datetime(${number})` | `time(${number})` | `timetz(${number})` | `timestamp(${number})` | `timestamptz(${number})` | `varbinary(${number})`>, z.ZodTemplateLiteral<`decimal(${number},${number})` | `decimal(${number}, ${number})` | `numeric(${number},${number})` | `numeric(${number}, ${number})`>]>, z.ZodTemplateLiteral<"bigint[]" | "boolean[]" | "uuid[]" | "date[]" | "binary[]" | "integer[]" | "int2[]" | "int4[]" | "int8[]" | "smallint[]" | "real[]" | "double precision[]" | "float4[]" | "float8[]" | "decimal[]" | "numeric[]" | "serial[]" | "bigserial[]" | "bool[]" | "varchar[]" | "char[]" | "text[]" | "datetime[]" | "time[]" | "timetz[]" | "timestamp[]" | "timestamptz[]" | "bytea[]" | "varbinary[]" | "blob[]" | "int4range[]" | "numrange[]" | "tsrange[]" | "tstzrange[]" | "daterange[]" | "int4multirange[]" | "int8multirange[]" | "nummultirange[]" | "tsmultirange[]" | "tstzmultirange[]" | "datemultirange[]" | "json[]" | "jsonb[]" | `binary(${number})[]` | `varchar(${number})[]` | `char(${number})[]` | `datetime(${number})[]` | `time(${number})[]` | `timetz(${number})[]` | `timestamp(${number})[]` | `timestamptz(${number})[]` | `varbinary(${number})[]` | `decimal(${number},${number})[]` | `decimal(${number}, ${number})[]` | `numeric(${number},${number})[]` | `numeric(${number}, ${number})[]` | `bigint[${number}]` | `boolean[${number}]` | `uuid[${number}]` | `date[${number}]` | `binary[${number}]` | `integer[${number}]` | `int2[${number}]` | `int4[${number}]` | `int8[${number}]` | `smallint[${number}]` | `real[${number}]` | `double precision[${number}]` | `float4[${number}]` | `float8[${number}]` | `decimal[${number}]` | `numeric[${number}]` | `serial[${number}]` | `bigserial[${number}]` | `bool[${number}]` | `varchar[${number}]` | `char[${number}]` | `text[${number}]` | `datetime[${number}]` | `time[${number}]` | `timetz[${number}]` | `timestamp[${number}]` | `timestamptz[${number}]` | `bytea[${number}]` | `varbinary[${number}]` | `blob[${number}]` | `int4range[${number}]` | `numrange[${number}]` | `tsrange[${number}]` | `tstzrange[${number}]` | `daterange[${number}]` | `int4multirange[${number}]` | `int8multirange[${number}]` | `nummultirange[${number}]` | `tsmultirange[${number}]` | `tstzmultirange[${number}]` | `datemultirange[${number}]` | `json[${number}]` | `jsonb[${number}]` | `binary(${number})[${number}]` | `varchar(${number})[${number}]` | `char(${number})[${number}]` | `datetime(${number})[${number}]` | `time(${number})[${number}]` | `timetz(${number})[${number}]` | `timestamp(${number})[${number}]` | `timestamptz(${number})[${number}]` | `varbinary(${number})[${number}]` | `decimal(${number},${number})[${number}]` | `decimal(${number}, ${number})[${number}]` | `numeric(${number},${number})[${number}]` | `numeric(${number}, ${number})[${number}]`>]>;
|
|
59
|
+
required: z.ZodDefault<z.ZodBoolean>;
|
|
60
|
+
unique: z.ZodDefault<z.ZodBoolean>;
|
|
61
|
+
primary: z.ZodDefault<z.ZodBoolean>;
|
|
62
|
+
references: z.ZodOptional<z.ZodString>;
|
|
63
|
+
onDelete: z.ZodOptional<z.ZodEnum<{
|
|
64
|
+
cascade: "cascade";
|
|
65
|
+
restrict: "restrict";
|
|
66
|
+
"no action": "no action";
|
|
67
|
+
"set null": "set null";
|
|
68
|
+
"set default": "set default";
|
|
69
|
+
}>>;
|
|
70
|
+
default: z.ZodOptional<z.ZodAny>;
|
|
71
|
+
check: z.ZodOptional<z.ZodString>;
|
|
72
|
+
}, z.core.$strict>>;
|
|
73
|
+
constraints: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
74
|
+
type: z.ZodLiteral<"primary_key">;
|
|
75
|
+
on: z.ZodArray<z.ZodString>;
|
|
76
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
77
|
+
type: z.ZodLiteral<"foreign_key">;
|
|
78
|
+
on: z.ZodArray<z.ZodString>;
|
|
79
|
+
target: z.ZodString;
|
|
80
|
+
references: z.ZodArray<z.ZodString>;
|
|
81
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
82
|
+
type: z.ZodLiteral<"unique">;
|
|
83
|
+
on: z.ZodArray<z.ZodString>;
|
|
84
|
+
nulls_not_distinct: z.ZodOptional<z.ZodBoolean>;
|
|
85
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
86
|
+
type: z.ZodLiteral<"check">;
|
|
87
|
+
check: z.ZodString;
|
|
88
|
+
}, z.core.$strict>], "type">>>>;
|
|
89
|
+
}, z.core.$strict>;
|
|
90
|
+
export interface Table extends z.infer<typeof Table> {
|
|
91
|
+
}
|
|
92
|
+
export declare const Index: z.ZodObject<{
|
|
93
|
+
on: z.ZodString;
|
|
94
|
+
columns: z.ZodArray<z.ZodString>;
|
|
95
|
+
}, z.core.$strict>;
|
|
96
|
+
export interface Index extends z.infer<typeof Index> {
|
|
97
|
+
}
|
|
98
|
+
type __RangeContent = string | number | bigint | boolean | null | undefined;
|
|
99
|
+
type _Range<T extends __RangeContent> = `${'(' | '['}${T},${T}${')' | ']'}`;
|
|
100
|
+
type _MultiRange = `{${string}}`;
|
|
101
|
+
interface ColumnValueMap extends Record<(typeof numberTypes)[number], number>, Record<(typeof bigintTypes)[number], bigint>, Record<(typeof booleanTypes)[number], boolean>, Record<(typeof stringTypes)[number], string>, Record<(typeof dateTypes)[number], Date>, Record<(typeof binaryTypes)[number], Uint8Array<ArrayBuffer>>, Record<(typeof numericRangeTypes)[number], _Range<number>>, Record<(typeof stringRangeTypes)[number], _Range<string>>, Record<(typeof multirangeTypes)[number], _MultiRange> {
|
|
102
|
+
int8range: _Range<bigint>;
|
|
103
|
+
uuid: string;
|
|
104
|
+
json: any;
|
|
105
|
+
jsonb: any;
|
|
106
|
+
}
|
|
107
|
+
type ColumnTypeToValue<T extends ColumnType> = T extends `${infer CT extends z.infer<typeof _ColumnType>}[${infer N extends '' | number}]` ? N extends number ? Tuple<ColumnTypeToValue<CT>, N> : ColumnTypeToValue<CT>[] : T extends `${infer Base extends z.infer<typeof _primitive>}(${string})` ? ColumnTypeToValue<Base> : T extends keyof ColumnValueMap ? ColumnValueMap[T] : never;
|
|
108
|
+
/**
|
|
109
|
+
* Convert a column definition into the Kysely database schema type
|
|
110
|
+
*/
|
|
111
|
+
export type ColumnValue<T extends z.input<typeof Column>> = T['default'] extends {} ? Generated<ColumnTypeToValue<T['type']>> : T['required'] extends true ? ColumnTypeToValue<T['type']> : ColumnTypeToValue<T['type']> | null;
|
|
112
|
+
/**
|
|
113
|
+
* Convert a table definition into the Kysely database schema type
|
|
114
|
+
*/
|
|
115
|
+
export type TableValue<T extends z.input<typeof Table>> = {
|
|
116
|
+
[K in keyof T['columns']]: ColumnValue<T['columns'][K]>;
|
|
117
|
+
};
|
|
118
|
+
export declare function buildColumn(column: Column, allowPK: boolean): (col: ColumnDefinitionBuilder) => ColumnDefinitionBuilder;
|
|
119
|
+
export {};
|
package/dist/db/data.js
ADDED
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* - Zod schemas for the DB schema config
|
|
3
|
+
* - DB config const type -> value type used by Kysely
|
|
4
|
+
*/
|
|
5
|
+
import { sql } from 'kysely';
|
|
6
|
+
import * as z from 'zod';
|
|
7
|
+
const numberTypes = [
|
|
8
|
+
'integer',
|
|
9
|
+
'int2',
|
|
10
|
+
'int4',
|
|
11
|
+
'int8',
|
|
12
|
+
'smallint',
|
|
13
|
+
'real',
|
|
14
|
+
'double precision',
|
|
15
|
+
'float4',
|
|
16
|
+
'float8',
|
|
17
|
+
'decimal',
|
|
18
|
+
'numeric',
|
|
19
|
+
'serial',
|
|
20
|
+
];
|
|
21
|
+
const bigintTypes = ['bigint', 'bigserial'];
|
|
22
|
+
const booleanTypes = ['boolean', 'bool'];
|
|
23
|
+
const stringTypes = ['varchar', 'char', 'text'];
|
|
24
|
+
const dateTypes = ['date', 'datetime', 'time', 'timetz', 'timestamp', 'timestamptz'];
|
|
25
|
+
const binaryTypes = ['binary', 'bytea', 'varbinary', 'blob'];
|
|
26
|
+
const numericRangeTypes = ['int4range', 'numrange'];
|
|
27
|
+
const stringRangeTypes = ['tsrange', 'tstzrange', 'daterange'];
|
|
28
|
+
const multirangeTypes = ['int4multirange', 'int8multirange', 'nummultirange', 'tsmultirange', 'tstzmultirange', 'datemultirange'];
|
|
29
|
+
const _primitive = z.literal([
|
|
30
|
+
...numberTypes,
|
|
31
|
+
...bigintTypes,
|
|
32
|
+
...booleanTypes,
|
|
33
|
+
...stringTypes,
|
|
34
|
+
...dateTypes,
|
|
35
|
+
...binaryTypes,
|
|
36
|
+
...numericRangeTypes,
|
|
37
|
+
...stringRangeTypes,
|
|
38
|
+
...multirangeTypes,
|
|
39
|
+
'uuid',
|
|
40
|
+
'json',
|
|
41
|
+
'jsonb',
|
|
42
|
+
]);
|
|
43
|
+
const _ColumnType = z.union([
|
|
44
|
+
_primitive,
|
|
45
|
+
z.templateLiteral([
|
|
46
|
+
z.literal(['char', 'varchar', 'binary', 'varbinary', 'datetime', 'time', 'timetz', 'timestamp', 'timestamptz']),
|
|
47
|
+
'(',
|
|
48
|
+
z.int().nonnegative(),
|
|
49
|
+
')',
|
|
50
|
+
]),
|
|
51
|
+
z.templateLiteral([z.literal(['decimal', 'numeric']), '(', z.int().nonnegative(), z.literal([',', ', ']), z.int().nonnegative(), ')']),
|
|
52
|
+
]);
|
|
53
|
+
export const ColumnType = z.union([_ColumnType, z.templateLiteral([_ColumnType, '[', z.int().nonnegative().optional(), ']'])]);
|
|
54
|
+
export const Column = z.strictObject({
|
|
55
|
+
type: ColumnType,
|
|
56
|
+
required: z.boolean().default(false),
|
|
57
|
+
unique: z.boolean().default(false),
|
|
58
|
+
primary: z.boolean().default(false),
|
|
59
|
+
references: z.string().optional(),
|
|
60
|
+
onDelete: z.enum(['cascade', 'restrict', 'no action', 'set null', 'set default']).optional(),
|
|
61
|
+
default: z.any().optional(),
|
|
62
|
+
check: z.string().optional(),
|
|
63
|
+
});
|
|
64
|
+
export const Constraint = z.discriminatedUnion('type', [
|
|
65
|
+
z.strictObject({
|
|
66
|
+
type: z.literal('primary_key'),
|
|
67
|
+
on: z.string().array(),
|
|
68
|
+
}),
|
|
69
|
+
z.strictObject({
|
|
70
|
+
type: z.literal('foreign_key'),
|
|
71
|
+
on: z.string().array(),
|
|
72
|
+
target: z.string(),
|
|
73
|
+
references: z.string().array(),
|
|
74
|
+
}),
|
|
75
|
+
z.strictObject({
|
|
76
|
+
type: z.literal('unique'),
|
|
77
|
+
on: z.string().array(),
|
|
78
|
+
nulls_not_distinct: z.boolean().optional(),
|
|
79
|
+
}),
|
|
80
|
+
z.strictObject({
|
|
81
|
+
type: z.literal('check'),
|
|
82
|
+
check: z.string(),
|
|
83
|
+
}),
|
|
84
|
+
]);
|
|
85
|
+
export const Table = z.strictObject({
|
|
86
|
+
columns: z.record(z.string(), Column),
|
|
87
|
+
constraints: z.record(z.string(), Constraint).optional().default({}),
|
|
88
|
+
});
|
|
89
|
+
export const Index = z.strictObject({
|
|
90
|
+
on: z.string(),
|
|
91
|
+
columns: z.string().array(),
|
|
92
|
+
});
|
|
93
|
+
export function buildColumn(column, allowPK) {
|
|
94
|
+
return function _addColumn(col) {
|
|
95
|
+
if (column.primary && allowPK)
|
|
96
|
+
col = col.primaryKey();
|
|
97
|
+
if (column.unique)
|
|
98
|
+
col = col.unique();
|
|
99
|
+
if (column.required)
|
|
100
|
+
col = col.notNull();
|
|
101
|
+
else if (column.unique)
|
|
102
|
+
col = col.nullsNotDistinct();
|
|
103
|
+
if (column.references)
|
|
104
|
+
col = col.references(column.references);
|
|
105
|
+
if (column.onDelete)
|
|
106
|
+
col = col.onDelete(column.onDelete);
|
|
107
|
+
if ('default' in column)
|
|
108
|
+
col = col.defaultTo(sql.raw(String(column.default)));
|
|
109
|
+
if (column.check)
|
|
110
|
+
col = col.check(sql.raw(column.check));
|
|
111
|
+
return col;
|
|
112
|
+
};
|
|
113
|
+
}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import * as z from 'zod';
|
|
2
|
+
import * as data from './data.js';
|
|
3
|
+
import type { SchemaDecl } from './schema.js';
|
|
4
|
+
export declare const Column: z.ZodObject<{
|
|
5
|
+
type: z.ZodOptional<z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodLiteral<"bigint" | "boolean" | "uuid" | "date" | "binary" | "integer" | "int2" | "int4" | "int8" | "smallint" | "real" | "double precision" | "float4" | "float8" | "decimal" | "numeric" | "serial" | "bigserial" | "bool" | "varchar" | "char" | "text" | "datetime" | "time" | "timetz" | "timestamp" | "timestamptz" | "bytea" | "varbinary" | "blob" | "int4range" | "numrange" | "tsrange" | "tstzrange" | "daterange" | "int4multirange" | "int8multirange" | "nummultirange" | "tsmultirange" | "tstzmultirange" | "datemultirange" | "json" | "jsonb">, z.ZodTemplateLiteral<`binary(${number})` | `varchar(${number})` | `char(${number})` | `datetime(${number})` | `time(${number})` | `timetz(${number})` | `timestamp(${number})` | `timestamptz(${number})` | `varbinary(${number})`>, z.ZodTemplateLiteral<`decimal(${number},${number})` | `decimal(${number}, ${number})` | `numeric(${number},${number})` | `numeric(${number}, ${number})`>]>, z.ZodTemplateLiteral<"bigint[]" | "boolean[]" | "uuid[]" | "date[]" | "binary[]" | "integer[]" | "int2[]" | "int4[]" | "int8[]" | "smallint[]" | "real[]" | "double precision[]" | "float4[]" | "float8[]" | "decimal[]" | "numeric[]" | "serial[]" | "bigserial[]" | "bool[]" | "varchar[]" | "char[]" | "text[]" | "datetime[]" | "time[]" | "timetz[]" | "timestamp[]" | "timestamptz[]" | "bytea[]" | "varbinary[]" | "blob[]" | "int4range[]" | "numrange[]" | "tsrange[]" | "tstzrange[]" | "daterange[]" | "int4multirange[]" | "int8multirange[]" | "nummultirange[]" | "tsmultirange[]" | "tstzmultirange[]" | "datemultirange[]" | "json[]" | "jsonb[]" | `binary(${number})[]` | `varchar(${number})[]` | `char(${number})[]` | `datetime(${number})[]` | `time(${number})[]` | `timetz(${number})[]` | `timestamp(${number})[]` | `timestamptz(${number})[]` | `varbinary(${number})[]` | `decimal(${number},${number})[]` | `decimal(${number}, ${number})[]` | `numeric(${number},${number})[]` | `numeric(${number}, ${number})[]` | `bigint[${number}]` | `boolean[${number}]` | `uuid[${number}]` | `date[${number}]` | `binary[${number}]` | `integer[${number}]` | `int2[${number}]` | `int4[${number}]` | `int8[${number}]` | `smallint[${number}]` | `real[${number}]` | `double precision[${number}]` | `float4[${number}]` | `float8[${number}]` | `decimal[${number}]` | `numeric[${number}]` | `serial[${number}]` | `bigserial[${number}]` | `bool[${number}]` | `varchar[${number}]` | `char[${number}]` | `text[${number}]` | `datetime[${number}]` | `time[${number}]` | `timetz[${number}]` | `timestamp[${number}]` | `timestamptz[${number}]` | `bytea[${number}]` | `varbinary[${number}]` | `blob[${number}]` | `int4range[${number}]` | `numrange[${number}]` | `tsrange[${number}]` | `tstzrange[${number}]` | `daterange[${number}]` | `int4multirange[${number}]` | `int8multirange[${number}]` | `nummultirange[${number}]` | `tsmultirange[${number}]` | `tstzmultirange[${number}]` | `datemultirange[${number}]` | `json[${number}]` | `jsonb[${number}]` | `binary(${number})[${number}]` | `varchar(${number})[${number}]` | `char(${number})[${number}]` | `datetime(${number})[${number}]` | `time(${number})[${number}]` | `timetz(${number})[${number}]` | `timestamp(${number})[${number}]` | `timestamptz(${number})[${number}]` | `varbinary(${number})[${number}]` | `decimal(${number},${number})[${number}]` | `decimal(${number}, ${number})[${number}]` | `numeric(${number},${number})[${number}]` | `numeric(${number}, ${number})[${number}]`>]>>;
|
|
6
|
+
default: z.ZodOptional<z.ZodString>;
|
|
7
|
+
ops: z.ZodOptional<z.ZodArray<z.ZodLiteral<"drop_default" | "set_required" | "drop_required">>>;
|
|
8
|
+
}, z.core.$strict>;
|
|
9
|
+
export interface Column extends z.infer<typeof Column> {
|
|
10
|
+
}
|
|
11
|
+
export declare const Table: z.ZodObject<{
|
|
12
|
+
add_columns: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
13
|
+
type: z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodLiteral<"bigint" | "boolean" | "uuid" | "date" | "binary" | "integer" | "int2" | "int4" | "int8" | "smallint" | "real" | "double precision" | "float4" | "float8" | "decimal" | "numeric" | "serial" | "bigserial" | "bool" | "varchar" | "char" | "text" | "datetime" | "time" | "timetz" | "timestamp" | "timestamptz" | "bytea" | "varbinary" | "blob" | "int4range" | "numrange" | "tsrange" | "tstzrange" | "daterange" | "int4multirange" | "int8multirange" | "nummultirange" | "tsmultirange" | "tstzmultirange" | "datemultirange" | "json" | "jsonb">, z.ZodTemplateLiteral<`binary(${number})` | `varchar(${number})` | `char(${number})` | `datetime(${number})` | `time(${number})` | `timetz(${number})` | `timestamp(${number})` | `timestamptz(${number})` | `varbinary(${number})`>, z.ZodTemplateLiteral<`decimal(${number},${number})` | `decimal(${number}, ${number})` | `numeric(${number},${number})` | `numeric(${number}, ${number})`>]>, z.ZodTemplateLiteral<"bigint[]" | "boolean[]" | "uuid[]" | "date[]" | "binary[]" | "integer[]" | "int2[]" | "int4[]" | "int8[]" | "smallint[]" | "real[]" | "double precision[]" | "float4[]" | "float8[]" | "decimal[]" | "numeric[]" | "serial[]" | "bigserial[]" | "bool[]" | "varchar[]" | "char[]" | "text[]" | "datetime[]" | "time[]" | "timetz[]" | "timestamp[]" | "timestamptz[]" | "bytea[]" | "varbinary[]" | "blob[]" | "int4range[]" | "numrange[]" | "tsrange[]" | "tstzrange[]" | "daterange[]" | "int4multirange[]" | "int8multirange[]" | "nummultirange[]" | "tsmultirange[]" | "tstzmultirange[]" | "datemultirange[]" | "json[]" | "jsonb[]" | `binary(${number})[]` | `varchar(${number})[]` | `char(${number})[]` | `datetime(${number})[]` | `time(${number})[]` | `timetz(${number})[]` | `timestamp(${number})[]` | `timestamptz(${number})[]` | `varbinary(${number})[]` | `decimal(${number},${number})[]` | `decimal(${number}, ${number})[]` | `numeric(${number},${number})[]` | `numeric(${number}, ${number})[]` | `bigint[${number}]` | `boolean[${number}]` | `uuid[${number}]` | `date[${number}]` | `binary[${number}]` | `integer[${number}]` | `int2[${number}]` | `int4[${number}]` | `int8[${number}]` | `smallint[${number}]` | `real[${number}]` | `double precision[${number}]` | `float4[${number}]` | `float8[${number}]` | `decimal[${number}]` | `numeric[${number}]` | `serial[${number}]` | `bigserial[${number}]` | `bool[${number}]` | `varchar[${number}]` | `char[${number}]` | `text[${number}]` | `datetime[${number}]` | `time[${number}]` | `timetz[${number}]` | `timestamp[${number}]` | `timestamptz[${number}]` | `bytea[${number}]` | `varbinary[${number}]` | `blob[${number}]` | `int4range[${number}]` | `numrange[${number}]` | `tsrange[${number}]` | `tstzrange[${number}]` | `daterange[${number}]` | `int4multirange[${number}]` | `int8multirange[${number}]` | `nummultirange[${number}]` | `tsmultirange[${number}]` | `tstzmultirange[${number}]` | `datemultirange[${number}]` | `json[${number}]` | `jsonb[${number}]` | `binary(${number})[${number}]` | `varchar(${number})[${number}]` | `char(${number})[${number}]` | `datetime(${number})[${number}]` | `time(${number})[${number}]` | `timetz(${number})[${number}]` | `timestamp(${number})[${number}]` | `timestamptz(${number})[${number}]` | `varbinary(${number})[${number}]` | `decimal(${number},${number})[${number}]` | `decimal(${number}, ${number})[${number}]` | `numeric(${number},${number})[${number}]` | `numeric(${number}, ${number})[${number}]`>]>;
|
|
14
|
+
required: z.ZodDefault<z.ZodBoolean>;
|
|
15
|
+
unique: z.ZodDefault<z.ZodBoolean>;
|
|
16
|
+
primary: z.ZodDefault<z.ZodBoolean>;
|
|
17
|
+
references: z.ZodOptional<z.ZodString>;
|
|
18
|
+
onDelete: z.ZodOptional<z.ZodEnum<{
|
|
19
|
+
cascade: "cascade";
|
|
20
|
+
restrict: "restrict";
|
|
21
|
+
"no action": "no action";
|
|
22
|
+
"set null": "set null";
|
|
23
|
+
"set default": "set default";
|
|
24
|
+
}>>;
|
|
25
|
+
default: z.ZodOptional<z.ZodAny>;
|
|
26
|
+
check: z.ZodOptional<z.ZodString>;
|
|
27
|
+
}, z.core.$strict>>>>;
|
|
28
|
+
drop_columns: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString>>>;
|
|
29
|
+
alter_columns: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
30
|
+
type: z.ZodOptional<z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodLiteral<"bigint" | "boolean" | "uuid" | "date" | "binary" | "integer" | "int2" | "int4" | "int8" | "smallint" | "real" | "double precision" | "float4" | "float8" | "decimal" | "numeric" | "serial" | "bigserial" | "bool" | "varchar" | "char" | "text" | "datetime" | "time" | "timetz" | "timestamp" | "timestamptz" | "bytea" | "varbinary" | "blob" | "int4range" | "numrange" | "tsrange" | "tstzrange" | "daterange" | "int4multirange" | "int8multirange" | "nummultirange" | "tsmultirange" | "tstzmultirange" | "datemultirange" | "json" | "jsonb">, z.ZodTemplateLiteral<`binary(${number})` | `varchar(${number})` | `char(${number})` | `datetime(${number})` | `time(${number})` | `timetz(${number})` | `timestamp(${number})` | `timestamptz(${number})` | `varbinary(${number})`>, z.ZodTemplateLiteral<`decimal(${number},${number})` | `decimal(${number}, ${number})` | `numeric(${number},${number})` | `numeric(${number}, ${number})`>]>, z.ZodTemplateLiteral<"bigint[]" | "boolean[]" | "uuid[]" | "date[]" | "binary[]" | "integer[]" | "int2[]" | "int4[]" | "int8[]" | "smallint[]" | "real[]" | "double precision[]" | "float4[]" | "float8[]" | "decimal[]" | "numeric[]" | "serial[]" | "bigserial[]" | "bool[]" | "varchar[]" | "char[]" | "text[]" | "datetime[]" | "time[]" | "timetz[]" | "timestamp[]" | "timestamptz[]" | "bytea[]" | "varbinary[]" | "blob[]" | "int4range[]" | "numrange[]" | "tsrange[]" | "tstzrange[]" | "daterange[]" | "int4multirange[]" | "int8multirange[]" | "nummultirange[]" | "tsmultirange[]" | "tstzmultirange[]" | "datemultirange[]" | "json[]" | "jsonb[]" | `binary(${number})[]` | `varchar(${number})[]` | `char(${number})[]` | `datetime(${number})[]` | `time(${number})[]` | `timetz(${number})[]` | `timestamp(${number})[]` | `timestamptz(${number})[]` | `varbinary(${number})[]` | `decimal(${number},${number})[]` | `decimal(${number}, ${number})[]` | `numeric(${number},${number})[]` | `numeric(${number}, ${number})[]` | `bigint[${number}]` | `boolean[${number}]` | `uuid[${number}]` | `date[${number}]` | `binary[${number}]` | `integer[${number}]` | `int2[${number}]` | `int4[${number}]` | `int8[${number}]` | `smallint[${number}]` | `real[${number}]` | `double precision[${number}]` | `float4[${number}]` | `float8[${number}]` | `decimal[${number}]` | `numeric[${number}]` | `serial[${number}]` | `bigserial[${number}]` | `bool[${number}]` | `varchar[${number}]` | `char[${number}]` | `text[${number}]` | `datetime[${number}]` | `time[${number}]` | `timetz[${number}]` | `timestamp[${number}]` | `timestamptz[${number}]` | `bytea[${number}]` | `varbinary[${number}]` | `blob[${number}]` | `int4range[${number}]` | `numrange[${number}]` | `tsrange[${number}]` | `tstzrange[${number}]` | `daterange[${number}]` | `int4multirange[${number}]` | `int8multirange[${number}]` | `nummultirange[${number}]` | `tsmultirange[${number}]` | `tstzmultirange[${number}]` | `datemultirange[${number}]` | `json[${number}]` | `jsonb[${number}]` | `binary(${number})[${number}]` | `varchar(${number})[${number}]` | `char(${number})[${number}]` | `datetime(${number})[${number}]` | `time(${number})[${number}]` | `timetz(${number})[${number}]` | `timestamp(${number})[${number}]` | `timestamptz(${number})[${number}]` | `varbinary(${number})[${number}]` | `decimal(${number},${number})[${number}]` | `decimal(${number}, ${number})[${number}]` | `numeric(${number},${number})[${number}]` | `numeric(${number}, ${number})[${number}]`>]>>;
|
|
31
|
+
default: z.ZodOptional<z.ZodString>;
|
|
32
|
+
ops: z.ZodOptional<z.ZodArray<z.ZodLiteral<"drop_default" | "set_required" | "drop_required">>>;
|
|
33
|
+
}, z.core.$strict>>>>;
|
|
34
|
+
add_constraints: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
35
|
+
type: z.ZodLiteral<"primary_key">;
|
|
36
|
+
on: z.ZodArray<z.ZodString>;
|
|
37
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
38
|
+
type: z.ZodLiteral<"foreign_key">;
|
|
39
|
+
on: z.ZodArray<z.ZodString>;
|
|
40
|
+
target: z.ZodString;
|
|
41
|
+
references: z.ZodArray<z.ZodString>;
|
|
42
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
43
|
+
type: z.ZodLiteral<"unique">;
|
|
44
|
+
on: z.ZodArray<z.ZodString>;
|
|
45
|
+
nulls_not_distinct: z.ZodOptional<z.ZodBoolean>;
|
|
46
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
47
|
+
type: z.ZodLiteral<"check">;
|
|
48
|
+
check: z.ZodString;
|
|
49
|
+
}, z.core.$strict>], "type">>>>;
|
|
50
|
+
drop_constraints: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString>>>;
|
|
51
|
+
}, z.core.$strict>;
|
|
52
|
+
export interface Table extends z.infer<typeof Table> {
|
|
53
|
+
}
|
|
54
|
+
export declare function applyToTable(table: data.Table, delta: Table): void;
|
|
55
|
+
export declare const Version: z.ZodObject<{
|
|
56
|
+
delta: z.ZodLiteral<true>;
|
|
57
|
+
add_tables: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
58
|
+
columns: z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
59
|
+
type: z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodLiteral<"bigint" | "boolean" | "uuid" | "date" | "binary" | "integer" | "int2" | "int4" | "int8" | "smallint" | "real" | "double precision" | "float4" | "float8" | "decimal" | "numeric" | "serial" | "bigserial" | "bool" | "varchar" | "char" | "text" | "datetime" | "time" | "timetz" | "timestamp" | "timestamptz" | "bytea" | "varbinary" | "blob" | "int4range" | "numrange" | "tsrange" | "tstzrange" | "daterange" | "int4multirange" | "int8multirange" | "nummultirange" | "tsmultirange" | "tstzmultirange" | "datemultirange" | "json" | "jsonb">, z.ZodTemplateLiteral<`binary(${number})` | `varchar(${number})` | `char(${number})` | `datetime(${number})` | `time(${number})` | `timetz(${number})` | `timestamp(${number})` | `timestamptz(${number})` | `varbinary(${number})`>, z.ZodTemplateLiteral<`decimal(${number},${number})` | `decimal(${number}, ${number})` | `numeric(${number},${number})` | `numeric(${number}, ${number})`>]>, z.ZodTemplateLiteral<"bigint[]" | "boolean[]" | "uuid[]" | "date[]" | "binary[]" | "integer[]" | "int2[]" | "int4[]" | "int8[]" | "smallint[]" | "real[]" | "double precision[]" | "float4[]" | "float8[]" | "decimal[]" | "numeric[]" | "serial[]" | "bigserial[]" | "bool[]" | "varchar[]" | "char[]" | "text[]" | "datetime[]" | "time[]" | "timetz[]" | "timestamp[]" | "timestamptz[]" | "bytea[]" | "varbinary[]" | "blob[]" | "int4range[]" | "numrange[]" | "tsrange[]" | "tstzrange[]" | "daterange[]" | "int4multirange[]" | "int8multirange[]" | "nummultirange[]" | "tsmultirange[]" | "tstzmultirange[]" | "datemultirange[]" | "json[]" | "jsonb[]" | `binary(${number})[]` | `varchar(${number})[]` | `char(${number})[]` | `datetime(${number})[]` | `time(${number})[]` | `timetz(${number})[]` | `timestamp(${number})[]` | `timestamptz(${number})[]` | `varbinary(${number})[]` | `decimal(${number},${number})[]` | `decimal(${number}, ${number})[]` | `numeric(${number},${number})[]` | `numeric(${number}, ${number})[]` | `bigint[${number}]` | `boolean[${number}]` | `uuid[${number}]` | `date[${number}]` | `binary[${number}]` | `integer[${number}]` | `int2[${number}]` | `int4[${number}]` | `int8[${number}]` | `smallint[${number}]` | `real[${number}]` | `double precision[${number}]` | `float4[${number}]` | `float8[${number}]` | `decimal[${number}]` | `numeric[${number}]` | `serial[${number}]` | `bigserial[${number}]` | `bool[${number}]` | `varchar[${number}]` | `char[${number}]` | `text[${number}]` | `datetime[${number}]` | `time[${number}]` | `timetz[${number}]` | `timestamp[${number}]` | `timestamptz[${number}]` | `bytea[${number}]` | `varbinary[${number}]` | `blob[${number}]` | `int4range[${number}]` | `numrange[${number}]` | `tsrange[${number}]` | `tstzrange[${number}]` | `daterange[${number}]` | `int4multirange[${number}]` | `int8multirange[${number}]` | `nummultirange[${number}]` | `tsmultirange[${number}]` | `tstzmultirange[${number}]` | `datemultirange[${number}]` | `json[${number}]` | `jsonb[${number}]` | `binary(${number})[${number}]` | `varchar(${number})[${number}]` | `char(${number})[${number}]` | `datetime(${number})[${number}]` | `time(${number})[${number}]` | `timetz(${number})[${number}]` | `timestamp(${number})[${number}]` | `timestamptz(${number})[${number}]` | `varbinary(${number})[${number}]` | `decimal(${number},${number})[${number}]` | `decimal(${number}, ${number})[${number}]` | `numeric(${number},${number})[${number}]` | `numeric(${number}, ${number})[${number}]`>]>;
|
|
60
|
+
required: z.ZodDefault<z.ZodBoolean>;
|
|
61
|
+
unique: z.ZodDefault<z.ZodBoolean>;
|
|
62
|
+
primary: z.ZodDefault<z.ZodBoolean>;
|
|
63
|
+
references: z.ZodOptional<z.ZodString>;
|
|
64
|
+
onDelete: z.ZodOptional<z.ZodEnum<{
|
|
65
|
+
cascade: "cascade";
|
|
66
|
+
restrict: "restrict";
|
|
67
|
+
"no action": "no action";
|
|
68
|
+
"set null": "set null";
|
|
69
|
+
"set default": "set default";
|
|
70
|
+
}>>;
|
|
71
|
+
default: z.ZodOptional<z.ZodAny>;
|
|
72
|
+
check: z.ZodOptional<z.ZodString>;
|
|
73
|
+
}, z.core.$strict>>;
|
|
74
|
+
constraints: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
75
|
+
type: z.ZodLiteral<"primary_key">;
|
|
76
|
+
on: z.ZodArray<z.ZodString>;
|
|
77
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
78
|
+
type: z.ZodLiteral<"foreign_key">;
|
|
79
|
+
on: z.ZodArray<z.ZodString>;
|
|
80
|
+
target: z.ZodString;
|
|
81
|
+
references: z.ZodArray<z.ZodString>;
|
|
82
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
83
|
+
type: z.ZodLiteral<"unique">;
|
|
84
|
+
on: z.ZodArray<z.ZodString>;
|
|
85
|
+
nulls_not_distinct: z.ZodOptional<z.ZodBoolean>;
|
|
86
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
87
|
+
type: z.ZodLiteral<"check">;
|
|
88
|
+
check: z.ZodString;
|
|
89
|
+
}, z.core.$strict>], "type">>>>;
|
|
90
|
+
}, z.core.$strict>>>>;
|
|
91
|
+
drop_tables: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString>>>;
|
|
92
|
+
alter_tables: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
93
|
+
add_columns: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
94
|
+
type: z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodLiteral<"bigint" | "boolean" | "uuid" | "date" | "binary" | "integer" | "int2" | "int4" | "int8" | "smallint" | "real" | "double precision" | "float4" | "float8" | "decimal" | "numeric" | "serial" | "bigserial" | "bool" | "varchar" | "char" | "text" | "datetime" | "time" | "timetz" | "timestamp" | "timestamptz" | "bytea" | "varbinary" | "blob" | "int4range" | "numrange" | "tsrange" | "tstzrange" | "daterange" | "int4multirange" | "int8multirange" | "nummultirange" | "tsmultirange" | "tstzmultirange" | "datemultirange" | "json" | "jsonb">, z.ZodTemplateLiteral<`binary(${number})` | `varchar(${number})` | `char(${number})` | `datetime(${number})` | `time(${number})` | `timetz(${number})` | `timestamp(${number})` | `timestamptz(${number})` | `varbinary(${number})`>, z.ZodTemplateLiteral<`decimal(${number},${number})` | `decimal(${number}, ${number})` | `numeric(${number},${number})` | `numeric(${number}, ${number})`>]>, z.ZodTemplateLiteral<"bigint[]" | "boolean[]" | "uuid[]" | "date[]" | "binary[]" | "integer[]" | "int2[]" | "int4[]" | "int8[]" | "smallint[]" | "real[]" | "double precision[]" | "float4[]" | "float8[]" | "decimal[]" | "numeric[]" | "serial[]" | "bigserial[]" | "bool[]" | "varchar[]" | "char[]" | "text[]" | "datetime[]" | "time[]" | "timetz[]" | "timestamp[]" | "timestamptz[]" | "bytea[]" | "varbinary[]" | "blob[]" | "int4range[]" | "numrange[]" | "tsrange[]" | "tstzrange[]" | "daterange[]" | "int4multirange[]" | "int8multirange[]" | "nummultirange[]" | "tsmultirange[]" | "tstzmultirange[]" | "datemultirange[]" | "json[]" | "jsonb[]" | `binary(${number})[]` | `varchar(${number})[]` | `char(${number})[]` | `datetime(${number})[]` | `time(${number})[]` | `timetz(${number})[]` | `timestamp(${number})[]` | `timestamptz(${number})[]` | `varbinary(${number})[]` | `decimal(${number},${number})[]` | `decimal(${number}, ${number})[]` | `numeric(${number},${number})[]` | `numeric(${number}, ${number})[]` | `bigint[${number}]` | `boolean[${number}]` | `uuid[${number}]` | `date[${number}]` | `binary[${number}]` | `integer[${number}]` | `int2[${number}]` | `int4[${number}]` | `int8[${number}]` | `smallint[${number}]` | `real[${number}]` | `double precision[${number}]` | `float4[${number}]` | `float8[${number}]` | `decimal[${number}]` | `numeric[${number}]` | `serial[${number}]` | `bigserial[${number}]` | `bool[${number}]` | `varchar[${number}]` | `char[${number}]` | `text[${number}]` | `datetime[${number}]` | `time[${number}]` | `timetz[${number}]` | `timestamp[${number}]` | `timestamptz[${number}]` | `bytea[${number}]` | `varbinary[${number}]` | `blob[${number}]` | `int4range[${number}]` | `numrange[${number}]` | `tsrange[${number}]` | `tstzrange[${number}]` | `daterange[${number}]` | `int4multirange[${number}]` | `int8multirange[${number}]` | `nummultirange[${number}]` | `tsmultirange[${number}]` | `tstzmultirange[${number}]` | `datemultirange[${number}]` | `json[${number}]` | `jsonb[${number}]` | `binary(${number})[${number}]` | `varchar(${number})[${number}]` | `char(${number})[${number}]` | `datetime(${number})[${number}]` | `time(${number})[${number}]` | `timetz(${number})[${number}]` | `timestamp(${number})[${number}]` | `timestamptz(${number})[${number}]` | `varbinary(${number})[${number}]` | `decimal(${number},${number})[${number}]` | `decimal(${number}, ${number})[${number}]` | `numeric(${number},${number})[${number}]` | `numeric(${number}, ${number})[${number}]`>]>;
|
|
95
|
+
required: z.ZodDefault<z.ZodBoolean>;
|
|
96
|
+
unique: z.ZodDefault<z.ZodBoolean>;
|
|
97
|
+
primary: z.ZodDefault<z.ZodBoolean>;
|
|
98
|
+
references: z.ZodOptional<z.ZodString>;
|
|
99
|
+
onDelete: z.ZodOptional<z.ZodEnum<{
|
|
100
|
+
cascade: "cascade";
|
|
101
|
+
restrict: "restrict";
|
|
102
|
+
"no action": "no action";
|
|
103
|
+
"set null": "set null";
|
|
104
|
+
"set default": "set default";
|
|
105
|
+
}>>;
|
|
106
|
+
default: z.ZodOptional<z.ZodAny>;
|
|
107
|
+
check: z.ZodOptional<z.ZodString>;
|
|
108
|
+
}, z.core.$strict>>>>;
|
|
109
|
+
drop_columns: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString>>>;
|
|
110
|
+
alter_columns: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
111
|
+
type: z.ZodOptional<z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodLiteral<"bigint" | "boolean" | "uuid" | "date" | "binary" | "integer" | "int2" | "int4" | "int8" | "smallint" | "real" | "double precision" | "float4" | "float8" | "decimal" | "numeric" | "serial" | "bigserial" | "bool" | "varchar" | "char" | "text" | "datetime" | "time" | "timetz" | "timestamp" | "timestamptz" | "bytea" | "varbinary" | "blob" | "int4range" | "numrange" | "tsrange" | "tstzrange" | "daterange" | "int4multirange" | "int8multirange" | "nummultirange" | "tsmultirange" | "tstzmultirange" | "datemultirange" | "json" | "jsonb">, z.ZodTemplateLiteral<`binary(${number})` | `varchar(${number})` | `char(${number})` | `datetime(${number})` | `time(${number})` | `timetz(${number})` | `timestamp(${number})` | `timestamptz(${number})` | `varbinary(${number})`>, z.ZodTemplateLiteral<`decimal(${number},${number})` | `decimal(${number}, ${number})` | `numeric(${number},${number})` | `numeric(${number}, ${number})`>]>, z.ZodTemplateLiteral<"bigint[]" | "boolean[]" | "uuid[]" | "date[]" | "binary[]" | "integer[]" | "int2[]" | "int4[]" | "int8[]" | "smallint[]" | "real[]" | "double precision[]" | "float4[]" | "float8[]" | "decimal[]" | "numeric[]" | "serial[]" | "bigserial[]" | "bool[]" | "varchar[]" | "char[]" | "text[]" | "datetime[]" | "time[]" | "timetz[]" | "timestamp[]" | "timestamptz[]" | "bytea[]" | "varbinary[]" | "blob[]" | "int4range[]" | "numrange[]" | "tsrange[]" | "tstzrange[]" | "daterange[]" | "int4multirange[]" | "int8multirange[]" | "nummultirange[]" | "tsmultirange[]" | "tstzmultirange[]" | "datemultirange[]" | "json[]" | "jsonb[]" | `binary(${number})[]` | `varchar(${number})[]` | `char(${number})[]` | `datetime(${number})[]` | `time(${number})[]` | `timetz(${number})[]` | `timestamp(${number})[]` | `timestamptz(${number})[]` | `varbinary(${number})[]` | `decimal(${number},${number})[]` | `decimal(${number}, ${number})[]` | `numeric(${number},${number})[]` | `numeric(${number}, ${number})[]` | `bigint[${number}]` | `boolean[${number}]` | `uuid[${number}]` | `date[${number}]` | `binary[${number}]` | `integer[${number}]` | `int2[${number}]` | `int4[${number}]` | `int8[${number}]` | `smallint[${number}]` | `real[${number}]` | `double precision[${number}]` | `float4[${number}]` | `float8[${number}]` | `decimal[${number}]` | `numeric[${number}]` | `serial[${number}]` | `bigserial[${number}]` | `bool[${number}]` | `varchar[${number}]` | `char[${number}]` | `text[${number}]` | `datetime[${number}]` | `time[${number}]` | `timetz[${number}]` | `timestamp[${number}]` | `timestamptz[${number}]` | `bytea[${number}]` | `varbinary[${number}]` | `blob[${number}]` | `int4range[${number}]` | `numrange[${number}]` | `tsrange[${number}]` | `tstzrange[${number}]` | `daterange[${number}]` | `int4multirange[${number}]` | `int8multirange[${number}]` | `nummultirange[${number}]` | `tsmultirange[${number}]` | `tstzmultirange[${number}]` | `datemultirange[${number}]` | `json[${number}]` | `jsonb[${number}]` | `binary(${number})[${number}]` | `varchar(${number})[${number}]` | `char(${number})[${number}]` | `datetime(${number})[${number}]` | `time(${number})[${number}]` | `timetz(${number})[${number}]` | `timestamp(${number})[${number}]` | `timestamptz(${number})[${number}]` | `varbinary(${number})[${number}]` | `decimal(${number},${number})[${number}]` | `decimal(${number}, ${number})[${number}]` | `numeric(${number},${number})[${number}]` | `numeric(${number}, ${number})[${number}]`>]>>;
|
|
112
|
+
default: z.ZodOptional<z.ZodString>;
|
|
113
|
+
ops: z.ZodOptional<z.ZodArray<z.ZodLiteral<"drop_default" | "set_required" | "drop_required">>>;
|
|
114
|
+
}, z.core.$strict>>>>;
|
|
115
|
+
add_constraints: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
116
|
+
type: z.ZodLiteral<"primary_key">;
|
|
117
|
+
on: z.ZodArray<z.ZodString>;
|
|
118
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
119
|
+
type: z.ZodLiteral<"foreign_key">;
|
|
120
|
+
on: z.ZodArray<z.ZodString>;
|
|
121
|
+
target: z.ZodString;
|
|
122
|
+
references: z.ZodArray<z.ZodString>;
|
|
123
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
124
|
+
type: z.ZodLiteral<"unique">;
|
|
125
|
+
on: z.ZodArray<z.ZodString>;
|
|
126
|
+
nulls_not_distinct: z.ZodOptional<z.ZodBoolean>;
|
|
127
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
128
|
+
type: z.ZodLiteral<"check">;
|
|
129
|
+
check: z.ZodString;
|
|
130
|
+
}, z.core.$strict>], "type">>>>;
|
|
131
|
+
drop_constraints: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString>>>;
|
|
132
|
+
}, z.core.$strict>>>>;
|
|
133
|
+
add_indexes: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
134
|
+
on: z.ZodString;
|
|
135
|
+
columns: z.ZodArray<z.ZodString>;
|
|
136
|
+
}, z.core.$strict>>>>;
|
|
137
|
+
drop_indexes: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString>>>;
|
|
138
|
+
}, z.core.$strict>;
|
|
139
|
+
export interface Version extends z.infer<typeof Version> {
|
|
140
|
+
}
|
|
141
|
+
export declare function applyToSchema(schema: SchemaDecl, delta: Version): void;
|
|
142
|
+
export declare function validate(delta: Version): void;
|
|
143
|
+
export declare function compute(from: SchemaDecl, to: SchemaDecl): Version;
|
|
144
|
+
export declare function collapse(deltas: Version[]): Version;
|
|
145
|
+
export declare function isEmpty(delta: Version): boolean;
|
|
146
|
+
export declare function display(delta: Version): Generator<string>;
|
|
147
|
+
export declare function apply(delta: Version, forceAbort?: boolean): Promise<void>;
|