rawsql-ts 0.4.0-beta → 0.6.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 +74 -9
- package/dist/esm/models/BinarySelectQuery.js +10 -0
- package/dist/esm/models/BinarySelectQuery.js.map +1 -1
- package/dist/esm/models/Clause.js +104 -6
- package/dist/esm/models/Clause.js.map +1 -1
- package/dist/esm/models/CreateTableQuery.js +1 -1
- package/dist/esm/models/CreateTableQuery.js.map +1 -1
- package/dist/esm/models/InsertQuery.js +2 -9
- package/dist/esm/models/InsertQuery.js.map +1 -1
- package/dist/esm/models/SelectQuery.js.map +1 -1
- package/dist/esm/models/SimpleSelectQuery.js +10 -0
- package/dist/esm/models/SimpleSelectQuery.js.map +1 -1
- package/dist/esm/models/UpdateQuery.js +25 -0
- package/dist/esm/models/UpdateQuery.js.map +1 -0
- package/dist/esm/models/ValueComponent.js +34 -15
- package/dist/esm/models/ValueComponent.js.map +1 -1
- package/dist/esm/models/ValuesQuery.js +10 -0
- package/dist/esm/models/ValuesQuery.js.map +1 -1
- package/dist/esm/parsers/FullNameParser.js +89 -0
- package/dist/esm/parsers/FullNameParser.js.map +1 -0
- package/dist/esm/parsers/FunctionExpressionParser.js +33 -32
- package/dist/esm/parsers/FunctionExpressionParser.js.map +1 -1
- package/dist/esm/parsers/IdentifierParser.js +5 -30
- package/dist/esm/parsers/IdentifierParser.js.map +1 -1
- package/dist/esm/parsers/InsertQueryParser.js +6 -27
- package/dist/esm/parsers/InsertQueryParser.js.map +1 -1
- package/dist/esm/parsers/ReturningClauseParser.js +31 -0
- package/dist/esm/parsers/ReturningClauseParser.js.map +1 -0
- package/dist/esm/parsers/SetClauseParser.js +39 -0
- package/dist/esm/parsers/SetClauseParser.js.map +1 -0
- package/dist/esm/parsers/SourceExpressionParser.js +19 -0
- package/dist/esm/parsers/SourceExpressionParser.js.map +1 -1
- package/dist/esm/parsers/SourceParser.js +16 -8
- package/dist/esm/parsers/SourceParser.js.map +1 -1
- package/dist/esm/parsers/UpdateClauseParser.js +17 -0
- package/dist/esm/parsers/UpdateClauseParser.js.map +1 -0
- package/dist/esm/parsers/UpdateQueryParser.js +84 -0
- package/dist/esm/parsers/UpdateQueryParser.js.map +1 -0
- package/dist/esm/parsers/ValueParser.js +13 -11
- package/dist/esm/parsers/ValueParser.js.map +1 -1
- package/dist/esm/transformers/CTEDisabler.js +2 -2
- package/dist/esm/transformers/CTEDisabler.js.map +1 -1
- package/dist/esm/transformers/Formatter.js +152 -25
- package/dist/esm/transformers/Formatter.js.map +1 -1
- package/dist/esm/transformers/ParameterCollector.js +33 -0
- package/dist/esm/transformers/ParameterCollector.js.map +1 -0
- package/dist/esm/transformers/QueryBuilder.js +54 -6
- package/dist/esm/transformers/QueryBuilder.js.map +1 -1
- package/dist/esm/transformers/SelectValueCollector.js +4 -4
- package/dist/esm/transformers/UpstreamSelectQueryFinder.js +1 -1
- package/dist/esm/types/models/BinarySelectQuery.d.ts +7 -1
- package/dist/esm/types/models/Clause.d.ts +58 -4
- package/dist/esm/types/models/InsertQuery.d.ts +4 -9
- package/dist/esm/types/models/SelectQuery.d.ts +4 -1
- package/dist/esm/types/models/SimpleSelectQuery.d.ts +7 -1
- package/dist/esm/types/models/UpdateQuery.d.ts +31 -0
- package/dist/esm/types/models/ValueComponent.d.ts +14 -5
- package/dist/esm/types/models/ValuesQuery.d.ts +8 -1
- package/dist/esm/types/parsers/FullNameParser.d.ts +26 -0
- package/dist/esm/types/parsers/InsertQueryParser.d.ts +0 -1
- package/dist/esm/types/parsers/ReturningClauseParser.d.ts +12 -0
- package/dist/esm/types/parsers/SetClauseParser.d.ts +11 -0
- package/dist/esm/types/parsers/SourceExpressionParser.d.ts +8 -0
- package/dist/esm/types/parsers/SourceParser.d.ts +14 -0
- package/dist/esm/types/parsers/UpdateClauseParser.d.ts +15 -0
- package/dist/esm/types/parsers/UpdateQueryParser.d.ts +16 -0
- package/dist/esm/types/transformers/Formatter.d.ts +18 -3
- package/dist/esm/types/transformers/ParameterCollector.d.ts +12 -0
- package/dist/esm/types/transformers/QueryBuilder.d.ts +9 -0
- package/dist/esm/types/utils/ParameterHelper.d.ts +14 -0
- package/dist/esm/utils/ParameterHelper.js +27 -0
- package/dist/esm/utils/ParameterHelper.js.map +1 -0
- package/dist/models/BinarySelectQuery.d.ts +7 -1
- package/dist/models/BinarySelectQuery.js +10 -0
- package/dist/models/BinarySelectQuery.js.map +1 -1
- package/dist/models/Clause.d.ts +58 -4
- package/dist/models/Clause.js +110 -7
- package/dist/models/Clause.js.map +1 -1
- package/dist/models/CreateTableQuery.js +1 -1
- package/dist/models/CreateTableQuery.js.map +1 -1
- package/dist/models/InsertQuery.d.ts +4 -9
- package/dist/models/InsertQuery.js +2 -9
- package/dist/models/InsertQuery.js.map +1 -1
- package/dist/models/SelectQuery.d.ts +4 -1
- package/dist/models/SelectQuery.js.map +1 -1
- package/dist/models/SimpleSelectQuery.d.ts +7 -1
- package/dist/models/SimpleSelectQuery.js +10 -0
- package/dist/models/SimpleSelectQuery.js.map +1 -1
- package/dist/models/UpdateQuery.d.ts +31 -0
- package/dist/models/UpdateQuery.js +29 -0
- package/dist/models/UpdateQuery.js.map +1 -0
- package/dist/models/ValueComponent.d.ts +14 -5
- package/dist/models/ValueComponent.js +34 -15
- package/dist/models/ValueComponent.js.map +1 -1
- package/dist/models/ValuesQuery.d.ts +8 -1
- package/dist/models/ValuesQuery.js +10 -0
- package/dist/models/ValuesQuery.js.map +1 -1
- package/dist/parsers/FullNameParser.d.ts +26 -0
- package/dist/parsers/FullNameParser.js +93 -0
- package/dist/parsers/FullNameParser.js.map +1 -0
- package/dist/parsers/FunctionExpressionParser.js +32 -31
- package/dist/parsers/FunctionExpressionParser.js.map +1 -1
- package/dist/parsers/IdentifierParser.js +5 -30
- package/dist/parsers/IdentifierParser.js.map +1 -1
- package/dist/parsers/InsertQueryParser.d.ts +0 -1
- package/dist/parsers/InsertQueryParser.js +6 -27
- package/dist/parsers/InsertQueryParser.js.map +1 -1
- package/dist/parsers/ReturningClauseParser.d.ts +12 -0
- package/dist/parsers/ReturningClauseParser.js +35 -0
- package/dist/parsers/ReturningClauseParser.js.map +1 -0
- package/dist/parsers/SetClauseParser.d.ts +11 -0
- package/dist/parsers/SetClauseParser.js +43 -0
- package/dist/parsers/SetClauseParser.js.map +1 -0
- package/dist/parsers/SourceExpressionParser.d.ts +8 -0
- package/dist/parsers/SourceExpressionParser.js +19 -0
- package/dist/parsers/SourceExpressionParser.js.map +1 -1
- package/dist/parsers/SourceParser.d.ts +14 -0
- package/dist/parsers/SourceParser.js +16 -8
- package/dist/parsers/SourceParser.js.map +1 -1
- package/dist/parsers/UpdateClauseParser.d.ts +15 -0
- package/dist/parsers/UpdateClauseParser.js +21 -0
- package/dist/parsers/UpdateClauseParser.js.map +1 -0
- package/dist/parsers/UpdateQueryParser.d.ts +16 -0
- package/dist/parsers/UpdateQueryParser.js +88 -0
- package/dist/parsers/UpdateQueryParser.js.map +1 -0
- package/dist/parsers/ValueParser.js +13 -11
- package/dist/parsers/ValueParser.js.map +1 -1
- package/dist/transformers/CTEDisabler.js +2 -2
- package/dist/transformers/CTEDisabler.js.map +1 -1
- package/dist/transformers/Formatter.d.ts +18 -3
- package/dist/transformers/Formatter.js +152 -25
- package/dist/transformers/Formatter.js.map +1 -1
- package/dist/transformers/ParameterCollector.d.ts +12 -0
- package/dist/transformers/ParameterCollector.js +37 -0
- package/dist/transformers/ParameterCollector.js.map +1 -0
- package/dist/transformers/QueryBuilder.d.ts +9 -0
- package/dist/transformers/QueryBuilder.js +53 -5
- package/dist/transformers/QueryBuilder.js.map +1 -1
- package/dist/transformers/SelectValueCollector.js +4 -4
- package/dist/transformers/UpstreamSelectQueryFinder.js +1 -1
- package/dist/utils/ParameterHelper.d.ts +14 -0
- package/dist/utils/ParameterHelper.js +31 -0
- package/dist/utils/ParameterHelper.js.map +1 -0
- package/package.json +2 -2
- package/dist/esm/types/utils/extractNamespacesAndName.d.ts +0 -5
- package/dist/esm/types/utils/parseEscapedOrDotSeparatedIdentifiers.d.ts +0 -9
- package/dist/esm/utils/extractNamespacesAndName.js +0 -16
- package/dist/esm/utils/extractNamespacesAndName.js.map +0 -1
- package/dist/esm/utils/parseEscapedOrDotSeparatedIdentifiers.js +0 -39
- package/dist/esm/utils/parseEscapedOrDotSeparatedIdentifiers.js.map +0 -1
- package/dist/utils/extractNamespacesAndName.d.ts +0 -5
- package/dist/utils/extractNamespacesAndName.js +0 -18
- package/dist/utils/extractNamespacesAndName.js.map +0 -1
- package/dist/utils/parseEscapedOrDotSeparatedIdentifiers.d.ts +0 -9
- package/dist/utils/parseEscapedOrDotSeparatedIdentifiers.js +0 -42
- package/dist/utils/parseEscapedOrDotSeparatedIdentifiers.js.map +0 -1
@@ -21,16 +21,8 @@ ValueList.kind = Symbol("ValueList");
|
|
21
21
|
class ColumnReference extends SqlComponent_1.SqlComponent {
|
22
22
|
constructor(namespaces, column) {
|
23
23
|
super();
|
24
|
-
|
25
|
-
|
26
|
-
}
|
27
|
-
else if (Array.isArray(namespaces)) {
|
28
|
-
this.namespaces = namespaces.map((namespace) => new IdentifierString(namespace));
|
29
|
-
}
|
30
|
-
else {
|
31
|
-
this.namespaces = null;
|
32
|
-
}
|
33
|
-
this.column = new IdentifierString(column);
|
24
|
+
this.namespaces = toIdentifierStringArray(namespaces);
|
25
|
+
this.column = typeof column === "string" ? new IdentifierString(column) : column;
|
34
26
|
}
|
35
27
|
toString() {
|
36
28
|
if (this.namespaces) {
|
@@ -52,9 +44,10 @@ class ColumnReference extends SqlComponent_1.SqlComponent {
|
|
52
44
|
exports.ColumnReference = ColumnReference;
|
53
45
|
ColumnReference.kind = Symbol("ColumnReferenceExpression");
|
54
46
|
class FunctionCall extends SqlComponent_1.SqlComponent {
|
55
|
-
constructor(name, argument, over) {
|
47
|
+
constructor(namespaces, name, argument, over) {
|
56
48
|
super();
|
57
|
-
this.
|
49
|
+
this.namespaces = toIdentifierStringArray(namespaces);
|
50
|
+
this.name = typeof name === "string" ? new RawString(name) : name;
|
58
51
|
this.argument = argument;
|
59
52
|
this.over = over;
|
60
53
|
}
|
@@ -138,9 +131,11 @@ class LiteralValue extends SqlComponent_1.SqlComponent {
|
|
138
131
|
exports.LiteralValue = LiteralValue;
|
139
132
|
LiteralValue.kind = Symbol("LiteralExpression");
|
140
133
|
class ParameterExpression extends SqlComponent_1.SqlComponent {
|
141
|
-
constructor(name) {
|
134
|
+
constructor(name, value = null) {
|
142
135
|
super();
|
143
136
|
this.name = new RawString(name);
|
137
|
+
this.value = value;
|
138
|
+
this.index = null;
|
144
139
|
}
|
145
140
|
}
|
146
141
|
exports.ParameterExpression = ParameterExpression;
|
@@ -239,11 +234,20 @@ exports.StringSpecifierExpression = StringSpecifierExpression;
|
|
239
234
|
StringSpecifierExpression.kind = Symbol("StringSpecifierExpression");
|
240
235
|
// other
|
241
236
|
class TypeValue extends SqlComponent_1.SqlComponent {
|
242
|
-
constructor(
|
237
|
+
constructor(namespaces, name, argument = null) {
|
243
238
|
super();
|
244
|
-
this.
|
239
|
+
this.namespaces = toIdentifierStringArray(namespaces);
|
240
|
+
this.name = typeof name === "string" ? new RawString(name) : name;
|
245
241
|
this.argument = argument;
|
246
242
|
}
|
243
|
+
getTypeName() {
|
244
|
+
if (this.namespaces && this.namespaces.length > 0) {
|
245
|
+
return this.namespaces.map(ns => ns.name).join(".") + "." + this.name.value;
|
246
|
+
}
|
247
|
+
else {
|
248
|
+
return this.name.value;
|
249
|
+
}
|
250
|
+
}
|
247
251
|
}
|
248
252
|
exports.TypeValue = TypeValue;
|
249
253
|
TypeValue.kind = Symbol("TypeValue");
|
@@ -255,4 +259,19 @@ class TupleExpression extends SqlComponent_1.SqlComponent {
|
|
255
259
|
}
|
256
260
|
exports.TupleExpression = TupleExpression;
|
257
261
|
TupleExpression.kind = Symbol("TupleExpression");
|
262
|
+
function toIdentifierStringArray(input) {
|
263
|
+
if (input == null)
|
264
|
+
return null;
|
265
|
+
if (typeof input === "string")
|
266
|
+
return [new IdentifierString(input)];
|
267
|
+
if (Array.isArray(input)) {
|
268
|
+
if (typeof input[0] === "string") {
|
269
|
+
return input.map(ns => new IdentifierString(ns));
|
270
|
+
}
|
271
|
+
else {
|
272
|
+
return input;
|
273
|
+
}
|
274
|
+
}
|
275
|
+
return null;
|
276
|
+
}
|
258
277
|
//# sourceMappingURL=ValueComponent.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ValueComponent.js","sourceRoot":"","sources":["../../src/models/ValueComponent.ts"],"names":[],"mappings":";;;AAEA,iDAA8C;AAuB9C,MAAa,WAAY,SAAQ,2BAAY;IAGzC,YAAY,WAAwB;QAChC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACnC,CAAC;;AANL,kCAOC;AANU,gBAAI,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;AAQxC,MAAa,SAAU,SAAQ,2BAAY;IAGvC,YAAY,MAAwB;QAChC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;;AANL,8BAOC;AANU,cAAI,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AAQtC,MAAa,eAAgB,SAAQ,2BAAY;IAM7C,YAAY,
|
1
|
+
{"version":3,"file":"ValueComponent.js","sourceRoot":"","sources":["../../src/models/ValueComponent.ts"],"names":[],"mappings":"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"}
|
@@ -1,10 +1,11 @@
|
|
1
|
+
import { SelectQuery } from "./SelectQuery";
|
1
2
|
import { SimpleSelectQuery } from "./SimpleSelectQuery";
|
2
3
|
import { SqlComponent } from "./SqlComponent";
|
3
4
|
import { TupleExpression } from "./ValueComponent";
|
4
5
|
/**
|
5
6
|
* Represents a VALUES query in SQL.
|
6
7
|
*/
|
7
|
-
export declare class ValuesQuery extends SqlComponent {
|
8
|
+
export declare class ValuesQuery extends SqlComponent implements SelectQuery {
|
8
9
|
static kind: symbol;
|
9
10
|
tuples: TupleExpression[];
|
10
11
|
/**
|
@@ -15,4 +16,10 @@ export declare class ValuesQuery extends SqlComponent {
|
|
15
16
|
columnAliases: string[] | null;
|
16
17
|
constructor(tuples: TupleExpression[], columnAliases?: string[] | null);
|
17
18
|
toSimpleSelectQuery(): SimpleSelectQuery;
|
19
|
+
/**
|
20
|
+
* Sets the value of a parameter by name in this query.
|
21
|
+
* @param name Parameter name
|
22
|
+
* @param value Value to set
|
23
|
+
*/
|
24
|
+
setParameter(name: string, value: any): this;
|
18
25
|
}
|
@@ -1,6 +1,7 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.ValuesQuery = void 0;
|
4
|
+
const ParameterHelper_1 = require("../utils/ParameterHelper");
|
4
5
|
const QueryBuilder_1 = require("../transformers/QueryBuilder");
|
5
6
|
const SqlComponent_1 = require("./SqlComponent");
|
6
7
|
/**
|
@@ -15,6 +16,15 @@ class ValuesQuery extends SqlComponent_1.SqlComponent {
|
|
15
16
|
toSimpleSelectQuery() {
|
16
17
|
return QueryBuilder_1.QueryBuilder.buildSimpleQuery(this);
|
17
18
|
}
|
19
|
+
/**
|
20
|
+
* Sets the value of a parameter by name in this query.
|
21
|
+
* @param name Parameter name
|
22
|
+
* @param value Value to set
|
23
|
+
*/
|
24
|
+
setParameter(name, value) {
|
25
|
+
ParameterHelper_1.ParameterHelper.set(this, name, value);
|
26
|
+
return this;
|
27
|
+
}
|
18
28
|
}
|
19
29
|
exports.ValuesQuery = ValuesQuery;
|
20
30
|
ValuesQuery.kind = Symbol("ValuesQuery");
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ValuesQuery.js","sourceRoot":"","sources":["../../src/models/ValuesQuery.ts"],"names":[],"mappings":";;;AAAA,+DAA4D;
|
1
|
+
{"version":3,"file":"ValuesQuery.js","sourceRoot":"","sources":["../../src/models/ValuesQuery.ts"],"names":[],"mappings":";;;AAAA,8DAA2D;AAE3D,+DAA4D;AAG5D,iDAA8C;AAG9C;;GAEG;AACH,MAAa,WAAY,SAAQ,2BAAY;IAUzC,YAAY,MAAyB,EAAE,gBAAiC,IAAI;QACxE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACvC,CAAC;IAEM,mBAAmB;QACtB,OAAO,2BAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED;;;;SAIK;IACE,YAAY,CAAC,IAAY,EAAE,KAAU;QACxC,iCAAe,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC;IAChB,CAAC;;AA5BL,kCA6BC;AA5BU,gBAAI,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC"}
|
@@ -0,0 +1,26 @@
|
|
1
|
+
import { Lexeme } from "../models/Lexeme";
|
2
|
+
import { IdentifierString } from "../models/ValueComponent";
|
3
|
+
/**
|
4
|
+
* Utility class for parsing fully qualified names (e.g. db.schema.table or db.schema.table.column_name)
|
5
|
+
* This can be used for both table and column references.
|
6
|
+
*/
|
7
|
+
export declare class FullNameParser {
|
8
|
+
/**
|
9
|
+
* Parses a fully qualified name from lexemes, returning namespaces, table, and new index.
|
10
|
+
*/
|
11
|
+
static parseFromLexeme(lexemes: Lexeme[], index: number): {
|
12
|
+
namespaces: string[] | null;
|
13
|
+
name: IdentifierString;
|
14
|
+
newIndex: number;
|
15
|
+
};
|
16
|
+
/**
|
17
|
+
* Parses a fully qualified name from a string (e.g. 'db.schema.table')
|
18
|
+
* Returns { namespaces, name }
|
19
|
+
*/
|
20
|
+
static parse(str: string): {
|
21
|
+
namespaces: string[] | null;
|
22
|
+
name: IdentifierString;
|
23
|
+
};
|
24
|
+
private static parseEscapedOrDotSeparatedIdentifiers;
|
25
|
+
private static extractNamespacesAndName;
|
26
|
+
}
|
@@ -0,0 +1,93 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.FullNameParser = void 0;
|
4
|
+
const Lexeme_1 = require("../models/Lexeme");
|
5
|
+
const ValueComponent_1 = require("../models/ValueComponent");
|
6
|
+
const SqlTokenizer_1 = require("./SqlTokenizer");
|
7
|
+
/**
|
8
|
+
* Utility class for parsing fully qualified names (e.g. db.schema.table or db.schema.table.column_name)
|
9
|
+
* This can be used for both table and column references.
|
10
|
+
*/
|
11
|
+
class FullNameParser {
|
12
|
+
/**
|
13
|
+
* Parses a fully qualified name from lexemes, returning namespaces, table, and new index.
|
14
|
+
*/
|
15
|
+
static parseFromLexeme(lexemes, index) {
|
16
|
+
const { identifiers, newIndex } = FullNameParser.parseEscapedOrDotSeparatedIdentifiers(lexemes, index);
|
17
|
+
const { namespaces, name } = FullNameParser.extractNamespacesAndName(identifiers);
|
18
|
+
return { namespaces, name: new ValueComponent_1.IdentifierString(name), newIndex };
|
19
|
+
}
|
20
|
+
/**
|
21
|
+
* Parses a fully qualified name from a string (e.g. 'db.schema.table')
|
22
|
+
* Returns { namespaces, name }
|
23
|
+
*/
|
24
|
+
static parse(str) {
|
25
|
+
const tokenizer = new SqlTokenizer_1.SqlTokenizer(str);
|
26
|
+
const lexemes = tokenizer.readLexmes();
|
27
|
+
const result = this.parseFromLexeme(lexemes, 0);
|
28
|
+
if (result.newIndex < lexemes.length) {
|
29
|
+
// Use a context-agnostic error message since FullNameParser is used in multiple query types
|
30
|
+
throw new Error(`Syntax error: Unexpected token "${lexemes[result.newIndex].value}" at position ${result.newIndex}. The name is complete but additional tokens were found.`);
|
31
|
+
}
|
32
|
+
return { namespaces: result.namespaces, name: result.name };
|
33
|
+
}
|
34
|
+
// Parses SQL Server-style escaped identifiers ([table]) and dot-separated identifiers, including namespaced wildcards (e.g., db.schema.*, [db].[schema].*)
|
35
|
+
static parseEscapedOrDotSeparatedIdentifiers(lexemes, index) {
|
36
|
+
let idx = index;
|
37
|
+
const identifiers = [];
|
38
|
+
while (idx < lexemes.length) {
|
39
|
+
if (lexemes[idx].type & Lexeme_1.TokenType.OpenBracket) {
|
40
|
+
idx++; // skip [
|
41
|
+
if (idx >= lexemes.length || !((lexemes[idx].type & Lexeme_1.TokenType.Identifier) || (lexemes[idx].type & Lexeme_1.TokenType.Command))) {
|
42
|
+
throw new Error(`Expected identifier after '[' at position ${idx}`);
|
43
|
+
}
|
44
|
+
identifiers.push(lexemes[idx].value);
|
45
|
+
idx++;
|
46
|
+
if (idx >= lexemes.length || lexemes[idx].value !== "]") {
|
47
|
+
throw new Error(`Expected closing ']' after identifier at position ${idx}`);
|
48
|
+
}
|
49
|
+
idx++; // skip ]
|
50
|
+
}
|
51
|
+
else if (lexemes[idx].type & Lexeme_1.TokenType.Identifier) {
|
52
|
+
identifiers.push(lexemes[idx].value);
|
53
|
+
idx++;
|
54
|
+
}
|
55
|
+
else if (lexemes[idx].type & Lexeme_1.TokenType.Function) {
|
56
|
+
identifiers.push(lexemes[idx].value);
|
57
|
+
idx++;
|
58
|
+
}
|
59
|
+
else if (lexemes[idx].type & Lexeme_1.TokenType.Type) {
|
60
|
+
identifiers.push(lexemes[idx].value);
|
61
|
+
idx++;
|
62
|
+
}
|
63
|
+
else if (lexemes[idx].value === "*") {
|
64
|
+
// The wildcard '*' is always treated as the terminal part of a qualified name in SQL (e.g., db.schema.* or [db].[schema].*).
|
65
|
+
// No valid SQL syntax allows a wildcard in the middle of a multi-part name.
|
66
|
+
identifiers.push(lexemes[idx].value);
|
67
|
+
idx++;
|
68
|
+
break;
|
69
|
+
}
|
70
|
+
// Handle dot for schema.table or db.schema.table
|
71
|
+
if (idx < lexemes.length && (lexemes[idx].type & Lexeme_1.TokenType.Dot)) {
|
72
|
+
idx++; // skip dot
|
73
|
+
}
|
74
|
+
else {
|
75
|
+
break;
|
76
|
+
}
|
77
|
+
}
|
78
|
+
return { identifiers, newIndex: idx };
|
79
|
+
}
|
80
|
+
// Utility to extract namespaces and the final name from an array of identifiers
|
81
|
+
// Example: ["db", "schema", "users"] => { namespaces: ["db", "schema"], name: "users" }
|
82
|
+
static extractNamespacesAndName(identifiers) {
|
83
|
+
if (!identifiers || identifiers.length === 0) {
|
84
|
+
throw new Error("Identifier list is empty");
|
85
|
+
}
|
86
|
+
if (identifiers.length === 1) {
|
87
|
+
return { namespaces: null, name: identifiers[0] };
|
88
|
+
}
|
89
|
+
return { namespaces: identifiers.slice(0, -1), name: identifiers[identifiers.length - 1] };
|
90
|
+
}
|
91
|
+
}
|
92
|
+
exports.FullNameParser = FullNameParser;
|
93
|
+
//# sourceMappingURL=FullNameParser.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"FullNameParser.js","sourceRoot":"","sources":["../../src/parsers/FullNameParser.ts"],"names":[],"mappings":"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"}
|
@@ -5,6 +5,7 @@ const Lexeme_1 = require("../models/Lexeme");
|
|
5
5
|
const ValueComponent_1 = require("../models/ValueComponent");
|
6
6
|
const OverExpressionParser_1 = require("./OverExpressionParser");
|
7
7
|
const ValueParser_1 = require("./ValueParser");
|
8
|
+
const FullNameParser_1 = require("./FullNameParser");
|
8
9
|
class FunctionExpressionParser {
|
9
10
|
static parseFromLexeme(lexemes, index) {
|
10
11
|
let idx = index;
|
@@ -75,10 +76,12 @@ class FunctionExpressionParser {
|
|
75
76
|
}
|
76
77
|
static parseFunctionCall(lexemes, index) {
|
77
78
|
let idx = index;
|
78
|
-
//
|
79
|
-
|
80
|
-
const
|
81
|
-
|
79
|
+
// Parse namespaced function name (e.g., myschema.myfunc, dbo.util.myfunc)
|
80
|
+
// Use FullNameParser to get namespaces and function name
|
81
|
+
const fullNameResult = FullNameParser_1.FullNameParser.parseFromLexeme(lexemes, idx);
|
82
|
+
const namespaces = fullNameResult.namespaces;
|
83
|
+
const name = fullNameResult.name;
|
84
|
+
idx = fullNameResult.newIndex;
|
82
85
|
if (idx < lexemes.length && (lexemes[idx].type & Lexeme_1.TokenType.OpenParen)) {
|
83
86
|
// General argument parsing
|
84
87
|
const arg = ValueParser_1.ValueParser.parseArgument(Lexeme_1.TokenType.OpenParen, Lexeme_1.TokenType.CloseParen, lexemes, idx);
|
@@ -86,22 +89,25 @@ class FunctionExpressionParser {
|
|
86
89
|
if (idx < lexemes.length && lexemes[idx].value === "over") {
|
87
90
|
const over = OverExpressionParser_1.OverExpressionParser.parseFromLexeme(lexemes, idx);
|
88
91
|
idx = over.newIndex;
|
89
|
-
const value = new ValueComponent_1.FunctionCall(
|
92
|
+
const value = new ValueComponent_1.FunctionCall(namespaces, name.name, arg.value, over.value);
|
90
93
|
return { value, newIndex: idx };
|
91
94
|
}
|
92
95
|
else {
|
93
|
-
const value = new ValueComponent_1.FunctionCall(
|
96
|
+
const value = new ValueComponent_1.FunctionCall(namespaces, name.name, arg.value, null);
|
94
97
|
return { value, newIndex: idx };
|
95
98
|
}
|
96
99
|
}
|
97
100
|
else {
|
98
|
-
throw new Error(`Expected opening parenthesis after function name '${
|
101
|
+
throw new Error(`Expected opening parenthesis after function name '${name.name}' at index ${idx}`);
|
99
102
|
}
|
100
103
|
}
|
101
104
|
static parseKeywordFunction(lexemes, index, keywords) {
|
102
105
|
let idx = index;
|
103
|
-
|
104
|
-
idx
|
106
|
+
// Parse function name and namespaces at the beginning for consistent usage
|
107
|
+
const fullNameResult = FullNameParser_1.FullNameParser.parseFromLexeme(lexemes, idx);
|
108
|
+
const namespaces = fullNameResult.namespaces;
|
109
|
+
const name = fullNameResult.name;
|
110
|
+
idx = fullNameResult.newIndex;
|
105
111
|
if (idx < lexemes.length && (lexemes[idx].type & Lexeme_1.TokenType.OpenParen)) {
|
106
112
|
idx++;
|
107
113
|
const input = ValueParser_1.ValueParser.parseFromLexeme(lexemes, idx);
|
@@ -111,7 +117,7 @@ class FunctionExpressionParser {
|
|
111
117
|
if (idx < lexemes.length && (lexemes[idx].type & Lexeme_1.TokenType.Comma)) {
|
112
118
|
return this.parseFunctionCall(lexemes, index);
|
113
119
|
}
|
114
|
-
// Check keywords
|
120
|
+
// Check for required/optional keywords in function arguments
|
115
121
|
for (const { key, required } of keywords) {
|
116
122
|
if (idx < lexemes.length && (lexemes[idx].type & Lexeme_1.TokenType.Command) && lexemes[idx].value === key) {
|
117
123
|
idx++;
|
@@ -132,46 +138,41 @@ class FunctionExpressionParser {
|
|
132
138
|
}
|
133
139
|
if (idx < lexemes.length && (lexemes[idx].type & Lexeme_1.TokenType.CloseParen)) {
|
134
140
|
idx++;
|
141
|
+
// Use the previously parsed namespaces and function name for consistency
|
135
142
|
if (idx < lexemes.length && lexemes[idx].value === "over") {
|
136
143
|
idx++;
|
137
144
|
const over = OverExpressionParser_1.OverExpressionParser.parseFromLexeme(lexemes, idx);
|
138
145
|
idx = over.newIndex;
|
139
|
-
const value = new ValueComponent_1.FunctionCall(
|
146
|
+
const value = new ValueComponent_1.FunctionCall(namespaces, name.name, arg, over.value);
|
140
147
|
return { value, newIndex: idx };
|
141
148
|
}
|
142
149
|
else {
|
143
|
-
const value = new ValueComponent_1.FunctionCall(
|
150
|
+
const value = new ValueComponent_1.FunctionCall(namespaces, name.name, arg, null);
|
144
151
|
return { value, newIndex: idx };
|
145
152
|
}
|
146
153
|
}
|
147
154
|
else {
|
148
|
-
throw new Error(`Missing closing parenthesis for function '${
|
155
|
+
throw new Error(`Missing closing parenthesis for function '${name.name}' at index ${idx}`);
|
149
156
|
}
|
150
157
|
}
|
151
158
|
else {
|
152
|
-
throw new Error(`Missing opening parenthesis for function '${
|
159
|
+
throw new Error(`Missing opening parenthesis for function '${name.name}' at index ${idx}`);
|
153
160
|
}
|
154
161
|
}
|
155
162
|
static parseTypeValue(lexemes, index) {
|
156
163
|
let idx = index;
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
idx
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
}
|
168
|
-
else {
|
169
|
-
// Create TypeValue
|
170
|
-
const value = new ValueComponent_1.TypeValue(typeName);
|
171
|
-
return { value, newIndex: idx };
|
172
|
-
}
|
164
|
+
const { namespaces, name, newIndex } = FullNameParser_1.FullNameParser.parseFromLexeme(lexemes, idx);
|
165
|
+
idx = newIndex;
|
166
|
+
if (idx < lexemes.length && (lexemes[idx].type & Lexeme_1.TokenType.OpenParen)) {
|
167
|
+
const arg = ValueParser_1.ValueParser.parseArgument(Lexeme_1.TokenType.OpenParen, Lexeme_1.TokenType.CloseParen, lexemes, idx);
|
168
|
+
idx = arg.newIndex;
|
169
|
+
const value = new ValueComponent_1.TypeValue(namespaces, new ValueComponent_1.RawString(name.name), arg.value);
|
170
|
+
return { value, newIndex: idx };
|
171
|
+
}
|
172
|
+
else {
|
173
|
+
const value = new ValueComponent_1.TypeValue(namespaces, new ValueComponent_1.RawString(name.name));
|
174
|
+
return { value, newIndex: idx };
|
173
175
|
}
|
174
|
-
throw new Error(`Expected type value at index ${idx}`);
|
175
176
|
}
|
176
177
|
}
|
177
178
|
exports.FunctionExpressionParser = FunctionExpressionParser;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"FunctionExpressionParser.js","sourceRoot":"","sources":["../../src/parsers/FunctionExpressionParser.ts"],"names":[],"mappings":";;;AAAA,6CAAqD;AACrD,
|
1
|
+
{"version":3,"file":"FunctionExpressionParser.js","sourceRoot":"","sources":["../../src/parsers/FunctionExpressionParser.ts"],"names":[],"mappings":"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"}
|
@@ -1,39 +1,14 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.IdentifierParser = void 0;
|
4
|
-
const
|
5
|
-
const Lexeme_1 = require("../models/Lexeme");
|
4
|
+
const FullNameParser_1 = require("./FullNameParser");
|
6
5
|
const ValueComponent_1 = require("../models/ValueComponent");
|
7
6
|
class IdentifierParser {
|
8
7
|
static parseFromLexeme(lexemes, index) {
|
9
|
-
//
|
10
|
-
|
11
|
-
const
|
12
|
-
|
13
|
-
identifiers.push(lexemes[idx].value);
|
14
|
-
idx++;
|
15
|
-
// Look for dot and identifier pattern
|
16
|
-
// support wildcard '*' as identifier (e.g. select t.* from t)
|
17
|
-
while (idx < lexemes.length &&
|
18
|
-
idx + 1 < lexemes.length &&
|
19
|
-
(lexemes[idx].type & Lexeme_1.TokenType.Dot) &&
|
20
|
-
((lexemes[idx + 1].type & Lexeme_1.TokenType.Identifier) || lexemes[idx + 1].value === "*")) {
|
21
|
-
// Skip the dot and add the next identifier
|
22
|
-
idx++;
|
23
|
-
identifiers.push(lexemes[idx].value);
|
24
|
-
idx++;
|
25
|
-
}
|
26
|
-
if (identifiers.length > 1) {
|
27
|
-
// If there are multiple identifiers, treat it as a column reference
|
28
|
-
const { namespaces, name } = (0, extractNamespacesAndName_1.extractNamespacesAndName)(identifiers);
|
29
|
-
const value = new ValueComponent_1.ColumnReference(namespaces, name);
|
30
|
-
return { value, newIndex: idx };
|
31
|
-
}
|
32
|
-
else {
|
33
|
-
// If there is a single identifier, treat it as a simple identifier
|
34
|
-
const value = new ValueComponent_1.ColumnReference(null, identifiers[0]);
|
35
|
-
return { value, newIndex: idx };
|
36
|
-
}
|
8
|
+
// Use FullNameParser to robustly parse qualified identifiers, including wildcards and escaped names.
|
9
|
+
const { namespaces, name, newIndex } = FullNameParser_1.FullNameParser.parseFromLexeme(lexemes, index);
|
10
|
+
const value = new ValueComponent_1.ColumnReference(namespaces, name);
|
11
|
+
return { value, newIndex };
|
37
12
|
}
|
38
13
|
}
|
39
14
|
exports.IdentifierParser = IdentifierParser;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"IdentifierParser.js","sourceRoot":"","sources":["../../src/parsers/IdentifierParser.ts"],"names":[],"mappings":";;;AAAA,
|
1
|
+
{"version":3,"file":"IdentifierParser.js","sourceRoot":"","sources":["../../src/parsers/IdentifierParser.ts"],"names":[],"mappings":";;;AAAA,qDAAkD;AAElD,6DAA2E;AAE3E,MAAa,gBAAgB;IAClB,MAAM,CAAC,eAAe,CAAC,OAAiB,EAAE,KAAa;QAC1D,qGAAqG;QACrG,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,+BAAc,CAAC,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACtF,MAAM,KAAK,GAAG,IAAI,gCAAe,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACpD,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IAC/B,CAAC;CACJ;AAPD,4CAOC"}
|
@@ -8,9 +8,9 @@ const Lexeme_1 = require("../models/Lexeme");
|
|
8
8
|
const SqlTokenizer_1 = require("./SqlTokenizer");
|
9
9
|
const SelectQueryParser_1 = require("./SelectQueryParser");
|
10
10
|
const WithClauseParser_1 = require("./WithClauseParser");
|
11
|
-
const ValueComponent_1 = require("../models/ValueComponent");
|
12
11
|
const SimpleSelectQuery_1 = require("../models/SimpleSelectQuery");
|
13
|
-
const
|
12
|
+
const SourceExpressionParser_1 = require("./SourceExpressionParser");
|
13
|
+
const Clause_1 = require("../models/Clause");
|
14
14
|
class InsertQueryParser {
|
15
15
|
/**
|
16
16
|
* Parse SQL string to InsertQuery AST.
|
@@ -42,9 +42,9 @@ class InsertQueryParser {
|
|
42
42
|
throw new Error(`Syntax error at position ${idx}: Expected 'INSERT INTO' but found '${lexemes[idx].value}'.`);
|
43
43
|
}
|
44
44
|
idx++;
|
45
|
-
//
|
46
|
-
const
|
47
|
-
idx =
|
45
|
+
// Parse table and optional alias/schema using SourceExpressionParser
|
46
|
+
const sourceResult = SourceExpressionParser_1.SourceExpressionParser.parseTableSourceFromLexemes(lexemes, idx);
|
47
|
+
idx = sourceResult.newIndex;
|
48
48
|
// Optional columns
|
49
49
|
let columns = [];
|
50
50
|
if (((_a = lexemes[idx]) === null || _a === void 0 ? void 0 : _a.type) === Lexeme_1.TokenType.OpenParen) {
|
@@ -76,33 +76,12 @@ class InsertQueryParser {
|
|
76
76
|
idx = selectResult.newIndex;
|
77
77
|
return {
|
78
78
|
value: new InsertQuery_1.InsertQuery({
|
79
|
-
|
80
|
-
table,
|
81
|
-
columns,
|
79
|
+
insertClause: new Clause_1.InsertClause(sourceResult.value, columns),
|
82
80
|
selectQuery: selectResult.value
|
83
81
|
}),
|
84
82
|
newIndex: idx
|
85
83
|
};
|
86
84
|
}
|
87
|
-
// Get fully qualified name and split into namespaces/table
|
88
|
-
static parseFullQualifiedName(lexemes, index) {
|
89
|
-
let idx = index;
|
90
|
-
const fullname = [];
|
91
|
-
fullname.push(lexemes[index].value);
|
92
|
-
idx++;
|
93
|
-
while (idx < lexemes.length && lexemes[idx].type === Lexeme_1.TokenType.Dot) {
|
94
|
-
idx++; // Skip dot
|
95
|
-
if (idx < lexemes.length) {
|
96
|
-
fullname.push(lexemes[idx].value);
|
97
|
-
idx++;
|
98
|
-
}
|
99
|
-
else {
|
100
|
-
throw new Error(`Syntax error at position ${idx}: Expected identifier after '.' but found end of input.`);
|
101
|
-
}
|
102
|
-
}
|
103
|
-
const { namespaces, name } = (0, extractNamespacesAndName_1.extractNamespacesAndName)(fullname);
|
104
|
-
return { namespaces, table: new ValueComponent_1.IdentifierString(name), newIndex: idx };
|
105
|
-
}
|
106
85
|
}
|
107
86
|
exports.InsertQueryParser = InsertQueryParser;
|
108
87
|
//# sourceMappingURL=InsertQueryParser.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"InsertQueryParser.js","sourceRoot":"","sources":["../../src/parsers/InsertQueryParser.ts"],"names":[],"mappings":";;;AAAA,6CAA6C;AAC7C,qGAAqG;AACrG,uDAAoD;AACpD,6CAAqD;AACrD,iDAA8C;AAC9C,2DAAwD;AAExD,yDAAsD;AACtD,
|
1
|
+
{"version":3,"file":"InsertQueryParser.js","sourceRoot":"","sources":["../../src/parsers/InsertQueryParser.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
import { Lexeme } from "../models/Lexeme";
|
2
|
+
import { ReturningClause } from "../models/Clause";
|
3
|
+
export declare class ReturningClauseParser {
|
4
|
+
/**
|
5
|
+
* Parse RETURNING clause from lexemes, starting at the given index.
|
6
|
+
* Returns a ReturningClause instance and the new index after parsing.
|
7
|
+
*/
|
8
|
+
static parseFromLexeme(lexemes: Lexeme[], index: number): {
|
9
|
+
value: ReturningClause;
|
10
|
+
newIndex: number;
|
11
|
+
};
|
12
|
+
}
|