@simplysm/orm-common 13.0.99 → 14.0.1

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 (238) hide show
  1. package/dist/create-db-context.d.ts +10 -10
  2. package/dist/create-db-context.js +312 -276
  3. package/dist/create-db-context.js.map +1 -6
  4. package/dist/ddl/column-ddl.d.ts +4 -4
  5. package/dist/ddl/column-ddl.js +41 -35
  6. package/dist/ddl/column-ddl.js.map +1 -6
  7. package/dist/ddl/initialize.d.ts +17 -17
  8. package/dist/ddl/initialize.js +200 -142
  9. package/dist/ddl/initialize.js.map +1 -6
  10. package/dist/ddl/relation-ddl.d.ts +6 -6
  11. package/dist/ddl/relation-ddl.js +55 -48
  12. package/dist/ddl/relation-ddl.js.map +1 -6
  13. package/dist/ddl/schema-ddl.d.ts +4 -4
  14. package/dist/ddl/schema-ddl.js +21 -15
  15. package/dist/ddl/schema-ddl.js.map +1 -6
  16. package/dist/ddl/table-ddl.d.ts +20 -20
  17. package/dist/ddl/table-ddl.js +139 -93
  18. package/dist/ddl/table-ddl.js.map +1 -6
  19. package/dist/define-db-context.js +10 -13
  20. package/dist/define-db-context.js.map +1 -6
  21. package/dist/errors/db-transaction-error.d.ts +15 -15
  22. package/dist/errors/db-transaction-error.d.ts.map +1 -1
  23. package/dist/errors/db-transaction-error.js +53 -19
  24. package/dist/errors/db-transaction-error.js.map +1 -6
  25. package/dist/exec/executable.d.ts +23 -23
  26. package/dist/exec/executable.js +94 -40
  27. package/dist/exec/executable.js.map +1 -6
  28. package/dist/exec/queryable.d.ts +97 -97
  29. package/dist/exec/queryable.js +1310 -1204
  30. package/dist/exec/queryable.js.map +1 -6
  31. package/dist/exec/search-parser.d.ts +31 -31
  32. package/dist/exec/search-parser.d.ts.map +1 -1
  33. package/dist/exec/search-parser.js +158 -59
  34. package/dist/exec/search-parser.js.map +1 -6
  35. package/dist/expr/expr-unit.d.ts +4 -4
  36. package/dist/expr/expr-unit.js +24 -18
  37. package/dist/expr/expr-unit.js.map +1 -6
  38. package/dist/expr/expr.d.ts +6 -6
  39. package/dist/expr/expr.js +1872 -1844
  40. package/dist/expr/expr.js.map +1 -6
  41. package/dist/index.js +23 -1
  42. package/dist/index.js.map +1 -6
  43. package/dist/models/system-migration.js +7 -7
  44. package/dist/models/system-migration.js.map +1 -6
  45. package/dist/query-builder/base/expr-renderer-base.d.ts +10 -10
  46. package/dist/query-builder/base/expr-renderer-base.js +27 -21
  47. package/dist/query-builder/base/expr-renderer-base.js.map +1 -6
  48. package/dist/query-builder/base/query-builder-base.d.ts +21 -21
  49. package/dist/query-builder/base/query-builder-base.d.ts.map +1 -1
  50. package/dist/query-builder/base/query-builder-base.js +90 -80
  51. package/dist/query-builder/base/query-builder-base.js.map +1 -6
  52. package/dist/query-builder/mssql/mssql-expr-renderer.d.ts +4 -4
  53. package/dist/query-builder/mssql/mssql-expr-renderer.d.ts.map +1 -1
  54. package/dist/query-builder/mssql/mssql-expr-renderer.js +447 -420
  55. package/dist/query-builder/mssql/mssql-expr-renderer.js.map +1 -6
  56. package/dist/query-builder/mssql/mssql-query-builder.js +483 -443
  57. package/dist/query-builder/mssql/mssql-query-builder.js.map +1 -6
  58. package/dist/query-builder/mysql/mysql-expr-renderer.d.ts +4 -4
  59. package/dist/query-builder/mysql/mysql-expr-renderer.d.ts.map +1 -1
  60. package/dist/query-builder/mysql/mysql-expr-renderer.js +451 -419
  61. package/dist/query-builder/mysql/mysql-expr-renderer.js.map +1 -6
  62. package/dist/query-builder/mysql/mysql-query-builder.js +570 -479
  63. package/dist/query-builder/mysql/mysql-query-builder.js.map +1 -6
  64. package/dist/query-builder/postgresql/postgresql-expr-renderer.d.ts +4 -4
  65. package/dist/query-builder/postgresql/postgresql-expr-renderer.d.ts.map +1 -1
  66. package/dist/query-builder/postgresql/postgresql-expr-renderer.js +449 -422
  67. package/dist/query-builder/postgresql/postgresql-expr-renderer.js.map +1 -6
  68. package/dist/query-builder/postgresql/postgresql-query-builder.js +511 -460
  69. package/dist/query-builder/postgresql/postgresql-query-builder.js.map +1 -6
  70. package/dist/query-builder/query-builder.d.ts +1 -1
  71. package/dist/query-builder/query-builder.js +13 -13
  72. package/dist/query-builder/query-builder.js.map +1 -6
  73. package/dist/schema/factory/column-builder.d.ts +84 -84
  74. package/dist/schema/factory/column-builder.js +248 -185
  75. package/dist/schema/factory/column-builder.js.map +1 -6
  76. package/dist/schema/factory/index-builder.d.ts +38 -38
  77. package/dist/schema/factory/index-builder.js +144 -85
  78. package/dist/schema/factory/index-builder.js.map +1 -6
  79. package/dist/schema/factory/relation-builder.d.ts +91 -91
  80. package/dist/schema/factory/relation-builder.d.ts.map +1 -1
  81. package/dist/schema/factory/relation-builder.js +274 -136
  82. package/dist/schema/factory/relation-builder.js.map +1 -6
  83. package/dist/schema/procedure-builder.d.ts +51 -51
  84. package/dist/schema/procedure-builder.d.ts.map +1 -1
  85. package/dist/schema/procedure-builder.js +205 -131
  86. package/dist/schema/procedure-builder.js.map +1 -6
  87. package/dist/schema/table-builder.d.ts +55 -55
  88. package/dist/schema/table-builder.d.ts.map +1 -1
  89. package/dist/schema/table-builder.js +274 -205
  90. package/dist/schema/table-builder.js.map +1 -6
  91. package/dist/schema/view-builder.d.ts +44 -44
  92. package/dist/schema/view-builder.d.ts.map +1 -1
  93. package/dist/schema/view-builder.js +189 -116
  94. package/dist/schema/view-builder.js.map +1 -6
  95. package/dist/types/column.js +60 -30
  96. package/dist/types/column.js.map +1 -6
  97. package/dist/types/db-context-def.d.ts +9 -9
  98. package/dist/types/db-context-def.js +2 -1
  99. package/dist/types/db-context-def.js.map +1 -6
  100. package/dist/types/db.d.ts +47 -47
  101. package/dist/types/db.js +15 -5
  102. package/dist/types/db.js.map +1 -6
  103. package/dist/types/expr.d.ts +81 -81
  104. package/dist/types/expr.d.ts.map +1 -1
  105. package/dist/types/expr.js +3 -1
  106. package/dist/types/expr.js.map +1 -6
  107. package/dist/types/query-def.d.ts +46 -46
  108. package/dist/types/query-def.d.ts.map +1 -1
  109. package/dist/types/query-def.js +31 -24
  110. package/dist/types/query-def.js.map +1 -6
  111. package/dist/utils/result-parser.js +362 -221
  112. package/dist/utils/result-parser.js.map +1 -6
  113. package/package.json +5 -7
  114. package/src/create-db-context.ts +31 -31
  115. package/src/ddl/column-ddl.ts +4 -4
  116. package/src/ddl/initialize.ts +38 -38
  117. package/src/ddl/relation-ddl.ts +6 -6
  118. package/src/ddl/schema-ddl.ts +4 -4
  119. package/src/ddl/table-ddl.ts +24 -24
  120. package/src/errors/db-transaction-error.ts +13 -13
  121. package/src/exec/executable.ts +25 -25
  122. package/src/exec/queryable.ts +134 -134
  123. package/src/exec/search-parser.ts +50 -50
  124. package/src/expr/expr-unit.ts +4 -4
  125. package/src/expr/expr.ts +13 -13
  126. package/src/index.ts +8 -8
  127. package/src/models/system-migration.ts +1 -1
  128. package/src/query-builder/base/expr-renderer-base.ts +21 -21
  129. package/src/query-builder/base/query-builder-base.ts +33 -33
  130. package/src/query-builder/mssql/mssql-expr-renderer.ts +11 -11
  131. package/src/query-builder/mssql/mssql-query-builder.ts +11 -11
  132. package/src/query-builder/mysql/mysql-expr-renderer.ts +15 -15
  133. package/src/query-builder/mysql/mysql-query-builder.ts +3 -3
  134. package/src/query-builder/postgresql/postgresql-expr-renderer.ts +9 -9
  135. package/src/query-builder/postgresql/postgresql-query-builder.ts +7 -7
  136. package/src/query-builder/query-builder.ts +1 -1
  137. package/src/schema/factory/column-builder.ts +86 -86
  138. package/src/schema/factory/index-builder.ts +38 -38
  139. package/src/schema/factory/relation-builder.ts +93 -93
  140. package/src/schema/procedure-builder.ts +52 -52
  141. package/src/schema/table-builder.ts +56 -56
  142. package/src/schema/view-builder.ts +45 -45
  143. package/src/types/column.ts +1 -1
  144. package/src/types/db-context-def.ts +15 -15
  145. package/src/types/db.ts +50 -50
  146. package/src/types/expr.ts +103 -103
  147. package/src/types/query-def.ts +50 -50
  148. package/src/utils/result-parser.ts +39 -39
  149. package/README.md +0 -192
  150. package/docs/core.md +0 -234
  151. package/docs/expression.md +0 -234
  152. package/docs/query-builder.md +0 -93
  153. package/docs/queryable.md +0 -198
  154. package/docs/schema-builders.md +0 -463
  155. package/docs/types.md +0 -445
  156. package/docs/utilities.md +0 -27
  157. package/tests/db-context/create-db-context.spec.ts +0 -193
  158. package/tests/db-context/define-db-context.spec.ts +0 -17
  159. package/tests/ddl/basic.expected.ts +0 -341
  160. package/tests/ddl/basic.spec.ts +0 -557
  161. package/tests/ddl/column-builder.expected.ts +0 -310
  162. package/tests/ddl/column-builder.spec.ts +0 -525
  163. package/tests/ddl/index-builder.expected.ts +0 -38
  164. package/tests/ddl/index-builder.spec.ts +0 -148
  165. package/tests/ddl/procedure-builder.expected.ts +0 -52
  166. package/tests/ddl/procedure-builder.spec.ts +0 -128
  167. package/tests/ddl/relation-builder.expected.ts +0 -36
  168. package/tests/ddl/relation-builder.spec.ts +0 -171
  169. package/tests/ddl/table-builder.expected.ts +0 -113
  170. package/tests/ddl/table-builder.spec.ts +0 -399
  171. package/tests/ddl/view-builder.expected.ts +0 -38
  172. package/tests/ddl/view-builder.spec.ts +0 -116
  173. package/tests/dml/delete.expected.ts +0 -96
  174. package/tests/dml/delete.spec.ts +0 -127
  175. package/tests/dml/insert.expected.ts +0 -192
  176. package/tests/dml/insert.spec.ts +0 -210
  177. package/tests/dml/update.expected.ts +0 -176
  178. package/tests/dml/update.spec.ts +0 -222
  179. package/tests/dml/upsert.expected.ts +0 -215
  180. package/tests/dml/upsert.spec.ts +0 -190
  181. package/tests/errors/queryable-errors.spec.ts +0 -126
  182. package/tests/escape.spec.ts +0 -59
  183. package/tests/examples/pivot.expected.ts +0 -211
  184. package/tests/examples/pivot.spec.ts +0 -200
  185. package/tests/examples/sampling.expected.ts +0 -69
  186. package/tests/examples/sampling.spec.ts +0 -42
  187. package/tests/examples/unpivot.expected.ts +0 -120
  188. package/tests/examples/unpivot.spec.ts +0 -161
  189. package/tests/exec/search-parser.spec.ts +0 -267
  190. package/tests/executable/basic.expected.ts +0 -18
  191. package/tests/executable/basic.spec.ts +0 -54
  192. package/tests/expr/comparison.expected.ts +0 -282
  193. package/tests/expr/comparison.spec.ts +0 -334
  194. package/tests/expr/conditional.expected.ts +0 -134
  195. package/tests/expr/conditional.spec.ts +0 -249
  196. package/tests/expr/date.expected.ts +0 -332
  197. package/tests/expr/date.spec.ts +0 -459
  198. package/tests/expr/math.expected.ts +0 -62
  199. package/tests/expr/math.spec.ts +0 -59
  200. package/tests/expr/string.expected.ts +0 -218
  201. package/tests/expr/string.spec.ts +0 -300
  202. package/tests/expr/utility.expected.ts +0 -147
  203. package/tests/expr/utility.spec.ts +0 -155
  204. package/tests/select/basic.expected.ts +0 -322
  205. package/tests/select/basic.spec.ts +0 -433
  206. package/tests/select/filter.expected.ts +0 -357
  207. package/tests/select/filter.spec.ts +0 -954
  208. package/tests/select/group.expected.ts +0 -169
  209. package/tests/select/group.spec.ts +0 -159
  210. package/tests/select/join.expected.ts +0 -582
  211. package/tests/select/join.spec.ts +0 -692
  212. package/tests/select/order.expected.ts +0 -150
  213. package/tests/select/order.spec.ts +0 -140
  214. package/tests/select/recursive-cte.expected.ts +0 -244
  215. package/tests/select/recursive-cte.spec.ts +0 -514
  216. package/tests/select/result-meta.spec.ts +0 -270
  217. package/tests/select/subquery.expected.ts +0 -363
  218. package/tests/select/subquery.spec.ts +0 -441
  219. package/tests/select/view.expected.ts +0 -155
  220. package/tests/select/view.spec.ts +0 -235
  221. package/tests/select/window.expected.ts +0 -345
  222. package/tests/select/window.spec.ts +0 -433
  223. package/tests/setup/MockExecutor.ts +0 -18
  224. package/tests/setup/TestDbContext.ts +0 -59
  225. package/tests/setup/models/Company.ts +0 -13
  226. package/tests/setup/models/Employee.ts +0 -10
  227. package/tests/setup/models/MonthlySales.ts +0 -11
  228. package/tests/setup/models/Post.ts +0 -16
  229. package/tests/setup/models/Sales.ts +0 -10
  230. package/tests/setup/models/User.ts +0 -19
  231. package/tests/setup/procedure/GetAllUsers.ts +0 -9
  232. package/tests/setup/procedure/GetUserById.ts +0 -12
  233. package/tests/setup/test-utils.ts +0 -72
  234. package/tests/setup/views/ActiveUsers.ts +0 -8
  235. package/tests/setup/views/UserSummary.ts +0 -11
  236. package/tests/types/nullable-queryable-record.spec.ts +0 -97
  237. package/tests/utils/result-parser-perf.spec.ts +0 -143
  238. package/tests/utils/result-parser.spec.ts +0 -667
@@ -1,463 +0,0 @@
1
- # Schema Builders
2
-
3
- ## `Table`
4
-
5
- Table builder factory function. Creates a `TableBuilder` for defining table schema via fluent API.
6
-
7
- ```typescript
8
- function Table(name: string): TableBuilder<{}, {}>;
9
- ```
10
-
11
- ## `TableBuilder`
12
-
13
- Database table definition builder. Define columns, PK, indexes, and relations via fluent API.
14
-
15
- ```typescript
16
- class TableBuilder<
17
- TColumns extends ColumnBuilderRecord,
18
- TRelations extends RelationBuilderRecord,
19
- > {
20
- readonly $columns!: TColumns;
21
- readonly $relations!: TRelations;
22
- readonly $inferSelect!: InferColumns<TColumns> & InferDeepRelations<TRelations>;
23
- readonly $inferColumns!: InferColumns<TColumns>;
24
- readonly $inferInsert!: InferInsertColumns<TColumns>;
25
- readonly $inferUpdate!: InferUpdateColumns<TColumns>;
26
-
27
- constructor(readonly meta: {
28
- name: string;
29
- description?: string;
30
- database?: string;
31
- schema?: string;
32
- columns?: TColumns;
33
- primaryKey?: (keyof TColumns & string)[];
34
- relations?: TRelations;
35
- indexes?: IndexBuilder<(keyof TColumns & string)[]>[];
36
- });
37
-
38
- description(desc: string): TableBuilder<TColumns, TRelations>;
39
- database(db: string): TableBuilder<TColumns, TRelations>;
40
- schema(schema: string): TableBuilder<TColumns, TRelations>;
41
- columns<TNewColumnDefs extends ColumnBuilderRecord>(
42
- fn: (c: ReturnType<typeof createColumnFactory>) => TNewColumnDefs,
43
- ): TableBuilder<TNewColumnDefs, TRelations>;
44
- primaryKey(...columns: (keyof TColumns & string)[]): TableBuilder<TColumns, TRelations>;
45
- indexes(fn: (i: ...) => IndexBuilder<string[]>[]): TableBuilder<TColumns, TRelations>;
46
- relations<T extends RelationBuilderRecord>(fn: (r: ...) => T): TableBuilder<TColumns, T>;
47
- }
48
- ```
49
-
50
- | Method | Description |
51
- |--------|-------------|
52
- | `description()` | Set table description (DDL comment) |
53
- | `database()` | Set database name |
54
- | `schema()` | Set schema name (MSSQL/PostgreSQL) |
55
- | `columns()` | Define columns using the column factory |
56
- | `primaryKey()` | Set primary key columns (composite PK supported) |
57
- | `indexes()` | Define indexes using the index factory |
58
- | `relations()` | Define relations using the relation factory |
59
-
60
- ## `View`
61
-
62
- View builder factory function. Creates a `ViewBuilder` for defining view schema via fluent API.
63
-
64
- ```typescript
65
- function View(name: string): ViewBuilder<any, any, {}>;
66
- ```
67
-
68
- ## `ViewBuilder`
69
-
70
- Database view definition builder. Define view query and relations via fluent API.
71
-
72
- ```typescript
73
- class ViewBuilder<
74
- TDbContext extends DbContextBase,
75
- TData extends DataRecord,
76
- TRelations extends RelationBuilderRecord,
77
- > {
78
- readonly $relations!: TRelations;
79
- readonly $inferSelect!: TData;
80
-
81
- constructor(readonly meta: {
82
- name: string;
83
- description?: string;
84
- database?: string;
85
- schema?: string;
86
- viewFn?: (db: TDbContext) => Queryable<TData, any>;
87
- relations?: TRelations;
88
- });
89
-
90
- description(desc: string): ViewBuilder<TDbContext, TData, TRelations>;
91
- database(db: string): ViewBuilder<TDbContext, TData, TRelations>;
92
- schema(schema: string): ViewBuilder<TDbContext, TData, TRelations>;
93
- query<TViewData extends DataRecord, TDb extends DbContextBase>(
94
- viewFn: (db: TDb) => Queryable<TViewData, any>,
95
- ): ViewBuilder<TDb, TViewData, TRelations>;
96
- relations<T extends RelationBuilderRecord>(fn: (r: ...) => T): ViewBuilder<TDbContext, TData & InferDeepRelations<T>, TRelations>;
97
- }
98
- ```
99
-
100
- | Method | Description |
101
- |--------|-------------|
102
- | `description()` | Set view description (DDL comment) |
103
- | `database()` | Set database name |
104
- | `schema()` | Set schema name |
105
- | `query()` | Define the view's SELECT query |
106
- | `relations()` | Define relations with other tables/views |
107
-
108
- ## `Procedure`
109
-
110
- Procedure builder factory function. Creates a `ProcedureBuilder` for defining stored procedure schema via fluent API.
111
-
112
- ```typescript
113
- function Procedure(name: string): ProcedureBuilder<never, never>;
114
- ```
115
-
116
- ## `ProcedureBuilder`
117
-
118
- Stored procedure definition builder. Define parameters, return type, and body via fluent API.
119
-
120
- ```typescript
121
- class ProcedureBuilder<
122
- TParams extends ColumnBuilderRecord,
123
- TReturns extends ColumnBuilderRecord,
124
- > {
125
- readonly $params!: TParams;
126
- readonly $returns!: TReturns;
127
-
128
- constructor(readonly meta: {
129
- name: string;
130
- description?: string;
131
- database?: string;
132
- schema?: string;
133
- params?: TParams;
134
- returns?: TReturns;
135
- query?: string;
136
- });
137
-
138
- description(desc: string): ProcedureBuilder<TParams, TReturns>;
139
- database(db: string): ProcedureBuilder<TParams, TReturns>;
140
- schema(schema: string): ProcedureBuilder<TParams, TReturns>;
141
- params<T extends ColumnBuilderRecord>(fn: (c: ...) => T): ProcedureBuilder<T, TReturns>;
142
- returns<T extends ColumnBuilderRecord>(fn: (c: ...) => T): ProcedureBuilder<TParams, T>;
143
- body(sql: string): ProcedureBuilder<TParams, TReturns>;
144
- }
145
- ```
146
-
147
- | Method | Description |
148
- |--------|-------------|
149
- | `description()` | Set procedure description |
150
- | `database()` | Set database name |
151
- | `schema()` | Set schema name |
152
- | `params()` | Define input parameters |
153
- | `returns()` | Define return type columns |
154
- | `body()` | Set procedure body SQL |
155
-
156
- ## `ColumnBuilder`
157
-
158
- Column definition builder. Define column type, nullable, autoIncrement, default, and description via fluent API.
159
-
160
- ```typescript
161
- class ColumnBuilder<TValue extends ColumnPrimitive, TMeta extends ColumnMeta> {
162
- constructor(readonly meta: TMeta);
163
-
164
- autoIncrement(): ColumnBuilder<TValue, Omit<TMeta, "autoIncrement"> & { autoIncrement: true }>;
165
- nullable(): ColumnBuilder<TValue | undefined, Omit<TMeta, "nullable"> & { nullable: true }>;
166
- default(value: TValue): ColumnBuilder<TValue, Omit<TMeta, "default"> & { default: typeof value }>;
167
- description(desc: string): ColumnBuilder<TValue, TMeta & { description: string }>;
168
- }
169
- ```
170
-
171
- | Method | Description |
172
- |--------|-------------|
173
- | `autoIncrement()` | Set auto increment (optional in INSERT) |
174
- | `nullable()` | Allow NULL (adds `undefined` to type) |
175
- | `default()` | Set default value (optional in INSERT) |
176
- | `description()` | Set column description (DDL comment) |
177
-
178
- ## `createColumnFactory`
179
-
180
- Column builder factory. Provides builder creation methods for all basic data types.
181
-
182
- ```typescript
183
- function createColumnFactory(): {
184
- int(): ColumnBuilder<number, ...>;
185
- bigint(): ColumnBuilder<number, ...>;
186
- float(): ColumnBuilder<number, ...>;
187
- double(): ColumnBuilder<number, ...>;
188
- decimal(precision: number, scale?: number): ColumnBuilder<number, ...>;
189
- varchar(length: number): ColumnBuilder<string, ...>;
190
- char(length: number): ColumnBuilder<string, ...>;
191
- text(): ColumnBuilder<string, ...>;
192
- binary(): ColumnBuilder<Bytes, ...>;
193
- boolean(): ColumnBuilder<boolean, ...>;
194
- datetime(): ColumnBuilder<DateTime, ...>;
195
- date(): ColumnBuilder<DateOnly, ...>;
196
- time(): ColumnBuilder<Time, ...>;
197
- uuid(): ColumnBuilder<Uuid, ...>;
198
- };
199
- ```
200
-
201
- | Method | SQL Type | TypeScript Type |
202
- |--------|----------|-----------------|
203
- | `int()` | INT (4 bytes) | `number` |
204
- | `bigint()` | BIGINT (8 bytes) | `number` |
205
- | `float()` | FLOAT (4 bytes) | `number` |
206
- | `double()` | DOUBLE (8 bytes) | `number` |
207
- | `decimal()` | DECIMAL(p, s) | `number` |
208
- | `varchar()` | VARCHAR(n) | `string` |
209
- | `char()` | CHAR(n) | `string` |
210
- | `text()` | TEXT | `string` |
211
- | `binary()` | LONGBLOB/VARBINARY(MAX)/BYTEA | `Bytes` |
212
- | `boolean()` | TINYINT(1)/BIT/BOOLEAN | `boolean` |
213
- | `datetime()` | DATETIME | `DateTime` |
214
- | `date()` | DATE | `DateOnly` |
215
- | `time()` | TIME | `Time` |
216
- | `uuid()` | BINARY(16)/UNIQUEIDENTIFIER/UUID | `Uuid` |
217
-
218
- ## `IndexBuilder`
219
-
220
- Index definition builder. Define index columns, uniqueness, and sort order via fluent API.
221
-
222
- ```typescript
223
- class IndexBuilder<TKeys extends string[]> {
224
- constructor(readonly meta: {
225
- columns: TKeys;
226
- name?: string;
227
- unique?: boolean;
228
- orderBy?: { [K in keyof TKeys]: "ASC" | "DESC" };
229
- description?: string;
230
- });
231
-
232
- name(name: string): IndexBuilder<TKeys>;
233
- unique(): IndexBuilder<TKeys>;
234
- orderBy(...orderBy: { [K in keyof TKeys]: "ASC" | "DESC" }): IndexBuilder<TKeys>;
235
- description(description: string): IndexBuilder<TKeys>;
236
- }
237
- ```
238
-
239
- ## `createIndexFactory`
240
-
241
- Index builder factory. Used in `TableBuilder.indexes()`.
242
-
243
- ```typescript
244
- function createIndexFactory<TColumnKey extends string>(): {
245
- index<TKeys extends TColumnKey[]>(...columns: [...TKeys]): IndexBuilder<TKeys>;
246
- };
247
- ```
248
-
249
- ## `ForeignKeyBuilder`
250
-
251
- Foreign key relation builder (N:1). Creates actual FK constraints in the DB.
252
-
253
- ```typescript
254
- class ForeignKeyBuilder<
255
- TOwner extends TableBuilder<any, any>,
256
- TTargetFn extends () => TableBuilder<any, any>,
257
- > {
258
- constructor(readonly meta: {
259
- ownerFn: () => TOwner;
260
- columns: string[];
261
- targetFn: TTargetFn;
262
- description?: string;
263
- });
264
-
265
- description(desc: string): ForeignKeyBuilder<TOwner, TTargetFn>;
266
- }
267
- ```
268
-
269
- ## `ForeignKeyTargetBuilder`
270
-
271
- Foreign key reverse-reference builder (1:N). Loaded as array on `include()` (single object when `.single()` is called).
272
-
273
- ```typescript
274
- class ForeignKeyTargetBuilder<
275
- TTargetTableFn extends () => TableBuilder<any, any>,
276
- TIsSingle extends boolean,
277
- > {
278
- constructor(readonly meta: {
279
- targetTableFn: TTargetTableFn;
280
- relationName: string;
281
- description?: string;
282
- isSingle?: TIsSingle;
283
- });
284
-
285
- description(desc: string): ForeignKeyTargetBuilder<TTargetTableFn, TIsSingle>;
286
- single(): ForeignKeyTargetBuilder<TTargetTableFn, true>;
287
- }
288
- ```
289
-
290
- ## `RelationKeyBuilder`
291
-
292
- Logical relation builder (N:1). Same as `ForeignKeyBuilder` but does not create FK constraints in the DB. Can be used in views.
293
-
294
- ```typescript
295
- class RelationKeyBuilder<
296
- TOwner extends TableBuilder<any, any> | ViewBuilder<any, any, any>,
297
- TTargetFn extends () => TableBuilder<any, any> | ViewBuilder<any, any, any>,
298
- > {
299
- constructor(readonly meta: {
300
- ownerFn: () => TOwner;
301
- columns: string[];
302
- targetFn: TTargetFn;
303
- description?: string;
304
- });
305
-
306
- description(desc: string): RelationKeyBuilder<TOwner, TTargetFn>;
307
- }
308
- ```
309
-
310
- ## `RelationKeyTargetBuilder`
311
-
312
- Logical relation reverse-reference builder (1:N). Same as `ForeignKeyTargetBuilder` but without DB FK constraints. Can be used in views.
313
-
314
- ```typescript
315
- class RelationKeyTargetBuilder<
316
- TTargetTableFn extends () => TableBuilder<any, any> | ViewBuilder<any, any, any>,
317
- TIsSingle extends boolean,
318
- > {
319
- constructor(readonly meta: {
320
- targetTableFn: TTargetTableFn;
321
- relationName: string;
322
- description?: string;
323
- isSingle?: TIsSingle;
324
- });
325
-
326
- description(desc: string): RelationKeyTargetBuilder<TTargetTableFn, TIsSingle>;
327
- single(): RelationKeyTargetBuilder<TTargetTableFn, true>;
328
- }
329
- ```
330
-
331
- ## `createRelationFactory`
332
-
333
- Relation builder factory. Used in `TableBuilder.relations()` and `ViewBuilder.relations()`. Tables can use both FK + RelationKey; views can only use RelationKey.
334
-
335
- ```typescript
336
- function createRelationFactory<
337
- TOwner extends TableBuilder<any, any> | ViewBuilder<any, any, any>,
338
- TColumnKey extends string,
339
- >(ownerFn: () => TOwner): TOwner extends TableBuilder<any, any>
340
- ? RelationFkFactory<TOwner, TColumnKey> & RelationRkFactory<TOwner, TColumnKey>
341
- : RelationRkFactory<TOwner, TColumnKey>;
342
- ```
343
-
344
- ## `ColumnBuilderRecord`
345
-
346
- Column builder record type. Used as the return type of `TableBuilder.columns()`.
347
-
348
- ```typescript
349
- type ColumnBuilderRecord = Record<string, ColumnBuilder<ColumnPrimitive, ColumnMeta>>;
350
- ```
351
-
352
- ## `RelationBuilderRecord`
353
-
354
- Relation builder record type. Return type of `TableBuilder.relations()` and `ViewBuilder.relations()`.
355
-
356
- ```typescript
357
- type RelationBuilderRecord = Record<
358
- string,
359
- ForeignKeyBuilder<any, any> | ForeignKeyTargetBuilder<any, any> | RelationKeyBuilder<any, any> | RelationKeyTargetBuilder<any, any>
360
- >;
361
- ```
362
-
363
- ## `InferColumns`
364
-
365
- Infer actual value types from a column builder record.
366
-
367
- ```typescript
368
- type InferColumns<TBuilders extends ColumnBuilderRecord> = {
369
- [K in keyof TBuilders]: TBuilders[K] extends ColumnBuilder<infer V, any> ? V : never;
370
- };
371
- ```
372
-
373
- ## `InferColumnExprs`
374
-
375
- Infer expression input types from a column builder record.
376
-
377
- ```typescript
378
- type InferColumnExprs<TBuilders extends ColumnBuilderRecord> = {
379
- [K in keyof TBuilders]: TBuilders[K] extends ColumnBuilder<infer V, any> ? ExprInput<V> : never;
380
- };
381
- ```
382
-
383
- ## `InferInsertColumns`
384
-
385
- INSERT type inference. Required columns are required, optional columns (autoIncrement, nullable, default) are `Partial`.
386
-
387
- ```typescript
388
- type InferInsertColumns<TBuilders extends ColumnBuilderRecord> = Pick<
389
- InferColumns<TBuilders>,
390
- RequiredInsertKeys<TBuilders>
391
- > & Partial<Pick<InferColumns<TBuilders>, OptionalInsertKeys<TBuilders>>>;
392
- ```
393
-
394
- ## `InferUpdateColumns`
395
-
396
- UPDATE type inference. All columns are optional.
397
-
398
- ```typescript
399
- type InferUpdateColumns<TBuilders extends ColumnBuilderRecord> = Partial<InferColumns<TBuilders>>;
400
- ```
401
-
402
- ## `RequiredInsertKeys`
403
-
404
- Extract required column keys for INSERT (columns without autoIncrement, nullable, or default).
405
-
406
- ```typescript
407
- type RequiredInsertKeys<TBuilders extends ColumnBuilderRecord> = { ... }[keyof TBuilders];
408
- ```
409
-
410
- ## `OptionalInsertKeys`
411
-
412
- Extract optional column keys for INSERT.
413
-
414
- ```typescript
415
- type OptionalInsertKeys<TBuilders extends ColumnBuilderRecord> = Exclude<keyof TBuilders, RequiredInsertKeys<TBuilders>>;
416
- ```
417
-
418
- ## `DataToColumnBuilderRecord`
419
-
420
- Transform from data record to column builder record.
421
-
422
- ```typescript
423
- type DataToColumnBuilderRecord<TData extends DataRecord> = { ... };
424
- ```
425
-
426
- ## `InferDeepRelations`
427
-
428
- Deep relation type inference from relation definitions. Makes all relations optional.
429
-
430
- ```typescript
431
- type InferDeepRelations<TRelations extends RelationBuilderRecord> = {
432
- [K in keyof TRelations]?: ExtractRelationTarget<TRelations[K]> | ExtractRelationTargetResult<TRelations[K]>;
433
- };
434
- ```
435
-
436
- ## `ExtractRelationTarget`
437
-
438
- Extract target type from FK/RelationKey (single object, N:1 relation).
439
-
440
- ```typescript
441
- type ExtractRelationTarget<TRelation> = ...;
442
- ```
443
-
444
- ## `ExtractRelationTargetResult`
445
-
446
- Extract target type from FKTarget/RelationKeyTarget (array or single object, 1:N relation).
447
-
448
- ```typescript
449
- type ExtractRelationTargetResult<TRelation> = ...;
450
- ```
451
-
452
- ## `_Migration`
453
-
454
- Built-in system migration table. Automatically included in every `DbContextDef`.
455
-
456
- ```typescript
457
- const _Migration = Table("_migration")
458
- .columns((c) => ({
459
- code: c.varchar(255),
460
- }))
461
- .description("System Migration Table")
462
- .primaryKey("code");
463
- ```