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
@@ -321,15 +321,18 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
321
321
  this.visitNode(node.column);
322
322
  this.append(' ');
323
323
  this.visitNode(node.dataType);
324
- if (node.generatedAlwaysAs) {
324
+ if (node.unsigned) {
325
+ this.append(' unsigned');
326
+ }
327
+ if (node.generated) {
325
328
  this.append(' ');
326
- this.visitNode(node.generatedAlwaysAs);
329
+ this.visitNode(node.generated);
327
330
  }
328
331
  if (node.defaultTo) {
329
332
  this.append(' ');
330
333
  this.visitNode(node.defaultTo);
331
334
  }
332
- if (!node.nullable) {
335
+ if (node.notNull) {
333
336
  this.append(' not null');
334
337
  }
335
338
  if (node.unique) {
@@ -448,16 +451,29 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
448
451
  this.compileList(node.columns);
449
452
  this.append(')');
450
453
  }
451
- if (node.constraint) {
454
+ else if (node.constraint) {
452
455
  this.append(' on constraint ');
453
456
  this.visitNode(node.constraint);
454
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
+ }
455
467
  if (node.doNothing === true) {
456
468
  this.append(' do nothing');
457
469
  }
458
470
  else if (node.updates) {
459
471
  this.append(' do update set ');
460
472
  this.compileList(node.updates);
473
+ if (node.updateWhere) {
474
+ this.append(' ');
475
+ this.visitNode(node.updateWhere);
476
+ }
461
477
  }
462
478
  }
463
479
  visitOnDuplicateKey(node) {
@@ -570,6 +586,9 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
570
586
  }
571
587
  visitWith(node) {
572
588
  this.append('with ');
589
+ if (node.recursive) {
590
+ this.append('recursive ');
591
+ }
573
592
  this.compileList(node.expressions);
574
593
  }
575
594
  visitCommonTableExpression(node) {
@@ -577,6 +596,14 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
577
596
  this.append(' as ');
578
597
  this.visitNode(node.expression);
579
598
  }
599
+ visitCommonTableExpressionName(node) {
600
+ this.visitNode(node.table);
601
+ if (node.columns) {
602
+ this.append('(');
603
+ this.compileList(node.columns);
604
+ this.append(')');
605
+ }
606
+ }
580
607
  visitAlterTable(node) {
581
608
  this.append('alter table ');
582
609
  this.visitNode(node.table);
@@ -708,10 +735,23 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
708
735
  }
709
736
  this.visitNode(node.name);
710
737
  }
711
- visitGeneratedAlwaysAs(node) {
712
- this.append('generated always as (');
713
- this.visitNode(node.expression);
714
- 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
+ }
715
755
  if (node.stored) {
716
756
  this.append(' stored');
717
757
  }
@@ -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.
@@ -133,7 +133,7 @@ export class QueryCreator {
133
133
  });
134
134
  }
135
135
  /**
136
- * Creates a `with` query (common table expressions).
136
+ * Creates a `with` query (Common Table Expression).
137
137
  *
138
138
  * ### Examples
139
139
  *
@@ -154,6 +154,24 @@ export class QueryCreator {
154
154
  * .selectAll()
155
155
  * .execute()
156
156
  * ```
157
+ *
158
+ * The CTE name can optionally specify column names in addition to
159
+ * a name. In that case Kysely requires the expression to retun
160
+ * rows with the same columns.
161
+ *
162
+ * ```ts
163
+ * await db
164
+ * .with('jennifers(id, age)', (db) => db
165
+ * .selectFrom('person')
166
+ * .where('first_name', '=', 'Jennifer')
167
+ * // This is ok since we return columns with the same
168
+ * // names as specified by `jennifers(id, age)`.
169
+ * .select(['id', 'age'])
170
+ * )
171
+ * .selectFrom('jennifers')
172
+ * .selectAll()
173
+ * .execute()
174
+ * ```
157
175
  */
158
176
  with(name, expression) {
159
177
  const cte = parseCommonTableExpression(this.#props.parseContext, name, expression);
@@ -164,6 +182,20 @@ export class QueryCreator {
164
182
  : WithNode.create(cte),
165
183
  });
166
184
  }
185
+ /**
186
+ * Creates a recursive `with` query (Common Table Expression).
187
+ *
188
+ * See the {@link with} method for examples and more documentation.
189
+ */
190
+ withRecursive(name, expression) {
191
+ const cte = parseCommonTableExpression(this.#props.parseContext, name, expression);
192
+ return new QueryCreator({
193
+ ...this.#props,
194
+ withNode: this.#props.withNode
195
+ ? WithNode.cloneWithExpression(this.#props.withNode, cte)
196
+ : WithNode.create(cte, { recursive: true }),
197
+ });
198
+ }
167
199
  /**
168
200
  * Sets the schema to be used for all table references that don't explicitly
169
201
  * 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
  }
@@ -47,7 +47,7 @@ export class RawBuilder {
47
47
  if (match.index > 0 && sql[match.index - 1] === '\\') {
48
48
  continue;
49
49
  }
50
- sqlFragments.push(sql.slice(sqlIdx, match.index).replaceAll('\\?', '?'));
50
+ sqlFragments.push(sql.slice(sqlIdx, match.index).replace(/\\\?/g, '?'));
51
51
  argNodes.push(parseRawArg(str, parameters[paramIdx]));
52
52
  sqlIdx = match.index + str.length;
53
53
  ++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;
@@ -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
  }
@@ -226,22 +226,40 @@ export class AlterTableAddColumnBuilder {
226
226
  columnBuilder: this.#props.columnBuilder.notNull(),
227
227
  });
228
228
  }
229
+ unsigned() {
230
+ return new AlterTableAddColumnBuilder({
231
+ ...this.#props,
232
+ columnBuilder: this.#props.columnBuilder.unsigned(),
233
+ });
234
+ }
229
235
  defaultTo(value) {
230
236
  return new AlterTableAddColumnBuilder({
231
237
  ...this.#props,
232
238
  columnBuilder: this.#props.columnBuilder.defaultTo(value),
233
239
  });
234
240
  }
235
- check(sql) {
241
+ check(expression) {
242
+ return new AlterTableAddColumnBuilder({
243
+ ...this.#props,
244
+ columnBuilder: this.#props.columnBuilder.check(expression),
245
+ });
246
+ }
247
+ generatedAlwaysAs(expression) {
248
+ return new AlterTableAddColumnBuilder({
249
+ ...this.#props,
250
+ columnBuilder: this.#props.columnBuilder.generatedAlwaysAs(expression),
251
+ });
252
+ }
253
+ generatedAlwaysAsIdentity() {
236
254
  return new AlterTableAddColumnBuilder({
237
255
  ...this.#props,
238
- columnBuilder: this.#props.columnBuilder.check(sql),
256
+ columnBuilder: this.#props.columnBuilder.generatedAlwaysAsIdentity(),
239
257
  });
240
258
  }
241
- generatedAlwaysAs(sql) {
259
+ generatedByDefaultAsIdentity() {
242
260
  return new AlterTableAddColumnBuilder({
243
261
  ...this.#props,
244
- columnBuilder: this.#props.columnBuilder.generatedAlwaysAs(sql),
262
+ columnBuilder: this.#props.columnBuilder.generatedByDefaultAsIdentity(),
245
263
  });
246
264
  }
247
265
  stored() {
@@ -309,22 +327,40 @@ export class AlterTableModifyColumnBuilder {
309
327
  columnBuilder: this.#props.columnBuilder.notNull(),
310
328
  });
311
329
  }
330
+ unsigned() {
331
+ return new AlterTableModifyColumnBuilder({
332
+ ...this.#props,
333
+ columnBuilder: this.#props.columnBuilder.unsigned(),
334
+ });
335
+ }
312
336
  defaultTo(value) {
313
337
  return new AlterTableModifyColumnBuilder({
314
338
  ...this.#props,
315
339
  columnBuilder: this.#props.columnBuilder.defaultTo(value),
316
340
  });
317
341
  }
318
- 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() {
319
355
  return new AlterTableModifyColumnBuilder({
320
356
  ...this.#props,
321
- columnBuilder: this.#props.columnBuilder.check(sql),
357
+ columnBuilder: this.#props.columnBuilder.generatedAlwaysAsIdentity(),
322
358
  });
323
359
  }
324
- generatedAlwaysAs(sql) {
360
+ generatedByDefaultAsIdentity() {
325
361
  return new AlterTableModifyColumnBuilder({
326
362
  ...this.#props,
327
- columnBuilder: this.#props.columnBuilder.generatedAlwaysAs(sql),
363
+ columnBuilder: this.#props.columnBuilder.generatedByDefaultAsIdentity(),
328
364
  });
329
365
  }
330
366
  stored() {