kysely 0.7.1 → 0.7.5

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 (194) hide show
  1. package/README.md +24 -19
  2. package/dist/cjs/dialect/dialect-adapter.d.ts +11 -9
  3. package/dist/cjs/dialect/mysql/mysql-dialect.d.ts +1 -1
  4. package/dist/cjs/dialect/mysql/mysql-driver.js +1 -0
  5. package/dist/cjs/dialect/mysql/mysql-introspector.d.ts +0 -1
  6. package/dist/cjs/dialect/mysql/mysql-introspector.js +2 -2
  7. package/dist/cjs/dialect/mysql/mysql-query-compiler.d.ts +0 -4
  8. package/dist/cjs/dialect/mysql/mysql-query-compiler.js +0 -18
  9. package/dist/cjs/dialect/postgres/postgres-introspector.d.ts +0 -1
  10. package/dist/cjs/dialect/postgres/postgres-introspector.js +2 -2
  11. package/dist/cjs/driver/database-connection.d.ts +2 -1
  12. package/dist/cjs/driver/driver.d.ts +1 -1
  13. package/dist/cjs/driver/single-connection-provider.d.ts +0 -1
  14. package/dist/cjs/driver/single-connection-provider.js +2 -2
  15. package/dist/cjs/index.d.ts +2 -1
  16. package/dist/cjs/index.js +2 -1
  17. package/dist/cjs/kysely.d.ts +7 -6
  18. package/dist/cjs/kysely.js +8 -6
  19. package/dist/cjs/migration/migration.js +11 -10
  20. package/dist/cjs/operation-node/alter-column-node.d.ts +2 -2
  21. package/dist/cjs/operation-node/alter-column-node.js +2 -2
  22. package/dist/cjs/operation-node/alter-table-node.d.ts +2 -2
  23. package/dist/cjs/operation-node/alter-table-node.js +2 -2
  24. package/dist/cjs/operation-node/column-definition-node.d.ts +2 -2
  25. package/dist/cjs/operation-node/column-definition-node.js +2 -2
  26. package/dist/cjs/operation-node/create-index-node.d.ts +2 -2
  27. package/dist/cjs/operation-node/create-index-node.js +2 -2
  28. package/dist/cjs/operation-node/create-table-node.d.ts +2 -1
  29. package/dist/cjs/operation-node/create-table-node.js +1 -5
  30. package/dist/cjs/operation-node/drop-index-node.d.ts +3 -3
  31. package/dist/cjs/operation-node/drop-index-node.js +2 -2
  32. package/dist/cjs/operation-node/foreign-key-constraint-node.d.ts +12 -1
  33. package/dist/cjs/operation-node/foreign-key-constraint-node.js +6 -0
  34. package/dist/cjs/operation-node/insert-query-node.d.ts +5 -2
  35. package/dist/cjs/operation-node/insert-query-node.js +2 -9
  36. package/dist/cjs/operation-node/join-node.d.ts +1 -0
  37. package/dist/cjs/operation-node/join-node.js +8 -0
  38. package/dist/cjs/operation-node/on-conflict-node.d.ts +2 -2
  39. package/dist/cjs/operation-node/on-conflict-node.js +2 -2
  40. package/dist/cjs/operation-node/on-duplicate-key-node.d.ts +14 -0
  41. package/dist/cjs/operation-node/on-duplicate-key-node.js +18 -0
  42. package/dist/cjs/operation-node/operation-node-transformer.d.ts +2 -0
  43. package/dist/cjs/operation-node/operation-node-transformer.js +12 -0
  44. package/dist/cjs/operation-node/operation-node-visitor.d.ts +2 -0
  45. package/dist/cjs/operation-node/operation-node-visitor.js +4 -0
  46. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  47. package/dist/cjs/operation-node/references-node.d.ts +5 -3
  48. package/dist/cjs/operation-node/references-node.js +6 -0
  49. package/dist/cjs/operation-node/table-node.js +2 -2
  50. package/dist/cjs/parser/data-type-parser.d.ts +5 -0
  51. package/dist/cjs/parser/data-type-parser.js +11 -0
  52. package/dist/cjs/parser/default-value-parser.d.ts +6 -0
  53. package/dist/cjs/parser/default-value-parser.js +11 -0
  54. package/dist/cjs/parser/filter-parser.d.ts +2 -2
  55. package/dist/cjs/parser/filter-parser.js +34 -36
  56. package/dist/cjs/parser/join-parser.d.ts +1 -1
  57. package/dist/cjs/parser/join-parser.js +9 -11
  58. package/dist/cjs/parser/parse-context.d.ts +34 -7
  59. package/dist/cjs/parser/parse-context.js +42 -34
  60. package/dist/cjs/parser/reference-parser.d.ts +2 -2
  61. package/dist/cjs/parser/reference-parser.js +16 -12
  62. package/dist/cjs/parser/select-parser.d.ts +1 -2
  63. package/dist/cjs/parser/select-parser.js +4 -5
  64. package/dist/cjs/parser/table-parser.js +11 -6
  65. package/dist/cjs/parser/update-set-parser.js +1 -1
  66. package/dist/cjs/parser/value-parser.js +1 -1
  67. package/dist/cjs/query-builder/{sub-query-builder.d.ts → expression-builder.d.ts} +7 -7
  68. package/dist/cjs/query-builder/{sub-query-builder.js → expression-builder.js} +6 -10
  69. package/dist/cjs/query-builder/join-builder.d.ts +2 -2
  70. package/dist/cjs/query-builder/join-builder.js +8 -12
  71. package/dist/cjs/query-builder/query-builder.d.ts +47 -8
  72. package/dist/cjs/query-builder/query-builder.js +163 -91
  73. package/dist/cjs/query-builder/type-utils.d.ts +5 -5
  74. package/dist/cjs/query-compiler/default-query-compiler.d.ts +2 -1
  75. package/dist/cjs/query-compiler/default-query-compiler.js +26 -6
  76. package/dist/cjs/query-creator.d.ts +2 -2
  77. package/dist/cjs/query-creator.js +8 -12
  78. package/dist/cjs/schema/alter-table-builder.d.ts +31 -8
  79. package/dist/cjs/schema/alter-table-builder.js +80 -7
  80. package/dist/cjs/schema/column-definition-builder.d.ts +10 -4
  81. package/dist/cjs/schema/column-definition-builder.js +11 -6
  82. package/dist/cjs/schema/create-index-builder.d.ts +5 -5
  83. package/dist/cjs/schema/create-index-builder.js +19 -28
  84. package/dist/cjs/schema/create-schema-builder.d.ts +5 -5
  85. package/dist/cjs/schema/create-schema-builder.js +9 -13
  86. package/dist/cjs/schema/create-table-builder.d.ts +22 -10
  87. package/dist/cjs/schema/create-table-builder.js +41 -34
  88. package/dist/cjs/schema/drop-index-builder.d.ts +5 -5
  89. package/dist/cjs/schema/drop-index-builder.js +11 -16
  90. package/dist/cjs/schema/drop-schema-builder.d.ts +5 -5
  91. package/dist/cjs/schema/drop-schema-builder.js +9 -13
  92. package/dist/cjs/schema/drop-table-builder.d.ts +5 -5
  93. package/dist/cjs/schema/drop-table-builder.js +9 -13
  94. package/dist/cjs/schema/foreign-key-constraint-builder.d.ts +14 -0
  95. package/dist/cjs/schema/foreign-key-constraint-builder.js +26 -0
  96. package/dist/cjs/transformers/with-schema-transformer.d.ts +0 -5
  97. package/dist/cjs/transformers/with-schema-transformer.js +21 -21
  98. package/dist/esm/dialect/dialect-adapter.d.ts +11 -9
  99. package/dist/esm/dialect/mysql/mysql-dialect.d.ts +1 -1
  100. package/dist/esm/dialect/mysql/mysql-driver.js +1 -0
  101. package/dist/esm/dialect/mysql/mysql-introspector.d.ts +0 -1
  102. package/dist/esm/dialect/mysql/mysql-introspector.js +2 -2
  103. package/dist/esm/dialect/mysql/mysql-query-compiler.d.ts +0 -4
  104. package/dist/esm/dialect/mysql/mysql-query-compiler.js +0 -18
  105. package/dist/esm/dialect/postgres/postgres-introspector.d.ts +0 -1
  106. package/dist/esm/dialect/postgres/postgres-introspector.js +2 -2
  107. package/dist/esm/driver/database-connection.d.ts +2 -1
  108. package/dist/esm/driver/driver.d.ts +1 -1
  109. package/dist/esm/driver/single-connection-provider.d.ts +0 -1
  110. package/dist/esm/driver/single-connection-provider.js +2 -2
  111. package/dist/esm/index.d.ts +2 -1
  112. package/dist/esm/index.js +2 -1
  113. package/dist/esm/kysely.d.ts +7 -6
  114. package/dist/esm/kysely.js +8 -6
  115. package/dist/esm/migration/migration.js +12 -11
  116. package/dist/esm/operation-node/alter-column-node.d.ts +2 -2
  117. package/dist/esm/operation-node/alter-column-node.js +2 -2
  118. package/dist/esm/operation-node/alter-table-node.d.ts +2 -2
  119. package/dist/esm/operation-node/alter-table-node.js +2 -2
  120. package/dist/esm/operation-node/column-definition-node.d.ts +2 -2
  121. package/dist/esm/operation-node/column-definition-node.js +2 -2
  122. package/dist/esm/operation-node/create-index-node.d.ts +2 -2
  123. package/dist/esm/operation-node/create-index-node.js +2 -2
  124. package/dist/esm/operation-node/create-table-node.d.ts +2 -1
  125. package/dist/esm/operation-node/create-table-node.js +1 -5
  126. package/dist/esm/operation-node/drop-index-node.d.ts +3 -3
  127. package/dist/esm/operation-node/drop-index-node.js +2 -2
  128. package/dist/esm/operation-node/foreign-key-constraint-node.d.ts +12 -1
  129. package/dist/esm/operation-node/foreign-key-constraint-node.js +6 -0
  130. package/dist/esm/operation-node/insert-query-node.d.ts +5 -2
  131. package/dist/esm/operation-node/insert-query-node.js +2 -9
  132. package/dist/esm/operation-node/join-node.d.ts +1 -0
  133. package/dist/esm/operation-node/join-node.js +8 -0
  134. package/dist/esm/operation-node/on-conflict-node.d.ts +2 -2
  135. package/dist/esm/operation-node/on-conflict-node.js +2 -2
  136. package/dist/esm/operation-node/on-duplicate-key-node.d.ts +14 -0
  137. package/dist/esm/operation-node/on-duplicate-key-node.js +15 -0
  138. package/dist/esm/operation-node/operation-node-transformer.d.ts +2 -0
  139. package/dist/esm/operation-node/operation-node-transformer.js +12 -0
  140. package/dist/esm/operation-node/operation-node-visitor.d.ts +2 -0
  141. package/dist/esm/operation-node/operation-node-visitor.js +4 -0
  142. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  143. package/dist/esm/operation-node/references-node.d.ts +5 -3
  144. package/dist/esm/operation-node/references-node.js +6 -0
  145. package/dist/esm/operation-node/table-node.js +2 -2
  146. package/dist/esm/parser/data-type-parser.d.ts +5 -0
  147. package/dist/esm/parser/data-type-parser.js +7 -0
  148. package/dist/esm/parser/default-value-parser.d.ts +6 -0
  149. package/dist/esm/parser/default-value-parser.js +7 -0
  150. package/dist/esm/parser/filter-parser.d.ts +2 -2
  151. package/dist/esm/parser/filter-parser.js +31 -33
  152. package/dist/esm/parser/join-parser.d.ts +1 -1
  153. package/dist/esm/parser/join-parser.js +7 -9
  154. package/dist/esm/parser/parse-context.d.ts +34 -7
  155. package/dist/esm/parser/parse-context.js +40 -32
  156. package/dist/esm/parser/reference-parser.d.ts +2 -2
  157. package/dist/esm/parser/reference-parser.js +16 -12
  158. package/dist/esm/parser/select-parser.d.ts +1 -2
  159. package/dist/esm/parser/select-parser.js +3 -3
  160. package/dist/esm/parser/table-parser.js +11 -6
  161. package/dist/esm/parser/update-set-parser.js +1 -1
  162. package/dist/esm/parser/value-parser.js +1 -1
  163. package/dist/esm/query-builder/{sub-query-builder.d.ts → expression-builder.d.ts} +7 -7
  164. package/dist/esm/query-builder/{sub-query-builder.js → expression-builder.js} +4 -8
  165. package/dist/esm/query-builder/join-builder.d.ts +2 -2
  166. package/dist/esm/query-builder/join-builder.js +9 -13
  167. package/dist/esm/query-builder/query-builder.d.ts +47 -8
  168. package/dist/esm/query-builder/query-builder.js +165 -93
  169. package/dist/esm/query-builder/type-utils.d.ts +5 -5
  170. package/dist/esm/query-compiler/default-query-compiler.d.ts +2 -1
  171. package/dist/esm/query-compiler/default-query-compiler.js +27 -7
  172. package/dist/esm/query-creator.d.ts +2 -2
  173. package/dist/esm/query-creator.js +8 -12
  174. package/dist/esm/schema/alter-table-builder.d.ts +31 -8
  175. package/dist/esm/schema/alter-table-builder.js +78 -6
  176. package/dist/esm/schema/column-definition-builder.d.ts +10 -4
  177. package/dist/esm/schema/column-definition-builder.js +12 -7
  178. package/dist/esm/schema/create-index-builder.d.ts +5 -5
  179. package/dist/esm/schema/create-index-builder.js +19 -28
  180. package/dist/esm/schema/create-schema-builder.d.ts +5 -5
  181. package/dist/esm/schema/create-schema-builder.js +9 -13
  182. package/dist/esm/schema/create-table-builder.d.ts +22 -10
  183. package/dist/esm/schema/create-table-builder.js +41 -34
  184. package/dist/esm/schema/drop-index-builder.d.ts +5 -5
  185. package/dist/esm/schema/drop-index-builder.js +11 -16
  186. package/dist/esm/schema/drop-schema-builder.d.ts +5 -5
  187. package/dist/esm/schema/drop-schema-builder.js +9 -13
  188. package/dist/esm/schema/drop-table-builder.d.ts +5 -5
  189. package/dist/esm/schema/drop-table-builder.js +9 -13
  190. package/dist/esm/schema/foreign-key-constraint-builder.d.ts +14 -0
  191. package/dist/esm/schema/foreign-key-constraint-builder.js +22 -0
  192. package/dist/esm/transformers/with-schema-transformer.d.ts +0 -5
  193. package/dist/esm/transformers/with-schema-transformer.js +21 -21
  194. package/package.json +1 -1
@@ -2,7 +2,7 @@ import { DataTypeNode } from '../operation-node/data-type-node.js';
2
2
  import { OperationNodeVisitor } from '../operation-node/operation-node-visitor.js';
3
3
  import { QueryNode } from '../operation-node/query-node.js';
4
4
  import { RawNode } from '../operation-node/raw-node.js';
5
- import { isEmpty, getLast, freeze, isString, isNumber, isBoolean, isNull, isDate, isBigInt, } from '../util/object-utils.js';
5
+ import { getLast, freeze, isString, isNumber, isBoolean, isNull, isDate, isBigInt, } from '../util/object-utils.js';
6
6
  export class DefaultQueryCompiler extends OperationNodeVisitor {
7
7
  #sqlFragments = [];
8
8
  #bindings = [];
@@ -32,7 +32,7 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
32
32
  this.append(' ');
33
33
  }
34
34
  this.append('select ');
35
- if (node.distinctOnSelections && !isEmpty(node.distinctOnSelections)) {
35
+ if (node.distinctOnSelections) {
36
36
  this.compileDistinctOn(node.distinctOnSelections);
37
37
  this.append(' ');
38
38
  }
@@ -118,8 +118,11 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
118
118
  this.visitNode(node.with);
119
119
  this.append(' ');
120
120
  }
121
- this.append(this.getInsertInto(node));
122
- this.append(' ');
121
+ this.append('insert');
122
+ if (node.ignore) {
123
+ this.append(' ignore');
124
+ }
125
+ this.append(' into ');
123
126
  this.visitNode(node.into);
124
127
  if (node.columns) {
125
128
  this.append(' (');
@@ -134,6 +137,10 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
134
137
  this.append(' ');
135
138
  this.visitNode(node.onConflict);
136
139
  }
140
+ if (node.onDuplicateKey) {
141
+ this.append(' ');
142
+ this.visitNode(node.onDuplicateKey);
143
+ }
137
144
  if (node.returning) {
138
145
  this.append(' ');
139
146
  this.visitNode(node.returning);
@@ -142,9 +149,6 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
142
149
  this.append(')');
143
150
  }
144
151
  }
145
- getInsertInto(node) {
146
- return 'insert into';
147
- }
148
152
  visitDeleteQuery(node) {
149
153
  const isSubQuery = this.nodeStack.find(QueryNode.is) !== node;
150
154
  if (isSubQuery) {
@@ -330,6 +334,10 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
330
334
  this.append(' on delete ');
331
335
  this.append(node.onDelete);
332
336
  }
337
+ if (node.onUpdate) {
338
+ this.append(' on update ');
339
+ this.append(node.onUpdate);
340
+ }
333
341
  }
334
342
  visitDropTable(node) {
335
343
  this.append('drop table ');
@@ -420,6 +428,10 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
420
428
  this.compileList(node.updates);
421
429
  }
422
430
  }
431
+ visitOnDuplicateKey(node) {
432
+ this.append('on duplicate key update ');
433
+ this.compileList(node.updates);
434
+ }
423
435
  visitCreateIndex(node) {
424
436
  this.append('create ');
425
437
  if (node.unique) {
@@ -512,6 +524,14 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
512
524
  this.compileList(node.columns);
513
525
  this.append(') ');
514
526
  this.visitNode(node.references);
527
+ if (node.onDelete) {
528
+ this.append(' on delete ');
529
+ this.append(node.onDelete);
530
+ }
531
+ if (node.onUpdate) {
532
+ this.append(' on update ');
533
+ this.append(node.onUpdate);
534
+ }
515
535
  }
516
536
  visitList(node) {
517
537
  this.compileList(node.items);
@@ -5,7 +5,7 @@ import { QueryExecutor } from './query-executor/query-executor.js';
5
5
  import { RawBuilder } from './raw-builder/raw-builder.js';
6
6
  import { CommonTableExpression, QueryCreatorWithCommonTableExpression } from './parser/with-parser.js';
7
7
  import { WithNode } from './operation-node/with-node.js';
8
- import { DialectAdapter } from './index.js';
8
+ import { ParseContext } from './parser/parse-context.js';
9
9
  export declare class QueryCreator<DB> {
10
10
  #private;
11
11
  constructor(props: QueryCreatorProps);
@@ -378,7 +378,7 @@ export declare class QueryCreator<DB> {
378
378
  raw<T = unknown>(sql: string, params?: any[]): RawBuilder<T>;
379
379
  }
380
380
  export interface QueryCreatorProps {
381
- readonly adapter: DialectAdapter;
382
381
  readonly executor: QueryExecutor;
382
+ readonly parseContext: ParseContext;
383
383
  readonly withNode?: WithNode;
384
384
  }
@@ -10,7 +10,6 @@ import { WithNode } from './operation-node/with-node.js';
10
10
  import { createQueryId } from './util/query-id.js';
11
11
  import { WithSchemaPlugin } from './plugin/with-schema/with-schema-plugin.js';
12
12
  import { freeze } from './util/object-utils.js';
13
- import { createParseContext } from './parser/parse-context.js';
14
13
  export class QueryCreator {
15
14
  #props;
16
15
  constructor(props) {
@@ -20,8 +19,8 @@ export class QueryCreator {
20
19
  return new QueryBuilder({
21
20
  queryId: createQueryId(),
22
21
  executor: this.#props.executor,
23
- adapter: this.#props.adapter,
24
- queryNode: SelectQueryNode.create(parseTableExpressionOrList(this.#parseContext, from), this.#props.withNode),
22
+ parseContext: this.#props.parseContext,
23
+ queryNode: SelectQueryNode.create(parseTableExpressionOrList(this.#props.parseContext, from), this.#props.withNode),
25
24
  });
26
25
  }
27
26
  /**
@@ -69,7 +68,7 @@ export class QueryCreator {
69
68
  return new QueryBuilder({
70
69
  queryId: createQueryId(),
71
70
  executor: this.#props.executor,
72
- adapter: this.#props.adapter,
71
+ parseContext: this.#props.parseContext,
73
72
  queryNode: InsertQueryNode.create(parseTable(table), this.#props.withNode),
74
73
  });
75
74
  }
@@ -91,8 +90,8 @@ export class QueryCreator {
91
90
  return new QueryBuilder({
92
91
  queryId: createQueryId(),
93
92
  executor: this.#props.executor,
94
- adapter: this.#props.adapter,
95
- queryNode: DeleteQueryNode.create(parseTableExpression(this.#parseContext, table), this.#props.withNode),
93
+ parseContext: this.#props.parseContext,
94
+ queryNode: DeleteQueryNode.create(parseTableExpression(this.#props.parseContext, table), this.#props.withNode),
96
95
  });
97
96
  }
98
97
  /**
@@ -117,8 +116,8 @@ export class QueryCreator {
117
116
  return new QueryBuilder({
118
117
  queryId: createQueryId(),
119
118
  executor: this.#props.executor,
120
- adapter: this.#props.adapter,
121
- queryNode: UpdateQueryNode.create(parseTableExpression(this.#parseContext, table), this.#props.withNode),
119
+ parseContext: this.#props.parseContext,
120
+ queryNode: UpdateQueryNode.create(parseTableExpression(this.#props.parseContext, table), this.#props.withNode),
122
121
  });
123
122
  }
124
123
  /**
@@ -144,7 +143,7 @@ export class QueryCreator {
144
143
  * ```
145
144
  */
146
145
  with(name, expression) {
147
- const cte = parseCommonTableExpression(this.#parseContext, name, expression);
146
+ const cte = parseCommonTableExpression(this.#props.parseContext, name, expression);
148
147
  return new QueryCreator({
149
148
  ...this.#props,
150
149
  withNode: this.#props.withNode
@@ -322,7 +321,4 @@ export class QueryCreator {
322
321
  executor: this.#props.executor,
323
322
  });
324
323
  }
325
- get #parseContext() {
326
- return createParseContext(this.#props.adapter);
327
- }
328
324
  }
@@ -2,15 +2,16 @@ import { AlterColumnNode } from '../operation-node/alter-column-node.js';
2
2
  import { AlterTableNode } from '../operation-node/alter-table-node.js';
3
3
  import { ColumnDataType } from '../operation-node/data-type-node.js';
4
4
  import { OperationNodeSource } from '../operation-node/operation-node-source.js';
5
- import { OnDelete } from '../operation-node/references-node.js';
5
+ import { OnModifyForeignAction } from '../operation-node/references-node.js';
6
6
  import { CompiledQuery } from '../query-compiler/compiled-query.js';
7
- import { RawBuilder } from '../raw-builder/raw-builder.js';
8
7
  import { Compilable } from '../util/compilable.js';
9
8
  import { PrimitiveValue } from '../util/object-utils.js';
10
9
  import { ColumnDefinitionBuilder, ColumnDefinitionBuilderInterface } from './column-definition-builder.js';
11
10
  import { AnyRawBuilder } from '../query-builder/type-utils.js';
12
11
  import { QueryId } from '../util/query-id.js';
13
12
  import { QueryExecutor } from '../query-executor/query-executor.js';
13
+ import { DataTypeExpression } from '../parser/data-type-parser.js';
14
+ import { ForeignKeyConstraintBuilder, ForeignKeyConstraintBuilderInterface } from './foreign-key-constraint-builder.js';
14
15
  export declare class AlterTableBuilder {
15
16
  #private;
16
17
  constructor(props: AlterTableBuilderProps);
@@ -19,8 +20,16 @@ export declare class AlterTableBuilder {
19
20
  alterColumn(column: string): AlterColumnBuilder;
20
21
  dropColumn(column: string): AlterTableExecutor;
21
22
  renameColumn(column: string, newColumn: string): AlterTableExecutor;
22
- addColumn(columnName: string, dataType: ColumnDataType | RawBuilder): AlterTableAddColumnBuilder;
23
- modifyColumn(columnName: string, dataType: ColumnDataType | RawBuilder): AlterTableModifyColumnBuilder;
23
+ addColumn(columnName: string, dataType: DataTypeExpression): AlterTableAddColumnBuilder;
24
+ /**
25
+ * Creates an `alter table modify column` query. The `modify column` statement
26
+ * is only implemeted by MySQL and oracle AFAIK. On other databases you
27
+ * should use the `alterColumn` method.
28
+ */
29
+ modifyColumn(columnName: string, dataType: DataTypeExpression): AlterTableModifyColumnBuilder;
30
+ addUniqueConstraint(constraintName: string, columns: string[]): AlterTableExecutor;
31
+ addCheckConstraint(constraintName: string, checkExpression: string): AlterTableExecutor;
32
+ addForeignKeyConstraint(constraintName: string, columns: string[], targetTable: string, targetColumns: string[]): AlterTableAddForeignKeyConstraintBuilder;
24
33
  }
25
34
  export interface AlterTableBuilderProps {
26
35
  readonly queryId: QueryId;
@@ -48,13 +57,14 @@ export declare class AlterTableExecutor implements OperationNodeSource, Compilab
48
57
  }
49
58
  export interface AlterTableExecutorProps extends AlterTableBuilderProps {
50
59
  }
51
- export declare class AlterTableAddColumnBuilder implements ColumnDefinitionBuilderInterface<AlterTableAddColumnBuilder> {
60
+ export declare class AlterTableAddColumnBuilder implements ColumnDefinitionBuilderInterface<AlterTableAddColumnBuilder>, OperationNodeSource, Compilable {
52
61
  #private;
53
62
  constructor(props: AlterTableAddColumnBuilderProps);
54
63
  increments(): AlterTableAddColumnBuilder;
55
64
  primaryKey(): AlterTableAddColumnBuilder;
56
65
  references(ref: string): AlterTableAddColumnBuilder;
57
- onDelete(onDelete: OnDelete): AlterTableAddColumnBuilder;
66
+ onDelete(onDelete: OnModifyForeignAction): AlterTableAddColumnBuilder;
67
+ onUpdate(onDelete: OnModifyForeignAction): AlterTableAddColumnBuilder;
58
68
  unique(): AlterTableAddColumnBuilder;
59
69
  notNull(): AlterTableAddColumnBuilder;
60
70
  defaultTo(value: PrimitiveValue | AnyRawBuilder): AlterTableAddColumnBuilder;
@@ -66,13 +76,14 @@ export declare class AlterTableAddColumnBuilder implements ColumnDefinitionBuild
66
76
  export interface AlterTableAddColumnBuilderProps extends AlterTableBuilderProps {
67
77
  readonly columnBuilder: ColumnDefinitionBuilder;
68
78
  }
69
- export declare class AlterTableModifyColumnBuilder implements ColumnDefinitionBuilderInterface<AlterTableModifyColumnBuilder> {
79
+ export declare class AlterTableModifyColumnBuilder implements ColumnDefinitionBuilderInterface<AlterTableModifyColumnBuilder>, OperationNodeSource, Compilable {
70
80
  #private;
71
81
  constructor(props: AlterTableModifyColumnBuilderProps);
72
82
  increments(): AlterTableModifyColumnBuilder;
73
83
  primaryKey(): AlterTableModifyColumnBuilder;
74
84
  references(ref: string): AlterTableModifyColumnBuilder;
75
- onDelete(onDelete: OnDelete): AlterTableModifyColumnBuilder;
85
+ onDelete(onDelete: OnModifyForeignAction): AlterTableModifyColumnBuilder;
86
+ onUpdate(onUpdate: OnModifyForeignAction): AlterTableModifyColumnBuilder;
76
87
  unique(): AlterTableModifyColumnBuilder;
77
88
  notNull(): AlterTableModifyColumnBuilder;
78
89
  defaultTo(value: PrimitiveValue | AnyRawBuilder): AlterTableModifyColumnBuilder;
@@ -84,3 +95,15 @@ export declare class AlterTableModifyColumnBuilder implements ColumnDefinitionBu
84
95
  export interface AlterTableModifyColumnBuilderProps extends AlterTableBuilderProps {
85
96
  readonly columnBuilder: ColumnDefinitionBuilder;
86
97
  }
98
+ export declare class AlterTableAddForeignKeyConstraintBuilder implements ForeignKeyConstraintBuilderInterface<AlterTableAddForeignKeyConstraintBuilder>, OperationNodeSource, Compilable {
99
+ #private;
100
+ constructor(props: AlterTableAddForeignKeyConstraintBuilderProps);
101
+ onDelete(onDelete: OnModifyForeignAction): AlterTableAddForeignKeyConstraintBuilder;
102
+ onUpdate(onUpdate: OnModifyForeignAction): AlterTableAddForeignKeyConstraintBuilder;
103
+ toOperationNode(): AlterTableNode;
104
+ compile(): CompiledQuery;
105
+ execute(): Promise<void>;
106
+ }
107
+ export interface AlterTableAddForeignKeyConstraintBuilderProps extends AlterTableBuilderProps {
108
+ readonly constraintBuilder: ForeignKeyConstraintBuilder;
109
+ }
@@ -13,6 +13,13 @@ import { freeze } from '../util/object-utils.js';
13
13
  import { preventAwait } from '../util/prevent-await.js';
14
14
  import { ColumnDefinitionBuilder, } from './column-definition-builder.js';
15
15
  import { ModifyColumnNode } from '../operation-node/modify-column-node.js';
16
+ import { parseDataTypeExpression, } from '../parser/data-type-parser.js';
17
+ import { ForeignKeyConstraintBuilder, } from './foreign-key-constraint-builder.js';
18
+ import { AddConstraintNode } from '../operation-node/add-constraint-node.js';
19
+ import { UniqueConstraintNode } from '../operation-node/unique-constraint-node.js';
20
+ import { CheckConstraintNode } from '../operation-node/check-constraint-node.js';
21
+ import { ForeignKeyConstraintNode } from '../operation-node/foreign-key-constraint-node.js';
22
+ import { ColumnNode } from '../operation-node/column-node.js';
16
23
  export class AlterTableBuilder {
17
24
  #props;
18
25
  constructor(props) {
@@ -59,17 +66,40 @@ export class AlterTableBuilder {
59
66
  addColumn(columnName, dataType) {
60
67
  return new AlterTableAddColumnBuilder({
61
68
  ...this.#props,
62
- columnBuilder: new ColumnDefinitionBuilder(ColumnDefinitionNode.create(columnName, isOperationNodeSource(dataType)
63
- ? dataType.toOperationNode()
64
- : DataTypeNode.create(dataType))),
69
+ columnBuilder: new ColumnDefinitionBuilder(ColumnDefinitionNode.create(columnName, parseDataTypeExpression(dataType))),
65
70
  });
66
71
  }
72
+ /**
73
+ * Creates an `alter table modify column` query. The `modify column` statement
74
+ * is only implemeted by MySQL and oracle AFAIK. On other databases you
75
+ * should use the `alterColumn` method.
76
+ */
67
77
  modifyColumn(columnName, dataType) {
68
78
  return new AlterTableModifyColumnBuilder({
69
79
  ...this.#props,
70
- columnBuilder: new ColumnDefinitionBuilder(ColumnDefinitionNode.create(columnName, isOperationNodeSource(dataType)
71
- ? dataType.toOperationNode()
72
- : DataTypeNode.create(dataType))),
80
+ columnBuilder: new ColumnDefinitionBuilder(ColumnDefinitionNode.create(columnName, parseDataTypeExpression(dataType))),
81
+ });
82
+ }
83
+ addUniqueConstraint(constraintName, columns) {
84
+ return new AlterTableExecutor({
85
+ ...this.#props,
86
+ alterTableNode: AlterTableNode.cloneWith(this.#props.alterTableNode, {
87
+ addConstraint: AddConstraintNode.create(UniqueConstraintNode.create(columns, constraintName)),
88
+ }),
89
+ });
90
+ }
91
+ addCheckConstraint(constraintName, checkExpression) {
92
+ return new AlterTableExecutor({
93
+ ...this.#props,
94
+ alterTableNode: AlterTableNode.cloneWith(this.#props.alterTableNode, {
95
+ addConstraint: AddConstraintNode.create(CheckConstraintNode.create(checkExpression, constraintName)),
96
+ }),
97
+ });
98
+ }
99
+ addForeignKeyConstraint(constraintName, columns, targetTable, targetColumns) {
100
+ return new AlterTableAddForeignKeyConstraintBuilder({
101
+ ...this.#props,
102
+ constraintBuilder: new ForeignKeyConstraintBuilder(ForeignKeyConstraintNode.create(columns.map(ColumnNode.create), TableNode.create(targetTable), targetColumns.map(ColumnNode.create), constraintName)),
73
103
  });
74
104
  }
75
105
  }
@@ -175,6 +205,12 @@ export class AlterTableAddColumnBuilder {
175
205
  columnBuilder: this.#props.columnBuilder.onDelete(onDelete),
176
206
  });
177
207
  }
208
+ onUpdate(onDelete) {
209
+ return new AlterTableAddColumnBuilder({
210
+ ...this.#props,
211
+ columnBuilder: this.#props.columnBuilder.onUpdate(onDelete),
212
+ });
213
+ }
178
214
  unique() {
179
215
  return new AlterTableAddColumnBuilder({
180
216
  ...this.#props,
@@ -240,6 +276,12 @@ export class AlterTableModifyColumnBuilder {
240
276
  columnBuilder: this.#props.columnBuilder.onDelete(onDelete),
241
277
  });
242
278
  }
279
+ onUpdate(onUpdate) {
280
+ return new AlterTableModifyColumnBuilder({
281
+ ...this.#props,
282
+ columnBuilder: this.#props.columnBuilder.onUpdate(onUpdate),
283
+ });
284
+ }
243
285
  unique() {
244
286
  return new AlterTableModifyColumnBuilder({
245
287
  ...this.#props,
@@ -276,8 +318,38 @@ export class AlterTableModifyColumnBuilder {
276
318
  await this.#props.executor.executeQuery(this.compile(), this.#props.queryId);
277
319
  }
278
320
  }
321
+ export class AlterTableAddForeignKeyConstraintBuilder {
322
+ #props;
323
+ constructor(props) {
324
+ this.#props = freeze(props);
325
+ }
326
+ onDelete(onDelete) {
327
+ return new AlterTableAddForeignKeyConstraintBuilder({
328
+ ...this.#props,
329
+ constraintBuilder: this.#props.constraintBuilder.onDelete(onDelete),
330
+ });
331
+ }
332
+ onUpdate(onUpdate) {
333
+ return new AlterTableAddForeignKeyConstraintBuilder({
334
+ ...this.#props,
335
+ constraintBuilder: this.#props.constraintBuilder.onUpdate(onUpdate),
336
+ });
337
+ }
338
+ toOperationNode() {
339
+ return this.#props.executor.transformQuery(AlterTableNode.cloneWith(this.#props.alterTableNode, {
340
+ addConstraint: AddConstraintNode.create(this.#props.constraintBuilder.toOperationNode()),
341
+ }), this.#props.queryId);
342
+ }
343
+ compile() {
344
+ return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
345
+ }
346
+ async execute() {
347
+ await this.#props.executor.executeQuery(this.compile(), this.#props.queryId);
348
+ }
349
+ }
279
350
  preventAwait(AlterTableBuilder, "don't await AlterTableBuilder instances");
280
351
  preventAwait(AlterColumnBuilder, "don't await AlterColumnBuilder instances");
281
352
  preventAwait(AlterTableExecutor, "don't await AlterTableExecutor instances directly. To execute the query you need to call `execute`");
282
353
  preventAwait(AlterTableAddColumnBuilder, "don't await AlterTableAddColumnBuilder instances directly. To execute the query you need to call `execute`");
283
354
  preventAwait(AlterTableModifyColumnBuilder, "don't await AlterTableModifyColumnBuilder instances directly. To execute the query you need to call `execute`");
355
+ preventAwait(AlterTableAddForeignKeyConstraintBuilder, "don't await AlterTableAddForeignKeyConstraintBuilder instances directly. To execute the query you need to call `execute`");
@@ -1,8 +1,9 @@
1
1
  import { OperationNodeSource } from '../operation-node/operation-node-source.js';
2
- import { OnDelete } from '../operation-node/references-node.js';
2
+ import { OnModifyForeignAction } from '../operation-node/references-node.js';
3
3
  import { PrimitiveValue } from '../util/object-utils.js';
4
4
  import { ColumnDefinitionNode } from '../operation-node/column-definition-node.js';
5
5
  import { AnyRawBuilder } from '../query-builder/type-utils.js';
6
+ import { DefaultValueExpression } from '../parser/default-value-parser.js';
6
7
  export interface ColumnDefinitionBuilderInterface<R> {
7
8
  /**
8
9
  * Makes the column automatically incrementing.
@@ -31,7 +32,11 @@ export interface ColumnDefinitionBuilderInterface<R> {
31
32
  /**
32
33
  * Adds an `on delete` constraint for the foreign key column.
33
34
  */
34
- onDelete(onDelete: OnDelete): R;
35
+ onDelete(onDelete: OnModifyForeignAction): R;
36
+ /**
37
+ * Adds an `on update` constraint for the foreign key column.
38
+ */
39
+ onUpdate(onUpdate: OnModifyForeignAction): R;
35
40
  /**
36
41
  * Adds a unique constraint for the column.
37
42
  */
@@ -71,10 +76,11 @@ export declare class ColumnDefinitionBuilder implements ColumnDefinitionBuilderI
71
76
  increments(): ColumnDefinitionBuilder;
72
77
  primaryKey(): ColumnDefinitionBuilder;
73
78
  references(ref: string): ColumnDefinitionBuilder;
74
- onDelete(onDelete: OnDelete): ColumnDefinitionBuilder;
79
+ onDelete(onDelete: OnModifyForeignAction): ColumnDefinitionBuilder;
80
+ onUpdate(onUpdate: OnModifyForeignAction): ColumnDefinitionBuilder;
75
81
  unique(): ColumnDefinitionBuilder;
76
82
  notNull(): ColumnDefinitionBuilder;
77
- defaultTo(value: PrimitiveValue | AnyRawBuilder): ColumnDefinitionBuilder;
83
+ defaultTo(value: DefaultValueExpression): ColumnDefinitionBuilder;
78
84
  check(sql: string): ColumnDefinitionBuilder;
79
85
  toOperationNode(): ColumnDefinitionNode;
80
86
  }
@@ -1,12 +1,11 @@
1
1
  import { CheckConstraintNode } from '../operation-node/check-constraint-node.js';
2
- import { isOperationNodeSource, } from '../operation-node/operation-node-source.js';
3
2
  import { ReferenceNode } from '../operation-node/reference-node.js';
4
- import { ReferencesNode } from '../operation-node/references-node.js';
3
+ import { ReferencesNode, } from '../operation-node/references-node.js';
5
4
  import { SelectAllNode } from '../operation-node/select-all-node.js';
6
- import { ValueNode } from '../operation-node/value-node.js';
7
5
  import { parseStringReference } from '../parser/reference-parser.js';
8
6
  import { preventAwait } from '../util/prevent-await.js';
9
7
  import { ColumnDefinitionNode } from '../operation-node/column-definition-node.js';
8
+ import { parseDefaultValueExpression, } from '../parser/default-value-parser.js';
10
9
  export class ColumnDefinitionBuilder {
11
10
  #node;
12
11
  constructor(node) {
@@ -37,6 +36,14 @@ export class ColumnDefinitionBuilder {
37
36
  references: ReferencesNode.cloneWithOnDelete(this.#node.references, onDelete),
38
37
  }));
39
38
  }
39
+ onUpdate(onUpdate) {
40
+ if (!this.#node.references) {
41
+ throw new Error('on update constraint can only be added for foreign keys');
42
+ }
43
+ return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, {
44
+ references: ReferencesNode.cloneWithOnUpdate(this.#node.references, onUpdate),
45
+ }));
46
+ }
40
47
  unique() {
41
48
  return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, { isUnique: true }));
42
49
  }
@@ -45,9 +52,7 @@ export class ColumnDefinitionBuilder {
45
52
  }
46
53
  defaultTo(value) {
47
54
  return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, {
48
- defaultTo: isOperationNodeSource(value)
49
- ? value.toOperationNode()
50
- : ValueNode.createImmediate(value),
55
+ defaultTo: parseDefaultValueExpression(value),
51
56
  }));
52
57
  }
53
58
  check(sql) {
@@ -59,4 +64,4 @@ export class ColumnDefinitionBuilder {
59
64
  return this.#node;
60
65
  }
61
66
  }
62
- preventAwait(ColumnDefinitionBuilder, "don't await ColumnBuilder instances directly.");
67
+ preventAwait(ColumnDefinitionBuilder, "don't await ColumnDefinitionBuilder instances directly.");
@@ -6,7 +6,7 @@ import { QueryExecutor } from '../query-executor/query-executor.js';
6
6
  import { QueryId } from '../util/query-id.js';
7
7
  export declare class CreateIndexBuilder implements OperationNodeSource, Compilable {
8
8
  #private;
9
- constructor(args: CreateIndexBuilderConstructorArgs);
9
+ constructor(props: CreateIndexBuilderProps);
10
10
  /**
11
11
  * Makes the index unique.
12
12
  */
@@ -49,8 +49,8 @@ export declare class CreateIndexBuilder implements OperationNodeSource, Compilab
49
49
  compile(): CompiledQuery;
50
50
  execute(): Promise<void>;
51
51
  }
52
- export interface CreateIndexBuilderConstructorArgs {
53
- queryId: QueryId;
54
- createIndexNode: CreateIndexNode;
55
- executor: QueryExecutor;
52
+ export interface CreateIndexBuilderProps {
53
+ readonly queryId: QueryId;
54
+ readonly executor: QueryExecutor;
55
+ readonly createIndexNode: CreateIndexNode;
56
56
  }
@@ -4,23 +4,19 @@ import { RawNode } from '../operation-node/raw-node.js';
4
4
  import { parseColumnName } from '../parser/reference-parser.js';
5
5
  import { parseTable } from '../parser/table-parser.js';
6
6
  import { preventAwait } from '../util/prevent-await.js';
7
+ import { freeze } from '../util/object-utils.js';
7
8
  export class CreateIndexBuilder {
8
- #queryId;
9
- #createIndexNode;
10
- #executor;
11
- constructor(args) {
12
- this.#queryId = args.queryId;
13
- this.#createIndexNode = args.createIndexNode;
14
- this.#executor = args.executor;
9
+ #props;
10
+ constructor(props) {
11
+ this.#props = freeze(props);
15
12
  }
16
13
  /**
17
14
  * Makes the index unique.
18
15
  */
19
16
  unique() {
20
17
  return new CreateIndexBuilder({
21
- queryId: this.#queryId,
22
- executor: this.#executor,
23
- createIndexNode: CreateIndexNode.cloneWith(this.#createIndexNode, {
18
+ ...this.#props,
19
+ createIndexNode: CreateIndexNode.cloneWith(this.#props.createIndexNode, {
24
20
  unique: true,
25
21
  }),
26
22
  });
@@ -30,9 +26,8 @@ export class CreateIndexBuilder {
30
26
  */
31
27
  on(table) {
32
28
  return new CreateIndexBuilder({
33
- queryId: this.#queryId,
34
- executor: this.#executor,
35
- createIndexNode: CreateIndexNode.cloneWith(this.#createIndexNode, {
29
+ ...this.#props,
30
+ createIndexNode: CreateIndexNode.cloneWith(this.#props.createIndexNode, {
36
31
  table: parseTable(table),
37
32
  }),
38
33
  });
@@ -44,9 +39,8 @@ export class CreateIndexBuilder {
44
39
  */
45
40
  column(column) {
46
41
  return new CreateIndexBuilder({
47
- queryId: this.#queryId,
48
- executor: this.#executor,
49
- createIndexNode: CreateIndexNode.cloneWith(this.#createIndexNode, {
42
+ ...this.#props,
43
+ createIndexNode: CreateIndexNode.cloneWith(this.#props.createIndexNode, {
50
44
  expression: parseColumnName(column),
51
45
  }),
52
46
  });
@@ -58,9 +52,8 @@ export class CreateIndexBuilder {
58
52
  */
59
53
  columns(columns) {
60
54
  return new CreateIndexBuilder({
61
- queryId: this.#queryId,
62
- executor: this.#executor,
63
- createIndexNode: CreateIndexNode.cloneWith(this.#createIndexNode, {
55
+ ...this.#props,
56
+ createIndexNode: CreateIndexNode.cloneWith(this.#props.createIndexNode, {
64
57
  expression: ListNode.create(columns.map(parseColumnName)),
65
58
  }),
66
59
  });
@@ -79,30 +72,28 @@ export class CreateIndexBuilder {
79
72
  */
80
73
  expression(expression) {
81
74
  return new CreateIndexBuilder({
82
- queryId: this.#queryId,
83
- executor: this.#executor,
84
- createIndexNode: CreateIndexNode.cloneWith(this.#createIndexNode, {
75
+ ...this.#props,
76
+ createIndexNode: CreateIndexNode.cloneWith(this.#props.createIndexNode, {
85
77
  expression: RawNode.createWithSql(expression),
86
78
  }),
87
79
  });
88
80
  }
89
81
  using(indexType) {
90
82
  return new CreateIndexBuilder({
91
- queryId: this.#queryId,
92
- executor: this.#executor,
93
- createIndexNode: CreateIndexNode.cloneWith(this.#createIndexNode, {
83
+ ...this.#props,
84
+ createIndexNode: CreateIndexNode.cloneWith(this.#props.createIndexNode, {
94
85
  using: RawNode.createWithSql(indexType),
95
86
  }),
96
87
  });
97
88
  }
98
89
  toOperationNode() {
99
- return this.#executor.transformQuery(this.#createIndexNode, this.#queryId);
90
+ return this.#props.executor.transformQuery(this.#props.createIndexNode, this.#props.queryId);
100
91
  }
101
92
  compile() {
102
- return this.#executor.compileQuery(this.toOperationNode(), this.#queryId);
93
+ return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
103
94
  }
104
95
  async execute() {
105
- await this.#executor.executeQuery(this.compile(), this.#queryId);
96
+ await this.#props.executor.executeQuery(this.compile(), this.#props.queryId);
106
97
  }
107
98
  }
108
99
  preventAwait(CreateIndexBuilder, "don't await CreateIndexBuilder instances directly. To execute the query you need to call `execute`");
@@ -6,14 +6,14 @@ import { QueryExecutor } from '../query-executor/query-executor.js';
6
6
  import { QueryId } from '../util/query-id.js';
7
7
  export declare class CreateSchemaBuilder implements OperationNodeSource, Compilable {
8
8
  #private;
9
- constructor(args: CreateSchemaBuilderConstructorArgs);
9
+ constructor(props: CreateSchemaBuilderProps);
10
10
  ifNotExists(): CreateSchemaBuilder;
11
11
  toOperationNode(): CreateSchemaNode;
12
12
  compile(): CompiledQuery;
13
13
  execute(): Promise<void>;
14
14
  }
15
- export interface CreateSchemaBuilderConstructorArgs {
16
- queryId: QueryId;
17
- createSchemaNode: CreateSchemaNode;
18
- executor: QueryExecutor;
15
+ export interface CreateSchemaBuilderProps {
16
+ readonly queryId: QueryId;
17
+ readonly executor: QueryExecutor;
18
+ readonly createSchemaNode: CreateSchemaNode;
19
19
  }
@@ -1,29 +1,25 @@
1
1
  import { CreateSchemaNode } from '../operation-node/create-schema-node.js';
2
2
  import { preventAwait } from '../util/prevent-await.js';
3
+ import { freeze } from '../util/object-utils.js';
3
4
  export class CreateSchemaBuilder {
4
- #queryId;
5
- #createSchemaNode;
6
- #executor;
7
- constructor(args) {
8
- this.#queryId = args.queryId;
9
- this.#createSchemaNode = args.createSchemaNode;
10
- this.#executor = args.executor;
5
+ #props;
6
+ constructor(props) {
7
+ this.#props = freeze(props);
11
8
  }
12
9
  ifNotExists() {
13
10
  return new CreateSchemaBuilder({
14
- queryId: this.#queryId,
15
- executor: this.#executor,
16
- createSchemaNode: CreateSchemaNode.cloneWithModifier(this.#createSchemaNode, 'IfNotExists'),
11
+ ...this.#props,
12
+ createSchemaNode: CreateSchemaNode.cloneWithModifier(this.#props.createSchemaNode, 'IfNotExists'),
17
13
  });
18
14
  }
19
15
  toOperationNode() {
20
- return this.#executor.transformQuery(this.#createSchemaNode, this.#queryId);
16
+ return this.#props.executor.transformQuery(this.#props.createSchemaNode, this.#props.queryId);
21
17
  }
22
18
  compile() {
23
- return this.#executor.compileQuery(this.toOperationNode(), this.#queryId);
19
+ return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
24
20
  }
25
21
  async execute() {
26
- await this.#executor.executeQuery(this.compile(), this.#queryId);
22
+ await this.#props.executor.executeQuery(this.compile(), this.#props.queryId);
27
23
  }
28
24
  }
29
25
  preventAwait(CreateSchemaBuilder, "don't await CreateSchemaBuilder instances directly. To execute the query you need to call `execute`");