kysely 0.3.4 → 0.3.9
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/.prettierignore +1 -0
- package/README.md +9 -0
- package/dist/cjs/dialect/postgres/postgres-driver.js +2 -1
- package/dist/cjs/driver/driver-config.d.ts +6 -0
- package/dist/cjs/index.d.ts +11 -0
- package/dist/cjs/index.js +1 -0
- package/dist/cjs/kysely.d.ts +25 -0
- package/dist/cjs/kysely.js +27 -0
- package/dist/cjs/operation-node/operation-node-transformer.js +2 -1
- package/dist/cjs/operation-node/select-query-node.d.ts +4 -2
- package/dist/cjs/operation-node/select-query-node.js +9 -1
- package/dist/cjs/parser/filter-parser.d.ts +6 -7
- package/dist/cjs/parser/filter-parser.js +10 -19
- package/dist/cjs/parser/insert-values-parser.d.ts +9 -1
- package/dist/cjs/parser/insert-values-parser.js +9 -5
- package/dist/cjs/parser/join-parser.d.ts +2 -2
- package/dist/cjs/parser/join-parser.js +1 -1
- package/dist/cjs/parser/mutation-parser.d.ts +2 -3
- package/dist/cjs/parser/reference-parser.d.ts +8 -3
- package/dist/cjs/parser/returning-parser.d.ts +2 -2
- package/dist/cjs/parser/select-parser.d.ts +6 -5
- package/dist/cjs/parser/select-parser.js +1 -1
- package/dist/cjs/parser/table-parser.d.ts +2 -2
- package/dist/cjs/parser/value-parser.d.ts +6 -7
- package/dist/cjs/parser/value-parser.js +3 -1
- package/dist/cjs/parser/with-parser.d.ts +2 -1
- package/dist/cjs/query-builder/join-builder.d.ts +9 -9
- package/dist/cjs/query-builder/join-builder.js +8 -8
- package/dist/cjs/query-builder/query-builder.d.ts +202 -106
- package/dist/cjs/query-builder/query-builder.js +44 -25
- package/dist/cjs/query-builder/type-utils.d.ts +23 -6
- package/dist/cjs/query-compiler/default-query-compiler.js +7 -6
- package/dist/cjs/query-creator.d.ts +2 -0
- package/dist/cjs/query-creator.js +2 -0
- package/dist/cjs/schema/alter-table-builder.d.ts +3 -2
- package/dist/cjs/schema/column-definition-builder.d.ts +3 -3
- package/dist/cjs/util/generated-placeholder.d.ts +3 -0
- package/dist/cjs/util/generated-placeholder.js +11 -0
- package/dist/cjs/util/object-utils.d.ts +1 -0
- package/dist/cjs/util/object-utils.js +2 -1
- package/dist/esm/dialect/postgres/postgres-driver.js +2 -1
- package/dist/esm/driver/driver-config.d.ts +6 -0
- package/dist/esm/index.d.ts +11 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/kysely.d.ts +25 -0
- package/dist/esm/kysely.js +27 -0
- package/dist/esm/operation-node/operation-node-transformer.js +2 -1
- package/dist/esm/operation-node/select-query-node.d.ts +4 -2
- package/dist/esm/operation-node/select-query-node.js +9 -1
- package/dist/esm/parser/filter-parser.d.ts +6 -7
- package/dist/esm/parser/filter-parser.js +5 -14
- package/dist/esm/parser/insert-values-parser.d.ts +9 -1
- package/dist/esm/parser/insert-values-parser.js +7 -3
- package/dist/esm/parser/join-parser.d.ts +2 -2
- package/dist/esm/parser/join-parser.js +2 -2
- package/dist/esm/parser/mutation-parser.d.ts +2 -3
- package/dist/esm/parser/reference-parser.d.ts +8 -3
- package/dist/esm/parser/reference-parser.js +1 -1
- package/dist/esm/parser/returning-parser.d.ts +2 -2
- package/dist/esm/parser/select-parser.d.ts +6 -5
- package/dist/esm/parser/select-parser.js +2 -2
- package/dist/esm/parser/table-parser.d.ts +2 -2
- package/dist/esm/parser/value-parser.d.ts +6 -7
- package/dist/esm/parser/value-parser.js +4 -2
- package/dist/esm/parser/with-parser.d.ts +2 -1
- package/dist/esm/query-builder/join-builder.d.ts +9 -9
- package/dist/esm/query-builder/join-builder.js +9 -9
- package/dist/esm/query-builder/query-builder.d.ts +202 -106
- package/dist/esm/query-builder/query-builder.js +46 -27
- package/dist/esm/query-builder/type-utils.d.ts +23 -6
- package/dist/esm/query-compiler/default-query-compiler.js +7 -6
- package/dist/esm/query-creator.d.ts +2 -0
- package/dist/esm/query-creator.js +2 -0
- package/dist/esm/schema/alter-table-builder.d.ts +3 -2
- package/dist/esm/schema/column-definition-builder.d.ts +3 -3
- package/dist/esm/util/generated-placeholder.d.ts +3 -0
- package/dist/esm/util/generated-placeholder.js +7 -0
- package/dist/esm/util/object-utils.d.ts +1 -0
- package/dist/esm/util/object-utils.js +1 -1
- package/package.json +2 -2
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { AliasNode } from '../operation-node/alias-node.js';
|
|
2
2
|
import { OperationNodeSource } from '../operation-node/operation-node-source.js';
|
|
3
3
|
import { CompiledQuery } from '../query-compiler/compiled-query.js';
|
|
4
|
-
import {
|
|
4
|
+
import { JoinCallbackExpression, JoinReferenceExpression } from '../parser/join-parser.js';
|
|
5
5
|
import { TableExpression, QueryBuilderWithTable } from '../parser/table-parser.js';
|
|
6
6
|
import { SelectExpression, QueryBuilderWithSelection, SelectAllQueryBuilder } from '../parser/select-parser.js';
|
|
7
|
-
import {
|
|
7
|
+
import { ExistsExpression, FilterOperator } from '../parser/filter-parser.js';
|
|
8
|
+
import { InsertObject } from '../parser/insert-values-parser.js';
|
|
8
9
|
import { QueryBuilderWithReturning } from '../parser/returning-parser.js';
|
|
9
10
|
import { ReferenceExpression } from '../parser/reference-parser.js';
|
|
10
11
|
import { ValueExpressionOrList } from '../parser/value-parser.js';
|
|
@@ -43,9 +44,11 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
43
44
|
* Find a row by column value:
|
|
44
45
|
*
|
|
45
46
|
* ```ts
|
|
46
|
-
* db
|
|
47
|
-
* .
|
|
47
|
+
* const person = await db
|
|
48
|
+
* .selectFrom('person')
|
|
48
49
|
* .selectAll()
|
|
50
|
+
* .where('id', '=', 100)
|
|
51
|
+
* .executeTakeFirst()
|
|
49
52
|
* ```
|
|
50
53
|
*
|
|
51
54
|
* The generated SQL (postgresql):
|
|
@@ -59,9 +62,11 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
59
62
|
* you can always use `db.raw('your operator')`.
|
|
60
63
|
*
|
|
61
64
|
* ```ts
|
|
62
|
-
* db
|
|
63
|
-
* .
|
|
65
|
+
* const persons = await db
|
|
66
|
+
* .selectFrom('person')
|
|
64
67
|
* .selectAll()
|
|
68
|
+
* .where('id', '>', 100)
|
|
69
|
+
* .execute()
|
|
65
70
|
* ```
|
|
66
71
|
*
|
|
67
72
|
* The generated SQL (postgresql):
|
|
@@ -71,22 +76,25 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
71
76
|
* ```
|
|
72
77
|
*
|
|
73
78
|
* @example
|
|
74
|
-
*
|
|
75
|
-
*
|
|
76
|
-
* instances.
|
|
79
|
+
* The `where` methods don't change the type of the query. You can add
|
|
80
|
+
* conditional `where`s easily by doing something like this:
|
|
77
81
|
*
|
|
78
82
|
* ```ts
|
|
79
|
-
* db
|
|
80
|
-
* .
|
|
83
|
+
* let query = db
|
|
84
|
+
* .selectFrom('person')
|
|
81
85
|
* .selectAll()
|
|
82
|
-
* ```
|
|
83
86
|
*
|
|
84
|
-
*
|
|
87
|
+
* if (firstName) {
|
|
88
|
+
* query = query.where('first_name', '=', firstName)
|
|
89
|
+
* }
|
|
85
90
|
*
|
|
86
|
-
*
|
|
87
|
-
* select * from "person" where "id" in ($1, $2, $3)
|
|
91
|
+
* const persons = await query.execute()
|
|
88
92
|
* ```
|
|
89
93
|
*
|
|
94
|
+
* This is true for basically all methods execpt the `select` and
|
|
95
|
+
* `returning` methods, which DO change the return type of the
|
|
96
|
+
* query.
|
|
97
|
+
*
|
|
90
98
|
* @example
|
|
91
99
|
* Both the first and third argument can also be subqueries.
|
|
92
100
|
* A subquery is defined by passing a function and calling
|
|
@@ -94,15 +102,18 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
94
102
|
* function:
|
|
95
103
|
*
|
|
96
104
|
* ```ts
|
|
97
|
-
* db
|
|
105
|
+
* const persons = await db
|
|
106
|
+
* .selectFrom('person')
|
|
107
|
+
* .selectAll()
|
|
98
108
|
* .where(
|
|
99
109
|
* (qb) => qb.subQuery('pet')
|
|
100
|
-
* .select('pet.
|
|
101
|
-
* .whereRef('pet.owner_id', '=', 'person.id')
|
|
102
|
-
*
|
|
103
|
-
*
|
|
110
|
+
* .select('pet.name')
|
|
111
|
+
* .whereRef('pet.owner_id', '=', 'person.id')
|
|
112
|
+
* .limit(1),
|
|
113
|
+
* '=',
|
|
114
|
+
* 'Fluffy'
|
|
104
115
|
* )
|
|
105
|
-
* .
|
|
116
|
+
* .execute()
|
|
106
117
|
* ```
|
|
107
118
|
*
|
|
108
119
|
* The generated SQL (postgresql):
|
|
@@ -111,10 +122,30 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
111
122
|
* select *
|
|
112
123
|
* from "person"
|
|
113
124
|
* where (
|
|
114
|
-
* select "pet"."
|
|
125
|
+
* select "pet"."name"
|
|
115
126
|
* from "pet"
|
|
116
127
|
* where "pet"."owner_id" = "person"."id"
|
|
117
|
-
*
|
|
128
|
+
* limit $1
|
|
129
|
+
* ) = $2
|
|
130
|
+
* ```
|
|
131
|
+
*
|
|
132
|
+
* @example
|
|
133
|
+
* A `where in` query can be built by using the `in` operator and an array
|
|
134
|
+
* of values. The values in the array can also be subqueries or raw
|
|
135
|
+
* instances.
|
|
136
|
+
*
|
|
137
|
+
* ```ts
|
|
138
|
+
* const persons = await db
|
|
139
|
+
* .selectFrom('person')
|
|
140
|
+
* .selectAll()
|
|
141
|
+
* .where('person.id', 'in', [100, 200, 300])
|
|
142
|
+
* .execute()
|
|
143
|
+
* ```
|
|
144
|
+
*
|
|
145
|
+
* The generated SQL (postgresql):
|
|
146
|
+
*
|
|
147
|
+
* ```sql
|
|
148
|
+
* select * from "person" where "id" in ($1, $2, $3)
|
|
118
149
|
* ```
|
|
119
150
|
*
|
|
120
151
|
* @example
|
|
@@ -122,20 +153,21 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
122
153
|
* as any of the arguments, including the operator:
|
|
123
154
|
*
|
|
124
155
|
* ```ts
|
|
125
|
-
* db
|
|
156
|
+
* const persons = await db
|
|
157
|
+
* .selectFrom('person')
|
|
158
|
+
* .selectAll()
|
|
126
159
|
* .where(
|
|
127
160
|
* db.raw('coalesce(first_name, last_name)'),
|
|
128
161
|
* 'like',
|
|
129
162
|
* '%' + name + '%',
|
|
130
163
|
* )
|
|
131
|
-
* .
|
|
164
|
+
* .execute()
|
|
132
165
|
* ```
|
|
133
166
|
*
|
|
134
167
|
* The generated SQL (postgresql):
|
|
135
168
|
*
|
|
136
169
|
* ```sql
|
|
137
|
-
* select *
|
|
138
|
-
* from "person"
|
|
170
|
+
* select * from "person"
|
|
139
171
|
* where coalesce(first_name, last_name) like $1
|
|
140
172
|
* ```
|
|
141
173
|
*
|
|
@@ -144,12 +176,14 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
144
176
|
* used to create parentheses around other where clauses:
|
|
145
177
|
*
|
|
146
178
|
* ```ts
|
|
147
|
-
* db
|
|
179
|
+
* const persons = await db
|
|
180
|
+
* .selectFrom('person')
|
|
148
181
|
* .selectAll()
|
|
149
182
|
* .where((qb) => qb
|
|
150
183
|
* .where('id', '=', 1)
|
|
151
184
|
* .orWhere('id', '=', 2)
|
|
152
185
|
* )
|
|
186
|
+
* .execute()
|
|
153
187
|
* ```
|
|
154
188
|
*
|
|
155
189
|
* The generated SQL (postgresql):
|
|
@@ -173,13 +207,15 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
173
207
|
* ```ts
|
|
174
208
|
* const { ref } = db.dynamic
|
|
175
209
|
*
|
|
176
|
-
* db
|
|
210
|
+
* const persons = await db
|
|
211
|
+
* .selectFrom('person')
|
|
177
212
|
* .selectAll()
|
|
178
213
|
* .where(ref(columnFromUserInput), '=', 1)
|
|
179
214
|
* .orWhere(db.raw('??', [columnFromUserInput]), '=', 2)
|
|
215
|
+
* .execute()
|
|
180
216
|
* ```
|
|
181
217
|
*/
|
|
182
|
-
where
|
|
218
|
+
where<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: FilterOperator, rhs: ValueExpressionOrList<DB, TB, RE>): QueryBuilder<DB, TB, O>;
|
|
183
219
|
where(grouper: (qb: QueryBuilder<DB, TB, O>) => QueryBuilder<DB, TB, O>): QueryBuilder<DB, TB, O>;
|
|
184
220
|
/**
|
|
185
221
|
* Adds a `where` clause where both sides of the operator are references
|
|
@@ -208,7 +244,8 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
208
244
|
* Usage in a subquery:
|
|
209
245
|
*
|
|
210
246
|
* ```ts
|
|
211
|
-
* db
|
|
247
|
+
* const persons = await db
|
|
248
|
+
* .selectFrom('person')
|
|
212
249
|
* .selectAll('person')
|
|
213
250
|
* .select((qb) => qb
|
|
214
251
|
* .subQuery('pet')
|
|
@@ -217,6 +254,7 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
217
254
|
* .limit(1)
|
|
218
255
|
* .as('pet_name')
|
|
219
256
|
* )
|
|
257
|
+
* .execute()
|
|
220
258
|
* ```
|
|
221
259
|
*
|
|
222
260
|
* The generated SQL (postgresql):
|
|
@@ -226,10 +264,11 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
226
264
|
* select "name"
|
|
227
265
|
* from "pet"
|
|
228
266
|
* where "pet"."owner_id" = "person"."id"
|
|
229
|
-
*
|
|
230
|
-
*
|
|
267
|
+
* limit $1
|
|
268
|
+
* ) as "pet_name"
|
|
269
|
+
* from "person"
|
|
231
270
|
*/
|
|
232
|
-
whereRef(lhs: ReferenceExpression<DB, TB>, op:
|
|
271
|
+
whereRef(lhs: ReferenceExpression<DB, TB>, op: FilterOperator, rhs: ReferenceExpression<DB, TB>): QueryBuilder<DB, TB, O>;
|
|
233
272
|
/**
|
|
234
273
|
* Adds an `or where` clause to the query. Otherwise works just like
|
|
235
274
|
* {@link QueryBuilder.where | where}.
|
|
@@ -240,10 +279,12 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
240
279
|
*
|
|
241
280
|
* @example
|
|
242
281
|
* ```ts
|
|
243
|
-
* db
|
|
282
|
+
* const persons = await db
|
|
283
|
+
* .selectFrom('person')
|
|
244
284
|
* .selectAll()
|
|
245
285
|
* .where('id', '=', 1)
|
|
246
286
|
* .orWhere('id', '=', 2)
|
|
287
|
+
* .execute()
|
|
247
288
|
* ```
|
|
248
289
|
*
|
|
249
290
|
* The generated SQL (postgresql):
|
|
@@ -256,12 +297,14 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
256
297
|
* Grouping with parentheses:
|
|
257
298
|
*
|
|
258
299
|
* ```ts
|
|
259
|
-
* db
|
|
300
|
+
* const persons = await db
|
|
301
|
+
* .selectFrom('person')
|
|
260
302
|
* .selectAll()
|
|
261
303
|
* .where((qb) => qb
|
|
262
304
|
* .where('id', '=', 1)
|
|
263
305
|
* .orWhere('id', '=', 2)
|
|
264
306
|
* )
|
|
307
|
+
* .execute()
|
|
265
308
|
* ```
|
|
266
309
|
*
|
|
267
310
|
* The generated SQL (postgresql):
|
|
@@ -275,12 +318,14 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
275
318
|
* if you are looping through a set of conditions:
|
|
276
319
|
*
|
|
277
320
|
* ```ts
|
|
278
|
-
* db
|
|
321
|
+
* const persons = await db
|
|
322
|
+
* .selectFrom('person')
|
|
279
323
|
* .selectAll()
|
|
280
324
|
* .where((qb) => qb
|
|
281
325
|
* .orWhere('id', '=', 1)
|
|
282
326
|
* .orWhere('id', '=', 2)
|
|
283
327
|
* )
|
|
328
|
+
* .execute()
|
|
284
329
|
* ```
|
|
285
330
|
*
|
|
286
331
|
* The generated SQL (postgresql):
|
|
@@ -289,7 +334,7 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
289
334
|
* select * from "person" (where "id" = 1 or "id" = 2)
|
|
290
335
|
* ```
|
|
291
336
|
*/
|
|
292
|
-
orWhere
|
|
337
|
+
orWhere<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: FilterOperator, rhs: ValueExpressionOrList<DB, TB, RE>): QueryBuilder<DB, TB, O>;
|
|
293
338
|
orWhere(grouper: (qb: QueryBuilder<DB, TB, O>) => QueryBuilder<DB, TB, O>): QueryBuilder<DB, TB, O>;
|
|
294
339
|
/**
|
|
295
340
|
* Adds an `or where` clause to the query. Otherwise works just like
|
|
@@ -297,7 +342,7 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
297
342
|
*
|
|
298
343
|
* Also see {@link QueryBuilder.orWhere | orWhere} and {@link QueryBuilder.where | where}.
|
|
299
344
|
*/
|
|
300
|
-
orWhereRef(lhs: ReferenceExpression<DB, TB>, op:
|
|
345
|
+
orWhereRef(lhs: ReferenceExpression<DB, TB>, op: FilterOperator, rhs: ReferenceExpression<DB, TB>): QueryBuilder<DB, TB, O>;
|
|
301
346
|
/**
|
|
302
347
|
* Adds a `where exists` clause to the query.
|
|
303
348
|
*
|
|
@@ -307,7 +352,8 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
307
352
|
* The query below selets all persons that own a pet named Catto:
|
|
308
353
|
*
|
|
309
354
|
* ```ts
|
|
310
|
-
* db
|
|
355
|
+
* const persons = await db
|
|
356
|
+
* .selectFrom('person')
|
|
311
357
|
* .selectAll()
|
|
312
358
|
* .whereExists((qb) => qb
|
|
313
359
|
* .subQuery('pet')
|
|
@@ -315,6 +361,7 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
315
361
|
* .whereRef('person.id', '=', 'pet.owner_id')
|
|
316
362
|
* .where('pet.name', '=', 'Catto')
|
|
317
363
|
* )
|
|
364
|
+
* .execute()
|
|
318
365
|
* ```
|
|
319
366
|
*
|
|
320
367
|
* The generated SQL (postgresql):
|
|
@@ -355,72 +402,72 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
355
402
|
* )
|
|
356
403
|
* ```
|
|
357
404
|
*/
|
|
358
|
-
whereExists(arg:
|
|
405
|
+
whereExists(arg: ExistsExpression<DB, TB>): QueryBuilder<DB, TB, O>;
|
|
359
406
|
/**
|
|
360
407
|
* Just like {@link QueryBuilder.whereExists | whereExists} but creates a `not exists` clause.
|
|
361
408
|
*/
|
|
362
|
-
whereNotExists(arg:
|
|
409
|
+
whereNotExists(arg: ExistsExpression<DB, TB>): QueryBuilder<DB, TB, O>;
|
|
363
410
|
/**
|
|
364
411
|
* Just like {@link QueryBuilder.whereExists | whereExists} but creates a `or exists` clause.
|
|
365
412
|
*/
|
|
366
|
-
orWhereExists(arg:
|
|
413
|
+
orWhereExists(arg: ExistsExpression<DB, TB>): QueryBuilder<DB, TB, O>;
|
|
367
414
|
/**
|
|
368
415
|
* Just like {@link QueryBuilder.whereExists | whereExists} but creates a `or not exists` clause.
|
|
369
416
|
*/
|
|
370
|
-
orWhereNotExists(arg:
|
|
417
|
+
orWhereNotExists(arg: ExistsExpression<DB, TB>): QueryBuilder<DB, TB, O>;
|
|
371
418
|
/**
|
|
372
419
|
* Just like {@link QueryBuilder.where | where} but adds a `having` statement
|
|
373
420
|
* instead of a `where` statement.
|
|
374
421
|
*/
|
|
375
|
-
having
|
|
422
|
+
having<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: FilterOperator, rhs: ValueExpressionOrList<DB, TB, RE>): QueryBuilder<DB, TB, O>;
|
|
376
423
|
having(grouper: (qb: QueryBuilder<DB, TB, O>) => QueryBuilder<DB, TB, O>): QueryBuilder<DB, TB, O>;
|
|
377
424
|
/**
|
|
378
425
|
* Just like {@link QueryBuilder.whereRef | whereRef} but adds a `having` statement
|
|
379
426
|
* instead of a `where` statement.
|
|
380
427
|
*/
|
|
381
|
-
havingRef(lhs: ReferenceExpression<DB, TB>, op:
|
|
428
|
+
havingRef(lhs: ReferenceExpression<DB, TB>, op: FilterOperator, rhs: ReferenceExpression<DB, TB>): QueryBuilder<DB, TB, O>;
|
|
382
429
|
/**
|
|
383
430
|
* Just like {@link QueryBuilder.orWhere | orWhere} but adds a `having` statement
|
|
384
431
|
* instead of a `where` statement.
|
|
385
432
|
*/
|
|
386
|
-
orHaving
|
|
433
|
+
orHaving<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: FilterOperator, rhs: ValueExpressionOrList<DB, TB, RE>): QueryBuilder<DB, TB, O>;
|
|
387
434
|
orHaving(grouper: (qb: QueryBuilder<DB, TB, O>) => QueryBuilder<DB, TB, O>): QueryBuilder<DB, TB, O>;
|
|
388
435
|
/**
|
|
389
436
|
* Just like {@link QueryBuilder.orWhereRef | orWhereRef} but adds a `having` statement
|
|
390
437
|
* instead of a `where` statement.
|
|
391
438
|
*/
|
|
392
|
-
orHavingRef(lhs: ReferenceExpression<DB, TB>, op:
|
|
439
|
+
orHavingRef(lhs: ReferenceExpression<DB, TB>, op: FilterOperator, rhs: ReferenceExpression<DB, TB>): QueryBuilder<DB, TB, O>;
|
|
393
440
|
/**
|
|
394
441
|
* Just like {@link QueryBuilder.whereExists | whereExists} but adds a `having` statement
|
|
395
442
|
* instead of a `where` statement.
|
|
396
443
|
*/
|
|
397
|
-
havingExists(arg:
|
|
444
|
+
havingExists(arg: ExistsExpression<DB, TB>): QueryBuilder<DB, TB, O>;
|
|
398
445
|
/**
|
|
399
446
|
* Just like {@link QueryBuilder.whereNotExists | whereNotExists} but adds a `having` statement
|
|
400
447
|
* instead of a `where` statement.
|
|
401
448
|
*/
|
|
402
|
-
havingNotExist(arg:
|
|
449
|
+
havingNotExist(arg: ExistsExpression<DB, TB>): QueryBuilder<DB, TB, O>;
|
|
403
450
|
/**
|
|
404
451
|
* Just like {@link QueryBuilder.orWhereExists | orWhereExists} but adds a `having` statement
|
|
405
452
|
* instead of a `where` statement.
|
|
406
453
|
*/
|
|
407
|
-
orHavingExists(arg:
|
|
454
|
+
orHavingExists(arg: ExistsExpression<DB, TB>): QueryBuilder<DB, TB, O>;
|
|
408
455
|
/**
|
|
409
456
|
* Just like {@link QueryBuilder.orWhereNotExists | orWhereNotExists} but adds a `having` statement
|
|
410
457
|
* instead of a `where` statement.
|
|
411
458
|
*/
|
|
412
|
-
orHavingNotExists(arg:
|
|
459
|
+
orHavingNotExists(arg: ExistsExpression<DB, TB>): QueryBuilder<DB, TB, O>;
|
|
413
460
|
/**
|
|
414
461
|
* Adds a select clause to the query.
|
|
415
462
|
*
|
|
416
|
-
* When a column (or any expression) is selected, Kysely
|
|
417
|
-
* type of the query. Kysely is smart enough to parse the
|
|
463
|
+
* When a column (or any expression) is selected, Kysely adds its type to the return
|
|
464
|
+
* type of the query. Kysely is smart enough to parse the column names and types even
|
|
418
465
|
* from aliased columns, subqueries, raw expressions etc.
|
|
419
466
|
*
|
|
420
467
|
* Kysely only allows you to select columns and expressions that exist and would
|
|
421
468
|
* produce valid SQL. However, Kysely is not perfect and there may be cases where
|
|
422
469
|
* the type inference doesn't work and you need to override it. You can always
|
|
423
|
-
* use the {@link Kysely.dynamic | dynamic}
|
|
470
|
+
* use the {@link Kysely.dynamic | dynamic} module and {@link Kysely.raw | raw}
|
|
424
471
|
* to override the types.
|
|
425
472
|
*
|
|
426
473
|
* Select calls are additive. Calling `select('id').select('first_name')` is the
|
|
@@ -433,28 +480,29 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
433
480
|
* Select a single column:
|
|
434
481
|
*
|
|
435
482
|
* ```ts
|
|
436
|
-
* const
|
|
483
|
+
* const persons = await db.selectFrom('person')
|
|
437
484
|
* .select('id')
|
|
485
|
+
* .where('first_name', '=', 'Arnold')
|
|
438
486
|
* .execute()
|
|
439
487
|
*
|
|
440
|
-
*
|
|
488
|
+
* persons[0].id
|
|
441
489
|
* ```
|
|
442
490
|
*
|
|
443
491
|
* The generated SQL (postgresql):
|
|
444
492
|
*
|
|
445
493
|
* ```sql
|
|
446
|
-
* select "id" from "person"
|
|
494
|
+
* select "id" from "person" where "first_name" = $1
|
|
447
495
|
* ```
|
|
448
496
|
*
|
|
449
497
|
* @example
|
|
450
498
|
* Select a single column and specify a table:
|
|
451
499
|
*
|
|
452
500
|
* ```ts
|
|
453
|
-
* const
|
|
501
|
+
* const persons = await db.selectFrom(['person', 'pet'])
|
|
454
502
|
* .select('person.id')
|
|
455
503
|
* .execute()
|
|
456
504
|
*
|
|
457
|
-
*
|
|
505
|
+
* persons[0].id
|
|
458
506
|
* ```
|
|
459
507
|
*
|
|
460
508
|
* The generated SQL (postgresql):
|
|
@@ -467,12 +515,12 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
467
515
|
* Select multiple columns:
|
|
468
516
|
*
|
|
469
517
|
* ```ts
|
|
470
|
-
* const
|
|
518
|
+
* const persons = await db.selectFrom('person')
|
|
471
519
|
* .select(['person.id', 'first_name'])
|
|
472
520
|
* .execute()
|
|
473
521
|
*
|
|
474
|
-
*
|
|
475
|
-
*
|
|
522
|
+
* persons[0].id
|
|
523
|
+
* persons[0].first_name
|
|
476
524
|
* ```
|
|
477
525
|
*
|
|
478
526
|
* The generated SQL (postgresql):
|
|
@@ -482,18 +530,18 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
482
530
|
* ```
|
|
483
531
|
*
|
|
484
532
|
* @example
|
|
485
|
-
*
|
|
533
|
+
* Aliased selections:
|
|
486
534
|
*
|
|
487
535
|
* ```ts
|
|
488
|
-
* const
|
|
536
|
+
* const persons = await db.selectFrom('person')
|
|
489
537
|
* .select([
|
|
490
538
|
* 'person.first_name as fn',
|
|
491
539
|
* 'person.last_name as ln'
|
|
492
540
|
* ])
|
|
493
541
|
* .execute()
|
|
494
542
|
*
|
|
495
|
-
*
|
|
496
|
-
*
|
|
543
|
+
* persons[0].fn
|
|
544
|
+
* persons[0].ln
|
|
497
545
|
* ```
|
|
498
546
|
*
|
|
499
547
|
* The generated SQL (postgresql):
|
|
@@ -511,19 +559,20 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
511
559
|
* method:
|
|
512
560
|
*
|
|
513
561
|
* ```ts
|
|
514
|
-
* const
|
|
562
|
+
* const persons = await db.selectFrom('person')
|
|
515
563
|
* .select([
|
|
516
564
|
* (qb) => qb
|
|
517
565
|
* .subQuery('pet')
|
|
518
566
|
* .whereRef('person.id', '=', 'pet.owner_id')
|
|
519
567
|
* .select('pet.name')
|
|
568
|
+
* .limit(1)
|
|
520
569
|
* .as('pet_name')
|
|
521
570
|
* db.raw<string>("concat(first_name, ' ', last_name)").as('full_name')
|
|
522
571
|
* ])
|
|
523
572
|
* .execute()
|
|
524
573
|
*
|
|
525
|
-
*
|
|
526
|
-
*
|
|
574
|
+
* persons[0].pet_name
|
|
575
|
+
* persons[0].full_name
|
|
527
576
|
* ```
|
|
528
577
|
*
|
|
529
578
|
* The generated SQL (postgresql):
|
|
@@ -534,7 +583,8 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
534
583
|
* select "pet"."name"
|
|
535
584
|
* from "pet"
|
|
536
585
|
* where "person"."id" = "pet"."owner_id"
|
|
537
|
-
*
|
|
586
|
+
* limit $1
|
|
587
|
+
* ) as "pet_name",
|
|
538
588
|
* concat(first_name, ' ', last_name) as full_name
|
|
539
589
|
* from "person"
|
|
540
590
|
* ```
|
|
@@ -548,7 +598,7 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
548
598
|
* the types) sometimes it's not possible or you just prefer to write more
|
|
549
599
|
* dynamic code.
|
|
550
600
|
* <br><br>
|
|
551
|
-
* In this example, we use the `dynamic`
|
|
601
|
+
* In this example, we use the `dynamic` module's methods to add selections
|
|
552
602
|
* dynamically:
|
|
553
603
|
*
|
|
554
604
|
* ```ts
|
|
@@ -561,7 +611,7 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
561
611
|
* // You can use `keyof Person` if any column of an interface is allowed.
|
|
562
612
|
* type PossibleColumns = 'last_name' | 'first_name' | 'birth_date'
|
|
563
613
|
*
|
|
564
|
-
* const
|
|
614
|
+
* const spersons = await db.selectFrom('person')
|
|
565
615
|
* .select([
|
|
566
616
|
* ref<PossibleColumns>(columnFromUserInput)
|
|
567
617
|
* 'id'
|
|
@@ -571,12 +621,12 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
571
621
|
* // The resulting type contains all `PossibleColumns` as optional fields
|
|
572
622
|
* // because we cannot know which field was actually selected before
|
|
573
623
|
* // running the code.
|
|
574
|
-
* const lastName: string | undefined =
|
|
575
|
-
* const firstName: string | undefined =
|
|
576
|
-
* const birthDate: string | undefined =
|
|
624
|
+
* const lastName: string | undefined = persons[0].last_name
|
|
625
|
+
* const firstName: string | undefined = persons[0].first_name
|
|
626
|
+
* const birthDate: string | undefined = persons[0].birth_date
|
|
577
627
|
*
|
|
578
628
|
* // The result type also contains the compile time selection `id`.
|
|
579
|
-
*
|
|
629
|
+
* persons[0].id
|
|
580
630
|
* ```
|
|
581
631
|
*/
|
|
582
632
|
select<S extends SelectExpression<DB, TB>>(selections: ReadonlyArray<S>): QueryBuilderWithSelection<DB, TB, O, S>;
|
|
@@ -584,6 +634,10 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
584
634
|
/**
|
|
585
635
|
* Adds `distinct on` selections to the select clause.
|
|
586
636
|
*
|
|
637
|
+
* Takes the same inputs as the {@link QueryBuilder.select | select} method.
|
|
638
|
+
* See the {@link QueryBuilder.select | select} method's documentation for
|
|
639
|
+
* more examples.
|
|
640
|
+
*
|
|
587
641
|
* @example
|
|
588
642
|
* ```ts
|
|
589
643
|
* await db.selectFrom('person')
|
|
@@ -606,7 +660,21 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
606
660
|
distinctOn<S extends SelectExpression<DB, TB>>(selections: ReadonlyArray<S>): QueryBuilder<DB, TB, O>;
|
|
607
661
|
distinctOn<S extends SelectExpression<DB, TB>>(selection: S): QueryBuilder<DB, TB, O>;
|
|
608
662
|
/**
|
|
663
|
+
* Makes the selection distinct.
|
|
609
664
|
*
|
|
665
|
+
* @example
|
|
666
|
+
* ```ts
|
|
667
|
+
* await db.selectFrom('person')
|
|
668
|
+
* .select('first_name')
|
|
669
|
+
* .distinct()
|
|
670
|
+
* .execute()
|
|
671
|
+
* ```
|
|
672
|
+
*
|
|
673
|
+
* The generated SQL (postgresql):
|
|
674
|
+
*
|
|
675
|
+
* ```sql
|
|
676
|
+
* select distinct "first_name" from "person"
|
|
677
|
+
* ```
|
|
610
678
|
*/
|
|
611
679
|
distinct(): QueryBuilder<DB, TB, O>;
|
|
612
680
|
/**
|
|
@@ -638,7 +706,8 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
638
706
|
*
|
|
639
707
|
* @example
|
|
640
708
|
* ```ts
|
|
641
|
-
* await db
|
|
709
|
+
* const persons = await db
|
|
710
|
+
* .selectFrom('person')
|
|
642
711
|
* .selectAll()
|
|
643
712
|
* .execute()
|
|
644
713
|
* ```
|
|
@@ -651,7 +720,8 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
651
720
|
*
|
|
652
721
|
* @example
|
|
653
722
|
* ```ts
|
|
654
|
-
* await db
|
|
723
|
+
* const persons = await db
|
|
724
|
+
* .selectFrom('person')
|
|
655
725
|
* .selectAll('person')
|
|
656
726
|
* .execute()
|
|
657
727
|
* ```
|
|
@@ -664,7 +734,8 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
664
734
|
*
|
|
665
735
|
* @example
|
|
666
736
|
* ```ts
|
|
667
|
-
* await db
|
|
737
|
+
* const personsPets = await db
|
|
738
|
+
* .selectFrom(['person', 'pet'])
|
|
668
739
|
* .selectAll(['person', 'pet'])
|
|
669
740
|
* .execute()
|
|
670
741
|
* ```
|
|
@@ -685,10 +756,17 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
685
756
|
* Simple usage by providing a table name and two columns to join:
|
|
686
757
|
*
|
|
687
758
|
* ```ts
|
|
688
|
-
* await db
|
|
759
|
+
* const result = await db
|
|
760
|
+
* .selectFrom('person')
|
|
689
761
|
* .selectAll()
|
|
690
762
|
* .innerJoin('pet', 'pet.owner_id', 'person.id')
|
|
691
763
|
* .execute()
|
|
764
|
+
*
|
|
765
|
+
* // The result has all `Person` columns
|
|
766
|
+
* result[0].first_name
|
|
767
|
+
*
|
|
768
|
+
* // The result has all `Pet` columns
|
|
769
|
+
* result[0].species
|
|
692
770
|
* ```
|
|
693
771
|
*
|
|
694
772
|
* The generated SQL (postgresql):
|
|
@@ -779,52 +857,61 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
779
857
|
* select "owner_id", "name"
|
|
780
858
|
* from "pet"
|
|
781
859
|
* where "name" = $1
|
|
782
|
-
* ) as doggos
|
|
860
|
+
* ) as "doggos"
|
|
783
861
|
* on "doggos"."owner_id" = "person"."id"
|
|
784
862
|
* ```
|
|
785
863
|
*/
|
|
786
|
-
innerJoin<TE extends TableExpression<DB, TB>, K1 extends
|
|
787
|
-
innerJoin<TE extends TableExpression<DB, TB>, FN extends
|
|
864
|
+
innerJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): QueryBuilderWithTable<DB, TB, O, TE>;
|
|
865
|
+
innerJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): QueryBuilderWithTable<DB, TB, O, TE>;
|
|
788
866
|
/**
|
|
789
867
|
* Just like {@link QueryBuilder.innerJoin | innerJoin} but adds a left join
|
|
790
868
|
* instead of an inner join.
|
|
791
869
|
*/
|
|
792
|
-
leftJoin<TE extends TableExpression<DB, TB>, K1 extends
|
|
793
|
-
leftJoin<TE extends TableExpression<DB, TB>, FN extends
|
|
870
|
+
leftJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): QueryBuilderWithTable<DB, TB, O, TE>;
|
|
871
|
+
leftJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): QueryBuilderWithTable<DB, TB, O, TE>;
|
|
794
872
|
/**
|
|
795
873
|
* Just like {@link QueryBuilder.innerJoin | innerJoin} but adds a right join
|
|
796
874
|
* instead of an inner join.
|
|
797
875
|
*/
|
|
798
|
-
rightJoin<TE extends TableExpression<DB, TB>, K1 extends
|
|
799
|
-
rightJoin<TE extends TableExpression<DB, TB>, FN extends
|
|
876
|
+
rightJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): QueryBuilderWithTable<DB, TB, O, TE>;
|
|
877
|
+
rightJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): QueryBuilderWithTable<DB, TB, O, TE>;
|
|
800
878
|
/**
|
|
801
879
|
* Just like {@link QueryBuilder.innerJoin | innerJoin} but adds a full join
|
|
802
880
|
* instead of an inner join.
|
|
803
881
|
*/
|
|
804
|
-
fullJoin<TE extends TableExpression<DB, TB>, K1 extends
|
|
805
|
-
fullJoin<TE extends TableExpression<DB, TB>, FN extends
|
|
882
|
+
fullJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): QueryBuilderWithTable<DB, TB, O, TE>;
|
|
883
|
+
fullJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): QueryBuilderWithTable<DB, TB, O, TE>;
|
|
806
884
|
/**
|
|
807
|
-
* Sets the values to insert for an
|
|
885
|
+
* Sets the values to insert for an {@link Kysely.insertInto | insert} query.
|
|
808
886
|
*
|
|
809
887
|
* This method takes an object whose keys are column names and values are
|
|
810
|
-
* values to insert. In addition to the column's type, the values can be
|
|
811
|
-
* instances
|
|
888
|
+
* values to insert. In addition to the column's type, the values can be
|
|
889
|
+
* {@link Kysely.raw | raw} instances, select queries or the
|
|
890
|
+
* {@link Kysely.generated} placeholder.
|
|
891
|
+
*
|
|
892
|
+
* You must provide all values defined by the interface for the table you
|
|
893
|
+
* are inserting into. Values that are generated by the database like autoincrementing
|
|
894
|
+
* identifiers can be marked with the {@link Kysely.generated} placeholder unless you
|
|
895
|
+
* want to insert a specific value instead of the generated default.
|
|
812
896
|
*
|
|
813
897
|
* The return value is the primary key of the inserted row BUT on some databases
|
|
814
|
-
* there is no return value by default. That's the reason for the `
|
|
815
|
-
* return value. On postgres you need to additionally call `returning` to get
|
|
816
|
-
* something out of the query.
|
|
898
|
+
* there is no return value by default. That's the reason for the `number | undefined`
|
|
899
|
+
* type of the return value. On postgres you need to additionally call `returning` to get
|
|
900
|
+
* something out of the query. If you know your database engine always returns the primary
|
|
901
|
+
* key, you can use the {@link QueryBuilder.executeTakeFirstOrThrow | executeTakeFirstOrThrow}
|
|
902
|
+
* method to execute the query.
|
|
817
903
|
*
|
|
818
904
|
* @example
|
|
819
905
|
* Insert a row into `person`:
|
|
820
906
|
* ```ts
|
|
821
|
-
* const
|
|
907
|
+
* const id = await db
|
|
822
908
|
* .insertInto('person')
|
|
823
909
|
* .values({
|
|
910
|
+
* id: db.generated,
|
|
824
911
|
* first_name: 'Jennifer',
|
|
825
912
|
* last_name: 'Aniston'
|
|
826
913
|
* })
|
|
827
|
-
* .
|
|
914
|
+
* .executeTakeFirstOrThrow()
|
|
828
915
|
* ```
|
|
829
916
|
*
|
|
830
917
|
* The generated SQL (postgresql):
|
|
@@ -840,16 +927,18 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
840
927
|
* row and some return nothing at all unless you call `returning`.
|
|
841
928
|
*
|
|
842
929
|
* ```ts
|
|
843
|
-
*
|
|
930
|
+
* await db
|
|
844
931
|
* .insertInto('person')
|
|
845
932
|
* .values([{
|
|
933
|
+
* id: db.generated,
|
|
846
934
|
* first_name: 'Jennifer',
|
|
847
935
|
* last_name: 'Aniston'
|
|
848
936
|
* }, {
|
|
937
|
+
* id: db.generated,
|
|
849
938
|
* first_name: 'Arnold',
|
|
850
939
|
* last_name: 'Schwarzenegger',
|
|
851
940
|
* }])
|
|
852
|
-
* .
|
|
941
|
+
* .execute()
|
|
853
942
|
* ```
|
|
854
943
|
*
|
|
855
944
|
* The generated SQL (postgresql):
|
|
@@ -867,11 +956,12 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
867
956
|
* const row = await db
|
|
868
957
|
* .insertInto('person')
|
|
869
958
|
* .values({
|
|
959
|
+
* id: db.generated,
|
|
870
960
|
* first_name: 'Jennifer',
|
|
871
961
|
* last_name: 'Aniston'
|
|
872
962
|
* })
|
|
873
963
|
* .returning('id')
|
|
874
|
-
* .
|
|
964
|
+
* .executeTakeFirstOrThrow()
|
|
875
965
|
*
|
|
876
966
|
* row.id
|
|
877
967
|
* ```
|
|
@@ -890,6 +980,7 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
890
980
|
* const maybeId = await db
|
|
891
981
|
* .insertInto('person')
|
|
892
982
|
* .values({
|
|
983
|
+
* id: db.generated,
|
|
893
984
|
* first_name: 'Jennifer',
|
|
894
985
|
* last_name: db.raw('? || ?', ['Ani', 'ston']),
|
|
895
986
|
* age: db.selectFrom('person').select(raw('avg(age)')),
|
|
@@ -904,8 +995,8 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
904
995
|
* values ($1, $2 || $3, (select avg(age) from "person"))
|
|
905
996
|
* ```
|
|
906
997
|
*/
|
|
907
|
-
values(row:
|
|
908
|
-
values(row:
|
|
998
|
+
values(row: InsertObject<DB, TB>): QueryBuilder<DB, TB, O>;
|
|
999
|
+
values(row: InsertObject<DB, TB>[]): QueryBuilder<DB, TB, O>;
|
|
909
1000
|
/**
|
|
910
1001
|
* Ignores the insert if the column (or columns) given as the first
|
|
911
1002
|
* argument conflicts with the current rows in the database. The
|
|
@@ -928,6 +1019,7 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
928
1019
|
* await db
|
|
929
1020
|
* .insertInto('pet')
|
|
930
1021
|
* .values({
|
|
1022
|
+
* id: db.generated,
|
|
931
1023
|
* name: 'Catto',
|
|
932
1024
|
* species: 'cat',
|
|
933
1025
|
* })
|
|
@@ -972,6 +1064,7 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
972
1064
|
* await db
|
|
973
1065
|
* .insertInto('pet')
|
|
974
1066
|
* .values({
|
|
1067
|
+
* id: db.generated,
|
|
975
1068
|
* name: 'Catto',
|
|
976
1069
|
* species: 'cat',
|
|
977
1070
|
* })
|
|
@@ -990,7 +1083,7 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
990
1083
|
onConflictUpdate(column: AnyColumn<DB, TB>, updates: MutationObject<DB, TB>): QueryBuilder<DB, TB, O>;
|
|
991
1084
|
onConflictUpdate(columns: ReadonlyArray<AnyColumn<DB, TB>>, updates: MutationObject<DB, TB>): QueryBuilder<DB, TB, O>;
|
|
992
1085
|
/**
|
|
993
|
-
* Sets the values to update for an
|
|
1086
|
+
* Sets the values to update for an {@link Kysely.updateTable | update} query.
|
|
994
1087
|
*
|
|
995
1088
|
* This method takes an object whose keys are column names and values are
|
|
996
1089
|
* values to update. In addition to the column's type, the values can be `raw`
|
|
@@ -1021,7 +1114,7 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
1021
1114
|
* ```
|
|
1022
1115
|
*
|
|
1023
1116
|
* @example
|
|
1024
|
-
* On postgresql you
|
|
1117
|
+
* On postgresql you ca chain `returning` to the query to get
|
|
1025
1118
|
* the updated rows' columns (or any other expression) as the
|
|
1026
1119
|
* return value:
|
|
1027
1120
|
*
|
|
@@ -1034,7 +1127,7 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
1034
1127
|
* })
|
|
1035
1128
|
* .where('id', '=', 1)
|
|
1036
1129
|
* .returning('id')
|
|
1037
|
-
* .
|
|
1130
|
+
* .executeTakeFirstOrThrow()
|
|
1038
1131
|
*
|
|
1039
1132
|
* row.id
|
|
1040
1133
|
* ```
|
|
@@ -1087,6 +1180,7 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
1087
1180
|
* const { id } = await db
|
|
1088
1181
|
* .insertInto('person')
|
|
1089
1182
|
* .values({
|
|
1183
|
+
* id: db.generated,
|
|
1090
1184
|
* first_name: 'Jennifer',
|
|
1091
1185
|
* last_name: 'Aniston'
|
|
1092
1186
|
* })
|
|
@@ -1101,6 +1195,7 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
1101
1195
|
* const { id, first_name } = await db
|
|
1102
1196
|
* .insertInto('person')
|
|
1103
1197
|
* .values({
|
|
1198
|
+
* id: db.generated,
|
|
1104
1199
|
* first_name: 'Jennifer',
|
|
1105
1200
|
* last_name: 'Aniston'
|
|
1106
1201
|
* })
|
|
@@ -1117,6 +1212,7 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
1117
1212
|
* const { id, full_name, first_pet_id } = await db
|
|
1118
1213
|
* .insertInto('person')
|
|
1119
1214
|
* .values({
|
|
1215
|
+
* id: db.generated,
|
|
1120
1216
|
* first_name: 'Jennifer',
|
|
1121
1217
|
* last_name: 'Aniston'
|
|
1122
1218
|
* })
|