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
|
@@ -10,7 +10,6 @@ import { AnyRawBuilder, MergePartial, SingleResultType } from '../util/type-util
|
|
|
10
10
|
import { Compilable } from '../util/compilable.js';
|
|
11
11
|
import { QueryExecutor } from '../query-executor/query-executor.js';
|
|
12
12
|
import { QueryId } from '../util/query-id.js';
|
|
13
|
-
import { ParseContext } from '../parser/parse-context.js';
|
|
14
13
|
import { KyselyPlugin } from '../plugin/kysely-plugin.js';
|
|
15
14
|
import { WhereInterface } from './where-interface.js';
|
|
16
15
|
import { JoinInterface } from './join-interface.js';
|
|
@@ -47,7 +46,13 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
47
46
|
* ```
|
|
48
47
|
*
|
|
49
48
|
* Operator can be any supported operator or if the typings don't support it
|
|
50
|
-
* you can always use
|
|
49
|
+
* you can always use
|
|
50
|
+
*
|
|
51
|
+
* ```ts
|
|
52
|
+
* sql`your operator`
|
|
53
|
+
* ```
|
|
54
|
+
*
|
|
55
|
+
* The next example uses the `>` operator:
|
|
51
56
|
*
|
|
52
57
|
* ```ts
|
|
53
58
|
* const persons = await db
|
|
@@ -63,8 +68,8 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
63
68
|
* select * from "person" where "id" > $1
|
|
64
69
|
* ```
|
|
65
70
|
*
|
|
66
|
-
*
|
|
67
|
-
* conditional
|
|
71
|
+
* `where` methods don't change the type of the query. You can add
|
|
72
|
+
* conditional statements easily by doing something like this:
|
|
68
73
|
*
|
|
69
74
|
* ```ts
|
|
70
75
|
* let query = db
|
|
@@ -72,6 +77,8 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
72
77
|
* .selectAll()
|
|
73
78
|
*
|
|
74
79
|
* if (firstName) {
|
|
80
|
+
* // The query builder is immutable. Remember to reassign
|
|
81
|
+
* // the result back to the query variable.
|
|
75
82
|
* query = query.where('first_name', '=', firstName)
|
|
76
83
|
* }
|
|
77
84
|
*
|
|
@@ -79,8 +86,7 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
79
86
|
* ```
|
|
80
87
|
*
|
|
81
88
|
* This is true for basically all methods execpt the `select` and
|
|
82
|
-
* `returning
|
|
83
|
-
* query.
|
|
89
|
+
* `returning`, that __do__ change the return type of the query.
|
|
84
90
|
*
|
|
85
91
|
* Both the first and third argument can also be subqueries.
|
|
86
92
|
* A subquery is defined by passing a function and calling
|
|
@@ -117,7 +123,7 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
117
123
|
*
|
|
118
124
|
* A `where in` query can be built by using the `in` operator and an array
|
|
119
125
|
* of values. The values in the array can also be subqueries or raw
|
|
120
|
-
*
|
|
126
|
+
* {@link sql} expressions.
|
|
121
127
|
*
|
|
122
128
|
* ```ts
|
|
123
129
|
* const persons = await db
|
|
@@ -133,15 +139,17 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
133
139
|
* select * from "person" where "id" in ($1, $2, $3)
|
|
134
140
|
* ```
|
|
135
141
|
*
|
|
136
|
-
* If everything else fails, you can always
|
|
142
|
+
* If everything else fails, you can always use the {@link sql} tag
|
|
137
143
|
* as any of the arguments, including the operator:
|
|
138
144
|
*
|
|
139
145
|
* ```ts
|
|
146
|
+
* import { sql } from 'kysely'
|
|
147
|
+
*
|
|
140
148
|
* const persons = await db
|
|
141
149
|
* .selectFrom('person')
|
|
142
150
|
* .selectAll()
|
|
143
151
|
* .where(
|
|
144
|
-
*
|
|
152
|
+
* sql`coalesce(first_name, last_name)`,
|
|
145
153
|
* 'like',
|
|
146
154
|
* '%' + name + '%',
|
|
147
155
|
* )
|
|
@@ -176,24 +184,25 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
176
184
|
* ```
|
|
177
185
|
*
|
|
178
186
|
* In all examples above the columns were known at compile time
|
|
179
|
-
* (except for the
|
|
180
|
-
* you to refer to columns that exist in the database **and**
|
|
181
|
-
* referred to in the current query and context.
|
|
187
|
+
* (except for the raw {@link sql} expressions). By default kysely only
|
|
188
|
+
* allows you to refer to columns that exist in the database **and**
|
|
189
|
+
* can be referred to in the current query and context.
|
|
182
190
|
*
|
|
183
191
|
* Sometimes you may want to refer to columns that come from the user
|
|
184
192
|
* input and thus are not available at compile time.
|
|
185
193
|
*
|
|
186
|
-
* You have two options,
|
|
194
|
+
* You have two options, the {@link sql} tag or `db.dynamic`. The example below
|
|
187
195
|
* uses both:
|
|
188
196
|
*
|
|
189
197
|
* ```ts
|
|
198
|
+
* import { sql } from 'kysely'
|
|
190
199
|
* const { ref } = db.dynamic
|
|
191
200
|
*
|
|
192
201
|
* const persons = await db
|
|
193
202
|
* .selectFrom('person')
|
|
194
203
|
* .selectAll()
|
|
195
204
|
* .where(ref(columnFromUserInput), '=', 1)
|
|
196
|
-
* .orWhere(
|
|
205
|
+
* .orWhere(sql.id(columnFromUserInput), '=', 2)
|
|
197
206
|
* .execute()
|
|
198
207
|
* ```
|
|
199
208
|
*/
|
|
@@ -327,13 +336,14 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
327
336
|
/**
|
|
328
337
|
* Adds a `where exists` clause to the query.
|
|
329
338
|
*
|
|
330
|
-
* You can either use a subquery or a raw
|
|
339
|
+
* You can either use a subquery or a raw {@link sql} snippet.
|
|
331
340
|
*
|
|
332
341
|
* ### Examples
|
|
333
342
|
*
|
|
334
343
|
* The query below selets all persons that own a pet named Catto:
|
|
335
344
|
*
|
|
336
345
|
* ```ts
|
|
346
|
+
* const petName = 'Catto'
|
|
337
347
|
* const persons = await db
|
|
338
348
|
* .selectFrom('person')
|
|
339
349
|
* .selectAll()
|
|
@@ -341,7 +351,7 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
341
351
|
* .selectFrom('pet')
|
|
342
352
|
* .select('pet.id')
|
|
343
353
|
* .whereRef('person.id', '=', 'pet.owner_id')
|
|
344
|
-
* .where('pet.name', '=',
|
|
354
|
+
* .where('pet.name', '=', petName)
|
|
345
355
|
* )
|
|
346
356
|
* .execute()
|
|
347
357
|
* ```
|
|
@@ -358,16 +368,16 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
358
368
|
* )
|
|
359
369
|
* ```
|
|
360
370
|
*
|
|
361
|
-
* The same query as in the previous example but with using raw:
|
|
371
|
+
* The same query as in the previous example but with using raw {@link sql}:
|
|
362
372
|
*
|
|
363
373
|
* ```ts
|
|
374
|
+
* import { sql } from 'kysely'
|
|
375
|
+
*
|
|
376
|
+
* const petName = 'Catto'
|
|
364
377
|
* db.selectFrom('person')
|
|
365
378
|
* .selectAll()
|
|
366
379
|
* .whereExists(
|
|
367
|
-
*
|
|
368
|
-
* '(select pet.id from pet where person.id = pet.owner_id and pet.name = ?)',
|
|
369
|
-
* ['Catto']
|
|
370
|
-
* )
|
|
380
|
+
* sql`(select pet.id from pet where person.id = pet.owner_id and pet.name = ${petName})`
|
|
371
381
|
* )
|
|
372
382
|
* ```
|
|
373
383
|
*
|
|
@@ -565,6 +575,8 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
565
575
|
* Return arbitrary expressions:
|
|
566
576
|
*
|
|
567
577
|
* ```ts
|
|
578
|
+
* import { sql } from 'kysely'
|
|
579
|
+
*
|
|
568
580
|
* const { id, full_name, first_pet_id } = await db
|
|
569
581
|
* .insertInto('person')
|
|
570
582
|
* .values({
|
|
@@ -573,7 +585,7 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
573
585
|
* })
|
|
574
586
|
* .returning([
|
|
575
587
|
* 'id as id',
|
|
576
|
-
*
|
|
588
|
+
* sql<string>`concat(first_name, ' ', last_name)`.as('full_name'),
|
|
577
589
|
* (qb) => qb.selectFrom('pets').select('pet.id').limit(1).as('first_pet_id')
|
|
578
590
|
* ])
|
|
579
591
|
* .executeTakeFirst()
|
|
@@ -736,5 +748,4 @@ export interface DeleteQueryBuilderProps {
|
|
|
736
748
|
readonly queryId: QueryId;
|
|
737
749
|
readonly queryNode: DeleteQueryNode;
|
|
738
750
|
readonly executor: QueryExecutor;
|
|
739
|
-
readonly parseContext: ParseContext;
|
|
740
751
|
}
|
|
@@ -20,79 +20,79 @@ class DeleteQueryBuilder {
|
|
|
20
20
|
where(...args) {
|
|
21
21
|
return new DeleteQueryBuilder({
|
|
22
22
|
...this.#props,
|
|
23
|
-
queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, (0, filter_parser_js_1.parseWhereFilter)(
|
|
23
|
+
queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, (0, filter_parser_js_1.parseWhereFilter)(args)),
|
|
24
24
|
});
|
|
25
25
|
}
|
|
26
26
|
whereRef(lhs, op, rhs) {
|
|
27
27
|
return new DeleteQueryBuilder({
|
|
28
28
|
...this.#props,
|
|
29
|
-
queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, (0, filter_parser_js_1.parseReferenceFilter)(
|
|
29
|
+
queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, (0, filter_parser_js_1.parseReferenceFilter)(lhs, op, rhs)),
|
|
30
30
|
});
|
|
31
31
|
}
|
|
32
32
|
orWhere(...args) {
|
|
33
33
|
return new DeleteQueryBuilder({
|
|
34
34
|
...this.#props,
|
|
35
|
-
queryNode: query_node_js_1.QueryNode.cloneWithOrWhere(this.#props.queryNode, (0, filter_parser_js_1.parseWhereFilter)(
|
|
35
|
+
queryNode: query_node_js_1.QueryNode.cloneWithOrWhere(this.#props.queryNode, (0, filter_parser_js_1.parseWhereFilter)(args)),
|
|
36
36
|
});
|
|
37
37
|
}
|
|
38
38
|
orWhereRef(lhs, op, rhs) {
|
|
39
39
|
return new DeleteQueryBuilder({
|
|
40
40
|
...this.#props,
|
|
41
|
-
queryNode: query_node_js_1.QueryNode.cloneWithOrWhere(this.#props.queryNode, (0, filter_parser_js_1.parseReferenceFilter)(
|
|
41
|
+
queryNode: query_node_js_1.QueryNode.cloneWithOrWhere(this.#props.queryNode, (0, filter_parser_js_1.parseReferenceFilter)(lhs, op, rhs)),
|
|
42
42
|
});
|
|
43
43
|
}
|
|
44
44
|
whereExists(arg) {
|
|
45
45
|
return new DeleteQueryBuilder({
|
|
46
46
|
...this.#props,
|
|
47
|
-
queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, (0, filter_parser_js_1.parseExistFilter)(
|
|
47
|
+
queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, (0, filter_parser_js_1.parseExistFilter)(arg)),
|
|
48
48
|
});
|
|
49
49
|
}
|
|
50
50
|
whereNotExists(arg) {
|
|
51
51
|
return new DeleteQueryBuilder({
|
|
52
52
|
...this.#props,
|
|
53
|
-
queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, (0, filter_parser_js_1.parseNotExistFilter)(
|
|
53
|
+
queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, (0, filter_parser_js_1.parseNotExistFilter)(arg)),
|
|
54
54
|
});
|
|
55
55
|
}
|
|
56
56
|
orWhereExists(arg) {
|
|
57
57
|
return new DeleteQueryBuilder({
|
|
58
58
|
...this.#props,
|
|
59
|
-
queryNode: query_node_js_1.QueryNode.cloneWithOrWhere(this.#props.queryNode, (0, filter_parser_js_1.parseExistFilter)(
|
|
59
|
+
queryNode: query_node_js_1.QueryNode.cloneWithOrWhere(this.#props.queryNode, (0, filter_parser_js_1.parseExistFilter)(arg)),
|
|
60
60
|
});
|
|
61
61
|
}
|
|
62
62
|
orWhereNotExists(arg) {
|
|
63
63
|
return new DeleteQueryBuilder({
|
|
64
64
|
...this.#props,
|
|
65
|
-
queryNode: query_node_js_1.QueryNode.cloneWithOrWhere(this.#props.queryNode, (0, filter_parser_js_1.parseNotExistFilter)(
|
|
65
|
+
queryNode: query_node_js_1.QueryNode.cloneWithOrWhere(this.#props.queryNode, (0, filter_parser_js_1.parseNotExistFilter)(arg)),
|
|
66
66
|
});
|
|
67
67
|
}
|
|
68
68
|
innerJoin(...args) {
|
|
69
69
|
return new DeleteQueryBuilder({
|
|
70
70
|
...this.#props,
|
|
71
|
-
queryNode: query_node_js_1.QueryNode.cloneWithJoin(this.#props.queryNode, (0, join_parser_js_1.parseJoin)(
|
|
71
|
+
queryNode: query_node_js_1.QueryNode.cloneWithJoin(this.#props.queryNode, (0, join_parser_js_1.parseJoin)('InnerJoin', args)),
|
|
72
72
|
});
|
|
73
73
|
}
|
|
74
74
|
leftJoin(...args) {
|
|
75
75
|
return new DeleteQueryBuilder({
|
|
76
76
|
...this.#props,
|
|
77
|
-
queryNode: query_node_js_1.QueryNode.cloneWithJoin(this.#props.queryNode, (0, join_parser_js_1.parseJoin)(
|
|
77
|
+
queryNode: query_node_js_1.QueryNode.cloneWithJoin(this.#props.queryNode, (0, join_parser_js_1.parseJoin)('LeftJoin', args)),
|
|
78
78
|
});
|
|
79
79
|
}
|
|
80
80
|
rightJoin(...args) {
|
|
81
81
|
return new DeleteQueryBuilder({
|
|
82
82
|
...this.#props,
|
|
83
|
-
queryNode: query_node_js_1.QueryNode.cloneWithJoin(this.#props.queryNode, (0, join_parser_js_1.parseJoin)(
|
|
83
|
+
queryNode: query_node_js_1.QueryNode.cloneWithJoin(this.#props.queryNode, (0, join_parser_js_1.parseJoin)('RightJoin', args)),
|
|
84
84
|
});
|
|
85
85
|
}
|
|
86
86
|
fullJoin(...args) {
|
|
87
87
|
return new DeleteQueryBuilder({
|
|
88
88
|
...this.#props,
|
|
89
|
-
queryNode: query_node_js_1.QueryNode.cloneWithJoin(this.#props.queryNode, (0, join_parser_js_1.parseJoin)(
|
|
89
|
+
queryNode: query_node_js_1.QueryNode.cloneWithJoin(this.#props.queryNode, (0, join_parser_js_1.parseJoin)('FullJoin', args)),
|
|
90
90
|
});
|
|
91
91
|
}
|
|
92
92
|
returning(selection) {
|
|
93
93
|
return new DeleteQueryBuilder({
|
|
94
94
|
...this.#props,
|
|
95
|
-
queryNode: query_node_js_1.QueryNode.cloneWithReturning(this.#props.queryNode, (0, select_parser_js_1.parseSelectExpressionOrList)(
|
|
95
|
+
queryNode: query_node_js_1.QueryNode.cloneWithReturning(this.#props.queryNode, (0, select_parser_js_1.parseSelectExpressionOrList)(selection)),
|
|
96
96
|
});
|
|
97
97
|
}
|
|
98
98
|
returningAll() {
|
|
@@ -138,7 +138,7 @@ class DeleteQueryBuilder {
|
|
|
138
138
|
orderBy(orderBy, direction) {
|
|
139
139
|
return new DeleteQueryBuilder({
|
|
140
140
|
...this.#props,
|
|
141
|
-
queryNode: delete_query_node_js_1.DeleteQueryNode.cloneWithOrderByItem(this.#props.queryNode, (0, order_by_parser_js_1.parseOrderBy)(
|
|
141
|
+
queryNode: delete_query_node_js_1.DeleteQueryNode.cloneWithOrderByItem(this.#props.queryNode, (0, order_by_parser_js_1.parseOrderBy)(orderBy, direction)),
|
|
142
142
|
});
|
|
143
143
|
}
|
|
144
144
|
/**
|
|
@@ -265,7 +265,7 @@ class DeleteQueryBuilder {
|
|
|
265
265
|
const compildQuery = this.compile();
|
|
266
266
|
const query = compildQuery.query;
|
|
267
267
|
const result = await this.#props.executor.executeQuery(compildQuery, this.#props.queryId);
|
|
268
|
-
if (this.#props.
|
|
268
|
+
if (this.#props.executor.adapter.supportsReturning && query.returning) {
|
|
269
269
|
return result.rows;
|
|
270
270
|
}
|
|
271
271
|
else {
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { SelectQueryBuilder } from './select-query-builder.js';
|
|
2
2
|
import { TableExpression, TableExpressionDatabase, TableExpressionTables } from '../parser/table-parser.js';
|
|
3
|
-
import { NoopQueryExecutor } from '../query-executor/noop-query-executor.js';
|
|
4
|
-
import { ParseContext } from '../parser/parse-context.js';
|
|
5
3
|
import { FunctionBuilder } from './function-builder.js';
|
|
6
4
|
import { ExtractTypeFromReferenceExpression, StringReference } from '../parser/reference-parser.js';
|
|
7
5
|
import { RawBuilder } from '../raw-builder/raw-builder.js';
|
|
6
|
+
import { QueryExecutor } from '../query-executor/query-executor.js';
|
|
8
7
|
export declare class ExpressionBuilder<DB, TB extends keyof DB> {
|
|
9
8
|
#private;
|
|
10
9
|
constructor(props: ExpressionBuilderProps);
|
|
@@ -90,10 +89,6 @@ export declare class ExpressionBuilder<DB, TB extends keyof DB> {
|
|
|
90
89
|
* See {@link QueryCreator.withSchema}
|
|
91
90
|
*/
|
|
92
91
|
withSchema(schema: string): ExpressionBuilder<DB, TB>;
|
|
93
|
-
/**
|
|
94
|
-
* See {@link QueryCreator.raw}.
|
|
95
|
-
*/
|
|
96
|
-
raw<T = unknown>(sql: string, parameters?: unknown[]): RawBuilder<T>;
|
|
97
92
|
/**
|
|
98
93
|
* This can be used to reference columns.
|
|
99
94
|
*
|
|
@@ -115,21 +110,17 @@ export declare class ExpressionBuilder<DB, TB extends keyof DB> {
|
|
|
115
110
|
* )
|
|
116
111
|
* ```
|
|
117
112
|
*
|
|
118
|
-
* In the next example we use `ref` in a raw expression. Unless you
|
|
113
|
+
* In the next example we use `ref` in a raw sql expression. Unless you
|
|
119
114
|
* want to be as type-safe as possible, this is probably overkill:
|
|
120
115
|
*
|
|
121
116
|
* ```ts
|
|
122
117
|
* db.update('pet').set({
|
|
123
|
-
* name: (eb) => eb.
|
|
124
|
-
* eb.ref('pet.name'),
|
|
125
|
-
* suffix,
|
|
126
|
-
* ])
|
|
118
|
+
* name: (eb) => sql`concat(${eb.ref('pet.name')}, ${suffix})`
|
|
127
119
|
* })
|
|
128
120
|
* ```
|
|
129
121
|
*/
|
|
130
122
|
ref<RE extends StringReference<DB, TB>>(reference: RE): RawBuilder<ExtractTypeFromReferenceExpression<DB, TB, RE>>;
|
|
131
123
|
}
|
|
132
124
|
export interface ExpressionBuilderProps {
|
|
133
|
-
readonly executor:
|
|
134
|
-
readonly parseContext: ParseContext;
|
|
125
|
+
readonly executor: QueryExecutor;
|
|
135
126
|
}
|
|
@@ -6,9 +6,11 @@ const select_query_node_js_1 = require("../operation-node/select-query-node.js")
|
|
|
6
6
|
const table_parser_js_1 = require("../parser/table-parser.js");
|
|
7
7
|
const with_schema_plugin_js_1 = require("../plugin/with-schema/with-schema-plugin.js");
|
|
8
8
|
const query_id_js_1 = require("../util/query-id.js");
|
|
9
|
-
const object_utils_js_1 = require("../util/object-utils.js");
|
|
10
9
|
const function_builder_js_1 = require("./function-builder.js");
|
|
10
|
+
const reference_parser_js_1 = require("../parser/reference-parser.js");
|
|
11
11
|
const raw_builder_js_1 = require("../raw-builder/raw-builder.js");
|
|
12
|
+
const object_utils_js_1 = require("../util/object-utils.js");
|
|
13
|
+
const raw_node_js_1 = require("../operation-node/raw-node.js");
|
|
12
14
|
class ExpressionBuilder {
|
|
13
15
|
#props;
|
|
14
16
|
constructor(props) {
|
|
@@ -46,14 +48,13 @@ class ExpressionBuilder {
|
|
|
46
48
|
* ```
|
|
47
49
|
*/
|
|
48
50
|
get fn() {
|
|
49
|
-
return new function_builder_js_1.FunctionBuilder(
|
|
51
|
+
return new function_builder_js_1.FunctionBuilder();
|
|
50
52
|
}
|
|
51
53
|
selectFrom(table) {
|
|
52
54
|
return new select_query_builder_js_1.SelectQueryBuilder({
|
|
53
55
|
queryId: (0, query_id_js_1.createQueryId)(),
|
|
54
56
|
executor: this.#props.executor,
|
|
55
|
-
|
|
56
|
-
queryNode: select_query_node_js_1.SelectQueryNode.create((0, table_parser_js_1.parseTableExpressionOrList)(this.#props.parseContext, table)),
|
|
57
|
+
queryNode: select_query_node_js_1.SelectQueryNode.create((0, table_parser_js_1.parseTableExpressionOrList)(table)),
|
|
57
58
|
});
|
|
58
59
|
}
|
|
59
60
|
/**
|
|
@@ -65,17 +66,6 @@ class ExpressionBuilder {
|
|
|
65
66
|
executor: this.#props.executor.withPluginAtFront(new with_schema_plugin_js_1.WithSchemaPlugin(schema)),
|
|
66
67
|
});
|
|
67
68
|
}
|
|
68
|
-
/**
|
|
69
|
-
* See {@link QueryCreator.raw}.
|
|
70
|
-
*/
|
|
71
|
-
raw(sql, parameters) {
|
|
72
|
-
return new raw_builder_js_1.RawBuilder({
|
|
73
|
-
queryId: (0, query_id_js_1.createQueryId)(),
|
|
74
|
-
executor: this.#props.executor,
|
|
75
|
-
sql,
|
|
76
|
-
parameters,
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
69
|
/**
|
|
80
70
|
* This can be used to reference columns.
|
|
81
71
|
*
|
|
@@ -97,20 +87,21 @@ class ExpressionBuilder {
|
|
|
97
87
|
* )
|
|
98
88
|
* ```
|
|
99
89
|
*
|
|
100
|
-
* In the next example we use `ref` in a raw expression. Unless you
|
|
90
|
+
* In the next example we use `ref` in a raw sql expression. Unless you
|
|
101
91
|
* want to be as type-safe as possible, this is probably overkill:
|
|
102
92
|
*
|
|
103
93
|
* ```ts
|
|
104
94
|
* db.update('pet').set({
|
|
105
|
-
* name: (eb) => eb.
|
|
106
|
-
* eb.ref('pet.name'),
|
|
107
|
-
* suffix,
|
|
108
|
-
* ])
|
|
95
|
+
* name: (eb) => sql`concat(${eb.ref('pet.name')}, ${suffix})`
|
|
109
96
|
* })
|
|
110
97
|
* ```
|
|
111
98
|
*/
|
|
112
99
|
ref(reference) {
|
|
113
|
-
return
|
|
100
|
+
return new raw_builder_js_1.RawBuilder({
|
|
101
|
+
queryId: (0, query_id_js_1.createQueryId)(),
|
|
102
|
+
plugins: this.#props.executor.plugins,
|
|
103
|
+
rawNode: raw_node_js_1.RawNode.createWithChild((0, reference_parser_js_1.parseStringReference)(reference)),
|
|
104
|
+
});
|
|
114
105
|
}
|
|
115
106
|
}
|
|
116
107
|
exports.ExpressionBuilder = ExpressionBuilder;
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { StringReference, ExtractTypeFromReferenceExpression } from '../parser/reference-parser.js';
|
|
2
|
-
import { QueryExecutor } from '../query-executor/query-executor.js';
|
|
3
2
|
import { RawBuilder } from '../raw-builder/raw-builder.js';
|
|
4
3
|
/**
|
|
5
4
|
* Helpers for type safe SQL function calls.
|
|
6
5
|
*
|
|
7
|
-
* You can always use {@link
|
|
6
|
+
* You can always use the {@link sql} tag to call functions and build arbitrary
|
|
8
7
|
* expressions. This module simply has shortcuts for most common function calls.
|
|
9
8
|
*
|
|
10
9
|
* ### Examples
|
|
@@ -35,7 +34,7 @@ import { RawBuilder } from '../raw-builder/raw-builder.js';
|
|
|
35
34
|
*/
|
|
36
35
|
export declare class FunctionBuilder<DB, TB extends keyof DB> {
|
|
37
36
|
#private;
|
|
38
|
-
constructor(
|
|
37
|
+
constructor();
|
|
39
38
|
/**
|
|
40
39
|
* Calls the `max` function for the column given as the argument.
|
|
41
40
|
*
|
|
@@ -132,6 +131,3 @@ export declare class FunctionBuilder<DB, TB extends keyof DB> {
|
|
|
132
131
|
*/
|
|
133
132
|
count<O extends number | string | bigint, C extends StringReference<DB, TB> = any>(column: C): RawBuilder<O>;
|
|
134
133
|
}
|
|
135
|
-
export interface FunctionBuilderProps {
|
|
136
|
-
readonly executor: QueryExecutor;
|
|
137
|
-
}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.FunctionBuilder = void 0;
|
|
4
|
+
const raw_node_js_1 = require("../operation-node/raw-node.js");
|
|
5
|
+
const reference_parser_js_1 = require("../parser/reference-parser.js");
|
|
4
6
|
const raw_builder_js_1 = require("../raw-builder/raw-builder.js");
|
|
5
|
-
const object_utils_js_1 = require("../util/object-utils.js");
|
|
6
7
|
const query_id_js_1 = require("../util/query-id.js");
|
|
7
8
|
/**
|
|
8
9
|
* Helpers for type safe SQL function calls.
|
|
9
10
|
*
|
|
10
|
-
* You can always use {@link
|
|
11
|
+
* You can always use the {@link sql} tag to call functions and build arbitrary
|
|
11
12
|
* expressions. This module simply has shortcuts for most common function calls.
|
|
12
13
|
*
|
|
13
14
|
* ### Examples
|
|
@@ -37,9 +38,7 @@ const query_id_js_1 = require("../util/query-id.js");
|
|
|
37
38
|
* ```
|
|
38
39
|
*/
|
|
39
40
|
class FunctionBuilder {
|
|
40
|
-
|
|
41
|
-
constructor(props) {
|
|
42
|
-
this.#props = (0, object_utils_js_1.freeze)(props);
|
|
41
|
+
constructor() {
|
|
43
42
|
this.min = this.min.bind(this);
|
|
44
43
|
this.max = this.max.bind(this);
|
|
45
44
|
this.avg = this.avg.bind(this);
|
|
@@ -154,9 +153,7 @@ class FunctionBuilder {
|
|
|
154
153
|
#oneArgFunction(fn, column) {
|
|
155
154
|
return new raw_builder_js_1.RawBuilder({
|
|
156
155
|
queryId: (0, query_id_js_1.createQueryId)(),
|
|
157
|
-
|
|
158
|
-
sql: `${fn}(??)`,
|
|
159
|
-
parameters: [column],
|
|
156
|
+
rawNode: raw_node_js_1.RawNode.create([`${fn}(`, ')'], [(0, reference_parser_js_1.parseStringReference)(column)]),
|
|
160
157
|
});
|
|
161
158
|
}
|
|
162
159
|
}
|
|
@@ -8,7 +8,6 @@ import { MutationObject } from '../parser/update-set-parser.js';
|
|
|
8
8
|
import { Compilable } from '../util/compilable.js';
|
|
9
9
|
import { QueryExecutor } from '../query-executor/query-executor.js';
|
|
10
10
|
import { QueryId } from '../util/query-id.js';
|
|
11
|
-
import { ParseContext } from '../parser/parse-context.js';
|
|
12
11
|
import { InsertResult } from './insert-result.js';
|
|
13
12
|
import { KyselyPlugin } from '../plugin/kysely-plugin.js';
|
|
14
13
|
import { ReturningRow } from '../parser/returning-parser.js';
|
|
@@ -25,7 +24,7 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
25
24
|
*
|
|
26
25
|
* This method takes an object whose keys are column names and values are
|
|
27
26
|
* values to insert. In addition to the column's type, the values can be
|
|
28
|
-
* {@link
|
|
27
|
+
* raw {@link sql} snippets or select queries.
|
|
29
28
|
*
|
|
30
29
|
* You must provide all fields you haven't explicitly marked as nullable
|
|
31
30
|
* or optional using {@link Generated} or {@link ColumnType}.
|
|
@@ -106,16 +105,18 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
106
105
|
* insert into "person" ("first_name", "last_name") values ($1, $2) returning "id"
|
|
107
106
|
* ```
|
|
108
107
|
*
|
|
109
|
-
* In addition to primitives, the values can also be
|
|
108
|
+
* In addition to primitives, the values can also be raw sql expressions or
|
|
110
109
|
* select queries:
|
|
111
110
|
*
|
|
112
111
|
* ```ts
|
|
112
|
+
* import { sql } from 'kysely'
|
|
113
|
+
*
|
|
113
114
|
* const result = await db
|
|
114
115
|
* .insertInto('person')
|
|
115
116
|
* .values({
|
|
116
117
|
* first_name: 'Jennifer',
|
|
117
|
-
* last_name:
|
|
118
|
-
* age: db.selectFrom('person').select(
|
|
118
|
+
* last_name: sql`${'Ani'} || ${'ston'}`,
|
|
119
|
+
* age: db.selectFrom('person').select(sql`avg(age)`),
|
|
119
120
|
* })
|
|
120
121
|
* .executeTakeFirst()
|
|
121
122
|
*
|
|
@@ -271,6 +272,8 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
271
272
|
* the unique index is an expression index:
|
|
272
273
|
*
|
|
273
274
|
* ```ts
|
|
275
|
+
* import { sql } from 'kysely'
|
|
276
|
+
*
|
|
274
277
|
* await db
|
|
275
278
|
* .insertInto('pet')
|
|
276
279
|
* .values({
|
|
@@ -278,7 +281,7 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
278
281
|
* species: 'cat',
|
|
279
282
|
* })
|
|
280
283
|
* .onConflict((oc) => oc
|
|
281
|
-
* .expression(
|
|
284
|
+
* .expression(sql`lower(name)`)
|
|
282
285
|
* .doUpdateSet({ species: 'hamster' })
|
|
283
286
|
* )
|
|
284
287
|
* .execute()
|
|
@@ -423,6 +426,8 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
423
426
|
* Return arbitrary expressions:
|
|
424
427
|
*
|
|
425
428
|
* ```ts
|
|
429
|
+
* import { sql } from 'kysely'
|
|
430
|
+
*
|
|
426
431
|
* const { id, full_name, first_pet_id } = await db
|
|
427
432
|
* .insertInto('person')
|
|
428
433
|
* .values({
|
|
@@ -431,7 +436,7 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
431
436
|
* })
|
|
432
437
|
* .returning([
|
|
433
438
|
* 'id as id',
|
|
434
|
-
*
|
|
439
|
+
* sql<string>`concat(first_name, ' ', last_name)`.as('full_name'),
|
|
435
440
|
* (qb) => qb.selectFrom('pets').select('pet.id').limit(1).as('first_pet_id')
|
|
436
441
|
* ])
|
|
437
442
|
* .executeTakeFirst()
|
|
@@ -541,5 +546,4 @@ export interface InsertQueryBuilderProps {
|
|
|
541
546
|
readonly queryId: QueryId;
|
|
542
547
|
readonly queryNode: InsertQueryNode;
|
|
543
548
|
readonly executor: QueryExecutor;
|
|
544
|
-
readonly parseContext: ParseContext;
|
|
545
549
|
}
|
|
@@ -21,7 +21,7 @@ class InsertQueryBuilder {
|
|
|
21
21
|
this.#props = (0, object_utils_js_1.freeze)(props);
|
|
22
22
|
}
|
|
23
23
|
values(args) {
|
|
24
|
-
const [columns, values] = (0, insert_values_parser_js_1.parseInsertObjectOrList)(
|
|
24
|
+
const [columns, values] = (0, insert_values_parser_js_1.parseInsertObjectOrList)(args);
|
|
25
25
|
return new InsertQueryBuilder({
|
|
26
26
|
...this.#props,
|
|
27
27
|
queryNode: insert_query_node_js_1.InsertQueryNode.cloneWith(this.#props.queryNode, {
|
|
@@ -82,7 +82,7 @@ class InsertQueryBuilder {
|
|
|
82
82
|
return new InsertQueryBuilder({
|
|
83
83
|
...this.#props,
|
|
84
84
|
queryNode: insert_query_node_js_1.InsertQueryNode.cloneWith(this.#props.queryNode, {
|
|
85
|
-
values: (0, complex_expression_parser_js_1.parseComplexExpression)(
|
|
85
|
+
values: (0, complex_expression_parser_js_1.parseComplexExpression)(expression),
|
|
86
86
|
}),
|
|
87
87
|
});
|
|
88
88
|
}
|
|
@@ -176,6 +176,8 @@ class InsertQueryBuilder {
|
|
|
176
176
|
* the unique index is an expression index:
|
|
177
177
|
*
|
|
178
178
|
* ```ts
|
|
179
|
+
* import { sql } from 'kysely'
|
|
180
|
+
*
|
|
179
181
|
* await db
|
|
180
182
|
* .insertInto('pet')
|
|
181
183
|
* .values({
|
|
@@ -183,7 +185,7 @@ class InsertQueryBuilder {
|
|
|
183
185
|
* species: 'cat',
|
|
184
186
|
* })
|
|
185
187
|
* .onConflict((oc) => oc
|
|
186
|
-
* .expression(
|
|
188
|
+
* .expression(sql`lower(name)`)
|
|
187
189
|
* .doUpdateSet({ species: 'hamster' })
|
|
188
190
|
* )
|
|
189
191
|
* .execute()
|
|
@@ -271,7 +273,6 @@ class InsertQueryBuilder {
|
|
|
271
273
|
queryNode: insert_query_node_js_1.InsertQueryNode.cloneWith(this.#props.queryNode, {
|
|
272
274
|
onConflict: callback(new on_conflict_builder_js_1.OnConflictBuilder({
|
|
273
275
|
onConflictNode: on_conflict_node_js_1.OnConflictNode.create(),
|
|
274
|
-
parseContext: this.#props.parseContext,
|
|
275
276
|
})).toOperationNode(),
|
|
276
277
|
}),
|
|
277
278
|
});
|
|
@@ -298,14 +299,14 @@ class InsertQueryBuilder {
|
|
|
298
299
|
return new InsertQueryBuilder({
|
|
299
300
|
...this.#props,
|
|
300
301
|
queryNode: insert_query_node_js_1.InsertQueryNode.cloneWith(this.#props.queryNode, {
|
|
301
|
-
onDuplicateKey: on_duplicate_key_node_js_1.OnDuplicateKeyNode.create((0, update_set_parser_js_1.parseUpdateObject)(
|
|
302
|
+
onDuplicateKey: on_duplicate_key_node_js_1.OnDuplicateKeyNode.create((0, update_set_parser_js_1.parseUpdateObject)(updates)),
|
|
302
303
|
}),
|
|
303
304
|
});
|
|
304
305
|
}
|
|
305
306
|
returning(selection) {
|
|
306
307
|
return new InsertQueryBuilder({
|
|
307
308
|
...this.#props,
|
|
308
|
-
queryNode: query_node_js_1.QueryNode.cloneWithReturning(this.#props.queryNode, (0, select_parser_js_1.parseSelectExpressionOrList)(
|
|
309
|
+
queryNode: query_node_js_1.QueryNode.cloneWithReturning(this.#props.queryNode, (0, select_parser_js_1.parseSelectExpressionOrList)(selection)),
|
|
309
310
|
});
|
|
310
311
|
}
|
|
311
312
|
returningAll() {
|
|
@@ -415,7 +416,7 @@ class InsertQueryBuilder {
|
|
|
415
416
|
const compildQuery = this.compile();
|
|
416
417
|
const query = compildQuery.query;
|
|
417
418
|
const result = await this.#props.executor.executeQuery(compildQuery, this.#props.queryId);
|
|
418
|
-
if (this.#props.
|
|
419
|
+
if (this.#props.executor.adapter.supportsReturning && query.returning) {
|
|
419
420
|
return result.rows;
|
|
420
421
|
}
|
|
421
422
|
else {
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { JoinNode } from '../operation-node/join-node.js';
|
|
2
2
|
import { OperationNodeSource } from '../operation-node/operation-node-source.js';
|
|
3
3
|
import { ExistsExpression, FilterOperator, FilterValueExpressionOrList } from '../parser/filter-parser.js';
|
|
4
|
-
import { ParseContext } from '../parser/parse-context.js';
|
|
5
4
|
import { ReferenceExpression } from '../parser/reference-parser.js';
|
|
6
5
|
import { AnyRawBuilder } from '../util/type-utils.js';
|
|
7
6
|
export declare class JoinBuilder<DB, TB extends keyof DB> implements OperationNodeSource {
|
|
@@ -71,5 +70,4 @@ export declare class JoinBuilder<DB, TB extends keyof DB> implements OperationNo
|
|
|
71
70
|
}
|
|
72
71
|
export interface JoinBuilderProps {
|
|
73
72
|
readonly joinNode: JoinNode;
|
|
74
|
-
readonly parseContext: ParseContext;
|
|
75
73
|
}
|