kysely 0.9.9 → 0.11.1
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 +22 -16
- package/dist/cjs/dialect/dialect-adapter.d.ts +3 -2
- package/dist/cjs/dialect/mysql/mysql-adapter.js +1 -1
- package/dist/cjs/dialect/mysql/mysql-dialect.d.ts +3 -3
- package/dist/cjs/dialect/mysql/mysql-driver.js +25 -32
- package/dist/cjs/dialect/postgres/postgres-dialect.d.ts +2 -2
- package/dist/cjs/dialect/postgres/postgres-driver.js +8 -19
- package/dist/cjs/dialect/sqlite/sqlite-adapter.d.ts +7 -0
- package/dist/cjs/dialect/sqlite/sqlite-adapter.js +18 -0
- package/dist/cjs/dialect/sqlite/sqlite-dialect.d.ts +64 -0
- package/dist/cjs/dialect/sqlite/sqlite-dialect.js +33 -0
- package/dist/cjs/dialect/sqlite/sqlite-driver.d.ts +14 -0
- package/dist/cjs/dialect/sqlite/sqlite-driver.js +116 -0
- package/dist/cjs/dialect/sqlite/sqlite-introspector.d.ts +7 -0
- package/dist/cjs/dialect/sqlite/sqlite-introspector.js +44 -0
- package/dist/cjs/dialect/sqlite/sqlite-query-compiler.d.ts +7 -0
- package/dist/cjs/dialect/sqlite/sqlite-query-compiler.js +19 -0
- package/dist/cjs/driver/database-connection.d.ts +2 -2
- package/dist/cjs/driver/runtime-driver.js +3 -4
- package/dist/cjs/index.d.ts +8 -0
- package/dist/cjs/index.js +8 -0
- package/dist/cjs/kysely.d.ts +6 -4
- package/dist/cjs/kysely.js +6 -4
- package/dist/cjs/migration/migration.d.ts +1 -1
- package/dist/cjs/migration/migration.js +3 -3
- package/dist/cjs/operation-node/column-definition-node.d.ts +8 -6
- package/dist/cjs/operation-node/column-definition-node.js +4 -4
- package/dist/cjs/operation-node/create-schema-node.d.ts +1 -2
- package/dist/cjs/operation-node/create-table-node.d.ts +2 -3
- package/dist/cjs/operation-node/create-table-node.js +2 -2
- package/dist/cjs/operation-node/create-view-node.d.ts +3 -2
- package/dist/cjs/operation-node/default-value-node.d.ts +14 -0
- package/dist/cjs/operation-node/default-value-node.js +18 -0
- package/dist/cjs/operation-node/drop-index-node.d.ts +1 -2
- package/dist/cjs/operation-node/drop-schema-node.d.ts +2 -3
- package/dist/cjs/operation-node/drop-schema-node.js +2 -2
- package/dist/cjs/operation-node/drop-table-node.d.ts +2 -3
- package/dist/cjs/operation-node/drop-table-node.js +2 -2
- package/dist/cjs/operation-node/drop-view-node.d.ts +3 -3
- package/dist/cjs/operation-node/drop-view-node.js +2 -2
- package/dist/cjs/operation-node/generated-always-as-node.d.ts +16 -0
- package/dist/cjs/operation-node/generated-always-as-node.js +25 -0
- package/dist/cjs/operation-node/having-node.d.ts +4 -8
- package/dist/cjs/operation-node/having-node.js +3 -3
- package/dist/cjs/operation-node/join-node.d.ts +6 -9
- package/dist/cjs/operation-node/join-node.js +10 -7
- package/dist/cjs/operation-node/on-node.d.ts +14 -0
- package/dist/cjs/operation-node/on-node.js +28 -0
- package/dist/cjs/operation-node/operation-node-transformer.d.ts +6 -0
- package/dist/cjs/operation-node/operation-node-transformer.js +39 -13
- package/dist/cjs/operation-node/operation-node-visitor.d.ts +7 -0
- package/dist/cjs/operation-node/operation-node-visitor.js +9 -2
- package/dist/cjs/operation-node/operation-node.d.ts +1 -1
- package/dist/cjs/operation-node/query-node.d.ts +3 -3
- package/dist/cjs/operation-node/raw-node.d.ts +1 -1
- package/dist/cjs/operation-node/select-query-node.d.ts +5 -5
- package/dist/cjs/operation-node/select-query-node.js +1 -1
- package/dist/cjs/operation-node/where-node.d.ts +4 -8
- package/dist/cjs/operation-node/where-node.js +3 -3
- package/dist/cjs/parser/filter-parser.js +1 -1
- package/dist/cjs/parser/returning-parser.d.ts +4 -2
- package/dist/cjs/parser/select-parser.d.ts +2 -2
- package/dist/cjs/plugin/immediate-value.ts/immediate-value-plugin.d.ts +1 -1
- package/dist/cjs/query-builder/delete-result.d.ts +5 -0
- package/dist/cjs/query-builder/delete-result.js +13 -0
- package/dist/cjs/query-builder/expression-builder.d.ts +2 -2
- package/dist/cjs/query-builder/expression-builder.js +1 -1
- package/dist/cjs/query-builder/function-builder.d.ts +5 -5
- package/dist/cjs/query-builder/function-builder.js +3 -3
- package/dist/cjs/query-builder/insert-result.d.ts +27 -0
- package/dist/cjs/query-builder/insert-result.js +35 -0
- package/dist/cjs/query-builder/query-builder.d.ts +91 -81
- package/dist/cjs/query-builder/query-builder.js +38 -41
- package/dist/cjs/query-builder/update-result.d.ts +5 -0
- package/dist/cjs/query-builder/update-result.js +13 -0
- package/dist/cjs/query-compiler/compiled-query.d.ts +5 -0
- package/dist/cjs/query-compiler/compiled-query.js +12 -0
- package/dist/cjs/query-compiler/default-query-compiler.d.ts +6 -0
- package/dist/cjs/query-compiler/default-query-compiler.js +60 -26
- package/dist/cjs/query-creator.d.ts +36 -26
- package/dist/cjs/query-creator.js +25 -17
- package/dist/cjs/raw-builder/raw-builder.d.ts +1 -1
- package/dist/cjs/schema/alter-table-builder.d.ts +6 -2
- package/dist/cjs/schema/alter-table-builder.js +28 -4
- package/dist/cjs/schema/column-definition-builder.d.ts +43 -2
- package/dist/cjs/schema/column-definition-builder.js +23 -6
- package/dist/cjs/schema/create-schema-builder.js +1 -1
- package/dist/cjs/schema/create-table-builder.d.ts +7 -8
- package/dist/cjs/schema/create-table-builder.js +8 -9
- package/dist/cjs/schema/create-view-builder.d.ts +5 -0
- package/dist/cjs/schema/create-view-builder.js +20 -1
- package/dist/cjs/schema/drop-index-builder.js +1 -1
- package/dist/cjs/schema/drop-schema-builder.js +3 -1
- package/dist/cjs/schema/drop-table-builder.js +3 -1
- package/dist/cjs/schema/drop-view-builder.d.ts +1 -0
- package/dist/cjs/schema/drop-view-builder.js +11 -1
- package/dist/cjs/schema/schema.d.ts +3 -3
- package/dist/cjs/schema/schema.js +3 -3
- package/dist/cjs/util/dynamic-import.d.ts +2 -0
- package/dist/cjs/util/dynamic-import.js +32 -0
- package/dist/cjs/util/performance-now.d.ts +1 -0
- package/dist/cjs/util/performance-now.js +13 -0
- package/dist/cjs/util/type-utils.d.ts +4 -15
- package/dist/esm/dialect/dialect-adapter.d.ts +3 -2
- package/dist/esm/dialect/mysql/mysql-adapter.js +1 -1
- package/dist/esm/dialect/mysql/mysql-dialect.d.ts +3 -3
- package/dist/esm/dialect/mysql/mysql-driver.js +26 -33
- package/dist/esm/dialect/postgres/postgres-dialect.d.ts +2 -2
- package/dist/esm/dialect/postgres/postgres-driver.js +8 -19
- package/dist/esm/dialect/sqlite/sqlite-adapter.d.ts +7 -0
- package/dist/esm/dialect/sqlite/sqlite-adapter.js +14 -0
- package/dist/esm/dialect/sqlite/sqlite-dialect.d.ts +64 -0
- package/dist/esm/dialect/sqlite/sqlite-dialect.js +29 -0
- package/dist/esm/dialect/sqlite/sqlite-driver.d.ts +14 -0
- package/dist/esm/dialect/sqlite/sqlite-driver.js +112 -0
- package/dist/esm/dialect/sqlite/sqlite-introspector.d.ts +7 -0
- package/dist/esm/dialect/sqlite/sqlite-introspector.js +40 -0
- package/dist/esm/dialect/sqlite/sqlite-query-compiler.d.ts +7 -0
- package/dist/esm/dialect/sqlite/sqlite-query-compiler.js +15 -0
- package/dist/esm/driver/database-connection.d.ts +2 -2
- package/dist/esm/driver/runtime-driver.js +3 -4
- package/dist/esm/index.d.ts +8 -0
- package/dist/esm/index.js +8 -0
- package/dist/esm/kysely.d.ts +6 -4
- package/dist/esm/kysely.js +6 -4
- package/dist/esm/migration/migration.d.ts +1 -1
- package/dist/esm/migration/migration.js +3 -3
- package/dist/esm/operation-node/column-definition-node.d.ts +8 -6
- package/dist/esm/operation-node/column-definition-node.js +4 -4
- package/dist/esm/operation-node/create-schema-node.d.ts +1 -2
- package/dist/esm/operation-node/create-table-node.d.ts +2 -3
- package/dist/esm/operation-node/create-table-node.js +2 -2
- package/dist/esm/operation-node/create-view-node.d.ts +3 -2
- package/dist/esm/operation-node/default-value-node.d.ts +14 -0
- package/dist/esm/operation-node/default-value-node.js +15 -0
- package/dist/esm/operation-node/drop-index-node.d.ts +1 -2
- package/dist/esm/operation-node/drop-schema-node.d.ts +2 -3
- package/dist/esm/operation-node/drop-schema-node.js +2 -2
- package/dist/esm/operation-node/drop-table-node.d.ts +2 -3
- package/dist/esm/operation-node/drop-table-node.js +2 -2
- package/dist/esm/operation-node/drop-view-node.d.ts +3 -3
- package/dist/esm/operation-node/drop-view-node.js +2 -2
- package/dist/esm/operation-node/generated-always-as-node.d.ts +16 -0
- package/dist/esm/operation-node/generated-always-as-node.js +22 -0
- package/dist/esm/operation-node/having-node.d.ts +4 -8
- package/dist/esm/operation-node/having-node.js +3 -3
- package/dist/esm/operation-node/join-node.d.ts +6 -9
- package/dist/esm/operation-node/join-node.js +10 -7
- package/dist/esm/operation-node/on-node.d.ts +14 -0
- package/dist/esm/operation-node/on-node.js +25 -0
- package/dist/esm/operation-node/operation-node-transformer.d.ts +6 -0
- package/dist/esm/operation-node/operation-node-transformer.js +39 -13
- package/dist/esm/operation-node/operation-node-visitor.d.ts +7 -0
- package/dist/esm/operation-node/operation-node-visitor.js +9 -2
- package/dist/esm/operation-node/operation-node.d.ts +1 -1
- package/dist/esm/operation-node/query-node.d.ts +3 -3
- package/dist/esm/operation-node/raw-node.d.ts +1 -1
- package/dist/esm/operation-node/select-query-node.d.ts +5 -5
- package/dist/esm/operation-node/select-query-node.js +1 -1
- package/dist/esm/operation-node/where-node.d.ts +4 -8
- package/dist/esm/operation-node/where-node.js +3 -3
- package/dist/esm/parser/filter-parser.js +1 -1
- package/dist/esm/parser/returning-parser.d.ts +4 -2
- package/dist/esm/parser/select-parser.d.ts +2 -2
- package/dist/esm/plugin/immediate-value.ts/immediate-value-plugin.d.ts +1 -1
- package/dist/esm/query-builder/delete-result.d.ts +5 -0
- package/dist/esm/query-builder/delete-result.js +9 -0
- package/dist/esm/query-builder/expression-builder.d.ts +2 -2
- package/dist/esm/query-builder/expression-builder.js +1 -1
- package/dist/esm/query-builder/function-builder.d.ts +5 -5
- package/dist/esm/query-builder/function-builder.js +3 -3
- package/dist/esm/query-builder/insert-result.d.ts +27 -0
- package/dist/esm/query-builder/insert-result.js +31 -0
- package/dist/esm/query-builder/query-builder.d.ts +91 -81
- package/dist/esm/query-builder/query-builder.js +38 -41
- package/dist/esm/query-builder/update-result.d.ts +5 -0
- package/dist/esm/query-builder/update-result.js +9 -0
- package/dist/esm/query-compiler/compiled-query.d.ts +5 -0
- package/dist/esm/query-compiler/compiled-query.js +11 -1
- package/dist/esm/query-compiler/default-query-compiler.d.ts +6 -0
- package/dist/esm/query-compiler/default-query-compiler.js +60 -26
- package/dist/esm/query-creator.d.ts +36 -26
- package/dist/esm/query-creator.js +25 -17
- package/dist/esm/raw-builder/raw-builder.d.ts +1 -1
- package/dist/esm/schema/alter-table-builder.d.ts +6 -2
- package/dist/esm/schema/alter-table-builder.js +28 -4
- package/dist/esm/schema/column-definition-builder.d.ts +43 -2
- package/dist/esm/schema/column-definition-builder.js +23 -6
- package/dist/esm/schema/create-schema-builder.js +1 -1
- package/dist/esm/schema/create-table-builder.d.ts +7 -8
- package/dist/esm/schema/create-table-builder.js +8 -9
- package/dist/esm/schema/create-view-builder.d.ts +5 -0
- package/dist/esm/schema/create-view-builder.js +20 -1
- package/dist/esm/schema/drop-index-builder.js +1 -1
- package/dist/esm/schema/drop-schema-builder.js +3 -1
- package/dist/esm/schema/drop-table-builder.js +3 -1
- package/dist/esm/schema/drop-view-builder.d.ts +1 -0
- package/dist/esm/schema/drop-view-builder.js +11 -1
- package/dist/esm/schema/schema.d.ts +3 -3
- package/dist/esm/schema/schema.js +3 -3
- package/dist/esm/util/dynamic-import.d.ts +2 -0
- package/dist/esm/util/dynamic-import.js +27 -0
- package/dist/esm/util/performance-now.d.ts +1 -0
- package/dist/esm/util/performance-now.js +9 -0
- package/dist/esm/util/type-utils.d.ts +4 -15
- package/package.json +5 -3
|
@@ -26,20 +26,17 @@ export class QueryCreator {
|
|
|
26
26
|
/**
|
|
27
27
|
* Creates an insert query.
|
|
28
28
|
*
|
|
29
|
-
* The return value of this query is
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
* If you are running a database engine like `Mysql` that always returns the primary
|
|
33
|
-
* key, you can safely use `!` or the {@link QueryBuilder.castTo | castTo} method
|
|
34
|
-
* to cast away the `undefined` from the type.
|
|
29
|
+
* The return value of this query is an instance of {@link InsertResult}. {@link InsertResult}
|
|
30
|
+
* has the {@link InsertResult.insertId | insertId} field that holds the auto incremented id of
|
|
31
|
+
* the inserted row if the db returned one.
|
|
35
32
|
*
|
|
36
33
|
* See the {@link QueryBuilder.values | values} method for more info and examples. Also see
|
|
37
34
|
* the {@link QueryBuilder.returning | returning} method for a way to return columns
|
|
38
|
-
* on supported databases like
|
|
35
|
+
* on supported databases like PostgreSQL.
|
|
39
36
|
*
|
|
40
37
|
* @example
|
|
41
38
|
* ```ts
|
|
42
|
-
* const
|
|
39
|
+
* const result = await db
|
|
43
40
|
* .insertInto('person')
|
|
44
41
|
* .values({
|
|
45
42
|
* id: db.generated,
|
|
@@ -47,10 +44,12 @@ export class QueryCreator {
|
|
|
47
44
|
* last_name: 'Aniston'
|
|
48
45
|
* })
|
|
49
46
|
* .executeTakeFirst()
|
|
47
|
+
*
|
|
48
|
+
* console.log(result.insertId)
|
|
50
49
|
* ```
|
|
51
50
|
*
|
|
52
51
|
* @example
|
|
53
|
-
* Some databases like
|
|
52
|
+
* Some databases like PostgreSQL support the `returning` method:
|
|
54
53
|
*
|
|
55
54
|
* ```ts
|
|
56
55
|
* const { id } = await db
|
|
@@ -76,14 +75,18 @@ export class QueryCreator {
|
|
|
76
75
|
* Creates a delete query.
|
|
77
76
|
*
|
|
78
77
|
* See the {@link QueryBuilder.where} method for examples on how to specify
|
|
79
|
-
* a where clause for the delete operation
|
|
78
|
+
* a where clause for the delete operation.
|
|
79
|
+
*
|
|
80
|
+
* The return value of the query is an instance of {@link DeleteResult}.
|
|
80
81
|
*
|
|
81
82
|
* @example
|
|
82
83
|
* ```ts
|
|
83
|
-
* const
|
|
84
|
+
* const result = await db
|
|
84
85
|
* .deleteFrom('person')
|
|
85
86
|
* .where('person.id', '=', 1)
|
|
86
87
|
* .executeTakeFirst()
|
|
88
|
+
*
|
|
89
|
+
* console.log(result.numDeletedRows)
|
|
87
90
|
* ```
|
|
88
91
|
*/
|
|
89
92
|
deleteFrom(table) {
|
|
@@ -103,13 +106,17 @@ export class QueryCreator {
|
|
|
103
106
|
* See the {@link QueryBuilder.set} method for examples on how to
|
|
104
107
|
* specify the updates.
|
|
105
108
|
*
|
|
109
|
+
* The return value of the query is an {@link UpdateResult}.
|
|
110
|
+
*
|
|
106
111
|
* @example
|
|
107
112
|
* ```ts
|
|
108
|
-
* const
|
|
113
|
+
* const result = await db
|
|
109
114
|
* .updateTable('person')
|
|
110
115
|
* .set({ first_name: 'Jennifer' })
|
|
111
116
|
* .where('person.id', '=', 1)
|
|
112
117
|
* .executeTakeFirst()
|
|
118
|
+
*
|
|
119
|
+
* console.log(result.numUpdatedRows)
|
|
113
120
|
* ```
|
|
114
121
|
*/
|
|
115
122
|
updateTable(table) {
|
|
@@ -167,7 +174,7 @@ export class QueryCreator {
|
|
|
167
174
|
* .execute()
|
|
168
175
|
* ```
|
|
169
176
|
*
|
|
170
|
-
* The generated SQL (
|
|
177
|
+
* The generated SQL (PostgreSQL):
|
|
171
178
|
*
|
|
172
179
|
* ```sql
|
|
173
180
|
* select * from "mammals"."pet"
|
|
@@ -187,7 +194,7 @@ export class QueryCreator {
|
|
|
187
194
|
* .execute()
|
|
188
195
|
* ```
|
|
189
196
|
*
|
|
190
|
-
* The generated SQL (
|
|
197
|
+
* The generated SQL (PostgreSQL):
|
|
191
198
|
*
|
|
192
199
|
* ```sql
|
|
193
200
|
* select "p"."name" from "mammals"."pet" as "p"
|
|
@@ -237,7 +244,7 @@ export class QueryCreator {
|
|
|
237
244
|
* console.log(person.name)
|
|
238
245
|
* ```
|
|
239
246
|
*
|
|
240
|
-
* The generated SQL (
|
|
247
|
+
* The generated SQL (PostgreSQL):
|
|
241
248
|
*
|
|
242
249
|
* ```sql
|
|
243
250
|
* select concat(first_name, ' ', last_name) as "name"
|
|
@@ -295,7 +302,7 @@ export class QueryCreator {
|
|
|
295
302
|
* }
|
|
296
303
|
* ```
|
|
297
304
|
*
|
|
298
|
-
* The generated SQL (
|
|
305
|
+
* The generated SQL (PostgreSQL):
|
|
299
306
|
*
|
|
300
307
|
* ```sql
|
|
301
308
|
* select * from "person" where now() - birth_date > interval $1 year
|
|
@@ -309,7 +316,8 @@ export class QueryCreator {
|
|
|
309
316
|
* Example of creating a completely raw query from scratch:
|
|
310
317
|
*
|
|
311
318
|
* ```ts
|
|
312
|
-
* const
|
|
319
|
+
* const result = await db.raw<Person>('select p.* from person p').execute()
|
|
320
|
+
* const persons = result.rows
|
|
313
321
|
* ```
|
|
314
322
|
*
|
|
315
323
|
* For a raw query, you need to specify the type of the returned __row__. In
|
|
@@ -63,7 +63,7 @@ export interface AlterTableExecutorProps extends AlterTableBuilderProps {
|
|
|
63
63
|
export declare class AlterTableAddColumnBuilder implements ColumnDefinitionBuilderInterface<AlterTableAddColumnBuilder>, OperationNodeSource, Compilable {
|
|
64
64
|
#private;
|
|
65
65
|
constructor(props: AlterTableAddColumnBuilderProps);
|
|
66
|
-
|
|
66
|
+
autoIncrement(): AlterTableAddColumnBuilder;
|
|
67
67
|
primaryKey(): AlterTableAddColumnBuilder;
|
|
68
68
|
references(ref: string): AlterTableAddColumnBuilder;
|
|
69
69
|
onDelete(onDelete: OnModifyForeignAction): AlterTableAddColumnBuilder;
|
|
@@ -72,6 +72,8 @@ export declare class AlterTableAddColumnBuilder implements ColumnDefinitionBuild
|
|
|
72
72
|
notNull(): AlterTableAddColumnBuilder;
|
|
73
73
|
defaultTo(value: PrimitiveValue | AnyRawBuilder): AlterTableAddColumnBuilder;
|
|
74
74
|
check(sql: string): AlterTableAddColumnBuilder;
|
|
75
|
+
generatedAlwaysAs(sql: string): AlterTableAddColumnBuilder;
|
|
76
|
+
stored(): AlterTableAddColumnBuilder;
|
|
75
77
|
toOperationNode(): AlterTableNode;
|
|
76
78
|
compile(): CompiledQuery;
|
|
77
79
|
execute(): Promise<void>;
|
|
@@ -82,7 +84,7 @@ export interface AlterTableAddColumnBuilderProps extends AlterTableBuilderProps
|
|
|
82
84
|
export declare class AlterTableModifyColumnBuilder implements ColumnDefinitionBuilderInterface<AlterTableModifyColumnBuilder>, OperationNodeSource, Compilable {
|
|
83
85
|
#private;
|
|
84
86
|
constructor(props: AlterTableModifyColumnBuilderProps);
|
|
85
|
-
|
|
87
|
+
autoIncrement(): AlterTableModifyColumnBuilder;
|
|
86
88
|
primaryKey(): AlterTableModifyColumnBuilder;
|
|
87
89
|
references(ref: string): AlterTableModifyColumnBuilder;
|
|
88
90
|
onDelete(onDelete: OnModifyForeignAction): AlterTableModifyColumnBuilder;
|
|
@@ -91,6 +93,8 @@ export declare class AlterTableModifyColumnBuilder implements ColumnDefinitionBu
|
|
|
91
93
|
notNull(): AlterTableModifyColumnBuilder;
|
|
92
94
|
defaultTo(value: PrimitiveValue | AnyRawBuilder): AlterTableModifyColumnBuilder;
|
|
93
95
|
check(sql: string): AlterTableModifyColumnBuilder;
|
|
96
|
+
generatedAlwaysAs(sql: string): AlterTableModifyColumnBuilder;
|
|
97
|
+
stored(): AlterTableModifyColumnBuilder;
|
|
94
98
|
toOperationNode(): AlterTableNode;
|
|
95
99
|
compile(): CompiledQuery;
|
|
96
100
|
execute(): Promise<void>;
|
|
@@ -184,10 +184,10 @@ export class AlterTableAddColumnBuilder {
|
|
|
184
184
|
constructor(props) {
|
|
185
185
|
this.#props = freeze(props);
|
|
186
186
|
}
|
|
187
|
-
|
|
187
|
+
autoIncrement() {
|
|
188
188
|
return new AlterTableAddColumnBuilder({
|
|
189
189
|
...this.#props,
|
|
190
|
-
columnBuilder: this.#props.columnBuilder.
|
|
190
|
+
columnBuilder: this.#props.columnBuilder.autoIncrement(),
|
|
191
191
|
});
|
|
192
192
|
}
|
|
193
193
|
primaryKey() {
|
|
@@ -238,6 +238,18 @@ export class AlterTableAddColumnBuilder {
|
|
|
238
238
|
columnBuilder: this.#props.columnBuilder.check(sql),
|
|
239
239
|
});
|
|
240
240
|
}
|
|
241
|
+
generatedAlwaysAs(sql) {
|
|
242
|
+
return new AlterTableAddColumnBuilder({
|
|
243
|
+
...this.#props,
|
|
244
|
+
columnBuilder: this.#props.columnBuilder.generatedAlwaysAs(sql),
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
stored() {
|
|
248
|
+
return new AlterTableAddColumnBuilder({
|
|
249
|
+
...this.#props,
|
|
250
|
+
columnBuilder: this.#props.columnBuilder.stored(),
|
|
251
|
+
});
|
|
252
|
+
}
|
|
241
253
|
toOperationNode() {
|
|
242
254
|
return this.#props.executor.transformQuery(AlterTableNode.cloneWith(this.#props.alterTableNode, {
|
|
243
255
|
addColumn: AddColumnNode.create(this.#props.columnBuilder.toOperationNode()),
|
|
@@ -255,10 +267,10 @@ export class AlterTableModifyColumnBuilder {
|
|
|
255
267
|
constructor(props) {
|
|
256
268
|
this.#props = freeze(props);
|
|
257
269
|
}
|
|
258
|
-
|
|
270
|
+
autoIncrement() {
|
|
259
271
|
return new AlterTableModifyColumnBuilder({
|
|
260
272
|
...this.#props,
|
|
261
|
-
columnBuilder: this.#props.columnBuilder.
|
|
273
|
+
columnBuilder: this.#props.columnBuilder.autoIncrement(),
|
|
262
274
|
});
|
|
263
275
|
}
|
|
264
276
|
primaryKey() {
|
|
@@ -309,6 +321,18 @@ export class AlterTableModifyColumnBuilder {
|
|
|
309
321
|
columnBuilder: this.#props.columnBuilder.check(sql),
|
|
310
322
|
});
|
|
311
323
|
}
|
|
324
|
+
generatedAlwaysAs(sql) {
|
|
325
|
+
return new AlterTableModifyColumnBuilder({
|
|
326
|
+
...this.#props,
|
|
327
|
+
columnBuilder: this.#props.columnBuilder.generatedAlwaysAs(sql),
|
|
328
|
+
});
|
|
329
|
+
}
|
|
330
|
+
stored() {
|
|
331
|
+
return new AlterTableModifyColumnBuilder({
|
|
332
|
+
...this.#props,
|
|
333
|
+
columnBuilder: this.#props.columnBuilder.stored(),
|
|
334
|
+
});
|
|
335
|
+
}
|
|
312
336
|
toOperationNode() {
|
|
313
337
|
return this.#props.executor.transformQuery(AlterTableNode.cloneWith(this.#props.alterTableNode, {
|
|
314
338
|
modifyColumn: ModifyColumnNode.create(this.#props.columnBuilder.toOperationNode()),
|
|
@@ -12,7 +12,7 @@ export interface ColumnDefinitionBuilderInterface<R> {
|
|
|
12
12
|
* Some dialects like PostgreSQL don't support this. On PostgreSQL
|
|
13
13
|
* you can use the `serial` or `bigserial` data type instead.
|
|
14
14
|
*/
|
|
15
|
-
|
|
15
|
+
autoIncrement(): R;
|
|
16
16
|
/**
|
|
17
17
|
* Makes the column the primary key.
|
|
18
18
|
*
|
|
@@ -40,10 +40,19 @@ export interface ColumnDefinitionBuilderInterface<R> {
|
|
|
40
40
|
* column definition (like MySQL 5) you need to call the table level
|
|
41
41
|
* {@link TableBuilder.addForeignKeyConstraint} method instead.
|
|
42
42
|
*
|
|
43
|
+
* @example
|
|
44
|
+
* ```ts
|
|
45
|
+
* col.references('person.id').onDelete('cascade')
|
|
46
|
+
* ```
|
|
43
47
|
*/
|
|
44
48
|
onDelete(onDelete: OnModifyForeignAction): R;
|
|
45
49
|
/**
|
|
46
50
|
* Adds an `on update` constraint for the foreign key column.
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* ```ts
|
|
54
|
+
* col.references('person.id').onUpdate('cascade')
|
|
55
|
+
* ```
|
|
47
56
|
*/
|
|
48
57
|
onUpdate(onUpdate: OnModifyForeignAction): R;
|
|
49
58
|
/**
|
|
@@ -78,11 +87,41 @@ export interface ColumnDefinitionBuilderInterface<R> {
|
|
|
78
87
|
* ```
|
|
79
88
|
*/
|
|
80
89
|
check(sql: string): R;
|
|
90
|
+
/**
|
|
91
|
+
* Makes the column a generated column using a `generated always as` statement.
|
|
92
|
+
*
|
|
93
|
+
* @example
|
|
94
|
+
* ```ts
|
|
95
|
+
* db.schema
|
|
96
|
+
* .createTable('person')
|
|
97
|
+
* .addColumn('full_name', 'varchar(255)',
|
|
98
|
+
* (col) => col.generatedAlwaysAs("concat(first_name, ' ', last_name)")
|
|
99
|
+
* )
|
|
100
|
+
* .execute()
|
|
101
|
+
* ```
|
|
102
|
+
*/
|
|
103
|
+
generatedAlwaysAs(sql: string): R;
|
|
104
|
+
/**
|
|
105
|
+
* Makes a generated column stored instead of virtual. This method can only
|
|
106
|
+
* be used with {@link generatedAlwaysAs}
|
|
107
|
+
*
|
|
108
|
+
* @example
|
|
109
|
+
* ```ts
|
|
110
|
+
* db.schema
|
|
111
|
+
* .createTable('person')
|
|
112
|
+
* .addColumn('full_name', 'varchar(255)', (col) => col
|
|
113
|
+
* .generatedAlwaysAs("concat(first_name, ' ', last_name)")
|
|
114
|
+
* .stored()
|
|
115
|
+
* )
|
|
116
|
+
* .execute()
|
|
117
|
+
* ```
|
|
118
|
+
*/
|
|
119
|
+
stored(): R;
|
|
81
120
|
}
|
|
82
121
|
export declare class ColumnDefinitionBuilder implements ColumnDefinitionBuilderInterface<ColumnDefinitionBuilder>, OperationNodeSource {
|
|
83
122
|
#private;
|
|
84
123
|
constructor(node: ColumnDefinitionNode);
|
|
85
|
-
|
|
124
|
+
autoIncrement(): ColumnDefinitionBuilder;
|
|
86
125
|
primaryKey(): ColumnDefinitionBuilder;
|
|
87
126
|
references(ref: string): ColumnDefinitionBuilder;
|
|
88
127
|
onDelete(onDelete: OnModifyForeignAction): ColumnDefinitionBuilder;
|
|
@@ -91,5 +130,7 @@ export declare class ColumnDefinitionBuilder implements ColumnDefinitionBuilderI
|
|
|
91
130
|
notNull(): ColumnDefinitionBuilder;
|
|
92
131
|
defaultTo(value: DefaultValueExpression): ColumnDefinitionBuilder;
|
|
93
132
|
check(sql: string): ColumnDefinitionBuilder;
|
|
133
|
+
generatedAlwaysAs(sql: string): ColumnDefinitionBuilder;
|
|
134
|
+
stored(): ColumnDefinitionBuilder;
|
|
94
135
|
toOperationNode(): ColumnDefinitionNode;
|
|
95
136
|
}
|
|
@@ -6,16 +6,18 @@ import { parseStringReference } from '../parser/reference-parser.js';
|
|
|
6
6
|
import { preventAwait } from '../util/prevent-await.js';
|
|
7
7
|
import { ColumnDefinitionNode } from '../operation-node/column-definition-node.js';
|
|
8
8
|
import { parseDefaultValueExpression, } from '../parser/default-value-parser.js';
|
|
9
|
+
import { GeneratedAlwaysAsNode } from '../operation-node/generated-always-as-node.js';
|
|
10
|
+
import { DefaultValueNode } from '../operation-node/default-value-node.js';
|
|
9
11
|
export class ColumnDefinitionBuilder {
|
|
10
12
|
#node;
|
|
11
13
|
constructor(node) {
|
|
12
14
|
this.#node = node;
|
|
13
15
|
}
|
|
14
|
-
|
|
15
|
-
return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, {
|
|
16
|
+
autoIncrement() {
|
|
17
|
+
return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, { autoIncrement: true }));
|
|
16
18
|
}
|
|
17
19
|
primaryKey() {
|
|
18
|
-
return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, {
|
|
20
|
+
return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, { primaryKey: true }));
|
|
19
21
|
}
|
|
20
22
|
references(ref) {
|
|
21
23
|
const references = parseStringReference(ref);
|
|
@@ -45,14 +47,14 @@ export class ColumnDefinitionBuilder {
|
|
|
45
47
|
}));
|
|
46
48
|
}
|
|
47
49
|
unique() {
|
|
48
|
-
return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, {
|
|
50
|
+
return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, { unique: true }));
|
|
49
51
|
}
|
|
50
52
|
notNull() {
|
|
51
|
-
return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, {
|
|
53
|
+
return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, { nullable: false }));
|
|
52
54
|
}
|
|
53
55
|
defaultTo(value) {
|
|
54
56
|
return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, {
|
|
55
|
-
defaultTo: parseDefaultValueExpression(value),
|
|
57
|
+
defaultTo: DefaultValueNode.create(parseDefaultValueExpression(value)),
|
|
56
58
|
}));
|
|
57
59
|
}
|
|
58
60
|
check(sql) {
|
|
@@ -60,6 +62,21 @@ export class ColumnDefinitionBuilder {
|
|
|
60
62
|
check: CheckConstraintNode.create(sql),
|
|
61
63
|
}));
|
|
62
64
|
}
|
|
65
|
+
generatedAlwaysAs(sql) {
|
|
66
|
+
return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, {
|
|
67
|
+
generatedAlwaysAs: GeneratedAlwaysAsNode.create(sql),
|
|
68
|
+
}));
|
|
69
|
+
}
|
|
70
|
+
stored() {
|
|
71
|
+
if (!this.#node.generatedAlwaysAs) {
|
|
72
|
+
throw new Error('stored() can only be called after generatedAlwaysAs');
|
|
73
|
+
}
|
|
74
|
+
return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, {
|
|
75
|
+
generatedAlwaysAs: GeneratedAlwaysAsNode.cloneWith(this.#node.generatedAlwaysAs, {
|
|
76
|
+
stored: true,
|
|
77
|
+
}),
|
|
78
|
+
}));
|
|
79
|
+
}
|
|
63
80
|
toOperationNode() {
|
|
64
81
|
return this.#node;
|
|
65
82
|
}
|
|
@@ -9,7 +9,7 @@ export class CreateSchemaBuilder {
|
|
|
9
9
|
ifNotExists() {
|
|
10
10
|
return new CreateSchemaBuilder({
|
|
11
11
|
...this.#props,
|
|
12
|
-
createSchemaNode: CreateSchemaNode.cloneWith(this.#props.createSchemaNode, {
|
|
12
|
+
createSchemaNode: CreateSchemaNode.cloneWith(this.#props.createSchemaNode, { ifNotExists: true }),
|
|
13
13
|
});
|
|
14
14
|
}
|
|
15
15
|
toOperationNode() {
|
|
@@ -26,9 +26,9 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
|
|
|
26
26
|
* ```ts
|
|
27
27
|
* await db.schema
|
|
28
28
|
* .createTable('person')
|
|
29
|
-
* .addColumn('id', 'integer', (col) => col.
|
|
30
|
-
* .addColumn('first_name', 'varchar(50), (col) => col.notNull())
|
|
31
|
-
* .addColumn('last_name', 'varchar')
|
|
29
|
+
* .addColumn('id', 'integer', (col) => col.autoIncrement().primaryKey()),
|
|
30
|
+
* .addColumn('first_name', 'varchar(50)', (col) => col.notNull())
|
|
31
|
+
* .addColumn('last_name', 'varchar(255)')
|
|
32
32
|
* .addColumn('bank_balance', 'numeric(8, 2)')
|
|
33
33
|
* .addColumn('data', db.raw('customtype'))
|
|
34
34
|
* .addColumn('parent_id', 'integer', (col) =>
|
|
@@ -37,11 +37,10 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
|
|
|
37
37
|
* ```
|
|
38
38
|
*
|
|
39
39
|
* With this method, it's once again good to remember that Kysely just builds the query
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
* the next example:
|
|
40
|
+
* and doesn't provide the same API for all databses. For example, some databases like
|
|
41
|
+
* older MySQL don't support `references` statement in the column definition. Instead
|
|
42
|
+
* foreign key constraints need to be defined in at the level of the `create table`
|
|
43
|
+
* query. See the next example:
|
|
45
44
|
*
|
|
46
45
|
* @example
|
|
47
46
|
* ```ts
|
|
@@ -27,7 +27,7 @@ export class CreateTableBuilder {
|
|
|
27
27
|
ifNotExists() {
|
|
28
28
|
return new CreateTableBuilder({
|
|
29
29
|
...this.#props,
|
|
30
|
-
createTableNode: CreateTableNode.
|
|
30
|
+
createTableNode: CreateTableNode.cloneWithIfNotExists(this.#props.createTableNode, true),
|
|
31
31
|
});
|
|
32
32
|
}
|
|
33
33
|
/**
|
|
@@ -37,9 +37,9 @@ export class CreateTableBuilder {
|
|
|
37
37
|
* ```ts
|
|
38
38
|
* await db.schema
|
|
39
39
|
* .createTable('person')
|
|
40
|
-
* .addColumn('id', 'integer', (col) => col.
|
|
41
|
-
* .addColumn('first_name', 'varchar(50), (col) => col.notNull())
|
|
42
|
-
* .addColumn('last_name', 'varchar')
|
|
40
|
+
* .addColumn('id', 'integer', (col) => col.autoIncrement().primaryKey()),
|
|
41
|
+
* .addColumn('first_name', 'varchar(50)', (col) => col.notNull())
|
|
42
|
+
* .addColumn('last_name', 'varchar(255)')
|
|
43
43
|
* .addColumn('bank_balance', 'numeric(8, 2)')
|
|
44
44
|
* .addColumn('data', db.raw('customtype'))
|
|
45
45
|
* .addColumn('parent_id', 'integer', (col) =>
|
|
@@ -48,11 +48,10 @@ export class CreateTableBuilder {
|
|
|
48
48
|
* ```
|
|
49
49
|
*
|
|
50
50
|
* With this method, it's once again good to remember that Kysely just builds the query
|
|
51
|
-
*
|
|
52
|
-
*
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
* the next example:
|
|
51
|
+
* and doesn't provide the same API for all databses. For example, some databases like
|
|
52
|
+
* older MySQL don't support `references` statement in the column definition. Instead
|
|
53
|
+
* foreign key constraints need to be defined in at the level of the `create table`
|
|
54
|
+
* query. See the next example:
|
|
56
55
|
*
|
|
57
56
|
* @example
|
|
58
57
|
* ```ts
|
|
@@ -9,6 +9,11 @@ import { AnyRawBuilder } from '../util/type-utils.js';
|
|
|
9
9
|
export declare class CreateViewBuilder implements OperationNodeSource, Compilable {
|
|
10
10
|
#private;
|
|
11
11
|
constructor(props: CreateViewBuilderProps);
|
|
12
|
+
materialized(): CreateViewBuilder;
|
|
13
|
+
/**
|
|
14
|
+
* Only implemented on some dialects like SQLite. On most dialects, use {@link orReplace}.
|
|
15
|
+
*/
|
|
16
|
+
ifNotExists(): CreateViewBuilder;
|
|
12
17
|
orReplace(): CreateViewBuilder;
|
|
13
18
|
columns(columns: string[]): CreateViewBuilder;
|
|
14
19
|
as(query: AnyQueryBuilder | AnyRawBuilder): CreateViewBuilder;
|
|
@@ -20,11 +20,30 @@ export class CreateViewBuilder {
|
|
|
20
20
|
executor: props.executor.withPlugin(new ImmediateValuePlugin()),
|
|
21
21
|
});
|
|
22
22
|
}
|
|
23
|
+
materialized() {
|
|
24
|
+
return new CreateViewBuilder({
|
|
25
|
+
...this.#props,
|
|
26
|
+
createViewNode: CreateViewNode.cloneWith(this.#props.createViewNode, {
|
|
27
|
+
materialized: true,
|
|
28
|
+
}),
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Only implemented on some dialects like SQLite. On most dialects, use {@link orReplace}.
|
|
33
|
+
*/
|
|
34
|
+
ifNotExists() {
|
|
35
|
+
return new CreateViewBuilder({
|
|
36
|
+
...this.#props,
|
|
37
|
+
createViewNode: CreateViewNode.cloneWith(this.#props.createViewNode, {
|
|
38
|
+
ifNotExists: true,
|
|
39
|
+
}),
|
|
40
|
+
});
|
|
41
|
+
}
|
|
23
42
|
orReplace() {
|
|
24
43
|
return new CreateViewBuilder({
|
|
25
44
|
...this.#props,
|
|
26
45
|
createViewNode: CreateViewNode.cloneWith(this.#props.createViewNode, {
|
|
27
|
-
|
|
46
|
+
orReplace: true,
|
|
28
47
|
}),
|
|
29
48
|
});
|
|
30
49
|
}
|
|
@@ -9,7 +9,9 @@ export class DropSchemaBuilder {
|
|
|
9
9
|
ifExists() {
|
|
10
10
|
return new DropSchemaBuilder({
|
|
11
11
|
...this.#props,
|
|
12
|
-
dropSchemaNode: DropSchemaNode.
|
|
12
|
+
dropSchemaNode: DropSchemaNode.cloneWith(this.#props.dropSchemaNode, {
|
|
13
|
+
ifExists: true,
|
|
14
|
+
}),
|
|
13
15
|
});
|
|
14
16
|
}
|
|
15
17
|
toOperationNode() {
|
|
@@ -9,7 +9,9 @@ export class DropTableBuilder {
|
|
|
9
9
|
ifExists() {
|
|
10
10
|
return new DropTableBuilder({
|
|
11
11
|
...this.#props,
|
|
12
|
-
dropTableNode: DropTableNode.
|
|
12
|
+
dropTableNode: DropTableNode.cloneWith(this.#props.dropTableNode, {
|
|
13
|
+
ifExists: true,
|
|
14
|
+
}),
|
|
13
15
|
});
|
|
14
16
|
}
|
|
15
17
|
toOperationNode() {
|
|
@@ -7,6 +7,7 @@ import { DropViewNode } from '../operation-node/drop-view-node.js';
|
|
|
7
7
|
export declare class DropViewBuilder implements OperationNodeSource, Compilable {
|
|
8
8
|
#private;
|
|
9
9
|
constructor(props: DropViewBuilderProps);
|
|
10
|
+
materialized(): DropViewBuilder;
|
|
10
11
|
ifExists(): DropViewBuilder;
|
|
11
12
|
toOperationNode(): DropViewNode;
|
|
12
13
|
compile(): CompiledQuery;
|
|
@@ -6,10 +6,20 @@ export class DropViewBuilder {
|
|
|
6
6
|
constructor(props) {
|
|
7
7
|
this.#props = freeze(props);
|
|
8
8
|
}
|
|
9
|
+
materialized() {
|
|
10
|
+
return new DropViewBuilder({
|
|
11
|
+
...this.#props,
|
|
12
|
+
dropViewNode: DropViewNode.cloneWith(this.#props.dropViewNode, {
|
|
13
|
+
materialized: true,
|
|
14
|
+
}),
|
|
15
|
+
});
|
|
16
|
+
}
|
|
9
17
|
ifExists() {
|
|
10
18
|
return new DropViewBuilder({
|
|
11
19
|
...this.#props,
|
|
12
|
-
dropViewNode: DropViewNode.
|
|
20
|
+
dropViewNode: DropViewNode.cloneWith(this.#props.dropViewNode, {
|
|
21
|
+
ifExists: true,
|
|
22
|
+
}),
|
|
13
23
|
});
|
|
14
24
|
}
|
|
15
25
|
toOperationNode() {
|
|
@@ -24,7 +24,7 @@ export declare class SchemaModule {
|
|
|
24
24
|
* ```ts
|
|
25
25
|
* await db.schema
|
|
26
26
|
* .createTable('person')
|
|
27
|
-
* .addColumn('id', 'integer', col => col.primaryKey().
|
|
27
|
+
* .addColumn('id', 'integer', col => col.primaryKey().autoIncrement())
|
|
28
28
|
* .addColumn('first_name', 'varchar', col => col.notNull())
|
|
29
29
|
* .addColumn('last_name', 'varchar', col => col.notNull())
|
|
30
30
|
* .addColumn('gender', 'varchar')
|
|
@@ -40,7 +40,7 @@ export declare class SchemaModule {
|
|
|
40
40
|
* ```ts
|
|
41
41
|
* await db.schema
|
|
42
42
|
* .createTable('pet')
|
|
43
|
-
* .addColumn('id', 'integer', col => col.primaryKey().
|
|
43
|
+
* .addColumn('id', 'integer', col => col.primaryKey().autoIncrement())
|
|
44
44
|
* .addColumn('owner_id', 'integer', col => col
|
|
45
45
|
* .references('person.id')
|
|
46
46
|
* .onDelete('cascade')
|
|
@@ -57,7 +57,7 @@ export declare class SchemaModule {
|
|
|
57
57
|
* ```ts
|
|
58
58
|
* await db.schema
|
|
59
59
|
* .createTable('pet')
|
|
60
|
-
* .addColumn('id', 'integer', col => col.primaryKey().
|
|
60
|
+
* .addColumn('id', 'integer', col => col.primaryKey().autoIncrement())
|
|
61
61
|
* .addColumn('owner_id', 'integer')
|
|
62
62
|
* .addForeignKeyConstraint(
|
|
63
63
|
* 'pet_owner_id_foreign', ['owner_id'], 'person', ['id'],
|
|
@@ -37,7 +37,7 @@ export class SchemaModule {
|
|
|
37
37
|
* ```ts
|
|
38
38
|
* await db.schema
|
|
39
39
|
* .createTable('person')
|
|
40
|
-
* .addColumn('id', 'integer', col => col.primaryKey().
|
|
40
|
+
* .addColumn('id', 'integer', col => col.primaryKey().autoIncrement())
|
|
41
41
|
* .addColumn('first_name', 'varchar', col => col.notNull())
|
|
42
42
|
* .addColumn('last_name', 'varchar', col => col.notNull())
|
|
43
43
|
* .addColumn('gender', 'varchar')
|
|
@@ -53,7 +53,7 @@ export class SchemaModule {
|
|
|
53
53
|
* ```ts
|
|
54
54
|
* await db.schema
|
|
55
55
|
* .createTable('pet')
|
|
56
|
-
* .addColumn('id', 'integer', col => col.primaryKey().
|
|
56
|
+
* .addColumn('id', 'integer', col => col.primaryKey().autoIncrement())
|
|
57
57
|
* .addColumn('owner_id', 'integer', col => col
|
|
58
58
|
* .references('person.id')
|
|
59
59
|
* .onDelete('cascade')
|
|
@@ -70,7 +70,7 @@ export class SchemaModule {
|
|
|
70
70
|
* ```ts
|
|
71
71
|
* await db.schema
|
|
72
72
|
* .createTable('pet')
|
|
73
|
-
* .addColumn('id', 'integer', col => col.primaryKey().
|
|
73
|
+
* .addColumn('id', 'integer', col => col.primaryKey().autoIncrement())
|
|
74
74
|
* .addColumn('owner_id', 'integer')
|
|
75
75
|
* .addForeignKeyConstraint(
|
|
76
76
|
* 'pet_owner_id_foreign', ['owner_id'], 'person', ['id'],
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { isFunction, isObject } from './object-utils.js';
|
|
2
|
+
export async function importFunction(modulePath) {
|
|
3
|
+
const module = await import(modulePath);
|
|
4
|
+
const errorMessage = `module "${modulePath}" doesn export a function`;
|
|
5
|
+
if (isFunction(module)) {
|
|
6
|
+
return module;
|
|
7
|
+
}
|
|
8
|
+
else if (isObject(module) && isFunction(module.default)) {
|
|
9
|
+
return module.default;
|
|
10
|
+
}
|
|
11
|
+
throw new Error(errorMessage);
|
|
12
|
+
}
|
|
13
|
+
export async function importNamedFunction(modulePath, exportName) {
|
|
14
|
+
const module = await import(modulePath);
|
|
15
|
+
const errorMessage = `no function export named "${exportName}" found in module "${modulePath}"`;
|
|
16
|
+
if (!isObject(module)) {
|
|
17
|
+
throw new Error(errorMessage);
|
|
18
|
+
}
|
|
19
|
+
if (isFunction(module[exportName])) {
|
|
20
|
+
return module[exportName];
|
|
21
|
+
}
|
|
22
|
+
else if (isObject(module.default) &&
|
|
23
|
+
isFunction(module.default[exportName])) {
|
|
24
|
+
return module.default[exportName];
|
|
25
|
+
}
|
|
26
|
+
throw new Error(errorMessage);
|
|
27
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function performanceNow(): number;
|