@stamhoofd/sql 2.10.2 → 2.16.0
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/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/src/SQL.d.ts +16 -43
- package/dist/src/SQL.d.ts.map +1 -1
- package/dist/src/SQL.js +10 -10
- package/dist/src/SQL.js.map +1 -1
- package/dist/src/SQLDelete.d.ts +15 -15
- package/dist/src/SQLDelete.d.ts.map +1 -1
- package/dist/src/SQLDelete.js +9 -10
- package/dist/src/SQLDelete.js.map +1 -1
- package/dist/src/SQLExpression.js +4 -5
- package/dist/src/SQLExpression.js.map +1 -1
- package/dist/src/SQLExpressions.d.ts +6 -0
- package/dist/src/SQLExpressions.d.ts.map +1 -1
- package/dist/src/SQLExpressions.js +41 -8
- package/dist/src/SQLExpressions.js.map +1 -1
- package/dist/src/SQLJoin.d.ts +16 -14
- package/dist/src/SQLJoin.d.ts.map +1 -1
- package/dist/src/SQLJoin.js +10 -9
- package/dist/src/SQLJoin.js.map +1 -1
- package/dist/src/SQLJsonExpressions.js +14 -0
- package/dist/src/SQLJsonExpressions.js.map +1 -1
- package/dist/src/SQLOrderBy.d.ts +5 -8
- package/dist/src/SQLOrderBy.d.ts.map +1 -1
- package/dist/src/SQLOrderBy.js +11 -9
- package/dist/src/SQLOrderBy.js.map +1 -1
- package/dist/src/SQLSelect.d.ts +32 -29
- package/dist/src/SQLSelect.d.ts.map +1 -1
- package/dist/src/SQLSelect.js +41 -20
- package/dist/src/SQLSelect.js.map +1 -1
- package/dist/src/SQLWhere.d.ts +11 -14
- package/dist/src/SQLWhere.d.ts.map +1 -1
- package/dist/src/SQLWhere.js +46 -28
- package/dist/src/SQLWhere.js.map +1 -1
- package/dist/src/filters/SQLFilter.d.ts +9 -2
- package/dist/src/filters/SQLFilter.d.ts.map +1 -1
- package/dist/src/filters/SQLFilter.js +34 -21
- package/dist/src/filters/SQLFilter.js.map +1 -1
- package/dist/src/filters/SQLSorter.js +1 -2
- package/dist/src/filters/SQLSorter.js.map +1 -1
- package/package.json +2 -2
- package/src/SQL.ts +25 -12
- package/src/SQLDelete.ts +3 -8
- package/src/SQLExpressions.ts +20 -0
- package/src/SQLJoin.ts +4 -5
- package/src/SQLOrderBy.ts +14 -12
- package/src/SQLSelect.ts +47 -24
- package/src/SQLWhere.ts +46 -33
- package/src/filters/SQLFilter.ts +42 -15
package/dist/src/SQLWhere.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SQLWhere.js","sourceRoot":"","sources":["../../src/SQLWhere.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"SQLWhere.js","sourceRoot":"","sources":["../../src/SQLWhere.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,8 +10,15 @@ export declare function orSQLFilterCompiler(filter: StamhoofdFilter, filters: SQ
|
|
|
10
10
|
export declare function notSQLFilterCompiler(filter: StamhoofdFilter, filters: SQLFilterDefinitions): SQLWhere;
|
|
11
11
|
export declare function createSQLRelationFilterCompiler(baseSelect: InstanceType<typeof SQLSelect> & SQLExpression, definitions: SQLFilterDefinitions): SQLFilterCompiler;
|
|
12
12
|
export declare function createSQLFilterNamespace(definitions: SQLFilterDefinitions): SQLFilterCompiler;
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
type SQLExpressionFilterOptions = {
|
|
14
|
+
normalizeValue?: (v: SQLScalarValue | null) => SQLScalarValue | null;
|
|
15
|
+
isJSONValue?: boolean;
|
|
16
|
+
isJSONObject?: boolean;
|
|
17
|
+
nullable?: boolean;
|
|
18
|
+
};
|
|
19
|
+
export declare function createSQLExpressionFilterCompiler(sqlExpression: SQLExpression, { normalizeValue, isJSONObject, isJSONValue, nullable }?: SQLExpressionFilterOptions): SQLFilterCompiler;
|
|
20
|
+
export declare function createSQLColumnFilterCompiler(name: string | SQLColumnExpression, options?: SQLExpressionFilterOptions): SQLFilterCompiler;
|
|
15
21
|
export declare const baseSQLFilterCompilers: SQLFilterDefinitions;
|
|
16
22
|
export declare const compileToSQLFilter: typeof andSQLFilterCompiler;
|
|
23
|
+
export {};
|
|
17
24
|
//# sourceMappingURL=SQLFilter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SQLFilter.d.ts","sourceRoot":"","sources":["../../../src/filters/SQLFilter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"SQLFilter.d.ts","sourceRoot":"","sources":["../../../src/filters/SQLFilter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAqB,mBAAmB,EAAyB,cAAc,EAAoD,MAAM,mBAAmB,CAAC;AAEpK,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAmG,MAAM,aAAa,CAAC;AAExI,MAAM,MAAM,iBAAiB,GAAG,CAAC,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,oBAAoB,KAAK,QAAQ,GAAC,IAAI,CAAC;AAC1G,MAAM,MAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAA;AAEpE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,oBAAoB,GAAG,QAAQ,CAGrG;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,oBAAoB,GAAG,QAAQ,CAGpG;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,oBAAoB,GAAG,QAAQ,CAGrG;AAqBD,wBAAgB,+BAA+B,CAAC,UAAU,EAAE,YAAY,CAAC,OAAO,SAAS,CAAC,GAAG,aAAa,EAAE,WAAW,EAAE,oBAAoB,GAAG,iBAAiB,CAYhK;AAGD,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,oBAAoB,GAAG,iBAAiB,CAI7F;AAED,KAAK,0BAA0B,GAAG;IAAC,cAAc,CAAC,EAAE,CAAC,CAAC,EAAE,cAAc,GAAC,IAAI,KAAK,cAAc,GAAC,IAAI,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAC,CAAA;AAEvK,wBAAgB,iCAAiC,CAAC,aAAa,EAAE,aAAa,EAAE,EAAC,cAAc,EAAE,YAAoB,EAAE,WAAmB,EAAE,QAAgB,EAAC,GAAE,0BAA+B,GAAG,iBAAiB,CA6OjN;AAED,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,EAAE,OAAO,CAAC,EAAE,0BAA0B,GAAG,iBAAiB,CAGzI;AAED,eAAO,MAAM,sBAAsB,EAAE,oBAIpC,CAAA;AAuCD,eAAO,MAAM,kBAAkB,6BAAuB,CAAA"}
|
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.compileToSQLFilter = exports.baseSQLFilterCompilers =
|
|
3
|
+
exports.compileToSQLFilter = exports.baseSQLFilterCompilers = void 0;
|
|
4
|
+
exports.andSQLFilterCompiler = andSQLFilterCompiler;
|
|
5
|
+
exports.orSQLFilterCompiler = orSQLFilterCompiler;
|
|
6
|
+
exports.notSQLFilterCompiler = notSQLFilterCompiler;
|
|
7
|
+
exports.createSQLRelationFilterCompiler = createSQLRelationFilterCompiler;
|
|
8
|
+
exports.createSQLFilterNamespace = createSQLFilterNamespace;
|
|
9
|
+
exports.createSQLExpressionFilterCompiler = createSQLExpressionFilterCompiler;
|
|
10
|
+
exports.createSQLColumnFilterCompiler = createSQLColumnFilterCompiler;
|
|
4
11
|
const simple_errors_1 = require("@simonbackx/simple-errors");
|
|
5
12
|
const SQL_1 = require("../SQL");
|
|
6
13
|
const SQLExpressions_1 = require("../SQLExpressions");
|
|
@@ -10,17 +17,14 @@ function andSQLFilterCompiler(filter, filters) {
|
|
|
10
17
|
const runners = compileSQLFilter(filter, filters);
|
|
11
18
|
return new SQLWhere_1.SQLWhereAnd(runners);
|
|
12
19
|
}
|
|
13
|
-
exports.andSQLFilterCompiler = andSQLFilterCompiler;
|
|
14
20
|
function orSQLFilterCompiler(filter, filters) {
|
|
15
21
|
const runners = compileSQLFilter(filter, filters);
|
|
16
22
|
return new SQLWhere_1.SQLWhereOr(runners);
|
|
17
23
|
}
|
|
18
|
-
exports.orSQLFilterCompiler = orSQLFilterCompiler;
|
|
19
24
|
function notSQLFilterCompiler(filter, filters) {
|
|
20
25
|
const andRunner = andSQLFilterCompiler(filter, filters);
|
|
21
26
|
return new SQLWhere_1.SQLWhereNot(andRunner);
|
|
22
27
|
}
|
|
23
|
-
exports.notSQLFilterCompiler = notSQLFilterCompiler;
|
|
24
28
|
function guardScalar(s) {
|
|
25
29
|
if (typeof s !== 'string' && typeof s !== 'number' && typeof s !== 'boolean' && !(s instanceof Date) && s !== null) {
|
|
26
30
|
throw new Error('Invalid scalar value');
|
|
@@ -47,16 +51,14 @@ function createSQLRelationFilterCompiler(baseSelect, definitions) {
|
|
|
47
51
|
throw new Error('Invalid filter');
|
|
48
52
|
};
|
|
49
53
|
}
|
|
50
|
-
exports.createSQLRelationFilterCompiler = createSQLRelationFilterCompiler;
|
|
51
54
|
// Already joined, but creates a namespace
|
|
52
55
|
function createSQLFilterNamespace(definitions) {
|
|
53
56
|
return (filter) => {
|
|
54
57
|
return andSQLFilterCompiler(filter, definitions);
|
|
55
58
|
};
|
|
56
59
|
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
const norm = normalizeValue !== null && normalizeValue !== void 0 ? normalizeValue : ((v) => v);
|
|
60
|
+
function createSQLExpressionFilterCompiler(sqlExpression, { normalizeValue, isJSONObject = false, isJSONValue = false, nullable = false } = {}) {
|
|
61
|
+
const norm = normalizeValue ?? ((v) => v);
|
|
60
62
|
const convertToExpression = isJSONValue ? SQLExpressions_1.scalarToSQLJSONExpression : SQLExpressions_1.scalarToSQLExpression;
|
|
61
63
|
return (filter, filters) => {
|
|
62
64
|
if (typeof filter === 'string' || typeof filter === 'number' || typeof filter === 'boolean' || filter === null || filter === undefined) {
|
|
@@ -125,14 +127,6 @@ function createSQLExpressionFilterCompiler(sqlExpression, normalizeValue, isJSON
|
|
|
125
127
|
guardScalar(f.$neq);
|
|
126
128
|
if (isJSONObject) {
|
|
127
129
|
const v = norm(f.$eq);
|
|
128
|
-
// if (typeof v === 'string') {
|
|
129
|
-
// return new SQLWhereEqual(
|
|
130
|
-
// new SQLJsonSearch(sqlExpression, 'one', convertToExpression(v)),
|
|
131
|
-
// SQLWhereSign.Equal,
|
|
132
|
-
// new SQLNull()
|
|
133
|
-
// );
|
|
134
|
-
// }
|
|
135
|
-
// else
|
|
136
130
|
return new SQLWhere_1.SQLWhereEqual(new SQLJsonExpressions_1.SQLJsonContains(sqlExpression, convertToExpression(JSON.stringify(v))), SQLWhere_1.SQLWhereSign.Equal, new SQLExpressions_1.SQLSafeValue(0));
|
|
137
131
|
}
|
|
138
132
|
return new SQLWhere_1.SQLWhereEqual(sqlExpression, SQLWhere_1.SQLWhereSign.NotEqual, convertToExpression(norm(f.$neq)));
|
|
@@ -146,6 +140,7 @@ function createSQLExpressionFilterCompiler(sqlExpression, normalizeValue, isJSON
|
|
|
146
140
|
// > null is same as not equal to null (everything is larger than null in mysql) - to be consistent with order by behaviour
|
|
147
141
|
return new SQLWhere_1.SQLWhereEqual(sqlExpression, SQLWhere_1.SQLWhereSign.NotEqual, convertToExpression(null));
|
|
148
142
|
}
|
|
143
|
+
// For MySQL null values are never included in greater than, but we need this for consistent sorting behaviour
|
|
149
144
|
return new SQLWhere_1.SQLWhereEqual(sqlExpression, SQLWhere_1.SQLWhereSign.Greater, convertToExpression(norm(f.$gt)));
|
|
150
145
|
}
|
|
151
146
|
if ('$gte' in f) {
|
|
@@ -168,6 +163,14 @@ function createSQLExpressionFilterCompiler(sqlExpression, normalizeValue, isJSON
|
|
|
168
163
|
// <= null is same as equal to null
|
|
169
164
|
return new SQLWhere_1.SQLWhereEqual(sqlExpression, SQLWhere_1.SQLWhereSign.Equal, convertToExpression(norm(f.$lte)));
|
|
170
165
|
}
|
|
166
|
+
const base = new SQLWhere_1.SQLWhereEqual(sqlExpression, SQLWhere_1.SQLWhereSign.LessEqual, convertToExpression(norm(f.$lte)));
|
|
167
|
+
if (nullable) {
|
|
168
|
+
return new SQLWhere_1.SQLWhereOr([
|
|
169
|
+
// Null values are also smaller than any value - required for sorting
|
|
170
|
+
new SQLWhere_1.SQLWhereEqual(sqlExpression, SQLWhere_1.SQLWhereSign.Equal, new SQLExpressions_1.SQLNull()),
|
|
171
|
+
base
|
|
172
|
+
]);
|
|
173
|
+
}
|
|
171
174
|
return new SQLWhere_1.SQLWhereEqual(sqlExpression, SQLWhere_1.SQLWhereSign.LessEqual, convertToExpression(norm(f.$lte)));
|
|
172
175
|
}
|
|
173
176
|
if ('$lt' in f) {
|
|
@@ -179,24 +182,34 @@ function createSQLExpressionFilterCompiler(sqlExpression, normalizeValue, isJSON
|
|
|
179
182
|
// < null is always nothing, there is nothing smaller than null in MySQL - to be consistent with order by behaviour
|
|
180
183
|
return new SQLWhere_1.SQLWhereEqual(new SQLExpressions_1.SQLSafeValue(1), SQLWhere_1.SQLWhereSign.Equal, new SQLExpressions_1.SQLSafeValue(0));
|
|
181
184
|
}
|
|
182
|
-
|
|
185
|
+
const base = new SQLWhere_1.SQLWhereEqual(sqlExpression, SQLWhere_1.SQLWhereSign.Less, convertToExpression(norm(f.$lt)));
|
|
186
|
+
if (nullable) {
|
|
187
|
+
return new SQLWhere_1.SQLWhereOr([
|
|
188
|
+
// Null values are also smaller than any value - required for sorting
|
|
189
|
+
new SQLWhere_1.SQLWhereEqual(sqlExpression, SQLWhere_1.SQLWhereSign.Equal, new SQLExpressions_1.SQLNull()),
|
|
190
|
+
base
|
|
191
|
+
]);
|
|
192
|
+
}
|
|
193
|
+
return base;
|
|
183
194
|
}
|
|
184
195
|
if ('$contains' in f) {
|
|
185
196
|
guardString(f.$contains);
|
|
186
197
|
if (isJSONObject) {
|
|
187
198
|
return new SQLWhere_1.SQLWhereEqual(new SQLJsonExpressions_1.SQLJsonSearch(sqlExpression, 'one', convertToExpression('%' + SQLWhere_1.SQLWhereLike.escape(f.$contains) + '%')), SQLWhere_1.SQLWhereSign.NotEqual, new SQLExpressions_1.SQLNull());
|
|
188
199
|
}
|
|
200
|
+
if (isJSONValue) {
|
|
201
|
+
// We need to do case insensitive search, so need to convert the sqlExpression from utf8mb4 to varchar
|
|
202
|
+
return new SQLWhere_1.SQLWhereLike(new SQLExpressions_1.SQLCast(new SQLJsonExpressions_1.SQLJsonUnquote(sqlExpression), 'CHAR'), convertToExpression('%' + SQLWhere_1.SQLWhereLike.escape(f.$contains) + '%'));
|
|
203
|
+
}
|
|
189
204
|
return new SQLWhere_1.SQLWhereLike(sqlExpression, convertToExpression('%' + SQLWhere_1.SQLWhereLike.escape(f.$contains) + '%'));
|
|
190
205
|
}
|
|
191
206
|
throw new Error('Invalid filter ' + JSON.stringify(f));
|
|
192
207
|
};
|
|
193
208
|
}
|
|
194
|
-
|
|
195
|
-
function createSQLColumnFilterCompiler(name, normalizeValue) {
|
|
209
|
+
function createSQLColumnFilterCompiler(name, options) {
|
|
196
210
|
const column = name instanceof SQLExpressions_1.SQLColumnExpression ? name : SQL_1.SQL.column(name);
|
|
197
|
-
return createSQLExpressionFilterCompiler(column,
|
|
211
|
+
return createSQLExpressionFilterCompiler(column, options);
|
|
198
212
|
}
|
|
199
|
-
exports.createSQLColumnFilterCompiler = createSQLColumnFilterCompiler;
|
|
200
213
|
exports.baseSQLFilterCompilers = {
|
|
201
214
|
'$and': andSQLFilterCompiler,
|
|
202
215
|
'$or': orSQLFilterCompiler,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SQLFilter.js","sourceRoot":"","sources":["../../../src/filters/SQLFilter.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"SQLFilter.js","sourceRoot":"","sources":["../../../src/filters/SQLFilter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.compileToSQLSorter =
|
|
3
|
+
exports.compileToSQLSorter = compileToSQLSorter;
|
|
4
4
|
const SQLOrderBy_1 = require("../SQLOrderBy");
|
|
5
5
|
function compileToSQLSorter(sortBy, definitions) {
|
|
6
6
|
const sorters = [];
|
|
@@ -16,5 +16,4 @@ function compileToSQLSorter(sortBy, definitions) {
|
|
|
16
16
|
}
|
|
17
17
|
return SQLOrderBy_1.SQLOrderBy.combine(sorters);
|
|
18
18
|
}
|
|
19
|
-
exports.compileToSQLSorter = compileToSQLSorter;
|
|
20
19
|
//# sourceMappingURL=SQLSorter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SQLSorter.js","sourceRoot":"","sources":["../../../src/filters/SQLSorter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SQLSorter.js","sourceRoot":"","sources":["../../../src/filters/SQLSorter.ts"],"names":[],"mappings":";;AAWA,gDAiBC;AAzBD,8CAAgE;AAQhE,SAAgB,kBAAkB,CAAC,MAAgB,EAAE,WAA+B;IAChF,MAAM,OAAO,GAAiB,EAAE,CAAC;IAEjC,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACrB,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,CAAC,CAAC,EAAE,CAAC;YACL,MAAM,IAAI,KAAK,CAAC,mBAAmB,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;QAChD,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAA;IACvC,CAAC;IAED,OAAO,uBAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;AACtC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stamhoofd/sql",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.16.0",
|
|
4
4
|
"main": "./dist/index.js",
|
|
5
5
|
"types": "./dist/index.d.ts",
|
|
6
6
|
"license": "UNLICENCED",
|
|
@@ -12,5 +12,5 @@
|
|
|
12
12
|
"scripts": {
|
|
13
13
|
"build": "tsc -b"
|
|
14
14
|
},
|
|
15
|
-
"gitHead": "
|
|
15
|
+
"gitHead": "d5f1a4dda2c1623058e96e8ff25d837b28e51bd6"
|
|
16
16
|
}
|
package/src/SQL.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
+
import { SQLResultNamespacedRow } from "@simonbackx/simple-database";
|
|
2
|
+
import { SQLDelete } from "./SQLDelete";
|
|
1
3
|
import { SQLExpression } from "./SQLExpression";
|
|
2
|
-
import {
|
|
3
|
-
import { SQLColumnExpression, SQLSafeValue, SQLTableExpression, SQLWildcardSelectExpression, scalarToSQLExpression } from "./SQLExpressions";
|
|
4
|
+
import { SQLColumnExpression, SQLSafeValue, SQLTableExpression, SQLWildcardSelectExpression } from "./SQLExpressions";
|
|
4
5
|
import { SQLJoin, SQLJoinType } from "./SQLJoin";
|
|
5
6
|
import { SQLJsonExtract, SQLJsonLength } from "./SQLJsonExpressions";
|
|
6
|
-
import {
|
|
7
|
+
import { parseTable, SQLSelect } from "./SQLSelect";
|
|
7
8
|
|
|
8
9
|
class StaticSQL {
|
|
9
10
|
wildcard(namespace?: string) {
|
|
@@ -36,7 +37,7 @@ class StaticSQL {
|
|
|
36
37
|
return new SQLTableExpression(namespaceOrTable, table)
|
|
37
38
|
}
|
|
38
39
|
|
|
39
|
-
select(...columns: SQLExpression[]): InstanceType<typeof SQLSelect
|
|
40
|
+
select(...columns: (SQLExpression|string)[]): InstanceType<typeof SQLSelect<SQLResultNamespacedRow>> {
|
|
40
41
|
if (columns.length === 0) {
|
|
41
42
|
return new SQLSelect(this.wildcard())
|
|
42
43
|
}
|
|
@@ -47,20 +48,32 @@ class StaticSQL {
|
|
|
47
48
|
return new SQLDelete()
|
|
48
49
|
}
|
|
49
50
|
|
|
50
|
-
leftJoin(table:
|
|
51
|
-
|
|
51
|
+
leftJoin(namespace: string, table: string);
|
|
52
|
+
leftJoin(table: string);
|
|
53
|
+
leftJoin(expression: SQLExpression);
|
|
54
|
+
leftJoin(tableOrExpressiongOrNamespace: SQLExpression|string, table?: string) {
|
|
55
|
+
return new SQLJoin(SQLJoinType.Left, parseTable(tableOrExpressiongOrNamespace, table))
|
|
52
56
|
}
|
|
53
57
|
|
|
54
|
-
rightJoin(table:
|
|
55
|
-
|
|
58
|
+
rightJoin(namespace: string, table: string);
|
|
59
|
+
rightJoin(table: string);
|
|
60
|
+
rightJoin(expression: SQLExpression);
|
|
61
|
+
rightJoin(tableOrExpressiongOrNamespace: SQLExpression|string, table?: string) {
|
|
62
|
+
return new SQLJoin(SQLJoinType.Right, parseTable(tableOrExpressiongOrNamespace, table))
|
|
56
63
|
}
|
|
57
64
|
|
|
58
|
-
innerJoin(table:
|
|
59
|
-
|
|
65
|
+
innerJoin(namespace: string, table: string);
|
|
66
|
+
innerJoin(table: string);
|
|
67
|
+
innerJoin(expression: SQLExpression);
|
|
68
|
+
innerJoin(tableOrExpressiongOrNamespace: SQLExpression|string, table?: string) {
|
|
69
|
+
return new SQLJoin(SQLJoinType.Inner, parseTable(tableOrExpressiongOrNamespace, table))
|
|
60
70
|
}
|
|
61
71
|
|
|
62
|
-
join(table:
|
|
63
|
-
|
|
72
|
+
join(namespace: string, table: string);
|
|
73
|
+
join(table: string);
|
|
74
|
+
join(expression: SQLExpression);
|
|
75
|
+
join(tableOrExpressiongOrNamespace: SQLExpression|string, table?: string) {
|
|
76
|
+
return new SQLJoin(SQLJoinType.Inner, parseTable(tableOrExpressiongOrNamespace, table))
|
|
64
77
|
}
|
|
65
78
|
}
|
|
66
79
|
|
package/src/SQLDelete.ts
CHANGED
|
@@ -1,16 +1,13 @@
|
|
|
1
1
|
import { Database } from "@simonbackx/simple-database";
|
|
2
2
|
import { SQLExpression, SQLExpressionOptions, SQLQuery, joinSQLQuery, normalizeSQLQuery } from "./SQLExpression";
|
|
3
3
|
import { SQLJoin } from './SQLJoin';
|
|
4
|
-
import { SQLWhere,
|
|
4
|
+
import { SQLWhere, Whereable } from "./SQLWhere";
|
|
5
5
|
|
|
6
|
-
class
|
|
6
|
+
class EmptyClass {}
|
|
7
|
+
export class SQLDelete extends Whereable(EmptyClass) implements SQLExpression {
|
|
7
8
|
_from: SQLExpression;
|
|
8
|
-
_where: SQLWhere|null = null;
|
|
9
9
|
_joins: (InstanceType<typeof SQLJoin>)[] = [];
|
|
10
10
|
|
|
11
|
-
constructor() {
|
|
12
|
-
}
|
|
13
|
-
|
|
14
11
|
clone(): this {
|
|
15
12
|
const c = new SQLDelete()
|
|
16
13
|
Object.assign(c, this);
|
|
@@ -63,5 +60,3 @@ class DeleteBase implements SQLExpression {
|
|
|
63
60
|
return this.delete().then(onFulfilled, onRejected);
|
|
64
61
|
}
|
|
65
62
|
}
|
|
66
|
-
|
|
67
|
-
export const SQLDelete = addWhereHelpers(DeleteBase)
|
package/src/SQLExpressions.ts
CHANGED
|
@@ -150,6 +150,26 @@ export class SQLAge implements SQLExpression {
|
|
|
150
150
|
}
|
|
151
151
|
}
|
|
152
152
|
|
|
153
|
+
export class SQLCast implements SQLExpression {
|
|
154
|
+
value: SQLExpression
|
|
155
|
+
as = 'CHAR'
|
|
156
|
+
|
|
157
|
+
constructor(value: SQLExpression, as = 'CHAR') {
|
|
158
|
+
this.value = value;
|
|
159
|
+
this.as = as;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
getSQL(options?: SQLExpressionOptions): SQLQuery {
|
|
163
|
+
return joinSQLQuery([
|
|
164
|
+
'CAST( ',
|
|
165
|
+
this.value.getSQL(options),
|
|
166
|
+
' AS ',
|
|
167
|
+
this.as,
|
|
168
|
+
')'
|
|
169
|
+
])
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
|
|
153
173
|
export class SQLJSONValue implements SQLExpression {
|
|
154
174
|
value: null|true|false;
|
|
155
175
|
|
package/src/SQLJoin.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { SQLExpression, SQLExpressionOptions, SQLQuery, joinSQLQuery } from "./SQLExpression";
|
|
2
|
-
import { SQLWhere,
|
|
2
|
+
import { SQLWhere, Whereable } from "./SQLWhere";
|
|
3
3
|
|
|
4
4
|
export enum SQLJoinType {
|
|
5
5
|
Left = "Left",
|
|
@@ -8,12 +8,13 @@ export enum SQLJoinType {
|
|
|
8
8
|
Outer = "Outer"
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
class EmptyClass {}
|
|
12
|
+
export class SQLJoin extends Whereable(EmptyClass) implements SQLExpression {
|
|
12
13
|
type = SQLJoinType.Left
|
|
13
14
|
table: SQLExpression;
|
|
14
|
-
_where: SQLWhere|null = null;
|
|
15
15
|
|
|
16
16
|
constructor(type: SQLJoinType, table: SQLExpression) {
|
|
17
|
+
super();
|
|
17
18
|
this.type = type;
|
|
18
19
|
this.table = table;
|
|
19
20
|
}
|
|
@@ -36,5 +37,3 @@ export class JoinBase implements SQLExpression {
|
|
|
36
37
|
], ' ')
|
|
37
38
|
}
|
|
38
39
|
}
|
|
39
|
-
|
|
40
|
-
export const SQLJoin = addWhereHelpers(JoinBase)
|
package/src/SQLOrderBy.ts
CHANGED
|
@@ -1,26 +1,28 @@
|
|
|
1
1
|
import { SQLExpression, SQLExpressionOptions, SQLQuery, joinSQLQuery } from "./SQLExpression";
|
|
2
2
|
|
|
3
|
-
type
|
|
4
|
-
type Orderable = GConstructor<{ _orderBy: SQLOrderBy|null }>;
|
|
3
|
+
type Constructor<T = {}> = new (...args: any[]) => T;
|
|
5
4
|
|
|
6
|
-
export function
|
|
5
|
+
export function Orderable<Sup extends Constructor<{}>>(Base: Sup) {
|
|
7
6
|
return class extends Base {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
orderBy(
|
|
11
|
-
orderBy(
|
|
7
|
+
_orderBy: SQLOrderBy|null = null
|
|
8
|
+
|
|
9
|
+
orderBy<T>(this: T, orderBy: SQLOrderBy): T
|
|
10
|
+
orderBy<T>(this: T, column: SQLExpression, direction?: SQLOrderByDirection) : T
|
|
11
|
+
orderBy<T>(this: T, columnOrOrderBy: SQLExpression, direction?: SQLOrderByDirection): T {
|
|
12
12
|
let o = columnOrOrderBy as SQLOrderBy
|
|
13
13
|
if (!(columnOrOrderBy instanceof SQLOrderBy)) {
|
|
14
14
|
o = new SQLOrderBy({column: columnOrOrderBy, direction: direction ?? 'ASC'})
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
-
if
|
|
18
|
-
|
|
17
|
+
const me = this as any; // stupid typescript looses type information if we don't do the this: T dance
|
|
18
|
+
|
|
19
|
+
if (me._orderBy) {
|
|
20
|
+
me._orderBy.add(o)
|
|
19
21
|
} else {
|
|
20
|
-
|
|
22
|
+
me._orderBy = o;
|
|
21
23
|
}
|
|
22
24
|
|
|
23
|
-
return
|
|
25
|
+
return me;
|
|
24
26
|
}
|
|
25
27
|
}
|
|
26
28
|
}
|
|
@@ -60,4 +62,4 @@ export class SQLOrderBy implements SQLExpression {
|
|
|
60
62
|
)
|
|
61
63
|
])
|
|
62
64
|
}
|
|
63
|
-
}
|
|
65
|
+
}
|
package/src/SQLSelect.ts
CHANGED
|
@@ -1,24 +1,42 @@
|
|
|
1
|
+
import { Database, SQLResultNamespacedRow } from "@simonbackx/simple-database";
|
|
1
2
|
import { SQLExpression, SQLExpressionOptions, SQLQuery, joinSQLQuery, normalizeSQLQuery } from "./SQLExpression";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
|
|
3
|
+
import { SQLAlias, SQLColumnExpression, SQLCount, SQLSelectAs, SQLSum, SQLTableExpression } from "./SQLExpressions";
|
|
4
|
+
import { SQLJoin } from './SQLJoin';
|
|
5
|
+
import { Orderable } from "./SQLOrderBy";
|
|
6
|
+
import { Whereable } from "./SQLWhere";
|
|
7
|
+
|
|
8
|
+
class EmptyClass {}
|
|
9
|
+
|
|
10
|
+
export function parseTable(tableOrExpressiongOrNamespace: SQLExpression|string, table?: string): SQLExpression {
|
|
11
|
+
if (table !== undefined && typeof tableOrExpressiongOrNamespace === 'string') {
|
|
12
|
+
return new SQLTableExpression(tableOrExpressiongOrNamespace, table)
|
|
13
|
+
} else if (typeof tableOrExpressiongOrNamespace === 'string') {
|
|
14
|
+
return new SQLTableExpression(tableOrExpressiongOrNamespace)
|
|
15
|
+
} else {
|
|
16
|
+
return tableOrExpressiongOrNamespace;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
7
19
|
|
|
8
|
-
class
|
|
20
|
+
export class SQLSelect<T = SQLResultNamespacedRow> extends Whereable(Orderable(EmptyClass)) implements SQLExpression {
|
|
9
21
|
_columns: SQLExpression[]
|
|
10
22
|
_from: SQLExpression;
|
|
11
23
|
|
|
12
24
|
_limit: number|null = null;
|
|
13
25
|
_offset: number|null = null;
|
|
14
|
-
|
|
15
|
-
_where: SQLWhere|null = null;
|
|
16
|
-
_orderBy: SQLOrderBy|null = null;
|
|
17
26
|
_groupBy: SQLExpression[] = [];
|
|
18
27
|
_joins: (InstanceType<typeof SQLJoin>)[] = [];
|
|
19
28
|
|
|
20
|
-
|
|
21
|
-
|
|
29
|
+
_transformer: ((row: SQLResultNamespacedRow) => T)|null = null;
|
|
30
|
+
|
|
31
|
+
constructor(...columns: (SQLExpression|string)[])
|
|
32
|
+
constructor(transformer: ((row: SQLResultNamespacedRow) => T),...columns: (SQLExpression|string)[])
|
|
33
|
+
constructor(...columns: (SQLExpression|string|((row: SQLResultNamespacedRow) => T))[]) {
|
|
34
|
+
super();
|
|
35
|
+
|
|
36
|
+
if (typeof columns[0] === 'function') {
|
|
37
|
+
this._transformer = columns.shift() as any;
|
|
38
|
+
}
|
|
39
|
+
this._columns = columns.map(c => typeof c === 'string' ? new SQLColumnExpression(c) : c ) as any;
|
|
22
40
|
}
|
|
23
41
|
|
|
24
42
|
clone(): this {
|
|
@@ -27,8 +45,12 @@ class SelectBase implements SQLExpression {
|
|
|
27
45
|
return c as any;
|
|
28
46
|
}
|
|
29
47
|
|
|
30
|
-
from(table:
|
|
31
|
-
|
|
48
|
+
from(namespace: string, table: string): this
|
|
49
|
+
from(table: string): this
|
|
50
|
+
from(expression: SQLExpression): this
|
|
51
|
+
from(tableOrExpressiongOrNamespace: SQLExpression|string, table?: string): this {
|
|
52
|
+
this._from = parseTable(tableOrExpressiongOrNamespace, table);
|
|
53
|
+
|
|
32
54
|
return this;
|
|
33
55
|
}
|
|
34
56
|
|
|
@@ -98,10 +120,11 @@ class SelectBase implements SQLExpression {
|
|
|
98
120
|
return this;
|
|
99
121
|
}
|
|
100
122
|
|
|
101
|
-
async fetch(): Promise<
|
|
123
|
+
async fetch(): Promise<T[]> {
|
|
102
124
|
const {query, params} = normalizeSQLQuery(this.getSQL())
|
|
103
125
|
|
|
104
|
-
|
|
126
|
+
// when debugging: log all queries
|
|
127
|
+
//console.log(query, params);
|
|
105
128
|
const [rows] = await Database.select(query, params, {nestTables: true});
|
|
106
129
|
|
|
107
130
|
// Now map aggregated queries to the correct namespace
|
|
@@ -121,12 +144,16 @@ class SelectBase implements SQLExpression {
|
|
|
121
144
|
delete row[''];
|
|
122
145
|
}
|
|
123
146
|
}
|
|
124
|
-
|
|
147
|
+
|
|
148
|
+
if (this._transformer) {
|
|
149
|
+
return rows.map(this._transformer);
|
|
150
|
+
}
|
|
151
|
+
return rows as T[];
|
|
125
152
|
}
|
|
126
153
|
|
|
127
|
-
first(required: false): Promise<
|
|
128
|
-
first(required: true): Promise<
|
|
129
|
-
async first(required = true): Promise<
|
|
154
|
+
first(required: false): Promise<T|null>
|
|
155
|
+
first(required: true): Promise<T>
|
|
156
|
+
async first(required = true): Promise<T|null> {
|
|
130
157
|
const rows = await this.limit(1).fetch();
|
|
131
158
|
if (rows.length === 0) {
|
|
132
159
|
if (required) {
|
|
@@ -134,6 +161,7 @@ class SelectBase implements SQLExpression {
|
|
|
134
161
|
}
|
|
135
162
|
return null;
|
|
136
163
|
}
|
|
164
|
+
|
|
137
165
|
return rows[0]
|
|
138
166
|
}
|
|
139
167
|
|
|
@@ -199,8 +227,3 @@ class SelectBase implements SQLExpression {
|
|
|
199
227
|
return 0;
|
|
200
228
|
}
|
|
201
229
|
}
|
|
202
|
-
|
|
203
|
-
export const SQLSelect = addOrderByHelpers(
|
|
204
|
-
addWhereHelpers(SelectBase)
|
|
205
|
-
)
|
|
206
|
-
|