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
@@ -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
  }
@@ -4,14 +4,11 @@ exports.DropIndexBuilder = void 0;
4
4
  const drop_index_node_js_1 = require("../operation-node/drop-index-node.js");
5
5
  const prevent_await_js_1 = require("../util/prevent-await.js");
6
6
  const table_parser_js_1 = require("../parser/table-parser.js");
7
+ const object_utils_js_1 = require("../util/object-utils.js");
7
8
  class DropIndexBuilder {
8
- #queryId;
9
- #dropIndexNode;
10
- #executor;
11
- constructor(args) {
12
- this.#queryId = args.queryId;
13
- this.#dropIndexNode = args.dropIndexNode;
14
- this.#executor = args.executor;
9
+ #props;
10
+ constructor(props) {
11
+ this.#props = (0, object_utils_js_1.freeze)(props);
15
12
  }
16
13
  /**
17
14
  * Specifies the table the index was created for. This is not needed
@@ -19,30 +16,28 @@ class DropIndexBuilder {
19
16
  */
20
17
  on(table) {
21
18
  return new DropIndexBuilder({
22
- queryId: this.#queryId,
23
- executor: this.#executor,
24
- dropIndexNode: drop_index_node_js_1.DropIndexNode.cloneWith(this.#dropIndexNode, {
19
+ ...this.#props,
20
+ dropIndexNode: drop_index_node_js_1.DropIndexNode.cloneWith(this.#props.dropIndexNode, {
25
21
  table: (0, table_parser_js_1.parseTable)(table),
26
22
  }),
27
23
  });
28
24
  }
29
25
  ifExists() {
30
26
  return new DropIndexBuilder({
31
- queryId: this.#queryId,
32
- executor: this.#executor,
33
- dropIndexNode: drop_index_node_js_1.DropIndexNode.cloneWith(this.#dropIndexNode, {
27
+ ...this.#props,
28
+ dropIndexNode: drop_index_node_js_1.DropIndexNode.cloneWith(this.#props.dropIndexNode, {
34
29
  modifier: 'IfExists',
35
30
  }),
36
31
  });
37
32
  }
38
33
  toOperationNode() {
39
- return this.#executor.transformQuery(this.#dropIndexNode, this.#queryId);
34
+ return this.#props.executor.transformQuery(this.#props.dropIndexNode, this.#props.queryId);
40
35
  }
41
36
  compile() {
42
- return this.#executor.compileQuery(this.toOperationNode(), this.#queryId);
37
+ return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
43
38
  }
44
39
  async execute() {
45
- await this.#executor.executeQuery(this.compile(), this.#queryId);
40
+ await this.#props.executor.executeQuery(this.compile(), this.#props.queryId);
46
41
  }
47
42
  }
48
43
  exports.DropIndexBuilder = DropIndexBuilder;
@@ -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 DropSchemaBuilder implements OperationNodeSource, Compilable {
8
8
  #private;
9
- constructor(args: DropSchemaBuilderConstructorArgs);
9
+ constructor(props: DropSchemaBuilderProps);
10
10
  ifExists(): DropSchemaBuilder;
11
11
  toOperationNode(): DropSchemaNode;
12
12
  compile(): CompiledQuery;
13
13
  execute(): Promise<void>;
14
14
  }
15
- export interface DropSchemaBuilderConstructorArgs {
16
- queryId: QueryId;
17
- dropSchemaNode: DropSchemaNode;
18
- executor: QueryExecutor;
15
+ export interface DropSchemaBuilderProps {
16
+ readonly queryId: QueryId;
17
+ readonly executor: QueryExecutor;
18
+ readonly dropSchemaNode: DropSchemaNode;
19
19
  }
@@ -3,30 +3,26 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DropSchemaBuilder = void 0;
4
4
  const drop_schema_node_js_1 = require("../operation-node/drop-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 DropSchemaBuilder {
7
- #queryId;
8
- #dropSchemaNode;
9
- #executor;
10
- constructor(args) {
11
- this.#queryId = args.queryId;
12
- this.#dropSchemaNode = args.dropSchemaNode;
13
- this.#executor = args.executor;
8
+ #props;
9
+ constructor(props) {
10
+ this.#props = (0, object_utils_js_1.freeze)(props);
14
11
  }
15
12
  ifExists() {
16
13
  return new DropSchemaBuilder({
17
- queryId: this.#queryId,
18
- executor: this.#executor,
19
- dropSchemaNode: drop_schema_node_js_1.DropSchemaNode.cloneWithModifier(this.#dropSchemaNode, 'IfExists'),
14
+ ...this.#props,
15
+ dropSchemaNode: drop_schema_node_js_1.DropSchemaNode.cloneWithModifier(this.#props.dropSchemaNode, 'IfExists'),
20
16
  });
21
17
  }
22
18
  toOperationNode() {
23
- return this.#executor.transformQuery(this.#dropSchemaNode, this.#queryId);
19
+ return this.#props.executor.transformQuery(this.#props.dropSchemaNode, 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.DropSchemaBuilder = DropSchemaBuilder;
@@ -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 DropTableBuilder implements OperationNodeSource, Compilable {
8
8
  #private;
9
- constructor(args: DropTableBuilderConstructorArgs);
9
+ constructor(props: DropTableBuilderProps);
10
10
  ifExists(): DropTableBuilder;
11
11
  toOperationNode(): DropTableNode;
12
12
  compile(): CompiledQuery;
13
13
  execute(): Promise<void>;
14
14
  }
15
- export interface DropTableBuilderConstructorArgs {
16
- queryId: QueryId;
17
- dropTableNode: DropTableNode;
18
- executor: QueryExecutor;
15
+ export interface DropTableBuilderProps {
16
+ readonly queryId: QueryId;
17
+ readonly executor: QueryExecutor;
18
+ readonly dropTableNode: DropTableNode;
19
19
  }
@@ -3,30 +3,26 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DropTableBuilder = void 0;
4
4
  const drop_table_node_js_1 = require("../operation-node/drop-table-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 DropTableBuilder {
7
- #queryId;
8
- #dropTableNode;
9
- #executor;
10
- constructor(args) {
11
- this.#queryId = args.queryId;
12
- this.#dropTableNode = args.dropTableNode;
13
- this.#executor = args.executor;
8
+ #props;
9
+ constructor(props) {
10
+ this.#props = (0, object_utils_js_1.freeze)(props);
14
11
  }
15
12
  ifExists() {
16
13
  return new DropTableBuilder({
17
- queryId: this.#queryId,
18
- executor: this.#executor,
19
- dropTableNode: drop_table_node_js_1.DropTableNode.cloneWithModifier(this.#dropTableNode, 'IfExists'),
14
+ ...this.#props,
15
+ dropTableNode: drop_table_node_js_1.DropTableNode.cloneWithModifier(this.#props.dropTableNode, 'IfExists'),
20
16
  });
21
17
  }
22
18
  toOperationNode() {
23
- return this.#executor.transformQuery(this.#dropTableNode, this.#queryId);
19
+ return this.#props.executor.transformQuery(this.#props.dropTableNode, 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.DropTableBuilder = DropTableBuilder;
@@ -0,0 +1,14 @@
1
+ import { ForeignKeyConstraintNode } from '../operation-node/foreign-key-constraint-node.js';
2
+ import { OperationNodeSource } from '../operation-node/operation-node-source.js';
3
+ import { OnModifyForeignAction } from '../operation-node/references-node.js';
4
+ export interface ForeignKeyConstraintBuilderInterface<R> {
5
+ onDelete(onDelete: OnModifyForeignAction): R;
6
+ onUpdate(onUpdate: OnModifyForeignAction): R;
7
+ }
8
+ export declare class ForeignKeyConstraintBuilder implements ForeignKeyConstraintBuilderInterface<ForeignKeyConstraintBuilder>, OperationNodeSource {
9
+ #private;
10
+ constructor(node: ForeignKeyConstraintNode);
11
+ onDelete(onDelete: OnModifyForeignAction): ForeignKeyConstraintBuilder;
12
+ onUpdate(onUpdate: OnModifyForeignAction): ForeignKeyConstraintBuilder;
13
+ toOperationNode(): ForeignKeyConstraintNode;
14
+ }
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ForeignKeyConstraintBuilder = void 0;
4
+ const foreign_key_constraint_node_js_1 = require("../operation-node/foreign-key-constraint-node.js");
5
+ const prevent_await_js_1 = require("../util/prevent-await.js");
6
+ class ForeignKeyConstraintBuilder {
7
+ #node;
8
+ constructor(node) {
9
+ this.#node = node;
10
+ }
11
+ onDelete(onDelete) {
12
+ return new ForeignKeyConstraintBuilder(foreign_key_constraint_node_js_1.ForeignKeyConstraintNode.cloneWith(this.#node, {
13
+ onDelete,
14
+ }));
15
+ }
16
+ onUpdate(onUpdate) {
17
+ return new ForeignKeyConstraintBuilder(foreign_key_constraint_node_js_1.ForeignKeyConstraintNode.cloneWith(this.#node, {
18
+ onUpdate,
19
+ }));
20
+ }
21
+ toOperationNode() {
22
+ return this.#node;
23
+ }
24
+ }
25
+ exports.ForeignKeyConstraintBuilder = ForeignKeyConstraintBuilder;
26
+ (0, prevent_await_js_1.preventAwait)(ForeignKeyConstraintBuilder, "don't await ForeignKeyConstraintBuilder instances directly.");
@@ -22,9 +22,4 @@ export declare class WithSchemaTransformer extends OperationNodeTransformer {
22
22
  protected transformDropIndex(node: DropIndexNode): DropIndexNode;
23
23
  protected transformAlterTable(node: AlterTableNode): AlterTableNode;
24
24
  protected transformTable(node: TableNode): TableNode;
25
- private transformRoot;
26
- private collectTables;
27
- private collectTablesFromTableExpressionNodes;
28
- private collectTablesFromJoins;
29
- private collectTablesFromTableExpressionNode;
30
25
  }
@@ -12,31 +12,31 @@ class WithSchemaTransformer extends operation_node_transformer_js_1.OperationNod
12
12
  this.#schema = schema;
13
13
  }
14
14
  transformSelectQuery(node) {
15
- return this.transformRoot(node, (node) => super.transformSelectQuery(node));
15
+ return this.#transformRoot(node, (node) => super.transformSelectQuery(node));
16
16
  }
17
17
  transformInsertQuery(node) {
18
- return this.transformRoot(node, (node) => super.transformInsertQuery(node));
18
+ return this.#transformRoot(node, (node) => super.transformInsertQuery(node));
19
19
  }
20
20
  transformUpdateQuery(node) {
21
- return this.transformRoot(node, (node) => super.transformUpdateQuery(node));
21
+ return this.#transformRoot(node, (node) => super.transformUpdateQuery(node));
22
22
  }
23
23
  transformDeleteQuery(node) {
24
- return this.transformRoot(node, (node) => super.transformDeleteQuery(node));
24
+ return this.#transformRoot(node, (node) => super.transformDeleteQuery(node));
25
25
  }
26
26
  transformCreateTable(node) {
27
- return this.transformRoot(node, (node) => super.transformCreateTable(node));
27
+ return this.#transformRoot(node, (node) => super.transformCreateTable(node));
28
28
  }
29
29
  transformDropTable(node) {
30
- return this.transformRoot(node, (node) => super.transformDropTable(node));
30
+ return this.#transformRoot(node, (node) => super.transformDropTable(node));
31
31
  }
32
32
  transformCreateIndex(node) {
33
- return this.transformRoot(node, (node) => super.transformCreateIndex(node));
33
+ return this.#transformRoot(node, (node) => super.transformCreateIndex(node));
34
34
  }
35
35
  transformDropIndex(node) {
36
- return this.transformRoot(node, (node) => super.transformDropIndex(node));
36
+ return this.#transformRoot(node, (node) => super.transformDropIndex(node));
37
37
  }
38
38
  transformAlterTable(node) {
39
- return this.transformRoot(node, (node) => super.transformAlterTable(node));
39
+ return this.#transformRoot(node, (node) => super.transformAlterTable(node));
40
40
  }
41
41
  transformTable(node) {
42
42
  const transformed = super.transformTable(node);
@@ -51,8 +51,8 @@ class WithSchemaTransformer extends operation_node_transformer_js_1.OperationNod
51
51
  },
52
52
  };
53
53
  }
54
- transformRoot(node, transform) {
55
- const tables = this.collectTables(node);
54
+ #transformRoot(node, transform) {
55
+ const tables = this.#collectTables(node);
56
56
  for (const table of tables) {
57
57
  this.#tables.add(table);
58
58
  }
@@ -62,33 +62,33 @@ class WithSchemaTransformer extends operation_node_transformer_js_1.OperationNod
62
62
  }
63
63
  return transformed;
64
64
  }
65
- collectTables(node) {
65
+ #collectTables(node) {
66
66
  const tables = new Set();
67
67
  if ('from' in node && node.from) {
68
- this.collectTablesFromTableExpressionNodes(node.from.froms, tables);
68
+ this.#collectTablesFromTableExpressionNodes(node.from.froms, tables);
69
69
  }
70
70
  if ('into' in node && node.into) {
71
- this.collectTablesFromTableExpressionNode(node.into, tables);
71
+ this.#collectTablesFromTableExpressionNode(node.into, tables);
72
72
  }
73
73
  if ('table' in node && node.table) {
74
- this.collectTablesFromTableExpressionNode(node.table, tables);
74
+ this.#collectTablesFromTableExpressionNode(node.table, tables);
75
75
  }
76
76
  if ('joins' in node && node.joins) {
77
- this.collectTablesFromJoins(node.joins, tables);
77
+ this.#collectTablesFromJoins(node.joins, tables);
78
78
  }
79
79
  return tables;
80
80
  }
81
- collectTablesFromTableExpressionNodes(nodes, tables) {
81
+ #collectTablesFromTableExpressionNodes(nodes, tables) {
82
82
  for (const node of nodes) {
83
- this.collectTablesFromTableExpressionNode(node, tables);
83
+ this.#collectTablesFromTableExpressionNode(node, tables);
84
84
  }
85
85
  }
86
- collectTablesFromJoins(nodes, tables) {
86
+ #collectTablesFromJoins(nodes, tables) {
87
87
  for (const node of nodes) {
88
- this.collectTablesFromTableExpressionNode(node.table, tables);
88
+ this.#collectTablesFromTableExpressionNode(node.table, tables);
89
89
  }
90
90
  }
91
- collectTablesFromTableExpressionNode(node, tables) {
91
+ #collectTablesFromTableExpressionNode(node, tables) {
92
92
  const table = table_node_js_1.TableNode.is(node)
93
93
  ? node
94
94
  : alias_node_js_1.AliasNode.is(node) && table_node_js_1.TableNode.is(node.node)
@@ -1,13 +1,5 @@
1
1
  import { Kysely } from '../kysely.js';
2
- /**
3
- * The `DialectAdapter` encapsulates all differences between dialects outside
4
- * the `Driver` and `QueryCompiler`.
5
- *
6
- * For example, some databases support transactional DDL and therefore we want
7
- * to run migrations inside a transaction, while other databases don't support
8
- * it. For that there's a `supportsTransactionalDdl` boolean in this interface.
9
- */
10
- export interface DialectAdapter {
2
+ export interface DialectSupports {
11
3
  /**
12
4
  * Whether or not this dialect supports transactional DDL.
13
5
  *
@@ -19,6 +11,16 @@ export interface DialectAdapter {
19
11
  * upates and deletes.
20
12
  */
21
13
  readonly supportsReturning: boolean;
14
+ }
15
+ /**
16
+ * The `DialectAdapter` encapsulates all differences between dialects outside
17
+ * the `Driver` and `QueryCompiler`.
18
+ *
19
+ * For example, some databases support transactional DDL and therefore we want
20
+ * to run migrations inside a transaction, while other databases don't support
21
+ * it. For that there's a `supportsTransactionalDdl` boolean in this interface.
22
+ */
23
+ export interface DialectAdapter extends DialectSupports {
22
24
  /**
23
25
  * This method is used to acquire a lock for the migrations so that
24
26
  * it's not possible for two migration processes to run in parallel.
@@ -3,8 +3,8 @@ import { Kysely } from '../../kysely.js';
3
3
  import { QueryCompiler } from '../../query-compiler/query-compiler.js';
4
4
  import { Dialect } from '../dialect.js';
5
5
  import { DatabaseIntrospector } from '../../introspection/database-introspector.js';
6
- import { DatabaseConnection } from '../../index.js';
7
6
  import { DialectAdapter } from '../dialect-adapter.js';
7
+ import { DatabaseConnection } from '../../driver/database-connection.js';
8
8
  export declare class MysqlDialect implements Dialect {
9
9
  #private;
10
10
  constructor(config: MysqlDialectConfig);
@@ -47,6 +47,7 @@ export class MysqlDriver {
47
47
  }
48
48
  async beginTransaction(connection, settings) {
49
49
  if (settings.isolationLevel) {
50
+ // On mysql this sets the isolation level of the next transaction.
50
51
  await connection.executeQuery({
51
52
  sql: `set transaction isolation level ${settings.isolationLevel}`,
52
53
  bindings: [],