rawsql-ts 0.23.1 → 0.24.1
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/dist/esm/index.min.js +11 -11
- package/dist/esm/index.min.js.map +4 -4
- package/dist/esm/models/Clause.d.ts +30 -2
- package/dist/esm/models/Clause.js +25 -2
- package/dist/esm/models/Clause.js.map +1 -1
- package/dist/esm/models/InsertQuery.d.ts +3 -1
- package/dist/esm/models/InsertQuery.js +3 -2
- package/dist/esm/models/InsertQuery.js.map +1 -1
- package/dist/esm/models/SqlPrintToken.d.ts +1 -0
- package/dist/esm/models/SqlPrintToken.js +1 -0
- package/dist/esm/models/SqlPrintToken.js.map +1 -1
- package/dist/esm/models/ValueComponent.d.ts +13 -2
- package/dist/esm/models/ValueComponent.js +12 -1
- package/dist/esm/models/ValueComponent.js.map +1 -1
- package/dist/esm/parsers/FunctionExpressionParser.d.ts +8 -0
- package/dist/esm/parsers/FunctionExpressionParser.js +66 -5
- package/dist/esm/parsers/FunctionExpressionParser.js.map +1 -1
- package/dist/esm/parsers/GroupByParser.d.ts +1 -0
- package/dist/esm/parsers/GroupByParser.js +30 -7
- package/dist/esm/parsers/GroupByParser.js.map +1 -1
- package/dist/esm/parsers/InsertQueryParser.d.ts +2 -0
- package/dist/esm/parsers/InsertQueryParser.js +120 -3
- package/dist/esm/parsers/InsertQueryParser.js.map +1 -1
- package/dist/esm/parsers/ReturningClauseParser.d.ts +1 -0
- package/dist/esm/parsers/ReturningClauseParser.js +46 -2
- package/dist/esm/parsers/ReturningClauseParser.js.map +1 -1
- package/dist/esm/parsers/SqlPrintTokenParser.d.ts +14 -0
- package/dist/esm/parsers/SqlPrintTokenParser.js +106 -8
- package/dist/esm/parsers/SqlPrintTokenParser.js.map +1 -1
- package/dist/esm/parsers/SqlTokenizer.js +2 -2
- package/dist/esm/parsers/SqlTokenizer.js.map +1 -1
- package/dist/esm/parsers/ValueParser.d.ts +1 -0
- package/dist/esm/parsers/ValueParser.js +39 -1
- package/dist/esm/parsers/ValueParser.js.map +1 -1
- package/dist/esm/tokenReaders/CommandTokenReader.js +5 -0
- package/dist/esm/tokenReaders/CommandTokenReader.js.map +1 -1
- package/dist/esm/tokenReaders/FunctionTokenReader.d.ts +1 -0
- package/dist/esm/tokenReaders/FunctionTokenReader.js +7 -0
- package/dist/esm/tokenReaders/FunctionTokenReader.js.map +1 -1
- package/dist/esm/tokenReaders/PostgresFunctionTokenReader.d.ts +5 -0
- package/dist/esm/tokenReaders/PostgresFunctionTokenReader.js +12 -0
- package/dist/esm/tokenReaders/PostgresFunctionTokenReader.js.map +1 -0
- package/dist/esm/transformers/CTECollector.d.ts +1 -0
- package/dist/esm/transformers/CTECollector.js +5 -1
- package/dist/esm/transformers/CTECollector.js.map +1 -1
- package/dist/esm/transformers/CTEDisabler.d.ts +2 -1
- package/dist/esm/transformers/CTEDisabler.js +7 -2
- package/dist/esm/transformers/CTEDisabler.js.map +1 -1
- package/dist/esm/transformers/CTETableReferenceCollector.d.ts +1 -0
- package/dist/esm/transformers/CTETableReferenceCollector.js +5 -1
- package/dist/esm/transformers/CTETableReferenceCollector.js.map +1 -1
- package/dist/esm/transformers/ColumnReferenceCollector.d.ts +1 -0
- package/dist/esm/transformers/ColumnReferenceCollector.js +8 -1
- package/dist/esm/transformers/ColumnReferenceCollector.js.map +1 -1
- package/dist/esm/transformers/SelectableColumnCollector.d.ts +1 -0
- package/dist/esm/transformers/SelectableColumnCollector.js +5 -1
- package/dist/esm/transformers/SelectableColumnCollector.js.map +1 -1
- package/dist/esm/transformers/SqlFormatter.d.ts +5 -1
- package/dist/esm/transformers/SqlFormatter.js +3 -3
- package/dist/esm/transformers/SqlFormatter.js.map +1 -1
- package/dist/esm/transformers/TableSourceCollector.d.ts +1 -0
- package/dist/esm/transformers/TableSourceCollector.js +5 -1
- package/dist/esm/transformers/TableSourceCollector.js.map +1 -1
- package/dist/esm/utils/ParameterRemover.d.ts +1 -0
- package/dist/esm/utils/ParameterRemover.js +14 -2
- package/dist/esm/utils/ParameterRemover.js.map +1 -1
- package/dist/esm/utils/ValueComponentRewriter.js +5 -1
- package/dist/esm/utils/ValueComponentRewriter.js.map +1 -1
- package/dist/index.min.js +11 -11
- package/dist/index.min.js.map +4 -4
- package/dist/models/Clause.js +28 -3
- package/dist/models/Clause.js.map +1 -1
- package/dist/models/InsertQuery.js +3 -2
- package/dist/models/InsertQuery.js.map +1 -1
- package/dist/models/SqlPrintToken.js +1 -0
- package/dist/models/SqlPrintToken.js.map +1 -1
- package/dist/models/ValueComponent.js +14 -2
- package/dist/models/ValueComponent.js.map +1 -1
- package/dist/parsers/FunctionExpressionParser.js +66 -5
- package/dist/parsers/FunctionExpressionParser.js.map +1 -1
- package/dist/parsers/GroupByParser.js +30 -7
- package/dist/parsers/GroupByParser.js.map +1 -1
- package/dist/parsers/InsertQueryParser.js +119 -2
- package/dist/parsers/InsertQueryParser.js.map +1 -1
- package/dist/parsers/ReturningClauseParser.js +45 -1
- package/dist/parsers/ReturningClauseParser.js.map +1 -1
- package/dist/parsers/SqlPrintTokenParser.js +104 -6
- package/dist/parsers/SqlPrintTokenParser.js.map +1 -1
- package/dist/parsers/SqlTokenizer.js +2 -2
- package/dist/parsers/SqlTokenizer.js.map +1 -1
- package/dist/parsers/ValueParser.js +38 -0
- package/dist/parsers/ValueParser.js.map +1 -1
- package/dist/src/models/Clause.d.ts +30 -2
- package/dist/src/models/InsertQuery.d.ts +3 -1
- package/dist/src/models/SqlPrintToken.d.ts +1 -0
- package/dist/src/models/ValueComponent.d.ts +13 -2
- package/dist/src/parsers/FunctionExpressionParser.d.ts +8 -0
- package/dist/src/parsers/GroupByParser.d.ts +1 -0
- package/dist/src/parsers/InsertQueryParser.d.ts +2 -0
- package/dist/src/parsers/ReturningClauseParser.d.ts +1 -0
- package/dist/src/parsers/SqlPrintTokenParser.d.ts +14 -0
- package/dist/src/parsers/ValueParser.d.ts +1 -0
- package/dist/src/tokenReaders/FunctionTokenReader.d.ts +1 -0
- package/dist/src/tokenReaders/PostgresFunctionTokenReader.d.ts +5 -0
- package/dist/src/transformers/CTECollector.d.ts +1 -0
- package/dist/src/transformers/CTEDisabler.d.ts +2 -1
- package/dist/src/transformers/CTETableReferenceCollector.d.ts +1 -0
- package/dist/src/transformers/ColumnReferenceCollector.d.ts +1 -0
- package/dist/src/transformers/SelectableColumnCollector.d.ts +1 -0
- package/dist/src/transformers/SqlFormatter.d.ts +5 -1
- package/dist/src/transformers/TableSourceCollector.d.ts +1 -0
- package/dist/src/utils/ParameterRemover.d.ts +1 -0
- package/dist/tokenReaders/CommandTokenReader.js +5 -0
- package/dist/tokenReaders/CommandTokenReader.js.map +1 -1
- package/dist/tokenReaders/FunctionTokenReader.js +7 -0
- package/dist/tokenReaders/FunctionTokenReader.js.map +1 -1
- package/dist/tokenReaders/PostgresFunctionTokenReader.js +16 -0
- package/dist/tokenReaders/PostgresFunctionTokenReader.js.map +1 -0
- package/dist/transformers/CTECollector.js +4 -0
- package/dist/transformers/CTECollector.js.map +1 -1
- package/dist/transformers/CTEDisabler.js +6 -1
- package/dist/transformers/CTEDisabler.js.map +1 -1
- package/dist/transformers/CTETableReferenceCollector.js +4 -0
- package/dist/transformers/CTETableReferenceCollector.js.map +1 -1
- package/dist/transformers/ColumnReferenceCollector.js +7 -0
- package/dist/transformers/ColumnReferenceCollector.js.map +1 -1
- package/dist/transformers/SelectableColumnCollector.js +4 -0
- package/dist/transformers/SelectableColumnCollector.js.map +1 -1
- package/dist/transformers/SqlFormatter.js +4 -2
- package/dist/transformers/SqlFormatter.js.map +1 -1
- package/dist/transformers/TableSourceCollector.js +4 -0
- package/dist/transformers/TableSourceCollector.js.map +1 -1
- package/dist/tsconfig.browser.tsbuildinfo +1 -1
- package/dist/utils/ParameterRemover.js +13 -1
- package/dist/utils/ParameterRemover.js.map +1 -1
- package/dist/utils/ValueComponentRewriter.js +4 -0
- package/dist/utils/ValueComponentRewriter.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { PartitionByClause, OrderByClause, OrderByItem, SelectClause, SelectItem, Distinct, DistinctOn, SortDirection, NullsSortDirection, TableSource, SourceExpression, FromClause, JoinClause, JoinOnClause, JoinUsingClause, FunctionSource, SourceAliasExpression, WhereClause, GroupByClause, HavingClause, SubQuerySource, WindowFrameClause, LimitClause, ForClause, OffsetClause, WindowsClause as WindowClause, CommonTable, WithClause, FetchClause, FetchExpression, InsertClause, UpdateClause, DeleteClause, UsingClause, SetClause, ReturningClause, SetClauseItem } from "../models/Clause";
|
|
1
|
+
import { PartitionByClause, OrderByClause, OrderByItem, SelectClause, SelectItem, Distinct, DistinctOn, SortDirection, NullsSortDirection, TableSource, SourceExpression, FromClause, JoinClause, JoinOnClause, JoinUsingClause, FunctionSource, SourceAliasExpression, WhereClause, GroupByClause, HavingClause, SubQuerySource, WindowFrameClause, LimitClause, ForClause, OffsetClause, WindowsClause as WindowClause, CommonTable, WithClause, FetchClause, FetchExpression, InsertClause, OnConflictClause, UpdateClause, DeleteClause, UsingClause, SetClause, ReturningClause, SetClauseItem } from "../models/Clause";
|
|
2
2
|
import { HintClause } from "../models/HintClause";
|
|
3
3
|
import { BinarySelectQuery, SimpleSelectQuery, ValuesQuery } from "../models/SelectQuery";
|
|
4
4
|
import { SqlPrintToken, SqlPrintTokenType, SqlPrintTokenContainerType } from "../models/SqlPrintToken";
|
|
5
5
|
import { SelectQueryWithClauseHelper } from "../utils/SelectQueryWithClauseHelper";
|
|
6
|
-
import { ValueList, ColumnReference, FunctionCall, UnaryExpression, BinaryExpression, LiteralValue, ParameterExpression, SwitchCaseArgument, CaseKeyValuePair, RawString, IdentifierString, ParenExpression, CastExpression, CaseExpression, ArrayExpression, ArrayQueryExpression, ArraySliceExpression, ArrayIndexExpression, BetweenExpression, StringSpecifierExpression, TypeValue, TupleExpression, WindowFrameExpression, QualifiedName, InlineQuery, WindowFrameSpec, WindowFrameBoundStatic, WindowFrameBoundaryValue } from "../models/ValueComponent";
|
|
6
|
+
import { ValueList, ColumnReference, FunctionCall, UnaryExpression, BinaryExpression, LiteralValue, ParameterExpression, SwitchCaseArgument, CaseKeyValuePair, RawString, IdentifierString, ParenExpression, CastExpression, CaseExpression, ArrayExpression, ArrayQueryExpression, ArraySliceExpression, ArrayIndexExpression, BetweenExpression, JsonPredicateExpression, StringSpecifierExpression, TypeValue, TupleExpression, WindowFrameExpression, QualifiedName, InlineQuery, WindowFrameSpec, WindowFrameBoundStatic, WindowFrameBoundaryValue } from "../models/ValueComponent";
|
|
7
7
|
import { ParameterCollector } from "../transformers/ParameterCollector";
|
|
8
8
|
import { IdentifierDecorator } from "./IdentifierDecorator";
|
|
9
9
|
import { ParameterDecorator } from "./ParameterDecorator";
|
|
@@ -154,7 +154,7 @@ export class SqlPrintTokenParser {
|
|
|
154
154
|
return this._selfHandlingComponentTypes;
|
|
155
155
|
}
|
|
156
156
|
constructor(options) {
|
|
157
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
157
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
|
|
158
158
|
this.handlers = new Map();
|
|
159
159
|
this.index = 1;
|
|
160
160
|
this.joinConditionContexts = [];
|
|
@@ -174,7 +174,9 @@ export class SqlPrintTokenParser {
|
|
|
174
174
|
});
|
|
175
175
|
this.castStyle = (_j = options === null || options === void 0 ? void 0 : options.castStyle) !== null && _j !== void 0 ? _j : 'standard';
|
|
176
176
|
this.constraintStyle = (_k = options === null || options === void 0 ? void 0 : options.constraintStyle) !== null && _k !== void 0 ? _k : 'postgres';
|
|
177
|
-
this.
|
|
177
|
+
this.sourceAliasStyle = (_l = options === null || options === void 0 ? void 0 : options.sourceAliasStyle) !== null && _l !== void 0 ? _l : 'as';
|
|
178
|
+
this.orderByDefaultDirectionStyle = (_m = options === null || options === void 0 ? void 0 : options.orderByDefaultDirectionStyle) !== null && _m !== void 0 ? _m : 'omit';
|
|
179
|
+
this.normalizeJoinConditionOrder = (_o = options === null || options === void 0 ? void 0 : options.joinConditionOrderByDeclaration) !== null && _o !== void 0 ? _o : false;
|
|
178
180
|
this.handlers.set(ValueList.kind, (expr) => this.visitValueList(expr));
|
|
179
181
|
this.handlers.set(ColumnReference.kind, (expr) => this.visitColumnReference(expr));
|
|
180
182
|
this.handlers.set(QualifiedName.kind, (expr) => this.visitQualifiedName(expr));
|
|
@@ -195,6 +197,7 @@ export class SqlPrintTokenParser {
|
|
|
195
197
|
this.handlers.set(ArraySliceExpression.kind, (expr) => this.visitArraySliceExpression(expr));
|
|
196
198
|
this.handlers.set(ArrayIndexExpression.kind, (expr) => this.visitArrayIndexExpression(expr));
|
|
197
199
|
this.handlers.set(BetweenExpression.kind, (expr) => this.visitBetweenExpression(expr));
|
|
200
|
+
this.handlers.set(JsonPredicateExpression.kind, (expr) => this.visitJsonPredicateExpression(expr));
|
|
198
201
|
this.handlers.set(StringSpecifierExpression.kind, (expr) => this.visitStringSpecifierExpression(expr));
|
|
199
202
|
this.handlers.set(TypeValue.kind, (expr) => this.visitTypeValue(expr));
|
|
200
203
|
this.handlers.set(TupleExpression.kind, (expr) => this.visitTupleExpression(expr));
|
|
@@ -244,6 +247,7 @@ export class SqlPrintTokenParser {
|
|
|
244
247
|
this.handlers.set(TupleExpression.kind, (expr) => this.visitTupleExpression(expr));
|
|
245
248
|
this.handlers.set(InsertQuery.kind, (expr) => this.visitInsertQuery(expr));
|
|
246
249
|
this.handlers.set(InsertClause.kind, (expr) => this.visitInsertClause(expr));
|
|
250
|
+
this.handlers.set(OnConflictClause.kind, (expr) => this.visitOnConflictClause(expr));
|
|
247
251
|
this.handlers.set(UpdateQuery.kind, (expr) => this.visitUpdateQuery(expr));
|
|
248
252
|
this.handlers.set(UpdateClause.kind, (expr) => this.visitUpdateClause(expr));
|
|
249
253
|
this.handlers.set(DeleteQuery.kind, (expr) => this.visitDeleteQuery(expr));
|
|
@@ -398,6 +402,10 @@ export class SqlPrintTokenParser {
|
|
|
398
402
|
token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
|
|
399
403
|
token.innerTokens.push(new SqlPrintToken(SqlPrintTokenType.keyword, 'desc'));
|
|
400
404
|
}
|
|
405
|
+
else if (this.orderByDefaultDirectionStyle === 'explicit') {
|
|
406
|
+
token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
|
|
407
|
+
token.innerTokens.push(new SqlPrintToken(SqlPrintTokenType.keyword, 'asc'));
|
|
408
|
+
}
|
|
401
409
|
if (arg.nullsPosition) {
|
|
402
410
|
if (arg.nullsPosition === NullsSortDirection.First) {
|
|
403
411
|
token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
|
|
@@ -928,6 +936,10 @@ export class SqlPrintTokenParser {
|
|
|
928
936
|
token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
|
|
929
937
|
token.innerTokens.push(new SqlPrintToken(SqlPrintTokenType.keyword, 'with ordinality'));
|
|
930
938
|
}
|
|
939
|
+
if (arg.nullsTreatment) {
|
|
940
|
+
token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
|
|
941
|
+
token.innerTokens.push(new SqlPrintToken(SqlPrintTokenType.keyword, arg.nullsTreatment));
|
|
942
|
+
}
|
|
931
943
|
if (arg.over) {
|
|
932
944
|
token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
|
|
933
945
|
token.innerTokens.push(new SqlPrintToken(SqlPrintTokenType.keyword, 'over'));
|
|
@@ -1763,8 +1775,7 @@ export class SqlPrintTokenParser {
|
|
|
1763
1775
|
return token;
|
|
1764
1776
|
}
|
|
1765
1777
|
token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
|
|
1766
|
-
|
|
1767
|
-
token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
|
|
1778
|
+
this.appendSourceAliasKeyword(token);
|
|
1768
1779
|
// exclude column aliases
|
|
1769
1780
|
token.innerTokens.push(arg.aliasExpression.accept(this));
|
|
1770
1781
|
return token;
|
|
@@ -1772,13 +1783,19 @@ export class SqlPrintTokenParser {
|
|
|
1772
1783
|
else {
|
|
1773
1784
|
// For other source types, just print the alias
|
|
1774
1785
|
token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
|
|
1775
|
-
|
|
1776
|
-
token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
|
|
1786
|
+
this.appendSourceAliasKeyword(token);
|
|
1777
1787
|
// included column aliases
|
|
1778
1788
|
token.innerTokens.push(arg.aliasExpression.accept(this));
|
|
1779
1789
|
return token;
|
|
1780
1790
|
}
|
|
1781
1791
|
}
|
|
1792
|
+
appendSourceAliasKeyword(token) {
|
|
1793
|
+
if (this.sourceAliasStyle === 'implicit') {
|
|
1794
|
+
return;
|
|
1795
|
+
}
|
|
1796
|
+
token.innerTokens.push(new SqlPrintToken(SqlPrintTokenType.keyword, 'as'));
|
|
1797
|
+
token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
|
|
1798
|
+
}
|
|
1782
1799
|
visitFromClause(arg) {
|
|
1783
1800
|
// Build a declaration order map so JOIN ON operands can be normalized later.
|
|
1784
1801
|
let contextPushed = false;
|
|
@@ -2029,6 +2046,13 @@ export class SqlPrintTokenParser {
|
|
|
2029
2046
|
}
|
|
2030
2047
|
visitGroupByClause(arg) {
|
|
2031
2048
|
const token = new SqlPrintToken(SqlPrintTokenType.keyword, 'group by', SqlPrintTokenContainerType.GroupByClause);
|
|
2049
|
+
if (arg.mode) {
|
|
2050
|
+
token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
|
|
2051
|
+
token.innerTokens.push(new SqlPrintToken(SqlPrintTokenType.keyword, arg.mode));
|
|
2052
|
+
}
|
|
2053
|
+
if (arg.grouping.length === 0) {
|
|
2054
|
+
return token;
|
|
2055
|
+
}
|
|
2032
2056
|
token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
|
|
2033
2057
|
for (let i = 0; i < arg.grouping.length; i++) {
|
|
2034
2058
|
if (i > 0) {
|
|
@@ -2298,6 +2322,10 @@ export class SqlPrintTokenParser {
|
|
|
2298
2322
|
token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
|
|
2299
2323
|
token.innerTokens.push(this.visit(arg.selectQuery));
|
|
2300
2324
|
}
|
|
2325
|
+
if (arg.onConflictClause) {
|
|
2326
|
+
token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
|
|
2327
|
+
token.innerTokens.push(arg.onConflictClause.accept(this));
|
|
2328
|
+
}
|
|
2301
2329
|
if (arg.returningClause) {
|
|
2302
2330
|
token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
|
|
2303
2331
|
token.innerTokens.push(arg.returningClause.accept(this));
|
|
@@ -2307,6 +2335,59 @@ export class SqlPrintTokenParser {
|
|
|
2307
2335
|
}
|
|
2308
2336
|
return token;
|
|
2309
2337
|
}
|
|
2338
|
+
visitJsonPredicateExpression(arg) {
|
|
2339
|
+
const token = new SqlPrintToken(SqlPrintTokenType.container, '', SqlPrintTokenContainerType.BinaryExpression);
|
|
2340
|
+
token.innerTokens.push(this.visit(arg.expression));
|
|
2341
|
+
token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
|
|
2342
|
+
token.innerTokens.push(new SqlPrintToken(SqlPrintTokenType.operator, arg.negated ? 'is not' : 'is'));
|
|
2343
|
+
token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
|
|
2344
|
+
token.innerTokens.push(new SqlPrintToken(SqlPrintTokenType.keyword, 'json'));
|
|
2345
|
+
if (arg.jsonType) {
|
|
2346
|
+
token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
|
|
2347
|
+
token.innerTokens.push(new SqlPrintToken(SqlPrintTokenType.keyword, arg.jsonType));
|
|
2348
|
+
}
|
|
2349
|
+
if (arg.uniqueKeys) {
|
|
2350
|
+
token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
|
|
2351
|
+
token.innerTokens.push(new SqlPrintToken(SqlPrintTokenType.keyword, `${arg.uniqueKeys} unique keys`));
|
|
2352
|
+
}
|
|
2353
|
+
return token;
|
|
2354
|
+
}
|
|
2355
|
+
visitOnConflictClause(arg) {
|
|
2356
|
+
const token = new SqlPrintToken(SqlPrintTokenType.keyword, 'on conflict', SqlPrintTokenContainerType.OnConflictClause);
|
|
2357
|
+
if (arg.target) {
|
|
2358
|
+
token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
|
|
2359
|
+
if (arg.targetKind === "constraint") {
|
|
2360
|
+
token.innerTokens.push(new SqlPrintToken(SqlPrintTokenType.keyword, 'on constraint'));
|
|
2361
|
+
token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
|
|
2362
|
+
}
|
|
2363
|
+
token.innerTokens.push(arg.target.accept(this));
|
|
2364
|
+
}
|
|
2365
|
+
token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
|
|
2366
|
+
token.innerTokens.push(new SqlPrintToken(SqlPrintTokenType.keyword, this.formatOnConflictAction(arg)));
|
|
2367
|
+
if (arg.setClause) {
|
|
2368
|
+
token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
|
|
2369
|
+
token.innerTokens.push(arg.setClause.accept(this));
|
|
2370
|
+
}
|
|
2371
|
+
if (arg.forClause) {
|
|
2372
|
+
token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
|
|
2373
|
+
token.innerTokens.push(arg.forClause.accept(this));
|
|
2374
|
+
}
|
|
2375
|
+
if (arg.whereClause) {
|
|
2376
|
+
token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
|
|
2377
|
+
token.innerTokens.push(arg.whereClause.accept(this));
|
|
2378
|
+
}
|
|
2379
|
+
return token;
|
|
2380
|
+
}
|
|
2381
|
+
formatOnConflictAction(arg) {
|
|
2382
|
+
switch (arg.action) {
|
|
2383
|
+
case "nothing":
|
|
2384
|
+
return "do nothing";
|
|
2385
|
+
case "select":
|
|
2386
|
+
return "do select";
|
|
2387
|
+
case "update":
|
|
2388
|
+
return "do update";
|
|
2389
|
+
}
|
|
2390
|
+
}
|
|
2310
2391
|
visitInsertClause(arg) {
|
|
2311
2392
|
const token = new SqlPrintToken(SqlPrintTokenType.container, '', SqlPrintTokenContainerType.InsertClause);
|
|
2312
2393
|
token.innerTokens.push(new SqlPrintToken(SqlPrintTokenType.keyword, 'insert into'));
|
|
@@ -2549,6 +2630,23 @@ export class SqlPrintTokenParser {
|
|
|
2549
2630
|
visitReturningClause(arg) {
|
|
2550
2631
|
const token = new SqlPrintToken(SqlPrintTokenType.keyword, 'returning', SqlPrintTokenContainerType.ReturningClause);
|
|
2551
2632
|
token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
|
|
2633
|
+
if (arg.aliases.length > 0) {
|
|
2634
|
+
token.innerTokens.push(new SqlPrintToken(SqlPrintTokenType.keyword, 'with'));
|
|
2635
|
+
token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
|
|
2636
|
+
token.innerTokens.push(SqlPrintTokenParser.PAREN_OPEN_TOKEN);
|
|
2637
|
+
for (let i = 0; i < arg.aliases.length; i++) {
|
|
2638
|
+
if (i > 0) {
|
|
2639
|
+
token.innerTokens.push(...SqlPrintTokenParser.commaSpaceTokens());
|
|
2640
|
+
}
|
|
2641
|
+
token.innerTokens.push(new SqlPrintToken(SqlPrintTokenType.keyword, arg.aliases[i].kind));
|
|
2642
|
+
token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
|
|
2643
|
+
token.innerTokens.push(new SqlPrintToken(SqlPrintTokenType.keyword, 'as'));
|
|
2644
|
+
token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
|
|
2645
|
+
token.innerTokens.push(this.visit(arg.aliases[i].alias));
|
|
2646
|
+
}
|
|
2647
|
+
token.innerTokens.push(SqlPrintTokenParser.PAREN_CLOSE_TOKEN);
|
|
2648
|
+
token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
|
|
2649
|
+
}
|
|
2552
2650
|
for (let i = 0; i < arg.items.length; i++) {
|
|
2553
2651
|
if (i > 0) {
|
|
2554
2652
|
token.innerTokens.push(...SqlPrintTokenParser.commaSpaceTokens());
|