kysely 0.12.1 → 0.14.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 (140) hide show
  1. package/README.md +34 -10
  2. package/dist/cjs/{introspection → dialect}/database-introspector.d.ts +0 -0
  3. package/dist/cjs/{introspection → dialect}/database-introspector.js +0 -0
  4. package/dist/cjs/dialect/dialect.d.ts +1 -1
  5. package/dist/cjs/dialect/mysql/mysql-adapter.d.ts +2 -2
  6. package/dist/cjs/dialect/mysql/mysql-adapter.js +2 -1
  7. package/dist/cjs/dialect/mysql/mysql-dialect.d.ts +1 -1
  8. package/dist/cjs/dialect/mysql/mysql-introspector.d.ts +1 -1
  9. package/dist/cjs/dialect/postgres/postgres-adapter.d.ts +2 -2
  10. package/dist/cjs/dialect/postgres/postgres-adapter.js +2 -1
  11. package/dist/cjs/dialect/postgres/postgres-dialect.d.ts +1 -1
  12. package/dist/cjs/dialect/postgres/postgres-introspector.d.ts +1 -1
  13. package/dist/cjs/dialect/sqlite/sqlite-adapter.d.ts +2 -2
  14. package/dist/cjs/dialect/sqlite/sqlite-dialect.d.ts +1 -1
  15. package/dist/cjs/dialect/sqlite/sqlite-introspector.d.ts +1 -1
  16. package/dist/cjs/index.d.ts +5 -3
  17. package/dist/cjs/index.js +4 -2
  18. package/dist/cjs/kysely.d.ts +152 -1
  19. package/dist/cjs/kysely.js +37 -0
  20. package/dist/cjs/migration/migration.d.ts +154 -11
  21. package/dist/cjs/migration/migration.js +256 -135
  22. package/dist/cjs/operation-node/check-constraint-node.d.ts +1 -1
  23. package/dist/cjs/operation-node/check-constraint-node.js +2 -3
  24. package/dist/cjs/operation-node/column-definition-node.d.ts +8 -7
  25. package/dist/cjs/operation-node/column-definition-node.js +0 -4
  26. package/dist/cjs/operation-node/common-table-expression-name-node.d.ts +15 -0
  27. package/dist/cjs/operation-node/common-table-expression-name-node.js +23 -0
  28. package/dist/cjs/operation-node/common-table-expression-node.d.ts +3 -3
  29. package/dist/cjs/operation-node/data-type-node.d.ts +1 -1
  30. package/dist/cjs/operation-node/generated-node.d.ts +20 -0
  31. package/dist/cjs/operation-node/generated-node.js +31 -0
  32. package/dist/cjs/operation-node/on-conflict-node.d.ts +13 -2
  33. package/dist/cjs/operation-node/on-conflict-node.js +39 -1
  34. package/dist/cjs/operation-node/operation-node-transformer.d.ts +4 -2
  35. package/dist/cjs/operation-node/operation-node-transformer.js +22 -6
  36. package/dist/cjs/operation-node/operation-node-visitor.d.ts +4 -2
  37. package/dist/cjs/operation-node/operation-node-visitor.js +2 -1
  38. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  39. package/dist/cjs/operation-node/with-node.d.ts +3 -1
  40. package/dist/cjs/operation-node/with-node.js +2 -1
  41. package/dist/cjs/parser/reference-parser.d.ts +2 -2
  42. package/dist/cjs/parser/select-parser.d.ts +2 -2
  43. package/dist/cjs/parser/with-parser.d.ts +32 -5
  44. package/dist/cjs/parser/with-parser.js +13 -2
  45. package/dist/cjs/plugin/camel-case/camel-case-plugin.d.ts +2 -2
  46. package/dist/cjs/plugin/with-schema/with-schema-transformer.js +8 -0
  47. package/dist/cjs/query-builder/insert-query-builder.d.ts +76 -75
  48. package/dist/cjs/query-builder/insert-query-builder.js +150 -15
  49. package/dist/cjs/query-builder/on-conflict-builder.d.ts +686 -0
  50. package/dist/cjs/query-builder/on-conflict-builder.js +323 -0
  51. package/dist/cjs/query-compiler/default-query-compiler.d.ts +4 -2
  52. package/dist/cjs/query-compiler/default-query-compiler.js +48 -8
  53. package/dist/cjs/query-creator.d.ts +27 -3
  54. package/dist/cjs/query-creator.js +33 -1
  55. package/dist/cjs/query-executor/default-query-executor.d.ts +19 -0
  56. package/dist/cjs/query-executor/noop-query-executor.d.ts +19 -0
  57. package/dist/cjs/raw-builder/raw-builder.js +1 -1
  58. package/dist/cjs/schema/alter-table-builder.d.ts +41 -9
  59. package/dist/cjs/schema/alter-table-builder.js +45 -9
  60. package/dist/cjs/schema/column-definition-builder.d.ts +40 -8
  61. package/dist/cjs/schema/column-definition-builder.js +21 -8
  62. package/dist/cjs/schema/create-index-builder.d.ts +3 -2
  63. package/dist/cjs/schema/create-index-builder.js +2 -2
  64. package/dist/cjs/schema/create-table-builder.d.ts +3 -2
  65. package/dist/cjs/schema/create-table-builder.js +2 -2
  66. package/dist/cjs/util/type-utils.d.ts +11 -7
  67. package/dist/esm/{introspection → dialect}/database-introspector.d.ts +0 -0
  68. package/dist/esm/{introspection → dialect}/database-introspector.js +0 -0
  69. package/dist/esm/dialect/dialect.d.ts +1 -1
  70. package/dist/esm/dialect/mysql/mysql-adapter.d.ts +2 -2
  71. package/dist/esm/dialect/mysql/mysql-adapter.js +2 -1
  72. package/dist/esm/dialect/mysql/mysql-dialect.d.ts +1 -1
  73. package/dist/esm/dialect/mysql/mysql-introspector.d.ts +1 -1
  74. package/dist/esm/dialect/postgres/postgres-adapter.d.ts +2 -2
  75. package/dist/esm/dialect/postgres/postgres-adapter.js +2 -1
  76. package/dist/esm/dialect/postgres/postgres-dialect.d.ts +1 -1
  77. package/dist/esm/dialect/postgres/postgres-introspector.d.ts +1 -1
  78. package/dist/esm/dialect/sqlite/sqlite-adapter.d.ts +2 -2
  79. package/dist/esm/dialect/sqlite/sqlite-dialect.d.ts +1 -1
  80. package/dist/esm/dialect/sqlite/sqlite-introspector.d.ts +1 -1
  81. package/dist/esm/index.d.ts +5 -3
  82. package/dist/esm/index.js +4 -2
  83. package/dist/esm/kysely.d.ts +152 -1
  84. package/dist/esm/kysely.js +37 -0
  85. package/dist/esm/migration/migration.d.ts +154 -11
  86. package/dist/esm/migration/migration.js +255 -134
  87. package/dist/esm/operation-node/check-constraint-node.d.ts +1 -1
  88. package/dist/esm/operation-node/check-constraint-node.js +2 -3
  89. package/dist/esm/operation-node/column-definition-node.d.ts +8 -7
  90. package/dist/esm/operation-node/column-definition-node.js +0 -4
  91. package/dist/esm/operation-node/common-table-expression-name-node.d.ts +15 -0
  92. package/dist/esm/operation-node/common-table-expression-name-node.js +20 -0
  93. package/dist/esm/operation-node/common-table-expression-node.d.ts +3 -3
  94. package/dist/esm/operation-node/data-type-node.d.ts +1 -1
  95. package/dist/esm/operation-node/generated-node.d.ts +20 -0
  96. package/dist/esm/operation-node/generated-node.js +28 -0
  97. package/dist/esm/operation-node/on-conflict-node.d.ts +13 -2
  98. package/dist/esm/operation-node/on-conflict-node.js +39 -1
  99. package/dist/esm/operation-node/operation-node-transformer.d.ts +4 -2
  100. package/dist/esm/operation-node/operation-node-transformer.js +22 -6
  101. package/dist/esm/operation-node/operation-node-visitor.d.ts +4 -2
  102. package/dist/esm/operation-node/operation-node-visitor.js +2 -1
  103. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  104. package/dist/esm/operation-node/with-node.d.ts +3 -1
  105. package/dist/esm/operation-node/with-node.js +2 -1
  106. package/dist/esm/parser/reference-parser.d.ts +2 -2
  107. package/dist/esm/parser/select-parser.d.ts +2 -2
  108. package/dist/esm/parser/with-parser.d.ts +32 -5
  109. package/dist/esm/parser/with-parser.js +13 -2
  110. package/dist/esm/plugin/camel-case/camel-case-plugin.d.ts +2 -2
  111. package/dist/esm/plugin/with-schema/with-schema-transformer.js +8 -0
  112. package/dist/esm/query-builder/insert-query-builder.d.ts +76 -75
  113. package/dist/esm/query-builder/insert-query-builder.js +150 -15
  114. package/dist/esm/query-builder/on-conflict-builder.d.ts +686 -0
  115. package/dist/esm/query-builder/on-conflict-builder.js +317 -0
  116. package/dist/esm/query-compiler/default-query-compiler.d.ts +4 -2
  117. package/dist/esm/query-compiler/default-query-compiler.js +48 -8
  118. package/dist/esm/query-creator.d.ts +27 -3
  119. package/dist/esm/query-creator.js +33 -1
  120. package/dist/esm/query-executor/default-query-executor.d.ts +19 -0
  121. package/dist/esm/query-executor/noop-query-executor.d.ts +19 -0
  122. package/dist/esm/raw-builder/raw-builder.js +1 -1
  123. package/dist/esm/schema/alter-table-builder.d.ts +41 -9
  124. package/dist/esm/schema/alter-table-builder.js +45 -9
  125. package/dist/esm/schema/column-definition-builder.d.ts +40 -8
  126. package/dist/esm/schema/column-definition-builder.js +21 -8
  127. package/dist/esm/schema/create-index-builder.d.ts +3 -2
  128. package/dist/esm/schema/create-index-builder.js +2 -2
  129. package/dist/esm/schema/create-table-builder.d.ts +3 -2
  130. package/dist/esm/schema/create-table-builder.js +2 -2
  131. package/dist/esm/util/type-utils.d.ts +11 -7
  132. package/package.json +2 -2
  133. package/dist/cjs/operation-node/generated-always-as-node.d.ts +0 -16
  134. package/dist/cjs/operation-node/generated-always-as-node.js +0 -25
  135. package/dist/cjs/parser/on-conflict-parser.d.ts +0 -10
  136. package/dist/cjs/parser/on-conflict-parser.js +0 -35
  137. package/dist/esm/operation-node/generated-always-as-node.d.ts +0 -16
  138. package/dist/esm/operation-node/generated-always-as-node.js +0 -22
  139. package/dist/esm/parser/on-conflict-parser.d.ts +0 -10
  140. package/dist/esm/parser/on-conflict-parser.js +0 -30
@@ -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 {
@@ -124,6 +124,12 @@ export declare class AlterTableAddColumnBuilder implements ColumnDefinitionBuild
124
124
  * Adds a `not null` constraint for the column.
125
125
  */
126
126
  notNull(): AlterTableAddColumnBuilder;
127
+ /**
128
+ * Adds a `unsigned` modifier for the column.
129
+ *
130
+ * This only works on some dialects like MySQL.
131
+ */
132
+ unsigned(): AlterTableAddColumnBuilder;
127
133
  /**
128
134
  * Adds a default value constraint for the column.
129
135
  *
@@ -145,11 +151,13 @@ export declare class AlterTableAddColumnBuilder implements ColumnDefinitionBuild
145
151
  * ```ts
146
152
  * db.schema
147
153
  * .createTable('pet')
148
- * .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
+ * )
149
157
  * .execute()
150
158
  * ```
151
159
  */
152
- check(sql: string): AlterTableAddColumnBuilder;
160
+ check(expression: AnyRawBuilder): AlterTableAddColumnBuilder;
153
161
  /**
154
162
  * Makes the column a generated column using a `generated always as` statement.
155
163
  *
@@ -159,12 +167,20 @@ export declare class AlterTableAddColumnBuilder implements ColumnDefinitionBuild
159
167
  * db.schema
160
168
  * .createTable('person')
161
169
  * .addColumn('full_name', 'varchar(255)',
162
- * (col) => col.generatedAlwaysAs("concat(first_name, ' ', last_name)")
170
+ * (col) => col.generatedAlwaysAs(db.raw("concat(first_name, ' ', last_name)"))
163
171
  * )
164
172
  * .execute()
165
173
  * ```
166
174
  */
167
- 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;
168
184
  /**
169
185
  * Makes a generated column stored instead of virtual. This method can only
170
186
  * be used with {@link generatedAlwaysAs}
@@ -253,6 +269,12 @@ export declare class AlterTableModifyColumnBuilder implements ColumnDefinitionBu
253
269
  * Adds a `not null` constraint for the column.
254
270
  */
255
271
  notNull(): AlterTableModifyColumnBuilder;
272
+ /**
273
+ * Adds a `unsigned` modifier for the column.
274
+ *
275
+ * This only works on some dialects like MySQL.
276
+ */
277
+ unsigned(): AlterTableModifyColumnBuilder;
256
278
  /**
257
279
  * Adds a default value constraint for the column.
258
280
  *
@@ -274,11 +296,13 @@ export declare class AlterTableModifyColumnBuilder implements ColumnDefinitionBu
274
296
  * ```ts
275
297
  * db.schema
276
298
  * .createTable('pet')
277
- * .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
+ * )
278
302
  * .execute()
279
303
  * ```
280
304
  */
281
- check(sql: string): AlterTableModifyColumnBuilder;
305
+ check(expression: AnyRawBuilder): AlterTableModifyColumnBuilder;
282
306
  /**
283
307
  * Makes the column a generated column using a `generated always as` statement.
284
308
  *
@@ -288,12 +312,20 @@ export declare class AlterTableModifyColumnBuilder implements ColumnDefinitionBu
288
312
  * db.schema
289
313
  * .createTable('person')
290
314
  * .addColumn('full_name', 'varchar(255)',
291
- * (col) => col.generatedAlwaysAs("concat(first_name, ' ', last_name)")
315
+ * (col) => col.generatedAlwaysAs(db.raw("concat(first_name, ' ', last_name)"))
292
316
  * )
293
317
  * .execute()
294
318
  * ```
295
319
  */
296
- 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;
297
329
  /**
298
330
  * Makes a generated column stored instead of virtual. This method can only
299
331
  * be used with {@link generatedAlwaysAs}
@@ -98,7 +98,7 @@ class AlterTableBuilder {
98
98
  return new AlterTableExecutor({
99
99
  ...this.#props,
100
100
  alterTableNode: alter_table_node_js_1.AlterTableNode.cloneWith(this.#props.alterTableNode, {
101
- addConstraint: add_constraint_node_js_1.AddConstraintNode.create(check_constraint_node_js_1.CheckConstraintNode.create(checkExpression, constraintName)),
101
+ addConstraint: add_constraint_node_js_1.AddConstraintNode.create(check_constraint_node_js_1.CheckConstraintNode.create(checkExpression.toOperationNode(), constraintName)),
102
102
  }),
103
103
  });
104
104
  }
@@ -232,22 +232,40 @@ class AlterTableAddColumnBuilder {
232
232
  columnBuilder: this.#props.columnBuilder.notNull(),
233
233
  });
234
234
  }
235
+ unsigned() {
236
+ return new AlterTableAddColumnBuilder({
237
+ ...this.#props,
238
+ columnBuilder: this.#props.columnBuilder.unsigned(),
239
+ });
240
+ }
235
241
  defaultTo(value) {
236
242
  return new AlterTableAddColumnBuilder({
237
243
  ...this.#props,
238
244
  columnBuilder: this.#props.columnBuilder.defaultTo(value),
239
245
  });
240
246
  }
241
- check(sql) {
247
+ check(expression) {
248
+ return new AlterTableAddColumnBuilder({
249
+ ...this.#props,
250
+ columnBuilder: this.#props.columnBuilder.check(expression),
251
+ });
252
+ }
253
+ generatedAlwaysAs(expression) {
254
+ return new AlterTableAddColumnBuilder({
255
+ ...this.#props,
256
+ columnBuilder: this.#props.columnBuilder.generatedAlwaysAs(expression),
257
+ });
258
+ }
259
+ generatedAlwaysAsIdentity() {
242
260
  return new AlterTableAddColumnBuilder({
243
261
  ...this.#props,
244
- columnBuilder: this.#props.columnBuilder.check(sql),
262
+ columnBuilder: this.#props.columnBuilder.generatedAlwaysAsIdentity(),
245
263
  });
246
264
  }
247
- generatedAlwaysAs(sql) {
265
+ generatedByDefaultAsIdentity() {
248
266
  return new AlterTableAddColumnBuilder({
249
267
  ...this.#props,
250
- columnBuilder: this.#props.columnBuilder.generatedAlwaysAs(sql),
268
+ columnBuilder: this.#props.columnBuilder.generatedByDefaultAsIdentity(),
251
269
  });
252
270
  }
253
271
  stored() {
@@ -316,22 +334,40 @@ class AlterTableModifyColumnBuilder {
316
334
  columnBuilder: this.#props.columnBuilder.notNull(),
317
335
  });
318
336
  }
337
+ unsigned() {
338
+ return new AlterTableModifyColumnBuilder({
339
+ ...this.#props,
340
+ columnBuilder: this.#props.columnBuilder.unsigned(),
341
+ });
342
+ }
319
343
  defaultTo(value) {
320
344
  return new AlterTableModifyColumnBuilder({
321
345
  ...this.#props,
322
346
  columnBuilder: this.#props.columnBuilder.defaultTo(value),
323
347
  });
324
348
  }
325
- check(sql) {
349
+ check(expression) {
350
+ return new AlterTableModifyColumnBuilder({
351
+ ...this.#props,
352
+ columnBuilder: this.#props.columnBuilder.check(expression),
353
+ });
354
+ }
355
+ generatedAlwaysAs(expression) {
356
+ return new AlterTableModifyColumnBuilder({
357
+ ...this.#props,
358
+ columnBuilder: this.#props.columnBuilder.generatedAlwaysAs(expression),
359
+ });
360
+ }
361
+ generatedAlwaysAsIdentity() {
326
362
  return new AlterTableModifyColumnBuilder({
327
363
  ...this.#props,
328
- columnBuilder: this.#props.columnBuilder.check(sql),
364
+ columnBuilder: this.#props.columnBuilder.generatedAlwaysAsIdentity(),
329
365
  });
330
366
  }
331
- generatedAlwaysAs(sql) {
367
+ generatedByDefaultAsIdentity() {
332
368
  return new AlterTableModifyColumnBuilder({
333
369
  ...this.#props,
334
- columnBuilder: this.#props.columnBuilder.generatedAlwaysAs(sql),
370
+ columnBuilder: this.#props.columnBuilder.generatedByDefaultAsIdentity(),
335
371
  });
336
372
  }
337
373
  stored() {
@@ -66,6 +66,12 @@ export interface ColumnDefinitionBuilderInterface {
66
66
  * Adds a `not null` constraint for the column.
67
67
  */
68
68
  notNull(): ColumnDefinitionBuilderInterface;
69
+ /**
70
+ * Adds a `unsigned` modifier for the column.
71
+ *
72
+ * This only works on some dialects like MySQL.
73
+ */
74
+ unsigned(): ColumnDefinitionBuilderInterface;
69
75
  /**
70
76
  * Adds a default value constraint for the column.
71
77
  *
@@ -87,11 +93,13 @@ export interface ColumnDefinitionBuilderInterface {
87
93
  * ```ts
88
94
  * db.schema
89
95
  * .createTable('pet')
90
- * .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
+ * )
91
99
  * .execute()
92
100
  * ```
93
101
  */
94
- check(sql: string): ColumnDefinitionBuilderInterface;
102
+ check(expression: AnyRawBuilder): ColumnDefinitionBuilderInterface;
95
103
  /**
96
104
  * Makes the column a generated column using a `generated always as` statement.
97
105
  *
@@ -101,12 +109,20 @@ export interface ColumnDefinitionBuilderInterface {
101
109
  * db.schema
102
110
  * .createTable('person')
103
111
  * .addColumn('full_name', 'varchar(255)',
104
- * (col) => col.generatedAlwaysAs("concat(first_name, ' ', last_name)")
112
+ * (col) => col.generatedAlwaysAs(db.raw("concat(first_name, ' ', last_name)"))
105
113
  * )
106
114
  * .execute()
107
115
  * ```
108
116
  */
109
- 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;
110
126
  /**
111
127
  * Makes a generated column stored instead of virtual. This method can only
112
128
  * be used with {@link generatedAlwaysAs}
@@ -189,6 +205,12 @@ export declare class ColumnDefinitionBuilder implements ColumnDefinitionBuilderI
189
205
  * Adds a `not null` constraint for the column.
190
206
  */
191
207
  notNull(): ColumnDefinitionBuilder;
208
+ /**
209
+ * Adds a `unsigned` modifier for the column.
210
+ *
211
+ * This only works on some dialects like MySQL.
212
+ */
213
+ unsigned(): ColumnDefinitionBuilder;
192
214
  /**
193
215
  * Adds a default value constraint for the column.
194
216
  *
@@ -210,11 +232,13 @@ export declare class ColumnDefinitionBuilder implements ColumnDefinitionBuilderI
210
232
  * ```ts
211
233
  * db.schema
212
234
  * .createTable('pet')
213
- * .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
+ * )
214
238
  * .execute()
215
239
  * ```
216
240
  */
217
- check(sql: string): ColumnDefinitionBuilder;
241
+ check(expression: AnyRawBuilder): ColumnDefinitionBuilder;
218
242
  /**
219
243
  * Makes the column a generated column using a `generated always as` statement.
220
244
  *
@@ -224,12 +248,20 @@ export declare class ColumnDefinitionBuilder implements ColumnDefinitionBuilderI
224
248
  * db.schema
225
249
  * .createTable('person')
226
250
  * .addColumn('full_name', 'varchar(255)',
227
- * (col) => col.generatedAlwaysAs("concat(first_name, ' ', last_name)")
251
+ * (col) => col.generatedAlwaysAs(db.raw("concat(first_name, ' ', last_name)"))
228
252
  * )
229
253
  * .execute()
230
254
  * ```
231
255
  */
232
- 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;
233
265
  /**
234
266
  * Makes a generated column stored instead of virtual. This method can only
235
267
  * be used with {@link generatedAlwaysAs}
@@ -9,7 +9,7 @@ const reference_parser_js_1 = require("../parser/reference-parser.js");
9
9
  const prevent_await_js_1 = require("../util/prevent-await.js");
10
10
  const column_definition_node_js_1 = require("../operation-node/column-definition-node.js");
11
11
  const default_value_parser_js_1 = require("../parser/default-value-parser.js");
12
- const generated_always_as_node_js_1 = require("../operation-node/generated-always-as-node.js");
12
+ const generated_node_js_1 = require("../operation-node/generated-node.js");
13
13
  const default_value_node_js_1 = require("../operation-node/default-value-node.js");
14
14
  class ColumnDefinitionBuilder {
15
15
  #node;
@@ -53,29 +53,42 @@ class ColumnDefinitionBuilder {
53
53
  return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWith(this.#node, { unique: true }));
54
54
  }
55
55
  notNull() {
56
- return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWith(this.#node, { nullable: false }));
56
+ return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWith(this.#node, { notNull: true }));
57
+ }
58
+ unsigned() {
59
+ return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWith(this.#node, { unsigned: true }));
57
60
  }
58
61
  defaultTo(value) {
59
62
  return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWith(this.#node, {
60
63
  defaultTo: default_value_node_js_1.DefaultValueNode.create((0, default_value_parser_js_1.parseDefaultValueExpression)(value)),
61
64
  }));
62
65
  }
63
- check(sql) {
66
+ check(expression) {
67
+ return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWith(this.#node, {
68
+ check: check_constraint_node_js_1.CheckConstraintNode.create(expression.toOperationNode()),
69
+ }));
70
+ }
71
+ generatedAlwaysAs(expression) {
72
+ return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWith(this.#node, {
73
+ generated: generated_node_js_1.GeneratedNode.createWithExpression(expression.toOperationNode()),
74
+ }));
75
+ }
76
+ generatedAlwaysAsIdentity() {
64
77
  return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWith(this.#node, {
65
- check: check_constraint_node_js_1.CheckConstraintNode.create(sql),
78
+ generated: generated_node_js_1.GeneratedNode.create({ identity: true, always: true }),
66
79
  }));
67
80
  }
68
- generatedAlwaysAs(sql) {
81
+ generatedByDefaultAsIdentity() {
69
82
  return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWith(this.#node, {
70
- generatedAlwaysAs: generated_always_as_node_js_1.GeneratedAlwaysAsNode.create(sql),
83
+ generated: generated_node_js_1.GeneratedNode.create({ identity: true, byDefault: true }),
71
84
  }));
72
85
  }
73
86
  stored() {
74
- if (!this.#node.generatedAlwaysAs) {
87
+ if (!this.#node.generated) {
75
88
  throw new Error('stored() can only be called after generatedAlwaysAs');
76
89
  }
77
90
  return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWith(this.#node, {
78
- generatedAlwaysAs: generated_always_as_node_js_1.GeneratedAlwaysAsNode.cloneWith(this.#node.generatedAlwaysAs, {
91
+ generated: generated_node_js_1.GeneratedNode.cloneWith(this.#node.generated, {
79
92
  stored: true,
80
93
  }),
81
94
  }));
@@ -4,6 +4,7 @@ import { CompiledQuery } from '../query-compiler/compiled-query.js';
4
4
  import { Compilable } from '../util/compilable.js';
5
5
  import { QueryExecutor } from '../query-executor/query-executor.js';
6
6
  import { QueryId } from '../util/query-id.js';
7
+ import { AnyRawBuilder } from '../util/type-utils.js';
7
8
  export declare class CreateIndexBuilder implements OperationNodeSource, Compilable {
8
9
  #private;
9
10
  constructor(props: CreateIndexBuilderProps);
@@ -36,11 +37,11 @@ export declare class CreateIndexBuilder implements OperationNodeSource, Compilab
36
37
  * await db.schema
37
38
  * .createIndex('person_first_name_index')
38
39
  * .on('person')
39
- * .expression('first_name COLLATE "fi_FI"')
40
+ * .expression(db.raw('first_name COLLATE "fi_FI"'))
40
41
  * .execute()
41
42
  * ```
42
43
  */
43
- expression(expression: string): CreateIndexBuilder;
44
+ expression(expression: AnyRawBuilder): CreateIndexBuilder;
44
45
  /**
45
46
  * Specifies the index type.
46
47
  */
@@ -70,7 +70,7 @@ class CreateIndexBuilder {
70
70
  * await db.schema
71
71
  * .createIndex('person_first_name_index')
72
72
  * .on('person')
73
- * .expression('first_name COLLATE "fi_FI"')
73
+ * .expression(db.raw('first_name COLLATE "fi_FI"'))
74
74
  * .execute()
75
75
  * ```
76
76
  */
@@ -78,7 +78,7 @@ class CreateIndexBuilder {
78
78
  return new CreateIndexBuilder({
79
79
  ...this.#props,
80
80
  createIndexNode: create_index_node_js_1.CreateIndexNode.cloneWith(this.#props.createIndexNode, {
81
- expression: raw_node_js_1.RawNode.createWithSql(expression),
81
+ expression: expression.toOperationNode(),
82
82
  }),
83
83
  });
84
84
  }
@@ -7,6 +7,7 @@ import { ColumnDefinitionBuilder } from './column-definition-builder.js';
7
7
  import { QueryId } from '../util/query-id.js';
8
8
  import { ForeignKeyConstraintBuilder } from './foreign-key-constraint-builder.js';
9
9
  import { DataTypeExpression } from '../parser/data-type-parser.js';
10
+ import { AnyRawBuilder } from '../util/type-utils.js';
10
11
  /**
11
12
  * This builder can be used to create a `create table` query.
12
13
  */
@@ -110,10 +111,10 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
110
111
  * ### Examples
111
112
  *
112
113
  * ```ts
113
- * addCheckConstraint('check_legs', 'number_of_legs < 5')
114
+ * addCheckConstraint('check_legs', db.raw('number_of_legs < 5'))
114
115
  * ```
115
116
  */
116
- addCheckConstraint(constraintName: string, checkExpression: string): CreateTableBuilder<TB, C>;
117
+ addCheckConstraint(constraintName: string, checkExpression: AnyRawBuilder): CreateTableBuilder<TB, C>;
117
118
  /**
118
119
  * Adds a foreign key constraint.
119
120
  *
@@ -156,13 +156,13 @@ class CreateTableBuilder {
156
156
  * ### Examples
157
157
  *
158
158
  * ```ts
159
- * addCheckConstraint('check_legs', 'number_of_legs < 5')
159
+ * addCheckConstraint('check_legs', db.raw('number_of_legs < 5'))
160
160
  * ```
161
161
  */
162
162
  addCheckConstraint(constraintName, checkExpression) {
163
163
  return new CreateTableBuilder({
164
164
  ...this.#props,
165
- createTableNode: create_table_node_js_1.CreateTableNode.cloneWithConstraint(this.#props.createTableNode, check_constraint_node_js_1.CheckConstraintNode.create(checkExpression, constraintName)),
165
+ createTableNode: create_table_node_js_1.CreateTableNode.cloneWithConstraint(this.#props.createTableNode, check_constraint_node_js_1.CheckConstraintNode.create(checkExpression.toOperationNode(), constraintName)),
166
166
  });
167
167
  }
168
168
  /**
@@ -39,12 +39,11 @@ export declare type ValueType<T> = T[keyof T];
39
39
  * // Row == Person & Movie
40
40
  * ```
41
41
  */
42
- export declare type RowType<DB, TB extends keyof DB> = UnionToIntersection<DB[TB]>;
43
- /**
44
- * Evil typescript magic to convert a union type `A | B | C` into an
45
- * intersection type `A & B & C`.
46
- */
47
- declare type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;
42
+ export declare type RowType<DB, TB extends keyof DB> = {
43
+ [C in AnyColumn<DB, TB>]: {
44
+ [T in TB]: C extends keyof DB[T] ? DB[T][C] : never;
45
+ }[TB];
46
+ };
48
47
  /**
49
48
  * Given a database type and a union of table names in that db, returns
50
49
  * a union type with all possible column names.
@@ -79,6 +78,12 @@ declare type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) e
79
78
  export declare type AnyColumn<DB, TB extends keyof DB> = {
80
79
  [T in TB]: keyof DB[T];
81
80
  }[TB] & string;
81
+ /**
82
+ * Extracts a column type.
83
+ */
84
+ export declare type ExtractColumnType<DB, TB extends keyof DB, C> = {
85
+ [T in TB]: C extends keyof DB[T] ? DB[T][C] : never;
86
+ }[TB];
82
87
  /**
83
88
  * Given a database type and a union of table names in that db, returns
84
89
  * a union type with all possible `table`.`column` combinations.
@@ -146,4 +151,3 @@ export declare type UnknownRow = Record<string, unknown>;
146
151
  export declare type Nullable<T> = {
147
152
  [P in keyof T]: T[P] | null;
148
153
  };
149
- export {};
@@ -1,7 +1,7 @@
1
1
  import { Driver } from '../driver/driver.js';
2
2
  import { Kysely } from '../kysely.js';
3
3
  import { QueryCompiler } from '../query-compiler/query-compiler.js';
4
- import { DatabaseIntrospector } from '../introspection/database-introspector.js';
4
+ import { DatabaseIntrospector } from './database-introspector.js';
5
5
  import { DialectAdapter } from './dialect-adapter.js';
6
6
  /**
7
7
  * A Dialect is the glue between Kysely and the underlying database engine.
@@ -1,6 +1,6 @@
1
1
  import { Kysely } from '../../kysely.js';
2
- import { DialectAdapter } from '../dialect-adapter.js';
3
- export declare class MysqlAdapter implements DialectAdapter {
2
+ import { DialectAdapterBase } from '../dialect-adapter-base.js';
3
+ export declare class MysqlAdapter extends DialectAdapterBase {
4
4
  /**
5
5
  * Whether or not this dialect supports transactional DDL.
6
6
  *
@@ -1,6 +1,7 @@
1
+ import { DialectAdapterBase } from '../dialect-adapter-base.js';
1
2
  const LOCK_ID = 'ea586330-2c93-47c8-908d-981d9d270f9d';
2
3
  const LOCK_TIMEOUT_SECONDS = 60 * 60;
3
- export class MysqlAdapter {
4
+ export class MysqlAdapter extends DialectAdapterBase {
4
5
  get supportsTransactionalDdl() {
5
6
  return false;
6
7
  }
@@ -2,7 +2,7 @@ import { Driver } from '../../driver/driver.js';
2
2
  import { Kysely } from '../../kysely.js';
3
3
  import { QueryCompiler } from '../../query-compiler/query-compiler.js';
4
4
  import { Dialect } from '../dialect.js';
5
- import { DatabaseIntrospector } from '../../introspection/database-introspector.js';
5
+ import { DatabaseIntrospector } from '../database-introspector.js';
6
6
  import { DialectAdapter } from '../dialect-adapter.js';
7
7
  import { DatabaseConnection } from '../../driver/database-connection.js';
8
8
  /**
@@ -1,4 +1,4 @@
1
- import { DatabaseIntrospector, DatabaseMetadata, DatabaseMetadataOptions } from '../../introspection/database-introspector.js';
1
+ import { DatabaseIntrospector, DatabaseMetadata, DatabaseMetadataOptions } from '../database-introspector.js';
2
2
  import { Kysely } from '../../kysely.js';
3
3
  export declare class MysqlIntrospector implements DatabaseIntrospector {
4
4
  #private;
@@ -1,6 +1,6 @@
1
1
  import { Kysely } from '../../kysely.js';
2
- import { DialectAdapter } from '../dialect-adapter.js';
3
- export declare class PostgresAdapter implements DialectAdapter {
2
+ import { DialectAdapterBase } from '../dialect-adapter-base.js';
3
+ export declare class PostgresAdapter extends DialectAdapterBase {
4
4
  /**
5
5
  * Whether or not this dialect supports transactional DDL.
6
6
  *
@@ -1,6 +1,7 @@
1
+ import { DialectAdapterBase } from '../dialect-adapter-base.js';
1
2
  // Random id for our transaction lock.
2
3
  const LOCK_ID = '3853314791062309107';
3
- export class PostgresAdapter {
4
+ export class PostgresAdapter extends DialectAdapterBase {
4
5
  get supportsTransactionalDdl() {
5
6
  return true;
6
7
  }
@@ -5,7 +5,7 @@ import { Driver } from '../../driver/driver.js';
5
5
  import { Kysely } from '../../kysely.js';
6
6
  import { QueryCompiler } from '../../query-compiler/query-compiler.js';
7
7
  import { Dialect } from '../dialect.js';
8
- import { DatabaseIntrospector } from '../../introspection/database-introspector.js';
8
+ import { DatabaseIntrospector } from '../database-introspector.js';
9
9
  import { DialectAdapter } from '../dialect-adapter.js';
10
10
  import { DatabaseConnection } from '../../driver/database-connection.js';
11
11
  /**
@@ -1,4 +1,4 @@
1
- import { DatabaseIntrospector, DatabaseMetadata, DatabaseMetadataOptions } from '../../introspection/database-introspector.js';
1
+ import { DatabaseIntrospector, DatabaseMetadata, DatabaseMetadataOptions } from '../database-introspector.js';
2
2
  import { Kysely } from '../../kysely.js';
3
3
  export declare class PostgresIntrospector implements DatabaseIntrospector {
4
4
  #private;
@@ -1,5 +1,5 @@
1
- import { DialectAdapter } from '../dialect-adapter.js';
2
- export declare class SqliteAdapter implements DialectAdapter {
1
+ import { DialectAdapterBase } from '../dialect-adapter-base.js';
2
+ export declare class SqliteAdapter implements DialectAdapterBase {
3
3
  /**
4
4
  * Whether or not this dialect supports transactional DDL.
5
5
  *
@@ -2,7 +2,7 @@ import { Driver } from '../../driver/driver.js';
2
2
  import { Kysely } from '../../kysely.js';
3
3
  import { QueryCompiler } from '../../query-compiler/query-compiler.js';
4
4
  import { Dialect } from '../dialect.js';
5
- import { DatabaseIntrospector } from '../../introspection/database-introspector.js';
5
+ import { DatabaseIntrospector } from '../database-introspector.js';
6
6
  import { DialectAdapter } from '../dialect-adapter.js';
7
7
  import { DatabaseConnection } from '../../driver/database-connection.js';
8
8
  /**
@@ -1,4 +1,4 @@
1
- import { DatabaseIntrospector, DatabaseMetadata, DatabaseMetadataOptions } from '../../introspection/database-introspector.js';
1
+ import { DatabaseIntrospector, DatabaseMetadata, DatabaseMetadataOptions } from '../database-introspector.js';
2
2
  import { Kysely } from '../../kysely.js';
3
3
  export declare class SqliteIntrospector implements DatabaseIntrospector {
4
4
  #private;
@@ -15,6 +15,7 @@ export * from './query-builder/function-builder.js';
15
15
  export * from './query-builder/insert-result.js';
16
16
  export * from './query-builder/delete-result.js';
17
17
  export * from './query-builder/update-result.js';
18
+ export * from './query-builder/on-conflict-builder.js';
18
19
  export * from './raw-builder/raw-builder.js';
19
20
  export * from './query-executor/query-executor.js';
20
21
  export * from './query-executor/default-query-executor.js';
@@ -73,6 +74,7 @@ export * from './operation-node/column-definition-node.js';
73
74
  export * from './operation-node/column-node.js';
74
75
  export * from './operation-node/column-update-node.js';
75
76
  export * from './operation-node/common-table-expression-node.js';
77
+ export * from './operation-node/common-table-expression-name-node.js';
76
78
  export * from './operation-node/constraint-node.js';
77
79
  export * from './operation-node/create-index-node.js';
78
80
  export * from './operation-node/create-schema-node.js';
@@ -90,7 +92,7 @@ export * from './operation-node/drop-view-node.js';
90
92
  export * from './operation-node/filter-node.js';
91
93
  export * from './operation-node/foreign-key-constraint-node.js';
92
94
  export * from './operation-node/from-node.js';
93
- export * from './operation-node/generated-always-as-node.js';
95
+ export * from './operation-node/generated-node.js';
94
96
  export * from './operation-node/group-by-item-node.js';
95
97
  export * from './operation-node/group-by-node.js';
96
98
  export * from './operation-node/having-node.js';
@@ -135,11 +137,11 @@ export * from './operation-node/value-node.js';
135
137
  export * from './operation-node/values-node.js';
136
138
  export * from './operation-node/where-node.js';
137
139
  export * from './operation-node/with-node.js';
138
- export * from './introspection/database-introspector.js';
140
+ export * from './dialect/database-introspector.js';
139
141
  export * from './util/compilable.js';
140
142
  export * from './util/log.js';
141
143
  export { AnyColumn, UnknownRow, AnySelectQueryBuilder, } from './util/type-utils.js';
142
- export { SelectExpression, SelectExpressionOrList, } from './parser/select-parser.js';
144
+ export { SelectExpression, SelectExpressionOrList, Selection, } from './parser/select-parser.js';
143
145
  export { ReferenceExpression, ReferenceExpressionOrList, } from './parser/reference-parser.js';
144
146
  export { ValueExpression, ValueExpressionOrList, } from './parser/value-parser.js';
145
147
  export { FilterValueExpression, FilterValueExpressionOrList, ExistsExpression, FilterOperator, } from './parser/filter-parser.js';