@stamhoofd/sql 2.1.1 → 2.2.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/LICENSE +661 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/src/SQL.d.ts +56 -0
- package/dist/src/SQL.d.ts.map +1 -0
- package/dist/src/SQL.js +47 -0
- package/dist/src/SQL.js.map +1 -0
- package/dist/src/SQLExpression.d.ts +15 -0
- package/dist/src/SQLExpression.d.ts.map +1 -0
- package/dist/src/SQLExpression.js +23 -0
- package/dist/src/SQLExpression.js.map +1 -0
- package/dist/src/SQLExpressions.d.ts +88 -0
- package/dist/src/SQLExpressions.d.ts.map +1 -0
- package/dist/src/SQLExpressions.js +222 -0
- package/dist/src/SQLExpressions.js.map +1 -0
- package/dist/src/SQLJoin.d.ts +29 -0
- package/dist/src/SQLJoin.d.ts.map +1 -0
- package/dist/src/SQLJoin.js +40 -0
- package/dist/src/SQLJoin.js.map +1 -0
- package/dist/src/SQLJsonExpressions.d.ts +41 -0
- package/dist/src/SQLJsonExpressions.d.ts.map +1 -0
- package/dist/src/SQLJsonExpressions.js +95 -0
- package/dist/src/SQLJsonExpressions.js.map +1 -0
- package/dist/src/SQLOrderBy.d.ts +28 -0
- package/dist/src/SQLOrderBy.d.ts.map +1 -0
- package/dist/src/SQLOrderBy.js +50 -0
- package/dist/src/SQLOrderBy.js.map +1 -0
- package/dist/src/SQLSelect.d.ts +44 -0
- package/dist/src/SQLSelect.d.ts.map +1 -0
- package/dist/src/SQLSelect.js +124 -0
- package/dist/src/SQLSelect.js.map +1 -0
- package/dist/src/SQLWhere.d.ts +92 -0
- package/dist/src/SQLWhere.d.ts.map +1 -0
- package/dist/src/SQLWhere.js +269 -0
- package/dist/src/SQLWhere.js.map +1 -0
- package/dist/src/filters/SQLFilter.d.ts +17 -0
- package/dist/src/filters/SQLFilter.d.ts.map +1 -0
- package/dist/src/filters/SQLFilter.js +196 -0
- package/dist/src/filters/SQLFilter.js.map +1 -0
- package/dist/src/filters/SQLSorter.d.ts +9 -0
- package/dist/src/filters/SQLSorter.d.ts.map +1 -0
- package/dist/src/filters/SQLSorter.js +20 -0
- package/dist/src/filters/SQLSorter.js.map +1 -0
- package/package.json +5 -3
- package/src/SQLExpressions.ts +27 -0
- package/src/filters/SQLFilter.ts +9 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
tslib_1.__exportStar(require("./src/SQL"), exports);
|
|
5
|
+
tslib_1.__exportStar(require("./src/SQLExpression"), exports);
|
|
6
|
+
tslib_1.__exportStar(require("./src/SQLExpressions"), exports);
|
|
7
|
+
tslib_1.__exportStar(require("./src/SQLWhere"), exports);
|
|
8
|
+
tslib_1.__exportStar(require("./src/SQLSelect"), exports);
|
|
9
|
+
tslib_1.__exportStar(require("./src/filters/SQLFilter"), exports);
|
|
10
|
+
tslib_1.__exportStar(require("./src/filters/SQLSorter"), exports);
|
|
11
|
+
tslib_1.__exportStar(require("./src/SQLOrderBy"), exports);
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;AAAA,oDAAyB;AACzB,8DAAmC;AACnC,+DAAoC;AACpC,yDAA8B;AAC9B,0DAA+B;AAC/B,kEAAuC;AACvC,kEAAuC;AACvC,2DAAgC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { SQLExpression } from "./SQLExpression";
|
|
2
|
+
import { SQLSelect } from "./SQLSelect";
|
|
3
|
+
import { SQLColumnExpression, SQLTableExpression, SQLWildcardSelectExpression } from "./SQLExpressions";
|
|
4
|
+
import { SQLJsonExtract } from "./SQLJsonExpressions";
|
|
5
|
+
declare class StaticSQL {
|
|
6
|
+
wildcard(namespace?: string): SQLWildcardSelectExpression;
|
|
7
|
+
column(namespace: string, column: string): SQLColumnExpression;
|
|
8
|
+
column(column: string): SQLColumnExpression;
|
|
9
|
+
jsonValue(column: SQLExpression, path: string): SQLJsonExtract;
|
|
10
|
+
table(namespace: string, table: string): SQLTableExpression;
|
|
11
|
+
table(table: string): SQLTableExpression;
|
|
12
|
+
select(...columns: SQLExpression[]): InstanceType<typeof SQLSelect>;
|
|
13
|
+
leftJoin(table: SQLExpression): {
|
|
14
|
+
parseWhere(...[whereOrColumn, signOrValue, value]: import("./SQLWhere").ParseWhereArguments): import("./SQLWhere").SQLWhere;
|
|
15
|
+
where<T>(this: T, ...args: import("./SQLWhere").ParseWhereArguments): T;
|
|
16
|
+
andWhere(...args: import("./SQLWhere").ParseWhereArguments): any;
|
|
17
|
+
orWhere(...args: import("./SQLWhere").ParseWhereArguments): any;
|
|
18
|
+
whereNot(...args: import("./SQLWhere").ParseWhereArguments): any;
|
|
19
|
+
andWhereNot(...args: import("./SQLWhere").ParseWhereArguments): any;
|
|
20
|
+
orWhereNot(...args: import("./SQLWhere").ParseWhereArguments): any;
|
|
21
|
+
_where: import("./SQLWhere").SQLWhere | null;
|
|
22
|
+
} & import("./SQLJoin").JoinBase;
|
|
23
|
+
rightJoin(table: SQLExpression): {
|
|
24
|
+
parseWhere(...[whereOrColumn, signOrValue, value]: import("./SQLWhere").ParseWhereArguments): import("./SQLWhere").SQLWhere;
|
|
25
|
+
where<T>(this: T, ...args: import("./SQLWhere").ParseWhereArguments): T;
|
|
26
|
+
andWhere(...args: import("./SQLWhere").ParseWhereArguments): any;
|
|
27
|
+
orWhere(...args: import("./SQLWhere").ParseWhereArguments): any;
|
|
28
|
+
whereNot(...args: import("./SQLWhere").ParseWhereArguments): any;
|
|
29
|
+
andWhereNot(...args: import("./SQLWhere").ParseWhereArguments): any;
|
|
30
|
+
orWhereNot(...args: import("./SQLWhere").ParseWhereArguments): any;
|
|
31
|
+
_where: import("./SQLWhere").SQLWhere | null;
|
|
32
|
+
} & import("./SQLJoin").JoinBase;
|
|
33
|
+
innerJoin(table: SQLExpression): {
|
|
34
|
+
parseWhere(...[whereOrColumn, signOrValue, value]: import("./SQLWhere").ParseWhereArguments): import("./SQLWhere").SQLWhere;
|
|
35
|
+
where<T>(this: T, ...args: import("./SQLWhere").ParseWhereArguments): T;
|
|
36
|
+
andWhere(...args: import("./SQLWhere").ParseWhereArguments): any;
|
|
37
|
+
orWhere(...args: import("./SQLWhere").ParseWhereArguments): any;
|
|
38
|
+
whereNot(...args: import("./SQLWhere").ParseWhereArguments): any;
|
|
39
|
+
andWhereNot(...args: import("./SQLWhere").ParseWhereArguments): any;
|
|
40
|
+
orWhereNot(...args: import("./SQLWhere").ParseWhereArguments): any;
|
|
41
|
+
_where: import("./SQLWhere").SQLWhere | null;
|
|
42
|
+
} & import("./SQLJoin").JoinBase;
|
|
43
|
+
join(table: SQLExpression): {
|
|
44
|
+
parseWhere(...[whereOrColumn, signOrValue, value]: import("./SQLWhere").ParseWhereArguments): import("./SQLWhere").SQLWhere;
|
|
45
|
+
where<T>(this: T, ...args: import("./SQLWhere").ParseWhereArguments): T;
|
|
46
|
+
andWhere(...args: import("./SQLWhere").ParseWhereArguments): any;
|
|
47
|
+
orWhere(...args: import("./SQLWhere").ParseWhereArguments): any;
|
|
48
|
+
whereNot(...args: import("./SQLWhere").ParseWhereArguments): any;
|
|
49
|
+
andWhereNot(...args: import("./SQLWhere").ParseWhereArguments): any;
|
|
50
|
+
orWhereNot(...args: import("./SQLWhere").ParseWhereArguments): any;
|
|
51
|
+
_where: import("./SQLWhere").SQLWhere | null;
|
|
52
|
+
} & import("./SQLJoin").JoinBase;
|
|
53
|
+
}
|
|
54
|
+
export declare const SQL: StaticSQL;
|
|
55
|
+
export {};
|
|
56
|
+
//# sourceMappingURL=SQL.d.ts.map
|
|
@@ -0,0 +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;AAEtD,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,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,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
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SQL = void 0;
|
|
4
|
+
const SQLSelect_1 = require("./SQLSelect");
|
|
5
|
+
const SQLExpressions_1 = require("./SQLExpressions");
|
|
6
|
+
const SQLJoin_1 = require("./SQLJoin");
|
|
7
|
+
const SQLJsonExpressions_1 = require("./SQLJsonExpressions");
|
|
8
|
+
class StaticSQL {
|
|
9
|
+
wildcard(namespace) {
|
|
10
|
+
return new SQLExpressions_1.SQLWildcardSelectExpression(namespace);
|
|
11
|
+
}
|
|
12
|
+
column(namespaceOrColumn, column) {
|
|
13
|
+
if (column === undefined) {
|
|
14
|
+
return new SQLExpressions_1.SQLColumnExpression(namespaceOrColumn);
|
|
15
|
+
}
|
|
16
|
+
return new SQLExpressions_1.SQLColumnExpression(namespaceOrColumn, column);
|
|
17
|
+
}
|
|
18
|
+
jsonValue(column, path) {
|
|
19
|
+
return new SQLJsonExpressions_1.SQLJsonExtract(column, new SQLExpressions_1.SQLSafeValue(path));
|
|
20
|
+
}
|
|
21
|
+
table(namespaceOrTable, table) {
|
|
22
|
+
if (table === undefined) {
|
|
23
|
+
return new SQLExpressions_1.SQLTableExpression(namespaceOrTable);
|
|
24
|
+
}
|
|
25
|
+
return new SQLExpressions_1.SQLTableExpression(namespaceOrTable, table);
|
|
26
|
+
}
|
|
27
|
+
select(...columns) {
|
|
28
|
+
if (columns.length === 0) {
|
|
29
|
+
return new SQLSelect_1.SQLSelect(this.wildcard());
|
|
30
|
+
}
|
|
31
|
+
return new SQLSelect_1.SQLSelect(...columns);
|
|
32
|
+
}
|
|
33
|
+
leftJoin(table) {
|
|
34
|
+
return new SQLJoin_1.SQLJoin(SQLJoin_1.SQLJoinType.Left, table);
|
|
35
|
+
}
|
|
36
|
+
rightJoin(table) {
|
|
37
|
+
return new SQLJoin_1.SQLJoin(SQLJoin_1.SQLJoinType.Right, table);
|
|
38
|
+
}
|
|
39
|
+
innerJoin(table) {
|
|
40
|
+
return new SQLJoin_1.SQLJoin(SQLJoin_1.SQLJoinType.Inner, table);
|
|
41
|
+
}
|
|
42
|
+
join(table) {
|
|
43
|
+
return new SQLJoin_1.SQLJoin(SQLJoin_1.SQLJoinType.Inner, table);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
exports.SQL = new StaticSQL();
|
|
47
|
+
//# sourceMappingURL=SQL.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SQL.js","sourceRoot":"","sources":["../../src/SQL.ts"],"names":[],"mappings":";;;AACA,2CAAwC;AACxC,qDAA6I;AAC7I,uCAAiD;AACjD,6DAAsD;AAEtD,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;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,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,15 @@
|
|
|
1
|
+
export type SQLExpressionOptions = {
|
|
2
|
+
defaultNamespace?: string;
|
|
3
|
+
};
|
|
4
|
+
export type NormalizedSQLQuery = {
|
|
5
|
+
query: string;
|
|
6
|
+
params: any[];
|
|
7
|
+
};
|
|
8
|
+
export type SQLQuery = NormalizedSQLQuery | string;
|
|
9
|
+
export declare function joinSQLQuery(queries: (SQLQuery | undefined | null)[], seperator?: string): NormalizedSQLQuery;
|
|
10
|
+
export declare function normalizeSQLQuery(q: SQLQuery): NormalizedSQLQuery;
|
|
11
|
+
export interface SQLExpression {
|
|
12
|
+
getSQL(options?: SQLExpressionOptions): SQLQuery;
|
|
13
|
+
}
|
|
14
|
+
export declare function isSQLExpression(obj: unknown): obj is SQLExpression;
|
|
15
|
+
//# sourceMappingURL=SQLExpression.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SQLExpression.d.ts","sourceRoot":"","sources":["../../src/SQLExpression.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,oBAAoB,GAAG;IAC/B,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC5B,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,GAAG,EAAE,CAAA;CAAC,CAAA;AAC/D,MAAM,MAAM,QAAQ,GAAG,kBAAkB,GAAC,MAAM,CAAA;AAEhD,wBAAgB,YAAY,CAAC,OAAO,EAAE,CAAC,QAAQ,GAAC,SAAS,GAAC,IAAI,CAAC,EAAE,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,kBAAkB,CAMzG;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,QAAQ,GAAG,kBAAkB,CAKjE;AAGD,MAAM,WAAW,aAAa;IAC1B,MAAM,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,QAAQ,CAAA;CACnD;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,aAAa,CAElE"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isSQLExpression = exports.normalizeSQLQuery = exports.joinSQLQuery = void 0;
|
|
4
|
+
function joinSQLQuery(queries, seperator) {
|
|
5
|
+
queries = queries.filter(q => q !== undefined && q !== null);
|
|
6
|
+
return {
|
|
7
|
+
query: queries.map(q => typeof q === 'string' ? q : q.query).join(seperator !== null && seperator !== void 0 ? seperator : ''),
|
|
8
|
+
params: queries.flatMap(q => typeof q === 'string' ? [] : q.params)
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
exports.joinSQLQuery = joinSQLQuery;
|
|
12
|
+
function normalizeSQLQuery(q) {
|
|
13
|
+
return {
|
|
14
|
+
query: typeof q === 'string' ? q : q.query,
|
|
15
|
+
params: typeof q === 'string' ? [] : q.params
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
exports.normalizeSQLQuery = normalizeSQLQuery;
|
|
19
|
+
function isSQLExpression(obj) {
|
|
20
|
+
return typeof obj === 'object' && obj !== null && !!obj.getSQL && typeof obj.getSQL === 'function';
|
|
21
|
+
}
|
|
22
|
+
exports.isSQLExpression = isSQLExpression;
|
|
23
|
+
//# sourceMappingURL=SQLExpression.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SQLExpression.js","sourceRoot":"","sources":["../../src/SQLExpression.ts"],"names":[],"mappings":";;;AAOA,SAAgB,YAAY,CAAC,OAAoC,EAAE,SAAkB;IACjF,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,CAAC,CAAA;IAC5D,OAAO;QACH,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,EAAE,CAAC;QACnF,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC;KACvE,CAAA;AACL,CAAC;AAND,oCAMC;AAED,SAAgB,iBAAiB,CAAC,CAAW;IACzC,OAAO;QACH,KAAK,EAAE,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK;QAC1C,MAAM,EAAE,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM;KAChD,CAAA;AACL,CAAC;AALD,8CAKC;AAOD,SAAgB,eAAe,CAAC,GAAY;IACxC,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,CAAC,CAAE,GAAW,CAAC,MAAM,IAAI,OAAQ,GAAW,CAAC,MAAM,KAAK,UAAU,CAAA;AACxH,CAAC;AAFD,0CAEC"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { SQLExpression, SQLExpressionOptions, SQLQuery } from "./SQLExpression";
|
|
2
|
+
export type SQLScalarValue = string | number | boolean | Date;
|
|
3
|
+
export type SQLDynamicExpression = SQLScalarValue | SQLScalarValue[] | null | SQLExpression;
|
|
4
|
+
export declare function scalarToSQLJSONExpression(s: SQLScalarValue | null): SQLExpression;
|
|
5
|
+
export declare function scalarToSQLExpression(s: SQLScalarValue | null): SQLExpression;
|
|
6
|
+
export declare function readDynamicSQLExpression(s: SQLDynamicExpression): SQLExpression;
|
|
7
|
+
export declare class SQLDistinct implements SQLExpression {
|
|
8
|
+
expression: SQLExpression;
|
|
9
|
+
constructor(expression: SQLExpression);
|
|
10
|
+
getSQL(options?: SQLExpressionOptions): SQLQuery;
|
|
11
|
+
}
|
|
12
|
+
export declare class SQLCount implements SQLExpression {
|
|
13
|
+
expression: SQLExpression | null;
|
|
14
|
+
constructor(expression?: SQLExpression | null);
|
|
15
|
+
getSQL(options?: SQLExpressionOptions): SQLQuery;
|
|
16
|
+
}
|
|
17
|
+
export declare class SQLSum implements SQLExpression {
|
|
18
|
+
expression: SQLExpression;
|
|
19
|
+
constructor(expression: SQLExpression);
|
|
20
|
+
getSQL(options?: SQLExpressionOptions): SQLQuery;
|
|
21
|
+
}
|
|
22
|
+
export declare class SQLSelectAs implements SQLExpression {
|
|
23
|
+
expression: SQLExpression;
|
|
24
|
+
as: SQLAlias;
|
|
25
|
+
constructor(expression: SQLExpression, as: SQLAlias);
|
|
26
|
+
getSQL(options?: SQLExpressionOptions): SQLQuery;
|
|
27
|
+
}
|
|
28
|
+
export declare class SQLAlias implements SQLExpression {
|
|
29
|
+
name: string;
|
|
30
|
+
constructor(name: string);
|
|
31
|
+
getSQL(options?: SQLExpressionOptions): SQLQuery;
|
|
32
|
+
}
|
|
33
|
+
export declare class SQLConcat implements SQLExpression {
|
|
34
|
+
expressions: SQLExpression[];
|
|
35
|
+
constructor(...expressions: SQLExpression[]);
|
|
36
|
+
getSQL(options?: SQLExpressionOptions): SQLQuery;
|
|
37
|
+
}
|
|
38
|
+
export declare class SQLAge implements SQLExpression {
|
|
39
|
+
expression: SQLExpression;
|
|
40
|
+
constructor(expression: SQLExpression);
|
|
41
|
+
getSQL(options?: SQLExpressionOptions): SQLQuery;
|
|
42
|
+
}
|
|
43
|
+
export declare class SQLJSONValue implements SQLExpression {
|
|
44
|
+
value: null | true | false;
|
|
45
|
+
constructor(value: null | true | false);
|
|
46
|
+
getSQL(options?: SQLExpressionOptions): SQLQuery;
|
|
47
|
+
}
|
|
48
|
+
export declare class SQLNull implements SQLExpression {
|
|
49
|
+
getSQL(options?: SQLExpressionOptions): SQLQuery;
|
|
50
|
+
}
|
|
51
|
+
export declare class SQLNow implements SQLExpression {
|
|
52
|
+
getSQL(options?: SQLExpressionOptions): SQLQuery;
|
|
53
|
+
}
|
|
54
|
+
export declare class SQLScalar implements SQLExpression {
|
|
55
|
+
value: SQLScalarValue;
|
|
56
|
+
constructor(value: SQLScalarValue);
|
|
57
|
+
getSQL(options?: SQLExpressionOptions): SQLQuery;
|
|
58
|
+
}
|
|
59
|
+
export declare class SQLSafeValue implements SQLExpression {
|
|
60
|
+
value: string | number;
|
|
61
|
+
constructor(value: string | number);
|
|
62
|
+
getSQL(options?: SQLExpressionOptions): SQLQuery;
|
|
63
|
+
}
|
|
64
|
+
export declare class SQLArray implements SQLExpression {
|
|
65
|
+
value: SQLScalarValue[];
|
|
66
|
+
constructor(value: SQLScalarValue[]);
|
|
67
|
+
getSQL(options?: SQLExpressionOptions): SQLQuery;
|
|
68
|
+
}
|
|
69
|
+
export declare class SQLWildcardSelectExpression implements SQLExpression {
|
|
70
|
+
namespace?: string;
|
|
71
|
+
constructor(namespace?: string);
|
|
72
|
+
getSQL(options?: SQLExpressionOptions): SQLQuery;
|
|
73
|
+
}
|
|
74
|
+
export declare class SQLColumnExpression implements SQLExpression {
|
|
75
|
+
namespace?: string;
|
|
76
|
+
column: string;
|
|
77
|
+
constructor(namespace: string, column: string);
|
|
78
|
+
constructor(column: string);
|
|
79
|
+
getSQL(options?: SQLExpressionOptions): SQLQuery;
|
|
80
|
+
}
|
|
81
|
+
export declare class SQLTableExpression implements SQLExpression {
|
|
82
|
+
namespace?: string;
|
|
83
|
+
table: string;
|
|
84
|
+
constructor(namespace: string, table: string);
|
|
85
|
+
constructor(table: string);
|
|
86
|
+
getSQL(options?: SQLExpressionOptions): SQLQuery;
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=SQLExpressions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SQLExpressions.d.ts","sourceRoot":"","sources":["../../src/SQLExpressions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SQLTableExpression = exports.SQLColumnExpression = exports.SQLWildcardSelectExpression = exports.SQLArray = exports.SQLSafeValue = exports.SQLScalar = exports.SQLNow = exports.SQLNull = exports.SQLJSONValue = exports.SQLAge = exports.SQLConcat = exports.SQLAlias = exports.SQLSelectAs = exports.SQLSum = exports.SQLCount = exports.SQLDistinct = exports.readDynamicSQLExpression = exports.scalarToSQLExpression = exports.scalarToSQLJSONExpression = void 0;
|
|
4
|
+
const SQLExpression_1 = require("./SQLExpression");
|
|
5
|
+
const simple_database_1 = require("@simonbackx/simple-database");
|
|
6
|
+
function scalarToSQLJSONExpression(s) {
|
|
7
|
+
if (s === null) {
|
|
8
|
+
return new SQLJSONValue(null);
|
|
9
|
+
}
|
|
10
|
+
if (s === true) {
|
|
11
|
+
return new SQLJSONValue(true);
|
|
12
|
+
}
|
|
13
|
+
if (s === false) {
|
|
14
|
+
return new SQLJSONValue(false);
|
|
15
|
+
}
|
|
16
|
+
return new SQLScalar(s);
|
|
17
|
+
}
|
|
18
|
+
exports.scalarToSQLJSONExpression = scalarToSQLJSONExpression;
|
|
19
|
+
function scalarToSQLExpression(s) {
|
|
20
|
+
if (s === null) {
|
|
21
|
+
return new SQLNull();
|
|
22
|
+
}
|
|
23
|
+
return new SQLScalar(s);
|
|
24
|
+
}
|
|
25
|
+
exports.scalarToSQLExpression = scalarToSQLExpression;
|
|
26
|
+
function readDynamicSQLExpression(s) {
|
|
27
|
+
if (Array.isArray(s)) {
|
|
28
|
+
return new SQLArray(s);
|
|
29
|
+
}
|
|
30
|
+
if (s === null) {
|
|
31
|
+
return new SQLNull();
|
|
32
|
+
}
|
|
33
|
+
if (typeof s === 'object' && !(s instanceof Date)) {
|
|
34
|
+
return s;
|
|
35
|
+
}
|
|
36
|
+
return new SQLScalar(s);
|
|
37
|
+
}
|
|
38
|
+
exports.readDynamicSQLExpression = readDynamicSQLExpression;
|
|
39
|
+
class SQLDistinct {
|
|
40
|
+
constructor(expression) {
|
|
41
|
+
this.expression = expression;
|
|
42
|
+
}
|
|
43
|
+
getSQL(options) {
|
|
44
|
+
return (0, SQLExpression_1.joinSQLQuery)([
|
|
45
|
+
'DISTINCT',
|
|
46
|
+
this.expression.getSQL(options),
|
|
47
|
+
]);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
exports.SQLDistinct = SQLDistinct;
|
|
51
|
+
class SQLCount {
|
|
52
|
+
constructor(expression = null) {
|
|
53
|
+
this.expression = expression;
|
|
54
|
+
}
|
|
55
|
+
getSQL(options) {
|
|
56
|
+
return (0, SQLExpression_1.joinSQLQuery)([
|
|
57
|
+
'COUNT(',
|
|
58
|
+
this.expression ? this.expression.getSQL(options) : '*',
|
|
59
|
+
')'
|
|
60
|
+
]);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
exports.SQLCount = SQLCount;
|
|
64
|
+
class SQLSum {
|
|
65
|
+
constructor(expression) {
|
|
66
|
+
this.expression = expression;
|
|
67
|
+
}
|
|
68
|
+
getSQL(options) {
|
|
69
|
+
return (0, SQLExpression_1.joinSQLQuery)([
|
|
70
|
+
'SUM(',
|
|
71
|
+
this.expression.getSQL(options),
|
|
72
|
+
')'
|
|
73
|
+
]);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
exports.SQLSum = SQLSum;
|
|
77
|
+
class SQLSelectAs {
|
|
78
|
+
constructor(expression, as) {
|
|
79
|
+
this.expression = expression;
|
|
80
|
+
this.as = as;
|
|
81
|
+
}
|
|
82
|
+
getSQL(options) {
|
|
83
|
+
return (0, SQLExpression_1.joinSQLQuery)([
|
|
84
|
+
this.expression.getSQL(options),
|
|
85
|
+
' AS ',
|
|
86
|
+
this.as.getSQL(options)
|
|
87
|
+
]);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
exports.SQLSelectAs = SQLSelectAs;
|
|
91
|
+
class SQLAlias {
|
|
92
|
+
constructor(name) {
|
|
93
|
+
this.name = name;
|
|
94
|
+
}
|
|
95
|
+
getSQL(options) {
|
|
96
|
+
return simple_database_1.Database.escapeId(this.name);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
exports.SQLAlias = SQLAlias;
|
|
100
|
+
class SQLConcat {
|
|
101
|
+
constructor(...expressions) {
|
|
102
|
+
this.expressions = expressions;
|
|
103
|
+
}
|
|
104
|
+
getSQL(options) {
|
|
105
|
+
return (0, SQLExpression_1.joinSQLQuery)([
|
|
106
|
+
'CONCAT(',
|
|
107
|
+
(0, SQLExpression_1.joinSQLQuery)(this.expressions.map(e => e.getSQL(options)), ', '),
|
|
108
|
+
')'
|
|
109
|
+
]);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
exports.SQLConcat = SQLConcat;
|
|
113
|
+
class SQLAge {
|
|
114
|
+
constructor(expression) {
|
|
115
|
+
this.expression = expression;
|
|
116
|
+
}
|
|
117
|
+
getSQL(options) {
|
|
118
|
+
return (0, SQLExpression_1.joinSQLQuery)([
|
|
119
|
+
'TIMESTAMPDIFF(YEAR, ',
|
|
120
|
+
this.expression.getSQL(options),
|
|
121
|
+
', CURDATE())'
|
|
122
|
+
]);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
exports.SQLAge = SQLAge;
|
|
126
|
+
class SQLJSONValue {
|
|
127
|
+
constructor(value) {
|
|
128
|
+
this.value = value;
|
|
129
|
+
}
|
|
130
|
+
getSQL(options) {
|
|
131
|
+
return "CAST('" + JSON.stringify(this.value) + "' AS JSON)";
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
exports.SQLJSONValue = SQLJSONValue;
|
|
135
|
+
class SQLNull {
|
|
136
|
+
getSQL(options) {
|
|
137
|
+
return 'NULL';
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
exports.SQLNull = SQLNull;
|
|
141
|
+
class SQLNow {
|
|
142
|
+
getSQL(options) {
|
|
143
|
+
return 'NOW()';
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
exports.SQLNow = SQLNow;
|
|
147
|
+
class SQLScalar {
|
|
148
|
+
constructor(value) {
|
|
149
|
+
this.value = value;
|
|
150
|
+
}
|
|
151
|
+
getSQL(options) {
|
|
152
|
+
return {
|
|
153
|
+
query: '?',
|
|
154
|
+
params: [this.value]
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
exports.SQLScalar = SQLScalar;
|
|
159
|
+
class SQLSafeValue {
|
|
160
|
+
constructor(value) {
|
|
161
|
+
this.value = value;
|
|
162
|
+
}
|
|
163
|
+
getSQL(options) {
|
|
164
|
+
return JSON.stringify(this.value);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
exports.SQLSafeValue = SQLSafeValue;
|
|
168
|
+
class SQLArray {
|
|
169
|
+
constructor(value) {
|
|
170
|
+
this.value = value;
|
|
171
|
+
}
|
|
172
|
+
getSQL(options) {
|
|
173
|
+
return {
|
|
174
|
+
query: '(?)',
|
|
175
|
+
params: [this.value]
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
exports.SQLArray = SQLArray;
|
|
180
|
+
class SQLWildcardSelectExpression {
|
|
181
|
+
constructor(namespace) {
|
|
182
|
+
this.namespace = namespace;
|
|
183
|
+
}
|
|
184
|
+
getSQL(options) {
|
|
185
|
+
var _a, _b;
|
|
186
|
+
return simple_database_1.Database.escapeId((_b = (_a = this.namespace) !== null && _a !== void 0 ? _a : options === null || options === void 0 ? void 0 : options.defaultNamespace) !== null && _b !== void 0 ? _b : '') + '.*';
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
exports.SQLWildcardSelectExpression = SQLWildcardSelectExpression;
|
|
190
|
+
class SQLColumnExpression {
|
|
191
|
+
constructor(namespaceOrColumn, column) {
|
|
192
|
+
if (column === undefined) {
|
|
193
|
+
this.column = namespaceOrColumn;
|
|
194
|
+
return;
|
|
195
|
+
}
|
|
196
|
+
this.namespace = namespaceOrColumn;
|
|
197
|
+
this.column = column;
|
|
198
|
+
}
|
|
199
|
+
getSQL(options) {
|
|
200
|
+
var _a, _b;
|
|
201
|
+
return simple_database_1.Database.escapeId((_b = (_a = this.namespace) !== null && _a !== void 0 ? _a : options === null || options === void 0 ? void 0 : options.defaultNamespace) !== null && _b !== void 0 ? _b : '') + '.' + simple_database_1.Database.escapeId(this.column);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
exports.SQLColumnExpression = SQLColumnExpression;
|
|
205
|
+
class SQLTableExpression {
|
|
206
|
+
constructor(namespaceOrTable, table) {
|
|
207
|
+
if (table === undefined) {
|
|
208
|
+
this.table = namespaceOrTable;
|
|
209
|
+
return;
|
|
210
|
+
}
|
|
211
|
+
this.namespace = namespaceOrTable;
|
|
212
|
+
this.table = table;
|
|
213
|
+
}
|
|
214
|
+
getSQL(options) {
|
|
215
|
+
if (!this.namespace) {
|
|
216
|
+
return simple_database_1.Database.escapeId(this.table);
|
|
217
|
+
}
|
|
218
|
+
return simple_database_1.Database.escapeId(this.table) + ' ' + simple_database_1.Database.escapeId(this.namespace);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
exports.SQLTableExpression = SQLTableExpression;
|
|
222
|
+
//# sourceMappingURL=SQLExpressions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SQLExpressions.js","sourceRoot":"","sources":["../../src/SQLExpressions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { SQLExpression, SQLExpressionOptions, SQLQuery } from "./SQLExpression";
|
|
2
|
+
import { SQLWhere } from "./SQLWhere";
|
|
3
|
+
export declare enum SQLJoinType {
|
|
4
|
+
Left = "Left",
|
|
5
|
+
Right = "Right",
|
|
6
|
+
Inner = "Inner",
|
|
7
|
+
Outer = "Outer"
|
|
8
|
+
}
|
|
9
|
+
export declare class JoinBase implements SQLExpression {
|
|
10
|
+
type: SQLJoinType;
|
|
11
|
+
table: SQLExpression;
|
|
12
|
+
_where: SQLWhere | null;
|
|
13
|
+
constructor(type: SQLJoinType, table: SQLExpression);
|
|
14
|
+
private getJoinPrefix;
|
|
15
|
+
getSQL(options?: SQLExpressionOptions | undefined): SQLQuery;
|
|
16
|
+
}
|
|
17
|
+
export declare const SQLJoin: {
|
|
18
|
+
new (...args: any[]): {
|
|
19
|
+
parseWhere(...[whereOrColumn, signOrValue, value]: import("./SQLWhere").ParseWhereArguments): SQLWhere;
|
|
20
|
+
where<T>(this: T, ...args: import("./SQLWhere").ParseWhereArguments): T;
|
|
21
|
+
andWhere(...args: import("./SQLWhere").ParseWhereArguments): any;
|
|
22
|
+
orWhere(...args: import("./SQLWhere").ParseWhereArguments): any;
|
|
23
|
+
whereNot(...args: import("./SQLWhere").ParseWhereArguments): any;
|
|
24
|
+
andWhereNot(...args: import("./SQLWhere").ParseWhereArguments): any;
|
|
25
|
+
orWhereNot(...args: import("./SQLWhere").ParseWhereArguments): any;
|
|
26
|
+
_where: SQLWhere | null;
|
|
27
|
+
};
|
|
28
|
+
} & typeof JoinBase;
|
|
29
|
+
//# sourceMappingURL=SQLJoin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SQLJoin.d.ts","sourceRoot":"","sources":["../../src/SQLJoin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,QAAQ,EAAgB,MAAM,iBAAiB,CAAC;AAC9F,OAAO,EAAE,QAAQ,EAAmB,MAAM,YAAY,CAAC;AAEvD,oBAAY,WAAW;IACnB,IAAI,SAAS;IACb,KAAK,UAAU;IACf,KAAK,UAAU;IACf,KAAK,UAAU;CAClB;AAED,qBAAa,QAAS,YAAW,aAAa;IAC1C,IAAI,cAAmB;IACvB,KAAK,EAAE,aAAa,CAAC;IACrB,MAAM,EAAE,QAAQ,GAAC,IAAI,CAAQ;gBAEjB,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,aAAa;IAKnD,OAAO,CAAC,aAAa;IASrB,MAAM,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,SAAS,GAAG,QAAQ;CAQ/D;AAED,eAAO,MAAM,OAAO;;;;;;;;;;;mBAA4B,CAAA"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SQLJoin = exports.JoinBase = exports.SQLJoinType = void 0;
|
|
4
|
+
const SQLExpression_1 = require("./SQLExpression");
|
|
5
|
+
const SQLWhere_1 = require("./SQLWhere");
|
|
6
|
+
var SQLJoinType;
|
|
7
|
+
(function (SQLJoinType) {
|
|
8
|
+
SQLJoinType["Left"] = "Left";
|
|
9
|
+
SQLJoinType["Right"] = "Right";
|
|
10
|
+
SQLJoinType["Inner"] = "Inner";
|
|
11
|
+
SQLJoinType["Outer"] = "Outer";
|
|
12
|
+
})(SQLJoinType || (exports.SQLJoinType = SQLJoinType = {}));
|
|
13
|
+
class JoinBase {
|
|
14
|
+
constructor(type, table) {
|
|
15
|
+
this.type = SQLJoinType.Left;
|
|
16
|
+
this._where = null;
|
|
17
|
+
this.type = type;
|
|
18
|
+
this.table = table;
|
|
19
|
+
}
|
|
20
|
+
getJoinPrefix() {
|
|
21
|
+
switch (this.type) {
|
|
22
|
+
case SQLJoinType.Left: return 'LEFT JOIN';
|
|
23
|
+
case SQLJoinType.Right: return 'RIGHT JOIN';
|
|
24
|
+
case SQLJoinType.Inner: return 'JOIN';
|
|
25
|
+
case SQLJoinType.Outer: return 'OUTER JOIN';
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
getSQL(options) {
|
|
29
|
+
var _a, _b;
|
|
30
|
+
return (0, SQLExpression_1.joinSQLQuery)([
|
|
31
|
+
this.getJoinPrefix(),
|
|
32
|
+
(_a = this.table) === null || _a === void 0 ? void 0 : _a.getSQL(),
|
|
33
|
+
this._where ? 'ON' : undefined,
|
|
34
|
+
(_b = this._where) === null || _b === void 0 ? void 0 : _b.getSQL()
|
|
35
|
+
], ' ');
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
exports.JoinBase = JoinBase;
|
|
39
|
+
exports.SQLJoin = (0, SQLWhere_1.addWhereHelpers)(JoinBase);
|
|
40
|
+
//# sourceMappingURL=SQLJoin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SQLJoin.js","sourceRoot":"","sources":["../../src/SQLJoin.ts"],"names":[],"mappings":";;;AAAA,mDAA8F;AAC9F,yCAAuD;AAEvD,IAAY,WAKX;AALD,WAAY,WAAW;IACnB,4BAAa,CAAA;IACb,8BAAe,CAAA;IACf,8BAAe,CAAA;IACf,8BAAe,CAAA;AACnB,CAAC,EALW,WAAW,2BAAX,WAAW,QAKtB;AAED,MAAa,QAAQ;IAKjB,YAAY,IAAiB,EAAE,KAAoB;QAJnD,SAAI,GAAG,WAAW,CAAC,IAAI,CAAA;QAEvB,WAAM,GAAkB,IAAI,CAAC;QAGzB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;IAEO,aAAa;QACjB,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAChB,KAAK,WAAW,CAAC,IAAI,CAAC,CAAC,OAAO,WAAW,CAAC;YAC1C,KAAK,WAAW,CAAC,KAAK,CAAC,CAAC,OAAO,YAAY,CAAC;YAC5C,KAAK,WAAW,CAAC,KAAK,CAAC,CAAC,OAAO,MAAM,CAAC;YACtC,KAAK,WAAW,CAAC,KAAK,CAAC,CAAC,OAAO,YAAY,CAAC;QAChD,CAAC;IACL,CAAC;IAED,MAAM,CAAC,OAA0C;;QAC7C,OAAO,IAAA,4BAAY,EAAC;YAChB,IAAI,CAAC,aAAa,EAAE;YACpB,MAAA,IAAI,CAAC,KAAK,0CAAE,MAAM,EAAE;YACpB,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;YAC9B,MAAA,IAAI,CAAC,MAAM,0CAAE,MAAM,EAAE;SACxB,EAAE,GAAG,CAAC,CAAA;IACX,CAAC;CACJ;AA3BD,4BA2BC;AAEY,QAAA,OAAO,GAAG,IAAA,0BAAe,EAAC,QAAQ,CAAC,CAAA"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { SQLExpression, SQLExpressionOptions, SQLQuery } from "./SQLExpression";
|
|
2
|
+
/**
|
|
3
|
+
* Same as target->path, JSON_EXTRACT(target, path)
|
|
4
|
+
*/
|
|
5
|
+
export declare class SQLJsonExtract implements SQLExpression {
|
|
6
|
+
target: SQLExpression;
|
|
7
|
+
path: SQLExpression;
|
|
8
|
+
constructor(target: SQLExpression, path: SQLExpression);
|
|
9
|
+
getSQL(options?: SQLExpressionOptions): SQLQuery;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* JSON_SEARCH(json_doc, one_or_all, search_str[, escape_char[, path] ...])
|
|
13
|
+
*/
|
|
14
|
+
export declare class SQLJsonSearch implements SQLExpression {
|
|
15
|
+
target: SQLExpression;
|
|
16
|
+
oneOrAll: 'one' | 'all';
|
|
17
|
+
searchStr: SQLExpression;
|
|
18
|
+
path: SQLExpression | null;
|
|
19
|
+
constructor(target: SQLExpression, oneOrAll: 'one' | 'all', searchStr: SQLExpression, path?: SQLExpression | null);
|
|
20
|
+
getSQL(options?: SQLExpressionOptions): SQLQuery;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* JSON_CONTAINS(target, candidate[, path])
|
|
24
|
+
*/
|
|
25
|
+
export declare class SQLJsonContains implements SQLExpression {
|
|
26
|
+
target: SQLExpression;
|
|
27
|
+
candidate: SQLExpression;
|
|
28
|
+
path: SQLExpression | null;
|
|
29
|
+
constructor(target: SQLExpression, candidate: SQLExpression, path?: SQLExpression | null);
|
|
30
|
+
getSQL(options?: SQLExpressionOptions): SQLQuery;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* JSON_CONTAINS(json_doc1, json_doc2)
|
|
34
|
+
*/
|
|
35
|
+
export declare class SQLJsonOverlaps implements SQLExpression {
|
|
36
|
+
jsonDoc1: SQLExpression;
|
|
37
|
+
jsonDoc2: SQLExpression;
|
|
38
|
+
constructor(jsonDoc1: SQLExpression, jsonDoc2: SQLExpression);
|
|
39
|
+
getSQL(options?: SQLExpressionOptions): SQLQuery;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=SQLJsonExpressions.d.ts.map
|
|
@@ -0,0 +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"}
|