effect-qb 4.0.0-beta.66 → 4.0.0-beta.98
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 +5 -2
- package/dist/index.js +9376 -0
- package/dist/mysql.js +3921 -2573
- package/dist/postgres/metadata.js +2491 -1373
- package/dist/postgres.js +5453 -5155
- package/dist/sqlite.js +6895 -5529
- package/dist/standard.js +9330 -0
- package/package.json +9 -2
- package/src/casing.ts +71 -0
- package/src/index.ts +2 -0
- package/src/internal/casing.ts +89 -0
- package/src/internal/coercion/rules.ts +13 -1
- package/src/internal/column-state.ts +21 -15
- package/src/internal/column.ts +44 -7
- package/src/internal/datatypes/define.ts +7 -1
- package/src/internal/datatypes/enrich.ts +23 -0
- package/src/internal/datatypes/lookup.ts +81 -25
- package/src/internal/datatypes/matrix.ts +903 -0
- package/src/internal/datatypes/shape.ts +2 -0
- package/src/internal/derived-table.ts +4 -36
- package/src/{mysql/internal/sql-expression-renderer.ts → internal/dialect-renderers/mysql.ts} +552 -361
- package/src/{postgres/internal/sql-expression-renderer.ts → internal/dialect-renderers/postgres.ts} +657 -400
- package/src/{sqlite/internal/sql-expression-renderer.ts → internal/dialect-renderers/sqlite.ts} +505 -347
- package/src/internal/dialect.ts +35 -0
- package/src/internal/dsl-mutation-runtime.ts +12 -162
- package/src/internal/dsl-plan-runtime.ts +10 -138
- package/src/internal/dsl-query-runtime.ts +5 -79
- package/src/internal/dsl-transaction-ddl-runtime.ts +41 -65
- package/src/internal/executor.ts +14 -16
- package/src/internal/grouping-key.ts +87 -20
- package/src/internal/implication-runtime.ts +1 -1
- package/src/internal/json/path-access.ts +351 -0
- package/src/internal/predicate/runtime.ts +3 -0
- package/src/internal/query.d.ts +38 -11
- package/src/internal/query.ts +64 -25
- package/src/internal/renderer.ts +26 -14
- package/src/internal/runtime/normalize.ts +12 -5
- package/src/internal/scalar.ts +7 -1
- package/src/internal/schema-derivation.d.ts +7 -7
- package/src/internal/schema-derivation.ts +9 -9
- package/src/internal/schema-expression.ts +2 -2
- package/src/internal/sql-expression-renderer.ts +19 -0
- package/src/internal/standard-dsl.ts +6978 -0
- package/src/internal/table-options.ts +126 -66
- package/src/internal/table.ts +652 -219
- package/src/mysql/column-extension.ts +3 -0
- package/src/mysql/column.ts +8 -9
- package/src/mysql/datatypes/index.ts +4 -2
- package/src/mysql/datatypes/spec.ts +6 -176
- package/src/mysql/errors/normalize.ts +0 -1
- package/src/mysql/executor.ts +7 -7
- package/src/mysql/internal/dialect.ts +9 -4
- package/src/mysql/internal/dsl.ts +312 -154
- package/src/mysql/internal/renderer.ts +6 -2
- package/src/mysql/json.ts +7 -2
- package/src/mysql/query-extension.ts +16 -0
- package/src/mysql/renderer.ts +37 -3
- package/src/mysql/type.ts +60 -0
- package/src/mysql.ts +7 -13
- package/src/postgres/check.ts +1 -0
- package/src/postgres/column-extension.ts +28 -0
- package/src/postgres/column.ts +2 -8
- package/src/postgres/datatypes/index.d.ts +2 -1
- package/src/postgres/datatypes/index.ts +4 -2
- package/src/postgres/datatypes/spec.ts +6 -260
- package/src/postgres/errors/normalize.ts +0 -1
- package/src/postgres/executor.ts +7 -7
- package/src/postgres/foreign-key.ts +24 -0
- package/src/postgres/function/core.ts +1 -3
- package/src/postgres/function/index.ts +1 -17
- package/src/postgres/index.ts +1 -0
- package/src/postgres/internal/dialect.ts +9 -4
- package/src/postgres/internal/dsl.ts +306 -163
- package/src/postgres/internal/renderer.ts +6 -2
- package/src/postgres/internal/schema-ddl.ts +22 -10
- package/src/postgres/internal/schema-model.ts +238 -7
- package/src/postgres/json-extension.ts +7 -0
- package/src/postgres/json.ts +762 -173
- package/src/postgres/jsonb.ts +37 -0
- package/src/postgres/primary-key.ts +24 -0
- package/src/postgres/query-extension.ts +2 -0
- package/src/postgres/renderer.ts +37 -3
- package/src/postgres/schema-management.ts +12 -11
- package/src/postgres/schema.ts +106 -15
- package/src/postgres/table.ts +205 -530
- package/src/postgres/type.ts +93 -10
- package/src/postgres/unique.ts +32 -0
- package/src/postgres.ts +20 -16
- package/src/sqlite/column-extension.ts +3 -0
- package/src/sqlite/column.ts +8 -9
- package/src/sqlite/datatypes/index.ts +4 -2
- package/src/sqlite/datatypes/spec.ts +6 -94
- package/src/sqlite/errors/normalize.ts +0 -1
- package/src/sqlite/executor.ts +7 -7
- package/src/sqlite/internal/dialect.ts +9 -4
- package/src/sqlite/internal/dsl.ts +301 -154
- package/src/sqlite/internal/renderer.ts +6 -2
- package/src/sqlite/json.ts +8 -2
- package/src/sqlite/query-extension.ts +2 -0
- package/src/sqlite/renderer.ts +37 -3
- package/src/sqlite/type.ts +40 -0
- package/src/sqlite.ts +7 -13
- package/src/standard/cast.ts +113 -0
- package/src/standard/check.ts +17 -0
- package/src/standard/column.ts +163 -0
- package/src/standard/datatypes/index.ts +83 -0
- package/src/standard/datatypes/spec.ts +12 -0
- package/src/standard/dialect.ts +40 -0
- package/src/standard/foreign-key.ts +37 -0
- package/src/standard/function/aggregate.ts +2 -0
- package/src/standard/function/core.ts +2 -0
- package/src/standard/function/index.ts +18 -0
- package/src/standard/function/string.ts +2 -0
- package/src/standard/function/temporal.ts +78 -0
- package/src/standard/function/window.ts +2 -0
- package/src/standard/index.ts +17 -0
- package/src/standard/internal/renderer.ts +45 -0
- package/src/standard/json.ts +883 -0
- package/src/standard/primary-key.ts +17 -0
- package/src/standard/query.ts +152 -0
- package/src/standard/renderer.ts +49 -0
- package/src/standard/table.ts +151 -0
- package/src/standard/unique.ts +17 -0
- package/src/standard.ts +32 -0
- package/src/internal/aggregation-validation.ts +0 -57
- package/src/internal/table.d.ts +0 -180
- package/src/mysql/table.ts +0 -186
- package/src/postgres/cast.ts +0 -45
- package/src/sqlite/table.ts +0 -175
package/src/mysql/table.ts
DELETED
|
@@ -1,186 +0,0 @@
|
|
|
1
|
-
import type * as Expression from "../internal/scalar.js"
|
|
2
|
-
import { ColumnTypeId, type AnyColumnDefinition } from "../internal/column-state.js"
|
|
3
|
-
import * as BaseTable from "../internal/table.js"
|
|
4
|
-
|
|
5
|
-
type Dialect = "mysql"
|
|
6
|
-
|
|
7
|
-
type DialectColumn = AnyColumnDefinition & {
|
|
8
|
-
readonly [ColumnTypeId]: {
|
|
9
|
-
readonly dbType: Expression.DbType.Any & { readonly dialect: Dialect }
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
type DialectFieldMap = Record<string, DialectColumn>
|
|
14
|
-
|
|
15
|
-
type InlinePrimaryKeyKeys<Fields extends DialectFieldMap> = Extract<{
|
|
16
|
-
[K in keyof Fields]: Fields[K]["metadata"]["primaryKey"] extends true ? K : never
|
|
17
|
-
}[keyof Fields], string>
|
|
18
|
-
|
|
19
|
-
export type TableDefinition<
|
|
20
|
-
Name extends string,
|
|
21
|
-
Fields extends DialectFieldMap,
|
|
22
|
-
PrimaryKeyColumns extends keyof Fields & string = InlinePrimaryKeyKeys<Fields>,
|
|
23
|
-
Kind extends "schema" | "alias" = "schema",
|
|
24
|
-
SchemaName extends string | undefined = undefined
|
|
25
|
-
> = BaseTable.TableDefinition<Name, Fields, PrimaryKeyColumns, Kind, SchemaName>
|
|
26
|
-
|
|
27
|
-
export type TableClassStatic<
|
|
28
|
-
Name extends string,
|
|
29
|
-
Fields extends DialectFieldMap,
|
|
30
|
-
PrimaryKeyColumns extends keyof Fields & string = InlinePrimaryKeyKeys<Fields>,
|
|
31
|
-
SchemaName extends string | undefined = undefined
|
|
32
|
-
> = BaseTable.TableClassStatic<Name, Fields, PrimaryKeyColumns, SchemaName>
|
|
33
|
-
|
|
34
|
-
export type AnyTable = BaseTable.AnyTable<Dialect>
|
|
35
|
-
|
|
36
|
-
type FieldsOfTable<Table extends BaseTable.AnyTable> = Table[typeof BaseTable.TypeId]["fields"] extends infer Fields extends DialectFieldMap
|
|
37
|
-
? Fields
|
|
38
|
-
: never
|
|
39
|
-
|
|
40
|
-
type ColumnNamesOfTable<Table extends BaseTable.AnyTable> = Extract<keyof FieldsOfTable<Table>, string>
|
|
41
|
-
|
|
42
|
-
type PrimaryKeyOfTable<Table extends BaseTable.AnyTable> = Table[typeof BaseTable.TypeId]["primaryKey"][number]
|
|
43
|
-
|
|
44
|
-
type SchemaNameOfTable<Table extends BaseTable.AnyTable> = Table[typeof BaseTable.TypeId]["schemaName"]
|
|
45
|
-
|
|
46
|
-
type ApplySchemaTableOptions<
|
|
47
|
-
Name extends string,
|
|
48
|
-
Fields extends DialectFieldMap,
|
|
49
|
-
PrimaryKeyColumns extends keyof Fields & string,
|
|
50
|
-
SchemaName extends string,
|
|
51
|
-
Options extends BaseTable.DeclaredTableOptions
|
|
52
|
-
> = BaseTable.ApplyDeclaredOptions<
|
|
53
|
-
BaseTable.TableDefinition<Name, Fields, PrimaryKeyColumns, "schema", SchemaName>,
|
|
54
|
-
Options
|
|
55
|
-
> extends BaseTable.TableDefinition<any, any, infer AppliedPrimaryKeyColumns extends keyof Fields & string, "schema", any>
|
|
56
|
-
? TableDefinition<Name, Fields, AppliedPrimaryKeyColumns, "schema", SchemaName>
|
|
57
|
-
: TableDefinition<Name, Fields, PrimaryKeyColumns, "schema", SchemaName>
|
|
58
|
-
|
|
59
|
-
export type TableSchemaNamespace<SchemaName extends string> = {
|
|
60
|
-
readonly schemaName: SchemaName
|
|
61
|
-
readonly table: <
|
|
62
|
-
Name extends string,
|
|
63
|
-
Fields extends DialectFieldMap,
|
|
64
|
-
const Options extends BaseTable.DeclaredTableOptions,
|
|
65
|
-
PrimaryKeyColumns extends keyof Fields & string = InlinePrimaryKeyKeys<Fields>
|
|
66
|
-
>(
|
|
67
|
-
name: Name,
|
|
68
|
-
fields: Fields,
|
|
69
|
-
...options: Options & BaseTable.ValidateDeclaredOptions<BaseTable.TableDefinition<Name, Fields, PrimaryKeyColumns, "schema", SchemaName>, Options>
|
|
70
|
-
) => ApplySchemaTableOptions<Name, Fields, PrimaryKeyColumns, SchemaName, Options>
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
export type TableOption = BaseTable.TableOption
|
|
74
|
-
|
|
75
|
-
export const TypeId = BaseTable.TypeId
|
|
76
|
-
export const OptionsSymbol = BaseTable.OptionsSymbol
|
|
77
|
-
export const options = BaseTable.options
|
|
78
|
-
|
|
79
|
-
export const make = <
|
|
80
|
-
Name extends string,
|
|
81
|
-
Fields extends DialectFieldMap,
|
|
82
|
-
SchemaName extends string | undefined = undefined
|
|
83
|
-
>(
|
|
84
|
-
name: Name,
|
|
85
|
-
fields: Fields,
|
|
86
|
-
schemaName: SchemaName = undefined as SchemaName
|
|
87
|
-
): TableDefinition<Name, Fields> =>
|
|
88
|
-
BaseTable.make(name, fields, schemaName) as TableDefinition<Name, Fields>
|
|
89
|
-
|
|
90
|
-
export const schema = <SchemaName extends string>(
|
|
91
|
-
schemaName: SchemaName
|
|
92
|
-
): TableSchemaNamespace<SchemaName> => {
|
|
93
|
-
const table = <
|
|
94
|
-
Name extends string,
|
|
95
|
-
Fields extends DialectFieldMap,
|
|
96
|
-
const Options extends BaseTable.DeclaredTableOptions,
|
|
97
|
-
PrimaryKeyColumns extends keyof Fields & string = InlinePrimaryKeyKeys<Fields>
|
|
98
|
-
>(
|
|
99
|
-
name: Name,
|
|
100
|
-
fields: Fields,
|
|
101
|
-
...declaredOptions: Options & BaseTable.ValidateDeclaredOptions<BaseTable.TableDefinition<Name, Fields, PrimaryKeyColumns, "schema", SchemaName>, Options>
|
|
102
|
-
) =>
|
|
103
|
-
(BaseTable.schema(schemaName).table as (
|
|
104
|
-
name: Name,
|
|
105
|
-
fields: Fields,
|
|
106
|
-
...options: BaseTable.DeclaredTableOptions
|
|
107
|
-
) => BaseTable.TableDefinition<any, any, any, "schema", any>)(
|
|
108
|
-
name,
|
|
109
|
-
fields,
|
|
110
|
-
...declaredOptions
|
|
111
|
-
) as ApplySchemaTableOptions<Name, Fields, PrimaryKeyColumns, SchemaName, Options>
|
|
112
|
-
return {
|
|
113
|
-
schemaName,
|
|
114
|
-
table
|
|
115
|
-
} as unknown as TableSchemaNamespace<SchemaName>
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
export const alias = <
|
|
119
|
-
Table extends AnyTable,
|
|
120
|
-
AliasName extends string
|
|
121
|
-
>(
|
|
122
|
-
table: Table,
|
|
123
|
-
aliasName: AliasName
|
|
124
|
-
): TableDefinition<
|
|
125
|
-
AliasName,
|
|
126
|
-
FieldsOfTable<Table>,
|
|
127
|
-
PrimaryKeyOfTable<Table>,
|
|
128
|
-
"alias",
|
|
129
|
-
SchemaNameOfTable<Table>
|
|
130
|
-
> =>
|
|
131
|
-
BaseTable.alias(table as any, aliasName) as TableDefinition<
|
|
132
|
-
AliasName,
|
|
133
|
-
FieldsOfTable<Table>,
|
|
134
|
-
PrimaryKeyOfTable<Table>,
|
|
135
|
-
"alias",
|
|
136
|
-
SchemaNameOfTable<Table>
|
|
137
|
-
>
|
|
138
|
-
|
|
139
|
-
export const Class = <Self = never, SchemaName extends string | undefined = undefined>(
|
|
140
|
-
name: string,
|
|
141
|
-
schemaName: SchemaName = undefined as SchemaName
|
|
142
|
-
) => {
|
|
143
|
-
const base = BaseTable.Class<Self, SchemaName>(name, schemaName)
|
|
144
|
-
return base as unknown as <
|
|
145
|
-
Fields extends DialectFieldMap
|
|
146
|
-
>(fields: Fields) => [Self] extends [never]
|
|
147
|
-
? BaseTable.MissingSelfGeneric
|
|
148
|
-
: TableClassStatic<typeof name, Fields, InlinePrimaryKeyKeys<Fields>, SchemaName>
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
export const primaryKey = BaseTable.primaryKey
|
|
152
|
-
export const unique = BaseTable.unique
|
|
153
|
-
export const index = BaseTable.index
|
|
154
|
-
export const foreignKey = <
|
|
155
|
-
LocalColumns extends string | readonly string[],
|
|
156
|
-
TargetTable extends AnyTable,
|
|
157
|
-
TargetColumns extends string | readonly string[]
|
|
158
|
-
>(
|
|
159
|
-
columns: LocalColumns & BaseTable.NonEmptyColumnInput<LocalColumns>,
|
|
160
|
-
target: () => TargetTable,
|
|
161
|
-
referencedColumns: TargetColumns & BaseTable.NonEmptyColumnInput<TargetColumns> & BaseTable.MatchingColumnArityInput<LocalColumns, TargetColumns>
|
|
162
|
-
): BaseTable.TableOption<{
|
|
163
|
-
readonly kind: "foreignKey"
|
|
164
|
-
readonly columns: BaseTable.NormalizeColumns<LocalColumns>
|
|
165
|
-
readonly references: () => {
|
|
166
|
-
readonly tableName: string
|
|
167
|
-
readonly schemaName?: string
|
|
168
|
-
readonly columns: BaseTable.NormalizeColumns<TargetColumns>
|
|
169
|
-
readonly knownColumns: readonly ColumnNamesOfTable<TargetTable>[]
|
|
170
|
-
}
|
|
171
|
-
}> =>
|
|
172
|
-
BaseTable.foreignKey<LocalColumns, TargetTable, TargetColumns>(
|
|
173
|
-
columns as LocalColumns & BaseTable.NonEmptyColumnInput<LocalColumns>,
|
|
174
|
-
target,
|
|
175
|
-
referencedColumns as TargetColumns & BaseTable.NonEmptyColumnInput<TargetColumns> & BaseTable.MatchingColumnArityInput<LocalColumns, TargetColumns>
|
|
176
|
-
)
|
|
177
|
-
|
|
178
|
-
export const check = BaseTable.check
|
|
179
|
-
|
|
180
|
-
export const selectSchema = BaseTable.selectSchema
|
|
181
|
-
export const insertSchema = BaseTable.insertSchema
|
|
182
|
-
export const updateSchema = BaseTable.updateSchema
|
|
183
|
-
|
|
184
|
-
export type SelectOf<Table extends AnyTable> = BaseTable.SelectOf<Table>
|
|
185
|
-
export type InsertOf<Table extends AnyTable> = BaseTable.InsertOf<Table>
|
|
186
|
-
export type UpdateOf<Table extends AnyTable> = BaseTable.UpdateOf<Table>
|
package/src/postgres/cast.ts
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import type * as Expression from "../internal/scalar.js"
|
|
2
|
-
import type * as ExpressionAst from "../internal/expression-ast.js"
|
|
3
|
-
import type { ExpressionInput } from "../internal/query.js"
|
|
4
|
-
import { cast as postgresCast } from "./internal/dsl.js"
|
|
5
|
-
|
|
6
|
-
type CastInput = ExpressionInput
|
|
7
|
-
type CastTarget = Expression.DbType.Any
|
|
8
|
-
type CastNullability<Value extends CastInput> = Value extends Expression.Any
|
|
9
|
-
? Expression.NullabilityOf<Value>
|
|
10
|
-
: Value extends null ? "always" : "never"
|
|
11
|
-
type CastKind<Value extends CastInput> = Value extends Expression.Any
|
|
12
|
-
? Expression.KindOf<Value>
|
|
13
|
-
: "scalar"
|
|
14
|
-
type CastDependencies<Value extends CastInput> = Value extends Expression.Any
|
|
15
|
-
? Expression.DependenciesOf<Value>
|
|
16
|
-
: never
|
|
17
|
-
type CastExpression<
|
|
18
|
-
Value extends CastInput,
|
|
19
|
-
Target extends CastTarget
|
|
20
|
-
> = Expression.Scalar<
|
|
21
|
-
Expression.RuntimeOfDbType<Target>,
|
|
22
|
-
Target,
|
|
23
|
-
CastNullability<Value>,
|
|
24
|
-
Target["dialect"],
|
|
25
|
-
CastKind<Value>,
|
|
26
|
-
CastDependencies<Value>
|
|
27
|
-
> & {
|
|
28
|
-
readonly [ExpressionAst.TypeId]: ExpressionAst.CastNode<Value extends Expression.Any ? Value : Expression.Any, Target>
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
const to: {
|
|
32
|
-
<Value extends CastInput, Target extends CastTarget>(
|
|
33
|
-
value: Value,
|
|
34
|
-
target: Target
|
|
35
|
-
): CastExpression<Value, Target>
|
|
36
|
-
<Target extends CastTarget>(
|
|
37
|
-
target: Target
|
|
38
|
-
): <Value extends CastInput>(value: Value) => CastExpression<Value, Target>
|
|
39
|
-
} = ((...args: [CastInput, CastTarget] | [CastTarget]) =>
|
|
40
|
-
args.length === 1
|
|
41
|
-
? ((value: CastInput) => postgresCast(value as never, args[0] as never))
|
|
42
|
-
: postgresCast(args[0] as never, args[1] as never)) as unknown as typeof to
|
|
43
|
-
|
|
44
|
-
/** Postgres cast helpers. */
|
|
45
|
-
export const cast = { to }
|
package/src/sqlite/table.ts
DELETED
|
@@ -1,175 +0,0 @@
|
|
|
1
|
-
import type * as Expression from "../internal/scalar.js"
|
|
2
|
-
import { ColumnTypeId, type AnyColumnDefinition } from "../internal/column-state.js"
|
|
3
|
-
import * as BaseTable from "../internal/table.js"
|
|
4
|
-
|
|
5
|
-
type Dialect = "sqlite"
|
|
6
|
-
|
|
7
|
-
type DialectColumn = AnyColumnDefinition & {
|
|
8
|
-
readonly [ColumnTypeId]: {
|
|
9
|
-
readonly dbType: Expression.DbType.Any & { readonly dialect: Dialect }
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
type DialectFieldMap = Record<string, DialectColumn>
|
|
14
|
-
|
|
15
|
-
type InlinePrimaryKeyKeys<Fields extends DialectFieldMap> = Extract<{
|
|
16
|
-
[K in keyof Fields]: Fields[K]["metadata"]["primaryKey"] extends true ? K : never
|
|
17
|
-
}[keyof Fields], string>
|
|
18
|
-
|
|
19
|
-
export type TableDefinition<
|
|
20
|
-
Name extends string,
|
|
21
|
-
Fields extends DialectFieldMap,
|
|
22
|
-
PrimaryKeyColumns extends keyof Fields & string = InlinePrimaryKeyKeys<Fields>,
|
|
23
|
-
Kind extends "schema" | "alias" = "schema",
|
|
24
|
-
SchemaName extends string | undefined = undefined
|
|
25
|
-
> = BaseTable.TableDefinition<Name, Fields, PrimaryKeyColumns, Kind, SchemaName>
|
|
26
|
-
|
|
27
|
-
export type TableClassStatic<
|
|
28
|
-
Name extends string,
|
|
29
|
-
Fields extends DialectFieldMap,
|
|
30
|
-
PrimaryKeyColumns extends keyof Fields & string = InlinePrimaryKeyKeys<Fields>,
|
|
31
|
-
SchemaName extends string | undefined = undefined
|
|
32
|
-
> = BaseTable.TableClassStatic<Name, Fields, PrimaryKeyColumns, SchemaName>
|
|
33
|
-
|
|
34
|
-
export type AnyTable = BaseTable.AnyTable<Dialect>
|
|
35
|
-
|
|
36
|
-
type FieldsOfTable<Table extends BaseTable.AnyTable> = Table[typeof BaseTable.TypeId]["fields"] extends infer Fields extends DialectFieldMap
|
|
37
|
-
? Fields
|
|
38
|
-
: never
|
|
39
|
-
|
|
40
|
-
type PrimaryKeyOfTable<Table extends BaseTable.AnyTable> = Table[typeof BaseTable.TypeId]["primaryKey"][number]
|
|
41
|
-
|
|
42
|
-
type SchemaNameOfTable<Table extends BaseTable.AnyTable> = Table[typeof BaseTable.TypeId]["schemaName"]
|
|
43
|
-
|
|
44
|
-
type ApplySchemaTableOptions<
|
|
45
|
-
Name extends string,
|
|
46
|
-
Fields extends DialectFieldMap,
|
|
47
|
-
PrimaryKeyColumns extends keyof Fields & string,
|
|
48
|
-
SchemaName extends string,
|
|
49
|
-
Options extends BaseTable.DeclaredTableOptions
|
|
50
|
-
> = BaseTable.ApplyDeclaredOptions<
|
|
51
|
-
BaseTable.TableDefinition<Name, Fields, PrimaryKeyColumns, "schema", SchemaName>,
|
|
52
|
-
Options
|
|
53
|
-
> extends BaseTable.TableDefinition<any, any, infer AppliedPrimaryKeyColumns extends keyof Fields & string, "schema", any>
|
|
54
|
-
? TableDefinition<Name, Fields, AppliedPrimaryKeyColumns, "schema", SchemaName>
|
|
55
|
-
: TableDefinition<Name, Fields, PrimaryKeyColumns, "schema", SchemaName>
|
|
56
|
-
|
|
57
|
-
export type TableSchemaNamespace<SchemaName extends string> = {
|
|
58
|
-
readonly schemaName: SchemaName
|
|
59
|
-
readonly table: <
|
|
60
|
-
Name extends string,
|
|
61
|
-
Fields extends DialectFieldMap,
|
|
62
|
-
const Options extends BaseTable.DeclaredTableOptions,
|
|
63
|
-
PrimaryKeyColumns extends keyof Fields & string = InlinePrimaryKeyKeys<Fields>
|
|
64
|
-
>(
|
|
65
|
-
name: Name,
|
|
66
|
-
fields: Fields,
|
|
67
|
-
...options: Options & BaseTable.ValidateDeclaredOptions<BaseTable.TableDefinition<Name, Fields, PrimaryKeyColumns, "schema", SchemaName>, Options>
|
|
68
|
-
) => ApplySchemaTableOptions<Name, Fields, PrimaryKeyColumns, SchemaName, Options>
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
export type TableOption = BaseTable.TableOption
|
|
72
|
-
|
|
73
|
-
export const TypeId = BaseTable.TypeId
|
|
74
|
-
export const OptionsSymbol = BaseTable.OptionsSymbol
|
|
75
|
-
export const options = BaseTable.options
|
|
76
|
-
|
|
77
|
-
export const make = <
|
|
78
|
-
Name extends string,
|
|
79
|
-
Fields extends DialectFieldMap,
|
|
80
|
-
SchemaName extends string | undefined = undefined
|
|
81
|
-
>(
|
|
82
|
-
name: Name,
|
|
83
|
-
fields: Fields,
|
|
84
|
-
schemaName: SchemaName = undefined as SchemaName
|
|
85
|
-
): TableDefinition<Name, Fields> =>
|
|
86
|
-
BaseTable.make(name, fields, schemaName) as TableDefinition<Name, Fields>
|
|
87
|
-
|
|
88
|
-
export const schema = <SchemaName extends string>(
|
|
89
|
-
schemaName: SchemaName
|
|
90
|
-
): TableSchemaNamespace<SchemaName> => {
|
|
91
|
-
const table = <
|
|
92
|
-
Name extends string,
|
|
93
|
-
Fields extends DialectFieldMap,
|
|
94
|
-
const Options extends BaseTable.DeclaredTableOptions,
|
|
95
|
-
PrimaryKeyColumns extends keyof Fields & string = InlinePrimaryKeyKeys<Fields>
|
|
96
|
-
>(
|
|
97
|
-
name: Name,
|
|
98
|
-
fields: Fields,
|
|
99
|
-
...declaredOptions: Options & BaseTable.ValidateDeclaredOptions<BaseTable.TableDefinition<Name, Fields, PrimaryKeyColumns, "schema", SchemaName>, Options>
|
|
100
|
-
) =>
|
|
101
|
-
(BaseTable.schema(schemaName).table as (
|
|
102
|
-
name: Name,
|
|
103
|
-
fields: Fields,
|
|
104
|
-
...options: BaseTable.DeclaredTableOptions
|
|
105
|
-
) => BaseTable.TableDefinition<any, any, any, "schema", any>)(
|
|
106
|
-
name,
|
|
107
|
-
fields,
|
|
108
|
-
...declaredOptions
|
|
109
|
-
) as ApplySchemaTableOptions<Name, Fields, PrimaryKeyColumns, SchemaName, Options>
|
|
110
|
-
return {
|
|
111
|
-
schemaName,
|
|
112
|
-
table
|
|
113
|
-
} as unknown as TableSchemaNamespace<SchemaName>
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
export const alias = <
|
|
117
|
-
Table extends AnyTable,
|
|
118
|
-
AliasName extends string
|
|
119
|
-
>(
|
|
120
|
-
table: Table,
|
|
121
|
-
aliasName: AliasName
|
|
122
|
-
): TableDefinition<
|
|
123
|
-
AliasName,
|
|
124
|
-
FieldsOfTable<Table>,
|
|
125
|
-
PrimaryKeyOfTable<Table>,
|
|
126
|
-
"alias",
|
|
127
|
-
SchemaNameOfTable<Table>
|
|
128
|
-
> =>
|
|
129
|
-
BaseTable.alias(table as any, aliasName) as TableDefinition<
|
|
130
|
-
AliasName,
|
|
131
|
-
FieldsOfTable<Table>,
|
|
132
|
-
PrimaryKeyOfTable<Table>,
|
|
133
|
-
"alias",
|
|
134
|
-
SchemaNameOfTable<Table>
|
|
135
|
-
>
|
|
136
|
-
|
|
137
|
-
export const Class = <Self = never, SchemaName extends string | undefined = undefined>(
|
|
138
|
-
name: string,
|
|
139
|
-
schemaName: SchemaName = undefined as SchemaName
|
|
140
|
-
) => {
|
|
141
|
-
const base = BaseTable.Class<Self, SchemaName>(name, schemaName)
|
|
142
|
-
return base as unknown as <
|
|
143
|
-
Fields extends DialectFieldMap
|
|
144
|
-
>(fields: Fields) => [Self] extends [never]
|
|
145
|
-
? BaseTable.MissingSelfGeneric
|
|
146
|
-
: TableClassStatic<typeof name, Fields, InlinePrimaryKeyKeys<Fields>, SchemaName>
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
export const primaryKey = BaseTable.primaryKey
|
|
150
|
-
export const unique = BaseTable.unique
|
|
151
|
-
export const index = BaseTable.index
|
|
152
|
-
export const foreignKey = <
|
|
153
|
-
LocalColumns extends string | readonly string[],
|
|
154
|
-
TargetTable extends AnyTable,
|
|
155
|
-
TargetColumns extends string | readonly string[]
|
|
156
|
-
>(
|
|
157
|
-
columns: LocalColumns & BaseTable.NonEmptyColumnInput<LocalColumns>,
|
|
158
|
-
target: () => TargetTable,
|
|
159
|
-
referencedColumns: TargetColumns & BaseTable.NonEmptyColumnInput<TargetColumns> & BaseTable.MatchingColumnArityInput<LocalColumns, TargetColumns>
|
|
160
|
-
) =>
|
|
161
|
-
BaseTable.foreignKey<LocalColumns, TargetTable, TargetColumns>(
|
|
162
|
-
columns as LocalColumns & BaseTable.NonEmptyColumnInput<LocalColumns>,
|
|
163
|
-
target,
|
|
164
|
-
referencedColumns as TargetColumns & BaseTable.NonEmptyColumnInput<TargetColumns> & BaseTable.MatchingColumnArityInput<LocalColumns, TargetColumns>
|
|
165
|
-
)
|
|
166
|
-
|
|
167
|
-
export const check = BaseTable.check
|
|
168
|
-
|
|
169
|
-
export const selectSchema = BaseTable.selectSchema
|
|
170
|
-
export const insertSchema = BaseTable.insertSchema
|
|
171
|
-
export const updateSchema = BaseTable.updateSchema
|
|
172
|
-
|
|
173
|
-
export type SelectOf<Table extends AnyTable> = BaseTable.SelectOf<Table>
|
|
174
|
-
export type InsertOf<Table extends AnyTable> = BaseTable.InsertOf<Table>
|
|
175
|
-
export type UpdateOf<Table extends AnyTable> = BaseTable.UpdateOf<Table>
|