@iamkirbki/database-handler-core 4.4.3 → 4.4.4
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.js +18 -39
- package/dist/abstract/Model.d.ts.map +1 -1
- package/dist/abstract/Model.js +100 -98
- package/dist/abstract/SchemaTableBuilder.js +4 -1
- package/dist/abstract/model/ModelRelation.js +34 -46
- package/dist/base/Query.js +56 -79
- package/dist/base/Record.js +75 -90
- package/dist/base/Table.js +128 -153
- package/dist/helpers/QueryBuilders/BaseQueryBuilders/BaseSelectQueryBuilder.js +7 -18
- package/dist/helpers/QueryBuilders/ExpressionBuilders/JsonAggregateExpression.js +5 -1
- package/dist/helpers/QueryBuilders/QueryDecorators/ExpressionDecorator.js +7 -18
- package/dist/helpers/QueryBuilders/QueryDecorators/GroupByDecorator.js +8 -19
- package/dist/helpers/QueryBuilders/QueryDecorators/JoinDecorator.js +26 -39
- package/dist/helpers/QueryBuilders/QueryDecorators/LimitDecorator.js +9 -20
- package/dist/helpers/QueryBuilders/QueryDecorators/OrderByDecorator.js +8 -19
- package/dist/helpers/QueryBuilders/QueryDecorators/WhereDecorator.js +9 -20
- package/dist/helpers/QueryBuilders/QueryStatementBuilder.js +87 -101
- package/dist/runtime/Repository.d.ts +1 -1
- package/dist/runtime/Repository.d.ts.map +1 -1
- package/dist/runtime/Repository.js +71 -95
- package/package.json +1 -1
|
@@ -1,12 +1,3 @@
|
|
|
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
1
|
import QueryDecorator from "./QueryDecorator.js";
|
|
11
2
|
export default class JoinDecorator extends QueryDecorator {
|
|
12
3
|
constructor(builder, layer, tableColumnInformation) {
|
|
@@ -26,37 +17,33 @@ export default class JoinDecorator extends QueryDecorator {
|
|
|
26
17
|
blacklistTables: (_e = layer.final) === null || _e === void 0 ? void 0 : _e.blacklistTables,
|
|
27
18
|
};
|
|
28
19
|
}
|
|
29
|
-
build() {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
return context;
|
|
39
|
-
});
|
|
20
|
+
async build() {
|
|
21
|
+
var _a;
|
|
22
|
+
const context = await this.component.build();
|
|
23
|
+
const selectExtensions = await this.buildJoinSelect();
|
|
24
|
+
const joinPart = this.buildJoinPart();
|
|
25
|
+
context.joinsSelect = selectExtensions;
|
|
26
|
+
(_a = context.joins) !== null && _a !== void 0 ? _a : (context.joins = []);
|
|
27
|
+
context.joins.push(...joinPart);
|
|
28
|
+
return context;
|
|
40
29
|
}
|
|
41
|
-
buildJoinSelect() {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
return [...mainSelect, ...joinedSelects.flat()].filter(s => s !== "").filter(Boolean);
|
|
59
|
-
});
|
|
30
|
+
async buildJoinSelect() {
|
|
31
|
+
var _a;
|
|
32
|
+
const blacklist = ((_a = this.options) === null || _a === void 0 ? void 0 : _a.blacklistTables) || [];
|
|
33
|
+
const joinArray = Array.isArray(this.joins) ? this.joins : [this.joins];
|
|
34
|
+
const mainCols = this.tableColumnsCache.get(this.fromTableName) || [];
|
|
35
|
+
const mainSelect = mainCols
|
|
36
|
+
.filter(() => !blacklist.includes(this.fromTableName))
|
|
37
|
+
.map(col => `"${this.fromTableName}"."${col.name}" AS "${this.fromTableName}__${col.name}"`);
|
|
38
|
+
const joinedSelects = await Promise.all(joinArray.map(async (join) => {
|
|
39
|
+
if (blacklist.includes(join.fromTable))
|
|
40
|
+
return "";
|
|
41
|
+
const cols = this.tableColumnsCache.get(join.fromTable) || [];
|
|
42
|
+
return cols
|
|
43
|
+
.map(col => `"${join.fromTable}"."${col.name}" AS "${join.fromTable}__${col.name}"`)
|
|
44
|
+
.filter(col => col.trim() !== "");
|
|
45
|
+
}));
|
|
46
|
+
return [...mainSelect, ...joinedSelects.flat()].filter(s => s !== "").filter(Boolean);
|
|
60
47
|
}
|
|
61
48
|
buildJoinPart() {
|
|
62
49
|
const joinArray = Array.isArray(this.joins) ? this.joins : [this.joins];
|
|
@@ -1,12 +1,3 @@
|
|
|
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
1
|
import QueryDecorator from "./QueryDecorator.js";
|
|
11
2
|
export default class LimitDecorator extends QueryDecorator {
|
|
12
3
|
constructor(component, limitCount, offsetCount) {
|
|
@@ -14,16 +5,14 @@ export default class LimitDecorator extends QueryDecorator {
|
|
|
14
5
|
this.limitCount = limitCount;
|
|
15
6
|
this.offsetCount = offsetCount;
|
|
16
7
|
}
|
|
17
|
-
build() {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
return context;
|
|
27
|
-
});
|
|
8
|
+
async build() {
|
|
9
|
+
const context = await this.component.build();
|
|
10
|
+
if (this.limitCount) {
|
|
11
|
+
context.limit = this.limitCount;
|
|
12
|
+
}
|
|
13
|
+
if (this.offsetCount) {
|
|
14
|
+
context.offset = this.offsetCount;
|
|
15
|
+
}
|
|
16
|
+
return context;
|
|
28
17
|
}
|
|
29
18
|
}
|
|
@@ -1,27 +1,16 @@
|
|
|
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
1
|
import QueryDecorator from "./QueryDecorator.js";
|
|
11
2
|
export default class OrderByDecorator extends QueryDecorator {
|
|
12
3
|
constructor(component, orderByColumns) {
|
|
13
4
|
super(component);
|
|
14
5
|
this.orderByColumns = orderByColumns;
|
|
15
6
|
}
|
|
16
|
-
build() {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
return context;
|
|
25
|
-
});
|
|
7
|
+
async build() {
|
|
8
|
+
var _a;
|
|
9
|
+
const context = await this.component.build();
|
|
10
|
+
if (this.orderByColumns) {
|
|
11
|
+
(_a = context.orderBy) !== null && _a !== void 0 ? _a : (context.orderBy = []);
|
|
12
|
+
context.orderBy.push(...this.orderByColumns);
|
|
13
|
+
}
|
|
14
|
+
return context;
|
|
26
15
|
}
|
|
27
16
|
}
|
|
@@ -1,12 +1,3 @@
|
|
|
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
1
|
import QueryDecorator from "./QueryDecorator.js";
|
|
11
2
|
import QueryStatementBuilder from "../QueryStatementBuilder.js";
|
|
12
3
|
export default class WhereDecorator extends QueryDecorator {
|
|
@@ -14,16 +5,14 @@ export default class WhereDecorator extends QueryDecorator {
|
|
|
14
5
|
super(component);
|
|
15
6
|
this.conditions = conditions;
|
|
16
7
|
}
|
|
17
|
-
build() {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
return context;
|
|
27
|
-
});
|
|
8
|
+
async build() {
|
|
9
|
+
var _a, _b;
|
|
10
|
+
var _c;
|
|
11
|
+
const context = await this.component.build();
|
|
12
|
+
const combinedConditions = [...QueryStatementBuilder.normalizeQueryConditions(this.conditions)];
|
|
13
|
+
(_a = context.conditions) !== null && _a !== void 0 ? _a : (context.conditions = {});
|
|
14
|
+
(_b = (_c = context.conditions).where) !== null && _b !== void 0 ? _b : (_c.where = []);
|
|
15
|
+
context.conditions.where.push(...combinedConditions);
|
|
16
|
+
return context;
|
|
28
17
|
}
|
|
29
18
|
}
|
|
@@ -1,12 +1,3 @@
|
|
|
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
1
|
import BaseSelectQueryBuilder from "./BaseQueryBuilders/BaseSelectQueryBuilder.js";
|
|
11
2
|
import ExpressionDecorator from "./QueryDecorators/ExpressionDecorator.js";
|
|
12
3
|
import QueryExpressionBuilder from "./QueryExpressionBuilder.js";
|
|
@@ -26,112 +17,104 @@ export default class QueryStatementBuilder {
|
|
|
26
17
|
this._tableColumnsCache = tableColumnInformation;
|
|
27
18
|
}
|
|
28
19
|
}
|
|
29
|
-
build() {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
return sql;
|
|
39
|
-
});
|
|
20
|
+
async build() {
|
|
21
|
+
let sql = await this.buildBaseLayer();
|
|
22
|
+
if (this._layers.pretty) {
|
|
23
|
+
sql = await this.buildPrettyLayer(sql);
|
|
24
|
+
}
|
|
25
|
+
if (this._layers.final) {
|
|
26
|
+
sql = await this.buildFinalLayer(sql);
|
|
27
|
+
}
|
|
28
|
+
return sql;
|
|
40
29
|
}
|
|
41
|
-
buildBaseLayer() {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
30
|
+
async buildBaseLayer() {
|
|
31
|
+
var _a, _b, _c;
|
|
32
|
+
var _d, _e;
|
|
33
|
+
if (!this._layers.base.from) {
|
|
34
|
+
throw new Error("Base layer must specify 'from' table name.");
|
|
35
|
+
}
|
|
36
|
+
let builder = new BaseSelectQueryBuilder(this._layers.base.from, this._layers.base.select || [], this._layers.base.joinsSelect || [], this._layers.base.expressionsSelect || []);
|
|
37
|
+
if (this._layers.base.joins && this._layers.base.joins.length > 0) {
|
|
38
|
+
builder = new JoinDecorator(builder, { base: this._layers.base, pretty: this._layers.pretty, final: this._layers.final }, this._tableColumnsCache);
|
|
39
|
+
}
|
|
40
|
+
if (this._layers.base.expressions && this._layers.base.expressions.length > 0) {
|
|
41
|
+
const expressions = QueryExpressionBuilder.buildExpressionsPart(this._layers.base.expressions || []);
|
|
42
|
+
builder = new ExpressionDecorator(builder, expressions || []);
|
|
43
|
+
if (builder instanceof ExpressionDecorator) {
|
|
44
|
+
this._valueClauseKeywords = new Set([...this._valueClauseKeywords, ...builder.valueClauseKeywords]);
|
|
45
|
+
(_a = (_d = this._layers).pretty) !== null && _a !== void 0 ? _a : (_d.pretty = {});
|
|
46
|
+
(_b = (_e = this._layers).final) !== null && _b !== void 0 ? _b : (_e.final = {});
|
|
47
|
+
this._layers.pretty.where = this.addUnique(this._layers.pretty.where, builder.whereClauses);
|
|
48
|
+
this._layers.pretty.groupBy = this.addUnique(this._layers.pretty.groupBy, builder.groupByClauses);
|
|
49
|
+
this._layers.pretty.having = this.addUnique(this._layers.pretty.having, builder.havingClauses);
|
|
50
|
+
this._layers.base.orderBy = this.addUnique((_c = this._layers.base.orderBy) === null || _c === void 0 ? void 0 : _c.map(ob => ({ column: `${ob.column}`, direction: ob.direction })), builder.orderByClauses);
|
|
47
51
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
builder = new JoinDecorator(builder, { base: this._layers.base, pretty: this._layers.pretty, final: this._layers.final }, this._tableColumnsCache);
|
|
52
|
+
if (this._layers.base.where) {
|
|
53
|
+
builder = new WhereDecorator(builder, this._layers.base.joins ? QueryStatementBuilder.normalizeAndQualifyConditions(this._layers.base.where, this._layers.base.from) : this._layers.base.where);
|
|
51
54
|
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
+
}
|
|
56
|
+
else if (this._layers.base.where) {
|
|
57
|
+
builder = new WhereDecorator(builder, this._layers.base.joins ? QueryStatementBuilder.normalizeAndQualifyConditions(this._layers.base.where, this._layers.base.from) : this._layers.base.where);
|
|
58
|
+
}
|
|
59
|
+
if (this._layers.base.where) {
|
|
60
|
+
builder = new WhereDecorator(builder, this._layers.base.joins ? QueryStatementBuilder.normalizeAndQualifyConditions(this._layers.base.where, this._layers.base.from) : this._layers.base.where);
|
|
61
|
+
}
|
|
62
|
+
if (this._layers.base.orderBy) {
|
|
63
|
+
builder = new OrderByDecorator(builder, this._layers.base.orderBy);
|
|
64
|
+
}
|
|
65
|
+
this._contexts.base = await builder.build();
|
|
66
|
+
const renderer = new SqlRenderer(this._contexts.base);
|
|
67
|
+
return renderer.build();
|
|
68
|
+
}
|
|
69
|
+
async buildPrettyLayer(sql) {
|
|
70
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
71
|
+
var _h;
|
|
72
|
+
let builder = new BaseSelectQueryBuilder(`( ${sql} ) AS BASE_QUERY`, [...((_a = this._contexts.base) === null || _a === void 0 ? void 0 : _a.select) || [], ...((_b = this._layers.pretty) === null || _b === void 0 ? void 0 : _b.select) || []], ((_d = (_c = this._contexts.base) === null || _c === void 0 ? void 0 : _c.joinsSelect) === null || _d === void 0 ? void 0 : _d.map(j => j.split("AS")[1].trim())) || []);
|
|
73
|
+
if (this._layers.pretty) {
|
|
74
|
+
const expressions = ((_e = this._layers.pretty.expressions) === null || _e === void 0 ? void 0 : _e.length)
|
|
75
|
+
? QueryExpressionBuilder.buildExpressionsPart(this._layers.pretty.expressions)
|
|
76
|
+
: [];
|
|
77
|
+
if (expressions.length > 0) {
|
|
78
|
+
builder = new ExpressionDecorator(builder, expressions);
|
|
55
79
|
if (builder instanceof ExpressionDecorator) {
|
|
56
|
-
this._valueClauseKeywords = new Set([...this._valueClauseKeywords, ...builder.valueClauseKeywords]);
|
|
57
|
-
(_a = (_d = this._layers).pretty) !== null && _a !== void 0 ? _a : (_d.pretty = {});
|
|
58
|
-
(_b = (_e = this._layers).final) !== null && _b !== void 0 ? _b : (_e.final = {});
|
|
59
80
|
this._layers.pretty.where = this.addUnique(this._layers.pretty.where, builder.whereClauses);
|
|
60
81
|
this._layers.pretty.groupBy = this.addUnique(this._layers.pretty.groupBy, builder.groupByClauses);
|
|
61
82
|
this._layers.pretty.having = this.addUnique(this._layers.pretty.having, builder.havingClauses);
|
|
62
|
-
|
|
83
|
+
(_f = (_h = this._layers).final) !== null && _f !== void 0 ? _f : (_h.final = {});
|
|
84
|
+
this._layers.final.orderBy = this.addUnique((_g = this._layers.final.orderBy) === null || _g === void 0 ? void 0 : _g.map(ob => ({ column: `BASE_QUERY.${ob.column}`, direction: ob.direction })), builder.orderByClauses);
|
|
63
85
|
}
|
|
64
|
-
if (this._layers.
|
|
65
|
-
builder = new WhereDecorator(builder,
|
|
86
|
+
if (this._layers.pretty.where) {
|
|
87
|
+
builder = new WhereDecorator(builder, QueryStatementBuilder.normalizeAndQualifyConditions(this._layers.pretty.where, "BASE_QUERY", [], this._valueClauseKeywords));
|
|
66
88
|
}
|
|
67
89
|
}
|
|
68
|
-
else if (this._layers.
|
|
69
|
-
builder = new WhereDecorator(builder,
|
|
90
|
+
else if (this._layers.pretty.where) {
|
|
91
|
+
builder = new WhereDecorator(builder, QueryStatementBuilder.normalizeAndQualifyConditions(this._layers.pretty.where, "BASE_QUERY", [], this._valueClauseKeywords));
|
|
70
92
|
}
|
|
71
|
-
if (this._layers.
|
|
72
|
-
builder = new
|
|
93
|
+
if (this._layers.pretty.groupBy) {
|
|
94
|
+
builder = new GroupByDecorator(builder, this._layers.pretty.groupBy);
|
|
73
95
|
}
|
|
74
|
-
if (this._layers.
|
|
75
|
-
builder = new
|
|
96
|
+
if (this._layers.pretty.having) {
|
|
97
|
+
builder = new WhereDecorator(builder, QueryStatementBuilder.normalizeAndQualifyConditions(this._layers.pretty.having, "BASE_QUERY"));
|
|
76
98
|
}
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
99
|
+
}
|
|
100
|
+
this._contexts.pretty = await builder.build();
|
|
101
|
+
const renderer = new SqlRenderer(this._contexts.pretty);
|
|
102
|
+
return renderer.build();
|
|
81
103
|
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
const expressions = ((_e = this._layers.pretty.expressions) === null || _e === void 0 ? void 0 : _e.length)
|
|
89
|
-
? QueryExpressionBuilder.buildExpressionsPart(this._layers.pretty.expressions)
|
|
90
|
-
: [];
|
|
91
|
-
if (expressions.length > 0) {
|
|
92
|
-
builder = new ExpressionDecorator(builder, expressions);
|
|
93
|
-
if (builder instanceof ExpressionDecorator) {
|
|
94
|
-
this._layers.pretty.where = this.addUnique(this._layers.pretty.where, builder.whereClauses);
|
|
95
|
-
this._layers.pretty.groupBy = this.addUnique(this._layers.pretty.groupBy, builder.groupByClauses);
|
|
96
|
-
this._layers.pretty.having = this.addUnique(this._layers.pretty.having, builder.havingClauses);
|
|
97
|
-
(_f = (_h = this._layers).final) !== null && _f !== void 0 ? _f : (_h.final = {});
|
|
98
|
-
this._layers.final.orderBy = this.addUnique((_g = this._layers.final.orderBy) === null || _g === void 0 ? void 0 : _g.map(ob => ({ column: `BASE_QUERY.${ob.column}`, direction: ob.direction })), builder.orderByClauses);
|
|
99
|
-
}
|
|
100
|
-
if (this._layers.pretty.where) {
|
|
101
|
-
builder = new WhereDecorator(builder, QueryStatementBuilder.normalizeAndQualifyConditions(this._layers.pretty.where, "BASE_QUERY", [], this._valueClauseKeywords));
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
else if (this._layers.pretty.where) {
|
|
105
|
-
builder = new WhereDecorator(builder, QueryStatementBuilder.normalizeAndQualifyConditions(this._layers.pretty.where, "BASE_QUERY", [], this._valueClauseKeywords));
|
|
106
|
-
}
|
|
107
|
-
if (this._layers.pretty.groupBy) {
|
|
108
|
-
builder = new GroupByDecorator(builder, this._layers.pretty.groupBy);
|
|
109
|
-
}
|
|
110
|
-
if (this._layers.pretty.having) {
|
|
111
|
-
builder = new WhereDecorator(builder, QueryStatementBuilder.normalizeAndQualifyConditions(this._layers.pretty.having, "BASE_QUERY"));
|
|
112
|
-
}
|
|
104
|
+
async buildFinalLayer(sql) {
|
|
105
|
+
var _a;
|
|
106
|
+
let builder = new BaseSelectQueryBuilder(`( ${sql} ) AS PRETTY_QUERY`, ((_a = this._layers.final) === null || _a === void 0 ? void 0 : _a.select) || []);
|
|
107
|
+
if (this._layers.final) {
|
|
108
|
+
if (this._layers.final.orderBy) {
|
|
109
|
+
builder = new OrderByDecorator(builder, this._layers.final.orderBy);
|
|
113
110
|
}
|
|
114
|
-
this.
|
|
115
|
-
|
|
116
|
-
return renderer.build();
|
|
117
|
-
});
|
|
118
|
-
}
|
|
119
|
-
buildFinalLayer(sql) {
|
|
120
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
121
|
-
var _a;
|
|
122
|
-
let builder = new BaseSelectQueryBuilder(`( ${sql} ) AS PRETTY_QUERY`, ((_a = this._layers.final) === null || _a === void 0 ? void 0 : _a.select) || []);
|
|
123
|
-
if (this._layers.final) {
|
|
124
|
-
if (this._layers.final.orderBy) {
|
|
125
|
-
builder = new OrderByDecorator(builder, this._layers.final.orderBy);
|
|
126
|
-
}
|
|
127
|
-
if (this._layers.final.limit) {
|
|
128
|
-
builder = new LimitDecorator(builder, this._layers.final.limit, this._layers.final.offset);
|
|
129
|
-
}
|
|
111
|
+
if (this._layers.final.limit) {
|
|
112
|
+
builder = new LimitDecorator(builder, this._layers.final.limit, this._layers.final.offset);
|
|
130
113
|
}
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
114
|
+
}
|
|
115
|
+
this._contexts.final = await builder.build();
|
|
116
|
+
const renderer = new SqlRenderer(this._contexts.final);
|
|
117
|
+
return renderer.build();
|
|
135
118
|
}
|
|
136
119
|
static normalizeAndQualifyConditions(where, tableName, normalizeBlacklist = [], valueClauseKeywords = new Set()) {
|
|
137
120
|
const conditions = this.normalizeQueryConditions(where);
|
|
@@ -142,9 +125,12 @@ export default class QueryStatementBuilder {
|
|
|
142
125
|
if (isValueClauseKeyword) {
|
|
143
126
|
return;
|
|
144
127
|
}
|
|
145
|
-
return
|
|
128
|
+
return {
|
|
129
|
+
...condition,
|
|
130
|
+
column: shouldSkipQualification
|
|
146
131
|
? condition.column
|
|
147
|
-
: `${tableName}.${condition.column}
|
|
132
|
+
: `${tableName}.${condition.column}`,
|
|
133
|
+
};
|
|
148
134
|
}).filter(cond => cond !== undefined);
|
|
149
135
|
}
|
|
150
136
|
static normalizeQueryConditions(where) {
|
|
@@ -22,7 +22,7 @@ export default class Repository<Type extends columnType, ModelType extends Model
|
|
|
22
22
|
first(queryLayers: QueryLayers, Model: Model<Type>): Promise<Type | undefined>;
|
|
23
23
|
get(QueryLayers: QueryLayers, Model: Model<Type>): Promise<Type[]>;
|
|
24
24
|
all(Model: Model<Type>, QueryLayers: QueryLayers): Promise<Type[]>;
|
|
25
|
-
update(primaryKey: QueryIsEqualParameter, newAttributes: Partial<Type
|
|
25
|
+
update(primaryKey: QueryIsEqualParameter, newAttributes: Partial<Type>, table: string): Promise<Record<Type> | undefined>;
|
|
26
26
|
private join;
|
|
27
27
|
toSql(queryLayers: QueryLayers, Model: Model<Type>): Promise<string>;
|
|
28
28
|
private buildJoinObject;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Repository.d.ts","sourceRoot":"","sources":["../../src/runtime/Repository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,yBAAyB,CAAC;AACjD,OAAO,MAAM,MAAM,sBAAsB,CAAC;AAE1C,OAAO,EAAE,UAAU,EAAQ,mBAAmB,EAAE,QAAQ,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEpK,MAAM,CAAC,OAAO,OAAO,UAAU,CAAC,IAAI,SAAS,UAAU,EAAE,SAAS,SAAS,KAAK,CAAC,IAAI,CAAC;IAClF,OAAO,CAAC,MAAM,CAAC,UAAU,CAAqE;IAC9F,OAAO,CAAC,MAAM,CAAqC;IACnD,OAAO,CAAC,mBAAmB,CAAoC;IAC/D,OAAO,CAAC,KAAK,CAAO;IACpB,OAAO,CAAC,qBAAqB,CAAC,CAAS;IACvC,OAAO,CAAC,YAAY,CAAe;gBAG/B,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,SAAS,EACrB,qBAAqB,CAAC,EAAE,MAAM,EAC9B,YAAY,GAAE,YAA0D;WAS9D,WAAW,CAAC,SAAS,SAAS,UAAU,EAClD,UAAU,EAAE,UAAU,KAAK,CAAC,SAAS,CAAC,EACtC,SAAS,EAAE,MAAM,EACjB,qBAAqB,CAAC,EAAE,MAAM,EAC9B,YAAY,CAAC,EAAE,YAAY,GAC5B,UAAU,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;WAiB5B,cAAc,IAAI,IAAI;IAIpC,OAAO,CAAC,sBAAsB;IAajB,0BAA0B,CACnC,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,SAAS,EACxB,QAAQ,EAAE,QAAQ,GACnB,OAAO,CAAC,IAAI,CAAC;IAKH,0BAA0B,CACnC,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,SAAS,EACxB,QAAQ,EAAE,QAAQ,GACnB,OAAO,CAAC,IAAI,CAAC;IAMH,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;IAaxE,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKpD,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAKjC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS;IAI3B,IAAI,CAAC,UAAU,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrC,KAAK,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC;IAY9E,GAAG,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IASlE,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAIlE,MAAM,CAAC,UAAU,EAAE,qBAAqB,EAAE,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"Repository.d.ts","sourceRoot":"","sources":["../../src/runtime/Repository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,yBAAyB,CAAC;AACjD,OAAO,MAAM,MAAM,sBAAsB,CAAC;AAE1C,OAAO,EAAE,UAAU,EAAQ,mBAAmB,EAAE,QAAQ,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEpK,MAAM,CAAC,OAAO,OAAO,UAAU,CAAC,IAAI,SAAS,UAAU,EAAE,SAAS,SAAS,KAAK,CAAC,IAAI,CAAC;IAClF,OAAO,CAAC,MAAM,CAAC,UAAU,CAAqE;IAC9F,OAAO,CAAC,MAAM,CAAqC;IACnD,OAAO,CAAC,mBAAmB,CAAoC;IAC/D,OAAO,CAAC,KAAK,CAAO;IACpB,OAAO,CAAC,qBAAqB,CAAC,CAAS;IACvC,OAAO,CAAC,YAAY,CAAe;gBAG/B,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,SAAS,EACrB,qBAAqB,CAAC,EAAE,MAAM,EAC9B,YAAY,GAAE,YAA0D;WAS9D,WAAW,CAAC,SAAS,SAAS,UAAU,EAClD,UAAU,EAAE,UAAU,KAAK,CAAC,SAAS,CAAC,EACtC,SAAS,EAAE,MAAM,EACjB,qBAAqB,CAAC,EAAE,MAAM,EAC9B,YAAY,CAAC,EAAE,YAAY,GAC5B,UAAU,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;WAiB5B,cAAc,IAAI,IAAI;IAIpC,OAAO,CAAC,sBAAsB;IAajB,0BAA0B,CACnC,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,SAAS,EACxB,QAAQ,EAAE,QAAQ,GACnB,OAAO,CAAC,IAAI,CAAC;IAKH,0BAA0B,CACnC,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,SAAS,EACxB,QAAQ,EAAE,QAAQ,GACnB,OAAO,CAAC,IAAI,CAAC;IAMH,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;IAaxE,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKpD,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAKjC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS;IAI3B,IAAI,CAAC,UAAU,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrC,KAAK,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC;IAY9E,GAAG,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IASlE,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAIlE,MAAM,CAAC,UAAU,EAAE,qBAAqB,EAAE,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;YAOxH,IAAI;IAaL,KAAK,CACd,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,GACnB,OAAO,CAAC,MAAM,CAAC;IAYlB,OAAO,CAAC,eAAe;IA4FhB,yBAAyB,CAAC,IAAI,EAAE,mBAAmB,EAAE,UAAU,EAAE,mBAAmB,GAAG,yBAAyB,EAAE;IAKlH,oBAAoB,CAAC,MAAM,EAAE,mBAAmB,GAAG,yBAAyB,EAAE;CAIxF"}
|