@stamhoofd/sql 2.53.0 → 2.54.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/SQLWhere.d.ts +2 -2
- package/dist/src/SQLWhere.d.ts.map +1 -1
- package/dist/src/SQLWhere.js +9 -12
- package/dist/src/SQLWhere.js.map +1 -1
- package/package.json +2 -2
- package/src/SQLWhere.ts +105 -109
package/dist/src/SQLWhere.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { SQLExpression, SQLExpressionOptions, SQLQuery } from
|
|
2
|
-
import { SQLDynamicExpression } from
|
|
1
|
+
import { SQLExpression, SQLExpressionOptions, SQLQuery } from './SQLExpression';
|
|
2
|
+
import { SQLDynamicExpression } from './SQLExpressions';
|
|
3
3
|
type Constructor<T = {}> = new (...args: any[]) => T;
|
|
4
4
|
export type ParseWhereArguments = [
|
|
5
5
|
where: SQLWhere
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SQLWhere.d.ts","sourceRoot":"","sources":["../../src/SQLWhere.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,QAAQ,EAAmC,MAAM,iBAAiB,CAAC;AACjH,OAAO,EAAiC,oBAAoB,EAAqC,MAAM,kBAAkB,CAAC;AAE1H,KAAK,WAAW,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAErD,MAAM,MAAM,mBAAmB,GAAG;IAC9B,KAAK,EAAE,QAAQ;CAClB,GAAG;IACA,aAAa,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"SQLWhere.d.ts","sourceRoot":"","sources":["../../src/SQLWhere.ts"],"names":[],"mappings":"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"}
|
package/dist/src/SQLWhere.js
CHANGED
|
@@ -55,13 +55,13 @@ class SQLWhere {
|
|
|
55
55
|
andNot(...args) {
|
|
56
56
|
return new SQLWhereAnd([
|
|
57
57
|
this,
|
|
58
|
-
new SQLWhereNot(SQLWhereEqual.parseWhere(...args))
|
|
58
|
+
new SQLWhereNot(SQLWhereEqual.parseWhere(...args)),
|
|
59
59
|
]);
|
|
60
60
|
}
|
|
61
61
|
orNot(...args) {
|
|
62
62
|
return new SQLWhereOr([
|
|
63
63
|
this,
|
|
64
|
-
new SQLWhereNot(SQLWhereEqual.parseWhere(...args))
|
|
64
|
+
new SQLWhereNot(SQLWhereEqual.parseWhere(...args)),
|
|
65
65
|
]);
|
|
66
66
|
}
|
|
67
67
|
get isSingle() {
|
|
@@ -121,7 +121,6 @@ class SQLWhereEqual extends SQLWhere {
|
|
|
121
121
|
}
|
|
122
122
|
}
|
|
123
123
|
clone() {
|
|
124
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
|
|
125
124
|
const c = (new this.constructor(this.column, this.sign, this.value));
|
|
126
125
|
Object.assign(c, this);
|
|
127
126
|
return c;
|
|
@@ -163,7 +162,7 @@ class SQLWhereEqual extends SQLWhere {
|
|
|
163
162
|
return (0, SQLExpression_1.joinSQLQuery)([
|
|
164
163
|
this.column.getSQL(options),
|
|
165
164
|
` ${(this.sign === SQLWhereSign.NotEqual) ? 'NOT IN' : 'IN'} `,
|
|
166
|
-
this.value.getSQL(options)
|
|
165
|
+
this.value.getSQL(options),
|
|
167
166
|
]);
|
|
168
167
|
}
|
|
169
168
|
if (this.value instanceof SQLExpressions_1.SQLNull) {
|
|
@@ -173,13 +172,13 @@ class SQLWhereEqual extends SQLWhere {
|
|
|
173
172
|
return (0, SQLExpression_1.joinSQLQuery)([
|
|
174
173
|
this.column.getSQL(options),
|
|
175
174
|
` IS ${(this.sign === SQLWhereSign.NotEqual) ? 'NOT ' : ''} `,
|
|
176
|
-
this.value.getSQL(options)
|
|
175
|
+
this.value.getSQL(options),
|
|
177
176
|
]);
|
|
178
177
|
}
|
|
179
178
|
return (0, SQLExpression_1.joinSQLQuery)([
|
|
180
179
|
this.column.getSQL(options),
|
|
181
180
|
` ${this.sign} `,
|
|
182
|
-
this.value.getSQL(options)
|
|
181
|
+
this.value.getSQL(options),
|
|
183
182
|
]);
|
|
184
183
|
}
|
|
185
184
|
}
|
|
@@ -197,7 +196,6 @@ class SQLWhereLike extends SQLWhere {
|
|
|
197
196
|
return str.replace(/([%_])/g, '\\$1');
|
|
198
197
|
}
|
|
199
198
|
clone() {
|
|
200
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
|
|
201
199
|
const c = (new this.constructor(this.column, this.value));
|
|
202
200
|
Object.assign(c, this);
|
|
203
201
|
return c;
|
|
@@ -216,7 +214,7 @@ class SQLWhereLike extends SQLWhere {
|
|
|
216
214
|
return (0, SQLExpression_1.joinSQLQuery)([
|
|
217
215
|
this.column.getSQL(options),
|
|
218
216
|
` ${this.notLike ? 'NOT LIKE' : 'LIKE'} `,
|
|
219
|
-
this.value.getSQL(options)
|
|
217
|
+
this.value.getSQL(options),
|
|
220
218
|
]);
|
|
221
219
|
}
|
|
222
220
|
}
|
|
@@ -229,7 +227,6 @@ class SQLWhereExists extends SQLWhere {
|
|
|
229
227
|
this.subquery = subquery;
|
|
230
228
|
}
|
|
231
229
|
clone() {
|
|
232
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
|
|
233
230
|
const c = (new this.constructor(this.subquery));
|
|
234
231
|
Object.assign(c, this);
|
|
235
232
|
return c;
|
|
@@ -260,7 +257,7 @@ class SQLWhereAnd extends SQLWhere {
|
|
|
260
257
|
this.children = children;
|
|
261
258
|
}
|
|
262
259
|
getSQL(options) {
|
|
263
|
-
return (0, SQLExpression_1.joinSQLQuery)(this.children.map(c => {
|
|
260
|
+
return (0, SQLExpression_1.joinSQLQuery)(this.children.map((c) => {
|
|
264
261
|
if (c.isSingle) {
|
|
265
262
|
return c.getSQL(options);
|
|
266
263
|
}
|
|
@@ -276,7 +273,7 @@ class SQLWhereOr extends SQLWhere {
|
|
|
276
273
|
this.children = children;
|
|
277
274
|
}
|
|
278
275
|
getSQL(options) {
|
|
279
|
-
return (0, SQLExpression_1.joinSQLQuery)(this.children.map(c => {
|
|
276
|
+
return (0, SQLExpression_1.joinSQLQuery)(this.children.map((c) => {
|
|
280
277
|
if (c.isSingle) {
|
|
281
278
|
return c.getSQL(options);
|
|
282
279
|
}
|
|
@@ -302,7 +299,7 @@ class SQLWhereNot extends SQLWhere {
|
|
|
302
299
|
const sqlA = (0, SQLExpression_1.normalizeSQLQuery)(this.a.getSQL(options));
|
|
303
300
|
return {
|
|
304
301
|
query: `NOT (${sqlA.query})`,
|
|
305
|
-
params: sqlA.params
|
|
302
|
+
params: sqlA.params,
|
|
306
303
|
};
|
|
307
304
|
}
|
|
308
305
|
}
|
package/dist/src/SQLWhere.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SQLWhere.js","sourceRoot":"","sources":["../../src/SQLWhere.ts"],"names":[],"mappings":";;;AAoBA,8BA4CC;AAhED,mDAAiH;AACjH,qDAA0H;AAe1H,SAAS,eAAe,CAAC,CAAM;IAC3B,OAAO,CAAC,CAAC;AACb,CAAC;AAED,SAAgB,SAAS,CAA8B,IAAS;IAC5D,OAAO,KAAM,SAAQ,IAAI;QACrB,MAAM,GAAoB,IAAI,
|
|
1
|
+
{"version":3,"file":"SQLWhere.js","sourceRoot":"","sources":["../../src/SQLWhere.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stamhoofd/sql",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.54.1",
|
|
4
4
|
"main": "./dist/index.js",
|
|
5
5
|
"types": "./dist/index.d.ts",
|
|
6
6
|
"license": "UNLICENCED",
|
|
@@ -15,5 +15,5 @@
|
|
|
15
15
|
"publishConfig": {
|
|
16
16
|
"access": "public"
|
|
17
17
|
},
|
|
18
|
-
"gitHead": "
|
|
18
|
+
"gitHead": "1a09149ce441ef0c7b7d056067a80a3a6ce1c627"
|
|
19
19
|
}
|
package/src/SQLWhere.ts
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import { SQLExpression, SQLExpressionOptions, SQLQuery, joinSQLQuery, normalizeSQLQuery } from
|
|
2
|
-
import { SQLArray, SQLColumnExpression, SQLDynamicExpression, SQLNull, readDynamicSQLExpression } from
|
|
1
|
+
import { SQLExpression, SQLExpressionOptions, SQLQuery, joinSQLQuery, normalizeSQLQuery } from './SQLExpression';
|
|
2
|
+
import { SQLArray, SQLColumnExpression, SQLDynamicExpression, SQLNull, readDynamicSQLExpression } from './SQLExpressions';
|
|
3
3
|
|
|
4
4
|
type Constructor<T = {}> = new (...args: any[]) => T;
|
|
5
5
|
|
|
6
6
|
export type ParseWhereArguments = [
|
|
7
|
-
where: SQLWhere
|
|
7
|
+
where: SQLWhere,
|
|
8
8
|
] | [
|
|
9
|
-
whereOrColumn: SQLExpression|string,
|
|
10
|
-
sign: SQLWhereSign,
|
|
11
|
-
value: SQLDynamicExpression
|
|
9
|
+
whereOrColumn: SQLExpression | string,
|
|
10
|
+
sign: SQLWhereSign,
|
|
11
|
+
value: SQLDynamicExpression,
|
|
12
12
|
] | [
|
|
13
|
-
whereOrColumn: SQLExpression|string,
|
|
14
|
-
value: SQLDynamicExpression
|
|
15
|
-
]
|
|
13
|
+
whereOrColumn: SQLExpression | string,
|
|
14
|
+
value: SQLDynamicExpression,
|
|
15
|
+
];
|
|
16
16
|
|
|
17
17
|
function assertWhereable(o: any): any {
|
|
18
18
|
return o;
|
|
@@ -20,48 +20,48 @@ function assertWhereable(o: any): any {
|
|
|
20
20
|
|
|
21
21
|
export function Whereable<Sup extends Constructor<{}>>(Base: Sup) {
|
|
22
22
|
return class extends Base {
|
|
23
|
-
_where: SQLWhere | null = null
|
|
23
|
+
_where: SQLWhere | null = null;
|
|
24
24
|
|
|
25
25
|
get __where() {
|
|
26
26
|
return this._where ?? new SQLEmptyWhere();
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
where<T>(this: T, ...args: ParseWhereArguments): T {
|
|
30
|
-
const me = assertWhereable(this)
|
|
31
|
-
me._where = me.__where.and(...args)
|
|
30
|
+
const me = assertWhereable(this);
|
|
31
|
+
me._where = me.__where.and(...args);
|
|
32
32
|
return me;
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
andWhere<T>(this: T, ...args: ParseWhereArguments): T {
|
|
36
|
-
const me = assertWhereable(this)
|
|
37
|
-
me._where = me.__where.and(...args)
|
|
36
|
+
const me = assertWhereable(this);
|
|
37
|
+
me._where = me.__where.and(...args);
|
|
38
38
|
return me;
|
|
39
39
|
}
|
|
40
40
|
|
|
41
41
|
orWhere<T>(this: T, ...args: ParseWhereArguments): T {
|
|
42
|
-
const me = assertWhereable(this)
|
|
43
|
-
me._where = me.__where.or(...args)
|
|
42
|
+
const me = assertWhereable(this);
|
|
43
|
+
me._where = me.__where.or(...args);
|
|
44
44
|
return me;
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
whereNot<T>(this: T, ...args: ParseWhereArguments): T {
|
|
48
|
-
const me = assertWhereable(this)
|
|
49
|
-
me._where = me.__where.andNot(...args)
|
|
48
|
+
const me = assertWhereable(this);
|
|
49
|
+
me._where = me.__where.andNot(...args);
|
|
50
50
|
return me;
|
|
51
51
|
}
|
|
52
52
|
|
|
53
53
|
andWhereNot<T>(this: T, ...args: ParseWhereArguments): T {
|
|
54
|
-
const me = assertWhereable(this)
|
|
55
|
-
me._where = me.__where.andNot(...args)
|
|
54
|
+
const me = assertWhereable(this);
|
|
55
|
+
me._where = me.__where.andNot(...args);
|
|
56
56
|
return me;
|
|
57
57
|
}
|
|
58
58
|
|
|
59
59
|
orWhereNot<T>(this: T, ...args: ParseWhereArguments): T {
|
|
60
|
-
const me = assertWhereable(this)
|
|
61
|
-
me._where = me.__where.orNot(...args)
|
|
60
|
+
const me = assertWhereable(this);
|
|
61
|
+
me._where = me.__where.orNot(...args);
|
|
62
62
|
return me;
|
|
63
63
|
}
|
|
64
|
-
}
|
|
64
|
+
};
|
|
65
65
|
}
|
|
66
66
|
|
|
67
67
|
export abstract class SQLWhere implements SQLExpression {
|
|
@@ -75,19 +75,19 @@ export abstract class SQLWhere implements SQLExpression {
|
|
|
75
75
|
|
|
76
76
|
andNot(...args: ParseWhereArguments): SQLWhere {
|
|
77
77
|
return new SQLWhereAnd([
|
|
78
|
-
this,
|
|
78
|
+
this,
|
|
79
79
|
new SQLWhereNot(
|
|
80
|
-
SQLWhereEqual.parseWhere(...args)
|
|
81
|
-
)
|
|
80
|
+
SQLWhereEqual.parseWhere(...args),
|
|
81
|
+
),
|
|
82
82
|
]);
|
|
83
83
|
}
|
|
84
84
|
|
|
85
85
|
orNot(...args: ParseWhereArguments): SQLWhere {
|
|
86
86
|
return new SQLWhereOr([
|
|
87
|
-
this,
|
|
87
|
+
this,
|
|
88
88
|
new SQLWhereNot(
|
|
89
|
-
SQLWhereEqual.parseWhere(...args)
|
|
90
|
-
)
|
|
89
|
+
SQLWhereEqual.parseWhere(...args),
|
|
90
|
+
),
|
|
91
91
|
]);
|
|
92
92
|
}
|
|
93
93
|
|
|
@@ -95,48 +95,47 @@ export abstract class SQLWhere implements SQLExpression {
|
|
|
95
95
|
return false;
|
|
96
96
|
}
|
|
97
97
|
|
|
98
|
-
abstract getSQL(options?: SQLExpressionOptions): SQLQuery
|
|
98
|
+
abstract getSQL(options?: SQLExpressionOptions): SQLQuery;
|
|
99
99
|
}
|
|
100
100
|
|
|
101
101
|
export class SQLEmptyWhere extends SQLWhere {
|
|
102
102
|
and(...args: ParseWhereArguments): SQLWhere {
|
|
103
|
-
return SQLWhereEqual.parseWhere(...args)
|
|
103
|
+
return SQLWhereEqual.parseWhere(...args);
|
|
104
104
|
}
|
|
105
105
|
|
|
106
106
|
or(...args: ParseWhereArguments): SQLWhere {
|
|
107
|
-
return SQLWhereEqual.parseWhere(...args)
|
|
107
|
+
return SQLWhereEqual.parseWhere(...args);
|
|
108
108
|
}
|
|
109
109
|
|
|
110
110
|
andNot(...args: ParseWhereArguments): SQLWhere {
|
|
111
111
|
return new SQLWhereNot(
|
|
112
|
-
SQLWhereEqual.parseWhere(...args)
|
|
113
|
-
)
|
|
112
|
+
SQLWhereEqual.parseWhere(...args),
|
|
113
|
+
);
|
|
114
114
|
}
|
|
115
115
|
|
|
116
116
|
orNot(...args: ParseWhereArguments): SQLWhere {
|
|
117
117
|
return new SQLWhereNot(
|
|
118
|
-
SQLWhereEqual.parseWhere(...args)
|
|
119
|
-
)
|
|
118
|
+
SQLWhereEqual.parseWhere(...args),
|
|
119
|
+
);
|
|
120
120
|
}
|
|
121
121
|
|
|
122
122
|
getSQL(options?: SQLExpressionOptions): SQLQuery {
|
|
123
|
-
throw new Error('Empty where')
|
|
123
|
+
throw new Error('Empty where');
|
|
124
124
|
}
|
|
125
125
|
}
|
|
126
126
|
|
|
127
|
-
|
|
128
127
|
export enum SQLWhereSign {
|
|
129
128
|
Equal = '=',
|
|
130
129
|
Greater = '>',
|
|
131
130
|
GreaterEqual = '>=',
|
|
132
131
|
Less = '<',
|
|
133
132
|
LessEqual = '<=',
|
|
134
|
-
NotEqual = '!='
|
|
133
|
+
NotEqual = '!=',
|
|
135
134
|
}
|
|
136
135
|
|
|
137
136
|
export class SQLWhereEqual extends SQLWhere {
|
|
138
137
|
column: SQLExpression;
|
|
139
|
-
sign = SQLWhereSign.Equal
|
|
138
|
+
sign = SQLWhereSign.Equal;
|
|
140
139
|
value: SQLExpression;
|
|
141
140
|
|
|
142
141
|
static parseWhere(...[whereOrColumn, signOrValue, value]: ParseWhereArguments): SQLWhere {
|
|
@@ -146,35 +145,35 @@ export class SQLWhereEqual extends SQLWhere {
|
|
|
146
145
|
|
|
147
146
|
if (value !== undefined) {
|
|
148
147
|
return new SQLWhereEqual(
|
|
149
|
-
typeof whereOrColumn === 'string' ? new SQLColumnExpression(whereOrColumn) : whereOrColumn,
|
|
150
|
-
signOrValue as SQLWhereSign,
|
|
151
|
-
readDynamicSQLExpression(value)
|
|
152
|
-
)
|
|
148
|
+
typeof whereOrColumn === 'string' ? new SQLColumnExpression(whereOrColumn) : whereOrColumn,
|
|
149
|
+
signOrValue as SQLWhereSign,
|
|
150
|
+
readDynamicSQLExpression(value),
|
|
151
|
+
);
|
|
153
152
|
}
|
|
154
153
|
return new SQLWhereEqual(
|
|
155
|
-
typeof whereOrColumn === 'string' ? new SQLColumnExpression(whereOrColumn) : whereOrColumn,
|
|
154
|
+
typeof whereOrColumn === 'string' ? new SQLColumnExpression(whereOrColumn) : whereOrColumn,
|
|
156
155
|
SQLWhereSign.Equal,
|
|
157
|
-
readDynamicSQLExpression(signOrValue)
|
|
158
|
-
)
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
constructor
|
|
162
|
-
constructor
|
|
163
|
-
constructor
|
|
164
|
-
super()
|
|
156
|
+
readDynamicSQLExpression(signOrValue),
|
|
157
|
+
);
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
constructor(column: SQLExpression, sign: SQLWhereSign, value: SQLExpression);
|
|
161
|
+
constructor(column: SQLExpression, value: SQLExpression);
|
|
162
|
+
constructor(column: SQLExpression, signOrValue: SQLExpression | SQLWhereSign, value?: SQLExpression) {
|
|
163
|
+
super();
|
|
165
164
|
this.column = column;
|
|
166
165
|
|
|
167
166
|
if (value !== undefined) {
|
|
168
167
|
this.value = value;
|
|
169
168
|
this.sign = signOrValue as SQLWhereSign;
|
|
170
|
-
}
|
|
169
|
+
}
|
|
170
|
+
else {
|
|
171
171
|
this.value = signOrValue as SQLExpression;
|
|
172
172
|
}
|
|
173
173
|
}
|
|
174
174
|
|
|
175
175
|
clone(): this {
|
|
176
|
-
|
|
177
|
-
const c = (new (this.constructor as any)(this.column, this.sign, this.value)) as this
|
|
176
|
+
const c = (new (this.constructor as any)(this.column, this.sign, this.value)) as this;
|
|
178
177
|
Object.assign(c, this);
|
|
179
178
|
return c;
|
|
180
179
|
}
|
|
@@ -184,7 +183,7 @@ export class SQLWhereEqual extends SQLWhere {
|
|
|
184
183
|
}
|
|
185
184
|
|
|
186
185
|
inverted(): this {
|
|
187
|
-
return this.clone().invert()
|
|
186
|
+
return this.clone().invert();
|
|
188
187
|
}
|
|
189
188
|
|
|
190
189
|
invert(): this {
|
|
@@ -194,7 +193,7 @@ export class SQLWhereEqual extends SQLWhere {
|
|
|
194
193
|
case SQLWhereSign.Greater: this.sign = SQLWhereSign.LessEqual; break;
|
|
195
194
|
case SQLWhereSign.Less: this.sign = SQLWhereSign.GreaterEqual; break;
|
|
196
195
|
case SQLWhereSign.GreaterEqual: this.sign = SQLWhereSign.Less; break;
|
|
197
|
-
case SQLWhereSign.LessEqual: this.sign = SQLWhereSign.Greater; break
|
|
196
|
+
case SQLWhereSign.LessEqual: this.sign = SQLWhereSign.Greater; break;
|
|
198
197
|
}
|
|
199
198
|
return this;
|
|
200
199
|
}
|
|
@@ -208,11 +207,10 @@ export class SQLWhereEqual extends SQLWhere {
|
|
|
208
207
|
return joinSQLQuery([
|
|
209
208
|
this.column.getSQL(options),
|
|
210
209
|
` ${(this.sign === SQLWhereSign.NotEqual) ? 'NOT IN' : 'IN'} `,
|
|
211
|
-
this.value.getSQL(options)
|
|
212
|
-
])
|
|
210
|
+
this.value.getSQL(options),
|
|
211
|
+
]);
|
|
213
212
|
}
|
|
214
213
|
|
|
215
|
-
|
|
216
214
|
if (this.value instanceof SQLNull) {
|
|
217
215
|
if (this.sign !== SQLWhereSign.Equal && this.sign !== SQLWhereSign.NotEqual) {
|
|
218
216
|
throw new Error('Unsupported sign for NULL: ' + this.sign);
|
|
@@ -221,15 +219,15 @@ export class SQLWhereEqual extends SQLWhere {
|
|
|
221
219
|
return joinSQLQuery([
|
|
222
220
|
this.column.getSQL(options),
|
|
223
221
|
` IS ${(this.sign === SQLWhereSign.NotEqual) ? 'NOT ' : ''} `,
|
|
224
|
-
this.value.getSQL(options)
|
|
225
|
-
])
|
|
222
|
+
this.value.getSQL(options),
|
|
223
|
+
]);
|
|
226
224
|
}
|
|
227
225
|
|
|
228
226
|
return joinSQLQuery([
|
|
229
227
|
this.column.getSQL(options),
|
|
230
228
|
` ${this.sign} `,
|
|
231
|
-
this.value.getSQL(options)
|
|
232
|
-
])
|
|
229
|
+
this.value.getSQL(options),
|
|
230
|
+
]);
|
|
233
231
|
}
|
|
234
232
|
}
|
|
235
233
|
|
|
@@ -237,20 +235,19 @@ export class SQLWhereLike extends SQLWhere {
|
|
|
237
235
|
column: SQLExpression;
|
|
238
236
|
notLike = false;
|
|
239
237
|
value: SQLExpression;
|
|
240
|
-
|
|
241
|
-
constructor
|
|
242
|
-
super()
|
|
238
|
+
|
|
239
|
+
constructor(column: SQLExpression, value: SQLExpression) {
|
|
240
|
+
super();
|
|
243
241
|
this.column = column;
|
|
244
|
-
this.value = value
|
|
242
|
+
this.value = value;
|
|
245
243
|
}
|
|
246
244
|
|
|
247
245
|
static escape(str: string) {
|
|
248
|
-
return str.replace(/([%_])/g, '\\$1')
|
|
246
|
+
return str.replace(/([%_])/g, '\\$1');
|
|
249
247
|
}
|
|
250
248
|
|
|
251
249
|
clone(): this {
|
|
252
|
-
|
|
253
|
-
const c = (new (this.constructor as any)(this.column, this.value)) as this
|
|
250
|
+
const c = (new (this.constructor as any)(this.column, this.value)) as this;
|
|
254
251
|
Object.assign(c, this);
|
|
255
252
|
return c;
|
|
256
253
|
}
|
|
@@ -260,11 +257,11 @@ export class SQLWhereLike extends SQLWhere {
|
|
|
260
257
|
}
|
|
261
258
|
|
|
262
259
|
inverted(): this {
|
|
263
|
-
return this.clone().invert()
|
|
260
|
+
return this.clone().invert();
|
|
264
261
|
}
|
|
265
262
|
|
|
266
263
|
invert(): this {
|
|
267
|
-
this.notLike = !this.notLike
|
|
264
|
+
this.notLike = !this.notLike;
|
|
268
265
|
return this;
|
|
269
266
|
}
|
|
270
267
|
|
|
@@ -272,23 +269,22 @@ export class SQLWhereLike extends SQLWhere {
|
|
|
272
269
|
return joinSQLQuery([
|
|
273
270
|
this.column.getSQL(options),
|
|
274
271
|
` ${this.notLike ? 'NOT LIKE' : 'LIKE'} `,
|
|
275
|
-
this.value.getSQL(options)
|
|
276
|
-
])
|
|
272
|
+
this.value.getSQL(options),
|
|
273
|
+
]);
|
|
277
274
|
}
|
|
278
275
|
}
|
|
279
276
|
|
|
280
277
|
export class SQLWhereExists extends SQLWhere {
|
|
281
278
|
subquery: SQLExpression;
|
|
282
279
|
notExists = false;
|
|
283
|
-
|
|
284
|
-
constructor
|
|
285
|
-
super()
|
|
280
|
+
|
|
281
|
+
constructor(subquery: SQLExpression) {
|
|
282
|
+
super();
|
|
286
283
|
this.subquery = subquery;
|
|
287
284
|
}
|
|
288
285
|
|
|
289
286
|
clone(): this {
|
|
290
|
-
|
|
291
|
-
const c = (new (this.constructor as any)(this.subquery)) as this
|
|
287
|
+
const c = (new (this.constructor as any)(this.subquery)) as this;
|
|
292
288
|
Object.assign(c, this);
|
|
293
289
|
return c;
|
|
294
290
|
}
|
|
@@ -298,70 +294,70 @@ export class SQLWhereExists extends SQLWhere {
|
|
|
298
294
|
}
|
|
299
295
|
|
|
300
296
|
inverted(): this {
|
|
301
|
-
return this.clone().invert()
|
|
297
|
+
return this.clone().invert();
|
|
302
298
|
}
|
|
303
299
|
|
|
304
300
|
invert(): this {
|
|
305
|
-
this.notExists = !this.notExists
|
|
301
|
+
this.notExists = !this.notExists;
|
|
306
302
|
return this;
|
|
307
303
|
}
|
|
308
304
|
|
|
309
305
|
getSQL(options?: SQLExpressionOptions): SQLQuery {
|
|
310
306
|
return joinSQLQuery([
|
|
311
307
|
`${this.notExists ? 'NOT EXISTS' : 'EXISTS'} (`,
|
|
312
|
-
this.subquery.getSQL({...options}),
|
|
308
|
+
this.subquery.getSQL({ ...options }),
|
|
313
309
|
`)`,
|
|
314
|
-
])
|
|
310
|
+
]);
|
|
315
311
|
}
|
|
316
312
|
}
|
|
317
313
|
|
|
318
314
|
export class SQLWhereAnd extends SQLWhere {
|
|
319
|
-
children: SQLWhere[]
|
|
315
|
+
children: SQLWhere[];
|
|
320
316
|
|
|
321
|
-
constructor
|
|
322
|
-
super()
|
|
317
|
+
constructor(children: SQLWhere[]) {
|
|
318
|
+
super();
|
|
323
319
|
this.children = children;
|
|
324
320
|
}
|
|
325
321
|
|
|
326
322
|
getSQL(options?: SQLExpressionOptions): SQLQuery {
|
|
327
323
|
return joinSQLQuery(
|
|
328
|
-
this.children.map(c => {
|
|
324
|
+
this.children.map((c) => {
|
|
329
325
|
if (c.isSingle) {
|
|
330
|
-
return c.getSQL(options)
|
|
326
|
+
return c.getSQL(options);
|
|
331
327
|
}
|
|
332
|
-
return joinSQLQuery(['(', c.getSQL(options), ')'])
|
|
333
|
-
}),
|
|
334
|
-
' AND '
|
|
335
|
-
)
|
|
328
|
+
return joinSQLQuery(['(', c.getSQL(options), ')']);
|
|
329
|
+
}),
|
|
330
|
+
' AND ',
|
|
331
|
+
);
|
|
336
332
|
}
|
|
337
333
|
}
|
|
338
334
|
|
|
339
335
|
export class SQLWhereOr extends SQLWhere {
|
|
340
|
-
children: SQLWhere[]
|
|
336
|
+
children: SQLWhere[];
|
|
341
337
|
|
|
342
|
-
constructor
|
|
343
|
-
super()
|
|
338
|
+
constructor(children: SQLWhere[]) {
|
|
339
|
+
super();
|
|
344
340
|
this.children = children;
|
|
345
341
|
}
|
|
346
342
|
|
|
347
343
|
getSQL(options?: SQLExpressionOptions): SQLQuery {
|
|
348
344
|
return joinSQLQuery(
|
|
349
|
-
this.children.map(c => {
|
|
345
|
+
this.children.map((c) => {
|
|
350
346
|
if (c.isSingle) {
|
|
351
|
-
return c.getSQL(options)
|
|
347
|
+
return c.getSQL(options);
|
|
352
348
|
}
|
|
353
|
-
return joinSQLQuery(['(', c.getSQL(options), ')'])
|
|
354
|
-
}),
|
|
355
|
-
' OR '
|
|
356
|
-
)
|
|
349
|
+
return joinSQLQuery(['(', c.getSQL(options), ')']);
|
|
350
|
+
}),
|
|
351
|
+
' OR ',
|
|
352
|
+
);
|
|
357
353
|
}
|
|
358
354
|
}
|
|
359
355
|
|
|
360
356
|
export class SQLWhereNot extends SQLWhere {
|
|
361
|
-
a: SQLWhere
|
|
357
|
+
a: SQLWhere;
|
|
362
358
|
|
|
363
|
-
constructor
|
|
364
|
-
super()
|
|
359
|
+
constructor(a: SQLWhere) {
|
|
360
|
+
super();
|
|
365
361
|
this.a = a;
|
|
366
362
|
}
|
|
367
363
|
|
|
@@ -378,8 +374,8 @@ export class SQLWhereNot extends SQLWhere {
|
|
|
378
374
|
const sqlA = normalizeSQLQuery(this.a.getSQL(options));
|
|
379
375
|
|
|
380
376
|
return {
|
|
381
|
-
query: `NOT (${sqlA.query})`,
|
|
382
|
-
params: sqlA.params
|
|
383
|
-
}
|
|
377
|
+
query: `NOT (${sqlA.query})`,
|
|
378
|
+
params: sqlA.params,
|
|
379
|
+
};
|
|
384
380
|
}
|
|
385
381
|
}
|