@iamkirbki/database-handler-core 4.4.6 → 4.4.8
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 +2 -2
- package/dist/abstract/Controller.d.ts.map +1 -1
- package/dist/abstract/Controller.js +1 -1
- package/dist/abstract/Model.d.ts +10 -9
- package/dist/abstract/Model.d.ts.map +1 -1
- package/dist/abstract/Model.js +92 -70
- package/dist/abstract/SchemaTableBuilder.d.ts +1 -1
- package/dist/abstract/SchemaTableBuilder.d.ts.map +1 -1
- package/dist/abstract/SchemaTableBuilder.js +8 -8
- package/dist/abstract/model/ModelRelation.d.ts +5 -4
- package/dist/abstract/model/ModelRelation.d.ts.map +1 -1
- package/dist/abstract/model/ModelRelation.js +35 -27
- package/dist/base/Query.d.ts +4 -8
- package/dist/base/Query.d.ts.map +1 -1
- package/dist/base/Query.js +91 -73
- package/dist/base/Record.d.ts +5 -4
- package/dist/base/Record.d.ts.map +1 -1
- package/dist/base/Record.js +44 -23
- package/dist/base/Table.d.ts +17 -14
- package/dist/base/Table.d.ts.map +1 -1
- package/dist/base/Table.js +123 -89
- package/dist/factories/ModelFactory.d.ts +7 -0
- package/dist/factories/ModelFactory.d.ts.map +1 -0
- package/dist/factories/ModelFactory.js +6 -0
- package/dist/factories/QueryFactory.d.ts +7 -0
- package/dist/factories/QueryFactory.d.ts.map +1 -0
- package/dist/factories/QueryFactory.js +6 -0
- package/dist/factories/RecordFactory.d.ts +8 -0
- package/dist/factories/RecordFactory.d.ts.map +1 -0
- package/dist/factories/RecordFactory.js +6 -0
- package/dist/factories/TableFactory.d.ts +7 -0
- package/dist/factories/TableFactory.d.ts.map +1 -0
- package/dist/factories/TableFactory.js +6 -0
- package/dist/helpers/Errors/AdapterErrors/AdapterNotFoundError.d.ts +2 -1
- package/dist/helpers/Errors/AdapterErrors/AdapterNotFoundError.d.ts.map +1 -1
- package/dist/helpers/Errors/AdapterErrors/AdapterNotFoundError.js +3 -3
- package/dist/helpers/Errors/AdapterErrors/ConnectionFailedError.d.ts +2 -1
- package/dist/helpers/Errors/AdapterErrors/ConnectionFailedError.d.ts.map +1 -1
- package/dist/helpers/Errors/AdapterErrors/ConnectionFailedError.js +3 -3
- package/dist/helpers/Errors/AdapterErrors/NoDefaultAdapterError.d.ts +2 -1
- package/dist/helpers/Errors/AdapterErrors/NoDefaultAdapterError.d.ts.map +1 -1
- package/dist/helpers/Errors/AdapterErrors/NoDefaultAdapterError.js +3 -3
- package/dist/helpers/Errors/DatabaseHandlerError.d.ts +9 -0
- package/dist/helpers/Errors/DatabaseHandlerError.d.ts.map +1 -0
- package/dist/helpers/Errors/DatabaseHandlerError.js +10 -0
- package/dist/helpers/Errors/ExpressionErrors/InvalidExpressionParametersError.d.ts +2 -1
- package/dist/helpers/Errors/ExpressionErrors/InvalidExpressionParametersError.d.ts.map +1 -1
- package/dist/helpers/Errors/ExpressionErrors/InvalidExpressionParametersError.js +5 -3
- package/dist/helpers/Errors/ExpressionErrors/UnknownExpressionTypeError.d.ts +2 -1
- package/dist/helpers/Errors/ExpressionErrors/UnknownExpressionTypeError.d.ts.map +1 -1
- package/dist/helpers/Errors/ExpressionErrors/UnknownExpressionTypeError.js +5 -3
- package/dist/helpers/Errors/ExpressionErrors/UnsupportedQueryPhaseError.d.ts +2 -1
- package/dist/helpers/Errors/ExpressionErrors/UnsupportedQueryPhaseError.d.ts.map +1 -1
- package/dist/helpers/Errors/ExpressionErrors/UnsupportedQueryPhaseError.js +3 -3
- package/dist/helpers/Errors/ModelErrors/InvalidOperationError.d.ts +5 -0
- package/dist/helpers/Errors/ModelErrors/InvalidOperationError.d.ts.map +1 -0
- package/dist/helpers/Errors/ModelErrors/InvalidOperationError.js +6 -0
- package/dist/helpers/Errors/ModelErrors/RecordNotFoundError.d.ts +6 -0
- package/dist/helpers/Errors/ModelErrors/RecordNotFoundError.d.ts.map +1 -0
- package/dist/helpers/Errors/ModelErrors/RecordNotFoundError.js +6 -0
- package/dist/helpers/Errors/ModelErrors/RelationError.d.ts +5 -0
- package/dist/helpers/Errors/ModelErrors/RelationError.d.ts.map +1 -0
- package/dist/helpers/Errors/ModelErrors/RelationError.js +6 -0
- package/dist/helpers/Errors/QueryErrors/InvalidWhereConditionError.d.ts +5 -0
- package/dist/helpers/Errors/QueryErrors/InvalidWhereConditionError.d.ts.map +1 -0
- package/dist/helpers/Errors/QueryErrors/InvalidWhereConditionError.js +6 -0
- package/dist/helpers/Errors/QueryErrors/QueryExecutionError.d.ts +5 -0
- package/dist/helpers/Errors/QueryErrors/QueryExecutionError.d.ts.map +1 -0
- package/dist/helpers/Errors/QueryErrors/QueryExecutionError.js +6 -0
- package/dist/helpers/Errors/QueryErrors/UnexpectedEmptyQueryError.d.ts +2 -1
- package/dist/helpers/Errors/QueryErrors/UnexpectedEmptyQueryError.d.ts.map +1 -1
- package/dist/helpers/Errors/QueryErrors/UnexpectedEmptyQueryError.js +3 -3
- package/dist/helpers/Errors/TableErrors/UnknownTableError.d.ts +3 -2
- package/dist/helpers/Errors/TableErrors/UnknownTableError.d.ts.map +1 -1
- package/dist/helpers/Errors/TableErrors/UnknownTableError.js +4 -4
- package/dist/helpers/QueryBuilders/BaseQueryBuilders/BaseSelectQueryBuilder.d.ts +2 -2
- package/dist/helpers/QueryBuilders/BaseQueryBuilders/BaseSelectQueryBuilder.d.ts.map +1 -1
- package/dist/helpers/QueryBuilders/BaseQueryBuilders/BaseSelectQueryBuilder.js +1 -1
- package/dist/helpers/QueryBuilders/ExpressionBuilders/JsonAggregateExpression.d.ts +3 -4
- package/dist/helpers/QueryBuilders/ExpressionBuilders/JsonAggregateExpression.d.ts.map +1 -1
- package/dist/helpers/QueryBuilders/ExpressionBuilders/JsonAggregateExpression.js +46 -44
- package/dist/helpers/QueryBuilders/ExpressionBuilders/SpatialDistanceExpression.d.ts +3 -4
- package/dist/helpers/QueryBuilders/ExpressionBuilders/SpatialDistanceExpression.d.ts.map +1 -1
- package/dist/helpers/QueryBuilders/ExpressionBuilders/SpatialDistanceExpression.js +34 -32
- package/dist/helpers/QueryBuilders/ExpressionBuilders/TextRelevanceExpression.d.ts +3 -4
- package/dist/helpers/QueryBuilders/ExpressionBuilders/TextRelevanceExpression.d.ts.map +1 -1
- package/dist/helpers/QueryBuilders/ExpressionBuilders/TextRelevanceExpression.js +9 -20
- package/dist/helpers/QueryBuilders/QueryDecorators/ExpressionDecorator.d.ts +4 -4
- package/dist/helpers/QueryBuilders/QueryDecorators/ExpressionDecorator.d.ts.map +1 -1
- package/dist/helpers/QueryBuilders/QueryDecorators/ExpressionDecorator.js +14 -17
- package/dist/helpers/QueryBuilders/QueryDecorators/GroupByDecorator.d.ts +3 -3
- package/dist/helpers/QueryBuilders/QueryDecorators/GroupByDecorator.d.ts.map +1 -1
- package/dist/helpers/QueryBuilders/QueryDecorators/GroupByDecorator.js +2 -2
- package/dist/helpers/QueryBuilders/QueryDecorators/JoinDecorator.d.ts +4 -4
- package/dist/helpers/QueryBuilders/QueryDecorators/JoinDecorator.d.ts.map +1 -1
- package/dist/helpers/QueryBuilders/QueryDecorators/JoinDecorator.js +17 -14
- package/dist/helpers/QueryBuilders/QueryDecorators/LimitDecorator.d.ts +3 -3
- package/dist/helpers/QueryBuilders/QueryDecorators/LimitDecorator.d.ts.map +1 -1
- package/dist/helpers/QueryBuilders/QueryDecorators/LimitDecorator.js +2 -2
- package/dist/helpers/QueryBuilders/QueryDecorators/OrderByDecorator.d.ts +3 -3
- package/dist/helpers/QueryBuilders/QueryDecorators/OrderByDecorator.d.ts.map +1 -1
- package/dist/helpers/QueryBuilders/QueryDecorators/OrderByDecorator.js +2 -2
- package/dist/helpers/QueryBuilders/QueryDecorators/QueryDecorator.d.ts +2 -2
- package/dist/helpers/QueryBuilders/QueryDecorators/QueryDecorator.d.ts.map +1 -1
- package/dist/helpers/QueryBuilders/QueryDecorators/QueryDecorator.js +1 -1
- package/dist/helpers/QueryBuilders/QueryDecorators/WhereDecorator.d.ts +5 -5
- package/dist/helpers/QueryBuilders/QueryDecorators/WhereDecorator.d.ts.map +1 -1
- package/dist/helpers/QueryBuilders/QueryDecorators/WhereDecorator.js +3 -4
- package/dist/helpers/QueryBuilders/QueryExpressionBuilder.d.ts +1 -3
- package/dist/helpers/QueryBuilders/QueryExpressionBuilder.d.ts.map +1 -1
- package/dist/helpers/QueryBuilders/QueryExpressionBuilder.js +4 -22
- package/dist/helpers/QueryBuilders/QueryStatementBuilder.d.ts +3 -4
- package/dist/helpers/QueryBuilders/QueryStatementBuilder.d.ts.map +1 -1
- package/dist/helpers/QueryBuilders/QueryStatementBuilder.js +59 -45
- package/dist/helpers/QueryBuilders/{SqlRenderer.d.ts → SqlGenerator.d.ts} +3 -3
- package/dist/helpers/QueryBuilders/SqlGenerator.d.ts.map +1 -0
- package/dist/helpers/QueryBuilders/{SqlRenderer.js → SqlGenerator.js} +30 -19
- package/dist/helpers/QueryBuilders/{oldQueryStatementBuilder.d.ts → depricatedQueryStatementBuilder.d.ts} +19 -46
- package/dist/helpers/QueryBuilders/depricatedQueryStatementBuilder.d.ts.map +1 -0
- package/dist/helpers/QueryBuilders/{oldQueryStatementBuilder.js → depricatedQueryStatementBuilder.js} +31 -67
- package/dist/index.d.ts +13 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -7
- package/dist/interfaces/IController.d.ts +1 -1
- package/dist/interfaces/IController.d.ts.map +1 -1
- package/dist/interfaces/IDatabaseAdapter.d.ts +2 -2
- package/dist/interfaces/IDatabaseAdapter.d.ts.map +1 -1
- package/dist/interfaces/IExpressionBuilder.d.ts +1 -2
- package/dist/interfaces/IExpressionBuilder.d.ts.map +1 -1
- package/dist/interfaces/IFactory.d.ts +4 -0
- package/dist/interfaces/IFactory.d.ts.map +1 -0
- package/dist/interfaces/IFactory.js +1 -0
- package/dist/interfaces/IMigration.d.ts +4 -4
- package/dist/interfaces/IMigration.d.ts.map +1 -1
- package/dist/interfaces/IQueryBuilder.d.ts +1 -1
- package/dist/interfaces/IQueryBuilder.d.ts.map +1 -1
- package/dist/interfaces/ISchemaBuilder.d.ts +2 -2
- package/dist/interfaces/ISchemaBuilder.d.ts.map +1 -1
- package/dist/interfaces/IStatementAdapter.d.ts +1 -1
- package/dist/interfaces/IStatementAdapter.d.ts.map +1 -1
- package/dist/runtime/Container.d.ts +2 -3
- package/dist/runtime/Container.d.ts.map +1 -1
- package/dist/runtime/Container.js +3 -4
- package/dist/runtime/QueryCache.d.ts +1 -1
- package/dist/runtime/QueryCache.d.ts.map +1 -1
- package/dist/runtime/QueryCache.js +1 -1
- package/dist/runtime/Repository.d.ts +23 -12
- package/dist/runtime/Repository.d.ts.map +1 -1
- package/dist/runtime/Repository.js +324 -65
- package/dist/types/expressions.d.ts +12 -47
- package/dist/types/expressions.d.ts.map +1 -1
- package/dist/types/expressions.js +1 -6
- package/dist/types/factories.d.ts +5 -3
- package/dist/types/factories.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -1
- package/dist/types/model.d.ts +5 -23
- package/dist/types/model.d.ts.map +1 -1
- package/dist/types/query.d.ts +5 -4
- package/dist/types/query.d.ts.map +1 -1
- package/dist/types/record.d.ts +11 -0
- package/dist/types/record.d.ts.map +1 -0
- package/dist/types/record.js +1 -0
- package/dist/types/repository.d.ts +8 -0
- package/dist/types/repository.d.ts.map +1 -0
- package/dist/types/repository.js +1 -0
- package/dist/types/table.d.ts +9 -1
- package/dist/types/table.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/helpers/QueryBuilders/SqlRenderer.d.ts.map +0 -1
- package/dist/helpers/QueryBuilders/oldQueryStatementBuilder.d.ts.map +0 -1
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { DatabaseHandlerError } from '../DatabaseHandlerError.js';
|
|
2
|
+
export class InvalidWhereConditionError extends DatabaseHandlerError {
|
|
3
|
+
constructor(message = 'Invalid WHERE condition encountered.') {
|
|
4
|
+
super(message, { code: 'INVALID_WHERE_CONDITION_ERROR' });
|
|
5
|
+
}
|
|
6
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QueryExecutionError.d.ts","sourceRoot":"","sources":["../../../../src/helpers/Errors/QueryErrors/QueryExecutionError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAElE,qBAAa,mBAAoB,SAAQ,oBAAoB;gBAC7C,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;CAG7C"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
import { DatabaseHandlerError } from "../DatabaseHandlerError.js";
|
|
2
|
+
export declare class UnexpectedEmptyQueryError extends DatabaseHandlerError {
|
|
2
3
|
constructor();
|
|
3
4
|
}
|
|
4
5
|
//# sourceMappingURL=UnexpectedEmptyQueryError.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UnexpectedEmptyQueryError.d.ts","sourceRoot":"","sources":["../../../../src/helpers/Errors/QueryErrors/UnexpectedEmptyQueryError.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"UnexpectedEmptyQueryError.d.ts","sourceRoot":"","sources":["../../../../src/helpers/Errors/QueryErrors/UnexpectedEmptyQueryError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAElE,qBAAa,yBAA0B,SAAQ,oBAAoB;;CAIlE"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
import { DatabaseHandlerError } from "../DatabaseHandlerError.js";
|
|
2
|
+
export class UnexpectedEmptyQueryError extends DatabaseHandlerError {
|
|
2
3
|
constructor() {
|
|
3
|
-
super(`The query is unexpectedly empty. Please ensure that the query is properly constructed and contains valid clauses
|
|
4
|
-
this.name = "UnexpectedEmptyQueryError";
|
|
4
|
+
super(`The query is unexpectedly empty. Please ensure that the query is properly constructed and contains valid clauses.`, { code: 'UNEXPECTED_EMPTY_QUERY' });
|
|
5
5
|
}
|
|
6
6
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { DatabaseHandlerError } from "../DatabaseHandlerError.js";
|
|
2
|
+
export declare class UnknownTableError extends DatabaseHandlerError {
|
|
3
|
+
constructor(tableName: string, message?: string);
|
|
3
4
|
}
|
|
4
5
|
//# sourceMappingURL=UnknownTableError.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UnknownTableError.d.ts","sourceRoot":"","sources":["../../../../src/helpers/Errors/TableErrors/UnknownTableError.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"UnknownTableError.d.ts","sourceRoot":"","sources":["../../../../src/helpers/Errors/TableErrors/UnknownTableError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAElE,qBAAa,iBAAkB,SAAQ,oBAAoB;gBAC3C,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;CAGlD"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { DatabaseHandlerError } from "../DatabaseHandlerError.js";
|
|
2
|
+
export class UnknownTableError extends DatabaseHandlerError {
|
|
3
|
+
constructor(tableName, message) {
|
|
4
|
+
super(`Unknown table: ${tableName}${message ? `. ${message}` : ''}`, { code: 'UNKNOWN_TABLE' });
|
|
5
5
|
}
|
|
6
6
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import { IQueryBuilder } from "../../../interfaces/IQueryBuilder.js";
|
|
1
2
|
import { QueryContext } from "../../../index";
|
|
2
|
-
|
|
3
|
-
export default class BaseSelectQueryBuilder implements IQueryBuilder {
|
|
3
|
+
export declare class BaseSelectQueryBuilder implements IQueryBuilder {
|
|
4
4
|
private tableName;
|
|
5
5
|
private select;
|
|
6
6
|
private joinsSelect?;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseSelectQueryBuilder.d.ts","sourceRoot":"","sources":["../../../../src/helpers/QueryBuilders/BaseQueryBuilders/BaseSelectQueryBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"BaseSelectQueryBuilder.d.ts","sourceRoot":"","sources":["../../../../src/helpers/QueryBuilders/BaseQueryBuilders/BaseSelectQueryBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,qBAAa,sBAAuB,YAAW,aAAa;IACxD,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"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import { expressionClause, JsonAggregateQueryExpression } from
|
|
2
|
-
import IExpressionBuilder from
|
|
3
|
-
export
|
|
1
|
+
import { expressionClause, JsonAggregateQueryExpression } from '../../../types/index.js';
|
|
2
|
+
import { IExpressionBuilder } from '../../../interfaces/IExpressionBuilder.js';
|
|
3
|
+
export declare class JsonAggregateExpression implements IExpressionBuilder {
|
|
4
4
|
build(expression: JsonAggregateQueryExpression): expressionClause;
|
|
5
5
|
private buildJsonBuildObject;
|
|
6
6
|
validate(expression: JsonAggregateQueryExpression): boolean;
|
|
7
|
-
get defaultRequirements(): JsonAggregateQueryExpression['requirements'];
|
|
8
7
|
}
|
|
9
8
|
//# sourceMappingURL=JsonAggregateExpression.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JsonAggregateExpression.d.ts","sourceRoot":"","sources":["../../../../src/helpers/QueryBuilders/ExpressionBuilders/JsonAggregateExpression.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"JsonAggregateExpression.d.ts","sourceRoot":"","sources":["../../../../src/helpers/QueryBuilders/ExpressionBuilders/JsonAggregateExpression.ts"],"names":[],"mappings":"AACA,OAAO,EACL,gBAAgB,EAChB,4BAA4B,EAG7B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAS5E,qBAAa,uBAAwB,YAAW,kBAAkB;IAChE,KAAK,CAAC,UAAU,EAAE,4BAA4B,GAAG,gBAAgB;IAgCjE,OAAO,CAAC,oBAAoB;IAgG5B,QAAQ,CAAC,UAAU,EAAE,4BAA4B,GAAG,OAAO;CAY5D"}
|
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
import InvalidExpressionParametersError from
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
import QueryStatementBuilder from "../QueryStatementBuilder.js";
|
|
5
|
-
export default class JsonAggregateExpression {
|
|
1
|
+
import { InvalidExpressionParametersError } from '../../../helpers/Errors/ExpressionErrors/InvalidExpressionParametersError.js';
|
|
2
|
+
import { QueryExpressionBuilder } from '../QueryExpressionBuilder.js';
|
|
3
|
+
export class JsonAggregateExpression {
|
|
6
4
|
build(expression) {
|
|
7
5
|
if (!this.validate(expression)) {
|
|
8
|
-
throw new InvalidExpressionParametersError(
|
|
6
|
+
throw new InvalidExpressionParametersError('Invalid JSON aggregate expression parameters.');
|
|
9
7
|
}
|
|
10
8
|
const jsonBuildObjects = this.buildJsonBuildObject(expression);
|
|
11
9
|
const baseExpressionClause = `JSON_AGG(
|
|
@@ -13,55 +11,66 @@ export default class JsonAggregateExpression {
|
|
|
13
11
|
) AS ${expression.parameters.alias}`;
|
|
14
12
|
const groupByClause = expression.parameters.groupByColumns.length > 0
|
|
15
13
|
? expression.parameters.groupByColumns
|
|
16
|
-
.map(col => col.includes(
|
|
17
|
-
.join(
|
|
14
|
+
.map((col) => col.includes('.') ? `"${col.replace('.', '__')}"` : `"${col}"`)
|
|
15
|
+
.join(', ')
|
|
18
16
|
: undefined;
|
|
19
17
|
return {
|
|
20
18
|
baseExpressionClause,
|
|
21
|
-
phase: expression.requirements.phase,
|
|
22
|
-
requiresWrapping: expression.requirements.requiresSelectWrapping || false,
|
|
23
19
|
groupByClause,
|
|
24
20
|
whereClause: jsonBuildObjects.whereClause,
|
|
25
21
|
valueClauseKeywords: jsonBuildObjects.valueClauseKeywords,
|
|
26
|
-
havingClause: expression.parameters.having
|
|
22
|
+
havingClause: expression.parameters.having,
|
|
27
23
|
};
|
|
28
24
|
}
|
|
29
25
|
buildJsonBuildObject(expression) {
|
|
30
26
|
var _a, _b;
|
|
31
27
|
const columnPart = expression.parameters.columns
|
|
32
|
-
.map(col => `'${col}', "${expression.parameters.table}_${col}"`)
|
|
33
|
-
.join(
|
|
28
|
+
.map((col) => `'${col}', "${expression.parameters.table}_${col}"`)
|
|
29
|
+
.join(',\n ');
|
|
34
30
|
const computedPart = ((_a = expression.parameters.computed) === null || _a === void 0 ? void 0 : _a.length)
|
|
35
|
-
? expression.parameters.computed
|
|
36
|
-
.map(comp => {
|
|
31
|
+
? expression.parameters.computed.map((comp) => {
|
|
37
32
|
var _a;
|
|
38
|
-
const valueClauseKeywords =
|
|
33
|
+
const valueClauseKeywords = {
|
|
34
|
+
lat: `${comp.parameters.alias}_lat`,
|
|
35
|
+
lon: `${comp.parameters.alias}_lon`,
|
|
36
|
+
};
|
|
39
37
|
const expr = {
|
|
40
38
|
type: comp.type,
|
|
41
39
|
parameters: {
|
|
42
40
|
...comp.parameters,
|
|
43
|
-
valueClauseKeywords: comp.type === 'spatialDistance'
|
|
44
|
-
|
|
41
|
+
valueClauseKeywords: comp.type === 'spatialDistance'
|
|
42
|
+
? valueClauseKeywords
|
|
43
|
+
: comp.parameters.valueClauseKeywords,
|
|
44
|
+
isComputed: true,
|
|
45
45
|
},
|
|
46
|
-
requirements: QueryExpressionBuilder.getExpressionDefaultRequirements(comp.type)
|
|
47
46
|
};
|
|
48
|
-
const builder = QueryExpressionBuilder.buildExpressionsPart([
|
|
47
|
+
const builder = QueryExpressionBuilder.buildExpressionsPart([
|
|
48
|
+
expr,
|
|
49
|
+
])[0];
|
|
50
|
+
const prefixedKeywords = {};
|
|
51
|
+
if (builder.valueClauseKeywords) {
|
|
52
|
+
for (const [key, value] of Object.entries(builder.valueClauseKeywords)) {
|
|
53
|
+
prefixedKeywords[`${comp.parameters.alias}_${key}`] = value;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
49
56
|
return {
|
|
50
|
-
sql: `'${comp.parameters.alias}', ${(_a = builder.baseExpressionClause) === null || _a === void 0 ? void 0 : _a.split(
|
|
57
|
+
sql: `'${comp.parameters.alias}', ${(_a = builder.baseExpressionClause) === null || _a === void 0 ? void 0 : _a.split(' AS ')[0]}`,
|
|
51
58
|
whereClause: builder.whereClause,
|
|
52
|
-
valueClauseKeywords:
|
|
59
|
+
valueClauseKeywords: prefixedKeywords,
|
|
53
60
|
};
|
|
54
|
-
})
|
|
61
|
+
})
|
|
62
|
+
: [];
|
|
55
63
|
const computedSqlPart = computedPart.length
|
|
56
|
-
? computedPart.map(c => c.sql).join(
|
|
57
|
-
:
|
|
58
|
-
const whereClauses = computedPart
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
64
|
+
? computedPart.map((c) => c.sql).join(',\n ')
|
|
65
|
+
: '';
|
|
66
|
+
const whereClauses = computedPart.flatMap((c) => c.whereClause ? c.whereClause : []);
|
|
67
|
+
const valueClauseKeywords = computedPart.reduce((acc, c) => ({
|
|
68
|
+
...acc,
|
|
69
|
+
...(c.valueClauseKeywords || {}),
|
|
70
|
+
}), {});
|
|
62
71
|
const nestedPart = ((_b = expression.parameters.nested) === null || _b === void 0 ? void 0 : _b.length)
|
|
63
72
|
? expression.parameters.nested
|
|
64
|
-
.map(n => {
|
|
73
|
+
.map((n) => {
|
|
65
74
|
return `'${n.alias}', ${this.buildJsonBuildObject({
|
|
66
75
|
type: 'jsonAggregate',
|
|
67
76
|
parameters: {
|
|
@@ -70,20 +79,21 @@ export default class JsonAggregateExpression {
|
|
|
70
79
|
columns: n.columns,
|
|
71
80
|
computed: n.computed,
|
|
72
81
|
nested: n.nested,
|
|
73
|
-
groupByColumns: []
|
|
82
|
+
groupByColumns: [],
|
|
74
83
|
},
|
|
75
|
-
requirements: this.defaultRequirements
|
|
76
84
|
}).sql}`;
|
|
77
85
|
})
|
|
78
|
-
.join(
|
|
79
|
-
:
|
|
80
|
-
const parts = [columnPart, computedSqlPart, nestedPart]
|
|
86
|
+
.join(',\n ')
|
|
87
|
+
: '';
|
|
88
|
+
const parts = [columnPart, computedSqlPart, nestedPart]
|
|
89
|
+
.filter(Boolean)
|
|
90
|
+
.join(',\n ');
|
|
81
91
|
return {
|
|
82
92
|
sql: `JSON_BUILD_OBJECT(
|
|
83
93
|
${parts}
|
|
84
94
|
)`,
|
|
85
95
|
whereClause: whereClauses,
|
|
86
|
-
valueClauseKeywords: valueClauseKeywords
|
|
96
|
+
valueClauseKeywords: valueClauseKeywords,
|
|
87
97
|
};
|
|
88
98
|
}
|
|
89
99
|
validate(expression) {
|
|
@@ -95,12 +105,4 @@ export default class JsonAggregateExpression {
|
|
|
95
105
|
Array.isArray(expression.parameters.groupByColumns) &&
|
|
96
106
|
typeof expression.parameters.alias === 'string');
|
|
97
107
|
}
|
|
98
|
-
get defaultRequirements() {
|
|
99
|
-
return {
|
|
100
|
-
phase: QueryEvaluationPhase.PROJECTION,
|
|
101
|
-
cardinality: 'row',
|
|
102
|
-
requiresAlias: true,
|
|
103
|
-
requiresSelectWrapping: true
|
|
104
|
-
};
|
|
105
|
-
}
|
|
106
108
|
}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import IExpressionBuilder from
|
|
2
|
-
import { expressionClause, SpatialQueryExpression } from
|
|
3
|
-
export
|
|
1
|
+
import { IExpressionBuilder } from '../../../interfaces/IExpressionBuilder.js';
|
|
2
|
+
import { expressionClause, SpatialQueryExpression } from '../../../types/index.js';
|
|
3
|
+
export declare class SpatialDistanceExpression implements IExpressionBuilder {
|
|
4
4
|
build(expression: SpatialQueryExpression): expressionClause;
|
|
5
5
|
validate(expression: SpatialQueryExpression): boolean;
|
|
6
|
-
get defaultRequirements(): SpatialQueryExpression['requirements'];
|
|
7
6
|
}
|
|
8
7
|
//# sourceMappingURL=SpatialDistanceExpression.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SpatialDistanceExpression.d.ts","sourceRoot":"","sources":["../../../../src/helpers/QueryBuilders/ExpressionBuilders/SpatialDistanceExpression.ts"],"names":[],"mappings":"AACA,OAAO,kBAAkB,MAAM,wCAAwC,CAAC;
|
|
1
|
+
{"version":3,"file":"SpatialDistanceExpression.d.ts","sourceRoot":"","sources":["../../../../src/helpers/QueryBuilders/ExpressionBuilders/SpatialDistanceExpression.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EACL,gBAAgB,EAEhB,sBAAsB,EACvB,MAAM,sBAAsB,CAAC;AAE9B,qBAAa,yBAA0B,YAAW,kBAAkB;IAClE,KAAK,CAAC,UAAU,EAAE,sBAAsB,GAAG,gBAAgB;IA2D3D,QAAQ,CAAC,UAAU,EAAE,sBAAsB,GAAG,OAAO;CAiBtD"}
|
|
@@ -1,44 +1,50 @@
|
|
|
1
|
-
import InvalidExpressionParametersError from
|
|
2
|
-
|
|
3
|
-
import QueryStatementBuilder from "../QueryStatementBuilder.js";
|
|
4
|
-
export default class SpatialDistanceExpression {
|
|
1
|
+
import { InvalidExpressionParametersError } from '../../../helpers/Errors/ExpressionErrors/InvalidExpressionParametersError.js';
|
|
2
|
+
export class SpatialDistanceExpression {
|
|
5
3
|
build(expression) {
|
|
6
4
|
var _a;
|
|
7
5
|
if (!this.validate(expression)) {
|
|
8
|
-
throw new InvalidExpressionParametersError(
|
|
6
|
+
throw new InvalidExpressionParametersError('Invalid spatial distance expression parameters.');
|
|
9
7
|
}
|
|
10
8
|
const earthRadius = (_a = expression.parameters.earthRadius) !== null && _a !== void 0 ? _a : (expression.parameters.unit === 'km' ? 6371 : 3959);
|
|
11
9
|
const isComputed = expression.parameters.isComputed;
|
|
12
10
|
const baseExpressionClause = `
|
|
13
11
|
${earthRadius} * acos(
|
|
14
|
-
cos(radians(@${expression.parameters.valueClauseKeywords
|
|
15
|
-
* cos(radians(${isComputed ? expression.parameters.targetColumns.lat.replace(
|
|
12
|
+
cos(radians(@${expression.parameters.valueClauseKeywords.lat}))
|
|
13
|
+
* cos(radians(${isComputed ? expression.parameters.targetColumns.lat.replace('.', '_') : `${expression.parameters.targetColumns.lat}`}))
|
|
16
14
|
* cos(
|
|
17
|
-
radians(${isComputed ? expression.parameters.targetColumns.lon.replace(
|
|
18
|
-
- radians(@${expression.parameters.valueClauseKeywords
|
|
15
|
+
radians(${isComputed ? expression.parameters.targetColumns.lon.replace('.', '_') : `${expression.parameters.targetColumns.lon}`})
|
|
16
|
+
- radians(@${expression.parameters.valueClauseKeywords.lon})
|
|
19
17
|
)
|
|
20
|
-
+ sin(radians(@${expression.parameters.valueClauseKeywords
|
|
21
|
-
* sin(radians(${isComputed ? expression.parameters.targetColumns.lat.replace(
|
|
18
|
+
+ sin(radians(@${expression.parameters.valueClauseKeywords.lat}))
|
|
19
|
+
* sin(radians(${isComputed ? expression.parameters.targetColumns.lat.replace('.', '_') : `${expression.parameters.targetColumns.lat}`}))
|
|
22
20
|
) AS ${expression.parameters.alias}
|
|
23
21
|
`.trim();
|
|
24
22
|
const orderByClause = {
|
|
25
23
|
column: expression.parameters.alias,
|
|
26
|
-
direction: expression.parameters.orderByDistance || 'ASC'
|
|
24
|
+
direction: expression.parameters.orderByDistance || 'ASC',
|
|
27
25
|
};
|
|
26
|
+
const whereClauses = [
|
|
27
|
+
...(expression.parameters.where || []),
|
|
28
|
+
];
|
|
29
|
+
if (expression.parameters.maxDistance !== undefined) {
|
|
30
|
+
whereClauses.push({
|
|
31
|
+
column: expression.parameters.alias,
|
|
32
|
+
operator: '<=',
|
|
33
|
+
value: expression.parameters.maxDistance,
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
if (expression.parameters.minDistance !== undefined) {
|
|
37
|
+
whereClauses.push({
|
|
38
|
+
column: expression.parameters.alias,
|
|
39
|
+
operator: '>=',
|
|
40
|
+
value: expression.parameters.minDistance,
|
|
41
|
+
});
|
|
42
|
+
}
|
|
28
43
|
return {
|
|
29
44
|
baseExpressionClause,
|
|
30
|
-
|
|
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
|
-
],
|
|
45
|
+
whereClause: whereClauses,
|
|
40
46
|
valueClauseKeywords: expression.parameters.valueClauseKeywords,
|
|
41
|
-
orderByClause
|
|
47
|
+
orderByClause,
|
|
42
48
|
};
|
|
43
49
|
}
|
|
44
50
|
validate(expression) {
|
|
@@ -50,14 +56,10 @@ export default class SpatialDistanceExpression {
|
|
|
50
56
|
typeof expression.parameters.targetColumns.lon === 'string' &&
|
|
51
57
|
(expression.parameters.unit === 'km' ||
|
|
52
58
|
expression.parameters.unit === 'miles') &&
|
|
53
|
-
typeof expression.parameters.alias === 'string'
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
cardinality: 'row',
|
|
59
|
-
requiresAlias: true,
|
|
60
|
-
requiresSelectWrapping: true
|
|
61
|
-
};
|
|
59
|
+
typeof expression.parameters.alias === 'string' &&
|
|
60
|
+
(expression.parameters.maxDistance === undefined ||
|
|
61
|
+
typeof expression.parameters.maxDistance === 'number') &&
|
|
62
|
+
(expression.parameters.minDistance === undefined ||
|
|
63
|
+
typeof expression.parameters.minDistance === 'number'));
|
|
62
64
|
}
|
|
63
65
|
}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import IExpressionBuilder from
|
|
2
|
-
import { expressionClause,
|
|
3
|
-
export
|
|
1
|
+
import { IExpressionBuilder } from '../../../interfaces/IExpressionBuilder.js';
|
|
2
|
+
import { expressionClause, TextRelevanceQueryExpression } from '../../../types/index.js';
|
|
3
|
+
export declare class TextRelevanceExpression implements IExpressionBuilder {
|
|
4
4
|
build(expression: TextRelevanceQueryExpression): expressionClause;
|
|
5
5
|
validate(expression: TextRelevanceQueryExpression): boolean;
|
|
6
|
-
get defaultRequirements(): QueryExpressionRequirements;
|
|
7
6
|
}
|
|
8
7
|
//# sourceMappingURL=TextRelevanceExpression.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextRelevanceExpression.d.ts","sourceRoot":"","sources":["../../../../src/helpers/QueryBuilders/ExpressionBuilders/TextRelevanceExpression.ts"],"names":[],"mappings":"AACA,OAAO,kBAAkB,MAAM,wCAAwC,CAAC;
|
|
1
|
+
{"version":3,"file":"TextRelevanceExpression.d.ts","sourceRoot":"","sources":["../../../../src/helpers/QueryBuilders/ExpressionBuilders/TextRelevanceExpression.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EACL,gBAAgB,EAChB,4BAA4B,EAC7B,MAAM,sBAAsB,CAAC;AAE9B,qBAAa,uBAAwB,YAAW,kBAAkB;IAChE,KAAK,CAAC,UAAU,EAAE,4BAA4B,GAAG,gBAAgB;IAkCjE,QAAQ,CAAC,UAAU,EAAE,4BAA4B,GAAG,OAAO;CAY5D"}
|
|
@@ -1,30 +1,27 @@
|
|
|
1
|
-
import InvalidExpressionParametersError from
|
|
2
|
-
|
|
3
|
-
export default class TextRelevanceExpression {
|
|
1
|
+
import { InvalidExpressionParametersError } from '../../../helpers/Errors/ExpressionErrors/InvalidExpressionParametersError.js';
|
|
2
|
+
export class TextRelevanceExpression {
|
|
4
3
|
build(expression) {
|
|
5
4
|
if (!this.validate(expression)) {
|
|
6
|
-
throw new InvalidExpressionParametersError(
|
|
5
|
+
throw new InvalidExpressionParametersError('Invalid text relevance expression parameters.');
|
|
7
6
|
}
|
|
8
7
|
// Score: 3 = exact match, 2 = starts with, 1 = contains, 0 = no match
|
|
9
8
|
const columnConcat = expression.parameters.targetColumns
|
|
10
|
-
.map(col => `COALESCE(${col}, '')`)
|
|
9
|
+
.map((col) => `COALESCE(${col}, '')`)
|
|
11
10
|
.join(" || ' ' || ");
|
|
12
11
|
const baseExpressionClause = `(
|
|
13
12
|
CASE
|
|
14
|
-
WHEN LOWER(${columnConcat}) = LOWER(@${expression.parameters.valueClauseKeywords
|
|
15
|
-
WHEN LOWER(${columnConcat}) LIKE LOWER(@${expression.parameters.valueClauseKeywords
|
|
16
|
-
WHEN LOWER(${columnConcat}) LIKE LOWER('%' || @${expression.parameters.valueClauseKeywords
|
|
13
|
+
WHEN LOWER(${columnConcat}) = LOWER(@${expression.parameters.valueClauseKeywords.searchTerm}) THEN 3
|
|
14
|
+
WHEN LOWER(${columnConcat}) LIKE LOWER(@${expression.parameters.valueClauseKeywords.searchTerm} || '%') THEN 2
|
|
15
|
+
WHEN LOWER(${columnConcat}) LIKE LOWER('%' || @${expression.parameters.valueClauseKeywords.searchTerm} || '%') THEN 1
|
|
17
16
|
ELSE 0
|
|
18
17
|
END
|
|
19
18
|
) AS ${expression.parameters.alias}`;
|
|
20
19
|
const orderByClause = {
|
|
21
20
|
column: expression.parameters.alias,
|
|
22
|
-
direction: expression.parameters.orderByRelevance || 'ASC'
|
|
21
|
+
direction: expression.parameters.orderByRelevance || 'ASC',
|
|
23
22
|
};
|
|
24
23
|
return {
|
|
25
24
|
baseExpressionClause,
|
|
26
|
-
phase: expression.requirements.phase,
|
|
27
|
-
requiresWrapping: expression.requirements.requiresSelectWrapping || false,
|
|
28
25
|
whereClause: expression.parameters.where,
|
|
29
26
|
valueClauseKeywords: expression.parameters.valueClauseKeywords,
|
|
30
27
|
orderByClause,
|
|
@@ -34,16 +31,8 @@ export default class TextRelevanceExpression {
|
|
|
34
31
|
return (expression.type === 'textRelevance' &&
|
|
35
32
|
typeof expression.parameters.searchTerm === 'string' &&
|
|
36
33
|
Array.isArray(expression.parameters.targetColumns) &&
|
|
37
|
-
expression.parameters.targetColumns.every(col => typeof col === 'string') &&
|
|
34
|
+
expression.parameters.targetColumns.every((col) => typeof col === 'string') &&
|
|
38
35
|
typeof expression.parameters.alias === 'string' &&
|
|
39
36
|
typeof expression.parameters.minimumRelevance == 'number');
|
|
40
37
|
}
|
|
41
|
-
get defaultRequirements() {
|
|
42
|
-
return {
|
|
43
|
-
phase: QueryEvaluationPhase.PROJECTION,
|
|
44
|
-
cardinality: 'row',
|
|
45
|
-
requiresAlias: true,
|
|
46
|
-
requiresSelectWrapping: true
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
38
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { expressionClause, OrderByDefinition, QueryComparisonParameters, QueryContext } from
|
|
2
|
-
import QueryDecorator from
|
|
3
|
-
import IQueryBuilder from
|
|
4
|
-
export
|
|
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 declare class ExpressionDecorator extends QueryDecorator {
|
|
5
5
|
private parsedExpressions;
|
|
6
6
|
whereClauses?: QueryComparisonParameters[];
|
|
7
7
|
orderByClauses?: OrderByDefinition[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExpressionDecorator.d.ts","sourceRoot":"","sources":["../../../../src/helpers/QueryBuilders/QueryDecorators/ExpressionDecorator.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"ExpressionDecorator.d.ts","sourceRoot":"","sources":["../../../../src/helpers/QueryBuilders/QueryDecorators/ExpressionDecorator.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,yBAAyB,EACzB,YAAY,EACb,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAElE,qBAAa,mBAAoB,SAAQ,cAAc;IACrD,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;gBAExC,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,gBAAgB,EAAE;IAU/D,KAAK,IAAI,OAAO,CAAC,YAAY,CAAC;IAY7B,eAAe,IAAI,IAAI;IAMvB,iBAAiB,IAAI,IAAI;IAMzB,iBAAiB,IAAI,IAAI;IAMzB,gBAAgB,IAAI,IAAI;IAMxB,sBAAsB,IAAI,IAAI;CAStC"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import QueryDecorator from
|
|
2
|
-
|
|
3
|
-
export default class ExpressionDecorator extends QueryDecorator {
|
|
1
|
+
import { QueryDecorator } from './QueryDecorator.js';
|
|
2
|
+
export class ExpressionDecorator extends QueryDecorator {
|
|
4
3
|
constructor(component, expressions) {
|
|
5
4
|
super(component);
|
|
6
5
|
this.valueClauseKeywords = new Set();
|
|
@@ -15,32 +14,30 @@ export default class ExpressionDecorator extends QueryDecorator {
|
|
|
15
14
|
var _a, _b;
|
|
16
15
|
const context = await this.component.build();
|
|
17
16
|
(_a = context.expressionSelect) !== null && _a !== void 0 ? _a : (context.expressionSelect = []);
|
|
18
|
-
context.expressionSelect.push(...this.parsedExpressions.map(e => e.baseExpressionClause));
|
|
17
|
+
context.expressionSelect.push(...this.parsedExpressions.map((e) => e.baseExpressionClause));
|
|
19
18
|
(_b = context.conditions) !== null && _b !== void 0 ? _b : (context.conditions = {});
|
|
20
19
|
return context;
|
|
21
20
|
}
|
|
22
21
|
setWhereClauses() {
|
|
23
|
-
this.whereClauses = this.parsedExpressions
|
|
24
|
-
.flatMap(expr => expr.whereClause
|
|
25
|
-
? QueryStatementBuilder.normalizeQueryConditions(expr.whereClause)
|
|
26
|
-
: []);
|
|
22
|
+
this.whereClauses = this.parsedExpressions.flatMap((expr) => expr.whereClause ? expr.whereClause : []);
|
|
27
23
|
}
|
|
28
24
|
setOrderByClauses() {
|
|
29
|
-
this.orderByClauses = this.parsedExpressions
|
|
25
|
+
this.orderByClauses = this.parsedExpressions
|
|
26
|
+
.map((expr) => expr.orderByClause)
|
|
27
|
+
.filter((o) => o !== undefined);
|
|
30
28
|
}
|
|
31
29
|
setGroupByClauses() {
|
|
32
|
-
this.groupByClauses = this.parsedExpressions
|
|
30
|
+
this.groupByClauses = this.parsedExpressions
|
|
31
|
+
.map((expr) => expr.groupByClause)
|
|
32
|
+
.filter((g) => g !== undefined);
|
|
33
33
|
}
|
|
34
34
|
setHavingClauses() {
|
|
35
|
-
this.havingClauses = this.parsedExpressions
|
|
36
|
-
.flatMap(expr => expr.havingClause
|
|
37
|
-
? QueryStatementBuilder.normalizeQueryConditions(expr.havingClause)
|
|
38
|
-
: []);
|
|
35
|
+
this.havingClauses = this.parsedExpressions.flatMap((expr) => expr.havingClause ? expr.havingClause : []);
|
|
39
36
|
}
|
|
40
37
|
setValueClauseKeywords() {
|
|
41
|
-
this.parsedExpressions.forEach(expr => {
|
|
42
|
-
if (expr.valueClauseKeywords
|
|
43
|
-
for (const keyword of expr.valueClauseKeywords) {
|
|
38
|
+
this.parsedExpressions.forEach((expr) => {
|
|
39
|
+
if (expr.valueClauseKeywords) {
|
|
40
|
+
for (const keyword of Object.values(expr.valueClauseKeywords)) {
|
|
44
41
|
this.valueClauseKeywords.add(keyword);
|
|
45
42
|
}
|
|
46
43
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import IQueryBuilder from "../../../interfaces/IQueryBuilder.js";
|
|
2
|
-
import QueryDecorator from "./QueryDecorator.js";
|
|
1
|
+
import { IQueryBuilder } from "../../../interfaces/IQueryBuilder.js";
|
|
2
|
+
import { QueryDecorator } from "./QueryDecorator.js";
|
|
3
3
|
import { QueryContext } from "../../../types/query.js";
|
|
4
|
-
export
|
|
4
|
+
export declare class GroupByDecorator extends QueryDecorator {
|
|
5
5
|
private groupByColumns?;
|
|
6
6
|
constructor(component: IQueryBuilder, groupByColumns?: string[]);
|
|
7
7
|
build(): Promise<QueryContext>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GroupByDecorator.d.ts","sourceRoot":"","sources":["../../../../src/helpers/QueryBuilders/QueryDecorators/GroupByDecorator.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"GroupByDecorator.d.ts","sourceRoot":"","sources":["../../../../src/helpers/QueryBuilders/QueryDecorators/GroupByDecorator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,qBAAa,gBAAiB,SAAQ,cAAc;IAChD,OAAO,CAAC,cAAc,CAAC,CAAW;gBAEtB,SAAS,EAAE,aAAa,EAAE,cAAc,CAAC,EAAE,MAAM,EAAE;IAKzD,KAAK,IAAI,OAAO,CAAC,YAAY,CAAC;CASvC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import QueryDecorator from "./QueryDecorator.js";
|
|
2
|
-
export
|
|
1
|
+
import { QueryDecorator } from "./QueryDecorator.js";
|
|
2
|
+
export class GroupByDecorator extends QueryDecorator {
|
|
3
3
|
constructor(component, groupByColumns) {
|
|
4
4
|
super(component);
|
|
5
5
|
this.groupByColumns = groupByColumns;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { QueryLayers, QueryContext } from "../../../index.js";
|
|
2
|
-
import QueryDecorator from "./QueryDecorator.js";
|
|
3
|
-
import IQueryBuilder from "../../../interfaces/IQueryBuilder.js";
|
|
2
|
+
import { QueryDecorator } from "./QueryDecorator.js";
|
|
3
|
+
import { IQueryBuilder } from "../../../interfaces/IQueryBuilder.js";
|
|
4
4
|
import { TableColumnInfo } from "../../../types/index.js";
|
|
5
|
-
export
|
|
5
|
+
export declare class JoinDecorator extends QueryDecorator {
|
|
6
6
|
private fromTableName;
|
|
7
7
|
private joins;
|
|
8
8
|
private tableColumnsCache;
|
|
@@ -10,6 +10,6 @@ export default class JoinDecorator extends QueryDecorator {
|
|
|
10
10
|
constructor(builder: IQueryBuilder, layer: QueryLayers, tableColumnInformation: Map<string, TableColumnInfo[]>);
|
|
11
11
|
build(): Promise<QueryContext>;
|
|
12
12
|
private buildJoinSelect;
|
|
13
|
-
private
|
|
13
|
+
private buildSqlJoinPart;
|
|
14
14
|
}
|
|
15
15
|
//# sourceMappingURL=JoinDecorator.d.ts.map
|
|
@@ -1 +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;
|
|
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,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGvD,qBAAa,aAAc,SAAQ,cAAc;IAC7C,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;IAcpC,OAAO,CAAC,eAAe;IAuBvB,OAAO,CAAC,gBAAgB;CAiB3B"}
|