kysely 0.27.1 → 0.27.3
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/dist/cjs/dialect/database-introspector.d.ts +1 -0
- package/dist/cjs/dialect/mssql/mssql-introspector.js +13 -2
- package/dist/cjs/dialect/mssql/mssql-query-compiler.d.ts +4 -0
- package/dist/cjs/dialect/mssql/mssql-query-compiler.js +8 -0
- package/dist/cjs/dialect/mysql/mysql-introspector.js +2 -0
- package/dist/cjs/dialect/postgres/postgres-dialect-config.d.ts +1 -1
- package/dist/cjs/dialect/postgres/postgres-driver.js +2 -1
- package/dist/cjs/dialect/postgres/postgres-introspector.js +2 -0
- package/dist/cjs/dialect/sqlite/sqlite-introspector.js +1 -0
- package/dist/cjs/driver/database-connection.d.ts +1 -1
- package/dist/cjs/expression/expression-builder.d.ts +30 -4
- package/dist/cjs/expression/expression-builder.js +5 -0
- package/dist/cjs/index.d.ts +7 -1
- package/dist/cjs/index.js +6 -0
- package/dist/cjs/migration/migrator.d.ts +19 -2
- package/dist/cjs/migration/migrator.js +77 -43
- package/dist/cjs/operation-node/add-index-node.js +1 -1
- package/dist/cjs/operation-node/cast-node.d.ts +13 -0
- package/dist/cjs/operation-node/cast-node.js +19 -0
- package/dist/cjs/operation-node/column-definition-node.d.ts +1 -0
- package/dist/cjs/operation-node/data-type-node.d.ts +5 -1
- package/dist/cjs/operation-node/data-type-node.js +55 -1
- package/dist/cjs/operation-node/delete-query-node.d.ts +4 -0
- package/dist/cjs/operation-node/delete-query-node.js +12 -0
- package/dist/cjs/operation-node/fetch-node.d.ts +15 -0
- package/dist/cjs/operation-node/fetch-node.js +19 -0
- package/dist/cjs/operation-node/insert-query-node.d.ts +4 -1
- package/dist/cjs/operation-node/insert-query-node.js +5 -0
- package/dist/cjs/operation-node/join-node.d.ts +1 -1
- package/dist/cjs/operation-node/matched-node.d.ts +13 -0
- package/dist/cjs/operation-node/matched-node.js +19 -0
- package/dist/cjs/operation-node/merge-query-node.d.ts +25 -0
- package/dist/cjs/operation-node/merge-query-node.js +45 -0
- package/dist/cjs/operation-node/operation-node-transformer.d.ts +10 -0
- package/dist/cjs/operation-node/operation-node-transformer.js +50 -0
- package/dist/cjs/operation-node/operation-node-visitor.d.ts +10 -0
- package/dist/cjs/operation-node/operation-node-visitor.js +5 -0
- package/dist/cjs/operation-node/operation-node.d.ts +1 -1
- package/dist/cjs/operation-node/query-node.d.ts +10 -3
- package/dist/cjs/operation-node/query-node.js +15 -1
- package/dist/cjs/operation-node/select-query-node.d.ts +5 -0
- package/dist/cjs/operation-node/select-query-node.js +6 -0
- package/dist/cjs/operation-node/top-node.d.ts +14 -0
- package/dist/cjs/operation-node/top-node.js +19 -0
- package/dist/cjs/operation-node/update-query-node.d.ts +7 -1
- package/dist/cjs/operation-node/update-query-node.js +11 -0
- package/dist/cjs/parser/binary-operation-parser.d.ts +1 -1
- package/dist/cjs/parser/binary-operation-parser.js +2 -2
- package/dist/cjs/parser/data-type-parser.js +7 -3
- package/dist/cjs/parser/fetch-parser.d.ts +2 -0
- package/dist/cjs/parser/fetch-parser.js +18 -0
- package/dist/cjs/parser/insert-values-parser.d.ts +3 -3
- package/dist/cjs/parser/merge-parser.d.ts +9 -0
- package/dist/cjs/parser/merge-parser.js +32 -0
- package/dist/cjs/parser/table-parser.d.ts +4 -3
- package/dist/cjs/parser/top-parser.d.ts +2 -0
- package/dist/cjs/parser/top-parser.js +20 -0
- package/dist/cjs/plugin/with-schema/with-schema-transformer.js +4 -0
- package/dist/cjs/query-builder/delete-query-builder.d.ts +99 -0
- package/dist/cjs/query-builder/delete-query-builder.js +120 -0
- package/dist/cjs/query-builder/insert-query-builder.d.ts +73 -3
- package/dist/cjs/query-builder/insert-query-builder.js +242 -0
- package/dist/cjs/query-builder/merge-query-builder.d.ts +557 -0
- package/dist/cjs/query-builder/merge-query-builder.js +518 -0
- package/dist/cjs/query-builder/merge-result.d.ts +4 -0
- package/dist/cjs/query-builder/merge-result.js +10 -0
- package/dist/cjs/query-builder/select-query-builder.d.ts +102 -7
- package/dist/cjs/query-builder/select-query-builder.js +14 -0
- package/dist/cjs/query-builder/update-query-builder.d.ts +82 -3
- package/dist/cjs/query-builder/update-query-builder.js +98 -0
- package/dist/cjs/query-compiler/default-query-compiler.d.ts +10 -0
- package/dist/cjs/query-compiler/default-query-compiler.js +94 -10
- package/dist/cjs/query-compiler/query-compiler.d.ts +2 -1
- package/dist/cjs/query-creator.d.ts +40 -2
- package/dist/cjs/query-creator.js +9 -0
- package/dist/cjs/schema/alter-table-add-index-builder.js +6 -2
- package/dist/cjs/schema/column-definition-builder.d.ts +13 -1
- package/dist/cjs/schema/column-definition-builder.js +15 -1
- package/dist/cjs/util/infer-result.d.ts +2 -1
- package/dist/cjs/util/type-utils.d.ts +3 -2
- package/dist/esm/dialect/database-introspector.d.ts +1 -0
- package/dist/esm/dialect/mssql/mssql-introspector.js +13 -2
- package/dist/esm/dialect/mssql/mssql-query-compiler.d.ts +4 -0
- package/dist/esm/dialect/mssql/mssql-query-compiler.js +8 -0
- package/dist/esm/dialect/mysql/mysql-introspector.js +2 -0
- package/dist/esm/dialect/postgres/postgres-dialect-config.d.ts +1 -1
- package/dist/esm/dialect/postgres/postgres-driver.js +2 -1
- package/dist/esm/dialect/postgres/postgres-introspector.js +2 -0
- package/dist/esm/dialect/sqlite/sqlite-introspector.js +1 -0
- package/dist/esm/driver/database-connection.d.ts +1 -1
- package/dist/esm/expression/expression-builder.d.ts +30 -4
- package/dist/esm/expression/expression-builder.js +5 -0
- package/dist/esm/index.d.ts +7 -1
- package/dist/esm/index.js +6 -0
- package/dist/esm/migration/migrator.d.ts +19 -2
- package/dist/esm/migration/migrator.js +76 -42
- package/dist/esm/operation-node/add-index-node.js +1 -1
- package/dist/esm/operation-node/cast-node.d.ts +13 -0
- package/dist/esm/operation-node/cast-node.js +17 -0
- package/dist/esm/operation-node/column-definition-node.d.ts +1 -0
- package/dist/esm/operation-node/data-type-node.d.ts +5 -1
- package/dist/esm/operation-node/data-type-node.js +53 -0
- package/dist/esm/operation-node/delete-query-node.d.ts +4 -0
- package/dist/esm/operation-node/delete-query-node.js +12 -0
- package/dist/esm/operation-node/fetch-node.d.ts +15 -0
- package/dist/esm/operation-node/fetch-node.js +17 -0
- package/dist/esm/operation-node/insert-query-node.d.ts +4 -1
- package/dist/esm/operation-node/insert-query-node.js +5 -0
- package/dist/esm/operation-node/join-node.d.ts +1 -1
- package/dist/esm/operation-node/matched-node.d.ts +13 -0
- package/dist/esm/operation-node/matched-node.js +17 -0
- package/dist/esm/operation-node/merge-query-node.d.ts +25 -0
- package/dist/esm/operation-node/merge-query-node.js +43 -0
- package/dist/esm/operation-node/operation-node-transformer.d.ts +10 -0
- package/dist/esm/operation-node/operation-node-transformer.js +50 -0
- package/dist/esm/operation-node/operation-node-visitor.d.ts +10 -0
- package/dist/esm/operation-node/operation-node-visitor.js +5 -0
- package/dist/esm/operation-node/operation-node.d.ts +1 -1
- package/dist/esm/operation-node/query-node.d.ts +10 -3
- package/dist/esm/operation-node/query-node.js +15 -1
- package/dist/esm/operation-node/select-query-node.d.ts +5 -0
- package/dist/esm/operation-node/select-query-node.js +6 -0
- package/dist/esm/operation-node/top-node.d.ts +14 -0
- package/dist/esm/operation-node/top-node.js +17 -0
- package/dist/esm/operation-node/update-query-node.d.ts +7 -1
- package/dist/esm/operation-node/update-query-node.js +11 -0
- package/dist/esm/parser/binary-operation-parser.d.ts +1 -1
- package/dist/esm/parser/binary-operation-parser.js +2 -2
- package/dist/esm/parser/data-type-parser.js +8 -4
- package/dist/esm/parser/fetch-parser.d.ts +2 -0
- package/dist/esm/parser/fetch-parser.js +15 -0
- package/dist/esm/parser/insert-values-parser.d.ts +3 -3
- package/dist/esm/parser/merge-parser.d.ts +9 -0
- package/dist/esm/parser/merge-parser.js +28 -0
- package/dist/esm/parser/table-parser.d.ts +4 -3
- package/dist/esm/parser/top-parser.d.ts +2 -0
- package/dist/esm/parser/top-parser.js +17 -0
- package/dist/esm/plugin/with-schema/with-schema-transformer.js +4 -0
- package/dist/esm/query-builder/delete-query-builder.d.ts +99 -0
- package/dist/esm/query-builder/delete-query-builder.js +120 -0
- package/dist/esm/query-builder/insert-query-builder.d.ts +73 -3
- package/dist/esm/query-builder/insert-query-builder.js +242 -0
- package/dist/esm/query-builder/merge-query-builder.d.ts +557 -0
- package/dist/esm/query-builder/merge-query-builder.js +512 -0
- package/dist/esm/query-builder/merge-result.d.ts +4 -0
- package/dist/esm/query-builder/merge-result.js +7 -0
- package/dist/esm/query-builder/select-query-builder.d.ts +102 -7
- package/dist/esm/query-builder/select-query-builder.js +14 -0
- package/dist/esm/query-builder/update-query-builder.d.ts +82 -3
- package/dist/esm/query-builder/update-query-builder.js +98 -0
- package/dist/esm/query-compiler/default-query-compiler.d.ts +10 -0
- package/dist/esm/query-compiler/default-query-compiler.js +94 -10
- package/dist/esm/query-compiler/query-compiler.d.ts +2 -1
- package/dist/esm/query-creator.d.ts +40 -2
- package/dist/esm/query-creator.js +10 -1
- package/dist/esm/schema/alter-table-add-index-builder.js +7 -3
- package/dist/esm/schema/column-definition-builder.d.ts +13 -1
- package/dist/esm/schema/column-definition-builder.js +15 -1
- package/dist/esm/util/infer-result.d.ts +2 -1
- package/dist/esm/util/type-utils.d.ts +3 -2
- package/package.json +22 -21
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CastNode = void 0;
|
|
4
|
+
const object_utils_js_1 = require("../util/object-utils.js");
|
|
5
|
+
/**
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
exports.CastNode = (0, object_utils_js_1.freeze)({
|
|
9
|
+
is(node) {
|
|
10
|
+
return node.kind === 'CastNode';
|
|
11
|
+
},
|
|
12
|
+
create(expression, dataType) {
|
|
13
|
+
return (0, object_utils_js_1.freeze)({
|
|
14
|
+
kind: 'CastNode',
|
|
15
|
+
expression,
|
|
16
|
+
dataType,
|
|
17
|
+
});
|
|
18
|
+
},
|
|
19
|
+
});
|
|
@@ -21,6 +21,7 @@ export interface ColumnDefinitionNode extends OperationNode {
|
|
|
21
21
|
readonly frontModifiers?: ReadonlyArray<OperationNode>;
|
|
22
22
|
readonly endModifiers?: ReadonlyArray<OperationNode>;
|
|
23
23
|
readonly nullsNotDistinct?: boolean;
|
|
24
|
+
readonly identity?: boolean;
|
|
24
25
|
}
|
|
25
26
|
/**
|
|
26
27
|
* @internal
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { OperationNode } from './operation-node.js';
|
|
2
|
-
|
|
2
|
+
declare const SIMPLE_COLUMN_DATA_TYPES: readonly ["varchar", "char", "text", "integer", "int2", "int4", "int8", "smallint", "bigint", "boolean", "real", "double precision", "float4", "float8", "decimal", "numeric", "binary", "bytea", "date", "datetime", "time", "timetz", "timestamp", "timestamptz", "serial", "bigserial", "uuid", "json", "jsonb", "blob"];
|
|
3
|
+
type SimpleColumnDataType = (typeof SIMPLE_COLUMN_DATA_TYPES)[number];
|
|
4
|
+
export type ColumnDataType = SimpleColumnDataType | `varchar(${number})` | `char(${number})` | `decimal(${number}, ${number})` | `numeric(${number}, ${number})` | `binary(${number})` | `datetime(${number})` | `time(${number})` | `timetz(${number})` | `timestamp(${number})` | `timestamptz(${number})`;
|
|
3
5
|
export type DataTypeParams = Omit<DataTypeNode, 'kind' | 'dataType'>;
|
|
4
6
|
export interface DataTypeNode extends OperationNode {
|
|
5
7
|
readonly kind: 'DataTypeNode';
|
|
@@ -12,3 +14,5 @@ export declare const DataTypeNode: Readonly<{
|
|
|
12
14
|
is(node: OperationNode): node is DataTypeNode;
|
|
13
15
|
create(dataType: ColumnDataType): DataTypeNode;
|
|
14
16
|
}>;
|
|
17
|
+
export declare function isColumnDataType(dataType: string): dataType is ColumnDataType;
|
|
18
|
+
export {};
|
|
@@ -1,7 +1,51 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DataTypeNode = void 0;
|
|
3
|
+
exports.isColumnDataType = exports.DataTypeNode = void 0;
|
|
4
4
|
const object_utils_js_1 = require("../util/object-utils.js");
|
|
5
|
+
const SIMPLE_COLUMN_DATA_TYPES = [
|
|
6
|
+
'varchar',
|
|
7
|
+
'char',
|
|
8
|
+
'text',
|
|
9
|
+
'integer',
|
|
10
|
+
'int2',
|
|
11
|
+
'int4',
|
|
12
|
+
'int8',
|
|
13
|
+
'smallint',
|
|
14
|
+
'bigint',
|
|
15
|
+
'boolean',
|
|
16
|
+
'real',
|
|
17
|
+
'double precision',
|
|
18
|
+
'float4',
|
|
19
|
+
'float8',
|
|
20
|
+
'decimal',
|
|
21
|
+
'numeric',
|
|
22
|
+
'binary',
|
|
23
|
+
'bytea',
|
|
24
|
+
'date',
|
|
25
|
+
'datetime',
|
|
26
|
+
'time',
|
|
27
|
+
'timetz',
|
|
28
|
+
'timestamp',
|
|
29
|
+
'timestamptz',
|
|
30
|
+
'serial',
|
|
31
|
+
'bigserial',
|
|
32
|
+
'uuid',
|
|
33
|
+
'json',
|
|
34
|
+
'jsonb',
|
|
35
|
+
'blob',
|
|
36
|
+
];
|
|
37
|
+
const COLUMN_DATA_TYPE_REGEX = [
|
|
38
|
+
/^varchar\(\d+\)$/,
|
|
39
|
+
/^char\(\d+\)$/,
|
|
40
|
+
/^decimal\(\d+, \d+\)$/,
|
|
41
|
+
/^numeric\(\d+, \d+\)$/,
|
|
42
|
+
/^binary\(\d+\)$/,
|
|
43
|
+
/^datetime\(\d+\)$/,
|
|
44
|
+
/^time\(\d+\)$/,
|
|
45
|
+
/^timez\(\d+\)$/,
|
|
46
|
+
/^timestamp\(\d+\)$/,
|
|
47
|
+
/^timestamptz\(\d+\)$/,
|
|
48
|
+
];
|
|
5
49
|
/**
|
|
6
50
|
* @internal
|
|
7
51
|
*/
|
|
@@ -16,3 +60,13 @@ exports.DataTypeNode = (0, object_utils_js_1.freeze)({
|
|
|
16
60
|
});
|
|
17
61
|
},
|
|
18
62
|
});
|
|
63
|
+
function isColumnDataType(dataType) {
|
|
64
|
+
if (SIMPLE_COLUMN_DATA_TYPES.includes(dataType)) {
|
|
65
|
+
return true;
|
|
66
|
+
}
|
|
67
|
+
if (COLUMN_DATA_TYPE_REGEX.some((r) => r.test(dataType))) {
|
|
68
|
+
return true;
|
|
69
|
+
}
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
exports.isColumnDataType = isColumnDataType;
|
|
@@ -9,6 +9,7 @@ import { OrderByNode } from './order-by-node.js';
|
|
|
9
9
|
import { OrderByItemNode } from './order-by-item-node.js';
|
|
10
10
|
import { ExplainNode } from './explain-node.js';
|
|
11
11
|
import { UsingNode } from './using-node.js';
|
|
12
|
+
import { TopNode } from './top-node.js';
|
|
12
13
|
export interface DeleteQueryNode extends OperationNode {
|
|
13
14
|
readonly kind: 'DeleteQueryNode';
|
|
14
15
|
readonly from: FromNode;
|
|
@@ -20,6 +21,7 @@ export interface DeleteQueryNode extends OperationNode {
|
|
|
20
21
|
readonly orderBy?: OrderByNode;
|
|
21
22
|
readonly limit?: LimitNode;
|
|
22
23
|
readonly explain?: ExplainNode;
|
|
24
|
+
readonly top?: TopNode;
|
|
23
25
|
}
|
|
24
26
|
/**
|
|
25
27
|
* @internal
|
|
@@ -28,6 +30,8 @@ export declare const DeleteQueryNode: Readonly<{
|
|
|
28
30
|
is(node: OperationNode): node is DeleteQueryNode;
|
|
29
31
|
create(fromItems: OperationNode[], withNode?: WithNode): DeleteQueryNode;
|
|
30
32
|
cloneWithOrderByItems(deleteNode: DeleteQueryNode, items: ReadonlyArray<OrderByItemNode>): DeleteQueryNode;
|
|
33
|
+
cloneWithoutOrderBy(deleteNode: DeleteQueryNode): DeleteQueryNode;
|
|
31
34
|
cloneWithLimit(deleteNode: DeleteQueryNode, limit: LimitNode): DeleteQueryNode;
|
|
35
|
+
cloneWithoutLimit(deleteNode: DeleteQueryNode): DeleteQueryNode;
|
|
32
36
|
cloneWithUsing(deleteNode: DeleteQueryNode, tables: OperationNode[]): DeleteQueryNode;
|
|
33
37
|
}>;
|
|
@@ -27,12 +27,24 @@ exports.DeleteQueryNode = (0, object_utils_js_1.freeze)({
|
|
|
27
27
|
: order_by_node_js_1.OrderByNode.create(items),
|
|
28
28
|
});
|
|
29
29
|
},
|
|
30
|
+
cloneWithoutOrderBy(deleteNode) {
|
|
31
|
+
return (0, object_utils_js_1.freeze)({
|
|
32
|
+
...deleteNode,
|
|
33
|
+
orderBy: undefined,
|
|
34
|
+
});
|
|
35
|
+
},
|
|
30
36
|
cloneWithLimit(deleteNode, limit) {
|
|
31
37
|
return (0, object_utils_js_1.freeze)({
|
|
32
38
|
...deleteNode,
|
|
33
39
|
limit,
|
|
34
40
|
});
|
|
35
41
|
},
|
|
42
|
+
cloneWithoutLimit(deleteNode) {
|
|
43
|
+
return (0, object_utils_js_1.freeze)({
|
|
44
|
+
...deleteNode,
|
|
45
|
+
limit: undefined,
|
|
46
|
+
});
|
|
47
|
+
},
|
|
36
48
|
cloneWithUsing(deleteNode, tables) {
|
|
37
49
|
return (0, object_utils_js_1.freeze)({
|
|
38
50
|
...deleteNode,
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { OperationNode } from './operation-node.js';
|
|
2
|
+
import { ValueNode } from './value-node.js';
|
|
3
|
+
export type FetchModifier = 'only' | 'with ties';
|
|
4
|
+
export interface FetchNode extends OperationNode {
|
|
5
|
+
readonly kind: 'FetchNode';
|
|
6
|
+
readonly rowCount: ValueNode;
|
|
7
|
+
readonly modifier: FetchModifier;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* @internal
|
|
11
|
+
*/
|
|
12
|
+
export declare const FetchNode: {
|
|
13
|
+
is(node: OperationNode): node is FetchNode;
|
|
14
|
+
create(rowCount: number | bigint, modifier: FetchModifier): FetchNode;
|
|
15
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FetchNode = void 0;
|
|
4
|
+
const value_node_js_1 = require("./value-node.js");
|
|
5
|
+
/**
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
exports.FetchNode = {
|
|
9
|
+
is(node) {
|
|
10
|
+
return node.kind === 'FetchNode';
|
|
11
|
+
},
|
|
12
|
+
create(rowCount, modifier) {
|
|
13
|
+
return {
|
|
14
|
+
kind: 'FetchNode',
|
|
15
|
+
rowCount: value_node_js_1.ValueNode.create(rowCount),
|
|
16
|
+
modifier,
|
|
17
|
+
};
|
|
18
|
+
},
|
|
19
|
+
};
|
|
@@ -5,11 +5,12 @@ import { OnDuplicateKeyNode } from './on-duplicate-key-node.js';
|
|
|
5
5
|
import { OperationNode } from './operation-node.js';
|
|
6
6
|
import { ReturningNode } from './returning-node.js';
|
|
7
7
|
import { TableNode } from './table-node.js';
|
|
8
|
+
import { TopNode } from './top-node.js';
|
|
8
9
|
import { WithNode } from './with-node.js';
|
|
9
10
|
export type InsertQueryNodeProps = Omit<InsertQueryNode, 'kind' | 'into'>;
|
|
10
11
|
export interface InsertQueryNode extends OperationNode {
|
|
11
12
|
readonly kind: 'InsertQueryNode';
|
|
12
|
-
readonly into
|
|
13
|
+
readonly into?: TableNode;
|
|
13
14
|
readonly columns?: ReadonlyArray<ColumnNode>;
|
|
14
15
|
readonly values?: OperationNode;
|
|
15
16
|
readonly returning?: ReturningNode;
|
|
@@ -20,6 +21,7 @@ export interface InsertQueryNode extends OperationNode {
|
|
|
20
21
|
readonly replace?: boolean;
|
|
21
22
|
readonly explain?: ExplainNode;
|
|
22
23
|
readonly defaultValues?: boolean;
|
|
24
|
+
readonly top?: TopNode;
|
|
23
25
|
}
|
|
24
26
|
/**
|
|
25
27
|
* @internal
|
|
@@ -27,5 +29,6 @@ export interface InsertQueryNode extends OperationNode {
|
|
|
27
29
|
export declare const InsertQueryNode: Readonly<{
|
|
28
30
|
is(node: OperationNode): node is InsertQueryNode;
|
|
29
31
|
create(into: TableNode, withNode?: WithNode, replace?: boolean): InsertQueryNode;
|
|
32
|
+
createWithoutInto(): InsertQueryNode;
|
|
30
33
|
cloneWith(insertQuery: InsertQueryNode, props: InsertQueryNodeProps): InsertQueryNode;
|
|
31
34
|
}>;
|
|
@@ -17,6 +17,11 @@ exports.InsertQueryNode = (0, object_utils_js_1.freeze)({
|
|
|
17
17
|
replace,
|
|
18
18
|
});
|
|
19
19
|
},
|
|
20
|
+
createWithoutInto() {
|
|
21
|
+
return (0, object_utils_js_1.freeze)({
|
|
22
|
+
kind: 'InsertQueryNode',
|
|
23
|
+
});
|
|
24
|
+
},
|
|
20
25
|
cloneWith(insertQuery, props) {
|
|
21
26
|
return (0, object_utils_js_1.freeze)({
|
|
22
27
|
...insertQuery,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { OnNode } from './on-node.js';
|
|
2
2
|
import { OperationNode } from './operation-node.js';
|
|
3
|
-
export type JoinType = 'InnerJoin' | 'LeftJoin' | 'RightJoin' | 'FullJoin' | 'LateralInnerJoin' | 'LateralLeftJoin';
|
|
3
|
+
export type JoinType = 'InnerJoin' | 'LeftJoin' | 'RightJoin' | 'FullJoin' | 'LateralInnerJoin' | 'LateralLeftJoin' | 'Using';
|
|
4
4
|
export interface JoinNode extends OperationNode {
|
|
5
5
|
readonly kind: 'JoinNode';
|
|
6
6
|
readonly joinType: JoinType;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { OperationNode } from './operation-node.js';
|
|
2
|
+
export interface MatchedNode extends OperationNode {
|
|
3
|
+
readonly kind: 'MatchedNode';
|
|
4
|
+
readonly not: boolean;
|
|
5
|
+
readonly bySource: boolean;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* @internal
|
|
9
|
+
*/
|
|
10
|
+
export declare const MatchedNode: Readonly<{
|
|
11
|
+
is(node: OperationNode): node is MatchedNode;
|
|
12
|
+
create(not: boolean, bySource?: boolean): MatchedNode;
|
|
13
|
+
}>;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MatchedNode = void 0;
|
|
4
|
+
const object_utils_js_1 = require("../util/object-utils.js");
|
|
5
|
+
/**
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
exports.MatchedNode = (0, object_utils_js_1.freeze)({
|
|
9
|
+
is(node) {
|
|
10
|
+
return node.kind === 'MatchedNode';
|
|
11
|
+
},
|
|
12
|
+
create(not, bySource = false) {
|
|
13
|
+
return (0, object_utils_js_1.freeze)({
|
|
14
|
+
kind: 'MatchedNode',
|
|
15
|
+
not,
|
|
16
|
+
bySource,
|
|
17
|
+
});
|
|
18
|
+
},
|
|
19
|
+
});
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { AliasNode } from './alias-node.js';
|
|
2
|
+
import { JoinNode } from './join-node.js';
|
|
3
|
+
import { OperationNode } from './operation-node.js';
|
|
4
|
+
import { TableNode } from './table-node.js';
|
|
5
|
+
import { TopNode } from './top-node.js';
|
|
6
|
+
import { WhenNode } from './when-node.js';
|
|
7
|
+
import { WithNode } from './with-node.js';
|
|
8
|
+
export interface MergeQueryNode extends OperationNode {
|
|
9
|
+
readonly kind: 'MergeQueryNode';
|
|
10
|
+
readonly into: TableNode | AliasNode;
|
|
11
|
+
readonly using?: JoinNode;
|
|
12
|
+
readonly whens?: ReadonlyArray<WhenNode>;
|
|
13
|
+
readonly with?: WithNode;
|
|
14
|
+
readonly top?: TopNode;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* @internal
|
|
18
|
+
*/
|
|
19
|
+
export declare const MergeQueryNode: Readonly<{
|
|
20
|
+
is(node: OperationNode): node is MergeQueryNode;
|
|
21
|
+
create(into: TableNode | AliasNode, withNode?: WithNode): MergeQueryNode;
|
|
22
|
+
cloneWithUsing(mergeNode: MergeQueryNode, using: JoinNode): MergeQueryNode;
|
|
23
|
+
cloneWithWhen(mergeNode: MergeQueryNode, when: WhenNode): MergeQueryNode;
|
|
24
|
+
cloneWithThen(mergeNode: MergeQueryNode, then: OperationNode): MergeQueryNode;
|
|
25
|
+
}>;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MergeQueryNode = void 0;
|
|
4
|
+
const object_utils_js_1 = require("../util/object-utils.js");
|
|
5
|
+
const when_node_js_1 = require("./when-node.js");
|
|
6
|
+
/**
|
|
7
|
+
* @internal
|
|
8
|
+
*/
|
|
9
|
+
exports.MergeQueryNode = (0, object_utils_js_1.freeze)({
|
|
10
|
+
is(node) {
|
|
11
|
+
return node.kind === 'MergeQueryNode';
|
|
12
|
+
},
|
|
13
|
+
create(into, withNode) {
|
|
14
|
+
return (0, object_utils_js_1.freeze)({
|
|
15
|
+
kind: 'MergeQueryNode',
|
|
16
|
+
into,
|
|
17
|
+
...(withNode && { with: withNode }),
|
|
18
|
+
});
|
|
19
|
+
},
|
|
20
|
+
cloneWithUsing(mergeNode, using) {
|
|
21
|
+
return (0, object_utils_js_1.freeze)({
|
|
22
|
+
...mergeNode,
|
|
23
|
+
using,
|
|
24
|
+
});
|
|
25
|
+
},
|
|
26
|
+
cloneWithWhen(mergeNode, when) {
|
|
27
|
+
return (0, object_utils_js_1.freeze)({
|
|
28
|
+
...mergeNode,
|
|
29
|
+
whens: mergeNode.whens
|
|
30
|
+
? (0, object_utils_js_1.freeze)([...mergeNode.whens, when])
|
|
31
|
+
: (0, object_utils_js_1.freeze)([when]),
|
|
32
|
+
});
|
|
33
|
+
},
|
|
34
|
+
cloneWithThen(mergeNode, then) {
|
|
35
|
+
return (0, object_utils_js_1.freeze)({
|
|
36
|
+
...mergeNode,
|
|
37
|
+
whens: mergeNode.whens
|
|
38
|
+
? (0, object_utils_js_1.freeze)([
|
|
39
|
+
...mergeNode.whens.slice(0, -1),
|
|
40
|
+
when_node_js_1.WhenNode.cloneWithResult(mergeNode.whens[mergeNode.whens.length - 1], then),
|
|
41
|
+
])
|
|
42
|
+
: undefined,
|
|
43
|
+
});
|
|
44
|
+
},
|
|
45
|
+
});
|
|
@@ -85,7 +85,12 @@ import { JSONPathNode } from './json-path-node.js';
|
|
|
85
85
|
import { JSONPathLegNode } from './json-path-leg-node.js';
|
|
86
86
|
import { JSONOperatorChainNode } from './json-operator-chain-node.js';
|
|
87
87
|
import { TupleNode } from './tuple-node.js';
|
|
88
|
+
import { MergeQueryNode } from './merge-query-node.js';
|
|
89
|
+
import { MatchedNode } from './matched-node.js';
|
|
88
90
|
import { AddIndexNode } from './add-index-node.js';
|
|
91
|
+
import { CastNode } from './cast-node.js';
|
|
92
|
+
import { FetchNode } from './fetch-node.js';
|
|
93
|
+
import { TopNode } from './top-node.js';
|
|
89
94
|
/**
|
|
90
95
|
* Transforms an operation node tree into another one.
|
|
91
96
|
*
|
|
@@ -200,7 +205,12 @@ export declare class OperationNodeTransformer {
|
|
|
200
205
|
protected transformJSONPathLeg(node: JSONPathLegNode): JSONPathLegNode;
|
|
201
206
|
protected transformJSONOperatorChain(node: JSONOperatorChainNode): JSONOperatorChainNode;
|
|
202
207
|
protected transformTuple(node: TupleNode): TupleNode;
|
|
208
|
+
protected transformMergeQuery(node: MergeQueryNode): MergeQueryNode;
|
|
209
|
+
protected transformMatched(node: MatchedNode): MatchedNode;
|
|
203
210
|
protected transformAddIndex(node: AddIndexNode): AddIndexNode;
|
|
211
|
+
protected transformCast(node: CastNode): CastNode;
|
|
212
|
+
protected transformFetch(node: FetchNode): FetchNode;
|
|
213
|
+
protected transformTop(node: TopNode): TopNode;
|
|
204
214
|
protected transformDataType(node: DataTypeNode): DataTypeNode;
|
|
205
215
|
protected transformSelectAll(node: SelectAllNode): SelectAllNode;
|
|
206
216
|
protected transformIdentifier(node: IdentifierNode): IdentifierNode;
|
|
@@ -121,7 +121,12 @@ class OperationNodeTransformer {
|
|
|
121
121
|
JSONPathLegNode: this.transformJSONPathLeg.bind(this),
|
|
122
122
|
JSONOperatorChainNode: this.transformJSONOperatorChain.bind(this),
|
|
123
123
|
TupleNode: this.transformTuple.bind(this),
|
|
124
|
+
MergeQueryNode: this.transformMergeQuery.bind(this),
|
|
125
|
+
MatchedNode: this.transformMatched.bind(this),
|
|
124
126
|
AddIndexNode: this.transformAddIndex.bind(this),
|
|
127
|
+
CastNode: this.transformCast.bind(this),
|
|
128
|
+
FetchNode: this.transformFetch.bind(this),
|
|
129
|
+
TopNode: this.transformTop.bind(this),
|
|
125
130
|
});
|
|
126
131
|
transformNode(node) {
|
|
127
132
|
if (!node) {
|
|
@@ -159,6 +164,8 @@ class OperationNodeTransformer {
|
|
|
159
164
|
having: this.transformNode(node.having),
|
|
160
165
|
explain: this.transformNode(node.explain),
|
|
161
166
|
setOperations: this.transformNodeList(node.setOperations),
|
|
167
|
+
fetch: this.transformNode(node.fetch),
|
|
168
|
+
top: this.transformNode(node.top),
|
|
162
169
|
});
|
|
163
170
|
}
|
|
164
171
|
transformSelection(node) {
|
|
@@ -260,6 +267,7 @@ class OperationNodeTransformer {
|
|
|
260
267
|
replace: node.replace,
|
|
261
268
|
explain: this.transformNode(node.explain),
|
|
262
269
|
defaultValues: node.defaultValues,
|
|
270
|
+
top: this.transformNode(node.top),
|
|
263
271
|
});
|
|
264
272
|
}
|
|
265
273
|
transformValues(node) {
|
|
@@ -280,6 +288,7 @@ class OperationNodeTransformer {
|
|
|
280
288
|
orderBy: this.transformNode(node.orderBy),
|
|
281
289
|
limit: this.transformNode(node.limit),
|
|
282
290
|
explain: this.transformNode(node.explain),
|
|
291
|
+
top: this.transformNode(node.top),
|
|
283
292
|
});
|
|
284
293
|
}
|
|
285
294
|
transformReturning(node) {
|
|
@@ -319,6 +328,7 @@ class OperationNodeTransformer {
|
|
|
319
328
|
frontModifiers: this.transformNodeList(node.frontModifiers),
|
|
320
329
|
endModifiers: this.transformNodeList(node.endModifiers),
|
|
321
330
|
nullsNotDistinct: node.nullsNotDistinct,
|
|
331
|
+
identity: node.identity,
|
|
322
332
|
});
|
|
323
333
|
}
|
|
324
334
|
transformAddColumn(node) {
|
|
@@ -371,6 +381,8 @@ class OperationNodeTransformer {
|
|
|
371
381
|
returning: this.transformNode(node.returning),
|
|
372
382
|
with: this.transformNode(node.with),
|
|
373
383
|
explain: this.transformNode(node.explain),
|
|
384
|
+
limit: this.transformNode(node.limit),
|
|
385
|
+
top: this.transformNode(node.top),
|
|
374
386
|
});
|
|
375
387
|
}
|
|
376
388
|
transformColumnUpdate(node) {
|
|
@@ -774,6 +786,23 @@ class OperationNodeTransformer {
|
|
|
774
786
|
values: this.transformNodeList(node.values),
|
|
775
787
|
});
|
|
776
788
|
}
|
|
789
|
+
transformMergeQuery(node) {
|
|
790
|
+
return (0, require_all_props_js_1.requireAllProps)({
|
|
791
|
+
kind: 'MergeQueryNode',
|
|
792
|
+
into: this.transformNode(node.into),
|
|
793
|
+
using: this.transformNode(node.using),
|
|
794
|
+
whens: this.transformNodeList(node.whens),
|
|
795
|
+
with: this.transformNode(node.with),
|
|
796
|
+
top: this.transformNode(node.top),
|
|
797
|
+
});
|
|
798
|
+
}
|
|
799
|
+
transformMatched(node) {
|
|
800
|
+
return (0, require_all_props_js_1.requireAllProps)({
|
|
801
|
+
kind: 'MatchedNode',
|
|
802
|
+
not: node.not,
|
|
803
|
+
bySource: node.bySource,
|
|
804
|
+
});
|
|
805
|
+
}
|
|
777
806
|
transformAddIndex(node) {
|
|
778
807
|
return (0, require_all_props_js_1.requireAllProps)({
|
|
779
808
|
kind: 'AddIndexNode',
|
|
@@ -784,6 +813,27 @@ class OperationNodeTransformer {
|
|
|
784
813
|
ifNotExists: node.ifNotExists,
|
|
785
814
|
});
|
|
786
815
|
}
|
|
816
|
+
transformCast(node) {
|
|
817
|
+
return (0, require_all_props_js_1.requireAllProps)({
|
|
818
|
+
kind: 'CastNode',
|
|
819
|
+
expression: this.transformNode(node.expression),
|
|
820
|
+
dataType: this.transformNode(node.dataType),
|
|
821
|
+
});
|
|
822
|
+
}
|
|
823
|
+
transformFetch(node) {
|
|
824
|
+
return (0, require_all_props_js_1.requireAllProps)({
|
|
825
|
+
kind: 'FetchNode',
|
|
826
|
+
rowCount: this.transformNode(node.rowCount),
|
|
827
|
+
modifier: node.modifier,
|
|
828
|
+
});
|
|
829
|
+
}
|
|
830
|
+
transformTop(node) {
|
|
831
|
+
return (0, require_all_props_js_1.requireAllProps)({
|
|
832
|
+
kind: 'TopNode',
|
|
833
|
+
expression: node.expression,
|
|
834
|
+
modifiers: node.modifiers,
|
|
835
|
+
});
|
|
836
|
+
}
|
|
787
837
|
transformDataType(node) {
|
|
788
838
|
// An Object.freezed leaf node. No need to clone.
|
|
789
839
|
return node;
|
|
@@ -85,7 +85,12 @@ import { JSONPathNode } from './json-path-node.js';
|
|
|
85
85
|
import { JSONPathLegNode } from './json-path-leg-node.js';
|
|
86
86
|
import { JSONOperatorChainNode } from './json-operator-chain-node.js';
|
|
87
87
|
import { TupleNode } from './tuple-node.js';
|
|
88
|
+
import { MergeQueryNode } from './merge-query-node.js';
|
|
89
|
+
import { MatchedNode } from './matched-node.js';
|
|
88
90
|
import { AddIndexNode } from './add-index-node.js';
|
|
91
|
+
import { CastNode } from './cast-node.js';
|
|
92
|
+
import { FetchNode } from './fetch-node.js';
|
|
93
|
+
import { TopNode } from './top-node.js';
|
|
89
94
|
export declare abstract class OperationNodeVisitor {
|
|
90
95
|
#private;
|
|
91
96
|
protected readonly nodeStack: OperationNode[];
|
|
@@ -177,5 +182,10 @@ export declare abstract class OperationNodeVisitor {
|
|
|
177
182
|
protected abstract visitJSONPathLeg(node: JSONPathLegNode): void;
|
|
178
183
|
protected abstract visitJSONOperatorChain(node: JSONOperatorChainNode): void;
|
|
179
184
|
protected abstract visitTuple(node: TupleNode): void;
|
|
185
|
+
protected abstract visitMergeQuery(node: MergeQueryNode): void;
|
|
186
|
+
protected abstract visitMatched(node: MatchedNode): void;
|
|
180
187
|
protected abstract visitAddIndex(node: AddIndexNode): void;
|
|
188
|
+
protected abstract visitCast(node: CastNode): void;
|
|
189
|
+
protected abstract visitFetch(node: FetchNode): void;
|
|
190
|
+
protected abstract visitTop(node: TopNode): void;
|
|
181
191
|
}
|
|
@@ -94,7 +94,12 @@ class OperationNodeVisitor {
|
|
|
94
94
|
JSONPathLegNode: this.visitJSONPathLeg.bind(this),
|
|
95
95
|
JSONOperatorChainNode: this.visitJSONOperatorChain.bind(this),
|
|
96
96
|
TupleNode: this.visitTuple.bind(this),
|
|
97
|
+
MergeQueryNode: this.visitMergeQuery.bind(this),
|
|
98
|
+
MatchedNode: this.visitMatched.bind(this),
|
|
97
99
|
AddIndexNode: this.visitAddIndex.bind(this),
|
|
100
|
+
CastNode: this.visitCast.bind(this),
|
|
101
|
+
FetchNode: this.visitFetch.bind(this),
|
|
102
|
+
TopNode: this.visitTop.bind(this),
|
|
98
103
|
});
|
|
99
104
|
visitNode = (node) => {
|
|
100
105
|
this.nodeStack.push(node);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type OperationNodeKind = 'IdentifierNode' | 'SchemableIdentifierNode' | 'RawNode' | 'SelectQueryNode' | 'SelectionNode' | 'ReferenceNode' | 'ColumnNode' | 'TableNode' | 'AliasNode' | 'FromNode' | 'SelectAllNode' | 'AndNode' | 'OrNode' | 'ParensNode' | 'ValueNode' | 'ValueListNode' | 'PrimitiveValueListNode' | 'JoinNode' | 'OperatorNode' | 'WhereNode' | 'InsertQueryNode' | 'DeleteQueryNode' | 'ReturningNode' | 'CreateTableNode' | 'ColumnDefinitionNode' | 'AddColumnNode' | 'DropTableNode' | 'DataTypeNode' | 'OrderByNode' | 'OrderByItemNode' | 'GroupByNode' | 'GroupByItemNode' | 'UpdateQueryNode' | 'ColumnUpdateNode' | 'LimitNode' | 'OffsetNode' | 'OnConflictNode' | 'OnDuplicateKeyNode' | 'CreateIndexNode' | 'DropIndexNode' | 'ListNode' | 'ReferencesNode' | 'PrimaryKeyConstraintNode' | 'UniqueConstraintNode' | 'CheckConstraintNode' | 'ForeignKeyConstraintNode' | 'WithNode' | 'CommonTableExpressionNode' | 'HavingNode' | 'CreateSchemaNode' | 'DropSchemaNode' | 'AlterTableNode' | 'ModifyColumnNode' | 'DropColumnNode' | 'RenameColumnNode' | 'AlterColumnNode' | 'AddConstraintNode' | 'DropConstraintNode' | 'CreateViewNode' | 'DropViewNode' | 'GeneratedNode' | 'DefaultValueNode' | 'OnNode' | 'ValuesNode' | 'CommonTableExpressionNameNode' | 'SelectModifierNode' | 'CreateTypeNode' | 'DropTypeNode' | 'ExplainNode' | 'DefaultInsertValueNode' | 'AggregateFunctionNode' | 'OverNode' | 'PartitionByNode' | 'PartitionByItemNode' | 'SetOperationNode' | 'BinaryOperationNode' | 'UnaryOperationNode' | 'UsingNode' | 'FunctionNode' | 'CaseNode' | 'WhenNode' | 'JSONReferenceNode' | 'JSONPathNode' | 'JSONPathLegNode' | 'JSONOperatorChainNode' | 'TupleNode' | 'AddIndexNode';
|
|
1
|
+
export type OperationNodeKind = 'IdentifierNode' | 'SchemableIdentifierNode' | 'RawNode' | 'SelectQueryNode' | 'SelectionNode' | 'ReferenceNode' | 'ColumnNode' | 'TableNode' | 'AliasNode' | 'FromNode' | 'SelectAllNode' | 'AndNode' | 'OrNode' | 'ParensNode' | 'ValueNode' | 'ValueListNode' | 'PrimitiveValueListNode' | 'JoinNode' | 'OperatorNode' | 'WhereNode' | 'InsertQueryNode' | 'DeleteQueryNode' | 'ReturningNode' | 'CreateTableNode' | 'ColumnDefinitionNode' | 'AddColumnNode' | 'DropTableNode' | 'DataTypeNode' | 'OrderByNode' | 'OrderByItemNode' | 'GroupByNode' | 'GroupByItemNode' | 'UpdateQueryNode' | 'ColumnUpdateNode' | 'LimitNode' | 'OffsetNode' | 'OnConflictNode' | 'OnDuplicateKeyNode' | 'CreateIndexNode' | 'DropIndexNode' | 'ListNode' | 'ReferencesNode' | 'PrimaryKeyConstraintNode' | 'UniqueConstraintNode' | 'CheckConstraintNode' | 'ForeignKeyConstraintNode' | 'WithNode' | 'CommonTableExpressionNode' | 'HavingNode' | 'CreateSchemaNode' | 'DropSchemaNode' | 'AlterTableNode' | 'ModifyColumnNode' | 'DropColumnNode' | 'RenameColumnNode' | 'AlterColumnNode' | 'AddConstraintNode' | 'DropConstraintNode' | 'CreateViewNode' | 'DropViewNode' | 'GeneratedNode' | 'DefaultValueNode' | 'OnNode' | 'ValuesNode' | 'CommonTableExpressionNameNode' | 'SelectModifierNode' | 'CreateTypeNode' | 'DropTypeNode' | 'ExplainNode' | 'DefaultInsertValueNode' | 'AggregateFunctionNode' | 'OverNode' | 'PartitionByNode' | 'PartitionByItemNode' | 'SetOperationNode' | 'BinaryOperationNode' | 'UnaryOperationNode' | 'UsingNode' | 'FunctionNode' | 'CaseNode' | 'WhenNode' | 'JSONReferenceNode' | 'JSONPathNode' | 'JSONPathLegNode' | 'JSONOperatorChainNode' | 'TupleNode' | 'MergeQueryNode' | 'MatchedNode' | 'AddIndexNode' | 'CastNode' | 'FetchNode' | 'TopNode';
|
|
2
2
|
export interface OperationNode {
|
|
3
3
|
readonly kind: OperationNodeKind;
|
|
4
4
|
}
|
|
@@ -10,7 +10,9 @@ import { OperationNode } from './operation-node.js';
|
|
|
10
10
|
import { ExplainNode } from './explain-node.js';
|
|
11
11
|
import { ExplainFormat } from '../util/explainable.js';
|
|
12
12
|
import { Expression } from '../expression/expression.js';
|
|
13
|
-
|
|
13
|
+
import { MergeQueryNode } from './merge-query-node.js';
|
|
14
|
+
import { TopNode } from './top-node.js';
|
|
15
|
+
export type QueryNode = SelectQueryNode | InsertQueryNode | UpdateQueryNode | DeleteQueryNode | MergeQueryNode;
|
|
14
16
|
type HasJoins = {
|
|
15
17
|
joins?: ReadonlyArray<JoinNode>;
|
|
16
18
|
};
|
|
@@ -23,6 +25,9 @@ type HasReturning = {
|
|
|
23
25
|
type HasExplain = {
|
|
24
26
|
explain?: ExplainNode;
|
|
25
27
|
};
|
|
28
|
+
type HasTop = {
|
|
29
|
+
top?: TopNode;
|
|
30
|
+
};
|
|
26
31
|
/**
|
|
27
32
|
* @internal
|
|
28
33
|
*/
|
|
@@ -31,7 +36,9 @@ export declare const QueryNode: Readonly<{
|
|
|
31
36
|
cloneWithWhere<T extends HasWhere>(node: T, operation: OperationNode): T;
|
|
32
37
|
cloneWithJoin<T_1 extends HasJoins>(node: T_1, join: JoinNode): T_1;
|
|
33
38
|
cloneWithReturning<T_2 extends HasReturning>(node: T_2, selections: ReadonlyArray<SelectionNode>): T_2;
|
|
34
|
-
|
|
35
|
-
|
|
39
|
+
cloneWithoutReturning<T_3 extends HasReturning>(node: T_3): T_3;
|
|
40
|
+
cloneWithoutWhere<T_4 extends HasWhere>(node: T_4): T_4;
|
|
41
|
+
cloneWithExplain<T_5 extends HasExplain>(node: T_5, format: ExplainFormat | undefined, options: Expression<any> | undefined): T_5;
|
|
42
|
+
cloneWithTop<T_6 extends HasTop>(node: T_6, top: TopNode): T_6;
|
|
36
43
|
}>;
|
|
37
44
|
export {};
|
|
@@ -9,6 +9,7 @@ const where_node_js_1 = require("./where-node.js");
|
|
|
9
9
|
const object_utils_js_1 = require("../util/object-utils.js");
|
|
10
10
|
const returning_node_js_1 = require("./returning-node.js");
|
|
11
11
|
const explain_node_js_1 = require("./explain-node.js");
|
|
12
|
+
const merge_query_node_js_1 = require("./merge-query-node.js");
|
|
12
13
|
/**
|
|
13
14
|
* @internal
|
|
14
15
|
*/
|
|
@@ -17,7 +18,8 @@ exports.QueryNode = (0, object_utils_js_1.freeze)({
|
|
|
17
18
|
return (select_query_node_js_1.SelectQueryNode.is(node) ||
|
|
18
19
|
insert_query_node_js_1.InsertQueryNode.is(node) ||
|
|
19
20
|
update_query_node_js_1.UpdateQueryNode.is(node) ||
|
|
20
|
-
delete_query_node_js_1.DeleteQueryNode.is(node)
|
|
21
|
+
delete_query_node_js_1.DeleteQueryNode.is(node) ||
|
|
22
|
+
merge_query_node_js_1.MergeQueryNode.is(node));
|
|
21
23
|
},
|
|
22
24
|
cloneWithWhere(node, operation) {
|
|
23
25
|
return (0, object_utils_js_1.freeze)({
|
|
@@ -41,6 +43,12 @@ exports.QueryNode = (0, object_utils_js_1.freeze)({
|
|
|
41
43
|
: returning_node_js_1.ReturningNode.create(selections),
|
|
42
44
|
});
|
|
43
45
|
},
|
|
46
|
+
cloneWithoutReturning(node) {
|
|
47
|
+
return (0, object_utils_js_1.freeze)({
|
|
48
|
+
...node,
|
|
49
|
+
returning: undefined,
|
|
50
|
+
});
|
|
51
|
+
},
|
|
44
52
|
cloneWithoutWhere(node) {
|
|
45
53
|
return (0, object_utils_js_1.freeze)({
|
|
46
54
|
...node,
|
|
@@ -53,4 +61,10 @@ exports.QueryNode = (0, object_utils_js_1.freeze)({
|
|
|
53
61
|
explain: explain_node_js_1.ExplainNode.create(format, options?.toOperationNode()),
|
|
54
62
|
});
|
|
55
63
|
},
|
|
64
|
+
cloneWithTop(node, top) {
|
|
65
|
+
return (0, object_utils_js_1.freeze)({
|
|
66
|
+
...node,
|
|
67
|
+
top,
|
|
68
|
+
});
|
|
69
|
+
},
|
|
56
70
|
});
|
|
@@ -14,6 +14,8 @@ import { WithNode } from './with-node.js';
|
|
|
14
14
|
import { SelectModifierNode } from './select-modifier-node.js';
|
|
15
15
|
import { ExplainNode } from './explain-node.js';
|
|
16
16
|
import { SetOperationNode } from './set-operation-node.js';
|
|
17
|
+
import { FetchNode } from './fetch-node.js';
|
|
18
|
+
import { TopNode } from './top-node.js';
|
|
17
19
|
export interface SelectQueryNode extends OperationNode {
|
|
18
20
|
readonly kind: 'SelectQueryNode';
|
|
19
21
|
readonly from?: FromNode;
|
|
@@ -31,6 +33,8 @@ export interface SelectQueryNode extends OperationNode {
|
|
|
31
33
|
readonly having?: HavingNode;
|
|
32
34
|
readonly explain?: ExplainNode;
|
|
33
35
|
readonly setOperations?: ReadonlyArray<SetOperationNode>;
|
|
36
|
+
readonly fetch?: FetchNode;
|
|
37
|
+
readonly top?: TopNode;
|
|
34
38
|
}
|
|
35
39
|
/**
|
|
36
40
|
* @internal
|
|
@@ -47,6 +51,7 @@ export declare const SelectQueryNode: Readonly<{
|
|
|
47
51
|
cloneWithGroupByItems(selectNode: SelectQueryNode, items: ReadonlyArray<GroupByItemNode>): SelectQueryNode;
|
|
48
52
|
cloneWithLimit(selectNode: SelectQueryNode, limit: LimitNode): SelectQueryNode;
|
|
49
53
|
cloneWithOffset(selectNode: SelectQueryNode, offset: OffsetNode): SelectQueryNode;
|
|
54
|
+
cloneWithFetch(selectNode: SelectQueryNode, fetch: FetchNode): SelectQueryNode;
|
|
50
55
|
cloneWithHaving(selectNode: SelectQueryNode, operation: OperationNode): SelectQueryNode;
|
|
51
56
|
cloneWithSetOperations(selectNode: SelectQueryNode, setOperations: ReadonlyArray<SetOperationNode>): SelectQueryNode;
|
|
52
57
|
cloneWithoutSelections(select: SelectQueryNode): SelectQueryNode;
|