kysely 0.7.2 → 0.7.6

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 (122) hide show
  1. package/README.md +9 -5
  2. package/dist/cjs/dialect/dialect-adapter.d.ts +11 -9
  3. package/dist/cjs/index.d.ts +2 -1
  4. package/dist/cjs/index.js +2 -1
  5. package/dist/cjs/kysely.d.ts +2 -2
  6. package/dist/cjs/kysely.js +9 -7
  7. package/dist/cjs/operation-node/create-table-node.d.ts +2 -1
  8. package/dist/cjs/operation-node/create-table-node.js +1 -5
  9. package/dist/cjs/operation-node/foreign-key-constraint-node.d.ts +12 -1
  10. package/dist/cjs/operation-node/foreign-key-constraint-node.js +6 -0
  11. package/dist/cjs/operation-node/join-node.d.ts +1 -0
  12. package/dist/cjs/operation-node/join-node.js +8 -0
  13. package/dist/cjs/operation-node/operation-node-transformer.js +3 -0
  14. package/dist/cjs/operation-node/references-node.d.ts +5 -3
  15. package/dist/cjs/operation-node/references-node.js +6 -0
  16. package/dist/cjs/operation-node/table-node.js +2 -2
  17. package/dist/cjs/parser/data-type-parser.d.ts +5 -0
  18. package/dist/cjs/parser/data-type-parser.js +11 -0
  19. package/dist/cjs/parser/default-value-parser.d.ts +6 -0
  20. package/dist/cjs/parser/default-value-parser.js +11 -0
  21. package/dist/cjs/parser/filter-parser.d.ts +2 -2
  22. package/dist/cjs/parser/filter-parser.js +34 -36
  23. package/dist/cjs/parser/join-parser.d.ts +1 -1
  24. package/dist/cjs/parser/join-parser.js +9 -11
  25. package/dist/cjs/parser/parse-context.d.ts +33 -6
  26. package/dist/cjs/parser/parse-context.js +40 -33
  27. package/dist/cjs/parser/reference-parser.d.ts +2 -2
  28. package/dist/cjs/parser/reference-parser.js +16 -12
  29. package/dist/cjs/parser/select-parser.d.ts +1 -2
  30. package/dist/cjs/parser/select-parser.js +4 -5
  31. package/dist/cjs/parser/table-parser.js +11 -6
  32. package/dist/cjs/parser/update-set-parser.js +1 -1
  33. package/dist/cjs/parser/value-parser.js +1 -1
  34. package/dist/cjs/query-builder/{sub-query-builder.d.ts → expression-builder.d.ts} +6 -6
  35. package/dist/cjs/query-builder/{sub-query-builder.js → expression-builder.js} +6 -10
  36. package/dist/cjs/query-builder/join-builder.d.ts +2 -2
  37. package/dist/cjs/query-builder/join-builder.js +8 -12
  38. package/dist/cjs/query-builder/query-builder.d.ts +2 -2
  39. package/dist/cjs/query-builder/query-builder.js +34 -36
  40. package/dist/cjs/query-builder/type-utils.d.ts +5 -5
  41. package/dist/cjs/query-compiler/default-query-compiler.js +13 -1
  42. package/dist/cjs/query-creator.d.ts +2 -2
  43. package/dist/cjs/query-creator.js +8 -12
  44. package/dist/cjs/schema/alter-table-builder.d.ts +26 -8
  45. package/dist/cjs/schema/alter-table-builder.js +75 -7
  46. package/dist/cjs/schema/column-definition-builder.d.ts +10 -4
  47. package/dist/cjs/schema/column-definition-builder.js +11 -6
  48. package/dist/cjs/schema/create-index-builder.d.ts +5 -5
  49. package/dist/cjs/schema/create-index-builder.js +19 -28
  50. package/dist/cjs/schema/create-schema-builder.d.ts +5 -5
  51. package/dist/cjs/schema/create-schema-builder.js +9 -13
  52. package/dist/cjs/schema/create-table-builder.d.ts +22 -10
  53. package/dist/cjs/schema/create-table-builder.js +41 -34
  54. package/dist/cjs/schema/drop-index-builder.d.ts +5 -5
  55. package/dist/cjs/schema/drop-index-builder.js +11 -16
  56. package/dist/cjs/schema/drop-schema-builder.d.ts +5 -5
  57. package/dist/cjs/schema/drop-schema-builder.js +9 -13
  58. package/dist/cjs/schema/drop-table-builder.d.ts +5 -5
  59. package/dist/cjs/schema/drop-table-builder.js +9 -13
  60. package/dist/cjs/schema/foreign-key-constraint-builder.d.ts +14 -0
  61. package/dist/cjs/schema/foreign-key-constraint-builder.js +26 -0
  62. package/dist/esm/dialect/dialect-adapter.d.ts +11 -9
  63. package/dist/esm/index.d.ts +2 -1
  64. package/dist/esm/index.js +2 -1
  65. package/dist/esm/kysely.d.ts +2 -2
  66. package/dist/esm/kysely.js +9 -7
  67. package/dist/esm/operation-node/create-table-node.d.ts +2 -1
  68. package/dist/esm/operation-node/create-table-node.js +1 -5
  69. package/dist/esm/operation-node/foreign-key-constraint-node.d.ts +12 -1
  70. package/dist/esm/operation-node/foreign-key-constraint-node.js +6 -0
  71. package/dist/esm/operation-node/join-node.d.ts +1 -0
  72. package/dist/esm/operation-node/join-node.js +8 -0
  73. package/dist/esm/operation-node/operation-node-transformer.js +3 -0
  74. package/dist/esm/operation-node/references-node.d.ts +5 -3
  75. package/dist/esm/operation-node/references-node.js +6 -0
  76. package/dist/esm/operation-node/table-node.js +2 -2
  77. package/dist/esm/parser/data-type-parser.d.ts +5 -0
  78. package/dist/esm/parser/data-type-parser.js +7 -0
  79. package/dist/esm/parser/default-value-parser.d.ts +6 -0
  80. package/dist/esm/parser/default-value-parser.js +7 -0
  81. package/dist/esm/parser/filter-parser.d.ts +2 -2
  82. package/dist/esm/parser/filter-parser.js +31 -33
  83. package/dist/esm/parser/join-parser.d.ts +1 -1
  84. package/dist/esm/parser/join-parser.js +7 -9
  85. package/dist/esm/parser/parse-context.d.ts +33 -6
  86. package/dist/esm/parser/parse-context.js +38 -31
  87. package/dist/esm/parser/reference-parser.d.ts +2 -2
  88. package/dist/esm/parser/reference-parser.js +16 -12
  89. package/dist/esm/parser/select-parser.d.ts +1 -2
  90. package/dist/esm/parser/select-parser.js +3 -3
  91. package/dist/esm/parser/table-parser.js +11 -6
  92. package/dist/esm/parser/update-set-parser.js +1 -1
  93. package/dist/esm/parser/value-parser.js +1 -1
  94. package/dist/esm/query-builder/{sub-query-builder.d.ts → expression-builder.d.ts} +6 -6
  95. package/dist/esm/query-builder/{sub-query-builder.js → expression-builder.js} +4 -8
  96. package/dist/esm/query-builder/join-builder.d.ts +2 -2
  97. package/dist/esm/query-builder/join-builder.js +9 -13
  98. package/dist/esm/query-builder/query-builder.d.ts +2 -2
  99. package/dist/esm/query-builder/query-builder.js +37 -39
  100. package/dist/esm/query-builder/type-utils.d.ts +5 -5
  101. package/dist/esm/query-compiler/default-query-compiler.js +14 -2
  102. package/dist/esm/query-creator.d.ts +2 -2
  103. package/dist/esm/query-creator.js +8 -12
  104. package/dist/esm/schema/alter-table-builder.d.ts +26 -8
  105. package/dist/esm/schema/alter-table-builder.js +73 -6
  106. package/dist/esm/schema/column-definition-builder.d.ts +10 -4
  107. package/dist/esm/schema/column-definition-builder.js +12 -7
  108. package/dist/esm/schema/create-index-builder.d.ts +5 -5
  109. package/dist/esm/schema/create-index-builder.js +19 -28
  110. package/dist/esm/schema/create-schema-builder.d.ts +5 -5
  111. package/dist/esm/schema/create-schema-builder.js +9 -13
  112. package/dist/esm/schema/create-table-builder.d.ts +22 -10
  113. package/dist/esm/schema/create-table-builder.js +41 -34
  114. package/dist/esm/schema/drop-index-builder.d.ts +5 -5
  115. package/dist/esm/schema/drop-index-builder.js +11 -16
  116. package/dist/esm/schema/drop-schema-builder.d.ts +5 -5
  117. package/dist/esm/schema/drop-schema-builder.js +9 -13
  118. package/dist/esm/schema/drop-table-builder.d.ts +5 -5
  119. package/dist/esm/schema/drop-table-builder.js +9 -13
  120. package/dist/esm/schema/foreign-key-constraint-builder.d.ts +14 -0
  121. package/dist/esm/schema/foreign-key-constraint-builder.js +22 -0
  122. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AlterTableModifyColumnBuilder = exports.AlterTableAddColumnBuilder = exports.AlterTableExecutor = exports.AlterColumnBuilder = exports.AlterTableBuilder = void 0;
3
+ exports.AlterTableAddForeignKeyConstraintBuilder = exports.AlterTableModifyColumnBuilder = exports.AlterTableAddColumnBuilder = exports.AlterTableExecutor = exports.AlterColumnBuilder = exports.AlterTableBuilder = void 0;
4
4
  const add_column_node_js_1 = require("../operation-node/add-column-node.js");
5
5
  const alter_column_node_js_1 = require("../operation-node/alter-column-node.js");
6
6
  const alter_table_node_js_1 = require("../operation-node/alter-table-node.js");
@@ -16,6 +16,13 @@ const object_utils_js_1 = require("../util/object-utils.js");
16
16
  const prevent_await_js_1 = require("../util/prevent-await.js");
17
17
  const column_definition_builder_js_1 = require("./column-definition-builder.js");
18
18
  const modify_column_node_js_1 = require("../operation-node/modify-column-node.js");
19
+ const data_type_parser_js_1 = require("../parser/data-type-parser.js");
20
+ const foreign_key_constraint_builder_js_1 = require("./foreign-key-constraint-builder.js");
21
+ const add_constraint_node_js_1 = require("../operation-node/add-constraint-node.js");
22
+ const unique_constraint_node_js_1 = require("../operation-node/unique-constraint-node.js");
23
+ const check_constraint_node_js_1 = require("../operation-node/check-constraint-node.js");
24
+ const foreign_key_constraint_node_js_1 = require("../operation-node/foreign-key-constraint-node.js");
25
+ const column_node_js_1 = require("../operation-node/column-node.js");
19
26
  class AlterTableBuilder {
20
27
  #props;
21
28
  constructor(props) {
@@ -62,9 +69,7 @@ class AlterTableBuilder {
62
69
  addColumn(columnName, dataType) {
63
70
  return new AlterTableAddColumnBuilder({
64
71
  ...this.#props,
65
- columnBuilder: new column_definition_builder_js_1.ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.create(columnName, (0, operation_node_source_js_1.isOperationNodeSource)(dataType)
66
- ? dataType.toOperationNode()
67
- : data_type_node_js_1.DataTypeNode.create(dataType))),
72
+ columnBuilder: new column_definition_builder_js_1.ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.create(columnName, (0, data_type_parser_js_1.parseDataTypeExpression)(dataType))),
68
73
  });
69
74
  }
70
75
  /**
@@ -75,9 +80,29 @@ class AlterTableBuilder {
75
80
  modifyColumn(columnName, dataType) {
76
81
  return new AlterTableModifyColumnBuilder({
77
82
  ...this.#props,
78
- columnBuilder: new column_definition_builder_js_1.ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.create(columnName, (0, operation_node_source_js_1.isOperationNodeSource)(dataType)
79
- ? dataType.toOperationNode()
80
- : data_type_node_js_1.DataTypeNode.create(dataType))),
83
+ columnBuilder: new column_definition_builder_js_1.ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.create(columnName, (0, data_type_parser_js_1.parseDataTypeExpression)(dataType))),
84
+ });
85
+ }
86
+ addUniqueConstraint(constraintName, columns) {
87
+ return new AlterTableExecutor({
88
+ ...this.#props,
89
+ alterTableNode: alter_table_node_js_1.AlterTableNode.cloneWith(this.#props.alterTableNode, {
90
+ addConstraint: add_constraint_node_js_1.AddConstraintNode.create(unique_constraint_node_js_1.UniqueConstraintNode.create(columns, constraintName)),
91
+ }),
92
+ });
93
+ }
94
+ addCheckConstraint(constraintName, checkExpression) {
95
+ return new AlterTableExecutor({
96
+ ...this.#props,
97
+ alterTableNode: alter_table_node_js_1.AlterTableNode.cloneWith(this.#props.alterTableNode, {
98
+ addConstraint: add_constraint_node_js_1.AddConstraintNode.create(check_constraint_node_js_1.CheckConstraintNode.create(checkExpression, constraintName)),
99
+ }),
100
+ });
101
+ }
102
+ addForeignKeyConstraint(constraintName, columns, targetTable, targetColumns) {
103
+ return new AlterTableAddForeignKeyConstraintBuilder({
104
+ ...this.#props,
105
+ constraintBuilder: new foreign_key_constraint_builder_js_1.ForeignKeyConstraintBuilder(foreign_key_constraint_node_js_1.ForeignKeyConstraintNode.create(columns.map(column_node_js_1.ColumnNode.create), table_node_js_1.TableNode.create(targetTable), targetColumns.map(column_node_js_1.ColumnNode.create), constraintName)),
81
106
  });
82
107
  }
83
108
  }
@@ -186,6 +211,12 @@ class AlterTableAddColumnBuilder {
186
211
  columnBuilder: this.#props.columnBuilder.onDelete(onDelete),
187
212
  });
188
213
  }
214
+ onUpdate(onDelete) {
215
+ return new AlterTableAddColumnBuilder({
216
+ ...this.#props,
217
+ columnBuilder: this.#props.columnBuilder.onUpdate(onDelete),
218
+ });
219
+ }
189
220
  unique() {
190
221
  return new AlterTableAddColumnBuilder({
191
222
  ...this.#props,
@@ -252,6 +283,12 @@ class AlterTableModifyColumnBuilder {
252
283
  columnBuilder: this.#props.columnBuilder.onDelete(onDelete),
253
284
  });
254
285
  }
286
+ onUpdate(onUpdate) {
287
+ return new AlterTableModifyColumnBuilder({
288
+ ...this.#props,
289
+ columnBuilder: this.#props.columnBuilder.onUpdate(onUpdate),
290
+ });
291
+ }
255
292
  unique() {
256
293
  return new AlterTableModifyColumnBuilder({
257
294
  ...this.#props,
@@ -289,8 +326,39 @@ class AlterTableModifyColumnBuilder {
289
326
  }
290
327
  }
291
328
  exports.AlterTableModifyColumnBuilder = AlterTableModifyColumnBuilder;
329
+ class AlterTableAddForeignKeyConstraintBuilder {
330
+ #props;
331
+ constructor(props) {
332
+ this.#props = (0, object_utils_js_1.freeze)(props);
333
+ }
334
+ onDelete(onDelete) {
335
+ return new AlterTableAddForeignKeyConstraintBuilder({
336
+ ...this.#props,
337
+ constraintBuilder: this.#props.constraintBuilder.onDelete(onDelete),
338
+ });
339
+ }
340
+ onUpdate(onUpdate) {
341
+ return new AlterTableAddForeignKeyConstraintBuilder({
342
+ ...this.#props,
343
+ constraintBuilder: this.#props.constraintBuilder.onUpdate(onUpdate),
344
+ });
345
+ }
346
+ toOperationNode() {
347
+ return this.#props.executor.transformQuery(alter_table_node_js_1.AlterTableNode.cloneWith(this.#props.alterTableNode, {
348
+ addConstraint: add_constraint_node_js_1.AddConstraintNode.create(this.#props.constraintBuilder.toOperationNode()),
349
+ }), this.#props.queryId);
350
+ }
351
+ compile() {
352
+ return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
353
+ }
354
+ async execute() {
355
+ await this.#props.executor.executeQuery(this.compile(), this.#props.queryId);
356
+ }
357
+ }
358
+ exports.AlterTableAddForeignKeyConstraintBuilder = AlterTableAddForeignKeyConstraintBuilder;
292
359
  (0, prevent_await_js_1.preventAwait)(AlterTableBuilder, "don't await AlterTableBuilder instances");
293
360
  (0, prevent_await_js_1.preventAwait)(AlterColumnBuilder, "don't await AlterColumnBuilder instances");
294
361
  (0, prevent_await_js_1.preventAwait)(AlterTableExecutor, "don't await AlterTableExecutor instances directly. To execute the query you need to call `execute`");
295
362
  (0, prevent_await_js_1.preventAwait)(AlterTableAddColumnBuilder, "don't await AlterTableAddColumnBuilder instances directly. To execute the query you need to call `execute`");
296
363
  (0, prevent_await_js_1.preventAwait)(AlterTableModifyColumnBuilder, "don't await AlterTableModifyColumnBuilder instances directly. To execute the query you need to call `execute`");
364
+ (0, prevent_await_js_1.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
  }
@@ -2,14 +2,13 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ColumnDefinitionBuilder = void 0;
4
4
  const check_constraint_node_js_1 = require("../operation-node/check-constraint-node.js");
5
- const operation_node_source_js_1 = require("../operation-node/operation-node-source.js");
6
5
  const reference_node_js_1 = require("../operation-node/reference-node.js");
7
6
  const references_node_js_1 = require("../operation-node/references-node.js");
8
7
  const select_all_node_js_1 = require("../operation-node/select-all-node.js");
9
- const value_node_js_1 = require("../operation-node/value-node.js");
10
8
  const reference_parser_js_1 = require("../parser/reference-parser.js");
11
9
  const prevent_await_js_1 = require("../util/prevent-await.js");
12
10
  const column_definition_node_js_1 = require("../operation-node/column-definition-node.js");
11
+ const default_value_parser_js_1 = require("../parser/default-value-parser.js");
13
12
  class ColumnDefinitionBuilder {
14
13
  #node;
15
14
  constructor(node) {
@@ -40,6 +39,14 @@ class ColumnDefinitionBuilder {
40
39
  references: references_node_js_1.ReferencesNode.cloneWithOnDelete(this.#node.references, onDelete),
41
40
  }));
42
41
  }
42
+ onUpdate(onUpdate) {
43
+ if (!this.#node.references) {
44
+ throw new Error('on update constraint can only be added for foreign keys');
45
+ }
46
+ return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWith(this.#node, {
47
+ references: references_node_js_1.ReferencesNode.cloneWithOnUpdate(this.#node.references, onUpdate),
48
+ }));
49
+ }
43
50
  unique() {
44
51
  return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWith(this.#node, { isUnique: true }));
45
52
  }
@@ -48,9 +55,7 @@ class ColumnDefinitionBuilder {
48
55
  }
49
56
  defaultTo(value) {
50
57
  return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWith(this.#node, {
51
- defaultTo: (0, operation_node_source_js_1.isOperationNodeSource)(value)
52
- ? value.toOperationNode()
53
- : value_node_js_1.ValueNode.createImmediate(value),
58
+ defaultTo: (0, default_value_parser_js_1.parseDefaultValueExpression)(value),
54
59
  }));
55
60
  }
56
61
  check(sql) {
@@ -63,4 +68,4 @@ class ColumnDefinitionBuilder {
63
68
  }
64
69
  }
65
70
  exports.ColumnDefinitionBuilder = ColumnDefinitionBuilder;
66
- (0, prevent_await_js_1.preventAwait)(ColumnDefinitionBuilder, "don't await ColumnBuilder instances directly.");
71
+ (0, prevent_await_js_1.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
  }
@@ -7,23 +7,19 @@ const raw_node_js_1 = require("../operation-node/raw-node.js");
7
7
  const reference_parser_js_1 = require("../parser/reference-parser.js");
8
8
  const table_parser_js_1 = require("../parser/table-parser.js");
9
9
  const prevent_await_js_1 = require("../util/prevent-await.js");
10
+ const object_utils_js_1 = require("../util/object-utils.js");
10
11
  class CreateIndexBuilder {
11
- #queryId;
12
- #createIndexNode;
13
- #executor;
14
- constructor(args) {
15
- this.#queryId = args.queryId;
16
- this.#createIndexNode = args.createIndexNode;
17
- this.#executor = args.executor;
12
+ #props;
13
+ constructor(props) {
14
+ this.#props = (0, object_utils_js_1.freeze)(props);
18
15
  }
19
16
  /**
20
17
  * Makes the index unique.
21
18
  */
22
19
  unique() {
23
20
  return new CreateIndexBuilder({
24
- queryId: this.#queryId,
25
- executor: this.#executor,
26
- createIndexNode: create_index_node_js_1.CreateIndexNode.cloneWith(this.#createIndexNode, {
21
+ ...this.#props,
22
+ createIndexNode: create_index_node_js_1.CreateIndexNode.cloneWith(this.#props.createIndexNode, {
27
23
  unique: true,
28
24
  }),
29
25
  });
@@ -33,9 +29,8 @@ class CreateIndexBuilder {
33
29
  */
34
30
  on(table) {
35
31
  return new CreateIndexBuilder({
36
- queryId: this.#queryId,
37
- executor: this.#executor,
38
- createIndexNode: create_index_node_js_1.CreateIndexNode.cloneWith(this.#createIndexNode, {
32
+ ...this.#props,
33
+ createIndexNode: create_index_node_js_1.CreateIndexNode.cloneWith(this.#props.createIndexNode, {
39
34
  table: (0, table_parser_js_1.parseTable)(table),
40
35
  }),
41
36
  });
@@ -47,9 +42,8 @@ class CreateIndexBuilder {
47
42
  */
48
43
  column(column) {
49
44
  return new CreateIndexBuilder({
50
- queryId: this.#queryId,
51
- executor: this.#executor,
52
- createIndexNode: create_index_node_js_1.CreateIndexNode.cloneWith(this.#createIndexNode, {
45
+ ...this.#props,
46
+ createIndexNode: create_index_node_js_1.CreateIndexNode.cloneWith(this.#props.createIndexNode, {
53
47
  expression: (0, reference_parser_js_1.parseColumnName)(column),
54
48
  }),
55
49
  });
@@ -61,9 +55,8 @@ class CreateIndexBuilder {
61
55
  */
62
56
  columns(columns) {
63
57
  return new CreateIndexBuilder({
64
- queryId: this.#queryId,
65
- executor: this.#executor,
66
- createIndexNode: create_index_node_js_1.CreateIndexNode.cloneWith(this.#createIndexNode, {
58
+ ...this.#props,
59
+ createIndexNode: create_index_node_js_1.CreateIndexNode.cloneWith(this.#props.createIndexNode, {
67
60
  expression: list_node_js_1.ListNode.create(columns.map(reference_parser_js_1.parseColumnName)),
68
61
  }),
69
62
  });
@@ -82,30 +75,28 @@ class CreateIndexBuilder {
82
75
  */
83
76
  expression(expression) {
84
77
  return new CreateIndexBuilder({
85
- queryId: this.#queryId,
86
- executor: this.#executor,
87
- createIndexNode: create_index_node_js_1.CreateIndexNode.cloneWith(this.#createIndexNode, {
78
+ ...this.#props,
79
+ createIndexNode: create_index_node_js_1.CreateIndexNode.cloneWith(this.#props.createIndexNode, {
88
80
  expression: raw_node_js_1.RawNode.createWithSql(expression),
89
81
  }),
90
82
  });
91
83
  }
92
84
  using(indexType) {
93
85
  return new CreateIndexBuilder({
94
- queryId: this.#queryId,
95
- executor: this.#executor,
96
- createIndexNode: create_index_node_js_1.CreateIndexNode.cloneWith(this.#createIndexNode, {
86
+ ...this.#props,
87
+ createIndexNode: create_index_node_js_1.CreateIndexNode.cloneWith(this.#props.createIndexNode, {
97
88
  using: raw_node_js_1.RawNode.createWithSql(indexType),
98
89
  }),
99
90
  });
100
91
  }
101
92
  toOperationNode() {
102
- return this.#executor.transformQuery(this.#createIndexNode, this.#queryId);
93
+ return this.#props.executor.transformQuery(this.#props.createIndexNode, this.#props.queryId);
103
94
  }
104
95
  compile() {
105
- return this.#executor.compileQuery(this.toOperationNode(), this.#queryId);
96
+ return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
106
97
  }
107
98
  async execute() {
108
- await this.#executor.executeQuery(this.compile(), this.#queryId);
99
+ await this.#props.executor.executeQuery(this.compile(), this.#props.queryId);
109
100
  }
110
101
  }
111
102
  exports.CreateIndexBuilder = CreateIndexBuilder;
@@ -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
  }
@@ -3,30 +3,26 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.CreateSchemaBuilder = void 0;
4
4
  const create_schema_node_js_1 = require("../operation-node/create-schema-node.js");
5
5
  const prevent_await_js_1 = require("../util/prevent-await.js");
6
+ const object_utils_js_1 = require("../util/object-utils.js");
6
7
  class CreateSchemaBuilder {
7
- #queryId;
8
- #createSchemaNode;
9
- #executor;
10
- constructor(args) {
11
- this.#queryId = args.queryId;
12
- this.#createSchemaNode = args.createSchemaNode;
13
- this.#executor = args.executor;
8
+ #props;
9
+ constructor(props) {
10
+ this.#props = (0, object_utils_js_1.freeze)(props);
14
11
  }
15
12
  ifNotExists() {
16
13
  return new CreateSchemaBuilder({
17
- queryId: this.#queryId,
18
- executor: this.#executor,
19
- createSchemaNode: create_schema_node_js_1.CreateSchemaNode.cloneWithModifier(this.#createSchemaNode, 'IfNotExists'),
14
+ ...this.#props,
15
+ createSchemaNode: create_schema_node_js_1.CreateSchemaNode.cloneWithModifier(this.#props.createSchemaNode, 'IfNotExists'),
20
16
  });
21
17
  }
22
18
  toOperationNode() {
23
- return this.#executor.transformQuery(this.#createSchemaNode, this.#queryId);
19
+ return this.#props.executor.transformQuery(this.#props.createSchemaNode, this.#props.queryId);
24
20
  }
25
21
  compile() {
26
- return this.#executor.compileQuery(this.toOperationNode(), this.#queryId);
22
+ return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
27
23
  }
28
24
  async execute() {
29
- await this.#executor.executeQuery(this.compile(), this.#queryId);
25
+ await this.#props.executor.executeQuery(this.compile(), this.#props.queryId);
30
26
  }
31
27
  }
32
28
  exports.CreateSchemaBuilder = CreateSchemaBuilder;
@@ -1,15 +1,15 @@
1
1
  import { CreateTableNode } from '../operation-node/create-table-node.js';
2
- import { ColumnDataType } from '../operation-node/data-type-node.js';
3
2
  import { OperationNodeSource } from '../operation-node/operation-node-source.js';
4
3
  import { CompiledQuery } from '../query-compiler/compiled-query.js';
5
4
  import { Compilable } from '../util/compilable.js';
6
5
  import { QueryExecutor } from '../query-executor/query-executor.js';
7
6
  import { ColumnDefinitionBuilder } from './column-definition-builder.js';
8
- import { RawBuilder } from '../raw-builder/raw-builder.js';
9
7
  import { QueryId } from '../util/query-id.js';
8
+ import { ForeignKeyConstraintBuilder } from './foreign-key-constraint-builder.js';
9
+ import { DataTypeExpression } from '../parser/data-type-parser.js';
10
10
  export declare class CreateTableBuilder implements OperationNodeSource, Compilable {
11
11
  #private;
12
- constructor(args: CreateTableBuilderConstructorArgs);
12
+ constructor(props: CreateTableBuilderProps);
13
13
  /**
14
14
  * Adds the "if not exists" modifier.
15
15
  *
@@ -30,7 +30,7 @@ export declare class CreateTableBuilder implements OperationNodeSource, Compilab
30
30
  * .addColumn('data', db.raw('customtype'))
31
31
  * ```
32
32
  */
33
- addColumn(columnName: string, dataType: ColumnDataType | RawBuilder, build?: ColumnBuilderCallback): CreateTableBuilder;
33
+ addColumn(columnName: string, dataType: DataTypeExpression, build?: ColumnBuilderCallback): CreateTableBuilder;
34
34
  /**
35
35
  * Adds a primary key constraint for one or more columns.
36
36
  *
@@ -70,15 +70,27 @@ export declare class CreateTableBuilder implements OperationNodeSource, Compilab
70
70
  * ['id'],
71
71
  * )
72
72
  * ```
73
+ *
74
+ * @example
75
+ * ```ts
76
+ * addForeignKeyConstraint(
77
+ * 'owner_id_foreign',
78
+ * ['owner_id1', 'owner_id2'],
79
+ * 'person',
80
+ * ['id1', 'id2'],
81
+ * (cb) => cb.onDelete('cascade')
82
+ * )
83
+ * ```
73
84
  */
74
- addForeignKeyConstraint(constraintName: string, columns: string[], targetTable: string, targetColumns: string[]): CreateTableBuilder;
85
+ addForeignKeyConstraint(constraintName: string, columns: string[], targetTable: string, targetColumns: string[], build?: ForeignKeyConstraintBuilderCallback): CreateTableBuilder;
75
86
  toOperationNode(): CreateTableNode;
76
87
  compile(): CompiledQuery;
77
88
  execute(): Promise<void>;
78
89
  }
79
- export interface CreateTableBuilderConstructorArgs {
80
- queryId: QueryId;
81
- createTableNode: CreateTableNode;
82
- executor: QueryExecutor;
90
+ export interface CreateTableBuilderProps {
91
+ readonly queryId: QueryId;
92
+ readonly executor: QueryExecutor;
93
+ readonly createTableNode: CreateTableNode;
83
94
  }
84
- export declare type ColumnBuilderCallback = (tableBuilder: ColumnDefinitionBuilder) => ColumnDefinitionBuilder;
95
+ export declare type ColumnBuilderCallback = (builder: ColumnDefinitionBuilder) => ColumnDefinitionBuilder;
96
+ export declare type ForeignKeyConstraintBuilderCallback = (builder: ForeignKeyConstraintBuilder) => ForeignKeyConstraintBuilder;
@@ -3,18 +3,18 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.CreateTableBuilder = void 0;
4
4
  const column_definition_node_js_1 = require("../operation-node/column-definition-node.js");
5
5
  const create_table_node_js_1 = require("../operation-node/create-table-node.js");
6
- const data_type_node_js_1 = require("../operation-node/data-type-node.js");
7
- const operation_node_source_js_1 = require("../operation-node/operation-node-source.js");
8
6
  const prevent_await_js_1 = require("../util/prevent-await.js");
9
7
  const column_definition_builder_js_1 = require("./column-definition-builder.js");
8
+ const object_utils_js_1 = require("../util/object-utils.js");
9
+ const foreign_key_constraint_node_js_1 = require("../operation-node/foreign-key-constraint-node.js");
10
+ const column_node_js_1 = require("../operation-node/column-node.js");
11
+ const table_node_js_1 = require("../operation-node/table-node.js");
12
+ const foreign_key_constraint_builder_js_1 = require("./foreign-key-constraint-builder.js");
13
+ const data_type_parser_js_1 = require("../parser/data-type-parser.js");
10
14
  class CreateTableBuilder {
11
- #queryId;
12
- #createTableNode;
13
- #executor;
14
- constructor(args) {
15
- this.#queryId = args.queryId;
16
- this.#createTableNode = args.createTableNode;
17
- this.#executor = args.executor;
15
+ #props;
16
+ constructor(props) {
17
+ this.#props = (0, object_utils_js_1.freeze)(props);
18
18
  }
19
19
  /**
20
20
  * Adds the "if not exists" modifier.
@@ -23,9 +23,8 @@ class CreateTableBuilder {
23
23
  */
24
24
  ifNotExists() {
25
25
  return new CreateTableBuilder({
26
- queryId: this.#queryId,
27
- executor: this.#executor,
28
- createTableNode: create_table_node_js_1.CreateTableNode.cloneWithModifier(this.#createTableNode, 'IfNotExists'),
26
+ ...this.#props,
27
+ createTableNode: create_table_node_js_1.CreateTableNode.cloneWithModifier(this.#props.createTableNode, 'IfNotExists'),
29
28
  });
30
29
  }
31
30
  /**
@@ -43,16 +42,13 @@ class CreateTableBuilder {
43
42
  * ```
44
43
  */
45
44
  addColumn(columnName, dataType, build) {
46
- let columnBuilder = new column_definition_builder_js_1.ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.create(columnName, (0, operation_node_source_js_1.isOperationNodeSource)(dataType)
47
- ? dataType.toOperationNode()
48
- : data_type_node_js_1.DataTypeNode.create(dataType)));
45
+ let columnBuilder = new column_definition_builder_js_1.ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.create(columnName, (0, data_type_parser_js_1.parseDataTypeExpression)(dataType)));
49
46
  if (build) {
50
47
  columnBuilder = build(columnBuilder);
51
48
  }
52
49
  return new CreateTableBuilder({
53
- queryId: this.#queryId,
54
- executor: this.#executor,
55
- createTableNode: create_table_node_js_1.CreateTableNode.cloneWithColumn(this.#createTableNode, columnBuilder.toOperationNode()),
50
+ ...this.#props,
51
+ createTableNode: create_table_node_js_1.CreateTableNode.cloneWithColumn(this.#props.createTableNode, columnBuilder.toOperationNode()),
56
52
  });
57
53
  }
58
54
  /**
@@ -65,9 +61,8 @@ class CreateTableBuilder {
65
61
  */
66
62
  addPrimaryKeyConstraint(constraintName, columns) {
67
63
  return new CreateTableBuilder({
68
- queryId: this.#queryId,
69
- executor: this.#executor,
70
- createTableNode: create_table_node_js_1.CreateTableNode.cloneWithPrimaryKeyConstraint(this.#createTableNode, constraintName, columns),
64
+ ...this.#props,
65
+ createTableNode: create_table_node_js_1.CreateTableNode.cloneWithPrimaryKeyConstraint(this.#props.createTableNode, constraintName, columns),
71
66
  });
72
67
  }
73
68
  /**
@@ -80,9 +75,8 @@ class CreateTableBuilder {
80
75
  */
81
76
  addUniqueConstraint(constraintName, columns) {
82
77
  return new CreateTableBuilder({
83
- queryId: this.#queryId,
84
- executor: this.#executor,
85
- createTableNode: create_table_node_js_1.CreateTableNode.cloneWithUniqueConstraint(this.#createTableNode, constraintName, columns),
78
+ ...this.#props,
79
+ createTableNode: create_table_node_js_1.CreateTableNode.cloneWithUniqueConstraint(this.#props.createTableNode, constraintName, columns),
86
80
  });
87
81
  }
88
82
  /**
@@ -95,9 +89,8 @@ class CreateTableBuilder {
95
89
  */
96
90
  addCheckConstraint(constraintName, checkExpression) {
97
91
  return new CreateTableBuilder({
98
- queryId: this.#queryId,
99
- executor: this.#executor,
100
- createTableNode: create_table_node_js_1.CreateTableNode.cloneWithCheckConstraint(this.#createTableNode, constraintName, checkExpression),
92
+ ...this.#props,
93
+ createTableNode: create_table_node_js_1.CreateTableNode.cloneWithCheckConstraint(this.#props.createTableNode, constraintName, checkExpression),
101
94
  });
102
95
  }
103
96
  /**
@@ -112,22 +105,36 @@ class CreateTableBuilder {
112
105
  * ['id'],
113
106
  * )
114
107
  * ```
108
+ *
109
+ * @example
110
+ * ```ts
111
+ * addForeignKeyConstraint(
112
+ * 'owner_id_foreign',
113
+ * ['owner_id1', 'owner_id2'],
114
+ * 'person',
115
+ * ['id1', 'id2'],
116
+ * (cb) => cb.onDelete('cascade')
117
+ * )
118
+ * ```
115
119
  */
116
- addForeignKeyConstraint(constraintName, columns, targetTable, targetColumns) {
120
+ addForeignKeyConstraint(constraintName, columns, targetTable, targetColumns, build) {
121
+ let builder = new foreign_key_constraint_builder_js_1.ForeignKeyConstraintBuilder(foreign_key_constraint_node_js_1.ForeignKeyConstraintNode.create(columns.map(column_node_js_1.ColumnNode.create), table_node_js_1.TableNode.create(targetTable), targetColumns.map(column_node_js_1.ColumnNode.create), constraintName));
122
+ if (build) {
123
+ builder = build(builder);
124
+ }
117
125
  return new CreateTableBuilder({
118
- queryId: this.#queryId,
119
- executor: this.#executor,
120
- createTableNode: create_table_node_js_1.CreateTableNode.cloneWithForeignKeyConstraint(this.#createTableNode, constraintName, columns, targetTable, targetColumns),
126
+ ...this.#props,
127
+ createTableNode: create_table_node_js_1.CreateTableNode.cloneWithForeignKeyConstraint(this.#props.createTableNode, builder.toOperationNode()),
121
128
  });
122
129
  }
123
130
  toOperationNode() {
124
- return this.#executor.transformQuery(this.#createTableNode, this.#queryId);
131
+ return this.#props.executor.transformQuery(this.#props.createTableNode, this.#props.queryId);
125
132
  }
126
133
  compile() {
127
- return this.#executor.compileQuery(this.toOperationNode(), this.#queryId);
134
+ return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
128
135
  }
129
136
  async execute() {
130
- await this.#executor.executeQuery(this.compile(), this.#queryId);
137
+ await this.#props.executor.executeQuery(this.compile(), this.#props.queryId);
131
138
  }
132
139
  }
133
140
  exports.CreateTableBuilder = CreateTableBuilder;
@@ -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 DropIndexBuilder implements OperationNodeSource, Compilable {
8
8
  #private;
9
- constructor(args: DropIndexBuilderConstructorArgs);
9
+ constructor(props: DropIndexBuilderProps);
10
10
  /**
11
11
  * Specifies the table the index was created for. This is not needed
12
12
  * in all dialects.
@@ -17,8 +17,8 @@ export declare class DropIndexBuilder implements OperationNodeSource, Compilable
17
17
  compile(): CompiledQuery;
18
18
  execute(): Promise<void>;
19
19
  }
20
- export interface DropIndexBuilderConstructorArgs {
21
- queryId: QueryId;
22
- dropIndexNode: DropIndexNode;
23
- executor: QueryExecutor;
20
+ export interface DropIndexBuilderProps {
21
+ readonly queryId: QueryId;
22
+ readonly executor: QueryExecutor;
23
+ readonly dropIndexNode: DropIndexNode;
24
24
  }