kysely 0.26.3 → 0.27.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/cjs/dialect/dialect-adapter-base.d.ts +8 -0
- package/dist/cjs/dialect/dialect-adapter-base.js +3 -0
- package/dist/cjs/dialect/dialect-adapter.d.ts +8 -0
- package/dist/cjs/dialect/mssql/mssql-adapter.d.ts +78 -0
- package/dist/cjs/dialect/mssql/mssql-adapter.js +30 -0
- package/dist/cjs/dialect/mssql/mssql-dialect-config.d.ts +143 -0
- package/dist/cjs/dialect/mssql/mssql-dialect-config.js +2 -0
- package/dist/cjs/dialect/mssql/mssql-dialect.d.ts +70 -0
- package/dist/cjs/dialect/mssql/mssql-dialect.js +65 -0
- package/dist/cjs/dialect/mssql/mssql-driver.d.ts +54 -0
- package/dist/cjs/dialect/mssql/mssql-driver.js +268 -0
- package/dist/cjs/dialect/mssql/mssql-introspector.d.ts +20 -0
- package/dist/cjs/dialect/mssql/mssql-introspector.js +99 -0
- package/dist/cjs/dialect/mssql/mssql-query-compiler.d.ts +11 -0
- package/dist/cjs/dialect/mssql/mssql-query-compiler.js +64 -0
- package/dist/cjs/dialect/mysql/mysql-query-compiler.d.ts +2 -0
- package/dist/cjs/dialect/mysql/mysql-query-compiler.js +28 -0
- package/dist/cjs/dialect/postgres/postgres-driver.js +1 -1
- package/dist/cjs/dialect/sqlite/sqlite-adapter.d.ts +1 -1
- package/dist/cjs/dialect/sqlite/sqlite-adapter.js +2 -1
- package/dist/cjs/dialect/sqlite/sqlite-dialect-config.d.ts +1 -0
- package/dist/cjs/dialect/sqlite/sqlite-driver.js +15 -2
- package/dist/cjs/driver/driver.d.ts +1 -1
- package/dist/cjs/driver/driver.js +1 -0
- package/dist/cjs/driver/runtime-driver.js +5 -1
- package/dist/cjs/driver/single-connection-provider.js +7 -8
- package/dist/cjs/expression/expression-builder.d.ts +66 -75
- package/dist/cjs/expression/expression-builder.js +8 -17
- package/dist/cjs/expression/expression-wrapper.d.ts +21 -11
- package/dist/cjs/expression/expression-wrapper.js +12 -0
- package/dist/cjs/helpers/mssql.d.ts +152 -0
- package/dist/cjs/helpers/mssql.js +160 -0
- package/dist/cjs/index.d.ts +7 -1
- package/dist/cjs/index.js +6 -0
- package/dist/cjs/migration/migrator.js +12 -16
- package/dist/cjs/operation-node/add-index-node.d.ts +21 -0
- package/dist/cjs/operation-node/add-index-node.js +31 -0
- package/dist/cjs/operation-node/alter-table-node.d.ts +5 -1
- package/dist/cjs/operation-node/column-definition-node.d.ts +1 -0
- package/dist/cjs/operation-node/column-update-node.d.ts +2 -3
- package/dist/cjs/operation-node/create-index-node.d.ts +1 -0
- package/dist/cjs/operation-node/create-table-node.d.ts +1 -0
- package/dist/cjs/operation-node/insert-query-node.d.ts +1 -0
- package/dist/cjs/operation-node/limit-node.d.ts +2 -3
- package/dist/cjs/operation-node/limit-node.js +1 -2
- package/dist/cjs/operation-node/offset-node.d.ts +2 -3
- package/dist/cjs/operation-node/offset-node.js +1 -2
- package/dist/cjs/operation-node/operation-node-transformer.d.ts +2 -0
- package/dist/cjs/operation-node/operation-node-transformer.js +19 -0
- package/dist/cjs/operation-node/operation-node-visitor.d.ts +2 -0
- package/dist/cjs/operation-node/operation-node-visitor.js +1 -0
- package/dist/cjs/operation-node/operation-node.d.ts +1 -1
- package/dist/cjs/operation-node/operator-node.d.ts +3 -3
- package/dist/cjs/operation-node/operator-node.js +2 -0
- package/dist/cjs/operation-node/select-modifier-node.d.ts +2 -1
- package/dist/cjs/operation-node/select-modifier-node.js +2 -1
- package/dist/cjs/operation-node/unique-constraint-node.d.ts +4 -1
- package/dist/cjs/operation-node/unique-constraint-node.js +8 -1
- package/dist/cjs/parser/binary-operation-parser.js +1 -1
- package/dist/cjs/parser/coalesce-parser.d.ts +12 -2
- package/dist/cjs/parser/reference-parser.d.ts +2 -1
- package/dist/cjs/parser/update-set-parser.d.ts +5 -2
- package/dist/cjs/parser/update-set-parser.js +13 -3
- package/dist/cjs/query-builder/aggregate-function-builder.d.ts +21 -4
- package/dist/cjs/query-builder/aggregate-function-builder.js +21 -0
- package/dist/cjs/query-builder/case-builder.d.ts +6 -5
- package/dist/cjs/query-builder/delete-query-builder.d.ts +8 -7
- package/dist/cjs/query-builder/delete-query-builder.js +4 -3
- package/dist/cjs/query-builder/function-module.d.ts +96 -25
- package/dist/cjs/query-builder/function-module.js +17 -3
- package/dist/cjs/query-builder/having-interface.d.ts +3 -5
- package/dist/cjs/query-builder/insert-query-builder.d.ts +34 -12
- package/dist/cjs/query-builder/insert-query-builder.js +16 -5
- package/dist/cjs/query-builder/insert-result.d.ts +8 -1
- package/dist/cjs/query-builder/insert-result.js +8 -1
- package/dist/cjs/query-builder/json-path-builder.d.ts +5 -3
- package/dist/cjs/query-builder/json-path-builder.js +9 -3
- package/dist/cjs/query-builder/on-conflict-builder.d.ts +58 -16
- package/dist/cjs/query-builder/on-conflict-builder.js +1 -6
- package/dist/cjs/query-builder/over-builder.d.ts +2 -2
- package/dist/cjs/query-builder/select-query-builder.d.ts +49 -31
- package/dist/cjs/query-builder/select-query-builder.js +12 -10
- package/dist/cjs/query-builder/update-query-builder.d.ts +23 -7
- package/dist/cjs/query-builder/update-query-builder.js +4 -4
- package/dist/cjs/query-builder/where-interface.d.ts +3 -3
- package/dist/cjs/query-compiler/default-query-compiler.d.ts +9 -1
- package/dist/cjs/query-compiler/default-query-compiler.js +73 -12
- package/dist/cjs/raw-builder/raw-builder.d.ts +11 -1
- package/dist/cjs/raw-builder/raw-builder.js +3 -0
- package/dist/cjs/raw-builder/sql.js +9 -2
- package/dist/cjs/schema/alter-table-add-index-builder.d.ts +104 -0
- package/dist/cjs/schema/alter-table-add-index-builder.js +146 -0
- package/dist/cjs/schema/alter-table-builder.d.ts +41 -1
- package/dist/cjs/schema/alter-table-builder.js +59 -2
- package/dist/cjs/schema/column-definition-builder.d.ts +25 -0
- package/dist/cjs/schema/column-definition-builder.js +27 -0
- package/dist/cjs/schema/create-index-builder.d.ts +23 -0
- package/dist/cjs/schema/create-index-builder.js +30 -0
- package/dist/cjs/schema/create-table-builder.d.ts +28 -2
- package/dist/cjs/schema/create-table-builder.js +38 -3
- package/dist/cjs/schema/unique-constraint-builder.d.ts +14 -0
- package/dist/cjs/schema/unique-constraint-builder.js +24 -0
- package/dist/cjs/util/log.js +5 -1
- package/dist/cjs/util/object-utils.d.ts +2 -2
- package/dist/cjs/util/object-utils.js +1 -1
- package/dist/cjs/util/type-utils.d.ts +27 -19
- package/dist/esm/dialect/dialect-adapter-base.d.ts +8 -0
- package/dist/esm/dialect/dialect-adapter-base.js +3 -0
- package/dist/esm/dialect/dialect-adapter.d.ts +8 -0
- package/dist/esm/dialect/mssql/mssql-adapter.d.ts +78 -0
- package/dist/esm/dialect/mssql/mssql-adapter.js +27 -0
- package/dist/esm/dialect/mssql/mssql-dialect-config.d.ts +143 -0
- package/dist/esm/dialect/mssql/mssql-dialect-config.js +2 -0
- package/dist/esm/dialect/mssql/mssql-dialect.d.ts +70 -0
- package/dist/esm/dialect/mssql/mssql-dialect.js +62 -0
- package/dist/esm/dialect/mssql/mssql-driver.d.ts +54 -0
- package/dist/esm/dialect/mssql/mssql-driver.js +265 -0
- package/dist/esm/dialect/mssql/mssql-introspector.d.ts +20 -0
- package/dist/esm/dialect/mssql/mssql-introspector.js +96 -0
- package/dist/esm/dialect/mssql/mssql-query-compiler.d.ts +11 -0
- package/dist/esm/dialect/mssql/mssql-query-compiler.js +61 -0
- package/dist/esm/dialect/mysql/mysql-query-compiler.d.ts +2 -0
- package/dist/esm/dialect/mysql/mysql-query-compiler.js +28 -0
- package/dist/esm/dialect/postgres/postgres-driver.js +1 -1
- package/dist/esm/dialect/sqlite/sqlite-adapter.d.ts +1 -1
- package/dist/esm/dialect/sqlite/sqlite-adapter.js +2 -1
- package/dist/esm/dialect/sqlite/sqlite-dialect-config.d.ts +1 -0
- package/dist/esm/dialect/sqlite/sqlite-driver.js +15 -2
- package/dist/esm/driver/driver.d.ts +1 -1
- package/dist/esm/driver/driver.js +1 -0
- package/dist/esm/driver/runtime-driver.js +5 -1
- package/dist/esm/driver/single-connection-provider.js +7 -8
- package/dist/esm/expression/expression-builder.d.ts +66 -75
- package/dist/esm/expression/expression-builder.js +10 -19
- package/dist/esm/expression/expression-wrapper.d.ts +21 -11
- package/dist/esm/expression/expression-wrapper.js +12 -0
- package/dist/esm/helpers/mssql.d.ts +152 -0
- package/dist/esm/helpers/mssql.js +155 -0
- package/dist/esm/index.d.ts +7 -1
- package/dist/esm/index.js +6 -0
- package/dist/esm/migration/migrator.js +12 -16
- package/dist/esm/operation-node/add-index-node.d.ts +21 -0
- package/dist/esm/operation-node/add-index-node.js +29 -0
- package/dist/esm/operation-node/alter-table-node.d.ts +5 -1
- package/dist/esm/operation-node/column-definition-node.d.ts +1 -0
- package/dist/esm/operation-node/column-update-node.d.ts +2 -3
- package/dist/esm/operation-node/create-index-node.d.ts +1 -0
- package/dist/esm/operation-node/create-table-node.d.ts +1 -0
- package/dist/esm/operation-node/insert-query-node.d.ts +1 -0
- package/dist/esm/operation-node/limit-node.d.ts +2 -3
- package/dist/esm/operation-node/limit-node.js +1 -2
- package/dist/esm/operation-node/offset-node.d.ts +2 -3
- package/dist/esm/operation-node/offset-node.js +1 -2
- package/dist/esm/operation-node/operation-node-transformer.d.ts +2 -0
- package/dist/esm/operation-node/operation-node-transformer.js +19 -0
- package/dist/esm/operation-node/operation-node-visitor.d.ts +2 -0
- package/dist/esm/operation-node/operation-node-visitor.js +1 -0
- package/dist/esm/operation-node/operation-node.d.ts +1 -1
- package/dist/esm/operation-node/operator-node.d.ts +3 -3
- package/dist/esm/operation-node/operator-node.js +2 -0
- package/dist/esm/operation-node/select-modifier-node.d.ts +2 -1
- package/dist/esm/operation-node/select-modifier-node.js +2 -1
- package/dist/esm/operation-node/unique-constraint-node.d.ts +4 -1
- package/dist/esm/operation-node/unique-constraint-node.js +8 -1
- package/dist/esm/parser/binary-operation-parser.js +1 -1
- package/dist/esm/parser/coalesce-parser.d.ts +12 -2
- package/dist/esm/parser/reference-parser.d.ts +2 -1
- package/dist/esm/parser/update-set-parser.d.ts +5 -2
- package/dist/esm/parser/update-set-parser.js +10 -1
- package/dist/esm/query-builder/aggregate-function-builder.d.ts +21 -4
- package/dist/esm/query-builder/aggregate-function-builder.js +21 -0
- package/dist/esm/query-builder/case-builder.d.ts +6 -5
- package/dist/esm/query-builder/delete-query-builder.d.ts +8 -7
- package/dist/esm/query-builder/delete-query-builder.js +4 -3
- package/dist/esm/query-builder/function-module.d.ts +96 -25
- package/dist/esm/query-builder/function-module.js +17 -3
- package/dist/esm/query-builder/having-interface.d.ts +3 -5
- package/dist/esm/query-builder/insert-query-builder.d.ts +34 -12
- package/dist/esm/query-builder/insert-query-builder.js +17 -6
- package/dist/esm/query-builder/insert-result.d.ts +8 -1
- package/dist/esm/query-builder/insert-result.js +8 -1
- package/dist/esm/query-builder/json-path-builder.d.ts +5 -3
- package/dist/esm/query-builder/json-path-builder.js +9 -3
- package/dist/esm/query-builder/on-conflict-builder.d.ts +58 -16
- package/dist/esm/query-builder/on-conflict-builder.js +2 -7
- package/dist/esm/query-builder/over-builder.d.ts +2 -2
- package/dist/esm/query-builder/select-query-builder.d.ts +49 -31
- package/dist/esm/query-builder/select-query-builder.js +13 -11
- package/dist/esm/query-builder/update-query-builder.d.ts +23 -7
- package/dist/esm/query-builder/update-query-builder.js +5 -5
- package/dist/esm/query-builder/where-interface.d.ts +3 -3
- package/dist/esm/query-compiler/default-query-compiler.d.ts +9 -1
- package/dist/esm/query-compiler/default-query-compiler.js +73 -12
- package/dist/esm/raw-builder/raw-builder.d.ts +11 -1
- package/dist/esm/raw-builder/raw-builder.js +3 -0
- package/dist/esm/raw-builder/sql.js +9 -2
- package/dist/esm/schema/alter-table-add-index-builder.d.ts +104 -0
- package/dist/esm/schema/alter-table-add-index-builder.js +143 -0
- package/dist/esm/schema/alter-table-builder.d.ts +41 -1
- package/dist/esm/schema/alter-table-builder.js +59 -2
- package/dist/esm/schema/column-definition-builder.d.ts +25 -0
- package/dist/esm/schema/column-definition-builder.js +27 -0
- package/dist/esm/schema/create-index-builder.d.ts +23 -0
- package/dist/esm/schema/create-index-builder.js +30 -0
- package/dist/esm/schema/create-table-builder.d.ts +28 -2
- package/dist/esm/schema/create-table-builder.js +38 -3
- package/dist/esm/schema/unique-constraint-builder.d.ts +14 -0
- package/dist/esm/schema/unique-constraint-builder.js +21 -0
- package/dist/esm/util/log.js +5 -1
- package/dist/esm/util/object-utils.d.ts +2 -2
- package/dist/esm/util/object-utils.js +1 -1
- package/dist/esm/util/type-utils.d.ts +27 -19
- package/helpers/mssql.d.ts +1 -0
- package/helpers/mssql.js +1 -0
- package/package.json +15 -10
|
@@ -5,7 +5,7 @@ import { InsertObjectOrList, InsertObjectOrListFactory } from '../parser/insert-
|
|
|
5
5
|
import { InsertQueryNode } from '../operation-node/insert-query-node.js';
|
|
6
6
|
import { QueryNode } from '../operation-node/query-node.js';
|
|
7
7
|
import { NarrowPartial, SimplifyResult, SimplifySingleResult } from '../util/type-utils.js';
|
|
8
|
-
import {
|
|
8
|
+
import { UpdateObjectExpression } from '../parser/update-set-parser.js';
|
|
9
9
|
import { Compilable } from '../util/compilable.js';
|
|
10
10
|
import { QueryExecutor } from '../query-executor/query-executor.js';
|
|
11
11
|
import { QueryId } from '../util/query-id.js';
|
|
@@ -60,13 +60,18 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
60
60
|
* })
|
|
61
61
|
* .executeTakeFirst()
|
|
62
62
|
*
|
|
63
|
+
* // `insertId` is only available on dialects that
|
|
64
|
+
* // automatically return the id of the inserted row
|
|
65
|
+
* // such as MySQL and SQLite. On PostgreSQL, for example,
|
|
66
|
+
* // you need to add a `returning` clause to the query to
|
|
67
|
+
* // get anything out. See the "returning data" example.
|
|
63
68
|
* console.log(result.insertId)
|
|
64
69
|
* ```
|
|
65
70
|
*
|
|
66
|
-
* The generated SQL (
|
|
71
|
+
* The generated SQL (MySQL):
|
|
67
72
|
*
|
|
68
73
|
* ```sql
|
|
69
|
-
* insert into
|
|
74
|
+
* insert into `person` (`first_name`, `last_name`, `age`) values (?, ?, ?)
|
|
70
75
|
* ```
|
|
71
76
|
*
|
|
72
77
|
* <!-- siteExample("insert", "Multiple rows", 20) -->
|
|
@@ -131,11 +136,14 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
131
136
|
* ```ts
|
|
132
137
|
* import { sql } from 'kysely'
|
|
133
138
|
*
|
|
139
|
+
* const ani = "Ani"
|
|
140
|
+
* const ston = "ston"
|
|
141
|
+
*
|
|
134
142
|
* const result = await db
|
|
135
143
|
* .insertInto('person')
|
|
136
144
|
* .values(({ ref, selectFrom, fn }) => ({
|
|
137
145
|
* first_name: 'Jennifer',
|
|
138
|
-
* last_name: sql
|
|
146
|
+
* last_name: sql`concat(${ani}, ${ston})`,
|
|
139
147
|
* middle_name: ref('first_name'),
|
|
140
148
|
* age: selectFrom('person')
|
|
141
149
|
* .select(fn.avg<number>('age')
|
|
@@ -147,8 +155,18 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
147
155
|
* The generated SQL (PostgreSQL):
|
|
148
156
|
*
|
|
149
157
|
* ```sql
|
|
150
|
-
* insert into "person" (
|
|
151
|
-
*
|
|
158
|
+
* insert into "person" (
|
|
159
|
+
* "first_name",
|
|
160
|
+
* "last_name",
|
|
161
|
+
* "middle_name",
|
|
162
|
+
* "age"
|
|
163
|
+
* )
|
|
164
|
+
* values (
|
|
165
|
+
* $1,
|
|
166
|
+
* concat($2, $3),
|
|
167
|
+
* "first_name",
|
|
168
|
+
* (select avg("age") as "avg_age" from "person")
|
|
169
|
+
* )
|
|
152
170
|
* ```
|
|
153
171
|
*
|
|
154
172
|
* You can also use the callback version of subqueries or raw expressions:
|
|
@@ -208,7 +226,7 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
208
226
|
* .select((eb) => [
|
|
209
227
|
* 'pet.name',
|
|
210
228
|
* eb.val('Petson').as('last_name'),
|
|
211
|
-
* eb.
|
|
229
|
+
* eb.lit(7).as('age'),
|
|
212
230
|
* ])
|
|
213
231
|
* )
|
|
214
232
|
* .execute()
|
|
@@ -218,10 +236,14 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
218
236
|
*
|
|
219
237
|
* ```sql
|
|
220
238
|
* insert into "person" ("first_name", "last_name", "age")
|
|
221
|
-
* select "pet"."name", $1 as "
|
|
239
|
+
* select "pet"."name", $1 as "last_name", 7 as "age from "pet"
|
|
222
240
|
* ```
|
|
223
241
|
*/
|
|
224
242
|
expression(expression: ExpressionOrFactory<DB, TB, any>): InsertQueryBuilder<DB, TB, O>;
|
|
243
|
+
/**
|
|
244
|
+
* Creates an `insert into "person" default values` query.
|
|
245
|
+
*/
|
|
246
|
+
defaultValues(): InsertQueryBuilder<DB, TB, O>;
|
|
225
247
|
/**
|
|
226
248
|
* Changes an `insert into` query to an `insert ignore into` query.
|
|
227
249
|
*
|
|
@@ -414,7 +436,7 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
414
436
|
* .onDuplicateKeyUpdate({ species: 'hamster' })
|
|
415
437
|
* ```
|
|
416
438
|
*/
|
|
417
|
-
onDuplicateKeyUpdate(update:
|
|
439
|
+
onDuplicateKeyUpdate(update: UpdateObjectExpression<DB, TB, TB>): InsertQueryBuilder<DB, TB, O>;
|
|
418
440
|
/**
|
|
419
441
|
* Allows you to return data from modified rows.
|
|
420
442
|
*
|
|
@@ -545,10 +567,10 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
545
567
|
/**
|
|
546
568
|
* Change the output type of the query.
|
|
547
569
|
*
|
|
548
|
-
*
|
|
549
|
-
*
|
|
570
|
+
* This method call doesn't change the SQL in any way. This methods simply
|
|
571
|
+
* returns a copy of this `InsertQueryBuilder` with a new output type.
|
|
550
572
|
*/
|
|
551
|
-
$castTo<
|
|
573
|
+
$castTo<C>(): InsertQueryBuilder<DB, TB, C>;
|
|
552
574
|
/**
|
|
553
575
|
* Narrows (parts of) the output type of the query.
|
|
554
576
|
*
|
|
@@ -3,7 +3,7 @@ import { parseSelectArg, parseSelectAll, } from '../parser/select-parser.js';
|
|
|
3
3
|
import { parseInsertExpression, } from '../parser/insert-values-parser.js';
|
|
4
4
|
import { InsertQueryNode } from '../operation-node/insert-query-node.js';
|
|
5
5
|
import { QueryNode } from '../operation-node/query-node.js';
|
|
6
|
-
import {
|
|
6
|
+
import { parseUpdateObjectExpression, } from '../parser/update-set-parser.js';
|
|
7
7
|
import { preventAwait } from '../util/prevent-await.js';
|
|
8
8
|
import { freeze } from '../util/object-utils.js';
|
|
9
9
|
import { OnDuplicateKeyNode } from '../operation-node/on-duplicate-key-node.js';
|
|
@@ -75,7 +75,7 @@ export class InsertQueryBuilder {
|
|
|
75
75
|
* .select((eb) => [
|
|
76
76
|
* 'pet.name',
|
|
77
77
|
* eb.val('Petson').as('last_name'),
|
|
78
|
-
* eb.
|
|
78
|
+
* eb.lit(7).as('age'),
|
|
79
79
|
* ])
|
|
80
80
|
* )
|
|
81
81
|
* .execute()
|
|
@@ -85,7 +85,7 @@ export class InsertQueryBuilder {
|
|
|
85
85
|
*
|
|
86
86
|
* ```sql
|
|
87
87
|
* insert into "person" ("first_name", "last_name", "age")
|
|
88
|
-
* select "pet"."name", $1 as "
|
|
88
|
+
* select "pet"."name", $1 as "last_name", 7 as "age from "pet"
|
|
89
89
|
* ```
|
|
90
90
|
*/
|
|
91
91
|
expression(expression) {
|
|
@@ -96,6 +96,17 @@ export class InsertQueryBuilder {
|
|
|
96
96
|
}),
|
|
97
97
|
});
|
|
98
98
|
}
|
|
99
|
+
/**
|
|
100
|
+
* Creates an `insert into "person" default values` query.
|
|
101
|
+
*/
|
|
102
|
+
defaultValues() {
|
|
103
|
+
return new InsertQueryBuilder({
|
|
104
|
+
...this.#props,
|
|
105
|
+
queryNode: InsertQueryNode.cloneWith(this.#props.queryNode, {
|
|
106
|
+
defaultValues: true,
|
|
107
|
+
}),
|
|
108
|
+
});
|
|
109
|
+
}
|
|
99
110
|
/**
|
|
100
111
|
* Changes an `insert into` query to an `insert ignore into` query.
|
|
101
112
|
*
|
|
@@ -308,7 +319,7 @@ export class InsertQueryBuilder {
|
|
|
308
319
|
return new InsertQueryBuilder({
|
|
309
320
|
...this.#props,
|
|
310
321
|
queryNode: InsertQueryNode.cloneWith(this.#props.queryNode, {
|
|
311
|
-
onDuplicateKey: OnDuplicateKeyNode.create(
|
|
322
|
+
onDuplicateKey: OnDuplicateKeyNode.create(parseUpdateObjectExpression(update)),
|
|
312
323
|
}),
|
|
313
324
|
});
|
|
314
325
|
}
|
|
@@ -396,8 +407,8 @@ export class InsertQueryBuilder {
|
|
|
396
407
|
/**
|
|
397
408
|
* Change the output type of the query.
|
|
398
409
|
*
|
|
399
|
-
*
|
|
400
|
-
*
|
|
410
|
+
* This method call doesn't change the SQL in any way. This methods simply
|
|
411
|
+
* returns a copy of this `InsertQueryBuilder` with a new output type.
|
|
401
412
|
*/
|
|
402
413
|
$castTo() {
|
|
403
414
|
return new InsertQueryBuilder(this.#props);
|
|
@@ -23,7 +23,14 @@
|
|
|
23
23
|
*/
|
|
24
24
|
export declare class InsertResult {
|
|
25
25
|
/**
|
|
26
|
-
* The auto incrementing primary key
|
|
26
|
+
* The auto incrementing primary key of the inserted row.
|
|
27
|
+
*
|
|
28
|
+
* This property can be undefined when the query contains an `on conflict`
|
|
29
|
+
* clause that makes the query succeed even when nothing gets inserted.
|
|
30
|
+
*
|
|
31
|
+
* This property is always undefined on dialects like PostgreSQL that
|
|
32
|
+
* don't return the inserted id by default. On those dialects you need
|
|
33
|
+
* to use the {@link ReturningInterface.returning | returning} method.
|
|
27
34
|
*/
|
|
28
35
|
readonly insertId: bigint | undefined;
|
|
29
36
|
/**
|
|
@@ -24,7 +24,14 @@
|
|
|
24
24
|
*/
|
|
25
25
|
export class InsertResult {
|
|
26
26
|
/**
|
|
27
|
-
* The auto incrementing primary key
|
|
27
|
+
* The auto incrementing primary key of the inserted row.
|
|
28
|
+
*
|
|
29
|
+
* This property can be undefined when the query contains an `on conflict`
|
|
30
|
+
* clause that makes the query succeed even when nothing gets inserted.
|
|
31
|
+
*
|
|
32
|
+
* This property is always undefined on dialects like PostgreSQL that
|
|
33
|
+
* don't return the inserted id by default. On those dialects you need
|
|
34
|
+
* to use the {@link ReturningInterface.returning | returning} method.
|
|
28
35
|
*/
|
|
29
36
|
insertId;
|
|
30
37
|
/**
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { AliasableExpression, AliasedExpression, Expression } from '../expression/expression.js';
|
|
2
2
|
import { AliasNode } from '../operation-node/alias-node.js';
|
|
3
|
+
import { JSONPathNode } from '../operation-node/json-path-node.js';
|
|
3
4
|
import { JSONReferenceNode } from '../operation-node/json-reference-node.js';
|
|
4
5
|
import { OperationNode } from '../operation-node/operation-node.js';
|
|
5
6
|
export declare class JSONPathBuilder<S, O = S> {
|
|
6
7
|
#private;
|
|
7
|
-
constructor(node: JSONReferenceNode);
|
|
8
|
+
constructor(node: JSONReferenceNode | JSONPathNode);
|
|
8
9
|
/**
|
|
9
10
|
* Access an element of a JSON array in a specific location.
|
|
10
11
|
*
|
|
@@ -123,7 +124,7 @@ export declare class JSONPathBuilder<S, O = S> {
|
|
|
123
124
|
}
|
|
124
125
|
export declare class TraversedJSONPathBuilder<S, O> extends JSONPathBuilder<S, O> implements AliasableExpression<O> {
|
|
125
126
|
#private;
|
|
126
|
-
constructor(node: JSONReferenceNode);
|
|
127
|
+
constructor(node: JSONReferenceNode | JSONPathNode);
|
|
127
128
|
/** @private */
|
|
128
129
|
/**
|
|
129
130
|
* All expressions need to have this getter for complicated type-related reasons.
|
|
@@ -231,7 +232,8 @@ export declare class TraversedJSONPathBuilder<S, O> extends JSONPathBuilder<S, O
|
|
|
231
232
|
* This method call doesn't change the SQL in any way. This methods simply
|
|
232
233
|
* returns a copy of this `JSONPathBuilder` with a new output type.
|
|
233
234
|
*/
|
|
234
|
-
$castTo<
|
|
235
|
+
$castTo<C>(): JSONPathBuilder<C>;
|
|
236
|
+
$notNull(): JSONPathBuilder<Exclude<O, null>>;
|
|
235
237
|
/**
|
|
236
238
|
* Creates the OperationNode that describes how to compile this expression into SQL.
|
|
237
239
|
*
|
|
@@ -132,9 +132,12 @@ export class JSONPathBuilder {
|
|
|
132
132
|
return this.#createBuilderWithPathLeg('Member', key);
|
|
133
133
|
}
|
|
134
134
|
#createBuilderWithPathLeg(legType, value) {
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
135
|
+
if (JSONReferenceNode.is(this.#node)) {
|
|
136
|
+
return new TraversedJSONPathBuilder(JSONReferenceNode.cloneWithTraversal(this.#node, JSONPathNode.is(this.#node.traversal)
|
|
137
|
+
? JSONPathNode.cloneWithLeg(this.#node.traversal, JSONPathLegNode.create(legType, value))
|
|
138
|
+
: JSONOperatorChainNode.cloneWithValue(this.#node.traversal, ValueNode.createImmediate(value))));
|
|
139
|
+
}
|
|
140
|
+
return new TraversedJSONPathBuilder(JSONPathNode.cloneWithLeg(this.#node, JSONPathLegNode.create(legType, value)));
|
|
138
141
|
}
|
|
139
142
|
}
|
|
140
143
|
export class TraversedJSONPathBuilder extends JSONPathBuilder {
|
|
@@ -159,6 +162,9 @@ export class TraversedJSONPathBuilder extends JSONPathBuilder {
|
|
|
159
162
|
$castTo() {
|
|
160
163
|
return new JSONPathBuilder(this.#node);
|
|
161
164
|
}
|
|
165
|
+
$notNull() {
|
|
166
|
+
return new JSONPathBuilder(this.#node);
|
|
167
|
+
}
|
|
162
168
|
toOperationNode() {
|
|
163
169
|
return this.#node;
|
|
164
170
|
}
|
|
@@ -4,7 +4,8 @@ import { OperationNodeSource } from '../operation-node/operation-node-source.js'
|
|
|
4
4
|
import { ComparisonOperatorExpression, OperandValueExpressionOrList } from '../parser/binary-operation-parser.js';
|
|
5
5
|
import { ExpressionOrFactory } from '../parser/expression-parser.js';
|
|
6
6
|
import { ReferenceExpression } from '../parser/reference-parser.js';
|
|
7
|
-
import {
|
|
7
|
+
import { UpdateObjectExpression } from '../parser/update-set-parser.js';
|
|
8
|
+
import { Updateable } from '../util/column-type.js';
|
|
8
9
|
import { AnyColumn, SqlBool } from '../util/type-utils.js';
|
|
9
10
|
import { WhereInterface } from './where-interface.js';
|
|
10
11
|
export declare class OnConflictBuilder<DB, TB extends keyof DB> implements WhereInterface<DB, TB> {
|
|
@@ -40,12 +41,6 @@ export declare class OnConflictBuilder<DB, TB extends keyof DB> implements Where
|
|
|
40
41
|
* methods for alternative ways to specify the conflict target.
|
|
41
42
|
*/
|
|
42
43
|
expression(expression: Expression<any>): OnConflictBuilder<DB, TB>;
|
|
43
|
-
/**
|
|
44
|
-
* Specify an index predicate for the index target.
|
|
45
|
-
*
|
|
46
|
-
* See {@link WhereInterface.where} for more info.
|
|
47
|
-
*/
|
|
48
|
-
where<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): OnConflictBuilder<DB, TB>;
|
|
49
44
|
/**
|
|
50
45
|
* Adds a `where` expression to the query.
|
|
51
46
|
*
|
|
@@ -345,13 +340,60 @@ export declare class OnConflictBuilder<DB, TB extends keyof DB> implements Where
|
|
|
345
340
|
* .execute()
|
|
346
341
|
* ```
|
|
347
342
|
*/
|
|
348
|
-
where
|
|
343
|
+
where<RE extends ReferenceExpression<DB, TB>, VE extends OperandValueExpressionOrList<DB, TB, RE>>(lhs: RE, op: ComparisonOperatorExpression, rhs: VE): OnConflictBuilder<DB, TB>;
|
|
344
|
+
where<E extends ExpressionOrFactory<DB, TB, SqlBool>>(expression: E): OnConflictBuilder<DB, TB>;
|
|
349
345
|
/**
|
|
350
|
-
*
|
|
346
|
+
* Adds a `where` clause where both sides of the operator are references
|
|
347
|
+
* to columns.
|
|
351
348
|
*
|
|
352
|
-
*
|
|
349
|
+
* The normal `where` method treats the right hand side argument as a
|
|
350
|
+
* value by default. `whereRef` treats it as a column reference. This method is
|
|
351
|
+
* expecially useful with joins and correlated subqueries.
|
|
352
|
+
*
|
|
353
|
+
* ### Examples
|
|
354
|
+
*
|
|
355
|
+
* Usage with a join:
|
|
356
|
+
*
|
|
357
|
+
* ```ts
|
|
358
|
+
* db.selectFrom(['person', 'pet'])
|
|
359
|
+
* .selectAll()
|
|
360
|
+
* .whereRef('person.first_name', '=', 'pet.name')
|
|
361
|
+
* ```
|
|
362
|
+
*
|
|
363
|
+
* The generated SQL (PostgreSQL):
|
|
364
|
+
*
|
|
365
|
+
* ```sql
|
|
366
|
+
* select * from "person", "pet" where "person"."first_name" = "pet"."name"
|
|
367
|
+
* ```
|
|
368
|
+
*
|
|
369
|
+
* Usage in a subquery:
|
|
370
|
+
*
|
|
371
|
+
* ```ts
|
|
372
|
+
* const persons = await db
|
|
373
|
+
* .selectFrom('person')
|
|
374
|
+
* .selectAll('person')
|
|
375
|
+
* .select((eb) => eb
|
|
376
|
+
* .selectFrom('pet')
|
|
377
|
+
* .select('name')
|
|
378
|
+
* .whereRef('pet.owner_id', '=', 'person.id')
|
|
379
|
+
* .limit(1)
|
|
380
|
+
* .as('pet_name')
|
|
381
|
+
* )
|
|
382
|
+
* .execute()
|
|
383
|
+
* ```
|
|
384
|
+
*
|
|
385
|
+
* The generated SQL (PostgreSQL):
|
|
386
|
+
*
|
|
387
|
+
* ```sql
|
|
388
|
+
* select "person".*, (
|
|
389
|
+
* select "name"
|
|
390
|
+
* from "pet"
|
|
391
|
+
* where "pet"."owner_id" = "person"."id"
|
|
392
|
+
* limit $1
|
|
393
|
+
* ) as "pet_name"
|
|
394
|
+
* from "person"
|
|
353
395
|
*/
|
|
354
|
-
whereRef
|
|
396
|
+
whereRef<LRE extends ReferenceExpression<DB, TB>, RRE extends ReferenceExpression<DB, TB>>(lhs: LRE, op: ComparisonOperatorExpression, rhs: RRE): OnConflictBuilder<DB, TB>;
|
|
355
397
|
/**
|
|
356
398
|
* Clears all where expressions from the query.
|
|
357
399
|
*
|
|
@@ -435,7 +477,7 @@ export declare class OnConflictBuilder<DB, TB extends keyof DB> implements Where
|
|
|
435
477
|
* )
|
|
436
478
|
* ```
|
|
437
479
|
*/
|
|
438
|
-
doUpdateSet(update:
|
|
480
|
+
doUpdateSet(update: UpdateObjectExpression<OnConflictDatabase<DB, TB>, OnConflictTables<TB>, OnConflictTables<TB>>): OnConflictUpdateBuilder<OnConflictDatabase<DB, TB>, OnConflictTables<TB>>;
|
|
439
481
|
/**
|
|
440
482
|
* Simply calls the provided function passing `this` as the only argument. `$call` returns
|
|
441
483
|
* what the provided function returns.
|
|
@@ -446,7 +488,7 @@ export interface OnConflictBuilderProps {
|
|
|
446
488
|
readonly onConflictNode: OnConflictNode;
|
|
447
489
|
}
|
|
448
490
|
export type OnConflictDatabase<DB, TB extends keyof DB> = {
|
|
449
|
-
[K in keyof DB | 'excluded']: K extends keyof DB ? DB[K] : DB[TB]
|
|
491
|
+
[K in keyof DB | 'excluded']: Updateable<K extends keyof DB ? DB[K] : DB[TB]>;
|
|
450
492
|
};
|
|
451
493
|
export type OnConflictTables<TB> = TB | 'excluded';
|
|
452
494
|
export declare class OnConflictDoNothingBuilder<DB, TB extends keyof DB> implements OperationNodeSource {
|
|
@@ -462,7 +504,7 @@ export declare class OnConflictUpdateBuilder<DB, TB extends keyof DB> implements
|
|
|
462
504
|
*
|
|
463
505
|
* See {@link WhereInterface.where} for more info.
|
|
464
506
|
*/
|
|
465
|
-
where<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs:
|
|
507
|
+
where<RE extends ReferenceExpression<DB, TB>, VE extends OperandValueExpressionOrList<DB, TB, RE>>(lhs: RE, op: ComparisonOperatorExpression, rhs: VE): OnConflictUpdateBuilder<DB, TB>;
|
|
466
508
|
/**
|
|
467
509
|
* Adds a `where` expression to the query.
|
|
468
510
|
*
|
|
@@ -762,13 +804,13 @@ export declare class OnConflictUpdateBuilder<DB, TB extends keyof DB> implements
|
|
|
762
804
|
* .execute()
|
|
763
805
|
* ```
|
|
764
806
|
*/
|
|
765
|
-
where
|
|
807
|
+
where<E extends ExpressionOrFactory<DB, TB, SqlBool>>(expression: E): OnConflictUpdateBuilder<DB, TB>;
|
|
766
808
|
/**
|
|
767
809
|
* Specify a where condition for the update operation.
|
|
768
810
|
*
|
|
769
811
|
* See {@link WhereInterface.whereRef} for more info.
|
|
770
812
|
*/
|
|
771
|
-
whereRef
|
|
813
|
+
whereRef<LRE extends ReferenceExpression<DB, TB>, RRE extends ReferenceExpression<DB, TB>>(lhs: LRE, op: ComparisonOperatorExpression, rhs: RRE): OnConflictUpdateBuilder<DB, TB>;
|
|
772
814
|
/**
|
|
773
815
|
* Clears all where expressions from the query.
|
|
774
816
|
*
|
|
@@ -3,7 +3,7 @@ import { ColumnNode } from '../operation-node/column-node.js';
|
|
|
3
3
|
import { IdentifierNode } from '../operation-node/identifier-node.js';
|
|
4
4
|
import { OnConflictNode } from '../operation-node/on-conflict-node.js';
|
|
5
5
|
import { parseValueBinaryOperationOrExpression, parseReferentialBinaryOperation, } from '../parser/binary-operation-parser.js';
|
|
6
|
-
import {
|
|
6
|
+
import { parseUpdateObjectExpression, } from '../parser/update-set-parser.js';
|
|
7
7
|
import { freeze } from '../util/object-utils.js';
|
|
8
8
|
import { preventAwait } from '../util/prevent-await.js';
|
|
9
9
|
export class OnConflictBuilder {
|
|
@@ -81,11 +81,6 @@ export class OnConflictBuilder {
|
|
|
81
81
|
onConflictNode: OnConflictNode.cloneWithIndexWhere(this.#props.onConflictNode, parseValueBinaryOperationOrExpression(args)),
|
|
82
82
|
});
|
|
83
83
|
}
|
|
84
|
-
/**
|
|
85
|
-
* Specify an index predicate for the index target.
|
|
86
|
-
*
|
|
87
|
-
* See {@link WhereInterface.whereRef} for more info.
|
|
88
|
-
*/
|
|
89
84
|
whereRef(lhs, op, rhs) {
|
|
90
85
|
return new OnConflictBuilder({
|
|
91
86
|
...this.#props,
|
|
@@ -173,7 +168,7 @@ export class OnConflictBuilder {
|
|
|
173
168
|
return new OnConflictUpdateBuilder({
|
|
174
169
|
...this.#props,
|
|
175
170
|
onConflictNode: OnConflictNode.cloneWith(this.#props.onConflictNode, {
|
|
176
|
-
updates:
|
|
171
|
+
updates: parseUpdateObjectExpression(update),
|
|
177
172
|
}),
|
|
178
173
|
});
|
|
179
174
|
}
|
|
@@ -28,7 +28,7 @@ export declare class OverBuilder<DB, TB extends keyof DB> implements OperationNo
|
|
|
28
28
|
* from "person"
|
|
29
29
|
* ```
|
|
30
30
|
*/
|
|
31
|
-
orderBy
|
|
31
|
+
orderBy<OE extends StringReference<DB, TB> | DynamicReferenceBuilder<any>>(orderBy: OE, direction?: OrderByDirectionExpression): OverBuilder<DB, TB>;
|
|
32
32
|
/**
|
|
33
33
|
* Adds partition by clause item/s inside the over function.
|
|
34
34
|
*
|
|
@@ -51,7 +51,7 @@ export declare class OverBuilder<DB, TB extends keyof DB> implements OperationNo
|
|
|
51
51
|
* ```
|
|
52
52
|
*/
|
|
53
53
|
partitionBy(partitionBy: ReadonlyArray<PartitionByExpression<DB, TB>>): OverBuilder<DB, TB>;
|
|
54
|
-
partitionBy
|
|
54
|
+
partitionBy<PE extends PartitionByExpression<DB, TB>>(partitionBy: PE): OverBuilder<DB, TB>;
|
|
55
55
|
/**
|
|
56
56
|
* Simply calls the provided function passing `this` as the only argument. `$call` returns
|
|
57
57
|
* what the provided function returns.
|