kysely 0.12.2 → 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +115 -31
- package/dist/cjs/{introspection → dialect}/database-introspector.d.ts +0 -0
- package/dist/cjs/{introspection → dialect}/database-introspector.js +0 -0
- package/dist/cjs/dialect/dialect.d.ts +1 -1
- package/dist/cjs/dialect/mysql/mysql-adapter.d.ts +2 -2
- package/dist/cjs/dialect/mysql/mysql-adapter.js +2 -1
- package/dist/cjs/dialect/mysql/mysql-dialect.d.ts +1 -1
- package/dist/cjs/dialect/mysql/mysql-introspector.d.ts +1 -1
- package/dist/cjs/dialect/mysql/mysql-introspector.js +3 -3
- package/dist/cjs/dialect/postgres/postgres-adapter.d.ts +2 -2
- package/dist/cjs/dialect/postgres/postgres-adapter.js +2 -1
- package/dist/cjs/dialect/postgres/postgres-dialect.d.ts +1 -1
- package/dist/cjs/dialect/postgres/postgres-introspector.d.ts +1 -1
- package/dist/cjs/dialect/postgres/postgres-introspector.js +3 -3
- package/dist/cjs/dialect/sqlite/sqlite-adapter.d.ts +2 -2
- package/dist/cjs/dialect/sqlite/sqlite-dialect.d.ts +1 -1
- package/dist/cjs/dialect/sqlite/sqlite-introspector.d.ts +1 -1
- package/dist/cjs/dialect/sqlite/sqlite-introspector.js +3 -3
- package/dist/cjs/index.d.ts +7 -4
- package/dist/cjs/index.js +6 -3
- package/dist/cjs/kysely.d.ts +8 -40
- package/dist/cjs/kysely.js +8 -40
- package/dist/cjs/migration/file-migration-provider.d.ts +52 -0
- package/dist/cjs/migration/file-migration-provider.js +52 -0
- package/dist/cjs/migration/migrator.d.ts +234 -0
- package/dist/cjs/migration/migrator.js +417 -0
- package/dist/cjs/operation-node/check-constraint-node.d.ts +1 -1
- package/dist/cjs/operation-node/check-constraint-node.js +2 -3
- package/dist/cjs/operation-node/column-definition-node.d.ts +8 -7
- package/dist/cjs/operation-node/column-definition-node.js +0 -4
- package/dist/cjs/operation-node/data-type-node.d.ts +1 -1
- package/dist/cjs/operation-node/generated-node.d.ts +20 -0
- package/dist/cjs/operation-node/generated-node.js +31 -0
- package/dist/cjs/operation-node/on-conflict-node.d.ts +13 -2
- package/dist/cjs/operation-node/on-conflict-node.js +39 -1
- package/dist/cjs/operation-node/operation-node-transformer.d.ts +2 -2
- package/dist/cjs/operation-node/operation-node-transformer.js +13 -6
- package/dist/cjs/operation-node/operation-node-visitor.d.ts +2 -2
- package/dist/cjs/operation-node/operation-node-visitor.js +1 -1
- package/dist/cjs/operation-node/operation-node.d.ts +1 -1
- package/dist/cjs/parser/insert-values-parser.d.ts +4 -4
- package/dist/cjs/parser/insert-values-parser.js +2 -3
- package/dist/cjs/parser/reference-parser.d.ts +4 -3
- package/dist/cjs/parser/select-parser.d.ts +10 -4
- package/dist/cjs/parser/update-set-parser.d.ts +2 -1
- package/dist/cjs/plugin/camel-case/camel-case-plugin.d.ts +2 -2
- package/dist/cjs/query-builder/delete-query-builder.d.ts +0 -3
- package/dist/cjs/query-builder/insert-query-builder.d.ts +78 -94
- package/dist/cjs/query-builder/insert-query-builder.js +145 -15
- package/dist/cjs/query-builder/on-conflict-builder.d.ts +686 -0
- package/dist/cjs/query-builder/on-conflict-builder.js +323 -0
- package/dist/cjs/query-builder/returning-interface.d.ts +0 -3
- package/dist/cjs/query-builder/update-query-builder.d.ts +0 -3
- package/dist/cjs/query-compiler/default-query-compiler.d.ts +2 -2
- package/dist/cjs/query-compiler/default-query-compiler.js +37 -8
- package/dist/cjs/query-creator.d.ts +0 -2
- package/dist/cjs/query-creator.js +0 -2
- package/dist/cjs/schema/alter-table-builder.d.ts +41 -9
- package/dist/cjs/schema/alter-table-builder.js +45 -9
- package/dist/cjs/schema/column-definition-builder.d.ts +40 -8
- package/dist/cjs/schema/column-definition-builder.js +21 -8
- package/dist/cjs/schema/create-index-builder.d.ts +3 -2
- package/dist/cjs/schema/create-index-builder.js +2 -2
- package/dist/cjs/schema/create-table-builder.d.ts +3 -2
- package/dist/cjs/schema/create-table-builder.js +2 -2
- package/dist/cjs/util/column-type.d.ts +165 -0
- package/dist/cjs/util/column-type.js +2 -0
- package/dist/cjs/util/private-symbols.d.ts +5 -0
- package/dist/cjs/util/private-symbols.js +8 -0
- package/dist/cjs/util/type-utils.d.ts +6 -42
- package/dist/esm/{introspection → dialect}/database-introspector.d.ts +0 -0
- package/dist/esm/{introspection → dialect}/database-introspector.js +0 -0
- package/dist/esm/dialect/dialect.d.ts +1 -1
- package/dist/esm/dialect/mysql/mysql-adapter.d.ts +2 -2
- package/dist/esm/dialect/mysql/mysql-adapter.js +2 -1
- package/dist/esm/dialect/mysql/mysql-dialect.d.ts +1 -1
- package/dist/esm/dialect/mysql/mysql-introspector.d.ts +1 -1
- package/dist/esm/dialect/mysql/mysql-introspector.js +1 -1
- package/dist/esm/dialect/postgres/postgres-adapter.d.ts +2 -2
- package/dist/esm/dialect/postgres/postgres-adapter.js +2 -1
- package/dist/esm/dialect/postgres/postgres-dialect.d.ts +1 -1
- package/dist/esm/dialect/postgres/postgres-introspector.d.ts +1 -1
- package/dist/esm/dialect/postgres/postgres-introspector.js +1 -1
- package/dist/esm/dialect/sqlite/sqlite-adapter.d.ts +2 -2
- package/dist/esm/dialect/sqlite/sqlite-dialect.d.ts +1 -1
- package/dist/esm/dialect/sqlite/sqlite-introspector.d.ts +1 -1
- package/dist/esm/dialect/sqlite/sqlite-introspector.js +1 -1
- package/dist/esm/index.d.ts +7 -4
- package/dist/esm/index.js +6 -3
- package/dist/esm/kysely.d.ts +8 -40
- package/dist/esm/kysely.js +8 -40
- package/dist/esm/migration/file-migration-provider.d.ts +52 -0
- package/dist/esm/migration/file-migration-provider.js +48 -0
- package/dist/esm/migration/migrator.d.ts +234 -0
- package/dist/esm/migration/migrator.js +413 -0
- package/dist/esm/operation-node/check-constraint-node.d.ts +1 -1
- package/dist/esm/operation-node/check-constraint-node.js +2 -3
- package/dist/esm/operation-node/column-definition-node.d.ts +8 -7
- package/dist/esm/operation-node/column-definition-node.js +0 -4
- package/dist/esm/operation-node/data-type-node.d.ts +1 -1
- package/dist/esm/operation-node/generated-node.d.ts +20 -0
- package/dist/esm/operation-node/generated-node.js +28 -0
- package/dist/esm/operation-node/on-conflict-node.d.ts +13 -2
- package/dist/esm/operation-node/on-conflict-node.js +39 -1
- package/dist/esm/operation-node/operation-node-transformer.d.ts +2 -2
- package/dist/esm/operation-node/operation-node-transformer.js +13 -6
- package/dist/esm/operation-node/operation-node-visitor.d.ts +2 -2
- package/dist/esm/operation-node/operation-node-visitor.js +1 -1
- package/dist/esm/operation-node/operation-node.d.ts +1 -1
- package/dist/esm/parser/insert-values-parser.d.ts +4 -4
- package/dist/esm/parser/insert-values-parser.js +2 -3
- package/dist/esm/parser/reference-parser.d.ts +4 -3
- package/dist/esm/parser/select-parser.d.ts +10 -4
- package/dist/esm/parser/update-set-parser.d.ts +2 -1
- package/dist/esm/plugin/camel-case/camel-case-plugin.d.ts +2 -2
- package/dist/esm/query-builder/delete-query-builder.d.ts +0 -3
- package/dist/esm/query-builder/insert-query-builder.d.ts +78 -94
- package/dist/esm/query-builder/insert-query-builder.js +145 -15
- package/dist/esm/query-builder/on-conflict-builder.d.ts +686 -0
- package/dist/esm/query-builder/on-conflict-builder.js +317 -0
- package/dist/esm/query-builder/returning-interface.d.ts +0 -3
- package/dist/esm/query-builder/update-query-builder.d.ts +0 -3
- package/dist/esm/query-compiler/default-query-compiler.d.ts +2 -2
- package/dist/esm/query-compiler/default-query-compiler.js +37 -8
- package/dist/esm/query-creator.d.ts +0 -2
- package/dist/esm/query-creator.js +0 -2
- package/dist/esm/schema/alter-table-builder.d.ts +41 -9
- package/dist/esm/schema/alter-table-builder.js +45 -9
- package/dist/esm/schema/column-definition-builder.d.ts +40 -8
- package/dist/esm/schema/column-definition-builder.js +21 -8
- package/dist/esm/schema/create-index-builder.d.ts +3 -2
- package/dist/esm/schema/create-index-builder.js +2 -2
- package/dist/esm/schema/create-table-builder.d.ts +3 -2
- package/dist/esm/schema/create-table-builder.js +2 -2
- package/dist/esm/util/column-type.d.ts +165 -0
- package/dist/esm/util/column-type.js +1 -0
- package/dist/esm/util/private-symbols.d.ts +5 -0
- package/dist/esm/util/private-symbols.js +5 -0
- package/dist/esm/util/type-utils.d.ts +6 -42
- package/package.json +1 -1
- package/dist/cjs/migration/migration.d.ts +0 -66
- package/dist/cjs/migration/migration.js +0 -187
- package/dist/cjs/operation-node/generated-always-as-node.d.ts +0 -16
- package/dist/cjs/operation-node/generated-always-as-node.js +0 -25
- package/dist/cjs/parser/on-conflict-parser.d.ts +0 -10
- package/dist/cjs/parser/on-conflict-parser.js +0 -35
- package/dist/cjs/util/generated-placeholder.d.ts +0 -3
- package/dist/cjs/util/generated-placeholder.js +0 -11
- package/dist/esm/migration/migration.d.ts +0 -66
- package/dist/esm/migration/migration.js +0 -183
- package/dist/esm/operation-node/generated-always-as-node.d.ts +0 -16
- package/dist/esm/operation-node/generated-always-as-node.js +0 -22
- package/dist/esm/parser/on-conflict-parser.d.ts +0 -10
- package/dist/esm/parser/on-conflict-parser.js +0 -30
- package/dist/esm/util/generated-placeholder.d.ts +0 -3
- package/dist/esm/util/generated-placeholder.js +0 -7
|
@@ -98,7 +98,7 @@ class AlterTableBuilder {
|
|
|
98
98
|
return new AlterTableExecutor({
|
|
99
99
|
...this.#props,
|
|
100
100
|
alterTableNode: alter_table_node_js_1.AlterTableNode.cloneWith(this.#props.alterTableNode, {
|
|
101
|
-
addConstraint: add_constraint_node_js_1.AddConstraintNode.create(check_constraint_node_js_1.CheckConstraintNode.create(checkExpression, constraintName)),
|
|
101
|
+
addConstraint: add_constraint_node_js_1.AddConstraintNode.create(check_constraint_node_js_1.CheckConstraintNode.create(checkExpression.toOperationNode(), constraintName)),
|
|
102
102
|
}),
|
|
103
103
|
});
|
|
104
104
|
}
|
|
@@ -232,22 +232,40 @@ class AlterTableAddColumnBuilder {
|
|
|
232
232
|
columnBuilder: this.#props.columnBuilder.notNull(),
|
|
233
233
|
});
|
|
234
234
|
}
|
|
235
|
+
unsigned() {
|
|
236
|
+
return new AlterTableAddColumnBuilder({
|
|
237
|
+
...this.#props,
|
|
238
|
+
columnBuilder: this.#props.columnBuilder.unsigned(),
|
|
239
|
+
});
|
|
240
|
+
}
|
|
235
241
|
defaultTo(value) {
|
|
236
242
|
return new AlterTableAddColumnBuilder({
|
|
237
243
|
...this.#props,
|
|
238
244
|
columnBuilder: this.#props.columnBuilder.defaultTo(value),
|
|
239
245
|
});
|
|
240
246
|
}
|
|
241
|
-
check(
|
|
247
|
+
check(expression) {
|
|
248
|
+
return new AlterTableAddColumnBuilder({
|
|
249
|
+
...this.#props,
|
|
250
|
+
columnBuilder: this.#props.columnBuilder.check(expression),
|
|
251
|
+
});
|
|
252
|
+
}
|
|
253
|
+
generatedAlwaysAs(expression) {
|
|
254
|
+
return new AlterTableAddColumnBuilder({
|
|
255
|
+
...this.#props,
|
|
256
|
+
columnBuilder: this.#props.columnBuilder.generatedAlwaysAs(expression),
|
|
257
|
+
});
|
|
258
|
+
}
|
|
259
|
+
generatedAlwaysAsIdentity() {
|
|
242
260
|
return new AlterTableAddColumnBuilder({
|
|
243
261
|
...this.#props,
|
|
244
|
-
columnBuilder: this.#props.columnBuilder.
|
|
262
|
+
columnBuilder: this.#props.columnBuilder.generatedAlwaysAsIdentity(),
|
|
245
263
|
});
|
|
246
264
|
}
|
|
247
|
-
|
|
265
|
+
generatedByDefaultAsIdentity() {
|
|
248
266
|
return new AlterTableAddColumnBuilder({
|
|
249
267
|
...this.#props,
|
|
250
|
-
columnBuilder: this.#props.columnBuilder.
|
|
268
|
+
columnBuilder: this.#props.columnBuilder.generatedByDefaultAsIdentity(),
|
|
251
269
|
});
|
|
252
270
|
}
|
|
253
271
|
stored() {
|
|
@@ -316,22 +334,40 @@ class AlterTableModifyColumnBuilder {
|
|
|
316
334
|
columnBuilder: this.#props.columnBuilder.notNull(),
|
|
317
335
|
});
|
|
318
336
|
}
|
|
337
|
+
unsigned() {
|
|
338
|
+
return new AlterTableModifyColumnBuilder({
|
|
339
|
+
...this.#props,
|
|
340
|
+
columnBuilder: this.#props.columnBuilder.unsigned(),
|
|
341
|
+
});
|
|
342
|
+
}
|
|
319
343
|
defaultTo(value) {
|
|
320
344
|
return new AlterTableModifyColumnBuilder({
|
|
321
345
|
...this.#props,
|
|
322
346
|
columnBuilder: this.#props.columnBuilder.defaultTo(value),
|
|
323
347
|
});
|
|
324
348
|
}
|
|
325
|
-
check(
|
|
349
|
+
check(expression) {
|
|
350
|
+
return new AlterTableModifyColumnBuilder({
|
|
351
|
+
...this.#props,
|
|
352
|
+
columnBuilder: this.#props.columnBuilder.check(expression),
|
|
353
|
+
});
|
|
354
|
+
}
|
|
355
|
+
generatedAlwaysAs(expression) {
|
|
356
|
+
return new AlterTableModifyColumnBuilder({
|
|
357
|
+
...this.#props,
|
|
358
|
+
columnBuilder: this.#props.columnBuilder.generatedAlwaysAs(expression),
|
|
359
|
+
});
|
|
360
|
+
}
|
|
361
|
+
generatedAlwaysAsIdentity() {
|
|
326
362
|
return new AlterTableModifyColumnBuilder({
|
|
327
363
|
...this.#props,
|
|
328
|
-
columnBuilder: this.#props.columnBuilder.
|
|
364
|
+
columnBuilder: this.#props.columnBuilder.generatedAlwaysAsIdentity(),
|
|
329
365
|
});
|
|
330
366
|
}
|
|
331
|
-
|
|
367
|
+
generatedByDefaultAsIdentity() {
|
|
332
368
|
return new AlterTableModifyColumnBuilder({
|
|
333
369
|
...this.#props,
|
|
334
|
-
columnBuilder: this.#props.columnBuilder.
|
|
370
|
+
columnBuilder: this.#props.columnBuilder.generatedByDefaultAsIdentity(),
|
|
335
371
|
});
|
|
336
372
|
}
|
|
337
373
|
stored() {
|
|
@@ -66,6 +66,12 @@ export interface ColumnDefinitionBuilderInterface {
|
|
|
66
66
|
* Adds a `not null` constraint for the column.
|
|
67
67
|
*/
|
|
68
68
|
notNull(): ColumnDefinitionBuilderInterface;
|
|
69
|
+
/**
|
|
70
|
+
* Adds a `unsigned` modifier for the column.
|
|
71
|
+
*
|
|
72
|
+
* This only works on some dialects like MySQL.
|
|
73
|
+
*/
|
|
74
|
+
unsigned(): ColumnDefinitionBuilderInterface;
|
|
69
75
|
/**
|
|
70
76
|
* Adds a default value constraint for the column.
|
|
71
77
|
*
|
|
@@ -87,11 +93,13 @@ export interface ColumnDefinitionBuilderInterface {
|
|
|
87
93
|
* ```ts
|
|
88
94
|
* db.schema
|
|
89
95
|
* .createTable('pet')
|
|
90
|
-
* .addColumn('number_of_legs', 'integer', (col) =>
|
|
96
|
+
* .addColumn('number_of_legs', 'integer', (col) =>
|
|
97
|
+
* col.check(db.raw('number_of_legs < 5'))
|
|
98
|
+
* )
|
|
91
99
|
* .execute()
|
|
92
100
|
* ```
|
|
93
101
|
*/
|
|
94
|
-
check(
|
|
102
|
+
check(expression: AnyRawBuilder): ColumnDefinitionBuilderInterface;
|
|
95
103
|
/**
|
|
96
104
|
* Makes the column a generated column using a `generated always as` statement.
|
|
97
105
|
*
|
|
@@ -101,12 +109,20 @@ export interface ColumnDefinitionBuilderInterface {
|
|
|
101
109
|
* db.schema
|
|
102
110
|
* .createTable('person')
|
|
103
111
|
* .addColumn('full_name', 'varchar(255)',
|
|
104
|
-
* (col) => col.generatedAlwaysAs("concat(first_name, ' ', last_name)")
|
|
112
|
+
* (col) => col.generatedAlwaysAs(db.raw("concat(first_name, ' ', last_name)"))
|
|
105
113
|
* )
|
|
106
114
|
* .execute()
|
|
107
115
|
* ```
|
|
108
116
|
*/
|
|
109
|
-
generatedAlwaysAs(
|
|
117
|
+
generatedAlwaysAs(expression: AnyRawBuilder): ColumnDefinitionBuilderInterface;
|
|
118
|
+
/**
|
|
119
|
+
* Adds the `generated always as identity` specifier on supported dialects.
|
|
120
|
+
*/
|
|
121
|
+
generatedAlwaysAsIdentity(): ColumnDefinitionBuilderInterface;
|
|
122
|
+
/**
|
|
123
|
+
* Adds the `generated by default as identity` specifier on supported dialects.
|
|
124
|
+
*/
|
|
125
|
+
generatedByDefaultAsIdentity(): ColumnDefinitionBuilderInterface;
|
|
110
126
|
/**
|
|
111
127
|
* Makes a generated column stored instead of virtual. This method can only
|
|
112
128
|
* be used with {@link generatedAlwaysAs}
|
|
@@ -189,6 +205,12 @@ export declare class ColumnDefinitionBuilder implements ColumnDefinitionBuilderI
|
|
|
189
205
|
* Adds a `not null` constraint for the column.
|
|
190
206
|
*/
|
|
191
207
|
notNull(): ColumnDefinitionBuilder;
|
|
208
|
+
/**
|
|
209
|
+
* Adds a `unsigned` modifier for the column.
|
|
210
|
+
*
|
|
211
|
+
* This only works on some dialects like MySQL.
|
|
212
|
+
*/
|
|
213
|
+
unsigned(): ColumnDefinitionBuilder;
|
|
192
214
|
/**
|
|
193
215
|
* Adds a default value constraint for the column.
|
|
194
216
|
*
|
|
@@ -210,11 +232,13 @@ export declare class ColumnDefinitionBuilder implements ColumnDefinitionBuilderI
|
|
|
210
232
|
* ```ts
|
|
211
233
|
* db.schema
|
|
212
234
|
* .createTable('pet')
|
|
213
|
-
* .addColumn('number_of_legs', 'integer', (col) =>
|
|
235
|
+
* .addColumn('number_of_legs', 'integer', (col) =>
|
|
236
|
+
* col.check(db.raw('number_of_legs < 5'))
|
|
237
|
+
* )
|
|
214
238
|
* .execute()
|
|
215
239
|
* ```
|
|
216
240
|
*/
|
|
217
|
-
check(
|
|
241
|
+
check(expression: AnyRawBuilder): ColumnDefinitionBuilder;
|
|
218
242
|
/**
|
|
219
243
|
* Makes the column a generated column using a `generated always as` statement.
|
|
220
244
|
*
|
|
@@ -224,12 +248,20 @@ export declare class ColumnDefinitionBuilder implements ColumnDefinitionBuilderI
|
|
|
224
248
|
* db.schema
|
|
225
249
|
* .createTable('person')
|
|
226
250
|
* .addColumn('full_name', 'varchar(255)',
|
|
227
|
-
* (col) => col.generatedAlwaysAs("concat(first_name, ' ', last_name)")
|
|
251
|
+
* (col) => col.generatedAlwaysAs(db.raw("concat(first_name, ' ', last_name)"))
|
|
228
252
|
* )
|
|
229
253
|
* .execute()
|
|
230
254
|
* ```
|
|
231
255
|
*/
|
|
232
|
-
generatedAlwaysAs(
|
|
256
|
+
generatedAlwaysAs(expression: AnyRawBuilder): ColumnDefinitionBuilder;
|
|
257
|
+
/**
|
|
258
|
+
* Adds the `generated always as identity` specifier on supported dialects.
|
|
259
|
+
*/
|
|
260
|
+
generatedAlwaysAsIdentity(): ColumnDefinitionBuilder;
|
|
261
|
+
/**
|
|
262
|
+
* Adds the `generated by default as identity` specifier on supported dialects.
|
|
263
|
+
*/
|
|
264
|
+
generatedByDefaultAsIdentity(): ColumnDefinitionBuilder;
|
|
233
265
|
/**
|
|
234
266
|
* Makes a generated column stored instead of virtual. This method can only
|
|
235
267
|
* be used with {@link generatedAlwaysAs}
|
|
@@ -9,7 +9,7 @@ const reference_parser_js_1 = require("../parser/reference-parser.js");
|
|
|
9
9
|
const prevent_await_js_1 = require("../util/prevent-await.js");
|
|
10
10
|
const column_definition_node_js_1 = require("../operation-node/column-definition-node.js");
|
|
11
11
|
const default_value_parser_js_1 = require("../parser/default-value-parser.js");
|
|
12
|
-
const
|
|
12
|
+
const generated_node_js_1 = require("../operation-node/generated-node.js");
|
|
13
13
|
const default_value_node_js_1 = require("../operation-node/default-value-node.js");
|
|
14
14
|
class ColumnDefinitionBuilder {
|
|
15
15
|
#node;
|
|
@@ -53,29 +53,42 @@ class ColumnDefinitionBuilder {
|
|
|
53
53
|
return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWith(this.#node, { unique: true }));
|
|
54
54
|
}
|
|
55
55
|
notNull() {
|
|
56
|
-
return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWith(this.#node, {
|
|
56
|
+
return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWith(this.#node, { notNull: true }));
|
|
57
|
+
}
|
|
58
|
+
unsigned() {
|
|
59
|
+
return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWith(this.#node, { unsigned: true }));
|
|
57
60
|
}
|
|
58
61
|
defaultTo(value) {
|
|
59
62
|
return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWith(this.#node, {
|
|
60
63
|
defaultTo: default_value_node_js_1.DefaultValueNode.create((0, default_value_parser_js_1.parseDefaultValueExpression)(value)),
|
|
61
64
|
}));
|
|
62
65
|
}
|
|
63
|
-
check(
|
|
66
|
+
check(expression) {
|
|
67
|
+
return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWith(this.#node, {
|
|
68
|
+
check: check_constraint_node_js_1.CheckConstraintNode.create(expression.toOperationNode()),
|
|
69
|
+
}));
|
|
70
|
+
}
|
|
71
|
+
generatedAlwaysAs(expression) {
|
|
72
|
+
return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWith(this.#node, {
|
|
73
|
+
generated: generated_node_js_1.GeneratedNode.createWithExpression(expression.toOperationNode()),
|
|
74
|
+
}));
|
|
75
|
+
}
|
|
76
|
+
generatedAlwaysAsIdentity() {
|
|
64
77
|
return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWith(this.#node, {
|
|
65
|
-
|
|
78
|
+
generated: generated_node_js_1.GeneratedNode.create({ identity: true, always: true }),
|
|
66
79
|
}));
|
|
67
80
|
}
|
|
68
|
-
|
|
81
|
+
generatedByDefaultAsIdentity() {
|
|
69
82
|
return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWith(this.#node, {
|
|
70
|
-
|
|
83
|
+
generated: generated_node_js_1.GeneratedNode.create({ identity: true, byDefault: true }),
|
|
71
84
|
}));
|
|
72
85
|
}
|
|
73
86
|
stored() {
|
|
74
|
-
if (!this.#node.
|
|
87
|
+
if (!this.#node.generated) {
|
|
75
88
|
throw new Error('stored() can only be called after generatedAlwaysAs');
|
|
76
89
|
}
|
|
77
90
|
return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWith(this.#node, {
|
|
78
|
-
|
|
91
|
+
generated: generated_node_js_1.GeneratedNode.cloneWith(this.#node.generated, {
|
|
79
92
|
stored: true,
|
|
80
93
|
}),
|
|
81
94
|
}));
|
|
@@ -4,6 +4,7 @@ import { CompiledQuery } from '../query-compiler/compiled-query.js';
|
|
|
4
4
|
import { Compilable } from '../util/compilable.js';
|
|
5
5
|
import { QueryExecutor } from '../query-executor/query-executor.js';
|
|
6
6
|
import { QueryId } from '../util/query-id.js';
|
|
7
|
+
import { AnyRawBuilder } from '../util/type-utils.js';
|
|
7
8
|
export declare class CreateIndexBuilder implements OperationNodeSource, Compilable {
|
|
8
9
|
#private;
|
|
9
10
|
constructor(props: CreateIndexBuilderProps);
|
|
@@ -36,11 +37,11 @@ export declare class CreateIndexBuilder implements OperationNodeSource, Compilab
|
|
|
36
37
|
* await db.schema
|
|
37
38
|
* .createIndex('person_first_name_index')
|
|
38
39
|
* .on('person')
|
|
39
|
-
* .expression('first_name COLLATE "fi_FI"')
|
|
40
|
+
* .expression(db.raw('first_name COLLATE "fi_FI"'))
|
|
40
41
|
* .execute()
|
|
41
42
|
* ```
|
|
42
43
|
*/
|
|
43
|
-
expression(expression:
|
|
44
|
+
expression(expression: AnyRawBuilder): CreateIndexBuilder;
|
|
44
45
|
/**
|
|
45
46
|
* Specifies the index type.
|
|
46
47
|
*/
|
|
@@ -70,7 +70,7 @@ class CreateIndexBuilder {
|
|
|
70
70
|
* await db.schema
|
|
71
71
|
* .createIndex('person_first_name_index')
|
|
72
72
|
* .on('person')
|
|
73
|
-
* .expression('first_name COLLATE "fi_FI"')
|
|
73
|
+
* .expression(db.raw('first_name COLLATE "fi_FI"'))
|
|
74
74
|
* .execute()
|
|
75
75
|
* ```
|
|
76
76
|
*/
|
|
@@ -78,7 +78,7 @@ class CreateIndexBuilder {
|
|
|
78
78
|
return new CreateIndexBuilder({
|
|
79
79
|
...this.#props,
|
|
80
80
|
createIndexNode: create_index_node_js_1.CreateIndexNode.cloneWith(this.#props.createIndexNode, {
|
|
81
|
-
expression:
|
|
81
|
+
expression: expression.toOperationNode(),
|
|
82
82
|
}),
|
|
83
83
|
});
|
|
84
84
|
}
|
|
@@ -7,6 +7,7 @@ import { ColumnDefinitionBuilder } from './column-definition-builder.js';
|
|
|
7
7
|
import { QueryId } from '../util/query-id.js';
|
|
8
8
|
import { ForeignKeyConstraintBuilder } from './foreign-key-constraint-builder.js';
|
|
9
9
|
import { DataTypeExpression } from '../parser/data-type-parser.js';
|
|
10
|
+
import { AnyRawBuilder } from '../util/type-utils.js';
|
|
10
11
|
/**
|
|
11
12
|
* This builder can be used to create a `create table` query.
|
|
12
13
|
*/
|
|
@@ -110,10 +111,10 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
|
|
|
110
111
|
* ### Examples
|
|
111
112
|
*
|
|
112
113
|
* ```ts
|
|
113
|
-
* addCheckConstraint('check_legs', 'number_of_legs < 5')
|
|
114
|
+
* addCheckConstraint('check_legs', db.raw('number_of_legs < 5'))
|
|
114
115
|
* ```
|
|
115
116
|
*/
|
|
116
|
-
addCheckConstraint(constraintName: string, checkExpression:
|
|
117
|
+
addCheckConstraint(constraintName: string, checkExpression: AnyRawBuilder): CreateTableBuilder<TB, C>;
|
|
117
118
|
/**
|
|
118
119
|
* Adds a foreign key constraint.
|
|
119
120
|
*
|
|
@@ -156,13 +156,13 @@ class CreateTableBuilder {
|
|
|
156
156
|
* ### Examples
|
|
157
157
|
*
|
|
158
158
|
* ```ts
|
|
159
|
-
* addCheckConstraint('check_legs', 'number_of_legs < 5')
|
|
159
|
+
* addCheckConstraint('check_legs', db.raw('number_of_legs < 5'))
|
|
160
160
|
* ```
|
|
161
161
|
*/
|
|
162
162
|
addCheckConstraint(constraintName, checkExpression) {
|
|
163
163
|
return new CreateTableBuilder({
|
|
164
164
|
...this.#props,
|
|
165
|
-
createTableNode: create_table_node_js_1.CreateTableNode.cloneWithConstraint(this.#props.createTableNode, check_constraint_node_js_1.CheckConstraintNode.create(checkExpression, constraintName)),
|
|
165
|
+
createTableNode: create_table_node_js_1.CreateTableNode.cloneWithConstraint(this.#props.createTableNode, check_constraint_node_js_1.CheckConstraintNode.create(checkExpression.toOperationNode(), constraintName)),
|
|
166
166
|
});
|
|
167
167
|
}
|
|
168
168
|
/**
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This type can be used to specify a different type for
|
|
3
|
+
* select, insert and update operations.
|
|
4
|
+
*
|
|
5
|
+
* Also see the {@link Generated} type.
|
|
6
|
+
*
|
|
7
|
+
* ### Examples
|
|
8
|
+
*
|
|
9
|
+
* The next example defines a number column that is optional
|
|
10
|
+
* in inserts and updates. All columns are always optional
|
|
11
|
+
* in updates so therefore we don't need to specify `undefined`
|
|
12
|
+
* for the update type. The type below is useful for all kinds of
|
|
13
|
+
* database generated columns like identifiers. The `Generated`
|
|
14
|
+
* type is actually just a shortcut for the type in this example:
|
|
15
|
+
*
|
|
16
|
+
* ```ts
|
|
17
|
+
* ColumnType<number, number | undefined, number>
|
|
18
|
+
* ```
|
|
19
|
+
*
|
|
20
|
+
* The above example makes the column optional in inserts
|
|
21
|
+
* and updates, but you can still choose to provide the
|
|
22
|
+
* column. If you want to prevent insertion/update you
|
|
23
|
+
* can se the type as `never`:
|
|
24
|
+
*
|
|
25
|
+
* ```ts
|
|
26
|
+
* ColumnType<number, never, never>
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
* Here's one more example where the type is different
|
|
30
|
+
* for each different operation:
|
|
31
|
+
*
|
|
32
|
+
* ```ts
|
|
33
|
+
* ColumnType<Date, string, never>
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
export declare type ColumnType<SelectType, InsertType = SelectType, UpdateType = SelectType> = {
|
|
37
|
+
readonly __select__: SelectType;
|
|
38
|
+
readonly __insert__: InsertType;
|
|
39
|
+
readonly __update__: UpdateType;
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* A shortcut for defining database-generated columns. The type
|
|
43
|
+
* is the same for all selects, inserts and updates but the
|
|
44
|
+
* column is optional for inserts and updates.
|
|
45
|
+
*
|
|
46
|
+
* This is implemented using {@link ColumnType} like this:
|
|
47
|
+
*
|
|
48
|
+
* ```ts
|
|
49
|
+
* type Generated<S> = ColumnType<S, S | undefined, S>
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
export declare type Generated<S> = ColumnType<S, S | undefined, S>;
|
|
53
|
+
/**
|
|
54
|
+
* Evaluates to `K` if `T` can be `null` or `undefined`.
|
|
55
|
+
*/
|
|
56
|
+
declare type IfNullable<T, K> = undefined extends T ? K : null extends T ? K : never;
|
|
57
|
+
/**
|
|
58
|
+
* Evaluates to `K` if `T` can't be `null` or `undefined`.
|
|
59
|
+
*/
|
|
60
|
+
declare type IfNotNullable<T, K> = undefined extends T ? never : null extends T ? never : T extends never ? never : K;
|
|
61
|
+
/**
|
|
62
|
+
* Evaluates to `K` if `T` isn't `never`.
|
|
63
|
+
*/
|
|
64
|
+
declare type IfNotNever<T, K> = T extends never ? never : K;
|
|
65
|
+
export declare type SelectType<T> = T extends ColumnType<infer S, any, any> ? S : T;
|
|
66
|
+
export declare type InsertType<T> = T extends ColumnType<any, infer I, any> ? I : T;
|
|
67
|
+
export declare type UpdateType<T> = T extends ColumnType<any, any, infer U> ? U : T;
|
|
68
|
+
/**
|
|
69
|
+
* Keys of `R` whose `InsertType` values can be `null` or `undefined`.
|
|
70
|
+
*/
|
|
71
|
+
export declare type NullableInsertKeys<R> = {
|
|
72
|
+
[K in keyof R]: IfNullable<InsertType<R[K]>, K>;
|
|
73
|
+
}[keyof R];
|
|
74
|
+
/**
|
|
75
|
+
* Keys of `R` whose `InsertType` values can't be `null` or `undefined`.
|
|
76
|
+
*/
|
|
77
|
+
export declare type NonNullableInsertKeys<R> = {
|
|
78
|
+
[K in keyof R]: IfNotNullable<InsertType<R[K]>, K>;
|
|
79
|
+
}[keyof R];
|
|
80
|
+
/**
|
|
81
|
+
* Keys of `R` whose `SelectType` values are not `never`
|
|
82
|
+
*/
|
|
83
|
+
declare type NonNeverSelectKeys<R> = {
|
|
84
|
+
[K in keyof R]: IfNotNever<SelectType<R[K]>, K>;
|
|
85
|
+
}[keyof R];
|
|
86
|
+
/**
|
|
87
|
+
* Keys of `R` whose `UpdateType` values are not `never`
|
|
88
|
+
*/
|
|
89
|
+
export declare type UpdateKeys<R> = {
|
|
90
|
+
[K in keyof R]: IfNotNever<UpdateType<R[K]>, K>;
|
|
91
|
+
}[keyof R];
|
|
92
|
+
/**
|
|
93
|
+
* Given a table interface, extracts the select type from all
|
|
94
|
+
* {@link ColumnType} types.
|
|
95
|
+
*
|
|
96
|
+
* ### Examples
|
|
97
|
+
*
|
|
98
|
+
* ```ts
|
|
99
|
+
* interface PersonTable {
|
|
100
|
+
* id: Generated<number>
|
|
101
|
+
* first_name: string
|
|
102
|
+
* modified_at: ColumnType<Date, string, never>
|
|
103
|
+
* }
|
|
104
|
+
*
|
|
105
|
+
* type Person = Selectable<PersonTable>
|
|
106
|
+
* // {
|
|
107
|
+
* // id: number,
|
|
108
|
+
* // first_name: string
|
|
109
|
+
* // modified_at: Date
|
|
110
|
+
* // }
|
|
111
|
+
* ```
|
|
112
|
+
*/
|
|
113
|
+
export declare type Selectable<R> = {
|
|
114
|
+
[K in NonNeverSelectKeys<R>]: SelectType<R[K]>;
|
|
115
|
+
};
|
|
116
|
+
/**
|
|
117
|
+
* Given a table interface, extracts the insert type from all
|
|
118
|
+
* {@link ColumnType} types.
|
|
119
|
+
*
|
|
120
|
+
* ### Examples
|
|
121
|
+
*
|
|
122
|
+
* ```ts
|
|
123
|
+
* interface PersonTable {
|
|
124
|
+
* id: Generated<number>
|
|
125
|
+
* first_name: string
|
|
126
|
+
* modified_at: ColumnType<Date, string, never>
|
|
127
|
+
* }
|
|
128
|
+
*
|
|
129
|
+
* type InsertablePerson = Insertable<PersonTable>
|
|
130
|
+
* // {
|
|
131
|
+
* // id?: number,
|
|
132
|
+
* // first_name: string
|
|
133
|
+
* // modified_at: string
|
|
134
|
+
* // }
|
|
135
|
+
* ```
|
|
136
|
+
*/
|
|
137
|
+
export declare type Insertable<R> = {
|
|
138
|
+
[K in NonNullableInsertKeys<R>]: InsertType<R[K]>;
|
|
139
|
+
} & {
|
|
140
|
+
[K in NullableInsertKeys<R>]?: InsertType<R[K]>;
|
|
141
|
+
};
|
|
142
|
+
/**
|
|
143
|
+
* Given a table interface, extracts the update type from all
|
|
144
|
+
* {@link ColumnType} types.
|
|
145
|
+
*
|
|
146
|
+
* ### Examples
|
|
147
|
+
*
|
|
148
|
+
* ```ts
|
|
149
|
+
* interface PersonTable {
|
|
150
|
+
* id: Generated<number>
|
|
151
|
+
* first_name: string
|
|
152
|
+
* modified_at: ColumnType<Date, string, never>
|
|
153
|
+
* }
|
|
154
|
+
*
|
|
155
|
+
* type UpdateablePerson = Updateable<PersonTable>
|
|
156
|
+
* // {
|
|
157
|
+
* // id?: number,
|
|
158
|
+
* // first_name?: string
|
|
159
|
+
* // }
|
|
160
|
+
* ```
|
|
161
|
+
*/
|
|
162
|
+
export declare type Updateable<R> = {
|
|
163
|
+
[K in UpdateKeys<R>]?: UpdateType<R[K]>;
|
|
164
|
+
};
|
|
165
|
+
export {};
|
|
@@ -8,43 +8,6 @@ import { UpdateResult } from '../query-builder/update-result.js';
|
|
|
8
8
|
* Given an object type, extracts the union of all value types.
|
|
9
9
|
*/
|
|
10
10
|
export declare type ValueType<T> = T[keyof T];
|
|
11
|
-
/**
|
|
12
|
-
* Given a database type and a union of table names returns the row type
|
|
13
|
-
* that you would get by selecting all columns from tables TB.
|
|
14
|
-
*
|
|
15
|
-
* Example:
|
|
16
|
-
*
|
|
17
|
-
* ```ts
|
|
18
|
-
* interface Person {
|
|
19
|
-
* id: number
|
|
20
|
-
* }
|
|
21
|
-
*
|
|
22
|
-
* interface Pet {
|
|
23
|
-
* name: string
|
|
24
|
-
* species: 'cat' | 'dog'
|
|
25
|
-
* }
|
|
26
|
-
*
|
|
27
|
-
* interface Movie {
|
|
28
|
-
* stars: number
|
|
29
|
-
* }
|
|
30
|
-
*
|
|
31
|
-
* interface Database {
|
|
32
|
-
* person: Person
|
|
33
|
-
* pet: Pet
|
|
34
|
-
* movie: Movie
|
|
35
|
-
* }
|
|
36
|
-
*
|
|
37
|
-
* type Row = RowType<Database, 'person' | 'movie'>
|
|
38
|
-
*
|
|
39
|
-
* // Row == Person & Movie
|
|
40
|
-
* ```
|
|
41
|
-
*/
|
|
42
|
-
export declare type RowType<DB, TB extends keyof DB> = UnionToIntersection<DB[TB]>;
|
|
43
|
-
/**
|
|
44
|
-
* Evil typescript magic to convert a union type `A | B | C` into an
|
|
45
|
-
* intersection type `A & B & C`.
|
|
46
|
-
*/
|
|
47
|
-
declare type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;
|
|
48
11
|
/**
|
|
49
12
|
* Given a database type and a union of table names in that db, returns
|
|
50
13
|
* a union type with all possible column names.
|
|
@@ -79,6 +42,12 @@ declare type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) e
|
|
|
79
42
|
export declare type AnyColumn<DB, TB extends keyof DB> = {
|
|
80
43
|
[T in TB]: keyof DB[T];
|
|
81
44
|
}[TB] & string;
|
|
45
|
+
/**
|
|
46
|
+
* Extracts a column type.
|
|
47
|
+
*/
|
|
48
|
+
export declare type ExtractColumnType<DB, TB extends keyof DB, C> = {
|
|
49
|
+
[T in TB]: C extends keyof DB[T] ? DB[T][C] : never;
|
|
50
|
+
}[TB];
|
|
82
51
|
/**
|
|
83
52
|
* Given a database type and a union of table names in that db, returns
|
|
84
53
|
* a union type with all possible `table`.`column` combinations.
|
|
@@ -137,13 +106,8 @@ export declare type SelectQueryBuilderFactory<DB, TB extends keyof DB> = (qb: Ex
|
|
|
137
106
|
export declare type AliasedQueryBuilderFactory<DB, TB extends keyof DB> = (qb: ExpressionBuilder<DB, TB>) => AnyAliasedQueryBuilder;
|
|
138
107
|
export declare type RawBuilderFactory<DB, TB extends keyof DB> = (qb: ExpressionBuilder<DB, TB>) => AnyRawBuilder;
|
|
139
108
|
export declare type AliasedRawBuilderFactory<DB, TB extends keyof DB> = (qb: ExpressionBuilder<DB, TB>) => AnyAliasedRawBuilder;
|
|
140
|
-
export interface GeneratedPlaceholder {
|
|
141
|
-
/** @internal */
|
|
142
|
-
readonly __isGeneratedPlaceholder__: true;
|
|
143
|
-
}
|
|
144
109
|
export declare type SingleResultType<O> = O extends InsertResult ? O : O extends DeleteResult ? O : O extends UpdateResult ? O : O | undefined;
|
|
145
110
|
export declare type UnknownRow = Record<string, unknown>;
|
|
146
111
|
export declare type Nullable<T> = {
|
|
147
112
|
[P in keyof T]: T[P] | null;
|
|
148
113
|
};
|
|
149
|
-
export {};
|
|
File without changes
|
|
File without changes
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Driver } from '../driver/driver.js';
|
|
2
2
|
import { Kysely } from '../kysely.js';
|
|
3
3
|
import { QueryCompiler } from '../query-compiler/query-compiler.js';
|
|
4
|
-
import { DatabaseIntrospector } from '
|
|
4
|
+
import { DatabaseIntrospector } from './database-introspector.js';
|
|
5
5
|
import { DialectAdapter } from './dialect-adapter.js';
|
|
6
6
|
/**
|
|
7
7
|
* A Dialect is the glue between Kysely and the underlying database engine.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Kysely } from '../../kysely.js';
|
|
2
|
-
import {
|
|
3
|
-
export declare class MysqlAdapter
|
|
2
|
+
import { DialectAdapterBase } from '../dialect-adapter-base.js';
|
|
3
|
+
export declare class MysqlAdapter extends DialectAdapterBase {
|
|
4
4
|
/**
|
|
5
5
|
* Whether or not this dialect supports transactional DDL.
|
|
6
6
|
*
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import { DialectAdapterBase } from '../dialect-adapter-base.js';
|
|
1
2
|
const LOCK_ID = 'ea586330-2c93-47c8-908d-981d9d270f9d';
|
|
2
3
|
const LOCK_TIMEOUT_SECONDS = 60 * 60;
|
|
3
|
-
export class MysqlAdapter {
|
|
4
|
+
export class MysqlAdapter extends DialectAdapterBase {
|
|
4
5
|
get supportsTransactionalDdl() {
|
|
5
6
|
return false;
|
|
6
7
|
}
|
|
@@ -2,7 +2,7 @@ import { Driver } from '../../driver/driver.js';
|
|
|
2
2
|
import { Kysely } from '../../kysely.js';
|
|
3
3
|
import { QueryCompiler } from '../../query-compiler/query-compiler.js';
|
|
4
4
|
import { Dialect } from '../dialect.js';
|
|
5
|
-
import { DatabaseIntrospector } from '
|
|
5
|
+
import { DatabaseIntrospector } from '../database-introspector.js';
|
|
6
6
|
import { DialectAdapter } from '../dialect-adapter.js';
|
|
7
7
|
import { DatabaseConnection } from '../../driver/database-connection.js';
|
|
8
8
|
/**
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DatabaseIntrospector, DatabaseMetadata, DatabaseMetadataOptions } from '
|
|
1
|
+
import { DatabaseIntrospector, DatabaseMetadata, DatabaseMetadataOptions } from '../database-introspector.js';
|
|
2
2
|
import { Kysely } from '../../kysely.js';
|
|
3
3
|
export declare class MysqlIntrospector implements DatabaseIntrospector {
|
|
4
4
|
#private;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Kysely } from '../../kysely.js';
|
|
2
|
-
import {
|
|
3
|
-
export declare class PostgresAdapter
|
|
2
|
+
import { DialectAdapterBase } from '../dialect-adapter-base.js';
|
|
3
|
+
export declare class PostgresAdapter extends DialectAdapterBase {
|
|
4
4
|
/**
|
|
5
5
|
* Whether or not this dialect supports transactional DDL.
|
|
6
6
|
*
|