kysely 0.11.2 → 0.12.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 +1 -1
- package/dist/cjs/dialect/dialect-adapter-base.d.ts +36 -0
- package/dist/cjs/dialect/mysql/mysql-adapter.d.ts +36 -0
- package/dist/cjs/dialect/mysql/mysql-dialect.d.ts +16 -0
- package/dist/cjs/dialect/mysql/mysql-driver.d.ts +29 -0
- package/dist/cjs/dialect/mysql/mysql-introspector.d.ts +3 -0
- package/dist/cjs/dialect/mysql/mysql-query-compiler.d.ts +0 -2
- package/dist/cjs/dialect/mysql/mysql-query-compiler.js +0 -6
- package/dist/cjs/dialect/postgres/postgres-adapter.d.ts +36 -0
- package/dist/cjs/dialect/postgres/postgres-dialect.d.ts +16 -0
- package/dist/cjs/dialect/postgres/postgres-driver.d.ts +29 -0
- package/dist/cjs/dialect/postgres/postgres-introspector.d.ts +3 -0
- package/dist/cjs/dialect/postgres/postgres-query-compiler.d.ts +3 -0
- package/dist/cjs/dialect/postgres/postgres-query-compiler.js +9 -1
- package/dist/cjs/dialect/sqlite/sqlite-adapter.d.ts +36 -0
- package/dist/cjs/dialect/sqlite/sqlite-adapter.js +6 -2
- package/dist/cjs/dialect/sqlite/sqlite-dialect.d.ts +16 -0
- package/dist/cjs/dialect/sqlite/sqlite-driver.d.ts +29 -0
- package/dist/cjs/dialect/sqlite/sqlite-introspector.d.ts +3 -0
- package/dist/cjs/dialect/sqlite/sqlite-query-compiler.d.ts +2 -2
- package/dist/cjs/dialect/sqlite/sqlite-query-compiler.js +6 -6
- package/dist/cjs/driver/default-connection-provider.d.ts +4 -0
- package/dist/cjs/driver/runtime-driver.d.ts +29 -0
- package/dist/cjs/driver/runtime-driver.js +1 -1
- package/dist/cjs/driver/single-connection-provider.d.ts +4 -0
- package/dist/cjs/dynamic/dynamic-reference-builder.d.ts +1 -0
- package/dist/cjs/dynamic/dynamic-reference-builder.js +9 -1
- package/dist/cjs/dynamic/dynamic.d.ts +6 -7
- package/dist/cjs/dynamic/dynamic.js +6 -7
- package/dist/cjs/index.d.ts +14 -3
- package/dist/cjs/index.js +12 -1
- package/dist/cjs/kysely.d.ts +39 -15
- package/dist/cjs/kysely.js +32 -9
- package/dist/cjs/migration/migration.d.ts +2 -2
- package/dist/cjs/operation-node/create-table-node.d.ts +6 -2
- package/dist/cjs/operation-node/create-table-node.js +6 -6
- package/dist/cjs/operation-node/create-view-node.d.ts +1 -0
- package/dist/cjs/operation-node/insert-query-node.d.ts +4 -4
- package/dist/cjs/operation-node/operation-node-transformer.d.ts +2 -0
- package/dist/cjs/operation-node/operation-node-transformer.js +11 -1
- 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/query-node.d.ts +0 -2
- package/dist/cjs/operation-node/query-node.js +0 -10
- package/dist/cjs/operation-node/values-node.d.ts +15 -0
- package/dist/cjs/operation-node/values-node.js +18 -0
- package/dist/cjs/package.json +1 -3
- package/dist/cjs/parser/complex-expression-parser.d.ts +9 -0
- package/dist/cjs/parser/complex-expression-parser.js +25 -0
- package/dist/cjs/parser/filter-parser.d.ts +13 -4
- package/dist/cjs/parser/filter-parser.js +21 -24
- package/dist/cjs/parser/insert-values-parser.d.ts +7 -10
- package/dist/cjs/parser/insert-values-parser.js +31 -39
- package/dist/cjs/parser/order-by-parser.d.ts +1 -1
- package/dist/cjs/parser/parse-context.d.ts +22 -8
- package/dist/cjs/parser/parse-context.js +10 -10
- package/dist/cjs/parser/reference-parser.d.ts +8 -7
- package/dist/cjs/parser/reference-parser.js +8 -17
- package/dist/cjs/parser/returning-parser.d.ts +1 -5
- package/dist/cjs/parser/select-parser.d.ts +12 -14
- package/dist/cjs/parser/select-parser.js +5 -9
- package/dist/cjs/parser/table-parser.d.ts +9 -11
- package/dist/cjs/parser/table-parser.js +2 -8
- package/dist/cjs/parser/union-parser.d.ts +2 -2
- package/dist/cjs/parser/union-parser.js +1 -6
- package/dist/cjs/parser/update-set-parser.d.ts +2 -8
- package/dist/cjs/parser/update-set-parser.js +6 -26
- package/dist/cjs/parser/value-parser.d.ts +9 -6
- package/dist/cjs/parser/value-parser.js +7 -30
- package/dist/cjs/parser/with-parser.d.ts +6 -3
- package/dist/cjs/plugin/camel-case/camel-case-plugin.d.ts +34 -0
- package/dist/cjs/plugin/immediate-value.ts/immediate-value-plugin.d.ts +34 -0
- package/dist/cjs/plugin/immediate-value.ts/immediate-value-plugin.js +2 -2
- package/dist/cjs/plugin/with-schema/with-schema-plugin.d.ts +34 -0
- package/dist/cjs/query-builder/delete-query-builder.d.ts +647 -0
- package/dist/cjs/query-builder/delete-query-builder.js +185 -0
- package/dist/cjs/query-builder/expression-builder.d.ts +8 -6
- package/dist/cjs/query-builder/expression-builder.js +3 -3
- package/dist/cjs/query-builder/function-builder.d.ts +2 -1
- package/dist/cjs/query-builder/function-builder.js +2 -1
- package/dist/cjs/query-builder/having-interface.d.ts +49 -0
- package/dist/cjs/query-builder/having-interface.js +2 -0
- package/dist/cjs/query-builder/insert-query-builder.d.ts +504 -0
- package/dist/cjs/query-builder/insert-query-builder.js +256 -0
- package/dist/cjs/query-builder/insert-result.d.ts +3 -2
- package/dist/cjs/query-builder/insert-result.js +3 -2
- package/dist/cjs/query-builder/join-builder.d.ts +19 -20
- package/dist/cjs/query-builder/join-builder.js +12 -12
- package/dist/cjs/query-builder/join-interface.d.ts +130 -0
- package/dist/cjs/query-builder/join-interface.js +2 -0
- package/dist/cjs/query-builder/no-result-error.d.ts +9 -0
- package/dist/cjs/query-builder/no-result-error.js +14 -0
- package/dist/cjs/query-builder/returning-interface.d.ts +73 -0
- package/dist/cjs/query-builder/returning-interface.js +2 -0
- package/dist/cjs/query-builder/{query-builder.d.ts → select-query-builder.d.ts} +145 -634
- package/dist/cjs/query-builder/select-query-builder.js +571 -0
- package/dist/cjs/query-builder/update-query-builder.d.ts +735 -0
- package/dist/cjs/query-builder/update-query-builder.js +279 -0
- package/dist/cjs/query-builder/where-interface.d.ts +378 -0
- package/dist/cjs/query-builder/where-interface.js +2 -0
- package/dist/cjs/query-compiler/default-query-compiler.d.ts +2 -0
- package/dist/cjs/query-compiler/default-query-compiler.js +22 -5
- package/dist/cjs/query-creator.d.ts +42 -40
- package/dist/cjs/query-creator.js +33 -28
- package/dist/cjs/query-executor/query-executor.d.ts +1 -1
- package/dist/cjs/query-executor/query-executor.js +1 -1
- package/dist/cjs/raw-builder/raw-builder.d.ts +2 -0
- package/dist/cjs/raw-builder/raw-builder.js +6 -0
- package/dist/cjs/schema/alter-table-builder.d.ts +218 -2
- package/dist/cjs/schema/column-definition-builder.d.ts +135 -20
- package/dist/cjs/schema/create-index-builder.d.ts +2 -1
- package/dist/cjs/schema/create-index-builder.js +2 -1
- package/dist/cjs/schema/create-table-builder.d.ts +26 -9
- package/dist/cjs/schema/create-table-builder.js +42 -9
- package/dist/cjs/schema/create-view-builder.d.ts +17 -3
- package/dist/cjs/schema/create-view-builder.js +25 -16
- package/dist/cjs/schema/schema.d.ts +18 -11
- package/dist/cjs/schema/schema.js +18 -11
- package/dist/cjs/util/log.d.ts +11 -8
- package/dist/cjs/util/log.js +25 -12
- package/dist/cjs/util/type-utils.d.ts +7 -7
- package/dist/esm/dialect/dialect-adapter-base.d.ts +36 -0
- package/dist/esm/dialect/mysql/mysql-adapter.d.ts +36 -0
- package/dist/esm/dialect/mysql/mysql-dialect.d.ts +16 -0
- package/dist/esm/dialect/mysql/mysql-driver.d.ts +29 -0
- package/dist/esm/dialect/mysql/mysql-introspector.d.ts +3 -0
- package/dist/esm/dialect/mysql/mysql-query-compiler.d.ts +0 -2
- package/dist/esm/dialect/mysql/mysql-query-compiler.js +0 -6
- package/dist/esm/dialect/postgres/postgres-adapter.d.ts +36 -0
- package/dist/esm/dialect/postgres/postgres-dialect.d.ts +16 -0
- package/dist/esm/dialect/postgres/postgres-driver.d.ts +29 -0
- package/dist/esm/dialect/postgres/postgres-introspector.d.ts +3 -0
- package/dist/esm/dialect/postgres/postgres-query-compiler.d.ts +3 -0
- package/dist/esm/dialect/postgres/postgres-query-compiler.js +9 -1
- package/dist/esm/dialect/sqlite/sqlite-adapter.d.ts +36 -0
- package/dist/esm/dialect/sqlite/sqlite-adapter.js +6 -2
- package/dist/esm/dialect/sqlite/sqlite-dialect.d.ts +16 -0
- package/dist/esm/dialect/sqlite/sqlite-driver.d.ts +29 -0
- package/dist/esm/dialect/sqlite/sqlite-introspector.d.ts +3 -0
- package/dist/esm/dialect/sqlite/sqlite-query-compiler.d.ts +2 -2
- package/dist/esm/dialect/sqlite/sqlite-query-compiler.js +6 -6
- package/dist/esm/driver/default-connection-provider.d.ts +4 -0
- package/dist/esm/driver/runtime-driver.d.ts +29 -0
- package/dist/esm/driver/runtime-driver.js +1 -1
- package/dist/esm/driver/single-connection-provider.d.ts +4 -0
- package/dist/esm/dynamic/dynamic-reference-builder.d.ts +1 -0
- package/dist/esm/dynamic/dynamic-reference-builder.js +7 -0
- package/dist/esm/dynamic/dynamic.d.ts +6 -7
- package/dist/esm/dynamic/dynamic.js +6 -7
- package/dist/esm/index.d.ts +14 -3
- package/dist/esm/index.js +12 -1
- package/dist/esm/kysely.d.ts +39 -15
- package/dist/esm/kysely.js +32 -9
- package/dist/esm/migration/migration.d.ts +2 -2
- package/dist/esm/operation-node/create-table-node.d.ts +6 -2
- package/dist/esm/operation-node/create-table-node.js +6 -6
- package/dist/esm/operation-node/create-view-node.d.ts +1 -0
- package/dist/esm/operation-node/insert-query-node.d.ts +4 -4
- package/dist/esm/operation-node/operation-node-transformer.d.ts +2 -0
- package/dist/esm/operation-node/operation-node-transformer.js +11 -1
- 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/query-node.d.ts +0 -2
- package/dist/esm/operation-node/query-node.js +0 -10
- package/dist/esm/operation-node/values-node.d.ts +15 -0
- package/dist/esm/operation-node/values-node.js +15 -0
- package/dist/esm/package.json +1 -3
- package/dist/esm/parser/complex-expression-parser.d.ts +9 -0
- package/dist/esm/parser/complex-expression-parser.js +20 -0
- package/dist/esm/parser/filter-parser.d.ts +13 -4
- package/dist/esm/parser/filter-parser.js +21 -24
- package/dist/esm/parser/insert-values-parser.d.ts +7 -10
- package/dist/esm/parser/insert-values-parser.js +31 -38
- package/dist/esm/parser/order-by-parser.d.ts +1 -1
- package/dist/esm/parser/parse-context.d.ts +22 -8
- package/dist/esm/parser/parse-context.js +10 -10
- package/dist/esm/parser/reference-parser.d.ts +8 -7
- package/dist/esm/parser/reference-parser.js +9 -18
- package/dist/esm/parser/returning-parser.d.ts +1 -5
- package/dist/esm/parser/select-parser.d.ts +12 -14
- package/dist/esm/parser/select-parser.js +6 -10
- package/dist/esm/parser/table-parser.d.ts +9 -11
- package/dist/esm/parser/table-parser.js +3 -9
- package/dist/esm/parser/union-parser.d.ts +2 -2
- package/dist/esm/parser/union-parser.js +1 -6
- package/dist/esm/parser/update-set-parser.d.ts +2 -8
- package/dist/esm/parser/update-set-parser.js +5 -24
- package/dist/esm/parser/value-parser.d.ts +9 -6
- package/dist/esm/parser/value-parser.js +8 -31
- package/dist/esm/parser/with-parser.d.ts +6 -3
- package/dist/esm/plugin/camel-case/camel-case-plugin.d.ts +34 -0
- package/dist/esm/plugin/immediate-value.ts/immediate-value-plugin.d.ts +34 -0
- package/dist/esm/plugin/immediate-value.ts/immediate-value-plugin.js +2 -2
- package/dist/esm/plugin/with-schema/with-schema-plugin.d.ts +34 -0
- package/dist/esm/query-builder/delete-query-builder.d.ts +647 -0
- package/dist/esm/query-builder/delete-query-builder.js +181 -0
- package/dist/esm/query-builder/expression-builder.d.ts +8 -6
- package/dist/esm/query-builder/expression-builder.js +3 -3
- package/dist/esm/query-builder/function-builder.d.ts +2 -1
- package/dist/esm/query-builder/function-builder.js +2 -1
- package/dist/esm/query-builder/having-interface.d.ts +49 -0
- package/dist/esm/query-builder/having-interface.js +1 -0
- package/dist/esm/query-builder/insert-query-builder.d.ts +504 -0
- package/dist/esm/query-builder/insert-query-builder.js +252 -0
- package/dist/esm/query-builder/insert-result.d.ts +3 -2
- package/dist/esm/query-builder/insert-result.js +3 -2
- package/dist/esm/query-builder/join-builder.d.ts +19 -20
- package/dist/esm/query-builder/join-builder.js +12 -12
- package/dist/esm/query-builder/join-interface.d.ts +130 -0
- package/dist/esm/query-builder/join-interface.js +1 -0
- package/dist/esm/query-builder/no-result-error.d.ts +9 -0
- package/dist/esm/query-builder/no-result-error.js +10 -0
- package/dist/esm/query-builder/returning-interface.d.ts +73 -0
- package/dist/esm/query-builder/returning-interface.js +1 -0
- package/dist/esm/query-builder/{query-builder.d.ts → select-query-builder.d.ts} +145 -634
- package/dist/esm/query-builder/select-query-builder.js +566 -0
- package/dist/esm/query-builder/update-query-builder.d.ts +735 -0
- package/dist/esm/query-builder/update-query-builder.js +275 -0
- package/dist/esm/query-builder/where-interface.d.ts +378 -0
- package/dist/esm/query-builder/where-interface.js +1 -0
- package/dist/esm/query-compiler/default-query-compiler.d.ts +2 -0
- package/dist/esm/query-compiler/default-query-compiler.js +22 -5
- package/dist/esm/query-creator.d.ts +42 -40
- package/dist/esm/query-creator.js +33 -28
- package/dist/esm/query-executor/query-executor.d.ts +1 -1
- package/dist/esm/query-executor/query-executor.js +1 -1
- package/dist/esm/raw-builder/raw-builder.d.ts +2 -0
- package/dist/esm/raw-builder/raw-builder.js +6 -0
- package/dist/esm/schema/alter-table-builder.d.ts +218 -2
- package/dist/esm/schema/column-definition-builder.d.ts +135 -20
- package/dist/esm/schema/create-index-builder.d.ts +2 -1
- package/dist/esm/schema/create-index-builder.js +2 -1
- package/dist/esm/schema/create-table-builder.d.ts +26 -9
- package/dist/esm/schema/create-table-builder.js +43 -10
- package/dist/esm/schema/create-view-builder.d.ts +17 -3
- package/dist/esm/schema/create-view-builder.js +25 -16
- package/dist/esm/schema/schema.d.ts +18 -11
- package/dist/esm/schema/schema.js +18 -11
- package/dist/esm/util/log.d.ts +11 -8
- package/dist/esm/util/log.js +25 -12
- package/dist/esm/util/type-utils.d.ts +7 -7
- package/package.json +9 -7
- package/dist/cjs/query-builder/query-builder.js +0 -1067
- package/dist/esm/query-builder/query-builder.js +0 -1061
|
@@ -1,15 +1,12 @@
|
|
|
1
1
|
import { ColumnNode } from '../operation-node/column-node.js';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { AnyQueryBuilder, AnyRawBuilder, GeneratedPlaceholder } from '../util/type-utils.js';
|
|
7
|
-
import { PrimitiveValue } from '../util/object-utils.js';
|
|
2
|
+
import { GeneratedPlaceholder } from '../util/type-utils.js';
|
|
3
|
+
import { ParseContext } from './parse-context.js';
|
|
4
|
+
import { ValueExpression } from './value-parser.js';
|
|
5
|
+
import { ValuesNode } from '../operation-node/values-node.js';
|
|
8
6
|
export declare type InsertObject<DB, TB extends keyof DB> = {
|
|
9
|
-
[C in keyof DB[TB]]: InsertValueExpression<DB[TB][C]>;
|
|
7
|
+
[C in keyof DB[TB]]: InsertValueExpression<DB, TB, DB[TB][C]>;
|
|
10
8
|
};
|
|
11
9
|
export declare type InsertObjectOrList<DB, TB extends keyof DB> = InsertObject<DB, TB> | ReadonlyArray<InsertObject<DB, TB>>;
|
|
12
|
-
declare type InsertValueExpression<T> =
|
|
13
|
-
export declare function parseInsertObjectOrList(args: InsertObjectOrList<any, any>): [ReadonlyArray<ColumnNode>,
|
|
14
|
-
export declare function parseInsertValueExpression(value: InsertValueExpression<PrimitiveValue>): ValueNode | RawNode | SelectQueryNode;
|
|
10
|
+
declare type InsertValueExpression<DB, TB extends keyof DB, T> = ValueExpression<DB, TB, T> | GeneratedPlaceholder;
|
|
11
|
+
export declare function parseInsertObjectOrList(ctx: ParseContext, args: InsertObjectOrList<any, any>): [ReadonlyArray<ColumnNode>, ValuesNode];
|
|
15
12
|
export {};
|
|
@@ -1,51 +1,44 @@
|
|
|
1
1
|
import { ColumnNode } from '../operation-node/column-node.js';
|
|
2
|
-
import { isOperationNodeSource } from '../operation-node/operation-node-source.js';
|
|
3
2
|
import { PrimitiveValueListNode } from '../operation-node/primitive-value-list-node.js';
|
|
4
|
-
import { QueryNode } from '../operation-node/query-node.js';
|
|
5
3
|
import { ValueListNode } from '../operation-node/value-list-node.js';
|
|
6
|
-
import { ValueNode } from '../operation-node/value-node.js';
|
|
7
4
|
import { isGeneratedPlaceholder } from '../util/generated-placeholder.js';
|
|
8
|
-
import { isPrimitive } from '../util/object-utils.js';
|
|
9
|
-
|
|
10
|
-
|
|
5
|
+
import { freeze, isPrimitive } from '../util/object-utils.js';
|
|
6
|
+
import { parseValueExpression } from './value-parser.js';
|
|
7
|
+
import { ValuesNode } from '../operation-node/values-node.js';
|
|
8
|
+
export function parseInsertObjectOrList(ctx, args) {
|
|
9
|
+
return parseInsertColumnsAndValues(ctx, Array.isArray(args) ? args : [args]);
|
|
11
10
|
}
|
|
12
|
-
function parseInsertColumnsAndValues(rows) {
|
|
13
|
-
const columns =
|
|
14
|
-
|
|
11
|
+
function parseInsertColumnsAndValues(ctx, rows) {
|
|
12
|
+
const columns = parseColumnNamesAndIndexes(rows);
|
|
13
|
+
return [
|
|
14
|
+
freeze([...columns.keys()].map(ColumnNode.create)),
|
|
15
|
+
ValuesNode.create(rows.map((row) => parseRowValues(ctx, row, columns))),
|
|
16
|
+
];
|
|
17
|
+
}
|
|
18
|
+
function parseColumnNamesAndIndexes(rows) {
|
|
19
|
+
const columns = new Map();
|
|
15
20
|
for (const row of rows) {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
if (!columns.
|
|
19
|
-
columns.
|
|
21
|
+
const cols = Object.keys(row);
|
|
22
|
+
for (const col of cols) {
|
|
23
|
+
if (!columns.has(col) && !isGeneratedPlaceholder(row[col])) {
|
|
24
|
+
columns.set(col, columns.size);
|
|
20
25
|
}
|
|
21
26
|
}
|
|
22
27
|
}
|
|
23
|
-
|
|
24
|
-
const rowValues = columns.map(() => null);
|
|
25
|
-
for (const column of Object.keys(row)) {
|
|
26
|
-
const columnIdx = columns.indexOf(column);
|
|
27
|
-
if (columnIdx !== -1) {
|
|
28
|
-
rowValues[columnIdx] = row[column];
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
if (rowValues.every(isPrimitive)) {
|
|
32
|
-
values.push(PrimitiveValueListNode.create(rowValues));
|
|
33
|
-
}
|
|
34
|
-
else {
|
|
35
|
-
values.push(ValueListNode.create(rowValues.map(parseInsertValueExpression)));
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
return [columns.map(ColumnNode.create), values];
|
|
28
|
+
return columns;
|
|
39
29
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
const
|
|
46
|
-
if (!
|
|
47
|
-
|
|
30
|
+
function parseRowValues(ctx, row, columns) {
|
|
31
|
+
const rowColumns = Object.keys(row);
|
|
32
|
+
const rowValues = new Array(columns.size).fill(null);
|
|
33
|
+
for (const col of rowColumns) {
|
|
34
|
+
const columnIdx = columns.get(col);
|
|
35
|
+
const value = row[col];
|
|
36
|
+
if (columnIdx !== undefined && !isGeneratedPlaceholder(value)) {
|
|
37
|
+
rowValues[columnIdx] = value;
|
|
48
38
|
}
|
|
49
39
|
}
|
|
50
|
-
|
|
40
|
+
if (rowValues.every(isPrimitive)) {
|
|
41
|
+
return PrimitiveValueListNode.create(rowValues);
|
|
42
|
+
}
|
|
43
|
+
return ValueListNode.create(rowValues.map((it) => parseValueExpression(ctx, it)));
|
|
51
44
|
}
|
|
@@ -3,6 +3,6 @@ import { AnyRawBuilder } from '../util/type-utils.js';
|
|
|
3
3
|
import { ParseContext } from './parse-context.js';
|
|
4
4
|
import { ReferenceExpression } from './reference-parser.js';
|
|
5
5
|
export declare type OrderByDirection = 'asc' | 'desc';
|
|
6
|
-
export declare type OrderByExpression<DB, TB extends keyof DB, O> = ReferenceExpression<DB, TB> | keyof O;
|
|
6
|
+
export declare type OrderByExpression<DB, TB extends keyof DB, O> = ReferenceExpression<DB, TB> | (keyof O & string);
|
|
7
7
|
export declare type OrderByDirectionExpression = OrderByDirection | AnyRawBuilder;
|
|
8
8
|
export declare function parseOrderBy(ctx: ParseContext, orderBy: OrderByExpression<any, any, any>, direction?: OrderByDirectionExpression): OrderByItemNode;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { DialectAdapter } from '../dialect/dialect-adapter.js';
|
|
2
2
|
import { JoinType } from '../operation-node/join-node.js';
|
|
3
3
|
import { JoinBuilder } from '../query-builder/join-builder.js';
|
|
4
|
-
import {
|
|
4
|
+
import { SelectQueryBuilder } from '../query-builder/select-query-builder.js';
|
|
5
5
|
import { ExpressionBuilder } from '../query-builder/expression-builder.js';
|
|
6
6
|
import { QueryCreator } from '../query-creator.js';
|
|
7
7
|
import { TableExpression } from './table-parser.js';
|
|
@@ -14,11 +14,7 @@ export interface ParseContext {
|
|
|
14
14
|
/**
|
|
15
15
|
* Creates a select query builder with a {@link NoopQueryExecutor}.
|
|
16
16
|
*/
|
|
17
|
-
createSelectQueryBuilder(
|
|
18
|
-
/**
|
|
19
|
-
* Creates an instance of a join builder.
|
|
20
|
-
*/
|
|
21
|
-
createJoinBuilder(joinType: JoinType, table: TableExpression<any, any>): JoinBuilder<any, any>;
|
|
17
|
+
createSelectQueryBuilder(): SelectQueryBuilder<any, any, any>;
|
|
22
18
|
/**
|
|
23
19
|
* Creates an expression builder for building stuff like subqueries.
|
|
24
20
|
* {@link NoopQueryExecutor} is used as the executor and the queries
|
|
@@ -29,13 +25,31 @@ export interface ParseContext {
|
|
|
29
25
|
* Creates a query creator with a {@link NoopQueryExecutor}.
|
|
30
26
|
*/
|
|
31
27
|
createQueryCreator(): QueryCreator<any>;
|
|
28
|
+
/**
|
|
29
|
+
* Creates an instance of a join builder.
|
|
30
|
+
*/
|
|
31
|
+
createJoinBuilder(joinType: JoinType, table: TableExpression<any, any>): JoinBuilder<any, any>;
|
|
32
32
|
}
|
|
33
33
|
export declare class DefaultParseContext implements ParseContext {
|
|
34
34
|
#private;
|
|
35
35
|
constructor(adapter: DialectAdapter);
|
|
36
36
|
get adapter(): DialectAdapter;
|
|
37
|
-
|
|
38
|
-
|
|
37
|
+
/**
|
|
38
|
+
* Creates a select query builder with a {@link NoopQueryExecutor}.
|
|
39
|
+
*/
|
|
40
|
+
createSelectQueryBuilder(): SelectQueryBuilder<any, any, any>;
|
|
41
|
+
/**
|
|
42
|
+
* Creates an expression builder for building stuff like subqueries.
|
|
43
|
+
* {@link NoopQueryExecutor} is used as the executor and the queries
|
|
44
|
+
* built using the returned builder can never be executed.
|
|
45
|
+
*/
|
|
39
46
|
createExpressionBuilder(): ExpressionBuilder<any, any>;
|
|
47
|
+
/**
|
|
48
|
+
* Creates a query creator with a {@link NoopQueryExecutor}.
|
|
49
|
+
*/
|
|
40
50
|
createQueryCreator(): QueryCreator<any>;
|
|
51
|
+
/**
|
|
52
|
+
* Creates an instance of a join builder.
|
|
53
|
+
*/
|
|
54
|
+
createJoinBuilder(joinType: JoinType, table: TableExpression<any, any>): JoinBuilder<any, any>;
|
|
41
55
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { JoinNode } from '../operation-node/join-node.js';
|
|
2
2
|
import { SelectQueryNode } from '../operation-node/select-query-node.js';
|
|
3
3
|
import { JoinBuilder } from '../query-builder/join-builder.js';
|
|
4
|
-
import {
|
|
4
|
+
import { SelectQueryBuilder } from '../query-builder/select-query-builder.js';
|
|
5
5
|
import { ExpressionBuilder } from '../query-builder/expression-builder.js';
|
|
6
6
|
import { QueryCreator } from '../query-creator.js';
|
|
7
7
|
import { NoopQueryExecutor } from '../query-executor/noop-query-executor.js';
|
|
@@ -17,18 +17,12 @@ export class DefaultParseContext {
|
|
|
17
17
|
get adapter() {
|
|
18
18
|
return this.#adapter;
|
|
19
19
|
}
|
|
20
|
-
createSelectQueryBuilder(
|
|
21
|
-
return new
|
|
20
|
+
createSelectQueryBuilder() {
|
|
21
|
+
return new SelectQueryBuilder({
|
|
22
22
|
queryId: createQueryId(),
|
|
23
23
|
executor: this.#noopExecutor,
|
|
24
24
|
parseContext: this,
|
|
25
|
-
queryNode: SelectQueryNode.create(parseTableExpressionOrList(this,
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
createJoinBuilder(joinType, table) {
|
|
29
|
-
return new JoinBuilder({
|
|
30
|
-
joinNode: JoinNode.create(joinType, parseTableExpression(this, table)),
|
|
31
|
-
parseContext: this,
|
|
25
|
+
queryNode: SelectQueryNode.create(parseTableExpressionOrList(this, [])),
|
|
32
26
|
});
|
|
33
27
|
}
|
|
34
28
|
createExpressionBuilder() {
|
|
@@ -43,4 +37,10 @@ export class DefaultParseContext {
|
|
|
43
37
|
parseContext: this,
|
|
44
38
|
});
|
|
45
39
|
}
|
|
40
|
+
createJoinBuilder(joinType, table) {
|
|
41
|
+
return new JoinBuilder({
|
|
42
|
+
joinNode: JoinNode.create(joinType, parseTableExpression(this, table)),
|
|
43
|
+
parseContext: this,
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
46
|
}
|
|
@@ -3,18 +3,19 @@ import { ColumnNode } from '../operation-node/column-node.js';
|
|
|
3
3
|
import { ReferenceExpressionNode } from '../operation-node/operation-node-utils.js';
|
|
4
4
|
import { ReferenceNode } from '../operation-node/reference-node.js';
|
|
5
5
|
import { PrimitiveValue } from '../util/object-utils.js';
|
|
6
|
-
import { AnyColumn, AnyColumnWithTable,
|
|
7
|
-
import { DynamicReferenceBuilder } from '../dynamic/dynamic-reference-builder.js';
|
|
6
|
+
import { AnyColumn, AnyColumnWithTable, RowType, ValueType } from '../util/type-utils.js';
|
|
8
7
|
import { RawBuilder } from '../raw-builder/raw-builder.js';
|
|
9
|
-
import {
|
|
8
|
+
import { SelectQueryBuilder } from '../query-builder/select-query-builder.js';
|
|
10
9
|
import { ParseContext } from './parse-context.js';
|
|
11
|
-
|
|
10
|
+
import { ComplexExpression } from './complex-expression-parser.js';
|
|
11
|
+
import { DynamicReferenceBuilder } from '../dynamic/dynamic-reference-builder.js';
|
|
12
|
+
export declare type ReferenceExpression<DB, TB extends keyof DB> = StringReference<DB, TB> | DynamicReferenceBuilder<any> | ComplexExpression<DB, TB>;
|
|
12
13
|
export declare type ReferenceExpressionOrList<DB, TB extends keyof DB> = ReferenceExpression<DB, TB> | ReadonlyArray<ReferenceExpression<DB, TB>>;
|
|
13
14
|
export declare type StringReference<DB, TB extends keyof DB> = AnyColumn<DB, TB> | AnyColumnWithTable<DB, TB>;
|
|
14
|
-
export declare type ExtractTypeFromReferenceExpression<DB, TB extends keyof DB, RE> = RE extends string ? ExtractTypeFromStringReference<DB, TB, RE> : RE extends RawBuilder<infer O> ? O : RE extends (qb: any) => RawBuilder<infer O> ? O : RE extends
|
|
15
|
-
declare type ExtractTypeFromStringReference<DB, TB extends keyof DB,
|
|
15
|
+
export declare type ExtractTypeFromReferenceExpression<DB, TB extends keyof DB, RE> = RE extends string ? ExtractTypeFromStringReference<DB, TB, RE> : RE extends RawBuilder<infer O> ? O : RE extends (qb: any) => RawBuilder<infer O> ? O : RE extends SelectQueryBuilder<any, any, infer O> ? ValueType<O> : RE extends (qb: any) => SelectQueryBuilder<any, any, infer O> ? ValueType<O> : PrimitiveValue;
|
|
16
|
+
declare type ExtractTypeFromStringReference<DB, TB extends keyof DB, RE extends string, R = RowType<DB, TB>> = RE extends `${infer SC}.${infer T}.${infer C}` ? `${SC}.${T}` extends TB ? C extends keyof DB[`${SC}.${T}`] ? DB[`${SC}.${T}`][C] : never : never : RE extends `${infer T}.${infer C}` ? T extends TB ? C extends keyof DB[T] ? DB[T][C] : never : never : RE extends keyof R ? R[RE] : PrimitiveValue;
|
|
16
17
|
export declare function parseReferenceExpressionOrList(ctx: ParseContext, arg: ReferenceExpressionOrList<any, any>): ReferenceExpressionNode[];
|
|
17
|
-
export declare function parseReferenceExpression(ctx: ParseContext,
|
|
18
|
+
export declare function parseReferenceExpression(ctx: ParseContext, exp: ReferenceExpression<any, any>): ReferenceExpressionNode;
|
|
18
19
|
export declare function parseStringReference(ref: string): ColumnNode | ReferenceNode;
|
|
19
20
|
export declare function parseAliasedStringReference(ref: string): ColumnNode | ReferenceNode | AliasNode;
|
|
20
21
|
export declare function parseColumnName(column: AnyColumn<any, any>): ColumnNode;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { AliasNode } from '../operation-node/alias-node.js';
|
|
2
2
|
import { ColumnNode } from '../operation-node/column-node.js';
|
|
3
|
-
import { isOperationNodeSource } from '../operation-node/operation-node-source.js';
|
|
4
3
|
import { ReferenceNode } from '../operation-node/reference-node.js';
|
|
5
4
|
import { TableNode } from '../operation-node/table-node.js';
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
5
|
+
import { isReadonlyArray, isString, } from '../util/object-utils.js';
|
|
6
|
+
import { parseComplexExpression, } from './complex-expression-parser.js';
|
|
7
|
+
import { isDynamicReferenceBuilder, } from '../dynamic/dynamic-reference-builder.js';
|
|
8
8
|
export function parseReferenceExpressionOrList(ctx, arg) {
|
|
9
9
|
if (isReadonlyArray(arg)) {
|
|
10
10
|
return arg.map((it) => parseReferenceExpression(ctx, it));
|
|
@@ -13,23 +13,14 @@ export function parseReferenceExpressionOrList(ctx, arg) {
|
|
|
13
13
|
return [parseReferenceExpression(ctx, arg)];
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
|
-
export function parseReferenceExpression(ctx,
|
|
17
|
-
if (isString(
|
|
18
|
-
return parseStringReference(
|
|
16
|
+
export function parseReferenceExpression(ctx, exp) {
|
|
17
|
+
if (isString(exp)) {
|
|
18
|
+
return parseStringReference(exp);
|
|
19
19
|
}
|
|
20
|
-
else if (
|
|
21
|
-
|
|
22
|
-
if (!QueryNode.isMutating(node)) {
|
|
23
|
-
return node;
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
else if (isFunction(arg)) {
|
|
27
|
-
const node = arg(ctx.createExpressionBuilder()).toOperationNode();
|
|
28
|
-
if (!QueryNode.isMutating(node)) {
|
|
29
|
-
return node;
|
|
30
|
-
}
|
|
20
|
+
else if (isDynamicReferenceBuilder(exp)) {
|
|
21
|
+
return exp.toOperationNode();
|
|
31
22
|
}
|
|
32
|
-
|
|
23
|
+
return parseComplexExpression(ctx, exp);
|
|
33
24
|
}
|
|
34
25
|
export function parseStringReference(ref) {
|
|
35
26
|
const COLUMN_SEPARATOR = '.';
|
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
import { DeleteResult } from '../query-builder/delete-result.js';
|
|
2
2
|
import { InsertResult } from '../query-builder/insert-result.js';
|
|
3
|
-
import { QueryBuilder } from '../query-builder/query-builder.js';
|
|
4
3
|
import { UpdateResult } from '../query-builder/update-result.js';
|
|
5
4
|
import { Selection } from './select-parser.js';
|
|
6
|
-
|
|
7
|
-
* `returning` method output query builder type
|
|
8
|
-
*/
|
|
9
|
-
export declare type QueryBuilderWithReturning<DB, TB extends keyof DB, O, S> = QueryBuilder<DB, TB, O extends InsertResult ? Selection<DB, TB, S> : O extends DeleteResult ? Selection<DB, TB, S> : O extends UpdateResult ? Selection<DB, TB, S> : O & Selection<DB, TB, S>>;
|
|
5
|
+
export declare type ReturningRow<DB, TB extends keyof DB, O, SE> = O extends InsertResult ? Selection<DB, TB, SE> : O extends DeleteResult ? Selection<DB, TB, SE> : O extends UpdateResult ? Selection<DB, TB, SE> : O & Selection<DB, TB, SE>;
|
|
@@ -1,30 +1,28 @@
|
|
|
1
1
|
import { AliasedRawBuilder } from '../raw-builder/raw-builder.js';
|
|
2
|
-
import { AliasedQueryBuilder,
|
|
2
|
+
import { AliasedQueryBuilder, SelectQueryBuilder } from '../query-builder/select-query-builder.js';
|
|
3
3
|
import { SelectionNode } from '../operation-node/selection-node.js';
|
|
4
|
-
import {
|
|
4
|
+
import { AnyAliasedColumn, AnyAliasedColumnWithTable, AnyColumn, AnyColumnWithTable, RowType, ValueType } from '../util/type-utils.js';
|
|
5
5
|
import { DynamicReferenceBuilder } from '../dynamic/dynamic-reference-builder.js';
|
|
6
6
|
import { ParseContext } from './parse-context.js';
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
*/
|
|
10
|
-
export declare type SelectExpression<DB, TB extends keyof DB> = AnyAliasedColumnWithTable<DB, TB> | AnyAliasedColumn<DB, TB> | AnyColumnWithTable<DB, TB> | AnyColumn<DB, TB> | AnyAliasedRawBuilder | AliasedRawBuilderFactory<DB, TB> | AnyAliasedQueryBuilder | AliasedQueryBuilderFactory<DB, TB> | DynamicReferenceBuilder<any>;
|
|
7
|
+
import { AliasedComplexExpression } from './complex-expression-parser.js';
|
|
8
|
+
export declare type SelectExpression<DB, TB extends keyof DB> = AnyAliasedColumnWithTable<DB, TB> | AnyAliasedColumn<DB, TB> | AnyColumnWithTable<DB, TB> | AnyColumn<DB, TB> | DynamicReferenceBuilder<any> | AliasedComplexExpression<DB, TB>;
|
|
11
9
|
export declare type SelectExpressionOrList<DB, TB extends keyof DB> = SelectExpression<DB, TB> | ReadonlyArray<SelectExpression<DB, TB>>;
|
|
12
10
|
/**
|
|
13
11
|
* Given a selection expression returns a query builder type that
|
|
14
12
|
* has the selection.
|
|
15
13
|
*/
|
|
16
|
-
export declare type QueryBuilderWithSelection<DB, TB extends keyof DB, O,
|
|
14
|
+
export declare type QueryBuilderWithSelection<DB, TB extends keyof DB, O, SE> = SelectQueryBuilder<DB, TB, O & Selection<DB, TB, SE>>;
|
|
17
15
|
/**
|
|
18
16
|
* `selectAll` output query builder type.
|
|
19
17
|
*/
|
|
20
|
-
export declare type SelectAllQueryBuilder<DB, TB extends keyof DB, O, S extends keyof DB> =
|
|
21
|
-
export declare type Selection<DB, TB extends keyof DB,
|
|
22
|
-
[A in ExtractAliasFromSelectExpression<
|
|
18
|
+
export declare type SelectAllQueryBuilder<DB, TB extends keyof DB, O, S extends keyof DB> = SelectQueryBuilder<DB, TB, O & RowType<DB, S>>;
|
|
19
|
+
export declare type Selection<DB, TB extends keyof DB, SE> = {
|
|
20
|
+
[A in ExtractAliasFromSelectExpression<SE>]: ExtractTypeFromSelectExpression<DB, TB, SE, A>;
|
|
23
21
|
};
|
|
24
|
-
declare type ExtractAliasFromSelectExpression<
|
|
25
|
-
declare type ExtractAliasFromStringSelectExpression<
|
|
26
|
-
declare type ExtractTypeFromSelectExpression<DB, TB extends keyof DB,
|
|
27
|
-
declare type ExtractTypeFromStringSelectExpression<DB, TB extends keyof DB,
|
|
22
|
+
declare type ExtractAliasFromSelectExpression<SE> = SE extends string ? ExtractAliasFromStringSelectExpression<SE> : SE extends AliasedRawBuilder<any, infer RA> ? RA : SE extends (qb: any) => AliasedRawBuilder<any, infer RA> ? RA : SE extends AliasedQueryBuilder<any, any, any, infer QA> ? QA : SE extends (qb: any) => AliasedQueryBuilder<any, any, any, infer QA> ? QA : SE extends DynamicReferenceBuilder<infer RA> ? ExtractAliasFromStringSelectExpression<RA> : never;
|
|
23
|
+
declare type ExtractAliasFromStringSelectExpression<SE extends string> = SE extends `${string}.${string}.${string} as ${infer A}` ? A : SE extends `${string}.${string} as ${infer A}` ? A : SE extends `${string} as ${infer A}` ? A : SE extends `${string}.${string}.${infer C}` ? C : SE extends `${string}.${infer C}` ? C : SE;
|
|
24
|
+
declare type ExtractTypeFromSelectExpression<DB, TB extends keyof DB, SE, A extends keyof any> = SE extends string ? ExtractTypeFromStringSelectExpression<DB, TB, SE, A> : SE extends AliasedRawBuilder<infer O, infer RA> ? RA extends A ? O : never : SE extends (qb: any) => AliasedRawBuilder<infer O, infer RA> ? RA extends A ? O : never : SE extends AliasedQueryBuilder<any, any, infer O, infer QA> ? QA extends A ? ValueType<O> : never : SE extends (qb: any) => AliasedQueryBuilder<any, any, infer O, infer QA> ? QA extends A ? ValueType<O> : never : SE extends DynamicReferenceBuilder<infer RA> ? A extends ExtractAliasFromStringSelectExpression<RA> ? ExtractTypeFromStringSelectExpression<DB, TB, RA, A> | undefined : never : never;
|
|
25
|
+
declare type ExtractTypeFromStringSelectExpression<DB, TB extends keyof DB, SE extends string, A extends keyof any, R = RowType<DB, TB>> = SE extends `${infer SC}.${infer T}.${infer C} as ${infer RA}` ? RA extends A ? `${SC}.${T}` extends TB ? C extends keyof DB[`${SC}.${T}`] ? DB[`${SC}.${T}`][C] : never : never : never : SE extends `${infer T}.${infer C} as ${infer RA}` ? RA extends A ? T extends TB ? C extends keyof DB[T] ? DB[T][C] : never : never : never : SE extends `${infer C} as ${infer RA}` ? RA extends A ? C extends keyof R ? R[C] : never : never : SE extends `${infer SC}.${infer T}.${infer C}` ? C extends A ? `${SC}.${T}` extends TB ? C extends keyof DB[`${SC}.${T}`] ? DB[`${SC}.${T}`][C] : never : never : never : SE extends `${infer T}.${infer C}` ? C extends A ? T extends TB ? C extends keyof DB[T] ? DB[T][C] : never : never : never : SE extends A ? SE extends keyof R ? R[SE] : never : never;
|
|
28
26
|
export declare function parseSelectExpressionOrList(ctx: ParseContext, selection: SelectExpressionOrList<any, any>): SelectionNode[];
|
|
29
27
|
export declare function parseSelectAll(table?: string | string[]): SelectionNode[];
|
|
30
28
|
export {};
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { isFunction, isReadonlyArray, isString } from '../util/object-utils.js';
|
|
1
|
+
import { isReadonlyArray, isString } from '../util/object-utils.js';
|
|
3
2
|
import { SelectionNode } from '../operation-node/selection-node.js';
|
|
4
3
|
import { parseAliasedStringReference } from './reference-parser.js';
|
|
4
|
+
import { isDynamicReferenceBuilder, } from '../dynamic/dynamic-reference-builder.js';
|
|
5
|
+
import { parseAliasedComplexExpression, } from './complex-expression-parser.js';
|
|
5
6
|
export function parseSelectExpressionOrList(ctx, selection) {
|
|
6
7
|
if (isReadonlyArray(selection)) {
|
|
7
8
|
return selection.map((it) => parseSelectExpression(ctx, it));
|
|
@@ -14,14 +15,11 @@ function parseSelectExpression(ctx, selection) {
|
|
|
14
15
|
if (isString(selection)) {
|
|
15
16
|
return SelectionNode.create(parseAliasedStringReference(selection));
|
|
16
17
|
}
|
|
17
|
-
else if (
|
|
18
|
+
else if (isDynamicReferenceBuilder(selection)) {
|
|
18
19
|
return SelectionNode.create(selection.toOperationNode());
|
|
19
20
|
}
|
|
20
|
-
else if (isFunction(selection)) {
|
|
21
|
-
return SelectionNode.create(selection(ctx.createExpressionBuilder()).toOperationNode());
|
|
22
|
-
}
|
|
23
21
|
else {
|
|
24
|
-
|
|
22
|
+
return SelectionNode.create(parseAliasedComplexExpression(ctx, selection));
|
|
25
23
|
}
|
|
26
24
|
}
|
|
27
25
|
export function parseSelectAll(table) {
|
|
@@ -39,7 +37,5 @@ function parseSelectAllArg(table) {
|
|
|
39
37
|
if (isString(table)) {
|
|
40
38
|
return SelectionNode.createSelectAllFromTable(table);
|
|
41
39
|
}
|
|
42
|
-
|
|
43
|
-
throw new Error(`invalid value passed to selectAll method: ${JSON.stringify(table)}`);
|
|
44
|
-
}
|
|
40
|
+
throw new Error(`invalid value selectAll expression: ${JSON.stringify(table)}`);
|
|
45
41
|
}
|
|
@@ -1,32 +1,30 @@
|
|
|
1
|
-
import { AliasedQueryBuilder
|
|
1
|
+
import { AliasedQueryBuilder } from '../query-builder/select-query-builder.js';
|
|
2
2
|
import { TableNode } from '../operation-node/table-node.js';
|
|
3
|
-
import {
|
|
3
|
+
import { AnyAliasedRawBuilder, Nullable } from '../util/type-utils.js';
|
|
4
4
|
import { AliasedRawBuilder } from '../raw-builder/raw-builder.js';
|
|
5
5
|
import { TableExpressionNode } from '../operation-node/operation-node-utils.js';
|
|
6
6
|
import { ParseContext } from './parse-context.js';
|
|
7
|
-
|
|
7
|
+
import { AliasedComplexExpression } from './complex-expression-parser.js';
|
|
8
|
+
export declare type TableExpression<DB, TB extends keyof DB> = TableReference<DB> | AliasedComplexExpression<DB, TB>;
|
|
8
9
|
export declare type TableExpressionOrList<DB, TB extends keyof DB> = TableExpression<DB, TB> | ReadonlyArray<TableExpression<DB, TB>>;
|
|
9
|
-
export declare type TableReference<DB> = AnyAliasedTable<DB
|
|
10
|
-
export declare type QueryBuilderWithTable<DB, TB extends keyof DB, O, TE> = QueryBuilder<TableExpressionDatabase<DB, TE>, TB | ExtractAliasFromTableExpression<DB, TE>, O>;
|
|
10
|
+
export declare type TableReference<DB> = AnyAliasedTable<DB> | AnyTable<DB> | AnyAliasedRawBuilder;
|
|
11
11
|
export declare type TableExpressionDatabase<DB, TE, A extends keyof any = ExtractAliasFromTableExpression<DB, TE>> = {
|
|
12
12
|
[C in keyof DB | A]: C extends A ? ExtractRowTypeFromTableExpression<DB, TE, C> : C extends keyof DB ? DB[C] : never;
|
|
13
13
|
};
|
|
14
|
-
export declare type QueryBuilderWithLeftJoin<DB, TB extends keyof DB, O, TE> = QueryBuilder<LeftJoinTableExpressionDatabase<DB, TE>, TB | ExtractAliasFromTableExpression<DB, TE>, O>;
|
|
15
14
|
export declare type LeftJoinTableExpressionDatabase<DB, TE, A extends keyof any = ExtractAliasFromTableExpression<DB, TE>> = {
|
|
16
15
|
[C in keyof DB | A]: C extends A ? Nullable<ExtractRowTypeFromTableExpression<DB, TE, C>> : C extends keyof DB ? DB[C] : never;
|
|
17
16
|
};
|
|
18
|
-
export declare type QueryBuilderWithRightJoin<DB, TB extends keyof DB, O, TE> = QueryBuilder<RightJoinTableExpressionDatabase<DB, TB, TE>, TB | ExtractAliasFromTableExpression<DB, TE>, O>;
|
|
19
17
|
export declare type RightJoinTableExpressionDatabase<DB, TB extends keyof DB, TE, A extends keyof any = ExtractAliasFromTableExpression<DB, TE>> = {
|
|
20
18
|
[C in keyof DB | A]: C extends A ? ExtractRowTypeFromTableExpression<DB, TE, C> : C extends keyof DB ? C extends TB ? Nullable<DB[C]> : DB[C] : never;
|
|
21
19
|
};
|
|
22
|
-
export declare type QueryBuilderWithFullJoin<DB, TB extends keyof DB, O, TE> = QueryBuilder<FullJoinTableExpressionDatabase<DB, TB, TE>, TB | ExtractAliasFromTableExpression<DB, TE>, O>;
|
|
23
20
|
export declare type FullJoinTableExpressionDatabase<DB, TB extends keyof DB, TE, A extends keyof any = ExtractAliasFromTableExpression<DB, TE>> = {
|
|
24
21
|
[C in keyof DB | A]: C extends A ? Nullable<ExtractRowTypeFromTableExpression<DB, TE, C>> : C extends keyof DB ? C extends TB ? Nullable<DB[C]> : DB[C] : never;
|
|
25
22
|
};
|
|
26
23
|
export declare type ExtractAliasFromTableExpression<DB, TE> = TE extends `${string} as ${infer TA}` ? TA : TE extends keyof DB ? TE : TE extends AliasedQueryBuilder<any, any, any, infer QA> ? QA : TE extends (qb: any) => AliasedQueryBuilder<any, any, any, infer QA> ? QA : TE extends AliasedRawBuilder<any, infer RA> ? RA : TE extends (qb: any) => AliasedRawBuilder<any, infer RA> ? RA : never;
|
|
27
|
-
declare type
|
|
28
|
-
declare type
|
|
29
|
-
declare type
|
|
24
|
+
export declare type TableExpressionTables<DB, TB extends keyof DB, TE> = TB | ExtractAliasFromTableExpression<DB, TE>;
|
|
25
|
+
declare type ExtractRowTypeFromTableExpression<DB, TE, A extends keyof any> = TE extends `${infer T} as ${infer TA}` ? TA extends A ? T extends keyof DB ? DB[T] : never : never : TE extends A ? TE extends keyof DB ? DB[TE] : never : TE extends AliasedQueryBuilder<any, any, infer O, infer QA> ? QA extends A ? O : never : TE extends (qb: any) => AliasedQueryBuilder<any, any, infer O, infer QA> ? QA extends A ? O : never : TE extends AliasedRawBuilder<infer O, infer RA> ? RA extends A ? O : never : TE extends (qb: any) => AliasedRawBuilder<infer O, infer RA> ? RA extends A ? O : never : never;
|
|
26
|
+
declare type AnyAliasedTable<DB> = `${AnyTable<DB>} as ${string}`;
|
|
27
|
+
declare type AnyTable<DB> = keyof DB & string;
|
|
30
28
|
export declare function parseTableExpressionOrList(ctx: ParseContext, table: TableExpressionOrList<any, any>): TableExpressionNode[];
|
|
31
29
|
export declare function parseTableExpression(ctx: ParseContext, table: TableExpression<any, any>): TableExpressionNode;
|
|
32
30
|
export declare function parseAliasedTable(from: string): TableExpressionNode;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { isReadonlyArray, isString } from '../util/object-utils.js';
|
|
2
2
|
import { AliasNode } from '../operation-node/alias-node.js';
|
|
3
3
|
import { TableNode } from '../operation-node/table-node.js';
|
|
4
|
-
import {
|
|
4
|
+
import { parseAliasedComplexExpression, } from './complex-expression-parser.js';
|
|
5
5
|
export function parseTableExpressionOrList(ctx, table) {
|
|
6
6
|
if (isReadonlyArray(table)) {
|
|
7
7
|
return table.map((it) => parseTableExpression(ctx, it));
|
|
@@ -14,14 +14,8 @@ export function parseTableExpression(ctx, table) {
|
|
|
14
14
|
if (isString(table)) {
|
|
15
15
|
return parseAliasedTable(table);
|
|
16
16
|
}
|
|
17
|
-
else if (isOperationNodeSource(table)) {
|
|
18
|
-
return table.toOperationNode();
|
|
19
|
-
}
|
|
20
|
-
else if (isFunction(table)) {
|
|
21
|
-
return table(ctx.createExpressionBuilder()).toOperationNode();
|
|
22
|
-
}
|
|
23
17
|
else {
|
|
24
|
-
|
|
18
|
+
return parseAliasedComplexExpression(ctx, table);
|
|
25
19
|
}
|
|
26
20
|
}
|
|
27
21
|
export function parseAliasedTable(from) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { UnionNode } from '../operation-node/union-node.js';
|
|
2
|
-
import {
|
|
2
|
+
import { SelectQueryBuilder } from '../query-builder/select-query-builder.js';
|
|
3
3
|
import { RawBuilder } from '../raw-builder/raw-builder.js';
|
|
4
|
-
export declare type UnionExpression<DB, O> =
|
|
4
|
+
export declare type UnionExpression<DB, O> = SelectQueryBuilder<DB, any, O> | RawBuilder<O>;
|
|
5
5
|
export declare function parseUnion(union: UnionExpression<any, any>, all: boolean): UnionNode;
|
|
@@ -1,9 +1,4 @@
|
|
|
1
|
-
import { QueryNode } from '../operation-node/query-node.js';
|
|
2
1
|
import { UnionNode } from '../operation-node/union-node.js';
|
|
3
2
|
export function parseUnion(union, all) {
|
|
4
|
-
|
|
5
|
-
if (QueryNode.isMutating(node)) {
|
|
6
|
-
throw new Error("can't combine insert, update or delete queries using union");
|
|
7
|
-
}
|
|
8
|
-
return UnionNode.create(node, all);
|
|
3
|
+
return UnionNode.create(union.toOperationNode(), all);
|
|
9
4
|
}
|
|
@@ -1,13 +1,7 @@
|
|
|
1
1
|
import { ColumnUpdateNode } from '../operation-node/column-update-node.js';
|
|
2
|
-
import { RawNode } from '../operation-node/raw-node.js';
|
|
3
|
-
import { SelectQueryNode } from '../operation-node/select-query-node.js';
|
|
4
|
-
import { ValueNode } from '../operation-node/value-node.js';
|
|
5
|
-
import { AnyQueryBuilder, AnyRawBuilder, QueryBuilderFactory, RawBuilderFactory } from '../util/type-utils.js';
|
|
6
|
-
import { PrimitiveValue } from '../util/object-utils.js';
|
|
7
2
|
import { ParseContext } from './parse-context.js';
|
|
3
|
+
import { ValueExpression } from './value-parser.js';
|
|
8
4
|
export declare type MutationObject<DB, TB extends keyof DB> = {
|
|
9
|
-
[C in keyof DB[TB]]?:
|
|
5
|
+
[C in keyof DB[TB]]?: ValueExpression<DB, TB, DB[TB][C]>;
|
|
10
6
|
};
|
|
11
|
-
export declare type MutationValueExpression<DB, TB extends keyof DB, T> = T | AnyQueryBuilder | QueryBuilderFactory<DB, TB> | AnyRawBuilder | RawBuilderFactory<DB, TB>;
|
|
12
7
|
export declare function parseUpdateObject(ctx: ParseContext, row: MutationObject<any, any>): ReadonlyArray<ColumnUpdateNode>;
|
|
13
|
-
export declare function parseMutationValueExpression(ctx: ParseContext, value: MutationValueExpression<any, any, PrimitiveValue>): ValueNode | RawNode | SelectQueryNode;
|
|
@@ -1,29 +1,10 @@
|
|
|
1
1
|
import { ColumnNode } from '../operation-node/column-node.js';
|
|
2
2
|
import { ColumnUpdateNode } from '../operation-node/column-update-node.js';
|
|
3
|
-
import {
|
|
4
|
-
import { QueryNode } from '../operation-node/query-node.js';
|
|
5
|
-
import { ValueNode } from '../operation-node/value-node.js';
|
|
6
|
-
import { isFunction, isPrimitive, } from '../util/object-utils.js';
|
|
3
|
+
import { parseValueExpression } from './value-parser.js';
|
|
7
4
|
export function parseUpdateObject(ctx, row) {
|
|
8
|
-
return Object.entries(row)
|
|
9
|
-
|
|
5
|
+
return Object.entries(row)
|
|
6
|
+
.filter(([_, value]) => value !== undefined)
|
|
7
|
+
.map(([key, value]) => {
|
|
8
|
+
return ColumnUpdateNode.create(ColumnNode.create(key), parseValueExpression(ctx, value));
|
|
10
9
|
});
|
|
11
10
|
}
|
|
12
|
-
export function parseMutationValueExpression(ctx, value) {
|
|
13
|
-
if (isPrimitive(value)) {
|
|
14
|
-
return ValueNode.create(value);
|
|
15
|
-
}
|
|
16
|
-
else if (isOperationNodeSource(value)) {
|
|
17
|
-
const node = value.toOperationNode();
|
|
18
|
-
if (!QueryNode.isMutating(node)) {
|
|
19
|
-
return node;
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
else if (isFunction(value)) {
|
|
23
|
-
const node = value(ctx.createExpressionBuilder()).toOperationNode();
|
|
24
|
-
if (!QueryNode.isMutating(node)) {
|
|
25
|
-
return node;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
throw new Error(`unsupported value for mutation object ${JSON.stringify(value)}`);
|
|
29
|
-
}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { ValueExpressionNode } from '../operation-node/operation-node-utils.js';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { ValueNode } from '../operation-node/value-node.js';
|
|
3
|
+
import { PrimitiveValue } from '../util/object-utils.js';
|
|
4
4
|
import { ParseContext } from './parse-context.js';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
export declare
|
|
5
|
+
import { SelectQueryNode } from '../operation-node/select-query-node.js';
|
|
6
|
+
import { RawNode } from '../operation-node/raw-node.js';
|
|
7
|
+
import { ComplexExpression } from './complex-expression-parser.js';
|
|
8
|
+
export declare type ValueExpression<DB, TB extends keyof DB, V> = V | ComplexExpression<DB, TB>;
|
|
9
|
+
export declare type ValueExpressionOrList<DB, TB extends keyof DB, V> = ValueExpression<DB, TB, V> | ReadonlyArray<ValueExpression<DB, TB, V>>;
|
|
10
|
+
export declare function parseValueExpressionOrList(ctx: ParseContext, arg: ValueExpressionOrList<any, any, PrimitiveValue>): ValueExpressionNode;
|
|
11
|
+
export declare function parseValueExpression(ctx: ParseContext, exp: ValueExpression<any, any, PrimitiveValue>): ValueNode | SelectQueryNode | RawNode;
|