kysely 0.7.2 → 0.7.6
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 +9 -5
- package/dist/cjs/dialect/dialect-adapter.d.ts +11 -9
- package/dist/cjs/index.d.ts +2 -1
- package/dist/cjs/index.js +2 -1
- package/dist/cjs/kysely.d.ts +2 -2
- package/dist/cjs/kysely.js +9 -7
- package/dist/cjs/operation-node/create-table-node.d.ts +2 -1
- package/dist/cjs/operation-node/create-table-node.js +1 -5
- package/dist/cjs/operation-node/foreign-key-constraint-node.d.ts +12 -1
- package/dist/cjs/operation-node/foreign-key-constraint-node.js +6 -0
- package/dist/cjs/operation-node/join-node.d.ts +1 -0
- package/dist/cjs/operation-node/join-node.js +8 -0
- package/dist/cjs/operation-node/operation-node-transformer.js +3 -0
- package/dist/cjs/operation-node/references-node.d.ts +5 -3
- package/dist/cjs/operation-node/references-node.js +6 -0
- package/dist/cjs/operation-node/table-node.js +2 -2
- package/dist/cjs/parser/data-type-parser.d.ts +5 -0
- package/dist/cjs/parser/data-type-parser.js +11 -0
- package/dist/cjs/parser/default-value-parser.d.ts +6 -0
- package/dist/cjs/parser/default-value-parser.js +11 -0
- package/dist/cjs/parser/filter-parser.d.ts +2 -2
- package/dist/cjs/parser/filter-parser.js +34 -36
- package/dist/cjs/parser/join-parser.d.ts +1 -1
- package/dist/cjs/parser/join-parser.js +9 -11
- package/dist/cjs/parser/parse-context.d.ts +33 -6
- package/dist/cjs/parser/parse-context.js +40 -33
- package/dist/cjs/parser/reference-parser.d.ts +2 -2
- package/dist/cjs/parser/reference-parser.js +16 -12
- package/dist/cjs/parser/select-parser.d.ts +1 -2
- package/dist/cjs/parser/select-parser.js +4 -5
- package/dist/cjs/parser/table-parser.js +11 -6
- package/dist/cjs/parser/update-set-parser.js +1 -1
- package/dist/cjs/parser/value-parser.js +1 -1
- package/dist/cjs/query-builder/{sub-query-builder.d.ts → expression-builder.d.ts} +6 -6
- package/dist/cjs/query-builder/{sub-query-builder.js → expression-builder.js} +6 -10
- package/dist/cjs/query-builder/join-builder.d.ts +2 -2
- package/dist/cjs/query-builder/join-builder.js +8 -12
- package/dist/cjs/query-builder/query-builder.d.ts +2 -2
- package/dist/cjs/query-builder/query-builder.js +34 -36
- package/dist/cjs/query-builder/type-utils.d.ts +5 -5
- package/dist/cjs/query-compiler/default-query-compiler.js +13 -1
- package/dist/cjs/query-creator.d.ts +2 -2
- package/dist/cjs/query-creator.js +8 -12
- package/dist/cjs/schema/alter-table-builder.d.ts +26 -8
- package/dist/cjs/schema/alter-table-builder.js +75 -7
- package/dist/cjs/schema/column-definition-builder.d.ts +10 -4
- package/dist/cjs/schema/column-definition-builder.js +11 -6
- package/dist/cjs/schema/create-index-builder.d.ts +5 -5
- package/dist/cjs/schema/create-index-builder.js +19 -28
- package/dist/cjs/schema/create-schema-builder.d.ts +5 -5
- package/dist/cjs/schema/create-schema-builder.js +9 -13
- package/dist/cjs/schema/create-table-builder.d.ts +22 -10
- package/dist/cjs/schema/create-table-builder.js +41 -34
- package/dist/cjs/schema/drop-index-builder.d.ts +5 -5
- package/dist/cjs/schema/drop-index-builder.js +11 -16
- package/dist/cjs/schema/drop-schema-builder.d.ts +5 -5
- package/dist/cjs/schema/drop-schema-builder.js +9 -13
- package/dist/cjs/schema/drop-table-builder.d.ts +5 -5
- package/dist/cjs/schema/drop-table-builder.js +9 -13
- package/dist/cjs/schema/foreign-key-constraint-builder.d.ts +14 -0
- package/dist/cjs/schema/foreign-key-constraint-builder.js +26 -0
- package/dist/esm/dialect/dialect-adapter.d.ts +11 -9
- package/dist/esm/index.d.ts +2 -1
- package/dist/esm/index.js +2 -1
- package/dist/esm/kysely.d.ts +2 -2
- package/dist/esm/kysely.js +9 -7
- package/dist/esm/operation-node/create-table-node.d.ts +2 -1
- package/dist/esm/operation-node/create-table-node.js +1 -5
- package/dist/esm/operation-node/foreign-key-constraint-node.d.ts +12 -1
- package/dist/esm/operation-node/foreign-key-constraint-node.js +6 -0
- package/dist/esm/operation-node/join-node.d.ts +1 -0
- package/dist/esm/operation-node/join-node.js +8 -0
- package/dist/esm/operation-node/operation-node-transformer.js +3 -0
- package/dist/esm/operation-node/references-node.d.ts +5 -3
- package/dist/esm/operation-node/references-node.js +6 -0
- package/dist/esm/operation-node/table-node.js +2 -2
- package/dist/esm/parser/data-type-parser.d.ts +5 -0
- package/dist/esm/parser/data-type-parser.js +7 -0
- package/dist/esm/parser/default-value-parser.d.ts +6 -0
- package/dist/esm/parser/default-value-parser.js +7 -0
- package/dist/esm/parser/filter-parser.d.ts +2 -2
- package/dist/esm/parser/filter-parser.js +31 -33
- package/dist/esm/parser/join-parser.d.ts +1 -1
- package/dist/esm/parser/join-parser.js +7 -9
- package/dist/esm/parser/parse-context.d.ts +33 -6
- package/dist/esm/parser/parse-context.js +38 -31
- package/dist/esm/parser/reference-parser.d.ts +2 -2
- package/dist/esm/parser/reference-parser.js +16 -12
- package/dist/esm/parser/select-parser.d.ts +1 -2
- package/dist/esm/parser/select-parser.js +3 -3
- package/dist/esm/parser/table-parser.js +11 -6
- package/dist/esm/parser/update-set-parser.js +1 -1
- package/dist/esm/parser/value-parser.js +1 -1
- package/dist/esm/query-builder/{sub-query-builder.d.ts → expression-builder.d.ts} +6 -6
- package/dist/esm/query-builder/{sub-query-builder.js → expression-builder.js} +4 -8
- package/dist/esm/query-builder/join-builder.d.ts +2 -2
- package/dist/esm/query-builder/join-builder.js +9 -13
- package/dist/esm/query-builder/query-builder.d.ts +2 -2
- package/dist/esm/query-builder/query-builder.js +37 -39
- package/dist/esm/query-builder/type-utils.d.ts +5 -5
- package/dist/esm/query-compiler/default-query-compiler.js +14 -2
- package/dist/esm/query-creator.d.ts +2 -2
- package/dist/esm/query-creator.js +8 -12
- package/dist/esm/schema/alter-table-builder.d.ts +26 -8
- package/dist/esm/schema/alter-table-builder.js +73 -6
- package/dist/esm/schema/column-definition-builder.d.ts +10 -4
- package/dist/esm/schema/column-definition-builder.js +12 -7
- package/dist/esm/schema/create-index-builder.d.ts +5 -5
- package/dist/esm/schema/create-index-builder.js +19 -28
- package/dist/esm/schema/create-schema-builder.d.ts +5 -5
- package/dist/esm/schema/create-schema-builder.js +9 -13
- package/dist/esm/schema/create-table-builder.d.ts +22 -10
- package/dist/esm/schema/create-table-builder.js +41 -34
- package/dist/esm/schema/drop-index-builder.d.ts +5 -5
- package/dist/esm/schema/drop-index-builder.js +11 -16
- package/dist/esm/schema/drop-schema-builder.d.ts +5 -5
- package/dist/esm/schema/drop-schema-builder.js +9 -13
- package/dist/esm/schema/drop-table-builder.d.ts +5 -5
- package/dist/esm/schema/drop-table-builder.js +9 -13
- package/dist/esm/schema/foreign-key-constraint-builder.d.ts +14 -0
- package/dist/esm/schema/foreign-key-constraint-builder.js +22 -0
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { AliasNode } from '../operation-node/alias-node.js';
|
|
2
|
-
import {
|
|
3
|
-
import { parseSelectExpressionOrList,
|
|
4
|
-
import {
|
|
2
|
+
import { parseJoin, } from '../parser/join-parser.js';
|
|
3
|
+
import { parseSelectExpressionOrList, parseSelectAll, } from '../parser/select-parser.js';
|
|
4
|
+
import { parseExistFilter, parseReferenceFilter, parseWhereFilter, parseHavingFilter, parseNotExistFilter, } from '../parser/filter-parser.js';
|
|
5
5
|
import { parseInsertObjectOrList, } from '../parser/insert-values-parser.js';
|
|
6
6
|
import { parseReferenceExpression, parseReferenceExpressionOrList, } from '../parser/reference-parser.js';
|
|
7
7
|
import { OrderByItemNode, } from '../operation-node/order-by-item-node.js';
|
|
@@ -16,7 +16,6 @@ import { LimitNode } from '../operation-node/limit-node.js';
|
|
|
16
16
|
import { OffsetNode } from '../operation-node/offset-node.js';
|
|
17
17
|
import { parseOnConflictDoNothing, parseOnConflictUpdate, } from '../parser/on-conflict-parser.js';
|
|
18
18
|
import { freeze } from '../util/object-utils.js';
|
|
19
|
-
import { createParseContext } from '../parser/parse-context.js';
|
|
20
19
|
import { DeleteQueryNode } from '../operation-node/delete-query-node.js';
|
|
21
20
|
import { OnDuplicateKeyNode } from '../operation-node/on-duplicate-key-node.js';
|
|
22
21
|
/**
|
|
@@ -43,7 +42,7 @@ export class QueryBuilder {
|
|
|
43
42
|
assertCanHaveWhereClause(this.#props.queryNode);
|
|
44
43
|
return new QueryBuilder({
|
|
45
44
|
...this.#props,
|
|
46
|
-
queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, 'And', parseWhereFilter(this.#parseContext, args)),
|
|
45
|
+
queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, 'And', parseWhereFilter(this.#props.parseContext, args)),
|
|
47
46
|
});
|
|
48
47
|
}
|
|
49
48
|
/**
|
|
@@ -101,14 +100,14 @@ export class QueryBuilder {
|
|
|
101
100
|
assertCanHaveWhereClause(this.#props.queryNode);
|
|
102
101
|
return new QueryBuilder({
|
|
103
102
|
...this.#props,
|
|
104
|
-
queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, 'And', parseReferenceFilter(this.#parseContext, lhs, op, rhs)),
|
|
103
|
+
queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, 'And', parseReferenceFilter(this.#props.parseContext, lhs, op, rhs)),
|
|
105
104
|
});
|
|
106
105
|
}
|
|
107
106
|
orWhere(...args) {
|
|
108
107
|
assertCanHaveWhereClause(this.#props.queryNode);
|
|
109
108
|
return new QueryBuilder({
|
|
110
109
|
...this.#props,
|
|
111
|
-
queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, 'Or', parseWhereFilter(this.#parseContext, args)),
|
|
110
|
+
queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, 'Or', parseWhereFilter(this.#props.parseContext, args)),
|
|
112
111
|
});
|
|
113
112
|
}
|
|
114
113
|
/**
|
|
@@ -121,7 +120,7 @@ export class QueryBuilder {
|
|
|
121
120
|
assertCanHaveWhereClause(this.#props.queryNode);
|
|
122
121
|
return new QueryBuilder({
|
|
123
122
|
...this.#props,
|
|
124
|
-
queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, 'Or', parseReferenceFilter(this.#parseContext, lhs, op, rhs)),
|
|
123
|
+
queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, 'Or', parseReferenceFilter(this.#props.parseContext, lhs, op, rhs)),
|
|
125
124
|
});
|
|
126
125
|
}
|
|
127
126
|
/**
|
|
@@ -187,7 +186,7 @@ export class QueryBuilder {
|
|
|
187
186
|
assertCanHaveWhereClause(this.#props.queryNode);
|
|
188
187
|
return new QueryBuilder({
|
|
189
188
|
...this.#props,
|
|
190
|
-
queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, 'And',
|
|
189
|
+
queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, 'And', parseExistFilter(this.#props.parseContext, arg)),
|
|
191
190
|
});
|
|
192
191
|
}
|
|
193
192
|
/**
|
|
@@ -197,7 +196,7 @@ export class QueryBuilder {
|
|
|
197
196
|
assertCanHaveWhereClause(this.#props.queryNode);
|
|
198
197
|
return new QueryBuilder({
|
|
199
198
|
...this.#props,
|
|
200
|
-
queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, 'And',
|
|
199
|
+
queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, 'And', parseNotExistFilter(this.#props.parseContext, arg)),
|
|
201
200
|
});
|
|
202
201
|
}
|
|
203
202
|
/**
|
|
@@ -207,7 +206,7 @@ export class QueryBuilder {
|
|
|
207
206
|
assertCanHaveWhereClause(this.#props.queryNode);
|
|
208
207
|
return new QueryBuilder({
|
|
209
208
|
...this.#props,
|
|
210
|
-
queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, 'Or',
|
|
209
|
+
queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, 'Or', parseExistFilter(this.#props.parseContext, arg)),
|
|
211
210
|
});
|
|
212
211
|
}
|
|
213
212
|
/**
|
|
@@ -217,14 +216,14 @@ export class QueryBuilder {
|
|
|
217
216
|
assertCanHaveWhereClause(this.#props.queryNode);
|
|
218
217
|
return new QueryBuilder({
|
|
219
218
|
...this.#props,
|
|
220
|
-
queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, 'Or',
|
|
219
|
+
queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, 'Or', parseNotExistFilter(this.#props.parseContext, arg)),
|
|
221
220
|
});
|
|
222
221
|
}
|
|
223
222
|
having(...args) {
|
|
224
223
|
assertCanHaveHavingClause(this.#props.queryNode);
|
|
225
224
|
return new QueryBuilder({
|
|
226
225
|
...this.#props,
|
|
227
|
-
queryNode: SelectQueryNode.cloneWithHaving(this.#props.queryNode, 'And', parseHavingFilter(this.#parseContext, args)),
|
|
226
|
+
queryNode: SelectQueryNode.cloneWithHaving(this.#props.queryNode, 'And', parseHavingFilter(this.#props.parseContext, args)),
|
|
228
227
|
});
|
|
229
228
|
}
|
|
230
229
|
/**
|
|
@@ -235,14 +234,14 @@ export class QueryBuilder {
|
|
|
235
234
|
assertCanHaveHavingClause(this.#props.queryNode);
|
|
236
235
|
return new QueryBuilder({
|
|
237
236
|
...this.#props,
|
|
238
|
-
queryNode: SelectQueryNode.cloneWithHaving(this.#props.queryNode, 'And', parseReferenceFilter(this.#parseContext, lhs, op, rhs)),
|
|
237
|
+
queryNode: SelectQueryNode.cloneWithHaving(this.#props.queryNode, 'And', parseReferenceFilter(this.#props.parseContext, lhs, op, rhs)),
|
|
239
238
|
});
|
|
240
239
|
}
|
|
241
240
|
orHaving(...args) {
|
|
242
241
|
assertCanHaveHavingClause(this.#props.queryNode);
|
|
243
242
|
return new QueryBuilder({
|
|
244
243
|
...this.#props,
|
|
245
|
-
queryNode: SelectQueryNode.cloneWithHaving(this.#props.queryNode, 'Or', parseHavingFilter(this.#parseContext, args)),
|
|
244
|
+
queryNode: SelectQueryNode.cloneWithHaving(this.#props.queryNode, 'Or', parseHavingFilter(this.#props.parseContext, args)),
|
|
246
245
|
});
|
|
247
246
|
}
|
|
248
247
|
/**
|
|
@@ -253,7 +252,7 @@ export class QueryBuilder {
|
|
|
253
252
|
assertCanHaveHavingClause(this.#props.queryNode);
|
|
254
253
|
return new QueryBuilder({
|
|
255
254
|
...this.#props,
|
|
256
|
-
queryNode: SelectQueryNode.cloneWithHaving(this.#props.queryNode, 'Or', parseReferenceFilter(this.#parseContext, lhs, op, rhs)),
|
|
255
|
+
queryNode: SelectQueryNode.cloneWithHaving(this.#props.queryNode, 'Or', parseReferenceFilter(this.#props.parseContext, lhs, op, rhs)),
|
|
257
256
|
});
|
|
258
257
|
}
|
|
259
258
|
/**
|
|
@@ -264,7 +263,7 @@ export class QueryBuilder {
|
|
|
264
263
|
assertCanHaveHavingClause(this.#props.queryNode);
|
|
265
264
|
return new QueryBuilder({
|
|
266
265
|
...this.#props,
|
|
267
|
-
queryNode: SelectQueryNode.cloneWithHaving(this.#props.queryNode, 'And',
|
|
266
|
+
queryNode: SelectQueryNode.cloneWithHaving(this.#props.queryNode, 'And', parseExistFilter(this.#props.parseContext, arg)),
|
|
268
267
|
});
|
|
269
268
|
}
|
|
270
269
|
/**
|
|
@@ -275,7 +274,7 @@ export class QueryBuilder {
|
|
|
275
274
|
assertCanHaveHavingClause(this.#props.queryNode);
|
|
276
275
|
return new QueryBuilder({
|
|
277
276
|
...this.#props,
|
|
278
|
-
queryNode: SelectQueryNode.cloneWithHaving(this.#props.queryNode, 'And',
|
|
277
|
+
queryNode: SelectQueryNode.cloneWithHaving(this.#props.queryNode, 'And', parseNotExistFilter(this.#props.parseContext, arg)),
|
|
279
278
|
});
|
|
280
279
|
}
|
|
281
280
|
/**
|
|
@@ -286,7 +285,7 @@ export class QueryBuilder {
|
|
|
286
285
|
assertCanHaveHavingClause(this.#props.queryNode);
|
|
287
286
|
return new QueryBuilder({
|
|
288
287
|
...this.#props,
|
|
289
|
-
queryNode: SelectQueryNode.cloneWithHaving(this.#props.queryNode, 'Or',
|
|
288
|
+
queryNode: SelectQueryNode.cloneWithHaving(this.#props.queryNode, 'Or', parseExistFilter(this.#props.parseContext, arg)),
|
|
290
289
|
});
|
|
291
290
|
}
|
|
292
291
|
/**
|
|
@@ -297,21 +296,21 @@ export class QueryBuilder {
|
|
|
297
296
|
assertCanHaveHavingClause(this.#props.queryNode);
|
|
298
297
|
return new QueryBuilder({
|
|
299
298
|
...this.#props,
|
|
300
|
-
queryNode: SelectQueryNode.cloneWithHaving(this.#props.queryNode, 'Or',
|
|
299
|
+
queryNode: SelectQueryNode.cloneWithHaving(this.#props.queryNode, 'Or', parseNotExistFilter(this.#props.parseContext, arg)),
|
|
301
300
|
});
|
|
302
301
|
}
|
|
303
302
|
select(selection) {
|
|
304
303
|
assertCanHaveSelectClause(this.#props.queryNode);
|
|
305
304
|
return new QueryBuilder({
|
|
306
305
|
...this.#props,
|
|
307
|
-
queryNode: SelectQueryNode.cloneWithSelections(this.#props.queryNode, parseSelectExpressionOrList(this.#parseContext, selection)),
|
|
306
|
+
queryNode: SelectQueryNode.cloneWithSelections(this.#props.queryNode, parseSelectExpressionOrList(this.#props.parseContext, selection)),
|
|
308
307
|
});
|
|
309
308
|
}
|
|
310
309
|
distinctOn(selection) {
|
|
311
310
|
assertCanHaveSelectClause(this.#props.queryNode);
|
|
312
311
|
return new QueryBuilder({
|
|
313
312
|
...this.#props,
|
|
314
|
-
queryNode: SelectQueryNode.cloneWithDistinctOnSelections(this.#props.queryNode, parseSelectExpressionOrList(this.#parseContext, selection)),
|
|
313
|
+
queryNode: SelectQueryNode.cloneWithDistinctOnSelections(this.#props.queryNode, parseSelectExpressionOrList(this.#props.parseContext, selection)),
|
|
315
314
|
});
|
|
316
315
|
}
|
|
317
316
|
/**
|
|
@@ -402,35 +401,35 @@ export class QueryBuilder {
|
|
|
402
401
|
assertCanHaveSelectClause(this.#props.queryNode);
|
|
403
402
|
return new QueryBuilder({
|
|
404
403
|
...this.#props,
|
|
405
|
-
queryNode: SelectQueryNode.cloneWithSelections(this.#props.queryNode,
|
|
404
|
+
queryNode: SelectQueryNode.cloneWithSelections(this.#props.queryNode, parseSelectAll(table)),
|
|
406
405
|
});
|
|
407
406
|
}
|
|
408
407
|
innerJoin(...args) {
|
|
409
408
|
assertCanHaveJoins(this.#props.queryNode);
|
|
410
409
|
return new QueryBuilder({
|
|
411
410
|
...this.#props,
|
|
412
|
-
queryNode: QueryNode.cloneWithJoin(this.#props.queryNode,
|
|
411
|
+
queryNode: QueryNode.cloneWithJoin(this.#props.queryNode, parseJoin(this.#props.parseContext, 'InnerJoin', args)),
|
|
413
412
|
});
|
|
414
413
|
}
|
|
415
414
|
leftJoin(...args) {
|
|
416
415
|
assertCanHaveJoins(this.#props.queryNode);
|
|
417
416
|
return new QueryBuilder({
|
|
418
417
|
...this.#props,
|
|
419
|
-
queryNode: QueryNode.cloneWithJoin(this.#props.queryNode,
|
|
418
|
+
queryNode: QueryNode.cloneWithJoin(this.#props.queryNode, parseJoin(this.#props.parseContext, 'LeftJoin', args)),
|
|
420
419
|
});
|
|
421
420
|
}
|
|
422
421
|
rightJoin(...args) {
|
|
423
422
|
assertCanHaveJoins(this.#props.queryNode);
|
|
424
423
|
return new QueryBuilder({
|
|
425
424
|
...this.#props,
|
|
426
|
-
queryNode: QueryNode.cloneWithJoin(this.#props.queryNode,
|
|
425
|
+
queryNode: QueryNode.cloneWithJoin(this.#props.queryNode, parseJoin(this.#props.parseContext, 'RightJoin', args)),
|
|
427
426
|
});
|
|
428
427
|
}
|
|
429
428
|
fullJoin(...args) {
|
|
430
429
|
assertCanHaveJoins(this.#props.queryNode);
|
|
431
430
|
return new QueryBuilder({
|
|
432
431
|
...this.#props,
|
|
433
|
-
queryNode: QueryNode.cloneWithJoin(this.#props.queryNode,
|
|
432
|
+
queryNode: QueryNode.cloneWithJoin(this.#props.queryNode, parseJoin(this.#props.parseContext, 'FullJoin', args)),
|
|
434
433
|
});
|
|
435
434
|
}
|
|
436
435
|
values(args) {
|
|
@@ -487,7 +486,7 @@ export class QueryBuilder {
|
|
|
487
486
|
return new QueryBuilder({
|
|
488
487
|
...this.#props,
|
|
489
488
|
queryNode: InsertQueryNode.cloneWith(this.#props.queryNode, {
|
|
490
|
-
onConflict: parseOnConflictUpdate(this.#parseContext, target, updates),
|
|
489
|
+
onConflict: parseOnConflictUpdate(this.#props.parseContext, target, updates),
|
|
491
490
|
}),
|
|
492
491
|
});
|
|
493
492
|
}
|
|
@@ -513,7 +512,7 @@ export class QueryBuilder {
|
|
|
513
512
|
return new QueryBuilder({
|
|
514
513
|
...this.#props,
|
|
515
514
|
queryNode: InsertQueryNode.cloneWith(this.#props.queryNode, {
|
|
516
|
-
onDuplicateKey: OnDuplicateKeyNode.create(parseUpdateObject(this.#parseContext, updates)),
|
|
515
|
+
onDuplicateKey: OnDuplicateKeyNode.create(parseUpdateObject(this.#props.parseContext, updates)),
|
|
517
516
|
}),
|
|
518
517
|
});
|
|
519
518
|
}
|
|
@@ -603,14 +602,14 @@ export class QueryBuilder {
|
|
|
603
602
|
assertCanHaveUpdates(this.#props.queryNode);
|
|
604
603
|
return new QueryBuilder({
|
|
605
604
|
...this.#props,
|
|
606
|
-
queryNode: UpdateQueryNode.cloneWithUpdates(this.#props.queryNode, parseUpdateObject(this.#parseContext, row)),
|
|
605
|
+
queryNode: UpdateQueryNode.cloneWithUpdates(this.#props.queryNode, parseUpdateObject(this.#props.parseContext, row)),
|
|
607
606
|
});
|
|
608
607
|
}
|
|
609
608
|
returning(selection) {
|
|
610
609
|
assertCanHaveReturningClause(this.#props.queryNode);
|
|
611
610
|
return new QueryBuilder({
|
|
612
611
|
...this.#props,
|
|
613
|
-
queryNode: QueryNode.cloneWithReturning(this.#props.queryNode, parseSelectExpressionOrList(this.#parseContext, selection)),
|
|
612
|
+
queryNode: QueryNode.cloneWithReturning(this.#props.queryNode, parseSelectExpressionOrList(this.#props.parseContext, selection)),
|
|
614
613
|
});
|
|
615
614
|
}
|
|
616
615
|
/**
|
|
@@ -621,7 +620,7 @@ export class QueryBuilder {
|
|
|
621
620
|
assertCanHaveReturningClause(this.#props.queryNode);
|
|
622
621
|
return new QueryBuilder({
|
|
623
622
|
...this.#props,
|
|
624
|
-
queryNode: QueryNode.cloneWithReturning(this.#props.queryNode,
|
|
623
|
+
queryNode: QueryNode.cloneWithReturning(this.#props.queryNode, parseSelectAll()),
|
|
625
624
|
});
|
|
626
625
|
}
|
|
627
626
|
/**
|
|
@@ -714,14 +713,14 @@ export class QueryBuilder {
|
|
|
714
713
|
assertCanHaveOrderByClause(this.#props.queryNode);
|
|
715
714
|
return new QueryBuilder({
|
|
716
715
|
...this.#props,
|
|
717
|
-
queryNode: SelectQueryNode.cloneWithOrderByItem(this.#props.queryNode, OrderByItemNode.create(parseReferenceExpression(this.#parseContext, orderBy), direction)),
|
|
716
|
+
queryNode: SelectQueryNode.cloneWithOrderByItem(this.#props.queryNode, OrderByItemNode.create(parseReferenceExpression(this.#props.parseContext, orderBy), direction)),
|
|
718
717
|
});
|
|
719
718
|
}
|
|
720
719
|
groupBy(orderBy) {
|
|
721
720
|
assertCanHaveGroupByClause(this.#props.queryNode);
|
|
722
721
|
return new QueryBuilder({
|
|
723
722
|
...this.#props,
|
|
724
|
-
queryNode: SelectQueryNode.cloneWithGroupByItems(this.#props.queryNode, parseReferenceExpressionOrList(this.#parseContext, orderBy).map(GroupByItemNode.create)),
|
|
723
|
+
queryNode: SelectQueryNode.cloneWithGroupByItems(this.#props.queryNode, parseReferenceExpressionOrList(this.#props.parseContext, orderBy).map(GroupByItemNode.create)),
|
|
725
724
|
});
|
|
726
725
|
}
|
|
727
726
|
/**
|
|
@@ -820,7 +819,8 @@ export class QueryBuilder {
|
|
|
820
819
|
const compildQuery = this.#props.executor.compileQuery(node, this.#props.queryId);
|
|
821
820
|
const result = await this.#props.executor.executeQuery(compildQuery, this.#props.queryId);
|
|
822
821
|
if (InsertQueryNode.is(node)) {
|
|
823
|
-
if (this.#props.adapter.supportsReturning &&
|
|
822
|
+
if (this.#props.parseContext.adapter.supportsReturning &&
|
|
823
|
+
node.returning) {
|
|
824
824
|
return result.rows;
|
|
825
825
|
}
|
|
826
826
|
else if (result.insertedPrimaryKey != null) {
|
|
@@ -831,7 +831,8 @@ export class QueryBuilder {
|
|
|
831
831
|
}
|
|
832
832
|
}
|
|
833
833
|
else if (UpdateQueryNode.is(node) || DeleteQueryNode.is(node)) {
|
|
834
|
-
if (this.#props.adapter.supportsReturning &&
|
|
834
|
+
if (this.#props.parseContext.adapter.supportsReturning &&
|
|
835
|
+
node.returning) {
|
|
835
836
|
return result.rows;
|
|
836
837
|
}
|
|
837
838
|
else if (result.numUpdatedOrDeletedRows != null) {
|
|
@@ -868,9 +869,6 @@ export class QueryBuilder {
|
|
|
868
869
|
}
|
|
869
870
|
return result;
|
|
870
871
|
}
|
|
871
|
-
get #parseContext() {
|
|
872
|
-
return createParseContext(this.#props.adapter);
|
|
873
|
-
}
|
|
874
872
|
}
|
|
875
873
|
preventAwait(QueryBuilder, "don't await QueryBuilder instances directly. To execute the query you need to call `execute` or `executeTakeFirst`.");
|
|
876
874
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { AliasedRawBuilder, RawBuilder } from '../raw-builder/raw-builder.js';
|
|
2
2
|
import { AliasedQueryBuilder, QueryBuilder } from './query-builder.js';
|
|
3
|
-
import {
|
|
3
|
+
import { ExpressionBuilder } from './expression-builder.js';
|
|
4
4
|
export declare type ValueType<T> = T[keyof T];
|
|
5
5
|
/**
|
|
6
6
|
* Given a database type and a union of table names returns the row type
|
|
@@ -127,10 +127,10 @@ export declare type AnyQueryBuilder = QueryBuilder<any, any, any>;
|
|
|
127
127
|
export declare type AnyAliasedQueryBuilder = AliasedQueryBuilder<any, any, any, any>;
|
|
128
128
|
export declare type AnyRawBuilder = RawBuilder<any>;
|
|
129
129
|
export declare type AnyAliasedRawBuilder = AliasedRawBuilder<any, any>;
|
|
130
|
-
export declare type QueryBuilderFactory<DB, TB extends keyof DB> = (qb:
|
|
131
|
-
export declare type AliasedQueryBuilderFactory<DB, TB extends keyof DB> = (qb:
|
|
132
|
-
export declare type RawBuilderFactory<DB, TB extends keyof DB> = (qb:
|
|
133
|
-
export declare type AliasedRawBuilderFactory<DB, TB extends keyof DB> = (qb:
|
|
130
|
+
export declare type QueryBuilderFactory<DB, TB extends keyof DB> = (qb: ExpressionBuilder<DB, TB>) => QueryBuilder<any, any, any>;
|
|
131
|
+
export declare type AliasedQueryBuilderFactory<DB, TB extends keyof DB> = (qb: ExpressionBuilder<DB, TB>) => AnyAliasedQueryBuilder;
|
|
132
|
+
export declare type RawBuilderFactory<DB, TB extends keyof DB> = (qb: ExpressionBuilder<DB, TB>) => AnyRawBuilder;
|
|
133
|
+
export declare type AliasedRawBuilderFactory<DB, TB extends keyof DB> = (qb: ExpressionBuilder<DB, TB>) => AnyAliasedRawBuilder;
|
|
134
134
|
export interface InsertResultTypeTag {
|
|
135
135
|
/** @internal */
|
|
136
136
|
__isInsertResultTypeTag__: true;
|
|
@@ -2,7 +2,7 @@ import { DataTypeNode } from '../operation-node/data-type-node.js';
|
|
|
2
2
|
import { OperationNodeVisitor } from '../operation-node/operation-node-visitor.js';
|
|
3
3
|
import { QueryNode } from '../operation-node/query-node.js';
|
|
4
4
|
import { RawNode } from '../operation-node/raw-node.js';
|
|
5
|
-
import {
|
|
5
|
+
import { getLast, freeze, isString, isNumber, isBoolean, isNull, isDate, isBigInt, } from '../util/object-utils.js';
|
|
6
6
|
export class DefaultQueryCompiler extends OperationNodeVisitor {
|
|
7
7
|
#sqlFragments = [];
|
|
8
8
|
#bindings = [];
|
|
@@ -32,7 +32,7 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
|
|
|
32
32
|
this.append(' ');
|
|
33
33
|
}
|
|
34
34
|
this.append('select ');
|
|
35
|
-
if (node.distinctOnSelections
|
|
35
|
+
if (node.distinctOnSelections) {
|
|
36
36
|
this.compileDistinctOn(node.distinctOnSelections);
|
|
37
37
|
this.append(' ');
|
|
38
38
|
}
|
|
@@ -334,6 +334,10 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
|
|
|
334
334
|
this.append(' on delete ');
|
|
335
335
|
this.append(node.onDelete);
|
|
336
336
|
}
|
|
337
|
+
if (node.onUpdate) {
|
|
338
|
+
this.append(' on update ');
|
|
339
|
+
this.append(node.onUpdate);
|
|
340
|
+
}
|
|
337
341
|
}
|
|
338
342
|
visitDropTable(node) {
|
|
339
343
|
this.append('drop table ');
|
|
@@ -520,6 +524,14 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
|
|
|
520
524
|
this.compileList(node.columns);
|
|
521
525
|
this.append(') ');
|
|
522
526
|
this.visitNode(node.references);
|
|
527
|
+
if (node.onDelete) {
|
|
528
|
+
this.append(' on delete ');
|
|
529
|
+
this.append(node.onDelete);
|
|
530
|
+
}
|
|
531
|
+
if (node.onUpdate) {
|
|
532
|
+
this.append(' on update ');
|
|
533
|
+
this.append(node.onUpdate);
|
|
534
|
+
}
|
|
523
535
|
}
|
|
524
536
|
visitList(node) {
|
|
525
537
|
this.compileList(node.items);
|
|
@@ -5,7 +5,7 @@ import { QueryExecutor } from './query-executor/query-executor.js';
|
|
|
5
5
|
import { RawBuilder } from './raw-builder/raw-builder.js';
|
|
6
6
|
import { CommonTableExpression, QueryCreatorWithCommonTableExpression } from './parser/with-parser.js';
|
|
7
7
|
import { WithNode } from './operation-node/with-node.js';
|
|
8
|
-
import {
|
|
8
|
+
import { ParseContext } from './parser/parse-context.js';
|
|
9
9
|
export declare class QueryCreator<DB> {
|
|
10
10
|
#private;
|
|
11
11
|
constructor(props: QueryCreatorProps);
|
|
@@ -378,7 +378,7 @@ export declare class QueryCreator<DB> {
|
|
|
378
378
|
raw<T = unknown>(sql: string, params?: any[]): RawBuilder<T>;
|
|
379
379
|
}
|
|
380
380
|
export interface QueryCreatorProps {
|
|
381
|
-
readonly adapter: DialectAdapter;
|
|
382
381
|
readonly executor: QueryExecutor;
|
|
382
|
+
readonly parseContext: ParseContext;
|
|
383
383
|
readonly withNode?: WithNode;
|
|
384
384
|
}
|
|
@@ -10,7 +10,6 @@ import { WithNode } from './operation-node/with-node.js';
|
|
|
10
10
|
import { createQueryId } from './util/query-id.js';
|
|
11
11
|
import { WithSchemaPlugin } from './plugin/with-schema/with-schema-plugin.js';
|
|
12
12
|
import { freeze } from './util/object-utils.js';
|
|
13
|
-
import { createParseContext } from './parser/parse-context.js';
|
|
14
13
|
export class QueryCreator {
|
|
15
14
|
#props;
|
|
16
15
|
constructor(props) {
|
|
@@ -20,8 +19,8 @@ export class QueryCreator {
|
|
|
20
19
|
return new QueryBuilder({
|
|
21
20
|
queryId: createQueryId(),
|
|
22
21
|
executor: this.#props.executor,
|
|
23
|
-
|
|
24
|
-
queryNode: SelectQueryNode.create(parseTableExpressionOrList(this.#parseContext, from), this.#props.withNode),
|
|
22
|
+
parseContext: this.#props.parseContext,
|
|
23
|
+
queryNode: SelectQueryNode.create(parseTableExpressionOrList(this.#props.parseContext, from), this.#props.withNode),
|
|
25
24
|
});
|
|
26
25
|
}
|
|
27
26
|
/**
|
|
@@ -69,7 +68,7 @@ export class QueryCreator {
|
|
|
69
68
|
return new QueryBuilder({
|
|
70
69
|
queryId: createQueryId(),
|
|
71
70
|
executor: this.#props.executor,
|
|
72
|
-
|
|
71
|
+
parseContext: this.#props.parseContext,
|
|
73
72
|
queryNode: InsertQueryNode.create(parseTable(table), this.#props.withNode),
|
|
74
73
|
});
|
|
75
74
|
}
|
|
@@ -91,8 +90,8 @@ export class QueryCreator {
|
|
|
91
90
|
return new QueryBuilder({
|
|
92
91
|
queryId: createQueryId(),
|
|
93
92
|
executor: this.#props.executor,
|
|
94
|
-
|
|
95
|
-
queryNode: DeleteQueryNode.create(parseTableExpression(this.#parseContext, table), this.#props.withNode),
|
|
93
|
+
parseContext: this.#props.parseContext,
|
|
94
|
+
queryNode: DeleteQueryNode.create(parseTableExpression(this.#props.parseContext, table), this.#props.withNode),
|
|
96
95
|
});
|
|
97
96
|
}
|
|
98
97
|
/**
|
|
@@ -117,8 +116,8 @@ export class QueryCreator {
|
|
|
117
116
|
return new QueryBuilder({
|
|
118
117
|
queryId: createQueryId(),
|
|
119
118
|
executor: this.#props.executor,
|
|
120
|
-
|
|
121
|
-
queryNode: UpdateQueryNode.create(parseTableExpression(this.#parseContext, table), this.#props.withNode),
|
|
119
|
+
parseContext: this.#props.parseContext,
|
|
120
|
+
queryNode: UpdateQueryNode.create(parseTableExpression(this.#props.parseContext, table), this.#props.withNode),
|
|
122
121
|
});
|
|
123
122
|
}
|
|
124
123
|
/**
|
|
@@ -144,7 +143,7 @@ export class QueryCreator {
|
|
|
144
143
|
* ```
|
|
145
144
|
*/
|
|
146
145
|
with(name, expression) {
|
|
147
|
-
const cte = parseCommonTableExpression(this.#parseContext, name, expression);
|
|
146
|
+
const cte = parseCommonTableExpression(this.#props.parseContext, name, expression);
|
|
148
147
|
return new QueryCreator({
|
|
149
148
|
...this.#props,
|
|
150
149
|
withNode: this.#props.withNode
|
|
@@ -322,7 +321,4 @@ export class QueryCreator {
|
|
|
322
321
|
executor: this.#props.executor,
|
|
323
322
|
});
|
|
324
323
|
}
|
|
325
|
-
get #parseContext() {
|
|
326
|
-
return createParseContext(this.#props.adapter);
|
|
327
|
-
}
|
|
328
324
|
}
|
|
@@ -2,15 +2,16 @@ import { AlterColumnNode } from '../operation-node/alter-column-node.js';
|
|
|
2
2
|
import { AlterTableNode } from '../operation-node/alter-table-node.js';
|
|
3
3
|
import { ColumnDataType } from '../operation-node/data-type-node.js';
|
|
4
4
|
import { OperationNodeSource } from '../operation-node/operation-node-source.js';
|
|
5
|
-
import {
|
|
5
|
+
import { OnModifyForeignAction } from '../operation-node/references-node.js';
|
|
6
6
|
import { CompiledQuery } from '../query-compiler/compiled-query.js';
|
|
7
|
-
import { RawBuilder } from '../raw-builder/raw-builder.js';
|
|
8
7
|
import { Compilable } from '../util/compilable.js';
|
|
9
8
|
import { PrimitiveValue } from '../util/object-utils.js';
|
|
10
9
|
import { ColumnDefinitionBuilder, ColumnDefinitionBuilderInterface } from './column-definition-builder.js';
|
|
11
10
|
import { AnyRawBuilder } from '../query-builder/type-utils.js';
|
|
12
11
|
import { QueryId } from '../util/query-id.js';
|
|
13
12
|
import { QueryExecutor } from '../query-executor/query-executor.js';
|
|
13
|
+
import { DataTypeExpression } from '../parser/data-type-parser.js';
|
|
14
|
+
import { ForeignKeyConstraintBuilder, ForeignKeyConstraintBuilderInterface } from './foreign-key-constraint-builder.js';
|
|
14
15
|
export declare class AlterTableBuilder {
|
|
15
16
|
#private;
|
|
16
17
|
constructor(props: AlterTableBuilderProps);
|
|
@@ -19,13 +20,16 @@ export declare class AlterTableBuilder {
|
|
|
19
20
|
alterColumn(column: string): AlterColumnBuilder;
|
|
20
21
|
dropColumn(column: string): AlterTableExecutor;
|
|
21
22
|
renameColumn(column: string, newColumn: string): AlterTableExecutor;
|
|
22
|
-
addColumn(columnName: string, dataType:
|
|
23
|
+
addColumn(columnName: string, dataType: DataTypeExpression): AlterTableAddColumnBuilder;
|
|
23
24
|
/**
|
|
24
25
|
* Creates an `alter table modify column` query. The `modify column` statement
|
|
25
26
|
* is only implemeted by MySQL and oracle AFAIK. On other databases you
|
|
26
27
|
* should use the `alterColumn` method.
|
|
27
28
|
*/
|
|
28
|
-
modifyColumn(columnName: string, dataType:
|
|
29
|
+
modifyColumn(columnName: string, dataType: DataTypeExpression): AlterTableModifyColumnBuilder;
|
|
30
|
+
addUniqueConstraint(constraintName: string, columns: string[]): AlterTableExecutor;
|
|
31
|
+
addCheckConstraint(constraintName: string, checkExpression: string): AlterTableExecutor;
|
|
32
|
+
addForeignKeyConstraint(constraintName: string, columns: string[], targetTable: string, targetColumns: string[]): AlterTableAddForeignKeyConstraintBuilder;
|
|
29
33
|
}
|
|
30
34
|
export interface AlterTableBuilderProps {
|
|
31
35
|
readonly queryId: QueryId;
|
|
@@ -53,13 +57,14 @@ export declare class AlterTableExecutor implements OperationNodeSource, Compilab
|
|
|
53
57
|
}
|
|
54
58
|
export interface AlterTableExecutorProps extends AlterTableBuilderProps {
|
|
55
59
|
}
|
|
56
|
-
export declare class AlterTableAddColumnBuilder implements ColumnDefinitionBuilderInterface<AlterTableAddColumnBuilder
|
|
60
|
+
export declare class AlterTableAddColumnBuilder implements ColumnDefinitionBuilderInterface<AlterTableAddColumnBuilder>, OperationNodeSource, Compilable {
|
|
57
61
|
#private;
|
|
58
62
|
constructor(props: AlterTableAddColumnBuilderProps);
|
|
59
63
|
increments(): AlterTableAddColumnBuilder;
|
|
60
64
|
primaryKey(): AlterTableAddColumnBuilder;
|
|
61
65
|
references(ref: string): AlterTableAddColumnBuilder;
|
|
62
|
-
onDelete(onDelete:
|
|
66
|
+
onDelete(onDelete: OnModifyForeignAction): AlterTableAddColumnBuilder;
|
|
67
|
+
onUpdate(onDelete: OnModifyForeignAction): AlterTableAddColumnBuilder;
|
|
63
68
|
unique(): AlterTableAddColumnBuilder;
|
|
64
69
|
notNull(): AlterTableAddColumnBuilder;
|
|
65
70
|
defaultTo(value: PrimitiveValue | AnyRawBuilder): AlterTableAddColumnBuilder;
|
|
@@ -71,13 +76,14 @@ export declare class AlterTableAddColumnBuilder implements ColumnDefinitionBuild
|
|
|
71
76
|
export interface AlterTableAddColumnBuilderProps extends AlterTableBuilderProps {
|
|
72
77
|
readonly columnBuilder: ColumnDefinitionBuilder;
|
|
73
78
|
}
|
|
74
|
-
export declare class AlterTableModifyColumnBuilder implements ColumnDefinitionBuilderInterface<AlterTableModifyColumnBuilder
|
|
79
|
+
export declare class AlterTableModifyColumnBuilder implements ColumnDefinitionBuilderInterface<AlterTableModifyColumnBuilder>, OperationNodeSource, Compilable {
|
|
75
80
|
#private;
|
|
76
81
|
constructor(props: AlterTableModifyColumnBuilderProps);
|
|
77
82
|
increments(): AlterTableModifyColumnBuilder;
|
|
78
83
|
primaryKey(): AlterTableModifyColumnBuilder;
|
|
79
84
|
references(ref: string): AlterTableModifyColumnBuilder;
|
|
80
|
-
onDelete(onDelete:
|
|
85
|
+
onDelete(onDelete: OnModifyForeignAction): AlterTableModifyColumnBuilder;
|
|
86
|
+
onUpdate(onUpdate: OnModifyForeignAction): AlterTableModifyColumnBuilder;
|
|
81
87
|
unique(): AlterTableModifyColumnBuilder;
|
|
82
88
|
notNull(): AlterTableModifyColumnBuilder;
|
|
83
89
|
defaultTo(value: PrimitiveValue | AnyRawBuilder): AlterTableModifyColumnBuilder;
|
|
@@ -89,3 +95,15 @@ export declare class AlterTableModifyColumnBuilder implements ColumnDefinitionBu
|
|
|
89
95
|
export interface AlterTableModifyColumnBuilderProps extends AlterTableBuilderProps {
|
|
90
96
|
readonly columnBuilder: ColumnDefinitionBuilder;
|
|
91
97
|
}
|
|
98
|
+
export declare class AlterTableAddForeignKeyConstraintBuilder implements ForeignKeyConstraintBuilderInterface<AlterTableAddForeignKeyConstraintBuilder>, OperationNodeSource, Compilable {
|
|
99
|
+
#private;
|
|
100
|
+
constructor(props: AlterTableAddForeignKeyConstraintBuilderProps);
|
|
101
|
+
onDelete(onDelete: OnModifyForeignAction): AlterTableAddForeignKeyConstraintBuilder;
|
|
102
|
+
onUpdate(onUpdate: OnModifyForeignAction): AlterTableAddForeignKeyConstraintBuilder;
|
|
103
|
+
toOperationNode(): AlterTableNode;
|
|
104
|
+
compile(): CompiledQuery;
|
|
105
|
+
execute(): Promise<void>;
|
|
106
|
+
}
|
|
107
|
+
export interface AlterTableAddForeignKeyConstraintBuilderProps extends AlterTableBuilderProps {
|
|
108
|
+
readonly constraintBuilder: ForeignKeyConstraintBuilder;
|
|
109
|
+
}
|