rawsql-ts 0.1.3-beta → 0.3.0-beta
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 +251 -8
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/models/Clause.js +2 -2
- package/dist/esm/models/Clause.js.map +1 -1
- package/dist/esm/models/CreateTableQuery.js +62 -0
- package/dist/esm/models/CreateTableQuery.js.map +1 -0
- package/dist/esm/models/InsertQuery.js +24 -0
- package/dist/esm/models/InsertQuery.js.map +1 -0
- package/dist/esm/models/Lexeme.js +15 -14
- package/dist/esm/models/Lexeme.js.map +1 -1
- package/dist/esm/models/SelectQuery.js +2 -1
- package/dist/esm/models/SelectQuery.js.map +1 -1
- package/dist/esm/models/SimpleSelectQuery.js +82 -16
- package/dist/esm/models/SimpleSelectQuery.js.map +1 -1
- package/dist/esm/parsers/CommandExpressionParser.js +4 -4
- package/dist/esm/parsers/CommandExpressionParser.js.map +1 -1
- package/dist/esm/parsers/FunctionExpressionParser.js +10 -10
- package/dist/esm/parsers/FunctionExpressionParser.js.map +1 -1
- package/dist/esm/parsers/GroupByParser.js +1 -1
- package/dist/esm/parsers/GroupByParser.js.map +1 -1
- package/dist/esm/parsers/IdentifierParser.js +5 -4
- package/dist/esm/parsers/IdentifierParser.js.map +1 -1
- package/dist/esm/parsers/InsertQueryParser.js +104 -0
- package/dist/esm/parsers/InsertQueryParser.js.map +1 -0
- package/dist/esm/parsers/JoinClauseParser.js +1 -1
- package/dist/esm/parsers/JoinClauseParser.js.map +1 -1
- package/dist/esm/parsers/OrderByClauseParser.js +1 -1
- package/dist/esm/parsers/OrderByClauseParser.js.map +1 -1
- package/dist/esm/parsers/OverExpressionParser.js +2 -2
- package/dist/esm/parsers/OverExpressionParser.js.map +1 -1
- package/dist/esm/parsers/ParameterExpressionParser.js +11 -2
- package/dist/esm/parsers/ParameterExpressionParser.js.map +1 -1
- package/dist/esm/parsers/ParenExpressionParser.js +1 -1
- package/dist/esm/parsers/ParenExpressionParser.js.map +1 -1
- package/dist/esm/parsers/PartitionByParser.js +1 -1
- package/dist/esm/parsers/PartitionByParser.js.map +1 -1
- package/dist/esm/parsers/SelectClauseParser.js +11 -5
- package/dist/esm/parsers/SelectClauseParser.js.map +1 -1
- package/dist/esm/parsers/SelectQueryParser.js +22 -1
- package/dist/esm/parsers/SelectQueryParser.js.map +1 -1
- package/dist/esm/parsers/SourceAliasExpressionParser.js +5 -5
- package/dist/esm/parsers/SourceAliasExpressionParser.js.map +1 -1
- package/dist/esm/parsers/SourceExpressionParser.js +1 -1
- package/dist/esm/parsers/SourceExpressionParser.js.map +1 -1
- package/dist/esm/parsers/SourceParser.js +10 -28
- package/dist/esm/parsers/SourceParser.js.map +1 -1
- package/dist/esm/parsers/SqlTokenizer.js +1 -1
- package/dist/esm/parsers/SqlTokenizer.js.map +1 -1
- package/dist/esm/parsers/UnaryExpressionParser.js +1 -1
- package/dist/esm/parsers/UnaryExpressionParser.js.map +1 -1
- package/dist/esm/parsers/ValueParser.js +42 -13
- package/dist/esm/parsers/ValueParser.js.map +1 -1
- package/dist/esm/parsers/ValuesQueryParser.js +3 -3
- package/dist/esm/parsers/ValuesQueryParser.js.map +1 -1
- package/dist/esm/parsers/WindowExpressionParser.js +3 -3
- package/dist/esm/parsers/WindowExpressionParser.js.map +1 -1
- package/dist/esm/parsers/WithClauseParser.js +1 -1
- package/dist/esm/parsers/WithClauseParser.js.map +1 -1
- package/dist/esm/tokenReaders/BaseTokenReader.js +1 -3
- package/dist/esm/tokenReaders/BaseTokenReader.js.map +1 -1
- package/dist/esm/tokenReaders/OperatorTokenReader.js +36 -9
- package/dist/esm/tokenReaders/OperatorTokenReader.js.map +1 -1
- package/dist/esm/tokenReaders/ParameterTokenReader.js +21 -1
- package/dist/esm/tokenReaders/ParameterTokenReader.js.map +1 -1
- package/dist/esm/tokenReaders/TypeTokenReader.js +3 -3
- package/dist/esm/tokenReaders/TypeTokenReader.js.map +1 -1
- package/dist/esm/transformers/CTEDisabler.js +2 -1
- package/dist/esm/transformers/CTEDisabler.js.map +1 -1
- package/dist/esm/transformers/Formatter.js +79 -8
- package/dist/esm/transformers/Formatter.js.map +1 -1
- package/dist/esm/transformers/QueryConverter.js +67 -12
- package/dist/esm/transformers/QueryConverter.js.map +1 -1
- package/dist/esm/transformers/SelectValueCollector.js +11 -16
- package/dist/esm/transformers/SelectValueCollector.js.map +1 -1
- package/dist/esm/transformers/SelectableColumnCollector.js +7 -10
- package/dist/esm/transformers/SelectableColumnCollector.js.map +1 -1
- package/dist/esm/transformers/UpstreamSelectQueryFinder.js.map +1 -1
- package/dist/esm/types/index.d.ts +1 -0
- package/dist/esm/types/models/Clause.d.ts +4 -5
- package/dist/esm/types/models/CreateTableQuery.d.ts +27 -0
- package/dist/esm/types/models/InsertQuery.d.ts +21 -0
- package/dist/esm/types/models/Lexeme.d.ts +16 -16
- package/dist/esm/types/models/SelectQuery.d.ts +3 -2
- package/dist/esm/types/models/SimpleSelectQuery.d.ts +31 -6
- package/dist/esm/types/parsers/InsertQueryParser.d.ts +17 -0
- package/dist/esm/types/parsers/SelectQueryParser.d.ts +7 -0
- package/dist/esm/types/tokenReaders/BaseTokenReader.d.ts +1 -1
- package/dist/esm/types/tokenReaders/ParameterTokenReader.d.ts +2 -1
- package/dist/esm/types/transformers/Formatter.d.ts +20 -3
- package/dist/esm/types/transformers/QueryConverter.d.ts +22 -2
- package/dist/esm/types/transformers/SelectValueCollector.d.ts +2 -4
- package/dist/esm/types/transformers/SelectableColumnCollector.d.ts +3 -3
- package/dist/esm/types/transformers/UpstreamSelectQueryFinder.d.ts +2 -2
- package/dist/esm/types/utils/extractNamespacesAndName.d.ts +5 -0
- package/dist/esm/types/utils/parseEscapedOrDotSeparatedIdentifiers.d.ts +9 -0
- package/dist/esm/utils/extractNamespacesAndName.js +16 -0
- package/dist/esm/utils/extractNamespacesAndName.js.map +1 -0
- package/dist/esm/utils/parseEscapedOrDotSeparatedIdentifiers.js +39 -0
- package/dist/esm/utils/parseEscapedOrDotSeparatedIdentifiers.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/models/Clause.d.ts +4 -5
- package/dist/models/Clause.js +2 -2
- package/dist/models/Clause.js.map +1 -1
- package/dist/models/CreateTableQuery.d.ts +27 -0
- package/dist/models/CreateTableQuery.js +66 -0
- package/dist/models/CreateTableQuery.js.map +1 -0
- package/dist/models/InsertQuery.d.ts +21 -0
- package/dist/models/InsertQuery.js +28 -0
- package/dist/models/InsertQuery.js.map +1 -0
- package/dist/models/Lexeme.d.ts +16 -16
- package/dist/models/Lexeme.js +15 -14
- package/dist/models/Lexeme.js.map +1 -1
- package/dist/models/SelectQuery.d.ts +3 -2
- package/dist/models/SelectQuery.js +3 -1
- package/dist/models/SelectQuery.js.map +1 -1
- package/dist/models/SimpleSelectQuery.d.ts +31 -6
- package/dist/models/SimpleSelectQuery.js +82 -16
- package/dist/models/SimpleSelectQuery.js.map +1 -1
- package/dist/parsers/CommandExpressionParser.js +4 -4
- package/dist/parsers/CommandExpressionParser.js.map +1 -1
- package/dist/parsers/FunctionExpressionParser.js +10 -10
- package/dist/parsers/FunctionExpressionParser.js.map +1 -1
- package/dist/parsers/GroupByParser.js +1 -1
- package/dist/parsers/GroupByParser.js.map +1 -1
- package/dist/parsers/IdentifierParser.js +5 -4
- package/dist/parsers/IdentifierParser.js.map +1 -1
- package/dist/parsers/InsertQueryParser.d.ts +17 -0
- package/dist/parsers/InsertQueryParser.js +108 -0
- package/dist/parsers/InsertQueryParser.js.map +1 -0
- package/dist/parsers/JoinClauseParser.js +1 -1
- package/dist/parsers/JoinClauseParser.js.map +1 -1
- package/dist/parsers/OrderByClauseParser.js +1 -1
- package/dist/parsers/OrderByClauseParser.js.map +1 -1
- package/dist/parsers/OverExpressionParser.js +2 -2
- package/dist/parsers/OverExpressionParser.js.map +1 -1
- package/dist/parsers/ParameterExpressionParser.js +11 -2
- package/dist/parsers/ParameterExpressionParser.js.map +1 -1
- package/dist/parsers/ParenExpressionParser.js +1 -1
- package/dist/parsers/ParenExpressionParser.js.map +1 -1
- package/dist/parsers/PartitionByParser.js +1 -1
- package/dist/parsers/PartitionByParser.js.map +1 -1
- package/dist/parsers/SelectClauseParser.js +11 -5
- package/dist/parsers/SelectClauseParser.js.map +1 -1
- package/dist/parsers/SelectQueryParser.d.ts +7 -0
- package/dist/parsers/SelectQueryParser.js +22 -1
- package/dist/parsers/SelectQueryParser.js.map +1 -1
- package/dist/parsers/SourceAliasExpressionParser.js +5 -5
- package/dist/parsers/SourceAliasExpressionParser.js.map +1 -1
- package/dist/parsers/SourceExpressionParser.js +1 -1
- package/dist/parsers/SourceExpressionParser.js.map +1 -1
- package/dist/parsers/SourceParser.js +10 -28
- package/dist/parsers/SourceParser.js.map +1 -1
- package/dist/parsers/SqlTokenizer.js +1 -1
- package/dist/parsers/SqlTokenizer.js.map +1 -1
- package/dist/parsers/UnaryExpressionParser.js +1 -1
- package/dist/parsers/UnaryExpressionParser.js.map +1 -1
- package/dist/parsers/ValueParser.js +41 -12
- package/dist/parsers/ValueParser.js.map +1 -1
- package/dist/parsers/ValuesQueryParser.js +3 -3
- package/dist/parsers/ValuesQueryParser.js.map +1 -1
- package/dist/parsers/WindowExpressionParser.js +3 -3
- package/dist/parsers/WindowExpressionParser.js.map +1 -1
- package/dist/parsers/WithClauseParser.js +1 -1
- package/dist/parsers/WithClauseParser.js.map +1 -1
- package/dist/tokenReaders/BaseTokenReader.d.ts +1 -1
- package/dist/tokenReaders/BaseTokenReader.js +1 -3
- package/dist/tokenReaders/BaseTokenReader.js.map +1 -1
- package/dist/tokenReaders/OperatorTokenReader.js +36 -9
- package/dist/tokenReaders/OperatorTokenReader.js.map +1 -1
- package/dist/tokenReaders/ParameterTokenReader.d.ts +2 -1
- package/dist/tokenReaders/ParameterTokenReader.js +21 -1
- package/dist/tokenReaders/ParameterTokenReader.js.map +1 -1
- package/dist/tokenReaders/TypeTokenReader.js +3 -3
- package/dist/tokenReaders/TypeTokenReader.js.map +1 -1
- package/dist/transformers/CTEDisabler.js +2 -1
- package/dist/transformers/CTEDisabler.js.map +1 -1
- package/dist/transformers/Formatter.d.ts +20 -3
- package/dist/transformers/Formatter.js +79 -8
- package/dist/transformers/Formatter.js.map +1 -1
- package/dist/transformers/QueryConverter.d.ts +22 -2
- package/dist/transformers/QueryConverter.js +67 -12
- package/dist/transformers/QueryConverter.js.map +1 -1
- package/dist/transformers/SelectValueCollector.d.ts +2 -4
- package/dist/transformers/SelectValueCollector.js +10 -15
- package/dist/transformers/SelectValueCollector.js.map +1 -1
- package/dist/transformers/SelectableColumnCollector.d.ts +3 -3
- package/dist/transformers/SelectableColumnCollector.js +6 -9
- package/dist/transformers/SelectableColumnCollector.js.map +1 -1
- package/dist/transformers/UpstreamSelectQueryFinder.d.ts +2 -2
- package/dist/transformers/UpstreamSelectQueryFinder.js.map +1 -1
- package/dist/utils/extractNamespacesAndName.d.ts +5 -0
- package/dist/utils/extractNamespacesAndName.js +18 -0
- package/dist/utils/extractNamespacesAndName.js.map +1 -0
- package/dist/utils/parseEscapedOrDotSeparatedIdentifiers.d.ts +9 -0
- package/dist/utils/parseEscapedOrDotSeparatedIdentifiers.js +42 -0
- package/dist/utils/parseEscapedOrDotSeparatedIdentifiers.js.map +1 -0
- package/package.json +1 -1
@@ -3,6 +3,7 @@ import { ForClause, FromClause, GroupByClause, HavingClause, LimitClause, OrderB
|
|
3
3
|
import { ValueComponent } from "./ValueComponent";
|
4
4
|
import { BinarySelectQuery } from "./BinarySelectQuery";
|
5
5
|
import type { SelectQuery } from "./SelectQuery";
|
6
|
+
import { TableColumnResolver } from "../transformers/TableColumnResolver";
|
6
7
|
/**
|
7
8
|
* Represents a simple SELECT query in SQL.
|
8
9
|
*/
|
@@ -110,39 +111,39 @@ export declare class SimpleSelectQuery extends SqlComponent {
|
|
110
111
|
* @param alias The alias for the joined table
|
111
112
|
* @param columns The columns to use for the join condition (e.g. ["user_id"] or "user_id")
|
112
113
|
*/
|
113
|
-
innerJoinRaw(joinSourceRawText: string, alias: string, columns: string | string[]): void;
|
114
|
+
innerJoinRaw(joinSourceRawText: string, alias: string, columns: string | string[], resolver?: TableColumnResolver | null): void;
|
114
115
|
/**
|
115
116
|
* Appends a LEFT JOIN clause to the query.
|
116
117
|
* @param joinSourceRawText The table source text to join
|
117
118
|
* @param alias The alias for the joined table
|
118
119
|
* @param columns The columns to use for the join condition
|
119
120
|
*/
|
120
|
-
leftJoinRaw(joinSourceRawText: string, alias: string, columns: string | string[]): void;
|
121
|
+
leftJoinRaw(joinSourceRawText: string, alias: string, columns: string | string[], resolver?: TableColumnResolver | null): void;
|
121
122
|
/**
|
122
123
|
* Appends a RIGHT JOIN clause to the query.
|
123
124
|
* @param joinSourceRawText The table source text to join
|
124
125
|
* @param alias The alias for the joined table
|
125
126
|
* @param columns The columns to use for the join condition
|
126
127
|
*/
|
127
|
-
rightJoinRaw(joinSourceRawText: string, alias: string, columns: string | string[]): void;
|
128
|
+
rightJoinRaw(joinSourceRawText: string, alias: string, columns: string | string[], resolver?: TableColumnResolver | null): void;
|
128
129
|
/**
|
129
130
|
* Appends an INNER JOIN clause to the query using a SourceExpression.
|
130
131
|
* @param sourceExpr The source expression to join
|
131
132
|
* @param columns The columns to use for the join condition
|
132
133
|
*/
|
133
|
-
innerJoin(sourceExpr: SourceExpression, columns: string | string[]): void;
|
134
|
+
innerJoin(sourceExpr: SourceExpression, columns: string | string[], resolver?: TableColumnResolver | null): void;
|
134
135
|
/**
|
135
136
|
* Appends a LEFT JOIN clause to the query using a SourceExpression.
|
136
137
|
* @param sourceExpr The source expression to join
|
137
138
|
* @param columns The columns to use for the join condition
|
138
139
|
*/
|
139
|
-
leftJoin(sourceExpr: SourceExpression, columns: string | string[]): void;
|
140
|
+
leftJoin(sourceExpr: SourceExpression, columns: string | string[], resolver?: TableColumnResolver | null): void;
|
140
141
|
/**
|
141
142
|
* Appends a RIGHT JOIN clause to the query using a SourceExpression.
|
142
143
|
* @param sourceExpr The source expression to join
|
143
144
|
* @param columns The columns to use for the join condition
|
144
145
|
*/
|
145
|
-
rightJoin(sourceExpr: SourceExpression, columns: string | string[]): void;
|
146
|
+
rightJoin(sourceExpr: SourceExpression, columns: string | string[], resolver?: TableColumnResolver | null): void;
|
146
147
|
/**
|
147
148
|
* Internal helper to append a JOIN clause.
|
148
149
|
* Parses the table source, finds the corresponding columns in the existing query context,
|
@@ -170,4 +171,28 @@ export declare class SimpleSelectQuery extends SqlComponent {
|
|
170
171
|
* @param alias Optional alias for the CTE (e.g. 'cte_name')
|
171
172
|
*/
|
172
173
|
appendWithRaw(rawText: string, alias: string): void;
|
174
|
+
/**
|
175
|
+
* Overrides a select item using a template literal function.
|
176
|
+
* The callback receives the SQL string of the original expression and must return a new SQL string.
|
177
|
+
* The result is parsed and set as the new select item value.
|
178
|
+
*
|
179
|
+
* Example usage:
|
180
|
+
* query.overrideSelectItemRaw("journal_date", expr => `greatest(${expr}, DATE '2025-01-01')`)
|
181
|
+
*
|
182
|
+
* @param columnName The name of the column to override
|
183
|
+
* @param fn Callback that receives the SQL string of the original expression and returns a new SQL string
|
184
|
+
*/
|
185
|
+
overrideSelectItemExpr(columnName: string, fn: (expr: string) => string): void;
|
186
|
+
/**
|
187
|
+
* Appends a WHERE clause using the expression for the specified column.
|
188
|
+
* If `options.upstream` is true, applies to all upstream queries containing the column.
|
189
|
+
* If false or omitted, applies only to the current query.
|
190
|
+
*
|
191
|
+
* @param columnName The name of the column to target.
|
192
|
+
* @param exprBuilder Function that receives the column expression as a string and returns the WHERE condition string.
|
193
|
+
* @param options Optional settings. If `upstream` is true, applies to upstream queries.
|
194
|
+
*/
|
195
|
+
appendWhereExpr(columnName: string, exprBuilder: (expr: string) => string, options?: {
|
196
|
+
upstream?: boolean;
|
197
|
+
}): void;
|
173
198
|
}
|
@@ -0,0 +1,17 @@
|
|
1
|
+
import { InsertQuery } from "../models/InsertQuery";
|
2
|
+
import { Lexeme } from "../models/Lexeme";
|
3
|
+
export declare class InsertQueryParser {
|
4
|
+
/**
|
5
|
+
* Parse SQL string to InsertQuery AST.
|
6
|
+
* @param query SQL string
|
7
|
+
*/
|
8
|
+
static parse(query: string): InsertQuery;
|
9
|
+
/**
|
10
|
+
* Parse from lexeme array (for internal use and tests)
|
11
|
+
*/
|
12
|
+
static parseFromLexeme(lexemes: Lexeme[], index: number): {
|
13
|
+
value: InsertQuery;
|
14
|
+
newIndex: number;
|
15
|
+
};
|
16
|
+
private static parseFullQualifiedName;
|
17
|
+
}
|
@@ -2,6 +2,13 @@ import { Lexeme } from "../models/Lexeme";
|
|
2
2
|
import { SelectQuery } from "../models/SelectQuery";
|
3
3
|
export declare class SelectQueryParser {
|
4
4
|
static parse(query: string): SelectQuery;
|
5
|
+
/**
|
6
|
+
* Asynchronously parse SQL string to AST.
|
7
|
+
* This method wraps the synchronous parse logic in a Promise for future extensibility.
|
8
|
+
* @param query SQL string to parse
|
9
|
+
* @returns Promise<SelectQuery>
|
10
|
+
*/
|
11
|
+
static parseAsync(query: string): Promise<SelectQuery>;
|
5
12
|
private static unionCommandSet;
|
6
13
|
private static selectCommandSet;
|
7
14
|
static parseFromLexeme(lexemes: Lexeme[], index: number): {
|
@@ -29,7 +29,7 @@ export declare abstract class BaseTokenReader {
|
|
29
29
|
/**
|
30
30
|
* Create a lexeme with the specified type and value
|
31
31
|
*/
|
32
|
-
protected createLexeme(type: TokenType, value: string,
|
32
|
+
protected createLexeme(type: TokenType, value: string, comments?: string[] | null): Lexeme;
|
33
33
|
/**
|
34
34
|
* Get debug info for error reporting
|
35
35
|
*/
|
@@ -1,9 +1,10 @@
|
|
1
1
|
import { BaseTokenReader } from './BaseTokenReader';
|
2
2
|
import { Lexeme } from '../models/Lexeme';
|
3
3
|
/**
|
4
|
-
* Reads SQL parameter tokens (@param, :param, $param,
|
4
|
+
* Reads SQL parameter tokens (@param, :param, $param, ?, ${param})
|
5
5
|
*/
|
6
6
|
export declare class ParameterTokenReader extends BaseTokenReader {
|
7
|
+
constructor(input: string);
|
7
8
|
/**
|
8
9
|
* Try to read a parameter token
|
9
10
|
*/
|
@@ -1,12 +1,24 @@
|
|
1
1
|
import { SqlComponent, SqlComponentVisitor } from "../models/SqlComponent";
|
2
2
|
interface FormatterConfig {
|
3
|
-
identifierEscape
|
3
|
+
identifierEscape?: {
|
4
4
|
start: string;
|
5
5
|
end: string;
|
6
6
|
};
|
7
|
-
parameterSymbol
|
7
|
+
parameterSymbol?: string | {
|
8
|
+
start: string;
|
9
|
+
end: string;
|
10
|
+
};
|
11
|
+
/**
|
12
|
+
* If false, named parameters are not supported (e.g. MySQL: use only '?').
|
13
|
+
* If true (default), named parameters are output (e.g. :userId, @userId).
|
14
|
+
*/
|
15
|
+
supportNamedParameter?: boolean;
|
8
16
|
}
|
9
17
|
export declare class Formatter implements SqlComponentVisitor<string> {
|
18
|
+
/**
|
19
|
+
* Preset configs for common DB dialects.
|
20
|
+
*/
|
21
|
+
static readonly PRESETS: Record<string, FormatterConfig>;
|
10
22
|
private handlers;
|
11
23
|
private config;
|
12
24
|
constructor();
|
@@ -57,7 +69,7 @@ export declare class Formatter implements SqlComponentVisitor<string> {
|
|
57
69
|
private visitBinaryExpression;
|
58
70
|
private visitLiteralExpression;
|
59
71
|
private visitParameterExpression;
|
60
|
-
private
|
72
|
+
private visitSelectItemExpression;
|
61
73
|
private visitSelectClause;
|
62
74
|
private visitSelectQuery;
|
63
75
|
private visitArrayExpression;
|
@@ -78,5 +90,10 @@ export declare class Formatter implements SqlComponentVisitor<string> {
|
|
78
90
|
private visitIdentifierString;
|
79
91
|
private visitValuesQuery;
|
80
92
|
private visitTupleExpression;
|
93
|
+
/**
|
94
|
+
* Formats a CreateTableQuery into SQL string.
|
95
|
+
*/
|
96
|
+
private visitCreateTableQuery;
|
97
|
+
private visitInsertQuery;
|
81
98
|
}
|
82
99
|
export {};
|
@@ -1,4 +1,6 @@
|
|
1
1
|
import { SelectQuery, SimpleSelectQuery } from "../models/SelectQuery";
|
2
|
+
import { CreateTableQuery } from "../models/CreateTableQuery";
|
3
|
+
import { InsertQuery } from "../models/InsertQuery";
|
2
4
|
/**
|
3
5
|
* Converts various SELECT query types to a standard SimpleSelectQuery format.
|
4
6
|
* - SimpleSelectQuery is returned as-is
|
@@ -14,9 +16,10 @@ export declare class QueryConverter {
|
|
14
16
|
* Converts a SELECT query to a standard SimpleSelectQuery form.
|
15
17
|
*
|
16
18
|
* @param query The query to convert
|
19
|
+
* @param columns Optional: column names for VALUES query
|
17
20
|
* @returns A SimpleSelectQuery
|
18
21
|
*/
|
19
|
-
static toSimple(query: SelectQuery): SimpleSelectQuery;
|
22
|
+
static toSimple(query: SelectQuery, columns?: string[]): SimpleSelectQuery;
|
20
23
|
/**
|
21
24
|
* Converts a BinarySelectQuery (UNION, EXCEPT, etc.) to a SimpleSelectQuery
|
22
25
|
* by wrapping it in SELECT * FROM (original) AS bq
|
@@ -26,9 +29,10 @@ export declare class QueryConverter {
|
|
26
29
|
*/
|
27
30
|
private static toSimpleBinaryQuery;
|
28
31
|
/**
|
29
|
-
* Converts a ValuesQuery to a SimpleSelectQuery with sequentially numbered columns
|
32
|
+
* Converts a ValuesQuery to a SimpleSelectQuery with sequentially numbered columns or user-specified columns
|
30
33
|
*
|
31
34
|
* @param query The VALUES query to convert
|
35
|
+
* @param columns Optional: column names
|
32
36
|
* @returns A SimpleSelectQuery
|
33
37
|
*/
|
34
38
|
private static toSimpleValuesQuery;
|
@@ -38,4 +42,20 @@ export declare class QueryConverter {
|
|
38
42
|
* @returns A SELECT clause with *
|
39
43
|
*/
|
40
44
|
private static createSelectAllClause;
|
45
|
+
/**
|
46
|
+
* Converts a SELECT query to a CREATE TABLE query (CREATE [TEMPORARY] TABLE ... AS SELECT ...)
|
47
|
+
* @param query The SELECT query to use as the source
|
48
|
+
* @param tableName The name of the table to create
|
49
|
+
* @param isTemporary If true, creates a temporary table
|
50
|
+
* @returns A CreateTableQuery instance
|
51
|
+
*/
|
52
|
+
static toCreateTableQuery(query: SelectQuery, tableName: string, isTemporary?: boolean): CreateTableQuery;
|
53
|
+
/**
|
54
|
+
* Converts a SELECT query to an INSERT query (INSERT INTO ... SELECT ...)
|
55
|
+
* @param selectQuery The SELECT query to use as the source
|
56
|
+
* @param tableName The name of the table to insert into
|
57
|
+
* @param columns Optional: array of column names. If omitted, columns are inferred from the selectQuery
|
58
|
+
* @returns An InsertQuery instance
|
59
|
+
*/
|
60
|
+
static toInsertQuery(selectQuery: SimpleSelectQuery, tableName: string): InsertQuery;
|
41
61
|
}
|
@@ -12,11 +12,11 @@ export declare class SelectValueCollector implements SqlComponentVisitor<void> {
|
|
12
12
|
private selectValues;
|
13
13
|
private visitedNodes;
|
14
14
|
private isRootVisit;
|
15
|
-
private tableColumnResolver
|
15
|
+
private tableColumnResolver;
|
16
16
|
private commonTableCollector;
|
17
17
|
private commonTables;
|
18
18
|
initialCommonTables: CommonTable[] | null;
|
19
|
-
constructor(tableColumnResolver?: TableColumnResolver, initialCommonTables?: CommonTable[] | null);
|
19
|
+
constructor(tableColumnResolver?: TableColumnResolver | null, initialCommonTables?: CommonTable[] | null);
|
20
20
|
/**
|
21
21
|
* Get all collected SelectItems as an array of objects with name and value properties
|
22
22
|
* @returns An array of objects with name (string) and value (ValueComponent) properties
|
@@ -52,9 +52,7 @@ export declare class SelectValueCollector implements SqlComponentVisitor<void> {
|
|
52
52
|
private processSourceExpression;
|
53
53
|
private visitSelectClause;
|
54
54
|
private processSelectItem;
|
55
|
-
private processValueComponent;
|
56
55
|
private visitSourceExpression;
|
57
56
|
private visitFromClause;
|
58
57
|
private addSelectValueAsUnique;
|
59
58
|
}
|
60
|
-
export { TableColumnResolver };
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { SqlComponent, SqlComponentVisitor } from "../models/SqlComponent";
|
2
2
|
import { ValueComponent } from "../models/ValueComponent";
|
3
|
-
import { TableColumnResolver } from "./
|
3
|
+
import { TableColumnResolver } from "./TableColumnResolver";
|
4
4
|
/**
|
5
5
|
* A visitor that collects all ColumnReference instances from a SQL query structure.
|
6
6
|
* This visitor scans through all clauses and collects all unique ColumnReference objects.
|
@@ -15,11 +15,11 @@ export declare class SelectableColumnCollector implements SqlComponentVisitor<vo
|
|
15
15
|
private visitedNodes;
|
16
16
|
private formatter;
|
17
17
|
private isRootVisit;
|
18
|
-
private tableColumnResolver
|
18
|
+
private tableColumnResolver;
|
19
19
|
private commonTableCollector;
|
20
20
|
private selectValueCollector;
|
21
21
|
private commonTables;
|
22
|
-
constructor(tableColumnResolver?: TableColumnResolver);
|
22
|
+
constructor(tableColumnResolver?: TableColumnResolver | null);
|
23
23
|
getValues(): {
|
24
24
|
name: string;
|
25
25
|
value: ValueComponent;
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { SelectQuery } from "../models/SelectQuery";
|
1
|
+
import { SelectQuery, SimpleSelectQuery } from "../models/SelectQuery";
|
2
2
|
/**
|
3
3
|
* UpstreamSelectQueryFinder searches upstream queries for the specified columns.
|
4
4
|
* If a query (including its upstream CTEs or subqueries) contains all columns,
|
@@ -15,7 +15,7 @@ export declare class UpstreamSelectQueryFinder {
|
|
15
15
|
* @param columnNames Array of column names to check for.
|
16
16
|
* @returns An array of SelectQuery objects, or an empty array if not found.
|
17
17
|
*/
|
18
|
-
find(query: SelectQuery, columnNames: string[]):
|
18
|
+
find(query: SelectQuery, columnNames: string[]): SimpleSelectQuery[];
|
19
19
|
private handleTableSource;
|
20
20
|
private handleSubQuerySource;
|
21
21
|
/**
|
@@ -0,0 +1,9 @@
|
|
1
|
+
import { Lexeme } from "../models/Lexeme";
|
2
|
+
/**
|
3
|
+
* Parses SQL Server-style escaped identifiers ([table]) and dot-separated identifiers.
|
4
|
+
* Returns the list of identifiers and the new index after parsing.
|
5
|
+
*/
|
6
|
+
export declare function parseEscapedOrDotSeparatedIdentifiers(lexemes: Lexeme[], index: number): {
|
7
|
+
identifiers: string[];
|
8
|
+
newIndex: number;
|
9
|
+
};
|
@@ -0,0 +1,16 @@
|
|
1
|
+
// Utility to extract namespaces and the final name from an array of identifiers
|
2
|
+
// Example: ["db", "schema", "users"] => { namespaces: ["db", "schema"], name: "users" }
|
3
|
+
function extractNamespacesAndName(identifiers) {
|
4
|
+
if (!identifiers || identifiers.length === 0) {
|
5
|
+
throw new Error("Identifier list is empty");
|
6
|
+
}
|
7
|
+
if (identifiers.length === 1) {
|
8
|
+
return { namespaces: null, name: identifiers[0] };
|
9
|
+
}
|
10
|
+
return {
|
11
|
+
namespaces: identifiers.slice(0, -1),
|
12
|
+
name: identifiers[identifiers.length - 1]
|
13
|
+
};
|
14
|
+
}
|
15
|
+
export { extractNamespacesAndName };
|
16
|
+
//# sourceMappingURL=extractNamespacesAndName.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"extractNamespacesAndName.js","sourceRoot":"","sources":["../../../src/utils/extractNamespacesAndName.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,wFAAwF;AACxF,SAAS,wBAAwB,CAAC,WAAqB;IACnD,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAChD,CAAC;IACD,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;IACtD,CAAC;IACD,OAAO;QACH,UAAU,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpC,IAAI,EAAE,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;KAC5C,CAAC;AACN,CAAC;AAED,OAAO,EAAE,wBAAwB,EAAE,CAAC"}
|
@@ -0,0 +1,39 @@
|
|
1
|
+
import { TokenType } from "../models/Lexeme";
|
2
|
+
/**
|
3
|
+
* Parses SQL Server-style escaped identifiers ([table]) and dot-separated identifiers.
|
4
|
+
* Returns the list of identifiers and the new index after parsing.
|
5
|
+
*/
|
6
|
+
export function parseEscapedOrDotSeparatedIdentifiers(lexemes, index) {
|
7
|
+
let idx = index;
|
8
|
+
const identifiers = [];
|
9
|
+
while (idx < lexemes.length) {
|
10
|
+
if (lexemes[idx].type & TokenType.OpenBracket) {
|
11
|
+
idx++; // skip [
|
12
|
+
if (idx >= lexemes.length || !(lexemes[idx].type & TokenType.Identifier)) {
|
13
|
+
throw new Error(`Expected identifier after '[' at position ${idx}`);
|
14
|
+
}
|
15
|
+
identifiers.push(lexemes[idx].value);
|
16
|
+
idx++;
|
17
|
+
if (idx >= lexemes.length || lexemes[idx].value !== "]") {
|
18
|
+
throw new Error(`Expected closing ']' after identifier at position ${idx}`);
|
19
|
+
}
|
20
|
+
idx++; // skip ]
|
21
|
+
}
|
22
|
+
else if (lexemes[idx].type & TokenType.Identifier) {
|
23
|
+
identifiers.push(lexemes[idx].value);
|
24
|
+
idx++;
|
25
|
+
}
|
26
|
+
else {
|
27
|
+
break;
|
28
|
+
}
|
29
|
+
// Handle dot for schema.table or db.schema.table
|
30
|
+
if (idx < lexemes.length && (lexemes[idx].type & TokenType.Dot)) {
|
31
|
+
idx++; // skip dot
|
32
|
+
}
|
33
|
+
else {
|
34
|
+
break;
|
35
|
+
}
|
36
|
+
}
|
37
|
+
return { identifiers, newIndex: idx };
|
38
|
+
}
|
39
|
+
//# sourceMappingURL=parseEscapedOrDotSeparatedIdentifiers.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"parseEscapedOrDotSeparatedIdentifiers.js","sourceRoot":"","sources":["../../../src/utils/parseEscapedOrDotSeparatedIdentifiers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAErD;;;GAGG;AACH,MAAM,UAAU,qCAAqC,CAAC,OAAiB,EAAE,KAAa;IAClF,IAAI,GAAG,GAAG,KAAK,CAAC;IAChB,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,OAAO,GAAG,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QAC1B,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;YAC5C,GAAG,EAAE,CAAC,CAAC,SAAS;YAChB,IAAI,GAAG,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;gBACvE,MAAM,IAAI,KAAK,CAAC,6CAA6C,GAAG,EAAE,CAAC,CAAC;YACxE,CAAC;YACD,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;YACrC,GAAG,EAAE,CAAC;YACN,IAAI,GAAG,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,GAAG,EAAE,CAAC;gBACtD,MAAM,IAAI,KAAK,CAAC,qDAAqD,GAAG,EAAE,CAAC,CAAC;YAChF,CAAC;YACD,GAAG,EAAE,CAAC,CAAC,SAAS;QACpB,CAAC;aAAM,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC;YAClD,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;YACrC,GAAG,EAAE,CAAC;QACV,CAAC;aAAM,CAAC;YACJ,MAAM;QACV,CAAC;QACD,iDAAiD;QACjD,IAAI,GAAG,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9D,GAAG,EAAE,CAAC,CAAC,WAAW;QACtB,CAAC;aAAM,CAAC;YACJ,MAAM;QACV,CAAC;IACL,CAAC;IACD,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;AAC1C,CAAC"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
@@ -16,6 +16,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
17
17
|
// Entry point for rawsql-ts package
|
18
18
|
__exportStar(require("./parsers/SelectQueryParser"), exports);
|
19
|
+
__exportStar(require("./parsers/InsertQueryParser"), exports);
|
19
20
|
__exportStar(require("./models/BinarySelectQuery"), exports);
|
20
21
|
__exportStar(require("./models/SelectQuery"), exports);
|
21
22
|
__exportStar(require("./models/ValueComponent"), exports);
|
package/dist/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oCAAoC;AACpC,8DAA4C;AAE5C,6DAA2C;AAC3C,uDAAqC;AACrC,0DAAwC;AACxC,uDAAqC;AAErC,8DAA4C;AAC5C,+DAA6C;AAC7C,2DAAyC;AACzC,gEAA8C;AAC9C,sEAAoD;AACpD,2EAAyD;AACzD,qEAAmD;AACnD,sEAAoD;AACpD,2EAAyD;AACzD,oEAAoE"}
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oCAAoC;AACpC,8DAA4C;AAC5C,8DAA4C;AAE5C,6DAA2C;AAC3C,uDAAqC;AACrC,0DAAwC;AACxC,uDAAqC;AAErC,8DAA4C;AAC5C,+DAA6C;AAC7C,2DAAyC;AACzC,gEAA8C;AAC9C,sEAAoD;AACpD,2EAAyD;AACzD,qEAAmD;AACnD,sEAAoD;AACpD,2EAAyD;AACzD,oEAAoE"}
|
package/dist/models/Clause.d.ts
CHANGED
@@ -1,18 +1,17 @@
|
|
1
1
|
import { SelectQuery } from "./SelectQuery";
|
2
2
|
import { SqlComponent } from "./SqlComponent";
|
3
3
|
import { IdentifierString, RawString, ValueComponent, WindowFrameExpression } from "./ValueComponent";
|
4
|
-
export type SelectComponent = SelectItem | ValueComponent;
|
5
4
|
export declare class SelectItem extends SqlComponent {
|
6
5
|
static kind: symbol;
|
7
6
|
value: ValueComponent;
|
8
|
-
identifier: IdentifierString;
|
9
|
-
constructor(value: ValueComponent, name
|
7
|
+
identifier: IdentifierString | null;
|
8
|
+
constructor(value: ValueComponent, name?: string | null);
|
10
9
|
}
|
11
10
|
export declare class SelectClause extends SqlComponent {
|
12
11
|
static kind: symbol;
|
13
|
-
items:
|
12
|
+
items: SelectItem[];
|
14
13
|
distinct: DistinctComponent | null;
|
15
|
-
constructor(items:
|
14
|
+
constructor(items: SelectItem[], distinct?: DistinctComponent | null);
|
16
15
|
}
|
17
16
|
export type DistinctComponent = Distinct | DistinctOn;
|
18
17
|
export declare class Distinct extends SqlComponent {
|
package/dist/models/Clause.js
CHANGED
@@ -4,10 +4,10 @@ exports.SourceAliasExpression = exports.ForClause = exports.LockMode = exports.F
|
|
4
4
|
const SqlComponent_1 = require("./SqlComponent");
|
5
5
|
const ValueComponent_1 = require("./ValueComponent");
|
6
6
|
class SelectItem extends SqlComponent_1.SqlComponent {
|
7
|
-
constructor(value, name) {
|
7
|
+
constructor(value, name = null) {
|
8
8
|
super();
|
9
9
|
this.value = value;
|
10
|
-
this.identifier = new ValueComponent_1.IdentifierString(name);
|
10
|
+
this.identifier = name ? new ValueComponent_1.IdentifierString(name) : null;
|
11
11
|
}
|
12
12
|
}
|
13
13
|
exports.SelectItem = SelectItem;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Clause.js","sourceRoot":"","sources":["../../src/models/Clause.ts"],"names":[],"mappings":";;;AACA,iDAA8C;AAC9C,qDAAuH;
|
1
|
+
{"version":3,"file":"Clause.js","sourceRoot":"","sources":["../../src/models/Clause.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,27 @@
|
|
1
|
+
import { SqlComponent } from "./SqlComponent";
|
2
|
+
import type { SelectQuery } from "./SelectQuery";
|
3
|
+
import { IdentifierString } from "./ValueComponent";
|
4
|
+
import { SimpleSelectQuery } from "./SimpleSelectQuery";
|
5
|
+
export declare class CreateTableQuery extends SqlComponent {
|
6
|
+
/** SqlComponent kind symbol for visitor pattern */
|
7
|
+
static kind: symbol;
|
8
|
+
/** Table name (with optional schema) */
|
9
|
+
tableName: IdentifierString;
|
10
|
+
/** If true, this is a temporary table */
|
11
|
+
isTemporary: boolean;
|
12
|
+
/** Optional: SELECT query for AS SELECT ... */
|
13
|
+
asSelectQuery?: SelectQuery;
|
14
|
+
constructor(params: {
|
15
|
+
tableName: string;
|
16
|
+
isTemporary?: boolean;
|
17
|
+
asSelectQuery?: SelectQuery;
|
18
|
+
});
|
19
|
+
/**
|
20
|
+
* Returns a SelectQuery that selects all columns from this table.
|
21
|
+
*/
|
22
|
+
getSelectQuery(): SimpleSelectQuery;
|
23
|
+
/**
|
24
|
+
* Returns a SelectQuery that counts all rows in this table.
|
25
|
+
*/
|
26
|
+
getCountQuery(): SimpleSelectQuery;
|
27
|
+
}
|
@@ -0,0 +1,66 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.CreateTableQuery = void 0;
|
4
|
+
const SqlComponent_1 = require("./SqlComponent");
|
5
|
+
const ValueComponent_1 = require("./ValueComponent");
|
6
|
+
const SimpleSelectQuery_1 = require("./SimpleSelectQuery");
|
7
|
+
const Clause_1 = require("./Clause");
|
8
|
+
const SelectValueCollector_1 = require("../transformers/SelectValueCollector");
|
9
|
+
// Represents a CREATE TABLE query model
|
10
|
+
// Supports temporary tables and AS SELECT ...
|
11
|
+
class CreateTableQuery extends SqlComponent_1.SqlComponent {
|
12
|
+
constructor(params) {
|
13
|
+
var _a;
|
14
|
+
super();
|
15
|
+
this.tableName = new ValueComponent_1.IdentifierString(params.tableName);
|
16
|
+
this.isTemporary = (_a = params.isTemporary) !== null && _a !== void 0 ? _a : false;
|
17
|
+
this.asSelectQuery = params.asSelectQuery;
|
18
|
+
}
|
19
|
+
/**
|
20
|
+
* Returns a SelectQuery that selects all columns from this table.
|
21
|
+
*/
|
22
|
+
getSelectQuery() {
|
23
|
+
let selectItems;
|
24
|
+
if (this.asSelectQuery) {
|
25
|
+
// Use SelectValueCollector to get columns from asSelectQuery
|
26
|
+
const collector = new SelectValueCollector_1.SelectValueCollector();
|
27
|
+
const values = collector.collect(this.asSelectQuery);
|
28
|
+
selectItems = values.map(val => new Clause_1.SelectItem(val.value, val.name));
|
29
|
+
}
|
30
|
+
else {
|
31
|
+
// fallback: wildcard
|
32
|
+
selectItems = [new Clause_1.SelectItem(new ValueComponent_1.RawString("*"))];
|
33
|
+
}
|
34
|
+
return new SimpleSelectQuery_1.SimpleSelectQuery(null, // withClause
|
35
|
+
new Clause_1.SelectClause(selectItems), new Clause_1.FromClause(new Clause_1.SourceExpression(new Clause_1.TableSource(null, this.tableName.name), null), null // joins
|
36
|
+
), null, // whereClause
|
37
|
+
null, // groupByClause
|
38
|
+
null, // havingClause
|
39
|
+
null, // orderByClause
|
40
|
+
null, // windowFrameClause
|
41
|
+
null, // rowLimitClause
|
42
|
+
null // forClause
|
43
|
+
);
|
44
|
+
}
|
45
|
+
/**
|
46
|
+
* Returns a SelectQuery that counts all rows in this table.
|
47
|
+
*/
|
48
|
+
getCountQuery() {
|
49
|
+
return new SimpleSelectQuery_1.SimpleSelectQuery(null, // withClause
|
50
|
+
new Clause_1.SelectClause([
|
51
|
+
new Clause_1.SelectItem(new ValueComponent_1.FunctionCall("count", new ValueComponent_1.ColumnReference(null, "*"), null))
|
52
|
+
]), new Clause_1.FromClause(new Clause_1.SourceExpression(new Clause_1.TableSource(null, this.tableName.name), null), null // joins
|
53
|
+
), null, // whereClause
|
54
|
+
null, // groupByClause
|
55
|
+
null, // havingClause
|
56
|
+
null, // orderByClause
|
57
|
+
null, // windowFrameClause
|
58
|
+
null, // rowLimitClause
|
59
|
+
null // forClause
|
60
|
+
);
|
61
|
+
}
|
62
|
+
}
|
63
|
+
exports.CreateTableQuery = CreateTableQuery;
|
64
|
+
/** SqlComponent kind symbol for visitor pattern */
|
65
|
+
CreateTableQuery.kind = Symbol("CreateTableQuery");
|
66
|
+
//# sourceMappingURL=CreateTableQuery.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"CreateTableQuery.js","sourceRoot":"","sources":["../../src/models/CreateTableQuery.ts"],"names":[],"mappings":";;;AAAA,iDAA8C;AAE9C,qDAA8F;AAC9F,2DAAwD;AACxD,qCAA+F;AAC/F,+EAA4E;AAE5E,wCAAwC;AACxC,8CAA8C;AAC9C,MAAa,gBAAiB,SAAQ,2BAAY;IAU9C,YAAY,MAIX;;QACG,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,SAAS,GAAG,IAAI,iCAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACxD,IAAI,CAAC,WAAW,GAAG,MAAA,MAAM,CAAC,WAAW,mCAAI,KAAK,CAAC;QAC/C,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;IAC9C,CAAC;IAED;;OAEG;IACH,cAAc;QACV,IAAI,WAAyB,CAAC;QAC9B,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,6DAA6D;YAC7D,MAAM,SAAS,GAAG,IAAI,2CAAoB,EAAE,CAAC;YAC7C,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACrD,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,mBAAU,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QACzE,CAAC;aAAM,CAAC;YACJ,qBAAqB;YACrB,WAAW,GAAG,CAAC,IAAI,mBAAU,CAAC,IAAI,0BAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACvD,CAAC;QACD,OAAO,IAAI,qCAAiB,CACxB,IAAI,EAAE,aAAa;QACnB,IAAI,qBAAY,CAAC,WAAW,CAAC,EAC7B,IAAI,mBAAU,CACV,IAAI,yBAAgB,CAChB,IAAI,oBAAW,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAC1C,IAAI,CACP,EACD,IAAI,CAAC,QAAQ;SAChB,EACD,IAAI,EAAE,cAAc;QACpB,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE,oBAAoB;QAC1B,IAAI,EAAE,iBAAiB;QACvB,IAAI,CAAE,YAAY;SACrB,CAAC;IACN,CAAC;IAED;;OAEG;IACH,aAAa;QACT,OAAO,IAAI,qCAAiB,CACxB,IAAI,EAAE,aAAa;QACnB,IAAI,qBAAY,CAAC;YACb,IAAI,mBAAU,CAAC,IAAI,6BAAY,CAAC,OAAO,EAAE,IAAI,gCAAe,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;SAClF,CAAC,EACF,IAAI,mBAAU,CACV,IAAI,yBAAgB,CAChB,IAAI,oBAAW,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAC1C,IAAI,CACP,EACD,IAAI,CAAC,QAAQ;SAChB,EACD,IAAI,EAAE,cAAc;QACpB,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE,oBAAoB;QAC1B,IAAI,EAAE,iBAAiB;QACvB,IAAI,CAAE,YAAY;SACrB,CAAC;IACN,CAAC;;AA/EL,4CAgFC;AA/EG,mDAAmD;AAC5C,qBAAI,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC"}
|
@@ -0,0 +1,21 @@
|
|
1
|
+
import { SqlComponent } from "./SqlComponent";
|
2
|
+
import { IdentifierString } from "./ValueComponent";
|
3
|
+
import { SelectQuery } from "./SelectQuery";
|
4
|
+
export declare class InsertQuery extends SqlComponent {
|
5
|
+
static kind: symbol;
|
6
|
+
namespaces: IdentifierString[] | null;
|
7
|
+
table: IdentifierString;
|
8
|
+
columns: IdentifierString[];
|
9
|
+
selectQuery: SelectQuery | null;
|
10
|
+
/**
|
11
|
+
* @param params.table Table name (string or IdentifierString)
|
12
|
+
* @param params.columns Array of column names (string[] or IdentifierString[])
|
13
|
+
* @param params.selectQuery SELECT/VALUES query (required)
|
14
|
+
*/
|
15
|
+
constructor(params: {
|
16
|
+
namespaces: (string | IdentifierString)[] | null;
|
17
|
+
table: string | IdentifierString;
|
18
|
+
columns: (string | IdentifierString)[];
|
19
|
+
selectQuery?: SelectQuery | null;
|
20
|
+
});
|
21
|
+
}
|
@@ -0,0 +1,28 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.InsertQuery = void 0;
|
4
|
+
// filepath: src/models/InsertQuery.ts
|
5
|
+
// Represents an INSERT query in SQL.
|
6
|
+
// Supports single/multi-row VALUES and INSERT ... SELECT.
|
7
|
+
const SqlComponent_1 = require("./SqlComponent");
|
8
|
+
const ValueComponent_1 = require("./ValueComponent");
|
9
|
+
class InsertQuery extends SqlComponent_1.SqlComponent {
|
10
|
+
/**
|
11
|
+
* @param params.table Table name (string or IdentifierString)
|
12
|
+
* @param params.columns Array of column names (string[] or IdentifierString[])
|
13
|
+
* @param params.selectQuery SELECT/VALUES query (required)
|
14
|
+
*/
|
15
|
+
constructor(params) {
|
16
|
+
var _a;
|
17
|
+
super();
|
18
|
+
this.namespaces = params.namespaces
|
19
|
+
? params.namespaces.map(ns => typeof ns === "string" ? new ValueComponent_1.IdentifierString(ns) : ns)
|
20
|
+
: null;
|
21
|
+
this.table = typeof params.table === "string" ? new ValueComponent_1.IdentifierString(params.table) : params.table;
|
22
|
+
this.columns = params.columns.map(c => typeof c === "string" ? new ValueComponent_1.IdentifierString(c) : c);
|
23
|
+
this.selectQuery = (_a = params.selectQuery) !== null && _a !== void 0 ? _a : null;
|
24
|
+
}
|
25
|
+
}
|
26
|
+
exports.InsertQuery = InsertQuery;
|
27
|
+
InsertQuery.kind = Symbol("InsertQuery");
|
28
|
+
//# sourceMappingURL=InsertQuery.js.map
|