@stamhoofd/sql 2.119.0 → 2.120.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/{src/ModelCache.d.ts → ModelCache.d.ts} +1 -1
- package/dist/ModelCache.d.ts.map +1 -0
- package/{src/ModelCache.ts → dist/ModelCache.js} +8 -16
- package/dist/ModelCache.js.map +1 -0
- package/dist/{src/QueryableModel.d.ts → QueryableModel.d.ts} +7 -6
- package/dist/QueryableModel.d.ts.map +1 -0
- package/dist/{src/QueryableModel.js → QueryableModel.js} +9 -13
- package/dist/QueryableModel.js.map +1 -0
- package/dist/{src/SQL.d.ts → SQL.d.ts} +7 -5
- package/dist/SQL.d.ts.map +1 -0
- package/dist/SQL.js +100 -0
- package/dist/SQL.js.map +1 -0
- package/dist/{src/SQLDelete.d.ts → SQLDelete.d.ts} +2 -2
- package/dist/SQLDelete.d.ts.map +1 -0
- package/dist/{src/SQLDelete.js → SQLDelete.js} +8 -12
- package/dist/SQLDelete.js.map +1 -0
- package/dist/SQLExpression.d.ts.map +1 -0
- package/dist/{src/SQLExpression.js → SQLExpression.js} +3 -8
- package/dist/SQLExpression.js.map +1 -0
- package/dist/{src/SQLExpressions.d.ts → SQLExpressions.d.ts} +2 -2
- package/dist/SQLExpressions.d.ts.map +1 -0
- package/dist/{src/SQLExpressions.js → SQLExpressions.js} +78 -115
- package/dist/SQLExpressions.js.map +1 -0
- package/dist/{src/SQLInsert.d.ts → SQLInsert.d.ts} +3 -2
- package/dist/SQLInsert.d.ts.map +1 -0
- package/dist/{src/SQLInsert.js → SQLInsert.js} +17 -21
- package/dist/SQLInsert.js.map +1 -0
- package/dist/{src/SQLJoin.d.ts → SQLJoin.d.ts} +1 -1
- package/dist/SQLJoin.d.ts.map +1 -0
- package/{src/SQLJoin.ts → dist/SQLJoin.js} +15 -18
- package/dist/SQLJoin.js.map +1 -0
- package/dist/{src/SQLJsonExpressions.d.ts → SQLJsonExpressions.d.ts} +2 -2
- package/dist/SQLJsonExpressions.d.ts.map +1 -0
- package/dist/{src/SQLJsonExpressions.js → SQLJsonExpressions.js} +31 -44
- package/dist/SQLJsonExpressions.js.map +1 -0
- package/dist/SQLLogger.d.ts.map +1 -0
- package/dist/{src/SQLLogger.js → SQLLogger.js} +5 -8
- package/dist/SQLLogger.js.map +1 -0
- package/dist/{src/SQLOrderBy.d.ts → SQLOrderBy.d.ts} +1 -1
- package/dist/SQLOrderBy.d.ts.map +1 -0
- package/dist/{src/SQLOrderBy.js → SQLOrderBy.js} +8 -13
- package/dist/SQLOrderBy.js.map +1 -0
- package/dist/{src/SQLSelect.d.ts → SQLSelect.d.ts} +3 -3
- package/dist/SQLSelect.d.ts.map +1 -0
- package/dist/{src/SQLSelect.js → SQLSelect.js} +24 -29
- package/dist/SQLSelect.js.map +1 -0
- package/dist/{src/SQLTranslatedStringHelper.d.ts → SQLTranslatedStringHelper.d.ts} +3 -2
- package/dist/SQLTranslatedStringHelper.d.ts.map +1 -0
- package/dist/SQLTranslatedStringHelper.js +33 -0
- package/dist/SQLTranslatedStringHelper.js.map +1 -0
- package/dist/{src/SQLUpdate.d.ts → SQLUpdate.d.ts} +3 -2
- package/dist/SQLUpdate.d.ts.map +1 -0
- package/{src/SQLUpdate.ts → dist/SQLUpdate.js} +18 -35
- package/dist/SQLUpdate.js.map +1 -0
- package/dist/{src/SQLWhere.d.ts → SQLWhere.d.ts} +3 -3
- package/dist/SQLWhere.d.ts.map +1 -0
- package/dist/{src/SQLWhere.js → SQLWhere.js} +42 -56
- package/dist/SQLWhere.js.map +1 -0
- package/dist/{src/filters → filters}/SQLFilter.d.ts +5 -5
- package/dist/filters/SQLFilter.d.ts.map +1 -0
- package/{src/filters/SQLFilter.ts → dist/filters/SQLFilter.js} +55 -121
- package/dist/filters/SQLFilter.js.map +1 -0
- package/dist/{src/filters → filters}/SQLSorter.d.ts +6 -6
- package/dist/filters/SQLSorter.d.ts.map +1 -0
- package/dist/{src/filters → filters}/SQLSorter.js +4 -7
- package/dist/filters/SQLSorter.js.map +1 -0
- package/dist/filters/compilers/contains.d.ts +4 -0
- package/dist/filters/compilers/contains.d.ts.map +1 -0
- package/{src/filters/compilers/contains.ts → dist/filters/compilers/contains.js} +7 -25
- package/dist/filters/compilers/contains.js.map +1 -0
- package/dist/filters/compilers/equals.d.ts +4 -0
- package/dist/filters/compilers/equals.d.ts.map +1 -0
- package/dist/filters/compilers/equals.js +44 -0
- package/dist/filters/compilers/equals.js.map +1 -0
- package/dist/filters/compilers/greater.d.ts +4 -0
- package/dist/filters/compilers/greater.d.ts.map +1 -0
- package/dist/filters/compilers/greater.js +15 -0
- package/dist/filters/compilers/greater.js.map +1 -0
- package/dist/filters/compilers/in.d.ts +4 -0
- package/dist/filters/compilers/in.d.ts.map +1 -0
- package/{src/filters/compilers/in.ts → dist/filters/compilers/in.js} +7 -21
- package/dist/filters/compilers/in.js.map +1 -0
- package/dist/filters/compilers/index.d.ts.map +1 -0
- package/{src/filters/compilers/index.ts → dist/filters/compilers/index.js} +1 -0
- package/dist/filters/compilers/index.js.map +1 -0
- package/dist/filters/compilers/less.d.ts +4 -0
- package/dist/filters/compilers/less.d.ts.map +1 -0
- package/dist/filters/compilers/less.js +15 -0
- package/dist/filters/compilers/less.js.map +1 -0
- package/dist/filters/helpers/isJSONColumn.d.ts +5 -0
- package/dist/filters/helpers/isJSONColumn.d.ts.map +1 -0
- package/{src/filters/helpers/isJSONColumn.ts → dist/filters/helpers/isJSONColumn.js} +4 -5
- package/dist/filters/helpers/isJSONColumn.js.map +1 -0
- package/dist/{src/filters → filters}/helpers/normalizeCompareValue.d.ts +1 -1
- package/dist/filters/helpers/normalizeCompareValue.d.ts.map +1 -0
- package/{src/filters/helpers/normalizeCompareValue.ts → dist/filters/helpers/normalizeCompareValue.js} +2 -20
- package/dist/filters/helpers/normalizeCompareValue.js.map +1 -0
- package/dist/index.d.ts +14 -14
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -25
- package/dist/index.js.map +1 -1
- package/package.json +6 -6
- package/dist/src/ModelCache.d.ts.map +0 -1
- package/dist/src/ModelCache.js +0 -57
- package/dist/src/ModelCache.js.map +0 -1
- package/dist/src/QueryableModel.d.ts.map +0 -1
- package/dist/src/QueryableModel.js.map +0 -1
- package/dist/src/SQL.d.ts.map +0 -1
- package/dist/src/SQL.js +0 -103
- package/dist/src/SQL.js.map +0 -1
- package/dist/src/SQLDelete.d.ts.map +0 -1
- package/dist/src/SQLDelete.js.map +0 -1
- package/dist/src/SQLExpression.d.ts.map +0 -1
- package/dist/src/SQLExpression.js.map +0 -1
- package/dist/src/SQLExpressions.d.ts.map +0 -1
- package/dist/src/SQLExpressions.js.map +0 -1
- package/dist/src/SQLInsert.d.ts.map +0 -1
- package/dist/src/SQLInsert.js.map +0 -1
- package/dist/src/SQLJoin.d.ts.map +0 -1
- package/dist/src/SQLJoin.js +0 -61
- package/dist/src/SQLJoin.js.map +0 -1
- package/dist/src/SQLJsonExpressions.d.ts.map +0 -1
- package/dist/src/SQLJsonExpressions.js.map +0 -1
- package/dist/src/SQLLogger.d.ts.map +0 -1
- package/dist/src/SQLLogger.js.map +0 -1
- package/dist/src/SQLOrderBy.d.ts.map +0 -1
- package/dist/src/SQLOrderBy.js.map +0 -1
- package/dist/src/SQLSelect.d.ts.map +0 -1
- package/dist/src/SQLSelect.js.map +0 -1
- package/dist/src/SQLTranslatedStringHelper.d.ts.map +0 -1
- package/dist/src/SQLTranslatedStringHelper.js +0 -37
- package/dist/src/SQLTranslatedStringHelper.js.map +0 -1
- package/dist/src/SQLUpdate.d.ts.map +0 -1
- package/dist/src/SQLUpdate.js +0 -60
- package/dist/src/SQLUpdate.js.map +0 -1
- package/dist/src/SQLWhere.d.ts.map +0 -1
- package/dist/src/SQLWhere.js.map +0 -1
- package/dist/src/filters/SQLFilter.d.ts.map +0 -1
- package/dist/src/filters/SQLFilter.js +0 -220
- package/dist/src/filters/SQLFilter.js.map +0 -1
- package/dist/src/filters/SQLSorter.d.ts.map +0 -1
- package/dist/src/filters/SQLSorter.js.map +0 -1
- package/dist/src/filters/compilers/contains.d.ts +0 -4
- package/dist/src/filters/compilers/contains.d.ts.map +0 -1
- package/dist/src/filters/compilers/contains.js +0 -29
- package/dist/src/filters/compilers/contains.js.map +0 -1
- package/dist/src/filters/compilers/equals.d.ts +0 -4
- package/dist/src/filters/compilers/equals.d.ts.map +0 -1
- package/dist/src/filters/compilers/equals.js +0 -47
- package/dist/src/filters/compilers/equals.js.map +0 -1
- package/dist/src/filters/compilers/greater.d.ts +0 -4
- package/dist/src/filters/compilers/greater.d.ts.map +0 -1
- package/dist/src/filters/compilers/greater.js +0 -18
- package/dist/src/filters/compilers/greater.js.map +0 -1
- package/dist/src/filters/compilers/in.d.ts +0 -4
- package/dist/src/filters/compilers/in.d.ts.map +0 -1
- package/dist/src/filters/compilers/in.js +0 -51
- package/dist/src/filters/compilers/in.js.map +0 -1
- package/dist/src/filters/compilers/index.d.ts.map +0 -1
- package/dist/src/filters/compilers/index.js +0 -8
- package/dist/src/filters/compilers/index.js.map +0 -1
- package/dist/src/filters/compilers/less.d.ts +0 -4
- package/dist/src/filters/compilers/less.d.ts.map +0 -1
- package/dist/src/filters/compilers/less.js +0 -18
- package/dist/src/filters/compilers/less.js.map +0 -1
- package/dist/src/filters/helpers/isJSONColumn.d.ts +0 -4
- package/dist/src/filters/helpers/isJSONColumn.d.ts.map +0 -1
- package/dist/src/filters/helpers/isJSONColumn.js +0 -17
- package/dist/src/filters/helpers/isJSONColumn.js.map +0 -1
- package/dist/src/filters/helpers/normalizeCompareValue.d.ts.map +0 -1
- package/dist/src/filters/helpers/normalizeCompareValue.js +0 -87
- package/dist/src/filters/helpers/normalizeCompareValue.js.map +0 -1
- package/dist/tests/filters/$and.test.d.ts +0 -2
- package/dist/tests/filters/$and.test.d.ts.map +0 -1
- package/dist/tests/filters/$and.test.js +0 -216
- package/dist/tests/filters/$and.test.js.map +0 -1
- package/dist/tests/filters/$contains.test.d.ts +0 -2
- package/dist/tests/filters/$contains.test.d.ts.map +0 -1
- package/dist/tests/filters/$contains.test.js +0 -917
- package/dist/tests/filters/$contains.test.js.map +0 -1
- package/dist/tests/filters/$eq.test.d.ts +0 -2
- package/dist/tests/filters/$eq.test.d.ts.map +0 -1
- package/dist/tests/filters/$eq.test.js +0 -1464
- package/dist/tests/filters/$eq.test.js.map +0 -1
- package/dist/tests/filters/$gt.test.d.ts +0 -2
- package/dist/tests/filters/$gt.test.d.ts.map +0 -1
- package/dist/tests/filters/$gt.test.js +0 -641
- package/dist/tests/filters/$gt.test.js.map +0 -1
- package/dist/tests/filters/$gte.test.d.ts +0 -2
- package/dist/tests/filters/$gte.test.d.ts.map +0 -1
- package/dist/tests/filters/$gte.test.js +0 -433
- package/dist/tests/filters/$gte.test.js.map +0 -1
- package/dist/tests/filters/$in.test.d.ts +0 -2
- package/dist/tests/filters/$in.test.d.ts.map +0 -1
- package/dist/tests/filters/$in.test.js +0 -773
- package/dist/tests/filters/$in.test.js.map +0 -1
- package/dist/tests/filters/$lt.test.d.ts +0 -2
- package/dist/tests/filters/$lt.test.d.ts.map +0 -1
- package/dist/tests/filters/$lt.test.js +0 -433
- package/dist/tests/filters/$lt.test.js.map +0 -1
- package/dist/tests/filters/$lte.test.d.ts +0 -2
- package/dist/tests/filters/$lte.test.d.ts.map +0 -1
- package/dist/tests/filters/$lte.test.js +0 -472
- package/dist/tests/filters/$lte.test.js.map +0 -1
- package/dist/tests/filters/$neq.test.d.ts +0 -2
- package/dist/tests/filters/$neq.test.d.ts.map +0 -1
- package/dist/tests/filters/$neq.test.js +0 -32
- package/dist/tests/filters/$neq.test.js.map +0 -1
- package/dist/tests/filters/$not.test.d.ts +0 -2
- package/dist/tests/filters/$not.test.d.ts.map +0 -1
- package/dist/tests/filters/$not.test.js +0 -50
- package/dist/tests/filters/$not.test.js.map +0 -1
- package/dist/tests/filters/$or.test.d.ts +0 -2
- package/dist/tests/filters/$or.test.d.ts.map +0 -1
- package/dist/tests/filters/$or.test.js +0 -185
- package/dist/tests/filters/$or.test.js.map +0 -1
- package/dist/tests/filters/SQLTranslatedStringHelper.test.d.ts +0 -2
- package/dist/tests/filters/SQLTranslatedStringHelper.test.d.ts.map +0 -1
- package/dist/tests/filters/SQLTranslatedStringHelper.test.js +0 -491
- package/dist/tests/filters/SQLTranslatedStringHelper.test.js.map +0 -1
- package/dist/tests/filters/dot-syntax.test.d.ts +0 -2
- package/dist/tests/filters/dot-syntax.test.d.ts.map +0 -1
- package/dist/tests/filters/dot-syntax.test.js +0 -210
- package/dist/tests/filters/dot-syntax.test.js.map +0 -1
- package/dist/tests/filters/exists.test.d.ts +0 -2
- package/dist/tests/filters/exists.test.d.ts.map +0 -1
- package/dist/tests/filters/exists.test.js +0 -96
- package/dist/tests/filters/exists.test.js.map +0 -1
- package/dist/tests/filters/joined-relations.test.d.ts +0 -2
- package/dist/tests/filters/joined-relations.test.d.ts.map +0 -1
- package/dist/tests/filters/joined-relations.test.js +0 -167
- package/dist/tests/filters/joined-relations.test.js.map +0 -1
- package/dist/tests/filters/special-cases.test.d.ts +0 -2
- package/dist/tests/filters/special-cases.test.d.ts.map +0 -1
- package/dist/tests/filters/special-cases.test.js +0 -114
- package/dist/tests/filters/special-cases.test.js.map +0 -1
- package/dist/tests/filters/wildcard.test.d.ts +0 -2
- package/dist/tests/filters/wildcard.test.d.ts.map +0 -1
- package/dist/tests/filters/wildcard.test.js +0 -67
- package/dist/tests/filters/wildcard.test.js.map +0 -1
- package/dist/tests/jest.global.setup.d.ts +0 -3
- package/dist/tests/jest.global.setup.d.ts.map +0 -1
- package/dist/tests/jest.global.setup.js +0 -7
- package/dist/tests/jest.global.setup.js.map +0 -1
- package/dist/tests/jest.setup.d.ts +0 -2
- package/dist/tests/jest.setup.d.ts.map +0 -1
- package/dist/tests/jest.setup.js +0 -5
- package/dist/tests/jest.setup.js.map +0 -1
- package/dist/tests/utils/index.d.ts +0 -57
- package/dist/tests/utils/index.d.ts.map +0 -1
- package/dist/tests/utils/index.js +0 -206
- package/dist/tests/utils/index.js.map +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
- package/src/QueryableModel.ts +0 -134
- package/src/SQL.ts +0 -128
- package/src/SQLDelete.ts +0 -73
- package/src/SQLExpression.ts +0 -34
- package/src/SQLExpressions.ts +0 -587
- package/src/SQLInsert.ts +0 -113
- package/src/SQLJsonExpressions.ts +0 -283
- package/src/SQLLogger.ts +0 -82
- package/src/SQLOrderBy.ts +0 -69
- package/src/SQLSelect.ts +0 -520
- package/src/SQLTranslatedStringHelper.ts +0 -40
- package/src/SQLWhere.ts +0 -744
- package/src/filters/SQLSorter.ts +0 -60
- package/src/filters/compilers/equals.ts +0 -73
- package/src/filters/compilers/greater.ts +0 -21
- package/src/filters/compilers/less.ts +0 -20
- /package/dist/{src/SQLExpression.d.ts → SQLExpression.d.ts} +0 -0
- /package/dist/{src/SQLLogger.d.ts → SQLLogger.d.ts} +0 -0
- /package/dist/{src/filters → filters}/compilers/index.d.ts +0 -0
package/src/SQLExpressions.ts
DELETED
|
@@ -1,587 +0,0 @@
|
|
|
1
|
-
import { Database } from '@simonbackx/simple-database';
|
|
2
|
-
import { joinSQLQuery, SQLExpression, SQLExpressionOptions, SQLNamedExpression, SQLQuery } from './SQLExpression.js';
|
|
3
|
-
import { ParseWhereArguments, SQLEmptyWhere } from './SQLWhere.js';
|
|
4
|
-
|
|
5
|
-
export type SQLScalarValue = string | number | boolean | Date;
|
|
6
|
-
export type SQLDynamicExpression = SQLScalarValue | SQLScalarValue[] | null | SQLExpression;
|
|
7
|
-
|
|
8
|
-
export function scalarToSQLExpression(s: SQLScalarValue | null): SQLExpression {
|
|
9
|
-
if (s === null) {
|
|
10
|
-
return new SQLNull();
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
return new SQLScalar(s);
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
export function readDynamicSQLExpression(s: SQLDynamicExpression): SQLExpression {
|
|
17
|
-
if (Array.isArray(s)) {
|
|
18
|
-
return new SQLArray(s);
|
|
19
|
-
}
|
|
20
|
-
if (s === null) {
|
|
21
|
-
return new SQLNull();
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
if (typeof s === 'object' && !(s instanceof Date)) {
|
|
25
|
-
return s;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
return new SQLScalar(s);
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
export class SQLDistinct implements SQLExpression {
|
|
32
|
-
expression: SQLExpression;
|
|
33
|
-
|
|
34
|
-
constructor(expression: SQLExpression) {
|
|
35
|
-
this.expression = expression;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
getSQL(options?: SQLExpressionOptions): SQLQuery {
|
|
39
|
-
return joinSQLQuery([
|
|
40
|
-
'DISTINCT ',
|
|
41
|
-
this.expression.getSQL(options),
|
|
42
|
-
]);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
export class SQLCharLength implements SQLExpression {
|
|
47
|
-
expression: SQLExpression;
|
|
48
|
-
|
|
49
|
-
constructor(expression: SQLExpression) {
|
|
50
|
-
this.expression = expression;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
getSQL(options?: SQLExpressionOptions): SQLQuery {
|
|
54
|
-
return joinSQLQuery([
|
|
55
|
-
'CHAR_LENGTH(',
|
|
56
|
-
this.expression.getSQL(options),
|
|
57
|
-
')',
|
|
58
|
-
]);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
export class SQLCount implements SQLExpression {
|
|
63
|
-
expression: SQLExpression | null;
|
|
64
|
-
|
|
65
|
-
constructor(expression: SQLExpression | null = null) {
|
|
66
|
-
this.expression = expression;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
getSQL(options?: SQLExpressionOptions): SQLQuery {
|
|
70
|
-
return joinSQLQuery([
|
|
71
|
-
'COUNT(',
|
|
72
|
-
this.expression ? this.expression.getSQL(options) : '*',
|
|
73
|
-
')',
|
|
74
|
-
]);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
export class SQLLower implements SQLExpression {
|
|
79
|
-
expression: SQLExpression;
|
|
80
|
-
|
|
81
|
-
constructor(expression: SQLExpression) {
|
|
82
|
-
this.expression = expression;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
getSQL(options?: SQLExpressionOptions): SQLQuery {
|
|
86
|
-
return joinSQLQuery([
|
|
87
|
-
'LOWER(',
|
|
88
|
-
this.expression.getSQL(options),
|
|
89
|
-
')',
|
|
90
|
-
]);
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
export class SQLPlusSign implements SQLExpression {
|
|
95
|
-
getSQL(): SQLQuery {
|
|
96
|
-
return '+';
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
export class SQLMultiplicationSign implements SQLExpression {
|
|
101
|
-
getSQL(): SQLQuery {
|
|
102
|
-
return '*';
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
export class SQLMinusSign implements SQLExpression {
|
|
107
|
-
getSQL(): SQLQuery {
|
|
108
|
-
return '-';
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
export class SQLGreatest implements SQLExpression {
|
|
113
|
-
expressions: SQLDynamicExpression[];
|
|
114
|
-
|
|
115
|
-
constructor(...expressions: SQLDynamicExpression[]) {
|
|
116
|
-
this.expressions = expressions;
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
getSQL(options?: SQLExpressionOptions): SQLQuery {
|
|
120
|
-
return joinSQLQuery([
|
|
121
|
-
'GREATEST(',
|
|
122
|
-
joinSQLQuery(this.expressions.map(e => readDynamicSQLExpression(e).getSQL(options)), ', '),
|
|
123
|
-
')',
|
|
124
|
-
]);
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
export class SQLCalculation implements SQLExpression {
|
|
129
|
-
expressions: SQLExpression[];
|
|
130
|
-
|
|
131
|
-
constructor(...expressions: SQLExpression[]) {
|
|
132
|
-
this.expressions = expressions;
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
getSQL(options?: SQLExpressionOptions): SQLQuery {
|
|
136
|
-
return joinSQLQuery(this.expressions.map(e => e.getSQL(options)), ' ');
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
export class SQLSum implements SQLExpression {
|
|
141
|
-
expression: SQLExpression;
|
|
142
|
-
|
|
143
|
-
constructor(expression: SQLExpression) {
|
|
144
|
-
this.expression = expression;
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
getSQL(options?: SQLExpressionOptions): SQLQuery {
|
|
148
|
-
return joinSQLQuery([
|
|
149
|
-
'SUM(',
|
|
150
|
-
this.expression.getSQL(options),
|
|
151
|
-
')',
|
|
152
|
-
]);
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
export class SQLMin implements SQLExpression {
|
|
157
|
-
expression: SQLExpression;
|
|
158
|
-
|
|
159
|
-
constructor(expression: SQLExpression) {
|
|
160
|
-
this.expression = expression;
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
getSQL(options?: SQLExpressionOptions): SQLQuery {
|
|
164
|
-
return joinSQLQuery([
|
|
165
|
-
'MIN(',
|
|
166
|
-
this.expression.getSQL(options),
|
|
167
|
-
')',
|
|
168
|
-
]);
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
export class SQLSelectAs implements SQLExpression {
|
|
173
|
-
expression: SQLExpression;
|
|
174
|
-
as: SQLAlias;
|
|
175
|
-
|
|
176
|
-
constructor(expression: SQLExpression, as: SQLAlias) {
|
|
177
|
-
this.expression = expression;
|
|
178
|
-
this.as = as;
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
getSQL(options?: SQLExpressionOptions): SQLQuery {
|
|
182
|
-
return joinSQLQuery([
|
|
183
|
-
this.expression.getSQL(options),
|
|
184
|
-
' AS ',
|
|
185
|
-
this.as.getSQL(options),
|
|
186
|
-
]);
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
export class SQLAssignment implements SQLExpression {
|
|
191
|
-
key: SQLExpression;
|
|
192
|
-
value: SQLExpression;
|
|
193
|
-
|
|
194
|
-
constructor(key: SQLExpression, value: SQLExpression) {
|
|
195
|
-
this.key = key;
|
|
196
|
-
this.value = value;
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
getSQL(options?: SQLExpressionOptions): SQLQuery {
|
|
200
|
-
return joinSQLQuery([
|
|
201
|
-
this.key.getSQL(options),
|
|
202
|
-
' = ',
|
|
203
|
-
this.value.getSQL(options),
|
|
204
|
-
]);
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
export class SQLAlias implements SQLExpression {
|
|
209
|
-
name: string;
|
|
210
|
-
|
|
211
|
-
constructor(name: string) {
|
|
212
|
-
this.name = name;
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
getSQL(options?: SQLExpressionOptions): SQLQuery {
|
|
216
|
-
return Database.escapeId(this.name);
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
export class SQLConcat implements SQLExpression {
|
|
221
|
-
expressions: SQLExpression[];
|
|
222
|
-
|
|
223
|
-
constructor(...expressions: SQLExpression[]) {
|
|
224
|
-
this.expressions = expressions;
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
getSQL(options?: SQLExpressionOptions): SQLQuery {
|
|
228
|
-
return joinSQLQuery([
|
|
229
|
-
'CONCAT(',
|
|
230
|
-
joinSQLQuery(this.expressions.map(e => e.getSQL(options)), ', '),
|
|
231
|
-
')',
|
|
232
|
-
]);
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
export class SQLAge implements SQLExpression {
|
|
237
|
-
expression: SQLExpression;
|
|
238
|
-
|
|
239
|
-
constructor(expression: SQLExpression) {
|
|
240
|
-
this.expression = expression;
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
getSQL(options?: SQLExpressionOptions): SQLQuery {
|
|
244
|
-
return joinSQLQuery([
|
|
245
|
-
'TIMESTAMPDIFF(YEAR, ',
|
|
246
|
-
this.expression.getSQL(options),
|
|
247
|
-
', CURDATE())',
|
|
248
|
-
]);
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
export class SQLCast implements SQLExpression {
|
|
253
|
-
value: SQLExpression;
|
|
254
|
-
as = 'CHAR';
|
|
255
|
-
|
|
256
|
-
constructor(value: SQLExpression, as = 'CHAR') {
|
|
257
|
-
this.value = value;
|
|
258
|
-
this.as = as;
|
|
259
|
-
}
|
|
260
|
-
|
|
261
|
-
getSQL(options?: SQLExpressionOptions): SQLQuery {
|
|
262
|
-
return joinSQLQuery([
|
|
263
|
-
'CAST( ',
|
|
264
|
-
this.value.getSQL(options),
|
|
265
|
-
' AS ',
|
|
266
|
-
this.as,
|
|
267
|
-
')',
|
|
268
|
-
]);
|
|
269
|
-
}
|
|
270
|
-
}
|
|
271
|
-
|
|
272
|
-
class SQLCastedJson implements SQLExpression {
|
|
273
|
-
value: null | true | false;
|
|
274
|
-
|
|
275
|
-
constructor(value: null | true | false) {
|
|
276
|
-
this.value = value;
|
|
277
|
-
}
|
|
278
|
-
|
|
279
|
-
getSQL(options?: SQLExpressionOptions): SQLQuery {
|
|
280
|
-
return "CAST('" + JSON.stringify(this.value) + "' AS JSON)";
|
|
281
|
-
}
|
|
282
|
-
}
|
|
283
|
-
export const SQLJSONNull = new SQLCastedJson(null);
|
|
284
|
-
export const SQLJSONTrue = new SQLCastedJson(true);
|
|
285
|
-
export const SQLJSONFalse = new SQLCastedJson(false);
|
|
286
|
-
|
|
287
|
-
export class SQLNull implements SQLExpression {
|
|
288
|
-
getSQL(options?: SQLExpressionOptions): SQLQuery {
|
|
289
|
-
return 'NULL';
|
|
290
|
-
}
|
|
291
|
-
}
|
|
292
|
-
|
|
293
|
-
export class SQLNow implements SQLExpression {
|
|
294
|
-
getSQL(options?: SQLExpressionOptions): SQLQuery {
|
|
295
|
-
return 'NOW()';
|
|
296
|
-
}
|
|
297
|
-
}
|
|
298
|
-
|
|
299
|
-
export class SQLScalar implements SQLExpression {
|
|
300
|
-
value: SQLScalarValue;
|
|
301
|
-
|
|
302
|
-
constructor(value: SQLScalarValue) {
|
|
303
|
-
this.value = value;
|
|
304
|
-
}
|
|
305
|
-
|
|
306
|
-
getSQL(options?: SQLExpressionOptions): SQLQuery {
|
|
307
|
-
return {
|
|
308
|
-
query: '?',
|
|
309
|
-
params: [this.value],
|
|
310
|
-
};
|
|
311
|
-
}
|
|
312
|
-
}
|
|
313
|
-
|
|
314
|
-
export class SQLSafeValue implements SQLExpression {
|
|
315
|
-
value: string | number;
|
|
316
|
-
|
|
317
|
-
constructor(value: string | number) {
|
|
318
|
-
this.value = value;
|
|
319
|
-
}
|
|
320
|
-
|
|
321
|
-
getSQL(options?: SQLExpressionOptions): SQLQuery {
|
|
322
|
-
return JSON.stringify(this.value);
|
|
323
|
-
}
|
|
324
|
-
}
|
|
325
|
-
|
|
326
|
-
export class SQLArray implements SQLExpression {
|
|
327
|
-
value: SQLScalarValue[];
|
|
328
|
-
|
|
329
|
-
constructor(value: SQLScalarValue[]) {
|
|
330
|
-
this.value = value;
|
|
331
|
-
}
|
|
332
|
-
|
|
333
|
-
getSQL(options?: SQLExpressionOptions): SQLQuery {
|
|
334
|
-
return {
|
|
335
|
-
query: '(?)',
|
|
336
|
-
params: [this.value],
|
|
337
|
-
};
|
|
338
|
-
}
|
|
339
|
-
}
|
|
340
|
-
|
|
341
|
-
export class SQLWildcardSelectExpression implements SQLExpression {
|
|
342
|
-
namespace?: string;
|
|
343
|
-
|
|
344
|
-
constructor(namespace?: string) {
|
|
345
|
-
this.namespace = namespace;
|
|
346
|
-
}
|
|
347
|
-
|
|
348
|
-
getSQL(options?: SQLExpressionOptions): SQLQuery {
|
|
349
|
-
return Database.escapeId(this.namespace ?? options?.defaultNamespace ?? '') + '.*';
|
|
350
|
-
}
|
|
351
|
-
}
|
|
352
|
-
|
|
353
|
-
export class SQLNamespaceExpression implements SQLExpression {
|
|
354
|
-
namespace: string;
|
|
355
|
-
|
|
356
|
-
constructor(namespace: string) {
|
|
357
|
-
this.namespace = namespace;
|
|
358
|
-
}
|
|
359
|
-
|
|
360
|
-
getSQL(options?: SQLExpressionOptions): SQLQuery {
|
|
361
|
-
return Database.escapeId(this.namespace);
|
|
362
|
-
}
|
|
363
|
-
}
|
|
364
|
-
|
|
365
|
-
export const SQLDefaultNamespace: SQLExpression = {
|
|
366
|
-
getSQL(options?: SQLExpressionOptions): SQLQuery {
|
|
367
|
-
if (!options?.defaultNamespace) {
|
|
368
|
-
throw new Error('No default namespace provided');
|
|
369
|
-
}
|
|
370
|
-
return Database.escapeId(options.defaultNamespace);
|
|
371
|
-
},
|
|
372
|
-
};
|
|
373
|
-
|
|
374
|
-
/**
|
|
375
|
-
* Reference the table of the parent query
|
|
376
|
-
*/
|
|
377
|
-
export const SQLParentNamespace: SQLExpression = {
|
|
378
|
-
getSQL(options?: SQLExpressionOptions): SQLQuery {
|
|
379
|
-
if (!options?.parentNamespace) {
|
|
380
|
-
throw new Error('No parent namespace provided');
|
|
381
|
-
}
|
|
382
|
-
return Database.escapeId(options.parentNamespace);
|
|
383
|
-
},
|
|
384
|
-
};
|
|
385
|
-
|
|
386
|
-
export type SQLColumnExpressionParams = [
|
|
387
|
-
namespace: string | SQLExpression,
|
|
388
|
-
column: string,
|
|
389
|
-
] | [
|
|
390
|
-
column: string,
|
|
391
|
-
];
|
|
392
|
-
|
|
393
|
-
export class SQLColumnExpression implements SQLExpression {
|
|
394
|
-
namespace: SQLExpression;
|
|
395
|
-
column: string;
|
|
396
|
-
|
|
397
|
-
constructor(...args: SQLColumnExpressionParams) {
|
|
398
|
-
if (args.length === 1) {
|
|
399
|
-
this.namespace = SQLDefaultNamespace;
|
|
400
|
-
this.column = args[0];
|
|
401
|
-
return;
|
|
402
|
-
}
|
|
403
|
-
|
|
404
|
-
const [namespace, column] = args;
|
|
405
|
-
|
|
406
|
-
if (typeof namespace === 'string') {
|
|
407
|
-
this.namespace = new SQLNamespaceExpression(namespace);
|
|
408
|
-
}
|
|
409
|
-
else {
|
|
410
|
-
this.namespace = namespace;
|
|
411
|
-
}
|
|
412
|
-
this.column = column;
|
|
413
|
-
}
|
|
414
|
-
|
|
415
|
-
getSQL(options?: SQLExpressionOptions): SQLQuery {
|
|
416
|
-
return joinSQLQuery([
|
|
417
|
-
this.namespace.getSQL(options),
|
|
418
|
-
'.',
|
|
419
|
-
Database.escapeId(this.column),
|
|
420
|
-
]);
|
|
421
|
-
}
|
|
422
|
-
}
|
|
423
|
-
|
|
424
|
-
export class SQLIfNull implements SQLExpression {
|
|
425
|
-
constructor(private readonly columnExpression: SQLColumnExpression, private readonly value: string | number) {
|
|
426
|
-
}
|
|
427
|
-
|
|
428
|
-
getSQL(options?: SQLExpressionOptions): SQLQuery {
|
|
429
|
-
return joinSQLQuery([
|
|
430
|
-
'IFNULL(',
|
|
431
|
-
this.columnExpression.getSQL(options),
|
|
432
|
-
',',
|
|
433
|
-
new SQLSafeValue(this.value).getSQL(),
|
|
434
|
-
')',
|
|
435
|
-
]);
|
|
436
|
-
}
|
|
437
|
-
}
|
|
438
|
-
|
|
439
|
-
export class SQLTableExpression implements SQLNamedExpression {
|
|
440
|
-
/**
|
|
441
|
-
* By default the table name will be used as the namespace by MySQL.
|
|
442
|
-
*/
|
|
443
|
-
asNamespace?: string;
|
|
444
|
-
|
|
445
|
-
/**
|
|
446
|
-
* For now this is just a string, but thearetically it could be a subquery.
|
|
447
|
-
* We don't support that yet, as those queries are not optimized for performance.
|
|
448
|
-
*/
|
|
449
|
-
table: string;
|
|
450
|
-
|
|
451
|
-
constructor(table: string, asNamespace?: string) {
|
|
452
|
-
this.asNamespace = asNamespace;
|
|
453
|
-
this.table = table;
|
|
454
|
-
}
|
|
455
|
-
|
|
456
|
-
getSQL(options?: SQLExpressionOptions): SQLQuery {
|
|
457
|
-
if (!this.asNamespace) {
|
|
458
|
-
return Database.escapeId(this.table);
|
|
459
|
-
}
|
|
460
|
-
return Database.escapeId(this.table) + ' ' + Database.escapeId(this.asNamespace);
|
|
461
|
-
}
|
|
462
|
-
|
|
463
|
-
getName(): string {
|
|
464
|
-
return this.asNamespace ?? this.table;
|
|
465
|
-
}
|
|
466
|
-
}
|
|
467
|
-
|
|
468
|
-
export type SQLJSONTableColumnType = 'VARCHAR' | 'INT' | 'TEXT' | 'JSON';
|
|
469
|
-
export class SQLJSONTableColumn implements SQLExpression {
|
|
470
|
-
name: string;
|
|
471
|
-
type: SQLJSONTableColumnType;
|
|
472
|
-
path: string;
|
|
473
|
-
|
|
474
|
-
constructor(name: string, type: SQLJSONTableColumnType, path: string) {
|
|
475
|
-
this.name = name;
|
|
476
|
-
this.type = type;
|
|
477
|
-
this.path = path;
|
|
478
|
-
}
|
|
479
|
-
|
|
480
|
-
getSQL(options?: SQLExpressionOptions): SQLQuery {
|
|
481
|
-
return joinSQLQuery([
|
|
482
|
-
Database.escapeId(this.name),
|
|
483
|
-
' ',
|
|
484
|
-
'VARCHAR(250)',
|
|
485
|
-
' PATH ',
|
|
486
|
-
JSON.stringify(this.path),
|
|
487
|
-
]);
|
|
488
|
-
}
|
|
489
|
-
}
|
|
490
|
-
|
|
491
|
-
export class SQLJSONTableExpression implements SQLNamedExpression {
|
|
492
|
-
expression: SQLExpression;
|
|
493
|
-
asNamespace: string;
|
|
494
|
-
jsonPath = '$[*]';
|
|
495
|
-
columns: SQLJSONTableColumn[] = [];
|
|
496
|
-
|
|
497
|
-
constructor(expression: SQLExpression, asNamespace: string) {
|
|
498
|
-
this.asNamespace = asNamespace;
|
|
499
|
-
this.expression = expression;
|
|
500
|
-
}
|
|
501
|
-
|
|
502
|
-
addColumn(name: string, type: SQLJSONTableColumnType, path: string): SQLJSONTableExpression {
|
|
503
|
-
this.columns.push(new SQLJSONTableColumn(name, type, path));
|
|
504
|
-
return this;
|
|
505
|
-
}
|
|
506
|
-
|
|
507
|
-
getSQL(options?: SQLExpressionOptions): SQLQuery {
|
|
508
|
-
const columnsSQL = joinSQLQuery(this.columns.map(c => c.getSQL(options)), ', ');
|
|
509
|
-
return joinSQLQuery([
|
|
510
|
-
'JSON_TABLE(',
|
|
511
|
-
this.expression.getSQL(options),
|
|
512
|
-
', ',
|
|
513
|
-
JSON.stringify(this.jsonPath),
|
|
514
|
-
' COLUMNS (',
|
|
515
|
-
columnsSQL,
|
|
516
|
-
')) AS ',
|
|
517
|
-
Database.escapeId(this.asNamespace),
|
|
518
|
-
]);
|
|
519
|
-
}
|
|
520
|
-
|
|
521
|
-
getName(): string {
|
|
522
|
-
return this.asNamespace;
|
|
523
|
-
}
|
|
524
|
-
}
|
|
525
|
-
|
|
526
|
-
export class SQLIf implements SQLExpression {
|
|
527
|
-
_if: SQLExpression;
|
|
528
|
-
_then: SQLExpression = new SQLNull();
|
|
529
|
-
_else: SQLExpression = new SQLNull();
|
|
530
|
-
|
|
531
|
-
constructor(...args: ParseWhereArguments) {
|
|
532
|
-
this._if = new SQLEmptyWhere().and(...args);
|
|
533
|
-
}
|
|
534
|
-
|
|
535
|
-
then(then: SQLDynamicExpression): SQLIf {
|
|
536
|
-
this._then = readDynamicSQLExpression(then);
|
|
537
|
-
return this;
|
|
538
|
-
}
|
|
539
|
-
|
|
540
|
-
else(_else: SQLDynamicExpression): SQLIf {
|
|
541
|
-
this._else = readDynamicSQLExpression(_else);
|
|
542
|
-
return this;
|
|
543
|
-
}
|
|
544
|
-
|
|
545
|
-
getSQL(options?: SQLExpressionOptions): SQLQuery {
|
|
546
|
-
return joinSQLQuery([
|
|
547
|
-
'IF(',
|
|
548
|
-
this._if.getSQL(options),
|
|
549
|
-
',',
|
|
550
|
-
this._then.getSQL(options),
|
|
551
|
-
',',
|
|
552
|
-
this._else.getSQL(options),
|
|
553
|
-
')',
|
|
554
|
-
]);
|
|
555
|
-
}
|
|
556
|
-
}
|
|
557
|
-
|
|
558
|
-
export class SQLCoalesce implements SQLExpression {
|
|
559
|
-
expressions: SQLExpression[] = [];
|
|
560
|
-
|
|
561
|
-
constructor(...expressions: SQLExpression[]) {
|
|
562
|
-
this.expressions = expressions;
|
|
563
|
-
}
|
|
564
|
-
|
|
565
|
-
getSQL(options?: SQLExpressionOptions): SQLQuery {
|
|
566
|
-
return joinSQLQuery([
|
|
567
|
-
'COALESCE(',
|
|
568
|
-
joinSQLQuery(this.expressions.map(e => e.getSQL(options)), ', '),
|
|
569
|
-
')',
|
|
570
|
-
]);
|
|
571
|
-
}
|
|
572
|
-
}
|
|
573
|
-
|
|
574
|
-
export class SQLIsNull implements SQLExpression {
|
|
575
|
-
expression: SQLExpression;
|
|
576
|
-
|
|
577
|
-
constructor(expression: SQLExpression) {
|
|
578
|
-
this.expression = expression;
|
|
579
|
-
}
|
|
580
|
-
|
|
581
|
-
getSQL(options?: SQLExpressionOptions): SQLQuery {
|
|
582
|
-
return joinSQLQuery([
|
|
583
|
-
this.expression.getSQL(options),
|
|
584
|
-
' IS NULL',
|
|
585
|
-
]);
|
|
586
|
-
}
|
|
587
|
-
}
|
package/src/SQLInsert.ts
DELETED
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
import { Database } from '@simonbackx/simple-database';
|
|
2
|
-
import { isSQLExpression, joinSQLQuery, normalizeSQLQuery, SQLExpression, SQLExpressionOptions, SQLQuery } from './SQLExpression.js';
|
|
3
|
-
import { scalarToSQLExpression, SQLAlias, SQLAssignment, SQLColumnExpression, SQLScalarValue, SQLTableExpression } from './SQLExpressions.js';
|
|
4
|
-
import { SQLLogger } from './SQLLogger.js';
|
|
5
|
-
|
|
6
|
-
export class SQLInsert implements SQLExpression {
|
|
7
|
-
_columns: SQLExpression[] = [];
|
|
8
|
-
_values: SQLExpression[][] = [];
|
|
9
|
-
_as: SQLAlias | null = null;
|
|
10
|
-
_into: SQLTableExpression;
|
|
11
|
-
_onDuplicateKeyUpdate: SQLAssignment[] | null = null;
|
|
12
|
-
|
|
13
|
-
constructor(tableName: SQLTableExpression | string) {
|
|
14
|
-
this._into = typeof tableName === 'string' ? new SQLTableExpression(tableName) : tableName;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
clone(): this {
|
|
18
|
-
const c = new SQLInsert(this._into);
|
|
19
|
-
Object.assign(c, this);
|
|
20
|
-
return c as any;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
columns(...columns: (SQLExpression | string)[]): this {
|
|
24
|
-
this._columns = columns.map(c => typeof c === 'string' ? new SQLColumnExpression(c) : c) as any;
|
|
25
|
-
return this;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
values(...values: (SQLExpression | SQLScalarValue | null)[][]): this {
|
|
29
|
-
this._values = values.map((v) => {
|
|
30
|
-
if (v.length !== this._columns.length) {
|
|
31
|
-
throw new Error('Invalid number of values. Expected ' + this._columns.length + ' but got ' + v.length);
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
return v.map(c => isSQLExpression(c) ? c : scalarToSQLExpression(c));
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
return this;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
as(alias: string): this {
|
|
41
|
-
this._as = new SQLAlias(alias);
|
|
42
|
-
return this;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
onDuplicateKeyUpdate(...assignments: SQLAssignment[]): this {
|
|
46
|
-
this._onDuplicateKeyUpdate = assignments;
|
|
47
|
-
return this;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
getSQL(options?: SQLExpressionOptions): SQLQuery {
|
|
51
|
-
// Create a clone since we are mutating the default namespaces
|
|
52
|
-
const parentOptions = options;
|
|
53
|
-
options = options ? { ...options } : {};
|
|
54
|
-
options.defaultNamespace = (this._into as any).namespace ?? (this._into).table ?? undefined;
|
|
55
|
-
|
|
56
|
-
if (parentOptions?.defaultNamespace) {
|
|
57
|
-
options.parentNamespace = parentOptions.defaultNamespace;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
const query: SQLQuery[] = [
|
|
61
|
-
'INSERT INTO',
|
|
62
|
-
this._into.getSQL(options),
|
|
63
|
-
];
|
|
64
|
-
|
|
65
|
-
const columns = this._columns.map(c => c.getSQL(options));
|
|
66
|
-
query.push(
|
|
67
|
-
joinSQLQuery([
|
|
68
|
-
'(',
|
|
69
|
-
joinSQLQuery(columns, ', '),
|
|
70
|
-
')',
|
|
71
|
-
]),
|
|
72
|
-
);
|
|
73
|
-
|
|
74
|
-
query.push(
|
|
75
|
-
'VALUES',
|
|
76
|
-
);
|
|
77
|
-
|
|
78
|
-
query.push(
|
|
79
|
-
joinSQLQuery(
|
|
80
|
-
this._values.map(values =>
|
|
81
|
-
joinSQLQuery([
|
|
82
|
-
'(',
|
|
83
|
-
joinSQLQuery(values.map(v => v.getSQL(options)), ', '),
|
|
84
|
-
')',
|
|
85
|
-
]),
|
|
86
|
-
),
|
|
87
|
-
', ',
|
|
88
|
-
),
|
|
89
|
-
);
|
|
90
|
-
|
|
91
|
-
if (this._as !== null) {
|
|
92
|
-
query.push(
|
|
93
|
-
'AS',
|
|
94
|
-
this._as.getSQL(options),
|
|
95
|
-
);
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
if (this._onDuplicateKeyUpdate !== null) {
|
|
99
|
-
query.push('ON DUPLICATE KEY UPDATE');
|
|
100
|
-
query.push(
|
|
101
|
-
joinSQLQuery(this._onDuplicateKeyUpdate.map(a => a.getSQL(options)), ', '),
|
|
102
|
-
);
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
return joinSQLQuery(query, ' ');
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
async insert(): Promise<{ insertId: any;affectedRows: number }> {
|
|
109
|
-
const { query, params } = normalizeSQLQuery(this.getSQL());
|
|
110
|
-
const result = await SQLLogger.log(Database.insert(query, params), query, params);
|
|
111
|
-
return result[0];
|
|
112
|
-
}
|
|
113
|
-
}
|