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.
Files changed (129) hide show
  1. package/README.md +5 -2
  2. package/dist/index.js +9376 -0
  3. package/dist/mysql.js +3921 -2573
  4. package/dist/postgres/metadata.js +2491 -1373
  5. package/dist/postgres.js +5453 -5155
  6. package/dist/sqlite.js +6895 -5529
  7. package/dist/standard.js +9330 -0
  8. package/package.json +9 -2
  9. package/src/casing.ts +71 -0
  10. package/src/index.ts +2 -0
  11. package/src/internal/casing.ts +89 -0
  12. package/src/internal/coercion/rules.ts +13 -1
  13. package/src/internal/column-state.ts +21 -15
  14. package/src/internal/column.ts +44 -7
  15. package/src/internal/datatypes/define.ts +7 -1
  16. package/src/internal/datatypes/enrich.ts +23 -0
  17. package/src/internal/datatypes/lookup.ts +81 -25
  18. package/src/internal/datatypes/matrix.ts +903 -0
  19. package/src/internal/datatypes/shape.ts +2 -0
  20. package/src/internal/derived-table.ts +4 -36
  21. package/src/{mysql/internal/sql-expression-renderer.ts → internal/dialect-renderers/mysql.ts} +552 -361
  22. package/src/{postgres/internal/sql-expression-renderer.ts → internal/dialect-renderers/postgres.ts} +657 -400
  23. package/src/{sqlite/internal/sql-expression-renderer.ts → internal/dialect-renderers/sqlite.ts} +505 -347
  24. package/src/internal/dialect.ts +35 -0
  25. package/src/internal/dsl-mutation-runtime.ts +12 -162
  26. package/src/internal/dsl-plan-runtime.ts +10 -138
  27. package/src/internal/dsl-query-runtime.ts +5 -79
  28. package/src/internal/dsl-transaction-ddl-runtime.ts +41 -65
  29. package/src/internal/executor.ts +14 -16
  30. package/src/internal/grouping-key.ts +87 -20
  31. package/src/internal/implication-runtime.ts +1 -1
  32. package/src/internal/json/path-access.ts +351 -0
  33. package/src/internal/predicate/runtime.ts +3 -0
  34. package/src/internal/query.d.ts +38 -11
  35. package/src/internal/query.ts +64 -25
  36. package/src/internal/renderer.ts +26 -14
  37. package/src/internal/runtime/normalize.ts +12 -5
  38. package/src/internal/scalar.ts +7 -1
  39. package/src/internal/schema-derivation.d.ts +7 -7
  40. package/src/internal/schema-derivation.ts +9 -9
  41. package/src/internal/schema-expression.ts +2 -2
  42. package/src/internal/sql-expression-renderer.ts +19 -0
  43. package/src/internal/standard-dsl.ts +6978 -0
  44. package/src/internal/table-options.ts +126 -66
  45. package/src/internal/table.ts +652 -219
  46. package/src/mysql/column-extension.ts +3 -0
  47. package/src/mysql/column.ts +8 -9
  48. package/src/mysql/datatypes/index.ts +4 -2
  49. package/src/mysql/datatypes/spec.ts +6 -176
  50. package/src/mysql/errors/normalize.ts +0 -1
  51. package/src/mysql/executor.ts +7 -7
  52. package/src/mysql/internal/dialect.ts +9 -4
  53. package/src/mysql/internal/dsl.ts +312 -154
  54. package/src/mysql/internal/renderer.ts +6 -2
  55. package/src/mysql/json.ts +7 -2
  56. package/src/mysql/query-extension.ts +16 -0
  57. package/src/mysql/renderer.ts +37 -3
  58. package/src/mysql/type.ts +60 -0
  59. package/src/mysql.ts +7 -13
  60. package/src/postgres/check.ts +1 -0
  61. package/src/postgres/column-extension.ts +28 -0
  62. package/src/postgres/column.ts +2 -8
  63. package/src/postgres/datatypes/index.d.ts +2 -1
  64. package/src/postgres/datatypes/index.ts +4 -2
  65. package/src/postgres/datatypes/spec.ts +6 -260
  66. package/src/postgres/errors/normalize.ts +0 -1
  67. package/src/postgres/executor.ts +7 -7
  68. package/src/postgres/foreign-key.ts +24 -0
  69. package/src/postgres/function/core.ts +1 -3
  70. package/src/postgres/function/index.ts +1 -17
  71. package/src/postgres/index.ts +1 -0
  72. package/src/postgres/internal/dialect.ts +9 -4
  73. package/src/postgres/internal/dsl.ts +306 -163
  74. package/src/postgres/internal/renderer.ts +6 -2
  75. package/src/postgres/internal/schema-ddl.ts +22 -10
  76. package/src/postgres/internal/schema-model.ts +238 -7
  77. package/src/postgres/json-extension.ts +7 -0
  78. package/src/postgres/json.ts +762 -173
  79. package/src/postgres/jsonb.ts +37 -0
  80. package/src/postgres/primary-key.ts +24 -0
  81. package/src/postgres/query-extension.ts +2 -0
  82. package/src/postgres/renderer.ts +37 -3
  83. package/src/postgres/schema-management.ts +12 -11
  84. package/src/postgres/schema.ts +106 -15
  85. package/src/postgres/table.ts +205 -530
  86. package/src/postgres/type.ts +93 -10
  87. package/src/postgres/unique.ts +32 -0
  88. package/src/postgres.ts +20 -16
  89. package/src/sqlite/column-extension.ts +3 -0
  90. package/src/sqlite/column.ts +8 -9
  91. package/src/sqlite/datatypes/index.ts +4 -2
  92. package/src/sqlite/datatypes/spec.ts +6 -94
  93. package/src/sqlite/errors/normalize.ts +0 -1
  94. package/src/sqlite/executor.ts +7 -7
  95. package/src/sqlite/internal/dialect.ts +9 -4
  96. package/src/sqlite/internal/dsl.ts +301 -154
  97. package/src/sqlite/internal/renderer.ts +6 -2
  98. package/src/sqlite/json.ts +8 -2
  99. package/src/sqlite/query-extension.ts +2 -0
  100. package/src/sqlite/renderer.ts +37 -3
  101. package/src/sqlite/type.ts +40 -0
  102. package/src/sqlite.ts +7 -13
  103. package/src/standard/cast.ts +113 -0
  104. package/src/standard/check.ts +17 -0
  105. package/src/standard/column.ts +163 -0
  106. package/src/standard/datatypes/index.ts +83 -0
  107. package/src/standard/datatypes/spec.ts +12 -0
  108. package/src/standard/dialect.ts +40 -0
  109. package/src/standard/foreign-key.ts +37 -0
  110. package/src/standard/function/aggregate.ts +2 -0
  111. package/src/standard/function/core.ts +2 -0
  112. package/src/standard/function/index.ts +18 -0
  113. package/src/standard/function/string.ts +2 -0
  114. package/src/standard/function/temporal.ts +78 -0
  115. package/src/standard/function/window.ts +2 -0
  116. package/src/standard/index.ts +17 -0
  117. package/src/standard/internal/renderer.ts +45 -0
  118. package/src/standard/json.ts +883 -0
  119. package/src/standard/primary-key.ts +17 -0
  120. package/src/standard/query.ts +152 -0
  121. package/src/standard/renderer.ts +49 -0
  122. package/src/standard/table.ts +151 -0
  123. package/src/standard/unique.ts +17 -0
  124. package/src/standard.ts +32 -0
  125. package/src/internal/aggregation-validation.ts +0 -57
  126. package/src/internal/table.d.ts +0 -180
  127. package/src/mysql/table.ts +0 -186
  128. package/src/postgres/cast.ts +0 -45
  129. package/src/sqlite/table.ts +0 -175
@@ -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>
@@ -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 }
@@ -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>