@node-c/core 1.0.0-alpha9 → 1.0.0-beta0

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 (140) hide show
  1. package/coverage/src/app.ts.html +349 -0
  2. package/coverage/src/common/configProvider/configProvider.module.ts.html +160 -0
  3. package/coverage/src/common/configProvider/configProvider.service.ts.html +658 -0
  4. package/coverage/src/common/configProvider/index.html +146 -0
  5. package/coverage/src/common/configProvider/index.ts.html +94 -0
  6. package/coverage/src/common/definitions/common.constants.ts.html +160 -0
  7. package/coverage/src/common/definitions/common.errors.ts.html +124 -0
  8. package/coverage/src/common/definitions/index.html +146 -0
  9. package/coverage/src/common/definitions/index.ts.html +94 -0
  10. package/coverage/src/common/utils/index.html +131 -0
  11. package/coverage/src/common/utils/index.ts.html +88 -0
  12. package/coverage/src/common/utils/utils.loadDynamicModules.ts.html +265 -0
  13. package/coverage/src/domain/entityService/domain.entity.service.ts.html +784 -0
  14. package/coverage/src/domain/entityService/index.html +131 -0
  15. package/coverage/src/domain/entityService/index.ts.html +91 -0
  16. package/coverage/src/index.html +116 -0
  17. package/coverage/src/persistance/entityService/index.html +131 -0
  18. package/coverage/src/persistance/entityService/index.ts.html +91 -0
  19. package/coverage/src/persistance/entityService/persistance.entity.service.ts.html +268 -0
  20. package/dist/app.d.ts +2 -2
  21. package/dist/app.js +27 -15
  22. package/dist/app.js.map +1 -1
  23. package/dist/common/configProvider/configProvider.definitions.d.ts +156 -20
  24. package/dist/common/configProvider/configProvider.definitions.js +21 -7
  25. package/dist/common/configProvider/configProvider.definitions.js.map +1 -1
  26. package/dist/common/configProvider/configProvider.module.js +13 -2
  27. package/dist/common/configProvider/configProvider.module.js.map +1 -1
  28. package/dist/common/configProvider/configProvider.service.js +21 -18
  29. package/dist/common/configProvider/configProvider.service.js.map +1 -1
  30. package/dist/common/definitions/common.constants.d.ts +2 -1
  31. package/dist/common/definitions/common.constants.js +1 -0
  32. package/dist/common/definitions/common.constants.js.map +1 -1
  33. package/dist/common/utils/base64UrlEncode/base64UrlEncode.method.d.ts +1 -0
  34. package/dist/common/utils/base64UrlEncode/base64UrlEncode.method.js +9 -0
  35. package/dist/common/utils/base64UrlEncode/base64UrlEncode.method.js.map +1 -0
  36. package/dist/common/utils/base64UrlEncode/index.d.ts +1 -0
  37. package/dist/{persistance/entityService → common/utils/base64UrlEncode}/index.js +1 -2
  38. package/dist/common/utils/base64UrlEncode/index.js.map +1 -0
  39. package/dist/common/utils/getNested/getNested.definitions.d.ts +4 -0
  40. package/dist/common/utils/getNested/getNested.definitions.js +3 -0
  41. package/dist/common/utils/getNested/getNested.definitions.js.map +1 -0
  42. package/dist/common/utils/getNested/getNested.method.d.ts +6 -0
  43. package/dist/common/utils/getNested/getNested.method.js +88 -0
  44. package/dist/common/utils/getNested/getNested.method.js.map +1 -0
  45. package/dist/common/utils/getNested/index.d.ts +2 -0
  46. package/dist/common/utils/getNested/index.js +19 -0
  47. package/dist/common/utils/getNested/index.js.map +1 -0
  48. package/dist/common/utils/httpRequest/httpRequest.definitions.d.ts +19 -0
  49. package/dist/common/utils/httpRequest/httpRequest.definitions.js +3 -0
  50. package/dist/common/utils/httpRequest/httpRequest.definitions.js.map +1 -0
  51. package/dist/common/utils/httpRequest/httpRequest.method.d.ts +2 -0
  52. package/dist/common/utils/httpRequest/httpRequest.method.js +56 -0
  53. package/dist/common/utils/httpRequest/httpRequest.method.js.map +1 -0
  54. package/dist/common/utils/httpRequest/index.d.ts +2 -0
  55. package/dist/common/utils/httpRequest/index.js +19 -0
  56. package/dist/common/utils/httpRequest/index.js.map +1 -0
  57. package/dist/common/utils/index.d.ts +5 -1
  58. package/dist/common/utils/index.js +5 -1
  59. package/dist/common/utils/index.js.map +1 -1
  60. package/dist/common/utils/loadDynamicModules/index.d.ts +1 -0
  61. package/dist/common/utils/loadDynamicModules/index.js +18 -0
  62. package/dist/common/utils/loadDynamicModules/index.js.map +1 -0
  63. package/dist/common/utils/{utils.loadDynamicModules.d.ts → loadDynamicModules/utils.loadDynamicModules.d.ts} +1 -1
  64. package/dist/common/utils/loadDynamicModules/utils.loadDynamicModules.js.map +1 -0
  65. package/dist/common/utils/setNested/index.d.ts +2 -0
  66. package/dist/common/utils/setNested/index.js +19 -0
  67. package/dist/common/utils/setNested/index.js.map +1 -0
  68. package/dist/common/utils/setNested/setNested.definitions.d.ts +4 -0
  69. package/dist/common/utils/setNested/setNested.definitions.js +3 -0
  70. package/dist/common/utils/setNested/setNested.definitions.js.map +1 -0
  71. package/dist/common/utils/setNested/setNested.method.d.ts +2 -0
  72. package/dist/common/utils/setNested/setNested.method.js +70 -0
  73. package/dist/common/utils/setNested/setNested.method.js.map +1 -0
  74. package/dist/data/entityService/data.entity.service.d.ts +17 -0
  75. package/dist/data/entityService/data.entity.service.definitions.d.ts +117 -0
  76. package/dist/data/entityService/data.entity.service.definitions.js +28 -0
  77. package/dist/data/entityService/data.entity.service.definitions.js.map +1 -0
  78. package/dist/{persistance/entityService/persistance.entity.service.js → data/entityService/data.entity.service.js} +41 -9
  79. package/dist/data/entityService/data.entity.service.js.map +1 -0
  80. package/dist/data/entityService/index.d.ts +2 -0
  81. package/dist/data/entityService/index.js +19 -0
  82. package/dist/data/entityService/index.js.map +1 -0
  83. package/dist/domain/entityService/domain.entity.service.d.ts +28 -13
  84. package/dist/domain/entityService/domain.entity.service.definitions.d.ts +26 -19
  85. package/dist/domain/entityService/domain.entity.service.definitions.js +6 -6
  86. package/dist/domain/entityService/domain.entity.service.definitions.js.map +1 -1
  87. package/dist/domain/entityService/domain.entity.service.js +77 -69
  88. package/dist/domain/entityService/domain.entity.service.js.map +1 -1
  89. package/dist/index.d.ts +1 -1
  90. package/dist/index.js +1 -1
  91. package/dist/index.js.map +1 -1
  92. package/package.json +11 -10
  93. package/src/app.spec.ts +138 -0
  94. package/src/app.ts +115 -0
  95. package/src/common/configProvider/configProvider.definitions.ts +445 -0
  96. package/src/common/configProvider/configProvider.module.spec.ts +90 -0
  97. package/src/common/configProvider/configProvider.module.ts +25 -0
  98. package/src/common/configProvider/configProvider.service.spec.ts +206 -0
  99. package/src/common/configProvider/configProvider.service.ts +204 -0
  100. package/src/common/configProvider/index.ts +3 -0
  101. package/src/common/definitions/common.constants.ts +27 -0
  102. package/src/common/definitions/common.definitions.ts +13 -0
  103. package/src/common/definitions/common.errors.ts +13 -0
  104. package/src/common/definitions/index.ts +3 -0
  105. package/src/common/utils/base64UrlEncode/base64UrlEncode.method.ts +4 -0
  106. package/src/common/utils/base64UrlEncode/index.ts +1 -0
  107. package/src/common/utils/getNested/getNested.definitions.ts +4 -0
  108. package/src/common/utils/getNested/getNested.method.ts +108 -0
  109. package/src/common/utils/getNested/getNested.spec.ts +151 -0
  110. package/src/common/utils/getNested/index.ts +2 -0
  111. package/src/common/utils/httpRequest/httpRequest.definitions.ts +22 -0
  112. package/src/common/utils/httpRequest/httpRequest.method.ts +46 -0
  113. package/src/common/utils/httpRequest/index.ts +2 -0
  114. package/src/common/utils/index.ts +5 -0
  115. package/src/common/utils/loadDynamicModules/index.ts +1 -0
  116. package/src/common/utils/loadDynamicModules/utils.loadDynamicModules.spec.ts +111 -0
  117. package/src/common/utils/loadDynamicModules/utils.loadDynamicModules.ts +69 -0
  118. package/src/common/utils/setNested/index.ts +2 -0
  119. package/src/common/utils/setNested/setNested.definitions.ts +4 -0
  120. package/src/common/utils/setNested/setNested.method.ts +83 -0
  121. package/src/common/utils/setNested/setNested.spec.ts +184 -0
  122. package/src/data/entityService/data.entity.service.definitions.ts +154 -0
  123. package/src/data/entityService/data.entity.service.spec.ts +112 -0
  124. package/src/data/entityService/data.entity.service.ts +144 -0
  125. package/src/data/entityService/index.ts +2 -0
  126. package/src/domain/entityService/domain.entity.service.definitions.ts +142 -0
  127. package/src/domain/entityService/domain.entity.service.spec.ts +126 -0
  128. package/src/domain/entityService/domain.entity.service.ts +421 -0
  129. package/src/domain/entityService/index.ts +2 -0
  130. package/src/index.ts +6 -0
  131. package/src/vitest.config.ts +9 -0
  132. package/dist/common/utils/utils.loadDynamicModules.js.map +0 -1
  133. package/dist/persistance/entityService/index.d.ts +0 -2
  134. package/dist/persistance/entityService/index.js.map +0 -1
  135. package/dist/persistance/entityService/persistance.entity.service.d.ts +0 -11
  136. package/dist/persistance/entityService/persistance.entity.service.definitions.d.ts +0 -76
  137. package/dist/persistance/entityService/persistance.entity.service.definitions.js +0 -23
  138. package/dist/persistance/entityService/persistance.entity.service.definitions.js.map +0 -1
  139. package/dist/persistance/entityService/persistance.entity.service.js.map +0 -1
  140. /package/dist/common/utils/{utils.loadDynamicModules.js → loadDynamicModules/utils.loadDynamicModules.js} +0 -0
@@ -9,22 +9,28 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.PersistanceEntityService = void 0;
12
+ exports.DataEntityService = void 0;
13
13
  const definitions_1 = require("../../common/definitions");
14
- class PersistanceEntityService {
14
+ class DataEntityService {
15
+ constructor(configProvider, dataModuleName) {
16
+ this.configProvider = configProvider;
17
+ this.dataModuleName = dataModuleName;
18
+ const { settingsPerEntity } = configProvider.config.data[dataModuleName];
19
+ this.settings = settingsPerEntity || {};
20
+ }
15
21
  bulkCreate(_data, _options, _privateOptions) {
16
22
  return __awaiter(this, void 0, void 0, function* () {
17
23
  throw new definitions_1.ApplicationError(`Method bulkCreate not implemented for class ${typeof this}.`);
18
24
  });
19
25
  }
20
- create(_data, _options, _privateOptions) {
26
+ count(_options, _privateOptions) {
21
27
  return __awaiter(this, void 0, void 0, function* () {
22
- throw new definitions_1.ApplicationError(`Method create not implemented for class ${typeof this}.`);
28
+ throw new definitions_1.ApplicationError(`Method count not implemented for class ${typeof this}.`);
23
29
  });
24
30
  }
25
- count(_options, _privateOptions) {
31
+ create(_data, _options, _privateOptions) {
26
32
  return __awaiter(this, void 0, void 0, function* () {
27
- throw new definitions_1.ApplicationError(`Method count not implemented for class ${typeof this}.`);
33
+ throw new definitions_1.ApplicationError(`Method create not implemented for class ${typeof this}.`);
28
34
  });
29
35
  }
30
36
  delete(_options, _privateOptions) {
@@ -36,14 +42,40 @@ class PersistanceEntityService {
36
42
  findOne(_options, _privateOptions) {
37
43
  throw new definitions_1.ApplicationError(`Method findOne not implemented for class ${typeof this}.`);
38
44
  }
39
- getEntityName() {
45
+ getEntityName(noError) {
46
+ if (noError) {
47
+ return null;
48
+ }
40
49
  throw new definitions_1.ApplicationError(`Method getEntityName not implemented for class ${typeof this}.`);
41
50
  }
51
+ processObjectAllowedFields(data, options) {
52
+ return __awaiter(this, void 0, void 0, function* () {
53
+ const { settings } = this;
54
+ const { allowedFields, isEnabled, objectType } = options;
55
+ if (isEnabled === false || (typeof isEnabled === 'undefined' && !settings[objectType])) {
56
+ return data;
57
+ }
58
+ const actualData = data instanceof Array ? data : [data];
59
+ const processedData = [];
60
+ actualData.forEach(dataItem => {
61
+ const processedDataItem = {};
62
+ allowedFields.forEach(fieldName => {
63
+ const typedFieldName = fieldName;
64
+ const value = dataItem[typedFieldName];
65
+ if (typeof value !== 'undefined') {
66
+ processedDataItem[typedFieldName] = value;
67
+ }
68
+ });
69
+ processedData.push(processedDataItem);
70
+ });
71
+ return processedData.length === 1 ? processedData[0] : processedData;
72
+ });
73
+ }
42
74
  update(_data, _options, _privateOptions) {
43
75
  return __awaiter(this, void 0, void 0, function* () {
44
76
  throw new definitions_1.ApplicationError(`Method update not implemented for class ${typeof this}.`);
45
77
  });
46
78
  }
47
79
  }
48
- exports.PersistanceEntityService = PersistanceEntityService;
49
- //# sourceMappingURL=persistance.entity.service.js.map
80
+ exports.DataEntityService = DataEntityService;
81
+ //# sourceMappingURL=data.entity.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data.entity.service.js","sourceRoot":"","sources":["../../../src/data/entityService/data.entity.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from './data.entity.service';
2
+ export * from './data.entity.service.definitions';
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./data.entity.service"), exports);
18
+ __exportStar(require("./data.entity.service.definitions"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/data/entityService/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wDAAsC;AACtC,oEAAkD"}
@@ -1,17 +1,32 @@
1
- import { DomainBulkCreateOptions, DomainBulkCreateResult, DomainCreateOptions, DomainCreateResult, DomainDeleteOptions, DomainDeleteResult, DomainEntityServiceDefaultData, DomainFindOneOptions, DomainFindOneResult, DomainFindOptions, DomainFindResult, DomainPersistanceEntityServiceType, DomainRunMethodInAdditionalServicesOptions, DomainUpdateOptions, DomainUpdateResult } from './domain.entity.service.definitions';
1
+ import { DomainBaseAdditionalServiceOptionsOverrides, DomainBulkCreateOptions, DomainBulkCreatePrivateOptions, DomainBulkCreateResult, DomainCreateOptions, DomainCreatePrivateOptions, DomainCreateResult, DomainDataEntityServiceType, DomainDeleteOptions, DomainDeletePrivateOptions, DomainDeleteResult, DomainEntityServiceDefaultData, DomainFindOneOptions, DomainFindOnePrivateOptions, DomainFindOneResult, DomainFindOptions, DomainFindPrivateOptions, DomainFindResult, DomainRunMethodInAdditionalServicesOptions, DomainUpdateOptions, DomainUpdatePrivateOptions, DomainUpdateResult } from './domain.entity.service.definitions';
2
2
  import { GenericObject } from '../../common/definitions';
3
- import { PersistanceEntityService } from '../../persistance/entityService';
4
- export declare class DomainEntityService<Entity, EntityService extends PersistanceEntityService<Entity>, Data extends DomainEntityServiceDefaultData<Entity> = DomainEntityServiceDefaultData<Entity>, AdditionalEntityServices extends Record<string, PersistanceEntityService<Partial<Entity>>> | undefined = undefined> {
5
- protected persistanceEntityService: EntityService;
3
+ import { DataDefaultData, DataEntityService } from '../../data/entityService';
4
+ export declare class DomainEntityService<Entity, EntityService extends DataEntityService<Entity, DataEntityServiceData>, Data extends DomainEntityServiceDefaultData<Entity> = DomainEntityServiceDefaultData<Entity>, AdditionalEntityServices extends Record<string, DataEntityService<Partial<Entity>, DataDefaultData<object>>> | undefined = undefined, DataEntityServiceData extends DataDefaultData<Entity> = DataDefaultData<Entity>> {
5
+ protected dataEntityService: EntityService;
6
6
  protected defaultMethods: string[];
7
- protected additionalPersistanceEntityServices?: AdditionalEntityServices | undefined;
8
- constructor(persistanceEntityService: EntityService, defaultMethods?: string[], additionalPersistanceEntityServices?: AdditionalEntityServices | undefined);
9
- bulkCreate(data: Data['BulkCreate'], options?: DomainBulkCreateOptions, privateOptions?: unknown): Promise<DomainBulkCreateResult<Entity>>;
10
- create(data: Data['Create'], options?: DomainCreateOptions, privateOptions?: unknown): Promise<DomainCreateResult<Entity>>;
11
- delete(options: DomainDeleteOptions, privateOptions?: unknown): Promise<DomainDeleteResult<Entity>>;
12
- find(options: DomainFindOptions, privateOptions?: unknown): Promise<DomainFindResult<Entity>>;
13
- findOne(options: DomainFindOneOptions, privateOptions?: unknown): Promise<DomainFindOneResult<Entity>>;
14
- protected getPersistanceService(serviceName: DomainPersistanceEntityServiceType.Main | string): PersistanceEntityService<Entity>;
7
+ protected additionalDataEntityServices?: AdditionalEntityServices | undefined;
8
+ protected defaultAdditionalDataEntityServicesOptions?: {
9
+ [methodName: string]: {
10
+ [serviceName: string]: {
11
+ allowIncoming?: boolean;
12
+ serviceOptions?: DomainBaseAdditionalServiceOptionsOverrides & GenericObject<unknown>;
13
+ };
14
+ };
15
+ } | undefined;
16
+ constructor(dataEntityService: EntityService, defaultMethods?: string[], additionalDataEntityServices?: AdditionalEntityServices | undefined, defaultAdditionalDataEntityServicesOptions?: {
17
+ [methodName: string]: {
18
+ [serviceName: string]: {
19
+ allowIncoming?: boolean;
20
+ serviceOptions?: DomainBaseAdditionalServiceOptionsOverrides & GenericObject<unknown>;
21
+ };
22
+ };
23
+ } | undefined);
24
+ bulkCreate(data: Data['BulkCreate'], options?: DomainBulkCreateOptions, privateOptions?: DomainBulkCreatePrivateOptions): Promise<DomainBulkCreateResult<Entity>>;
25
+ create(data: Data['Create'], options?: DomainCreateOptions, privateOptions?: DomainCreatePrivateOptions): Promise<DomainCreateResult<Entity>>;
26
+ delete(options: DomainDeleteOptions, privateOptions?: DomainDeletePrivateOptions): Promise<DomainDeleteResult<Entity>>;
27
+ find(options: DomainFindOptions, privateOptions?: DomainFindOnePrivateOptions): Promise<DomainFindResult<Entity>>;
28
+ findOne(options: DomainFindOneOptions, privateOptions?: DomainFindPrivateOptions): Promise<DomainFindOneResult<Entity>>;
29
+ protected getDataService(serviceName: DomainDataEntityServiceType.Main | string): DataEntityService<Entity>;
15
30
  protected runMethodInAdditionalServices<ServiceReturnData>(serviceNames: string[], options: DomainRunMethodInAdditionalServicesOptions<unknown>): Promise<GenericObject<ServiceReturnData> | undefined>;
16
- update(data: Data['Update'], options: DomainUpdateOptions, privateOptions?: unknown): Promise<DomainUpdateResult<Entity>>;
31
+ update(data: Data['Update'], options: DomainUpdateOptions, privateOptions?: DomainUpdatePrivateOptions): Promise<DomainUpdateResult<Entity>>;
17
32
  }
@@ -1,43 +1,49 @@
1
1
  import { GenericObject } from '../../common/definitions';
2
- import { PersistanceDeleteOptions, PersistanceDeleteResult, PersistanceFindOneOptions, PersistanceFindOptions, PersistanceFindResults, PersistanceUpdateOptions, PersistanceUpdateResult } from '../../persistance/entityService';
2
+ import { DataBulkCreatePrivateOptions, DataCreatePrivateOptions, DataDeleteOptions, DataDeletePrivateOptions, DataDeleteResult, DataFindOneOptions, DataFindOnePrivateOptions, DataFindOptions, DataFindPrivateOptions, DataFindResults, DataUpdateOptions, DataUpdatePrivateOptions, DataUpdateResult } from '../../data/entityService';
3
3
  export interface DomainBaseAdditionalServiceOptionsOverrides {
4
- filterByMainResultFields?: GenericObject<string>;
5
- runOnNoMainServiceResultOnly?: boolean | string;
4
+ filterByFirstServiceResultFields?: GenericObject<string>;
5
+ returnData?: boolean;
6
+ runOnNoFirstServiceResultOnly?: boolean | string;
6
7
  }
7
8
  export type DomainBaseOptions<Options> = Options & DomainBaseOptionsForAdditionalServices<Options>;
8
9
  export interface DomainBaseOptionsForAdditionalServices<Options> {
9
10
  optionsOverridesByService?: GenericObject<Partial<Options> & DomainBaseAdditionalServiceOptionsOverrides>;
10
- persistanceServices?: DomainPersistanceServicesKey[];
11
+ dataServices?: DomainDataServicesKey[];
11
12
  }
12
- export type DomainBaseOptionsForAdditionalServicesFull<Options extends object | undefined = undefined, SaveAdditionalResultsOptions extends object | undefined = undefined> = DomainBaseOptionsForAdditionalServices<Options> & DomainBaseOptionsWithSearchPersistance<SaveAdditionalResultsOptions>;
13
- export interface DomainBaseOptionsWithSearchPersistance<SaveAdditionalResultsOptions extends object | undefined = undefined> {
14
- saveAdditionalResultsInMain?: {
13
+ export type DomainBaseOptionsForAdditionalServicesFull<Options extends object | undefined = undefined, SaveAdditionalResultsOptions extends object | undefined = undefined> = DomainBaseOptionsForAdditionalServices<Options> & DomainBaseOptionsWithSearchData<SaveAdditionalResultsOptions>;
14
+ export interface DomainBaseOptionsWithSearchData<SaveAdditionalResultsOptions extends object | undefined = undefined> {
15
+ saveAdditionalResultsInFirstService?: {
15
16
  saveOptions?: SaveAdditionalResultsOptions;
16
17
  serviceName: string;
17
- useResultsAsMain?: boolean;
18
+ useResultsForFirstService?: boolean;
18
19
  };
19
20
  }
20
21
  export interface DomainBaseResult<Result> {
21
22
  result: Result;
22
23
  resultsByService?: GenericObject<Result>;
23
24
  }
25
+ export type DomainBulkCreatePrivateOptions = DataBulkCreatePrivateOptions;
24
26
  export type DomainBulkCreateData<Entity> = Partial<Entity>[];
25
27
  export type DomainBulkCreateOptions<Options = object> = DomainBaseOptions<Options>;
26
28
  export type DomainBulkCreateResult<Entity> = DomainBaseResult<Entity[]>;
27
29
  export type DomainCreateData<Entity> = Partial<Entity>;
28
30
  export type DomainCreateOptions<Options = object> = DomainBaseOptions<Options>;
31
+ export type DomainCreatePrivateOptions = DataCreatePrivateOptions;
29
32
  export type DomainCreateResult<Entity> = DomainBaseResult<Entity>;
30
- export type DomainDeleteOptions<Options = object> = Options & DomainBaseOptions<PersistanceDeleteOptions>;
31
- export type DomainDeleteResult<Entity> = DomainBaseResult<PersistanceDeleteResult<Entity>>;
33
+ export type DomainDeleteOptions<Options = object> = Options & DomainBaseOptions<DataDeleteOptions>;
34
+ export type DomainDeletePrivateOptions = DataDeletePrivateOptions;
35
+ export type DomainDeleteResult<Entity> = DomainBaseResult<DataDeleteResult<Entity>>;
32
36
  export interface DomainEntityServiceDefaultData<Entity> {
33
37
  BulkCreate: DomainBulkCreateData<Entity>;
34
38
  Create: DomainCreateData<Entity>;
35
39
  Update: DomainUpdateData<Entity>;
36
40
  }
37
- export type DomainFindOneOptions<Options = object> = Options & DomainBaseOptions<PersistanceFindOneOptions> & DomainBaseOptionsWithSearchPersistance<DomainCreateOptions>;
41
+ export type DomainFindOneOptions<Options = object> = Options & DomainBaseOptions<DataFindOneOptions> & DomainBaseOptionsWithSearchData<DomainCreateOptions>;
42
+ export type DomainFindOnePrivateOptions = DataFindOnePrivateOptions;
38
43
  export type DomainFindOneResult<Entity> = DomainBaseResult<Entity | null>;
39
- export type DomainFindOptions<Options = object> = Options & DomainBaseOptions<PersistanceFindOptions> & DomainBaseOptionsWithSearchPersistance<DomainBulkCreateOptions>;
40
- export type DomainFindResult<Entity> = DomainBaseResult<PersistanceFindResults<Entity>>;
44
+ export type DomainFindOptions<Options = object> = Options & DomainBaseOptions<DataFindOptions> & DomainBaseOptionsWithSearchData<DomainBulkCreateOptions>;
45
+ export type DomainFindPrivateOptions = DataFindPrivateOptions;
46
+ export type DomainFindResult<Entity> = DomainBaseResult<DataFindResults<Entity>>;
41
47
  export declare enum DomainMethod {
42
48
  BulkCreate = "bulkCreate",
43
49
  Create = "create",
@@ -47,19 +53,20 @@ export declare enum DomainMethod {
47
53
  Update = "update"
48
54
  }
49
55
  export declare const DOMAIN_ENTITY_SERVICE_DEFAULT_METHODS: DomainMethod[];
50
- export declare enum DomainPersistanceEntityServiceType {
56
+ export declare enum DomainDataEntityServiceType {
51
57
  All = "all",
52
58
  Main = "main"
53
59
  }
54
- export type DomainPersistanceServicesKey = DomainPersistanceEntityServiceType | string;
60
+ export type DomainDataServicesKey = DomainDataEntityServiceType | string;
55
61
  export type DomainRunMethodInAdditionalServicesOptions<Options> = {
56
- hasMainServiceResult: boolean;
57
- mainServiceResult?: unknown;
62
+ firstServiceResult?: unknown;
63
+ hasFirstServiceResult: boolean;
58
64
  methodArgs?: unknown[];
59
65
  methodName: string;
60
66
  optionsArgIndex?: number;
61
67
  optionsOverridesByService?: GenericObject<Partial<Options> & DomainBaseAdditionalServiceOptionsOverrides>;
62
68
  };
63
69
  export type DomainUpdateData<Entity> = Partial<Entity>;
64
- export type DomainUpdateOptions<Options = object> = Options & DomainBaseOptions<PersistanceUpdateOptions>;
65
- export type DomainUpdateResult<Entity> = DomainBaseResult<PersistanceUpdateResult<Entity>>;
70
+ export type DomainUpdateOptions<Options = object> = Options & DomainBaseOptions<DataUpdateOptions>;
71
+ export type DomainUpdatePrivateOptions = DataUpdatePrivateOptions;
72
+ export type DomainUpdateResult<Entity> = DomainBaseResult<DataUpdateResult<Entity>>;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DomainPersistanceEntityServiceType = exports.DOMAIN_ENTITY_SERVICE_DEFAULT_METHODS = exports.DomainMethod = void 0;
3
+ exports.DomainDataEntityServiceType = exports.DOMAIN_ENTITY_SERVICE_DEFAULT_METHODS = exports.DomainMethod = void 0;
4
4
  var DomainMethod;
5
5
  (function (DomainMethod) {
6
6
  DomainMethod["BulkCreate"] = "bulkCreate";
@@ -18,9 +18,9 @@ exports.DOMAIN_ENTITY_SERVICE_DEFAULT_METHODS = [
18
18
  DomainMethod.FindOne,
19
19
  DomainMethod.Update
20
20
  ];
21
- var DomainPersistanceEntityServiceType;
22
- (function (DomainPersistanceEntityServiceType) {
23
- DomainPersistanceEntityServiceType["All"] = "all";
24
- DomainPersistanceEntityServiceType["Main"] = "main";
25
- })(DomainPersistanceEntityServiceType || (exports.DomainPersistanceEntityServiceType = DomainPersistanceEntityServiceType = {}));
21
+ var DomainDataEntityServiceType;
22
+ (function (DomainDataEntityServiceType) {
23
+ DomainDataEntityServiceType["All"] = "all";
24
+ DomainDataEntityServiceType["Main"] = "main";
25
+ })(DomainDataEntityServiceType || (exports.DomainDataEntityServiceType = DomainDataEntityServiceType = {}));
26
26
  //# sourceMappingURL=domain.entity.service.definitions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"domain.entity.service.definitions.js","sourceRoot":"","sources":["../../../src/domain/entityService/domain.entity.service.definitions.ts"],"names":[],"mappings":";;;AA+EA,IAAY,YAaX;AAbD,WAAY,YAAY;IAEtB,yCAAyB,CAAA;IAEzB,iCAAiB,CAAA;IAEjB,iCAAiB,CAAA;IAEjB,6BAAa,CAAA;IAEb,mCAAmB,CAAA;IAEnB,iCAAiB,CAAA;AACnB,CAAC,EAbW,YAAY,4BAAZ,YAAY,QAavB;AAEY,QAAA,qCAAqC,GAAG;IACnD,YAAY,CAAC,UAAU;IACvB,YAAY,CAAC,MAAM;IACnB,YAAY,CAAC,MAAM;IACnB,YAAY,CAAC,IAAI;IACjB,YAAY,CAAC,OAAO;IACpB,YAAY,CAAC,MAAM;CACpB,CAAC;AAEF,IAAY,kCAKX;AALD,WAAY,kCAAkC;IAE5C,iDAAW,CAAA;IAEX,mDAAa,CAAA;AACf,CAAC,EALW,kCAAkC,kDAAlC,kCAAkC,QAK7C"}
1
+ {"version":3,"file":"domain.entity.service.definitions.js","sourceRoot":"","sources":["../../../src/domain/entityService/domain.entity.service.definitions.ts"],"names":[],"mappings":";;;AA6FA,IAAY,YAaX;AAbD,WAAY,YAAY;IAEtB,yCAAyB,CAAA;IAEzB,iCAAiB,CAAA;IAEjB,iCAAiB,CAAA;IAEjB,6BAAa,CAAA;IAEb,mCAAmB,CAAA;IAEnB,iCAAiB,CAAA;AACnB,CAAC,EAbW,YAAY,4BAAZ,YAAY,QAavB;AAEY,QAAA,qCAAqC,GAAG;IACnD,YAAY,CAAC,UAAU;IACvB,YAAY,CAAC,MAAM;IACnB,YAAY,CAAC,MAAM;IACnB,YAAY,CAAC,IAAI;IACjB,YAAY,CAAC,OAAO;IACpB,YAAY,CAAC,MAAM;CACpB,CAAC;AAEF,IAAY,2BAKX;AALD,WAAY,2BAA2B;IAErC,0CAAW,CAAA;IAEX,4CAAa,CAAA;AACf,CAAC,EALW,2BAA2B,2CAA3B,2BAA2B,QAKtC"}
@@ -24,15 +24,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
26
  exports.DomainEntityService = void 0;
27
- const immutable_1 = __importDefault(require("immutable"));
28
- const ramda_1 = require("ramda");
27
+ const lodash_1 = __importDefault(require("lodash"));
29
28
  const domain_entity_service_definitions_1 = require("./domain.entity.service.definitions");
30
29
  const definitions_1 = require("../../common/definitions");
31
30
  class DomainEntityService {
32
- constructor(persistanceEntityService, defaultMethods = domain_entity_service_definitions_1.DOMAIN_ENTITY_SERVICE_DEFAULT_METHODS, additionalPersistanceEntityServices) {
33
- this.persistanceEntityService = persistanceEntityService;
31
+ constructor(dataEntityService, defaultMethods = domain_entity_service_definitions_1.DOMAIN_ENTITY_SERVICE_DEFAULT_METHODS, additionalDataEntityServices, defaultAdditionalDataEntityServicesOptions) {
32
+ this.dataEntityService = dataEntityService;
34
33
  this.defaultMethods = defaultMethods;
35
- this.additionalPersistanceEntityServices = additionalPersistanceEntityServices;
34
+ this.additionalDataEntityServices = additionalDataEntityServices;
35
+ this.defaultAdditionalDataEntityServicesOptions = defaultAdditionalDataEntityServicesOptions;
36
36
  }
37
37
  bulkCreate(data, options, privateOptions) {
38
38
  return __awaiter(this, void 0, void 0, function* () {
@@ -40,18 +40,22 @@ class DomainEntityService {
40
40
  if (!((_a = this.defaultMethods) === null || _a === void 0 ? void 0 : _a.includes(domain_entity_service_definitions_1.DomainMethod.BulkCreate))) {
41
41
  throw new definitions_1.ApplicationError(`Method bulkCreate not implemented for class ${typeof this}.`);
42
42
  }
43
- const { optionsOverridesByService, persistanceServices = [domain_entity_service_definitions_1.DomainPersistanceEntityServiceType.Main] } = options || {};
44
- const [firstServiceName, ...otherServiceNames] = persistanceServices;
45
- const result = yield this.getPersistanceService(firstServiceName).bulkCreate(data, privateOptions);
43
+ const { optionsOverridesByService, dataServices = [domain_entity_service_definitions_1.DomainDataEntityServiceType.Main] } = options || {};
44
+ const [firstServiceName, ...otherServiceNames] = dataServices;
45
+ const result = yield this.getDataService(firstServiceName).bulkCreate(data, privateOptions);
46
+ let actualOtherServiceNames = [];
47
+ let actualOptionsOverridesByService = {};
48
+ actualOtherServiceNames = otherServiceNames || [];
49
+ actualOptionsOverridesByService = optionsOverridesByService;
46
50
  return {
47
51
  result,
48
- resultsByService: yield this.runMethodInAdditionalServices(otherServiceNames || [], {
49
- hasMainServiceResult: result.length > 0,
50
- mainServiceResult: result,
52
+ resultsByService: yield this.runMethodInAdditionalServices(actualOtherServiceNames, {
53
+ firstServiceResult: result,
54
+ hasFirstServiceResult: result.length > 0,
51
55
  methodArgs: [result, privateOptions],
52
56
  methodName: 'bulkCreate',
53
57
  optionsArgIndex: 1,
54
- optionsOverridesByService
58
+ optionsOverridesByService: actualOptionsOverridesByService
55
59
  })
56
60
  };
57
61
  });
@@ -62,14 +66,14 @@ class DomainEntityService {
62
66
  if (!((_a = this.defaultMethods) === null || _a === void 0 ? void 0 : _a.includes(domain_entity_service_definitions_1.DomainMethod.Create))) {
63
67
  throw new definitions_1.ApplicationError(`Method create not implemented for class ${typeof this}.`);
64
68
  }
65
- const { optionsOverridesByService, persistanceServices = [domain_entity_service_definitions_1.DomainPersistanceEntityServiceType.Main] } = options || {};
66
- const [firstServiceName, ...otherServiceNames] = persistanceServices;
67
- const result = yield this.getPersistanceService(firstServiceName).create(data, privateOptions);
69
+ const { optionsOverridesByService, dataServices = [domain_entity_service_definitions_1.DomainDataEntityServiceType.Main] } = options || {};
70
+ const [firstServiceName, ...otherServiceNames] = dataServices;
71
+ const result = yield this.getDataService(firstServiceName).create(data, privateOptions);
68
72
  return {
69
73
  result,
70
74
  resultsByService: yield this.runMethodInAdditionalServices(otherServiceNames || [], {
71
- hasMainServiceResult: typeof result !== 'undefined' && result !== null,
72
- mainServiceResult: result,
75
+ firstServiceResult: result,
76
+ hasFirstServiceResult: typeof result !== 'undefined' && result !== null,
73
77
  methodArgs: [result, privateOptions],
74
78
  methodName: 'create',
75
79
  optionsArgIndex: 1,
@@ -84,14 +88,14 @@ class DomainEntityService {
84
88
  if (!((_a = this.defaultMethods) === null || _a === void 0 ? void 0 : _a.includes(domain_entity_service_definitions_1.DomainMethod.Delete))) {
85
89
  throw new definitions_1.ApplicationError(`Method delete not implemented for class ${typeof this}.`);
86
90
  }
87
- const _b = options || {}, { optionsOverridesByService, persistanceServices = [domain_entity_service_definitions_1.DomainPersistanceEntityServiceType.Main] } = _b, otherOptions = __rest(_b, ["optionsOverridesByService", "persistanceServices"]);
88
- const [firstServiceName, ...otherServiceNames] = persistanceServices;
89
- const result = yield this.getPersistanceService(firstServiceName).delete(otherOptions, privateOptions);
91
+ const _b = options || {}, { optionsOverridesByService, dataServices = [domain_entity_service_definitions_1.DomainDataEntityServiceType.Main] } = _b, otherOptions = __rest(_b, ["optionsOverridesByService", "dataServices"]);
92
+ const [firstServiceName, ...otherServiceNames] = dataServices;
93
+ const result = yield this.getDataService(firstServiceName).delete(otherOptions, privateOptions);
90
94
  return {
91
95
  result,
92
96
  resultsByService: yield this.runMethodInAdditionalServices(otherServiceNames || [], {
93
- hasMainServiceResult: !!result.count,
94
- mainServiceResult: result,
97
+ firstServiceResult: Object.assign(Object.assign({}, result), { items: result.originalItems || [] }),
98
+ hasFirstServiceResult: !!result.count,
95
99
  methodArgs: [otherOptions, privateOptions],
96
100
  methodName: 'delete',
97
101
  optionsArgIndex: 0,
@@ -102,28 +106,28 @@ class DomainEntityService {
102
106
  }
103
107
  find(options, privateOptions) {
104
108
  return __awaiter(this, void 0, void 0, function* () {
105
- var _a;
109
+ var _a, _b;
106
110
  if (!((_a = this.defaultMethods) === null || _a === void 0 ? void 0 : _a.includes(domain_entity_service_definitions_1.DomainMethod.Find))) {
107
111
  throw new definitions_1.ApplicationError(`Method find not implemented for class ${typeof this}.`);
108
112
  }
109
- const _b = options || {}, { optionsOverridesByService, persistanceServices = [domain_entity_service_definitions_1.DomainPersistanceEntityServiceType.Main], saveAdditionalResultsInMain } = _b, otherOptions = __rest(_b, ["optionsOverridesByService", "persistanceServices", "saveAdditionalResultsInMain"]);
110
- const [firstServiceName, ...otherServiceNames] = persistanceServices;
111
- let result = yield this.getPersistanceService(firstServiceName).find(otherOptions, privateOptions);
112
- const hasMainServiceResult = result.items.length > 0;
113
+ const _c = options || {}, { optionsOverridesByService, dataServices = [domain_entity_service_definitions_1.DomainDataEntityServiceType.Main], saveAdditionalResultsInFirstService } = _c, otherOptions = __rest(_c, ["optionsOverridesByService", "dataServices", "saveAdditionalResultsInFirstService"]);
114
+ const [firstServiceName, ...otherServiceNames] = dataServices;
115
+ let result = yield this.getDataService(firstServiceName).find(otherOptions, privateOptions);
116
+ const hasFirstServiceResult = result.items.length > 0;
113
117
  const resultsByService = yield this.runMethodInAdditionalServices(otherServiceNames || [], {
114
- hasMainServiceResult,
115
- mainServiceResult: result,
118
+ firstServiceResult: result,
119
+ hasFirstServiceResult,
116
120
  methodArgs: [otherOptions, privateOptions],
117
121
  methodName: 'find',
118
122
  optionsArgIndex: 0,
119
123
  optionsOverridesByService
120
124
  });
121
- if (saveAdditionalResultsInMain && resultsByService) {
122
- const { saveOptions, serviceName, useResultsAsMain } = saveAdditionalResultsInMain;
125
+ if (saveAdditionalResultsInFirstService && resultsByService) {
126
+ const { saveOptions, serviceName, useResultsForFirstService } = saveAdditionalResultsInFirstService;
123
127
  const dataFromAdditionalService = resultsByService[serviceName];
124
- if (dataFromAdditionalService.items.length) {
125
- yield this.persistanceEntityService.bulkCreate(dataFromAdditionalService.items, saveOptions);
126
- if (useResultsAsMain && !hasMainServiceResult) {
128
+ if ((_b = dataFromAdditionalService === null || dataFromAdditionalService === void 0 ? void 0 : dataFromAdditionalService.items) === null || _b === void 0 ? void 0 : _b.length) {
129
+ yield this.dataEntityService.bulkCreate(dataFromAdditionalService.items, saveOptions);
130
+ if (useResultsForFirstService && !hasFirstServiceResult) {
127
131
  result = dataFromAdditionalService;
128
132
  }
129
133
  }
@@ -140,24 +144,24 @@ class DomainEntityService {
140
144
  if (!((_a = this.defaultMethods) === null || _a === void 0 ? void 0 : _a.includes(domain_entity_service_definitions_1.DomainMethod.FindOne))) {
141
145
  throw new definitions_1.ApplicationError(`Method findOne not implemented for class ${typeof this}.`);
142
146
  }
143
- const _b = options || {}, { optionsOverridesByService, persistanceServices = [domain_entity_service_definitions_1.DomainPersistanceEntityServiceType.Main], saveAdditionalResultsInMain } = _b, otherOptions = __rest(_b, ["optionsOverridesByService", "persistanceServices", "saveAdditionalResultsInMain"]);
144
- const [firstServiceName, ...otherServiceNames] = persistanceServices;
145
- let result = yield this.getPersistanceService(firstServiceName).findOne(otherOptions, privateOptions);
146
- const hasMainServiceResult = typeof result !== 'undefined' && result !== null;
147
+ const _b = options || {}, { optionsOverridesByService, dataServices = [domain_entity_service_definitions_1.DomainDataEntityServiceType.Main], saveAdditionalResultsInFirstService } = _b, otherOptions = __rest(_b, ["optionsOverridesByService", "dataServices", "saveAdditionalResultsInFirstService"]);
148
+ const [firstServiceName, ...otherServiceNames] = dataServices;
149
+ let result = yield this.getDataService(firstServiceName).findOne(otherOptions, privateOptions);
150
+ const hasFirstServiceResult = typeof result !== 'undefined' && result !== null;
147
151
  const resultsByService = yield this.runMethodInAdditionalServices(otherServiceNames || [], {
148
- hasMainServiceResult,
149
- mainServiceResult: result,
152
+ firstServiceResult: result,
153
+ hasFirstServiceResult,
150
154
  methodArgs: [otherOptions, privateOptions],
151
155
  methodName: 'findOne',
152
156
  optionsArgIndex: 0,
153
157
  optionsOverridesByService
154
158
  });
155
- if (saveAdditionalResultsInMain && resultsByService) {
156
- const { saveOptions, serviceName, useResultsAsMain } = saveAdditionalResultsInMain;
159
+ if (saveAdditionalResultsInFirstService && resultsByService) {
160
+ const { saveOptions, serviceName, useResultsForFirstService } = saveAdditionalResultsInFirstService;
157
161
  const dataFromAdditionalService = resultsByService[serviceName];
158
162
  if (dataFromAdditionalService) {
159
- yield this.persistanceEntityService.create(dataFromAdditionalService, saveOptions);
160
- if (useResultsAsMain && !hasMainServiceResult) {
163
+ yield this.dataEntityService.create(dataFromAdditionalService, saveOptions);
164
+ if (useResultsForFirstService && !hasFirstServiceResult) {
161
165
  result = dataFromAdditionalService;
162
166
  }
163
167
  }
@@ -168,14 +172,14 @@ class DomainEntityService {
168
172
  };
169
173
  });
170
174
  }
171
- getPersistanceService(serviceName) {
175
+ getDataService(serviceName) {
172
176
  var _a;
173
- if (serviceName === domain_entity_service_definitions_1.DomainPersistanceEntityServiceType.Main) {
174
- return this.persistanceEntityService;
177
+ if (serviceName === domain_entity_service_definitions_1.DomainDataEntityServiceType.Main) {
178
+ return this.dataEntityService;
175
179
  }
176
- const service = (_a = this.additionalPersistanceEntityServices) === null || _a === void 0 ? void 0 : _a[serviceName];
180
+ const service = (_a = this.additionalDataEntityServices) === null || _a === void 0 ? void 0 : _a[serviceName];
177
181
  if (!service) {
178
- throw new definitions_1.ApplicationError(`PersistanceEntityService ${serviceName} does not exist for DomainEntityService ${this.persistanceEntityService.getEntityName()}.`);
182
+ throw new definitions_1.ApplicationError(`DataEntityService ${serviceName} does not exist for DomainEntityService ${this.dataEntityService.getEntityName(true) || '(no entity name)'}.`);
179
183
  }
180
184
  return service;
181
185
  }
@@ -184,27 +188,28 @@ class DomainEntityService {
184
188
  if (!serviceNames.length) {
185
189
  return undefined;
186
190
  }
187
- const { hasMainServiceResult, mainServiceResult, methodArgs = [], methodName, optionsArgIndex, optionsOverridesByService = {} } = options;
191
+ const { firstServiceResult, hasFirstServiceResult, methodArgs = [], methodName, optionsArgIndex, optionsOverridesByService = {} } = options;
188
192
  const returnDataByService = {};
189
- if (!this.additionalPersistanceEntityServices) {
190
- throw new definitions_1.ApplicationError(`No additional PersistanceEntityServices exist for DomainEntityService ${this.persistanceEntityService.getEntityName()}.`);
193
+ if (!this.additionalDataEntityServices) {
194
+ throw new definitions_1.ApplicationError(`No additional DataEntityServices exist for DomainEntityService ${this.dataEntityService.getEntityName(true) || '(no entity name)'}.`);
191
195
  }
192
196
  if (Object.keys(optionsOverridesByService).length &&
193
197
  (typeof optionsArgIndex === 'undefined' || optionsArgIndex < 0 || optionsArgIndex > methodArgs.length - 1)) {
194
- throw new definitions_1.ApplicationError(`Invalid optionsArgIndex value ${optionsArgIndex} provided for DomainEntityService ${this.persistanceEntityService.getEntityName()}.}.`);
198
+ throw new definitions_1.ApplicationError(`Invalid optionsArgIndex value ${optionsArgIndex} provided for DomainEntityService ${this.dataEntityService.getEntityName(true) || '(no entity name)'}.}.`);
195
199
  }
196
200
  for (const i in serviceNames) {
197
201
  const serviceName = serviceNames[i];
198
- const service = this.additionalPersistanceEntityServices[serviceName];
202
+ const service = this.getDataService(serviceName);
199
203
  if (!service) {
200
- throw new definitions_1.ApplicationError(`PersistanceEntityService ${serviceName} does not exist for DomainEntityService ${this.persistanceEntityService.getEntityName()}.`);
204
+ throw new definitions_1.ApplicationError(`DataEntityService ${serviceName} does not exist for DomainEntityService ${this.dataEntityService.getEntityName(true) || '(no entity name)'}.`);
201
205
  }
202
206
  const serviceMethodOptionsOverrides = optionsOverridesByService[serviceName] || {};
203
- const { filterByMainResultFields, runOnNoMainServiceResultOnly = true } = serviceMethodOptionsOverrides, actualMethodOptionsOverrides = __rest(serviceMethodOptionsOverrides, ["filterByMainResultFields", "runOnNoMainServiceResultOnly"]);
204
- if ((runOnNoMainServiceResultOnly === true || runOnNoMainServiceResultOnly === 'true') && hasMainServiceResult) {
207
+ const { filterByFirstServiceResultFields, runOnNoFirstServiceResultOnly = true } = serviceMethodOptionsOverrides, actualMethodOptionsOverrides = __rest(serviceMethodOptionsOverrides, ["filterByFirstServiceResultFields", "runOnNoFirstServiceResultOnly"]);
208
+ if ((runOnNoFirstServiceResultOnly === true || runOnNoFirstServiceResultOnly === 'true') &&
209
+ hasFirstServiceResult) {
205
210
  continue;
206
211
  }
207
- const serviceMethodArgs = immutable_1.default.fromJS(methodArgs).toJS();
212
+ const serviceMethodArgs = lodash_1.default.cloneDeep(methodArgs);
208
213
  if (typeof serviceMethodArgs[optionsArgIndex] === 'undefined') {
209
214
  if (optionsArgIndex > serviceMethodArgs.length - 1) {
210
215
  serviceMethodArgs.push(actualMethodOptionsOverrides);
@@ -216,18 +221,21 @@ class DomainEntityService {
216
221
  else {
217
222
  serviceMethodArgs[optionsArgIndex] = Object.assign(Object.assign({}, serviceMethodArgs[optionsArgIndex]), actualMethodOptionsOverrides);
218
223
  }
219
- if (filterByMainResultFields && Object.keys(filterByMainResultFields).length && hasMainServiceResult) {
224
+ if (filterByFirstServiceResultFields && Object.keys(filterByFirstServiceResultFields).length) {
225
+ if (!hasFirstServiceResult) {
226
+ continue;
227
+ }
220
228
  const filters = {};
221
- const resultItems = mainServiceResult.items || [
222
- mainServiceResult
229
+ const resultItems = firstServiceResult.items || [
230
+ firstServiceResult
223
231
  ];
224
232
  resultItems.forEach(resultItem => {
225
233
  if (!resultItem) {
226
234
  return;
227
235
  }
228
- for (const sourceFieldName in filterByMainResultFields) {
236
+ for (const sourceFieldName in filterByFirstServiceResultFields) {
229
237
  const fieldValue = resultItem[sourceFieldName];
230
- const targetFieldName = filterByMainResultFields[sourceFieldName];
238
+ const targetFieldName = filterByFirstServiceResultFields[sourceFieldName];
231
239
  if (typeof fieldValue === 'undefined') {
232
240
  return;
233
241
  }
@@ -239,7 +247,7 @@ class DomainEntityService {
239
247
  });
240
248
  if (Object.keys(filters).length) {
241
249
  const serviceMethodOptions = serviceMethodArgs[optionsArgIndex];
242
- serviceMethodArgs[optionsArgIndex] = Object.assign(Object.assign({}, serviceMethodOptions), { filters: Object.assign(Object.assign({}, (0, ramda_1.omit)(['page', 'perPage'], serviceMethodOptions.filters || {})), filters), findAll: true });
250
+ serviceMethodArgs[optionsArgIndex] = Object.assign(Object.assign({}, serviceMethodOptions), { filters: Object.assign(Object.assign({}, lodash_1.default.omit(serviceMethodOptions.filters || {}, ['page', 'perPage'])), filters), findAll: true });
243
251
  }
244
252
  }
245
253
  returnDataByService[serviceName] = (yield service[methodName].apply(service, serviceMethodArgs));
@@ -253,14 +261,14 @@ class DomainEntityService {
253
261
  if (!((_a = this.defaultMethods) === null || _a === void 0 ? void 0 : _a.includes(domain_entity_service_definitions_1.DomainMethod.Update))) {
254
262
  throw new definitions_1.ApplicationError(`Method update not implemented for class ${typeof this}.`);
255
263
  }
256
- const { optionsOverridesByService, persistanceServices = [domain_entity_service_definitions_1.DomainPersistanceEntityServiceType.Main] } = options, otherOptions = __rest(options, ["optionsOverridesByService", "persistanceServices"]);
257
- const [firstServiceName, ...otherServiceNames] = persistanceServices;
258
- const result = yield this.getPersistanceService(firstServiceName).update(data, otherOptions, privateOptions);
264
+ const { optionsOverridesByService, dataServices = [domain_entity_service_definitions_1.DomainDataEntityServiceType.Main] } = options, otherOptions = __rest(options, ["optionsOverridesByService", "dataServices"]);
265
+ const [firstServiceName, ...otherServiceNames] = dataServices;
266
+ const result = yield this.getDataService(firstServiceName).update(data, otherOptions, privateOptions);
259
267
  return {
260
268
  result,
261
269
  resultsByService: yield this.runMethodInAdditionalServices(otherServiceNames || [], {
262
- hasMainServiceResult: !!result.count,
263
- mainServiceResult: result,
270
+ firstServiceResult: result,
271
+ hasFirstServiceResult: !!result.count,
264
272
  methodArgs: [data, otherOptions, privateOptions],
265
273
  methodName: 'update',
266
274
  optionsArgIndex: 1,