@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.
Files changed (68) hide show
  1. package/README.md +289 -1
  2. package/dist/ast/AlterTableQuery.d.ts +32 -0
  3. package/dist/ast/AlterTableQuery.js +60 -0
  4. package/dist/ast/BetweenExpression.d.ts +10 -0
  5. package/dist/ast/BetweenExpression.js +18 -0
  6. package/dist/ast/CastExpression.d.ts +13 -0
  7. package/dist/ast/CastExpression.js +25 -0
  8. package/dist/ast/CollateExpression.d.ts +18 -0
  9. package/dist/ast/CollateExpression.js +30 -0
  10. package/dist/ast/CreateIndexQuery.d.ts +25 -0
  11. package/dist/ast/CreateIndexQuery.js +64 -0
  12. package/dist/ast/CreateTableQuery.d.ts +57 -0
  13. package/dist/ast/CreateTableQuery.js +79 -0
  14. package/dist/ast/CreateViewQuery.d.ts +34 -0
  15. package/dist/ast/CreateViewQuery.js +61 -0
  16. package/dist/ast/CreateVirtualTableQuery.d.ts +32 -0
  17. package/dist/ast/CreateVirtualTableQuery.js +74 -0
  18. package/dist/ast/DeleteQuery.d.ts +17 -0
  19. package/dist/ast/DeleteQuery.js +43 -0
  20. package/dist/ast/DropIndexQuery.d.ts +14 -0
  21. package/dist/ast/DropIndexQuery.js +35 -0
  22. package/dist/ast/DropTableQuery.d.ts +14 -0
  23. package/dist/ast/DropTableQuery.js +35 -0
  24. package/dist/ast/DropViewQuery.d.ts +11 -0
  25. package/dist/ast/DropViewQuery.js +24 -0
  26. package/dist/ast/FunctionExpression.d.ts +21 -0
  27. package/dist/ast/FunctionExpression.js +40 -1
  28. package/dist/ast/FunctionName.d.ts +1 -1
  29. package/dist/ast/FunctionName.js +1 -1
  30. package/dist/ast/InsertQuery.d.ts +24 -1
  31. package/dist/ast/InsertQuery.js +49 -1
  32. package/dist/ast/Operator.d.ts +2 -0
  33. package/dist/ast/Operator.js +3 -1
  34. package/dist/ast/SelectQuery.d.ts +4 -0
  35. package/dist/ast/SelectQuery.js +11 -1
  36. package/dist/ast/SubqueryExpression.d.ts +18 -0
  37. package/dist/ast/SubqueryExpression.js +27 -0
  38. package/dist/ast/UpdateQuery.d.ts +24 -0
  39. package/dist/ast/UpdateQuery.js +51 -0
  40. package/dist/ast/WindowExpression.d.ts +51 -0
  41. package/dist/ast/WindowExpression.js +61 -0
  42. package/dist/ast/WindowSpecification.d.ts +46 -0
  43. package/dist/ast/WindowSpecification.js +60 -0
  44. package/dist/builder/QueryBuilder.d.ts +20 -0
  45. package/dist/builder/QueryBuilder.js +41 -1
  46. package/dist/builder/Shorthand.d.ts +51 -0
  47. package/dist/builder/Shorthand.js +125 -1
  48. package/dist/index.d.ts +17 -1
  49. package/dist/index.js +59 -3
  50. package/dist/renderer/CompactQueryRenderer.d.ts +34 -2
  51. package/dist/renderer/CompactQueryRenderer.js +272 -2
  52. package/dist/renderer/IndentedQueryRenderer.d.ts +34 -2
  53. package/dist/renderer/IndentedQueryRenderer.js +289 -3
  54. package/dist/renderer/QueryRenderer.d.ts +11 -1
  55. package/dist/renderer/QueryRenderer.js +1 -1
  56. package/dist/validate/CommonQueryValidator.d.ts +31 -1
  57. package/dist/validate/CommonQueryValidator.js +253 -4
  58. package/dist/validate/QueryValidator.d.ts +10 -1
  59. package/dist/validate/QueryValidator.js +1 -1
  60. package/dist/validate/SQLiteQueryValidator.d.ts +16 -1
  61. package/dist/validate/SQLiteQueryValidator.js +32 -3
  62. package/dist/visitor/ParamCollector.d.ts +30 -0
  63. package/dist/visitor/ParamCollector.js +109 -2
  64. package/dist/visitor/QueryIdentityTransformer.d.ts +30 -0
  65. package/dist/visitor/QueryIdentityTransformer.js +217 -2
  66. package/dist/visitor/SqlTreeNodeVisitor.d.ts +30 -0
  67. package/dist/visitor/SqlTreeNodeVisitor.js +1 -1
  68. package/package.json +4 -1
@@ -0,0 +1,57 @@
1
+ import { QueryRenderer } from "../renderer/QueryRenderer";
2
+ import { SqlTreeNodeVisitor } from "../visitor/SqlTreeNodeVisitor";
3
+ import { Expression, SqlTreeNode } from "./Abstractions";
4
+ export type ColumnType = 'INTEGER' | 'TEXT' | 'REAL' | 'BLOB' | 'NUMERIC';
5
+ export interface ForeignKeyReference {
6
+ table: string;
7
+ column: string;
8
+ onDelete?: 'CASCADE' | 'SET NULL' | 'SET DEFAULT' | 'RESTRICT' | 'NO ACTION';
9
+ onUpdate?: 'CASCADE' | 'SET NULL' | 'SET DEFAULT' | 'RESTRICT' | 'NO ACTION';
10
+ }
11
+ export interface ColumnConstraints {
12
+ primaryKey?: boolean;
13
+ autoIncrement?: boolean;
14
+ notNull?: boolean;
15
+ unique?: boolean;
16
+ default?: string | number | null;
17
+ check?: Expression;
18
+ references?: ForeignKeyReference;
19
+ }
20
+ export interface ColumnDefinition {
21
+ name: string;
22
+ type: ColumnType;
23
+ constraints: ColumnConstraints;
24
+ }
25
+ export interface TableConstraint {
26
+ type: 'PRIMARY KEY' | 'UNIQUE' | 'FOREIGN KEY' | 'CHECK';
27
+ columns?: string[];
28
+ references?: ForeignKeyReference;
29
+ check?: Expression;
30
+ name?: string;
31
+ }
32
+ export declare class CreateTableQuery implements SqlTreeNode {
33
+ private _tableName;
34
+ private _columns;
35
+ private _tableConstraints;
36
+ private _ifNotExists;
37
+ private _withoutRowid;
38
+ private _strict;
39
+ constructor(tableName: string);
40
+ static create(tableName: string): CreateTableQuery;
41
+ column(name: string, type: ColumnType, constraints?: ColumnConstraints): CreateTableQuery;
42
+ primaryKey(...columns: string[]): CreateTableQuery;
43
+ unique(...columns: string[]): CreateTableQuery;
44
+ foreignKey(columns: string[], references: ForeignKeyReference): CreateTableQuery;
45
+ check(expression: Expression, name?: string): CreateTableQuery;
46
+ ifNotExists(): CreateTableQuery;
47
+ withoutRowid(): CreateTableQuery;
48
+ strict(): CreateTableQuery;
49
+ get tableName(): string;
50
+ get columns(): ColumnDefinition[];
51
+ get tableConstraints(): TableConstraint[];
52
+ get hasIfNotExists(): boolean;
53
+ get hasWithoutRowid(): boolean;
54
+ get isStrict(): boolean;
55
+ toSQL(renderer?: QueryRenderer): string;
56
+ accept<T>(visitor: SqlTreeNodeVisitor<T>): T;
57
+ }
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CreateTableQuery = void 0;
4
+ const IndentedQueryRenderer_1 = require("../renderer/IndentedQueryRenderer");
5
+ // Represents a CREATE TABLE statement
6
+ class CreateTableQuery {
7
+ constructor(tableName) {
8
+ this._columns = [];
9
+ this._tableConstraints = [];
10
+ this._ifNotExists = false;
11
+ this._withoutRowid = false;
12
+ this._strict = false;
13
+ this._tableName = tableName;
14
+ }
15
+ static create(tableName) {
16
+ return new CreateTableQuery(tableName);
17
+ }
18
+ column(name, type, constraints = {}) {
19
+ this._columns.push({ name, type, constraints });
20
+ return this;
21
+ }
22
+ primaryKey(...columns) {
23
+ this._tableConstraints.push({ type: 'PRIMARY KEY', columns });
24
+ return this;
25
+ }
26
+ unique(...columns) {
27
+ this._tableConstraints.push({ type: 'UNIQUE', columns });
28
+ return this;
29
+ }
30
+ foreignKey(columns, references) {
31
+ this._tableConstraints.push({ type: 'FOREIGN KEY', columns, references });
32
+ return this;
33
+ }
34
+ check(expression, name) {
35
+ this._tableConstraints.push({ type: 'CHECK', check: expression, name });
36
+ return this;
37
+ }
38
+ ifNotExists() {
39
+ this._ifNotExists = true;
40
+ return this;
41
+ }
42
+ withoutRowid() {
43
+ this._withoutRowid = true;
44
+ return this;
45
+ }
46
+ strict() {
47
+ this._strict = true;
48
+ return this;
49
+ }
50
+ get tableName() {
51
+ return this._tableName;
52
+ }
53
+ get columns() {
54
+ return this._columns;
55
+ }
56
+ get tableConstraints() {
57
+ return this._tableConstraints;
58
+ }
59
+ get hasIfNotExists() {
60
+ return this._ifNotExists;
61
+ }
62
+ get hasWithoutRowid() {
63
+ return this._withoutRowid;
64
+ }
65
+ get isStrict() {
66
+ return this._strict;
67
+ }
68
+ toSQL(renderer) {
69
+ if (!renderer) {
70
+ renderer = new IndentedQueryRenderer_1.IndentedQueryRenderer(2);
71
+ }
72
+ return this.accept(renderer);
73
+ }
74
+ accept(visitor) {
75
+ return visitor.visitCreateTableQuery(this);
76
+ }
77
+ }
78
+ exports.CreateTableQuery = CreateTableQuery;
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3JlYXRlVGFibGVRdWVyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hc3QvQ3JlYXRlVGFibGVRdWVyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2RUFBMEU7QUEyQzFFLHNDQUFzQztBQUN0QyxNQUFhLGdCQUFnQjtJQVMzQixZQUFZLFNBQWlCO1FBTnJCLGFBQVEsR0FBdUIsRUFBRSxDQUFDO1FBQ2xDLHNCQUFpQixHQUFzQixFQUFFLENBQUM7UUFDMUMsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFDOUIsa0JBQWEsR0FBWSxLQUFLLENBQUM7UUFDL0IsWUFBTyxHQUFZLEtBQUssQ0FBQztRQUcvQixJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztJQUM5QixDQUFDO0lBRU0sTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFpQjtRQUNwQyxPQUFPLElBQUksZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxJQUFZLEVBQUUsSUFBZ0IsRUFBRSxjQUFpQyxFQUFFO1FBQy9FLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQ2hELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLFVBQVUsQ0FBQyxHQUFHLE9BQWlCO1FBQ3BDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDOUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0sTUFBTSxDQUFDLEdBQUcsT0FBaUI7UUFDaEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUN6RCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxVQUFVLENBQUMsT0FBaUIsRUFBRSxVQUErQjtRQUNsRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUMxRSxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxLQUFLLENBQUMsVUFBc0IsRUFBRSxJQUFhO1FBQ2hELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN4RSxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLFlBQVk7UUFDakIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFDMUIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0sTUFBTTtRQUNYLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELElBQVcsU0FBUztRQUNsQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVELElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQVcsZ0JBQWdCO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDO0lBQ2hDLENBQUM7SUFFRCxJQUFXLGNBQWM7UUFDdkIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFXLGVBQWU7UUFDeEIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFFRCxJQUFXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFFTSxLQUFLLENBQUMsUUFBd0I7UUFDbkMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2QsUUFBUSxHQUFHLElBQUksNkNBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUMsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRU0sTUFBTSxDQUFJLE9BQThCO1FBQzdDLE9BQU8sT0FBTyxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdDLENBQUM7Q0FDRjtBQTNGRCw0Q0EyRkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmRlbnRlZFF1ZXJ5UmVuZGVyZXIgfSBmcm9tIFwiLi4vcmVuZGVyZXIvSW5kZW50ZWRRdWVyeVJlbmRlcmVyXCI7XG5pbXBvcnQgeyBRdWVyeVJlbmRlcmVyIH0gZnJvbSBcIi4uL3JlbmRlcmVyL1F1ZXJ5UmVuZGVyZXJcIjtcbmltcG9ydCB7IFNxbFRyZWVOb2RlVmlzaXRvciB9IGZyb20gXCIuLi92aXNpdG9yL1NxbFRyZWVOb2RlVmlzaXRvclwiO1xuaW1wb3J0IHsgRXhwcmVzc2lvbiwgU3FsVHJlZU5vZGUgfSBmcm9tIFwiLi9BYnN0cmFjdGlvbnNcIjtcblxuLy8gQ29sdW1uIHR5cGUgZm9yIFNRTGl0ZVxuZXhwb3J0IHR5cGUgQ29sdW1uVHlwZSA9ICdJTlRFR0VSJyB8ICdURVhUJyB8ICdSRUFMJyB8ICdCTE9CJyB8ICdOVU1FUklDJztcblxuLy8gRm9yZWlnbiBrZXkgcmVmZXJlbmNlIGNvbmZpZ3VyYXRpb25cbmV4cG9ydCBpbnRlcmZhY2UgRm9yZWlnbktleVJlZmVyZW5jZSB7XG4gIHRhYmxlOiBzdHJpbmc7XG4gIGNvbHVtbjogc3RyaW5nO1xuICBvbkRlbGV0ZT86ICdDQVNDQURFJyB8ICdTRVQgTlVMTCcgfCAnU0VUIERFRkFVTFQnIHwgJ1JFU1RSSUNUJyB8ICdOTyBBQ1RJT04nO1xuICBvblVwZGF0ZT86ICdDQVNDQURFJyB8ICdTRVQgTlVMTCcgfCAnU0VUIERFRkFVTFQnIHwgJ1JFU1RSSUNUJyB8ICdOTyBBQ1RJT04nO1xufVxuXG4vLyBDb2x1bW4gY29uc3RyYWludCBvcHRpb25zXG5leHBvcnQgaW50ZXJmYWNlIENvbHVtbkNvbnN0cmFpbnRzIHtcbiAgcHJpbWFyeUtleT86IGJvb2xlYW47XG4gIGF1dG9JbmNyZW1lbnQ/OiBib29sZWFuO1xuICBub3ROdWxsPzogYm9vbGVhbjtcbiAgdW5pcXVlPzogYm9vbGVhbjtcbiAgZGVmYXVsdD86IHN0cmluZyB8IG51bWJlciB8IG51bGw7XG4gIGNoZWNrPzogRXhwcmVzc2lvbjtcbiAgcmVmZXJlbmNlcz86IEZvcmVpZ25LZXlSZWZlcmVuY2U7XG59XG5cbi8vIENvbHVtbiBkZWZpbml0aW9uXG5leHBvcnQgaW50ZXJmYWNlIENvbHVtbkRlZmluaXRpb24ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHR5cGU6IENvbHVtblR5cGU7XG4gIGNvbnN0cmFpbnRzOiBDb2x1bW5Db25zdHJhaW50cztcbn1cblxuLy8gVGFibGUtbGV2ZWwgY29uc3RyYWludCBmb3IgY29tcG9zaXRlIGtleXNcbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVDb25zdHJhaW50IHtcbiAgdHlwZTogJ1BSSU1BUlkgS0VZJyB8ICdVTklRVUUnIHwgJ0ZPUkVJR04gS0VZJyB8ICdDSEVDSyc7XG4gIGNvbHVtbnM/OiBzdHJpbmdbXTtcbiAgcmVmZXJlbmNlcz86IEZvcmVpZ25LZXlSZWZlcmVuY2U7XG4gIGNoZWNrPzogRXhwcmVzc2lvbjtcbiAgbmFtZT86IHN0cmluZztcbn1cblxuLy8gUmVwcmVzZW50cyBhIENSRUFURSBUQUJMRSBzdGF0ZW1lbnRcbmV4cG9ydCBjbGFzcyBDcmVhdGVUYWJsZVF1ZXJ5IGltcGxlbWVudHMgU3FsVHJlZU5vZGUge1xuXG4gIHByaXZhdGUgX3RhYmxlTmFtZTogc3RyaW5nO1xuICBwcml2YXRlIF9jb2x1bW5zOiBDb2x1bW5EZWZpbml0aW9uW10gPSBbXTtcbiAgcHJpdmF0ZSBfdGFibGVDb25zdHJhaW50czogVGFibGVDb25zdHJhaW50W10gPSBbXTtcbiAgcHJpdmF0ZSBfaWZOb3RFeGlzdHM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfd2l0aG91dFJvd2lkOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX3N0cmljdDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHRhYmxlTmFtZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fdGFibGVOYW1lID0gdGFibGVOYW1lO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBjcmVhdGUodGFibGVOYW1lOiBzdHJpbmcpOiBDcmVhdGVUYWJsZVF1ZXJ5IHtcbiAgICByZXR1cm4gbmV3IENyZWF0ZVRhYmxlUXVlcnkodGFibGVOYW1lKTtcbiAgfVxuXG4gIHB1YmxpYyBjb2x1bW4obmFtZTogc3RyaW5nLCB0eXBlOiBDb2x1bW5UeXBlLCBjb25zdHJhaW50czogQ29sdW1uQ29uc3RyYWludHMgPSB7fSk6IENyZWF0ZVRhYmxlUXVlcnkge1xuICAgIHRoaXMuX2NvbHVtbnMucHVzaCh7IG5hbWUsIHR5cGUsIGNvbnN0cmFpbnRzIH0pO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIHByaW1hcnlLZXkoLi4uY29sdW1uczogc3RyaW5nW10pOiBDcmVhdGVUYWJsZVF1ZXJ5IHtcbiAgICB0aGlzLl90YWJsZUNvbnN0cmFpbnRzLnB1c2goeyB0eXBlOiAnUFJJTUFSWSBLRVknLCBjb2x1bW5zIH0pO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIHVuaXF1ZSguLi5jb2x1bW5zOiBzdHJpbmdbXSk6IENyZWF0ZVRhYmxlUXVlcnkge1xuICAgIHRoaXMuX3RhYmxlQ29uc3RyYWludHMucHVzaCh7IHR5cGU6ICdVTklRVUUnLCBjb2x1bW5zIH0pO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGZvcmVpZ25LZXkoY29sdW1uczogc3RyaW5nW10sIHJlZmVyZW5jZXM6IEZvcmVpZ25LZXlSZWZlcmVuY2UpOiBDcmVhdGVUYWJsZVF1ZXJ5IHtcbiAgICB0aGlzLl90YWJsZUNvbnN0cmFpbnRzLnB1c2goeyB0eXBlOiAnRk9SRUlHTiBLRVknLCBjb2x1bW5zLCByZWZlcmVuY2VzIH0pO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGNoZWNrKGV4cHJlc3Npb246IEV4cHJlc3Npb24sIG5hbWU/OiBzdHJpbmcpOiBDcmVhdGVUYWJsZVF1ZXJ5IHtcbiAgICB0aGlzLl90YWJsZUNvbnN0cmFpbnRzLnB1c2goeyB0eXBlOiAnQ0hFQ0snLCBjaGVjazogZXhwcmVzc2lvbiwgbmFtZSB9KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBpZk5vdEV4aXN0cygpOiBDcmVhdGVUYWJsZVF1ZXJ5IHtcbiAgICB0aGlzLl9pZk5vdEV4aXN0cyA9IHRydWU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgd2l0aG91dFJvd2lkKCk6IENyZWF0ZVRhYmxlUXVlcnkge1xuICAgIHRoaXMuX3dpdGhvdXRSb3dpZCA9IHRydWU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgc3RyaWN0KCk6IENyZWF0ZVRhYmxlUXVlcnkge1xuICAgIHRoaXMuX3N0cmljdCA9IHRydWU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHRhYmxlTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl90YWJsZU5hbWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNvbHVtbnMoKTogQ29sdW1uRGVmaW5pdGlvbltdIHtcbiAgICByZXR1cm4gdGhpcy5fY29sdW1ucztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdGFibGVDb25zdHJhaW50cygpOiBUYWJsZUNvbnN0cmFpbnRbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3RhYmxlQ29uc3RyYWludHM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhhc0lmTm90RXhpc3RzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pZk5vdEV4aXN0cztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaGFzV2l0aG91dFJvd2lkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl93aXRob3V0Um93aWQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzU3RyaWN0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9zdHJpY3Q7XG4gIH1cblxuICBwdWJsaWMgdG9TUUwocmVuZGVyZXI/OiBRdWVyeVJlbmRlcmVyKTogc3RyaW5nIHtcbiAgICBpZiAoIXJlbmRlcmVyKSB7XG4gICAgICByZW5kZXJlciA9IG5ldyBJbmRlbnRlZFF1ZXJ5UmVuZGVyZXIoMik7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmFjY2VwdChyZW5kZXJlcik7XG4gIH1cblxuICBwdWJsaWMgYWNjZXB0PFQ+KHZpc2l0b3I6IFNxbFRyZWVOb2RlVmlzaXRvcjxUPik6IFQge1xuICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q3JlYXRlVGFibGVRdWVyeSh0aGlzKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,34 @@
1
+ import { SqlTreeNode } from "./Abstractions";
2
+ import { SelectQuery } from "./SelectQuery";
3
+ import { SqlTreeNodeVisitor } from "../visitor/SqlTreeNodeVisitor";
4
+ export declare class CreateViewQuery implements SqlTreeNode {
5
+ private _viewName;
6
+ private _columns;
7
+ private _selectQuery;
8
+ private _ifNotExists;
9
+ private _isTemporary;
10
+ constructor(viewName: string);
11
+ get viewName(): string;
12
+ get columns(): string[];
13
+ get selectQuery(): SelectQuery | null;
14
+ get hasIfNotExists(): boolean;
15
+ get isTemporary(): boolean;
16
+ /**
17
+ * Specify column names for the view (optional).
18
+ * If not specified, column names are derived from the SELECT query.
19
+ */
20
+ withColumns(...columns: string[]): CreateViewQuery;
21
+ /**
22
+ * Define the view's SELECT query.
23
+ */
24
+ as(query: SelectQuery): CreateViewQuery;
25
+ /**
26
+ * Add IF NOT EXISTS modifier.
27
+ */
28
+ ifNotExists(): CreateViewQuery;
29
+ /**
30
+ * Create a temporary view.
31
+ */
32
+ temporary(): CreateViewQuery;
33
+ accept<T>(visitor: SqlTreeNodeVisitor<T>): T;
34
+ }
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CreateViewQuery = void 0;
4
+ class CreateViewQuery {
5
+ constructor(viewName) {
6
+ this._columns = [];
7
+ this._selectQuery = null;
8
+ this._ifNotExists = false;
9
+ this._isTemporary = false;
10
+ this._viewName = viewName;
11
+ }
12
+ get viewName() {
13
+ return this._viewName;
14
+ }
15
+ get columns() {
16
+ return this._columns;
17
+ }
18
+ get selectQuery() {
19
+ return this._selectQuery;
20
+ }
21
+ get hasIfNotExists() {
22
+ return this._ifNotExists;
23
+ }
24
+ get isTemporary() {
25
+ return this._isTemporary;
26
+ }
27
+ /**
28
+ * Specify column names for the view (optional).
29
+ * If not specified, column names are derived from the SELECT query.
30
+ */
31
+ withColumns(...columns) {
32
+ this._columns = columns;
33
+ return this;
34
+ }
35
+ /**
36
+ * Define the view's SELECT query.
37
+ */
38
+ as(query) {
39
+ this._selectQuery = query;
40
+ return this;
41
+ }
42
+ /**
43
+ * Add IF NOT EXISTS modifier.
44
+ */
45
+ ifNotExists() {
46
+ this._ifNotExists = true;
47
+ return this;
48
+ }
49
+ /**
50
+ * Create a temporary view.
51
+ */
52
+ temporary() {
53
+ this._isTemporary = true;
54
+ return this;
55
+ }
56
+ accept(visitor) {
57
+ return visitor.visitCreateViewQuery(this);
58
+ }
59
+ }
60
+ exports.CreateViewQuery = CreateViewQuery;
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3JlYXRlVmlld1F1ZXJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FzdC9DcmVhdGVWaWV3UXVlcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBSUEsTUFBYSxlQUFlO0lBTzFCLFlBQVksUUFBZ0I7UUFMcEIsYUFBUSxHQUFhLEVBQUUsQ0FBQztRQUN4QixpQkFBWSxHQUF1QixJQUFJLENBQUM7UUFDeEMsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFDOUIsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFHcEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQVcsUUFBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQVcsV0FBVztRQUNwQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQVcsY0FBYztRQUN2QixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQVcsV0FBVztRQUNwQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUVEOzs7T0FHRztJQUNJLFdBQVcsQ0FBQyxHQUFHLE9BQWlCO1FBQ3JDLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1FBQ3hCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOztPQUVHO0lBQ0ksRUFBRSxDQUFDLEtBQWtCO1FBQzFCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQzFCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOztPQUVHO0lBQ0ksV0FBVztRQUNoQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUN6QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7T0FFRztJQUNJLFNBQVM7UUFDZCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUN6QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxNQUFNLENBQUksT0FBOEI7UUFDN0MsT0FBTyxPQUFPLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUMsQ0FBQztDQUNGO0FBbkVELDBDQW1FQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNxbFRyZWVOb2RlIH0gZnJvbSBcIi4vQWJzdHJhY3Rpb25zXCI7XG5pbXBvcnQgeyBTZWxlY3RRdWVyeSB9IGZyb20gXCIuL1NlbGVjdFF1ZXJ5XCI7XG5pbXBvcnQgeyBTcWxUcmVlTm9kZVZpc2l0b3IgfSBmcm9tIFwiLi4vdmlzaXRvci9TcWxUcmVlTm9kZVZpc2l0b3JcIjtcblxuZXhwb3J0IGNsYXNzIENyZWF0ZVZpZXdRdWVyeSBpbXBsZW1lbnRzIFNxbFRyZWVOb2RlIHtcbiAgcHJpdmF0ZSBfdmlld05hbWU6IHN0cmluZztcbiAgcHJpdmF0ZSBfY29sdW1uczogc3RyaW5nW10gPSBbXTtcbiAgcHJpdmF0ZSBfc2VsZWN0UXVlcnk6IFNlbGVjdFF1ZXJ5IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX2lmTm90RXhpc3RzOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2lzVGVtcG9yYXJ5OiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3Iodmlld05hbWU6IHN0cmluZykge1xuICAgIHRoaXMuX3ZpZXdOYW1lID0gdmlld05hbWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHZpZXdOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3ZpZXdOYW1lO1xuICB9XG5cbiAgcHVibGljIGdldCBjb2x1bW5zKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5fY29sdW1ucztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2VsZWN0UXVlcnkoKTogU2VsZWN0UXVlcnkgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0UXVlcnk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhhc0lmTm90RXhpc3RzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pZk5vdEV4aXN0cztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNUZW1wb3JhcnkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzVGVtcG9yYXJ5O1xuICB9XG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgY29sdW1uIG5hbWVzIGZvciB0aGUgdmlldyAob3B0aW9uYWwpLlxuICAgKiBJZiBub3Qgc3BlY2lmaWVkLCBjb2x1bW4gbmFtZXMgYXJlIGRlcml2ZWQgZnJvbSB0aGUgU0VMRUNUIHF1ZXJ5LlxuICAgKi9cbiAgcHVibGljIHdpdGhDb2x1bW5zKC4uLmNvbHVtbnM6IHN0cmluZ1tdKTogQ3JlYXRlVmlld1F1ZXJ5IHtcbiAgICB0aGlzLl9jb2x1bW5zID0gY29sdW1ucztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZpbmUgdGhlIHZpZXcncyBTRUxFQ1QgcXVlcnkuXG4gICAqL1xuICBwdWJsaWMgYXMocXVlcnk6IFNlbGVjdFF1ZXJ5KTogQ3JlYXRlVmlld1F1ZXJ5IHtcbiAgICB0aGlzLl9zZWxlY3RRdWVyeSA9IHF1ZXJ5O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBJRiBOT1QgRVhJU1RTIG1vZGlmaWVyLlxuICAgKi9cbiAgcHVibGljIGlmTm90RXhpc3RzKCk6IENyZWF0ZVZpZXdRdWVyeSB7XG4gICAgdGhpcy5faWZOb3RFeGlzdHMgPSB0cnVlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIHRlbXBvcmFyeSB2aWV3LlxuICAgKi9cbiAgcHVibGljIHRlbXBvcmFyeSgpOiBDcmVhdGVWaWV3UXVlcnkge1xuICAgIHRoaXMuX2lzVGVtcG9yYXJ5ID0gdHJ1ZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBhY2NlcHQ8VD4odmlzaXRvcjogU3FsVHJlZU5vZGVWaXNpdG9yPFQ+KTogVCB7XG4gICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDcmVhdGVWaWV3UXVlcnkodGhpcyk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,32 @@
1
+ import { QueryRenderer } from "../renderer/QueryRenderer";
2
+ import { SqlTreeNodeVisitor } from "../visitor/SqlTreeNodeVisitor";
3
+ import { SqlTreeNode } from "./Abstractions";
4
+ export type VirtualTableModule = 'fts5';
5
+ export interface FTS5Options {
6
+ tokenize?: string;
7
+ content?: string;
8
+ contentRowid?: string;
9
+ prefix?: string;
10
+ }
11
+ export declare class CreateVirtualTableQuery implements SqlTreeNode {
12
+ private _tableName;
13
+ private _module;
14
+ private _columns;
15
+ private _options;
16
+ private _ifNotExists;
17
+ constructor(tableName: string, module: VirtualTableModule);
18
+ static create(tableName: string, module: VirtualTableModule): CreateVirtualTableQuery;
19
+ column(name: string): CreateVirtualTableQuery;
20
+ tokenize(tokenizer: string): CreateVirtualTableQuery;
21
+ content(tableName: string): CreateVirtualTableQuery;
22
+ contentRowid(columnName: string): CreateVirtualTableQuery;
23
+ prefix(lengths: string): CreateVirtualTableQuery;
24
+ ifNotExists(): CreateVirtualTableQuery;
25
+ get tableName(): string;
26
+ get module(): VirtualTableModule;
27
+ get columns(): string[];
28
+ get options(): FTS5Options;
29
+ get hasIfNotExists(): boolean;
30
+ toSQL(renderer?: QueryRenderer): string;
31
+ accept<T>(visitor: SqlTreeNodeVisitor<T>): T;
32
+ }
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CreateVirtualTableQuery = void 0;
4
+ const IndentedQueryRenderer_1 = require("../renderer/IndentedQueryRenderer");
5
+ // Represents a CREATE VIRTUAL TABLE statement
6
+ class CreateVirtualTableQuery {
7
+ constructor(tableName, module) {
8
+ this._columns = [];
9
+ this._options = {};
10
+ this._ifNotExists = false;
11
+ this._tableName = tableName;
12
+ this._module = module;
13
+ }
14
+ static create(tableName, module) {
15
+ return new CreateVirtualTableQuery(tableName, module);
16
+ }
17
+ // Add a column to the virtual table
18
+ column(name) {
19
+ this._columns.push(name);
20
+ return this;
21
+ }
22
+ // Set the tokenizer for FTS5
23
+ tokenize(tokenizer) {
24
+ this._options.tokenize = tokenizer;
25
+ return this;
26
+ }
27
+ // Set the external content table for FTS5
28
+ content(tableName) {
29
+ this._options.content = tableName;
30
+ return this;
31
+ }
32
+ // Set the content_rowid column for external content FTS5 tables
33
+ contentRowid(columnName) {
34
+ this._options.contentRowid = columnName;
35
+ return this;
36
+ }
37
+ // Set prefix index lengths for FTS5
38
+ prefix(lengths) {
39
+ this._options.prefix = lengths;
40
+ return this;
41
+ }
42
+ // Add IF NOT EXISTS clause
43
+ ifNotExists() {
44
+ this._ifNotExists = true;
45
+ return this;
46
+ }
47
+ // Getters
48
+ get tableName() {
49
+ return this._tableName;
50
+ }
51
+ get module() {
52
+ return this._module;
53
+ }
54
+ get columns() {
55
+ return this._columns;
56
+ }
57
+ get options() {
58
+ return this._options;
59
+ }
60
+ get hasIfNotExists() {
61
+ return this._ifNotExists;
62
+ }
63
+ toSQL(renderer) {
64
+ if (!renderer) {
65
+ renderer = new IndentedQueryRenderer_1.IndentedQueryRenderer(2);
66
+ }
67
+ return this.accept(renderer);
68
+ }
69
+ accept(visitor) {
70
+ return visitor.visitCreateVirtualTableQuery(this);
71
+ }
72
+ }
73
+ exports.CreateVirtualTableQuery = CreateVirtualTableQuery;
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3JlYXRlVmlydHVhbFRhYmxlUXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXN0L0NyZWF0ZVZpcnR1YWxUYWJsZVF1ZXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZFQUEwRTtBQWdCMUUsOENBQThDO0FBQzlDLE1BQWEsdUJBQXVCO0lBUWxDLFlBQVksU0FBaUIsRUFBRSxNQUEwQjtRQUpqRCxhQUFRLEdBQWEsRUFBRSxDQUFDO1FBQ3hCLGFBQVEsR0FBZ0IsRUFBRSxDQUFDO1FBQzNCLGlCQUFZLEdBQVksS0FBSyxDQUFDO1FBR3BDLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO1FBQzVCLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO0lBQ3hCLENBQUM7SUFFTSxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQWlCLEVBQUUsTUFBMEI7UUFDaEUsT0FBTyxJQUFJLHVCQUF1QixDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsb0NBQW9DO0lBQzdCLE1BQU0sQ0FBQyxJQUFZO1FBQ3hCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELDZCQUE2QjtJQUN0QixRQUFRLENBQUMsU0FBaUI7UUFDL0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDO1FBQ25DLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELDBDQUEwQztJQUNuQyxPQUFPLENBQUMsU0FBaUI7UUFDOUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDO1FBQ2xDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELGdFQUFnRTtJQUN6RCxZQUFZLENBQUMsVUFBa0I7UUFDcEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEdBQUcsVUFBVSxDQUFDO1FBQ3hDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELG9DQUFvQztJQUM3QixNQUFNLENBQUMsT0FBZTtRQUMzQixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUM7UUFDL0IsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsMkJBQTJCO0lBQ3BCLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDekIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsVUFBVTtJQUNWLElBQVcsU0FBUztRQUNsQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVELElBQVcsTUFBTTtRQUNmLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFBVyxPQUFPO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFBVyxPQUFPO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFBVyxjQUFjO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBRU0sS0FBSyxDQUFDLFFBQXdCO1FBQ25DLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNkLFFBQVEsR0FBRyxJQUFJLDZDQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFDLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVNLE1BQU0sQ0FBSSxPQUE4QjtRQUM3QyxPQUFPLE9BQU8sQ0FBQyw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwRCxDQUFDO0NBQ0Y7QUFwRkQsMERBb0ZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5kZW50ZWRRdWVyeVJlbmRlcmVyIH0gZnJvbSBcIi4uL3JlbmRlcmVyL0luZGVudGVkUXVlcnlSZW5kZXJlclwiO1xuaW1wb3J0IHsgUXVlcnlSZW5kZXJlciB9IGZyb20gXCIuLi9yZW5kZXJlci9RdWVyeVJlbmRlcmVyXCI7XG5pbXBvcnQgeyBTcWxUcmVlTm9kZVZpc2l0b3IgfSBmcm9tIFwiLi4vdmlzaXRvci9TcWxUcmVlTm9kZVZpc2l0b3JcIjtcbmltcG9ydCB7IFNxbFRyZWVOb2RlIH0gZnJvbSBcIi4vQWJzdHJhY3Rpb25zXCI7XG5cbi8vIFN1cHBvcnRlZCB2aXJ0dWFsIHRhYmxlIG1vZHVsZXMgKGV4dGVuc2libGUgZm9yIGZ1dHVyZSBtb2R1bGVzIGxpa2UgcnRyZWUpXG5leHBvcnQgdHlwZSBWaXJ0dWFsVGFibGVNb2R1bGUgPSAnZnRzNSc7XG5cbi8vIEZUUzUtc3BlY2lmaWMgb3B0aW9uc1xuZXhwb3J0IGludGVyZmFjZSBGVFM1T3B0aW9ucyB7XG4gIHRva2VuaXplPzogc3RyaW5nOyAgICAgIC8vIGUuZy4sICdwb3J0ZXIgdW5pY29kZTYxJ1xuICBjb250ZW50Pzogc3RyaW5nOyAgICAgICAvLyBFeHRlcm5hbCBjb250ZW50IHRhYmxlIG5hbWVcbiAgY29udGVudFJvd2lkPzogc3RyaW5nOyAgLy8gQ29sdW1uIHRvIHVzZSBhcyByb3dpZCBmb3IgZXh0ZXJuYWwgY29udGVudFxuICBwcmVmaXg/OiBzdHJpbmc7ICAgICAgICAvLyBQcmVmaXggaW5kZXhlcywgZS5nLiwgJzIgMyA0J1xufVxuXG4vLyBSZXByZXNlbnRzIGEgQ1JFQVRFIFZJUlRVQUwgVEFCTEUgc3RhdGVtZW50XG5leHBvcnQgY2xhc3MgQ3JlYXRlVmlydHVhbFRhYmxlUXVlcnkgaW1wbGVtZW50cyBTcWxUcmVlTm9kZSB7XG5cbiAgcHJpdmF0ZSBfdGFibGVOYW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgX21vZHVsZTogVmlydHVhbFRhYmxlTW9kdWxlO1xuICBwcml2YXRlIF9jb2x1bW5zOiBzdHJpbmdbXSA9IFtdO1xuICBwcml2YXRlIF9vcHRpb25zOiBGVFM1T3B0aW9ucyA9IHt9O1xuICBwcml2YXRlIF9pZk5vdEV4aXN0czogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHRhYmxlTmFtZTogc3RyaW5nLCBtb2R1bGU6IFZpcnR1YWxUYWJsZU1vZHVsZSkge1xuICAgIHRoaXMuX3RhYmxlTmFtZSA9IHRhYmxlTmFtZTtcbiAgICB0aGlzLl9tb2R1bGUgPSBtb2R1bGU7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGNyZWF0ZSh0YWJsZU5hbWU6IHN0cmluZywgbW9kdWxlOiBWaXJ0dWFsVGFibGVNb2R1bGUpOiBDcmVhdGVWaXJ0dWFsVGFibGVRdWVyeSB7XG4gICAgcmV0dXJuIG5ldyBDcmVhdGVWaXJ0dWFsVGFibGVRdWVyeSh0YWJsZU5hbWUsIG1vZHVsZSk7XG4gIH1cblxuICAvLyBBZGQgYSBjb2x1bW4gdG8gdGhlIHZpcnR1YWwgdGFibGVcbiAgcHVibGljIGNvbHVtbihuYW1lOiBzdHJpbmcpOiBDcmVhdGVWaXJ0dWFsVGFibGVRdWVyeSB7XG4gICAgdGhpcy5fY29sdW1ucy5wdXNoKG5hbWUpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLy8gU2V0IHRoZSB0b2tlbml6ZXIgZm9yIEZUUzVcbiAgcHVibGljIHRva2VuaXplKHRva2VuaXplcjogc3RyaW5nKTogQ3JlYXRlVmlydHVhbFRhYmxlUXVlcnkge1xuICAgIHRoaXMuX29wdGlvbnMudG9rZW5pemUgPSB0b2tlbml6ZXI7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvLyBTZXQgdGhlIGV4dGVybmFsIGNvbnRlbnQgdGFibGUgZm9yIEZUUzVcbiAgcHVibGljIGNvbnRlbnQodGFibGVOYW1lOiBzdHJpbmcpOiBDcmVhdGVWaXJ0dWFsVGFibGVRdWVyeSB7XG4gICAgdGhpcy5fb3B0aW9ucy5jb250ZW50ID0gdGFibGVOYW1lO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLy8gU2V0IHRoZSBjb250ZW50X3Jvd2lkIGNvbHVtbiBmb3IgZXh0ZXJuYWwgY29udGVudCBGVFM1IHRhYmxlc1xuICBwdWJsaWMgY29udGVudFJvd2lkKGNvbHVtbk5hbWU6IHN0cmluZyk6IENyZWF0ZVZpcnR1YWxUYWJsZVF1ZXJ5IHtcbiAgICB0aGlzLl9vcHRpb25zLmNvbnRlbnRSb3dpZCA9IGNvbHVtbk5hbWU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvLyBTZXQgcHJlZml4IGluZGV4IGxlbmd0aHMgZm9yIEZUUzVcbiAgcHVibGljIHByZWZpeChsZW5ndGhzOiBzdHJpbmcpOiBDcmVhdGVWaXJ0dWFsVGFibGVRdWVyeSB7XG4gICAgdGhpcy5fb3B0aW9ucy5wcmVmaXggPSBsZW5ndGhzO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLy8gQWRkIElGIE5PVCBFWElTVFMgY2xhdXNlXG4gIHB1YmxpYyBpZk5vdEV4aXN0cygpOiBDcmVhdGVWaXJ0dWFsVGFibGVRdWVyeSB7XG4gICAgdGhpcy5faWZOb3RFeGlzdHMgPSB0cnVlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLy8gR2V0dGVyc1xuICBwdWJsaWMgZ2V0IHRhYmxlTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl90YWJsZU5hbWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG1vZHVsZSgpOiBWaXJ0dWFsVGFibGVNb2R1bGUge1xuICAgIHJldHVybiB0aGlzLl9tb2R1bGU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNvbHVtbnMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLl9jb2x1bW5zO1xuICB9XG5cbiAgcHVibGljIGdldCBvcHRpb25zKCk6IEZUUzVPcHRpb25zIHtcbiAgICByZXR1cm4gdGhpcy5fb3B0aW9ucztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaGFzSWZOb3RFeGlzdHMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lmTm90RXhpc3RzO1xuICB9XG5cbiAgcHVibGljIHRvU1FMKHJlbmRlcmVyPzogUXVlcnlSZW5kZXJlcik6IHN0cmluZyB7XG4gICAgaWYgKCFyZW5kZXJlcikge1xuICAgICAgcmVuZGVyZXIgPSBuZXcgSW5kZW50ZWRRdWVyeVJlbmRlcmVyKDIpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5hY2NlcHQocmVuZGVyZXIpO1xuICB9XG5cbiAgcHVibGljIGFjY2VwdDxUPih2aXNpdG9yOiBTcWxUcmVlTm9kZVZpc2l0b3I8VD4pOiBUIHtcbiAgICByZXR1cm4gdmlzaXRvci52aXNpdENyZWF0ZVZpcnR1YWxUYWJsZVF1ZXJ5KHRoaXMpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,17 @@
1
+ import { QueryRenderer } from "../renderer/QueryRenderer";
2
+ import { SqlTreeNodeVisitor } from "../visitor/SqlTreeNodeVisitor";
3
+ import { AliasableExpression, Expression, SqlTreeNode } from "./Abstractions";
4
+ export declare class DeleteQuery implements SqlTreeNode {
5
+ private _tableName;
6
+ private _where;
7
+ private _returning;
8
+ constructor(tableName: string);
9
+ static create(tableName: string): DeleteQuery;
10
+ where(condition: Expression): DeleteQuery;
11
+ returning(...expressions: AliasableExpression[]): DeleteQuery;
12
+ get tableName(): string;
13
+ get whereClause(): Expression | null;
14
+ get returningClause(): AliasableExpression[];
15
+ toSQL(renderer?: QueryRenderer): string;
16
+ accept<T>(visitor: SqlTreeNodeVisitor<T>): T;
17
+ }
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DeleteQuery = void 0;
4
+ const IndentedQueryRenderer_1 = require("../renderer/IndentedQueryRenderer");
5
+ // Represents a DELETE statement with a table and optional WHERE clause
6
+ class DeleteQuery {
7
+ constructor(tableName) {
8
+ this._where = null;
9
+ this._returning = [];
10
+ this._tableName = tableName;
11
+ }
12
+ static create(tableName) {
13
+ return new DeleteQuery(tableName);
14
+ }
15
+ where(condition) {
16
+ this._where = condition;
17
+ return this;
18
+ }
19
+ returning(...expressions) {
20
+ this._returning = expressions;
21
+ return this;
22
+ }
23
+ get tableName() {
24
+ return this._tableName;
25
+ }
26
+ get whereClause() {
27
+ return this._where;
28
+ }
29
+ get returningClause() {
30
+ return this._returning;
31
+ }
32
+ toSQL(renderer) {
33
+ if (!renderer) {
34
+ renderer = new IndentedQueryRenderer_1.IndentedQueryRenderer(2);
35
+ }
36
+ return this.accept(renderer);
37
+ }
38
+ accept(visitor) {
39
+ return visitor.visitDeleteQuery(this);
40
+ }
41
+ }
42
+ exports.DeleteQuery = DeleteQuery;
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVsZXRlUXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXN0L0RlbGV0ZVF1ZXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZFQUEwRTtBQUsxRSx1RUFBdUU7QUFDdkUsTUFBYSxXQUFXO0lBTXRCLFlBQVksU0FBaUI7UUFIckIsV0FBTSxHQUFzQixJQUFJLENBQUM7UUFDakMsZUFBVSxHQUEwQixFQUFFLENBQUM7UUFHN0MsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7SUFDOUIsQ0FBQztJQUVNLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBaUI7UUFDcEMsT0FBTyxJQUFJLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRU0sS0FBSyxDQUFDLFNBQXFCO1FBQ2hDLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDO1FBQ3hCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLFNBQVMsQ0FBQyxHQUFHLFdBQWtDO1FBQ3BELElBQUksQ0FBQyxVQUFVLEdBQUcsV0FBVyxDQUFDO1FBQzlCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELElBQVcsU0FBUztRQUNsQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVELElBQVcsV0FBVztRQUNwQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUVELElBQVcsZUFBZTtRQUN4QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVNLEtBQUssQ0FBQyxRQUF3QjtRQUNuQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDZCxRQUFRLEdBQUcsSUFBSSw2Q0FBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxQyxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFTSxNQUFNLENBQUksT0FBOEI7UUFDN0MsT0FBTyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEMsQ0FBQztDQUNGO0FBOUNELGtDQThDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluZGVudGVkUXVlcnlSZW5kZXJlciB9IGZyb20gXCIuLi9yZW5kZXJlci9JbmRlbnRlZFF1ZXJ5UmVuZGVyZXJcIjtcbmltcG9ydCB7IFF1ZXJ5UmVuZGVyZXIgfSBmcm9tIFwiLi4vcmVuZGVyZXIvUXVlcnlSZW5kZXJlclwiO1xuaW1wb3J0IHsgU3FsVHJlZU5vZGVWaXNpdG9yIH0gZnJvbSBcIi4uL3Zpc2l0b3IvU3FsVHJlZU5vZGVWaXNpdG9yXCI7XG5pbXBvcnQgeyBBbGlhc2FibGVFeHByZXNzaW9uLCBFeHByZXNzaW9uLCBTcWxUcmVlTm9kZSB9IGZyb20gXCIuL0Fic3RyYWN0aW9uc1wiO1xuXG4vLyBSZXByZXNlbnRzIGEgREVMRVRFIHN0YXRlbWVudCB3aXRoIGEgdGFibGUgYW5kIG9wdGlvbmFsIFdIRVJFIGNsYXVzZVxuZXhwb3J0IGNsYXNzIERlbGV0ZVF1ZXJ5IGltcGxlbWVudHMgU3FsVHJlZU5vZGUge1xuXG4gIHByaXZhdGUgX3RhYmxlTmFtZTogc3RyaW5nO1xuICBwcml2YXRlIF93aGVyZTogRXhwcmVzc2lvbiB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9yZXR1cm5pbmc6IEFsaWFzYWJsZUV4cHJlc3Npb25bXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHRhYmxlTmFtZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fdGFibGVOYW1lID0gdGFibGVOYW1lO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBjcmVhdGUodGFibGVOYW1lOiBzdHJpbmcpOiBEZWxldGVRdWVyeSB7XG4gICAgcmV0dXJuIG5ldyBEZWxldGVRdWVyeSh0YWJsZU5hbWUpO1xuICB9XG5cbiAgcHVibGljIHdoZXJlKGNvbmRpdGlvbjogRXhwcmVzc2lvbik6IERlbGV0ZVF1ZXJ5IHtcbiAgICB0aGlzLl93aGVyZSA9IGNvbmRpdGlvbjtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyByZXR1cm5pbmcoLi4uZXhwcmVzc2lvbnM6IEFsaWFzYWJsZUV4cHJlc3Npb25bXSk6IERlbGV0ZVF1ZXJ5IHtcbiAgICB0aGlzLl9yZXR1cm5pbmcgPSBleHByZXNzaW9ucztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdGFibGVOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3RhYmxlTmFtZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgd2hlcmVDbGF1c2UoKTogRXhwcmVzc2lvbiB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl93aGVyZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcmV0dXJuaW5nQ2xhdXNlKCk6IEFsaWFzYWJsZUV4cHJlc3Npb25bXSB7XG4gICAgcmV0dXJuIHRoaXMuX3JldHVybmluZztcbiAgfVxuXG4gIHB1YmxpYyB0b1NRTChyZW5kZXJlcj86IFF1ZXJ5UmVuZGVyZXIpOiBzdHJpbmcge1xuICAgIGlmICghcmVuZGVyZXIpIHtcbiAgICAgIHJlbmRlcmVyID0gbmV3IEluZGVudGVkUXVlcnlSZW5kZXJlcigyKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuYWNjZXB0KHJlbmRlcmVyKTtcbiAgfVxuXG4gIHB1YmxpYyBhY2NlcHQ8VD4odmlzaXRvcjogU3FsVHJlZU5vZGVWaXNpdG9yPFQ+KTogVCB7XG4gICAgcmV0dXJuIHZpc2l0b3IudmlzaXREZWxldGVRdWVyeSh0aGlzKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,14 @@
1
+ import { QueryRenderer } from "../renderer/QueryRenderer";
2
+ import { SqlTreeNodeVisitor } from "../visitor/SqlTreeNodeVisitor";
3
+ import { SqlTreeNode } from "./Abstractions";
4
+ export declare class DropIndexQuery implements SqlTreeNode {
5
+ private _indexName;
6
+ private _ifExists;
7
+ constructor(indexName: string);
8
+ static create(indexName: string): DropIndexQuery;
9
+ ifExists(): DropIndexQuery;
10
+ get indexName(): string;
11
+ get hasIfExists(): boolean;
12
+ toSQL(renderer?: QueryRenderer): string;
13
+ accept<T>(visitor: SqlTreeNodeVisitor<T>): T;
14
+ }
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DropIndexQuery = void 0;
4
+ const IndentedQueryRenderer_1 = require("../renderer/IndentedQueryRenderer");
5
+ // Represents a DROP INDEX statement
6
+ class DropIndexQuery {
7
+ constructor(indexName) {
8
+ this._ifExists = false;
9
+ this._indexName = indexName;
10
+ }
11
+ static create(indexName) {
12
+ return new DropIndexQuery(indexName);
13
+ }
14
+ ifExists() {
15
+ this._ifExists = true;
16
+ return this;
17
+ }
18
+ get indexName() {
19
+ return this._indexName;
20
+ }
21
+ get hasIfExists() {
22
+ return this._ifExists;
23
+ }
24
+ toSQL(renderer) {
25
+ if (!renderer) {
26
+ renderer = new IndentedQueryRenderer_1.IndentedQueryRenderer(2);
27
+ }
28
+ return this.accept(renderer);
29
+ }
30
+ accept(visitor) {
31
+ return visitor.visitDropIndexQuery(this);
32
+ }
33
+ }
34
+ exports.DropIndexQuery = DropIndexQuery;
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRHJvcEluZGV4UXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXN0L0Ryb3BJbmRleFF1ZXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZFQUEwRTtBQUsxRSxvQ0FBb0M7QUFDcEMsTUFBYSxjQUFjO0lBS3pCLFlBQVksU0FBaUI7UUFGckIsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUdqQyxJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztJQUM5QixDQUFDO0lBRU0sTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFpQjtRQUNwQyxPQUFPLElBQUksY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFTSxRQUFRO1FBQ2IsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsSUFBVyxTQUFTO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBVyxXQUFXO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBRU0sS0FBSyxDQUFDLFFBQXdCO1FBQ25DLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNkLFFBQVEsR0FBRyxJQUFJLDZDQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFDLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVNLE1BQU0sQ0FBSSxPQUE4QjtRQUM3QyxPQUFPLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQyxDQUFDO0NBQ0Y7QUFwQ0Qsd0NBb0NDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5kZW50ZWRRdWVyeVJlbmRlcmVyIH0gZnJvbSBcIi4uL3JlbmRlcmVyL0luZGVudGVkUXVlcnlSZW5kZXJlclwiO1xuaW1wb3J0IHsgUXVlcnlSZW5kZXJlciB9IGZyb20gXCIuLi9yZW5kZXJlci9RdWVyeVJlbmRlcmVyXCI7XG5pbXBvcnQgeyBTcWxUcmVlTm9kZVZpc2l0b3IgfSBmcm9tIFwiLi4vdmlzaXRvci9TcWxUcmVlTm9kZVZpc2l0b3JcIjtcbmltcG9ydCB7IFNxbFRyZWVOb2RlIH0gZnJvbSBcIi4vQWJzdHJhY3Rpb25zXCI7XG5cbi8vIFJlcHJlc2VudHMgYSBEUk9QIElOREVYIHN0YXRlbWVudFxuZXhwb3J0IGNsYXNzIERyb3BJbmRleFF1ZXJ5IGltcGxlbWVudHMgU3FsVHJlZU5vZGUge1xuXG4gIHByaXZhdGUgX2luZGV4TmFtZTogc3RyaW5nO1xuICBwcml2YXRlIF9pZkV4aXN0czogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKGluZGV4TmFtZTogc3RyaW5nKSB7XG4gICAgdGhpcy5faW5kZXhOYW1lID0gaW5kZXhOYW1lO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBjcmVhdGUoaW5kZXhOYW1lOiBzdHJpbmcpOiBEcm9wSW5kZXhRdWVyeSB7XG4gICAgcmV0dXJuIG5ldyBEcm9wSW5kZXhRdWVyeShpbmRleE5hbWUpO1xuICB9XG5cbiAgcHVibGljIGlmRXhpc3RzKCk6IERyb3BJbmRleFF1ZXJ5IHtcbiAgICB0aGlzLl9pZkV4aXN0cyA9IHRydWU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGluZGV4TmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9pbmRleE5hbWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhhc0lmRXhpc3RzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pZkV4aXN0cztcbiAgfVxuXG4gIHB1YmxpYyB0b1NRTChyZW5kZXJlcj86IFF1ZXJ5UmVuZGVyZXIpOiBzdHJpbmcge1xuICAgIGlmICghcmVuZGVyZXIpIHtcbiAgICAgIHJlbmRlcmVyID0gbmV3IEluZGVudGVkUXVlcnlSZW5kZXJlcigyKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuYWNjZXB0KHJlbmRlcmVyKTtcbiAgfVxuXG4gIHB1YmxpYyBhY2NlcHQ8VD4odmlzaXRvcjogU3FsVHJlZU5vZGVWaXNpdG9yPFQ+KTogVCB7XG4gICAgcmV0dXJuIHZpc2l0b3IudmlzaXREcm9wSW5kZXhRdWVyeSh0aGlzKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,14 @@
1
+ import { QueryRenderer } from "../renderer/QueryRenderer";
2
+ import { SqlTreeNodeVisitor } from "../visitor/SqlTreeNodeVisitor";
3
+ import { SqlTreeNode } from "./Abstractions";
4
+ export declare class DropTableQuery implements SqlTreeNode {
5
+ private _tableName;
6
+ private _ifExists;
7
+ constructor(tableName: string);
8
+ static create(tableName: string): DropTableQuery;
9
+ ifExists(): DropTableQuery;
10
+ get tableName(): string;
11
+ get hasIfExists(): boolean;
12
+ toSQL(renderer?: QueryRenderer): string;
13
+ accept<T>(visitor: SqlTreeNodeVisitor<T>): T;
14
+ }
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DropTableQuery = void 0;
4
+ const IndentedQueryRenderer_1 = require("../renderer/IndentedQueryRenderer");
5
+ // Represents a DROP TABLE statement
6
+ class DropTableQuery {
7
+ constructor(tableName) {
8
+ this._ifExists = false;
9
+ this._tableName = tableName;
10
+ }
11
+ static create(tableName) {
12
+ return new DropTableQuery(tableName);
13
+ }
14
+ ifExists() {
15
+ this._ifExists = true;
16
+ return this;
17
+ }
18
+ get tableName() {
19
+ return this._tableName;
20
+ }
21
+ get hasIfExists() {
22
+ return this._ifExists;
23
+ }
24
+ toSQL(renderer) {
25
+ if (!renderer) {
26
+ renderer = new IndentedQueryRenderer_1.IndentedQueryRenderer(2);
27
+ }
28
+ return this.accept(renderer);
29
+ }
30
+ accept(visitor) {
31
+ return visitor.visitDropTableQuery(this);
32
+ }
33
+ }
34
+ exports.DropTableQuery = DropTableQuery;
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRHJvcFRhYmxlUXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXN0L0Ryb3BUYWJsZVF1ZXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZFQUEwRTtBQUsxRSxvQ0FBb0M7QUFDcEMsTUFBYSxjQUFjO0lBS3pCLFlBQVksU0FBaUI7UUFGckIsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUdqQyxJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztJQUM5QixDQUFDO0lBRU0sTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFpQjtRQUNwQyxPQUFPLElBQUksY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFTSxRQUFRO1FBQ2IsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsSUFBVyxTQUFTO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBVyxXQUFXO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBRU0sS0FBSyxDQUFDLFFBQXdCO1FBQ25DLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNkLFFBQVEsR0FBRyxJQUFJLDZDQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFDLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVNLE1BQU0sQ0FBSSxPQUE4QjtRQUM3QyxPQUFPLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQyxDQUFDO0NBQ0Y7QUFwQ0Qsd0NBb0NDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5kZW50ZWRRdWVyeVJlbmRlcmVyIH0gZnJvbSBcIi4uL3JlbmRlcmVyL0luZGVudGVkUXVlcnlSZW5kZXJlclwiO1xuaW1wb3J0IHsgUXVlcnlSZW5kZXJlciB9IGZyb20gXCIuLi9yZW5kZXJlci9RdWVyeVJlbmRlcmVyXCI7XG5pbXBvcnQgeyBTcWxUcmVlTm9kZVZpc2l0b3IgfSBmcm9tIFwiLi4vdmlzaXRvci9TcWxUcmVlTm9kZVZpc2l0b3JcIjtcbmltcG9ydCB7IFNxbFRyZWVOb2RlIH0gZnJvbSBcIi4vQWJzdHJhY3Rpb25zXCI7XG5cbi8vIFJlcHJlc2VudHMgYSBEUk9QIFRBQkxFIHN0YXRlbWVudFxuZXhwb3J0IGNsYXNzIERyb3BUYWJsZVF1ZXJ5IGltcGxlbWVudHMgU3FsVHJlZU5vZGUge1xuXG4gIHByaXZhdGUgX3RhYmxlTmFtZTogc3RyaW5nO1xuICBwcml2YXRlIF9pZkV4aXN0czogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHRhYmxlTmFtZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fdGFibGVOYW1lID0gdGFibGVOYW1lO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBjcmVhdGUodGFibGVOYW1lOiBzdHJpbmcpOiBEcm9wVGFibGVRdWVyeSB7XG4gICAgcmV0dXJuIG5ldyBEcm9wVGFibGVRdWVyeSh0YWJsZU5hbWUpO1xuICB9XG5cbiAgcHVibGljIGlmRXhpc3RzKCk6IERyb3BUYWJsZVF1ZXJ5IHtcbiAgICB0aGlzLl9pZkV4aXN0cyA9IHRydWU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHRhYmxlTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl90YWJsZU5hbWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhhc0lmRXhpc3RzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pZkV4aXN0cztcbiAgfVxuXG4gIHB1YmxpYyB0b1NRTChyZW5kZXJlcj86IFF1ZXJ5UmVuZGVyZXIpOiBzdHJpbmcge1xuICAgIGlmICghcmVuZGVyZXIpIHtcbiAgICAgIHJlbmRlcmVyID0gbmV3IEluZGVudGVkUXVlcnlSZW5kZXJlcigyKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuYWNjZXB0KHJlbmRlcmVyKTtcbiAgfVxuXG4gIHB1YmxpYyBhY2NlcHQ8VD4odmlzaXRvcjogU3FsVHJlZU5vZGVWaXNpdG9yPFQ+KTogVCB7XG4gICAgcmV0dXJuIHZpc2l0b3IudmlzaXREcm9wVGFibGVRdWVyeSh0aGlzKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,11 @@
1
+ import { SqlTreeNode } from "./Abstractions";
2
+ import { SqlTreeNodeVisitor } from "../visitor/SqlTreeNodeVisitor";
3
+ export declare class DropViewQuery implements SqlTreeNode {
4
+ private _viewName;
5
+ private _ifExists;
6
+ constructor(viewName: string);
7
+ get viewName(): string;
8
+ get hasIfExists(): boolean;
9
+ ifExists(): DropViewQuery;
10
+ accept<T>(visitor: SqlTreeNodeVisitor<T>): T;
11
+ }
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DropViewQuery = void 0;
4
+ class DropViewQuery {
5
+ constructor(viewName) {
6
+ this._ifExists = false;
7
+ this._viewName = viewName;
8
+ }
9
+ get viewName() {
10
+ return this._viewName;
11
+ }
12
+ get hasIfExists() {
13
+ return this._ifExists;
14
+ }
15
+ ifExists() {
16
+ this._ifExists = true;
17
+ return this;
18
+ }
19
+ accept(visitor) {
20
+ return visitor.visitDropViewQuery(this);
21
+ }
22
+ }
23
+ exports.DropViewQuery = DropViewQuery;
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRHJvcFZpZXdRdWVyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hc3QvRHJvcFZpZXdRdWVyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFHQSxNQUFhLGFBQWE7SUFJeEIsWUFBWSxRQUFnQjtRQUZwQixjQUFTLEdBQVksS0FBSyxDQUFDO1FBR2pDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO0lBQzVCLENBQUM7SUFFRCxJQUFXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFXLFdBQVc7UUFDcEIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFTSxRQUFRO1FBQ2IsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0sTUFBTSxDQUFJLE9BQThCO1FBQzdDLE9BQU8sT0FBTyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFDLENBQUM7Q0FDRjtBQXhCRCxzQ0F3QkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTcWxUcmVlTm9kZSB9IGZyb20gXCIuL0Fic3RyYWN0aW9uc1wiO1xuaW1wb3J0IHsgU3FsVHJlZU5vZGVWaXNpdG9yIH0gZnJvbSBcIi4uL3Zpc2l0b3IvU3FsVHJlZU5vZGVWaXNpdG9yXCI7XG5cbmV4cG9ydCBjbGFzcyBEcm9wVmlld1F1ZXJ5IGltcGxlbWVudHMgU3FsVHJlZU5vZGUge1xuICBwcml2YXRlIF92aWV3TmFtZTogc3RyaW5nO1xuICBwcml2YXRlIF9pZkV4aXN0czogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHZpZXdOYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLl92aWV3TmFtZSA9IHZpZXdOYW1lO1xuICB9XG5cbiAgcHVibGljIGdldCB2aWV3TmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl92aWV3TmFtZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaGFzSWZFeGlzdHMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lmRXhpc3RzO1xuICB9XG5cbiAgcHVibGljIGlmRXhpc3RzKCk6IERyb3BWaWV3UXVlcnkge1xuICAgIHRoaXMuX2lmRXhpc3RzID0gdHJ1ZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBhY2NlcHQ8VD4odmlzaXRvcjogU3FsVHJlZU5vZGVWaXNpdG9yPFQ+KTogVCB7XG4gICAgcmV0dXJuIHZpc2l0b3IudmlzaXREcm9wVmlld1F1ZXJ5KHRoaXMpO1xuICB9XG59XG4iXX0=
@@ -1,6 +1,8 @@
1
1
  import { SqlTreeNodeVisitor } from "../visitor/SqlTreeNodeVisitor";
2
2
  import { AliasableExpression, Expression } from "./Abstractions";
3
3
  import { FunctionName } from "./FunctionName";
4
+ import { OrderBy } from "./OrderBy";
5
+ import { WindowExpression } from "./WindowExpression";
4
6
  export declare class FunctionExpression extends AliasableExpression {
5
7
  private _name;
6
8
  private _args;
@@ -10,4 +12,23 @@ export declare class FunctionExpression extends AliasableExpression {
10
12
  get args(): Expression[];
11
13
  get distinct(): boolean;
12
14
  accept<T>(visitor: SqlTreeNodeVisitor<T>): T;
15
+ /**
16
+ * Create a window function expression with an OVER clause.
17
+ *
18
+ * Accepts PARTITION_BY (Expression[]) and ORDER_BY (OrderBy) arguments
19
+ * in any order. Multiple ORDER_BY clauses are combined.
20
+ *
21
+ * @example
22
+ * ```typescript
23
+ * // With ORDER BY only
24
+ * FN('ROW_NUMBER').over(ORDER_BY('created_at'))
25
+ *
26
+ * // With PARTITION BY and ORDER BY
27
+ * FN('RANK').over(PARTITION_BY('category'), ORDER_BY('price', DESC))
28
+ *
29
+ * // Empty OVER clause (window over entire result set)
30
+ * FN('AVG', COLUMN('salary')).over()
31
+ * ```
32
+ */
33
+ over(...specs: (Expression[] | OrderBy)[]): WindowExpression;
13
34
  }