@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.
- package/build/_collections/global-settings.const.d.ts.map +1 -1
- package/build/_collections/global-settings.const.js +1 -0
- package/build/_collections/global-settings.const.js.map +1 -1
- package/build/_models/control-models/api-call-params.control-model.d.ts.map +1 -1
- package/build/_models/control-models/api-call-params.control-model.js +1 -2
- package/build/_models/control-models/api-call-params.control-model.js.map +1 -1
- package/build/_models/control-models/app-params.control-model.d.ts.map +1 -1
- package/build/_models/control-models/app-params.control-model.js +16 -0
- package/build/_models/control-models/app-params.control-model.js.map +1 -1
- package/build/_models/control-models/endpoint-params.control-model.d.ts.map +1 -1
- package/build/_models/control-models/endpoint-params.control-model.js +1 -2
- package/build/_models/control-models/endpoint-params.control-model.js.map +1 -1
- package/build/_models/interfaces/global-settings.interface.d.ts +4 -0
- package/build/_models/interfaces/global-settings.interface.d.ts.map +1 -1
- package/build/_modules/mock/data-model.mock.spec.js +2 -2
- package/build/_modules/mock/data-model.mock.spec.js.map +1 -1
- package/build/_modules/server/error/error.controller.d.ts +13 -0
- package/build/_modules/server/error/error.controller.d.ts.map +1 -0
- package/build/_modules/server/error/error.controller.js +155 -0
- package/build/_modules/server/error/error.controller.js.map +1 -0
- package/build/_modules/server/error/error.data-service.d.ts +13 -0
- package/build/_modules/server/error/error.data-service.d.ts.map +1 -0
- package/build/_modules/server/error/error.data-service.js +249 -0
- package/build/_modules/server/error/error.data-service.js.map +1 -0
- package/build/_modules/server/index.d.ts +5 -0
- package/build/_modules/server/index.d.ts.map +1 -0
- package/build/_modules/server/index.js +10 -0
- package/build/_modules/server/index.js.map +1 -0
- package/build/_modules/server/server-status/server-status.control-service.d.ts +24 -0
- package/build/_modules/server/server-status/server-status.control-service.d.ts.map +1 -0
- package/build/_modules/server/server-status/server-status.control-service.js +102 -0
- package/build/_modules/server/server-status/server-status.control-service.js.map +1 -0
- package/build/_modules/server/server-status/server-status.controller.d.ts +9 -0
- package/build/_modules/server/server-status/server-status.controller.d.ts.map +1 -0
- package/build/_modules/server/server-status/server-status.controller.js +61 -0
- package/build/_modules/server/server-status/server-status.controller.js.map +1 -0
- package/build/_modules/socket/_services/socket-server.service.d.ts.map +1 -1
- package/build/_modules/socket/_services/socket-server.service.js.map +1 -1
- package/build/_modules/socket/index.d.ts +1 -0
- package/build/_modules/socket/index.d.ts.map +1 -1
- package/build/_modules/socket/index.js +1 -0
- package/build/_modules/socket/index.js.map +1 -1
- package/build/_services/base/data.service.d.ts +18 -10
- package/build/_services/base/data.service.d.ts.map +1 -1
- package/build/_services/base/data.service.js +151 -106
- package/build/_services/base/data.service.js.map +1 -1
- package/build/_services/base/db.service.d.ts +21 -10
- package/build/_services/base/db.service.d.ts.map +1 -1
- package/build/_services/base/db.service.js +79 -47
- package/build/_services/base/db.service.js.map +1 -1
- package/build/_services/core/api.service.d.ts.map +1 -1
- package/build/_services/core/api.service.js +18 -2
- package/build/_services/core/api.service.js.map +1 -1
- package/build/_services/core/global.service.d.ts.map +1 -1
- package/build/_services/core/global.service.js +8 -2
- package/build/_services/core/global.service.js.map +1 -1
- package/build/_services/server/app.server.d.ts.map +1 -1
- package/build/_services/server/app.server.js +13 -1
- package/build/_services/server/app.server.js.map +1 -1
- package/build/index.d.ts +0 -1
- package/build/index.d.ts.map +1 -1
- package/build/index.js +0 -1
- package/build/index.js.map +1 -1
- package/nodemon.json +2 -0
- package/package.json +11 -4
- package/src/_collections/global-settings.const.ts +1 -0
- package/src/_models/control-models/api-call-params.control-model.ts +2 -3
- package/src/_models/control-models/app-params.control-model.ts +25 -0
- package/src/_models/control-models/endpoint-params.control-model.ts +3 -3
- package/src/_models/interfaces/global-settings.interface.ts +5 -0
- package/src/_modules/mock/data-model.mock.spec.ts +2 -2
- package/src/_modules/server/error/error.controller.ts +210 -0
- package/src/_modules/server/error/error.data-service.ts +337 -0
- package/src/_modules/server/index.ts +11 -0
- package/src/_modules/server/server-status/server-status.control-service.ts +217 -0
- package/src/_modules/server/server-status/server-status.controller.ts +90 -0
- package/src/_modules/socket/_services/socket-server.service.ts +0 -1
- package/src/_modules/socket/index.ts +1 -1
- package/src/_services/base/data.service.ts +233 -164
- package/src/_services/base/db.service.ts +105 -60
- package/src/_services/core/api.service.ts +23 -2
- package/src/_services/core/global.service.ts +12 -5
- package/src/_services/server/app.server.ts +17 -4
- package/src/index.ts +0 -1
- package/tsconfig.json +1 -1
- package/build/_collections/stack.util.d.ts +0 -7
- package/build/_collections/stack.util.d.ts.map +0 -1
- package/build/_collections/stack.util.js +0 -31
- package/build/_collections/stack.util.js.map +0 -1
- package/build/_collections/stack.util.test.d.ts +0 -2
- package/build/_collections/stack.util.test.d.ts.map +0 -1
- package/build/_collections/stack.util.test.js +0 -96
- package/build/_collections/stack.util.test.js.map +0 -1
- package/src/_collections/stack.util.test.ts +0 -111
- 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
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
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
|
-
|
|
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,
|
|
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-
|
|
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
|
-
|
|
287
|
-
|
|
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
|
-
|
|
290
|
-
|
|
291
|
-
|
|
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
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
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
|
-
|
|
316
|
-
|
|
317
|
-
|
|
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.
|
|
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-
|
|
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(
|
|
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
|
|
480
|
+
* @param dependencyIds
|
|
400
481
|
*/
|
|
401
|
-
async getDataListByDependencyId(
|
|
482
|
+
async getDataListByDependencyId(
|
|
483
|
+
dependencyIds?: string | { [key: string]: string },
|
|
484
|
+
dontSetToService?: boolean
|
|
485
|
+
): Promise<T[]> {
|
|
402
486
|
try {
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
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
|
-
|
|
444
|
-
|
|
445
|
-
|
|
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 (
|
|
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
|
-
|
|
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 (
|
|
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.
|
|
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.
|
|
793
|
-
if (!data[
|
|
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.
|
|
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.
|
|
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
|
|
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
|
-
)
|
|
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
|
-
|
|
1825
|
-
|
|
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 (!
|
|
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(
|
|
1922
|
+
this.depDataDBService = DyNTS_GlobalService.getDBServiceByKey(dBServiceKey);
|
|
1854
1923
|
|
|
1855
1924
|
return this.depDataDBService;
|
|
1856
1925
|
}
|