rawsql-ts 0.1.2-beta → 0.2.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 +122 -0
- package/dist/esm/models/Clause.js +2 -2
- package/dist/esm/models/Clause.js.map +1 -1
- package/dist/esm/models/Lexeme.js +15 -14
- package/dist/esm/models/Lexeme.js.map +1 -1
- package/dist/esm/models/SimpleSelectQuery.js +95 -25
- 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 +2 -2
- package/dist/esm/parsers/IdentifierParser.js.map +1 -1
- 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/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 +21 -0
- 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 +4 -4
- 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 +28 -12
- 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 -2
- package/dist/esm/tokenReaders/OperatorTokenReader.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 +3 -4
- package/dist/esm/transformers/Formatter.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/models/Clause.d.ts +4 -5
- package/dist/esm/types/models/Lexeme.d.ts +16 -16
- package/dist/esm/types/models/SimpleSelectQuery.d.ts +39 -8
- package/dist/esm/types/parsers/SelectQueryParser.d.ts +7 -0
- package/dist/esm/types/tokenReaders/BaseTokenReader.d.ts +1 -1
- package/dist/esm/types/transformers/Formatter.d.ts +1 -1
- 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/models/Clause.d.ts +4 -5
- package/dist/models/Clause.js +2 -2
- package/dist/models/Clause.js.map +1 -1
- 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/SimpleSelectQuery.d.ts +39 -8
- package/dist/models/SimpleSelectQuery.js +95 -25
- 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 +2 -2
- package/dist/parsers/IdentifierParser.js.map +1 -1
- 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/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 +21 -0
- 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 +4 -4
- 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 +27 -11
- 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 -2
- package/dist/tokenReaders/OperatorTokenReader.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 +1 -1
- package/dist/transformers/Formatter.js +3 -4
- package/dist/transformers/Formatter.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/package.json +1 -1
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":";;;AACA,iDAA8C;AAC9C,qDAAuH;AAEvH,MAAa,UAAW,SAAQ,2BAAY;IAIxC,YAAY,KAAqB,EAAE,OAAsB,IAAI;QACzD,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,iCAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/D,CAAC;;AARL,gCASC;AARU,eAAI,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;AAUvC,MAAa,YAAa,SAAQ,2BAAY;IAI1C,YAAY,KAAmB,EAAE,WAAqC,IAAI;QACtE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;;AARL,oCASC;AARU,iBAAI,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AAYzC,MAAa,QAAS,SAAQ,2BAAY;IAEtC;QACI,KAAK,EAAE,CAAC;IACZ,CAAC;;AAJL,4BAKC;AAJU,aAAI,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AAMrC,MAAa,UAAW,SAAQ,2BAAY;IAGxC,YAAY,KAAqB;QAC7B,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;;AANL,gCAOC;AANU,eAAI,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;AASvC,MAAa,WAAY,SAAQ,2BAAY;IAGzC,YAAY,SAAyB;QACjC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC/B,CAAC;;AANL,kCAOC;AANU,gBAAI,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;AAQxC,MAAa,iBAAkB,SAAQ,2BAAY;IAG/C,YAAY,KAAqB;QAC7B,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;;AANL,8CAOC;AANU,sBAAI,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC;AAQ9C,MAAa,iBAAkB,SAAQ,2BAAY;IAI/C,YAAY,IAAY,EAAE,UAAiC;QACvD,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,IAAI,GAAG,IAAI,iCAAgB,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IACjC,CAAC;;AARL,8CASC;AARU,sBAAI,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC;AAU9C,IAAY,aAGX;AAHD,WAAY,aAAa;IACrB,kCAAiB,CAAA;IACjB,oCAAmB,CAAA;AACvB,CAAC,EAHW,aAAa,6BAAb,aAAa,QAGxB;AACD,IAAY,kBAGX;AAHD,WAAY,kBAAkB;IAC1B,qCAAe,CAAA;IACf,mCAAa,CAAA;AACjB,CAAC,EAHW,kBAAkB,kCAAlB,kBAAkB,QAG7B;AAID,MAAa,aAAc,SAAQ,2BAAY;IAG3C,YAAY,KAAyB;QACjC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;;AANL,sCAOC;AANU,kBAAI,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;AAQ1C,MAAa,WAAY,SAAQ,2BAAY;IAKzC,YAAY,UAA0B,EAAE,aAAmC,EAAE,aAAwC;QACjH,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC;QACxB,IAAI,CAAC,aAAa,GAAG,aAAa,KAAK,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC;QACtF,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACvC,CAAC;;AAVL,kCAWC;AAVU,gBAAI,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;AAYxC,MAAa,aAAc,SAAQ,2BAAY;IAG3C,YAAY,UAA4B;QACpC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;IAC/B,CAAC;;AANL,sCAOC;AANU,kBAAI,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;AAQ1C,MAAa,YAAa,SAAQ,2BAAY;IAG1C,YAAY,SAAyB;QACjC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC/B,CAAC;;AANL,oCAOC;AANU,iBAAI,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AAazC,MAAa,WAAY,SAAQ,2BAAY;IAKzC,YAAY,UAA2B,EAAE,KAAa;QAClD,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,UAAU,GAAG,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,iCAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAAA,CAAC;QAC/G,IAAI,CAAC,KAAK,GAAG,IAAI,iCAAgB,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC;IACjC,CAAC;IACM,aAAa;QAChB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;QAChG,CAAC;aAAM,CAAC;YACJ,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;QAC3B,CAAC;IACL,CAAC;;AAjBL,kCAkBC;AAjBU,gBAAI,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;AAmBxC,MAAa,cAAe,SAAQ,2BAAY;IAI5C,YAAY,YAAoB,EAAE,QAA+B;QAC7D,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,IAAI,GAAG,IAAI,0BAAS,CAAC,YAAY,CAAC,CAAC;QACxC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;;AARL,wCASC;AARU,mBAAI,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAU3C,MAAa,WAAY,SAAQ,2BAAY;IAGzC,YAAY,MAAuB;QAC/B,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;;AANL,kCAOC;AANU,gBAAI,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;AAQxC,MAAa,cAAe,SAAQ,2BAAY;IAG5C,YAAY,KAAkB;QAC1B,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;;AANL,wCAOC;AANU,mBAAI,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAQ3C,MAAa,gBAAiB,SAAQ,2BAAY;IAI9C,YAAY,UAA2B,EAAE,eAA6C;QAClF,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;IAC3C,CAAC;IACM,YAAY;QACf,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC;QAC3C,CAAC;aACI,IAAI,IAAI,CAAC,UAAU,YAAY,WAAW,EAAE,CAAC;YAC9C,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;QAC3C,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;;AAjBL,4CAkBC;AAjBU,qBAAI,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAqB7C,MAAa,YAAa,SAAQ,2BAAY;IAG1C,YAAY,SAAyB;QACjC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC/B,CAAC;;AANL,oCAOC;AANU,iBAAI,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AAQzC,MAAa,eAAgB,SAAQ,2BAAY;IAG7C,YAAY,SAAyB;QACjC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC/B,CAAC;;AANL,0CAOC;AANU,oBAAI,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAQ5C,MAAa,UAAW,SAAQ,2BAAY;IAMxC,YAAY,QAAgB,EAAE,MAAwB,EAAE,SAAwC,EAAE,OAAgB;QAC9G,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,QAAQ,GAAG,IAAI,0BAAS,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IAC3B,CAAC;IACM,kBAAkB;QACrB,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC;QAClD,CAAC;aACI,IAAI,IAAI,CAAC,MAAM,YAAY,WAAW,EAAE,CAAC;YAC1C,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;QAClC,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;;AArBL,gCAsBC;AArBU,eAAI,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AAuBrC,MAAa,UAAW,SAAQ,2BAAY;IAIxC,YAAY,MAAwB,EAAE,IAAyB;QAC3D,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACtB,CAAC;IACM,kBAAkB;QACrB,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC;QAClD,CAAC;aACI,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,YAAY,WAAW,EAAE,CAAC;YACrD,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC;QAC7C,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IACD;;OAEG;IACI,UAAU;QACb,MAAM,OAAO,GAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC5B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC9B,CAAC;QACL,CAAC;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;;AA7BL,gCA8BC;AA7BU,eAAI,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;AA+BvC,MAAa,WAAY,SAAQ,2BAAY;IAKzC,YAAY,KAAkB,EAAE,eAA+C,EAAE,YAA4B;QACzG,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,OAAO,eAAe,KAAK,QAAQ,EAAE,CAAC;YACtC,IAAI,CAAC,eAAe,GAAG,IAAI,qBAAqB,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;QAC5E,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QAC3C,CAAC;IACL,CAAC;IACM,kBAAkB;QACrB,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC;IAC3C,CAAC;;AAjBL,kCAkBC;AAjBU,gBAAI,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;AAmBxC,MAAa,UAAW,SAAQ,2BAAY;IAIxC,YAAY,SAAkB,EAAE,MAAqB;QACjD,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;;AARL,gCASC;AARU,eAAI,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;AAUvC,mEAAmE;AAEnE,MAAa,WAAY,SAAQ,2BAAY;IAIzC,YAAY,KAAqB,EAAE,MAA6B;QAC5D,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;;AARL,kCASC;AARU,gBAAI,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;AAUxC,IAAY,SAGX;AAHD,WAAY,SAAS;IACjB,0BAAa,CAAA;IACb,4BAAe,CAAA;AACnB,CAAC,EAHW,SAAS,yBAAT,SAAS,QAGpB;AAED,IAAY,SAIX;AAJD,WAAY,SAAS;IACjB,mCAAsB,CAAA;IACtB,gCAAmB,CAAA;IACnB,kDAAqC,CAAA;AACzC,CAAC,EAJW,SAAS,yBAAT,SAAS,QAIpB;AAED,MAAa,kBAAmB,SAAQ,2BAAY;IAKhD,YAAY,IAAe,EAAE,KAAqB,EAAE,IAAsB;QACtE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;;AAVL,gDAWC;AAVU,uBAAI,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;AAY/C,IAAY,QAKX;AALD,WAAY,QAAQ;IAChB,6BAAiB,CAAA;IACjB,2BAAe,CAAA;IACf,kCAAsB,CAAA;IACtB,yCAA6B,CAAA;AACjC,CAAC,EALW,QAAQ,wBAAR,QAAQ,QAKnB;AAED,MAAa,SAAU,SAAQ,2BAAY;IAGvC,YAAY,QAAkB;QAC1B,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;;AANL,8BAOC;AANU,cAAI,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AAQtC,MAAa,qBAAsB,SAAQ,2BAAY;IAInD,YAAY,KAAa,EAAE,WAA4B;QACnD,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,KAAK,GAAG,IAAI,iCAAgB,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,OAAO,GAAG,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,iCAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACzG,CAAC;;AARL,sDASC;AARU,0BAAI,GAAG,MAAM,CAAC,uBAAuB,CAAC,CAAC"}
|
package/dist/models/Lexeme.d.ts
CHANGED
@@ -1,25 +1,25 @@
|
|
1
1
|
export declare enum TokenType {
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
2
|
+
None = 0,
|
3
|
+
Literal = 1,
|
4
|
+
Operator = 2,
|
5
|
+
OpenParen = 4,
|
6
|
+
CloseParen = 8,
|
7
|
+
Comma = 16,
|
8
|
+
Dot = 32,
|
9
|
+
Identifier = 64,
|
10
|
+
Command = 128,// select, from, where as, on, array etc
|
11
|
+
Parameter = 256,
|
12
|
+
OpenBracket = 512,
|
13
|
+
CloseBracket = 1024,
|
14
|
+
Function = 2048,// next token is open paren
|
15
|
+
StringSpecifier = 4096,// next token is string literal
|
16
|
+
Type = 8192
|
16
17
|
}
|
17
18
|
/**
|
18
19
|
* Represents a lexical token in SQL parsing
|
19
20
|
*/
|
20
21
|
export interface Lexeme {
|
21
|
-
type:
|
22
|
+
type: number;
|
22
23
|
value: string;
|
23
24
|
comments: string[] | null;
|
24
|
-
maybeType: boolean | null;
|
25
25
|
}
|
package/dist/models/Lexeme.js
CHANGED
@@ -3,19 +3,20 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.TokenType = void 0;
|
4
4
|
var TokenType;
|
5
5
|
(function (TokenType) {
|
6
|
-
TokenType[TokenType["
|
7
|
-
TokenType[TokenType["
|
8
|
-
TokenType[TokenType["
|
9
|
-
TokenType[TokenType["
|
10
|
-
TokenType[TokenType["
|
11
|
-
TokenType[TokenType["
|
12
|
-
TokenType[TokenType["
|
13
|
-
TokenType[TokenType["
|
14
|
-
TokenType[TokenType["
|
15
|
-
TokenType[TokenType["
|
16
|
-
TokenType[TokenType["
|
17
|
-
TokenType[TokenType["
|
18
|
-
TokenType[TokenType["
|
19
|
-
TokenType[TokenType["
|
6
|
+
TokenType[TokenType["None"] = 0] = "None";
|
7
|
+
TokenType[TokenType["Literal"] = 1] = "Literal";
|
8
|
+
TokenType[TokenType["Operator"] = 2] = "Operator";
|
9
|
+
TokenType[TokenType["OpenParen"] = 4] = "OpenParen";
|
10
|
+
TokenType[TokenType["CloseParen"] = 8] = "CloseParen";
|
11
|
+
TokenType[TokenType["Comma"] = 16] = "Comma";
|
12
|
+
TokenType[TokenType["Dot"] = 32] = "Dot";
|
13
|
+
TokenType[TokenType["Identifier"] = 64] = "Identifier";
|
14
|
+
TokenType[TokenType["Command"] = 128] = "Command";
|
15
|
+
TokenType[TokenType["Parameter"] = 256] = "Parameter";
|
16
|
+
TokenType[TokenType["OpenBracket"] = 512] = "OpenBracket";
|
17
|
+
TokenType[TokenType["CloseBracket"] = 1024] = "CloseBracket";
|
18
|
+
TokenType[TokenType["Function"] = 2048] = "Function";
|
19
|
+
TokenType[TokenType["StringSpecifier"] = 4096] = "StringSpecifier";
|
20
|
+
TokenType[TokenType["Type"] = 8192] = "Type";
|
20
21
|
})(TokenType || (exports.TokenType = TokenType = {}));
|
21
22
|
//# sourceMappingURL=Lexeme.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Lexeme.js","sourceRoot":"","sources":["../../src/models/Lexeme.ts"],"names":[],"mappings":";;;AAAA,IAAY,
|
1
|
+
{"version":3,"file":"Lexeme.js","sourceRoot":"","sources":["../../src/models/Lexeme.ts"],"names":[],"mappings":";;;AAAA,IAAY,SAgBX;AAhBD,WAAY,SAAS;IACjB,yCAAQ,CAAA;IACR,+CAAgB,CAAA;IAChB,iDAAiB,CAAA;IACjB,mDAAkB,CAAA;IAClB,qDAAmB,CAAA;IACnB,4CAAc,CAAA;IACd,wCAAY,CAAA;IACZ,sDAAmB,CAAA;IACnB,iDAAgB,CAAA;IAChB,qDAAkB,CAAA;IAClB,yDAAoB,CAAA;IACpB,4DAAsB,CAAA;IACtB,oDAAkB,CAAA;IAClB,kEAAyB,CAAA;IACzB,4CAAc,CAAA;AAClB,CAAC,EAhBW,SAAS,yBAAT,SAAS,QAgBpB"}
|
@@ -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
|
*/
|
@@ -108,41 +109,41 @@ export declare class SimpleSelectQuery extends SqlComponent {
|
|
108
109
|
* Appends an INNER JOIN clause to the query.
|
109
110
|
* @param joinSourceRawText The table source text to join (e.g., "my_table", "schema.my_table")
|
110
111
|
* @param alias The alias for the joined table
|
111
|
-
* @param columns The columns to use for the join condition (e.g. ["user_id"])
|
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[]): 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[]): 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[]): 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[]): 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[]): 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[]): 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,
|
@@ -150,9 +151,15 @@ export declare class SimpleSelectQuery extends SqlComponent {
|
|
150
151
|
* @param joinType Type of join (e.g., 'inner join', 'left join')
|
151
152
|
* @param joinSourceRawText Raw text for the table/source to join (e.g., "my_table", "schema.another_table")
|
152
153
|
* @param alias Alias for the table/source being joined
|
153
|
-
* @param columns Array of column names to join on
|
154
|
+
* @param columns Array or string of column names to join on
|
154
155
|
*/
|
155
156
|
private joinSourceRaw;
|
157
|
+
/**
|
158
|
+
* Internal helper to append a JOIN clause using a SourceExpression.
|
159
|
+
* @param joinType Type of join (e.g., 'inner join', 'left join')
|
160
|
+
* @param sourceExpr The source expression to join
|
161
|
+
* @param columns Array or string of column names to join on
|
162
|
+
*/
|
156
163
|
private joinSource;
|
157
164
|
toSource(alias: string): SourceExpression;
|
158
165
|
appendWith(commonTable: CommonTable | CommonTable[]): void;
|
@@ -164,4 +171,28 @@ export declare class SimpleSelectQuery extends SqlComponent {
|
|
164
171
|
* @param alias Optional alias for the CTE (e.g. 'cte_name')
|
165
172
|
*/
|
166
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;
|
167
198
|
}
|
@@ -10,6 +10,8 @@ const SelectableColumnCollector_1 = require("../transformers/SelectableColumnCol
|
|
10
10
|
const SourceParser_1 = require("../parsers/SourceParser");
|
11
11
|
const BinarySelectQuery_1 = require("./BinarySelectQuery");
|
12
12
|
const SelectQueryParser_1 = require("../parsers/SelectQueryParser");
|
13
|
+
const Formatter_1 = require("../transformers/Formatter");
|
14
|
+
const UpstreamSelectQueryFinder_1 = require("../transformers/UpstreamSelectQueryFinder");
|
13
15
|
/**
|
14
16
|
* Represents a simple SELECT query in SQL.
|
15
17
|
*/
|
@@ -151,10 +153,10 @@ class SimpleSelectQuery extends SqlComponent_1.SqlComponent {
|
|
151
153
|
* Appends an INNER JOIN clause to the query.
|
152
154
|
* @param joinSourceRawText The table source text to join (e.g., "my_table", "schema.my_table")
|
153
155
|
* @param alias The alias for the joined table
|
154
|
-
* @param columns The columns to use for the join condition (e.g. ["user_id"])
|
156
|
+
* @param columns The columns to use for the join condition (e.g. ["user_id"] or "user_id")
|
155
157
|
*/
|
156
|
-
innerJoinRaw(joinSourceRawText, alias, columns) {
|
157
|
-
this.joinSourceRaw('inner join', joinSourceRawText, alias, columns);
|
158
|
+
innerJoinRaw(joinSourceRawText, alias, columns, resolver = null) {
|
159
|
+
this.joinSourceRaw('inner join', joinSourceRawText, alias, columns, resolver);
|
158
160
|
}
|
159
161
|
/**
|
160
162
|
* Appends a LEFT JOIN clause to the query.
|
@@ -162,8 +164,8 @@ class SimpleSelectQuery extends SqlComponent_1.SqlComponent {
|
|
162
164
|
* @param alias The alias for the joined table
|
163
165
|
* @param columns The columns to use for the join condition
|
164
166
|
*/
|
165
|
-
leftJoinRaw(joinSourceRawText, alias, columns) {
|
166
|
-
this.joinSourceRaw('left join', joinSourceRawText, alias, columns);
|
167
|
+
leftJoinRaw(joinSourceRawText, alias, columns, resolver = null) {
|
168
|
+
this.joinSourceRaw('left join', joinSourceRawText, alias, columns, resolver);
|
167
169
|
}
|
168
170
|
/**
|
169
171
|
* Appends a RIGHT JOIN clause to the query.
|
@@ -171,32 +173,32 @@ class SimpleSelectQuery extends SqlComponent_1.SqlComponent {
|
|
171
173
|
* @param alias The alias for the joined table
|
172
174
|
* @param columns The columns to use for the join condition
|
173
175
|
*/
|
174
|
-
rightJoinRaw(joinSourceRawText, alias, columns) {
|
175
|
-
this.joinSourceRaw('right join', joinSourceRawText, alias, columns);
|
176
|
+
rightJoinRaw(joinSourceRawText, alias, columns, resolver = null) {
|
177
|
+
this.joinSourceRaw('right join', joinSourceRawText, alias, columns, resolver);
|
176
178
|
}
|
177
179
|
/**
|
178
180
|
* Appends an INNER JOIN clause to the query using a SourceExpression.
|
179
181
|
* @param sourceExpr The source expression to join
|
180
182
|
* @param columns The columns to use for the join condition
|
181
183
|
*/
|
182
|
-
innerJoin(sourceExpr, columns) {
|
183
|
-
this.joinSource('inner join', sourceExpr, columns);
|
184
|
+
innerJoin(sourceExpr, columns, resolver = null) {
|
185
|
+
this.joinSource('inner join', sourceExpr, columns, resolver);
|
184
186
|
}
|
185
187
|
/**
|
186
188
|
* Appends a LEFT JOIN clause to the query using a SourceExpression.
|
187
189
|
* @param sourceExpr The source expression to join
|
188
190
|
* @param columns The columns to use for the join condition
|
189
191
|
*/
|
190
|
-
leftJoin(sourceExpr, columns) {
|
191
|
-
this.joinSource('left join', sourceExpr, columns);
|
192
|
+
leftJoin(sourceExpr, columns, resolver = null) {
|
193
|
+
this.joinSource('left join', sourceExpr, columns, resolver);
|
192
194
|
}
|
193
195
|
/**
|
194
196
|
* Appends a RIGHT JOIN clause to the query using a SourceExpression.
|
195
197
|
* @param sourceExpr The source expression to join
|
196
198
|
* @param columns The columns to use for the join condition
|
197
199
|
*/
|
198
|
-
rightJoin(sourceExpr, columns) {
|
199
|
-
this.joinSource('right join', sourceExpr, columns);
|
200
|
+
rightJoin(sourceExpr, columns, resolver = null) {
|
201
|
+
this.joinSource('right join', sourceExpr, columns, resolver);
|
200
202
|
}
|
201
203
|
/**
|
202
204
|
* Internal helper to append a JOIN clause.
|
@@ -205,18 +207,26 @@ class SimpleSelectQuery extends SqlComponent_1.SqlComponent {
|
|
205
207
|
* @param joinType Type of join (e.g., 'inner join', 'left join')
|
206
208
|
* @param joinSourceRawText Raw text for the table/source to join (e.g., "my_table", "schema.another_table")
|
207
209
|
* @param alias Alias for the table/source being joined
|
208
|
-
* @param columns Array of column names to join on
|
210
|
+
* @param columns Array or string of column names to join on
|
209
211
|
*/
|
210
|
-
joinSourceRaw(joinType, joinSourceRawText, alias, columns) {
|
212
|
+
joinSourceRaw(joinType, joinSourceRawText, alias, columns, resolver = null) {
|
211
213
|
const tableSource = SourceParser_1.SourceParser.parse(joinSourceRawText);
|
212
214
|
const sourceExpr = new Clause_1.SourceExpression(tableSource, new Clause_1.SourceAliasExpression(alias, null));
|
213
|
-
this.joinSource(joinType, sourceExpr, columns);
|
215
|
+
this.joinSource(joinType, sourceExpr, columns, resolver);
|
214
216
|
}
|
215
|
-
|
217
|
+
/**
|
218
|
+
* Internal helper to append a JOIN clause using a SourceExpression.
|
219
|
+
* @param joinType Type of join (e.g., 'inner join', 'left join')
|
220
|
+
* @param sourceExpr The source expression to join
|
221
|
+
* @param columns Array or string of column names to join on
|
222
|
+
*/
|
223
|
+
joinSource(joinType, sourceExpr, columns, resolver = null) {
|
216
224
|
if (!this.fromClause) {
|
217
225
|
throw new Error('A FROM clause is required to add a JOIN condition.');
|
218
226
|
}
|
219
|
-
|
227
|
+
// Always treat columns as array
|
228
|
+
const columnsArr = Array.isArray(columns) ? columns : [columns];
|
229
|
+
const collector = new SelectableColumnCollector_1.SelectableColumnCollector(resolver);
|
220
230
|
const valueSets = collector.collect(this);
|
221
231
|
let joinCondition = null;
|
222
232
|
let count = 0;
|
@@ -225,7 +235,7 @@ class SimpleSelectQuery extends SqlComponent_1.SqlComponent {
|
|
225
235
|
throw new Error('An alias is required for the source expression to add a JOIN condition.');
|
226
236
|
}
|
227
237
|
for (const valueSet of valueSets) {
|
228
|
-
if (
|
238
|
+
if (columnsArr.some(col => col == valueSet.name)) {
|
229
239
|
const expr = new ValueComponent_1.BinaryExpression(valueSet.value, '=', new ValueComponent_1.ColumnReference([sourceAlias], valueSet.name));
|
230
240
|
if (joinCondition) {
|
231
241
|
joinCondition = new ValueComponent_1.BinaryExpression(joinCondition, 'and', expr);
|
@@ -236,8 +246,8 @@ class SimpleSelectQuery extends SqlComponent_1.SqlComponent {
|
|
236
246
|
count++;
|
237
247
|
}
|
238
248
|
}
|
239
|
-
if (!joinCondition || count !==
|
240
|
-
throw new Error(`Invalid JOIN condition. The specified columns were not found: ${
|
249
|
+
if (!joinCondition || count !== columnsArr.length) {
|
250
|
+
throw new Error(`Invalid JOIN condition. The specified columns were not found: ${columnsArr.join(', ')}`);
|
241
251
|
}
|
242
252
|
const joinOnClause = new Clause_1.JoinOnClause(joinCondition);
|
243
253
|
const joinClause = new Clause_1.JoinClause(joinType, sourceExpr, joinOnClause, false);
|
@@ -249,8 +259,6 @@ class SimpleSelectQuery extends SqlComponent_1.SqlComponent {
|
|
249
259
|
this.fromClause.joins = [joinClause];
|
250
260
|
}
|
251
261
|
}
|
252
|
-
// const normalizer = new CTENormalizer();
|
253
|
-
// normalizer.normalize(this);
|
254
262
|
CTENormalizer_1.CTENormalizer.normalize(this);
|
255
263
|
}
|
256
264
|
// Returns a SourceExpression wrapping this query as a subquery source.
|
@@ -270,8 +278,6 @@ class SimpleSelectQuery extends SqlComponent_1.SqlComponent {
|
|
270
278
|
else {
|
271
279
|
this.WithClause.tables.push(...tables);
|
272
280
|
}
|
273
|
-
// const normalizer = new CTENormalizer();
|
274
|
-
// normalizer.normalize(this);
|
275
281
|
CTENormalizer_1.CTENormalizer.normalize(this);
|
276
282
|
}
|
277
283
|
/**
|
@@ -286,6 +292,70 @@ class SimpleSelectQuery extends SqlComponent_1.SqlComponent {
|
|
286
292
|
const commonTable = new Clause_1.CommonTable(query, alias, null);
|
287
293
|
this.appendWith(commonTable);
|
288
294
|
}
|
295
|
+
/**
|
296
|
+
* Overrides a select item using a template literal function.
|
297
|
+
* The callback receives the SQL string of the original expression and must return a new SQL string.
|
298
|
+
* The result is parsed and set as the new select item value.
|
299
|
+
*
|
300
|
+
* Example usage:
|
301
|
+
* query.overrideSelectItemRaw("journal_date", expr => `greatest(${expr}, DATE '2025-01-01')`)
|
302
|
+
*
|
303
|
+
* @param columnName The name of the column to override
|
304
|
+
* @param fn Callback that receives the SQL string of the original expression and returns a new SQL string
|
305
|
+
*/
|
306
|
+
overrideSelectItemExpr(columnName, fn) {
|
307
|
+
const items = this.selectClause.items.filter(item => { var _a; return ((_a = item.identifier) === null || _a === void 0 ? void 0 : _a.name) === columnName; });
|
308
|
+
if (items.length === 0) {
|
309
|
+
throw new Error(`Column ${columnName} not found in the query`);
|
310
|
+
}
|
311
|
+
if (items.length > 1) {
|
312
|
+
throw new Error(`Duplicate column name ${columnName} found in the query`);
|
313
|
+
}
|
314
|
+
const item = items[0];
|
315
|
+
const formatter = new Formatter_1.Formatter();
|
316
|
+
const exprSql = formatter.visit(item.value);
|
317
|
+
const newValue = fn(exprSql);
|
318
|
+
item.value = ValueParser_1.ValueParser.parse(newValue);
|
319
|
+
}
|
320
|
+
/**
|
321
|
+
* Appends a WHERE clause using the expression for the specified column.
|
322
|
+
* If `options.upstream` is true, applies to all upstream queries containing the column.
|
323
|
+
* If false or omitted, applies only to the current query.
|
324
|
+
*
|
325
|
+
* @param columnName The name of the column to target.
|
326
|
+
* @param exprBuilder Function that receives the column expression as a string and returns the WHERE condition string.
|
327
|
+
* @param options Optional settings. If `upstream` is true, applies to upstream queries.
|
328
|
+
*/
|
329
|
+
appendWhereExpr(columnName, exprBuilder, options) {
|
330
|
+
// If upstream option is true, find all upstream queries containing the column
|
331
|
+
if (options && options.upstream) {
|
332
|
+
// Use UpstreamSelectQueryFinder to find all relevant queries
|
333
|
+
// (Assume UpstreamSelectQueryFinder is imported)
|
334
|
+
const finder = new UpstreamSelectQueryFinder_1.UpstreamSelectQueryFinder();
|
335
|
+
const queries = finder.find(this, [columnName]);
|
336
|
+
const collector = new SelectableColumnCollector_1.SelectableColumnCollector();
|
337
|
+
const formatter = new Formatter_1.Formatter();
|
338
|
+
for (const q of queries) {
|
339
|
+
const exprs = collector.collect(q).filter(item => item.name === columnName).map(item => item.value);
|
340
|
+
if (exprs.length !== 1) {
|
341
|
+
throw new Error(`Expected exactly one expression for column '${columnName}'`);
|
342
|
+
}
|
343
|
+
const exprStr = formatter.format(exprs[0]);
|
344
|
+
q.appendWhereRaw(exprBuilder(exprStr));
|
345
|
+
}
|
346
|
+
}
|
347
|
+
else {
|
348
|
+
// Only apply to the current query
|
349
|
+
const collector = new SelectableColumnCollector_1.SelectableColumnCollector();
|
350
|
+
const formatter = new Formatter_1.Formatter();
|
351
|
+
const exprs = collector.collect(this).filter(item => item.name === columnName).map(item => item.value);
|
352
|
+
if (exprs.length !== 1) {
|
353
|
+
throw new Error(`Expected exactly one expression for column '${columnName}'`);
|
354
|
+
}
|
355
|
+
const exprStr = formatter.format(exprs[0]);
|
356
|
+
this.appendWhereRaw(exprBuilder(exprStr));
|
357
|
+
}
|
358
|
+
}
|
289
359
|
}
|
290
360
|
exports.SimpleSelectQuery = SimpleSelectQuery;
|
291
361
|
SimpleSelectQuery.kind = Symbol("SelectQuery");
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"SimpleSelectQuery.js","sourceRoot":"","sources":["../../src/models/SimpleSelectQuery.ts"],"names":[],"mappings":";;;AAAA,iDAA8C;AAC9C,qCAAoQ;AACpQ,qDAAqF;AACrF,wDAAqD;AACrD,iEAA8D;AAC9D,yFAAsF;AACtF,0DAAuD;AACvD,2DAAwD;AAGxD,oEAAiE;
|
1
|
+
{"version":3,"file":"SimpleSelectQuery.js","sourceRoot":"","sources":["../../src/models/SimpleSelectQuery.ts"],"names":[],"mappings":"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"}
|
@@ -25,7 +25,7 @@ class CommandExpressionParser {
|
|
25
25
|
static parseModifierUnaryExpression(lexemes, index) {
|
26
26
|
let idx = index;
|
27
27
|
// Check for modifier unary expression
|
28
|
-
if (idx < lexemes.length && lexemes[idx].type
|
28
|
+
if (idx < lexemes.length && (lexemes[idx].type & Lexeme_1.TokenType.Command)) {
|
29
29
|
const command = lexemes[idx].value;
|
30
30
|
idx++;
|
31
31
|
const result = ValueParser_1.ValueParser.parseFromLexeme(lexemes, idx);
|
@@ -92,14 +92,14 @@ class CommandExpressionParser {
|
|
92
92
|
}
|
93
93
|
// Helper method: Check if a lexeme is a Command token with the specified value
|
94
94
|
static isCommandWithValue(lexeme, value) {
|
95
|
-
return lexeme.type
|
95
|
+
return ((lexeme.type & Lexeme_1.TokenType.Command) !== 0) && lexeme.value === value;
|
96
96
|
}
|
97
97
|
static parseCaseConditionValuePair(lexemes, index) {
|
98
98
|
let idx = index;
|
99
99
|
const condition = ValueParser_1.ValueParser.parseFromLexeme(lexemes, idx);
|
100
100
|
idx = condition.newIndex;
|
101
101
|
// Check for the existence of the THEN keyword
|
102
|
-
if (idx >= lexemes.length || lexemes[idx].type
|
102
|
+
if (idx >= lexemes.length || !(lexemes[idx].type & Lexeme_1.TokenType.Command) || lexemes[idx].value !== "then") {
|
103
103
|
throw new Error(`Expected 'then' after WHEN condition at index ${idx}`);
|
104
104
|
}
|
105
105
|
idx++; // Skip the THEN keyword
|
@@ -111,7 +111,7 @@ class CommandExpressionParser {
|
|
111
111
|
static parseArrayExpression(lexemes, index) {
|
112
112
|
let idx = index;
|
113
113
|
// Array function is enclosed in []
|
114
|
-
if (idx < lexemes.length && lexemes[idx].type
|
114
|
+
if (idx < lexemes.length && (lexemes[idx].type & Lexeme_1.TokenType.OpenBracket)) {
|
115
115
|
const arg = ValueParser_1.ValueParser.parseArgument(Lexeme_1.TokenType.OpenBracket, Lexeme_1.TokenType.CloseBracket, lexemes, idx);
|
116
116
|
idx = arg.newIndex;
|
117
117
|
const value = new ValueComponent_1.ArrayExpression(arg.value);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"CommandExpressionParser.js","sourceRoot":"","sources":["../../src/parsers/CommandExpressionParser.ts"],"names":[],"mappings":";;;AAAA,6CAAqD;AACrD,6DAAkJ;AAClJ,+CAA4C;AAE5C,MAAa,uBAAuB;IACzB,MAAM,CAAC,eAAe,CAAC,OAAiB,EAAE,KAAa;QAC1D,IAAI,GAAG,GAAG,KAAK,CAAC;QAChB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAE7B,IAAI,OAAO,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;YAC3B,GAAG,EAAE,CAAC;YACN,OAAO,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAClD,CAAC;aAAM,IAAI,OAAO,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;YACvC,GAAG,EAAE,CAAC;YACN,OAAO,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACtD,CAAC;aAAM,IAAI,OAAO,CAAC,KAAK,KAAK,OAAO,EAAE,CAAC;YACnC,GAAG,EAAE,CAAC;YACN,OAAO,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACnD,CAAC;QAED,OAAO,IAAI,CAAC,4BAA4B,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAC3D,CAAC;IAEO,MAAM,CAAC,4BAA4B,CAAC,OAAiB,EAAE,KAAa;QACxE,IAAI,GAAG,GAAG,KAAK,CAAC;QAChB,sCAAsC;QACtC,IAAI,GAAG,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,
|
1
|
+
{"version":3,"file":"CommandExpressionParser.js","sourceRoot":"","sources":["../../src/parsers/CommandExpressionParser.ts"],"names":[],"mappings":"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"}
|
@@ -30,7 +30,7 @@ class FunctionExpressionParser {
|
|
30
30
|
static tryParseBinaryExpression(lexemes, index, left, allowAndOperator = true) {
|
31
31
|
let idx = index;
|
32
32
|
// If the next element is an operator, process it as a binary expression
|
33
|
-
if (idx < lexemes.length && lexemes[idx].type
|
33
|
+
if (idx < lexemes.length && (lexemes[idx].type & Lexeme_1.TokenType.Operator)) {
|
34
34
|
if (!allowAndOperator && lexemes[idx].value === "and") {
|
35
35
|
// Handle special case for "and" operator
|
36
36
|
return null;
|
@@ -64,7 +64,7 @@ class FunctionExpressionParser {
|
|
64
64
|
let idx = index;
|
65
65
|
const lower = ValueParser_1.ValueParser.parseFromLexeme(lexemes, idx, false);
|
66
66
|
idx = lower.newIndex;
|
67
|
-
if (idx < lexemes.length && lexemes[idx].type
|
67
|
+
if (idx < lexemes.length && (lexemes[idx].type & Lexeme_1.TokenType.Operator) && lexemes[idx].value !== "and") {
|
68
68
|
throw new Error(`Expected 'and' after 'between' at index ${idx}`);
|
69
69
|
}
|
70
70
|
idx++;
|
@@ -79,7 +79,7 @@ class FunctionExpressionParser {
|
|
79
79
|
const result = lexemes[idx];
|
80
80
|
const functionName = result.value;
|
81
81
|
idx++;
|
82
|
-
if (idx < lexemes.length && lexemes[idx].type
|
82
|
+
if (idx < lexemes.length && (lexemes[idx].type & Lexeme_1.TokenType.OpenParen)) {
|
83
83
|
// General argument parsing
|
84
84
|
const arg = ValueParser_1.ValueParser.parseArgument(Lexeme_1.TokenType.OpenParen, Lexeme_1.TokenType.CloseParen, lexemes, idx);
|
85
85
|
idx = arg.newIndex;
|
@@ -102,20 +102,20 @@ class FunctionExpressionParser {
|
|
102
102
|
let idx = index;
|
103
103
|
const functionName = lexemes[idx].value;
|
104
104
|
idx++;
|
105
|
-
if (idx < lexemes.length && lexemes[idx].type
|
105
|
+
if (idx < lexemes.length && (lexemes[idx].type & Lexeme_1.TokenType.OpenParen)) {
|
106
106
|
idx++;
|
107
107
|
const input = ValueParser_1.ValueParser.parseFromLexeme(lexemes, idx);
|
108
108
|
let arg = input.value;
|
109
109
|
idx = input.newIndex;
|
110
110
|
// Delegate to the standard function parser if parsing by comma
|
111
|
-
if (idx < lexemes.length && lexemes[idx].type
|
111
|
+
if (idx < lexemes.length && (lexemes[idx].type & Lexeme_1.TokenType.Comma)) {
|
112
112
|
return this.parseFunctionCall(lexemes, index);
|
113
113
|
}
|
114
114
|
// Check keywords
|
115
115
|
for (const { key, required } of keywords) {
|
116
|
-
if (idx < lexemes.length && lexemes[idx].type
|
116
|
+
if (idx < lexemes.length && (lexemes[idx].type & Lexeme_1.TokenType.Command) && lexemes[idx].value === key) {
|
117
117
|
idx++;
|
118
|
-
if (idx < lexemes.length && (lexemes[idx].type
|
118
|
+
if (idx < lexemes.length && (lexemes[idx].type & Lexeme_1.TokenType.Type)) {
|
119
119
|
const typeValue = this.parseTypeValue(lexemes, idx);
|
120
120
|
arg = new ValueComponent_1.BinaryExpression(arg, key, typeValue.value);
|
121
121
|
idx = typeValue.newIndex;
|
@@ -130,7 +130,7 @@ class FunctionExpressionParser {
|
|
130
130
|
throw new Error(`Keyword '${key}' is required at index ${idx}`);
|
131
131
|
}
|
132
132
|
}
|
133
|
-
if (idx < lexemes.length && lexemes[idx].type
|
133
|
+
if (idx < lexemes.length && (lexemes[idx].type & Lexeme_1.TokenType.CloseParen)) {
|
134
134
|
idx++;
|
135
135
|
if (idx < lexemes.length && lexemes[idx].value === "over") {
|
136
136
|
idx++;
|
@@ -155,11 +155,11 @@ class FunctionExpressionParser {
|
|
155
155
|
static parseTypeValue(lexemes, index) {
|
156
156
|
let idx = index;
|
157
157
|
// Check for type value
|
158
|
-
if (idx < lexemes.length && (lexemes[idx].type
|
158
|
+
if (idx < lexemes.length && (lexemes[idx].type & Lexeme_1.TokenType.Type)) {
|
159
159
|
const typeName = lexemes[idx].value;
|
160
160
|
idx++;
|
161
161
|
// Check for array type
|
162
|
-
if (idx < lexemes.length && lexemes[idx].type
|
162
|
+
if (idx < lexemes.length && (lexemes[idx].type & Lexeme_1.TokenType.OpenParen)) {
|
163
163
|
const arg = ValueParser_1.ValueParser.parseArgument(Lexeme_1.TokenType.OpenParen, Lexeme_1.TokenType.CloseParen, lexemes, idx);
|
164
164
|
idx = arg.newIndex;
|
165
165
|
const value = new ValueComponent_1.TypeValue(typeName, arg.value);
|