kysely 0.2.1 → 0.2.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 (172) hide show
  1. package/README.md +8 -8
  2. package/lib/dialect/postgres/postgres-dialect.js +5 -4
  3. package/lib/index.d.ts +66 -2
  4. package/lib/index.js +66 -2
  5. package/lib/kysely.d.ts +15 -14
  6. package/lib/kysely.js +17 -16
  7. package/lib/migration/migration.js +4 -4
  8. package/lib/operation-node/add-column-node.d.ts +6 -19
  9. package/lib/operation-node/add-column-node.js +5 -14
  10. package/lib/operation-node/add-constraint-node.d.ts +13 -0
  11. package/lib/operation-node/add-constraint-node.js +18 -0
  12. package/lib/operation-node/alias-node.d.ts +4 -2
  13. package/lib/operation-node/alias-node.js +3 -0
  14. package/lib/operation-node/alter-column-node.d.ts +24 -0
  15. package/lib/operation-node/alter-column-node.js +25 -0
  16. package/lib/operation-node/alter-table-node.d.ts +30 -0
  17. package/lib/operation-node/alter-table-node.js +25 -0
  18. package/lib/operation-node/and-node.d.ts +3 -0
  19. package/lib/operation-node/and-node.js +3 -0
  20. package/lib/operation-node/check-constraint-node.d.ts +6 -1
  21. package/lib/operation-node/check-constraint-node.js +6 -1
  22. package/lib/operation-node/column-definition-node.d.ts +29 -0
  23. package/lib/operation-node/column-definition-node.js +30 -0
  24. package/lib/operation-node/column-node.d.ts +3 -0
  25. package/lib/operation-node/column-node.js +3 -0
  26. package/lib/operation-node/column-update-node.d.ts +3 -0
  27. package/lib/operation-node/column-update-node.js +3 -0
  28. package/lib/operation-node/common-table-expression-node.d.ts +3 -0
  29. package/lib/operation-node/common-table-expression-node.js +3 -0
  30. package/lib/operation-node/constraint-node.d.ts +5 -0
  31. package/lib/operation-node/constraint-node.js +2 -0
  32. package/lib/operation-node/create-index-node.d.ts +3 -0
  33. package/lib/operation-node/create-index-node.js +3 -0
  34. package/lib/operation-node/create-schema-node.d.ts +3 -0
  35. package/lib/operation-node/create-schema-node.js +3 -0
  36. package/lib/operation-node/create-table-node.d.ts +12 -12
  37. package/lib/operation-node/create-table-node.js +30 -12
  38. package/lib/operation-node/data-type-node.d.ts +3 -0
  39. package/lib/operation-node/data-type-node.js +3 -0
  40. package/lib/operation-node/delete-query-node.d.ts +3 -0
  41. package/lib/operation-node/delete-query-node.js +3 -0
  42. package/lib/operation-node/drop-column-node.d.ts +13 -0
  43. package/lib/operation-node/drop-column-node.js +19 -0
  44. package/lib/operation-node/drop-constraint-node.d.ts +13 -0
  45. package/lib/operation-node/drop-constraint-node.js +19 -0
  46. package/lib/operation-node/drop-index-node.d.ts +3 -0
  47. package/lib/operation-node/drop-index-node.js +3 -0
  48. package/lib/operation-node/drop-schema-node.d.ts +3 -0
  49. package/lib/operation-node/drop-schema-node.js +3 -0
  50. package/lib/operation-node/drop-table-node.d.ts +5 -2
  51. package/lib/operation-node/drop-table-node.js +3 -0
  52. package/lib/operation-node/filter-node.d.ts +3 -0
  53. package/lib/operation-node/filter-node.js +3 -0
  54. package/lib/operation-node/foreign-key-constraint-node.d.ts +18 -0
  55. package/lib/operation-node/foreign-key-constraint-node.js +22 -0
  56. package/lib/operation-node/from-node.d.ts +3 -0
  57. package/lib/operation-node/from-node.js +3 -0
  58. package/lib/operation-node/group-by-item-node.d.ts +3 -0
  59. package/lib/operation-node/group-by-item-node.js +3 -0
  60. package/lib/operation-node/group-by-node.d.ts +3 -0
  61. package/lib/operation-node/group-by-node.js +3 -0
  62. package/lib/operation-node/having-node.d.ts +3 -0
  63. package/lib/operation-node/having-node.js +3 -0
  64. package/lib/operation-node/identifier-node.d.ts +3 -0
  65. package/lib/operation-node/identifier-node.js +3 -0
  66. package/lib/operation-node/insert-query-node.d.ts +3 -0
  67. package/lib/operation-node/insert-query-node.js +3 -0
  68. package/lib/operation-node/join-node.d.ts +3 -0
  69. package/lib/operation-node/join-node.js +3 -0
  70. package/lib/operation-node/limit-node.d.ts +3 -0
  71. package/lib/operation-node/limit-node.js +3 -0
  72. package/lib/operation-node/list-node.d.ts +3 -0
  73. package/lib/operation-node/list-node.js +3 -0
  74. package/lib/operation-node/offset-node.d.ts +3 -0
  75. package/lib/operation-node/offset-node.js +3 -0
  76. package/lib/operation-node/on-conflict-node.d.ts +3 -0
  77. package/lib/operation-node/on-conflict-node.js +3 -0
  78. package/lib/operation-node/operation-node-transformer.d.ts +20 -4
  79. package/lib/operation-node/operation-node-transformer.js +86 -12
  80. package/lib/operation-node/operation-node-visitor.d.ts +20 -4
  81. package/lib/operation-node/operation-node-visitor.js +75 -5
  82. package/lib/operation-node/operation-node.d.ts +1 -1
  83. package/lib/operation-node/operator-node.d.ts +3 -0
  84. package/lib/operation-node/operator-node.js +3 -0
  85. package/lib/operation-node/or-node.d.ts +3 -0
  86. package/lib/operation-node/or-node.js +3 -0
  87. package/lib/operation-node/order-by-item-node.d.ts +3 -0
  88. package/lib/operation-node/order-by-item-node.js +3 -0
  89. package/lib/operation-node/order-by-node.d.ts +3 -0
  90. package/lib/operation-node/order-by-node.js +3 -0
  91. package/lib/operation-node/parens-node.d.ts +3 -0
  92. package/lib/operation-node/parens-node.js +3 -0
  93. package/lib/operation-node/primary-constraint-node.d.ts +15 -0
  94. package/lib/operation-node/primary-constraint-node.js +21 -0
  95. package/lib/operation-node/primitive-value-list-node.d.ts +3 -0
  96. package/lib/operation-node/primitive-value-list-node.js +3 -0
  97. package/lib/operation-node/query-node.d.ts +3 -0
  98. package/lib/operation-node/query-node.js +3 -0
  99. package/lib/operation-node/raw-node.d.ts +3 -0
  100. package/lib/operation-node/raw-node.js +3 -0
  101. package/lib/operation-node/reference-node.d.ts +3 -0
  102. package/lib/operation-node/reference-node.js +3 -0
  103. package/lib/operation-node/references-node.d.ts +5 -2
  104. package/lib/operation-node/references-node.js +5 -2
  105. package/lib/operation-node/rename-column-node.d.ts +14 -0
  106. package/lib/operation-node/rename-column-node.js +20 -0
  107. package/lib/operation-node/returning-node.d.ts +3 -0
  108. package/lib/operation-node/returning-node.js +3 -0
  109. package/lib/operation-node/select-all-node.d.ts +3 -0
  110. package/lib/operation-node/select-all-node.js +3 -0
  111. package/lib/operation-node/select-query-node.d.ts +3 -0
  112. package/lib/operation-node/select-query-node.js +3 -0
  113. package/lib/operation-node/selection-node.d.ts +3 -0
  114. package/lib/operation-node/selection-node.js +3 -0
  115. package/lib/operation-node/table-node.d.ts +3 -0
  116. package/lib/operation-node/table-node.js +3 -0
  117. package/lib/operation-node/unique-constraint-node.d.ts +15 -0
  118. package/lib/operation-node/unique-constraint-node.js +21 -0
  119. package/lib/operation-node/update-query-node.d.ts +3 -0
  120. package/lib/operation-node/update-query-node.js +3 -0
  121. package/lib/operation-node/value-list-node.d.ts +3 -0
  122. package/lib/operation-node/value-list-node.js +3 -0
  123. package/lib/operation-node/value-node.d.ts +3 -0
  124. package/lib/operation-node/value-node.js +3 -0
  125. package/lib/operation-node/where-node.d.ts +3 -0
  126. package/lib/operation-node/where-node.js +3 -0
  127. package/lib/operation-node/with-node.d.ts +3 -0
  128. package/lib/operation-node/with-node.js +3 -0
  129. package/lib/parser/with-parser.js +1 -1
  130. package/lib/plugin/camel-case/camel-case-plugin.d.ts +1 -1
  131. package/lib/plugin/camel-case/camel-case-plugin.js +1 -1
  132. package/lib/query-builder/query-builder.d.ts +9 -9
  133. package/lib/query-builder/query-builder.js +6 -6
  134. package/lib/query-builder/sub-query-builder.d.ts +1 -1
  135. package/lib/query-builder/sub-query-builder.js +1 -1
  136. package/lib/query-compiler/default-query-compiler.d.ts +21 -5
  137. package/lib/query-compiler/default-query-compiler.js +110 -10
  138. package/lib/query-compiler/query-compiler.d.ts +2 -1
  139. package/lib/query-creator.d.ts +2 -2
  140. package/lib/query-creator.js +1 -1
  141. package/lib/{util → query-executor}/query-executor.d.ts +0 -0
  142. package/lib/{util → query-executor}/query-executor.js +1 -1
  143. package/lib/raw-builder/raw-builder.d.ts +2 -2
  144. package/lib/raw-builder/raw-builder.js +4 -4
  145. package/lib/schema/alter-table-builder.d.ts +64 -0
  146. package/lib/schema/alter-table-builder.js +236 -0
  147. package/lib/schema/{add-column-builder.d.ts → column-definition-builder.d.ts} +25 -15
  148. package/lib/schema/column-definition-builder.js +66 -0
  149. package/lib/schema/create-index-builder.d.ts +2 -2
  150. package/lib/schema/create-index-builder.js +3 -3
  151. package/lib/schema/create-schema-builder.d.ts +2 -2
  152. package/lib/schema/create-schema-builder.js +3 -3
  153. package/lib/schema/create-table-builder.d.ts +28 -13
  154. package/lib/schema/create-table-builder.js +38 -18
  155. package/lib/schema/drop-index-builder.d.ts +2 -2
  156. package/lib/schema/drop-index-builder.js +3 -3
  157. package/lib/schema/drop-schema-builder.d.ts +2 -2
  158. package/lib/schema/drop-schema-builder.js +3 -3
  159. package/lib/schema/drop-table-builder.d.ts +2 -2
  160. package/lib/schema/drop-table-builder.js +3 -3
  161. package/lib/schema/schema.d.ts +19 -5
  162. package/lib/schema/schema.js +24 -4
  163. package/lib/transformers/with-schema-transformer.d.ts +2 -0
  164. package/lib/transformers/with-schema-transformer.js +3 -0
  165. package/lib/util/object-utils.d.ts +1 -0
  166. package/lib/util/object-utils.js +13 -1
  167. package/package.json +2 -2
  168. package/lib/operation-node/table-primary-constraint-node.d.ts +0 -10
  169. package/lib/operation-node/table-primary-constraint-node.js +0 -16
  170. package/lib/operation-node/table-unique-constraint-node.d.ts +0 -10
  171. package/lib/operation-node/table-unique-constraint-node.js +0 -16
  172. package/lib/schema/add-column-builder.js +0 -116
@@ -0,0 +1,236 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AlterTableAddColumnBuilder = exports.AlterTableExecutor = exports.AlterColumnBuilder = exports.AlterTableBuilder = void 0;
4
+ const __1 = require("..");
5
+ const add_column_node_1 = require("../operation-node/add-column-node");
6
+ const alter_column_node_1 = require("../operation-node/alter-column-node");
7
+ const alter_table_node_1 = require("../operation-node/alter-table-node");
8
+ const column_definition_node_1 = require("../operation-node/column-definition-node");
9
+ const data_type_node_1 = require("../operation-node/data-type-node");
10
+ const drop_column_node_1 = require("../operation-node/drop-column-node");
11
+ const identifier_node_1 = require("../operation-node/identifier-node");
12
+ const operation_node_source_1 = require("../operation-node/operation-node-source");
13
+ const rename_column_node_1 = require("../operation-node/rename-column-node");
14
+ const table_node_1 = require("../operation-node/table-node");
15
+ const value_node_1 = require("../operation-node/value-node");
16
+ const prevent_await_1 = require("../util/prevent-await");
17
+ class AlterTableBuilder {
18
+ #alterTableNode;
19
+ #executor;
20
+ constructor(args) {
21
+ this.#alterTableNode = args.alterTableNode;
22
+ this.#executor = args.executor;
23
+ }
24
+ renameTo(newTableName) {
25
+ return new AlterTableExecutor({
26
+ executor: this.#executor,
27
+ alterTableNode: alter_table_node_1.alterTableNode.cloneWith(this.#alterTableNode, {
28
+ renameTo: table_node_1.tableNode.create(newTableName),
29
+ }),
30
+ });
31
+ }
32
+ setSchema(newSchema) {
33
+ return new AlterTableExecutor({
34
+ executor: this.#executor,
35
+ alterTableNode: alter_table_node_1.alterTableNode.cloneWith(this.#alterTableNode, {
36
+ setSchema: identifier_node_1.identifierNode.create(newSchema),
37
+ }),
38
+ });
39
+ }
40
+ alterColumn(column) {
41
+ return new AlterColumnBuilder({
42
+ alterTableNode: this.#alterTableNode,
43
+ alterColumnNode: alter_column_node_1.alterColumnNode.create(column),
44
+ executor: this.#executor,
45
+ });
46
+ }
47
+ dropColumn(column) {
48
+ return new AlterTableExecutor({
49
+ executor: this.#executor,
50
+ alterTableNode: alter_table_node_1.alterTableNode.cloneWith(this.#alterTableNode, {
51
+ dropColumn: drop_column_node_1.dropColumnNode.create(column),
52
+ }),
53
+ });
54
+ }
55
+ renameColumn(column, newColumn) {
56
+ return new AlterTableExecutor({
57
+ executor: this.#executor,
58
+ alterTableNode: alter_table_node_1.alterTableNode.cloneWith(this.#alterTableNode, {
59
+ renameColumn: rename_column_node_1.renameColumnNode.create(column, newColumn),
60
+ }),
61
+ });
62
+ }
63
+ addColumn(columnName, dataType) {
64
+ return new AlterTableAddColumnBuilder({
65
+ executor: this.#executor,
66
+ alterTableNode: this.#alterTableNode,
67
+ columnBuilder: new __1.ColumnDefinitionBuilder(column_definition_node_1.columnDefinitionNode.create(columnName, operation_node_source_1.isOperationNodeSource(dataType)
68
+ ? dataType.toOperationNode()
69
+ : data_type_node_1.dataTypeNode.create(dataType))),
70
+ });
71
+ }
72
+ }
73
+ exports.AlterTableBuilder = AlterTableBuilder;
74
+ class AlterColumnBuilder {
75
+ #alterTableNode;
76
+ #alterColumnNode;
77
+ #executor;
78
+ constructor(args) {
79
+ this.#alterTableNode = args.alterTableNode;
80
+ this.#alterColumnNode = args.alterColumnNode;
81
+ this.#executor = args.executor;
82
+ }
83
+ setDataType(dataType) {
84
+ return new AlterTableExecutor({
85
+ executor: this.#executor,
86
+ alterTableNode: alter_table_node_1.alterTableNode.cloneWith(this.#alterTableNode, {
87
+ alterColumn: alter_column_node_1.alterColumnNode.cloneWith(this.#alterColumnNode, {
88
+ dataType: data_type_node_1.dataTypeNode.create(dataType),
89
+ }),
90
+ }),
91
+ });
92
+ }
93
+ setDefault(value) {
94
+ return new AlterTableExecutor({
95
+ executor: this.#executor,
96
+ alterTableNode: alter_table_node_1.alterTableNode.cloneWith(this.#alterTableNode, {
97
+ alterColumn: alter_column_node_1.alterColumnNode.cloneWith(this.#alterColumnNode, {
98
+ setDefault: operation_node_source_1.isOperationNodeSource(value)
99
+ ? value.toOperationNode()
100
+ : value_node_1.valueNode.createImmediate(value),
101
+ }),
102
+ }),
103
+ });
104
+ }
105
+ dropDefault() {
106
+ return new AlterTableExecutor({
107
+ executor: this.#executor,
108
+ alterTableNode: alter_table_node_1.alterTableNode.cloneWith(this.#alterTableNode, {
109
+ alterColumn: alter_column_node_1.alterColumnNode.cloneWith(this.#alterColumnNode, {
110
+ dropDefault: true,
111
+ }),
112
+ }),
113
+ });
114
+ }
115
+ setNotNull() {
116
+ return new AlterTableExecutor({
117
+ executor: this.#executor,
118
+ alterTableNode: alter_table_node_1.alterTableNode.cloneWith(this.#alterTableNode, {
119
+ alterColumn: alter_column_node_1.alterColumnNode.cloneWith(this.#alterColumnNode, {
120
+ setNotNull: true,
121
+ }),
122
+ }),
123
+ });
124
+ }
125
+ dropNotNull() {
126
+ return new AlterTableExecutor({
127
+ executor: this.#executor,
128
+ alterTableNode: alter_table_node_1.alterTableNode.cloneWith(this.#alterTableNode, {
129
+ alterColumn: alter_column_node_1.alterColumnNode.cloneWith(this.#alterColumnNode, {
130
+ dropNotNull: true,
131
+ }),
132
+ }),
133
+ });
134
+ }
135
+ }
136
+ exports.AlterColumnBuilder = AlterColumnBuilder;
137
+ class AlterTableExecutor {
138
+ #alterTableNode;
139
+ #executor;
140
+ constructor(args) {
141
+ this.#alterTableNode = args.alterTableNode;
142
+ this.#executor = args.executor;
143
+ }
144
+ toOperationNode() {
145
+ return this.#executor.transformNode(this.#alterTableNode);
146
+ }
147
+ compile() {
148
+ return this.#executor.compileQuery(this.toOperationNode());
149
+ }
150
+ async execute() {
151
+ await this.#executor.executeQuery(this.compile());
152
+ }
153
+ }
154
+ exports.AlterTableExecutor = AlterTableExecutor;
155
+ class AlterTableAddColumnBuilder {
156
+ #alterTableNode;
157
+ #executor;
158
+ #columnBuilder;
159
+ constructor(args) {
160
+ this.#alterTableNode = args.alterTableNode;
161
+ this.#executor = args.executor;
162
+ this.#columnBuilder = args.columnBuilder;
163
+ }
164
+ increments() {
165
+ return new AlterTableAddColumnBuilder({
166
+ executor: this.#executor,
167
+ alterTableNode: this.#alterTableNode,
168
+ columnBuilder: this.#columnBuilder.increments(),
169
+ });
170
+ }
171
+ primaryKey() {
172
+ return new AlterTableAddColumnBuilder({
173
+ executor: this.#executor,
174
+ alterTableNode: this.#alterTableNode,
175
+ columnBuilder: this.#columnBuilder.primaryKey(),
176
+ });
177
+ }
178
+ references(ref) {
179
+ return new AlterTableAddColumnBuilder({
180
+ executor: this.#executor,
181
+ alterTableNode: this.#alterTableNode,
182
+ columnBuilder: this.#columnBuilder.references(ref),
183
+ });
184
+ }
185
+ onDelete(onDelete) {
186
+ return new AlterTableAddColumnBuilder({
187
+ executor: this.#executor,
188
+ alterTableNode: this.#alterTableNode,
189
+ columnBuilder: this.#columnBuilder.onDelete(onDelete),
190
+ });
191
+ }
192
+ unique() {
193
+ return new AlterTableAddColumnBuilder({
194
+ executor: this.#executor,
195
+ alterTableNode: this.#alterTableNode,
196
+ columnBuilder: this.#columnBuilder.unique(),
197
+ });
198
+ }
199
+ notNull() {
200
+ return new AlterTableAddColumnBuilder({
201
+ executor: this.#executor,
202
+ alterTableNode: this.#alterTableNode,
203
+ columnBuilder: this.#columnBuilder.notNull(),
204
+ });
205
+ }
206
+ defaultTo(value) {
207
+ return new AlterTableAddColumnBuilder({
208
+ executor: this.#executor,
209
+ alterTableNode: this.#alterTableNode,
210
+ columnBuilder: this.#columnBuilder.defaultTo(value),
211
+ });
212
+ }
213
+ check(sql) {
214
+ return new AlterTableAddColumnBuilder({
215
+ executor: this.#executor,
216
+ alterTableNode: this.#alterTableNode,
217
+ columnBuilder: this.#columnBuilder.check(sql),
218
+ });
219
+ }
220
+ toOperationNode() {
221
+ return this.#executor.transformNode(alter_table_node_1.alterTableNode.cloneWith(this.#alterTableNode, {
222
+ addColumn: add_column_node_1.addColumnNode.create(this.#columnBuilder.toOperationNode()),
223
+ }));
224
+ }
225
+ compile() {
226
+ return this.#executor.compileQuery(this.toOperationNode());
227
+ }
228
+ async execute() {
229
+ await this.#executor.executeQuery(this.compile());
230
+ }
231
+ }
232
+ exports.AlterTableAddColumnBuilder = AlterTableAddColumnBuilder;
233
+ prevent_await_1.preventAwait(AlterTableBuilder, "don't await AlterTableBuilder instances");
234
+ prevent_await_1.preventAwait(AlterColumnBuilder, "don't await AlterColumnBuilder instances");
235
+ prevent_await_1.preventAwait(AlterTableExecutor, "don't await AlterTableExecutor instances directly. To execute the query you need to call `execute`");
236
+ prevent_await_1.preventAwait(AlterTableAddColumnBuilder, "don't await AlterTableAddColumnBuilder instances directly. To execute the query you need to call `execute`");
@@ -1,11 +1,9 @@
1
- import { AddColumnNode } from '../operation-node/add-column-node';
2
1
  import { OperationNodeSource } from '../operation-node/operation-node-source';
3
2
  import { OnDelete } from '../operation-node/references-node';
4
3
  import { RawBuilder } from '../raw-builder/raw-builder';
5
4
  import { PrimitiveValue } from '../util/object-utils';
6
- export declare class AddColumnBuilder implements OperationNodeSource {
7
- #private;
8
- constructor(node: AddColumnNode);
5
+ import { ColumnDefinitionNode } from '../operation-node/column-definition-node';
6
+ export interface ColumnDefinitionBuilderInterface<R> {
9
7
  /**
10
8
  * Makes the column automatically incrementing.
11
9
  *
@@ -13,14 +11,14 @@ export declare class AddColumnBuilder implements OperationNodeSource {
13
11
  * on postgres this sets the column type to `serial` no matter what you
14
12
  * have specified before.
15
13
  */
16
- increments(): AddColumnBuilder;
14
+ increments(): R;
17
15
  /**
18
16
  * Makes the column the primary key.
19
17
  *
20
18
  * If you want to specify a composite primary key use the
21
19
  * {@link TableBuilder.addPrimaryKeyConstraint} method.
22
20
  */
23
- primaryKey(): AddColumnBuilder;
21
+ primaryKey(): R;
24
22
  /**
25
23
  * Adds a foreign key constraint for the column.
26
24
  *
@@ -29,19 +27,19 @@ export declare class AddColumnBuilder implements OperationNodeSource {
29
27
  * col.references('person.id')
30
28
  * ```
31
29
  */
32
- references(ref: string): AddColumnBuilder;
30
+ references(ref: string): R;
33
31
  /**
34
32
  * Adds an `on delete` constraint for the foreign key column.
35
33
  */
36
- onDelete(onDelete: OnDelete): AddColumnBuilder;
34
+ onDelete(onDelete: OnDelete): R;
37
35
  /**
38
36
  * Adds a unique constraint for the column.
39
37
  */
40
- unique(): AddColumnBuilder;
38
+ unique(): R;
41
39
  /**
42
40
  * Adds a `not null` constraint for the column.
43
41
  */
44
- notNullable(): AddColumnBuilder;
42
+ notNull(): R;
45
43
  /**
46
44
  * Adds a default value constraint for the column.
47
45
  *
@@ -49,11 +47,11 @@ export declare class AddColumnBuilder implements OperationNodeSource {
49
47
  * ```ts
50
48
  * db.schema
51
49
  * .createTable('pet')
52
- * .addColumn('integer', 'number_of_legs', (col) => col.defaultTo(4))
50
+ * .addColumn('number_of_legs', 'integer', (col) => col.defaultTo(4))
53
51
  * .execute()
54
52
  * ```
55
53
  */
56
- defaultTo(value: PrimitiveValue | RawBuilder<any>): AddColumnBuilder;
54
+ defaultTo(value: PrimitiveValue | RawBuilder<any>): R;
57
55
  /**
58
56
  * Adds a check constraint for the column.
59
57
  *
@@ -61,10 +59,22 @@ export declare class AddColumnBuilder implements OperationNodeSource {
61
59
  * ```ts
62
60
  * db.schema
63
61
  * .createTable('pet')
64
- * .addColumn('integer', 'number_of_legs', (col) => col.check('number_of_legs < 5'))
62
+ * .addColumn('number_of_legs', (col) => col.check('number_of_legs < 5', 'integer'))
65
63
  * .execute()
66
64
  * ```
67
65
  */
68
- check(sql: string): AddColumnBuilder;
69
- toOperationNode(): AddColumnNode;
66
+ check(sql: string): R;
67
+ }
68
+ export declare class ColumnDefinitionBuilder implements ColumnDefinitionBuilderInterface<ColumnDefinitionBuilder>, OperationNodeSource {
69
+ #private;
70
+ constructor(node: ColumnDefinitionNode);
71
+ increments(): ColumnDefinitionBuilder;
72
+ primaryKey(): ColumnDefinitionBuilder;
73
+ references(ref: string): ColumnDefinitionBuilder;
74
+ onDelete(onDelete: OnDelete): ColumnDefinitionBuilder;
75
+ unique(): ColumnDefinitionBuilder;
76
+ notNull(): ColumnDefinitionBuilder;
77
+ defaultTo(value: PrimitiveValue | RawBuilder<any>): ColumnDefinitionBuilder;
78
+ check(sql: string): ColumnDefinitionBuilder;
79
+ toOperationNode(): ColumnDefinitionNode;
70
80
  }
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ColumnDefinitionBuilder = void 0;
4
+ const check_constraint_node_1 = require("../operation-node/check-constraint-node");
5
+ const operation_node_source_1 = require("../operation-node/operation-node-source");
6
+ const reference_node_1 = require("../operation-node/reference-node");
7
+ const references_node_1 = require("../operation-node/references-node");
8
+ const select_all_node_1 = require("../operation-node/select-all-node");
9
+ const value_node_1 = require("../operation-node/value-node");
10
+ const reference_parser_1 = require("../parser/reference-parser");
11
+ const prevent_await_1 = require("../util/prevent-await");
12
+ const column_definition_node_1 = require("../operation-node/column-definition-node");
13
+ class ColumnDefinitionBuilder {
14
+ #node;
15
+ constructor(node) {
16
+ this.#node = node;
17
+ }
18
+ increments() {
19
+ return new ColumnDefinitionBuilder(column_definition_node_1.columnDefinitionNode.cloneWith(this.#node, { isAutoIncrementing: true }));
20
+ }
21
+ primaryKey() {
22
+ return new ColumnDefinitionBuilder(column_definition_node_1.columnDefinitionNode.cloneWith(this.#node, { isPrimaryKey: true }));
23
+ }
24
+ references(ref) {
25
+ const references = reference_parser_1.parseStringReference(ref);
26
+ if (!reference_node_1.referenceNode.is(references) || select_all_node_1.selectAllNode.is(references.column)) {
27
+ throw new Error(`invalid call references('${ref}'). The reference must have format table.column or schema.table.column`);
28
+ }
29
+ return new ColumnDefinitionBuilder(column_definition_node_1.columnDefinitionNode.cloneWith(this.#node, {
30
+ references: references_node_1.referencesNode.create(references.table, [
31
+ references.column,
32
+ ]),
33
+ }));
34
+ }
35
+ onDelete(onDelete) {
36
+ if (!this.#node.references) {
37
+ throw new Error('on delete constraint can only be added for foreign keys');
38
+ }
39
+ return new ColumnDefinitionBuilder(column_definition_node_1.columnDefinitionNode.cloneWith(this.#node, {
40
+ references: references_node_1.referencesNode.cloneWithOnDelete(this.#node.references, onDelete),
41
+ }));
42
+ }
43
+ unique() {
44
+ return new ColumnDefinitionBuilder(column_definition_node_1.columnDefinitionNode.cloneWith(this.#node, { isUnique: true }));
45
+ }
46
+ notNull() {
47
+ return new ColumnDefinitionBuilder(column_definition_node_1.columnDefinitionNode.cloneWith(this.#node, { isNullable: false }));
48
+ }
49
+ defaultTo(value) {
50
+ return new ColumnDefinitionBuilder(column_definition_node_1.columnDefinitionNode.cloneWith(this.#node, {
51
+ defaultTo: operation_node_source_1.isOperationNodeSource(value)
52
+ ? value.toOperationNode()
53
+ : value_node_1.valueNode.createImmediate(value),
54
+ }));
55
+ }
56
+ check(sql) {
57
+ return new ColumnDefinitionBuilder(column_definition_node_1.columnDefinitionNode.cloneWith(this.#node, {
58
+ check: check_constraint_node_1.checkConstraintNode.create(sql),
59
+ }));
60
+ }
61
+ toOperationNode() {
62
+ return this.#node;
63
+ }
64
+ }
65
+ exports.ColumnDefinitionBuilder = ColumnDefinitionBuilder;
66
+ prevent_await_1.preventAwait(ColumnDefinitionBuilder, "don't await ColumnBuilder instances directly.");
@@ -2,10 +2,10 @@ import { CreateIndexNode, IndexType } from '../operation-node/create-index-node'
2
2
  import { OperationNodeSource } from '../operation-node/operation-node-source';
3
3
  import { CompiledQuery } from '../query-compiler/compiled-query';
4
4
  import { Compilable } from '../util/compilable';
5
- import { QueryExecutor } from '../util/query-executor';
5
+ import { QueryExecutor } from '../query-executor/query-executor';
6
6
  export declare class CreateIndexBuilder implements OperationNodeSource, Compilable {
7
7
  #private;
8
- constructor({ createIndexNode, executor, }: CreateIndexBuilderConstructorArgs);
8
+ constructor(args: CreateIndexBuilderConstructorArgs);
9
9
  /**
10
10
  * Makes the index unique.
11
11
  */
@@ -10,9 +10,9 @@ const prevent_await_1 = require("../util/prevent-await");
10
10
  class CreateIndexBuilder {
11
11
  #createIndexNode;
12
12
  #executor;
13
- constructor({ createIndexNode, executor, }) {
14
- this.#createIndexNode = createIndexNode;
15
- this.#executor = executor;
13
+ constructor(args) {
14
+ this.#createIndexNode = args.createIndexNode;
15
+ this.#executor = args.executor;
16
16
  }
17
17
  /**
18
18
  * Makes the index unique.
@@ -2,10 +2,10 @@ import { CreateSchemaNode } from '../operation-node/create-schema-node';
2
2
  import { OperationNodeSource } from '../operation-node/operation-node-source';
3
3
  import { CompiledQuery } from '../query-compiler/compiled-query';
4
4
  import { Compilable } from '../util/compilable';
5
- import { QueryExecutor } from '../util/query-executor';
5
+ import { QueryExecutor } from '../query-executor/query-executor';
6
6
  export declare class CreateSchemaBuilder implements OperationNodeSource, Compilable {
7
7
  #private;
8
- constructor({ createSchemaNode, executor, }: CreateSchemaBuilderConstructorArgs);
8
+ constructor(args: CreateSchemaBuilderConstructorArgs);
9
9
  ifNotExists(): CreateSchemaBuilder;
10
10
  toOperationNode(): CreateSchemaNode;
11
11
  compile(): CompiledQuery;
@@ -6,9 +6,9 @@ const prevent_await_1 = require("../util/prevent-await");
6
6
  class CreateSchemaBuilder {
7
7
  #createSchemaNode;
8
8
  #executor;
9
- constructor({ createSchemaNode, executor, }) {
10
- this.#createSchemaNode = createSchemaNode;
11
- this.#executor = executor;
9
+ constructor(args) {
10
+ this.#createSchemaNode = args.createSchemaNode;
11
+ this.#executor = args.executor;
12
12
  }
13
13
  ifNotExists() {
14
14
  return new CreateSchemaBuilder({
@@ -4,11 +4,11 @@ import { ColumnDataType } from '../operation-node/data-type-node';
4
4
  import { OperationNodeSource } from '../operation-node/operation-node-source';
5
5
  import { CompiledQuery } from '../query-compiler/compiled-query';
6
6
  import { Compilable } from '../util/compilable';
7
- import { QueryExecutor } from '../util/query-executor';
8
- import { AddColumnBuilder } from './add-column-builder';
7
+ import { QueryExecutor } from '../query-executor/query-executor';
8
+ import { ColumnDefinitionBuilder } from './column-definition-builder';
9
9
  export declare class CreateTableBuilder implements OperationNodeSource, Compilable {
10
10
  #private;
11
- constructor({ createTableNode, executor, }: CreateTableBuilderConstructorArgs);
11
+ constructor(args: CreateTableBuilderConstructorArgs);
12
12
  /**
13
13
  * Adds the "if not exists" modifier.
14
14
  *
@@ -23,39 +23,54 @@ export declare class CreateTableBuilder implements OperationNodeSource, Compilab
23
23
  * await db.schema
24
24
  * .createTable('person')
25
25
  * .addColumn('int', 'id', (col) => col.increments().primary()),
26
- * .addColumn('varchar(50), 'first_name', (col) => col.notNullable())
27
- * .addColumn('varchar(50), 'last_name')
26
+ * .addColumn('first_name', 'varchar(50), (col) => col.notNull())
27
+ * .addColumn('varchar', 'last_name')
28
28
  * .addColumn('numeric(8, 2)', 'bank_balance')
29
+ * .addColumn('data', db.raw('customtype'))
29
30
  * ```
30
31
  */
31
- addColumn(dataType: ColumnDataType | RawBuilder, columnName: string, build?: ColumnBuilderCallback): CreateTableBuilder;
32
+ addColumn(columnName: string, dataType: ColumnDataType | RawBuilder, build?: ColumnBuilderCallback): CreateTableBuilder;
32
33
  /**
33
34
  * Adds a primary key constraint for one or more columns.
34
35
  *
35
36
  * @example
36
37
  * ```ts
37
- * addPrimaryKeyConstraint(['first_name', 'last_name'])
38
+ * addPrimaryKeyConstraint('primary_key', ['first_name', 'last_name'])
38
39
  * ```
39
40
  */
40
- addPrimaryKeyConstraint(columns: string[]): CreateTableBuilder;
41
+ addPrimaryKeyConstraint(constraintName: string, columns: string[]): CreateTableBuilder;
41
42
  /**
42
43
  * Adds a unique constraint for one or more columns.
43
44
  *
44
45
  * @example
45
46
  * ```ts
46
- * addUniqueConstraint(['first_name', 'last_name'])
47
+ * addUniqueConstraint('first_name_last_name_unique', ['first_name', 'last_name'])
47
48
  * ```
48
49
  */
49
- addUniqueConstraint(columns: string[]): CreateTableBuilder;
50
+ addUniqueConstraint(constraintName: string, columns: string[]): CreateTableBuilder;
50
51
  /**
51
52
  * Adds a check constraint.
52
53
  *
53
54
  * @example
54
55
  * ```ts
55
- * addCheckConstraint('number_of_legs < 5')
56
+ * addCheckConstraint('check_legs', 'number_of_legs < 5')
56
57
  * ```
57
58
  */
58
- addCheckConstraint(checkExpression: string): CreateTableBuilder;
59
+ addCheckConstraint(constraintName: string, checkExpression: string): CreateTableBuilder;
60
+ /**
61
+ * Adds a foreign key constraint.
62
+ *
63
+ * @example
64
+ * ```ts
65
+ * addForeignKeyConstraint(
66
+ * 'owner_id_foreign',
67
+ * ['owner_id'],
68
+ * 'person',
69
+ * ['id'],
70
+ * )
71
+ * ```
72
+ */
73
+ addForeignKeyConstraint(constraintName: string, columns: string[], targetTable: string, targetColumns: string[]): CreateTableBuilder;
59
74
  toOperationNode(): CreateTableNode;
60
75
  compile(): CompiledQuery;
61
76
  execute(): Promise<void>;
@@ -64,4 +79,4 @@ export interface CreateTableBuilderConstructorArgs {
64
79
  createTableNode: CreateTableNode;
65
80
  executor: QueryExecutor;
66
81
  }
67
- export declare type ColumnBuilderCallback = (tableBuilder: AddColumnBuilder) => AddColumnBuilder;
82
+ export declare type ColumnBuilderCallback = (tableBuilder: ColumnDefinitionBuilder) => ColumnDefinitionBuilder;
@@ -1,18 +1,18 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.CreateTableBuilder = void 0;
4
- const add_column_node_1 = require("../operation-node/add-column-node");
4
+ const column_definition_node_1 = require("../operation-node/column-definition-node");
5
5
  const create_table_node_1 = require("../operation-node/create-table-node");
6
6
  const data_type_node_1 = require("../operation-node/data-type-node");
7
7
  const operation_node_source_1 = require("../operation-node/operation-node-source");
8
8
  const prevent_await_1 = require("../util/prevent-await");
9
- const add_column_builder_1 = require("./add-column-builder");
9
+ const column_definition_builder_1 = require("./column-definition-builder");
10
10
  class CreateTableBuilder {
11
11
  #createTableNode;
12
12
  #executor;
13
- constructor({ createTableNode, executor, }) {
14
- this.#createTableNode = createTableNode;
15
- this.#executor = executor;
13
+ constructor(args) {
14
+ this.#createTableNode = args.createTableNode;
15
+ this.#executor = args.executor;
16
16
  }
17
17
  /**
18
18
  * Adds the "if not exists" modifier.
@@ -33,13 +33,14 @@ class CreateTableBuilder {
33
33
  * await db.schema
34
34
  * .createTable('person')
35
35
  * .addColumn('int', 'id', (col) => col.increments().primary()),
36
- * .addColumn('varchar(50), 'first_name', (col) => col.notNullable())
37
- * .addColumn('varchar(50), 'last_name')
36
+ * .addColumn('first_name', 'varchar(50), (col) => col.notNull())
37
+ * .addColumn('varchar', 'last_name')
38
38
  * .addColumn('numeric(8, 2)', 'bank_balance')
39
+ * .addColumn('data', db.raw('customtype'))
39
40
  * ```
40
41
  */
41
- addColumn(dataType, columnName, build) {
42
- let columnBuilder = new add_column_builder_1.AddColumnBuilder(add_column_node_1.addColumnNode.create(columnName, operation_node_source_1.isOperationNodeSource(dataType)
42
+ addColumn(columnName, dataType, build) {
43
+ let columnBuilder = new column_definition_builder_1.ColumnDefinitionBuilder(column_definition_node_1.columnDefinitionNode.create(columnName, operation_node_source_1.isOperationNodeSource(dataType)
43
44
  ? dataType.toOperationNode()
44
45
  : data_type_node_1.dataTypeNode.create(dataType)));
45
46
  if (build) {
@@ -55,13 +56,13 @@ class CreateTableBuilder {
55
56
  *
56
57
  * @example
57
58
  * ```ts
58
- * addPrimaryKeyConstraint(['first_name', 'last_name'])
59
+ * addPrimaryKeyConstraint('primary_key', ['first_name', 'last_name'])
59
60
  * ```
60
61
  */
61
- addPrimaryKeyConstraint(columns) {
62
+ addPrimaryKeyConstraint(constraintName, columns) {
62
63
  return new CreateTableBuilder({
63
64
  executor: this.#executor,
64
- createTableNode: create_table_node_1.createTableNode.cloneWithPrimaryKeyConstraint(this.#createTableNode, columns),
65
+ createTableNode: create_table_node_1.createTableNode.cloneWithPrimaryKeyConstraint(this.#createTableNode, constraintName, columns),
65
66
  });
66
67
  }
67
68
  /**
@@ -69,13 +70,13 @@ class CreateTableBuilder {
69
70
  *
70
71
  * @example
71
72
  * ```ts
72
- * addUniqueConstraint(['first_name', 'last_name'])
73
+ * addUniqueConstraint('first_name_last_name_unique', ['first_name', 'last_name'])
73
74
  * ```
74
75
  */
75
- addUniqueConstraint(columns) {
76
+ addUniqueConstraint(constraintName, columns) {
76
77
  return new CreateTableBuilder({
77
78
  executor: this.#executor,
78
- createTableNode: create_table_node_1.createTableNode.cloneWithUniqueConstraint(this.#createTableNode, columns),
79
+ createTableNode: create_table_node_1.createTableNode.cloneWithUniqueConstraint(this.#createTableNode, constraintName, columns),
79
80
  });
80
81
  }
81
82
  /**
@@ -83,13 +84,32 @@ class CreateTableBuilder {
83
84
  *
84
85
  * @example
85
86
  * ```ts
86
- * addCheckConstraint('number_of_legs < 5')
87
+ * addCheckConstraint('check_legs', 'number_of_legs < 5')
87
88
  * ```
88
89
  */
89
- addCheckConstraint(checkExpression) {
90
+ addCheckConstraint(constraintName, checkExpression) {
90
91
  return new CreateTableBuilder({
91
92
  executor: this.#executor,
92
- createTableNode: create_table_node_1.createTableNode.cloneWithCheckConstraint(this.#createTableNode, checkExpression),
93
+ createTableNode: create_table_node_1.createTableNode.cloneWithCheckConstraint(this.#createTableNode, constraintName, checkExpression),
94
+ });
95
+ }
96
+ /**
97
+ * Adds a foreign key constraint.
98
+ *
99
+ * @example
100
+ * ```ts
101
+ * addForeignKeyConstraint(
102
+ * 'owner_id_foreign',
103
+ * ['owner_id'],
104
+ * 'person',
105
+ * ['id'],
106
+ * )
107
+ * ```
108
+ */
109
+ addForeignKeyConstraint(constraintName, columns, targetTable, targetColumns) {
110
+ return new CreateTableBuilder({
111
+ executor: this.#executor,
112
+ createTableNode: create_table_node_1.createTableNode.cloneWithForeignKeyConstraint(this.#createTableNode, constraintName, columns, targetTable, targetColumns),
93
113
  });
94
114
  }
95
115
  toOperationNode() {
@@ -2,10 +2,10 @@ import { DropIndexNode } from '../operation-node/drop-index-node';
2
2
  import { OperationNodeSource } from '../operation-node/operation-node-source';
3
3
  import { CompiledQuery } from '../query-compiler/compiled-query';
4
4
  import { Compilable } from '../util/compilable';
5
- import { QueryExecutor } from '../util/query-executor';
5
+ import { QueryExecutor } from '../query-executor/query-executor';
6
6
  export declare class DropIndexBuilder implements OperationNodeSource, Compilable {
7
7
  #private;
8
- constructor({ dropIndexNode, executor }: DropIndexBuilderConstructorArgs);
8
+ constructor(args: DropIndexBuilderConstructorArgs);
9
9
  ifExists(): DropIndexBuilder;
10
10
  toOperationNode(): DropIndexNode;
11
11
  compile(): CompiledQuery;