@steroidsjs/nest 1.5.0-beta.1 → 1.5.0-beta.11

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.
Files changed (57) hide show
  1. package/package.json +1 -1
  2. package/src/infrastructure/adapters/QueryAdapterTypeORM.d.ts +7 -0
  3. package/src/infrastructure/adapters/QueryAdapterTypeORM.js +89 -0
  4. package/src/infrastructure/adapters/QueryAdapterTypeORM.js.map +1 -0
  5. package/src/infrastructure/commands/MigrateCommand.js +8 -0
  6. package/src/infrastructure/commands/MigrateCommand.js.map +1 -1
  7. package/src/infrastructure/commands/entity-generator/templates/TableTemplate.txt +2 -2
  8. package/src/infrastructure/decorators/fields/BaseField.d.ts +4 -0
  9. package/src/infrastructure/decorators/fields/BaseField.js +35 -10
  10. package/src/infrastructure/decorators/fields/BaseField.js.map +1 -1
  11. package/src/infrastructure/decorators/fields/ComputableField.d.ts +8 -0
  12. package/src/infrastructure/decorators/fields/ComputableField.js +18 -0
  13. package/src/infrastructure/decorators/fields/ComputableField.js.map +1 -0
  14. package/src/infrastructure/decorators/fields/ExtendField.d.ts +1 -0
  15. package/src/infrastructure/decorators/fields/ExtendField.js +8 -4
  16. package/src/infrastructure/decorators/fields/ExtendField.js.map +1 -1
  17. package/src/infrastructure/decorators/fields/index.d.ts +3 -1
  18. package/src/infrastructure/decorators/fields/index.js +3 -1
  19. package/src/infrastructure/decorators/fields/index.js.map +1 -1
  20. package/src/infrastructure/helpers/typeORM/ConditionHelperTypeORM.d.ts +11 -0
  21. package/src/infrastructure/helpers/typeORM/ConditionHelperTypeORM.js +157 -0
  22. package/src/infrastructure/helpers/typeORM/ConditionHelperTypeORM.js.map +1 -0
  23. package/src/infrastructure/helpers/typeORM/SearchHelperTypeORM.d.ts +9 -0
  24. package/src/{usecases/helpers/SearchHelper.js → infrastructure/helpers/typeORM/SearchHelperTypeORM.js} +7 -7
  25. package/src/infrastructure/helpers/typeORM/SearchHelperTypeORM.js.map +1 -0
  26. package/src/infrastructure/pipes/SchemaSerializer.js +2 -2
  27. package/src/infrastructure/pipes/SchemaSerializer.js.map +1 -1
  28. package/src/infrastructure/repositories/CrudRepository.d.ts +7 -7
  29. package/src/infrastructure/repositories/CrudRepository.js +7 -6
  30. package/src/infrastructure/repositories/CrudRepository.js.map +1 -1
  31. package/src/usecases/base/SearchQuery.d.ts +14 -14
  32. package/src/usecases/base/SearchQuery.js +18 -97
  33. package/src/usecases/base/SearchQuery.js.map +1 -1
  34. package/src/usecases/helpers/DataMapper.js +3 -0
  35. package/src/usecases/helpers/DataMapper.js.map +1 -1
  36. package/src/usecases/helpers/ObjectToArray.d.ts +1 -0
  37. package/src/usecases/helpers/ObjectToArray.js +18 -0
  38. package/src/usecases/helpers/ObjectToArray.js.map +1 -0
  39. package/src/usecases/helpers/ValidationHelper.js +6 -3
  40. package/src/usecases/helpers/ValidationHelper.js.map +1 -1
  41. package/src/usecases/interfaces/ICrudRepository.d.ts +6 -6
  42. package/src/usecases/interfaces/IDeepPartial.d.ts +3 -0
  43. package/src/usecases/interfaces/IDeepPartial.js +3 -0
  44. package/src/usecases/interfaces/IDeepPartial.js.map +1 -0
  45. package/src/usecases/services/CrudService.js.map +1 -1
  46. package/src/usecases/services/ReadService.d.ts +4 -4
  47. package/src/usecases/services/ReadService.js +4 -4
  48. package/src/usecases/services/ReadService.js.map +1 -1
  49. package/src/usecases/validators/Validator.d.ts +5 -2
  50. package/src/usecases/validators/Validator.js +8 -8
  51. package/src/usecases/validators/Validator.js.map +1 -1
  52. package/tsconfig.tsbuildinfo +1 -1
  53. package/src/usecases/helpers/ConditionHelper.d.ts +0 -8
  54. package/src/usecases/helpers/ConditionHelper.js +0 -102
  55. package/src/usecases/helpers/ConditionHelper.js.map +0 -1
  56. package/src/usecases/helpers/SearchHelper.d.ts +0 -9
  57. package/src/usecases/helpers/SearchHelper.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@steroidsjs/nest",
3
- "version": "1.5.0-beta.1",
3
+ "version": "1.5.0-beta.11",
4
4
  "scripts": {
5
5
  "script": "nps",
6
6
  "watch": "nps watch",
@@ -0,0 +1,7 @@
1
+ import { Repository } from 'typeorm';
2
+ import { SelectQueryBuilder } from 'typeorm/query-builder/SelectQueryBuilder';
3
+ import SearchQuery from '../../usecases/base/SearchQuery';
4
+ export declare class QueryAdapterTypeORM {
5
+ static prepare(dbRepository: Repository<any>, dbQuery: SelectQueryBuilder<any>, searchQuery: SearchQuery<any>, eagerLoading?: boolean): void;
6
+ private static prepareRelations;
7
+ }
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.QueryAdapterTypeORM = void 0;
4
+ const ConditionHelperTypeORM_1 = require("../helpers/typeORM/ConditionHelperTypeORM");
5
+ const BaseField_1 = require("../decorators/fields/BaseField");
6
+ const SearchQuery_1 = require("../../usecases/base/SearchQuery");
7
+ class QueryAdapterTypeORM {
8
+ static prepare(dbRepository, dbQuery, searchQuery, eagerLoading = true) {
9
+ var _a, _b;
10
+ const prefix = ((_b = (_a = dbQuery.expressionMap) === null || _a === void 0 ? void 0 : _a.mainAlias) === null || _b === void 0 ? void 0 : _b.name) || '';
11
+ let select = searchQuery.getSelect();
12
+ if (searchQuery.getExcludeSelect()) {
13
+ select = dbRepository.metadata.columns
14
+ .map(column => column.propertyName)
15
+ .filter(name => !searchQuery.getExcludeSelect().includes(name));
16
+ }
17
+ if (select) {
18
+ dbQuery.select(select.map(name => `${prefix}.${name}`));
19
+ }
20
+ if (searchQuery.getWith()) {
21
+ this.prepareRelations(dbQuery, searchQuery.getWith(), prefix, dbRepository.target, searchQuery.getShortAliasesAreUsed(), eagerLoading);
22
+ }
23
+ if (searchQuery.getWhere()) {
24
+ dbQuery.andWhere(ConditionHelperTypeORM_1.ConditionHelperTypeORM.toTypeOrm(searchQuery.getWhere(), dbQuery, dbRepository.target));
25
+ }
26
+ if (searchQuery.getOrderBy()) {
27
+ dbQuery.orderBy(Object.keys(searchQuery.getOrderBy()).reduce((obj, key) => {
28
+ obj[key] = searchQuery.getOrderBy()[key].toUpperCase();
29
+ return obj;
30
+ }, {}));
31
+ }
32
+ if (searchQuery.getLimit()) {
33
+ dbQuery.limit(searchQuery.getLimit());
34
+ }
35
+ if (searchQuery.getOffset()) {
36
+ dbQuery.offset(searchQuery.getOffset());
37
+ }
38
+ }
39
+ static prepareRelations(dbQuery, relationsWithAliases, rootPrefix, rootClass, useShortAliases = false, eagerLoading = true) {
40
+ const relationToAliasMap = {};
41
+ const relations = [];
42
+ relationsWithAliases.forEach(relationWithAlias => {
43
+ relationWithAlias = rootPrefix + '.' + relationWithAlias;
44
+ const [relation, alias] = relationWithAlias.split(' ');
45
+ relationToAliasMap[relation] = alias || SearchQuery_1.default.getRelationAlias(relation, useShortAliases);
46
+ relations.push(relation);
47
+ let path;
48
+ relation.split('.').forEach(name => {
49
+ path = [path, name].filter(Boolean).join('.');
50
+ if (!relationToAliasMap[path]) {
51
+ relationToAliasMap[path] = SearchQuery_1.default.getRelationAlias(path, useShortAliases);
52
+ if (path !== rootPrefix) {
53
+ relations.push(path);
54
+ }
55
+ }
56
+ });
57
+ });
58
+ const classesMap = {
59
+ [rootPrefix]: rootClass,
60
+ };
61
+ relations
62
+ .sort()
63
+ .forEach(path => {
64
+ const parentPath = path.split('.').slice(0, -1).join('.');
65
+ const relationName = path.split('.').slice(-1).join('.');
66
+ const options = (0, BaseField_1.getFieldOptions)(classesMap[parentPath], relationName);
67
+ if (options) {
68
+ if (options.appType === 'relation') {
69
+ classesMap[path] = options.relationClass();
70
+ }
71
+ const property = relationToAliasMap[parentPath] + '.' + relationName;
72
+ const alias = relationToAliasMap[path];
73
+ if (options.relationName) {
74
+ dbQuery.loadRelationIdAndMap(property, relationToAliasMap[parentPath] + '.' + options.relationName);
75
+ }
76
+ else {
77
+ if (eagerLoading) {
78
+ dbQuery.leftJoinAndSelect(property, alias);
79
+ }
80
+ else {
81
+ dbQuery.leftJoin(property, alias);
82
+ }
83
+ }
84
+ }
85
+ });
86
+ }
87
+ }
88
+ exports.QueryAdapterTypeORM = QueryAdapterTypeORM;
89
+ //# sourceMappingURL=QueryAdapterTypeORM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QueryAdapterTypeORM.js","sourceRoot":"","sources":["../../../../src/infrastructure/adapters/QueryAdapterTypeORM.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,14 @@ const common_1 = require("@nestjs/common");
18
18
  const dbml2code_1 = require("./dbml/dbml2code");
19
19
  const generate_1 = require("./generate");
20
20
  const typeorm_1 = require("typeorm");
21
+ const ConnectionMetadataBuilder_1 = require("typeorm/connection/ConnectionMetadataBuilder");
22
+ const OrmUtils_1 = require("typeorm/util/OrmUtils");
23
+ const importClassesFromDirectories_1 = require("./importClassesFromDirectories");
24
+ ConnectionMetadataBuilder_1.ConnectionMetadataBuilder.prototype.buildMigrations = async function (migrations) {
25
+ const [migrationClasses, migrationDirectories] = OrmUtils_1.OrmUtils.splitClassesAndStrings(migrations);
26
+ const allMigrationClasses = [...migrationClasses, ...(await (0, importClassesFromDirectories_1.importClassesFromDirectories)(this.connection.logger, migrationDirectories))];
27
+ return allMigrationClasses.map(migrationClass => (0, typeorm_1.getFromContainer)(migrationClass));
28
+ };
21
29
  let MigrateCommand = class MigrateCommand {
22
30
  constructor(dataSource) {
23
31
  this.dataSource = dataSource;
@@ -1 +1 @@
1
- {"version":3,"file":"MigrateCommand.js","sourceRoot":"","sources":["../../../../src/infrastructure/commands/MigrateCommand.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,mDAAmD;AACnD,2CAAkD;AAClD,gDAA2C;AAC3C,yCAAoC;AACpC,qCAAqC;AAYrC,IAAa,cAAc,GAA3B,MAAa,cAAc;IACvB,YAEY,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;IAElC,CAAC;IAMD,KAAK,CAAC,KAAK;QACP,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;YAChC,WAAW,EAAE,MAAM;SACtB,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,EAAE,CAAC;IACnB,CAAC;IAMD,KAAK,CAAC,IAAI;QACN,MAAM,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC;YACpC,WAAW,EAAE,MAAM;SACtB,CAAC,CAAC;IACP,CAAC;IAMD,KAAK,CAAC,IAAI;QACN,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC;IAC3C,CAAC;IAMD,KAAK,CAAC,SAAS,CAOP,IAAY;QAEhB,MAAM,IAAA,qBAAS,EAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAMD,KAAK,CAAC,QAAQ;QACV,MAAM,IAAA,mBAAQ,EAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACpC,CAAC;CAEJ,CAAA;AAjDG;IAJC,IAAA,wBAAO,EAAC;QACL,OAAO,EAAE,SAAS;QAClB,QAAQ,EAAE,gBAAgB;KAC7B,CAAC;;;;2CAMD;AAMD;IAJC,IAAA,wBAAO,EAAC;QACL,OAAO,EAAE,gBAAgB;QACzB,QAAQ,EAAE,uBAAuB;KACpC,CAAC;;;;0CAKD;AAMD;IAJC,IAAA,wBAAO,EAAC;QACL,OAAO,EAAE,cAAc;QACvB,QAAQ,EAAE,sBAAsB;KACnC,CAAC;;;;0CAGD;AAMD;IAJC,IAAA,wBAAO,EAAC;QACL,OAAO,EAAE,0BAA0B;QACnC,QAAQ,EAAE,iCAAiC;KAC9C,CAAC;IAEG,WAAA,IAAA,2BAAU,EAAC;QACR,IAAI,EAAE,MAAM;QAEZ,QAAQ,EAAE,qBAAqB;QAC/B,IAAI,EAAE,QAAQ;KACjB,CAAC,CAAA;;;;+CAIL;AAMD;IAJC,IAAA,wBAAO,EAAC;QACL,OAAO,EAAE,kBAAkB;QAC3B,QAAQ,EAAE,0CAA0C;KACvD,CAAC;;;;8CAGD;AA1DQ,cAAc;IAD1B,IAAA,mBAAU,GAAE;IAGJ,WAAA,IAAA,eAAM,EAAC,oBAAU,CAAC,CAAA;qCACC,oBAAU;GAHzB,cAAc,CA4D1B;AA5DY,wCAAc"}
1
+ {"version":3,"file":"MigrateCommand.js","sourceRoot":"","sources":["../../../../src/infrastructure/commands/MigrateCommand.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,mDAAmD;AACnD,2CAAkD;AAClD,gDAA2C;AAC3C,yCAAoC;AACpC,qCAAyE;AACzE,4FAAuF;AACvF,oDAA+C;AAC/C,iFAA4E;AAE5E,qDAAyB,CAAC,SAAS,CAAC,eAAe,GAAG,KAAK,WAAW,UAA+B;IACjG,MAAM,CAAC,gBAAgB,EAAE,oBAAoB,CAAC,GAAG,mBAAQ,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;IAC7F,MAAM,mBAAmB,GAAG,CAAC,GAAG,gBAAgB,EAAE,GAAG,CAAC,MAAM,IAAA,2DAA4B,EAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC;IACzI,OAAO,mBAAmB,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC,IAAA,0BAAgB,EAAqB,cAAc,CAAC,CAAC,CAAC;AAC3G,CAAC,CAAA;AAGD,IAAa,cAAc,GAA3B,MAAa,cAAc;IACvB,YAEY,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;IAElC,CAAC;IAMD,KAAK,CAAC,KAAK;QACP,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;YAChC,WAAW,EAAE,MAAM;SACtB,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,EAAE,CAAC;IACnB,CAAC;IAMD,KAAK,CAAC,IAAI;QACN,MAAM,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC;YACpC,WAAW,EAAE,MAAM;SACtB,CAAC,CAAC;IACP,CAAC;IAMD,KAAK,CAAC,IAAI;QACN,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC;IAC3C,CAAC;IAMD,KAAK,CAAC,SAAS,CAOP,IAAY;QAEhB,MAAM,IAAA,qBAAS,EAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAMD,KAAK,CAAC,QAAQ;QACV,MAAM,IAAA,mBAAQ,EAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACpC,CAAC;CAEJ,CAAA;AAjDG;IAJC,IAAA,wBAAO,EAAC;QACL,OAAO,EAAE,SAAS;QAClB,QAAQ,EAAE,gBAAgB;KAC7B,CAAC;;;;2CAMD;AAMD;IAJC,IAAA,wBAAO,EAAC;QACL,OAAO,EAAE,gBAAgB;QACzB,QAAQ,EAAE,uBAAuB;KACpC,CAAC;;;;0CAKD;AAMD;IAJC,IAAA,wBAAO,EAAC;QACL,OAAO,EAAE,cAAc;QACvB,QAAQ,EAAE,sBAAsB;KACnC,CAAC;;;;0CAGD;AAMD;IAJC,IAAA,wBAAO,EAAC;QACL,OAAO,EAAE,0BAA0B;QACnC,QAAQ,EAAE,iCAAiC;KAC9C,CAAC;IAEG,WAAA,IAAA,2BAAU,EAAC;QACR,IAAI,EAAE,MAAM;QAEZ,QAAQ,EAAE,qBAAqB;QAC/B,IAAI,EAAE,QAAQ;KACjB,CAAC,CAAA;;;;+CAIL;AAMD;IAJC,IAAA,wBAAO,EAAC;QACL,OAAO,EAAE,kBAAkB;QAC3B,QAAQ,EAAE,0CAA0C;KACvD,CAAC;;;;8CAGD;AA1DQ,cAAc;IAD1B,IAAA,mBAAU,GAAE;IAGJ,WAAA,IAAA,eAAM,EAAC,oBAAU,CAAC,CAAA;qCACC,oBAAU;GAHzB,cAAc,CA4D1B;AA5DY,wCAAc"}
@@ -1,6 +1,6 @@
1
- import {DeepPartial} from 'typeorm';
1
+ import {IDeepPartial} from '@steroidsjs/nest/src/usecases/interfaces/IDeepPartial';
2
2
  import {TableFromModel} from '@steroidsjs/nest/src/infrastructure/decorators/TableFromModel';
3
3
  import {%entityName%Model} from '../../domain/models/%entityName%Model';
4
4
 
5
5
  @TableFromModel(%entityName%Model, '%tableName%')
6
- export class %entityName%Table implements DeepPartial<%entityName%Model> {}
6
+ export class %entityName%Table implements IDeepPartial<%entityName%Model> {}
@@ -24,6 +24,10 @@ export interface IBaseFieldOptions {
24
24
  transform?: ITransformCallback;
25
25
  noColumn?: boolean;
26
26
  }
27
+ export interface IRelationData {
28
+ relationName: string;
29
+ relationClass: () => any;
30
+ }
27
31
  export interface IInternalFieldOptions {
28
32
  appType?: AppColumnType;
29
33
  jsType?: ColumnType;
@@ -29,27 +29,52 @@ const getMetaFields = (MetaClass) => {
29
29
  };
30
30
  exports.getMetaFields = getMetaFields;
31
31
  const getMetaRelations = (MetaClass, parentPrefix = null) => {
32
- const findRelationsRecursive = (MetaClass, finedClasses, parentPrefix = null) => {
32
+ const findRelationsRecursive = (MetaClass, foundClasses, parentPrefix = null) => {
33
33
  return (0, exports.getMetaFields)(MetaClass)
34
34
  .filter(fieldName => {
35
35
  const options = (0, exports.getFieldOptions)(MetaClass, fieldName);
36
+ if ((options === null || options === void 0 ? void 0 : options.appType) === 'computable' && (options === null || options === void 0 ? void 0 : options.requiredRelations)) {
37
+ return true;
38
+ }
36
39
  return ['relationId', 'relation'].includes(options === null || options === void 0 ? void 0 : options.appType);
37
40
  })
38
- .reduce((allRelations, relationName) => {
39
- allRelations.push(relationName);
41
+ .reduce((allRelationsData, relationName) => {
40
42
  const options = (0, exports.getFieldOptions)(MetaClass, relationName);
41
- if (options.appType === 'relationId') {
43
+ if ((options === null || options === void 0 ? void 0 : options.appType) === 'relationId') {
44
+ allRelationsData.push(relationName);
45
+ return allRelationsData;
46
+ }
47
+ if ((options === null || options === void 0 ? void 0 : options.appType) === 'computable' && (options === null || options === void 0 ? void 0 : options.requiredRelations)) {
48
+ allRelationsData.push(...options.requiredRelations);
49
+ }
50
+ if ((options === null || options === void 0 ? void 0 : options.appType) !== 'computable') {
51
+ allRelationsData.push({
52
+ relationName,
53
+ relationClass: options.relationClass,
54
+ });
55
+ }
56
+ return allRelationsData;
57
+ }, [])
58
+ .reduce((allRelations, relationData) => {
59
+ if ((0, class_validator_1.isString)(relationData)) {
60
+ allRelations.push(relationData);
61
+ return allRelations;
62
+ }
63
+ if (!allRelations.includes(relationData.relationName)) {
64
+ allRelations.push(relationData.relationName);
65
+ }
66
+ if (!relationData.relationClass) {
42
67
  return allRelations;
43
68
  }
44
- const relationValue = options.relationClass();
45
- const key = [relationName, relationValue.name].join('.');
46
- if (finedClasses.includes(key)) {
69
+ const relationValue = relationData.relationClass();
70
+ const key = [relationData.relationName, relationValue.name].join('.');
71
+ if (foundClasses.includes(key)) {
47
72
  return allRelations;
48
73
  }
49
- finedClasses.push(key);
74
+ foundClasses.push(key);
50
75
  if ((0, exports.isMetaClass)(relationValue)) {
51
- const subRelationNames = findRelationsRecursive(relationValue, finedClasses, relationName)
52
- .map(subRelationName => `${relationName}.${subRelationName}`);
76
+ const subRelationNames = findRelationsRecursive(relationValue, foundClasses, relationData.relationName)
77
+ .map(subRelationName => `${relationData.relationName}.${subRelationName}`);
53
78
  allRelations = [...allRelations, ...subRelationNames];
54
79
  }
55
80
  return allRelations;
@@ -1 +1 @@
1
- {"version":3,"file":"BaseField.js","sourceRoot":"","sources":["../../../../../src/infrastructure/decorators/fields/BaseField.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BaseField.js","sourceRoot":"","sources":["../../../../../src/infrastructure/decorators/fields/BaseField.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { IBaseFieldOptions, IRelationData } from './BaseField';
2
+ import { IComputableCallback } from '../Computable';
3
+ export interface IComputableFieldOptions extends IBaseFieldOptions {
4
+ unique?: boolean;
5
+ requiredRelations?: Array<IRelationData | string>;
6
+ callback?: IComputableCallback;
7
+ }
8
+ export declare function ComputableField(options: IComputableFieldOptions): <TFunction extends Function, Y>(target: object | TFunction, propertyKey?: string | symbol, descriptor?: TypedPropertyDescriptor<Y>) => void;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ComputableField = void 0;
4
+ const common_1 = require("@nestjs/common");
5
+ const BaseField_1 = require("./BaseField");
6
+ const Computable_1 = require("../Computable");
7
+ function ComputableField(options) {
8
+ return (0, common_1.applyDecorators)(...[
9
+ (0, BaseField_1.BaseField)(options, {
10
+ decoratorName: 'ComputableField',
11
+ appType: 'computable',
12
+ jsType: options.jsType,
13
+ }),
14
+ (0, Computable_1.Computable)(options.callback)
15
+ ].filter(Boolean));
16
+ }
17
+ exports.ComputableField = ComputableField;
18
+ //# sourceMappingURL=ComputableField.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComputableField.js","sourceRoot":"","sources":["../../../../../src/infrastructure/decorators/fields/ComputableField.ts"],"names":[],"mappings":";;;AAAA,2CAA+C;AAC/C,2CAAwE;AACxE,8CAA8D;AAQ9D,SAAgB,eAAe,CAAC,OAAgC;IAE5D,OAAO,IAAA,wBAAe,EAClB,GAAG;QACC,IAAA,qBAAS,EAAC,OAAO,EAAC;YACd,aAAa,EAAE,iBAAiB;YAChC,OAAO,EAAE,YAAY;YACrB,MAAM,EAAE,OAAO,CAAC,MAAM;SACzB,CAAC;QACF,IAAA,uBAAU,EAAC,OAAO,CAAC,QAAQ,CAAC;KAC/B,CAAC,MAAM,CAAC,OAAO,CAAC,CACpB,CAAC;AACN,CAAC;AAZD,0CAYC"}
@@ -1,5 +1,6 @@
1
1
  import { IAllFieldOptions } from "./index";
2
2
  export interface IExtendFieldOptions {
3
3
  sourceFieldName?: string;
4
+ extendValidators?: boolean;
4
5
  }
5
6
  export declare function ExtendField(ModelClass: any, options?: (string | Partial<IAllFieldOptions>)): (object: any, propertyName: any) => void;
@@ -3,7 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ExtendField = void 0;
4
4
  const BaseField_1 = require("./BaseField");
5
5
  const Validator_1 = require("../../../usecases/validators/Validator");
6
- function ExtendField(ModelClass, options = {}) {
6
+ function ExtendField(ModelClass, options = {
7
+ extendValidators: true,
8
+ }) {
7
9
  return (object, propertyName) => {
8
10
  if (typeof options === 'string') {
9
11
  options = { sourceFieldName: options };
@@ -15,9 +17,11 @@ function ExtendField(ModelClass, options = {}) {
15
17
  const extendOptions = (0, BaseField_1.getFieldOptions)(ModelClass, modelFieldName);
16
18
  const decorator = (0, BaseField_1.getFieldDecorator)(ModelClass, modelFieldName);
17
19
  decorator(Object.assign(Object.assign({}, extendOptions), options))(object, propertyName);
18
- (0, Validator_1.getFieldValidators)(ModelClass, modelFieldName).forEach(ValidatorClass => {
19
- (0, Validator_1.Validator)(ValidatorClass)(object, propertyName);
20
- });
20
+ if (options.extendValidators) {
21
+ (0, Validator_1.getFieldValidators)(ModelClass, modelFieldName).forEach(ValidatorClass => {
22
+ (0, Validator_1.Validator)(ValidatorClass)(object, propertyName);
23
+ });
24
+ }
21
25
  };
22
26
  }
23
27
  exports.ExtendField = ExtendField;
@@ -1 +1 @@
1
- {"version":3,"file":"ExtendField.js","sourceRoot":"","sources":["../../../../../src/infrastructure/decorators/fields/ExtendField.ts"],"names":[],"mappings":";;;AAAA,2CAA+D;AAE/D,sEAAqF;AAMrF,SAAgB,WAAW,CAAC,UAAU,EAAE,UAAgD,EAAE;IACtF,OAAO,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE;QAC5B,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;YAC7B,OAAO,GAAG,EAAC,eAAe,EAAE,OAAO,EAAC,CAAC;SACxC;QAED,MAAM,cAAc,GAAG,OAAO,CAAC,eAAe,IAAI,YAAY,CAAC;QAC/D,IAAI,CAAC,cAAc,EAAE;YACjB,MAAM,IAAI,KAAK,CAAC,mBAAmB,GAAG,YAAY,GAAG,cAAc,GAAG,UAAU,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;SAChG;QAGD,MAAM,aAAa,GAAG,IAAA,2BAAe,EAAC,UAAU,EAAE,cAAc,CAAC,CAAC;QAClE,MAAM,SAAS,GAAG,IAAA,6BAAiB,EAAC,UAAU,EAAE,cAAc,CAAC,CAAC;QAChE,SAAS,iCAAK,aAAa,GAAK,OAAO,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAGhE,IAAA,8BAAkB,EAAC,UAAU,EAAE,cAAc,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE;YACpE,IAAA,qBAAS,EAAC,cAAc,CAAC,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;IACP,CAAC,CAAC;AACN,CAAC;AArBD,kCAqBC"}
1
+ {"version":3,"file":"ExtendField.js","sourceRoot":"","sources":["../../../../../src/infrastructure/decorators/fields/ExtendField.ts"],"names":[],"mappings":";;;AAAA,2CAA+D;AAE/D,sEAAqF;AAOrF,SAAgB,WAAW,CACvB,UAAU,EACV,UAAgD;IAC5C,gBAAgB,EAAE,IAAI;CACzB;IAED,OAAO,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE;QAC5B,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;YAC7B,OAAO,GAAG,EAAC,eAAe,EAAE,OAAO,EAAC,CAAC;SACxC;QAED,MAAM,cAAc,GAAG,OAAO,CAAC,eAAe,IAAI,YAAY,CAAC;QAC/D,IAAI,CAAC,cAAc,EAAE;YACjB,MAAM,IAAI,KAAK,CAAC,mBAAmB,GAAG,YAAY,GAAG,cAAc,GAAG,UAAU,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;SAChG;QAGD,MAAM,aAAa,GAAG,IAAA,2BAAe,EAAC,UAAU,EAAE,cAAc,CAAC,CAAC;QAClE,MAAM,SAAS,GAAG,IAAA,6BAAiB,EAAC,UAAU,EAAE,cAAc,CAAC,CAAC;QAChE,SAAS,iCAAK,aAAa,GAAK,OAAO,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAEhE,IAAI,OAAO,CAAC,gBAAgB,EAAE;YAE1B,IAAA,8BAAkB,EAAC,UAAU,EAAE,cAAc,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE;gBACpE,IAAA,qBAAS,EAAC,cAAc,CAAC,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;YACpD,CAAC,CAAC,CAAC;SACN;IACL,CAAC,CAAC;AACN,CAAC;AA5BD,kCA4BC"}
@@ -12,9 +12,11 @@ import { IPhoneFieldOptions } from './PhoneField';
12
12
  import { IStringFieldOptions } from './StringField';
13
13
  import { IIntegerFieldOptions } from './IntegerField';
14
14
  import { IDateFieldOptions } from './DateField';
15
+ import { IComputableFieldOptions } from './ComputableField';
15
16
  export { BooleanField } from './BooleanField';
16
17
  export { CoordinateField } from './CoordinateField';
17
18
  export { CreateTimeField } from './CreateTimeField';
19
+ export { ComputableField } from './ComputableField';
18
20
  export { DateField } from './DateField';
19
21
  export { DateTimeField } from './DateTimeField';
20
22
  export { DecimalField } from './DecimalField';
@@ -34,4 +36,4 @@ export { UpdateTimeField } from './UpdateTimeField';
34
36
  export { RelationField } from './RelationField';
35
37
  export { RelationIdField } from './RelationIdField';
36
38
  export { ImageField } from './ImageField';
37
- export declare type IAllFieldOptions = ICreateTimeFieldOptions & IDateTimeFieldColumnOptions & IDecimalFieldOptions & IEnumFieldOptions & IExtendFieldOptions & IFileField & IRelationFieldOptions & IRelationIdFieldOptions & IUpdateTimeFieldOptions & IEmailFieldOptions & IPhoneFieldOptions & IStringFieldOptions & IIntegerFieldOptions & IDateFieldOptions;
39
+ export declare type IAllFieldOptions = ICreateTimeFieldOptions & IDateTimeFieldColumnOptions & IDecimalFieldOptions & IEnumFieldOptions & IExtendFieldOptions & IFileField & IRelationFieldOptions & IRelationIdFieldOptions & IUpdateTimeFieldOptions & IEmailFieldOptions & IPhoneFieldOptions & IStringFieldOptions & IIntegerFieldOptions & IDateFieldOptions & IComputableFieldOptions;
@@ -1,12 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ImageField = exports.RelationIdField = exports.RelationField = exports.UpdateTimeField = exports.UidField = exports.TimeField = exports.TextField = exports.StringField = exports.PrimaryKeyField = exports.PhoneField = exports.PasswordField = exports.IntegerField = exports.HtmlField = exports.FileField = exports.EnumField = exports.EmailField = exports.DecimalField = exports.DateTimeField = exports.DateField = exports.CreateTimeField = exports.CoordinateField = exports.BooleanField = void 0;
3
+ exports.ImageField = exports.RelationIdField = exports.RelationField = exports.UpdateTimeField = exports.UidField = exports.TimeField = exports.TextField = exports.StringField = exports.PrimaryKeyField = exports.PhoneField = exports.PasswordField = exports.IntegerField = exports.HtmlField = exports.FileField = exports.EnumField = exports.EmailField = exports.DecimalField = exports.DateTimeField = exports.DateField = exports.ComputableField = exports.CreateTimeField = exports.CoordinateField = exports.BooleanField = void 0;
4
4
  var BooleanField_1 = require("./BooleanField");
5
5
  Object.defineProperty(exports, "BooleanField", { enumerable: true, get: function () { return BooleanField_1.BooleanField; } });
6
6
  var CoordinateField_1 = require("./CoordinateField");
7
7
  Object.defineProperty(exports, "CoordinateField", { enumerable: true, get: function () { return CoordinateField_1.CoordinateField; } });
8
8
  var CreateTimeField_1 = require("./CreateTimeField");
9
9
  Object.defineProperty(exports, "CreateTimeField", { enumerable: true, get: function () { return CreateTimeField_1.CreateTimeField; } });
10
+ var ComputableField_1 = require("./ComputableField");
11
+ Object.defineProperty(exports, "ComputableField", { enumerable: true, get: function () { return ComputableField_1.ComputableField; } });
10
12
  var DateField_1 = require("./DateField");
11
13
  Object.defineProperty(exports, "DateField", { enumerable: true, get: function () { return DateField_1.DateField; } });
12
14
  var DateTimeField_1 = require("./DateTimeField");
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/infrastructure/decorators/fields/index.ts"],"names":[],"mappings":";;;AAeA,+CAA4C;AAApC,4GAAA,YAAY,OAAA;AACpB,qDAAkD;AAA1C,kHAAA,eAAe,OAAA;AACvB,qDAAkD;AAA1C,kHAAA,eAAe,OAAA;AACvB,yCAAsC;AAA9B,sGAAA,SAAS,OAAA;AACjB,iDAA8C;AAAtC,8GAAA,aAAa,OAAA;AACrB,+CAA4C;AAApC,4GAAA,YAAY,OAAA;AACpB,2CAAwC;AAAhC,wGAAA,UAAU,OAAA;AAClB,yCAAsC;AAA9B,sGAAA,SAAS,OAAA;AACjB,yCAAsC;AAA9B,sGAAA,SAAS,OAAA;AACjB,yCAAsC;AAA9B,sGAAA,SAAS,OAAA;AACjB,+CAA4C;AAApC,4GAAA,YAAY,OAAA;AACpB,iDAA8C;AAAtC,8GAAA,aAAa,OAAA;AACrB,2CAAwC;AAAhC,wGAAA,UAAU,OAAA;AAClB,qDAAkD;AAA1C,kHAAA,eAAe,OAAA;AACvB,6CAA0C;AAAlC,0GAAA,WAAW,OAAA;AACnB,yCAAsC;AAA9B,sGAAA,SAAS,OAAA;AACjB,yCAAsC;AAA9B,sGAAA,SAAS,OAAA;AACjB,uCAAoC;AAA5B,oGAAA,QAAQ,OAAA;AAChB,qDAAkD;AAA1C,kHAAA,eAAe,OAAA;AACvB,iDAA8C;AAAtC,8GAAA,aAAa,OAAA;AACrB,qDAAkD;AAA1C,kHAAA,eAAe,OAAA;AACvB,2CAAwC;AAAhC,wGAAA,UAAU,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/infrastructure/decorators/fields/index.ts"],"names":[],"mappings":";;;AAgBA,+CAA4C;AAApC,4GAAA,YAAY,OAAA;AACpB,qDAAkD;AAA1C,kHAAA,eAAe,OAAA;AACvB,qDAAkD;AAA1C,kHAAA,eAAe,OAAA;AACvB,qDAAkD;AAA1C,kHAAA,eAAe,OAAA;AACvB,yCAAsC;AAA9B,sGAAA,SAAS,OAAA;AACjB,iDAA8C;AAAtC,8GAAA,aAAa,OAAA;AACrB,+CAA4C;AAApC,4GAAA,YAAY,OAAA;AACpB,2CAAwC;AAAhC,wGAAA,UAAU,OAAA;AAClB,yCAAsC;AAA9B,sGAAA,SAAS,OAAA;AACjB,yCAAsC;AAA9B,sGAAA,SAAS,OAAA;AACjB,yCAAsC;AAA9B,sGAAA,SAAS,OAAA;AACjB,+CAA4C;AAApC,4GAAA,YAAY,OAAA;AACpB,iDAA8C;AAAtC,8GAAA,aAAa,OAAA;AACrB,2CAAwC;AAAhC,wGAAA,UAAU,OAAA;AAClB,qDAAkD;AAA1C,kHAAA,eAAe,OAAA;AACvB,6CAA0C;AAAlC,0GAAA,WAAW,OAAA;AACnB,yCAAsC;AAA9B,sGAAA,SAAS,OAAA;AACjB,yCAAsC;AAA9B,sGAAA,SAAS,OAAA;AACjB,uCAAoC;AAA5B,oGAAA,QAAQ,OAAA;AAChB,qDAAkD;AAA1C,kHAAA,eAAe,OAAA;AACvB,iDAA8C;AAAtC,8GAAA,aAAa,OAAA;AACrB,qDAAkD;AAA1C,kHAAA,eAAe,OAAA;AACvB,2CAAwC;AAAhC,wGAAA,UAAU,OAAA"}
@@ -0,0 +1,11 @@
1
+ import { SelectQueryBuilder } from 'typeorm/query-builder/SelectQueryBuilder';
2
+ export declare type IConditionOperatorSingle = '=' | '>' | '>=' | '=>' | '<' | '<=' | '=<' | 'like' | 'ilike' | 'between' | 'in' | 'and' | '&&' | 'or' | '||' | 'not =' | 'not >' | 'not >=' | 'not =>' | 'not <' | 'not <=' | 'not =<' | 'not like' | 'not ilike' | 'not between' | 'not in' | 'not and' | 'not &&' | 'not or' | 'not ||';
3
+ export declare type IConditionOperatorAndOr = 'and' | '&&' | 'or' | '||' | 'not and' | 'not &&' | 'not or' | 'not ||';
4
+ export declare type IConditionOperatorSubquery = 'some' | 'every' | 'none';
5
+ export declare type ICondition = Record<string, unknown> | [IConditionOperatorAndOr, ...any[]] | ['filter', ICondition] | [IConditionOperatorSingle, string, ...any[]] | [IConditionOperatorSubquery, string | string[], ICondition] | ICondition[];
6
+ export declare class ConditionHelperTypeORM {
7
+ static toTypeOrm(condition: ICondition, dbQuery: SelectQueryBuilder<any>, rootClass: any): any;
8
+ static _objectConditionToArray(condition: ICondition): any[];
9
+ static _reverseCondition(condition: ICondition): any[];
10
+ static _toTypeOrmInternal(condition: ICondition, dbQuery: SelectQueryBuilder<any>, rootClass: any, filterEmpty?: boolean): any;
11
+ }
@@ -0,0 +1,157 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ConditionHelperTypeORM = void 0;
4
+ const lodash_1 = require("lodash");
5
+ const typeorm_1 = require("typeorm");
6
+ const QueryAdapterTypeORM_1 = require("../../adapters/QueryAdapterTypeORM");
7
+ const SearchQuery_1 = require("../../../usecases/base/SearchQuery");
8
+ const BaseField_1 = require("../../decorators/fields/BaseField");
9
+ const ObjectToArray_1 = require("../../../usecases/helpers/ObjectToArray");
10
+ const emptyCondition = {};
11
+ const isEmpty = value => value === null || typeof value === 'undefined' || value === emptyCondition || value === '';
12
+ const STEROIDS_SUBQUERY_PARAMS_KEY = 'steroids_subquery_params_key';
13
+ class ConditionHelperTypeORM {
14
+ static toTypeOrm(condition, dbQuery, rootClass) {
15
+ return ConditionHelperTypeORM._toTypeOrmInternal(condition, dbQuery, rootClass);
16
+ }
17
+ static _objectConditionToArray(condition) {
18
+ if (typeof condition === 'object' && !Array.isArray(condition)) {
19
+ return [
20
+ 'and',
21
+ ...(0, ObjectToArray_1.ObjectToArray)(condition)
22
+ .map(array => ['=', ...array]),
23
+ ];
24
+ }
25
+ if (Array.isArray(condition)) {
26
+ return condition;
27
+ }
28
+ throw new Error('condition is not object');
29
+ }
30
+ static _reverseCondition(condition) {
31
+ if (Array.isArray(condition)) {
32
+ const operator = condition[0];
33
+ if (typeof operator === 'string' && operator.startsWith('not')) {
34
+ return [operator.slice(4), ...condition.slice(1)];
35
+ }
36
+ return [`not ${operator}`, ...condition.slice(1)];
37
+ }
38
+ throw new Error('condition is not array');
39
+ }
40
+ static _toTypeOrmInternal(condition, dbQuery, rootClass, filterEmpty = false) {
41
+ if (typeof condition === 'object' && !Array.isArray(condition)) {
42
+ return ConditionHelperTypeORM._toTypeOrmInternal(this._objectConditionToArray(condition), dbQuery, rootClass, filterEmpty);
43
+ }
44
+ if (Array.isArray(condition) && condition.length > 1 && typeof condition[0] === 'string') {
45
+ let operator = condition[0].toLowerCase();
46
+ const isNot = operator.indexOf('not') === 0;
47
+ if (isNot) {
48
+ operator = operator.replace(/^not\s+/, '');
49
+ }
50
+ const objectWhere = (isNot, isEmpty, key, value) => {
51
+ return !filterEmpty || !isEmpty
52
+ ? (0, lodash_1.set)({}, key, isNot ? (0, typeorm_1.Not)(value) : value)
53
+ : emptyCondition;
54
+ };
55
+ const key = condition[1];
56
+ const value = condition[2];
57
+ switch (operator) {
58
+ case 'filter':
59
+ return ConditionHelperTypeORM._toTypeOrmInternal(condition[1], dbQuery, rootClass, true);
60
+ case '=':
61
+ return objectWhere(isNot, isEmpty(value), key, isEmpty(value) ? (0, typeorm_1.IsNull)() : value);
62
+ case '>':
63
+ return objectWhere(isNot, isEmpty(value), key, (0, typeorm_1.MoreThan)(value));
64
+ case '>=':
65
+ case '=>':
66
+ return objectWhere(isNot, isEmpty(value), key, (0, typeorm_1.MoreThanOrEqual)(value));
67
+ case '<':
68
+ return objectWhere(isNot, isEmpty(value), key, (0, typeorm_1.LessThan)(value));
69
+ case '<=':
70
+ case '=<':
71
+ return objectWhere(isNot, isEmpty(value), key, (0, typeorm_1.LessThanOrEqual)(value));
72
+ case 'like':
73
+ case 'ilike':
74
+ const likeMethod = operator === 'ilike' ? typeorm_1.ILike : typeorm_1.Like;
75
+ return objectWhere(isNot, isEmpty(value), key, likeMethod(value ? (value.indexOf('%') !== -1 ? value : '%' + value + '%') : ''));
76
+ case 'between':
77
+ return objectWhere(isNot, isEmpty(condition[2] || condition[3]), key, (0, typeorm_1.Between)(condition[2], condition[3]));
78
+ case 'in':
79
+ if (value && !Array.isArray(value)) {
80
+ throw Error('Wrong value for IN operator: ' + JSON.stringify(value));
81
+ }
82
+ return objectWhere(isNot, isEmpty(value) || value.length === 0, key, (0, typeorm_1.In)(value));
83
+ case 'some':
84
+ case 'every':
85
+ case 'none':
86
+ if (isNot) {
87
+ throw Error(`Unsupport NOT for ${operator} operator.`);
88
+ }
89
+ const primaryKey = (0, BaseField_1.getMetaPrimaryKey)(rootClass);
90
+ const subQuery = dbQuery.connection.createQueryBuilder(rootClass, 'model');
91
+ subQuery.select(`model.${primaryKey}`);
92
+ const subSearchQuery = new SearchQuery_1.default();
93
+ subSearchQuery.with(condition[1]);
94
+ subSearchQuery.where(operator === 'every'
95
+ ? this._reverseCondition(condition[2])
96
+ : condition[2]);
97
+ subSearchQuery.andWhere(['not =', 'id', null]);
98
+ QueryAdapterTypeORM_1.QueryAdapterTypeORM.prepare(dbQuery.connection.getRepository(rootClass), subQuery, subSearchQuery, false);
99
+ const subqueryParams = dbQuery.getParameters()[STEROIDS_SUBQUERY_PARAMS_KEY];
100
+ dbQuery.setParameter(STEROIDS_SUBQUERY_PARAMS_KEY, subqueryParams ? subqueryParams + 1 : 1);
101
+ const paramsKey = dbQuery.getParameters()[STEROIDS_SUBQUERY_PARAMS_KEY];
102
+ dbQuery.setParameters(Object.assign(Object.assign({}, dbQuery.getParameters()), (Object.entries(subQuery.getParameters()).reduce((params, param) => (Object.assign(Object.assign({}, params), { [`steroids_${paramsKey}_${param[0]}`]: param[1] })), {}))));
103
+ const subQueryString = subQuery.getQuery().replace(/orm_param_/g, `steroids_${paramsKey}_orm_param_`);
104
+ let resultCondition;
105
+ if (operator === 'some') {
106
+ resultCondition = `${dbQuery.alias}.${primaryKey} IN (${subQueryString})`;
107
+ }
108
+ else {
109
+ resultCondition = `${dbQuery.alias}.${primaryKey} NOT IN (${subQueryString})`;
110
+ }
111
+ return new typeorm_1.Brackets((qb) => {
112
+ qb.andWhere(resultCondition);
113
+ });
114
+ case 'and':
115
+ case '&&':
116
+ case 'or':
117
+ case '||':
118
+ let isOr = ['or', '||'].includes(operator);
119
+ if (isNot) {
120
+ isOr = !isOr;
121
+ }
122
+ const values = condition.slice(1)
123
+ .map(item => typeof item === 'object' && !Array.isArray(item)
124
+ ? this._objectConditionToArray(item)
125
+ : item)
126
+ .map(item => ConditionHelperTypeORM._toTypeOrmInternal(isNot ? this._reverseCondition(item) : item, dbQuery, rootClass, filterEmpty))
127
+ .filter(value => !isEmpty(value));
128
+ if (values.length === 0) {
129
+ return emptyCondition;
130
+ }
131
+ if (values.length === 1) {
132
+ return values[0];
133
+ }
134
+ return new typeorm_1.Brackets((query2) => {
135
+ const parentQuery = query2.parentQueryBuilder;
136
+ query2.expressionMap.joinAttributes = parentQuery.expressionMap.joinAttributes;
137
+ values.forEach(value => {
138
+ if (isOr) {
139
+ query2.orWhere(value);
140
+ }
141
+ else {
142
+ query2.andWhere(value);
143
+ }
144
+ });
145
+ });
146
+ default:
147
+ throw Error('Wrong operator: ' + operator);
148
+ }
149
+ }
150
+ if (!condition) {
151
+ return emptyCondition;
152
+ }
153
+ throw Error('Wrong condition: ' + JSON.stringify(condition));
154
+ }
155
+ }
156
+ exports.ConditionHelperTypeORM = ConditionHelperTypeORM;
157
+ //# sourceMappingURL=ConditionHelperTypeORM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConditionHelperTypeORM.js","sourceRoot":"","sources":["../../../../../src/infrastructure/helpers/typeORM/ConditionHelperTypeORM.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { DeepPartial, Repository } from 'typeorm';
2
+ import * as Promise from 'bluebird';
3
+ import { SelectQueryBuilder } from 'typeorm/query-builder/SelectQueryBuilder';
4
+ import { SearchInputDto } from '../../../usecases/dtos/SearchInputDto';
5
+ import { SearchResultDto } from '../../../usecases/dtos/SearchResultDto';
6
+ import SearchQuery from '../../../usecases/base/SearchQuery';
7
+ export declare class SearchHelperTypeORM {
8
+ static search<TTable>(repository: Repository<DeepPartial<TTable>>, dto: SearchInputDto, searchQuery: SearchQuery<TTable>, prepareHandler?: (query: SelectQueryBuilder<TTable>) => void | null): Promise<SearchResultDto<TTable>>;
9
+ }
@@ -1,16 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SearchHelper = void 0;
3
+ exports.SearchHelperTypeORM = void 0;
4
4
  const Promise = require("bluebird");
5
- const SearchResultDto_1 = require("../dtos/SearchResultDto");
6
- const SearchQuery_1 = require("../base/SearchQuery");
7
- class SearchHelper {
5
+ const SearchResultDto_1 = require("../../../usecases/dtos/SearchResultDto");
6
+ const QueryAdapterTypeORM_1 = require("../../adapters/QueryAdapterTypeORM");
7
+ class SearchHelperTypeORM {
8
8
  static async search(repository, dto, searchQuery, prepareHandler = null) {
9
9
  const result = new SearchResultDto_1.SearchResultDto();
10
10
  dto = Object.assign({ page: 1, pageSize: 50 }, dto);
11
11
  const dbQuery = repository.createQueryBuilder(searchQuery.getAlias());
12
12
  const modelAlias = dbQuery.alias;
13
- SearchQuery_1.default.prepare(repository, dbQuery, searchQuery);
13
+ QueryAdapterTypeORM_1.QueryAdapterTypeORM.prepare(repository, dbQuery, searchQuery);
14
14
  const sort = typeof dto.sort === 'string' ? dto.sort.split(',') : (dto.sort || []);
15
15
  if (sort.length > 0) {
16
16
  dbQuery.orderBy(sort.reduce((obj, value) => {
@@ -33,5 +33,5 @@ class SearchHelper {
33
33
  return result;
34
34
  }
35
35
  }
36
- exports.SearchHelper = SearchHelper;
37
- //# sourceMappingURL=SearchHelper.js.map
36
+ exports.SearchHelperTypeORM = SearchHelperTypeORM;
37
+ //# sourceMappingURL=SearchHelperTypeORM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SearchHelperTypeORM.js","sourceRoot":"","sources":["../../../../../src/infrastructure/helpers/typeORM/SearchHelperTypeORM.ts"],"names":[],"mappings":";;;AACA,oCAAoC;AAGpC,4EAAuE;AAEvE,4EAAuE;AAEvE,MAAa,mBAAmB;IAE5B,MAAM,CAAC,KAAK,CAAC,MAAM,CACf,UAA2C,EAC3C,GAAmB,EACnB,WAAgC,EAChC,iBAAqE,IAAI;QAEzE,MAAM,MAAM,GAAG,IAAI,iCAAe,EAAU,CAAC;QAG7C,GAAG,mBACC,IAAI,EAAE,CAAC,EACP,QAAQ,EAAE,EAAE,IACT,GAAG,CACT,CAAC;QAGF,MAAM,OAAO,GAAG,UAAU,CAAC,kBAAkB,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;QACtE,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC;QAEjC,yCAAmB,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;QAG9D,MAAM,IAAI,GAAG,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QACnF,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YACjB,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;gBACvC,MAAM,eAAe,GAAG,GAAG,UAAU,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC;gBAClE,GAAG,CAAC,eAAe,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;gBAC5D,OAAO,GAAG,CAAC;YACf,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;SACX;QAGD,IAAI,cAAc,EAAE;YAChB,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;SACtC;QAGD,IAAI,GAAG,CAAC,QAAQ,GAAG,CAAC,EAAE;YAClB,OAAO;iBACF,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC;iBACnC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;SAC3B;QAGD,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;QACxE,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;QACrB,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;QAErB,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ;AApDD,kDAoDC"}