kysely 0.16.11 → 0.17.2
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 +2 -2
- package/dist/cjs/dialect/mysql/mysql-adapter.js +3 -4
- package/dist/cjs/dialect/mysql/mysql-dialect-config.d.ts +19 -0
- package/dist/cjs/dialect/mysql/mysql-introspector.js +2 -1
- package/dist/cjs/dialect/postgres/postgres-adapter.js +3 -2
- package/dist/cjs/dialect/sqlite/sqlite-introspector.js +2 -1
- package/dist/cjs/driver/connection-provider.d.ts +1 -1
- package/dist/cjs/driver/default-connection-provider.d.ts +1 -1
- package/dist/cjs/driver/default-connection-provider.js +2 -2
- package/dist/cjs/driver/dummy-driver.d.ts +8 -0
- package/dist/cjs/driver/dummy-driver.js +8 -0
- package/dist/cjs/driver/single-connection-provider.d.ts +1 -1
- package/dist/cjs/driver/single-connection-provider.js +2 -2
- package/dist/cjs/index-nodeless.d.ts +2 -0
- package/dist/cjs/index-nodeless.js +2 -0
- package/dist/cjs/kysely.d.ts +3 -6
- package/dist/cjs/kysely.js +30 -41
- package/dist/cjs/migration/migrator.js +4 -4
- package/dist/cjs/operation-node/operation-node-transformer.js +1 -1
- package/dist/cjs/operation-node/raw-node.d.ts +4 -2
- package/dist/cjs/operation-node/raw-node.js +8 -2
- package/dist/cjs/parser/complex-expression-parser.d.ts +5 -5
- package/dist/cjs/parser/complex-expression-parser.js +5 -4
- package/dist/cjs/parser/filter-parser.d.ts +9 -9
- package/dist/cjs/parser/filter-parser.js +31 -30
- package/dist/cjs/parser/group-by-parser.d.ts +1 -2
- package/dist/cjs/parser/group-by-parser.js +2 -2
- package/dist/cjs/parser/insert-values-parser.d.ts +1 -2
- package/dist/cjs/parser/insert-values-parser.js +6 -6
- package/dist/cjs/parser/join-parser.d.ts +1 -2
- package/dist/cjs/parser/join-parser.js +8 -7
- package/dist/cjs/parser/order-by-parser.d.ts +1 -2
- package/dist/cjs/parser/order-by-parser.js +4 -4
- package/dist/cjs/parser/parse-utils.d.ts +10 -0
- package/dist/cjs/parser/parse-utils.js +38 -0
- package/dist/cjs/parser/reference-parser.d.ts +2 -3
- package/dist/cjs/parser/reference-parser.js +5 -5
- package/dist/cjs/parser/select-parser.d.ts +1 -2
- package/dist/cjs/parser/select-parser.js +5 -5
- package/dist/cjs/parser/table-parser.d.ts +2 -3
- package/dist/cjs/parser/table-parser.js +5 -5
- package/dist/cjs/parser/update-set-parser.d.ts +1 -2
- package/dist/cjs/parser/update-set-parser.js +2 -2
- package/dist/cjs/parser/value-parser.d.ts +3 -4
- package/dist/cjs/parser/value-parser.js +7 -7
- package/dist/cjs/parser/with-parser.d.ts +1 -2
- package/dist/cjs/parser/with-parser.js +3 -2
- package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-transformer.d.ts +2 -1
- package/dist/cjs/query-builder/delete-query-builder.d.ts +34 -23
- package/dist/cjs/query-builder/delete-query-builder.js +15 -15
- package/dist/cjs/query-builder/expression-builder.d.ts +4 -13
- package/dist/cjs/query-builder/expression-builder.js +12 -21
- package/dist/cjs/query-builder/function-builder.d.ts +2 -6
- package/dist/cjs/query-builder/function-builder.js +5 -8
- package/dist/cjs/query-builder/insert-query-builder.d.ts +12 -8
- package/dist/cjs/query-builder/insert-query-builder.js +8 -7
- package/dist/cjs/query-builder/join-builder.d.ts +0 -2
- package/dist/cjs/query-builder/join-builder.js +8 -8
- package/dist/cjs/query-builder/on-conflict-builder.d.ts +46 -28
- package/dist/cjs/query-builder/on-conflict-builder.js +17 -17
- package/dist/cjs/query-builder/returning-interface.d.ts +3 -1
- package/dist/cjs/query-builder/select-query-builder.d.ts +52 -33
- package/dist/cjs/query-builder/select-query-builder.js +28 -26
- package/dist/cjs/query-builder/update-query-builder.d.ts +41 -28
- package/dist/cjs/query-builder/update-query-builder.js +22 -20
- package/dist/cjs/query-builder/where-interface.d.ts +31 -20
- package/dist/cjs/query-compiler/default-query-compiler.js +1 -1
- package/dist/cjs/query-creator.d.ts +10 -129
- package/dist/cjs/query-creator.js +5 -136
- package/dist/cjs/query-executor/default-query-executor.d.ts +21 -7
- package/dist/cjs/query-executor/default-query-executor.js +17 -19
- package/dist/cjs/query-executor/noop-query-executor.d.ts +20 -6
- package/dist/cjs/query-executor/noop-query-executor.js +11 -4
- package/dist/cjs/query-executor/query-executor-base.d.ts +62 -0
- package/dist/cjs/query-executor/query-executor-base.js +46 -0
- package/dist/cjs/query-executor/query-executor-provider.d.ts +8 -0
- package/dist/cjs/query-executor/query-executor-provider.js +2 -0
- package/dist/cjs/query-executor/query-executor.d.ts +20 -13
- package/dist/cjs/query-executor/query-executor.js +0 -57
- package/dist/cjs/raw-builder/raw-builder.d.ts +42 -11
- package/dist/cjs/raw-builder/raw-builder.js +55 -56
- package/dist/cjs/raw-builder/sql.d.ts +331 -0
- package/dist/cjs/raw-builder/sql.js +161 -0
- package/dist/cjs/schema/alter-table-builder.d.ts +42 -8
- package/dist/cjs/schema/alter-table-builder.js +20 -0
- package/dist/cjs/schema/column-definition-builder.d.ts +22 -8
- package/dist/cjs/schema/create-index-builder.d.ts +3 -1
- package/dist/cjs/schema/create-index-builder.js +3 -1
- package/dist/cjs/schema/create-table-builder.d.ts +7 -3
- package/dist/cjs/schema/create-table-builder.js +7 -3
- package/dist/cjs/schema/create-view-builder.d.ts +3 -3
- package/dist/cjs/schema/create-view-builder.js +3 -3
- package/dist/cjs/util/query-id.js +10 -4
- package/dist/cjs/util/random-string.js +65 -2
- package/dist/cjs/util/type-utils.d.ts +1 -1
- package/dist/esm/dialect/mysql/mysql-adapter.js +3 -4
- package/dist/esm/dialect/mysql/mysql-dialect-config.d.ts +19 -0
- package/dist/esm/dialect/mysql/mysql-introspector.js +2 -1
- package/dist/esm/dialect/postgres/postgres-adapter.js +3 -2
- package/dist/esm/dialect/sqlite/sqlite-introspector.js +2 -1
- package/dist/esm/driver/connection-provider.d.ts +1 -1
- package/dist/esm/driver/default-connection-provider.d.ts +1 -1
- package/dist/esm/driver/default-connection-provider.js +2 -2
- package/dist/esm/driver/dummy-driver.d.ts +8 -0
- package/dist/esm/driver/dummy-driver.js +8 -0
- package/dist/esm/driver/single-connection-provider.d.ts +1 -1
- package/dist/esm/driver/single-connection-provider.js +2 -2
- package/dist/esm/index-nodeless.d.ts +2 -0
- package/dist/esm/index-nodeless.js +2 -0
- package/dist/esm/kysely.d.ts +3 -6
- package/dist/esm/kysely.js +30 -41
- package/dist/esm/migration/migrator.js +4 -4
- package/dist/esm/operation-node/operation-node-transformer.js +1 -1
- package/dist/esm/operation-node/raw-node.d.ts +4 -2
- package/dist/esm/operation-node/raw-node.js +8 -2
- package/dist/esm/parser/complex-expression-parser.d.ts +5 -5
- package/dist/esm/parser/complex-expression-parser.js +5 -4
- package/dist/esm/parser/filter-parser.d.ts +9 -9
- package/dist/esm/parser/filter-parser.js +31 -30
- package/dist/esm/parser/group-by-parser.d.ts +1 -2
- package/dist/esm/parser/group-by-parser.js +2 -2
- package/dist/esm/parser/insert-values-parser.d.ts +1 -2
- package/dist/esm/parser/insert-values-parser.js +6 -6
- package/dist/esm/parser/join-parser.d.ts +1 -2
- package/dist/esm/parser/join-parser.js +8 -7
- package/dist/esm/parser/order-by-parser.d.ts +1 -2
- package/dist/esm/parser/order-by-parser.js +4 -4
- package/dist/esm/parser/parse-utils.d.ts +10 -0
- package/dist/esm/parser/parse-utils.js +32 -0
- package/dist/esm/parser/reference-parser.d.ts +2 -3
- package/dist/esm/parser/reference-parser.js +5 -5
- package/dist/esm/parser/select-parser.d.ts +1 -2
- package/dist/esm/parser/select-parser.js +5 -5
- package/dist/esm/parser/table-parser.d.ts +2 -3
- package/dist/esm/parser/table-parser.js +5 -5
- package/dist/esm/parser/update-set-parser.d.ts +1 -2
- package/dist/esm/parser/update-set-parser.js +2 -2
- package/dist/esm/parser/value-parser.d.ts +3 -4
- package/dist/esm/parser/value-parser.js +7 -7
- package/dist/esm/parser/with-parser.d.ts +1 -2
- package/dist/esm/parser/with-parser.js +3 -2
- package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-transformer.d.ts +2 -1
- package/dist/esm/query-builder/delete-query-builder.d.ts +34 -23
- package/dist/esm/query-builder/delete-query-builder.js +15 -15
- package/dist/esm/query-builder/expression-builder.d.ts +4 -13
- package/dist/esm/query-builder/expression-builder.js +12 -21
- package/dist/esm/query-builder/function-builder.d.ts +2 -6
- package/dist/esm/query-builder/function-builder.js +5 -8
- package/dist/esm/query-builder/insert-query-builder.d.ts +12 -8
- package/dist/esm/query-builder/insert-query-builder.js +8 -7
- package/dist/esm/query-builder/join-builder.d.ts +0 -2
- package/dist/esm/query-builder/join-builder.js +8 -8
- package/dist/esm/query-builder/on-conflict-builder.d.ts +46 -28
- package/dist/esm/query-builder/on-conflict-builder.js +17 -17
- package/dist/esm/query-builder/returning-interface.d.ts +3 -1
- package/dist/esm/query-builder/select-query-builder.d.ts +52 -33
- package/dist/esm/query-builder/select-query-builder.js +28 -26
- package/dist/esm/query-builder/update-query-builder.d.ts +41 -28
- package/dist/esm/query-builder/update-query-builder.js +22 -20
- package/dist/esm/query-builder/where-interface.d.ts +31 -20
- package/dist/esm/query-compiler/default-query-compiler.js +1 -1
- package/dist/esm/query-creator.d.ts +10 -129
- package/dist/esm/query-creator.js +5 -136
- package/dist/esm/query-executor/default-query-executor.d.ts +21 -7
- package/dist/esm/query-executor/default-query-executor.js +17 -19
- package/dist/esm/query-executor/noop-query-executor.d.ts +20 -6
- package/dist/esm/query-executor/noop-query-executor.js +10 -3
- package/dist/esm/query-executor/query-executor-base.d.ts +62 -0
- package/dist/esm/query-executor/query-executor-base.js +43 -0
- package/dist/esm/query-executor/query-executor-provider.d.ts +8 -0
- package/dist/esm/query-executor/query-executor-provider.js +2 -0
- package/dist/esm/query-executor/query-executor.d.ts +20 -13
- package/dist/esm/query-executor/query-executor.js +1 -55
- package/dist/esm/raw-builder/raw-builder.d.ts +42 -11
- package/dist/esm/raw-builder/raw-builder.js +56 -57
- package/dist/esm/raw-builder/sql.d.ts +331 -0
- package/dist/esm/raw-builder/sql.js +159 -0
- package/dist/esm/schema/alter-table-builder.d.ts +42 -8
- package/dist/esm/schema/alter-table-builder.js +20 -0
- package/dist/esm/schema/column-definition-builder.d.ts +22 -8
- package/dist/esm/schema/create-index-builder.d.ts +3 -1
- package/dist/esm/schema/create-index-builder.js +3 -1
- package/dist/esm/schema/create-table-builder.d.ts +7 -3
- package/dist/esm/schema/create-table-builder.js +7 -3
- package/dist/esm/schema/create-view-builder.d.ts +3 -3
- package/dist/esm/schema/create-view-builder.js +3 -3
- package/dist/esm/util/query-id.js +10 -4
- package/dist/esm/util/random-string.js +65 -2
- package/dist/esm/util/type-utils.d.ts +1 -1
- package/package.json +14 -14
- package/dist/cjs/parser/parse-context.d.ts +0 -55
- package/dist/cjs/parser/parse-context.js +0 -50
- package/dist/cjs/util/private-symbols.d.ts +0 -5
- package/dist/cjs/util/private-symbols.js +0 -8
- package/dist/esm/parser/parse-context.d.ts +0 -55
- package/dist/esm/parser/parse-context.js +0 -47
- package/dist/esm/util/private-symbols.d.ts +0 -5
- package/dist/esm/util/private-symbols.js +0 -6
|
@@ -83,15 +83,18 @@ export interface ColumnDefinitionBuilderInterface {
|
|
|
83
83
|
* .execute()
|
|
84
84
|
* ```
|
|
85
85
|
*
|
|
86
|
-
*
|
|
86
|
+
* Values passed to `defaultTo` are interpreted as value literals by default. You can define
|
|
87
|
+
* an arbitrary SQL expression using the {@link sql} template tag:
|
|
87
88
|
*
|
|
88
89
|
* ```ts
|
|
90
|
+
* import { sql } from 'kysely'
|
|
91
|
+
*
|
|
89
92
|
* db.schema
|
|
90
93
|
* .createTable('pet')
|
|
91
94
|
* .addColumn(
|
|
92
95
|
* 'number_of_legs',
|
|
93
96
|
* 'integer',
|
|
94
|
-
* (col) => col.defaultTo(
|
|
97
|
+
* (col) => col.defaultTo(sql`any SQL here`)
|
|
95
98
|
* )
|
|
96
99
|
* .execute()
|
|
97
100
|
* ```
|
|
@@ -103,10 +106,12 @@ export interface ColumnDefinitionBuilderInterface {
|
|
|
103
106
|
* ### Examples
|
|
104
107
|
*
|
|
105
108
|
* ```ts
|
|
109
|
+
* import { sql } from 'kysely'
|
|
110
|
+
*
|
|
106
111
|
* db.schema
|
|
107
112
|
* .createTable('pet')
|
|
108
113
|
* .addColumn('number_of_legs', 'integer', (col) =>
|
|
109
|
-
* col.check(
|
|
114
|
+
* col.check(sql`number_of_legs < 5`)
|
|
110
115
|
* )
|
|
111
116
|
* .execute()
|
|
112
117
|
* ```
|
|
@@ -118,10 +123,12 @@ export interface ColumnDefinitionBuilderInterface {
|
|
|
118
123
|
* ### Examples
|
|
119
124
|
*
|
|
120
125
|
* ```ts
|
|
126
|
+
* import { sql } from 'kysely'
|
|
127
|
+
*
|
|
121
128
|
* db.schema
|
|
122
129
|
* .createTable('person')
|
|
123
130
|
* .addColumn('full_name', 'varchar(255)',
|
|
124
|
-
* (col) => col.generatedAlwaysAs(
|
|
131
|
+
* (col) => col.generatedAlwaysAs(sql`concat(first_name, ' ', last_name)`)
|
|
125
132
|
* )
|
|
126
133
|
* .execute()
|
|
127
134
|
* ```
|
|
@@ -235,15 +242,18 @@ export declare class ColumnDefinitionBuilder implements ColumnDefinitionBuilderI
|
|
|
235
242
|
* .execute()
|
|
236
243
|
* ```
|
|
237
244
|
*
|
|
238
|
-
*
|
|
245
|
+
* Values passed to `defaultTo` are interpreted as value literals by default. You can define
|
|
246
|
+
* an arbitrary SQL expression using the {@link sql} template tag:
|
|
239
247
|
*
|
|
240
248
|
* ```ts
|
|
249
|
+
* import { sql } from 'kysely'
|
|
250
|
+
*
|
|
241
251
|
* db.schema
|
|
242
252
|
* .createTable('pet')
|
|
243
253
|
* .addColumn(
|
|
244
254
|
* 'number_of_legs',
|
|
245
255
|
* 'integer',
|
|
246
|
-
* (col) => col.defaultTo(
|
|
256
|
+
* (col) => col.defaultTo(sql`any SQL here`)
|
|
247
257
|
* )
|
|
248
258
|
* .execute()
|
|
249
259
|
* ```
|
|
@@ -255,10 +265,12 @@ export declare class ColumnDefinitionBuilder implements ColumnDefinitionBuilderI
|
|
|
255
265
|
* ### Examples
|
|
256
266
|
*
|
|
257
267
|
* ```ts
|
|
268
|
+
* import { sql } from 'kysely'
|
|
269
|
+
*
|
|
258
270
|
* db.schema
|
|
259
271
|
* .createTable('pet')
|
|
260
272
|
* .addColumn('number_of_legs', 'integer', (col) =>
|
|
261
|
-
* col.check(
|
|
273
|
+
* col.check(sql`number_of_legs < 5`)
|
|
262
274
|
* )
|
|
263
275
|
* .execute()
|
|
264
276
|
* ```
|
|
@@ -270,10 +282,12 @@ export declare class ColumnDefinitionBuilder implements ColumnDefinitionBuilderI
|
|
|
270
282
|
* ### Examples
|
|
271
283
|
*
|
|
272
284
|
* ```ts
|
|
285
|
+
* import { sql } from 'kysely'
|
|
286
|
+
*
|
|
273
287
|
* db.schema
|
|
274
288
|
* .createTable('person')
|
|
275
289
|
* .addColumn('full_name', 'varchar(255)',
|
|
276
|
-
* (col) => col.generatedAlwaysAs(
|
|
290
|
+
* (col) => col.generatedAlwaysAs(sql`concat(first_name, ' ', last_name)`)
|
|
277
291
|
* )
|
|
278
292
|
* .execute()
|
|
279
293
|
* ```
|
|
@@ -34,10 +34,12 @@ export declare class CreateIndexBuilder implements OperationNodeSource, Compilab
|
|
|
34
34
|
* ### Examples
|
|
35
35
|
*
|
|
36
36
|
* ```ts
|
|
37
|
+
* import { sql } from 'kysely'
|
|
38
|
+
*
|
|
37
39
|
* await db.schema
|
|
38
40
|
* .createIndex('person_first_name_index')
|
|
39
41
|
* .on('person')
|
|
40
|
-
* .expression(
|
|
42
|
+
* .expression(sql`first_name COLLATE "fi_FI"`)
|
|
41
43
|
* .execute()
|
|
42
44
|
* ```
|
|
43
45
|
*/
|
|
@@ -67,10 +67,12 @@ class CreateIndexBuilder {
|
|
|
67
67
|
* ### Examples
|
|
68
68
|
*
|
|
69
69
|
* ```ts
|
|
70
|
+
* import { sql } from 'kysely'
|
|
71
|
+
*
|
|
70
72
|
* await db.schema
|
|
71
73
|
* .createIndex('person_first_name_index')
|
|
72
74
|
* .on('person')
|
|
73
|
-
* .expression(
|
|
75
|
+
* .expression(sql`first_name COLLATE "fi_FI"`)
|
|
74
76
|
* .execute()
|
|
75
77
|
* ```
|
|
76
78
|
*/
|
|
@@ -39,13 +39,15 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
|
|
|
39
39
|
* ### Examples
|
|
40
40
|
*
|
|
41
41
|
* ```ts
|
|
42
|
+
* import { sql } from 'kysely'
|
|
43
|
+
*
|
|
42
44
|
* await db.schema
|
|
43
45
|
* .createTable('person')
|
|
44
46
|
* .addColumn('id', 'integer', (col) => col.autoIncrement().primaryKey()),
|
|
45
47
|
* .addColumn('first_name', 'varchar(50)', (col) => col.notNull())
|
|
46
48
|
* .addColumn('last_name', 'varchar(255)')
|
|
47
49
|
* .addColumn('bank_balance', 'numeric(8, 2)')
|
|
48
|
-
* .addColumn('data',
|
|
50
|
+
* .addColumn('data', sql`customtype`)
|
|
49
51
|
* .addColumn('parent_id', 'integer', (col) =>
|
|
50
52
|
* col.references('person.id').onDelete('cascade'))
|
|
51
53
|
* )
|
|
@@ -111,7 +113,9 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
|
|
|
111
113
|
* ### Examples
|
|
112
114
|
*
|
|
113
115
|
* ```ts
|
|
114
|
-
*
|
|
116
|
+
* import { sql } from 'kysely'
|
|
117
|
+
*
|
|
118
|
+
* addCheckConstraint('check_legs', sql`number_of_legs < 5`)
|
|
115
119
|
* ```
|
|
116
120
|
*/
|
|
117
121
|
addCheckConstraint(constraintName: string, checkExpression: AnyRawBuilder): CreateTableBuilder<TB, C>;
|
|
@@ -132,7 +136,7 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
|
|
|
132
136
|
* )
|
|
133
137
|
* ```
|
|
134
138
|
*
|
|
135
|
-
* Add
|
|
139
|
+
* Add constraint for multiple columns:
|
|
136
140
|
*
|
|
137
141
|
* ```ts
|
|
138
142
|
* addForeignKeyConstraint(
|
|
@@ -68,13 +68,15 @@ class CreateTableBuilder {
|
|
|
68
68
|
* ### Examples
|
|
69
69
|
*
|
|
70
70
|
* ```ts
|
|
71
|
+
* import { sql } from 'kysely'
|
|
72
|
+
*
|
|
71
73
|
* await db.schema
|
|
72
74
|
* .createTable('person')
|
|
73
75
|
* .addColumn('id', 'integer', (col) => col.autoIncrement().primaryKey()),
|
|
74
76
|
* .addColumn('first_name', 'varchar(50)', (col) => col.notNull())
|
|
75
77
|
* .addColumn('last_name', 'varchar(255)')
|
|
76
78
|
* .addColumn('bank_balance', 'numeric(8, 2)')
|
|
77
|
-
* .addColumn('data',
|
|
79
|
+
* .addColumn('data', sql`customtype`)
|
|
78
80
|
* .addColumn('parent_id', 'integer', (col) =>
|
|
79
81
|
* col.references('person.id').onDelete('cascade'))
|
|
80
82
|
* )
|
|
@@ -156,7 +158,9 @@ class CreateTableBuilder {
|
|
|
156
158
|
* ### Examples
|
|
157
159
|
*
|
|
158
160
|
* ```ts
|
|
159
|
-
*
|
|
161
|
+
* import { sql } from 'kysely'
|
|
162
|
+
*
|
|
163
|
+
* addCheckConstraint('check_legs', sql`number_of_legs < 5`)
|
|
160
164
|
* ```
|
|
161
165
|
*/
|
|
162
166
|
addCheckConstraint(constraintName, checkExpression) {
|
|
@@ -182,7 +186,7 @@ class CreateTableBuilder {
|
|
|
182
186
|
* )
|
|
183
187
|
* ```
|
|
184
188
|
*
|
|
185
|
-
* Add
|
|
189
|
+
* Add constraint for multiple columns:
|
|
186
190
|
*
|
|
187
191
|
* ```ts
|
|
188
192
|
* addForeignKeyConstraint(
|
|
@@ -26,9 +26,9 @@ export declare class CreateViewBuilder implements OperationNodeSource, Compilabl
|
|
|
26
26
|
*
|
|
27
27
|
* WARNING!
|
|
28
28
|
* Some dialects don't support parameterized queries in DDL statements and therefore
|
|
29
|
-
* the query or
|
|
30
|
-
* opening an SQL injection vulnerability. DO NOT pass unchecked user input
|
|
31
|
-
* the query or
|
|
29
|
+
* the query or raw {@link sql } expression passed here is interpolated into a single
|
|
30
|
+
* string opening an SQL injection vulnerability. DO NOT pass unchecked user input
|
|
31
|
+
* into the query or raw expression passed to this method!
|
|
32
32
|
*/
|
|
33
33
|
as(query: AnySelectQueryBuilder | AnyRawBuilder): CreateViewBuilder;
|
|
34
34
|
toOperationNode(): CreateViewNode;
|
|
@@ -64,9 +64,9 @@ class CreateViewBuilder {
|
|
|
64
64
|
*
|
|
65
65
|
* WARNING!
|
|
66
66
|
* Some dialects don't support parameterized queries in DDL statements and therefore
|
|
67
|
-
* the query or
|
|
68
|
-
* opening an SQL injection vulnerability. DO NOT pass unchecked user input
|
|
69
|
-
* the query or
|
|
67
|
+
* the query or raw {@link sql } expression passed here is interpolated into a single
|
|
68
|
+
* string opening an SQL injection vulnerability. DO NOT pass unchecked user input
|
|
69
|
+
* into the query or raw expression passed to this method!
|
|
70
70
|
*/
|
|
71
71
|
as(query) {
|
|
72
72
|
const queryNode = query
|
|
@@ -1,11 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.createQueryId = void 0;
|
|
4
|
-
const object_utils_js_1 = require("./object-utils.js");
|
|
5
4
|
const random_string_js_1 = require("./random-string.js");
|
|
6
5
|
function createQueryId() {
|
|
7
|
-
return (
|
|
8
|
-
queryId: (0, random_string_js_1.randomString)(8),
|
|
9
|
-
});
|
|
6
|
+
return new LazyQueryId();
|
|
10
7
|
}
|
|
11
8
|
exports.createQueryId = createQueryId;
|
|
9
|
+
class LazyQueryId {
|
|
10
|
+
#queryId;
|
|
11
|
+
get queryId() {
|
|
12
|
+
if (this.#queryId === undefined) {
|
|
13
|
+
this.#queryId = (0, random_string_js_1.randomString)(8);
|
|
14
|
+
}
|
|
15
|
+
return this.#queryId;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -1,7 +1,70 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.randomString = void 0;
|
|
4
|
-
const CHARS =
|
|
4
|
+
const CHARS = [
|
|
5
|
+
'A',
|
|
6
|
+
'B',
|
|
7
|
+
'C',
|
|
8
|
+
'D',
|
|
9
|
+
'E',
|
|
10
|
+
'F',
|
|
11
|
+
'G',
|
|
12
|
+
'H',
|
|
13
|
+
'I',
|
|
14
|
+
'J',
|
|
15
|
+
'K',
|
|
16
|
+
'L',
|
|
17
|
+
'M',
|
|
18
|
+
'N',
|
|
19
|
+
'O',
|
|
20
|
+
'P',
|
|
21
|
+
'Q',
|
|
22
|
+
'R',
|
|
23
|
+
'S',
|
|
24
|
+
'T',
|
|
25
|
+
'U',
|
|
26
|
+
'V',
|
|
27
|
+
'W',
|
|
28
|
+
'X',
|
|
29
|
+
'Y',
|
|
30
|
+
'Z',
|
|
31
|
+
'a',
|
|
32
|
+
'b',
|
|
33
|
+
'c',
|
|
34
|
+
'd',
|
|
35
|
+
'e',
|
|
36
|
+
'f',
|
|
37
|
+
'g',
|
|
38
|
+
'h',
|
|
39
|
+
'i',
|
|
40
|
+
'j',
|
|
41
|
+
'k',
|
|
42
|
+
'l',
|
|
43
|
+
'm',
|
|
44
|
+
'n',
|
|
45
|
+
'o',
|
|
46
|
+
'p',
|
|
47
|
+
'q',
|
|
48
|
+
'r',
|
|
49
|
+
's',
|
|
50
|
+
't',
|
|
51
|
+
'u',
|
|
52
|
+
'v',
|
|
53
|
+
'w',
|
|
54
|
+
'x',
|
|
55
|
+
'y',
|
|
56
|
+
'z',
|
|
57
|
+
'0',
|
|
58
|
+
'1',
|
|
59
|
+
'2',
|
|
60
|
+
'3',
|
|
61
|
+
'4',
|
|
62
|
+
'5',
|
|
63
|
+
'6',
|
|
64
|
+
'7',
|
|
65
|
+
'8',
|
|
66
|
+
'9',
|
|
67
|
+
];
|
|
5
68
|
function randomString(length) {
|
|
6
69
|
let chars = '';
|
|
7
70
|
for (let i = 0; i < length; ++i) {
|
|
@@ -11,5 +74,5 @@ function randomString(length) {
|
|
|
11
74
|
}
|
|
12
75
|
exports.randomString = randomString;
|
|
13
76
|
function randomChar() {
|
|
14
|
-
return CHARS[
|
|
77
|
+
return CHARS[~~(Math.random() * CHARS.length)];
|
|
15
78
|
}
|
|
@@ -74,7 +74,7 @@ export declare type ExtractColumnType<DB, TB extends keyof DB, C> = {
|
|
|
74
74
|
* movie: Movie
|
|
75
75
|
* }
|
|
76
76
|
*
|
|
77
|
-
* type Columns =
|
|
77
|
+
* type Columns = AnyColumnWithTable<Database, 'person' | 'pet'>
|
|
78
78
|
*
|
|
79
79
|
* // Columns == 'person.id' | 'pet.name' | 'pet.species'
|
|
80
80
|
* ```
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
/// <reference types="./mysql-adapter.d.ts" />
|
|
2
|
+
import { sql } from '../../raw-builder/sql.js';
|
|
2
3
|
import { DialectAdapterBase } from '../dialect-adapter-base.js';
|
|
3
4
|
const LOCK_ID = 'ea586330-2c93-47c8-908d-981d9d270f9d';
|
|
4
5
|
const LOCK_TIMEOUT_SECONDS = 60 * 60;
|
|
@@ -16,11 +17,9 @@ export class MysqlAdapter extends DialectAdapterBase {
|
|
|
16
17
|
// is released using `release_lock`. This way we know that the lock is either
|
|
17
18
|
// released by us after successfull or failed migrations OR it's released by
|
|
18
19
|
// MySQL if the process gets killed for some reason.
|
|
19
|
-
await db
|
|
20
|
-
.raw(`select get_lock('${LOCK_ID}', ${LOCK_TIMEOUT_SECONDS})`)
|
|
21
|
-
.execute();
|
|
20
|
+
await sql `select get_lock(${sql.literal(LOCK_ID)}, ${sql.literal(LOCK_TIMEOUT_SECONDS)})`.execute(db);
|
|
22
21
|
}
|
|
23
22
|
async releaseMigrationLock(db) {
|
|
24
|
-
await
|
|
23
|
+
await sql `select release_lock(${sql.literal(LOCK_ID)})`.execute(db);
|
|
25
24
|
}
|
|
26
25
|
}
|
|
@@ -202,4 +202,23 @@ export interface MysqlSslOptions {
|
|
|
202
202
|
* You can also connect to a MySQL server without properly providing the appropriate CA to trust. You should not do this.
|
|
203
203
|
*/
|
|
204
204
|
rejectUnauthorized?: boolean;
|
|
205
|
+
charsetNumber?: number;
|
|
206
|
+
compress?: boolean;
|
|
207
|
+
authSwitchHandler?: (data: any, callback: () => void) => any;
|
|
208
|
+
connectAttributes?: {
|
|
209
|
+
[param: string]: any;
|
|
210
|
+
};
|
|
211
|
+
decimalNumbers?: boolean;
|
|
212
|
+
isServer?: boolean;
|
|
213
|
+
maxPreparedStatements?: number;
|
|
214
|
+
namedPlaceholders?: boolean;
|
|
215
|
+
nestTables?: boolean | string;
|
|
216
|
+
passwordSha1?: string;
|
|
217
|
+
pool?: any;
|
|
218
|
+
stream?: any;
|
|
219
|
+
uri?: string;
|
|
220
|
+
Promise?: any;
|
|
221
|
+
authPlugins?: {
|
|
222
|
+
[key: string]: any;
|
|
223
|
+
};
|
|
205
224
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/// <reference types="./mysql-introspector.d.ts" />
|
|
2
2
|
import { MIGRATION_LOCK_TABLE, MIGRATION_TABLE, } from '../../migration/migrator.js';
|
|
3
3
|
import { freeze } from '../../util/object-utils.js';
|
|
4
|
+
import { sql } from '../../raw-builder/sql.js';
|
|
4
5
|
export class MysqlIntrospector {
|
|
5
6
|
#db;
|
|
6
7
|
constructor(db) {
|
|
@@ -10,7 +11,7 @@ export class MysqlIntrospector {
|
|
|
10
11
|
let query = this.#db
|
|
11
12
|
.selectFrom('information_schema.columns')
|
|
12
13
|
.selectAll()
|
|
13
|
-
.where('table_schema', '=',
|
|
14
|
+
.where('table_schema', '=', sql `database()`)
|
|
14
15
|
.castTo();
|
|
15
16
|
if (!options.withInternalKyselyTables) {
|
|
16
17
|
query = query
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/// <reference types="./postgres-adapter.d.ts" />
|
|
2
|
+
import { sql } from '../../raw-builder/sql.js';
|
|
2
3
|
import { DialectAdapterBase } from '../dialect-adapter-base.js';
|
|
3
4
|
// Random id for our transaction lock.
|
|
4
|
-
const LOCK_ID =
|
|
5
|
+
const LOCK_ID = 3853314791062309107n;
|
|
5
6
|
export class PostgresAdapter extends DialectAdapterBase {
|
|
6
7
|
get supportsTransactionalDdl() {
|
|
7
8
|
return true;
|
|
@@ -11,7 +12,7 @@ export class PostgresAdapter extends DialectAdapterBase {
|
|
|
11
12
|
}
|
|
12
13
|
async acquireMigrationLock(db) {
|
|
13
14
|
// Acquire a transaction level advisory lock.
|
|
14
|
-
await
|
|
15
|
+
await sql `select pg_advisory_xact_lock(${sql.literal(LOCK_ID)})`.execute(db);
|
|
15
16
|
}
|
|
16
17
|
async releaseMigrationLock() {
|
|
17
18
|
// Nothing to do here. `pg_advisory_xact_lock` is automatically released at the
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/// <reference types="./sqlite-introspector.d.ts" />
|
|
2
2
|
import { MIGRATION_LOCK_TABLE, MIGRATION_TABLE, } from '../../migration/migrator.js';
|
|
3
|
+
import { sql } from '../../raw-builder/sql.js';
|
|
3
4
|
export class SqliteIntrospector {
|
|
4
5
|
#db;
|
|
5
6
|
constructor(db) {
|
|
@@ -25,7 +26,7 @@ export class SqliteIntrospector {
|
|
|
25
26
|
async #getTableMetadata(table) {
|
|
26
27
|
const db = this.#db;
|
|
27
28
|
const columns = await db
|
|
28
|
-
.selectFrom(
|
|
29
|
+
.selectFrom(sql `PRAGMA_TABLE_INFO(${table})`.as('table_info'))
|
|
29
30
|
.select(['name', 'type', 'notnull'])
|
|
30
31
|
.castTo()
|
|
31
32
|
.execute();
|
|
@@ -4,5 +4,5 @@ export interface ConnectionProvider {
|
|
|
4
4
|
* Provides a connection for the callback and takes care of disposing
|
|
5
5
|
* the connection after the callback has been run.
|
|
6
6
|
*/
|
|
7
|
-
|
|
7
|
+
provideConnection<T>(consumer: (connection: DatabaseConnection) => Promise<T>): Promise<T>;
|
|
8
8
|
}
|
|
@@ -8,5 +8,5 @@ export declare class DefaultConnectionProvider implements ConnectionProvider {
|
|
|
8
8
|
* Provides a connection for the callback and takes care of disposing
|
|
9
9
|
* the connection after the callback has been run.
|
|
10
10
|
*/
|
|
11
|
-
|
|
11
|
+
provideConnection<T>(consumer: (connection: DatabaseConnection) => Promise<T>): Promise<T>;
|
|
12
12
|
}
|
|
@@ -4,10 +4,10 @@ export class DefaultConnectionProvider {
|
|
|
4
4
|
constructor(driver) {
|
|
5
5
|
this.#driver = driver;
|
|
6
6
|
}
|
|
7
|
-
async
|
|
7
|
+
async provideConnection(consumer) {
|
|
8
8
|
const connection = await this.#driver.acquireConnection();
|
|
9
9
|
try {
|
|
10
|
-
return await
|
|
10
|
+
return await consumer(connection);
|
|
11
11
|
}
|
|
12
12
|
finally {
|
|
13
13
|
await this.#driver.releaseConnection(connection);
|
|
@@ -27,6 +27,14 @@ import { Driver } from './driver.js';
|
|
|
27
27
|
* },
|
|
28
28
|
* })
|
|
29
29
|
* ```
|
|
30
|
+
*
|
|
31
|
+
* You can use it to build a query and compile it to SQL but trying to
|
|
32
|
+
* execute the query will throw an error.
|
|
33
|
+
*
|
|
34
|
+
* ```ts
|
|
35
|
+
* const { sql } = db.selectFrom('person').selectAll().compile()
|
|
36
|
+
* console.log(sql) // select * from "person"
|
|
37
|
+
* ```
|
|
30
38
|
*/
|
|
31
39
|
export declare class DummyDriver implements Driver {
|
|
32
40
|
/**
|
|
@@ -26,6 +26,14 @@
|
|
|
26
26
|
* },
|
|
27
27
|
* })
|
|
28
28
|
* ```
|
|
29
|
+
*
|
|
30
|
+
* You can use it to build a query and compile it to SQL but trying to
|
|
31
|
+
* execute the query will throw an error.
|
|
32
|
+
*
|
|
33
|
+
* ```ts
|
|
34
|
+
* const { sql } = db.selectFrom('person').selectAll().compile()
|
|
35
|
+
* console.log(sql) // select * from "person"
|
|
36
|
+
* ```
|
|
29
37
|
*/
|
|
30
38
|
export class DummyDriver {
|
|
31
39
|
async init() {
|
|
@@ -7,5 +7,5 @@ export declare class SingleConnectionProvider implements ConnectionProvider {
|
|
|
7
7
|
* Provides a connection for the callback and takes care of disposing
|
|
8
8
|
* the connection after the callback has been run.
|
|
9
9
|
*/
|
|
10
|
-
|
|
10
|
+
provideConnection<T>(consumer: (connection: DatabaseConnection) => Promise<T>): Promise<T>;
|
|
11
11
|
}
|
|
@@ -5,11 +5,11 @@ export class SingleConnectionProvider {
|
|
|
5
5
|
constructor(connection) {
|
|
6
6
|
this.#connection = connection;
|
|
7
7
|
}
|
|
8
|
-
async
|
|
8
|
+
async provideConnection(consumer) {
|
|
9
9
|
while (this.#runningPromise) {
|
|
10
10
|
await this.#runningPromise;
|
|
11
11
|
}
|
|
12
|
-
const promise = this.#run(
|
|
12
|
+
const promise = this.#run(consumer);
|
|
13
13
|
this.#runningPromise = promise
|
|
14
14
|
.then(() => {
|
|
15
15
|
this.#runningPromise = undefined;
|
|
@@ -17,9 +17,11 @@ export * from './query-builder/delete-result.js';
|
|
|
17
17
|
export * from './query-builder/update-result.js';
|
|
18
18
|
export * from './query-builder/on-conflict-builder.js';
|
|
19
19
|
export * from './raw-builder/raw-builder.js';
|
|
20
|
+
export * from './raw-builder/sql.js';
|
|
20
21
|
export * from './query-executor/query-executor.js';
|
|
21
22
|
export * from './query-executor/default-query-executor.js';
|
|
22
23
|
export * from './query-executor/noop-query-executor.js';
|
|
24
|
+
export * from './query-executor/query-executor-provider.js';
|
|
23
25
|
export * from './query-compiler/default-query-compiler.js';
|
|
24
26
|
export * from './query-compiler/compiled-query.js';
|
|
25
27
|
export * from './schema/schema.js';
|
|
@@ -18,9 +18,11 @@ export * from './query-builder/delete-result.js';
|
|
|
18
18
|
export * from './query-builder/update-result.js';
|
|
19
19
|
export * from './query-builder/on-conflict-builder.js';
|
|
20
20
|
export * from './raw-builder/raw-builder.js';
|
|
21
|
+
export * from './raw-builder/sql.js';
|
|
21
22
|
export * from './query-executor/query-executor.js';
|
|
22
23
|
export * from './query-executor/default-query-executor.js';
|
|
23
24
|
export * from './query-executor/noop-query-executor.js';
|
|
25
|
+
export * from './query-executor/query-executor-provider.js';
|
|
24
26
|
export * from './query-compiler/default-query-compiler.js';
|
|
25
27
|
export * from './query-compiler/compiled-query.js';
|
|
26
28
|
export * from './schema/schema.js';
|
package/dist/esm/kysely.d.ts
CHANGED
|
@@ -6,11 +6,9 @@ import { QueryCreator } from './query-creator.js';
|
|
|
6
6
|
import { KyselyPlugin } from './plugin/kysely-plugin.js';
|
|
7
7
|
import { DatabaseIntrospector } from './dialect/database-introspector.js';
|
|
8
8
|
import { Driver, IsolationLevel } from './driver/driver.js';
|
|
9
|
-
import { ParseContext } from './parser/parse-context.js';
|
|
10
9
|
import { FunctionBuilder } from './query-builder/function-builder.js';
|
|
11
10
|
import { LogConfig } from './util/log.js';
|
|
12
|
-
import {
|
|
13
|
-
import { DialectAdapter } from './dialect/dialect-adapter.js';
|
|
11
|
+
import { QueryExecutorProvider } from './query-executor/query-executor-provider.js';
|
|
14
12
|
/**
|
|
15
13
|
* The main Kysely class.
|
|
16
14
|
*
|
|
@@ -54,7 +52,7 @@ import { DialectAdapter } from './dialect/dialect-adapter.js';
|
|
|
54
52
|
* in the database and values must be interfaces that describe the rows in those
|
|
55
53
|
* tables. See the examples above.
|
|
56
54
|
*/
|
|
57
|
-
export declare class Kysely<DB> extends QueryCreator<DB> {
|
|
55
|
+
export declare class Kysely<DB> extends QueryCreator<DB> implements QueryExecutorProvider {
|
|
58
56
|
#private;
|
|
59
57
|
constructor(args: KyselyConfig);
|
|
60
58
|
constructor(args: KyselyProps);
|
|
@@ -226,7 +224,7 @@ export declare class Kysely<DB> extends QueryCreator<DB> {
|
|
|
226
224
|
* @internal
|
|
227
225
|
* @private
|
|
228
226
|
*/
|
|
229
|
-
|
|
227
|
+
getExecutor(): QueryExecutor;
|
|
230
228
|
}
|
|
231
229
|
export declare class Transaction<DB> extends Kysely<DB> {
|
|
232
230
|
#private;
|
|
@@ -357,7 +355,6 @@ export interface KyselyProps {
|
|
|
357
355
|
readonly driver: Driver;
|
|
358
356
|
readonly executor: QueryExecutor;
|
|
359
357
|
readonly dialect: Dialect;
|
|
360
|
-
readonly parseContext: ParseContext;
|
|
361
358
|
}
|
|
362
359
|
export declare function isKyselyProps(obj: unknown): obj is KyselyProps;
|
|
363
360
|
export interface KyselyConfig {
|