@stamhoofd/sql 2.2.0 → 2.9.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/src/SQL.d.ts +4 -1
- package/dist/src/SQL.d.ts.map +1 -1
- package/dist/src/SQL.js +7 -0
- package/dist/src/SQL.js.map +1 -1
- package/dist/src/SQLDelete.d.ts +33 -0
- package/dist/src/SQLDelete.d.ts.map +1 -0
- package/dist/src/SQLDelete.js +52 -0
- package/dist/src/SQLDelete.js.map +1 -0
- package/dist/src/SQLJsonExpressions.d.ts +11 -0
- package/dist/src/SQLJsonExpressions.d.ts.map +1 -1
- package/dist/src/SQLJsonExpressions.js +32 -1
- package/dist/src/SQLJsonExpressions.js.map +1 -1
- package/dist/src/SQLSelect.d.ts +3 -0
- package/dist/src/SQLSelect.d.ts.map +1 -1
- package/dist/src/SQLSelect.js +34 -0
- package/dist/src/SQLSelect.js.map +1 -1
- package/dist/src/SQLWhere.d.ts +2 -0
- package/dist/src/SQLWhere.d.ts.map +1 -1
- package/dist/src/SQLWhere.js +9 -1
- package/dist/src/SQLWhere.js.map +1 -1
- package/dist/src/filters/SQLFilter.d.ts.map +1 -1
- package/dist/src/filters/SQLFilter.js +42 -0
- package/dist/src/filters/SQLFilter.js.map +1 -1
- package/package.json +2 -2
- package/src/SQL.ts +10 -1
- package/src/SQLDelete.ts +67 -0
- package/src/SQLJsonExpressions.ts +38 -1
- package/src/SQLSelect.ts +49 -3
- package/src/SQLWhere.ts +6 -2
- package/src/filters/SQLFilter.ts +58 -1
package/dist/src/SQL.d.ts
CHANGED
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
import { SQLExpression } from "./SQLExpression";
|
|
2
2
|
import { SQLSelect } from "./SQLSelect";
|
|
3
3
|
import { SQLColumnExpression, SQLTableExpression, SQLWildcardSelectExpression } from "./SQLExpressions";
|
|
4
|
-
import { SQLJsonExtract } from "./SQLJsonExpressions";
|
|
4
|
+
import { SQLJsonExtract, SQLJsonLength } from "./SQLJsonExpressions";
|
|
5
|
+
import { SQLDelete } from "./SQLDelete";
|
|
5
6
|
declare class StaticSQL {
|
|
6
7
|
wildcard(namespace?: string): SQLWildcardSelectExpression;
|
|
7
8
|
column(namespace: string, column: string): SQLColumnExpression;
|
|
8
9
|
column(column: string): SQLColumnExpression;
|
|
9
10
|
jsonValue(column: SQLExpression, path: string): SQLJsonExtract;
|
|
11
|
+
jsonLength(column: SQLExpression, path?: string): SQLJsonLength;
|
|
10
12
|
table(namespace: string, table: string): SQLTableExpression;
|
|
11
13
|
table(table: string): SQLTableExpression;
|
|
12
14
|
select(...columns: SQLExpression[]): InstanceType<typeof SQLSelect>;
|
|
15
|
+
delete(): InstanceType<typeof SQLDelete>;
|
|
13
16
|
leftJoin(table: SQLExpression): {
|
|
14
17
|
parseWhere(...[whereOrColumn, signOrValue, value]: import("./SQLWhere").ParseWhereArguments): import("./SQLWhere").SQLWhere;
|
|
15
18
|
where<T>(this: T, ...args: import("./SQLWhere").ParseWhereArguments): T;
|
package/dist/src/SQL.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SQL.d.ts","sourceRoot":"","sources":["../../src/SQL.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,mBAAmB,EAAgB,kBAAkB,EAAE,2BAA2B,EAAyB,MAAM,kBAAkB,CAAC;AAE7I,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"SQL.d.ts","sourceRoot":"","sources":["../../src/SQL.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,mBAAmB,EAAgB,kBAAkB,EAAE,2BAA2B,EAAyB,MAAM,kBAAkB,CAAC;AAE7I,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,cAAM,SAAS;IACX,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM;IAI3B,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,mBAAmB;IAC9D,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,mBAAmB;IAQ3C,SAAS,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,GAAG,cAAc;IAI9D,UAAU,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,aAAa;IAI/D,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,kBAAkB;IAC3D,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,kBAAkB;IAQxC,MAAM,CAAC,GAAG,OAAO,EAAE,aAAa,EAAE,GAAG,YAAY,CAAC,OAAO,SAAS,CAAC;IAOnE,MAAM,IAAI,YAAY,CAAC,OAAO,SAAS,CAAC;IAIxC,QAAQ,CAAC,KAAK,EAAE,aAAa;;;;;;;;;;IAI7B,SAAS,CAAC,KAAK,EAAE,aAAa;;;;;;;;;;IAI9B,SAAS,CAAC,KAAK,EAAE,aAAa;;;;;;;;;;IAI9B,IAAI,CAAC,KAAK,EAAE,aAAa;;;;;;;;;;CAG5B;AAED,eAAO,MAAM,GAAG,WAAkB,CAAC"}
|
package/dist/src/SQL.js
CHANGED
|
@@ -5,6 +5,7 @@ const SQLSelect_1 = require("./SQLSelect");
|
|
|
5
5
|
const SQLExpressions_1 = require("./SQLExpressions");
|
|
6
6
|
const SQLJoin_1 = require("./SQLJoin");
|
|
7
7
|
const SQLJsonExpressions_1 = require("./SQLJsonExpressions");
|
|
8
|
+
const SQLDelete_1 = require("./SQLDelete");
|
|
8
9
|
class StaticSQL {
|
|
9
10
|
wildcard(namespace) {
|
|
10
11
|
return new SQLExpressions_1.SQLWildcardSelectExpression(namespace);
|
|
@@ -18,6 +19,9 @@ class StaticSQL {
|
|
|
18
19
|
jsonValue(column, path) {
|
|
19
20
|
return new SQLJsonExpressions_1.SQLJsonExtract(column, new SQLExpressions_1.SQLSafeValue(path));
|
|
20
21
|
}
|
|
22
|
+
jsonLength(column, path) {
|
|
23
|
+
return new SQLJsonExpressions_1.SQLJsonLength(column, path ? new SQLExpressions_1.SQLSafeValue(path) : undefined);
|
|
24
|
+
}
|
|
21
25
|
table(namespaceOrTable, table) {
|
|
22
26
|
if (table === undefined) {
|
|
23
27
|
return new SQLExpressions_1.SQLTableExpression(namespaceOrTable);
|
|
@@ -30,6 +34,9 @@ class StaticSQL {
|
|
|
30
34
|
}
|
|
31
35
|
return new SQLSelect_1.SQLSelect(...columns);
|
|
32
36
|
}
|
|
37
|
+
delete() {
|
|
38
|
+
return new SQLDelete_1.SQLDelete();
|
|
39
|
+
}
|
|
33
40
|
leftJoin(table) {
|
|
34
41
|
return new SQLJoin_1.SQLJoin(SQLJoin_1.SQLJoinType.Left, table);
|
|
35
42
|
}
|
package/dist/src/SQL.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SQL.js","sourceRoot":"","sources":["../../src/SQL.ts"],"names":[],"mappings":";;;AACA,2CAAwC;AACxC,qDAA6I;AAC7I,uCAAiD;AACjD,
|
|
1
|
+
{"version":3,"file":"SQL.js","sourceRoot":"","sources":["../../src/SQL.ts"],"names":[],"mappings":";;;AACA,2CAAwC;AACxC,qDAA6I;AAC7I,uCAAiD;AACjD,6DAAqE;AACrE,2CAAwC;AAExC,MAAM,SAAS;IACX,QAAQ,CAAC,SAAkB;QACvB,OAAO,IAAI,4CAA2B,CAAC,SAAS,CAAC,CAAA;IACrD,CAAC;IAID,MAAM,CAAC,iBAAyB,EAAE,MAAe;QAC7C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACvB,OAAO,IAAI,oCAAmB,CAAC,iBAAiB,CAAC,CAAA;QACrD,CAAC;QACD,OAAO,IAAI,oCAAmB,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAA;IAC7D,CAAC;IAED,SAAS,CAAC,MAAqB,EAAE,IAAY;QACzC,OAAO,IAAI,mCAAc,CAAC,MAAM,EAAE,IAAI,6BAAY,CAAC,IAAI,CAAC,CAAC,CAAA;IAC7D,CAAC;IAED,UAAU,CAAC,MAAqB,EAAE,IAAa;QAC3C,OAAO,IAAI,kCAAa,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,6BAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;IAC/E,CAAC;IAID,KAAK,CAAC,gBAAwB,EAAE,KAAc;QAC1C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACtB,OAAO,IAAI,mCAAkB,CAAC,gBAAgB,CAAC,CAAA;QACnD,CAAC;QACD,OAAO,IAAI,mCAAkB,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAA;IAC1D,CAAC;IAED,MAAM,CAAC,GAAG,OAAwB;QAC9B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,IAAI,qBAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;QACzC,CAAC;QACD,OAAO,IAAI,qBAAS,CAAC,GAAG,OAAO,CAAC,CAAA;IACpC,CAAC;IAED,MAAM;QACF,OAAO,IAAI,qBAAS,EAAE,CAAA;IAC1B,CAAC;IAED,QAAQ,CAAC,KAAoB;QACzB,OAAO,IAAI,iBAAO,CAAC,qBAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;IAC/C,CAAC;IAED,SAAS,CAAC,KAAoB;QAC1B,OAAO,IAAI,iBAAO,CAAC,qBAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;IAChD,CAAC;IAED,SAAS,CAAC,KAAoB;QAC1B,OAAO,IAAI,iBAAO,CAAC,qBAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;IAChD,CAAC;IAED,IAAI,CAAC,KAAoB;QACrB,OAAO,IAAI,iBAAO,CAAC,qBAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;IAChD,CAAC;CACJ;AAEY,QAAA,GAAG,GAAG,IAAI,SAAS,EAAE,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { SQLExpression, SQLExpressionOptions, SQLQuery } from "./SQLExpression";
|
|
2
|
+
import { SQLJoin } from './SQLJoin';
|
|
3
|
+
import { SQLWhere } from "./SQLWhere";
|
|
4
|
+
declare class DeleteBase implements SQLExpression {
|
|
5
|
+
_from: SQLExpression;
|
|
6
|
+
_where: SQLWhere | null;
|
|
7
|
+
_joins: (InstanceType<typeof SQLJoin>)[];
|
|
8
|
+
constructor();
|
|
9
|
+
clone(): this;
|
|
10
|
+
from(table: SQLExpression): this;
|
|
11
|
+
join(join: InstanceType<typeof SQLJoin>): this;
|
|
12
|
+
getSQL(options?: SQLExpressionOptions): SQLQuery;
|
|
13
|
+
delete(): Promise<{
|
|
14
|
+
affectedRows: number;
|
|
15
|
+
}>;
|
|
16
|
+
then(onFulfilled: (value: {
|
|
17
|
+
affectedRows: number;
|
|
18
|
+
}) => any, onRejected: (reason: any) => any): Promise<any>;
|
|
19
|
+
}
|
|
20
|
+
export declare const SQLDelete: {
|
|
21
|
+
new (...args: any[]): {
|
|
22
|
+
parseWhere(...[whereOrColumn, signOrValue, value]: import("./SQLWhere").ParseWhereArguments): SQLWhere;
|
|
23
|
+
where<T>(this: T, ...args: import("./SQLWhere").ParseWhereArguments): T;
|
|
24
|
+
andWhere(...args: import("./SQLWhere").ParseWhereArguments): any;
|
|
25
|
+
orWhere(...args: import("./SQLWhere").ParseWhereArguments): any;
|
|
26
|
+
whereNot(...args: import("./SQLWhere").ParseWhereArguments): any;
|
|
27
|
+
andWhereNot(...args: import("./SQLWhere").ParseWhereArguments): any;
|
|
28
|
+
orWhereNot(...args: import("./SQLWhere").ParseWhereArguments): any;
|
|
29
|
+
_where: SQLWhere | null;
|
|
30
|
+
};
|
|
31
|
+
} & typeof DeleteBase;
|
|
32
|
+
export {};
|
|
33
|
+
//# sourceMappingURL=SQLDelete.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SQLDelete.d.ts","sourceRoot":"","sources":["../../src/SQLDelete.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,QAAQ,EAAmC,MAAM,iBAAiB,CAAC;AACjH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAmB,MAAM,YAAY,CAAC;AAEvD,cAAM,UAAW,YAAW,aAAa;IACrC,KAAK,EAAE,aAAa,CAAC;IACrB,MAAM,EAAE,QAAQ,GAAC,IAAI,CAAQ;IAC7B,MAAM,EAAE,CAAC,YAAY,CAAC,OAAO,OAAO,CAAC,CAAC,EAAE,CAAM;;IAK9C,KAAK,IAAI,IAAI;IAMb,IAAI,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAKhC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,OAAO,OAAO,CAAC,GAAG,IAAI;IAK9C,MAAM,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,QAAQ;IAwB1C,MAAM,IAAI,OAAO,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAC,CAAC;IAQzC,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE;QAAC,YAAY,EAAE,MAAM,CAAA;KAAC,KAAK,GAAG,EAAE,UAAU,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;CAGlH;AAED,eAAO,MAAM,SAAS;;;;;;;;;;;qBAA8B,CAAA"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SQLDelete = void 0;
|
|
4
|
+
const simple_database_1 = require("@simonbackx/simple-database");
|
|
5
|
+
const SQLExpression_1 = require("./SQLExpression");
|
|
6
|
+
const SQLWhere_1 = require("./SQLWhere");
|
|
7
|
+
class DeleteBase {
|
|
8
|
+
constructor() {
|
|
9
|
+
this._where = null;
|
|
10
|
+
this._joins = [];
|
|
11
|
+
}
|
|
12
|
+
clone() {
|
|
13
|
+
const c = new exports.SQLDelete();
|
|
14
|
+
Object.assign(c, this);
|
|
15
|
+
return c;
|
|
16
|
+
}
|
|
17
|
+
from(table) {
|
|
18
|
+
this._from = table;
|
|
19
|
+
return this;
|
|
20
|
+
}
|
|
21
|
+
join(join) {
|
|
22
|
+
this._joins.push(join);
|
|
23
|
+
return this;
|
|
24
|
+
}
|
|
25
|
+
getSQL(options) {
|
|
26
|
+
var _a, _b;
|
|
27
|
+
const query = [
|
|
28
|
+
'DELETE'
|
|
29
|
+
];
|
|
30
|
+
options = options !== null && options !== void 0 ? options : {};
|
|
31
|
+
options.defaultNamespace = (_b = (_a = this._from.namespace) !== null && _a !== void 0 ? _a : this._from.table) !== null && _b !== void 0 ? _b : undefined;
|
|
32
|
+
query.push('FROM');
|
|
33
|
+
query.push(this._from.getSQL(options));
|
|
34
|
+
query.push(...this._joins.map(j => j.getSQL(options)));
|
|
35
|
+
if (this._where) {
|
|
36
|
+
query.push('WHERE');
|
|
37
|
+
query.push(this._where.getSQL(options));
|
|
38
|
+
}
|
|
39
|
+
return (0, SQLExpression_1.joinSQLQuery)(query, ' ');
|
|
40
|
+
}
|
|
41
|
+
async delete() {
|
|
42
|
+
const { query, params } = (0, SQLExpression_1.normalizeSQLQuery)(this.getSQL());
|
|
43
|
+
console.log(query, params);
|
|
44
|
+
const [rows] = await simple_database_1.Database.delete(query, params);
|
|
45
|
+
return rows;
|
|
46
|
+
}
|
|
47
|
+
async then(onFulfilled, onRejected) {
|
|
48
|
+
return this.delete().then(onFulfilled, onRejected);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
exports.SQLDelete = (0, SQLWhere_1.addWhereHelpers)(DeleteBase);
|
|
52
|
+
//# sourceMappingURL=SQLDelete.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SQLDelete.js","sourceRoot":"","sources":["../../src/SQLDelete.ts"],"names":[],"mappings":";;;AAAA,iEAAuD;AACvD,mDAAiH;AAEjH,yCAAuD;AAEvD,MAAM,UAAU;IAKZ;QAHA,WAAM,GAAkB,IAAI,CAAC;QAC7B,WAAM,GAAqC,EAAE,CAAC;IAG9C,CAAC;IAED,KAAK;QACD,MAAM,CAAC,GAAG,IAAI,iBAAS,EAAE,CAAA;QACzB,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACvB,OAAO,CAAQ,CAAC;IACpB,CAAC;IAED,IAAI,CAAC,KAAoB;QACrB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IAAI,CAAC,IAAkC;QACnC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,OAA8B;;QACjC,MAAM,KAAK,GAAe;YACtB,QAAQ;SACX,CAAA;QAED,OAAO,GAAG,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAA;QACvB,OAAO,CAAC,gBAAgB,GAAG,MAAA,MAAC,IAAI,CAAC,KAAa,CAAC,SAAS,mCAAK,IAAI,CAAC,KAAa,CAAC,KAAK,mCAAI,SAAS,CAAC;QAEnG,KAAK,CAAC,IAAI,CACN,MAAM,CACT,CAAA;QAED,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QAEvC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;QAEtD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YACnB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAA;QAC3C,CAAC;QAED,OAAO,IAAA,4BAAY,EAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,MAAM;QACR,MAAM,EAAC,KAAK,EAAE,MAAM,EAAC,GAAG,IAAA,iCAAiB,EAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;QAExD,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC3B,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,0BAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,WAAmD,EAAE,UAAgC;QAC5F,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IACvD,CAAC;CACJ;AAEY,QAAA,SAAS,GAAG,IAAA,0BAAe,EAAC,UAAU,CAAC,CAAA"}
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
import { SQLExpression, SQLExpressionOptions, SQLQuery } from "./SQLExpression";
|
|
2
|
+
export declare class SQLJsonUnquote implements SQLExpression {
|
|
3
|
+
target: SQLExpression;
|
|
4
|
+
constructor(target: SQLExpression);
|
|
5
|
+
getSQL(options?: SQLExpressionOptions): SQLQuery;
|
|
6
|
+
}
|
|
2
7
|
/**
|
|
3
8
|
* Same as target->path, JSON_EXTRACT(target, path)
|
|
4
9
|
*/
|
|
@@ -8,6 +13,12 @@ export declare class SQLJsonExtract implements SQLExpression {
|
|
|
8
13
|
constructor(target: SQLExpression, path: SQLExpression);
|
|
9
14
|
getSQL(options?: SQLExpressionOptions): SQLQuery;
|
|
10
15
|
}
|
|
16
|
+
export declare class SQLJsonLength implements SQLExpression {
|
|
17
|
+
target: SQLExpression;
|
|
18
|
+
path?: SQLExpression;
|
|
19
|
+
constructor(target: SQLExpression, path?: SQLExpression);
|
|
20
|
+
getSQL(options?: SQLExpressionOptions): SQLQuery;
|
|
21
|
+
}
|
|
11
22
|
/**
|
|
12
23
|
* JSON_SEARCH(json_doc, one_or_all, search_str[, escape_char[, path] ...])
|
|
13
24
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SQLJsonExpressions.d.ts","sourceRoot":"","sources":["../../src/SQLJsonExpressions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,QAAQ,EAAgB,MAAM,iBAAiB,CAAC;AAG9F;;GAEG;AACH,qBAAa,cAAe,YAAW,aAAa;IAChD,MAAM,EAAE,aAAa,CAAA;IACrB,IAAI,EAAE,aAAa,CAAA;gBAEP,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa;IAKtD,MAAM,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,QAAQ;CASnD;AAED;;GAEG;AACH,qBAAa,aAAc,YAAW,aAAa;IAC/C,MAAM,EAAE,aAAa,CAAA;IACrB,QAAQ,EAAE,KAAK,GAAC,KAAK,CAAA;IACrB,SAAS,EAAE,aAAa,CAAC;IACzB,IAAI,EAAE,aAAa,GAAC,IAAI,CAAC;gBAEb,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,GAAC,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,IAAI,GAAE,aAAa,GAAC,IAAW;IAOnH,MAAM,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,QAAQ;CAenD;AAED;;GAEG;AACH,qBAAa,eAAgB,YAAW,aAAa;IACjD,MAAM,EAAE,aAAa,CAAA;IACrB,SAAS,EAAE,aAAa,CAAC;IACzB,IAAI,EAAE,aAAa,GAAC,IAAI,CAAC;gBAEb,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,EAAE,IAAI,GAAE,aAAa,GAAC,IAAW;IAM5F,MAAM,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,QAAQ;CAanD;AAGD;;GAEG;AACH,qBAAa,eAAgB,YAAW,aAAa;IACjD,QAAQ,EAAE,aAAa,CAAA;IACvB,QAAQ,EAAE,aAAa,CAAC;gBAEZ,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,aAAa;IAK5D,MAAM,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,QAAQ;CASnD"}
|
|
1
|
+
{"version":3,"file":"SQLJsonExpressions.d.ts","sourceRoot":"","sources":["../../src/SQLJsonExpressions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,QAAQ,EAAgB,MAAM,iBAAiB,CAAC;AAG9F,qBAAa,cAAe,YAAW,aAAa;IAChD,MAAM,EAAE,aAAa,CAAA;gBAET,MAAM,EAAE,aAAa;IAIjC,MAAM,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,QAAQ;CAOnD;AAED;;GAEG;AACH,qBAAa,cAAe,YAAW,aAAa;IAChD,MAAM,EAAE,aAAa,CAAA;IACrB,IAAI,EAAE,aAAa,CAAA;gBAEP,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa;IAKtD,MAAM,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,QAAQ;CASnD;AAED,qBAAa,aAAc,YAAW,aAAa;IAC/C,MAAM,EAAE,aAAa,CAAA;IACrB,IAAI,CAAC,EAAE,aAAa,CAAA;gBAER,MAAM,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,aAAa;IAKvD,MAAM,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,QAAQ;CAWnD;AACD;;GAEG;AACH,qBAAa,aAAc,YAAW,aAAa;IAC/C,MAAM,EAAE,aAAa,CAAA;IACrB,QAAQ,EAAE,KAAK,GAAC,KAAK,CAAA;IACrB,SAAS,EAAE,aAAa,CAAC;IACzB,IAAI,EAAE,aAAa,GAAC,IAAI,CAAC;gBAEb,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,GAAC,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,IAAI,GAAE,aAAa,GAAC,IAAW;IAOnH,MAAM,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,QAAQ;CAenD;AAED;;GAEG;AACH,qBAAa,eAAgB,YAAW,aAAa;IACjD,MAAM,EAAE,aAAa,CAAA;IACrB,SAAS,EAAE,aAAa,CAAC;IACzB,IAAI,EAAE,aAAa,GAAC,IAAI,CAAC;gBAEb,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,EAAE,IAAI,GAAE,aAAa,GAAC,IAAW;IAM5F,MAAM,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,QAAQ;CAanD;AAGD;;GAEG;AACH,qBAAa,eAAgB,YAAW,aAAa;IACjD,QAAQ,EAAE,aAAa,CAAA;IACvB,QAAQ,EAAE,aAAa,CAAC;gBAEZ,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,aAAa;IAK5D,MAAM,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,QAAQ;CASnD"}
|
|
@@ -1,8 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SQLJsonOverlaps = exports.SQLJsonContains = exports.SQLJsonSearch = exports.SQLJsonExtract = void 0;
|
|
3
|
+
exports.SQLJsonOverlaps = exports.SQLJsonContains = exports.SQLJsonSearch = exports.SQLJsonLength = exports.SQLJsonExtract = exports.SQLJsonUnquote = void 0;
|
|
4
4
|
const SQLExpression_1 = require("./SQLExpression");
|
|
5
5
|
const SQLExpressions_1 = require("./SQLExpressions");
|
|
6
|
+
class SQLJsonUnquote {
|
|
7
|
+
constructor(target) {
|
|
8
|
+
this.target = target;
|
|
9
|
+
}
|
|
10
|
+
getSQL(options) {
|
|
11
|
+
return (0, SQLExpression_1.joinSQLQuery)([
|
|
12
|
+
'JSON_UNQUOTE(',
|
|
13
|
+
this.target.getSQL(options),
|
|
14
|
+
')'
|
|
15
|
+
]);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
exports.SQLJsonUnquote = SQLJsonUnquote;
|
|
6
19
|
/**
|
|
7
20
|
* Same as target->path, JSON_EXTRACT(target, path)
|
|
8
21
|
*/
|
|
@@ -22,6 +35,24 @@ class SQLJsonExtract {
|
|
|
22
35
|
}
|
|
23
36
|
}
|
|
24
37
|
exports.SQLJsonExtract = SQLJsonExtract;
|
|
38
|
+
class SQLJsonLength {
|
|
39
|
+
constructor(target, path) {
|
|
40
|
+
this.target = target;
|
|
41
|
+
this.path = path;
|
|
42
|
+
}
|
|
43
|
+
getSQL(options) {
|
|
44
|
+
return (0, SQLExpression_1.joinSQLQuery)([
|
|
45
|
+
'JSON_LENGTH(',
|
|
46
|
+
this.target.getSQL(options),
|
|
47
|
+
...(this.path ? [
|
|
48
|
+
',',
|
|
49
|
+
this.path.getSQL(options),
|
|
50
|
+
] : []),
|
|
51
|
+
')'
|
|
52
|
+
]);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
exports.SQLJsonLength = SQLJsonLength;
|
|
25
56
|
/**
|
|
26
57
|
* JSON_SEARCH(json_doc, one_or_all, search_str[, escape_char[, path] ...])
|
|
27
58
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SQLJsonExpressions.js","sourceRoot":"","sources":["../../src/SQLJsonExpressions.ts"],"names":[],"mappings":";;;AAAA,mDAA8F;AAC9F,qDAAgD;AAEhD;;GAEG;AACH,MAAa,cAAc;IAIvB,YAAY,MAAqB,EAAE,IAAmB;QAClD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,OAA8B;QACjC,OAAO,IAAA,4BAAY,EAAC;YAChB,eAAe;YACX,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;YAC3B,GAAG;YACH,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YAC7B,GAAG;SACN,CAAC,CAAA;IACN,CAAC;CACJ;AAlBD,wCAkBC;AAED;;GAEG;AACH,MAAa,aAAa;IAMtB,YAAY,MAAqB,EAAE,QAAqB,EAAE,SAAwB,EAAE,OAA2B,IAAI;QAC/G,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,OAA8B;QACjC,OAAO,IAAA,4BAAY,EAAC;YAChB,cAAc;YACV,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;YAC3B,GAAG;YACH,IAAI,6BAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;YAC/C,GAAG;YACH,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC;YAC9B,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;gBACZ,GAAG;gBACH,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;aAC5B,CAAC,CAAC,CAAC,EAAE,CAAC;YACX,GAAG;SACN,CAAC,CAAA;IACN,CAAC;CACJ;AA5BD,sCA4BC;AAED;;GAEG;AACH,MAAa,eAAe;IAKxB,YAAY,MAAqB,EAAE,SAAwB,EAAE,OAA2B,IAAI;QACxF,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,OAA8B;QACjC,OAAO,IAAA,4BAAY,EAAC;YAChB,gBAAgB;YACZ,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;YAC3B,GAAG;YACH,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC;YAC9B,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;gBACZ,GAAG;gBACH,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;aAC5B,CAAC,CAAC,CAAC,EAAE,CAAC;YACX,GAAG;SACN,CAAC,CAAA;IACN,CAAC;CACJ;AAxBD,0CAwBC;AAGD;;GAEG;AACH,MAAa,eAAe;IAIxB,YAAY,QAAuB,EAAE,QAAuB;QACxD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;IAED,MAAM,CAAC,OAA8B;QACjC,OAAO,IAAA,4BAAY,EAAC;YAChB,gBAAgB;YACZ,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;YAC7B,GAAG;YACH,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;YACjC,GAAG;SACN,CAAC,CAAA;IACN,CAAC;CACJ;AAlBD,0CAkBC"}
|
|
1
|
+
{"version":3,"file":"SQLJsonExpressions.js","sourceRoot":"","sources":["../../src/SQLJsonExpressions.ts"],"names":[],"mappings":"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"}
|
package/dist/src/SQLSelect.d.ts
CHANGED
|
@@ -10,17 +10,20 @@ declare class SelectBase implements SQLExpression {
|
|
|
10
10
|
_offset: number | null;
|
|
11
11
|
_where: SQLWhere | null;
|
|
12
12
|
_orderBy: SQLOrderBy | null;
|
|
13
|
+
_groupBy: SQLExpression[];
|
|
13
14
|
_joins: (InstanceType<typeof SQLJoin>)[];
|
|
14
15
|
constructor(...columns: SQLExpression[]);
|
|
15
16
|
clone(): this;
|
|
16
17
|
from(table: SQLExpression): this;
|
|
17
18
|
join(join: InstanceType<typeof SQLJoin>): this;
|
|
19
|
+
groupBy(...columns: SQLExpression[]): this;
|
|
18
20
|
getSQL(options?: SQLExpressionOptions): SQLQuery;
|
|
19
21
|
limit(limit: number | null, offset?: number | null): this;
|
|
20
22
|
fetch(): Promise<SQLResultNamespacedRow[]>;
|
|
21
23
|
first(required: false): Promise<SQLResultNamespacedRow | null>;
|
|
22
24
|
first(required: true): Promise<SQLResultNamespacedRow>;
|
|
23
25
|
count(): Promise<number>;
|
|
26
|
+
sum(expression: SQLExpression): Promise<number>;
|
|
24
27
|
}
|
|
25
28
|
export declare const SQLSelect: {
|
|
26
29
|
new (...args: any[]): {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SQLSelect.d.ts","sourceRoot":"","sources":["../../src/SQLSelect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,QAAQ,EAAmC,MAAM,iBAAiB,CAAC;AACjH,OAAO,EAAE,UAAU,EAAqB,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAmB,MAAM,YAAY,CAAC;AACvD,OAAO,EAAW,sBAAsB,EAAC,MAAM,6BAA6B,CAAA;AAC5E,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAA;AAGjC,cAAM,UAAW,YAAW,aAAa;IACrC,QAAQ,EAAE,aAAa,EAAE,CAAA;IACzB,KAAK,EAAE,aAAa,CAAC;IAErB,MAAM,EAAE,MAAM,GAAC,IAAI,CAAQ;IAC3B,OAAO,EAAE,MAAM,GAAC,IAAI,CAAQ;IAE5B,MAAM,EAAE,QAAQ,GAAC,IAAI,CAAQ;IAC7B,QAAQ,EAAE,UAAU,GAAC,IAAI,CAAQ;IACjC,MAAM,EAAE,CAAC,YAAY,CAAC,OAAO,OAAO,CAAC,CAAC,EAAE,CAAM;gBAElC,GAAG,OAAO,EAAE,aAAa,EAAE;IAIvC,KAAK,IAAI,IAAI;IAMb,IAAI,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAKhC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,OAAO,OAAO,CAAC,GAAG,IAAI;IAK9C,MAAM,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,QAAQ;
|
|
1
|
+
{"version":3,"file":"SQLSelect.d.ts","sourceRoot":"","sources":["../../src/SQLSelect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,QAAQ,EAAmC,MAAM,iBAAiB,CAAC;AACjH,OAAO,EAAE,UAAU,EAAqB,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAmB,MAAM,YAAY,CAAC;AACvD,OAAO,EAAW,sBAAsB,EAAC,MAAM,6BAA6B,CAAA;AAC5E,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAA;AAGjC,cAAM,UAAW,YAAW,aAAa;IACrC,QAAQ,EAAE,aAAa,EAAE,CAAA;IACzB,KAAK,EAAE,aAAa,CAAC;IAErB,MAAM,EAAE,MAAM,GAAC,IAAI,CAAQ;IAC3B,OAAO,EAAE,MAAM,GAAC,IAAI,CAAQ;IAE5B,MAAM,EAAE,QAAQ,GAAC,IAAI,CAAQ;IAC7B,QAAQ,EAAE,UAAU,GAAC,IAAI,CAAQ;IACjC,QAAQ,EAAE,aAAa,EAAE,CAAM;IAC/B,MAAM,EAAE,CAAC,YAAY,CAAC,OAAO,OAAO,CAAC,CAAC,EAAE,CAAM;gBAElC,GAAG,OAAO,EAAE,aAAa,EAAE;IAIvC,KAAK,IAAI,IAAI;IAMb,IAAI,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAKhC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,OAAO,OAAO,CAAC,GAAG,IAAI;IAK9C,OAAO,CAAC,GAAG,OAAO,EAAE,aAAa,EAAE,GAAG,IAAI;IAK1C,MAAM,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,QAAQ;IAkDhD,KAAK,CAAC,KAAK,EAAE,MAAM,GAAC,IAAI,EAAE,MAAM,GAAE,MAAM,GAAC,IAAW,GAAG,IAAI;IAMrD,KAAK,IAAI,OAAO,CAAC,sBAAsB,EAAE,CAAC;IA0BhD,KAAK,CAAC,QAAQ,EAAE,KAAK,GAAG,OAAO,CAAC,sBAAsB,GAAC,IAAI,CAAC;IAC5D,KAAK,CAAC,QAAQ,EAAE,IAAI,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAYhD,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IA+BxB,GAAG,CAAC,UAAU,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;CA8BxD;AAED,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;qBAErB,CAAA"}
|
package/dist/src/SQLSelect.js
CHANGED
|
@@ -12,6 +12,7 @@ class SelectBase {
|
|
|
12
12
|
this._offset = null;
|
|
13
13
|
this._where = null;
|
|
14
14
|
this._orderBy = null;
|
|
15
|
+
this._groupBy = [];
|
|
15
16
|
this._joins = [];
|
|
16
17
|
this._columns = columns;
|
|
17
18
|
}
|
|
@@ -28,6 +29,10 @@ class SelectBase {
|
|
|
28
29
|
this._joins.push(join);
|
|
29
30
|
return this;
|
|
30
31
|
}
|
|
32
|
+
groupBy(...columns) {
|
|
33
|
+
this._groupBy.push(...columns);
|
|
34
|
+
return this;
|
|
35
|
+
}
|
|
31
36
|
getSQL(options) {
|
|
32
37
|
var _a, _b;
|
|
33
38
|
const query = [
|
|
@@ -44,6 +49,10 @@ class SelectBase {
|
|
|
44
49
|
query.push('WHERE');
|
|
45
50
|
query.push(this._where.getSQL(options));
|
|
46
51
|
}
|
|
52
|
+
if (this._groupBy.length > 0) {
|
|
53
|
+
query.push('GROUP BY');
|
|
54
|
+
query.push((0, SQLExpression_1.joinSQLQuery)(this._groupBy.map(c => c.getSQL(options)), ', '));
|
|
55
|
+
}
|
|
47
56
|
if (this._orderBy) {
|
|
48
57
|
query.push(this._orderBy.getSQL(options));
|
|
49
58
|
}
|
|
@@ -119,6 +128,31 @@ class SelectBase {
|
|
|
119
128
|
console.warn('Invalid count SQL response', rows);
|
|
120
129
|
return 0;
|
|
121
130
|
}
|
|
131
|
+
async sum(expression) {
|
|
132
|
+
this._columns = [
|
|
133
|
+
new SQLExpressions_1.SQLSelectAs(new SQLExpressions_1.SQLSum(expression), new SQLExpressions_1.SQLAlias('c'))
|
|
134
|
+
];
|
|
135
|
+
this._offset = null;
|
|
136
|
+
this._limit = null;
|
|
137
|
+
this._orderBy = null;
|
|
138
|
+
const { query, params } = (0, SQLExpression_1.normalizeSQLQuery)(this.getSQL());
|
|
139
|
+
console.log(query, params);
|
|
140
|
+
const [rows] = await simple_database_1.Database.select(query, params, { nestTables: true });
|
|
141
|
+
if (rows.length === 1) {
|
|
142
|
+
const row = rows[0];
|
|
143
|
+
if ('' in row) {
|
|
144
|
+
const namespaced = row[''];
|
|
145
|
+
if ('c' in namespaced) {
|
|
146
|
+
const value = namespaced['c'];
|
|
147
|
+
if (typeof value === 'number' && Number.isInteger(value)) {
|
|
148
|
+
return value;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
console.warn('Invalid sum SQL response', rows);
|
|
154
|
+
return 0;
|
|
155
|
+
}
|
|
122
156
|
}
|
|
123
157
|
exports.SQLSelect = (0, SQLOrderBy_1.addOrderByHelpers)((0, SQLWhere_1.addWhereHelpers)(SelectBase));
|
|
124
158
|
//# sourceMappingURL=SQLSelect.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SQLSelect.js","sourceRoot":"","sources":["../../src/SQLSelect.ts"],"names":[],"mappings":";;;AAAA,mDAAiH;AACjH,6CAA6D;AAC7D,yCAAuD;AACvD,iEAA4E;AAE5E,
|
|
1
|
+
{"version":3,"file":"SQLSelect.js","sourceRoot":"","sources":["../../src/SQLSelect.ts"],"names":[],"mappings":"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"}
|
package/dist/src/SQLWhere.d.ts
CHANGED
|
@@ -35,7 +35,9 @@ export declare abstract class SQLWhere implements SQLExpression {
|
|
|
35
35
|
export declare enum SQLWhereSign {
|
|
36
36
|
Equal = "=",
|
|
37
37
|
Greater = ">",
|
|
38
|
+
GreaterEqual = ">=",
|
|
38
39
|
Less = "<",
|
|
40
|
+
LessEqual = "<=",
|
|
39
41
|
NotEqual = "!="
|
|
40
42
|
}
|
|
41
43
|
export declare class SQLWhereEqual extends 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,EAAY,oBAAoB,EAAqC,MAAM,kBAAkB,CAAC;AAErG,KAAK,YAAY,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AACtD,KAAK,SAAS,GAAG,YAAY,CAAC;IAAE,MAAM,EAAE,QAAQ,GAAC,IAAI,CAAA;CAAE,CAAC,CAAC;AAEzD,MAAM,MAAM,mBAAmB,GAAG;IAC9B,KAAK,EAAE,QAAQ;CAClB,GAAG;IACA,aAAa,EAAE,aAAa;IAC5B,IAAI,EAAE,YAAY;IAClB,KAAK,EAAE,oBAAoB;CAC9B,GAAG;IACA,aAAa,EAAE,aAAa;IAC5B,KAAK,EAAE,oBAAoB;CAC9B,CAAA;AAED,wBAAgB,eAAe,CAAC,KAAK,SAAS,SAAS,EAAE,IAAI,EAAE,KAAK;;2DAET,mBAAmB,GAAG,QAAQ;uBAmBlE,CAAC,WAAW,mBAAmB,GAAG,CAAC;0BAUhC,mBAAmB;yBAIpB,mBAAmB;0BAUlB,mBAAmB;6BAUhB,mBAAmB;4BAIpB,mBAAmB;;;UAU9C;AAED,8BAAsB,QAAS,YAAW,aAAa;IACnD,GAAG,CAAC,GAAG,KAAK,EAAE,QAAQ,EAAE,GAAG,QAAQ;IAInC,EAAE,CAAC,GAAG,KAAK,EAAE,QAAQ,EAAE,GAAG,QAAQ;IAIlC,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,QAAQ;CAC5D;AAED,oBAAY,YAAY;IACpB,KAAK,MAAM;IACX,OAAO,MAAM;IACb,IAAI,MAAM;IACV,QAAQ,OAAO;CAClB;AAED,qBAAa,aAAc,SAAQ,QAAQ;IACvC,MAAM,EAAE,aAAa,CAAC;IACtB,IAAI,eAAqB;IACzB,KAAK,EAAE,aAAa,CAAC;gBAER,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa;gBAC/D,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa;IAaxD,KAAK,IAAI,IAAI;IAOb,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,QAAQ,IAAI,IAAI;IAIhB,MAAM,IAAI,IAAI;
|
|
1
|
+
{"version":3,"file":"SQLWhere.d.ts","sourceRoot":"","sources":["../../src/SQLWhere.ts"],"names":[],"mappings":"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"}
|
package/dist/src/SQLWhere.js
CHANGED
|
@@ -75,7 +75,9 @@ var SQLWhereSign;
|
|
|
75
75
|
(function (SQLWhereSign) {
|
|
76
76
|
SQLWhereSign["Equal"] = "=";
|
|
77
77
|
SQLWhereSign["Greater"] = ">";
|
|
78
|
+
SQLWhereSign["GreaterEqual"] = ">=";
|
|
78
79
|
SQLWhereSign["Less"] = "<";
|
|
80
|
+
SQLWhereSign["LessEqual"] = "<=";
|
|
79
81
|
SQLWhereSign["NotEqual"] = "!=";
|
|
80
82
|
})(SQLWhereSign || (exports.SQLWhereSign = SQLWhereSign = {}));
|
|
81
83
|
class SQLWhereEqual extends SQLWhere {
|
|
@@ -112,9 +114,15 @@ class SQLWhereEqual extends SQLWhere {
|
|
|
112
114
|
this.sign = SQLWhereSign.Equal;
|
|
113
115
|
break;
|
|
114
116
|
case SQLWhereSign.Greater:
|
|
115
|
-
this.sign = SQLWhereSign.
|
|
117
|
+
this.sign = SQLWhereSign.LessEqual;
|
|
116
118
|
break;
|
|
117
119
|
case SQLWhereSign.Less:
|
|
120
|
+
this.sign = SQLWhereSign.GreaterEqual;
|
|
121
|
+
break;
|
|
122
|
+
case SQLWhereSign.GreaterEqual:
|
|
123
|
+
this.sign = SQLWhereSign.Less;
|
|
124
|
+
break;
|
|
125
|
+
case SQLWhereSign.LessEqual:
|
|
118
126
|
this.sign = SQLWhereSign.Greater;
|
|
119
127
|
break;
|
|
120
128
|
}
|
package/dist/src/SQLWhere.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SQLWhere.js","sourceRoot":"","sources":["../../src/SQLWhere.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"SQLWhere.js","sourceRoot":"","sources":["../../src/SQLWhere.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SQLFilter.d.ts","sourceRoot":"","sources":["../../../src/filters/SQLFilter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAA2B,MAAM,uBAAuB,CAAC;AAEjF,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAY,mBAAmB,EAAyB,cAAc,EAAoD,MAAM,mBAAmB,CAAC;AAE3J,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,wBAAgB,iCAAiC,CAAC,aAAa,EAAE,aAAa,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC,EAAE,cAAc,GAAC,IAAI,KAAK,cAAc,GAAC,IAAI,EAAE,WAAW,UAAQ,EAAE,YAAY,UAAQ,GAAG,iBAAiB,
|
|
1
|
+
{"version":3,"file":"SQLFilter.d.ts","sourceRoot":"","sources":["../../../src/filters/SQLFilter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAA2B,MAAM,uBAAuB,CAAC;AAEjF,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAY,mBAAmB,EAAyB,cAAc,EAAoD,MAAM,mBAAmB,CAAC;AAE3J,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,wBAAgB,iCAAiC,CAAC,aAAa,EAAE,aAAa,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC,EAAE,cAAc,GAAC,IAAI,KAAK,cAAc,GAAC,IAAI,EAAE,WAAW,UAAQ,EAAE,YAAY,UAAQ,GAAG,iBAAiB,CAoN9M;AAED,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC,EAAE,cAAc,GAAC,IAAI,KAAK,cAAc,GAAC,IAAI,GAAG,iBAAiB,CAGrK;AAED,eAAO,MAAM,sBAAsB,EAAE,oBAIpC,CAAA;AAuCD,eAAO,MAAM,kBAAkB,6BAAuB,CAAA"}
|
|
@@ -95,10 +95,30 @@ function createSQLExpressionFilterCompiler(sqlExpression, normalizeValue, isJSON
|
|
|
95
95
|
return new SQLWhere_1.SQLWhereEqual(new SQLExpressions_1.SQLSafeValue(1), SQLWhere_1.SQLWhereSign.Equal, new SQLExpressions_1.SQLSafeValue(0));
|
|
96
96
|
}
|
|
97
97
|
const v = f.$in.map(a => norm(a));
|
|
98
|
+
const nullIncluded = v.includes(null);
|
|
98
99
|
if (isJSONObject) {
|
|
100
|
+
if (nullIncluded) {
|
|
101
|
+
// PROBLEM: The sql expression can either not exist (= resolve to mysql null), contains null in json (= JSON null), or contain a value.
|
|
102
|
+
// that makes comparing more difficult, to combat this, we still need to use SQLJsonOverlaps with the JSON null value
|
|
103
|
+
return new SQLWhere_1.SQLWhereOr([
|
|
104
|
+
new SQLWhere_1.SQLWhereEqual(sqlExpression, SQLWhere_1.SQLWhereSign.Equal, new SQLExpressions_1.SQLNull()), // checks path not exists (= mysql null)
|
|
105
|
+
new SQLWhere_1.SQLWhereEqual(new SQLJsonExpressions_1.SQLJsonOverlaps(sqlExpression, convertToExpression(JSON.stringify(v)) // contains json null
|
|
106
|
+
), SQLWhere_1.SQLWhereSign.Equal, new SQLExpressions_1.SQLSafeValue(1))
|
|
107
|
+
]);
|
|
108
|
+
}
|
|
99
109
|
// else
|
|
100
110
|
return new SQLWhere_1.SQLWhereEqual(new SQLJsonExpressions_1.SQLJsonOverlaps(sqlExpression, convertToExpression(JSON.stringify(v))), SQLWhere_1.SQLWhereSign.Equal, new SQLExpressions_1.SQLSafeValue(1));
|
|
101
111
|
}
|
|
112
|
+
if (nullIncluded) {
|
|
113
|
+
const remaining = v.filter(v => v !== null);
|
|
114
|
+
if (remaining.length === 0) {
|
|
115
|
+
return new SQLWhere_1.SQLWhereEqual(sqlExpression, SQLWhere_1.SQLWhereSign.Equal, new SQLExpressions_1.SQLNull());
|
|
116
|
+
}
|
|
117
|
+
return new SQLWhere_1.SQLWhereOr([
|
|
118
|
+
new SQLWhere_1.SQLWhereEqual(sqlExpression, SQLWhere_1.SQLWhereSign.Equal, new SQLExpressions_1.SQLNull()),
|
|
119
|
+
new SQLWhere_1.SQLWhereEqual(sqlExpression, SQLWhere_1.SQLWhereSign.Equal, new SQLExpressions_1.SQLArray(remaining))
|
|
120
|
+
]);
|
|
121
|
+
}
|
|
102
122
|
return new SQLWhere_1.SQLWhereEqual(sqlExpression, SQLWhere_1.SQLWhereSign.Equal, new SQLExpressions_1.SQLArray(v));
|
|
103
123
|
}
|
|
104
124
|
if ('$neq' in f) {
|
|
@@ -128,6 +148,28 @@ function createSQLExpressionFilterCompiler(sqlExpression, normalizeValue, isJSON
|
|
|
128
148
|
}
|
|
129
149
|
return new SQLWhere_1.SQLWhereEqual(sqlExpression, SQLWhere_1.SQLWhereSign.Greater, convertToExpression(norm(f.$gt)));
|
|
130
150
|
}
|
|
151
|
+
if ('$gte' in f) {
|
|
152
|
+
guardScalar(f.$gte);
|
|
153
|
+
if (isJSONObject) {
|
|
154
|
+
throw new Error('Greater than is not supported in this place');
|
|
155
|
+
}
|
|
156
|
+
if (f.$gte === null) {
|
|
157
|
+
// >= null is always everything
|
|
158
|
+
return new SQLWhere_1.SQLWhereEqual(new SQLExpressions_1.SQLSafeValue(1), SQLWhere_1.SQLWhereSign.Equal, new SQLExpressions_1.SQLSafeValue(1));
|
|
159
|
+
}
|
|
160
|
+
return new SQLWhere_1.SQLWhereEqual(sqlExpression, SQLWhere_1.SQLWhereSign.GreaterEqual, convertToExpression(norm(f.$gte)));
|
|
161
|
+
}
|
|
162
|
+
if ('$lte' in f) {
|
|
163
|
+
guardScalar(f.$lte);
|
|
164
|
+
if (isJSONObject) {
|
|
165
|
+
throw new Error('Greater than is not supported in this place');
|
|
166
|
+
}
|
|
167
|
+
if (f.$lte === null) {
|
|
168
|
+
// <= null is same as equal to null
|
|
169
|
+
return new SQLWhere_1.SQLWhereEqual(sqlExpression, SQLWhere_1.SQLWhereSign.Equal, convertToExpression(norm(f.$lte)));
|
|
170
|
+
}
|
|
171
|
+
return new SQLWhere_1.SQLWhereEqual(sqlExpression, SQLWhere_1.SQLWhereSign.LessEqual, convertToExpression(norm(f.$lte)));
|
|
172
|
+
}
|
|
131
173
|
if ('$lt' in f) {
|
|
132
174
|
guardScalar(f.$lt);
|
|
133
175
|
if (isJSONObject) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SQLFilter.js","sourceRoot":"","sources":["../../../src/filters/SQLFilter.ts"],"names":[],"mappings":";;;AAAA,6DAAwD;AAExD,gCAA6B;AAE7B,sDAA2J;AAC3J,
|
|
1
|
+
{"version":3,"file":"SQLFilter.js","sourceRoot":"","sources":["../../../src/filters/SQLFilter.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.9.0",
|
|
4
4
|
"main": "./dist/index.js",
|
|
5
5
|
"types": "./dist/index.d.ts",
|
|
6
6
|
"license": "UNLICENCED",
|
|
@@ -13,5 +13,5 @@
|
|
|
13
13
|
"build": "tsc -b",
|
|
14
14
|
"build:full": "rm -rf ./dist && yarn build"
|
|
15
15
|
},
|
|
16
|
-
"gitHead": "
|
|
16
|
+
"gitHead": "d1959fa457e81e41797c4f7fe216095505f50aeb"
|
|
17
17
|
}
|
package/src/SQL.ts
CHANGED
|
@@ -2,7 +2,8 @@ import { SQLExpression } from "./SQLExpression";
|
|
|
2
2
|
import { SQLSelect } from "./SQLSelect";
|
|
3
3
|
import { SQLColumnExpression, SQLSafeValue, SQLTableExpression, SQLWildcardSelectExpression, scalarToSQLExpression } from "./SQLExpressions";
|
|
4
4
|
import { SQLJoin, SQLJoinType } from "./SQLJoin";
|
|
5
|
-
import { SQLJsonExtract } from "./SQLJsonExpressions";
|
|
5
|
+
import { SQLJsonExtract, SQLJsonLength } from "./SQLJsonExpressions";
|
|
6
|
+
import { SQLDelete } from "./SQLDelete";
|
|
6
7
|
|
|
7
8
|
class StaticSQL {
|
|
8
9
|
wildcard(namespace?: string) {
|
|
@@ -22,6 +23,10 @@ class StaticSQL {
|
|
|
22
23
|
return new SQLJsonExtract(column, new SQLSafeValue(path))
|
|
23
24
|
}
|
|
24
25
|
|
|
26
|
+
jsonLength(column: SQLExpression, path?: string): SQLJsonLength {
|
|
27
|
+
return new SQLJsonLength(column, path ? new SQLSafeValue(path) : undefined)
|
|
28
|
+
}
|
|
29
|
+
|
|
25
30
|
table(namespace: string, table: string): SQLTableExpression;
|
|
26
31
|
table(table: string): SQLTableExpression;
|
|
27
32
|
table(namespaceOrTable: string, table?: string): SQLTableExpression {
|
|
@@ -38,6 +43,10 @@ class StaticSQL {
|
|
|
38
43
|
return new SQLSelect(...columns)
|
|
39
44
|
}
|
|
40
45
|
|
|
46
|
+
delete(): InstanceType<typeof SQLDelete> {
|
|
47
|
+
return new SQLDelete()
|
|
48
|
+
}
|
|
49
|
+
|
|
41
50
|
leftJoin(table: SQLExpression) {
|
|
42
51
|
return new SQLJoin(SQLJoinType.Left, table)
|
|
43
52
|
}
|
package/src/SQLDelete.ts
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { Database } from "@simonbackx/simple-database";
|
|
2
|
+
import { SQLExpression, SQLExpressionOptions, SQLQuery, joinSQLQuery, normalizeSQLQuery } from "./SQLExpression";
|
|
3
|
+
import { SQLJoin } from './SQLJoin';
|
|
4
|
+
import { SQLWhere, addWhereHelpers } from "./SQLWhere";
|
|
5
|
+
|
|
6
|
+
class DeleteBase implements SQLExpression {
|
|
7
|
+
_from: SQLExpression;
|
|
8
|
+
_where: SQLWhere|null = null;
|
|
9
|
+
_joins: (InstanceType<typeof SQLJoin>)[] = [];
|
|
10
|
+
|
|
11
|
+
constructor() {
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
clone(): this {
|
|
15
|
+
const c = new SQLDelete()
|
|
16
|
+
Object.assign(c, this);
|
|
17
|
+
return c as any;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
from(table: SQLExpression): this {
|
|
21
|
+
this._from = table;
|
|
22
|
+
return this;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
join(join: InstanceType<typeof SQLJoin>): this {
|
|
26
|
+
this._joins.push(join);
|
|
27
|
+
return this;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
getSQL(options?: SQLExpressionOptions): SQLQuery {
|
|
31
|
+
const query: SQLQuery[] = [
|
|
32
|
+
'DELETE'
|
|
33
|
+
]
|
|
34
|
+
|
|
35
|
+
options = options ?? {}
|
|
36
|
+
options.defaultNamespace = (this._from as any).namespace ?? (this._from as any).table ?? undefined;
|
|
37
|
+
|
|
38
|
+
query.push(
|
|
39
|
+
'FROM'
|
|
40
|
+
)
|
|
41
|
+
|
|
42
|
+
query.push(this._from.getSQL(options));
|
|
43
|
+
|
|
44
|
+
query.push(...this._joins.map(j => j.getSQL(options)))
|
|
45
|
+
|
|
46
|
+
if (this._where) {
|
|
47
|
+
query.push('WHERE')
|
|
48
|
+
query.push(this._where.getSQL(options))
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
return joinSQLQuery(query, ' ');
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
async delete(): Promise<{affectedRows: number}> {
|
|
55
|
+
const {query, params} = normalizeSQLQuery(this.getSQL())
|
|
56
|
+
|
|
57
|
+
console.log(query, params);
|
|
58
|
+
const [rows] = await Database.delete(query, params);
|
|
59
|
+
return rows;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
async then(onFulfilled: (value: {affectedRows: number}) => any, onRejected: (reason: any) => any): Promise<any> {
|
|
63
|
+
return this.delete().then(onFulfilled, onRejected);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export const SQLDelete = addWhereHelpers(DeleteBase)
|
|
@@ -1,6 +1,22 @@
|
|
|
1
1
|
import { SQLExpression, SQLExpressionOptions, SQLQuery, joinSQLQuery } from "./SQLExpression";
|
|
2
2
|
import { SQLSafeValue } from "./SQLExpressions";
|
|
3
3
|
|
|
4
|
+
export class SQLJsonUnquote implements SQLExpression {
|
|
5
|
+
target: SQLExpression
|
|
6
|
+
|
|
7
|
+
constructor(target: SQLExpression) {
|
|
8
|
+
this.target = target;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
getSQL(options?: SQLExpressionOptions): SQLQuery {
|
|
12
|
+
return joinSQLQuery([
|
|
13
|
+
'JSON_UNQUOTE(',
|
|
14
|
+
this.target.getSQL(options),
|
|
15
|
+
')'
|
|
16
|
+
])
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
4
20
|
/**
|
|
5
21
|
* Same as target->path, JSON_EXTRACT(target, path)
|
|
6
22
|
*/
|
|
@@ -24,6 +40,27 @@ export class SQLJsonExtract implements SQLExpression {
|
|
|
24
40
|
}
|
|
25
41
|
}
|
|
26
42
|
|
|
43
|
+
export class SQLJsonLength implements SQLExpression {
|
|
44
|
+
target: SQLExpression
|
|
45
|
+
path?: SQLExpression
|
|
46
|
+
|
|
47
|
+
constructor(target: SQLExpression, path?: SQLExpression) {
|
|
48
|
+
this.target = target;
|
|
49
|
+
this.path = path;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
getSQL(options?: SQLExpressionOptions): SQLQuery {
|
|
53
|
+
return joinSQLQuery([
|
|
54
|
+
'JSON_LENGTH(',
|
|
55
|
+
this.target.getSQL(options),
|
|
56
|
+
...(this.path ? [
|
|
57
|
+
',',
|
|
58
|
+
this.path.getSQL(options),
|
|
59
|
+
] : []),
|
|
60
|
+
')'
|
|
61
|
+
])
|
|
62
|
+
}
|
|
63
|
+
}
|
|
27
64
|
/**
|
|
28
65
|
* JSON_SEARCH(json_doc, one_or_all, search_str[, escape_char[, path] ...])
|
|
29
66
|
*/
|
|
@@ -108,4 +145,4 @@ export class SQLJsonOverlaps implements SQLExpression {
|
|
|
108
145
|
')'
|
|
109
146
|
])
|
|
110
147
|
}
|
|
111
|
-
}
|
|
148
|
+
}
|
package/src/SQLSelect.ts
CHANGED
|
@@ -3,7 +3,7 @@ import { SQLOrderBy, addOrderByHelpers } from "./SQLOrderBy";
|
|
|
3
3
|
import { SQLWhere, addWhereHelpers } from "./SQLWhere";
|
|
4
4
|
import {Database, SQLResultNamespacedRow} from "@simonbackx/simple-database"
|
|
5
5
|
import {SQLJoin} from './SQLJoin'
|
|
6
|
-
import { SQLAlias, SQLCount, SQLSelectAs, SQLWildcardSelectExpression } from "./SQLExpressions";
|
|
6
|
+
import { SQLAlias, SQLCount, SQLSelectAs, SQLSum, SQLWildcardSelectExpression } from "./SQLExpressions";
|
|
7
7
|
|
|
8
8
|
class SelectBase implements SQLExpression {
|
|
9
9
|
_columns: SQLExpression[]
|
|
@@ -14,6 +14,7 @@ class SelectBase implements SQLExpression {
|
|
|
14
14
|
|
|
15
15
|
_where: SQLWhere|null = null;
|
|
16
16
|
_orderBy: SQLOrderBy|null = null;
|
|
17
|
+
_groupBy: SQLExpression[] = [];
|
|
17
18
|
_joins: (InstanceType<typeof SQLJoin>)[] = [];
|
|
18
19
|
|
|
19
20
|
constructor(...columns: SQLExpression[]) {
|
|
@@ -36,6 +37,11 @@ class SelectBase implements SQLExpression {
|
|
|
36
37
|
return this;
|
|
37
38
|
}
|
|
38
39
|
|
|
40
|
+
groupBy(...columns: SQLExpression[]): this {
|
|
41
|
+
this._groupBy.push(...columns);
|
|
42
|
+
return this;
|
|
43
|
+
}
|
|
44
|
+
|
|
39
45
|
getSQL(options?: SQLExpressionOptions): SQLQuery {
|
|
40
46
|
const query: SQLQuery[] = [
|
|
41
47
|
'SELECT'
|
|
@@ -62,11 +68,20 @@ class SelectBase implements SQLExpression {
|
|
|
62
68
|
query.push(this._where.getSQL(options))
|
|
63
69
|
}
|
|
64
70
|
|
|
71
|
+
if (this._groupBy.length > 0) {
|
|
72
|
+
query.push('GROUP BY')
|
|
73
|
+
query.push(
|
|
74
|
+
joinSQLQuery(
|
|
75
|
+
this._groupBy.map(c => c.getSQL(options)),
|
|
76
|
+
', '
|
|
77
|
+
)
|
|
78
|
+
)
|
|
79
|
+
}
|
|
80
|
+
|
|
65
81
|
if (this._orderBy) {
|
|
66
82
|
query.push(this._orderBy.getSQL(options))
|
|
67
83
|
}
|
|
68
|
-
|
|
69
|
-
|
|
84
|
+
|
|
70
85
|
if (this._limit !== null) {
|
|
71
86
|
query.push('LIMIT ' + this._limit)
|
|
72
87
|
if (this._offset !== null && this._offset !== 0) {
|
|
@@ -152,6 +167,37 @@ class SelectBase implements SQLExpression {
|
|
|
152
167
|
console.warn('Invalid count SQL response', rows);
|
|
153
168
|
return 0;
|
|
154
169
|
}
|
|
170
|
+
|
|
171
|
+
async sum(expression: SQLExpression): Promise<number> {
|
|
172
|
+
this._columns = [
|
|
173
|
+
new SQLSelectAs(
|
|
174
|
+
new SQLSum(expression),
|
|
175
|
+
new SQLAlias('c')
|
|
176
|
+
)
|
|
177
|
+
]
|
|
178
|
+
this._offset = null;
|
|
179
|
+
this._limit = null;
|
|
180
|
+
this._orderBy = null;
|
|
181
|
+
|
|
182
|
+
const {query, params} = normalizeSQLQuery(this.getSQL());
|
|
183
|
+
console.log(query, params);
|
|
184
|
+
|
|
185
|
+
const [rows] = await Database.select(query, params, {nestTables: true});
|
|
186
|
+
if (rows.length === 1) {
|
|
187
|
+
const row = rows[0];
|
|
188
|
+
if ('' in row) {
|
|
189
|
+
const namespaced = row[''];
|
|
190
|
+
if ('c' in namespaced) {
|
|
191
|
+
const value = namespaced['c'];
|
|
192
|
+
if (typeof value === 'number' && Number.isInteger(value)) {
|
|
193
|
+
return value;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
console.warn('Invalid sum SQL response', rows);
|
|
199
|
+
return 0;
|
|
200
|
+
}
|
|
155
201
|
}
|
|
156
202
|
|
|
157
203
|
export const SQLSelect = addOrderByHelpers(
|
package/src/SQLWhere.ts
CHANGED
|
@@ -105,7 +105,9 @@ export abstract class SQLWhere implements SQLExpression {
|
|
|
105
105
|
export enum SQLWhereSign {
|
|
106
106
|
Equal = '=',
|
|
107
107
|
Greater = '>',
|
|
108
|
+
GreaterEqual = '>=',
|
|
108
109
|
Less = '<',
|
|
110
|
+
LessEqual = '<=',
|
|
109
111
|
NotEqual = '!='
|
|
110
112
|
}
|
|
111
113
|
|
|
@@ -147,8 +149,10 @@ export class SQLWhereEqual extends SQLWhere {
|
|
|
147
149
|
switch (this.sign) {
|
|
148
150
|
case SQLWhereSign.Equal: this.sign = SQLWhereSign.NotEqual; break;
|
|
149
151
|
case SQLWhereSign.NotEqual: this.sign = SQLWhereSign.Equal; break;
|
|
150
|
-
case SQLWhereSign.Greater: this.sign = SQLWhereSign.
|
|
151
|
-
case SQLWhereSign.Less: this.sign = SQLWhereSign.
|
|
152
|
+
case SQLWhereSign.Greater: this.sign = SQLWhereSign.LessEqual; break;
|
|
153
|
+
case SQLWhereSign.Less: this.sign = SQLWhereSign.GreaterEqual; break;
|
|
154
|
+
case SQLWhereSign.GreaterEqual: this.sign = SQLWhereSign.Less; break;
|
|
155
|
+
case SQLWhereSign.LessEqual: this.sign = SQLWhereSign.Greater; break
|
|
152
156
|
}
|
|
153
157
|
return this;
|
|
154
158
|
}
|
package/src/filters/SQLFilter.ts
CHANGED
|
@@ -3,7 +3,7 @@ import { StamhoofdFilter, StamhoofdKeyFilterValue } from "@stamhoofd/structures"
|
|
|
3
3
|
import { SQL } from "../SQL";
|
|
4
4
|
import { SQLExpression } from "../SQLExpression";
|
|
5
5
|
import { SQLArray, SQLColumnExpression, SQLNull, SQLSafeValue, SQLScalarValue, scalarToSQLExpression, scalarToSQLJSONExpression } from "../SQLExpressions";
|
|
6
|
-
import { SQLJsonContains, SQLJsonOverlaps, SQLJsonSearch } from "../SQLJsonExpressions";
|
|
6
|
+
import { SQLJsonContains, SQLJsonOverlaps, SQLJsonSearch, SQLJsonUnquote } from "../SQLJsonExpressions";
|
|
7
7
|
import { SQLSelect } from "../SQLSelect";
|
|
8
8
|
import { SQLWhere, SQLWhereAnd, SQLWhereEqual, SQLWhereExists, SQLWhereLike, SQLWhereNot, SQLWhereOr, SQLWhereSign } from "../SQLWhere";
|
|
9
9
|
|
|
@@ -123,8 +123,25 @@ export function createSQLExpressionFilterCompiler(sqlExpression: SQLExpression,
|
|
|
123
123
|
}
|
|
124
124
|
|
|
125
125
|
const v = f.$in.map(a => norm(a));
|
|
126
|
+
const nullIncluded = v.includes(null);
|
|
126
127
|
|
|
127
128
|
if (isJSONObject) {
|
|
129
|
+
if (nullIncluded) {
|
|
130
|
+
// PROBLEM: The sql expression can either not exist (= resolve to mysql null), contains null in json (= JSON null), or contain a value.
|
|
131
|
+
// that makes comparing more difficult, to combat this, we still need to use SQLJsonOverlaps with the JSON null value
|
|
132
|
+
return new SQLWhereOr([
|
|
133
|
+
new SQLWhereEqual(sqlExpression, SQLWhereSign.Equal, new SQLNull()), // checks path not exists (= mysql null)
|
|
134
|
+
new SQLWhereEqual(
|
|
135
|
+
new SQLJsonOverlaps(
|
|
136
|
+
sqlExpression,
|
|
137
|
+
convertToExpression(JSON.stringify(v)) // contains json null
|
|
138
|
+
),
|
|
139
|
+
SQLWhereSign.Equal,
|
|
140
|
+
new SQLSafeValue(1)
|
|
141
|
+
)
|
|
142
|
+
]);
|
|
143
|
+
}
|
|
144
|
+
|
|
128
145
|
// else
|
|
129
146
|
return new SQLWhereEqual(
|
|
130
147
|
new SQLJsonOverlaps(
|
|
@@ -135,6 +152,17 @@ export function createSQLExpressionFilterCompiler(sqlExpression: SQLExpression,
|
|
|
135
152
|
new SQLSafeValue(1)
|
|
136
153
|
);
|
|
137
154
|
}
|
|
155
|
+
|
|
156
|
+
if (nullIncluded) {
|
|
157
|
+
const remaining = v.filter(v => v !== null);
|
|
158
|
+
if (remaining.length === 0) {
|
|
159
|
+
return new SQLWhereEqual(sqlExpression, SQLWhereSign.Equal, new SQLNull());
|
|
160
|
+
}
|
|
161
|
+
return new SQLWhereOr([
|
|
162
|
+
new SQLWhereEqual(sqlExpression, SQLWhereSign.Equal, new SQLNull()),
|
|
163
|
+
new SQLWhereEqual(sqlExpression, SQLWhereSign.Equal, new SQLArray(remaining))
|
|
164
|
+
]);
|
|
165
|
+
}
|
|
138
166
|
return new SQLWhereEqual(sqlExpression, SQLWhereSign.Equal, new SQLArray(v));
|
|
139
167
|
}
|
|
140
168
|
|
|
@@ -179,6 +207,35 @@ export function createSQLExpressionFilterCompiler(sqlExpression: SQLExpression,
|
|
|
179
207
|
return new SQLWhereEqual(sqlExpression, SQLWhereSign.Greater, convertToExpression(norm(f.$gt)));
|
|
180
208
|
}
|
|
181
209
|
|
|
210
|
+
if ('$gte' in f) {
|
|
211
|
+
guardScalar(f.$gte);
|
|
212
|
+
|
|
213
|
+
if (isJSONObject) {
|
|
214
|
+
throw new Error('Greater than is not supported in this place')
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
if (f.$gte === null) {
|
|
218
|
+
// >= null is always everything
|
|
219
|
+
return new SQLWhereEqual(new SQLSafeValue(1), SQLWhereSign.Equal, new SQLSafeValue(1));
|
|
220
|
+
}
|
|
221
|
+
return new SQLWhereEqual(sqlExpression, SQLWhereSign.GreaterEqual, convertToExpression(norm(f.$gte)));
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
if ('$lte' in f) {
|
|
225
|
+
guardScalar(f.$lte);
|
|
226
|
+
|
|
227
|
+
if (isJSONObject) {
|
|
228
|
+
throw new Error('Greater than is not supported in this place')
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
if (f.$lte === null) {
|
|
232
|
+
// <= null is same as equal to null
|
|
233
|
+
return new SQLWhereEqual(sqlExpression, SQLWhereSign.Equal, convertToExpression(norm(f.$lte)));
|
|
234
|
+
}
|
|
235
|
+
return new SQLWhereEqual(sqlExpression, SQLWhereSign.LessEqual, convertToExpression(norm(f.$lte)));
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
|
|
182
239
|
if ('$lt' in f) {
|
|
183
240
|
guardScalar(f.$lt);
|
|
184
241
|
|