@futdevpro/nts-dynamo 1.10.9 → 1.10.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 (95) hide show
  1. package/build/_collections/global-settings.const.d.ts.map +1 -1
  2. package/build/_collections/global-settings.const.js +1 -0
  3. package/build/_collections/global-settings.const.js.map +1 -1
  4. package/build/_models/control-models/api-call-params.control-model.d.ts.map +1 -1
  5. package/build/_models/control-models/api-call-params.control-model.js +1 -2
  6. package/build/_models/control-models/api-call-params.control-model.js.map +1 -1
  7. package/build/_models/control-models/app-params.control-model.d.ts.map +1 -1
  8. package/build/_models/control-models/app-params.control-model.js +16 -0
  9. package/build/_models/control-models/app-params.control-model.js.map +1 -1
  10. package/build/_models/control-models/endpoint-params.control-model.d.ts.map +1 -1
  11. package/build/_models/control-models/endpoint-params.control-model.js +1 -2
  12. package/build/_models/control-models/endpoint-params.control-model.js.map +1 -1
  13. package/build/_models/interfaces/global-settings.interface.d.ts +4 -0
  14. package/build/_models/interfaces/global-settings.interface.d.ts.map +1 -1
  15. package/build/_modules/mock/data-model.mock.spec.js +2 -2
  16. package/build/_modules/mock/data-model.mock.spec.js.map +1 -1
  17. package/build/_modules/server/error/error.controller.d.ts +13 -0
  18. package/build/_modules/server/error/error.controller.d.ts.map +1 -0
  19. package/build/_modules/server/error/error.controller.js +155 -0
  20. package/build/_modules/server/error/error.controller.js.map +1 -0
  21. package/build/_modules/server/error/error.data-service.d.ts +13 -0
  22. package/build/_modules/server/error/error.data-service.d.ts.map +1 -0
  23. package/build/_modules/server/error/error.data-service.js +249 -0
  24. package/build/_modules/server/error/error.data-service.js.map +1 -0
  25. package/build/_modules/server/index.d.ts +5 -0
  26. package/build/_modules/server/index.d.ts.map +1 -0
  27. package/build/_modules/server/index.js +10 -0
  28. package/build/_modules/server/index.js.map +1 -0
  29. package/build/_modules/server/server-status/server-status.control-service.d.ts +24 -0
  30. package/build/_modules/server/server-status/server-status.control-service.d.ts.map +1 -0
  31. package/build/_modules/server/server-status/server-status.control-service.js +102 -0
  32. package/build/_modules/server/server-status/server-status.control-service.js.map +1 -0
  33. package/build/_modules/server/server-status/server-status.controller.d.ts +9 -0
  34. package/build/_modules/server/server-status/server-status.controller.d.ts.map +1 -0
  35. package/build/_modules/server/server-status/server-status.controller.js +61 -0
  36. package/build/_modules/server/server-status/server-status.controller.js.map +1 -0
  37. package/build/_modules/socket/_services/socket-server.service.d.ts.map +1 -1
  38. package/build/_modules/socket/_services/socket-server.service.js.map +1 -1
  39. package/build/_modules/socket/index.d.ts +1 -0
  40. package/build/_modules/socket/index.d.ts.map +1 -1
  41. package/build/_modules/socket/index.js +1 -0
  42. package/build/_modules/socket/index.js.map +1 -1
  43. package/build/_services/base/data.service.d.ts +18 -10
  44. package/build/_services/base/data.service.d.ts.map +1 -1
  45. package/build/_services/base/data.service.js +151 -106
  46. package/build/_services/base/data.service.js.map +1 -1
  47. package/build/_services/base/db.service.d.ts +21 -10
  48. package/build/_services/base/db.service.d.ts.map +1 -1
  49. package/build/_services/base/db.service.js +79 -47
  50. package/build/_services/base/db.service.js.map +1 -1
  51. package/build/_services/core/api.service.d.ts.map +1 -1
  52. package/build/_services/core/api.service.js +18 -2
  53. package/build/_services/core/api.service.js.map +1 -1
  54. package/build/_services/core/global.service.d.ts.map +1 -1
  55. package/build/_services/core/global.service.js +8 -2
  56. package/build/_services/core/global.service.js.map +1 -1
  57. package/build/_services/server/app.server.d.ts.map +1 -1
  58. package/build/_services/server/app.server.js +13 -1
  59. package/build/_services/server/app.server.js.map +1 -1
  60. package/build/index.d.ts +0 -1
  61. package/build/index.d.ts.map +1 -1
  62. package/build/index.js +0 -1
  63. package/build/index.js.map +1 -1
  64. package/nodemon.json +2 -0
  65. package/package.json +11 -4
  66. package/src/_collections/global-settings.const.ts +1 -0
  67. package/src/_models/control-models/api-call-params.control-model.ts +2 -3
  68. package/src/_models/control-models/app-params.control-model.ts +25 -0
  69. package/src/_models/control-models/endpoint-params.control-model.ts +3 -3
  70. package/src/_models/interfaces/global-settings.interface.ts +5 -0
  71. package/src/_modules/mock/data-model.mock.spec.ts +2 -2
  72. package/src/_modules/server/error/error.controller.ts +210 -0
  73. package/src/_modules/server/error/error.data-service.ts +337 -0
  74. package/src/_modules/server/index.ts +11 -0
  75. package/src/_modules/server/server-status/server-status.control-service.ts +217 -0
  76. package/src/_modules/server/server-status/server-status.controller.ts +90 -0
  77. package/src/_modules/socket/_services/socket-server.service.ts +0 -1
  78. package/src/_modules/socket/index.ts +1 -1
  79. package/src/_services/base/data.service.ts +233 -164
  80. package/src/_services/base/db.service.ts +105 -60
  81. package/src/_services/core/api.service.ts +23 -2
  82. package/src/_services/core/global.service.ts +12 -5
  83. package/src/_services/server/app.server.ts +17 -4
  84. package/src/index.ts +0 -1
  85. package/tsconfig.json +1 -1
  86. package/build/_collections/stack.util.d.ts +0 -7
  87. package/build/_collections/stack.util.d.ts.map +0 -1
  88. package/build/_collections/stack.util.js +0 -31
  89. package/build/_collections/stack.util.js.map +0 -1
  90. package/build/_collections/stack.util.test.d.ts +0 -2
  91. package/build/_collections/stack.util.test.d.ts.map +0 -1
  92. package/build/_collections/stack.util.test.js +0 -96
  93. package/build/_collections/stack.util.test.js.map +0 -1
  94. package/src/_collections/stack.util.test.ts +0 -111
  95. package/src/_collections/stack.util.ts +0 -33
@@ -61,10 +61,16 @@ export class DyNTS_DataService<T extends DyFM_Metadata> {
61
61
  dataList: T[] = [];
62
62
  issuer: string;
63
63
 
64
- depKey?: string;
65
- depDBServiceKey?: string;
66
- depKeyIsUnique?: boolean;
67
- depKeyIsRequired?: boolean;
64
+ readonly depSettings: {
65
+ key: string;
66
+ dbServiceKey: string;
67
+ keyIsUnique: boolean;
68
+ keyIsRequired: boolean;
69
+ }[] = [];
70
+ /* depKeys: string[] = [];
71
+ depDBServiceKeys: string[] = [];
72
+ depKeyIsUnique: boolean[] = [];
73
+ depKeyIsRequired: boolean[] = []; */
68
74
  private depDataDBService: DyNTS_DBService<any>;
69
75
 
70
76
  dataParams: DyFM_DataModel_Params<T>;
@@ -261,63 +267,116 @@ export class DyNTS_DataService<T extends DyFM_Metadata> {
261
267
  });
262
268
  }
263
269
  }
264
-
265
- /**
266
- * returns data from database by dependencyId to the service
267
- * (using id from service.data, if not provided)
268
- * @param dependencyId
269
- */
270
- async getDataByDependencyId(dependencyId?: string, dontSetToService?: boolean): Promise<T> {
270
+
271
+ async getDataListByIds(ids: string[], dontSetToService?: boolean): Promise<T[]> {
271
272
  try {
272
- if (!this.depKey) {
273
+ const dataList: T[] = await this.dataDBService.getDataListByIds(ids);
274
+
275
+ if (!dontSetToService) {
276
+ this.dataList = dataList;
277
+ }
278
+
279
+ return dataList;
280
+ } catch (error) {
281
+ throw new DyFM_Error({
282
+ ...this._getDefaultErrorSettings('getDataListByIds', error),
283
+
284
+ errorCode: 'NTS-DS0-GIL0',
285
+ });
286
+ }
287
+ }
288
+
289
+ private getDependencyIdsFilter(
290
+ dependencyIds?: string | { [key: string]: string }
291
+ ): { [key: string]: string } {
292
+ if (!this.depSettings.length) {
293
+ throw new DyFM_Error({
294
+ ...this._getDefaultErrorSettings(
295
+ 'getDataByDependencyId',
296
+ new Error(
297
+ `getDataByDependencyId failed, dependencyKey is missing from service! ` +
298
+ `(${this.dataParams.dataName})`
299
+ )
300
+ ),
301
+
302
+ errorCode: 'NTS-DS0-GD1',
303
+ });
304
+ }
305
+
306
+ if (typeof dependencyIds === 'string') {
307
+ if (this.depSettings.length === 1) {
308
+ dependencyIds = { [this.depSettings[0].key]: dependencyIds };
309
+ } else if (this.depSettings.length > 1) {
273
310
  throw new DyFM_Error({
274
311
  ...this._getDefaultErrorSettings(
275
312
  'getDataByDependencyId',
276
313
  new Error(
277
- `getDataByDependencyId failed, dependencyKey is missing from service! ` +
314
+ `getDataByDependencyId failed, there are multiple dependencyKeys, ` +
315
+ `so you need to provide a map of dependencyKeys! ` +
278
316
  `(${this.dataParams.dataName})`
279
317
  )
280
318
  ),
281
-
282
- errorCode: 'NTS-DS0-GD1',
319
+
320
+ errorCode: 'NTS-DS0-GD2',
283
321
  });
284
322
  }
323
+ } else if (!dependencyIds) {
324
+ dependencyIds = {};
325
+ this.depSettings.forEach((depSetting) => {
326
+ if (this.data?.[depSetting.key]) {
327
+ dependencyIds[depSetting.key] = this.data?.[depSetting.key];
328
+ }
329
+ });
330
+ }
285
331
 
286
- if (!dependencyId) {
287
- dependencyId = this.data?.[this.depKey];
332
+ if (
333
+ !dependencyIds ||
334
+ this.depSettings.every((depSetting) => !dependencyIds[depSetting.key])
335
+ ) {
336
+ throw new DyFM_Error({
337
+ ...this._getDefaultErrorSettings(
338
+ 'getDataByDependencyId',
339
+ new Error(
340
+ `getDataByDependencyId failed, dependencyId is missing! ` +
341
+ `(${this.dataParams.dataName})`
342
+ )
343
+ ),
288
344
 
289
- if (!dependencyId) {
290
- throw new DyFM_Error({
291
- ...this._getDefaultErrorSettings(
292
- 'getDataByDependencyId',
293
- new Error(
294
- `getDataByDependencyId failed, "${this.depKey}" is missing! ` +
295
- `(${this.dataParams.dataName})`
296
- )
297
- ),
298
-
299
- errorCode: 'NTS-DS0-GD2',
300
- additionalContent: {
301
- data: this.data,
302
- },
303
- });
304
- }
305
- }
345
+ errorCode: 'NTS-DS0-GD3',
346
+ });
347
+ }
306
348
 
307
- const dataExists: T = await this.dataDBService.getDataByDependencyId(dependencyId).catch(
308
- (error): null => {
309
- if (error?.errorCode === 'NTS-DBS-GD2') {
310
- DyFM_Log.warn(
311
- `getDataByDependencyId failed; "${this.dataParams.dataName}" ` +
312
- `(${this.depKey}: ${dependencyId ?? this.data[this.depKey]}) didn't found any.`
313
- );
349
+ return dependencyIds as { [key: string]: string };
350
+ }
351
+
352
+ /**
353
+ * returns data from database by dependencyId to the service
354
+ * (using id from service.data, if not provided)
355
+ * @param dependencyIds
356
+ */
357
+ async getDataByDependencyId(
358
+ dependencyIds?: string | { [key: string]: string },
359
+ dontSetToService?: boolean
360
+ ): Promise<T> {
361
+ try {
362
+ const dependencyIdsFilter: { [key: string]: string } =
363
+ this.getDependencyIdsFilter(dependencyIds);
364
+
365
+ const dataExists: T =
366
+ await this.dataDBService.getDataByDependencyId(dependencyIdsFilter).catch(
367
+ (error): null => {
368
+ if (error?.errorCode === 'NTS-DBS-GD2') {
369
+ DyFM_Log.warn(
370
+ `getDataByDependencyId failed; "${this.dataParams.dataName}" ` +
371
+ `(${JSON.stringify(dependencyIds)}) didn't found any.`
372
+ );
314
373
 
315
- return null;
316
- } else {
317
- throw error;
374
+ return null;
375
+ } else {
376
+ throw error;
377
+ }
318
378
  }
319
- }
320
- );
379
+ );
321
380
 
322
381
  if (!dontSetToService) {
323
382
  this.data = dataExists;
@@ -339,10 +398,11 @@ export class DyNTS_DataService<T extends DyFM_Metadata> {
339
398
 
340
399
  async getDataListByDependencyIds(
341
400
  dependencyIds: string[],
342
- dontSetToService?: boolean
401
+ dontSetToService?: boolean,
402
+ dependencyKey?: string,
343
403
  ): Promise<T[]> {
344
404
  try {
345
- if (!this.depKey) {
405
+ if (!this.depSettings.length) {
346
406
  throw new DyFM_Error({
347
407
  ...this._getDefaultErrorSettings(
348
408
  'getDataListByDependencyIds',
@@ -356,6 +416,25 @@ export class DyNTS_DataService<T extends DyFM_Metadata> {
356
416
  });
357
417
  }
358
418
 
419
+ if (!dependencyKey) {
420
+ if (this.depSettings.length === 1) {
421
+ dependencyKey = this.depSettings[0].key;
422
+ } else {
423
+ throw new DyFM_Error({
424
+ ...this._getDefaultErrorSettings(
425
+ 'getDataListByDependencyIds',
426
+ new Error(
427
+ `getDataListByDependencyIds failed, dependencyKey is missing! ` +
428
+ `since there are multiple dependencyKeys, you need to provide one! ` +
429
+ `(${this.dataParams.dataName})`
430
+ )
431
+ ),
432
+
433
+ errorCode: 'NTS-DS0-GDS2',
434
+ });
435
+ }
436
+ }
437
+
359
438
  if (!dependencyIds) {
360
439
  throw new DyFM_Error({
361
440
  ...this._getDefaultErrorSettings(
@@ -366,7 +445,7 @@ export class DyNTS_DataService<T extends DyFM_Metadata> {
366
445
  )
367
446
  ),
368
447
 
369
- errorCode: 'NTS-DS0-GDS2',
448
+ errorCode: 'NTS-DS0-GDS3',
370
449
  });
371
450
  }
372
451
 
@@ -374,7 +453,9 @@ export class DyNTS_DataService<T extends DyFM_Metadata> {
374
453
  return [];
375
454
  }
376
455
 
377
- const dataList: T[] = await this.dataDBService.getDataListByDependencyIds(dependencyIds);
456
+ const dataList: T[] = await this.dataDBService.getDataListByDependencyIds(
457
+ dependencyKey, dependencyIds
458
+ );
378
459
 
379
460
  if (!dontSetToService) {
380
461
  this.dataList = dataList;
@@ -396,55 +477,31 @@ export class DyNTS_DataService<T extends DyFM_Metadata> {
396
477
 
397
478
  /**
398
479
  * returns dataList from database by dependencyId to the service
399
- * @param dependencyId
480
+ * @param dependencyIds
400
481
  */
401
- async getDataListByDependencyId(dependencyId?: string, dontSetToService?: boolean): Promise<T[]> {
482
+ async getDataListByDependencyId(
483
+ dependencyIds?: string | { [key: string]: string },
484
+ dontSetToService?: boolean
485
+ ): Promise<T[]> {
402
486
  try {
403
- if (!this.depKey) {
404
- throw new DyFM_Error({
405
- ...this._getDefaultErrorSettings(
406
- 'getDataListByDependencyId',
407
- new Error(
408
- `getDataListByDependencyId failed, dependencyKey is missing from service! ` +
409
- `(${this.dataParams.dataName})`
410
- )
411
- ),
412
-
413
- errorCode: 'NTS-DS0-GLD1',
414
- });
415
- }
416
-
417
- if (!dependencyId && !this.data[this.depKey]) {
418
- throw new DyFM_Error({
419
- ...this._getDefaultErrorSettings(
420
- 'getDataListByDependencyId',
421
- new Error(
422
- `getDataListByDependencyId failed, "${this.depKey}" is missing! ` +
423
- `(${this.dataParams.dataName})`
424
- )
425
- ),
426
-
427
- errorCode: 'NTS-DS0-GLD2',
428
- additionalContent: {
429
- data: this.data,
430
- },
431
- });
432
- }
433
-
434
- const dataListExists: T[] = await this.dataDBService.getDataListByDependencyId(
435
- dependencyId ?? this.data[this.depKey]
436
- ).catch((error): T[] => {
437
- if (error?.errorCode === 'NTS-DBS-GLD2') {
438
- DyFM_Log.warn(
439
- `getDataListByDependencyId "${this.dataParams.dataName}" ` +
440
- `(${this.depKey}: "${dependencyId ?? this.data[this.depKey]}") didn't found any.`
441
- );
487
+ const dependencyIdsFilter: { [key: string]: string } =
488
+ this.getDependencyIdsFilter(dependencyIds);
489
+
490
+ const dataListExists: T[] =
491
+ await this.dataDBService.getDataListByDependencyId(dependencyIdsFilter).catch(
492
+ (error): T[] => {
493
+ if (error?.errorCode === 'NTS-DBS-GLD2') {
494
+ DyFM_Log.warn(
495
+ `getDataListByDependencyId "${this.dataParams.dataName}" ` +
496
+ `(${JSON.stringify(dependencyIdsFilter)}) didn't found any.`
497
+ );
442
498
 
443
- return [];
444
- } else {
445
- throw error;
446
- }
447
- });
499
+ return [];
500
+ } else {
501
+ throw error;
502
+ }
503
+ }
504
+ );
448
505
 
449
506
  if (!dontSetToService) {
450
507
  this.dataList = dataListExists;
@@ -654,9 +711,20 @@ export class DyNTS_DataService<T extends DyFM_Metadata> {
654
711
  dontUpdateModified
655
712
  );
656
713
 
657
- } else if (this.depKey && this.data[this.depKey]) {
714
+ } else if (
715
+ this.depSettings.length &&
716
+ this.depSettings.some((depSetting) => this.data[depSetting.key])
717
+ ) {
718
+ const dependencyIdsFilter: { [key: string]: string } = {};
719
+
720
+ this.depSettings.forEach((depSetting) => {
721
+ if (this.data[depSetting.key]) {
722
+ dependencyIdsFilter[depSetting.key] = this.data[depSetting.key];
723
+ }
724
+ });
725
+
658
726
  await this.dataDBService.updateOne(
659
- { [this.depKey]: this.data[this.depKey] } as DyFM_DBFilter<T>,
727
+ dependencyIdsFilter as DyFM_DBFilter<T>,
660
728
  set.update,
661
729
  this.issuer,
662
730
  dontUpdateModified
@@ -729,13 +797,17 @@ export class DyNTS_DataService<T extends DyFM_Metadata> {
729
797
  await this.validateForSave(data);
730
798
 
731
799
  if (!data._id) {
732
- if (this.depKey && !data[this.depKey]) {
800
+ if (
801
+ this.depSettings.length &&
802
+ this.depSettings.some((depSetting) => !data[depSetting.key])
803
+ ) {
733
804
  throw new DyFM_Error({
734
805
  ...this._getDefaultErrorSettings(
735
806
  'saveData',
736
807
  new Error(
737
808
  `saveData was unsuccessful: dependency data id missing from data ` +
738
- `(key: ${this.depKey}, ${this.dataParams.dataName})`
809
+ `(key: ${this.depSettings.map((depSetting) => depSetting.key).join(', ')}, ` +
810
+ `${this.dataParams.dataName})`
739
811
  )
740
812
  ),
741
813
 
@@ -789,14 +861,15 @@ export class DyNTS_DataService<T extends DyFM_Metadata> {
789
861
  return data;
790
862
  }
791
863
 
792
- if (this.depKey) {
793
- if (!data[this.depKey]) {
864
+ if (this.depSettings.length) {
865
+ if (this.depSettings.some((depSetting) => !data[depSetting.key])) {
794
866
  throw new DyFM_Error({
795
867
  ...this._getDefaultErrorSettings(
796
868
  'saveData',
797
869
  new Error(
798
870
  `saveData was unsuccessful: dependency data id missing from data ` +
799
- `(key: ${this.depKey}, ${this.dataParams.dataName})`
871
+ `(key: ${this.depSettings.map((depSetting) => depSetting.key).join(', ')}, ` +
872
+ `${this.dataParams.dataName})`
800
873
  )
801
874
  ),
802
875
 
@@ -807,8 +880,51 @@ export class DyNTS_DataService<T extends DyFM_Metadata> {
807
880
  });
808
881
  }
809
882
 
883
+ if (this.depSettings.some((depSetting) => depSetting.keyIsRequired)) {
884
+ await DyFM_Array.asyncForEach(
885
+ this.depSettings,
886
+ async (depSetting) => {
887
+ if (depSetting.keyIsRequired) {
888
+ if (!data[depSetting.key]) {
889
+ throw new DyFM_Error({
890
+ ...this._getDefaultErrorSettings(
891
+ 'saveData',
892
+ new Error(
893
+ `saveData was unsuccessful: dependency data id missing from data ` +
894
+ `(key: ${depSetting.key}, ${this.dataParams.dataName})`
895
+ )
896
+ ),
897
+
898
+ errorCode: 'NTS-DS0-SD4',
899
+ });
900
+ }
901
+
902
+ const dependencyExists = await this.getDependencyDataDBService(depSetting.dbServiceKey)
903
+ .getDataById(data[depSetting.key])
904
+ .catch();
905
+
906
+ if (!dependencyExists) {
907
+ throw new DyFM_Error({
908
+ ...this._getDefaultErrorSettings(
909
+ 'saveData',
910
+ new Error(
911
+ `saveData was unsuccessful: dependency data not exists ` +
912
+ `(key: ${depSetting.key}, id: "${data[depSetting.key]}", ` +
913
+ `${this.dataParams.dataName})`
914
+ )
915
+ ),
916
+
917
+ errorCode: 'NTS-DS0-SD4',
918
+ });
919
+ }
920
+ }
921
+ }
922
+ );
923
+ }
924
+
925
+ /* the db is handling the unique key, so no need to check it here
810
926
  if (this.depKeyIsUnique) {
811
- dataExists = await this.getDataByDependencyId(data[this.depKey], true);
927
+ dataExists = await this.getDataByDependencyId(data[this.depKeys], true);
812
928
 
813
929
  if (dataExists) {
814
930
  // if data exists do modify
@@ -820,28 +936,8 @@ export class DyNTS_DataService<T extends DyFM_Metadata> {
820
936
 
821
937
  return data;
822
938
 
823
- } else if (this.depKeyIsRequired) {
824
- // if data not exists check that dependency already exists for this
825
- const dependencyExists = await this.getDependencyDataDBService()
826
- .getDataById(data[this.depKey])
827
- .catch();
828
-
829
- if (!dependencyExists) {
830
- throw new DyFM_Error({
831
- ...this._getDefaultErrorSettings(
832
- 'saveData',
833
- new Error(
834
- `saveData was unsuccessful: dependency data not exists ` +
835
- `(key: ${this.depKey}, id: "${data[this.depKey]}", ` +
836
- `${this.dataParams.dataName})`
837
- )
838
- ),
839
-
840
- errorCode: 'NTS-DS0-SD4',
841
- });
842
- }
843
939
  }
844
- }
940
+ } */
845
941
  }
846
942
 
847
943
  // if data not exists create new data
@@ -1785,59 +1881,32 @@ export class DyNTS_DataService<T extends DyFM_Metadata> {
1785
1881
  * setting up dependency dataHook by DynamoBEDataModelParams
1786
1882
  */
1787
1883
  private lookForDependencyDataSettings(): void {
1788
- const dependencyParam: DyFM_DataProperty_Params<any> =
1789
- Object.values(this.dataParams.properties).find(
1790
- (modelParams: DyFM_DataProperty_Params<any>): boolean =>
1791
- Boolean(modelParams.dependencyDataName)
1792
- );
1793
-
1794
- if (
1884
+ const dependencyParams: DyFM_DataProperty_Params<any>[] =
1795
1885
  Object.values(this.dataParams.properties).filter(
1796
1886
  (modelParams: DyFM_DataProperty_Params<any>): boolean =>
1797
1887
  Boolean(modelParams.dependencyDataName)
1798
- ).length > 1
1799
- ) {
1800
- throw new DyFM_Error({
1801
- ...this._getDefaultErrorSettings(
1802
- 'lookForDependencyDataSettings',
1803
- new Error(
1804
- `Multiple "dependencyDataName" found for this dataModel (${this.dataParams.dataName}) ` +
1805
- `(NTS DataService)` +
1806
- `\nSorry, but this is not supported yet! (Donate to Dynamo to get this feature!)`
1807
- )
1808
- ),
1809
- errorCode: 'NTS-DS0-LFDD0',
1810
- });
1811
- }
1812
-
1813
- if (dependencyParam) {
1814
- this.depKey = dependencyParam.key;
1815
-
1816
- if (dependencyParam.dependencyDataName) {
1817
- this.depDBServiceKey = dependencyParam.dependencyDataName;
1818
- }
1819
-
1820
- if (dependencyParam.unique) {
1821
- this.depKeyIsUnique = true;
1822
- }
1888
+ );
1823
1889
 
1824
- if (dependencyParam.required) {
1825
- this.depKeyIsRequired = true;
1826
- }
1827
- }
1890
+ this.depSettings.push(...dependencyParams.map((dependencyParams) => ({
1891
+ key: dependencyParams.key,
1892
+ dbServiceKey: dependencyParams.dependencyDataName,
1893
+ keyIsUnique: dependencyParams.unique,
1894
+ keyIsRequired: dependencyParams.required,
1895
+ })));
1828
1896
  }
1829
1897
 
1830
1898
  /**
1831
1899
  *
1832
1900
  * @returns
1833
1901
  */
1834
- getDependencyDataDBService(): DyNTS_DBService<any> {
1835
- if (!this.depDBServiceKey) {
1902
+ getDependencyDataDBService(dBServiceKey: string): DyNTS_DBService<any> {
1903
+ if (!dBServiceKey) {
1836
1904
  throw new DyFM_Error({
1837
1905
  ...this._getDefaultErrorSettings(
1838
1906
  'getDependencyDataDBService',
1839
1907
  new Error(
1840
1908
  `getDependencyDataDBService was unsuccessful, service key not setted up! ` +
1909
+ `(key: ${this.depSettings.map((depSetting) => depSetting.key).join(', ')}, ` +
1841
1910
  `(${this.dataParams.dataName})`
1842
1911
  )
1843
1912
  ),
@@ -1850,7 +1919,7 @@ export class DyNTS_DataService<T extends DyFM_Metadata> {
1850
1919
  if (this.depDataDBService) {
1851
1920
  return this.depDataDBService;
1852
1921
  } else {
1853
- this.depDataDBService = DyNTS_GlobalService.getDBServiceByKey(this.depDBServiceKey);
1922
+ this.depDataDBService = DyNTS_GlobalService.getDBServiceByKey(dBServiceKey);
1854
1923
 
1855
1924
  return this.depDataDBService;
1856
1925
  }