kysely 0.16.9 → 0.17.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +2 -2
- package/dist/cjs/dialect/mysql/mysql-adapter.js +3 -4
- 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 +1 -1
- package/dist/cjs/driver/single-connection-provider.d.ts +1 -1
- package/dist/cjs/driver/single-connection-provider.js +1 -1
- 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/delete-query-node.d.ts +7 -0
- package/dist/cjs/operation-node/delete-query-node.js +15 -0
- 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/query-builder/delete-query-builder.d.ts +77 -20
- package/dist/cjs/query-builder/delete-query-builder.js +81 -14
- 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 +11 -9
- 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 +24 -20
- package/dist/cjs/query-builder/on-conflict-builder.js +17 -17
- package/dist/cjs/query-builder/returning-interface.d.ts +2 -2
- package/dist/cjs/query-builder/select-query-builder.d.ts +43 -32
- package/dist/cjs/query-builder/select-query-builder.js +28 -26
- package/dist/cjs/query-builder/update-query-builder.d.ts +29 -25
- package/dist/cjs/query-builder/update-query-builder.js +22 -20
- package/dist/cjs/query-builder/where-interface.d.ts +20 -16
- package/dist/cjs/query-compiler/default-query-compiler.js +16 -7
- package/dist/cjs/query-creator.d.ts +24 -138
- package/dist/cjs/query-creator.js +19 -145
- package/dist/cjs/query-executor/default-query-executor.d.ts +14 -3
- package/dist/cjs/query-executor/default-query-executor.js +15 -17
- package/dist/cjs/query-executor/noop-query-executor.d.ts +13 -2
- package/dist/cjs/query-executor/noop-query-executor.js +9 -2
- 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 +14 -6
- package/dist/cjs/query-executor/query-executor.js +4 -2
- 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 +323 -0
- package/dist/cjs/raw-builder/sql.js +153 -0
- package/dist/cjs/schema/alter-table-builder.d.ts +20 -8
- package/dist/cjs/schema/alter-table-builder.js +3 -3
- package/dist/cjs/schema/column-definition-builder.d.ts +20 -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 +6 -2
- package/dist/cjs/schema/create-table-builder.js +8 -4
- 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/esm/dialect/mysql/mysql-adapter.js +3 -4
- 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 +1 -1
- package/dist/esm/driver/single-connection-provider.d.ts +1 -1
- package/dist/esm/driver/single-connection-provider.js +1 -1
- 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/delete-query-node.d.ts +7 -0
- package/dist/esm/operation-node/delete-query-node.js +15 -0
- 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/query-builder/delete-query-builder.d.ts +77 -20
- package/dist/esm/query-builder/delete-query-builder.js +81 -14
- 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 +11 -9
- 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 +24 -20
- package/dist/esm/query-builder/on-conflict-builder.js +17 -17
- package/dist/esm/query-builder/returning-interface.d.ts +2 -2
- package/dist/esm/query-builder/select-query-builder.d.ts +43 -32
- package/dist/esm/query-builder/select-query-builder.js +28 -26
- package/dist/esm/query-builder/update-query-builder.d.ts +29 -25
- package/dist/esm/query-builder/update-query-builder.js +22 -20
- package/dist/esm/query-builder/where-interface.d.ts +20 -16
- package/dist/esm/query-compiler/default-query-compiler.js +16 -7
- package/dist/esm/query-creator.d.ts +24 -138
- package/dist/esm/query-creator.js +19 -145
- package/dist/esm/query-executor/default-query-executor.d.ts +14 -3
- package/dist/esm/query-executor/default-query-executor.js +15 -17
- package/dist/esm/query-executor/noop-query-executor.d.ts +13 -2
- package/dist/esm/query-executor/noop-query-executor.js +8 -1
- 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 +14 -6
- package/dist/esm/query-executor/query-executor.js +4 -2
- 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 +323 -0
- package/dist/esm/raw-builder/sql.js +151 -0
- package/dist/esm/schema/alter-table-builder.d.ts +20 -8
- package/dist/esm/schema/alter-table-builder.js +3 -3
- package/dist/esm/schema/column-definition-builder.d.ts +20 -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 +6 -2
- package/dist/esm/schema/create-table-builder.js +8 -4
- 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/package.json +13 -13
- 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';
|
|
@@ -19,6 +18,7 @@ import { NoResultErrorConstructor } from './no-result-error.js';
|
|
|
19
18
|
import { DeleteResult } from './delete-result.js';
|
|
20
19
|
import { DeleteQueryNode } from '../operation-node/delete-query-node.js';
|
|
21
20
|
import { Selectable } from '../util/column-type.js';
|
|
21
|
+
import { OrderByDirectionExpression, OrderByExpression } from '../parser/order-by-parser.js';
|
|
22
22
|
export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements WhereInterface<DB, TB>, JoinInterface<DB, TB>, ReturningInterface<DB, TB, O>, OperationNodeSource, Compilable {
|
|
23
23
|
#private;
|
|
24
24
|
constructor(props: DeleteQueryBuilderProps);
|
|
@@ -46,7 +46,7 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
46
46
|
* ```
|
|
47
47
|
*
|
|
48
48
|
* Operator can be any supported operator or if the typings don't support it
|
|
49
|
-
* you can always use `
|
|
49
|
+
* you can always use `sql\`your operator\``.
|
|
50
50
|
*
|
|
51
51
|
* ```ts
|
|
52
52
|
* const persons = await db
|
|
@@ -116,7 +116,7 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
116
116
|
*
|
|
117
117
|
* A `where in` query can be built by using the `in` operator and an array
|
|
118
118
|
* of values. The values in the array can also be subqueries or raw
|
|
119
|
-
*
|
|
119
|
+
* {@link sql} expressions.
|
|
120
120
|
*
|
|
121
121
|
* ```ts
|
|
122
122
|
* const persons = await db
|
|
@@ -132,15 +132,17 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
132
132
|
* select * from "person" where "id" in ($1, $2, $3)
|
|
133
133
|
* ```
|
|
134
134
|
*
|
|
135
|
-
* If everything else fails, you can always
|
|
135
|
+
* If everything else fails, you can always use the {@link sql} tag
|
|
136
136
|
* as any of the arguments, including the operator:
|
|
137
137
|
*
|
|
138
138
|
* ```ts
|
|
139
|
+
* import { sql } from 'kysely'
|
|
140
|
+
*
|
|
139
141
|
* const persons = await db
|
|
140
142
|
* .selectFrom('person')
|
|
141
143
|
* .selectAll()
|
|
142
144
|
* .where(
|
|
143
|
-
*
|
|
145
|
+
* sql`coalesce(first_name, last_name)`,
|
|
144
146
|
* 'like',
|
|
145
147
|
* '%' + name + '%',
|
|
146
148
|
* )
|
|
@@ -175,24 +177,25 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
175
177
|
* ```
|
|
176
178
|
*
|
|
177
179
|
* In all examples above the columns were known at compile time
|
|
178
|
-
* (except for the
|
|
179
|
-
* you to refer to columns that exist in the database **and**
|
|
180
|
-
* referred to in the current query and context.
|
|
180
|
+
* (except for the raw {@link sql} expressions). By default kysely only
|
|
181
|
+
* allows you to refer to columns that exist in the database **and**
|
|
182
|
+
* can be referred to in the current query and context.
|
|
181
183
|
*
|
|
182
184
|
* Sometimes you may want to refer to columns that come from the user
|
|
183
185
|
* input and thus are not available at compile time.
|
|
184
186
|
*
|
|
185
|
-
* You have two options,
|
|
187
|
+
* You have two options, the {@link sql} tag or `db.dynamic`. The example below
|
|
186
188
|
* uses both:
|
|
187
189
|
*
|
|
188
190
|
* ```ts
|
|
191
|
+
* import { sql } from 'kysely'
|
|
189
192
|
* const { ref } = db.dynamic
|
|
190
193
|
*
|
|
191
194
|
* const persons = await db
|
|
192
195
|
* .selectFrom('person')
|
|
193
196
|
* .selectAll()
|
|
194
197
|
* .where(ref(columnFromUserInput), '=', 1)
|
|
195
|
-
* .orWhere(
|
|
198
|
+
* .orWhere(sql.id(columnFromUserInput), '=', 2)
|
|
196
199
|
* .execute()
|
|
197
200
|
* ```
|
|
198
201
|
*/
|
|
@@ -326,13 +329,14 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
326
329
|
/**
|
|
327
330
|
* Adds a `where exists` clause to the query.
|
|
328
331
|
*
|
|
329
|
-
* You can either use a subquery or a raw
|
|
332
|
+
* You can either use a subquery or a raw {@link sql} snippet.
|
|
330
333
|
*
|
|
331
334
|
* ### Examples
|
|
332
335
|
*
|
|
333
336
|
* The query below selets all persons that own a pet named Catto:
|
|
334
337
|
*
|
|
335
338
|
* ```ts
|
|
339
|
+
* const petName = 'Catto'
|
|
336
340
|
* const persons = await db
|
|
337
341
|
* .selectFrom('person')
|
|
338
342
|
* .selectAll()
|
|
@@ -340,7 +344,7 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
340
344
|
* .selectFrom('pet')
|
|
341
345
|
* .select('pet.id')
|
|
342
346
|
* .whereRef('person.id', '=', 'pet.owner_id')
|
|
343
|
-
* .where('pet.name', '=',
|
|
347
|
+
* .where('pet.name', '=', petName)
|
|
344
348
|
* )
|
|
345
349
|
* .execute()
|
|
346
350
|
* ```
|
|
@@ -357,16 +361,16 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
357
361
|
* )
|
|
358
362
|
* ```
|
|
359
363
|
*
|
|
360
|
-
* The same query as in the previous example but with using raw:
|
|
364
|
+
* The same query as in the previous example but with using raw {@link sql}:
|
|
361
365
|
*
|
|
362
366
|
* ```ts
|
|
367
|
+
* import { sql } from 'kysely'
|
|
368
|
+
*
|
|
369
|
+
* const petName = 'Catto'
|
|
363
370
|
* db.selectFrom('person')
|
|
364
371
|
* .selectAll()
|
|
365
372
|
* .whereExists(
|
|
366
|
-
*
|
|
367
|
-
* '(select pet.id from pet where person.id = pet.owner_id and pet.name = ?)',
|
|
368
|
-
* ['Catto']
|
|
369
|
-
* )
|
|
373
|
+
* sql`(select pet.id from pet where person.id = pet.owner_id and pet.name = ${petName})`
|
|
370
374
|
* )
|
|
371
375
|
* ```
|
|
372
376
|
*
|
|
@@ -564,7 +568,7 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
564
568
|
* Return arbitrary expressions:
|
|
565
569
|
*
|
|
566
570
|
* ```ts
|
|
567
|
-
*
|
|
571
|
+
* import { sql } from 'kysely'
|
|
568
572
|
*
|
|
569
573
|
* const { id, full_name, first_pet_id } = await db
|
|
570
574
|
* .insertInto('person')
|
|
@@ -574,7 +578,7 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
574
578
|
* })
|
|
575
579
|
* .returning([
|
|
576
580
|
* 'id as id',
|
|
577
|
-
*
|
|
581
|
+
* sql<string>`concat(first_name, ' ', last_name)`.as('full_name'),
|
|
578
582
|
* (qb) => qb.selectFrom('pets').select('pet.id').limit(1).as('first_pet_id')
|
|
579
583
|
* ])
|
|
580
584
|
* .executeTakeFirst()
|
|
@@ -587,6 +591,60 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
587
591
|
* that support `returning` such as PostgreSQL.
|
|
588
592
|
*/
|
|
589
593
|
returningAll(): DeleteQueryBuilder<DB, TB, Selectable<DB[TB]>>;
|
|
594
|
+
/**
|
|
595
|
+
* Adds an `order by` clause to the query.
|
|
596
|
+
*
|
|
597
|
+
* `orderBy` calls are additive. To order by multiple columns, call `orderBy`
|
|
598
|
+
* multiple times.
|
|
599
|
+
*
|
|
600
|
+
* The first argument is the expression to order by and the second is the
|
|
601
|
+
* order (`asc` or `desc`).
|
|
602
|
+
*
|
|
603
|
+
* An `order by` clause in a delete query is only supported by some dialects
|
|
604
|
+
* like MySQL.
|
|
605
|
+
*
|
|
606
|
+
* See {@link SelectQueryBuilder.orderBy} for more examples.
|
|
607
|
+
*
|
|
608
|
+
* ### Examples
|
|
609
|
+
*
|
|
610
|
+
* Delete 5 oldest items in a table:
|
|
611
|
+
*
|
|
612
|
+
* ```ts
|
|
613
|
+
* await db
|
|
614
|
+
* .deleteFrom('pet')
|
|
615
|
+
* .orderBy('created_at')
|
|
616
|
+
* .limit(5)
|
|
617
|
+
* .execute()
|
|
618
|
+
* ```
|
|
619
|
+
*
|
|
620
|
+
* The generated SQL (MySQL):
|
|
621
|
+
*
|
|
622
|
+
* ```sql
|
|
623
|
+
* delete from `pet`
|
|
624
|
+
* order by `created_at`
|
|
625
|
+
* limit ?
|
|
626
|
+
* ```
|
|
627
|
+
*/
|
|
628
|
+
orderBy(orderBy: OrderByExpression<DB, TB, O>, direction?: OrderByDirectionExpression): DeleteQueryBuilder<DB, TB, O>;
|
|
629
|
+
/**
|
|
630
|
+
* Adds a limit clause to the query.
|
|
631
|
+
*
|
|
632
|
+
* A limit clause in a delete query is only supported by some dialects
|
|
633
|
+
* like MySQL.
|
|
634
|
+
*
|
|
635
|
+
* ### Examples
|
|
636
|
+
*
|
|
637
|
+
* Delete 5 oldest items in a table:
|
|
638
|
+
*
|
|
639
|
+
* ```ts
|
|
640
|
+
* await db
|
|
641
|
+
* .deleteFrom('pet')
|
|
642
|
+
* .orderBy('created_at')
|
|
643
|
+
* .limit(5)
|
|
644
|
+
* .execute()
|
|
645
|
+
* ```
|
|
646
|
+
*/
|
|
647
|
+
limit(limit: number): DeleteQueryBuilder<DB, TB, O>;
|
|
590
648
|
/**
|
|
591
649
|
* Simply calls the given function passing `this` as the only argument.
|
|
592
650
|
*
|
|
@@ -683,5 +741,4 @@ export interface DeleteQueryBuilderProps {
|
|
|
683
741
|
readonly queryId: QueryId;
|
|
684
742
|
readonly queryNode: DeleteQueryNode;
|
|
685
743
|
readonly executor: QueryExecutor;
|
|
686
|
-
readonly parseContext: ParseContext;
|
|
687
744
|
}
|
|
@@ -9,6 +9,9 @@ const prevent_await_js_1 = require("../util/prevent-await.js");
|
|
|
9
9
|
const object_utils_js_1 = require("../util/object-utils.js");
|
|
10
10
|
const no_result_error_js_1 = require("./no-result-error.js");
|
|
11
11
|
const delete_result_js_1 = require("./delete-result.js");
|
|
12
|
+
const delete_query_node_js_1 = require("../operation-node/delete-query-node.js");
|
|
13
|
+
const limit_node_js_1 = require("../operation-node/limit-node.js");
|
|
14
|
+
const order_by_parser_js_1 = require("../parser/order-by-parser.js");
|
|
12
15
|
class DeleteQueryBuilder {
|
|
13
16
|
#props;
|
|
14
17
|
constructor(props) {
|
|
@@ -17,79 +20,79 @@ class DeleteQueryBuilder {
|
|
|
17
20
|
where(...args) {
|
|
18
21
|
return new DeleteQueryBuilder({
|
|
19
22
|
...this.#props,
|
|
20
|
-
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)),
|
|
21
24
|
});
|
|
22
25
|
}
|
|
23
26
|
whereRef(lhs, op, rhs) {
|
|
24
27
|
return new DeleteQueryBuilder({
|
|
25
28
|
...this.#props,
|
|
26
|
-
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)),
|
|
27
30
|
});
|
|
28
31
|
}
|
|
29
32
|
orWhere(...args) {
|
|
30
33
|
return new DeleteQueryBuilder({
|
|
31
34
|
...this.#props,
|
|
32
|
-
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)),
|
|
33
36
|
});
|
|
34
37
|
}
|
|
35
38
|
orWhereRef(lhs, op, rhs) {
|
|
36
39
|
return new DeleteQueryBuilder({
|
|
37
40
|
...this.#props,
|
|
38
|
-
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)),
|
|
39
42
|
});
|
|
40
43
|
}
|
|
41
44
|
whereExists(arg) {
|
|
42
45
|
return new DeleteQueryBuilder({
|
|
43
46
|
...this.#props,
|
|
44
|
-
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)),
|
|
45
48
|
});
|
|
46
49
|
}
|
|
47
50
|
whereNotExists(arg) {
|
|
48
51
|
return new DeleteQueryBuilder({
|
|
49
52
|
...this.#props,
|
|
50
|
-
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)),
|
|
51
54
|
});
|
|
52
55
|
}
|
|
53
56
|
orWhereExists(arg) {
|
|
54
57
|
return new DeleteQueryBuilder({
|
|
55
58
|
...this.#props,
|
|
56
|
-
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)),
|
|
57
60
|
});
|
|
58
61
|
}
|
|
59
62
|
orWhereNotExists(arg) {
|
|
60
63
|
return new DeleteQueryBuilder({
|
|
61
64
|
...this.#props,
|
|
62
|
-
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)),
|
|
63
66
|
});
|
|
64
67
|
}
|
|
65
68
|
innerJoin(...args) {
|
|
66
69
|
return new DeleteQueryBuilder({
|
|
67
70
|
...this.#props,
|
|
68
|
-
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)),
|
|
69
72
|
});
|
|
70
73
|
}
|
|
71
74
|
leftJoin(...args) {
|
|
72
75
|
return new DeleteQueryBuilder({
|
|
73
76
|
...this.#props,
|
|
74
|
-
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)),
|
|
75
78
|
});
|
|
76
79
|
}
|
|
77
80
|
rightJoin(...args) {
|
|
78
81
|
return new DeleteQueryBuilder({
|
|
79
82
|
...this.#props,
|
|
80
|
-
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)),
|
|
81
84
|
});
|
|
82
85
|
}
|
|
83
86
|
fullJoin(...args) {
|
|
84
87
|
return new DeleteQueryBuilder({
|
|
85
88
|
...this.#props,
|
|
86
|
-
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)),
|
|
87
90
|
});
|
|
88
91
|
}
|
|
89
92
|
returning(selection) {
|
|
90
93
|
return new DeleteQueryBuilder({
|
|
91
94
|
...this.#props,
|
|
92
|
-
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)),
|
|
93
96
|
});
|
|
94
97
|
}
|
|
95
98
|
returningAll() {
|
|
@@ -98,6 +101,70 @@ class DeleteQueryBuilder {
|
|
|
98
101
|
queryNode: query_node_js_1.QueryNode.cloneWithReturning(this.#props.queryNode, (0, select_parser_js_1.parseSelectAll)()),
|
|
99
102
|
});
|
|
100
103
|
}
|
|
104
|
+
/**
|
|
105
|
+
* Adds an `order by` clause to the query.
|
|
106
|
+
*
|
|
107
|
+
* `orderBy` calls are additive. To order by multiple columns, call `orderBy`
|
|
108
|
+
* multiple times.
|
|
109
|
+
*
|
|
110
|
+
* The first argument is the expression to order by and the second is the
|
|
111
|
+
* order (`asc` or `desc`).
|
|
112
|
+
*
|
|
113
|
+
* An `order by` clause in a delete query is only supported by some dialects
|
|
114
|
+
* like MySQL.
|
|
115
|
+
*
|
|
116
|
+
* See {@link SelectQueryBuilder.orderBy} for more examples.
|
|
117
|
+
*
|
|
118
|
+
* ### Examples
|
|
119
|
+
*
|
|
120
|
+
* Delete 5 oldest items in a table:
|
|
121
|
+
*
|
|
122
|
+
* ```ts
|
|
123
|
+
* await db
|
|
124
|
+
* .deleteFrom('pet')
|
|
125
|
+
* .orderBy('created_at')
|
|
126
|
+
* .limit(5)
|
|
127
|
+
* .execute()
|
|
128
|
+
* ```
|
|
129
|
+
*
|
|
130
|
+
* The generated SQL (MySQL):
|
|
131
|
+
*
|
|
132
|
+
* ```sql
|
|
133
|
+
* delete from `pet`
|
|
134
|
+
* order by `created_at`
|
|
135
|
+
* limit ?
|
|
136
|
+
* ```
|
|
137
|
+
*/
|
|
138
|
+
orderBy(orderBy, direction) {
|
|
139
|
+
return new DeleteQueryBuilder({
|
|
140
|
+
...this.#props,
|
|
141
|
+
queryNode: delete_query_node_js_1.DeleteQueryNode.cloneWithOrderByItem(this.#props.queryNode, (0, order_by_parser_js_1.parseOrderBy)(orderBy, direction)),
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Adds a limit clause to the query.
|
|
146
|
+
*
|
|
147
|
+
* A limit clause in a delete query is only supported by some dialects
|
|
148
|
+
* like MySQL.
|
|
149
|
+
*
|
|
150
|
+
* ### Examples
|
|
151
|
+
*
|
|
152
|
+
* Delete 5 oldest items in a table:
|
|
153
|
+
*
|
|
154
|
+
* ```ts
|
|
155
|
+
* await db
|
|
156
|
+
* .deleteFrom('pet')
|
|
157
|
+
* .orderBy('created_at')
|
|
158
|
+
* .limit(5)
|
|
159
|
+
* .execute()
|
|
160
|
+
* ```
|
|
161
|
+
*/
|
|
162
|
+
limit(limit) {
|
|
163
|
+
return new DeleteQueryBuilder({
|
|
164
|
+
...this.#props,
|
|
165
|
+
queryNode: delete_query_node_js_1.DeleteQueryNode.cloneWithLimit(this.#props.queryNode, limit_node_js_1.LimitNode.create(limit)),
|
|
166
|
+
});
|
|
167
|
+
}
|
|
101
168
|
/**
|
|
102
169
|
* Simply calls the given function passing `this` as the only argument.
|
|
103
170
|
*
|
|
@@ -198,7 +265,7 @@ class DeleteQueryBuilder {
|
|
|
198
265
|
const compildQuery = this.compile();
|
|
199
266
|
const query = compildQuery.query;
|
|
200
267
|
const result = await this.#props.executor.executeQuery(compildQuery, this.#props.queryId);
|
|
201
|
-
if (this.#props.
|
|
268
|
+
if (this.#props.executor.adapter.supportsReturning && query.returning) {
|
|
202
269
|
return result.rows;
|
|
203
270
|
}
|
|
204
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 '../index-nodeless.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 index_nodeless_js_1 = require("../index-nodeless.js");
|
|
13
|
+
const object_utils_js_1 = require("../util/object-utils.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: index_nodeless_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 index_nodeless_js_1 = require("../index-nodeless.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: index_nodeless_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,7 +426,7 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
423
426
|
* Return arbitrary expressions:
|
|
424
427
|
*
|
|
425
428
|
* ```ts
|
|
426
|
-
*
|
|
429
|
+
* import { sql } from 'kysely'
|
|
427
430
|
*
|
|
428
431
|
* const { id, full_name, first_pet_id } = await db
|
|
429
432
|
* .insertInto('person')
|
|
@@ -433,7 +436,7 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
433
436
|
* })
|
|
434
437
|
* .returning([
|
|
435
438
|
* 'id as id',
|
|
436
|
-
*
|
|
439
|
+
* sql<string>`concat(first_name, ' ', last_name)`.as('full_name'),
|
|
437
440
|
* (qb) => qb.selectFrom('pets').select('pet.id').limit(1).as('first_pet_id')
|
|
438
441
|
* ])
|
|
439
442
|
* .executeTakeFirst()
|
|
@@ -543,5 +546,4 @@ export interface InsertQueryBuilderProps {
|
|
|
543
546
|
readonly queryId: QueryId;
|
|
544
547
|
readonly queryNode: InsertQueryNode;
|
|
545
548
|
readonly executor: QueryExecutor;
|
|
546
|
-
readonly parseContext: ParseContext;
|
|
547
549
|
}
|