@iamkirbki/database-handler-core 4.3.1 → 4.4.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/abstract/Controller.d.ts +17 -0
- package/dist/abstract/Controller.d.ts.map +1 -0
- package/dist/abstract/Controller.js +47 -0
- package/dist/abstract/Model.d.ts +33 -19
- package/dist/abstract/Model.d.ts.map +1 -1
- package/dist/abstract/Model.js +177 -119
- package/dist/abstract/SchemaTableBuilder.d.ts +1 -1
- package/dist/abstract/SchemaTableBuilder.d.ts.map +1 -1
- package/dist/abstract/model/ModelRelation.d.ts +23 -0
- package/dist/abstract/model/ModelRelation.d.ts.map +1 -0
- package/dist/abstract/model/ModelRelation.js +130 -0
- package/dist/base/Query.d.ts +6 -4
- package/dist/base/Query.d.ts.map +1 -1
- package/dist/base/Query.js +62 -21
- package/dist/base/Record.d.ts.map +1 -1
- package/dist/base/Record.js +7 -5
- package/dist/base/Table.d.ts +5 -4
- package/dist/base/Table.d.ts.map +1 -1
- package/dist/base/Table.js +56 -31
- package/dist/helpers/Errors/AdapterErrors/AdapterNotFoundError.d.ts +4 -0
- package/dist/helpers/Errors/AdapterErrors/AdapterNotFoundError.d.ts.map +1 -0
- package/dist/helpers/Errors/AdapterErrors/AdapterNotFoundError.js +6 -0
- package/dist/helpers/Errors/AdapterErrors/ConnectionFailedError.d.ts +4 -0
- package/dist/helpers/Errors/AdapterErrors/ConnectionFailedError.d.ts.map +1 -0
- package/dist/helpers/Errors/AdapterErrors/ConnectionFailedError.js +6 -0
- package/dist/helpers/Errors/AdapterErrors/NoDefaultAdapterError.d.ts +4 -0
- package/dist/helpers/Errors/AdapterErrors/NoDefaultAdapterError.d.ts.map +1 -0
- package/dist/helpers/Errors/AdapterErrors/NoDefaultAdapterError.js +6 -0
- package/dist/helpers/Errors/ExpressionErrors/InvalidExpressionParametersError.d.ts +4 -0
- package/dist/helpers/Errors/ExpressionErrors/InvalidExpressionParametersError.d.ts.map +1 -0
- package/dist/helpers/Errors/ExpressionErrors/InvalidExpressionParametersError.js +6 -0
- package/dist/helpers/Errors/ExpressionErrors/UnknownExpressionTypeError.d.ts +4 -0
- package/dist/helpers/Errors/ExpressionErrors/UnknownExpressionTypeError.d.ts.map +1 -0
- package/dist/helpers/Errors/ExpressionErrors/UnknownExpressionTypeError.js +6 -0
- package/dist/helpers/Errors/ExpressionErrors/UnsupportedQueryPhaseError.d.ts +4 -0
- package/dist/helpers/Errors/ExpressionErrors/UnsupportedQueryPhaseError.d.ts.map +1 -0
- package/dist/helpers/Errors/ExpressionErrors/UnsupportedQueryPhaseError.js +6 -0
- package/dist/helpers/Errors/QueryErrors/UnexpectedEmptyQueryError.d.ts +4 -0
- package/dist/helpers/Errors/QueryErrors/UnexpectedEmptyQueryError.d.ts.map +1 -0
- package/dist/helpers/Errors/QueryErrors/UnexpectedEmptyQueryError.js +6 -0
- package/dist/helpers/Errors/TableErrors/UnknownTableError.d.ts +4 -0
- package/dist/helpers/Errors/TableErrors/UnknownTableError.d.ts.map +1 -0
- package/dist/helpers/Errors/TableErrors/UnknownTableError.js +6 -0
- package/dist/helpers/QueryBuilders/BaseQueryBuilders/BaseDeleteQueryBuilder.d.ts +1 -0
- package/dist/helpers/QueryBuilders/BaseQueryBuilders/BaseDeleteQueryBuilder.d.ts.map +1 -0
- package/dist/helpers/QueryBuilders/BaseQueryBuilders/BaseDeleteQueryBuilder.js +1 -0
- package/dist/helpers/QueryBuilders/BaseQueryBuilders/BaseInsertQueryBuilder.d.ts +1 -0
- package/dist/helpers/QueryBuilders/BaseQueryBuilders/BaseInsertQueryBuilder.d.ts.map +1 -0
- package/dist/helpers/QueryBuilders/BaseQueryBuilders/BaseInsertQueryBuilder.js +11 -0
- package/dist/helpers/QueryBuilders/BaseQueryBuilders/BaseSelectQueryBuilder.d.ts +11 -0
- package/dist/helpers/QueryBuilders/BaseQueryBuilders/BaseSelectQueryBuilder.d.ts.map +1 -0
- package/dist/helpers/QueryBuilders/BaseQueryBuilders/BaseSelectQueryBuilder.js +27 -0
- package/dist/helpers/QueryBuilders/BaseQueryBuilders/BaseUpdateQueryBuilder.d.ts +1 -0
- package/dist/helpers/QueryBuilders/BaseQueryBuilders/BaseUpdateQueryBuilder.d.ts.map +1 -0
- package/dist/helpers/QueryBuilders/BaseQueryBuilders/BaseUpdateQueryBuilder.js +1 -0
- package/dist/helpers/QueryBuilders/ExpressionBuilders/JsonAggregateExpression.d.ts +9 -0
- package/dist/helpers/QueryBuilders/ExpressionBuilders/JsonAggregateExpression.d.ts.map +1 -0
- package/dist/helpers/QueryBuilders/ExpressionBuilders/JsonAggregateExpression.js +102 -0
- package/dist/helpers/QueryBuilders/ExpressionBuilders/SpatialDistanceExpression.d.ts +8 -0
- package/dist/helpers/QueryBuilders/ExpressionBuilders/SpatialDistanceExpression.d.ts.map +1 -0
- package/dist/helpers/QueryBuilders/ExpressionBuilders/SpatialDistanceExpression.js +63 -0
- package/dist/helpers/QueryBuilders/ExpressionBuilders/TextRelevanceExpression.d.ts +8 -0
- package/dist/helpers/QueryBuilders/ExpressionBuilders/TextRelevanceExpression.d.ts.map +1 -0
- package/dist/helpers/QueryBuilders/ExpressionBuilders/TextRelevanceExpression.js +49 -0
- package/dist/helpers/QueryBuilders/QueryDecorators/ExpressionDecorator.d.ts +19 -0
- package/dist/helpers/QueryBuilders/QueryDecorators/ExpressionDecorator.d.ts.map +1 -0
- package/dist/helpers/QueryBuilders/QueryDecorators/ExpressionDecorator.js +60 -0
- package/dist/helpers/QueryBuilders/QueryDecorators/GroupByDecorator.d.ts +9 -0
- package/dist/helpers/QueryBuilders/QueryDecorators/GroupByDecorator.d.ts.map +1 -0
- package/dist/helpers/QueryBuilders/QueryDecorators/GroupByDecorator.js +27 -0
- package/dist/helpers/QueryBuilders/QueryDecorators/JoinDecorator.d.ts +15 -0
- package/dist/helpers/QueryBuilders/QueryDecorators/JoinDecorator.d.ts.map +1 -0
- package/dist/helpers/QueryBuilders/QueryDecorators/JoinDecorator.js +74 -0
- package/dist/helpers/QueryBuilders/QueryDecorators/LimitDecorator.d.ts +10 -0
- package/dist/helpers/QueryBuilders/QueryDecorators/LimitDecorator.d.ts.map +1 -0
- package/dist/helpers/QueryBuilders/QueryDecorators/LimitDecorator.js +29 -0
- package/dist/helpers/QueryBuilders/QueryDecorators/OrderByDecorator.d.ts +9 -0
- package/dist/helpers/QueryBuilders/QueryDecorators/OrderByDecorator.d.ts.map +1 -0
- package/dist/helpers/QueryBuilders/QueryDecorators/OrderByDecorator.js +27 -0
- package/dist/helpers/QueryBuilders/QueryDecorators/QueryDecorator.d.ts +8 -0
- package/dist/helpers/QueryBuilders/QueryDecorators/QueryDecorator.d.ts.map +1 -0
- package/dist/helpers/QueryBuilders/QueryDecorators/QueryDecorator.js +5 -0
- package/dist/helpers/QueryBuilders/QueryDecorators/ValuesDecorator.d.ts +1 -0
- package/dist/helpers/QueryBuilders/QueryDecorators/ValuesDecorator.d.ts.map +1 -0
- package/dist/helpers/QueryBuilders/QueryDecorators/ValuesDecorator.js +17 -0
- package/dist/helpers/QueryBuilders/QueryDecorators/WhereDecorator.d.ts +9 -0
- package/dist/helpers/QueryBuilders/QueryDecorators/WhereDecorator.d.ts.map +1 -0
- package/dist/helpers/QueryBuilders/QueryDecorators/WhereDecorator.js +29 -0
- package/dist/helpers/QueryBuilders/QueryExpressionBuilder.d.ts +54 -0
- package/dist/helpers/QueryBuilders/QueryExpressionBuilder.d.ts.map +1 -0
- package/dist/helpers/QueryBuilders/QueryExpressionBuilder.js +102 -0
- package/dist/helpers/QueryBuilders/QueryStatementBuilder.d.ts +16 -0
- package/dist/helpers/QueryBuilders/QueryStatementBuilder.d.ts.map +1 -0
- package/dist/helpers/QueryBuilders/QueryStatementBuilder.js +169 -0
- package/dist/helpers/QueryBuilders/SqlRenderer.d.ts +15 -0
- package/dist/helpers/QueryBuilders/SqlRenderer.d.ts.map +1 -0
- package/dist/helpers/QueryBuilders/SqlRenderer.js +79 -0
- package/dist/helpers/QueryBuilders/oldQueryStatementBuilder.d.ts +160 -0
- package/dist/helpers/QueryBuilders/oldQueryStatementBuilder.d.ts.map +1 -0
- package/dist/helpers/QueryBuilders/oldQueryStatementBuilder.js +217 -0
- package/dist/interfaces/IExpressionBuilder.d.ts +7 -0
- package/dist/interfaces/IExpressionBuilder.d.ts.map +1 -0
- package/dist/interfaces/IExpressionBuilder.js +1 -0
- package/dist/interfaces/IQueryBuilder.d.ts +5 -0
- package/dist/interfaces/IQueryBuilder.d.ts.map +1 -0
- package/dist/interfaces/IQueryBuilder.js +1 -0
- package/dist/runtime/Container.d.ts +1 -0
- package/dist/runtime/Container.d.ts.map +1 -1
- package/dist/runtime/Container.js +5 -2
- package/dist/runtime/QueryCache.d.ts +12 -0
- package/dist/runtime/QueryCache.d.ts.map +1 -0
- package/dist/runtime/QueryCache.js +26 -0
- package/dist/runtime/Repository.d.ts +6 -4
- package/dist/runtime/Repository.d.ts.map +1 -1
- package/dist/runtime/Repository.js +95 -60
- package/dist/types/expressions.d.ts +154 -0
- package/dist/types/expressions.d.ts.map +1 -0
- package/dist/types/expressions.js +6 -0
- package/dist/types/factories.d.ts +3 -2
- package/dist/types/factories.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -0
- package/dist/types/model.d.ts +8 -8
- package/dist/types/model.d.ts.map +1 -1
- package/dist/types/query.d.ts +56 -2
- package/dist/types/query.d.ts.map +1 -1
- package/package.json +11 -3
- package/dist/helpers/QueryStatementBuilder.d.ts +0 -305
- package/dist/helpers/QueryStatementBuilder.d.ts.map +0 -1
- package/dist/helpers/QueryStatementBuilder.js +0 -416
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UnknownExpressionTypeError.d.ts","sourceRoot":"","sources":["../../../../src/helpers/Errors/ExpressionErrors/UnknownExpressionTypeError.ts"],"names":[],"mappings":"AAAA,qBAAa,0BAA2B,SAAQ,KAAK;gBACrC,IAAI,EAAE,MAAM;CAI3B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UnsupportedQueryPhaseError.d.ts","sourceRoot":"","sources":["../../../../src/helpers/Errors/ExpressionErrors/UnsupportedQueryPhaseError.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,OAAO,0BAA2B,SAAQ,KAAK;gBAC7C,KAAK,CAAC,EAAE,MAAM;CAI7B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UnexpectedEmptyQueryError.d.ts","sourceRoot":"","sources":["../../../../src/helpers/Errors/QueryErrors/UnexpectedEmptyQueryError.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,OAAO,yBAA0B,SAAQ,KAAK;;CAK3D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UnknownTableError.d.ts","sourceRoot":"","sources":["../../../../src/helpers/Errors/TableErrors/UnknownTableError.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,OAAO,iBAAkB,SAAQ,KAAK;gBACpC,SAAS,EAAE,MAAM;CAIhC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=BaseDeleteQueryBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseDeleteQueryBuilder.d.ts","sourceRoot":"","sources":["../../../../src/helpers/QueryBuilders/BaseQueryBuilders/BaseDeleteQueryBuilder.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=BaseInsertQueryBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseInsertQueryBuilder.d.ts","sourceRoot":"","sources":["../../../../src/helpers/QueryBuilders/BaseQueryBuilders/BaseInsertQueryBuilder.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// import IQueryBuilder from "../../../interfaces/IQueryBuilder.js";
|
|
3
|
+
// export default class BaseInsertQueryBuilder implements IQueryBuilder {
|
|
4
|
+
// private tableName: string;
|
|
5
|
+
// constructor(tableName: string) {
|
|
6
|
+
// this.tableName = tableName;
|
|
7
|
+
// }
|
|
8
|
+
// async build(): Promise<string> {
|
|
9
|
+
// return `INSERT INTO "${this.tableName}"`;
|
|
10
|
+
// }
|
|
11
|
+
// }
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { QueryContext } from "../../../index";
|
|
2
|
+
import IQueryBuilder from "../../../interfaces/IQueryBuilder.js";
|
|
3
|
+
export default class BaseSelectQueryBuilder implements IQueryBuilder {
|
|
4
|
+
private tableName;
|
|
5
|
+
private select;
|
|
6
|
+
private joinsSelect?;
|
|
7
|
+
private expressionsSelect?;
|
|
8
|
+
constructor(tableName: string, select: string[], joinsSelect?: string[], expressionsSelect?: string[]);
|
|
9
|
+
build(): Promise<QueryContext>;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=BaseSelectQueryBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseSelectQueryBuilder.d.ts","sourceRoot":"","sources":["../../../../src/helpers/QueryBuilders/BaseQueryBuilders/BaseSelectQueryBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,aAAa,MAAM,mCAAmC,CAAC;AAE9D,MAAM,CAAC,OAAO,OAAO,sBAAuB,YAAW,aAAa;IAChE,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,MAAM,CAAW;IACzB,OAAO,CAAC,WAAW,CAAC,CAAW;IAC/B,OAAO,CAAC,iBAAiB,CAAC,CAAW;gBAEzB,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,EAAE,iBAAiB,CAAC,EAAE,MAAM,EAAE;IAO/F,KAAK,IAAI,OAAO,CAAC,YAAY,CAAC;CAQvC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
export default class BaseSelectQueryBuilder {
|
|
11
|
+
constructor(tableName, select, joinsSelect, expressionsSelect) {
|
|
12
|
+
this.tableName = tableName;
|
|
13
|
+
this.select = select;
|
|
14
|
+
this.joinsSelect = joinsSelect;
|
|
15
|
+
this.expressionsSelect = expressionsSelect;
|
|
16
|
+
}
|
|
17
|
+
build() {
|
|
18
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
19
|
+
return {
|
|
20
|
+
select: this.select,
|
|
21
|
+
joinsSelect: this.joinsSelect,
|
|
22
|
+
from: this.tableName,
|
|
23
|
+
expressionSelect: this.expressionsSelect,
|
|
24
|
+
};
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=BaseUpdateQueryBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseUpdateQueryBuilder.d.ts","sourceRoot":"","sources":["../../../../src/helpers/QueryBuilders/BaseQueryBuilders/BaseUpdateQueryBuilder.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { expressionClause, JsonAggregateQueryExpression } from "../../../index.js";
|
|
2
|
+
import IExpressionBuilder from "../../../interfaces/IExpressionBuilder.js";
|
|
3
|
+
export default class JsonAggregateExpression implements IExpressionBuilder {
|
|
4
|
+
build(expression: JsonAggregateQueryExpression): expressionClause;
|
|
5
|
+
private buildJsonBuildObject;
|
|
6
|
+
validate(expression: JsonAggregateQueryExpression): boolean;
|
|
7
|
+
get defaultRequirements(): JsonAggregateQueryExpression['requirements'];
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=JsonAggregateExpression.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JsonAggregateExpression.d.ts","sourceRoot":"","sources":["../../../../src/helpers/QueryBuilders/ExpressionBuilders/JsonAggregateExpression.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,4BAA4B,EAAwE,MAAM,gBAAgB,CAAC;AACtJ,OAAO,kBAAkB,MAAM,wCAAwC,CAAC;AAUxE,MAAM,CAAC,OAAO,OAAO,uBAAwB,YAAW,kBAAkB;IACtE,KAAK,CAAC,UAAU,EAAE,4BAA4B,GAAG,gBAAgB;IA8BjE,OAAO,CAAC,oBAAoB;IAqE5B,QAAQ,CAAC,UAAU,EAAE,4BAA4B,GAAG,OAAO;IAa3D,IAAI,mBAAmB,IAAI,4BAA4B,CAAC,cAAc,CAAC,CAOtE;CACJ"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import InvalidExpressionParametersError from "../../../helpers/Errors/ExpressionErrors/InvalidExpressionParametersError.js";
|
|
2
|
+
import { QueryEvaluationPhase } from "../../../index.js";
|
|
3
|
+
import QueryExpressionBuilder from "../QueryExpressionBuilder.js";
|
|
4
|
+
import QueryStatementBuilder from "../QueryStatementBuilder.js";
|
|
5
|
+
export default class JsonAggregateExpression {
|
|
6
|
+
build(expression) {
|
|
7
|
+
if (!this.validate(expression)) {
|
|
8
|
+
throw new InvalidExpressionParametersError("Invalid JSON aggregate expression parameters.");
|
|
9
|
+
}
|
|
10
|
+
const jsonBuildObjects = this.buildJsonBuildObject(expression);
|
|
11
|
+
const baseExpressionClause = `JSON_AGG(
|
|
12
|
+
${jsonBuildObjects.sql}
|
|
13
|
+
) AS ${expression.parameters.alias}`;
|
|
14
|
+
const groupByClause = expression.parameters.groupByColumns.length > 0
|
|
15
|
+
? expression.parameters.groupByColumns
|
|
16
|
+
.map(col => col.includes(".") ? `"${col.replace(".", "__")}"` : `"${col}"`)
|
|
17
|
+
.join(", ")
|
|
18
|
+
: undefined;
|
|
19
|
+
return {
|
|
20
|
+
baseExpressionClause,
|
|
21
|
+
phase: expression.requirements.phase,
|
|
22
|
+
requiresWrapping: expression.requirements.requiresSelectWrapping || false,
|
|
23
|
+
groupByClause,
|
|
24
|
+
whereClause: jsonBuildObjects.whereClause,
|
|
25
|
+
valueClauseKeywords: jsonBuildObjects.valueClauseKeywords,
|
|
26
|
+
havingClause: expression.parameters.having
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
buildJsonBuildObject(expression) {
|
|
30
|
+
var _a, _b;
|
|
31
|
+
const columnPart = expression.parameters.columns
|
|
32
|
+
.map(col => `'${col}', "${expression.parameters.table}_${col}"`)
|
|
33
|
+
.join(",\n ");
|
|
34
|
+
const computedPart = ((_a = expression.parameters.computed) === null || _a === void 0 ? void 0 : _a.length)
|
|
35
|
+
? expression.parameters.computed
|
|
36
|
+
.map(comp => {
|
|
37
|
+
var _a;
|
|
38
|
+
const valueClauseKeywords = [`${comp.parameters.alias}_lat`, `${comp.parameters.alias}_lon`];
|
|
39
|
+
const expr = {
|
|
40
|
+
type: comp.type,
|
|
41
|
+
parameters: Object.assign(Object.assign({}, comp.parameters), { valueClauseKeywords: comp.type === 'spatialDistance' ? valueClauseKeywords : comp.parameters.valueClauseKeywords, isComputed: true }),
|
|
42
|
+
requirements: QueryExpressionBuilder.getExpressionDefaultRequirements(comp.type)
|
|
43
|
+
};
|
|
44
|
+
const builder = QueryExpressionBuilder.buildExpressionsPart([expr])[0];
|
|
45
|
+
return {
|
|
46
|
+
sql: `'${comp.parameters.alias}', ${(_a = builder.baseExpressionClause) === null || _a === void 0 ? void 0 : _a.split(" AS ")[0]}`,
|
|
47
|
+
whereClause: builder.whereClause,
|
|
48
|
+
valueClauseKeywords: builder.valueClauseKeywords
|
|
49
|
+
};
|
|
50
|
+
}) : [];
|
|
51
|
+
const computedSqlPart = computedPart.length
|
|
52
|
+
? computedPart.map(c => c.sql).join(",\n ")
|
|
53
|
+
: "";
|
|
54
|
+
const whereClauses = computedPart
|
|
55
|
+
.flatMap(c => c.whereClause ? QueryStatementBuilder.normalizeQueryConditions(c.whereClause) : []);
|
|
56
|
+
const valueClauseKeywords = computedPart
|
|
57
|
+
.flatMap(c => c.valueClauseKeywords || []);
|
|
58
|
+
const nestedPart = ((_b = expression.parameters.nested) === null || _b === void 0 ? void 0 : _b.length)
|
|
59
|
+
? expression.parameters.nested
|
|
60
|
+
.map(n => {
|
|
61
|
+
return `'${n.alias}', ${this.buildJsonBuildObject({
|
|
62
|
+
type: 'jsonAggregate',
|
|
63
|
+
parameters: {
|
|
64
|
+
table: n.table,
|
|
65
|
+
alias: n.alias,
|
|
66
|
+
columns: n.columns,
|
|
67
|
+
computed: n.computed,
|
|
68
|
+
nested: n.nested,
|
|
69
|
+
groupByColumns: []
|
|
70
|
+
},
|
|
71
|
+
requirements: this.defaultRequirements
|
|
72
|
+
}).sql}`;
|
|
73
|
+
})
|
|
74
|
+
.join(",\n ")
|
|
75
|
+
: "";
|
|
76
|
+
const parts = [columnPart, computedSqlPart, nestedPart].filter(Boolean).join(",\n ");
|
|
77
|
+
return {
|
|
78
|
+
sql: `JSON_BUILD_OBJECT(
|
|
79
|
+
${parts}
|
|
80
|
+
)`,
|
|
81
|
+
whereClause: whereClauses,
|
|
82
|
+
valueClauseKeywords: valueClauseKeywords
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
validate(expression) {
|
|
86
|
+
if (expression.type !== 'jsonAggregate') {
|
|
87
|
+
return false;
|
|
88
|
+
}
|
|
89
|
+
return (Array.isArray(expression.parameters.columns) &&
|
|
90
|
+
typeof expression.parameters.table === 'string' &&
|
|
91
|
+
Array.isArray(expression.parameters.groupByColumns) &&
|
|
92
|
+
typeof expression.parameters.alias === 'string');
|
|
93
|
+
}
|
|
94
|
+
get defaultRequirements() {
|
|
95
|
+
return {
|
|
96
|
+
phase: QueryEvaluationPhase.PROJECTION,
|
|
97
|
+
cardinality: 'row',
|
|
98
|
+
requiresAlias: true,
|
|
99
|
+
requiresSelectWrapping: true
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import IExpressionBuilder from "../../../interfaces/IExpressionBuilder.js";
|
|
2
|
+
import { expressionClause, SpatialQueryExpression } from "../../../types/index.js";
|
|
3
|
+
export default class SpatialDistanceExpression implements IExpressionBuilder {
|
|
4
|
+
build(expression: SpatialQueryExpression): expressionClause;
|
|
5
|
+
validate(expression: SpatialQueryExpression): boolean;
|
|
6
|
+
get defaultRequirements(): SpatialQueryExpression['requirements'];
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=SpatialDistanceExpression.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SpatialDistanceExpression.d.ts","sourceRoot":"","sources":["../../../../src/helpers/QueryBuilders/ExpressionBuilders/SpatialDistanceExpression.ts"],"names":[],"mappings":"AACA,OAAO,kBAAkB,MAAM,wCAAwC,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAwB,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAGtG,MAAM,CAAC,OAAO,OAAO,yBAA0B,YAAW,kBAAkB;IACxE,KAAK,CAAC,UAAU,EAAE,sBAAsB,GAAG,gBAAgB;IAkD3D,QAAQ,CAAC,UAAU,EAAE,sBAAsB,GAAG,OAAO;IAcrD,IAAI,mBAAmB,IAAI,sBAAsB,CAAC,cAAc,CAAC,CAOhE;CACJ"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import InvalidExpressionParametersError from "../../../helpers/Errors/ExpressionErrors/InvalidExpressionParametersError.js";
|
|
2
|
+
import { QueryEvaluationPhase } from "../../../types/index.js";
|
|
3
|
+
import QueryStatementBuilder from "../QueryStatementBuilder.js";
|
|
4
|
+
export default class SpatialDistanceExpression {
|
|
5
|
+
build(expression) {
|
|
6
|
+
var _a;
|
|
7
|
+
if (!this.validate(expression)) {
|
|
8
|
+
throw new InvalidExpressionParametersError("Invalid spatial distance expression parameters.");
|
|
9
|
+
}
|
|
10
|
+
const earthRadius = (_a = expression.parameters.earthRadius) !== null && _a !== void 0 ? _a : (expression.parameters.unit === 'km' ? 6371 : 3959);
|
|
11
|
+
const isComputed = expression.parameters.isComputed;
|
|
12
|
+
const baseExpressionClause = `
|
|
13
|
+
${earthRadius} * acos(
|
|
14
|
+
cos(radians(@${expression.parameters.valueClauseKeywords[0]}))
|
|
15
|
+
* cos(radians(${isComputed ? expression.parameters.targetColumns.lat.replace(".", "_") : `${expression.parameters.targetColumns.lat}`}))
|
|
16
|
+
* cos(
|
|
17
|
+
radians(${isComputed ? expression.parameters.targetColumns.lon.replace(".", "_") : `${expression.parameters.targetColumns.lon}`})
|
|
18
|
+
- radians(@${expression.parameters.valueClauseKeywords[1]})
|
|
19
|
+
)
|
|
20
|
+
+ sin(radians(@${expression.parameters.valueClauseKeywords[0]}))
|
|
21
|
+
* sin(radians(${isComputed ? expression.parameters.targetColumns.lat.replace(".", "_") : `${expression.parameters.targetColumns.lat}`}))
|
|
22
|
+
) AS ${expression.parameters.alias}
|
|
23
|
+
`.trim();
|
|
24
|
+
const orderByClause = {
|
|
25
|
+
column: expression.parameters.alias,
|
|
26
|
+
direction: expression.parameters.orderByDistance || 'ASC'
|
|
27
|
+
};
|
|
28
|
+
return {
|
|
29
|
+
baseExpressionClause,
|
|
30
|
+
phase: expression.requirements.phase,
|
|
31
|
+
requiresWrapping: expression.requirements.requiresSelectWrapping || false,
|
|
32
|
+
whereClause: [
|
|
33
|
+
{
|
|
34
|
+
column: expression.parameters.alias,
|
|
35
|
+
operator: '<=',
|
|
36
|
+
value: expression.parameters.maxDistance
|
|
37
|
+
},
|
|
38
|
+
...QueryStatementBuilder.normalizeQueryConditions(expression.parameters.where || [])
|
|
39
|
+
],
|
|
40
|
+
valueClauseKeywords: expression.parameters.valueClauseKeywords,
|
|
41
|
+
orderByClause
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
validate(expression) {
|
|
45
|
+
// Basic validation for spatial distance expression
|
|
46
|
+
return (expression.type === 'spatialDistance' &&
|
|
47
|
+
typeof expression.parameters.referencePoint.lat === 'number' &&
|
|
48
|
+
typeof expression.parameters.referencePoint.lon === 'number' &&
|
|
49
|
+
typeof expression.parameters.targetColumns.lat === 'string' &&
|
|
50
|
+
typeof expression.parameters.targetColumns.lon === 'string' &&
|
|
51
|
+
(expression.parameters.unit === 'km' ||
|
|
52
|
+
expression.parameters.unit === 'miles') &&
|
|
53
|
+
typeof expression.parameters.alias === 'string');
|
|
54
|
+
}
|
|
55
|
+
get defaultRequirements() {
|
|
56
|
+
return {
|
|
57
|
+
phase: QueryEvaluationPhase.PROJECTION,
|
|
58
|
+
cardinality: 'row',
|
|
59
|
+
requiresAlias: true,
|
|
60
|
+
requiresSelectWrapping: true
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import IExpressionBuilder from "../../../interfaces/IExpressionBuilder.js";
|
|
2
|
+
import { expressionClause, QueryExpressionRequirements, TextRelevanceQueryExpression } from "../../../types/index.js";
|
|
3
|
+
export default class TextRelevanceExpression implements IExpressionBuilder {
|
|
4
|
+
build(expression: TextRelevanceQueryExpression): expressionClause;
|
|
5
|
+
validate(expression: TextRelevanceQueryExpression): boolean;
|
|
6
|
+
get defaultRequirements(): QueryExpressionRequirements;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=TextRelevanceExpression.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TextRelevanceExpression.d.ts","sourceRoot":"","sources":["../../../../src/helpers/QueryBuilders/ExpressionBuilders/TextRelevanceExpression.ts"],"names":[],"mappings":"AACA,OAAO,kBAAkB,MAAM,wCAAwC,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAwB,2BAA2B,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AAEzI,MAAM,CAAC,OAAO,OAAO,uBAAwB,YAAW,kBAAkB;IACtE,KAAK,CAAC,UAAU,EAAE,4BAA4B,GAAG,gBAAgB;IAqCjE,QAAQ,CAAC,UAAU,EAAE,4BAA4B,GAAG,OAAO;IAW3D,IAAI,mBAAmB,IAAI,2BAA2B,CAOrD;CACJ"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import InvalidExpressionParametersError from "../../../helpers/Errors/ExpressionErrors/InvalidExpressionParametersError.js";
|
|
2
|
+
import { QueryEvaluationPhase } from "../../../types/index.js";
|
|
3
|
+
export default class TextRelevanceExpression {
|
|
4
|
+
build(expression) {
|
|
5
|
+
if (!this.validate(expression)) {
|
|
6
|
+
throw new InvalidExpressionParametersError("Invalid text relevance expression parameters.");
|
|
7
|
+
}
|
|
8
|
+
// Score: 3 = exact match, 2 = starts with, 1 = contains, 0 = no match
|
|
9
|
+
const columnConcat = expression.parameters.targetColumns
|
|
10
|
+
.map(col => `COALESCE(${col}, '')`)
|
|
11
|
+
.join(" || ' ' || ");
|
|
12
|
+
const baseExpressionClause = `(
|
|
13
|
+
CASE
|
|
14
|
+
WHEN LOWER(${columnConcat}) = LOWER(@${expression.parameters.valueClauseKeywords[0]}) THEN 3
|
|
15
|
+
WHEN LOWER(${columnConcat}) LIKE LOWER(@${expression.parameters.valueClauseKeywords[0]} || '%') THEN 2
|
|
16
|
+
WHEN LOWER(${columnConcat}) LIKE LOWER('%' || @${expression.parameters.valueClauseKeywords[0]} || '%') THEN 1
|
|
17
|
+
ELSE 0
|
|
18
|
+
END
|
|
19
|
+
) AS ${expression.parameters.alias}`;
|
|
20
|
+
const orderByClause = {
|
|
21
|
+
column: expression.parameters.alias,
|
|
22
|
+
direction: expression.parameters.orderByRelevance || 'ASC'
|
|
23
|
+
};
|
|
24
|
+
return {
|
|
25
|
+
baseExpressionClause,
|
|
26
|
+
phase: expression.requirements.phase,
|
|
27
|
+
requiresWrapping: expression.requirements.requiresSelectWrapping || false,
|
|
28
|
+
whereClause: expression.parameters.where,
|
|
29
|
+
valueClauseKeywords: expression.parameters.valueClauseKeywords,
|
|
30
|
+
orderByClause,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
validate(expression) {
|
|
34
|
+
return (expression.type === 'textRelevance' &&
|
|
35
|
+
typeof expression.parameters.searchTerm === 'string' &&
|
|
36
|
+
Array.isArray(expression.parameters.targetColumns) &&
|
|
37
|
+
expression.parameters.targetColumns.every(col => typeof col === 'string') &&
|
|
38
|
+
typeof expression.parameters.alias === 'string' &&
|
|
39
|
+
typeof expression.parameters.minimumRelevance == 'number');
|
|
40
|
+
}
|
|
41
|
+
get defaultRequirements() {
|
|
42
|
+
return {
|
|
43
|
+
phase: QueryEvaluationPhase.PROJECTION,
|
|
44
|
+
cardinality: 'row',
|
|
45
|
+
requiresAlias: true,
|
|
46
|
+
requiresSelectWrapping: true
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { expressionClause, OrderByDefinition, QueryComparisonParameters, QueryContext } from "../../../types/index.js";
|
|
2
|
+
import QueryDecorator from "./QueryDecorator.js";
|
|
3
|
+
import IQueryBuilder from "../../../interfaces/IQueryBuilder.js";
|
|
4
|
+
export default class ExpressionDecorator extends QueryDecorator {
|
|
5
|
+
private parsedExpressions;
|
|
6
|
+
whereClauses?: QueryComparisonParameters[];
|
|
7
|
+
orderByClauses?: OrderByDefinition[];
|
|
8
|
+
groupByClauses?: string[];
|
|
9
|
+
havingClauses?: QueryComparisonParameters[];
|
|
10
|
+
valueClauseKeywords: Set<string>;
|
|
11
|
+
constructor(component: IQueryBuilder, expressions: expressionClause[]);
|
|
12
|
+
build(): Promise<QueryContext>;
|
|
13
|
+
setWhereClauses(): void;
|
|
14
|
+
setOrderByClauses(): void;
|
|
15
|
+
setGroupByClauses(): void;
|
|
16
|
+
setHavingClauses(): void;
|
|
17
|
+
setValueClauseKeywords(): void;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=ExpressionDecorator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExpressionDecorator.d.ts","sourceRoot":"","sources":["../../../../src/helpers/QueryBuilders/QueryDecorators/ExpressionDecorator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpH,OAAO,cAAc,MAAM,qBAAqB,CAAC;AACjD,OAAO,aAAa,MAAM,mCAAmC,CAAC;AAG9D,MAAM,CAAC,OAAO,OAAO,mBAAoB,SAAQ,cAAc;IAC3D,OAAO,CAAC,iBAAiB,CAAqB;IACvC,YAAY,CAAC,EAAE,yBAAyB,EAAE,CAAC;IAC3C,cAAc,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACrC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,aAAa,CAAC,EAAE,yBAAyB,EAAE,CAAC;IAC5C,mBAAmB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAa;gBAGhD,SAAS,EAAE,aAAa,EACxB,WAAW,EAAE,gBAAgB,EAAE;IAW7B,KAAK,IAAI,OAAO,CAAC,YAAY,CAAC;IAU7B,eAAe,IAAI,IAAI;IASvB,iBAAiB,IAAI,IAAI;IAIzB,iBAAiB,IAAI,IAAI;IAIzB,gBAAgB,IAAI,IAAI;IASxB,sBAAsB,IAAI,IAAI;CASxC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import QueryDecorator from "./QueryDecorator.js";
|
|
11
|
+
import QueryStatementBuilder from "../QueryStatementBuilder.js";
|
|
12
|
+
export default class ExpressionDecorator extends QueryDecorator {
|
|
13
|
+
constructor(component, expressions) {
|
|
14
|
+
super(component);
|
|
15
|
+
this.valueClauseKeywords = new Set();
|
|
16
|
+
this.parsedExpressions = expressions;
|
|
17
|
+
this.setWhereClauses();
|
|
18
|
+
this.setOrderByClauses();
|
|
19
|
+
this.setGroupByClauses();
|
|
20
|
+
this.setHavingClauses();
|
|
21
|
+
this.setValueClauseKeywords();
|
|
22
|
+
}
|
|
23
|
+
build() {
|
|
24
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
25
|
+
var _a, _b;
|
|
26
|
+
const context = yield this.component.build();
|
|
27
|
+
(_a = context.expressionSelect) !== null && _a !== void 0 ? _a : (context.expressionSelect = []);
|
|
28
|
+
context.expressionSelect.push(...this.parsedExpressions.map(e => e.baseExpressionClause));
|
|
29
|
+
(_b = context.conditions) !== null && _b !== void 0 ? _b : (context.conditions = {});
|
|
30
|
+
return context;
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
setWhereClauses() {
|
|
34
|
+
this.whereClauses = this.parsedExpressions
|
|
35
|
+
.flatMap(expr => expr.whereClause
|
|
36
|
+
? QueryStatementBuilder.normalizeQueryConditions(expr.whereClause)
|
|
37
|
+
: []);
|
|
38
|
+
}
|
|
39
|
+
setOrderByClauses() {
|
|
40
|
+
this.orderByClauses = this.parsedExpressions.map(expr => expr.orderByClause).filter(o => o !== undefined);
|
|
41
|
+
}
|
|
42
|
+
setGroupByClauses() {
|
|
43
|
+
this.groupByClauses = this.parsedExpressions.map(expr => expr.groupByClause).filter(g => g !== undefined);
|
|
44
|
+
}
|
|
45
|
+
setHavingClauses() {
|
|
46
|
+
this.havingClauses = this.parsedExpressions
|
|
47
|
+
.flatMap(expr => expr.havingClause
|
|
48
|
+
? QueryStatementBuilder.normalizeQueryConditions(expr.havingClause)
|
|
49
|
+
: []);
|
|
50
|
+
}
|
|
51
|
+
setValueClauseKeywords() {
|
|
52
|
+
this.parsedExpressions.forEach(expr => {
|
|
53
|
+
if (expr.valueClauseKeywords && expr.valueClauseKeywords.length > 0) {
|
|
54
|
+
for (const keyword of expr.valueClauseKeywords) {
|
|
55
|
+
this.valueClauseKeywords.add(keyword);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import IQueryBuilder from "../../../interfaces/IQueryBuilder.js";
|
|
2
|
+
import QueryDecorator from "./QueryDecorator.js";
|
|
3
|
+
import { QueryContext } from "../../../types/query.js";
|
|
4
|
+
export default class GroupByDecorator extends QueryDecorator {
|
|
5
|
+
private groupByColumns?;
|
|
6
|
+
constructor(component: IQueryBuilder, groupByColumns?: string[]);
|
|
7
|
+
build(): Promise<QueryContext>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=GroupByDecorator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GroupByDecorator.d.ts","sourceRoot":"","sources":["../../../../src/helpers/QueryBuilders/QueryDecorators/GroupByDecorator.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,mCAAmC,CAAC;AAC9D,OAAO,cAAc,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,cAAc;IACxD,OAAO,CAAC,cAAc,CAAC,CAAW;gBAEtB,SAAS,EAAE,aAAa,EAAE,cAAc,CAAC,EAAE,MAAM,EAAE;IAKzD,KAAK,IAAI,OAAO,CAAC,YAAY,CAAC;CASvC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import QueryDecorator from "./QueryDecorator.js";
|
|
11
|
+
export default class GroupByDecorator extends QueryDecorator {
|
|
12
|
+
constructor(component, groupByColumns) {
|
|
13
|
+
super(component);
|
|
14
|
+
this.groupByColumns = groupByColumns;
|
|
15
|
+
}
|
|
16
|
+
build() {
|
|
17
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
18
|
+
var _a;
|
|
19
|
+
const context = yield this.component.build();
|
|
20
|
+
if (this.groupByColumns) {
|
|
21
|
+
(_a = context.groupBy) !== null && _a !== void 0 ? _a : (context.groupBy = []);
|
|
22
|
+
context.groupBy.push(...this.groupByColumns);
|
|
23
|
+
}
|
|
24
|
+
return context;
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { QueryLayers, QueryContext } from "../../../index.js";
|
|
2
|
+
import QueryDecorator from "./QueryDecorator.js";
|
|
3
|
+
import IQueryBuilder from "../../../interfaces/IQueryBuilder.js";
|
|
4
|
+
import { TableColumnInfo } from "../../../types/index.js";
|
|
5
|
+
export default class JoinDecorator extends QueryDecorator {
|
|
6
|
+
private fromTableName;
|
|
7
|
+
private joins;
|
|
8
|
+
private tableColumnsCache;
|
|
9
|
+
private options?;
|
|
10
|
+
constructor(builder: IQueryBuilder, layer: QueryLayers, tableColumnInformation: Map<string, TableColumnInfo[]>);
|
|
11
|
+
build(): Promise<QueryContext>;
|
|
12
|
+
private buildJoinSelect;
|
|
13
|
+
private buildJoinPart;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=JoinDecorator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JoinDecorator.d.ts","sourceRoot":"","sources":["../../../../src/helpers/QueryBuilders/QueryDecorators/JoinDecorator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsD,WAAW,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC/G,OAAO,cAAc,MAAM,qBAAqB,CAAC;AACjD,OAAO,aAAa,MAAM,mCAAmC,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,cAAc;IACrD,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,iBAAiB,CAAiC;IAC1D,OAAO,CAAC,OAAO,CAAC,CAAgD;gBAEpD,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,WAAW,EAAE,sBAAsB,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,EAAE,CAAC;IAmBxG,KAAK,IAAI,OAAO,CAAC,YAAY,CAAC;YActB,eAAe;IAuB7B,OAAO,CAAC,aAAa;CAgBxB"}
|