@stamhoofd/sql 2.114.1 → 2.115.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 +13 -12
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +20 -19
- package/dist/index.js.map +1 -1
- package/dist/src/SQLDelete.d.ts +10 -11
- package/dist/src/SQLDelete.d.ts.map +1 -1
- package/dist/src/SQLDelete.js +7 -7
- package/dist/src/SQLDelete.js.map +1 -1
- package/dist/src/SQLInsert.d.ts +2 -2
- package/dist/src/SQLInsert.d.ts.map +1 -1
- package/dist/src/SQLInsert.js +15 -15
- package/dist/src/SQLInsert.js.map +1 -1
- package/dist/src/SQLLogger.d.ts +10 -0
- package/dist/src/SQLLogger.d.ts.map +1 -0
- package/dist/src/SQLLogger.js +54 -0
- package/dist/src/SQLLogger.js.map +1 -0
- package/dist/src/SQLSelect.d.ts +14 -13
- package/dist/src/SQLSelect.d.ts.map +1 -1
- package/dist/src/SQLSelect.js +21 -19
- package/dist/src/SQLSelect.js.map +1 -1
- package/dist/src/SQLUpdate.d.ts +10 -10
- package/dist/src/SQLUpdate.d.ts.map +1 -1
- package/dist/src/SQLUpdate.js +11 -10
- package/dist/src/SQLUpdate.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
- package/src/SQLDelete.ts +5 -5
- package/src/SQLInsert.ts +4 -4
- package/src/SQLLogger.ts +67 -0
- package/src/SQLSelect.ts +10 -8
- package/src/SQLUpdate.ts +5 -4
package/dist/index.d.ts
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
export * from './src/SQL';
|
|
2
|
-
export * from './src/SQLExpression';
|
|
3
|
-
export * from './src/SQLExpressions';
|
|
4
|
-
export * from './src/SQLJsonExpressions';
|
|
5
|
-
export * from './src/SQLWhere';
|
|
6
|
-
export * from './src/SQLSelect';
|
|
7
|
-
export { createColumnFilter, createWildcardColumnFilter, createExistsFilter, createJoinedRelationFilter, SQLValueType, compileToSQLFilter, baseSQLFilterCompilers, SQLFilterDefinitions } from './src/filters/SQLFilter';
|
|
8
|
-
export * from './src/filters/SQLSorter';
|
|
9
|
-
export * from './src/SQLOrderBy';
|
|
10
|
-
export * from './src/SQLInsert';
|
|
11
|
-
export * from './src/QueryableModel';
|
|
12
|
-
export * from './src/SQLTranslatedStringHelper';
|
|
1
|
+
export * from './src/SQL.js';
|
|
2
|
+
export * from './src/SQLExpression.js';
|
|
3
|
+
export * from './src/SQLExpressions.js';
|
|
4
|
+
export * from './src/SQLJsonExpressions.js';
|
|
5
|
+
export * from './src/SQLWhere.js';
|
|
6
|
+
export * from './src/SQLSelect.js';
|
|
7
|
+
export { createColumnFilter, createWildcardColumnFilter, createExistsFilter, createJoinedRelationFilter, SQLValueType, compileToSQLFilter, baseSQLFilterCompilers, SQLFilterDefinitions } from './src/filters/SQLFilter.js';
|
|
8
|
+
export * from './src/filters/SQLSorter.js';
|
|
9
|
+
export * from './src/SQLOrderBy.js';
|
|
10
|
+
export * from './src/SQLInsert.js';
|
|
11
|
+
export * from './src/QueryableModel.js';
|
|
12
|
+
export * from './src/SQLTranslatedStringHelper.js';
|
|
13
|
+
export * from './src/SQLLogger.js';
|
|
13
14
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,OAAO,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,YAAY,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAC5N,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oCAAoC,CAAC;AACnD,cAAc,oBAAoB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -2,23 +2,24 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.baseSQLFilterCompilers = exports.compileToSQLFilter = exports.SQLValueType = exports.createJoinedRelationFilter = exports.createExistsFilter = exports.createWildcardColumnFilter = exports.createColumnFilter = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
|
-
tslib_1.__exportStar(require("./src/SQL"), exports);
|
|
6
|
-
tslib_1.__exportStar(require("./src/SQLExpression"), exports);
|
|
7
|
-
tslib_1.__exportStar(require("./src/SQLExpressions"), exports);
|
|
8
|
-
tslib_1.__exportStar(require("./src/SQLJsonExpressions"), exports);
|
|
9
|
-
tslib_1.__exportStar(require("./src/SQLWhere"), exports);
|
|
10
|
-
tslib_1.__exportStar(require("./src/SQLSelect"), exports);
|
|
11
|
-
var
|
|
12
|
-
Object.defineProperty(exports, "createColumnFilter", { enumerable: true, get: function () { return
|
|
13
|
-
Object.defineProperty(exports, "createWildcardColumnFilter", { enumerable: true, get: function () { return
|
|
14
|
-
Object.defineProperty(exports, "createExistsFilter", { enumerable: true, get: function () { return
|
|
15
|
-
Object.defineProperty(exports, "createJoinedRelationFilter", { enumerable: true, get: function () { return
|
|
16
|
-
Object.defineProperty(exports, "SQLValueType", { enumerable: true, get: function () { return
|
|
17
|
-
Object.defineProperty(exports, "compileToSQLFilter", { enumerable: true, get: function () { return
|
|
18
|
-
Object.defineProperty(exports, "baseSQLFilterCompilers", { enumerable: true, get: function () { return
|
|
19
|
-
tslib_1.__exportStar(require("./src/filters/SQLSorter"), exports);
|
|
20
|
-
tslib_1.__exportStar(require("./src/SQLOrderBy"), exports);
|
|
21
|
-
tslib_1.__exportStar(require("./src/SQLInsert"), exports);
|
|
22
|
-
tslib_1.__exportStar(require("./src/QueryableModel"), exports);
|
|
23
|
-
tslib_1.__exportStar(require("./src/SQLTranslatedStringHelper"), exports);
|
|
5
|
+
tslib_1.__exportStar(require("./src/SQL.js"), exports);
|
|
6
|
+
tslib_1.__exportStar(require("./src/SQLExpression.js"), exports);
|
|
7
|
+
tslib_1.__exportStar(require("./src/SQLExpressions.js"), exports);
|
|
8
|
+
tslib_1.__exportStar(require("./src/SQLJsonExpressions.js"), exports);
|
|
9
|
+
tslib_1.__exportStar(require("./src/SQLWhere.js"), exports);
|
|
10
|
+
tslib_1.__exportStar(require("./src/SQLSelect.js"), exports);
|
|
11
|
+
var SQLFilter_js_1 = require("./src/filters/SQLFilter.js");
|
|
12
|
+
Object.defineProperty(exports, "createColumnFilter", { enumerable: true, get: function () { return SQLFilter_js_1.createColumnFilter; } });
|
|
13
|
+
Object.defineProperty(exports, "createWildcardColumnFilter", { enumerable: true, get: function () { return SQLFilter_js_1.createWildcardColumnFilter; } });
|
|
14
|
+
Object.defineProperty(exports, "createExistsFilter", { enumerable: true, get: function () { return SQLFilter_js_1.createExistsFilter; } });
|
|
15
|
+
Object.defineProperty(exports, "createJoinedRelationFilter", { enumerable: true, get: function () { return SQLFilter_js_1.createJoinedRelationFilter; } });
|
|
16
|
+
Object.defineProperty(exports, "SQLValueType", { enumerable: true, get: function () { return SQLFilter_js_1.SQLValueType; } });
|
|
17
|
+
Object.defineProperty(exports, "compileToSQLFilter", { enumerable: true, get: function () { return SQLFilter_js_1.compileToSQLFilter; } });
|
|
18
|
+
Object.defineProperty(exports, "baseSQLFilterCompilers", { enumerable: true, get: function () { return SQLFilter_js_1.baseSQLFilterCompilers; } });
|
|
19
|
+
tslib_1.__exportStar(require("./src/filters/SQLSorter.js"), exports);
|
|
20
|
+
tslib_1.__exportStar(require("./src/SQLOrderBy.js"), exports);
|
|
21
|
+
tslib_1.__exportStar(require("./src/SQLInsert.js"), exports);
|
|
22
|
+
tslib_1.__exportStar(require("./src/QueryableModel.js"), exports);
|
|
23
|
+
tslib_1.__exportStar(require("./src/SQLTranslatedStringHelper.js"), exports);
|
|
24
|
+
tslib_1.__exportStar(require("./src/SQLLogger.js"), exports);
|
|
24
25
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;AAAA,uDAA6B;AAC7B,iEAAuC;AACvC,kEAAwC;AACxC,sEAA4C;AAC5C,4DAAkC;AAClC,6DAAmC;AACnC,2DAA4N;AAAnN,kHAAA,kBAAkB,OAAA;AAAE,0HAAA,0BAA0B,OAAA;AAAE,kHAAA,kBAAkB,OAAA;AAAE,0HAAA,0BAA0B,OAAA;AAAE,4GAAA,YAAY,OAAA;AAAE,kHAAA,kBAAkB,OAAA;AAAE,sHAAA,sBAAsB,OAAA;AACjK,qEAA2C;AAC3C,8DAAoC;AACpC,6DAAmC;AACnC,kEAAwC;AACxC,6EAAmD;AACnD,6DAAmC"}
|
package/dist/src/SQLDelete.d.ts
CHANGED
|
@@ -1,18 +1,17 @@
|
|
|
1
|
-
import { SQLExpression, SQLExpressionOptions, SQLQuery } from './SQLExpression';
|
|
2
|
-
import { SQLJoin } from './SQLJoin';
|
|
3
|
-
import { SQLWhere } from './SQLWhere';
|
|
1
|
+
import { SQLExpression, SQLExpressionOptions, SQLQuery } from './SQLExpression.js';
|
|
2
|
+
import { SQLJoin } from './SQLJoin.js';
|
|
4
3
|
declare class EmptyClass {
|
|
5
4
|
}
|
|
6
5
|
declare const SQLDelete_base: {
|
|
7
6
|
new (...args: any[]): {
|
|
8
|
-
_where: SQLWhere | null;
|
|
9
|
-
readonly __where: SQLWhere;
|
|
10
|
-
where<T>(this: T, ...args: import("./SQLWhere").ParseWhereArguments): T;
|
|
11
|
-
andWhere<T>(this: T, ...args: import("./SQLWhere").ParseWhereArguments): T;
|
|
12
|
-
orWhere<T>(this: T, ...args: import("./SQLWhere").ParseWhereArguments): T;
|
|
13
|
-
whereNot<T>(this: T, ...args: import("./SQLWhere").ParseWhereArguments): T;
|
|
14
|
-
andWhereNot<T>(this: T, ...args: import("./SQLWhere").ParseWhereArguments): T;
|
|
15
|
-
orWhereNot<T>(this: T, ...args: import("./SQLWhere").ParseWhereArguments): T;
|
|
7
|
+
_where: import("./SQLWhere.js").SQLWhere | null;
|
|
8
|
+
readonly __where: import("./SQLWhere.js").SQLWhere;
|
|
9
|
+
where<T>(this: T, ...args: import("./SQLWhere.js").ParseWhereArguments): T;
|
|
10
|
+
andWhere<T>(this: T, ...args: import("./SQLWhere.js").ParseWhereArguments): T;
|
|
11
|
+
orWhere<T>(this: T, ...args: import("./SQLWhere.js").ParseWhereArguments): T;
|
|
12
|
+
whereNot<T>(this: T, ...args: import("./SQLWhere.js").ParseWhereArguments): T;
|
|
13
|
+
andWhereNot<T>(this: T, ...args: import("./SQLWhere.js").ParseWhereArguments): T;
|
|
14
|
+
orWhereNot<T>(this: T, ...args: import("./SQLWhere.js").ParseWhereArguments): T;
|
|
16
15
|
};
|
|
17
16
|
} & typeof EmptyClass;
|
|
18
17
|
export declare class SQLDelete extends SQLDelete_base implements SQLExpression {
|
|
@@ -1 +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,
|
|
1
|
+
{"version":3,"file":"SQLDelete.d.ts","sourceRoot":"","sources":["../../src/SQLDelete.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,QAAQ,EAAmC,MAAM,oBAAoB,CAAC;AACpH,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAIvC,cAAM,UAAU;CAAG;;;;;;;;;;;;;AACnB,qBAAa,SAAU,SAAQ,cAAsB,YAAW,aAAa;IACzE,KAAK,EAAE,aAAa,CAAC;IACrB,MAAM,EAAE,CAAC,YAAY,CAAC,OAAO,OAAO,CAAC,CAAC,EAAE,CAAM;IAE9C,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;IA+B1C,MAAM,IAAI,OAAO,CAAC;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;IAW3C,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,KAAK,GAAG,EAAE,UAAU,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;CAGpH"}
|
package/dist/src/SQLDelete.js
CHANGED
|
@@ -2,11 +2,12 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.SQLDelete = void 0;
|
|
4
4
|
const simple_database_1 = require("@simonbackx/simple-database");
|
|
5
|
-
const
|
|
6
|
-
const
|
|
5
|
+
const SQLExpression_js_1 = require("./SQLExpression.js");
|
|
6
|
+
const SQLLogger_js_1 = require("./SQLLogger.js");
|
|
7
|
+
const SQLWhere_js_1 = require("./SQLWhere.js");
|
|
7
8
|
class EmptyClass {
|
|
8
9
|
}
|
|
9
|
-
class SQLDelete extends (0,
|
|
10
|
+
class SQLDelete extends (0, SQLWhere_js_1.Whereable)(EmptyClass) {
|
|
10
11
|
_from;
|
|
11
12
|
_joins = [];
|
|
12
13
|
clone() {
|
|
@@ -42,15 +43,14 @@ class SQLDelete extends (0, SQLWhere_1.Whereable)(EmptyClass) {
|
|
|
42
43
|
query.push(this._where.getSQL(options));
|
|
43
44
|
}
|
|
44
45
|
}
|
|
45
|
-
return (0,
|
|
46
|
+
return (0, SQLExpression_js_1.joinSQLQuery)(query, ' ');
|
|
46
47
|
}
|
|
47
48
|
async delete() {
|
|
48
49
|
if (this._where && this._where.isAlways === false) {
|
|
49
50
|
return { affectedRows: 0 };
|
|
50
51
|
}
|
|
51
|
-
const { query, params } = (0,
|
|
52
|
-
|
|
53
|
-
const [rows] = await simple_database_1.Database.delete(query, params);
|
|
52
|
+
const { query, params } = (0, SQLExpression_js_1.normalizeSQLQuery)(this.getSQL());
|
|
53
|
+
const [rows] = await SQLLogger_js_1.SQLLogger.log(simple_database_1.Database.delete(query, params), query, params);
|
|
54
54
|
return rows;
|
|
55
55
|
}
|
|
56
56
|
async then(onFulfilled, onRejected) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SQLDelete.js","sourceRoot":"","sources":["../../src/SQLDelete.ts"],"names":[],"mappings":";;;AAAA,iEAAuD;AACvD,
|
|
1
|
+
{"version":3,"file":"SQLDelete.js","sourceRoot":"","sources":["../../src/SQLDelete.ts"],"names":[],"mappings":";;;AAAA,iEAAuD;AACvD,yDAAoH;AAEpH,iDAA2C;AAC3C,+CAA0C;AAE1C,MAAM,UAAU;CAAG;AACnB,MAAa,SAAU,SAAQ,IAAA,uBAAS,EAAC,UAAU,CAAC;IAChD,KAAK,CAAgB;IACrB,MAAM,GAAqC,EAAE,CAAC;IAE9C,KAAK;QACD,MAAM,CAAC,GAAG,IAAI,SAAS,EAAE,CAAC;QAC1B,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,CAAC;QAEF,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;QACxB,OAAO,CAAC,gBAAgB,GAAI,IAAI,CAAC,KAAa,CAAC,SAAS,IAAK,IAAI,CAAC,KAAa,CAAC,KAAK,IAAI,SAAS,CAAC;QAEnG,KAAK,CAAC,IAAI,CACN,MAAM,CACT,CAAC;QAEF,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,CAAC;QAEvD,QAAQ;QACR,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;YACpC,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;gBACnB,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;YACjF,CAAC;iBACI,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBACvB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACpB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;YAC5C,CAAC;QACL,CAAC;QAED,OAAO,IAAA,+BAAY,EAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,MAAM;QACR,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;YAChD,OAAO,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC;QAC/B,CAAC;QAED,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAA,oCAAiB,EAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QAE3D,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,wBAAS,CAAC,GAAG,CAAC,0BAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QAClF,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,WAAqD,EAAE,UAAgC;QAC9F,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IACvD,CAAC;CACJ;AAjED,8BAiEC"}
|
package/dist/src/SQLInsert.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { SQLExpression, SQLExpressionOptions, SQLQuery } from './SQLExpression';
|
|
2
|
-
import { SQLAlias, SQLAssignment, SQLScalarValue, SQLTableExpression } from './SQLExpressions';
|
|
1
|
+
import { SQLExpression, SQLExpressionOptions, SQLQuery } from './SQLExpression.js';
|
|
2
|
+
import { SQLAlias, SQLAssignment, SQLScalarValue, SQLTableExpression } from './SQLExpressions.js';
|
|
3
3
|
export declare class SQLInsert implements SQLExpression {
|
|
4
4
|
_columns: SQLExpression[];
|
|
5
5
|
_values: SQLExpression[][];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SQLInsert.d.ts","sourceRoot":"","sources":["../../src/SQLInsert.ts"],"names":[],"mappings":"AACA,OAAO,EAAoD,aAAa,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"SQLInsert.d.ts","sourceRoot":"","sources":["../../src/SQLInsert.ts"],"names":[],"mappings":"AACA,OAAO,EAAoD,aAAa,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACrI,OAAO,EAAyB,QAAQ,EAAE,aAAa,EAAuB,cAAc,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAG9I,qBAAa,SAAU,YAAW,aAAa;IAC3C,QAAQ,EAAE,aAAa,EAAE,CAAM;IAC/B,OAAO,EAAE,aAAa,EAAE,EAAE,CAAM;IAChC,GAAG,EAAE,QAAQ,GAAG,IAAI,CAAQ;IAC5B,KAAK,EAAE,kBAAkB,CAAC;IAC1B,qBAAqB,EAAE,aAAa,EAAE,GAAG,IAAI,CAAQ;gBAEzC,SAAS,EAAE,kBAAkB,GAAG,MAAM;IAIlD,KAAK,IAAI,IAAI;IAMb,OAAO,CAAC,GAAG,OAAO,EAAE,CAAC,aAAa,GAAG,MAAM,CAAC,EAAE,GAAG,IAAI;IAKrD,MAAM,CAAC,GAAG,MAAM,EAAE,CAAC,aAAa,GAAG,cAAc,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,IAAI;IAYpE,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKvB,oBAAoB,CAAC,GAAG,WAAW,EAAE,aAAa,EAAE,GAAG,IAAI;IAK3D,MAAM,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,QAAQ;IA0D1C,MAAM,IAAI,OAAO,CAAC;QAAE,QAAQ,EAAE,GAAG,CAAC;QAAA,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;CAKlE"}
|
package/dist/src/SQLInsert.js
CHANGED
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.SQLInsert = void 0;
|
|
4
4
|
const simple_database_1 = require("@simonbackx/simple-database");
|
|
5
|
-
const
|
|
6
|
-
const
|
|
5
|
+
const SQLExpression_js_1 = require("./SQLExpression.js");
|
|
6
|
+
const SQLExpressions_js_1 = require("./SQLExpressions.js");
|
|
7
|
+
const SQLLogger_js_1 = require("./SQLLogger.js");
|
|
7
8
|
class SQLInsert {
|
|
8
9
|
_columns = [];
|
|
9
10
|
_values = [];
|
|
@@ -11,7 +12,7 @@ class SQLInsert {
|
|
|
11
12
|
_into;
|
|
12
13
|
_onDuplicateKeyUpdate = null;
|
|
13
14
|
constructor(tableName) {
|
|
14
|
-
this._into = typeof tableName === 'string' ? new
|
|
15
|
+
this._into = typeof tableName === 'string' ? new SQLExpressions_js_1.SQLTableExpression(tableName) : tableName;
|
|
15
16
|
}
|
|
16
17
|
clone() {
|
|
17
18
|
const c = new SQLInsert(this._into);
|
|
@@ -19,7 +20,7 @@ class SQLInsert {
|
|
|
19
20
|
return c;
|
|
20
21
|
}
|
|
21
22
|
columns(...columns) {
|
|
22
|
-
this._columns = columns.map(c => typeof c === 'string' ? new
|
|
23
|
+
this._columns = columns.map(c => typeof c === 'string' ? new SQLExpressions_js_1.SQLColumnExpression(c) : c);
|
|
23
24
|
return this;
|
|
24
25
|
}
|
|
25
26
|
values(...values) {
|
|
@@ -27,12 +28,12 @@ class SQLInsert {
|
|
|
27
28
|
if (v.length !== this._columns.length) {
|
|
28
29
|
throw new Error('Invalid number of values. Expected ' + this._columns.length + ' but got ' + v.length);
|
|
29
30
|
}
|
|
30
|
-
return v.map(c => (0,
|
|
31
|
+
return v.map(c => (0, SQLExpression_js_1.isSQLExpression)(c) ? c : (0, SQLExpressions_js_1.scalarToSQLExpression)(c));
|
|
31
32
|
});
|
|
32
33
|
return this;
|
|
33
34
|
}
|
|
34
35
|
as(alias) {
|
|
35
|
-
this._as = new
|
|
36
|
+
this._as = new SQLExpressions_js_1.SQLAlias(alias);
|
|
36
37
|
return this;
|
|
37
38
|
}
|
|
38
39
|
onDuplicateKeyUpdate(...assignments) {
|
|
@@ -52,15 +53,15 @@ class SQLInsert {
|
|
|
52
53
|
this._into.getSQL(options),
|
|
53
54
|
];
|
|
54
55
|
const columns = this._columns.map(c => c.getSQL(options));
|
|
55
|
-
query.push((0,
|
|
56
|
+
query.push((0, SQLExpression_js_1.joinSQLQuery)([
|
|
56
57
|
'(',
|
|
57
|
-
(0,
|
|
58
|
+
(0, SQLExpression_js_1.joinSQLQuery)(columns, ', '),
|
|
58
59
|
')',
|
|
59
60
|
]));
|
|
60
61
|
query.push('VALUES');
|
|
61
|
-
query.push((0,
|
|
62
|
+
query.push((0, SQLExpression_js_1.joinSQLQuery)(this._values.map(values => (0, SQLExpression_js_1.joinSQLQuery)([
|
|
62
63
|
'(',
|
|
63
|
-
(0,
|
|
64
|
+
(0, SQLExpression_js_1.joinSQLQuery)(values.map(v => v.getSQL(options)), ', '),
|
|
64
65
|
')',
|
|
65
66
|
])), ', '));
|
|
66
67
|
if (this._as !== null) {
|
|
@@ -68,14 +69,13 @@ class SQLInsert {
|
|
|
68
69
|
}
|
|
69
70
|
if (this._onDuplicateKeyUpdate !== null) {
|
|
70
71
|
query.push('ON DUPLICATE KEY UPDATE');
|
|
71
|
-
query.push((0,
|
|
72
|
+
query.push((0, SQLExpression_js_1.joinSQLQuery)(this._onDuplicateKeyUpdate.map(a => a.getSQL(options)), ', '));
|
|
72
73
|
}
|
|
73
|
-
return (0,
|
|
74
|
+
return (0, SQLExpression_js_1.joinSQLQuery)(query, ' ');
|
|
74
75
|
}
|
|
75
76
|
async insert() {
|
|
76
|
-
const { query, params } = (0,
|
|
77
|
-
|
|
78
|
-
const result = await simple_database_1.Database.insert(query, params);
|
|
77
|
+
const { query, params } = (0, SQLExpression_js_1.normalizeSQLQuery)(this.getSQL());
|
|
78
|
+
const result = await SQLLogger_js_1.SQLLogger.log(simple_database_1.Database.insert(query, params), query, params);
|
|
79
79
|
return result[0];
|
|
80
80
|
}
|
|
81
81
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SQLInsert.js","sourceRoot":"","sources":["../../src/SQLInsert.ts"],"names":[],"mappings":";;;AAAA,iEAAuD;AACvD,
|
|
1
|
+
{"version":3,"file":"SQLInsert.js","sourceRoot":"","sources":["../../src/SQLInsert.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
declare class StaticSQLLogger {
|
|
2
|
+
slowQueryThresholdMs: number | null;
|
|
3
|
+
explainAllAndLogInefficient: boolean;
|
|
4
|
+
explain(query: string, params: any[]): Promise<import("@simonbackx/simple-database").SQLResultRow | null>;
|
|
5
|
+
logInefficientExplainResult(query: string, params: any[], explainResult: any): Promise<void>;
|
|
6
|
+
log<T>(queryPromise: Promise<T>, query: string, params: any[]): Promise<T>;
|
|
7
|
+
}
|
|
8
|
+
export declare const SQLLogger: StaticSQLLogger;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=SQLLogger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SQLLogger.d.ts","sourceRoot":"","sources":["../../src/SQLLogger.ts"],"names":[],"mappings":"AAGA,cAAM,eAAe;IACjB,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAQ;IAC3C,2BAA2B,UAAS;IAE9B,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE;IAapC,2BAA2B,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,aAAa,EAAE,GAAG;IAgB5E,GAAG,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC;CA4BnF;AAED,eAAO,MAAM,SAAS,iBAAwB,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SQLLogger = void 0;
|
|
4
|
+
const simple_database_1 = require("@simonbackx/simple-database");
|
|
5
|
+
const simple_logging_1 = require("@simonbackx/simple-logging");
|
|
6
|
+
class StaticSQLLogger {
|
|
7
|
+
slowQueryThresholdMs = null;
|
|
8
|
+
explainAllAndLogInefficient = false;
|
|
9
|
+
async explain(query, params) {
|
|
10
|
+
// Run an EXPLAIN on the query to see what is going on
|
|
11
|
+
try {
|
|
12
|
+
const explainQuery = 'EXPLAIN ' + query;
|
|
13
|
+
const [explainRows] = await simple_database_1.Database.select(explainQuery, params, { nestTables: true });
|
|
14
|
+
return explainRows[0]?.[''] ?? null;
|
|
15
|
+
}
|
|
16
|
+
catch (e) {
|
|
17
|
+
console.error('Error running EXPLAIN on slow query', e);
|
|
18
|
+
}
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
async logInefficientExplainResult(query, params, explainResult) {
|
|
22
|
+
if (!explainResult) {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
if (explainResult['type'] === 'ALL') {
|
|
26
|
+
console.warn(new simple_logging_1.StyledText('[FULL TABLE SCAN] ').addClass('error').addTag('query'), 'Inefficient query detected:', query, params, 'EXPLAIN result:', explainResult);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
async log(queryPromise, query, params) {
|
|
30
|
+
if (this.slowQueryThresholdMs === null) {
|
|
31
|
+
if (this.explainAllAndLogInefficient) {
|
|
32
|
+
const result = await queryPromise;
|
|
33
|
+
await this.logInefficientExplainResult(query, params, await this.explain(query, params));
|
|
34
|
+
return result;
|
|
35
|
+
}
|
|
36
|
+
return queryPromise;
|
|
37
|
+
}
|
|
38
|
+
const startTime = process.hrtime.bigint();
|
|
39
|
+
const result = await queryPromise;
|
|
40
|
+
const elapsedTime = process.hrtime.bigint() - startTime;
|
|
41
|
+
// Convert to ms
|
|
42
|
+
const elapsedTimeMs = Number(elapsedTime) / 1000 / 1000;
|
|
43
|
+
if (elapsedTimeMs > this.slowQueryThresholdMs) {
|
|
44
|
+
console.trace('Slow SQL query (' + elapsedTimeMs.toFixed(2) + 'ms)\nQuery: ' + query, params);
|
|
45
|
+
}
|
|
46
|
+
if (this.explainAllAndLogInefficient) {
|
|
47
|
+
await this.logInefficientExplainResult(query, params, await this.explain(query, params));
|
|
48
|
+
return result;
|
|
49
|
+
}
|
|
50
|
+
return result;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
exports.SQLLogger = new StaticSQLLogger();
|
|
54
|
+
//# sourceMappingURL=SQLLogger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SQLLogger.js","sourceRoot":"","sources":["../../src/SQLLogger.ts"],"names":[],"mappings":";;;AAAA,iEAAuD;AACvD,+DAAwD;AAExD,MAAM,eAAe;IACjB,oBAAoB,GAAkB,IAAI,CAAC;IAC3C,2BAA2B,GAAG,KAAK,CAAC;IAEpC,KAAK,CAAC,OAAO,CAAC,KAAa,EAAE,MAAa;QACtC,sDAAsD;QACtD,IAAI,CAAC;YACD,MAAM,YAAY,GAAG,UAAU,GAAG,KAAK,CAAC;YACxC,MAAM,CAAC,WAAW,CAAC,GAAG,MAAM,0BAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;YACxF,OAAO,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC;QACxC,CAAC;QACD,OAAO,CAAC,EAAE,CAAC;YACP,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,CAAC,CAAC,CAAC;QAC5D,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,2BAA2B,CAAC,KAAa,EAAE,MAAa,EAAE,aAAkB;QAC9E,IAAI,CAAC,aAAa,EAAE,CAAC;YACjB,OAAO;QACX,CAAC;QACD,IAAI,aAAa,CAAC,MAAM,CAAC,KAAK,KAAK,EAAE,CAAC;YAClC,OAAO,CAAC,IAAI,CACR,IAAI,2BAAU,CAAC,oBAAoB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EACtE,6BAA6B,EAC7B,KAAK,EACL,MAAM,EACN,iBAAiB,EACjB,aAAa,CAChB,CAAC;QACN,CAAC;IACL,CAAC;IAED,KAAK,CAAC,GAAG,CAAI,YAAwB,EAAE,KAAa,EAAE,MAAa;QAC/D,IAAI,IAAI,CAAC,oBAAoB,KAAK,IAAI,EAAE,CAAC;YACrC,IAAI,IAAI,CAAC,2BAA2B,EAAE,CAAC;gBACnC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC;gBAClC,MAAM,IAAI,CAAC,2BAA2B,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;gBACzF,OAAO,MAAM,CAAC;YAClB,CAAC;YACD,OAAO,YAAY,CAAC;QACxB,CAAC;QAED,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QAC1C,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC;QAClC,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC;QAExD,gBAAgB;QAChB,MAAM,aAAa,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;QAExD,IAAI,aAAa,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5C,OAAO,CAAC,KAAK,CAAC,kBAAkB,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,cAAc,GAAG,KAAK,EAAE,MAAM,CAAC,CAAC;QAClG,CAAC;QAED,IAAI,IAAI,CAAC,2BAA2B,EAAE,CAAC;YACnC,MAAM,IAAI,CAAC,2BAA2B,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;YACzF,OAAO,MAAM,CAAC;QAClB,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ;AAEY,QAAA,SAAS,GAAG,IAAI,eAAe,EAAE,CAAC"}
|
package/dist/src/SQLSelect.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { SQLResultNamespacedRow } from '@simonbackx/simple-database';
|
|
2
|
-
import { SQLExpression, SQLExpressionOptions, SQLNamedExpression, SQLQuery } from './SQLExpression';
|
|
3
|
-
import { SQLJoin } from './SQLJoin';
|
|
2
|
+
import { SQLExpression, SQLExpressionOptions, SQLNamedExpression, SQLQuery } from './SQLExpression.js';
|
|
3
|
+
import { SQLJoin } from './SQLJoin.js';
|
|
4
4
|
declare class EmptyClass {
|
|
5
5
|
}
|
|
6
6
|
export declare function parseTable(tableOrExpression: SQLNamedExpression | string, asNamespace?: string): SQLNamedExpression;
|
|
@@ -20,20 +20,20 @@ export type SQLNamedSelect<T extends object = SQLResultNamespacedRow> = SQLSelec
|
|
|
20
20
|
};
|
|
21
21
|
declare const SQLSelect_base: {
|
|
22
22
|
new (...args: any[]): {
|
|
23
|
-
_where: import("./SQLWhere").SQLWhere | null;
|
|
24
|
-
readonly __where: import("./SQLWhere").SQLWhere;
|
|
25
|
-
where<T_1>(this: T_1, ...args: import("./SQLWhere").ParseWhereArguments): T_1;
|
|
26
|
-
andWhere<T_1>(this: T_1, ...args: import("./SQLWhere").ParseWhereArguments): T_1;
|
|
27
|
-
orWhere<T_1>(this: T_1, ...args: import("./SQLWhere").ParseWhereArguments): T_1;
|
|
28
|
-
whereNot<T_1>(this: T_1, ...args: import("./SQLWhere").ParseWhereArguments): T_1;
|
|
29
|
-
andWhereNot<T_1>(this: T_1, ...args: import("./SQLWhere").ParseWhereArguments): T_1;
|
|
30
|
-
orWhereNot<T_1>(this: T_1, ...args: import("./SQLWhere").ParseWhereArguments): T_1;
|
|
23
|
+
_where: import("./SQLWhere.js").SQLWhere | null;
|
|
24
|
+
readonly __where: import("./SQLWhere.js").SQLWhere;
|
|
25
|
+
where<T_1>(this: T_1, ...args: import("./SQLWhere.js").ParseWhereArguments): T_1;
|
|
26
|
+
andWhere<T_1>(this: T_1, ...args: import("./SQLWhere.js").ParseWhereArguments): T_1;
|
|
27
|
+
orWhere<T_1>(this: T_1, ...args: import("./SQLWhere.js").ParseWhereArguments): T_1;
|
|
28
|
+
whereNot<T_1>(this: T_1, ...args: import("./SQLWhere.js").ParseWhereArguments): T_1;
|
|
29
|
+
andWhereNot<T_1>(this: T_1, ...args: import("./SQLWhere.js").ParseWhereArguments): T_1;
|
|
30
|
+
orWhereNot<T_1>(this: T_1, ...args: import("./SQLWhere.js").ParseWhereArguments): T_1;
|
|
31
31
|
};
|
|
32
32
|
} & {
|
|
33
33
|
new (...args: any[]): {
|
|
34
|
-
_orderBy: import("./SQLOrderBy").SQLOrderBy | null;
|
|
35
|
-
orderBy<T_1>(this: T_1, orderBy: import("./SQLOrderBy").SQLOrderBy): T_1;
|
|
36
|
-
orderBy<T_1>(this: T_1, column: SQLExpression | string, direction?: import("./SQLOrderBy").SQLOrderByDirection): T_1;
|
|
34
|
+
_orderBy: import("./SQLOrderBy.js").SQLOrderBy | null;
|
|
35
|
+
orderBy<T_1>(this: T_1, orderBy: import("./SQLOrderBy.js").SQLOrderBy): T_1;
|
|
36
|
+
orderBy<T_1>(this: T_1, column: SQLExpression | string, direction?: import("./SQLOrderBy.js").SQLOrderByDirection): T_1;
|
|
37
37
|
};
|
|
38
38
|
} & typeof EmptyClass;
|
|
39
39
|
export declare class SQLSelect<T extends object = SQLResultNamespacedRow> extends SQLSelect_base implements SQLExpression {
|
|
@@ -45,6 +45,7 @@ export declare class SQLSelect<T extends object = SQLResultNamespacedRow> extend
|
|
|
45
45
|
_joins: (InstanceType<typeof SQLJoin>)[];
|
|
46
46
|
_max_execution_time: number | null;
|
|
47
47
|
private _name;
|
|
48
|
+
static slowQueryThresholdMs: number | null;
|
|
48
49
|
_transformer: ((row: SQLResultNamespacedRow) => T) | null;
|
|
49
50
|
constructor(...columns: (SQLExpression | string)[]);
|
|
50
51
|
constructor(transformer: ((row: SQLResultNamespacedRow) => T), ...columns: (SQLExpression | string)[]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SQLSelect.d.ts","sourceRoot":"","sources":["../../src/SQLSelect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAE/E,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,QAAQ,EAAmC,MAAM,
|
|
1
|
+
{"version":3,"file":"SQLSelect.d.ts","sourceRoot":"","sources":["../../src/SQLSelect.ts"],"names":[],"mappings":"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"}
|
package/dist/src/SQLSelect.js
CHANGED
|
@@ -4,21 +4,22 @@ exports.SQLSelect = void 0;
|
|
|
4
4
|
exports.parseTable = parseTable;
|
|
5
5
|
const simple_database_1 = require("@simonbackx/simple-database");
|
|
6
6
|
const utility_1 = require("@stamhoofd/utility");
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
const
|
|
7
|
+
const SQLExpression_js_1 = require("./SQLExpression.js");
|
|
8
|
+
const SQLExpressions_js_1 = require("./SQLExpressions.js");
|
|
9
|
+
const SQLOrderBy_js_1 = require("./SQLOrderBy.js");
|
|
10
|
+
const SQLWhere_js_1 = require("./SQLWhere.js");
|
|
11
|
+
const SQLLogger_js_1 = require("./SQLLogger.js");
|
|
11
12
|
class EmptyClass {
|
|
12
13
|
}
|
|
13
14
|
function parseTable(tableOrExpression, asNamespace) {
|
|
14
15
|
if (typeof tableOrExpression === 'string') {
|
|
15
|
-
return new
|
|
16
|
+
return new SQLExpressions_js_1.SQLTableExpression(tableOrExpression, asNamespace);
|
|
16
17
|
}
|
|
17
18
|
else {
|
|
18
19
|
return tableOrExpression;
|
|
19
20
|
}
|
|
20
21
|
}
|
|
21
|
-
class SQLSelect extends (0,
|
|
22
|
+
class SQLSelect extends (0, SQLWhere_js_1.Whereable)((0, SQLOrderBy_js_1.Orderable)(EmptyClass)) {
|
|
22
23
|
_columns;
|
|
23
24
|
_from;
|
|
24
25
|
_limit = null;
|
|
@@ -27,13 +28,14 @@ class SQLSelect extends (0, SQLWhere_1.Whereable)((0, SQLOrderBy_1.Orderable)(Em
|
|
|
27
28
|
_joins = [];
|
|
28
29
|
_max_execution_time = null;
|
|
29
30
|
_name = null;
|
|
31
|
+
static slowQueryThresholdMs = null;
|
|
30
32
|
_transformer = null;
|
|
31
33
|
constructor(...columns) {
|
|
32
34
|
super();
|
|
33
35
|
if (typeof columns[0] === 'function') {
|
|
34
36
|
this._transformer = columns.shift();
|
|
35
37
|
}
|
|
36
|
-
this._columns = columns.map(c => typeof c === 'string' ? new
|
|
38
|
+
this._columns = columns.map(c => typeof c === 'string' ? new SQLExpressions_js_1.SQLColumnExpression(c) : c);
|
|
37
39
|
}
|
|
38
40
|
clone() {
|
|
39
41
|
const c = new SQLSelect(...this._columns);
|
|
@@ -46,7 +48,7 @@ class SQLSelect extends (0, SQLWhere_1.Whereable)((0, SQLOrderBy_1.Orderable)(Em
|
|
|
46
48
|
return this;
|
|
47
49
|
}
|
|
48
50
|
select(...columns) {
|
|
49
|
-
this._columns.push(...columns.map(c => typeof c === 'string' ? new
|
|
51
|
+
this._columns.push(...columns.map(c => typeof c === 'string' ? new SQLExpressions_js_1.SQLColumnExpression(c) : c));
|
|
50
52
|
return this;
|
|
51
53
|
}
|
|
52
54
|
join(join) {
|
|
@@ -79,7 +81,7 @@ class SQLSelect extends (0, SQLWhere_1.Whereable)((0, SQLOrderBy_1.Orderable)(Em
|
|
|
79
81
|
options.parentNamespace = parentOptions.defaultNamespace;
|
|
80
82
|
}
|
|
81
83
|
const columns = this._columns.map(c => c.getSQL(options));
|
|
82
|
-
query.push((0,
|
|
84
|
+
query.push((0, SQLExpression_js_1.joinSQLQuery)(columns, ', '));
|
|
83
85
|
query.push('FROM');
|
|
84
86
|
query.push(this._from.getSQL(options));
|
|
85
87
|
// Joins
|
|
@@ -101,7 +103,7 @@ class SQLSelect extends (0, SQLWhere_1.Whereable)((0, SQLOrderBy_1.Orderable)(Em
|
|
|
101
103
|
}
|
|
102
104
|
if (this._groupBy.length > 0) {
|
|
103
105
|
query.push('GROUP BY');
|
|
104
|
-
query.push((0,
|
|
106
|
+
query.push((0, SQLExpression_js_1.joinSQLQuery)(this._groupBy.map(c => c.getSQL(options)), ', '));
|
|
105
107
|
}
|
|
106
108
|
if (this._orderBy) {
|
|
107
109
|
query.push(this._orderBy.getSQL(options));
|
|
@@ -112,7 +114,7 @@ class SQLSelect extends (0, SQLWhere_1.Whereable)((0, SQLOrderBy_1.Orderable)(Em
|
|
|
112
114
|
query.push('OFFSET ' + this._offset);
|
|
113
115
|
}
|
|
114
116
|
}
|
|
115
|
-
return (0,
|
|
117
|
+
return (0, SQLExpression_js_1.joinSQLQuery)(query, ' ');
|
|
116
118
|
}
|
|
117
119
|
/**
|
|
118
120
|
* Returns true when it know all results will be included without filtering.
|
|
@@ -131,12 +133,12 @@ class SQLSelect extends (0, SQLWhere_1.Whereable)((0, SQLOrderBy_1.Orderable)(Em
|
|
|
131
133
|
if (this._where && this._where.isAlways === false) {
|
|
132
134
|
return [];
|
|
133
135
|
}
|
|
134
|
-
const { query, params } = (0,
|
|
136
|
+
const { query, params } = (0, SQLExpression_js_1.normalizeSQLQuery)(this.getSQL());
|
|
135
137
|
// when debugging: log all queries
|
|
136
138
|
// console.log(query, params);
|
|
137
139
|
let rows;
|
|
138
140
|
try {
|
|
139
|
-
const [_rows] = await simple_database_1.Database.select(query, params, { nestTables: true });
|
|
141
|
+
const [_rows] = await SQLLogger_js_1.SQLLogger.log(simple_database_1.Database.select(query, params, { nestTables: true }), query, params);
|
|
140
142
|
rows = _rows;
|
|
141
143
|
}
|
|
142
144
|
catch (e) {
|
|
@@ -180,13 +182,13 @@ class SQLSelect extends (0, SQLWhere_1.Whereable)((0, SQLOrderBy_1.Orderable)(Em
|
|
|
180
182
|
return 0;
|
|
181
183
|
}
|
|
182
184
|
this._columns = [
|
|
183
|
-
new
|
|
185
|
+
new SQLExpressions_js_1.SQLSelectAs(new SQLExpressions_js_1.SQLCount(expression ?? null), new SQLExpressions_js_1.SQLAlias('c')),
|
|
184
186
|
];
|
|
185
187
|
this._offset = null;
|
|
186
188
|
this._limit = null;
|
|
187
189
|
this._orderBy = null;
|
|
188
|
-
const { query, params } = (0,
|
|
189
|
-
const [rows] = await simple_database_1.Database.select(query, params, { nestTables: true });
|
|
190
|
+
const { query, params } = (0, SQLExpression_js_1.normalizeSQLQuery)(this.getSQL());
|
|
191
|
+
const [rows] = await SQLLogger_js_1.SQLLogger.log(simple_database_1.Database.select(query, params, { nestTables: true }), query, params);
|
|
190
192
|
if (rows.length === 1) {
|
|
191
193
|
const row = rows[0];
|
|
192
194
|
if ('' in row) {
|
|
@@ -207,14 +209,14 @@ class SQLSelect extends (0, SQLWhere_1.Whereable)((0, SQLOrderBy_1.Orderable)(Em
|
|
|
207
209
|
return 0;
|
|
208
210
|
}
|
|
209
211
|
this._columns = [
|
|
210
|
-
new
|
|
212
|
+
new SQLExpressions_js_1.SQLSelectAs(new SQLExpressions_js_1.SQLSum(expression), new SQLExpressions_js_1.SQLAlias('c')),
|
|
211
213
|
];
|
|
212
214
|
this._offset = null;
|
|
213
215
|
this._limit = null;
|
|
214
216
|
this._orderBy = null;
|
|
215
|
-
const { query, params } = (0,
|
|
217
|
+
const { query, params } = (0, SQLExpression_js_1.normalizeSQLQuery)(this.getSQL());
|
|
216
218
|
// console.log(query, params);
|
|
217
|
-
const [rows] = await simple_database_1.Database.select(query, params, { nestTables: true });
|
|
219
|
+
const [rows] = await SQLLogger_js_1.SQLLogger.log(simple_database_1.Database.select(query, params, { nestTables: true }), query, params);
|
|
218
220
|
if (rows.length === 1) {
|
|
219
221
|
const row = rows[0];
|
|
220
222
|
if ('' in row) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SQLSelect.js","sourceRoot":"","sources":["../../src/SQLSelect.ts"],"names":[],"mappings":";;;AAUA,gCAOC;AAjBD,iEAA+E;AAC/E,gDAA+C;AAC/C,mDAAqI;AACrI,qDAAoH;AAEpH,6CAAyC;AACzC,yCAAuC;AAEvC,MAAM,UAAU;CAAG;AAEnB,SAAgB,UAAU,CAAC,iBAA8C,EAAE,WAAoB;IAC3F,IAAI,OAAO,iBAAiB,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,IAAI,mCAAkB,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC;IAClE,CAAC;SACI,CAAC;QACF,OAAO,iBAAiB,CAAC;IAC7B,CAAC;AACL,CAAC;AAgBD,MAAa,SAAqD,SAAQ,IAAA,oBAAS,EAAC,IAAA,sBAAS,EAAC,UAAU,CAAC,CAAC;IACtG,QAAQ,CAAkB;IAC1B,KAAK,CAAqB;IAE1B,MAAM,GAAkB,IAAI,CAAC;IAC7B,OAAO,GAAkB,IAAI,CAAC;IAC9B,QAAQ,GAAoB,EAAE,CAAC;IAC/B,MAAM,GAAqC,EAAE,CAAC;IAC9C,mBAAmB,GAAkB,IAAI,CAAC;IAClC,KAAK,GAAkB,IAAI,CAAC;IAEpC,YAAY,GAAgD,IAAI,CAAC;IAIjE,YAAY,GAAG,OAA0E;QACrF,KAAK,EAAE,CAAC;QAER,IAAI,OAAO,OAAO,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE,CAAC;YACnC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,KAAK,EAAS,CAAC;QAC/C,CAAC;QACD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,oCAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAQ,CAAC;IACpG,CAAC;IAED,KAAK;QACD,MAAM,CAAC,GAAG,IAAI,SAAS,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1C,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACvD,OAAO,CAAQ,CAAC;IACpB,CAAC;IAKD,IAAI,CAAC,iBAA8C,EAAE,SAAkB;QACnE,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC;QAEtD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,GAAG,OAAmC;QACzC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,oCAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAChG,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IAAI,CAAC,IAAkC;QACnC,iEAAiE;QACjE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,CAAC,GAAG,OAAwB;QAC/B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;QAC/B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,mBAAmB,CAAC,EAAU;QAC1B,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,OAA8B;QACjC,MAAM,KAAK,GAAe;YACtB,QAAQ;SACX,CAAC;QAEF,IAAI,IAAI,CAAC,mBAAmB,KAAK,IAAI,EAAE,CAAC;YACpC,KAAK,CAAC,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,CAAC;QAC9E,CAAC;QAED,8DAA8D;QAC9D,MAAM,aAAa,GAAG,OAAO,CAAC;QAC9B,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxC,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QAEhD,IAAI,aAAa,EAAE,gBAAgB,EAAE,CAAC;YAClC,OAAO,CAAC,eAAe,GAAG,aAAa,CAAC,gBAAgB,CAAC;QAC7D,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QAC1D,KAAK,CAAC,IAAI,CACN,IAAA,4BAAY,EAAC,OAAO,EAAE,IAAI,CAAC,CAC9B,CAAC;QAEF,KAAK,CAAC,IAAI,CACN,MAAM,CACT,CAAC;QAEF,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QAEvC,QAAQ;QACR,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACvD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,MAAM,UAAU,GAAG,mBAAS,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YACvG,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC1D,CAAC;QAED,QAAQ;QACR,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;YACpC,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;gBACnB,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;YACjF,CAAC;iBACI,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBACvB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACpB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;YAC5C,CAAC;QACL,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACvB,KAAK,CAAC,IAAI,CACN,IAAA,4BAAY,EACR,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EACzC,IAAI,CACP,CACJ,CAAC;QACN,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QAC9C,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;YACnC,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;gBAC9C,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;YACzC,CAAC;QACL,CAAC;QAED,OAAO,IAAA,4BAAY,EAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACpC,CAAC;IAED;;;;OAIG;IACH,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,KAAoB,EAAE,SAAwB,IAAI;QACpD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,KAAK;QACP,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;YAChD,OAAO,EAAE,CAAC;QACd,CAAC;QAED,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAA,iCAAiB,EAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QAE3D,kCAAkC;QAClC,8BAA8B;QAC9B,IAAI,IAA8B,CAAC;QACnC,IAAI,CAAC;YACD,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,0BAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3E,IAAI,GAAG,KAAK,CAAC;QACjB,CAAC;QACD,OAAO,CAAC,EAAE,CAAC;YACP,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;YAC7D,MAAM,CAAC,CAAC;QACZ,CAAC;QAED,sDAAsD;QACtD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACrB,IAAI,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;gBACV,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;oBAC3B,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBACpC,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;wBACvB,OAAO,CAAC,IAAI,CAAC,qCAAqC,EAAE,MAAM,CAAC,CAAC;wBAC5D,SAAS;oBACb,CAAC;oBACD,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;oBAC9B,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;oBACzB,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;oBACtC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;gBAC3C,CAAC;gBACD,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC;YACnB,CAAC;QACL,CAAC;QAED,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACvC,CAAC;QACD,OAAO,IAAW,CAAC;IACvB,CAAC;IAID,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI;QACvB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;QACzC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpB,IAAI,QAAQ,EAAE,CAAC;gBACX,MAAM,IAAI,KAAK,CAAC,kCAAkC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAC/E,CAAC;YACD,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,UAA0B;QAClC,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;YAChD,OAAO,CAAC,CAAC;QACb,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG;YACZ,IAAI,4BAAW,CACX,IAAI,yBAAQ,CAAC,UAAU,IAAI,IAAI,CAAC,EAChC,IAAI,yBAAQ,CAAC,GAAG,CAAC,CACpB;SACJ,CAAC;QACF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QAErB,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAA,iCAAiB,EAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QAE3D,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,0BAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1E,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpB,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACpB,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC;gBACZ,MAAM,UAAU,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC3B,IAAI,GAAG,IAAI,UAAU,EAAE,CAAC;oBACpB,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;oBAC9B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;wBACvD,OAAO,KAAK,CAAC;oBACjB,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,4BAA4B,EAAE,IAAI,CAAC,CAAC;QACjD,OAAO,CAAC,CAAC;IACb,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,UAAyB;QAC/B,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;YAChD,OAAO,CAAC,CAAC;QACb,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG;YACZ,IAAI,4BAAW,CACX,IAAI,uBAAM,CAAC,UAAU,CAAC,EACtB,IAAI,yBAAQ,CAAC,GAAG,CAAC,CACpB;SACJ,CAAC;QACF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QAErB,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAA,iCAAiB,EAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QAC3D,8BAA8B;QAE9B,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,0BAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1E,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpB,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACpB,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC;gBACZ,MAAM,UAAU,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC3B,IAAI,GAAG,IAAI,UAAU,EAAE,CAAC;oBACpB,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;oBAC9B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;wBACvD,OAAO,KAAK,CAAC;oBACjB,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,0BAA0B,EAAE,IAAI,CAAC,CAAC;QAC/C,OAAO,CAAC,CAAC;IACb,CAAC;IAED,GAAG,CAAC,UAAoC,EAAE;QACtC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,iFAAiF,CAAC,CAAC;QACvG,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC7D,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;QACtB,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEnB,IAAI,IAAI,GAAgB,IAAI,CAAC,KAAK,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC;QAElB,IAAI,KAAK,GAAQ,EAAE,CAAC;QACpB,IAAI,UAAU,GAAG,CAAC,CAAC;QAEnB,OAAO;YACH,UAAU,EAAE,CAAC;YACb,OAAO;YACP,CAAC,MAAM,CAAC,aAAa,CAAC;gBAClB,OAAO;oBACH,GAAG,IAAI;oBAEP,qBAAqB;oBACrB,UAAU,EAAE,CAAC;iBAChB,CAAC;YACN,CAAC;YACD,IAAI,MAAM;gBACN,OAAO,CAAC,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC;YACrD,CAAC;YACD,KAAK,CAAC,IAAI;gBACN,UAAU,EAAE,CAAC;gBAEb,IAAI,UAAU,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;oBAC5B,OAAO;wBACH,IAAI,EAAE,KAAK;wBACX,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC;qBAC3B,CAAC;gBACN,CAAC;gBAED,IAAI,CAAC,IAAI,EAAE,CAAC;oBACR,KAAK,GAAG,EAAE,CAAC,CAAC,kBAAkB;oBAC9B,OAAO;wBACH,IAAI,EAAE,IAAI;wBACV,KAAK,EAAE,SAAS;qBACnB,CAAC;gBACN,CAAC;gBAED,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;oBACtF,iBAAiB;oBACjB,OAAO;wBACH,IAAI,EAAE,IAAI;wBACV,KAAK,EAAE,SAAS;qBACnB,CAAC;gBACN,CAAC;gBAED,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC3B,IAAI,GAAG,IAAI,CAAC;gBACZ,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;gBAErB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACrB,OAAO;wBACH,IAAI,EAAE,IAAI;wBACV,KAAK,EAAE,SAAS;qBACnB,CAAC;gBACN,CAAC;gBACD,UAAU,GAAG,CAAC,CAAC;gBAEf,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,EAAE,CAAC;oBACxB,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;oBACpB,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;oBAC5C,IAAI,CAAC,CAAC,IAAI,IAAI,UAAU,CAAC,EAAE,CAAC;wBACxB,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;oBACnE,CAAC;oBAED,MAAM,MAAM,GAAG,UAAU,CAAC,EAAE,CAAC;oBAC7B,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;wBAC7B,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;oBAC1E,CAAC;oBAED,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;gBACrC,CAAC;gBAED,OAAO;oBACH,IAAI,EAAE,KAAK;oBACX,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC;iBAC3B,CAAC;YACN,CAAC;YACD,UAAU,CAAC,UAAkB;gBACzB,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC;gBACrC,OAAO,IAAI,CAAC;YAChB,CAAC;SAC2B,CAAC;IACrC,CAAC;IAED,UAAU,CAAC,UAAoC,EAAE;QAC7C,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,iFAAiF,CAAC,CAAC;QACvG,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC7D,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;QACtB,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEnB,IAAI,IAAI,GAAgB,IAAI,CAAC,KAAK,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC;QAElB,OAAO;YACH,UAAU,EAAE,CAAC;YACb,OAAO;YACP,CAAC,MAAM,CAAC,aAAa,CAAC;gBAClB,OAAO;oBACH,GAAG,IAAI;oBAEP,qBAAqB;oBACrB,UAAU,EAAE,CAAC;iBAChB,CAAC;YACN,CAAC;YACD,IAAI,MAAM;gBACN,OAAO,CAAC,IAAI,CAAC;YACjB,CAAC;YACD,KAAK,CAAC,IAAI;gBACN,IAAI,CAAC,IAAI,EAAE,CAAC;oBACR,OAAO;wBACH,IAAI,EAAE,IAAI;wBACV,KAAK,EAAE,SAAS;qBACnB,CAAC;gBACN,CAAC;gBAED,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;oBACtF,iBAAiB;oBACjB,OAAO;wBACH,IAAI,EAAE,IAAI;wBACV,KAAK,EAAE,SAAS;qBACnB,CAAC;gBACN,CAAC;gBAED,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;gBACjC,IAAI,GAAG,IAAI,CAAC;gBACZ,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;gBAErB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACrB,OAAO;wBACH,IAAI,EAAE,IAAI;wBACV,KAAK,EAAE,SAAS;qBACnB,CAAC;gBACN,CAAC;gBAED,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,EAAE,CAAC;oBACxB,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;oBACpB,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;oBAC5C,IAAI,CAAC,CAAC,IAAI,IAAI,UAAU,CAAC,EAAE,CAAC;wBACxB,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;oBACnE,CAAC;oBAED,MAAM,MAAM,GAAG,UAAU,CAAC,EAAE,CAAC;oBAC7B,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;wBAC7B,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;oBAC1E,CAAC;oBAED,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;gBACrC,CAAC;gBAED,OAAO;oBACH,IAAI,EAAE,KAAK;oBACX,KAAK,EAAE,KAAK;iBACf,CAAC;YACN,CAAC;YACD,UAAU,CAAC,UAAkB;gBACzB,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC;gBACrC,OAAO,IAAI,CAAC;YAChB,CAAC;SAC6B,CAAC;IACvC,CAAC;IAED,OAAO;QACH,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAED;;;;OAIG;IACH,EAAE,CAAC,IAAY;QACX,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAElB,OAAO,IAAsB,CAAC;IAClC,CAAC;CACJ;AA/dD,8BA+dC"}
|
|
1
|
+
{"version":3,"file":"SQLSelect.js","sourceRoot":"","sources":["../../src/SQLSelect.ts"],"names":[],"mappings":";;;AAWA,gCAOC;AAlBD,iEAA+E;AAC/E,gDAA+C;AAC/C,yDAAwI;AACxI,2DAAuH;AAEvH,mDAA4C;AAC5C,+CAA0C;AAC1C,iDAA2C;AAE3C,MAAM,UAAU;CAAG;AAEnB,SAAgB,UAAU,CAAC,iBAA8C,EAAE,WAAoB;IAC3F,IAAI,OAAO,iBAAiB,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,IAAI,sCAAkB,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC;IAClE,CAAC;SACI,CAAC;QACF,OAAO,iBAAiB,CAAC;IAC7B,CAAC;AACL,CAAC;AAgBD,MAAa,SAAqD,SAAQ,IAAA,uBAAS,EAAC,IAAA,yBAAS,EAAC,UAAU,CAAC,CAAC;IACtG,QAAQ,CAAkB;IAC1B,KAAK,CAAqB;IAE1B,MAAM,GAAkB,IAAI,CAAC;IAC7B,OAAO,GAAkB,IAAI,CAAC;IAC9B,QAAQ,GAAoB,EAAE,CAAC;IAC/B,MAAM,GAAqC,EAAE,CAAC;IAC9C,mBAAmB,GAAkB,IAAI,CAAC;IAClC,KAAK,GAAkB,IAAI,CAAC;IACpC,MAAM,CAAC,oBAAoB,GAAkB,IAAI,CAAC;IAElD,YAAY,GAAgD,IAAI,CAAC;IAIjE,YAAY,GAAG,OAA0E;QACrF,KAAK,EAAE,CAAC;QAER,IAAI,OAAO,OAAO,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE,CAAC;YACnC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,KAAK,EAAS,CAAC;QAC/C,CAAC;QACD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,uCAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAQ,CAAC;IACpG,CAAC;IAED,KAAK;QACD,MAAM,CAAC,GAAG,IAAI,SAAS,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1C,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACvD,OAAO,CAAQ,CAAC;IACpB,CAAC;IAKD,IAAI,CAAC,iBAA8C,EAAE,SAAkB;QACnE,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC;QAEtD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,GAAG,OAAmC;QACzC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,uCAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAChG,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IAAI,CAAC,IAAkC;QACnC,iEAAiE;QACjE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,CAAC,GAAG,OAAwB;QAC/B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;QAC/B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,mBAAmB,CAAC,EAAU;QAC1B,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,OAA8B;QACjC,MAAM,KAAK,GAAe;YACtB,QAAQ;SACX,CAAC;QAEF,IAAI,IAAI,CAAC,mBAAmB,KAAK,IAAI,EAAE,CAAC;YACpC,KAAK,CAAC,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,CAAC;QAC9E,CAAC;QAED,8DAA8D;QAC9D,MAAM,aAAa,GAAG,OAAO,CAAC;QAC9B,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxC,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QAEhD,IAAI,aAAa,EAAE,gBAAgB,EAAE,CAAC;YAClC,OAAO,CAAC,eAAe,GAAG,aAAa,CAAC,gBAAgB,CAAC;QAC7D,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QAC1D,KAAK,CAAC,IAAI,CACN,IAAA,+BAAY,EAAC,OAAO,EAAE,IAAI,CAAC,CAC9B,CAAC;QAEF,KAAK,CAAC,IAAI,CACN,MAAM,CACT,CAAC;QAEF,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QAEvC,QAAQ;QACR,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACvD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,MAAM,UAAU,GAAG,mBAAS,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YACvG,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC1D,CAAC;QAED,QAAQ;QACR,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;YACpC,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;gBACnB,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;YACjF,CAAC;iBACI,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBACvB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACpB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;YAC5C,CAAC;QACL,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACvB,KAAK,CAAC,IAAI,CACN,IAAA,+BAAY,EACR,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EACzC,IAAI,CACP,CACJ,CAAC;QACN,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QAC9C,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;YACnC,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;gBAC9C,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;YACzC,CAAC;QACL,CAAC;QAED,OAAO,IAAA,+BAAY,EAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACpC,CAAC;IAED;;;;OAIG;IACH,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,KAAoB,EAAE,SAAwB,IAAI;QACpD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,KAAK;QACP,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;YAChD,OAAO,EAAE,CAAC;QACd,CAAC;QAED,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAA,oCAAiB,EAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QAE3D,kCAAkC;QAClC,8BAA8B;QAC9B,IAAI,IAA8B,CAAC;QACnC,IAAI,CAAC;YACD,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,wBAAS,CAAC,GAAG,CAAC,0BAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YACzG,IAAI,GAAG,KAAK,CAAC;QACjB,CAAC;QACD,OAAO,CAAC,EAAE,CAAC;YACP,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;YAC7D,MAAM,CAAC,CAAC;QACZ,CAAC;QAED,sDAAsD;QACtD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACrB,IAAI,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;gBACV,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;oBAC3B,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBACpC,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;wBACvB,OAAO,CAAC,IAAI,CAAC,qCAAqC,EAAE,MAAM,CAAC,CAAC;wBAC5D,SAAS;oBACb,CAAC;oBACD,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;oBAC9B,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;oBACzB,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;oBACtC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;gBAC3C,CAAC;gBACD,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC;YACnB,CAAC;QACL,CAAC;QAED,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACvC,CAAC;QACD,OAAO,IAAW,CAAC;IACvB,CAAC;IAID,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI;QACvB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;QACzC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpB,IAAI,QAAQ,EAAE,CAAC;gBACX,MAAM,IAAI,KAAK,CAAC,kCAAkC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAC/E,CAAC;YACD,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,UAA0B;QAClC,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;YAChD,OAAO,CAAC,CAAC;QACb,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG;YACZ,IAAI,+BAAW,CACX,IAAI,4BAAQ,CAAC,UAAU,IAAI,IAAI,CAAC,EAChC,IAAI,4BAAQ,CAAC,GAAG,CAAC,CACpB;SACJ,CAAC;QACF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QAErB,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAA,oCAAiB,EAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QAE3D,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,wBAAS,CAAC,GAAG,CAAC,0BAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QACxG,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpB,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACpB,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC;gBACZ,MAAM,UAAU,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC3B,IAAI,GAAG,IAAI,UAAU,EAAE,CAAC;oBACpB,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;oBAC9B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;wBACvD,OAAO,KAAK,CAAC;oBACjB,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,4BAA4B,EAAE,IAAI,CAAC,CAAC;QACjD,OAAO,CAAC,CAAC;IACb,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,UAAyB;QAC/B,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;YAChD,OAAO,CAAC,CAAC;QACb,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG;YACZ,IAAI,+BAAW,CACX,IAAI,0BAAM,CAAC,UAAU,CAAC,EACtB,IAAI,4BAAQ,CAAC,GAAG,CAAC,CACpB;SACJ,CAAC;QACF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QAErB,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAA,oCAAiB,EAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QAC3D,8BAA8B;QAE9B,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,wBAAS,CAAC,GAAG,CAAC,0BAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QACxG,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpB,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACpB,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC;gBACZ,MAAM,UAAU,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC3B,IAAI,GAAG,IAAI,UAAU,EAAE,CAAC;oBACpB,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;oBAC9B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;wBACvD,OAAO,KAAK,CAAC;oBACjB,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,0BAA0B,EAAE,IAAI,CAAC,CAAC;QAC/C,OAAO,CAAC,CAAC;IACb,CAAC;IAED,GAAG,CAAC,UAAoC,EAAE;QACtC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,iFAAiF,CAAC,CAAC;QACvG,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC7D,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;QACtB,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEnB,IAAI,IAAI,GAAgB,IAAI,CAAC,KAAK,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC;QAElB,IAAI,KAAK,GAAQ,EAAE,CAAC;QACpB,IAAI,UAAU,GAAG,CAAC,CAAC;QAEnB,OAAO;YACH,UAAU,EAAE,CAAC;YACb,OAAO;YACP,CAAC,MAAM,CAAC,aAAa,CAAC;gBAClB,OAAO;oBACH,GAAG,IAAI;oBAEP,qBAAqB;oBACrB,UAAU,EAAE,CAAC;iBAChB,CAAC;YACN,CAAC;YACD,IAAI,MAAM;gBACN,OAAO,CAAC,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC;YACrD,CAAC;YACD,KAAK,CAAC,IAAI;gBACN,UAAU,EAAE,CAAC;gBAEb,IAAI,UAAU,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;oBAC5B,OAAO;wBACH,IAAI,EAAE,KAAK;wBACX,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC;qBAC3B,CAAC;gBACN,CAAC;gBAED,IAAI,CAAC,IAAI,EAAE,CAAC;oBACR,KAAK,GAAG,EAAE,CAAC,CAAC,kBAAkB;oBAC9B,OAAO;wBACH,IAAI,EAAE,IAAI;wBACV,KAAK,EAAE,SAAS;qBACnB,CAAC;gBACN,CAAC;gBAED,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;oBACtF,iBAAiB;oBACjB,OAAO;wBACH,IAAI,EAAE,IAAI;wBACV,KAAK,EAAE,SAAS;qBACnB,CAAC;gBACN,CAAC;gBAED,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC3B,IAAI,GAAG,IAAI,CAAC;gBACZ,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;gBAErB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACrB,OAAO;wBACH,IAAI,EAAE,IAAI;wBACV,KAAK,EAAE,SAAS;qBACnB,CAAC;gBACN,CAAC;gBACD,UAAU,GAAG,CAAC,CAAC;gBAEf,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,EAAE,CAAC;oBACxB,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;oBACpB,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;oBAC5C,IAAI,CAAC,CAAC,IAAI,IAAI,UAAU,CAAC,EAAE,CAAC;wBACxB,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;oBACnE,CAAC;oBAED,MAAM,MAAM,GAAG,UAAU,CAAC,EAAE,CAAC;oBAC7B,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;wBAC7B,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;oBAC1E,CAAC;oBAED,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;gBACrC,CAAC;gBAED,OAAO;oBACH,IAAI,EAAE,KAAK;oBACX,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC;iBAC3B,CAAC;YACN,CAAC;YACD,UAAU,CAAC,UAAkB;gBACzB,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC;gBACrC,OAAO,IAAI,CAAC;YAChB,CAAC;SAC2B,CAAC;IACrC,CAAC;IAED,UAAU,CAAC,UAAoC,EAAE;QAC7C,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,iFAAiF,CAAC,CAAC;QACvG,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC7D,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;QACtB,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEnB,IAAI,IAAI,GAAgB,IAAI,CAAC,KAAK,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC;QAElB,OAAO;YACH,UAAU,EAAE,CAAC;YACb,OAAO;YACP,CAAC,MAAM,CAAC,aAAa,CAAC;gBAClB,OAAO;oBACH,GAAG,IAAI;oBAEP,qBAAqB;oBACrB,UAAU,EAAE,CAAC;iBAChB,CAAC;YACN,CAAC;YACD,IAAI,MAAM;gBACN,OAAO,CAAC,IAAI,CAAC;YACjB,CAAC;YACD,KAAK,CAAC,IAAI;gBACN,IAAI,CAAC,IAAI,EAAE,CAAC;oBACR,OAAO;wBACH,IAAI,EAAE,IAAI;wBACV,KAAK,EAAE,SAAS;qBACnB,CAAC;gBACN,CAAC;gBAED,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;oBACtF,iBAAiB;oBACjB,OAAO;wBACH,IAAI,EAAE,IAAI;wBACV,KAAK,EAAE,SAAS;qBACnB,CAAC;gBACN,CAAC;gBAED,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;gBACjC,IAAI,GAAG,IAAI,CAAC;gBACZ,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;gBAErB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACrB,OAAO;wBACH,IAAI,EAAE,IAAI;wBACV,KAAK,EAAE,SAAS;qBACnB,CAAC;gBACN,CAAC;gBAED,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,EAAE,CAAC;oBACxB,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;oBACpB,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;oBAC5C,IAAI,CAAC,CAAC,IAAI,IAAI,UAAU,CAAC,EAAE,CAAC;wBACxB,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;oBACnE,CAAC;oBAED,MAAM,MAAM,GAAG,UAAU,CAAC,EAAE,CAAC;oBAC7B,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;wBAC7B,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;oBAC1E,CAAC;oBAED,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;gBACrC,CAAC;gBAED,OAAO;oBACH,IAAI,EAAE,KAAK;oBACX,KAAK,EAAE,KAAK;iBACf,CAAC;YACN,CAAC;YACD,UAAU,CAAC,UAAkB;gBACzB,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC;gBACrC,OAAO,IAAI,CAAC;YAChB,CAAC;SAC6B,CAAC;IACvC,CAAC;IAED,OAAO;QACH,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAED;;;;OAIG;IACH,EAAE,CAAC,IAAY;QACX,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAElB,OAAO,IAAsB,CAAC;IAClC,CAAC;;AA/dL,8BAgeC"}
|
package/dist/src/SQLUpdate.d.ts
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import { SQLExpression, SQLExpressionOptions, SQLQuery } from './SQLExpression';
|
|
2
|
-
import { SQLAssignment, SQLDynamicExpression, SQLTableExpression } from './SQLExpressions';
|
|
1
|
+
import { SQLExpression, SQLExpressionOptions, SQLQuery } from './SQLExpression.js';
|
|
2
|
+
import { SQLAssignment, SQLDynamicExpression, SQLTableExpression } from './SQLExpressions.js';
|
|
3
3
|
declare class EmptyClass {
|
|
4
4
|
}
|
|
5
5
|
declare const SQLUpdate_base: {
|
|
6
6
|
new (...args: any[]): {
|
|
7
|
-
_where: import("./SQLWhere").SQLWhere | null;
|
|
8
|
-
readonly __where: import("./SQLWhere").SQLWhere;
|
|
9
|
-
where<T>(this: T, ...args: import("./SQLWhere").ParseWhereArguments): T;
|
|
10
|
-
andWhere<T>(this: T, ...args: import("./SQLWhere").ParseWhereArguments): T;
|
|
11
|
-
orWhere<T>(this: T, ...args: import("./SQLWhere").ParseWhereArguments): T;
|
|
12
|
-
whereNot<T>(this: T, ...args: import("./SQLWhere").ParseWhereArguments): T;
|
|
13
|
-
andWhereNot<T>(this: T, ...args: import("./SQLWhere").ParseWhereArguments): T;
|
|
14
|
-
orWhereNot<T>(this: T, ...args: import("./SQLWhere").ParseWhereArguments): T;
|
|
7
|
+
_where: import("./SQLWhere.js").SQLWhere | null;
|
|
8
|
+
readonly __where: import("./SQLWhere.js").SQLWhere;
|
|
9
|
+
where<T>(this: T, ...args: import("./SQLWhere.js").ParseWhereArguments): T;
|
|
10
|
+
andWhere<T>(this: T, ...args: import("./SQLWhere.js").ParseWhereArguments): T;
|
|
11
|
+
orWhere<T>(this: T, ...args: import("./SQLWhere.js").ParseWhereArguments): T;
|
|
12
|
+
whereNot<T>(this: T, ...args: import("./SQLWhere.js").ParseWhereArguments): T;
|
|
13
|
+
andWhereNot<T>(this: T, ...args: import("./SQLWhere.js").ParseWhereArguments): T;
|
|
14
|
+
orWhereNot<T>(this: T, ...args: import("./SQLWhere.js").ParseWhereArguments): T;
|
|
15
15
|
};
|
|
16
16
|
} & typeof EmptyClass;
|
|
17
17
|
export declare class SQLUpdate extends SQLUpdate_base implements SQLExpression {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SQLUpdate.d.ts","sourceRoot":"","sources":["../../src/SQLUpdate.ts"],"names":[],"mappings":"AACA,OAAO,EAAmC,aAAa,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"SQLUpdate.d.ts","sourceRoot":"","sources":["../../src/SQLUpdate.ts"],"names":[],"mappings":"AACA,OAAO,EAAmC,aAAa,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACpH,OAAO,EAA4B,aAAa,EAAuB,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAI7I,cAAM,UAAU;CAAG;;;;;;;;;;;;;AAEnB,qBAAa,SAAU,SAAQ,cAAsB,YAAW,aAAa;IACzE,MAAM,EAAE,kBAAkB,CAAC;IAC3B,IAAI,EAAE,aAAa,EAAE,GAAG,IAAI,CAAQ;gBAExB,SAAS,EAAE,kBAAkB,GAAG,MAAM;IAKlD,KAAK,IAAI,IAAI;IAMb,GAAG,CAAC,aAAa,EAAE,aAAa,GAAG,MAAM,EAAE,KAAK,EAAE,oBAAoB,GAAG,IAAI;IAS7E,MAAM,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,QAAQ;IAmC1C,MAAM,IAAI,OAAO,CAAC;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;CAKnD"}
|
package/dist/src/SQLUpdate.js
CHANGED
|
@@ -2,17 +2,18 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.SQLUpdate = void 0;
|
|
4
4
|
const simple_database_1 = require("@simonbackx/simple-database");
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
const
|
|
5
|
+
const SQLExpression_js_1 = require("./SQLExpression.js");
|
|
6
|
+
const SQLExpressions_js_1 = require("./SQLExpressions.js");
|
|
7
|
+
const SQLWhere_js_1 = require("./SQLWhere.js");
|
|
8
|
+
const SQLLogger_js_1 = require("./SQLLogger.js");
|
|
8
9
|
class EmptyClass {
|
|
9
10
|
}
|
|
10
|
-
class SQLUpdate extends (0,
|
|
11
|
+
class SQLUpdate extends (0, SQLWhere_js_1.Whereable)(EmptyClass) {
|
|
11
12
|
_table;
|
|
12
13
|
_set = null;
|
|
13
14
|
constructor(tableName) {
|
|
14
15
|
super();
|
|
15
|
-
this._table = typeof tableName === 'string' ? new
|
|
16
|
+
this._table = typeof tableName === 'string' ? new SQLExpressions_js_1.SQLTableExpression(tableName) : tableName;
|
|
16
17
|
}
|
|
17
18
|
clone() {
|
|
18
19
|
const c = new SQLUpdate(this._table);
|
|
@@ -23,7 +24,7 @@ class SQLUpdate extends (0, SQLWhere_1.Whereable)(EmptyClass) {
|
|
|
23
24
|
if (!this._set) {
|
|
24
25
|
this._set = [];
|
|
25
26
|
}
|
|
26
|
-
this._set.push(new
|
|
27
|
+
this._set.push(new SQLExpressions_js_1.SQLAssignment(typeof whereOrColumn === 'string' ? new SQLExpressions_js_1.SQLColumnExpression(whereOrColumn) : whereOrColumn, (0, SQLExpressions_js_1.readDynamicSQLExpression)(value)));
|
|
27
28
|
return this;
|
|
28
29
|
}
|
|
29
30
|
getSQL(options) {
|
|
@@ -42,16 +43,16 @@ class SQLUpdate extends (0, SQLWhere_1.Whereable)(EmptyClass) {
|
|
|
42
43
|
this._table.getSQL(options),
|
|
43
44
|
];
|
|
44
45
|
query.push('SET');
|
|
45
|
-
query.push((0,
|
|
46
|
+
query.push((0, SQLExpression_js_1.joinSQLQuery)(this._set.map(a => a.getSQL(options)), ', '));
|
|
46
47
|
if (this._where) {
|
|
47
48
|
query.push('WHERE');
|
|
48
49
|
query.push(this._where.getSQL(options));
|
|
49
50
|
}
|
|
50
|
-
return (0,
|
|
51
|
+
return (0, SQLExpression_js_1.joinSQLQuery)(query, ' ');
|
|
51
52
|
}
|
|
52
53
|
async update() {
|
|
53
|
-
const { query, params } = (0,
|
|
54
|
-
const result = await simple_database_1.Database.update(query, params);
|
|
54
|
+
const { query, params } = (0, SQLExpression_js_1.normalizeSQLQuery)(this.getSQL());
|
|
55
|
+
const result = await SQLLogger_js_1.SQLLogger.log(simple_database_1.Database.update(query, params), query, params);
|
|
55
56
|
return result[0];
|
|
56
57
|
}
|
|
57
58
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SQLUpdate.js","sourceRoot":"","sources":["../../src/SQLUpdate.ts"],"names":[],"mappings":";;;AAAA,iEAAuD;AACvD,
|
|
1
|
+
{"version":3,"file":"SQLUpdate.js","sourceRoot":"","sources":["../../src/SQLUpdate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"root":["../src/queryablemodel.ts","../src/sql.ts","../src/sqldelete.ts","../src/sqlexpression.ts","../src/sqlexpressions.ts","../src/sqlinsert.ts","../src/sqljoin.ts","../src/sqljsonexpressions.ts","../src/sqlorderby.ts","../src/sqlselect.ts","../src/sqltranslatedstringhelper.ts","../src/sqlupdate.ts","../src/sqlwhere.ts","../src/filters/sqlfilter.ts","../src/filters/sqlsorter.ts","../src/filters/compilers/contains.ts","../src/filters/compilers/equals.ts","../src/filters/compilers/greater.ts","../src/filters/compilers/in.ts","../src/filters/compilers/index.ts","../src/filters/compilers/less.ts","../src/filters/helpers/isjsoncolumn.ts","../src/filters/helpers/normalizecomparevalue.ts","../tests/jest.global.setup.ts","../tests/jest.setup.ts","../tests/filters/$and.test.ts","../tests/filters/$contains.test.ts","../tests/filters/$eq.test.ts","../tests/filters/$gt.test.ts","../tests/filters/$gte.test.ts","../tests/filters/$in.test.ts","../tests/filters/$lt.test.ts","../tests/filters/$lte.test.ts","../tests/filters/$neq.test.ts","../tests/filters/$not.test.ts","../tests/filters/$or.test.ts","../tests/filters/sqltranslatedstringhelper.test.ts","../tests/filters/dot-syntax.test.ts","../tests/filters/exists.test.ts","../tests/filters/joined-relations.test.ts","../tests/filters/special-cases.test.ts","../tests/filters/wildcard.test.ts","../tests/utils/index.ts","../index.ts","../../../../environment.d.ts","../../../../jest-extended.d.ts","../../../stamhoofd.d.ts"],"version":"5.8.3"}
|
|
1
|
+
{"root":["../src/queryablemodel.ts","../src/sql.ts","../src/sqldelete.ts","../src/sqlexpression.ts","../src/sqlexpressions.ts","../src/sqlinsert.ts","../src/sqljoin.ts","../src/sqljsonexpressions.ts","../src/sqllogger.ts","../src/sqlorderby.ts","../src/sqlselect.ts","../src/sqltranslatedstringhelper.ts","../src/sqlupdate.ts","../src/sqlwhere.ts","../src/filters/sqlfilter.ts","../src/filters/sqlsorter.ts","../src/filters/compilers/contains.ts","../src/filters/compilers/equals.ts","../src/filters/compilers/greater.ts","../src/filters/compilers/in.ts","../src/filters/compilers/index.ts","../src/filters/compilers/less.ts","../src/filters/helpers/isjsoncolumn.ts","../src/filters/helpers/normalizecomparevalue.ts","../tests/jest.global.setup.ts","../tests/jest.setup.ts","../tests/filters/$and.test.ts","../tests/filters/$contains.test.ts","../tests/filters/$eq.test.ts","../tests/filters/$gt.test.ts","../tests/filters/$gte.test.ts","../tests/filters/$in.test.ts","../tests/filters/$lt.test.ts","../tests/filters/$lte.test.ts","../tests/filters/$neq.test.ts","../tests/filters/$not.test.ts","../tests/filters/$or.test.ts","../tests/filters/sqltranslatedstringhelper.test.ts","../tests/filters/dot-syntax.test.ts","../tests/filters/exists.test.ts","../tests/filters/joined-relations.test.ts","../tests/filters/special-cases.test.ts","../tests/filters/wildcard.test.ts","../tests/utils/index.ts","../index.ts","../../../../environment.d.ts","../../../../jest-extended.d.ts","../../../stamhoofd.d.ts"],"version":"5.8.3"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stamhoofd/sql",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.115.0",
|
|
4
4
|
"main": "./dist/index.js",
|
|
5
5
|
"types": "./dist/index.d.ts",
|
|
6
6
|
"license": "UNLICENCED",
|
|
@@ -10,11 +10,11 @@
|
|
|
10
10
|
"dist"
|
|
11
11
|
],
|
|
12
12
|
"scripts": {
|
|
13
|
-
"build": "tsc -b",
|
|
13
|
+
"build": "tsc -b --clean && tsc -b",
|
|
14
14
|
"test": "jest"
|
|
15
15
|
},
|
|
16
16
|
"publishConfig": {
|
|
17
17
|
"access": "public"
|
|
18
18
|
},
|
|
19
|
-
"gitHead": "
|
|
19
|
+
"gitHead": "b68983abee843a6d4f4460b7818d66a8780587cc"
|
|
20
20
|
}
|
package/src/SQLDelete.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { Database } from '@simonbackx/simple-database';
|
|
2
|
-
import { SQLExpression, SQLExpressionOptions, SQLQuery, joinSQLQuery, normalizeSQLQuery } from './SQLExpression';
|
|
3
|
-
import { SQLJoin } from './SQLJoin';
|
|
4
|
-
import {
|
|
2
|
+
import { SQLExpression, SQLExpressionOptions, SQLQuery, joinSQLQuery, normalizeSQLQuery } from './SQLExpression.js';
|
|
3
|
+
import { SQLJoin } from './SQLJoin.js';
|
|
4
|
+
import { SQLLogger } from './SQLLogger.js';
|
|
5
|
+
import { Whereable } from './SQLWhere.js';
|
|
5
6
|
|
|
6
7
|
class EmptyClass {}
|
|
7
8
|
export class SQLDelete extends Whereable(EmptyClass) implements SQLExpression {
|
|
@@ -62,8 +63,7 @@ export class SQLDelete extends Whereable(EmptyClass) implements SQLExpression {
|
|
|
62
63
|
|
|
63
64
|
const { query, params } = normalizeSQLQuery(this.getSQL());
|
|
64
65
|
|
|
65
|
-
|
|
66
|
-
const [rows] = await Database.delete(query, params);
|
|
66
|
+
const [rows] = await SQLLogger.log(Database.delete(query, params), query, params);
|
|
67
67
|
return rows;
|
|
68
68
|
}
|
|
69
69
|
|
package/src/SQLInsert.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Database } from '@simonbackx/simple-database';
|
|
2
|
-
import { isSQLExpression, joinSQLQuery, normalizeSQLQuery, SQLExpression, SQLExpressionOptions, SQLQuery } from './SQLExpression';
|
|
3
|
-
import { scalarToSQLExpression, SQLAlias, SQLAssignment, SQLColumnExpression, SQLScalarValue, SQLTableExpression } from './SQLExpressions';
|
|
2
|
+
import { isSQLExpression, joinSQLQuery, normalizeSQLQuery, SQLExpression, SQLExpressionOptions, SQLQuery } from './SQLExpression.js';
|
|
3
|
+
import { scalarToSQLExpression, SQLAlias, SQLAssignment, SQLColumnExpression, SQLScalarValue, SQLTableExpression } from './SQLExpressions.js';
|
|
4
|
+
import { SQLLogger } from './SQLLogger.js';
|
|
4
5
|
|
|
5
6
|
export class SQLInsert implements SQLExpression {
|
|
6
7
|
_columns: SQLExpression[] = [];
|
|
@@ -106,8 +107,7 @@ export class SQLInsert implements SQLExpression {
|
|
|
106
107
|
|
|
107
108
|
async insert(): Promise<{ insertId: any;affectedRows: number }> {
|
|
108
109
|
const { query, params } = normalizeSQLQuery(this.getSQL());
|
|
109
|
-
|
|
110
|
-
const result = await Database.insert(query, params);
|
|
110
|
+
const result = await SQLLogger.log(Database.insert(query, params), query, params);
|
|
111
111
|
return result[0];
|
|
112
112
|
}
|
|
113
113
|
}
|
package/src/SQLLogger.ts
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { Database } from '@simonbackx/simple-database';
|
|
2
|
+
import { StyledText } from '@simonbackx/simple-logging';
|
|
3
|
+
|
|
4
|
+
class StaticSQLLogger {
|
|
5
|
+
slowQueryThresholdMs: number | null = null;
|
|
6
|
+
explainAllAndLogInefficient = false;
|
|
7
|
+
|
|
8
|
+
async explain(query: string, params: any[]) {
|
|
9
|
+
// Run an EXPLAIN on the query to see what is going on
|
|
10
|
+
try {
|
|
11
|
+
const explainQuery = 'EXPLAIN ' + query;
|
|
12
|
+
const [explainRows] = await Database.select(explainQuery, params, { nestTables: true });
|
|
13
|
+
return explainRows[0]?.[''] ?? null;
|
|
14
|
+
}
|
|
15
|
+
catch (e) {
|
|
16
|
+
console.error('Error running EXPLAIN on slow query', e);
|
|
17
|
+
}
|
|
18
|
+
return null;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
async logInefficientExplainResult(query: string, params: any[], explainResult: any) {
|
|
22
|
+
if (!explainResult) {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
if (explainResult['type'] === 'ALL') {
|
|
26
|
+
console.warn(
|
|
27
|
+
new StyledText('[FULL TABLE SCAN] ').addClass('error').addTag('query'),
|
|
28
|
+
'Inefficient query detected:',
|
|
29
|
+
query,
|
|
30
|
+
params,
|
|
31
|
+
'EXPLAIN result:',
|
|
32
|
+
explainResult,
|
|
33
|
+
);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
async log<T>(queryPromise: Promise<T>, query: string, params: any[]): Promise<T> {
|
|
38
|
+
if (this.slowQueryThresholdMs === null) {
|
|
39
|
+
if (this.explainAllAndLogInefficient) {
|
|
40
|
+
const result = await queryPromise;
|
|
41
|
+
await this.logInefficientExplainResult(query, params, await this.explain(query, params));
|
|
42
|
+
return result;
|
|
43
|
+
}
|
|
44
|
+
return queryPromise;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
const startTime = process.hrtime.bigint();
|
|
48
|
+
const result = await queryPromise;
|
|
49
|
+
const elapsedTime = process.hrtime.bigint() - startTime;
|
|
50
|
+
|
|
51
|
+
// Convert to ms
|
|
52
|
+
const elapsedTimeMs = Number(elapsedTime) / 1000 / 1000;
|
|
53
|
+
|
|
54
|
+
if (elapsedTimeMs > this.slowQueryThresholdMs) {
|
|
55
|
+
console.trace('Slow SQL query (' + elapsedTimeMs.toFixed(2) + 'ms)\nQuery: ' + query, params);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
if (this.explainAllAndLogInefficient) {
|
|
59
|
+
await this.logInefficientExplainResult(query, params, await this.explain(query, params));
|
|
60
|
+
return result;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
return result;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export const SQLLogger = new StaticSQLLogger();
|
package/src/SQLSelect.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { Database, SQLResultNamespacedRow } from '@simonbackx/simple-database';
|
|
2
2
|
import { Formatter } from '@stamhoofd/utility';
|
|
3
|
-
import { SQLExpression, SQLExpressionOptions, SQLNamedExpression, SQLQuery, joinSQLQuery, normalizeSQLQuery } from './SQLExpression';
|
|
4
|
-
import { SQLAlias, SQLColumnExpression, SQLCount, SQLSelectAs, SQLSum, SQLTableExpression } from './SQLExpressions';
|
|
5
|
-
import { SQLJoin } from './SQLJoin';
|
|
6
|
-
import { Orderable } from './SQLOrderBy';
|
|
7
|
-
import { Whereable } from './SQLWhere';
|
|
3
|
+
import { SQLExpression, SQLExpressionOptions, SQLNamedExpression, SQLQuery, joinSQLQuery, normalizeSQLQuery } from './SQLExpression.js';
|
|
4
|
+
import { SQLAlias, SQLColumnExpression, SQLCount, SQLSelectAs, SQLSum, SQLTableExpression } from './SQLExpressions.js';
|
|
5
|
+
import { SQLJoin } from './SQLJoin.js';
|
|
6
|
+
import { Orderable } from './SQLOrderBy.js';
|
|
7
|
+
import { Whereable } from './SQLWhere.js';
|
|
8
|
+
import { SQLLogger } from './SQLLogger.js';
|
|
8
9
|
|
|
9
10
|
class EmptyClass {}
|
|
10
11
|
|
|
@@ -41,6 +42,7 @@ export class SQLSelect<T extends object = SQLResultNamespacedRow> extends Wherea
|
|
|
41
42
|
_joins: (InstanceType<typeof SQLJoin>)[] = [];
|
|
42
43
|
_max_execution_time: number | null = null;
|
|
43
44
|
private _name: string | null = null;
|
|
45
|
+
static slowQueryThresholdMs: number | null = null;
|
|
44
46
|
|
|
45
47
|
_transformer: ((row: SQLResultNamespacedRow) => T) | null = null;
|
|
46
48
|
|
|
@@ -193,7 +195,7 @@ export class SQLSelect<T extends object = SQLResultNamespacedRow> extends Wherea
|
|
|
193
195
|
// console.log(query, params);
|
|
194
196
|
let rows: SQLResultNamespacedRow[];
|
|
195
197
|
try {
|
|
196
|
-
const [_rows] = await Database.select(query, params, { nestTables: true });
|
|
198
|
+
const [_rows] = await SQLLogger.log(Database.select(query, params, { nestTables: true }), query, params);
|
|
197
199
|
rows = _rows;
|
|
198
200
|
}
|
|
199
201
|
catch (e) {
|
|
@@ -256,7 +258,7 @@ export class SQLSelect<T extends object = SQLResultNamespacedRow> extends Wherea
|
|
|
256
258
|
|
|
257
259
|
const { query, params } = normalizeSQLQuery(this.getSQL());
|
|
258
260
|
|
|
259
|
-
const [rows] = await Database.select(query, params, { nestTables: true });
|
|
261
|
+
const [rows] = await SQLLogger.log(Database.select(query, params, { nestTables: true }), query, params);
|
|
260
262
|
if (rows.length === 1) {
|
|
261
263
|
const row = rows[0];
|
|
262
264
|
if ('' in row) {
|
|
@@ -291,7 +293,7 @@ export class SQLSelect<T extends object = SQLResultNamespacedRow> extends Wherea
|
|
|
291
293
|
const { query, params } = normalizeSQLQuery(this.getSQL());
|
|
292
294
|
// console.log(query, params);
|
|
293
295
|
|
|
294
|
-
const [rows] = await Database.select(query, params, { nestTables: true });
|
|
296
|
+
const [rows] = await SQLLogger.log(Database.select(query, params, { nestTables: true }), query, params);
|
|
295
297
|
if (rows.length === 1) {
|
|
296
298
|
const row = rows[0];
|
|
297
299
|
if ('' in row) {
|
package/src/SQLUpdate.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { Database } from '@simonbackx/simple-database';
|
|
2
|
-
import { joinSQLQuery, normalizeSQLQuery, SQLExpression, SQLExpressionOptions, SQLQuery } from './SQLExpression';
|
|
3
|
-
import { readDynamicSQLExpression, SQLAssignment, SQLColumnExpression, SQLDynamicExpression, SQLTableExpression } from './SQLExpressions';
|
|
4
|
-
import { Whereable } from './SQLWhere';
|
|
2
|
+
import { joinSQLQuery, normalizeSQLQuery, SQLExpression, SQLExpressionOptions, SQLQuery } from './SQLExpression.js';
|
|
3
|
+
import { readDynamicSQLExpression, SQLAssignment, SQLColumnExpression, SQLDynamicExpression, SQLTableExpression } from './SQLExpressions.js';
|
|
4
|
+
import { Whereable } from './SQLWhere.js';
|
|
5
|
+
import { SQLLogger } from './SQLLogger.js';
|
|
5
6
|
|
|
6
7
|
class EmptyClass {}
|
|
7
8
|
|
|
@@ -66,7 +67,7 @@ export class SQLUpdate extends Whereable(EmptyClass) implements SQLExpression {
|
|
|
66
67
|
|
|
67
68
|
async update(): Promise<{ changedRows: number }> {
|
|
68
69
|
const { query, params } = normalizeSQLQuery(this.getSQL());
|
|
69
|
-
const result = await Database.update(query, params);
|
|
70
|
+
const result = await SQLLogger.log(Database.update(query, params), query, params);
|
|
70
71
|
return result[0];
|
|
71
72
|
}
|
|
72
73
|
}
|