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
|
*/
|
|
@@ -65,10 +65,12 @@ export class CreateIndexBuilder {
|
|
|
65
65
|
* ### Examples
|
|
66
66
|
*
|
|
67
67
|
* ```ts
|
|
68
|
+
* import { sql } from 'kysely'
|
|
69
|
+
*
|
|
68
70
|
* await db.schema
|
|
69
71
|
* .createIndex('person_first_name_index')
|
|
70
72
|
* .on('person')
|
|
71
|
-
* .expression(
|
|
73
|
+
* .expression(sql`first_name COLLATE "fi_FI"`)
|
|
72
74
|
* .execute()
|
|
73
75
|
* ```
|
|
74
76
|
*/
|
|
@@ -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(
|
|
@@ -66,13 +66,15 @@ export class CreateTableBuilder {
|
|
|
66
66
|
* ### Examples
|
|
67
67
|
*
|
|
68
68
|
* ```ts
|
|
69
|
+
* import { sql } from 'kysely'
|
|
70
|
+
*
|
|
69
71
|
* await db.schema
|
|
70
72
|
* .createTable('person')
|
|
71
73
|
* .addColumn('id', 'integer', (col) => col.autoIncrement().primaryKey()),
|
|
72
74
|
* .addColumn('first_name', 'varchar(50)', (col) => col.notNull())
|
|
73
75
|
* .addColumn('last_name', 'varchar(255)')
|
|
74
76
|
* .addColumn('bank_balance', 'numeric(8, 2)')
|
|
75
|
-
* .addColumn('data',
|
|
77
|
+
* .addColumn('data', sql`customtype`)
|
|
76
78
|
* .addColumn('parent_id', 'integer', (col) =>
|
|
77
79
|
* col.references('person.id').onDelete('cascade'))
|
|
78
80
|
* )
|
|
@@ -154,7 +156,9 @@ export class CreateTableBuilder {
|
|
|
154
156
|
* ### Examples
|
|
155
157
|
*
|
|
156
158
|
* ```ts
|
|
157
|
-
*
|
|
159
|
+
* import { sql } from 'kysely'
|
|
160
|
+
*
|
|
161
|
+
* addCheckConstraint('check_legs', sql`number_of_legs < 5`)
|
|
158
162
|
* ```
|
|
159
163
|
*/
|
|
160
164
|
addCheckConstraint(constraintName, checkExpression) {
|
|
@@ -180,7 +184,7 @@ export class CreateTableBuilder {
|
|
|
180
184
|
* )
|
|
181
185
|
* ```
|
|
182
186
|
*
|
|
183
|
-
* Add
|
|
187
|
+
* Add constraint for multiple columns:
|
|
184
188
|
*
|
|
185
189
|
* ```ts
|
|
186
190
|
* 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;
|
|
@@ -62,9 +62,9 @@ export class CreateViewBuilder {
|
|
|
62
62
|
*
|
|
63
63
|
* WARNING!
|
|
64
64
|
* Some dialects don't support parameterized queries in DDL statements and therefore
|
|
65
|
-
* the query or
|
|
66
|
-
* opening an SQL injection vulnerability. DO NOT pass unchecked user input
|
|
67
|
-
* the query or
|
|
65
|
+
* the query or raw {@link sql } expression passed here is interpolated into a single
|
|
66
|
+
* string opening an SQL injection vulnerability. DO NOT pass unchecked user input
|
|
67
|
+
* into the query or raw expression passed to this method!
|
|
68
68
|
*/
|
|
69
69
|
as(query) {
|
|
70
70
|
const queryNode = query
|
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
/// <reference types="./query-id.d.ts" />
|
|
2
|
-
import { freeze } from './object-utils.js';
|
|
3
2
|
import { randomString } from './random-string.js';
|
|
4
3
|
export function createQueryId() {
|
|
5
|
-
return
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
return new LazyQueryId();
|
|
5
|
+
}
|
|
6
|
+
class LazyQueryId {
|
|
7
|
+
#queryId;
|
|
8
|
+
get queryId() {
|
|
9
|
+
if (this.#queryId === undefined) {
|
|
10
|
+
this.#queryId = randomString(8);
|
|
11
|
+
}
|
|
12
|
+
return this.#queryId;
|
|
13
|
+
}
|
|
8
14
|
}
|
|
@@ -1,5 +1,68 @@
|
|
|
1
1
|
/// <reference types="./random-string.d.ts" />
|
|
2
|
-
const CHARS =
|
|
2
|
+
const CHARS = [
|
|
3
|
+
'A',
|
|
4
|
+
'B',
|
|
5
|
+
'C',
|
|
6
|
+
'D',
|
|
7
|
+
'E',
|
|
8
|
+
'F',
|
|
9
|
+
'G',
|
|
10
|
+
'H',
|
|
11
|
+
'I',
|
|
12
|
+
'J',
|
|
13
|
+
'K',
|
|
14
|
+
'L',
|
|
15
|
+
'M',
|
|
16
|
+
'N',
|
|
17
|
+
'O',
|
|
18
|
+
'P',
|
|
19
|
+
'Q',
|
|
20
|
+
'R',
|
|
21
|
+
'S',
|
|
22
|
+
'T',
|
|
23
|
+
'U',
|
|
24
|
+
'V',
|
|
25
|
+
'W',
|
|
26
|
+
'X',
|
|
27
|
+
'Y',
|
|
28
|
+
'Z',
|
|
29
|
+
'a',
|
|
30
|
+
'b',
|
|
31
|
+
'c',
|
|
32
|
+
'd',
|
|
33
|
+
'e',
|
|
34
|
+
'f',
|
|
35
|
+
'g',
|
|
36
|
+
'h',
|
|
37
|
+
'i',
|
|
38
|
+
'j',
|
|
39
|
+
'k',
|
|
40
|
+
'l',
|
|
41
|
+
'm',
|
|
42
|
+
'n',
|
|
43
|
+
'o',
|
|
44
|
+
'p',
|
|
45
|
+
'q',
|
|
46
|
+
'r',
|
|
47
|
+
's',
|
|
48
|
+
't',
|
|
49
|
+
'u',
|
|
50
|
+
'v',
|
|
51
|
+
'w',
|
|
52
|
+
'x',
|
|
53
|
+
'y',
|
|
54
|
+
'z',
|
|
55
|
+
'0',
|
|
56
|
+
'1',
|
|
57
|
+
'2',
|
|
58
|
+
'3',
|
|
59
|
+
'4',
|
|
60
|
+
'5',
|
|
61
|
+
'6',
|
|
62
|
+
'7',
|
|
63
|
+
'8',
|
|
64
|
+
'9',
|
|
65
|
+
];
|
|
3
66
|
export function randomString(length) {
|
|
4
67
|
let chars = '';
|
|
5
68
|
for (let i = 0; i < length; ++i) {
|
|
@@ -8,5 +71,5 @@ export function randomString(length) {
|
|
|
8
71
|
return chars;
|
|
9
72
|
}
|
|
10
73
|
function randomChar() {
|
|
11
|
-
return CHARS[
|
|
74
|
+
return CHARS[~~(Math.random() * CHARS.length)];
|
|
12
75
|
}
|
|
@@ -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
|
* ```
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "kysely",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.17.2",
|
|
4
4
|
"description": "Type safe SQL query builder",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -47,22 +47,22 @@
|
|
|
47
47
|
"@types/node": "^16.11.9"
|
|
48
48
|
},
|
|
49
49
|
"devDependencies": {
|
|
50
|
-
"@types/better-sqlite3": "^7.
|
|
50
|
+
"@types/better-sqlite3": "^7.5.0",
|
|
51
51
|
"@types/chai": "^4.3.0",
|
|
52
52
|
"@types/chai-subset": "^1.3.3",
|
|
53
|
-
"@types/mocha": "^9.
|
|
54
|
-
"@types/pg": "^8.6.
|
|
55
|
-
"better-sqlite3": "^7.
|
|
56
|
-
"chai": "^4.3.
|
|
53
|
+
"@types/mocha": "^9.1.0",
|
|
54
|
+
"@types/pg": "^8.6.5",
|
|
55
|
+
"better-sqlite3": "^7.5.0",
|
|
56
|
+
"chai": "^4.3.6",
|
|
57
57
|
"chai-subset": "^1.6.0",
|
|
58
|
-
"esbuild": "^0.14.
|
|
59
|
-
"mocha": "^9.
|
|
58
|
+
"esbuild": "^0.14.27",
|
|
59
|
+
"mocha": "^9.2.2",
|
|
60
60
|
"mysql2": "^2.3.3",
|
|
61
|
-
"pg": "^8.7.
|
|
62
|
-
"playwright": "^1.
|
|
63
|
-
"prettier": "^2.
|
|
64
|
-
"tsd": "^0.19.
|
|
65
|
-
"typedoc": "^0.22.
|
|
66
|
-
"typescript": "4.
|
|
61
|
+
"pg": "^8.7.3",
|
|
62
|
+
"playwright": "^1.20.0",
|
|
63
|
+
"prettier": "^2.6.0",
|
|
64
|
+
"tsd": "^0.19.1",
|
|
65
|
+
"typedoc": "^0.22.13",
|
|
66
|
+
"typescript": "4.6.2"
|
|
67
67
|
}
|
|
68
68
|
}
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { DialectAdapter } from '../dialect/dialect-adapter.js';
|
|
2
|
-
import { JoinType } from '../operation-node/join-node.js';
|
|
3
|
-
import { JoinBuilder } from '../query-builder/join-builder.js';
|
|
4
|
-
import { SelectQueryBuilder } from '../query-builder/select-query-builder.js';
|
|
5
|
-
import { ExpressionBuilder } from '../query-builder/expression-builder.js';
|
|
6
|
-
import { QueryCreator } from '../query-creator.js';
|
|
7
|
-
import { TableExpression } from './table-parser.js';
|
|
8
|
-
/**
|
|
9
|
-
* This interface exposes everything the parsers need to be able to parse
|
|
10
|
-
* method calls into {@link OperationNode} trees.
|
|
11
|
-
*/
|
|
12
|
-
export interface ParseContext {
|
|
13
|
-
readonly adapter: DialectAdapter;
|
|
14
|
-
/**
|
|
15
|
-
* Creates a select query builder with a {@link NoopQueryExecutor}.
|
|
16
|
-
*/
|
|
17
|
-
createSelectQueryBuilder(): SelectQueryBuilder<any, any, any>;
|
|
18
|
-
/**
|
|
19
|
-
* Creates an expression builder for building stuff like subqueries.
|
|
20
|
-
* {@link NoopQueryExecutor} is used as the executor and the queries
|
|
21
|
-
* built using the returned builder can never be executed.
|
|
22
|
-
*/
|
|
23
|
-
createExpressionBuilder(): ExpressionBuilder<any, any>;
|
|
24
|
-
/**
|
|
25
|
-
* Creates a query creator with a {@link NoopQueryExecutor}.
|
|
26
|
-
*/
|
|
27
|
-
createQueryCreator(): QueryCreator<any>;
|
|
28
|
-
/**
|
|
29
|
-
* Creates an instance of a join builder.
|
|
30
|
-
*/
|
|
31
|
-
createJoinBuilder(joinType: JoinType, table: TableExpression<any, any>): JoinBuilder<any, any>;
|
|
32
|
-
}
|
|
33
|
-
export declare class DefaultParseContext implements ParseContext {
|
|
34
|
-
#private;
|
|
35
|
-
constructor(adapter: DialectAdapter);
|
|
36
|
-
get adapter(): DialectAdapter;
|
|
37
|
-
/**
|
|
38
|
-
* Creates a select query builder with a {@link NoopQueryExecutor}.
|
|
39
|
-
*/
|
|
40
|
-
createSelectQueryBuilder(): SelectQueryBuilder<any, any, any>;
|
|
41
|
-
/**
|
|
42
|
-
* Creates an expression builder for building stuff like subqueries.
|
|
43
|
-
* {@link NoopQueryExecutor} is used as the executor and the queries
|
|
44
|
-
* built using the returned builder can never be executed.
|
|
45
|
-
*/
|
|
46
|
-
createExpressionBuilder(): ExpressionBuilder<any, any>;
|
|
47
|
-
/**
|
|
48
|
-
* Creates a query creator with a {@link NoopQueryExecutor}.
|
|
49
|
-
*/
|
|
50
|
-
createQueryCreator(): QueryCreator<any>;
|
|
51
|
-
/**
|
|
52
|
-
* Creates an instance of a join builder.
|
|
53
|
-
*/
|
|
54
|
-
createJoinBuilder(joinType: JoinType, table: TableExpression<any, any>): JoinBuilder<any, any>;
|
|
55
|
-
}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DefaultParseContext = void 0;
|
|
4
|
-
const join_node_js_1 = require("../operation-node/join-node.js");
|
|
5
|
-
const select_query_node_js_1 = require("../operation-node/select-query-node.js");
|
|
6
|
-
const join_builder_js_1 = require("../query-builder/join-builder.js");
|
|
7
|
-
const select_query_builder_js_1 = require("../query-builder/select-query-builder.js");
|
|
8
|
-
const expression_builder_js_1 = require("../query-builder/expression-builder.js");
|
|
9
|
-
const query_creator_js_1 = require("../query-creator.js");
|
|
10
|
-
const noop_query_executor_js_1 = require("../query-executor/noop-query-executor.js");
|
|
11
|
-
const query_id_js_1 = require("../util/query-id.js");
|
|
12
|
-
const table_parser_js_1 = require("./table-parser.js");
|
|
13
|
-
class DefaultParseContext {
|
|
14
|
-
#adapter;
|
|
15
|
-
#noopExecutor;
|
|
16
|
-
constructor(adapter) {
|
|
17
|
-
this.#adapter = adapter;
|
|
18
|
-
this.#noopExecutor = new noop_query_executor_js_1.NoopQueryExecutor();
|
|
19
|
-
}
|
|
20
|
-
get adapter() {
|
|
21
|
-
return this.#adapter;
|
|
22
|
-
}
|
|
23
|
-
createSelectQueryBuilder() {
|
|
24
|
-
return new select_query_builder_js_1.SelectQueryBuilder({
|
|
25
|
-
queryId: (0, query_id_js_1.createQueryId)(),
|
|
26
|
-
executor: this.#noopExecutor,
|
|
27
|
-
parseContext: this,
|
|
28
|
-
queryNode: select_query_node_js_1.SelectQueryNode.create((0, table_parser_js_1.parseTableExpressionOrList)(this, [])),
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
|
-
createExpressionBuilder() {
|
|
32
|
-
return new expression_builder_js_1.ExpressionBuilder({
|
|
33
|
-
executor: this.#noopExecutor,
|
|
34
|
-
parseContext: this,
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
createQueryCreator() {
|
|
38
|
-
return new query_creator_js_1.QueryCreator({
|
|
39
|
-
executor: this.#noopExecutor,
|
|
40
|
-
parseContext: this,
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
createJoinBuilder(joinType, table) {
|
|
44
|
-
return new join_builder_js_1.JoinBuilder({
|
|
45
|
-
joinNode: join_node_js_1.JoinNode.create(joinType, (0, table_parser_js_1.parseTableExpression)(this, table)),
|
|
46
|
-
parseContext: this,
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
exports.DefaultParseContext = DefaultParseContext;
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { DialectAdapter } from '../dialect/dialect-adapter.js';
|
|
2
|
-
import { JoinType } from '../operation-node/join-node.js';
|
|
3
|
-
import { JoinBuilder } from '../query-builder/join-builder.js';
|
|
4
|
-
import { SelectQueryBuilder } from '../query-builder/select-query-builder.js';
|
|
5
|
-
import { ExpressionBuilder } from '../query-builder/expression-builder.js';
|
|
6
|
-
import { QueryCreator } from '../query-creator.js';
|
|
7
|
-
import { TableExpression } from './table-parser.js';
|
|
8
|
-
/**
|
|
9
|
-
* This interface exposes everything the parsers need to be able to parse
|
|
10
|
-
* method calls into {@link OperationNode} trees.
|
|
11
|
-
*/
|
|
12
|
-
export interface ParseContext {
|
|
13
|
-
readonly adapter: DialectAdapter;
|
|
14
|
-
/**
|
|
15
|
-
* Creates a select query builder with a {@link NoopQueryExecutor}.
|
|
16
|
-
*/
|
|
17
|
-
createSelectQueryBuilder(): SelectQueryBuilder<any, any, any>;
|
|
18
|
-
/**
|
|
19
|
-
* Creates an expression builder for building stuff like subqueries.
|
|
20
|
-
* {@link NoopQueryExecutor} is used as the executor and the queries
|
|
21
|
-
* built using the returned builder can never be executed.
|
|
22
|
-
*/
|
|
23
|
-
createExpressionBuilder(): ExpressionBuilder<any, any>;
|
|
24
|
-
/**
|
|
25
|
-
* Creates a query creator with a {@link NoopQueryExecutor}.
|
|
26
|
-
*/
|
|
27
|
-
createQueryCreator(): QueryCreator<any>;
|
|
28
|
-
/**
|
|
29
|
-
* Creates an instance of a join builder.
|
|
30
|
-
*/
|
|
31
|
-
createJoinBuilder(joinType: JoinType, table: TableExpression<any, any>): JoinBuilder<any, any>;
|
|
32
|
-
}
|
|
33
|
-
export declare class DefaultParseContext implements ParseContext {
|
|
34
|
-
#private;
|
|
35
|
-
constructor(adapter: DialectAdapter);
|
|
36
|
-
get adapter(): DialectAdapter;
|
|
37
|
-
/**
|
|
38
|
-
* Creates a select query builder with a {@link NoopQueryExecutor}.
|
|
39
|
-
*/
|
|
40
|
-
createSelectQueryBuilder(): SelectQueryBuilder<any, any, any>;
|
|
41
|
-
/**
|
|
42
|
-
* Creates an expression builder for building stuff like subqueries.
|
|
43
|
-
* {@link NoopQueryExecutor} is used as the executor and the queries
|
|
44
|
-
* built using the returned builder can never be executed.
|
|
45
|
-
*/
|
|
46
|
-
createExpressionBuilder(): ExpressionBuilder<any, any>;
|
|
47
|
-
/**
|
|
48
|
-
* Creates a query creator with a {@link NoopQueryExecutor}.
|
|
49
|
-
*/
|
|
50
|
-
createQueryCreator(): QueryCreator<any>;
|
|
51
|
-
/**
|
|
52
|
-
* Creates an instance of a join builder.
|
|
53
|
-
*/
|
|
54
|
-
createJoinBuilder(joinType: JoinType, table: TableExpression<any, any>): JoinBuilder<any, any>;
|
|
55
|
-
}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
/// <reference types="./parse-context.d.ts" />
|
|
2
|
-
import { JoinNode } from '../operation-node/join-node.js';
|
|
3
|
-
import { SelectQueryNode } from '../operation-node/select-query-node.js';
|
|
4
|
-
import { JoinBuilder } from '../query-builder/join-builder.js';
|
|
5
|
-
import { SelectQueryBuilder } from '../query-builder/select-query-builder.js';
|
|
6
|
-
import { ExpressionBuilder } from '../query-builder/expression-builder.js';
|
|
7
|
-
import { QueryCreator } from '../query-creator.js';
|
|
8
|
-
import { NoopQueryExecutor } from '../query-executor/noop-query-executor.js';
|
|
9
|
-
import { createQueryId } from '../util/query-id.js';
|
|
10
|
-
import { parseTableExpression, parseTableExpressionOrList, } from './table-parser.js';
|
|
11
|
-
export class DefaultParseContext {
|
|
12
|
-
#adapter;
|
|
13
|
-
#noopExecutor;
|
|
14
|
-
constructor(adapter) {
|
|
15
|
-
this.#adapter = adapter;
|
|
16
|
-
this.#noopExecutor = new NoopQueryExecutor();
|
|
17
|
-
}
|
|
18
|
-
get adapter() {
|
|
19
|
-
return this.#adapter;
|
|
20
|
-
}
|
|
21
|
-
createSelectQueryBuilder() {
|
|
22
|
-
return new SelectQueryBuilder({
|
|
23
|
-
queryId: createQueryId(),
|
|
24
|
-
executor: this.#noopExecutor,
|
|
25
|
-
parseContext: this,
|
|
26
|
-
queryNode: SelectQueryNode.create(parseTableExpressionOrList(this, [])),
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
createExpressionBuilder() {
|
|
30
|
-
return new ExpressionBuilder({
|
|
31
|
-
executor: this.#noopExecutor,
|
|
32
|
-
parseContext: this,
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
createQueryCreator() {
|
|
36
|
-
return new QueryCreator({
|
|
37
|
-
executor: this.#noopExecutor,
|
|
38
|
-
parseContext: this,
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
createJoinBuilder(joinType, table) {
|
|
42
|
-
return new JoinBuilder({
|
|
43
|
-
joinNode: JoinNode.create(joinType, parseTableExpression(this, table)),
|
|
44
|
-
parseContext: this,
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
}
|