kysely 0.13.0 → 0.14.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.
Files changed (87) hide show
  1. package/dist/cjs/{introspection → dialect}/database-introspector.d.ts +0 -0
  2. package/dist/cjs/{introspection → dialect}/database-introspector.js +0 -0
  3. package/dist/cjs/dialect/dialect.d.ts +1 -1
  4. package/dist/cjs/dialect/mysql/mysql-dialect.d.ts +1 -1
  5. package/dist/cjs/dialect/mysql/mysql-introspector.d.ts +1 -1
  6. package/dist/cjs/dialect/postgres/postgres-dialect.d.ts +1 -1
  7. package/dist/cjs/dialect/postgres/postgres-introspector.d.ts +1 -1
  8. package/dist/cjs/dialect/sqlite/sqlite-dialect.d.ts +1 -1
  9. package/dist/cjs/dialect/sqlite/sqlite-introspector.d.ts +1 -1
  10. package/dist/cjs/index.d.ts +2 -2
  11. package/dist/cjs/index.js +2 -2
  12. package/dist/cjs/kysely.d.ts +1 -1
  13. package/dist/cjs/operation-node/check-constraint-node.d.ts +1 -1
  14. package/dist/cjs/operation-node/check-constraint-node.js +2 -3
  15. package/dist/cjs/operation-node/column-definition-node.d.ts +2 -2
  16. package/dist/cjs/operation-node/data-type-node.d.ts +1 -1
  17. package/dist/cjs/operation-node/generated-node.d.ts +20 -0
  18. package/dist/cjs/operation-node/generated-node.js +31 -0
  19. package/dist/cjs/operation-node/on-conflict-node.d.ts +13 -2
  20. package/dist/cjs/operation-node/on-conflict-node.js +39 -1
  21. package/dist/cjs/operation-node/operation-node-transformer.d.ts +2 -2
  22. package/dist/cjs/operation-node/operation-node-transformer.js +11 -5
  23. package/dist/cjs/operation-node/operation-node-visitor.d.ts +2 -2
  24. package/dist/cjs/operation-node/operation-node-visitor.js +1 -1
  25. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  26. package/dist/cjs/query-builder/insert-query-builder.d.ts +76 -75
  27. package/dist/cjs/query-builder/insert-query-builder.js +150 -15
  28. package/dist/cjs/query-builder/on-conflict-builder.d.ts +684 -0
  29. package/dist/cjs/query-builder/on-conflict-builder.js +323 -0
  30. package/dist/cjs/query-compiler/default-query-compiler.d.ts +2 -2
  31. package/dist/cjs/query-compiler/default-query-compiler.js +33 -7
  32. package/dist/cjs/schema/alter-table-builder.d.ts +29 -9
  33. package/dist/cjs/schema/alter-table-builder.js +33 -9
  34. package/dist/cjs/schema/column-definition-builder.d.ts +28 -8
  35. package/dist/cjs/schema/column-definition-builder.js +17 -7
  36. package/dist/cjs/schema/create-index-builder.d.ts +3 -2
  37. package/dist/cjs/schema/create-index-builder.js +2 -2
  38. package/dist/cjs/schema/create-table-builder.d.ts +3 -2
  39. package/dist/cjs/schema/create-table-builder.js +2 -2
  40. package/dist/esm/{introspection → dialect}/database-introspector.d.ts +0 -0
  41. package/dist/esm/{introspection → dialect}/database-introspector.js +0 -0
  42. package/dist/esm/dialect/dialect.d.ts +1 -1
  43. package/dist/esm/dialect/mysql/mysql-dialect.d.ts +1 -1
  44. package/dist/esm/dialect/mysql/mysql-introspector.d.ts +1 -1
  45. package/dist/esm/dialect/postgres/postgres-dialect.d.ts +1 -1
  46. package/dist/esm/dialect/postgres/postgres-introspector.d.ts +1 -1
  47. package/dist/esm/dialect/sqlite/sqlite-dialect.d.ts +1 -1
  48. package/dist/esm/dialect/sqlite/sqlite-introspector.d.ts +1 -1
  49. package/dist/esm/index.d.ts +2 -2
  50. package/dist/esm/index.js +2 -2
  51. package/dist/esm/kysely.d.ts +1 -1
  52. package/dist/esm/operation-node/check-constraint-node.d.ts +1 -1
  53. package/dist/esm/operation-node/check-constraint-node.js +2 -3
  54. package/dist/esm/operation-node/column-definition-node.d.ts +2 -2
  55. package/dist/esm/operation-node/data-type-node.d.ts +1 -1
  56. package/dist/esm/operation-node/generated-node.d.ts +20 -0
  57. package/dist/esm/operation-node/generated-node.js +28 -0
  58. package/dist/esm/operation-node/on-conflict-node.d.ts +13 -2
  59. package/dist/esm/operation-node/on-conflict-node.js +39 -1
  60. package/dist/esm/operation-node/operation-node-transformer.d.ts +2 -2
  61. package/dist/esm/operation-node/operation-node-transformer.js +11 -5
  62. package/dist/esm/operation-node/operation-node-visitor.d.ts +2 -2
  63. package/dist/esm/operation-node/operation-node-visitor.js +1 -1
  64. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  65. package/dist/esm/query-builder/insert-query-builder.d.ts +76 -75
  66. package/dist/esm/query-builder/insert-query-builder.js +150 -15
  67. package/dist/esm/query-builder/on-conflict-builder.d.ts +684 -0
  68. package/dist/esm/query-builder/on-conflict-builder.js +317 -0
  69. package/dist/esm/query-compiler/default-query-compiler.d.ts +2 -2
  70. package/dist/esm/query-compiler/default-query-compiler.js +33 -7
  71. package/dist/esm/schema/alter-table-builder.d.ts +29 -9
  72. package/dist/esm/schema/alter-table-builder.js +33 -9
  73. package/dist/esm/schema/column-definition-builder.d.ts +28 -8
  74. package/dist/esm/schema/column-definition-builder.js +17 -7
  75. package/dist/esm/schema/create-index-builder.d.ts +3 -2
  76. package/dist/esm/schema/create-index-builder.js +2 -2
  77. package/dist/esm/schema/create-table-builder.d.ts +3 -2
  78. package/dist/esm/schema/create-table-builder.js +2 -2
  79. package/package.json +1 -1
  80. package/dist/cjs/operation-node/generated-always-as-node.d.ts +0 -16
  81. package/dist/cjs/operation-node/generated-always-as-node.js +0 -25
  82. package/dist/cjs/parser/on-conflict-parser.d.ts +0 -10
  83. package/dist/cjs/parser/on-conflict-parser.js +0 -35
  84. package/dist/esm/operation-node/generated-always-as-node.d.ts +0 -16
  85. package/dist/esm/operation-node/generated-always-as-node.js +0 -22
  86. package/dist/esm/parser/on-conflict-parser.d.ts +0 -10
  87. package/dist/esm/parser/on-conflict-parser.js +0 -30
@@ -0,0 +1,317 @@
1
+ import { ColumnNode } from '../operation-node/column-node.js';
2
+ import { IdentifierNode } from '../operation-node/identifier-node.js';
3
+ import { OnConflictNode } from '../operation-node/on-conflict-node.js';
4
+ import { parseWhereFilter, parseReferenceFilter, parseExistFilter, parseNotExistFilter, } from '../parser/filter-parser.js';
5
+ import { parseUpdateObject, } from '../parser/update-set-parser.js';
6
+ import { freeze } from '../util/object-utils.js';
7
+ import { preventAwait } from '../util/prevent-await.js';
8
+ export class OnConflictBuilder {
9
+ #props;
10
+ constructor(props) {
11
+ this.#props = freeze(props);
12
+ }
13
+ /**
14
+ * Specify a single column as the conflict target.
15
+ *
16
+ * Also see the {@link columns}, {@link constraint} and {@link expression}
17
+ * methods for alternative ways to specify the conflict target.
18
+ */
19
+ column(column) {
20
+ const columnNode = ColumnNode.create(column);
21
+ return new OnConflictBuilder({
22
+ ...this.#props,
23
+ onConflictNode: OnConflictNode.cloneWith(this.#props.onConflictNode, {
24
+ columns: this.#props.onConflictNode.columns
25
+ ? freeze([...this.#props.onConflictNode.columns, columnNode])
26
+ : freeze([columnNode]),
27
+ }),
28
+ });
29
+ }
30
+ /**
31
+ * Specify a list of columns as the conflict target.
32
+ *
33
+ * Also see the {@link column}, {@link constraint} and {@link expression}
34
+ * methods for alternative ways to specify the conflict target.
35
+ */
36
+ columns(columns) {
37
+ const columnNodes = columns.map(ColumnNode.create);
38
+ return new OnConflictBuilder({
39
+ ...this.#props,
40
+ onConflictNode: OnConflictNode.cloneWith(this.#props.onConflictNode, {
41
+ columns: this.#props.onConflictNode.columns
42
+ ? freeze([...this.#props.onConflictNode.columns, ...columnNodes])
43
+ : freeze(columnNodes),
44
+ }),
45
+ });
46
+ }
47
+ /**
48
+ * Specify a specific constraint by name as the conflict target.
49
+ *
50
+ * Also see the {@link column}, {@link columns} and {@link expression}
51
+ * methods for alternative ways to specify the conflict target.
52
+ */
53
+ constraint(constraintName) {
54
+ return new OnConflictBuilder({
55
+ ...this.#props,
56
+ onConflictNode: OnConflictNode.cloneWith(this.#props.onConflictNode, {
57
+ constraint: IdentifierNode.create(constraintName),
58
+ }),
59
+ });
60
+ }
61
+ /**
62
+ * Specify an expression as the conflict target.
63
+ *
64
+ * This can be used if the unique index is an expression index.
65
+ *
66
+ * Also see the {@link column}, {@link columns} and {@link constraint}
67
+ * methods for alternative ways to specify the conflict target.
68
+ */
69
+ expression(expression) {
70
+ return new OnConflictBuilder({
71
+ ...this.#props,
72
+ onConflictNode: OnConflictNode.cloneWith(this.#props.onConflictNode, {
73
+ indexExpression: expression.toOperationNode(),
74
+ }),
75
+ });
76
+ }
77
+ where(...args) {
78
+ return new OnConflictBuilder({
79
+ ...this.#props,
80
+ onConflictNode: OnConflictNode.cloneWithIndexWhere(this.#props.onConflictNode, parseWhereFilter(this.#props.parseContext, args)),
81
+ });
82
+ }
83
+ /**
84
+ * Specify an index predicate for the index target.
85
+ *
86
+ * See {@link WhereInterface.whereRef} for more info.
87
+ */
88
+ whereRef(lhs, op, rhs) {
89
+ return new OnConflictBuilder({
90
+ ...this.#props,
91
+ onConflictNode: OnConflictNode.cloneWithIndexWhere(this.#props.onConflictNode, parseReferenceFilter(this.#props.parseContext, lhs, op, rhs)),
92
+ });
93
+ }
94
+ orWhere(...args) {
95
+ return new OnConflictBuilder({
96
+ ...this.#props,
97
+ onConflictNode: OnConflictNode.cloneWithIndexOrWhere(this.#props.onConflictNode, parseWhereFilter(this.#props.parseContext, args)),
98
+ });
99
+ }
100
+ /**
101
+ * Specify an index predicate for the index target.
102
+ *
103
+ * See {@link WhereInterface.orWhereRef} for more info.
104
+ */
105
+ orWhereRef(lhs, op, rhs) {
106
+ return new OnConflictBuilder({
107
+ ...this.#props,
108
+ onConflictNode: OnConflictNode.cloneWithIndexOrWhere(this.#props.onConflictNode, parseReferenceFilter(this.#props.parseContext, lhs, op, rhs)),
109
+ });
110
+ }
111
+ /**
112
+ * Specify an index predicate for the index target.
113
+ *
114
+ * See {@link WhereInterface.whereExists} for more info.
115
+ */
116
+ whereExists(arg) {
117
+ return new OnConflictBuilder({
118
+ ...this.#props,
119
+ onConflictNode: OnConflictNode.cloneWithIndexWhere(this.#props.onConflictNode, parseExistFilter(this.#props.parseContext, arg)),
120
+ });
121
+ }
122
+ /**
123
+ * Specify an index predicate for the index target.
124
+ *
125
+ * See {@link WhereInterface.whereNotExists} for more info.
126
+ */
127
+ whereNotExists(arg) {
128
+ return new OnConflictBuilder({
129
+ ...this.#props,
130
+ onConflictNode: OnConflictNode.cloneWithIndexWhere(this.#props.onConflictNode, parseNotExistFilter(this.#props.parseContext, arg)),
131
+ });
132
+ }
133
+ /**
134
+ * Specify an index predicate for the index target.
135
+ *
136
+ * See {@link WhereInterface.orWhereExists} for more info.
137
+ */
138
+ orWhereExists(arg) {
139
+ return new OnConflictBuilder({
140
+ ...this.#props,
141
+ onConflictNode: OnConflictNode.cloneWithIndexOrWhere(this.#props.onConflictNode, parseExistFilter(this.#props.parseContext, arg)),
142
+ });
143
+ }
144
+ /**
145
+ * Specify an index predicate for the index target.
146
+ *
147
+ * See {@link WhereInterface.orWhereNotExists} for more info.
148
+ */
149
+ orWhereNotExists(arg) {
150
+ return new OnConflictBuilder({
151
+ ...this.#props,
152
+ onConflictNode: OnConflictNode.cloneWithIndexOrWhere(this.#props.onConflictNode, parseNotExistFilter(this.#props.parseContext, arg)),
153
+ });
154
+ }
155
+ /**
156
+ * Adds the "do nothing" conflict action.
157
+ *
158
+ * ### Examples
159
+ *
160
+ * ```ts
161
+ * await db
162
+ * .insertInto('person')
163
+ * .values({ id: db.generated, first_name, pic })
164
+ * .onConflict((oc) => oc
165
+ * .column('pic')
166
+ * .doNothing()
167
+ * )
168
+ * ```
169
+ *
170
+ * The generated SQL (PostgreSQL):
171
+ *
172
+ * ```sql
173
+ * insert into "person" ("first_name", "pic")
174
+ * values ($1, $2)
175
+ * on conflict ("pic") do nothing
176
+ * ```
177
+ */
178
+ doNothing() {
179
+ return new OnConflictDoNothingBuilder({
180
+ ...this.#props,
181
+ onConflictNode: OnConflictNode.cloneWith(this.#props.onConflictNode, {
182
+ doNothing: true,
183
+ }),
184
+ });
185
+ }
186
+ /**
187
+ * Adds the "do update set" conflict action.
188
+ *
189
+ * ### Examples
190
+ *
191
+ * ```ts
192
+ * await db
193
+ * .insertInto('person')
194
+ * .values({ id: db.generated, first_name, pic })
195
+ * .onConflict((oc) => oc
196
+ * .column('pic')
197
+ * .doUpdateSet({ first_name })
198
+ * )
199
+ * ```
200
+ *
201
+ * The generated SQL (PostgreSQL):
202
+ *
203
+ * ```sql
204
+ * insert into "person" ("first_name", "pic")
205
+ * values ($1, $2)
206
+ * on conflict ("pic")
207
+ * do update set "first_name" = $3
208
+ * ```
209
+ */
210
+ doUpdateSet(updates) {
211
+ return new OnConflictUpdateBuilder({
212
+ ...this.#props,
213
+ onConflictNode: OnConflictNode.cloneWith(this.#props.onConflictNode, {
214
+ updates: parseUpdateObject(this.#props.parseContext, updates),
215
+ }),
216
+ });
217
+ }
218
+ }
219
+ preventAwait(OnConflictBuilder, "don't await OnConflictBuilder instances.");
220
+ export class OnConflictDoNothingBuilder {
221
+ #props;
222
+ constructor(props) {
223
+ this.#props = freeze(props);
224
+ }
225
+ toOperationNode() {
226
+ return this.#props.onConflictNode;
227
+ }
228
+ }
229
+ preventAwait(OnConflictDoNothingBuilder, "don't await OnConflictDoNothingBuilder instances.");
230
+ export class OnConflictUpdateBuilder {
231
+ #props;
232
+ constructor(props) {
233
+ this.#props = freeze(props);
234
+ }
235
+ where(...args) {
236
+ return new OnConflictUpdateBuilder({
237
+ ...this.#props,
238
+ onConflictNode: OnConflictNode.cloneWithUpdateWhere(this.#props.onConflictNode, parseWhereFilter(this.#props.parseContext, args)),
239
+ });
240
+ }
241
+ /**
242
+ * Specify a where condition for the update operation.
243
+ *
244
+ * See {@link WhereInterface.whereRef} for more info.
245
+ */
246
+ whereRef(lhs, op, rhs) {
247
+ return new OnConflictUpdateBuilder({
248
+ ...this.#props,
249
+ onConflictNode: OnConflictNode.cloneWithUpdateWhere(this.#props.onConflictNode, parseReferenceFilter(this.#props.parseContext, lhs, op, rhs)),
250
+ });
251
+ }
252
+ orWhere(...args) {
253
+ return new OnConflictUpdateBuilder({
254
+ ...this.#props,
255
+ onConflictNode: OnConflictNode.cloneWithUpdateOrWhere(this.#props.onConflictNode, parseWhereFilter(this.#props.parseContext, args)),
256
+ });
257
+ }
258
+ /**
259
+ * Specify a where condition for the update operation.
260
+ *
261
+ * See {@link WhereInterface.orWhereRef} for more info.
262
+ */
263
+ orWhereRef(lhs, op, rhs) {
264
+ return new OnConflictUpdateBuilder({
265
+ ...this.#props,
266
+ onConflictNode: OnConflictNode.cloneWithUpdateOrWhere(this.#props.onConflictNode, parseReferenceFilter(this.#props.parseContext, lhs, op, rhs)),
267
+ });
268
+ }
269
+ /**
270
+ * Specify a where condition for the update operation.
271
+ *
272
+ * See {@link WhereInterface.whereExists} for more info.
273
+ */
274
+ whereExists(arg) {
275
+ return new OnConflictUpdateBuilder({
276
+ ...this.#props,
277
+ onConflictNode: OnConflictNode.cloneWithUpdateWhere(this.#props.onConflictNode, parseExistFilter(this.#props.parseContext, arg)),
278
+ });
279
+ }
280
+ /**
281
+ * Specify a where condition for the update operation.
282
+ *
283
+ * See {@link WhereInterface.whereNotExists} for more info.
284
+ */
285
+ whereNotExists(arg) {
286
+ return new OnConflictUpdateBuilder({
287
+ ...this.#props,
288
+ onConflictNode: OnConflictNode.cloneWithUpdateWhere(this.#props.onConflictNode, parseNotExistFilter(this.#props.parseContext, arg)),
289
+ });
290
+ }
291
+ /**
292
+ * Specify a where condition for the update operation.
293
+ *
294
+ * See {@link WhereInterface.orWhereExists} for more info.
295
+ */
296
+ orWhereExists(arg) {
297
+ return new OnConflictUpdateBuilder({
298
+ ...this.#props,
299
+ onConflictNode: OnConflictNode.cloneWithUpdateOrWhere(this.#props.onConflictNode, parseExistFilter(this.#props.parseContext, arg)),
300
+ });
301
+ }
302
+ /**
303
+ * Specify a where condition for the update operation.
304
+ *
305
+ * See {@link WhereInterface.orWhereNotExists} for more info.
306
+ */
307
+ orWhereNotExists(arg) {
308
+ return new OnConflictUpdateBuilder({
309
+ ...this.#props,
310
+ onConflictNode: OnConflictNode.cloneWithUpdateOrWhere(this.#props.onConflictNode, parseNotExistFilter(this.#props.parseContext, arg)),
311
+ });
312
+ }
313
+ toOperationNode() {
314
+ return this.#props.onConflictNode;
315
+ }
316
+ }
317
+ preventAwait(OnConflictUpdateBuilder, "don't await OnConflictUpdateBuilder instances.");
@@ -64,7 +64,7 @@ import { ColumnNode } from '../operation-node/column-node.js';
64
64
  import { UnionNode } from '../operation-node/union-node.js';
65
65
  import { CreateViewNode } from '../operation-node/create-view-node.js';
66
66
  import { DropViewNode } from '../operation-node/drop-view-node.js';
67
- import { GeneratedAlwaysAsNode } from '../operation-node/generated-always-as-node.js';
67
+ import { GeneratedNode } from '../operation-node/generated-node.js';
68
68
  import { DefaultValueNode } from '../operation-node/default-value-node.js';
69
69
  import { OnNode } from '../operation-node/on-node.js';
70
70
  import { ValuesNode } from '../operation-node/values-node.js';
@@ -142,7 +142,7 @@ export declare class DefaultQueryCompiler extends OperationNodeVisitor implement
142
142
  protected visitUnion(node: UnionNode): void;
143
143
  protected visitCreateView(node: CreateViewNode): void;
144
144
  protected visitDropView(node: DropViewNode): void;
145
- protected visitGeneratedAlwaysAs(node: GeneratedAlwaysAsNode): void;
145
+ protected visitGenerated(node: GeneratedNode): void;
146
146
  protected visitDefaultValue(node: DefaultValueNode): void;
147
147
  protected append(str: string): void;
148
148
  protected appendValue(parameter: unknown): void;
@@ -324,9 +324,9 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
324
324
  if (node.unsigned) {
325
325
  this.append(' unsigned');
326
326
  }
327
- if (node.generatedAlwaysAs) {
327
+ if (node.generated) {
328
328
  this.append(' ');
329
- this.visitNode(node.generatedAlwaysAs);
329
+ this.visitNode(node.generated);
330
330
  }
331
331
  if (node.defaultTo) {
332
332
  this.append(' ');
@@ -451,16 +451,29 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
451
451
  this.compileList(node.columns);
452
452
  this.append(')');
453
453
  }
454
- if (node.constraint) {
454
+ else if (node.constraint) {
455
455
  this.append(' on constraint ');
456
456
  this.visitNode(node.constraint);
457
457
  }
458
+ else if (node.indexExpression) {
459
+ this.append(' (');
460
+ this.visitNode(node.indexExpression);
461
+ this.append(')');
462
+ }
463
+ if (node.indexWhere) {
464
+ this.append(' ');
465
+ this.visitNode(node.indexWhere);
466
+ }
458
467
  if (node.doNothing === true) {
459
468
  this.append(' do nothing');
460
469
  }
461
470
  else if (node.updates) {
462
471
  this.append(' do update set ');
463
472
  this.compileList(node.updates);
473
+ if (node.updateWhere) {
474
+ this.append(' ');
475
+ this.visitNode(node.updateWhere);
476
+ }
464
477
  }
465
478
  }
466
479
  visitOnDuplicateKey(node) {
@@ -722,10 +735,23 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
722
735
  }
723
736
  this.visitNode(node.name);
724
737
  }
725
- visitGeneratedAlwaysAs(node) {
726
- this.append('generated always as (');
727
- this.visitNode(node.expression);
728
- this.append(')');
738
+ visitGenerated(node) {
739
+ this.append('generated ');
740
+ if (node.always) {
741
+ this.append('always ');
742
+ }
743
+ if (node.byDefault) {
744
+ this.append('by default ');
745
+ }
746
+ this.append('as ');
747
+ if (node.identity) {
748
+ this.append('identity');
749
+ }
750
+ if (node.expression) {
751
+ this.append('(');
752
+ this.visitNode(node.expression);
753
+ this.append(')');
754
+ }
729
755
  if (node.stored) {
730
756
  this.append(' stored');
731
757
  }
@@ -31,7 +31,7 @@ export declare class AlterTableBuilder {
31
31
  */
32
32
  modifyColumn(columnName: string, dataType: DataTypeExpression): AlterTableModifyColumnBuilder;
33
33
  addUniqueConstraint(constraintName: string, columns: string[]): AlterTableExecutor;
34
- addCheckConstraint(constraintName: string, checkExpression: string): AlterTableExecutor;
34
+ addCheckConstraint(constraintName: string, checkExpression: AnyRawBuilder): AlterTableExecutor;
35
35
  addForeignKeyConstraint(constraintName: string, columns: string[], targetTable: string, targetColumns: string[]): AlterTableAddForeignKeyConstraintBuilder;
36
36
  }
37
37
  export interface AlterTableBuilderProps {
@@ -151,11 +151,13 @@ export declare class AlterTableAddColumnBuilder implements ColumnDefinitionBuild
151
151
  * ```ts
152
152
  * db.schema
153
153
  * .createTable('pet')
154
- * .addColumn('number_of_legs', 'integer', (col) => col.check('number_of_legs < 5'))
154
+ * .addColumn('number_of_legs', 'integer', (col) =>
155
+ * col.check(db.raw('number_of_legs < 5'))
156
+ * )
155
157
  * .execute()
156
158
  * ```
157
159
  */
158
- check(sql: string): AlterTableAddColumnBuilder;
160
+ check(expression: AnyRawBuilder): AlterTableAddColumnBuilder;
159
161
  /**
160
162
  * Makes the column a generated column using a `generated always as` statement.
161
163
  *
@@ -165,12 +167,20 @@ export declare class AlterTableAddColumnBuilder implements ColumnDefinitionBuild
165
167
  * db.schema
166
168
  * .createTable('person')
167
169
  * .addColumn('full_name', 'varchar(255)',
168
- * (col) => col.generatedAlwaysAs("concat(first_name, ' ', last_name)")
170
+ * (col) => col.generatedAlwaysAs(db.raw("concat(first_name, ' ', last_name)"))
169
171
  * )
170
172
  * .execute()
171
173
  * ```
172
174
  */
173
- generatedAlwaysAs(sql: string): AlterTableAddColumnBuilder;
175
+ generatedAlwaysAs(expression: AnyRawBuilder): AlterTableAddColumnBuilder;
176
+ /**
177
+ * Adds the `generated always as identity` specifier on supported dialects.
178
+ */
179
+ generatedAlwaysAsIdentity(): AlterTableAddColumnBuilder;
180
+ /**
181
+ * Adds the `generated by default as identity` specifier on supported dialects.
182
+ */
183
+ generatedByDefaultAsIdentity(): AlterTableAddColumnBuilder;
174
184
  /**
175
185
  * Makes a generated column stored instead of virtual. This method can only
176
186
  * be used with {@link generatedAlwaysAs}
@@ -286,11 +296,13 @@ export declare class AlterTableModifyColumnBuilder implements ColumnDefinitionBu
286
296
  * ```ts
287
297
  * db.schema
288
298
  * .createTable('pet')
289
- * .addColumn('number_of_legs', 'integer', (col) => col.check('number_of_legs < 5'))
299
+ * .addColumn('number_of_legs', 'integer', (col) =>
300
+ * col.check(db.raw('number_of_legs < 5'))
301
+ * )
290
302
  * .execute()
291
303
  * ```
292
304
  */
293
- check(sql: string): AlterTableModifyColumnBuilder;
305
+ check(expression: AnyRawBuilder): AlterTableModifyColumnBuilder;
294
306
  /**
295
307
  * Makes the column a generated column using a `generated always as` statement.
296
308
  *
@@ -300,12 +312,20 @@ export declare class AlterTableModifyColumnBuilder implements ColumnDefinitionBu
300
312
  * db.schema
301
313
  * .createTable('person')
302
314
  * .addColumn('full_name', 'varchar(255)',
303
- * (col) => col.generatedAlwaysAs("concat(first_name, ' ', last_name)")
315
+ * (col) => col.generatedAlwaysAs(db.raw("concat(first_name, ' ', last_name)"))
304
316
  * )
305
317
  * .execute()
306
318
  * ```
307
319
  */
308
- generatedAlwaysAs(sql: string): AlterTableModifyColumnBuilder;
320
+ generatedAlwaysAs(expression: AnyRawBuilder): AlterTableModifyColumnBuilder;
321
+ /**
322
+ * Adds the `generated always as identity` specifier on supported dialects.
323
+ */
324
+ generatedAlwaysAsIdentity(): AlterTableModifyColumnBuilder;
325
+ /**
326
+ * Adds the `generated by default as identity` specifier on supported dialects.
327
+ */
328
+ generatedByDefaultAsIdentity(): AlterTableModifyColumnBuilder;
309
329
  /**
310
330
  * Makes a generated column stored instead of virtual. This method can only
311
331
  * be used with {@link generatedAlwaysAs}
@@ -95,7 +95,7 @@ export class AlterTableBuilder {
95
95
  return new AlterTableExecutor({
96
96
  ...this.#props,
97
97
  alterTableNode: AlterTableNode.cloneWith(this.#props.alterTableNode, {
98
- addConstraint: AddConstraintNode.create(CheckConstraintNode.create(checkExpression, constraintName)),
98
+ addConstraint: AddConstraintNode.create(CheckConstraintNode.create(checkExpression.toOperationNode(), constraintName)),
99
99
  }),
100
100
  });
101
101
  }
@@ -238,16 +238,28 @@ export class AlterTableAddColumnBuilder {
238
238
  columnBuilder: this.#props.columnBuilder.defaultTo(value),
239
239
  });
240
240
  }
241
- check(sql) {
241
+ check(expression) {
242
242
  return new AlterTableAddColumnBuilder({
243
243
  ...this.#props,
244
- columnBuilder: this.#props.columnBuilder.check(sql),
244
+ columnBuilder: this.#props.columnBuilder.check(expression),
245
245
  });
246
246
  }
247
- generatedAlwaysAs(sql) {
247
+ generatedAlwaysAs(expression) {
248
248
  return new AlterTableAddColumnBuilder({
249
249
  ...this.#props,
250
- columnBuilder: this.#props.columnBuilder.generatedAlwaysAs(sql),
250
+ columnBuilder: this.#props.columnBuilder.generatedAlwaysAs(expression),
251
+ });
252
+ }
253
+ generatedAlwaysAsIdentity() {
254
+ return new AlterTableAddColumnBuilder({
255
+ ...this.#props,
256
+ columnBuilder: this.#props.columnBuilder.generatedAlwaysAsIdentity(),
257
+ });
258
+ }
259
+ generatedByDefaultAsIdentity() {
260
+ return new AlterTableAddColumnBuilder({
261
+ ...this.#props,
262
+ columnBuilder: this.#props.columnBuilder.generatedByDefaultAsIdentity(),
251
263
  });
252
264
  }
253
265
  stored() {
@@ -327,16 +339,28 @@ export class AlterTableModifyColumnBuilder {
327
339
  columnBuilder: this.#props.columnBuilder.defaultTo(value),
328
340
  });
329
341
  }
330
- check(sql) {
342
+ check(expression) {
343
+ return new AlterTableModifyColumnBuilder({
344
+ ...this.#props,
345
+ columnBuilder: this.#props.columnBuilder.check(expression),
346
+ });
347
+ }
348
+ generatedAlwaysAs(expression) {
349
+ return new AlterTableModifyColumnBuilder({
350
+ ...this.#props,
351
+ columnBuilder: this.#props.columnBuilder.generatedAlwaysAs(expression),
352
+ });
353
+ }
354
+ generatedAlwaysAsIdentity() {
331
355
  return new AlterTableModifyColumnBuilder({
332
356
  ...this.#props,
333
- columnBuilder: this.#props.columnBuilder.check(sql),
357
+ columnBuilder: this.#props.columnBuilder.generatedAlwaysAsIdentity(),
334
358
  });
335
359
  }
336
- generatedAlwaysAs(sql) {
360
+ generatedByDefaultAsIdentity() {
337
361
  return new AlterTableModifyColumnBuilder({
338
362
  ...this.#props,
339
- columnBuilder: this.#props.columnBuilder.generatedAlwaysAs(sql),
363
+ columnBuilder: this.#props.columnBuilder.generatedByDefaultAsIdentity(),
340
364
  });
341
365
  }
342
366
  stored() {
@@ -93,11 +93,13 @@ export interface ColumnDefinitionBuilderInterface {
93
93
  * ```ts
94
94
  * db.schema
95
95
  * .createTable('pet')
96
- * .addColumn('number_of_legs', 'integer', (col) => col.check('number_of_legs < 5'))
96
+ * .addColumn('number_of_legs', 'integer', (col) =>
97
+ * col.check(db.raw('number_of_legs < 5'))
98
+ * )
97
99
  * .execute()
98
100
  * ```
99
101
  */
100
- check(sql: string): ColumnDefinitionBuilderInterface;
102
+ check(expression: AnyRawBuilder): ColumnDefinitionBuilderInterface;
101
103
  /**
102
104
  * Makes the column a generated column using a `generated always as` statement.
103
105
  *
@@ -107,12 +109,20 @@ export interface ColumnDefinitionBuilderInterface {
107
109
  * db.schema
108
110
  * .createTable('person')
109
111
  * .addColumn('full_name', 'varchar(255)',
110
- * (col) => col.generatedAlwaysAs("concat(first_name, ' ', last_name)")
112
+ * (col) => col.generatedAlwaysAs(db.raw("concat(first_name, ' ', last_name)"))
111
113
  * )
112
114
  * .execute()
113
115
  * ```
114
116
  */
115
- generatedAlwaysAs(sql: string): ColumnDefinitionBuilderInterface;
117
+ generatedAlwaysAs(expression: AnyRawBuilder): ColumnDefinitionBuilderInterface;
118
+ /**
119
+ * Adds the `generated always as identity` specifier on supported dialects.
120
+ */
121
+ generatedAlwaysAsIdentity(): ColumnDefinitionBuilderInterface;
122
+ /**
123
+ * Adds the `generated by default as identity` specifier on supported dialects.
124
+ */
125
+ generatedByDefaultAsIdentity(): ColumnDefinitionBuilderInterface;
116
126
  /**
117
127
  * Makes a generated column stored instead of virtual. This method can only
118
128
  * be used with {@link generatedAlwaysAs}
@@ -222,11 +232,13 @@ export declare class ColumnDefinitionBuilder implements ColumnDefinitionBuilderI
222
232
  * ```ts
223
233
  * db.schema
224
234
  * .createTable('pet')
225
- * .addColumn('number_of_legs', 'integer', (col) => col.check('number_of_legs < 5'))
235
+ * .addColumn('number_of_legs', 'integer', (col) =>
236
+ * col.check(db.raw('number_of_legs < 5'))
237
+ * )
226
238
  * .execute()
227
239
  * ```
228
240
  */
229
- check(sql: string): ColumnDefinitionBuilder;
241
+ check(expression: AnyRawBuilder): ColumnDefinitionBuilder;
230
242
  /**
231
243
  * Makes the column a generated column using a `generated always as` statement.
232
244
  *
@@ -236,12 +248,20 @@ export declare class ColumnDefinitionBuilder implements ColumnDefinitionBuilderI
236
248
  * db.schema
237
249
  * .createTable('person')
238
250
  * .addColumn('full_name', 'varchar(255)',
239
- * (col) => col.generatedAlwaysAs("concat(first_name, ' ', last_name)")
251
+ * (col) => col.generatedAlwaysAs(db.raw("concat(first_name, ' ', last_name)"))
240
252
  * )
241
253
  * .execute()
242
254
  * ```
243
255
  */
244
- generatedAlwaysAs(sql: string): ColumnDefinitionBuilder;
256
+ generatedAlwaysAs(expression: AnyRawBuilder): ColumnDefinitionBuilder;
257
+ /**
258
+ * Adds the `generated always as identity` specifier on supported dialects.
259
+ */
260
+ generatedAlwaysAsIdentity(): ColumnDefinitionBuilder;
261
+ /**
262
+ * Adds the `generated by default as identity` specifier on supported dialects.
263
+ */
264
+ generatedByDefaultAsIdentity(): ColumnDefinitionBuilder;
245
265
  /**
246
266
  * Makes a generated column stored instead of virtual. This method can only
247
267
  * be used with {@link generatedAlwaysAs}