@shaxpir/squilt 1.0.0 → 1.1.0
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 +289 -1
- package/dist/ast/AlterTableQuery.d.ts +32 -0
- package/dist/ast/AlterTableQuery.js +60 -0
- package/dist/ast/BetweenExpression.d.ts +10 -0
- package/dist/ast/BetweenExpression.js +18 -0
- package/dist/ast/CastExpression.d.ts +13 -0
- package/dist/ast/CastExpression.js +25 -0
- package/dist/ast/CollateExpression.d.ts +18 -0
- package/dist/ast/CollateExpression.js +30 -0
- package/dist/ast/CreateIndexQuery.d.ts +25 -0
- package/dist/ast/CreateIndexQuery.js +64 -0
- package/dist/ast/CreateTableQuery.d.ts +57 -0
- package/dist/ast/CreateTableQuery.js +79 -0
- package/dist/ast/CreateViewQuery.d.ts +34 -0
- package/dist/ast/CreateViewQuery.js +61 -0
- package/dist/ast/CreateVirtualTableQuery.d.ts +32 -0
- package/dist/ast/CreateVirtualTableQuery.js +74 -0
- package/dist/ast/DeleteQuery.d.ts +17 -0
- package/dist/ast/DeleteQuery.js +43 -0
- package/dist/ast/DropIndexQuery.d.ts +14 -0
- package/dist/ast/DropIndexQuery.js +35 -0
- package/dist/ast/DropTableQuery.d.ts +14 -0
- package/dist/ast/DropTableQuery.js +35 -0
- package/dist/ast/DropViewQuery.d.ts +11 -0
- package/dist/ast/DropViewQuery.js +24 -0
- package/dist/ast/FunctionExpression.d.ts +21 -0
- package/dist/ast/FunctionExpression.js +40 -1
- package/dist/ast/FunctionName.d.ts +1 -1
- package/dist/ast/FunctionName.js +1 -1
- package/dist/ast/InsertQuery.d.ts +24 -1
- package/dist/ast/InsertQuery.js +49 -1
- package/dist/ast/Operator.d.ts +2 -0
- package/dist/ast/Operator.js +3 -1
- package/dist/ast/SelectQuery.d.ts +4 -0
- package/dist/ast/SelectQuery.js +11 -1
- package/dist/ast/SubqueryExpression.d.ts +18 -0
- package/dist/ast/SubqueryExpression.js +27 -0
- package/dist/ast/UpdateQuery.d.ts +24 -0
- package/dist/ast/UpdateQuery.js +51 -0
- package/dist/ast/WindowExpression.d.ts +51 -0
- package/dist/ast/WindowExpression.js +61 -0
- package/dist/ast/WindowSpecification.d.ts +46 -0
- package/dist/ast/WindowSpecification.js +60 -0
- package/dist/builder/QueryBuilder.d.ts +20 -0
- package/dist/builder/QueryBuilder.js +41 -1
- package/dist/builder/Shorthand.d.ts +51 -0
- package/dist/builder/Shorthand.js +125 -1
- package/dist/index.d.ts +17 -1
- package/dist/index.js +59 -3
- package/dist/renderer/CompactQueryRenderer.d.ts +34 -2
- package/dist/renderer/CompactQueryRenderer.js +272 -2
- package/dist/renderer/IndentedQueryRenderer.d.ts +34 -2
- package/dist/renderer/IndentedQueryRenderer.js +289 -3
- package/dist/renderer/QueryRenderer.d.ts +11 -1
- package/dist/renderer/QueryRenderer.js +1 -1
- package/dist/validate/CommonQueryValidator.d.ts +31 -1
- package/dist/validate/CommonQueryValidator.js +253 -4
- package/dist/validate/QueryValidator.d.ts +10 -1
- package/dist/validate/QueryValidator.js +1 -1
- package/dist/validate/SQLiteQueryValidator.d.ts +16 -1
- package/dist/validate/SQLiteQueryValidator.js +32 -3
- package/dist/visitor/ParamCollector.d.ts +30 -0
- package/dist/visitor/ParamCollector.js +109 -2
- package/dist/visitor/QueryIdentityTransformer.d.ts +30 -0
- package/dist/visitor/QueryIdentityTransformer.js +217 -2
- package/dist/visitor/SqlTreeNodeVisitor.d.ts +30 -0
- package/dist/visitor/SqlTreeNodeVisitor.js +1 -1
- package/package.json +4 -1
|
@@ -2,6 +2,9 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.FunctionExpression = void 0;
|
|
4
4
|
const Abstractions_1 = require("./Abstractions");
|
|
5
|
+
const OrderBy_1 = require("./OrderBy");
|
|
6
|
+
const WindowExpression_1 = require("./WindowExpression");
|
|
7
|
+
const WindowSpecification_1 = require("./WindowSpecification");
|
|
5
8
|
// Represents a function call (e.g., COUNT(id)) with SQLite-supported functions
|
|
6
9
|
class FunctionExpression extends Abstractions_1.AliasableExpression {
|
|
7
10
|
constructor(name, args, distinct = false) {
|
|
@@ -22,6 +25,42 @@ class FunctionExpression extends Abstractions_1.AliasableExpression {
|
|
|
22
25
|
accept(visitor) {
|
|
23
26
|
return visitor.visitFunctionExpression(this);
|
|
24
27
|
}
|
|
28
|
+
/**
|
|
29
|
+
* Create a window function expression with an OVER clause.
|
|
30
|
+
*
|
|
31
|
+
* Accepts PARTITION_BY (Expression[]) and ORDER_BY (OrderBy) arguments
|
|
32
|
+
* in any order. Multiple ORDER_BY clauses are combined.
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* ```typescript
|
|
36
|
+
* // With ORDER BY only
|
|
37
|
+
* FN('ROW_NUMBER').over(ORDER_BY('created_at'))
|
|
38
|
+
*
|
|
39
|
+
* // With PARTITION BY and ORDER BY
|
|
40
|
+
* FN('RANK').over(PARTITION_BY('category'), ORDER_BY('price', DESC))
|
|
41
|
+
*
|
|
42
|
+
* // Empty OVER clause (window over entire result set)
|
|
43
|
+
* FN('AVG', COLUMN('salary')).over()
|
|
44
|
+
* ```
|
|
45
|
+
*/
|
|
46
|
+
over(...specs) {
|
|
47
|
+
const windowSpec = new WindowSpecification_1.WindowSpecification();
|
|
48
|
+
const orderByClauses = [];
|
|
49
|
+
for (const spec of specs) {
|
|
50
|
+
if (Array.isArray(spec)) {
|
|
51
|
+
// This is PARTITION BY columns (Expression[])
|
|
52
|
+
windowSpec.setPartitionBy(spec);
|
|
53
|
+
}
|
|
54
|
+
else if (spec instanceof OrderBy_1.OrderBy) {
|
|
55
|
+
// This is an ORDER BY clause
|
|
56
|
+
orderByClauses.push(spec);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
if (orderByClauses.length > 0) {
|
|
60
|
+
windowSpec.setOrderBy(orderByClauses);
|
|
61
|
+
}
|
|
62
|
+
return new WindowExpression_1.WindowExpression(this, windowSpec);
|
|
63
|
+
}
|
|
25
64
|
}
|
|
26
65
|
exports.FunctionExpression = FunctionExpression;
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRnVuY3Rpb25FeHByZXNzaW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FzdC9GdW5jdGlvbkV4cHJlc3Npb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsaURBQWlFO0FBRWpFLHVDQUFvQztBQUNwQyx5REFBc0Q7QUFDdEQsK0RBQTREO0FBRTVELCtFQUErRTtBQUMvRSxNQUFhLGtCQUFtQixTQUFRLGtDQUFtQjtJQU16RCxZQUFZLElBQWtCLEVBQUUsSUFBa0IsRUFBRSxXQUFvQixLQUFLO1FBQzNFLEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQVcsSUFBSTtRQUNiLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBRUQsSUFBVyxJQUFJO1FBQ2IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxJQUFXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFTSxNQUFNLENBQUksT0FBOEI7UUFDN0MsT0FBTyxPQUFPLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7OztPQWlCRztJQUNJLElBQUksQ0FBQyxHQUFHLEtBQWlDO1FBQzlDLE1BQU0sVUFBVSxHQUFHLElBQUkseUNBQW1CLEVBQUUsQ0FBQztRQUM3QyxNQUFNLGNBQWMsR0FBYyxFQUFFLENBQUM7UUFFckMsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUN6QixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDeEIsOENBQThDO2dCQUM5QyxVQUFVLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2xDLENBQUM7aUJBQU0sSUFBSSxJQUFJLFlBQVksaUJBQU8sRUFBRSxDQUFDO2dCQUNuQyw2QkFBNkI7Z0JBQzdCLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDNUIsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDOUIsVUFBVSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN4QyxDQUFDO1FBRUQsT0FBTyxJQUFJLG1DQUFnQixDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztJQUNoRCxDQUFDO0NBQ0Y7QUFuRUQsZ0RBbUVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3FsVHJlZU5vZGVWaXNpdG9yIH0gZnJvbSBcIi4uL3Zpc2l0b3IvU3FsVHJlZU5vZGVWaXNpdG9yXCI7XG5pbXBvcnQgeyBBbGlhc2FibGVFeHByZXNzaW9uLCBFeHByZXNzaW9uIH0gZnJvbSBcIi4vQWJzdHJhY3Rpb25zXCI7XG5pbXBvcnQgeyBGdW5jdGlvbk5hbWUgfSBmcm9tIFwiLi9GdW5jdGlvbk5hbWVcIjtcbmltcG9ydCB7IE9yZGVyQnkgfSBmcm9tIFwiLi9PcmRlckJ5XCI7XG5pbXBvcnQgeyBXaW5kb3dFeHByZXNzaW9uIH0gZnJvbSBcIi4vV2luZG93RXhwcmVzc2lvblwiO1xuaW1wb3J0IHsgV2luZG93U3BlY2lmaWNhdGlvbiB9IGZyb20gXCIuL1dpbmRvd1NwZWNpZmljYXRpb25cIjtcblxuLy8gUmVwcmVzZW50cyBhIGZ1bmN0aW9uIGNhbGwgKGUuZy4sIENPVU5UKGlkKSkgd2l0aCBTUUxpdGUtc3VwcG9ydGVkIGZ1bmN0aW9uc1xuZXhwb3J0IGNsYXNzIEZ1bmN0aW9uRXhwcmVzc2lvbiBleHRlbmRzIEFsaWFzYWJsZUV4cHJlc3Npb24ge1xuXG4gIHByaXZhdGUgX25hbWU6IEZ1bmN0aW9uTmFtZTtcbiAgcHJpdmF0ZSBfYXJnczogRXhwcmVzc2lvbltdO1xuICBwcml2YXRlIF9kaXN0aW5jdDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihuYW1lOiBGdW5jdGlvbk5hbWUsIGFyZ3M6IEV4cHJlc3Npb25bXSwgZGlzdGluY3Q6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5fbmFtZSA9IG5hbWU7XG4gICAgdGhpcy5fYXJncyA9IGFyZ3M7XG4gICAgdGhpcy5fZGlzdGluY3QgPSBkaXN0aW5jdDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbmFtZSgpOiBGdW5jdGlvbk5hbWUge1xuICAgIHJldHVybiB0aGlzLl9uYW1lO1xuICB9XG5cbiAgcHVibGljIGdldCBhcmdzKCk6IEV4cHJlc3Npb25bXSB7XG4gICAgcmV0dXJuIHRoaXMuX2FyZ3M7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRpc3RpbmN0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9kaXN0aW5jdDtcbiAgfVxuXG4gIHB1YmxpYyBhY2NlcHQ8VD4odmlzaXRvcjogU3FsVHJlZU5vZGVWaXNpdG9yPFQ+KTogVCB7XG4gICAgcmV0dXJuIHZpc2l0b3IudmlzaXRGdW5jdGlvbkV4cHJlc3Npb24odGhpcyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgd2luZG93IGZ1bmN0aW9uIGV4cHJlc3Npb24gd2l0aCBhbiBPVkVSIGNsYXVzZS5cbiAgICpcbiAgICogQWNjZXB0cyBQQVJUSVRJT05fQlkgKEV4cHJlc3Npb25bXSkgYW5kIE9SREVSX0JZIChPcmRlckJ5KSBhcmd1bWVudHNcbiAgICogaW4gYW55IG9yZGVyLiBNdWx0aXBsZSBPUkRFUl9CWSBjbGF1c2VzIGFyZSBjb21iaW5lZC5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiAvLyBXaXRoIE9SREVSIEJZIG9ubHlcbiAgICogRk4oJ1JPV19OVU1CRVInKS5vdmVyKE9SREVSX0JZKCdjcmVhdGVkX2F0JykpXG4gICAqXG4gICAqIC8vIFdpdGggUEFSVElUSU9OIEJZIGFuZCBPUkRFUiBCWVxuICAgKiBGTignUkFOSycpLm92ZXIoUEFSVElUSU9OX0JZKCdjYXRlZ29yeScpLCBPUkRFUl9CWSgncHJpY2UnLCBERVNDKSlcbiAgICpcbiAgICogLy8gRW1wdHkgT1ZFUiBjbGF1c2UgKHdpbmRvdyBvdmVyIGVudGlyZSByZXN1bHQgc2V0KVxuICAgKiBGTignQVZHJywgQ09MVU1OKCdzYWxhcnknKSkub3ZlcigpXG4gICAqIGBgYFxuICAgKi9cbiAgcHVibGljIG92ZXIoLi4uc3BlY3M6IChFeHByZXNzaW9uW10gfCBPcmRlckJ5KVtdKTogV2luZG93RXhwcmVzc2lvbiB7XG4gICAgY29uc3Qgd2luZG93U3BlYyA9IG5ldyBXaW5kb3dTcGVjaWZpY2F0aW9uKCk7XG4gICAgY29uc3Qgb3JkZXJCeUNsYXVzZXM6IE9yZGVyQnlbXSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBzcGVjIG9mIHNwZWNzKSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShzcGVjKSkge1xuICAgICAgICAvLyBUaGlzIGlzIFBBUlRJVElPTiBCWSBjb2x1bW5zIChFeHByZXNzaW9uW10pXG4gICAgICAgIHdpbmRvd1NwZWMuc2V0UGFydGl0aW9uQnkoc3BlYyk7XG4gICAgICB9IGVsc2UgaWYgKHNwZWMgaW5zdGFuY2VvZiBPcmRlckJ5KSB7XG4gICAgICAgIC8vIFRoaXMgaXMgYW4gT1JERVIgQlkgY2xhdXNlXG4gICAgICAgIG9yZGVyQnlDbGF1c2VzLnB1c2goc3BlYyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG9yZGVyQnlDbGF1c2VzLmxlbmd0aCA+IDApIHtcbiAgICAgIHdpbmRvd1NwZWMuc2V0T3JkZXJCeShvcmRlckJ5Q2xhdXNlcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBXaW5kb3dFeHByZXNzaW9uKHRoaXMsIHdpbmRvd1NwZWMpO1xuICB9XG59XG4iXX0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export type FunctionName = 'ABS' | 'AVG' | 'CEIL' | 'CHANGES' | 'CHAR' | 'COALESCE' | 'CONCAT' | 'COUNT' | 'DATE' | 'DATETIME' | 'FLOOR' | 'GROUP_CONCAT' | 'HEX' | 'IFNULL' | 'INSTR' | 'JULIANDAY' | 'LAST_INSERT_ROWID' | 'LENGTH' | 'LOWER' | 'LTRIM' | 'MAX' | 'MIN' | 'NULLIF' | 'QUOTE' | 'RANDOM' | 'RANDOMBLOB' | 'REPLACE' | 'ROUND' | 'RTRIM' | 'STRFTIME' | 'SUBSTR' | 'SUM' | 'TIME' | 'TOTAL' | 'TOTAL_CHANGES' | 'TRIM' | 'TRUNC' | 'TYPEOF' | 'UNICODE' | 'UPPER' | 'ZEROBLOB' | 'json' | 'json_array' | 'json_array_length' | 'json_each' | 'json_extract' | 'json_group_array' | 'json_group_object' | 'json_insert' | 'json_object' | 'json_patch' | 'json_quote' | 'json_remove' | 'json_replace' | 'json_set' | 'json_tree' | 'json_type' | 'json_valid';
|
|
1
|
+
export type FunctionName = 'ABS' | 'AVG' | 'CEIL' | 'CHANGES' | 'CHAR' | 'COALESCE' | 'CONCAT' | 'COUNT' | 'DATE' | 'DATETIME' | 'FLOOR' | 'GROUP_CONCAT' | 'HEX' | 'IFNULL' | 'INSTR' | 'JULIANDAY' | 'LAST_INSERT_ROWID' | 'LENGTH' | 'LOWER' | 'LTRIM' | 'MAX' | 'MIN' | 'NULLIF' | 'QUOTE' | 'RANDOM' | 'RANDOMBLOB' | 'REPLACE' | 'ROUND' | 'RTRIM' | 'STRFTIME' | 'SUBSTR' | 'SUM' | 'TIME' | 'TOTAL' | 'TOTAL_CHANGES' | 'TRIM' | 'TRUNC' | 'TYPEOF' | 'UNICODE' | 'UPPER' | 'ZEROBLOB' | 'ROW_NUMBER' | 'RANK' | 'DENSE_RANK' | 'NTILE' | 'LAG' | 'LEAD' | 'FIRST_VALUE' | 'LAST_VALUE' | 'NTH_VALUE' | 'CUME_DIST' | 'PERCENT_RANK' | 'json' | 'json_array' | 'json_array_length' | 'json_each' | 'json_extract' | 'json_group_array' | 'json_group_object' | 'json_insert' | 'json_object' | 'json_patch' | 'json_quote' | 'json_remove' | 'json_replace' | 'json_set' | 'json_tree' | 'json_type' | 'json_valid' | 'bm25' | 'highlight' | 'snippet' | 'offsets' | 'matchinfo';
|
package/dist/ast/FunctionName.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRnVuY3Rpb25OYW1lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FzdC9GdW5jdGlvbk5hbWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEZ1bmN0aW9uTmFtZSA9XG4gICAgLy8gU3RhbmRhcmQgU1FMIGZ1bmN0aW9uc1xuICAgICdBQlMnXG4gIHwgJ0FWRydcbiAgfCAnQ0VJTCdcbiAgfCAnQ0hBTkdFUydcbiAgfCAnQ0hBUidcbiAgfCAnQ09BTEVTQ0UnXG4gIHwgJ0NPTkNBVCdcbiAgfCAnQ09VTlQnXG4gIHwgJ0RBVEUnXG4gIHwgJ0RBVEVUSU1FJ1xuICB8ICdGTE9PUidcbiAgfCAnR1JPVVBfQ09OQ0FUJ1xuICB8ICdIRVgnXG4gIHwgJ0lGTlVMTCdcbiAgfCAnSU5TVFInXG4gIHwgJ0pVTElBTkRBWSdcbiAgfCAnTEFTVF9JTlNFUlRfUk9XSUQnXG4gIHwgJ0xFTkdUSCdcbiAgfCAnTE9XRVInXG4gIHwgJ0xUUklNJ1xuICB8ICdNQVgnXG4gIHwgJ01JTidcbiAgfCAnTlVMTElGJ1xuICB8ICdRVU9URSdcbiAgfCAnUkFORE9NJ1xuICB8ICdSQU5ET01CTE9CJ1xuICB8ICdSRVBMQUNFJ1xuICB8ICdST1VORCdcbiAgfCAnUlRSSU0nXG4gIHwgJ1NUUkZUSU1FJ1xuICB8ICdTVUJTVFInXG4gIHwgJ1NVTSdcbiAgfCAnVElNRSdcbiAgfCAnVE9UQUwnXG4gIHwgJ1RPVEFMX0NIQU5HRVMnXG4gIHwgJ1RSSU0nXG4gIHwgJ1RSVU5DJ1xuICB8ICdUWVBFT0YnXG4gIHwgJ1VOSUNPREUnXG4gIHwgJ1VQUEVSJ1xuICB8ICdaRVJPQkxPQidcbiAgLy8gV2luZG93IGZ1bmN0aW9uc1xuICB8ICdST1dfTlVNQkVSJ1xuICB8ICdSQU5LJ1xuICB8ICdERU5TRV9SQU5LJ1xuICB8ICdOVElMRSdcbiAgfCAnTEFHJ1xuICB8ICdMRUFEJ1xuICB8ICdGSVJTVF9WQUxVRSdcbiAgfCAnTEFTVF9WQUxVRSdcbiAgfCAnTlRIX1ZBTFVFJ1xuICB8ICdDVU1FX0RJU1QnXG4gIHwgJ1BFUkNFTlRfUkFOSydcbiAgfCAnanNvbidcbiAgfCAnanNvbl9hcnJheSdcbiAgfCAnanNvbl9hcnJheV9sZW5ndGgnXG4gIHwgJ2pzb25fZWFjaCdcbiAgfCAnanNvbl9leHRyYWN0J1xuICB8ICdqc29uX2dyb3VwX2FycmF5J1xuICB8ICdqc29uX2dyb3VwX29iamVjdCdcbiAgfCAnanNvbl9pbnNlcnQnXG4gIHwgJ2pzb25fb2JqZWN0J1xuICB8ICdqc29uX3BhdGNoJ1xuICB8ICdqc29uX3F1b3RlJ1xuICB8ICdqc29uX3JlbW92ZSdcbiAgfCAnanNvbl9yZXBsYWNlJ1xuICB8ICdqc29uX3NldCdcbiAgfCAnanNvbl90cmVlJ1xuICB8ICdqc29uX3R5cGUnXG4gIHwgJ2pzb25fdmFsaWQnXG4gIC8vIEZUUzUgZnVuY3Rpb25zXG4gIHwgJ2JtMjUnXG4gIHwgJ2hpZ2hsaWdodCdcbiAgfCAnc25pcHBldCdcbiAgfCAnb2Zmc2V0cydcbiAgfCAnbWF0Y2hpbmZvJztcbiJdfQ==
|
|
@@ -1,17 +1,40 @@
|
|
|
1
1
|
import { QueryRenderer } from "../renderer/QueryRenderer";
|
|
2
2
|
import { SqlTreeNodeVisitor } from "../visitor/SqlTreeNodeVisitor";
|
|
3
|
-
import { Expression, SqlTreeNode } from "./Abstractions";
|
|
3
|
+
import { AliasableExpression, Expression, SqlTreeNode } from "./Abstractions";
|
|
4
|
+
import { SelectQuery } from "./SelectQuery";
|
|
5
|
+
export interface UpsertSetClause {
|
|
6
|
+
column: string;
|
|
7
|
+
value: Expression;
|
|
8
|
+
}
|
|
4
9
|
export declare class InsertQuery implements SqlTreeNode {
|
|
5
10
|
private _tableName;
|
|
6
11
|
private _columns;
|
|
7
12
|
private _values;
|
|
13
|
+
private _fromSelect;
|
|
8
14
|
private _orReplace;
|
|
15
|
+
private _returning;
|
|
16
|
+
private _onConflictColumns;
|
|
17
|
+
private _doUpdateSets;
|
|
18
|
+
private _doNothing;
|
|
19
|
+
private _onConflictWhere;
|
|
9
20
|
constructor(tableName: string);
|
|
10
21
|
static create(tableName: string): InsertQuery;
|
|
11
22
|
orReplace(): InsertQuery;
|
|
12
23
|
columns(...columns: string[]): InsertQuery;
|
|
13
24
|
values(...values: Expression[]): InsertQuery;
|
|
25
|
+
fromSelect(query: SelectQuery): InsertQuery;
|
|
26
|
+
get selectQuery(): SelectQuery | null;
|
|
27
|
+
returning(...expressions: AliasableExpression[]): InsertQuery;
|
|
28
|
+
onConflict(...columns: string[]): InsertQuery;
|
|
29
|
+
doUpdate(sets: Record<string, Expression>): InsertQuery;
|
|
30
|
+
doNothing(): InsertQuery;
|
|
31
|
+
onConflictWhere(condition: Expression): InsertQuery;
|
|
14
32
|
isOrReplace(): boolean;
|
|
33
|
+
get returningClause(): AliasableExpression[];
|
|
34
|
+
get onConflictColumns(): string[];
|
|
35
|
+
get doUpdateClauses(): UpsertSetClause[];
|
|
36
|
+
get isDoNothing(): boolean;
|
|
37
|
+
get conflictWhere(): Expression | null;
|
|
15
38
|
toSQL(renderer?: QueryRenderer): string;
|
|
16
39
|
accept<T>(visitor: SqlTreeNodeVisitor<T>): T;
|
|
17
40
|
}
|
package/dist/ast/InsertQuery.js
CHANGED
|
@@ -7,7 +7,13 @@ class InsertQuery {
|
|
|
7
7
|
constructor(tableName) {
|
|
8
8
|
this._columns = [];
|
|
9
9
|
this._values = [];
|
|
10
|
+
this._fromSelect = null;
|
|
10
11
|
this._orReplace = false;
|
|
12
|
+
this._returning = [];
|
|
13
|
+
this._onConflictColumns = [];
|
|
14
|
+
this._doUpdateSets = [];
|
|
15
|
+
this._doNothing = false;
|
|
16
|
+
this._onConflictWhere = null;
|
|
11
17
|
this._tableName = tableName;
|
|
12
18
|
}
|
|
13
19
|
static create(tableName) {
|
|
@@ -25,9 +31,51 @@ class InsertQuery {
|
|
|
25
31
|
this._values = values;
|
|
26
32
|
return this;
|
|
27
33
|
}
|
|
34
|
+
fromSelect(query) {
|
|
35
|
+
this._fromSelect = query;
|
|
36
|
+
return this;
|
|
37
|
+
}
|
|
38
|
+
get selectQuery() {
|
|
39
|
+
return this._fromSelect;
|
|
40
|
+
}
|
|
41
|
+
returning(...expressions) {
|
|
42
|
+
this._returning = expressions;
|
|
43
|
+
return this;
|
|
44
|
+
}
|
|
45
|
+
onConflict(...columns) {
|
|
46
|
+
this._onConflictColumns = columns;
|
|
47
|
+
return this;
|
|
48
|
+
}
|
|
49
|
+
doUpdate(sets) {
|
|
50
|
+
this._doUpdateSets = Object.entries(sets).map(([column, value]) => ({ column, value }));
|
|
51
|
+
return this;
|
|
52
|
+
}
|
|
53
|
+
doNothing() {
|
|
54
|
+
this._doNothing = true;
|
|
55
|
+
return this;
|
|
56
|
+
}
|
|
57
|
+
onConflictWhere(condition) {
|
|
58
|
+
this._onConflictWhere = condition;
|
|
59
|
+
return this;
|
|
60
|
+
}
|
|
28
61
|
isOrReplace() {
|
|
29
62
|
return this._orReplace;
|
|
30
63
|
}
|
|
64
|
+
get returningClause() {
|
|
65
|
+
return this._returning;
|
|
66
|
+
}
|
|
67
|
+
get onConflictColumns() {
|
|
68
|
+
return this._onConflictColumns;
|
|
69
|
+
}
|
|
70
|
+
get doUpdateClauses() {
|
|
71
|
+
return this._doUpdateSets;
|
|
72
|
+
}
|
|
73
|
+
get isDoNothing() {
|
|
74
|
+
return this._doNothing;
|
|
75
|
+
}
|
|
76
|
+
get conflictWhere() {
|
|
77
|
+
return this._onConflictWhere;
|
|
78
|
+
}
|
|
31
79
|
toSQL(renderer) {
|
|
32
80
|
if (!renderer) {
|
|
33
81
|
renderer = new IndentedQueryRenderer_1.IndentedQueryRenderer(2);
|
|
@@ -39,4 +87,4 @@ class InsertQuery {
|
|
|
39
87
|
}
|
|
40
88
|
}
|
|
41
89
|
exports.InsertQuery = InsertQuery;
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW5zZXJ0UXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXN0L0luc2VydFF1ZXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZFQUEwRTtBQVkxRSw4RUFBOEU7QUFDOUUsTUFBYSxXQUFXO0lBYXRCLFlBQVksU0FBaUI7UUFWckIsYUFBUSxHQUFhLEVBQUUsQ0FBQztRQUN4QixZQUFPLEdBQWlCLEVBQUUsQ0FBQztRQUMzQixnQkFBVyxHQUF1QixJQUFJLENBQUM7UUFDdkMsZUFBVSxHQUFZLEtBQUssQ0FBQztRQUM1QixlQUFVLEdBQTBCLEVBQUUsQ0FBQztRQUN2Qyx1QkFBa0IsR0FBYSxFQUFFLENBQUM7UUFDbEMsa0JBQWEsR0FBc0IsRUFBRSxDQUFDO1FBQ3RDLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFDNUIscUJBQWdCLEdBQXNCLElBQUksQ0FBQztRQUdqRCxJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztJQUM5QixDQUFDO0lBRU0sTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFpQjtRQUNwQyxPQUFPLElBQUksV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFTSxTQUFTO1FBQ2QsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdkIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0sT0FBTyxDQUFDLEdBQUcsT0FBaUI7UUFDakMsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7UUFDeEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0sTUFBTSxDQUFDLEdBQUcsTUFBb0I7UUFDbkMsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0sVUFBVSxDQUFDLEtBQWtCO1FBQ2xDLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELElBQVcsV0FBVztRQUNwQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUVNLFNBQVMsQ0FBQyxHQUFHLFdBQWtDO1FBQ3BELElBQUksQ0FBQyxVQUFVLEdBQUcsV0FBVyxDQUFDO1FBQzlCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLFVBQVUsQ0FBQyxHQUFHLE9BQWlCO1FBQ3BDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxPQUFPLENBQUM7UUFDbEMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0sUUFBUSxDQUFDLElBQWdDO1FBQzlDLElBQUksQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDeEYsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0sU0FBUztRQUNkLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLGVBQWUsQ0FBQyxTQUFxQjtRQUMxQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsU0FBUyxDQUFDO1FBQ2xDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLFdBQVc7UUFDaEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFXLGVBQWU7UUFDeEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFXLGlCQUFpQjtRQUMxQixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFBVyxlQUFlO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBVyxXQUFXO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBVyxhQUFhO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO0lBQy9CLENBQUM7SUFFTSxLQUFLLENBQUMsUUFBd0I7UUFDbkMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2QsUUFBUSxHQUFHLElBQUksNkNBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUMsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRU0sTUFBTSxDQUFJLE9BQThCO1FBQzdDLE9BQU8sT0FBTyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hDLENBQUM7Q0FDRjtBQXhHRCxrQ0F3R0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmRlbnRlZFF1ZXJ5UmVuZGVyZXIgfSBmcm9tIFwiLi4vcmVuZGVyZXIvSW5kZW50ZWRRdWVyeVJlbmRlcmVyXCI7XG5pbXBvcnQgeyBRdWVyeVJlbmRlcmVyIH0gZnJvbSBcIi4uL3JlbmRlcmVyL1F1ZXJ5UmVuZGVyZXJcIjtcbmltcG9ydCB7IFNxbFRyZWVOb2RlVmlzaXRvciB9IGZyb20gXCIuLi92aXNpdG9yL1NxbFRyZWVOb2RlVmlzaXRvclwiO1xuaW1wb3J0IHsgQWxpYXNhYmxlRXhwcmVzc2lvbiwgRXhwcmVzc2lvbiwgU3FsVHJlZU5vZGUgfSBmcm9tIFwiLi9BYnN0cmFjdGlvbnNcIjtcbmltcG9ydCB7IFNlbGVjdFF1ZXJ5IH0gZnJvbSBcIi4vU2VsZWN0UXVlcnlcIjtcblxuLy8gUmVwcmVzZW50cyBhbiBhc3NpZ25tZW50IGluIHRoZSBETyBVUERBVEUgU0VUIGNsYXVzZVxuZXhwb3J0IGludGVyZmFjZSBVcHNlcnRTZXRDbGF1c2Uge1xuICBjb2x1bW46IHN0cmluZztcbiAgdmFsdWU6IEV4cHJlc3Npb247XG59XG5cbi8vIFJlcHJlc2VudHMgYW4gSU5TRVJUIE9SIFJFUExBQ0Ugc3RhdGVtZW50IHdpdGggYSB0YWJsZSwgY29sdW1ucywgYW5kIHZhbHVlc1xuZXhwb3J0IGNsYXNzIEluc2VydFF1ZXJ5IGltcGxlbWVudHMgU3FsVHJlZU5vZGUge1xuXG4gIHByaXZhdGUgX3RhYmxlTmFtZTogc3RyaW5nO1xuICBwcml2YXRlIF9jb2x1bW5zOiBzdHJpbmdbXSA9IFtdO1xuICBwcml2YXRlIF92YWx1ZXM6IEV4cHJlc3Npb25bXSA9IFtdO1xuICBwcml2YXRlIF9mcm9tU2VsZWN0OiBTZWxlY3RRdWVyeSB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9vclJlcGxhY2U6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfcmV0dXJuaW5nOiBBbGlhc2FibGVFeHByZXNzaW9uW10gPSBbXTtcbiAgcHJpdmF0ZSBfb25Db25mbGljdENvbHVtbnM6IHN0cmluZ1tdID0gW107XG4gIHByaXZhdGUgX2RvVXBkYXRlU2V0czogVXBzZXJ0U2V0Q2xhdXNlW10gPSBbXTtcbiAgcHJpdmF0ZSBfZG9Ob3RoaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX29uQ29uZmxpY3RXaGVyZTogRXhwcmVzc2lvbiB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKHRhYmxlTmFtZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fdGFibGVOYW1lID0gdGFibGVOYW1lO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBjcmVhdGUodGFibGVOYW1lOiBzdHJpbmcpOiBJbnNlcnRRdWVyeSB7XG4gICAgcmV0dXJuIG5ldyBJbnNlcnRRdWVyeSh0YWJsZU5hbWUpO1xuICB9XG5cbiAgcHVibGljIG9yUmVwbGFjZSgpOiBJbnNlcnRRdWVyeSB7XG4gICAgdGhpcy5fb3JSZXBsYWNlID0gdHJ1ZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBjb2x1bW5zKC4uLmNvbHVtbnM6IHN0cmluZ1tdKTogSW5zZXJ0UXVlcnkge1xuICAgIHRoaXMuX2NvbHVtbnMgPSBjb2x1bW5zO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIHZhbHVlcyguLi52YWx1ZXM6IEV4cHJlc3Npb25bXSk6IEluc2VydFF1ZXJ5IHtcbiAgICB0aGlzLl92YWx1ZXMgPSB2YWx1ZXM7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgZnJvbVNlbGVjdChxdWVyeTogU2VsZWN0UXVlcnkpOiBJbnNlcnRRdWVyeSB7XG4gICAgdGhpcy5fZnJvbVNlbGVjdCA9IHF1ZXJ5O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGdldCBzZWxlY3RRdWVyeSgpOiBTZWxlY3RRdWVyeSB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9mcm9tU2VsZWN0O1xuICB9XG5cbiAgcHVibGljIHJldHVybmluZyguLi5leHByZXNzaW9uczogQWxpYXNhYmxlRXhwcmVzc2lvbltdKTogSW5zZXJ0UXVlcnkge1xuICAgIHRoaXMuX3JldHVybmluZyA9IGV4cHJlc3Npb25zO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIG9uQ29uZmxpY3QoLi4uY29sdW1uczogc3RyaW5nW10pOiBJbnNlcnRRdWVyeSB7XG4gICAgdGhpcy5fb25Db25mbGljdENvbHVtbnMgPSBjb2x1bW5zO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGRvVXBkYXRlKHNldHM6IFJlY29yZDxzdHJpbmcsIEV4cHJlc3Npb24+KTogSW5zZXJ0UXVlcnkge1xuICAgIHRoaXMuX2RvVXBkYXRlU2V0cyA9IE9iamVjdC5lbnRyaWVzKHNldHMpLm1hcCgoW2NvbHVtbiwgdmFsdWVdKSA9PiAoeyBjb2x1bW4sIHZhbHVlIH0pKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBkb05vdGhpbmcoKTogSW5zZXJ0UXVlcnkge1xuICAgIHRoaXMuX2RvTm90aGluZyA9IHRydWU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgb25Db25mbGljdFdoZXJlKGNvbmRpdGlvbjogRXhwcmVzc2lvbik6IEluc2VydFF1ZXJ5IHtcbiAgICB0aGlzLl9vbkNvbmZsaWN0V2hlcmUgPSBjb25kaXRpb247XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgaXNPclJlcGxhY2UoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX29yUmVwbGFjZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcmV0dXJuaW5nQ2xhdXNlKCk6IEFsaWFzYWJsZUV4cHJlc3Npb25bXSB7XG4gICAgcmV0dXJuIHRoaXMuX3JldHVybmluZztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgb25Db25mbGljdENvbHVtbnMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLl9vbkNvbmZsaWN0Q29sdW1ucztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZG9VcGRhdGVDbGF1c2VzKCk6IFVwc2VydFNldENsYXVzZVtdIHtcbiAgICByZXR1cm4gdGhpcy5fZG9VcGRhdGVTZXRzO1xuICB9XG5cbiAgcHVibGljIGdldCBpc0RvTm90aGluZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZG9Ob3RoaW5nO1xuICB9XG5cbiAgcHVibGljIGdldCBjb25mbGljdFdoZXJlKCk6IEV4cHJlc3Npb24gfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fb25Db25mbGljdFdoZXJlO1xuICB9XG5cbiAgcHVibGljIHRvU1FMKHJlbmRlcmVyPzogUXVlcnlSZW5kZXJlcik6IHN0cmluZyB7XG4gICAgaWYgKCFyZW5kZXJlcikge1xuICAgICAgcmVuZGVyZXIgPSBuZXcgSW5kZW50ZWRRdWVyeVJlbmRlcmVyKDIpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5hY2NlcHQocmVuZGVyZXIpO1xuICB9XG5cbiAgcHVibGljIGFjY2VwdDxUPih2aXNpdG9yOiBTcWxUcmVlTm9kZVZpc2l0b3I8VD4pOiBUIHtcbiAgICByZXR1cm4gdmlzaXRvci52aXNpdEluc2VydFF1ZXJ5KHRoaXMpO1xuICB9XG59XG4iXX0=
|
package/dist/ast/Operator.d.ts
CHANGED
package/dist/ast/Operator.js
CHANGED
|
@@ -13,6 +13,8 @@ var Operator;
|
|
|
13
13
|
Operator["GREATER_THAN_OR_EQUAL"] = ">=";
|
|
14
14
|
Operator["LESS_THAN_OR_EQUAL"] = "<=";
|
|
15
15
|
Operator["LIKE"] = "LIKE";
|
|
16
|
+
Operator["GLOB"] = "GLOB";
|
|
17
|
+
Operator["MATCH"] = "MATCH";
|
|
16
18
|
Operator["MINUS"] = "-";
|
|
17
19
|
Operator["PLUS"] = "+";
|
|
18
20
|
Operator["MULTIPLY"] = "*";
|
|
@@ -20,4 +22,4 @@ var Operator;
|
|
|
20
22
|
Operator["IS_NULL"] = "IS NULL";
|
|
21
23
|
Operator["IS_NOT_NULL"] = "IS NOT NULL";
|
|
22
24
|
})(Operator || (exports.Operator = Operator = {}));
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3BlcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXN0L09wZXJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLElBQVksUUFtQlg7QUFuQkQsV0FBWSxRQUFRO0lBQ2xCLHVCQUFXLENBQUE7SUFDWCxxQkFBUyxDQUFBO0lBQ1QsdUJBQVcsQ0FBQTtJQUNYLHdCQUFZLENBQUE7SUFDWiw2QkFBaUIsQ0FBQTtJQUNqQiw4QkFBa0IsQ0FBQTtJQUNsQiwyQkFBZSxDQUFBO0lBQ2Ysd0NBQTRCLENBQUE7SUFDNUIscUNBQXlCLENBQUE7SUFDekIseUJBQWEsQ0FBQTtJQUNiLHlCQUFhLENBQUE7SUFDYiwyQkFBZSxDQUFBO0lBQ2YsdUJBQVcsQ0FBQTtJQUNYLHNCQUFVLENBQUE7SUFDViwwQkFBYyxDQUFBO0lBQ2Qsd0JBQVksQ0FBQTtJQUNaLCtCQUFtQixDQUFBO0lBQ25CLHVDQUEyQixDQUFBO0FBQzdCLENBQUMsRUFuQlcsUUFBUSx3QkFBUixRQUFRLFFBbUJuQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIE9wZXJhdG9yIHtcbiAgQU5EID0gJ0FORCcsXG4gIE9SID0gJ09SJyxcbiAgTk9UID0gJ05PVCcsXG4gIEVRVUFMUyA9ICc9JyxcbiAgTk9UX0VRVUFMUyA9ICchPScsXG4gIEdSRUFURVJfVEhBTiA9ICc+JyxcbiAgTEVTU19USEFOID0gJzwnLFxuICBHUkVBVEVSX1RIQU5fT1JfRVFVQUwgPSAnPj0nLFxuICBMRVNTX1RIQU5fT1JfRVFVQUwgPSAnPD0nLFxuICBMSUtFID0gJ0xJS0UnLFxuICBHTE9CID0gJ0dMT0InLFxuICBNQVRDSCA9ICdNQVRDSCcsXG4gIE1JTlVTID0gJy0nLFxuICBQTFVTID0gJysnLFxuICBNVUxUSVBMWSA9ICcqJyxcbiAgRElWSURFID0gJy8nLFxuICBJU19OVUxMID0gJ0lTIE5VTEwnLFxuICBJU19OT1RfTlVMTCA9ICdJUyBOT1QgTlVMTCcsXG59XG4iXX0=
|
|
@@ -14,6 +14,8 @@ export declare class SelectQuery implements SqlTreeNode {
|
|
|
14
14
|
private _having;
|
|
15
15
|
private _with;
|
|
16
16
|
private _union;
|
|
17
|
+
private _intersect;
|
|
18
|
+
private _except;
|
|
17
19
|
private _orderBy;
|
|
18
20
|
private _offset?;
|
|
19
21
|
private _limit?;
|
|
@@ -30,6 +32,8 @@ export declare class SelectQuery implements SqlTreeNode {
|
|
|
30
32
|
groupBy(...columns: (string | Column)[]): SelectQuery;
|
|
31
33
|
having(havingClause: Expression): SelectQuery;
|
|
32
34
|
union(query: SelectQuery): SelectQuery;
|
|
35
|
+
intersect(query: SelectQuery): SelectQuery;
|
|
36
|
+
except(query: SelectQuery): SelectQuery;
|
|
33
37
|
orderBy(column: string | Expression, direction: OrderByDirection): SelectQuery;
|
|
34
38
|
offset(offset: number): SelectQuery;
|
|
35
39
|
limit(limit: number): SelectQuery;
|
package/dist/ast/SelectQuery.js
CHANGED
|
@@ -18,6 +18,8 @@ class SelectQuery {
|
|
|
18
18
|
this._having = null;
|
|
19
19
|
this._with = [];
|
|
20
20
|
this._union = [];
|
|
21
|
+
this._intersect = [];
|
|
22
|
+
this._except = [];
|
|
21
23
|
this._orderBy = [];
|
|
22
24
|
this._offset = null;
|
|
23
25
|
this._limit = null;
|
|
@@ -77,6 +79,14 @@ class SelectQuery {
|
|
|
77
79
|
this._union.push(query);
|
|
78
80
|
return this;
|
|
79
81
|
}
|
|
82
|
+
intersect(query) {
|
|
83
|
+
this._intersect.push(query);
|
|
84
|
+
return this;
|
|
85
|
+
}
|
|
86
|
+
except(query) {
|
|
87
|
+
this._except.push(query);
|
|
88
|
+
return this;
|
|
89
|
+
}
|
|
80
90
|
orderBy(column, direction) {
|
|
81
91
|
if (typeof column === 'string') {
|
|
82
92
|
column = new Column_1.Column(column);
|
|
@@ -106,4 +116,4 @@ class SelectQuery {
|
|
|
106
116
|
}
|
|
107
117
|
}
|
|
108
118
|
exports.SelectQuery = SelectQuery;
|
|
109
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VsZWN0UXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXN0L1NlbGVjdFF1ZXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZFQUEwRTtBQUkxRSxtQ0FBZ0M7QUFDaEMscUNBQThDO0FBQzlDLGlDQUF3QztBQUN4QyxpQ0FBd0M7QUFDeEMsdUNBQXNEO0FBQ3RELGlDQUE4QjtBQUU5QixrRUFBa0U7QUFDbEUsTUFBYSxXQUFXO0lBQXhCO1FBQ1UsbUJBQWMsR0FBd0IsRUFBRSxDQUFDO1FBQ3pDLGFBQVEsR0FBaUIsRUFBRSxDQUFDO1FBQzVCLFdBQU0sR0FBc0IsSUFBSSxDQUFDO1FBQ2pDLGFBQVEsR0FBYSxFQUFFLENBQUM7UUFDeEIsWUFBTyxHQUFzQixJQUFJLENBQUM7UUFDbEMsVUFBSyxHQUFXLEVBQUUsQ0FBQztRQUNuQixXQUFNLEdBQWtCLEVBQUUsQ0FBQztRQUMzQixhQUFRLEdBQWMsRUFBRSxDQUFDO1FBQ3pCLFlBQU8sR0FBbUIsSUFBSSxDQUFDO1FBQy9CLFdBQU0sR0FBbUIsSUFBSSxDQUFDO1FBQzlCLGNBQVMsR0FBWSxLQUFLLENBQUM7SUFxR3JDLENBQUM7SUFuR1EsTUFBTSxDQUFDLE1BQU07UUFDbEIsT0FBTyxJQUFJLFdBQVcsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFTSxRQUFRO1FBQ2IsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBSU0sSUFBSSxDQUFDLFlBQTJCLEVBQUUsS0FBbUI7UUFDMUQsSUFBSSxPQUFPLFlBQVksS0FBSyxRQUFRLElBQUksS0FBSyxFQUFFLENBQUM7WUFDOUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxXQUFJLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDakQsQ0FBQzthQUFNLElBQUksWUFBWSxZQUFZLFdBQUksRUFBRSxDQUFD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QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxLQUFLLENBQUMsUUFBd0I7UUFDbkMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2QsUUFBUSxHQUFHLElBQUksNkNBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUMsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRU0sTUFBTSxDQUFJLE9BQThCO1FBQzdDLE9BQU8sT0FBTyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFTSxVQUFVO1FBQ2YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7Q0FDRjtBQWhIRCxrQ0FnSEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmRlbnRlZFF1ZXJ5UmVuZGVyZXIgfSBmcm9tIFwiLi4vcmVuZGVyZXIvSW5kZW50ZWRRdWVyeVJlbmRlcmVyXCI7XG5pbXBvcnQgeyBRdWVyeVJlbmRlcmVyIH0gZnJvbSBcIi4uL3JlbmRlcmVyL1F1ZXJ5UmVuZGVyZXJcIjtcbmltcG9ydCB7IFNxbFRyZWVOb2RlVmlzaXRvciB9IGZyb20gXCIuLi92aXNpdG9yL1NxbFRyZWVOb2RlVmlzaXRvclwiO1xuaW1wb3J0IHsgRXhwcmVzc2lvbiwgU3FsVHJlZU5vZGUgfSBmcm9tIFwiLi9BYnN0cmFjdGlvbnNcIjtcbmltcG9ydCB7IEFsaWFzIH0gZnJvbSBcIi4vQWxpYXNcIjtcbmltcG9ydCB7IENvbHVtbiwgQ29sdW1uTGlrZSB9IGZyb20gXCIuL0NvbHVtblwiO1xuaW1wb3J0IHsgRnJvbSwgRnJvbUxpa2UgfSBmcm9tIFwiLi9Gcm9tXCI7XG5pbXBvcnQgeyBKb2luLCBKb2luVHlwZSB9IGZyb20gXCIuL0pvaW5cIjtcbmltcG9ydCB7IE9yZGVyQnksIE9yZGVyQnlEaXJlY3Rpb24gfSBmcm9tIFwiLi9PcmRlckJ5XCI7XG5pbXBvcnQgeyBXaXRoIH0gZnJvbSBcIi4vV2l0aFwiO1xuXG4vLyBNYWluIGVudHJ5IHBvaW50IGZvciBidWlsZGluZyBTRUxFQ1QgcXVlcmllcyB3aXRoIGEgZmx1ZW50IEFQSS5cbmV4cG9ydCBjbGFzcyBTZWxlY3RRdWVyeSBpbXBsZW1lbnRzIFNxbFRyZWVOb2RlIHtcbiAgcHJpdmF0ZSBfZnJvbXNBbmRKb2luczogKEZyb21MaWtlIHwgSm9pbilbXSA9IFtdO1xuICBwcml2YXRlIF9jb2x1bW5zOiBDb2x1bW5MaWtlW10gPSBbXTtcbiAgcHJpdmF0ZSBfd2hlcmU6IEV4cHJlc3Npb24gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfZ3JvdXBCeTogQ29sdW1uW10gPSBbXTtcbiAgcHJpdmF0ZSBfaGF2aW5nOiBFeHByZXNzaW9uIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX3dpdGg6IFdpdGhbXSA9IFtdO1xuICBwcml2YXRlIF91bmlvbjogU2VsZWN0UXVlcnlbXSA9IFtdO1xuICBwcml2YXRlIF9vcmRlckJ5OiBPcmRlckJ5W10gPSBbXTtcbiAgcHJpdmF0ZSBfb2Zmc2V0PzogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX2xpbWl0PzogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX2Rpc3RpbmN0OiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHVibGljIHN0YXRpYyBjcmVhdGUoKTogU2VsZWN0UXVlcnkge1xuICAgIHJldHVybiBuZXcgU2VsZWN0UXVlcnkoKTtcbiAgfVxuXG4gIHB1YmxpYyBkaXN0aW5jdCgpOiBTZWxlY3RRdWVyeSB7XG4gICAgdGhpcy5fZGlzdGluY3QgPSB0cnVlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIHdpdGgoY2xhdXNlOiBXaXRoKTogU2VsZWN0UXVlcnk7XG4gIHB1YmxpYyB3aXRoKG5hbWU6IHN0cmluZywgcXVlcnk6IFNlbGVjdFF1ZXJ5KTogU2VsZWN0UXVlcnk7XG4gIHB1YmxpYyB3aXRoKG5hbWVPckNsYXVzZTogc3RyaW5nIHwgV2l0aCwgcXVlcnk/OiBTZWxlY3RRdWVyeSk6IFNlbGVjdFF1ZXJ5IHtcbiAgICBpZiAodHlwZW9mIG5hbWVPckNsYXVzZSA9PT0gJ3N0cmluZycgJiYgcXVlcnkpIHtcbiAgICAgIHRoaXMuX3dpdGgucHVzaChuZXcgV2l0aChuYW1lT3JDbGF1c2UsIHF1ZXJ5KSk7XG4gICAgfSBlbHNlIGlmIChuYW1lT3JDbGF1c2UgaW5zdGFuY2VvZiBXaXRoKSB7XG4gICAgICB0aGlzLl93aXRoLnB1c2gobmFtZU9yQ2xhdXNlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgZnJvbShmcm9tQ2xhdXNlOiBGcm9tTGlrZSk6IFNlbGVjdFF1ZXJ5IHtcbiAgICB0aGlzLl9mcm9tc0FuZEpvaW5zLnB1c2goZnJvbUNsYXVzZSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgY29sdW1uKGNvbHVtbjogQ29sdW1uTGlrZSk6IFNlbGVjdFF1ZXJ5IHtcbiAgICB0aGlzLl9jb2x1bW5zLnB1c2goY29sdW1uKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBqb2luKGpvaW46IEpvaW4pOiBTZWxlY3RRdWVyeTtcbiAgcHVibGljIGpvaW4odHlwZTogSm9pblR5cGUsIHRhYmxlTmFtZTogc3RyaW5nLCBhbGlhczogc3RyaW5nLCBvbjogRXhwcmVzc2lvbik6IFNlbGVjdFF1ZXJ5O1xuICBwdWJsaWMgam9pbih0eXBlT3JKb2luOiBKb2luIHwgSm9pblR5cGUsIHRhYmxlTmFtZT86IHN0cmluZywgYWxpYXM/OiBzdHJpbmcsIG9uPzogRXhwcmVzc2lvbik6IFNlbGVjdFF1ZXJ5IHtcbiAgICBpZiAodGhpcy5fZnJvbXNBbmRKb2lucy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGFkZCBKT0lOIHdpdGhvdXQgYSBwcmVjZWRpbmcgRlJPTSBjbGF1c2UnKTtcbiAgICB9XG4gICAgY29uc3QgbGFzdENsYXVzZSA9IHRoaXMuX2Zyb21zQW5kSm9pbnNbdGhpcy5fZnJvbXNBbmRKb2lucy5sZW5ndGggLSAxXTtcbiAgICBpZiAoIShsYXN0Q2xhdXNlIGluc3RhbmNlb2YgRnJvbSB8fCBsYXN0Q2xhdXNlIGluc3RhbmNlb2YgQWxpYXMgfHwgbGFzdENsYXVzZSBpbnN0YW5jZW9mIEpvaW4pKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0pPSU4gbXVzdCBmb2xsb3cgYSBGUk9NLCBhbiBBTElBUywgb3IgYW5vdGhlciBKT0lOIGNsYXVzZScpO1xuICAgIH1cbiAgICBpZiAoISh0eXBlT3JKb2luIGluc3RhbmNlb2YgSm9pbikpIHtcbiAgICAgIHR5cGVPckpvaW4gPSBuZXcgSm9pbih0eXBlT3JKb2luLCB0YWJsZU5hbWUhLCBhbGlhcyEsIG9uISk7XG4gICAgfVxuICAgIHRoaXMuX2Zyb21zQW5kSm9pbnMucHVzaCh0eXBlT3JKb2luKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyB3aGVyZSh3aGVyZUNsYXVzZTogRXhwcmVzc2lvbik6IFNlbGVjdFF1ZXJ5IHtcbiAgICB0aGlzLl93aGVyZSA9IHdoZXJlQ2xhdXNlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGdyb3VwQnkoLi4uY29sdW1uczogKHN0cmluZ3xDb2x1bW4pW10pOiBTZWxlY3RRdWVyeSB7XG4gICAgdGhpcy5fZ3JvdXBCeSA9IGNvbHVtbnMubWFwKGNvbCA9PiAodHlwZW9mIGNvbCA9PT0gJ3N0cmluZycgPyBuZXcgQ29sdW1uKGNvbCkgOiBjb2wpKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBoYXZpbmcoaGF2aW5nQ2xhdXNlOiBFeHByZXNzaW9uKTogU2VsZWN0UXVlcnkge1xuICAgIHRoaXMuX2hhdmluZyA9IGhhdmluZ0NsYXVzZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyB1bmlvbihxdWVyeTogU2VsZWN0UXVlcnkpOiBTZWxlY3RRdWVyeSB7XG4gICAgdGhpcy5fdW5pb24ucHVzaChxdWVyeSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgb3JkZXJCeShjb2x1bW46IHN0cmluZ3xFeHByZXNzaW9uLCBkaXJlY3Rpb246IE9yZGVyQnlEaXJlY3Rpb24pOiBTZWxlY3RRdWVyeSB7XG4gICAgaWYgKHR5cGVvZiBjb2x1bW4gPT09ICdzdHJpbmcnKSB7XG4gICAgICBjb2x1bW4gPSBuZXcgQ29sdW1uKGNvbHVtbik7XG4gICAgfVxuICAgIHRoaXMuX29yZGVyQnkucHVzaChuZXcgT3JkZXJCeShjb2x1bW4sIGRpcmVjdGlvbikpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIG9mZnNldChvZmZzZXQ6IG51bWJlcik6IFNlbGVjdFF1ZXJ5IHtcbiAgICB0aGlzLl9vZmZzZXQgPSBvZmZzZXQ7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgbGltaXQobGltaXQ6IG51bWJlcik6IFNlbGVjdFF1ZXJ5IHtcbiAgICB0aGlzLl9saW1pdCA9IGxpbWl0O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIHRvU1FMKHJlbmRlcmVyPzogUXVlcnlSZW5kZXJlcik6IHN0cmluZyB7XG4gICAgaWYgKCFyZW5kZXJlcikge1xuICAgICAgcmVuZGVyZXIgPSBuZXcgSW5kZW50ZWRRdWVyeVJlbmRlcmVyKDIpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5hY2NlcHQocmVuZGVyZXIpO1xuICB9XG5cbiAgcHVibGljIGFjY2VwdDxUPih2aXNpdG9yOiBTcWxUcmVlTm9kZVZpc2l0b3I8VD4pOiBUIHtcbiAgICByZXR1cm4gdmlzaXRvci52aXNpdFNlbGVjdFF1ZXJ5KHRoaXMpO1xuICB9XG5cbiAgcHVibGljIGlzRGlzdGluY3QoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc3RpbmN0O1xuICB9XG59XG4iXX0=
|
|
119
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VsZWN0UXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXN0L1NlbGVjdFF1ZXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZFQUEwRTtBQUkxRSxtQ0FBZ0M7QUFDaEMscUNBQThDO0FBQzlDLGlDQUF3QztBQUN4QyxpQ0FBd0M7QUFDeEMsdUNBQXNEO0FBQ3RELGlDQUE4QjtBQUU5QixrRUFBa0U7QUFDbEUsTUFBYSxXQUFXO0lBQXhCO1FBQ1UsbUJBQWMsR0FBd0IsRUFBRSxDQUFDO1FBQ3pDLGFBQVEsR0FBaUIsRUFBRSxDQUFDO1FBQzVCLFdBQU0sR0FBc0IsSUFBSSxDQUFDO1FBQ2pDLGFBQVEsR0FBYSxFQUFFLENBQUM7UUFDeEIsWUFBTyxHQUFzQixJQUFJLENBQUM7UUFDbEMsVUFBSyxHQUFXLEVBQUUsQ0FBQztRQUNuQixXQUFNLEdBQWtCLEVBQUUsQ0FBQztRQUMzQixlQUFVLEdBQWtCLEVBQUUsQ0FBQztRQUMvQixZQUFPLEdBQWtCLEVBQUUsQ0FBQztRQUM1QixhQUFRLEdBQWMsRUFBRSxDQUFDO1FBQ3pCLFlBQU8sR0FBbUIsSUFBSSxDQUFDO1FBQy9CLFdBQU0sR0FBbUIsSUFBSSxDQUFDO1FBQzlCLGNBQVMsR0FBWSxLQUFLLENBQUM7SUErR3JDLENBQUM7SUE3R1EsTUFBTSxDQUFDLE1BQU07UUFDbEIsT0FBTyxJQUFJLFdBQVcsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFTSxRQUFRO1FBQ2IsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBSU0sSUFBSSxDQUFDLFlBQTJCLEVBQUUsS0FBbUI7UUFDMUQsSUFBSSxPQUFPLFlBQVksS0FBSyxRQUFRLElBQUksS0FBSyxFQUFFLENBQUM7WUFDOUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxXQUFJLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxD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O1FBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxpQkFBTyxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ25ELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLE1BQU0sQ0FBQyxNQUFjO1FBQzFCLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBQ3RCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLEtBQUssQ0FBQyxLQUFhO1FBQ3hCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLEtBQUssQ0FBQyxRQUF3QjtRQUNuQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDZCxRQUFRLEdBQUcsSUFBSSw2Q0FBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxQyxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFTSxNQUFNLENBQUksT0FBOEI7UUFDN0MsT0FBTyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVNLFVBQVU7UUFDZixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztDQUNGO0FBNUhELGtDQTRIQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluZGVudGVkUXVlcnlSZW5kZXJlciB9IGZyb20gXCIuLi9yZW5kZXJlci9JbmRlbnRlZFF1ZXJ5UmVuZGVyZXJcIjtcbmltcG9ydCB7IFF1ZXJ5UmVuZGVyZXIgfSBmcm9tIFwiLi4vcmVuZGVyZXIvUXVlcnlSZW5kZXJlclwiO1xuaW1wb3J0IHsgU3FsVHJlZU5vZGVWaXNpdG9yIH0gZnJvbSBcIi4uL3Zpc2l0b3IvU3FsVHJlZU5vZGVWaXNpdG9yXCI7XG5pbXBvcnQgeyBFeHByZXNzaW9uLCBTcWxUcmVlTm9kZSB9IGZyb20gXCIuL0Fic3RyYWN0aW9uc1wiO1xuaW1wb3J0IHsgQWxpYXMgfSBmcm9tIFwiLi9BbGlhc1wiO1xuaW1wb3J0IHsgQ29sdW1uLCBDb2x1bW5MaWtlIH0gZnJvbSBcIi4vQ29sdW1uXCI7XG5pbXBvcnQgeyBGcm9tLCBGcm9tTGlrZSB9IGZyb20gXCIuL0Zyb21cIjtcbmltcG9ydCB7IEpvaW4sIEpvaW5UeXBlIH0gZnJvbSBcIi4vSm9pblwiO1xuaW1wb3J0IHsgT3JkZXJCeSwgT3JkZXJCeURpcmVjdGlvbiB9IGZyb20gXCIuL09yZGVyQnlcIjtcbmltcG9ydCB7IFdpdGggfSBmcm9tIFwiLi9XaXRoXCI7XG5cbi8vIE1haW4gZW50cnkgcG9pbnQgZm9yIGJ1aWxkaW5nIFNFTEVDVCBxdWVyaWVzIHdpdGggYSBmbHVlbnQgQVBJLlxuZXhwb3J0IGNsYXNzIFNlbGVjdFF1ZXJ5IGltcGxlbWVudHMgU3FsVHJlZU5vZGUge1xuICBwcml2YXRlIF9mcm9tc0FuZEpvaW5zOiAoRnJvbUxpa2UgfCBKb2luKVtdID0gW107XG4gIHByaXZhdGUgX2NvbHVtbnM6IENvbHVtbkxpa2VbXSA9IFtdO1xuICBwcml2YXRlIF93aGVyZTogRXhwcmVzc2lvbiB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9ncm91cEJ5OiBDb2x1bW5bXSA9IFtdO1xuICBwcml2YXRlIF9oYXZpbmc6IEV4cHJlc3Npb24gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfd2l0aDogV2l0aFtdID0gW107XG4gIHByaXZhdGUgX3VuaW9uOiBTZWxlY3RRdWVyeVtdID0gW107XG4gIHByaXZhdGUgX2ludGVyc2VjdDogU2VsZWN0UXVlcnlbXSA9IFtdO1xuICBwcml2YXRlIF9leGNlcHQ6IFNlbGVjdFF1ZXJ5W10gPSBbXTtcbiAgcHJpdmF0ZSBfb3JkZXJCeTogT3JkZXJCeVtdID0gW107XG4gIHByaXZhdGUgX29mZnNldD86IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9saW1pdD86IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9kaXN0aW5jdDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHB1YmxpYyBzdGF0aWMgY3JlYXRlKCk6IFNlbGVjdFF1ZXJ5IHtcbiAgICByZXR1cm4gbmV3IFNlbGVjdFF1ZXJ5KCk7XG4gIH1cblxuICBwdWJsaWMgZGlzdGluY3QoKTogU2VsZWN0UXVlcnkge1xuICAgIHRoaXMuX2Rpc3RpbmN0ID0gdHJ1ZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyB3aXRoKGNsYXVzZTogV2l0aCk6IFNlbGVjdFF1ZXJ5O1xuICBwdWJsaWMgd2l0aChuYW1lOiBzdHJpbmcsIHF1ZXJ5OiBTZWxlY3RRdWVyeSk6IFNlbGVjdFF1ZXJ5O1xuICBwdWJsaWMgd2l0aChuYW1lT3JDbGF1c2U6IHN0cmluZyB8IFdpdGgsIHF1ZXJ5PzogU2VsZWN0UXVlcnkpOiBTZWxlY3RRdWVyeSB7XG4gICAgaWYgKHR5cGVvZiBuYW1lT3JDbGF1c2UgPT09ICdzdHJpbmcnICYmIHF1ZXJ5KSB7XG4gICAgICB0aGlzLl93aXRoLnB1c2gobmV3IFdpdGgobmFtZU9yQ2xhdXNlLCBxdWVyeSkpO1xuICAgIH0gZWxzZSBpZiAobmFtZU9yQ2xhdXNlIGluc3RhbmNlb2YgV2l0aCkge1xuICAgICAgdGhpcy5fd2l0aC5wdXNoKG5hbWVPckNsYXVzZSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGZyb20oZnJvbUNsYXVzZTogRnJvbUxpa2UpOiBTZWxlY3RRdWVyeSB7XG4gICAgdGhpcy5fZnJvbXNBbmRKb2lucy5wdXNoKGZyb21DbGF1c2UpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGNvbHVtbihjb2x1bW46IENvbHVtbkxpa2UpOiBTZWxlY3RRdWVyeSB7XG4gICAgdGhpcy5fY29sdW1ucy5wdXNoKGNvbHVtbik7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgam9pbihqb2luOiBKb2luKTogU2VsZWN0UXVlcnk7XG4gIHB1YmxpYyBqb2luKHR5cGU6IEpvaW5UeXBlLCB0YWJsZU5hbWU6IHN0cmluZywgYWxpYXM6IHN0cmluZywgb246IEV4cHJlc3Npb24pOiBTZWxlY3RRdWVyeTtcbiAgcHVibGljIGpvaW4odHlwZU9ySm9pbjogSm9pbiB8IEpvaW5UeXBlLCB0YWJsZU5hbWU/OiBzdHJpbmcsIGFsaWFzPzogc3RyaW5nLCBvbj86IEV4cHJlc3Npb24pOiBTZWxlY3RRdWVyeSB7XG4gICAgaWYgKHRoaXMuX2Zyb21zQW5kSm9pbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBhZGQgSk9JTiB3aXRob3V0IGEgcHJlY2VkaW5nIEZST00gY2xhdXNlJyk7XG4gICAgfVxuICAgIGNvbnN0IGxhc3RDbGF1c2UgPSB0aGlzLl9mcm9tc0FuZEpvaW5zW3RoaXMuX2Zyb21zQW5kSm9pbnMubGVuZ3RoIC0gMV07XG4gICAgaWYgKCEobGFzdENsYXVzZSBpbnN0YW5jZW9mIEZyb20gfHwgbGFzdENsYXVzZSBpbnN0YW5jZW9mIEFsaWFzIHx8IGxhc3RDbGF1c2UgaW5zdGFuY2VvZiBKb2luKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdKT0lOIG11c3QgZm9sbG93IGEgRlJPTSwgYW4gQUxJQVMsIG9yIGFub3RoZXIgSk9JTiBjbGF1c2UnKTtcbiAgICB9XG4gICAgaWYgKCEodHlwZU9ySm9pbiBpbnN0YW5jZW9mIEpvaW4pKSB7XG4gICAgICB0eXBlT3JKb2luID0gbmV3IEpvaW4odHlwZU9ySm9pbiwgdGFibGVOYW1lISwgYWxpYXMhLCBvbiEpO1xuICAgIH1cbiAgICB0aGlzLl9mcm9tc0FuZEpvaW5zLnB1c2godHlwZU9ySm9pbik7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgd2hlcmUod2hlcmVDbGF1c2U6IEV4cHJlc3Npb24pOiBTZWxlY3RRdWVyeSB7XG4gICAgdGhpcy5fd2hlcmUgPSB3aGVyZUNsYXVzZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBncm91cEJ5KC4uLmNvbHVtbnM6IChzdHJpbmd8Q29sdW1uKVtdKTogU2VsZWN0UXVlcnkge1xuICAgIHRoaXMuX2dyb3VwQnkgPSBjb2x1bW5zLm1hcChjb2wgPT4gKHR5cGVvZiBjb2wgPT09ICdzdHJpbmcnID8gbmV3IENvbHVtbihjb2wpIDogY29sKSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgaGF2aW5nKGhhdmluZ0NsYXVzZTogRXhwcmVzc2lvbik6IFNlbGVjdFF1ZXJ5IHtcbiAgICB0aGlzLl9oYXZpbmcgPSBoYXZpbmdDbGF1c2U7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgdW5pb24ocXVlcnk6IFNlbGVjdFF1ZXJ5KTogU2VsZWN0UXVlcnkge1xuICAgIHRoaXMuX3VuaW9uLnB1c2gocXVlcnkpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGludGVyc2VjdChxdWVyeTogU2VsZWN0UXVlcnkpOiBTZWxlY3RRdWVyeSB7XG4gICAgdGhpcy5faW50ZXJzZWN0LnB1c2gocXVlcnkpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGV4Y2VwdChxdWVyeTogU2VsZWN0UXVlcnkpOiBTZWxlY3RRdWVyeSB7XG4gICAgdGhpcy5fZXhjZXB0LnB1c2gocXVlcnkpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIG9yZGVyQnkoY29sdW1uOiBzdHJpbmd8RXhwcmVzc2lvbiwgZGlyZWN0aW9uOiBPcmRlckJ5RGlyZWN0aW9uKTogU2VsZWN0UXVlcnkge1xuICAgIGlmICh0eXBlb2YgY29sdW1uID09PSAnc3RyaW5nJykge1xuICAgICAgY29sdW1uID0gbmV3IENvbHVtbihjb2x1bW4pO1xuICAgIH1cbiAgICB0aGlzLl9vcmRlckJ5LnB1c2gobmV3IE9yZGVyQnkoY29sdW1uLCBkaXJlY3Rpb24pKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBvZmZzZXQob2Zmc2V0OiBudW1iZXIpOiBTZWxlY3RRdWVyeSB7XG4gICAgdGhpcy5fb2Zmc2V0ID0gb2Zmc2V0O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGxpbWl0KGxpbWl0OiBudW1iZXIpOiBTZWxlY3RRdWVyeSB7XG4gICAgdGhpcy5fbGltaXQgPSBsaW1pdDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyB0b1NRTChyZW5kZXJlcj86IFF1ZXJ5UmVuZGVyZXIpOiBzdHJpbmcge1xuICAgIGlmICghcmVuZGVyZXIpIHtcbiAgICAgIHJlbmRlcmVyID0gbmV3IEluZGVudGVkUXVlcnlSZW5kZXJlcigyKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuYWNjZXB0KHJlbmRlcmVyKTtcbiAgfVxuXG4gIHB1YmxpYyBhY2NlcHQ8VD4odmlzaXRvcjogU3FsVHJlZU5vZGVWaXNpdG9yPFQ+KTogVCB7XG4gICAgcmV0dXJuIHZpc2l0b3IudmlzaXRTZWxlY3RRdWVyeSh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyBpc0Rpc3RpbmN0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9kaXN0aW5jdDtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { AliasableExpression } from "./Abstractions";
|
|
2
|
+
import { SelectQuery } from "./SelectQuery";
|
|
3
|
+
import { SqlTreeNodeVisitor } from "../visitor/SqlTreeNodeVisitor";
|
|
4
|
+
/**
|
|
5
|
+
* Represents a scalar subquery expression: (SELECT ...)
|
|
6
|
+
*
|
|
7
|
+
* Can be used anywhere an expression is allowed:
|
|
8
|
+
* - In SELECT columns: SELECT id, (SELECT name FROM users WHERE ...) AS user_name
|
|
9
|
+
* - In WHERE clauses: WHERE price > (SELECT AVG(price) FROM products)
|
|
10
|
+
* - In CASE expressions: CASE WHEN (SELECT COUNT(*) FROM ...) > 0 THEN ...
|
|
11
|
+
* - In function arguments: COALESCE((SELECT ...), default_value)
|
|
12
|
+
*/
|
|
13
|
+
export declare class SubqueryExpression extends AliasableExpression {
|
|
14
|
+
private _subquery;
|
|
15
|
+
constructor(subquery: SelectQuery);
|
|
16
|
+
get subquery(): SelectQuery;
|
|
17
|
+
accept<T>(visitor: SqlTreeNodeVisitor<T>): T;
|
|
18
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SubqueryExpression = void 0;
|
|
4
|
+
const Abstractions_1 = require("./Abstractions");
|
|
5
|
+
/**
|
|
6
|
+
* Represents a scalar subquery expression: (SELECT ...)
|
|
7
|
+
*
|
|
8
|
+
* Can be used anywhere an expression is allowed:
|
|
9
|
+
* - In SELECT columns: SELECT id, (SELECT name FROM users WHERE ...) AS user_name
|
|
10
|
+
* - In WHERE clauses: WHERE price > (SELECT AVG(price) FROM products)
|
|
11
|
+
* - In CASE expressions: CASE WHEN (SELECT COUNT(*) FROM ...) > 0 THEN ...
|
|
12
|
+
* - In function arguments: COALESCE((SELECT ...), default_value)
|
|
13
|
+
*/
|
|
14
|
+
class SubqueryExpression extends Abstractions_1.AliasableExpression {
|
|
15
|
+
constructor(subquery) {
|
|
16
|
+
super();
|
|
17
|
+
this._subquery = subquery;
|
|
18
|
+
}
|
|
19
|
+
get subquery() {
|
|
20
|
+
return this._subquery;
|
|
21
|
+
}
|
|
22
|
+
accept(visitor) {
|
|
23
|
+
return visitor.visitSubqueryExpression(this);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
exports.SubqueryExpression = SubqueryExpression;
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3VicXVlcnlFeHByZXNzaW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FzdC9TdWJxdWVyeUV4cHJlc3Npb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaURBQXFEO0FBSXJEOzs7Ozs7OztHQVFHO0FBQ0gsTUFBYSxrQkFBbUIsU0FBUSxrQ0FBbUI7SUFHekQsWUFBWSxRQUFxQjtRQUMvQixLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO0lBQzVCLENBQUM7SUFFRCxJQUFXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFTSxNQUFNLENBQUksT0FBOEI7UUFDN0MsT0FBTyxPQUFPLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0MsQ0FBQztDQUNGO0FBZkQsZ0RBZUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBbGlhc2FibGVFeHByZXNzaW9uIH0gZnJvbSBcIi4vQWJzdHJhY3Rpb25zXCI7XG5pbXBvcnQgeyBTZWxlY3RRdWVyeSB9IGZyb20gXCIuL1NlbGVjdFF1ZXJ5XCI7XG5pbXBvcnQgeyBTcWxUcmVlTm9kZVZpc2l0b3IgfSBmcm9tIFwiLi4vdmlzaXRvci9TcWxUcmVlTm9kZVZpc2l0b3JcIjtcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgc2NhbGFyIHN1YnF1ZXJ5IGV4cHJlc3Npb246IChTRUxFQ1QgLi4uKVxuICpcbiAqIENhbiBiZSB1c2VkIGFueXdoZXJlIGFuIGV4cHJlc3Npb24gaXMgYWxsb3dlZDpcbiAqIC0gSW4gU0VMRUNUIGNvbHVtbnM6IFNFTEVDVCBpZCwgKFNFTEVDVCBuYW1lIEZST00gdXNlcnMgV0hFUkUgLi4uKSBBUyB1c2VyX25hbWVcbiAqIC0gSW4gV0hFUkUgY2xhdXNlczogV0hFUkUgcHJpY2UgPiAoU0VMRUNUIEFWRyhwcmljZSkgRlJPTSBwcm9kdWN0cylcbiAqIC0gSW4gQ0FTRSBleHByZXNzaW9uczogQ0FTRSBXSEVOIChTRUxFQ1QgQ09VTlQoKikgRlJPTSAuLi4pID4gMCBUSEVOIC4uLlxuICogLSBJbiBmdW5jdGlvbiBhcmd1bWVudHM6IENPQUxFU0NFKChTRUxFQ1QgLi4uKSwgZGVmYXVsdF92YWx1ZSlcbiAqL1xuZXhwb3J0IGNsYXNzIFN1YnF1ZXJ5RXhwcmVzc2lvbiBleHRlbmRzIEFsaWFzYWJsZUV4cHJlc3Npb24ge1xuICBwcml2YXRlIF9zdWJxdWVyeTogU2VsZWN0UXVlcnk7XG5cbiAgY29uc3RydWN0b3Ioc3VicXVlcnk6IFNlbGVjdFF1ZXJ5KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLl9zdWJxdWVyeSA9IHN1YnF1ZXJ5O1xuICB9XG5cbiAgcHVibGljIGdldCBzdWJxdWVyeSgpOiBTZWxlY3RRdWVyeSB7XG4gICAgcmV0dXJuIHRoaXMuX3N1YnF1ZXJ5O1xuICB9XG5cbiAgcHVibGljIGFjY2VwdDxUPih2aXNpdG9yOiBTcWxUcmVlTm9kZVZpc2l0b3I8VD4pOiBUIHtcbiAgICByZXR1cm4gdmlzaXRvci52aXNpdFN1YnF1ZXJ5RXhwcmVzc2lvbih0aGlzKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { QueryRenderer } from "../renderer/QueryRenderer";
|
|
2
|
+
import { SqlTreeNodeVisitor } from "../visitor/SqlTreeNodeVisitor";
|
|
3
|
+
import { AliasableExpression, Expression, SqlTreeNode } from "./Abstractions";
|
|
4
|
+
export interface SetClause {
|
|
5
|
+
column: string;
|
|
6
|
+
value: Expression;
|
|
7
|
+
}
|
|
8
|
+
export declare class UpdateQuery implements SqlTreeNode {
|
|
9
|
+
private _tableName;
|
|
10
|
+
private _set;
|
|
11
|
+
private _where;
|
|
12
|
+
private _returning;
|
|
13
|
+
constructor(tableName: string);
|
|
14
|
+
static create(tableName: string): UpdateQuery;
|
|
15
|
+
set(column: string, value: Expression): UpdateQuery;
|
|
16
|
+
where(condition: Expression): UpdateQuery;
|
|
17
|
+
returning(...expressions: AliasableExpression[]): UpdateQuery;
|
|
18
|
+
get tableName(): string;
|
|
19
|
+
get setClause(): SetClause[];
|
|
20
|
+
get whereClause(): Expression | null;
|
|
21
|
+
get returningClause(): AliasableExpression[];
|
|
22
|
+
toSQL(renderer?: QueryRenderer): string;
|
|
23
|
+
accept<T>(visitor: SqlTreeNodeVisitor<T>): T;
|
|
24
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UpdateQuery = void 0;
|
|
4
|
+
const IndentedQueryRenderer_1 = require("../renderer/IndentedQueryRenderer");
|
|
5
|
+
// Represents an UPDATE statement with a table, SET clause, and optional WHERE clause
|
|
6
|
+
class UpdateQuery {
|
|
7
|
+
constructor(tableName) {
|
|
8
|
+
this._set = [];
|
|
9
|
+
this._where = null;
|
|
10
|
+
this._returning = [];
|
|
11
|
+
this._tableName = tableName;
|
|
12
|
+
}
|
|
13
|
+
static create(tableName) {
|
|
14
|
+
return new UpdateQuery(tableName);
|
|
15
|
+
}
|
|
16
|
+
set(column, value) {
|
|
17
|
+
this._set.push({ column, value });
|
|
18
|
+
return this;
|
|
19
|
+
}
|
|
20
|
+
where(condition) {
|
|
21
|
+
this._where = condition;
|
|
22
|
+
return this;
|
|
23
|
+
}
|
|
24
|
+
returning(...expressions) {
|
|
25
|
+
this._returning = expressions;
|
|
26
|
+
return this;
|
|
27
|
+
}
|
|
28
|
+
get tableName() {
|
|
29
|
+
return this._tableName;
|
|
30
|
+
}
|
|
31
|
+
get setClause() {
|
|
32
|
+
return this._set;
|
|
33
|
+
}
|
|
34
|
+
get whereClause() {
|
|
35
|
+
return this._where;
|
|
36
|
+
}
|
|
37
|
+
get returningClause() {
|
|
38
|
+
return this._returning;
|
|
39
|
+
}
|
|
40
|
+
toSQL(renderer) {
|
|
41
|
+
if (!renderer) {
|
|
42
|
+
renderer = new IndentedQueryRenderer_1.IndentedQueryRenderer(2);
|
|
43
|
+
}
|
|
44
|
+
return this.accept(renderer);
|
|
45
|
+
}
|
|
46
|
+
accept(visitor) {
|
|
47
|
+
return visitor.visitUpdateQuery(this);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
exports.UpdateQuery = UpdateQuery;
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXBkYXRlUXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXN0L1VwZGF0ZVF1ZXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZFQUEwRTtBQVcxRSxxRkFBcUY7QUFDckYsTUFBYSxXQUFXO0lBT3RCLFlBQVksU0FBaUI7UUFKckIsU0FBSSxHQUFnQixFQUFFLENBQUM7UUFDdkIsV0FBTSxHQUFzQixJQUFJLENBQUM7UUFDakMsZUFBVSxHQUEwQixFQUFFLENBQUM7UUFHN0MsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7SUFDOUIsQ0FBQztJQUVNLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBaUI7UUFDcEMsT0FBTyxJQUFJLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRU0sR0FBRyxDQUFDLE1BQWMsRUFBRSxLQUFpQjtRQUMxQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ2xDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLEtBQUssQ0FBQyxTQUFxQjtRQUNoQyxJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQztRQUN4QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxTQUFTLENBQUMsR0FBRyxXQUFrQztRQUNwRCxJQUFJLENBQUMsVUFBVSxHQUFHLFdBQVcsQ0FBQztRQUM5QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxJQUFXLFNBQVM7UUFDbEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFXLFNBQVM7UUFDbEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFFRCxJQUFXLFdBQVc7UUFDcEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxJQUFXLGVBQWU7UUFDeEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFTSxLQUFLLENBQUMsUUFBd0I7UUFDbkMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2QsUUFBUSxHQUFHLElBQUksNkNBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUMsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRU0sTUFBTSxDQUFJLE9BQThCO1FBQzdDLE9BQU8sT0FBTyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hDLENBQUM7Q0FDRjtBQXhERCxrQ0F3REMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmRlbnRlZFF1ZXJ5UmVuZGVyZXIgfSBmcm9tIFwiLi4vcmVuZGVyZXIvSW5kZW50ZWRRdWVyeVJlbmRlcmVyXCI7XG5pbXBvcnQgeyBRdWVyeVJlbmRlcmVyIH0gZnJvbSBcIi4uL3JlbmRlcmVyL1F1ZXJ5UmVuZGVyZXJcIjtcbmltcG9ydCB7IFNxbFRyZWVOb2RlVmlzaXRvciB9IGZyb20gXCIuLi92aXNpdG9yL1NxbFRyZWVOb2RlVmlzaXRvclwiO1xuaW1wb3J0IHsgQWxpYXNhYmxlRXhwcmVzc2lvbiwgRXhwcmVzc2lvbiwgU3FsVHJlZU5vZGUgfSBmcm9tIFwiLi9BYnN0cmFjdGlvbnNcIjtcblxuLy8gUmVwcmVzZW50cyBhbiBhc3NpZ25tZW50IGluIHRoZSBTRVQgY2xhdXNlIG9mIGFuIFVQREFURSBzdGF0ZW1lbnRcbmV4cG9ydCBpbnRlcmZhY2UgU2V0Q2xhdXNlIHtcbiAgY29sdW1uOiBzdHJpbmc7XG4gIHZhbHVlOiBFeHByZXNzaW9uO1xufVxuXG4vLyBSZXByZXNlbnRzIGFuIFVQREFURSBzdGF0ZW1lbnQgd2l0aCBhIHRhYmxlLCBTRVQgY2xhdXNlLCBhbmQgb3B0aW9uYWwgV0hFUkUgY2xhdXNlXG5leHBvcnQgY2xhc3MgVXBkYXRlUXVlcnkgaW1wbGVtZW50cyBTcWxUcmVlTm9kZSB7XG5cbiAgcHJpdmF0ZSBfdGFibGVOYW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgX3NldDogU2V0Q2xhdXNlW10gPSBbXTtcbiAgcHJpdmF0ZSBfd2hlcmU6IEV4cHJlc3Npb24gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfcmV0dXJuaW5nOiBBbGlhc2FibGVFeHByZXNzaW9uW10gPSBbXTtcblxuICBjb25zdHJ1Y3Rvcih0YWJsZU5hbWU6IHN0cmluZykge1xuICAgIHRoaXMuX3RhYmxlTmFtZSA9IHRhYmxlTmFtZTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgY3JlYXRlKHRhYmxlTmFtZTogc3RyaW5nKTogVXBkYXRlUXVlcnkge1xuICAgIHJldHVybiBuZXcgVXBkYXRlUXVlcnkodGFibGVOYW1lKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQoY29sdW1uOiBzdHJpbmcsIHZhbHVlOiBFeHByZXNzaW9uKTogVXBkYXRlUXVlcnkge1xuICAgIHRoaXMuX3NldC5wdXNoKHsgY29sdW1uLCB2YWx1ZSB9KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyB3aGVyZShjb25kaXRpb246IEV4cHJlc3Npb24pOiBVcGRhdGVRdWVyeSB7XG4gICAgdGhpcy5fd2hlcmUgPSBjb25kaXRpb247XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgcmV0dXJuaW5nKC4uLmV4cHJlc3Npb25zOiBBbGlhc2FibGVFeHByZXNzaW9uW10pOiBVcGRhdGVRdWVyeSB7XG4gICAgdGhpcy5fcmV0dXJuaW5nID0gZXhwcmVzc2lvbnM7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHRhYmxlTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl90YWJsZU5hbWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNldENsYXVzZSgpOiBTZXRDbGF1c2VbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3NldDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgd2hlcmVDbGF1c2UoKTogRXhwcmVzc2lvbiB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl93aGVyZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcmV0dXJuaW5nQ2xhdXNlKCk6IEFsaWFzYWJsZUV4cHJlc3Npb25bXSB7XG4gICAgcmV0dXJuIHRoaXMuX3JldHVybmluZztcbiAgfVxuXG4gIHB1YmxpYyB0b1NRTChyZW5kZXJlcj86IFF1ZXJ5UmVuZGVyZXIpOiBzdHJpbmcge1xuICAgIGlmICghcmVuZGVyZXIpIHtcbiAgICAgIHJlbmRlcmVyID0gbmV3IEluZGVudGVkUXVlcnlSZW5kZXJlcigyKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuYWNjZXB0KHJlbmRlcmVyKTtcbiAgfVxuXG4gIHB1YmxpYyBhY2NlcHQ8VD4odmlzaXRvcjogU3FsVHJlZU5vZGVWaXNpdG9yPFQ+KTogVCB7XG4gICAgcmV0dXJuIHZpc2l0b3IudmlzaXRVcGRhdGVRdWVyeSh0aGlzKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { AliasableExpression } from "./Abstractions";
|
|
2
|
+
import { FunctionExpression } from "./FunctionExpression";
|
|
3
|
+
import { WindowSpecification } from "./WindowSpecification";
|
|
4
|
+
import { SqlTreeNodeVisitor } from "../visitor/SqlTreeNodeVisitor";
|
|
5
|
+
/**
|
|
6
|
+
* Represents a window function expression: function OVER (window_spec)
|
|
7
|
+
*
|
|
8
|
+
* Window functions perform calculations across a set of rows related to
|
|
9
|
+
* the current row, defined by the window specification.
|
|
10
|
+
*
|
|
11
|
+
* Currently supports:
|
|
12
|
+
* - PARTITION BY clause: divides rows into groups
|
|
13
|
+
* - ORDER BY clause: determines row ordering within each partition
|
|
14
|
+
*
|
|
15
|
+
* Not yet implemented:
|
|
16
|
+
* - Frame specifications (ROWS/RANGE/GROUPS BETWEEN ... AND ...)
|
|
17
|
+
* - Named windows (WINDOW clause at query level)
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```typescript
|
|
21
|
+
* // ROW_NUMBER with ORDER BY
|
|
22
|
+
* FN('ROW_NUMBER').over(ORDER_BY('created_at'))
|
|
23
|
+
* // ROW_NUMBER() OVER (ORDER BY created_at)
|
|
24
|
+
*
|
|
25
|
+
* // RANK with PARTITION BY and ORDER BY
|
|
26
|
+
* FN('RANK').over(PARTITION_BY('category'), ORDER_BY('price', DESC))
|
|
27
|
+
* // RANK() OVER (PARTITION BY category ORDER BY price DESC)
|
|
28
|
+
*
|
|
29
|
+
* // Running total with aggregate function
|
|
30
|
+
* SUM(COLUMN('amount')).over(PARTITION_BY('user_id'), ORDER_BY('date'))
|
|
31
|
+
* // SUM(amount) OVER (PARTITION BY user_id ORDER BY date)
|
|
32
|
+
*
|
|
33
|
+
* // Empty OVER clause (window over entire result set)
|
|
34
|
+
* FN('AVG', COLUMN('salary')).over()
|
|
35
|
+
* // AVG(salary) OVER ()
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
export declare class WindowExpression extends AliasableExpression {
|
|
39
|
+
private _function;
|
|
40
|
+
private _windowSpec;
|
|
41
|
+
constructor(fn: FunctionExpression, windowSpec: WindowSpecification);
|
|
42
|
+
/**
|
|
43
|
+
* Get the underlying function expression
|
|
44
|
+
*/
|
|
45
|
+
get function(): FunctionExpression;
|
|
46
|
+
/**
|
|
47
|
+
* Get the window specification (PARTITION BY, ORDER BY)
|
|
48
|
+
*/
|
|
49
|
+
get windowSpec(): WindowSpecification;
|
|
50
|
+
accept<T>(visitor: SqlTreeNodeVisitor<T>): T;
|
|
51
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WindowExpression = void 0;
|
|
4
|
+
const Abstractions_1 = require("./Abstractions");
|
|
5
|
+
/**
|
|
6
|
+
* Represents a window function expression: function OVER (window_spec)
|
|
7
|
+
*
|
|
8
|
+
* Window functions perform calculations across a set of rows related to
|
|
9
|
+
* the current row, defined by the window specification.
|
|
10
|
+
*
|
|
11
|
+
* Currently supports:
|
|
12
|
+
* - PARTITION BY clause: divides rows into groups
|
|
13
|
+
* - ORDER BY clause: determines row ordering within each partition
|
|
14
|
+
*
|
|
15
|
+
* Not yet implemented:
|
|
16
|
+
* - Frame specifications (ROWS/RANGE/GROUPS BETWEEN ... AND ...)
|
|
17
|
+
* - Named windows (WINDOW clause at query level)
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```typescript
|
|
21
|
+
* // ROW_NUMBER with ORDER BY
|
|
22
|
+
* FN('ROW_NUMBER').over(ORDER_BY('created_at'))
|
|
23
|
+
* // ROW_NUMBER() OVER (ORDER BY created_at)
|
|
24
|
+
*
|
|
25
|
+
* // RANK with PARTITION BY and ORDER BY
|
|
26
|
+
* FN('RANK').over(PARTITION_BY('category'), ORDER_BY('price', DESC))
|
|
27
|
+
* // RANK() OVER (PARTITION BY category ORDER BY price DESC)
|
|
28
|
+
*
|
|
29
|
+
* // Running total with aggregate function
|
|
30
|
+
* SUM(COLUMN('amount')).over(PARTITION_BY('user_id'), ORDER_BY('date'))
|
|
31
|
+
* // SUM(amount) OVER (PARTITION BY user_id ORDER BY date)
|
|
32
|
+
*
|
|
33
|
+
* // Empty OVER clause (window over entire result set)
|
|
34
|
+
* FN('AVG', COLUMN('salary')).over()
|
|
35
|
+
* // AVG(salary) OVER ()
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
class WindowExpression extends Abstractions_1.AliasableExpression {
|
|
39
|
+
constructor(fn, windowSpec) {
|
|
40
|
+
super();
|
|
41
|
+
this._function = fn;
|
|
42
|
+
this._windowSpec = windowSpec;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Get the underlying function expression
|
|
46
|
+
*/
|
|
47
|
+
get function() {
|
|
48
|
+
return this._function;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Get the window specification (PARTITION BY, ORDER BY)
|
|
52
|
+
*/
|
|
53
|
+
get windowSpec() {
|
|
54
|
+
return this._windowSpec;
|
|
55
|
+
}
|
|
56
|
+
accept(visitor) {
|
|
57
|
+
return visitor.visitWindowExpression(this);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
exports.WindowExpression = WindowExpression;
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV2luZG93RXhwcmVzc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hc3QvV2luZG93RXhwcmVzc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxpREFBcUQ7QUFLckQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBZ0NHO0FBQ0gsTUFBYSxnQkFBaUIsU0FBUSxrQ0FBbUI7SUFJdkQsWUFBWSxFQUFzQixFQUFFLFVBQStCO1FBQ2pFLEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUM7SUFDaEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxRQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLFVBQVU7UUFDbkIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFFTSxNQUFNLENBQUksT0FBOEI7UUFDN0MsT0FBTyxPQUFPLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0MsQ0FBQztDQUNGO0FBM0JELDRDQTJCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFsaWFzYWJsZUV4cHJlc3Npb24gfSBmcm9tIFwiLi9BYnN0cmFjdGlvbnNcIjtcbmltcG9ydCB7IEZ1bmN0aW9uRXhwcmVzc2lvbiB9IGZyb20gXCIuL0Z1bmN0aW9uRXhwcmVzc2lvblwiO1xuaW1wb3J0IHsgV2luZG93U3BlY2lmaWNhdGlvbiB9IGZyb20gXCIuL1dpbmRvd1NwZWNpZmljYXRpb25cIjtcbmltcG9ydCB7IFNxbFRyZWVOb2RlVmlzaXRvciB9IGZyb20gXCIuLi92aXNpdG9yL1NxbFRyZWVOb2RlVmlzaXRvclwiO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSB3aW5kb3cgZnVuY3Rpb24gZXhwcmVzc2lvbjogZnVuY3Rpb24gT1ZFUiAod2luZG93X3NwZWMpXG4gKlxuICogV2luZG93IGZ1bmN0aW9ucyBwZXJmb3JtIGNhbGN1bGF0aW9ucyBhY3Jvc3MgYSBzZXQgb2Ygcm93cyByZWxhdGVkIHRvXG4gKiB0aGUgY3VycmVudCByb3csIGRlZmluZWQgYnkgdGhlIHdpbmRvdyBzcGVjaWZpY2F0aW9uLlxuICpcbiAqIEN1cnJlbnRseSBzdXBwb3J0czpcbiAqIC0gUEFSVElUSU9OIEJZIGNsYXVzZTogZGl2aWRlcyByb3dzIGludG8gZ3JvdXBzXG4gKiAtIE9SREVSIEJZIGNsYXVzZTogZGV0ZXJtaW5lcyByb3cgb3JkZXJpbmcgd2l0aGluIGVhY2ggcGFydGl0aW9uXG4gKlxuICogTm90IHlldCBpbXBsZW1lbnRlZDpcbiAqIC0gRnJhbWUgc3BlY2lmaWNhdGlvbnMgKFJPV1MvUkFOR0UvR1JPVVBTIEJFVFdFRU4gLi4uIEFORCAuLi4pXG4gKiAtIE5hbWVkIHdpbmRvd3MgKFdJTkRPVyBjbGF1c2UgYXQgcXVlcnkgbGV2ZWwpXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIC8vIFJPV19OVU1CRVIgd2l0aCBPUkRFUiBCWVxuICogRk4oJ1JPV19OVU1CRVInKS5vdmVyKE9SREVSX0JZKCdjcmVhdGVkX2F0JykpXG4gKiAvLyBST1dfTlVNQkVSKCkgT1ZFUiAoT1JERVIgQlkgY3JlYXRlZF9hdClcbiAqXG4gKiAvLyBSQU5LIHdpdGggUEFSVElUSU9OIEJZIGFuZCBPUkRFUiBCWVxuICogRk4oJ1JBTksnKS5vdmVyKFBBUlRJVElPTl9CWSgnY2F0ZWdvcnknKSwgT1JERVJfQlkoJ3ByaWNlJywgREVTQykpXG4gKiAvLyBSQU5LKCkgT1ZFUiAoUEFSVElUSU9OIEJZIGNhdGVnb3J5IE9SREVSIEJZIHByaWNlIERFU0MpXG4gKlxuICogLy8gUnVubmluZyB0b3RhbCB3aXRoIGFnZ3JlZ2F0ZSBmdW5jdGlvblxuICogU1VNKENPTFVNTignYW1vdW50JykpLm92ZXIoUEFSVElUSU9OX0JZKCd1c2VyX2lkJyksIE9SREVSX0JZKCdkYXRlJykpXG4gKiAvLyBTVU0oYW1vdW50KSBPVkVSIChQQVJUSVRJT04gQlkgdXNlcl9pZCBPUkRFUiBCWSBkYXRlKVxuICpcbiAqIC8vIEVtcHR5IE9WRVIgY2xhdXNlICh3aW5kb3cgb3ZlciBlbnRpcmUgcmVzdWx0IHNldClcbiAqIEZOKCdBVkcnLCBDT0xVTU4oJ3NhbGFyeScpKS5vdmVyKClcbiAqIC8vIEFWRyhzYWxhcnkpIE9WRVIgKClcbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgV2luZG93RXhwcmVzc2lvbiBleHRlbmRzIEFsaWFzYWJsZUV4cHJlc3Npb24ge1xuICBwcml2YXRlIF9mdW5jdGlvbjogRnVuY3Rpb25FeHByZXNzaW9uO1xuICBwcml2YXRlIF93aW5kb3dTcGVjOiBXaW5kb3dTcGVjaWZpY2F0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKGZuOiBGdW5jdGlvbkV4cHJlc3Npb24sIHdpbmRvd1NwZWM6IFdpbmRvd1NwZWNpZmljYXRpb24pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuX2Z1bmN0aW9uID0gZm47XG4gICAgdGhpcy5fd2luZG93U3BlYyA9IHdpbmRvd1NwZWM7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSB1bmRlcmx5aW5nIGZ1bmN0aW9uIGV4cHJlc3Npb25cbiAgICovXG4gIHB1YmxpYyBnZXQgZnVuY3Rpb24oKTogRnVuY3Rpb25FeHByZXNzaW9uIHtcbiAgICByZXR1cm4gdGhpcy5fZnVuY3Rpb247XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSB3aW5kb3cgc3BlY2lmaWNhdGlvbiAoUEFSVElUSU9OIEJZLCBPUkRFUiBCWSlcbiAgICovXG4gIHB1YmxpYyBnZXQgd2luZG93U3BlYygpOiBXaW5kb3dTcGVjaWZpY2F0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93U3BlYztcbiAgfVxuXG4gIHB1YmxpYyBhY2NlcHQ8VD4odmlzaXRvcjogU3FsVHJlZU5vZGVWaXNpdG9yPFQ+KTogVCB7XG4gICAgcmV0dXJuIHZpc2l0b3IudmlzaXRXaW5kb3dFeHByZXNzaW9uKHRoaXMpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { Expression } from "./Abstractions";
|
|
2
|
+
import { OrderBy } from "./OrderBy";
|
|
3
|
+
/**
|
|
4
|
+
* Represents a window specification for window functions.
|
|
5
|
+
*
|
|
6
|
+
* Currently supports:
|
|
7
|
+
* - PARTITION BY clause
|
|
8
|
+
* - ORDER BY clause
|
|
9
|
+
*
|
|
10
|
+
* Not yet implemented:
|
|
11
|
+
* - Frame specifications (ROWS/RANGE/GROUPS BETWEEN ... AND ...)
|
|
12
|
+
* - Named windows (WINDOW clause at query level)
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```typescript
|
|
16
|
+
* // Used via FunctionExpression.over()
|
|
17
|
+
* FN('ROW_NUMBER').over(ORDER_BY('created_at'))
|
|
18
|
+
* FN('RANK').over(PARTITION_BY('category'), ORDER_BY('price', DESC))
|
|
19
|
+
* SUM(COLUMN('amount')).over(PARTITION_BY('user_id'))
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
export declare class WindowSpecification {
|
|
23
|
+
private _partitionBy;
|
|
24
|
+
private _orderBy;
|
|
25
|
+
constructor();
|
|
26
|
+
/**
|
|
27
|
+
* Set the PARTITION BY columns
|
|
28
|
+
*/
|
|
29
|
+
setPartitionBy(columns: Expression[]): void;
|
|
30
|
+
/**
|
|
31
|
+
* Add ORDER BY clauses
|
|
32
|
+
*/
|
|
33
|
+
setOrderBy(orderBy: OrderBy[]): void;
|
|
34
|
+
/**
|
|
35
|
+
* Get the PARTITION BY columns
|
|
36
|
+
*/
|
|
37
|
+
get partitionByColumns(): Expression[];
|
|
38
|
+
/**
|
|
39
|
+
* Get the ORDER BY clauses
|
|
40
|
+
*/
|
|
41
|
+
get orderByColumns(): OrderBy[];
|
|
42
|
+
/**
|
|
43
|
+
* Check if this window specification is empty (no PARTITION BY or ORDER BY)
|
|
44
|
+
*/
|
|
45
|
+
get isEmpty(): boolean;
|
|
46
|
+
}
|