@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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@steroidsjs/nest",
3
- "version": "1.2.5",
3
+ "version": "1.2.6",
4
4
  "scripts": {
5
5
  "build": "tsc && copyfiles ./{package.json,LICENSE,README.md} dist/",
6
6
  "watch": "tsc -p tsconfig-debug.json",
@@ -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) ? dbQuery.expressionMap.mainAlias.name + '.' : '';
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 + name));
25
+ dbQuery.select(select.map(name => `${prefix}.${name}`));
28
26
  }
29
- (searchQuery.relations || []).forEach(relation => {
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":"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"}
1
+ {"version":3,"file":"SearchQuery.js","sourceRoot":"","sources":["../../../../src/usecases/base/SearchQuery.ts"],"names":[],"mappings":"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"}