kysely 0.12.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 (172) 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-adapter-base.d.ts +36 -0
  5. package/dist/cjs/dialect/dialect.d.ts +1 -1
  6. package/dist/cjs/dialect/mysql/mysql-adapter.d.ts +38 -2
  7. package/dist/cjs/dialect/mysql/mysql-adapter.js +2 -1
  8. package/dist/cjs/dialect/mysql/mysql-dialect.d.ts +17 -1
  9. package/dist/cjs/dialect/mysql/mysql-driver.d.ts +29 -0
  10. package/dist/cjs/dialect/mysql/mysql-introspector.d.ts +4 -1
  11. package/dist/cjs/dialect/postgres/postgres-adapter.d.ts +38 -2
  12. package/dist/cjs/dialect/postgres/postgres-adapter.js +2 -1
  13. package/dist/cjs/dialect/postgres/postgres-dialect.d.ts +17 -1
  14. package/dist/cjs/dialect/postgres/postgres-driver.d.ts +29 -0
  15. package/dist/cjs/dialect/postgres/postgres-introspector.d.ts +4 -1
  16. package/dist/cjs/dialect/sqlite/sqlite-adapter.d.ts +38 -2
  17. package/dist/cjs/dialect/sqlite/sqlite-dialect.d.ts +17 -1
  18. package/dist/cjs/dialect/sqlite/sqlite-driver.d.ts +29 -0
  19. package/dist/cjs/dialect/sqlite/sqlite-introspector.d.ts +4 -1
  20. package/dist/cjs/driver/default-connection-provider.d.ts +4 -0
  21. package/dist/cjs/driver/runtime-driver.d.ts +29 -0
  22. package/dist/cjs/driver/single-connection-provider.d.ts +4 -0
  23. package/dist/cjs/index.d.ts +4 -3
  24. package/dist/cjs/index.js +3 -2
  25. package/dist/cjs/kysely.d.ts +152 -1
  26. package/dist/cjs/kysely.js +37 -0
  27. package/dist/cjs/migration/migration.d.ts +154 -11
  28. package/dist/cjs/migration/migration.js +256 -135
  29. package/dist/cjs/operation-node/check-constraint-node.d.ts +1 -1
  30. package/dist/cjs/operation-node/check-constraint-node.js +2 -3
  31. package/dist/cjs/operation-node/column-definition-node.d.ts +8 -7
  32. package/dist/cjs/operation-node/column-definition-node.js +0 -4
  33. package/dist/cjs/operation-node/common-table-expression-name-node.d.ts +15 -0
  34. package/dist/cjs/operation-node/common-table-expression-name-node.js +23 -0
  35. package/dist/cjs/operation-node/common-table-expression-node.d.ts +3 -3
  36. package/dist/cjs/operation-node/data-type-node.d.ts +1 -1
  37. package/dist/cjs/operation-node/generated-node.d.ts +20 -0
  38. package/dist/cjs/operation-node/generated-node.js +31 -0
  39. package/dist/cjs/operation-node/on-conflict-node.d.ts +13 -2
  40. package/dist/cjs/operation-node/on-conflict-node.js +39 -1
  41. package/dist/cjs/operation-node/operation-node-transformer.d.ts +4 -2
  42. package/dist/cjs/operation-node/operation-node-transformer.js +22 -6
  43. package/dist/cjs/operation-node/operation-node-visitor.d.ts +4 -2
  44. package/dist/cjs/operation-node/operation-node-visitor.js +2 -1
  45. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  46. package/dist/cjs/operation-node/with-node.d.ts +3 -1
  47. package/dist/cjs/operation-node/with-node.js +2 -1
  48. package/dist/cjs/package.json +1 -3
  49. package/dist/cjs/parser/parse-context.d.ts +14 -0
  50. package/dist/cjs/parser/with-parser.d.ts +32 -5
  51. package/dist/cjs/parser/with-parser.js +13 -2
  52. package/dist/cjs/plugin/camel-case/camel-case-plugin.d.ts +36 -2
  53. package/dist/cjs/plugin/immediate-value.ts/immediate-value-plugin.d.ts +34 -0
  54. package/dist/cjs/plugin/with-schema/with-schema-plugin.d.ts +34 -0
  55. package/dist/cjs/plugin/with-schema/with-schema-transformer.js +8 -0
  56. package/dist/cjs/query-builder/delete-query-builder.d.ts +545 -0
  57. package/dist/cjs/query-builder/insert-query-builder.d.ts +142 -76
  58. package/dist/cjs/query-builder/insert-query-builder.js +150 -15
  59. package/dist/cjs/query-builder/join-interface.d.ts +3 -6
  60. package/dist/cjs/query-builder/on-conflict-builder.d.ts +684 -0
  61. package/dist/cjs/query-builder/on-conflict-builder.js +323 -0
  62. package/dist/cjs/query-builder/returning-interface.d.ts +1 -1
  63. package/dist/cjs/query-builder/select-query-builder.d.ts +513 -2
  64. package/dist/cjs/query-builder/select-query-builder.js +2 -2
  65. package/dist/cjs/query-builder/update-query-builder.d.ts +547 -2
  66. package/dist/cjs/query-builder/update-query-builder.js +2 -2
  67. package/dist/cjs/query-builder/where-interface.d.ts +7 -10
  68. package/dist/cjs/query-compiler/default-query-compiler.d.ts +4 -2
  69. package/dist/cjs/query-compiler/default-query-compiler.js +48 -8
  70. package/dist/cjs/query-creator.d.ts +27 -3
  71. package/dist/cjs/query-creator.js +33 -1
  72. package/dist/cjs/query-executor/default-query-executor.d.ts +19 -0
  73. package/dist/cjs/query-executor/noop-query-executor.d.ts +19 -0
  74. package/dist/cjs/raw-builder/raw-builder.js +1 -1
  75. package/dist/cjs/schema/alter-table-builder.d.ts +253 -5
  76. package/dist/cjs/schema/alter-table-builder.js +45 -9
  77. package/dist/cjs/schema/column-definition-builder.d.ts +146 -6
  78. package/dist/cjs/schema/column-definition-builder.js +21 -8
  79. package/dist/cjs/schema/create-index-builder.d.ts +3 -2
  80. package/dist/cjs/schema/create-index-builder.js +2 -2
  81. package/dist/cjs/schema/create-table-builder.d.ts +3 -2
  82. package/dist/cjs/schema/create-table-builder.js +2 -2
  83. package/dist/esm/{introspection → dialect}/database-introspector.d.ts +0 -0
  84. package/dist/esm/{introspection → dialect}/database-introspector.js +0 -0
  85. package/dist/esm/dialect/dialect-adapter-base.d.ts +36 -0
  86. package/dist/esm/dialect/dialect.d.ts +1 -1
  87. package/dist/esm/dialect/mysql/mysql-adapter.d.ts +38 -2
  88. package/dist/esm/dialect/mysql/mysql-adapter.js +2 -1
  89. package/dist/esm/dialect/mysql/mysql-dialect.d.ts +17 -1
  90. package/dist/esm/dialect/mysql/mysql-driver.d.ts +29 -0
  91. package/dist/esm/dialect/mysql/mysql-introspector.d.ts +4 -1
  92. package/dist/esm/dialect/postgres/postgres-adapter.d.ts +38 -2
  93. package/dist/esm/dialect/postgres/postgres-adapter.js +2 -1
  94. package/dist/esm/dialect/postgres/postgres-dialect.d.ts +17 -1
  95. package/dist/esm/dialect/postgres/postgres-driver.d.ts +29 -0
  96. package/dist/esm/dialect/postgres/postgres-introspector.d.ts +4 -1
  97. package/dist/esm/dialect/sqlite/sqlite-adapter.d.ts +38 -2
  98. package/dist/esm/dialect/sqlite/sqlite-dialect.d.ts +17 -1
  99. package/dist/esm/dialect/sqlite/sqlite-driver.d.ts +29 -0
  100. package/dist/esm/dialect/sqlite/sqlite-introspector.d.ts +4 -1
  101. package/dist/esm/driver/default-connection-provider.d.ts +4 -0
  102. package/dist/esm/driver/runtime-driver.d.ts +29 -0
  103. package/dist/esm/driver/single-connection-provider.d.ts +4 -0
  104. package/dist/esm/index.d.ts +4 -3
  105. package/dist/esm/index.js +3 -2
  106. package/dist/esm/kysely.d.ts +152 -1
  107. package/dist/esm/kysely.js +37 -0
  108. package/dist/esm/migration/migration.d.ts +154 -11
  109. package/dist/esm/migration/migration.js +255 -134
  110. package/dist/esm/operation-node/check-constraint-node.d.ts +1 -1
  111. package/dist/esm/operation-node/check-constraint-node.js +2 -3
  112. package/dist/esm/operation-node/column-definition-node.d.ts +8 -7
  113. package/dist/esm/operation-node/column-definition-node.js +0 -4
  114. package/dist/esm/operation-node/common-table-expression-name-node.d.ts +15 -0
  115. package/dist/esm/operation-node/common-table-expression-name-node.js +20 -0
  116. package/dist/esm/operation-node/common-table-expression-node.d.ts +3 -3
  117. package/dist/esm/operation-node/data-type-node.d.ts +1 -1
  118. package/dist/esm/operation-node/generated-node.d.ts +20 -0
  119. package/dist/esm/operation-node/generated-node.js +28 -0
  120. package/dist/esm/operation-node/on-conflict-node.d.ts +13 -2
  121. package/dist/esm/operation-node/on-conflict-node.js +39 -1
  122. package/dist/esm/operation-node/operation-node-transformer.d.ts +4 -2
  123. package/dist/esm/operation-node/operation-node-transformer.js +22 -6
  124. package/dist/esm/operation-node/operation-node-visitor.d.ts +4 -2
  125. package/dist/esm/operation-node/operation-node-visitor.js +2 -1
  126. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  127. package/dist/esm/operation-node/with-node.d.ts +3 -1
  128. package/dist/esm/operation-node/with-node.js +2 -1
  129. package/dist/esm/package.json +1 -3
  130. package/dist/esm/parser/parse-context.d.ts +14 -0
  131. package/dist/esm/parser/with-parser.d.ts +32 -5
  132. package/dist/esm/parser/with-parser.js +13 -2
  133. package/dist/esm/plugin/camel-case/camel-case-plugin.d.ts +36 -2
  134. package/dist/esm/plugin/immediate-value.ts/immediate-value-plugin.d.ts +34 -0
  135. package/dist/esm/plugin/with-schema/with-schema-plugin.d.ts +34 -0
  136. package/dist/esm/plugin/with-schema/with-schema-transformer.js +8 -0
  137. package/dist/esm/query-builder/delete-query-builder.d.ts +545 -0
  138. package/dist/esm/query-builder/insert-query-builder.d.ts +142 -76
  139. package/dist/esm/query-builder/insert-query-builder.js +150 -15
  140. package/dist/esm/query-builder/join-interface.d.ts +3 -6
  141. package/dist/esm/query-builder/on-conflict-builder.d.ts +684 -0
  142. package/dist/esm/query-builder/on-conflict-builder.js +317 -0
  143. package/dist/esm/query-builder/returning-interface.d.ts +1 -1
  144. package/dist/esm/query-builder/select-query-builder.d.ts +513 -2
  145. package/dist/esm/query-builder/select-query-builder.js +2 -2
  146. package/dist/esm/query-builder/update-query-builder.d.ts +547 -2
  147. package/dist/esm/query-builder/update-query-builder.js +2 -2
  148. package/dist/esm/query-builder/where-interface.d.ts +7 -10
  149. package/dist/esm/query-compiler/default-query-compiler.d.ts +4 -2
  150. package/dist/esm/query-compiler/default-query-compiler.js +48 -8
  151. package/dist/esm/query-creator.d.ts +27 -3
  152. package/dist/esm/query-creator.js +33 -1
  153. package/dist/esm/query-executor/default-query-executor.d.ts +19 -0
  154. package/dist/esm/query-executor/noop-query-executor.d.ts +19 -0
  155. package/dist/esm/raw-builder/raw-builder.js +1 -1
  156. package/dist/esm/schema/alter-table-builder.d.ts +253 -5
  157. package/dist/esm/schema/alter-table-builder.js +45 -9
  158. package/dist/esm/schema/column-definition-builder.d.ts +146 -6
  159. package/dist/esm/schema/column-definition-builder.js +21 -8
  160. package/dist/esm/schema/create-index-builder.d.ts +3 -2
  161. package/dist/esm/schema/create-index-builder.js +2 -2
  162. package/dist/esm/schema/create-table-builder.d.ts +3 -2
  163. package/dist/esm/schema/create-table-builder.js +2 -2
  164. package/package.json +8 -6
  165. package/dist/cjs/operation-node/generated-always-as-node.d.ts +0 -16
  166. package/dist/cjs/operation-node/generated-always-as-node.js +0 -25
  167. package/dist/cjs/parser/on-conflict-parser.d.ts +0 -10
  168. package/dist/cjs/parser/on-conflict-parser.js +0 -35
  169. package/dist/esm/operation-node/generated-always-as-node.d.ts +0 -16
  170. package/dist/esm/operation-node/generated-always-as-node.js +0 -22
  171. package/dist/esm/parser/on-conflict-parser.d.ts +0 -10
  172. package/dist/esm/parser/on-conflict-parser.js +0 -30
@@ -324,15 +324,18 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
324
324
  this.visitNode(node.column);
325
325
  this.append(' ');
326
326
  this.visitNode(node.dataType);
327
- if (node.generatedAlwaysAs) {
327
+ if (node.unsigned) {
328
+ this.append(' unsigned');
329
+ }
330
+ if (node.generated) {
328
331
  this.append(' ');
329
- this.visitNode(node.generatedAlwaysAs);
332
+ this.visitNode(node.generated);
330
333
  }
331
334
  if (node.defaultTo) {
332
335
  this.append(' ');
333
336
  this.visitNode(node.defaultTo);
334
337
  }
335
- if (!node.nullable) {
338
+ if (node.notNull) {
336
339
  this.append(' not null');
337
340
  }
338
341
  if (node.unique) {
@@ -451,16 +454,29 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
451
454
  this.compileList(node.columns);
452
455
  this.append(')');
453
456
  }
454
- if (node.constraint) {
457
+ else if (node.constraint) {
455
458
  this.append(' on constraint ');
456
459
  this.visitNode(node.constraint);
457
460
  }
461
+ else if (node.indexExpression) {
462
+ this.append(' (');
463
+ this.visitNode(node.indexExpression);
464
+ this.append(')');
465
+ }
466
+ if (node.indexWhere) {
467
+ this.append(' ');
468
+ this.visitNode(node.indexWhere);
469
+ }
458
470
  if (node.doNothing === true) {
459
471
  this.append(' do nothing');
460
472
  }
461
473
  else if (node.updates) {
462
474
  this.append(' do update set ');
463
475
  this.compileList(node.updates);
476
+ if (node.updateWhere) {
477
+ this.append(' ');
478
+ this.visitNode(node.updateWhere);
479
+ }
464
480
  }
465
481
  }
466
482
  visitOnDuplicateKey(node) {
@@ -573,6 +589,9 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
573
589
  }
574
590
  visitWith(node) {
575
591
  this.append('with ');
592
+ if (node.recursive) {
593
+ this.append('recursive ');
594
+ }
576
595
  this.compileList(node.expressions);
577
596
  }
578
597
  visitCommonTableExpression(node) {
@@ -580,6 +599,14 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
580
599
  this.append(' as ');
581
600
  this.visitNode(node.expression);
582
601
  }
602
+ visitCommonTableExpressionName(node) {
603
+ this.visitNode(node.table);
604
+ if (node.columns) {
605
+ this.append('(');
606
+ this.compileList(node.columns);
607
+ this.append(')');
608
+ }
609
+ }
583
610
  visitAlterTable(node) {
584
611
  this.append('alter table ');
585
612
  this.visitNode(node.table);
@@ -711,10 +738,23 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
711
738
  }
712
739
  this.visitNode(node.name);
713
740
  }
714
- visitGeneratedAlwaysAs(node) {
715
- this.append('generated always as (');
716
- this.visitNode(node.expression);
717
- this.append(')');
741
+ visitGenerated(node) {
742
+ this.append('generated ');
743
+ if (node.always) {
744
+ this.append('always ');
745
+ }
746
+ if (node.byDefault) {
747
+ this.append('by default ');
748
+ }
749
+ this.append('as ');
750
+ if (node.identity) {
751
+ this.append('identity');
752
+ }
753
+ if (node.expression) {
754
+ this.append('(');
755
+ this.visitNode(node.expression);
756
+ this.append(')');
757
+ }
718
758
  if (node.stored) {
719
759
  this.append(' stored');
720
760
  }
@@ -5,7 +5,7 @@ import { UpdateQueryBuilder } from './query-builder/update-query-builder.js';
5
5
  import { TableExpression, TableExpressionDatabase, TableExpressionTables, TableReference } from './parser/table-parser.js';
6
6
  import { QueryExecutor } from './query-executor/query-executor.js';
7
7
  import { RawBuilder } from './raw-builder/raw-builder.js';
8
- import { CommonTableExpression, QueryCreatorWithCommonTableExpression } from './parser/with-parser.js';
8
+ import { CommonTableExpression, QueryCreatorWithCommonTableExpression, RecursiveCommonTableExpression } from './parser/with-parser.js';
9
9
  import { WithNode } from './operation-node/with-node.js';
10
10
  import { ParseContext } from './parser/parse-context.js';
11
11
  import { InsertResult } from './query-builder/insert-result.js';
@@ -206,7 +206,7 @@ export declare class QueryCreator<DB> {
206
206
  */
207
207
  updateTable<TR extends TableReference<DB>>(table: TR): UpdateQueryBuilder<TableExpressionDatabase<DB, TR>, TableExpressionTables<DB, never, TR>, UpdateResult>;
208
208
  /**
209
- * Creates a `with` query (common table expressions).
209
+ * Creates a `with` query (Common Table Expression).
210
210
  *
211
211
  * ### Examples
212
212
  *
@@ -227,8 +227,32 @@ export declare class QueryCreator<DB> {
227
227
  * .selectAll()
228
228
  * .execute()
229
229
  * ```
230
+ *
231
+ * The CTE name can optionally specify column names in addition to
232
+ * a name. In that case Kysely requires the expression to retun
233
+ * rows with the same columns.
234
+ *
235
+ * ```ts
236
+ * await db
237
+ * .with('jennifers(id, age)', (db) => db
238
+ * .selectFrom('person')
239
+ * .where('first_name', '=', 'Jennifer')
240
+ * // This is ok since we return columns with the same
241
+ * // names as specified by `jennifers(id, age)`.
242
+ * .select(['id', 'age'])
243
+ * )
244
+ * .selectFrom('jennifers')
245
+ * .selectAll()
246
+ * .execute()
247
+ * ```
248
+ */
249
+ with<N extends string, E extends CommonTableExpression<DB, N>>(name: N, expression: E): QueryCreatorWithCommonTableExpression<DB, N, E>;
250
+ /**
251
+ * Creates a recursive `with` query (Common Table Expression).
252
+ *
253
+ * See the {@link with} method for examples and more documentation.
230
254
  */
231
- with<N extends string, E extends CommonTableExpression<DB>>(name: N, expression: E): QueryCreatorWithCommonTableExpression<DB, N, E>;
255
+ withRecursive<N extends string, E extends RecursiveCommonTableExpression<DB, N>>(name: N, expression: E): QueryCreatorWithCommonTableExpression<DB, N, E>;
232
256
  /**
233
257
  * Sets the schema to be used for all table references that don't explicitly
234
258
  * specify a schema.
@@ -136,7 +136,7 @@ class QueryCreator {
136
136
  });
137
137
  }
138
138
  /**
139
- * Creates a `with` query (common table expressions).
139
+ * Creates a `with` query (Common Table Expression).
140
140
  *
141
141
  * ### Examples
142
142
  *
@@ -157,6 +157,24 @@ class QueryCreator {
157
157
  * .selectAll()
158
158
  * .execute()
159
159
  * ```
160
+ *
161
+ * The CTE name can optionally specify column names in addition to
162
+ * a name. In that case Kysely requires the expression to retun
163
+ * rows with the same columns.
164
+ *
165
+ * ```ts
166
+ * await db
167
+ * .with('jennifers(id, age)', (db) => db
168
+ * .selectFrom('person')
169
+ * .where('first_name', '=', 'Jennifer')
170
+ * // This is ok since we return columns with the same
171
+ * // names as specified by `jennifers(id, age)`.
172
+ * .select(['id', 'age'])
173
+ * )
174
+ * .selectFrom('jennifers')
175
+ * .selectAll()
176
+ * .execute()
177
+ * ```
160
178
  */
161
179
  with(name, expression) {
162
180
  const cte = (0, with_parser_js_1.parseCommonTableExpression)(this.#props.parseContext, name, expression);
@@ -167,6 +185,20 @@ class QueryCreator {
167
185
  : with_node_js_1.WithNode.create(cte),
168
186
  });
169
187
  }
188
+ /**
189
+ * Creates a recursive `with` query (Common Table Expression).
190
+ *
191
+ * See the {@link with} method for examples and more documentation.
192
+ */
193
+ withRecursive(name, expression) {
194
+ const cte = (0, with_parser_js_1.parseCommonTableExpression)(this.#props.parseContext, name, expression);
195
+ return new QueryCreator({
196
+ ...this.#props,
197
+ withNode: this.#props.withNode
198
+ ? with_node_js_1.WithNode.cloneWithExpression(this.#props.withNode, cte)
199
+ : with_node_js_1.WithNode.create(cte, { recursive: true }),
200
+ });
201
+ }
170
202
  /**
171
203
  * Sets the schema to be used for all table references that don't explicitly
172
204
  * specify a schema.
@@ -7,10 +7,29 @@ import { QueryExecutor } from './query-executor.js';
7
7
  export declare class DefaultQueryExecutor extends QueryExecutor {
8
8
  #private;
9
9
  constructor(compiler: QueryCompiler, connectionProvider: ConnectionProvider, plugins?: KyselyPlugin[]);
10
+ /**
11
+ * Compiles the transformed query into SQL. You usually want to pass
12
+ * the output of {@link transformQuery} into this method but you can
13
+ * compile any query using this method.
14
+ */
10
15
  compileQuery(node: RootOperationNode): CompiledQuery;
11
16
  protected executeQueryImpl<R>(compiledQuery: CompiledQuery): Promise<QueryResult<R>>;
17
+ /**
18
+ * Returns a copy of this executor with a plugin added as the
19
+ * last plugin.
20
+ */
12
21
  withPlugin(plugin: KyselyPlugin): DefaultQueryExecutor;
22
+ /**
23
+ * Returns a copy of this executor with a plugin added as the
24
+ * first plugin.
25
+ */
13
26
  withPluginAtFront(plugin: KyselyPlugin): DefaultQueryExecutor;
27
+ /**
28
+ * Returns a copy of this executor with a new connection provider.
29
+ */
14
30
  withConnectionProvider(connectionProvider: ConnectionProvider): QueryExecutor;
31
+ /**
32
+ * Returns a copy of this executor without any plugins.
33
+ */
15
34
  withoutPlugins(): QueryExecutor;
16
35
  }
@@ -8,10 +8,29 @@ import { KyselyPlugin } from '../plugin/kysely-plugin.js';
8
8
  * other needed things to actually execute queries.
9
9
  */
10
10
  export declare class NoopQueryExecutor extends QueryExecutor {
11
+ /**
12
+ * Compiles the transformed query into SQL. You usually want to pass
13
+ * the output of {@link transformQuery} into this method but you can
14
+ * compile any query using this method.
15
+ */
11
16
  compileQuery(): CompiledQuery;
12
17
  protected executeQueryImpl<R>(): Promise<QueryResult<R>>;
18
+ /**
19
+ * Returns a copy of this executor with a new connection provider.
20
+ */
13
21
  withConnectionProvider(): QueryExecutor;
22
+ /**
23
+ * Returns a copy of this executor with a plugin added as the
24
+ * last plugin.
25
+ */
14
26
  withPlugin(plugin: KyselyPlugin): NoopQueryExecutor;
27
+ /**
28
+ * Returns a copy of this executor with a plugin added as the
29
+ * first plugin.
30
+ */
15
31
  withPluginAtFront(plugin: KyselyPlugin): NoopQueryExecutor;
32
+ /**
33
+ * Returns a copy of this executor without any plugins.
34
+ */
16
35
  withoutPlugins(): QueryExecutor;
17
36
  }
@@ -50,7 +50,7 @@ class RawBuilder {
50
50
  if (match.index > 0 && sql[match.index - 1] === '\\') {
51
51
  continue;
52
52
  }
53
- sqlFragments.push(sql.slice(sqlIdx, match.index).replaceAll('\\?', '?'));
53
+ sqlFragments.push(sql.slice(sqlIdx, match.index).replace(/\\\?/g, '?'));
54
54
  argNodes.push(parseRawArg(str, parameters[paramIdx]));
55
55
  sqlIdx = match.index + str.length;
56
56
  ++paramIdx;
@@ -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 {
@@ -63,16 +63,140 @@ export interface AlterTableExecutorProps extends AlterTableBuilderProps {
63
63
  export declare class AlterTableAddColumnBuilder implements ColumnDefinitionBuilderInterface, OperationNodeSource, Compilable {
64
64
  #private;
65
65
  constructor(props: AlterTableAddColumnBuilderProps);
66
+ /**
67
+ * Adds `auto_increment` or `autoincrement` to the column definition
68
+ * depending on the dialect.
69
+ *
70
+ * Some dialects like PostgreSQL don't support this. On PostgreSQL
71
+ * you can use the `serial` or `bigserial` data type instead.
72
+ */
66
73
  autoIncrement(): AlterTableAddColumnBuilder;
74
+ /**
75
+ * Makes the column the primary key.
76
+ *
77
+ * If you want to specify a composite primary key use the
78
+ * {@link TableBuilder.addPrimaryKeyConstraint} method.
79
+ */
67
80
  primaryKey(): AlterTableAddColumnBuilder;
81
+ /**
82
+ * Adds a foreign key constraint for the column.
83
+ *
84
+ * If your database engine doesn't support foreign key constraints in the
85
+ * column definition (like MySQL 5) you need to call the table level
86
+ * {@link TableBuilder.addForeignKeyConstraint} method instead.
87
+ *
88
+ * ### Examples
89
+ *
90
+ * ```ts
91
+ * col.references('person.id')
92
+ * ```
93
+ */
68
94
  references(ref: string): AlterTableAddColumnBuilder;
95
+ /**
96
+ * Adds an `on delete` constraint for the foreign key column.
97
+ *
98
+ * If your database engine doesn't support foreign key constraints in the
99
+ * column definition (like MySQL 5) you need to call the table level
100
+ * {@link TableBuilder.addForeignKeyConstraint} method instead.
101
+ *
102
+ * ### Examples
103
+ *
104
+ * ```ts
105
+ * col.references('person.id').onDelete('cascade')
106
+ * ```
107
+ */
69
108
  onDelete(onDelete: OnModifyForeignAction): AlterTableAddColumnBuilder;
109
+ /**
110
+ * Adds an `on update` constraint for the foreign key column.
111
+ *
112
+ * ### Examples
113
+ *
114
+ * ```ts
115
+ * col.references('person.id').onUpdate('cascade')
116
+ * ```
117
+ */
70
118
  onUpdate(onDelete: OnModifyForeignAction): AlterTableAddColumnBuilder;
119
+ /**
120
+ * Adds a unique constraint for the column.
121
+ */
71
122
  unique(): AlterTableAddColumnBuilder;
123
+ /**
124
+ * Adds a `not null` constraint for the column.
125
+ */
72
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;
133
+ /**
134
+ * Adds a default value constraint for the column.
135
+ *
136
+ * ### Examples
137
+ *
138
+ * ```ts
139
+ * db.schema
140
+ * .createTable('pet')
141
+ * .addColumn('number_of_legs', 'integer', (col) => col.defaultTo(4))
142
+ * .execute()
143
+ * ```
144
+ */
73
145
  defaultTo(value: PrimitiveValue | AnyRawBuilder): AlterTableAddColumnBuilder;
74
- check(sql: string): AlterTableAddColumnBuilder;
75
- generatedAlwaysAs(sql: string): AlterTableAddColumnBuilder;
146
+ /**
147
+ * Adds a check constraint for the column.
148
+ *
149
+ * ### Examples
150
+ *
151
+ * ```ts
152
+ * db.schema
153
+ * .createTable('pet')
154
+ * .addColumn('number_of_legs', 'integer', (col) =>
155
+ * col.check(db.raw('number_of_legs < 5'))
156
+ * )
157
+ * .execute()
158
+ * ```
159
+ */
160
+ check(expression: AnyRawBuilder): AlterTableAddColumnBuilder;
161
+ /**
162
+ * Makes the column a generated column using a `generated always as` statement.
163
+ *
164
+ * ### Examples
165
+ *
166
+ * ```ts
167
+ * db.schema
168
+ * .createTable('person')
169
+ * .addColumn('full_name', 'varchar(255)',
170
+ * (col) => col.generatedAlwaysAs(db.raw("concat(first_name, ' ', last_name)"))
171
+ * )
172
+ * .execute()
173
+ * ```
174
+ */
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;
184
+ /**
185
+ * Makes a generated column stored instead of virtual. This method can only
186
+ * be used with {@link generatedAlwaysAs}
187
+ *
188
+ * ### Examples
189
+ *
190
+ * ```ts
191
+ * db.schema
192
+ * .createTable('person')
193
+ * .addColumn('full_name', 'varchar(255)', (col) => col
194
+ * .generatedAlwaysAs("concat(first_name, ' ', last_name)")
195
+ * .stored()
196
+ * )
197
+ * .execute()
198
+ * ```
199
+ */
76
200
  stored(): AlterTableAddColumnBuilder;
77
201
  toOperationNode(): AlterTableNode;
78
202
  compile(): CompiledQuery;
@@ -84,16 +208,140 @@ export interface AlterTableAddColumnBuilderProps extends AlterTableBuilderProps
84
208
  export declare class AlterTableModifyColumnBuilder implements ColumnDefinitionBuilderInterface, OperationNodeSource, Compilable {
85
209
  #private;
86
210
  constructor(props: AlterTableModifyColumnBuilderProps);
211
+ /**
212
+ * Adds `auto_increment` or `autoincrement` to the column definition
213
+ * depending on the dialect.
214
+ *
215
+ * Some dialects like PostgreSQL don't support this. On PostgreSQL
216
+ * you can use the `serial` or `bigserial` data type instead.
217
+ */
87
218
  autoIncrement(): AlterTableModifyColumnBuilder;
219
+ /**
220
+ * Makes the column the primary key.
221
+ *
222
+ * If you want to specify a composite primary key use the
223
+ * {@link TableBuilder.addPrimaryKeyConstraint} method.
224
+ */
88
225
  primaryKey(): AlterTableModifyColumnBuilder;
226
+ /**
227
+ * Adds a foreign key constraint for the column.
228
+ *
229
+ * If your database engine doesn't support foreign key constraints in the
230
+ * column definition (like MySQL 5) you need to call the table level
231
+ * {@link TableBuilder.addForeignKeyConstraint} method instead.
232
+ *
233
+ * ### Examples
234
+ *
235
+ * ```ts
236
+ * col.references('person.id')
237
+ * ```
238
+ */
89
239
  references(ref: string): AlterTableModifyColumnBuilder;
240
+ /**
241
+ * Adds an `on delete` constraint for the foreign key column.
242
+ *
243
+ * If your database engine doesn't support foreign key constraints in the
244
+ * column definition (like MySQL 5) you need to call the table level
245
+ * {@link TableBuilder.addForeignKeyConstraint} method instead.
246
+ *
247
+ * ### Examples
248
+ *
249
+ * ```ts
250
+ * col.references('person.id').onDelete('cascade')
251
+ * ```
252
+ */
90
253
  onDelete(onDelete: OnModifyForeignAction): AlterTableModifyColumnBuilder;
254
+ /**
255
+ * Adds an `on update` constraint for the foreign key column.
256
+ *
257
+ * ### Examples
258
+ *
259
+ * ```ts
260
+ * col.references('person.id').onUpdate('cascade')
261
+ * ```
262
+ */
91
263
  onUpdate(onUpdate: OnModifyForeignAction): AlterTableModifyColumnBuilder;
264
+ /**
265
+ * Adds a unique constraint for the column.
266
+ */
92
267
  unique(): AlterTableModifyColumnBuilder;
268
+ /**
269
+ * Adds a `not null` constraint for the column.
270
+ */
93
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;
278
+ /**
279
+ * Adds a default value constraint for the column.
280
+ *
281
+ * ### Examples
282
+ *
283
+ * ```ts
284
+ * db.schema
285
+ * .createTable('pet')
286
+ * .addColumn('number_of_legs', 'integer', (col) => col.defaultTo(4))
287
+ * .execute()
288
+ * ```
289
+ */
94
290
  defaultTo(value: PrimitiveValue | AnyRawBuilder): AlterTableModifyColumnBuilder;
95
- check(sql: string): AlterTableModifyColumnBuilder;
96
- generatedAlwaysAs(sql: string): AlterTableModifyColumnBuilder;
291
+ /**
292
+ * Adds a check constraint for the column.
293
+ *
294
+ * ### Examples
295
+ *
296
+ * ```ts
297
+ * db.schema
298
+ * .createTable('pet')
299
+ * .addColumn('number_of_legs', 'integer', (col) =>
300
+ * col.check(db.raw('number_of_legs < 5'))
301
+ * )
302
+ * .execute()
303
+ * ```
304
+ */
305
+ check(expression: AnyRawBuilder): AlterTableModifyColumnBuilder;
306
+ /**
307
+ * Makes the column a generated column using a `generated always as` statement.
308
+ *
309
+ * ### Examples
310
+ *
311
+ * ```ts
312
+ * db.schema
313
+ * .createTable('person')
314
+ * .addColumn('full_name', 'varchar(255)',
315
+ * (col) => col.generatedAlwaysAs(db.raw("concat(first_name, ' ', last_name)"))
316
+ * )
317
+ * .execute()
318
+ * ```
319
+ */
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;
329
+ /**
330
+ * Makes a generated column stored instead of virtual. This method can only
331
+ * be used with {@link generatedAlwaysAs}
332
+ *
333
+ * ### Examples
334
+ *
335
+ * ```ts
336
+ * db.schema
337
+ * .createTable('person')
338
+ * .addColumn('full_name', 'varchar(255)', (col) => col
339
+ * .generatedAlwaysAs("concat(first_name, ' ', last_name)")
340
+ * .stored()
341
+ * )
342
+ * .execute()
343
+ * ```
344
+ */
97
345
  stored(): AlterTableModifyColumnBuilder;
98
346
  toOperationNode(): AlterTableNode;
99
347
  compile(): CompiledQuery;
@@ -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() {