@steroidsjs/nest 1.2.5 → 1.2.6
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/package.json
CHANGED
|
@@ -14,4 +14,5 @@ export default class SearchQuery {
|
|
|
14
14
|
condition?: ICondition;
|
|
15
15
|
static createFromSchema(SchemaClass: any): SearchQuery;
|
|
16
16
|
static prepare(dbRepository: Repository<any>, dbQuery: SelectQueryBuilder<any>, searchQuery: SearchQuery): void;
|
|
17
|
+
private static prepareRelations;
|
|
17
18
|
}
|
|
@@ -14,9 +14,7 @@ class SearchQuery {
|
|
|
14
14
|
}
|
|
15
15
|
static prepare(dbRepository, dbQuery, searchQuery) {
|
|
16
16
|
var _a, _b;
|
|
17
|
-
const prefix = ((_a = dbQuery.expressionMap) === null || _a === void 0 ? void 0 : _a.mainAlias) ?
|
|
18
|
-
const relationPrefix = ((_b = dbQuery.expressionMap) === null || _b === void 0 ? void 0 : _b.mainAlias) ? dbQuery.expressionMap.mainAlias.name + '_' : 'relation';
|
|
19
|
-
const table = dbRepository.target;
|
|
17
|
+
const prefix = ((_b = (_a = dbQuery.expressionMap) === null || _a === void 0 ? void 0 : _a.mainAlias) === null || _b === void 0 ? void 0 : _b.name) || '';
|
|
20
18
|
let select = searchQuery.select;
|
|
21
19
|
if (searchQuery.excludeSelect) {
|
|
22
20
|
select = dbRepository.metadata.columns
|
|
@@ -24,34 +22,44 @@ class SearchQuery {
|
|
|
24
22
|
.filter(name => !searchQuery.excludeSelect.includes(name));
|
|
25
23
|
}
|
|
26
24
|
if (select) {
|
|
27
|
-
dbQuery.select(select.map(name => prefix
|
|
25
|
+
dbQuery.select(select.map(name => `${prefix}.${name}`));
|
|
28
26
|
}
|
|
29
|
-
|
|
30
|
-
const options = (0, BaseField_1.getFieldOptions)(table, relation);
|
|
31
|
-
switch (options === null || options === void 0 ? void 0 : options.appType) {
|
|
32
|
-
case 'relationId':
|
|
33
|
-
const relationIdOptions = options;
|
|
34
|
-
dbQuery.loadRelationIdAndMap(prefix + relation, prefix + relationIdOptions.relationName);
|
|
35
|
-
break;
|
|
36
|
-
default:
|
|
37
|
-
case 'relation':
|
|
38
|
-
let currentPrefix = prefix;
|
|
39
|
-
let childRelation = null;
|
|
40
|
-
const parentRelation = /\./.test(relation)
|
|
41
|
-
? relation.replace(/\.\w+/, '')
|
|
42
|
-
: null;
|
|
43
|
-
if (parentRelation) {
|
|
44
|
-
currentPrefix = relationPrefix + parentRelation;
|
|
45
|
-
childRelation = relation.replace(parentRelation, '');
|
|
46
|
-
}
|
|
47
|
-
dbQuery.leftJoinAndSelect(currentPrefix + (childRelation || relation), relationPrefix + relation);
|
|
48
|
-
break;
|
|
49
|
-
}
|
|
50
|
-
});
|
|
27
|
+
searchQuery.relations && SearchQuery.prepareRelations(dbQuery, searchQuery.relations, prefix, dbRepository.target);
|
|
51
28
|
if (searchQuery.condition) {
|
|
52
29
|
dbQuery.andWhere(ConditionHelper_1.ConditionHelper.toTypeOrm(searchQuery.condition));
|
|
53
30
|
}
|
|
54
31
|
}
|
|
32
|
+
static prepareRelations(dbQuery, relations, parentPrefix, parentTable) {
|
|
33
|
+
relations.forEach(relation => {
|
|
34
|
+
let fieldOptions;
|
|
35
|
+
const relationFullPath = [...parentPrefix.split('.'), ...relation.split('.')];
|
|
36
|
+
const relationRelativePath = relation.replace(parentPrefix, '').split('.');
|
|
37
|
+
const currentRelationField = relationRelativePath[0];
|
|
38
|
+
if (relationRelativePath.length > 1) {
|
|
39
|
+
fieldOptions = (0, BaseField_1.getFieldOptions)(parentTable, currentRelationField);
|
|
40
|
+
relationRelativePath.splice(0, 1);
|
|
41
|
+
const childRelationRelativePath = relationRelativePath.join('.');
|
|
42
|
+
SearchQuery.prepareRelations(dbQuery, [childRelationRelativePath], `${parentPrefix}.${currentRelationField}`, fieldOptions.relationClass());
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
fieldOptions = (0, BaseField_1.getFieldOptions)(parentTable, currentRelationField);
|
|
46
|
+
if (!fieldOptions) {
|
|
47
|
+
throw new Error('Not found meta data for relation "' + currentRelationField
|
|
48
|
+
+ '" for table "' + parentTable + '"');
|
|
49
|
+
}
|
|
50
|
+
relationFullPath.pop();
|
|
51
|
+
const parentAlias = relationFullPath.join('_');
|
|
52
|
+
switch (fieldOptions.appType) {
|
|
53
|
+
case 'relationId':
|
|
54
|
+
dbQuery.loadRelationIdAndMap(`${parentAlias}.${currentRelationField}`, `${parentAlias}.${fieldOptions.relationName}`);
|
|
55
|
+
break;
|
|
56
|
+
case 'relation':
|
|
57
|
+
dbQuery.leftJoinAndSelect(`${parentAlias}.${currentRelationField}`, `${parentAlias}_${currentRelationField}`);
|
|
58
|
+
break;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
}
|
|
55
63
|
}
|
|
56
64
|
exports.default = SearchQuery;
|
|
57
65
|
//# sourceMappingURL=SearchQuery.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchQuery.js","sourceRoot":"","sources":["../../../../src/usecases/base/SearchQuery.ts"],"names":[],"mappings":";;AAGA,sFAA2F;AAC3F,gFAAmG;AAEnG,gEAAuE;AASvE,MAAqB,WAAW;IAO5B,MAAM,CAAC,gBAAgB,CAAC,WAAW;QAC/B,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;QAEtC,MAAM,OAAO,GAAG,IAAA,qCAAsB,EAAC,WAAW,CAAC,CAAC;QACpD,WAAW,CAAC,MAAM,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,CAAC;QACrC,WAAW,CAAC,aAAa,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,aAAa,CAAC;QACnD,WAAW,CAAC,SAAS,GAAG,IAAA,4BAAgB,EAAC,WAAW,CAAC,CAAC;QAEtD,OAAO,WAAW,CAAC;IACvB,CAAC;IAED,MAAM,CAAC,OAAO,CACV,YAA6B,EAC7B,OAAgC,EAChC,WAAwB;;QAExB,MAAM,MAAM,GAAG,CAAA,MAAA,
|
|
1
|
+
{"version":3,"file":"SearchQuery.js","sourceRoot":"","sources":["../../../../src/usecases/base/SearchQuery.ts"],"names":[],"mappings":"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"}
|