@futdevpro/nts-dynamo 1.10.55 → 1.10.57
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/_models/control-models/endpoint-params.control-model.d.ts +23 -0
- package/build/_models/control-models/endpoint-params.control-model.d.ts.map +1 -1
- package/build/_models/control-models/endpoint-params.control-model.js +23 -0
- package/build/_models/control-models/endpoint-params.control-model.js.map +1 -1
- package/build/_modules/socket/app-extended.server.d.ts.map +1 -1
- package/build/_modules/socket/app-extended.server.js +2 -0
- package/build/_modules/socket/app-extended.server.js.map +1 -1
- package/build/_services/base/api.service-base.d.ts +13 -0
- package/build/_services/base/api.service-base.d.ts.map +1 -0
- package/build/_services/base/api.service-base.js +27 -0
- package/build/_services/base/api.service-base.js.map +1 -0
- package/build/_services/base/db.service.d.ts +2 -0
- package/build/_services/base/db.service.d.ts.map +1 -1
- package/build/_services/base/db.service.js +55 -0
- 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 +5 -1
- package/build/_services/core/api.service.js.map +1 -1
- package/build/_services/core/global.service.js +1 -1
- package/build/_services/core/global.service.js.map +1 -1
- package/build/_services/route/controller.service.d.ts +2 -0
- package/build/_services/route/controller.service.d.ts.map +1 -1
- package/build/_services/route/controller.service.js +2 -0
- package/build/_services/route/controller.service.js.map +1 -1
- package/build/_services/route/routing-module.service.d.ts +2 -0
- package/build/_services/route/routing-module.service.d.ts.map +1 -1
- package/build/_services/route/routing-module.service.js +2 -0
- package/build/_services/route/routing-module.service.js.map +1 -1
- package/build/_services/server/app.server.d.ts.map +1 -1
- package/build/_services/server/app.server.js +12 -0
- package/build/_services/server/app.server.js.map +1 -1
- package/package.json +3 -3
- package/src/_models/control-models/endpoint-params.control-model.ts +23 -2
- package/src/_modules/socket/app-extended.server.ts +2 -0
- package/src/_services/base/api.service-base.ts +40 -0
- package/src/_services/base/db.service.ts +65 -0
- package/src/_services/core/api.service.ts +5 -1
- package/src/_services/core/global.service.ts +2 -2
- package/src/_services/route/controller.service.ts +2 -0
- package/src/_services/route/routing-module.service.ts +2 -0
- package/src/_services/server/app.server.ts +20 -0
|
@@ -132,6 +132,10 @@ export class DyNTS_DBService<T extends DyFM_Metadata> {
|
|
|
132
132
|
* @returns data
|
|
133
133
|
*/
|
|
134
134
|
async modifyData(data: T, issuer: string, dontUpdateModified?: boolean): Promise<T> {
|
|
135
|
+
if (this.dataParams.forbidModify) {
|
|
136
|
+
await this.modifyThrowMethod(data, issuer);
|
|
137
|
+
}
|
|
138
|
+
|
|
135
139
|
if (!dontUpdateModified) {
|
|
136
140
|
data.__lastModified = new Date();
|
|
137
141
|
data.__lastModifiedBy = issuer;
|
|
@@ -172,6 +176,7 @@ export class DyNTS_DBService<T extends DyFM_Metadata> {
|
|
|
172
176
|
return this.stringifyDataId(data, 'modifyData');
|
|
173
177
|
}
|
|
174
178
|
|
|
179
|
+
// TODO: Missing issuer
|
|
175
180
|
/**
|
|
176
181
|
* returns data by _id,
|
|
177
182
|
* @param id id
|
|
@@ -202,6 +207,7 @@ export class DyNTS_DBService<T extends DyFM_Metadata> {
|
|
|
202
207
|
return this.stringifyDataId(data, 'getDataById');
|
|
203
208
|
}
|
|
204
209
|
|
|
210
|
+
// TODO: Missing issuer
|
|
205
211
|
/**
|
|
206
212
|
* get data by dependency data id,
|
|
207
213
|
* !!!: throws error if not found (errorCode on not found: NTS-DBS-GD2)
|
|
@@ -241,6 +247,7 @@ export class DyNTS_DBService<T extends DyFM_Metadata> {
|
|
|
241
247
|
return this.stringifyDataId(data, 'getDataByDependencyId');
|
|
242
248
|
}
|
|
243
249
|
|
|
250
|
+
// TODO: Missing issuer
|
|
244
251
|
async getDataListByIds(ids: string[]): Promise<T[]> {
|
|
245
252
|
const dataList: T[] = await this.dataModel
|
|
246
253
|
.find({ _id: { $in: ids } })
|
|
@@ -260,6 +267,7 @@ export class DyNTS_DBService<T extends DyFM_Metadata> {
|
|
|
260
267
|
);
|
|
261
268
|
}
|
|
262
269
|
|
|
270
|
+
// TODO: Missing issuer
|
|
263
271
|
/**
|
|
264
272
|
* get data by dependency data id,
|
|
265
273
|
* !!!: throws error if not found (errorCode on not found: NTS-DBS-GLD2)
|
|
@@ -305,6 +313,7 @@ export class DyNTS_DBService<T extends DyFM_Metadata> {
|
|
|
305
313
|
);
|
|
306
314
|
}
|
|
307
315
|
|
|
316
|
+
// TODO: Missing issuer
|
|
308
317
|
/**
|
|
309
318
|
* get multiple data objects by a list of DependencyIDs,
|
|
310
319
|
* !!!: throws error if not found (errorCode on not found: NTS-DBS-GLDS2)
|
|
@@ -370,6 +379,7 @@ export class DyNTS_DBService<T extends DyFM_Metadata> {
|
|
|
370
379
|
);
|
|
371
380
|
}
|
|
372
381
|
|
|
382
|
+
// TODO: Missing issuer
|
|
373
383
|
/**
|
|
374
384
|
* returns all data from database,
|
|
375
385
|
* !!!: throws error if not found (errorCode on not found: NTS-DBS-GA1)
|
|
@@ -397,6 +407,10 @@ export class DyNTS_DBService<T extends DyFM_Metadata> {
|
|
|
397
407
|
}
|
|
398
408
|
|
|
399
409
|
async markDeletedById(id: string, issuer: string): Promise<void> {
|
|
410
|
+
if (this.dataParams.forbidDelete) {
|
|
411
|
+
await this.deleteThrowMethod(id, issuer);
|
|
412
|
+
}
|
|
413
|
+
|
|
400
414
|
await this.dataModel.findByIdAndUpdate(
|
|
401
415
|
id,
|
|
402
416
|
{
|
|
@@ -419,6 +433,10 @@ export class DyNTS_DBService<T extends DyFM_Metadata> {
|
|
|
419
433
|
}
|
|
420
434
|
|
|
421
435
|
async markDeletedByDependencyId(dependencyIdsFilter: { [key: string]: string }, issuer: string): Promise<void> {
|
|
436
|
+
if (this.dataParams.forbidDelete) {
|
|
437
|
+
await this.deleteThrowMethod(dependencyIdsFilter, issuer);
|
|
438
|
+
}
|
|
439
|
+
|
|
422
440
|
await this.dataModel.updateMany(
|
|
423
441
|
dependencyIdsFilter,
|
|
424
442
|
{
|
|
@@ -484,6 +502,7 @@ export class DyNTS_DBService<T extends DyFM_Metadata> {
|
|
|
484
502
|
});
|
|
485
503
|
}
|
|
486
504
|
|
|
505
|
+
// TODO: Missing issuer
|
|
487
506
|
async getDeletedDataList(): Promise<T[]> {
|
|
488
507
|
const dataList: T[] = await this.dataModel
|
|
489
508
|
.getAll()
|
|
@@ -501,11 +520,16 @@ export class DyNTS_DBService<T extends DyFM_Metadata> {
|
|
|
501
520
|
).map((data: T): T => this.stringifyDataId(data, 'getDeletedData'));
|
|
502
521
|
}
|
|
503
522
|
|
|
523
|
+
// TODO: Missing issuer
|
|
504
524
|
/**
|
|
505
525
|
* deleted data by id
|
|
506
526
|
* @param id id
|
|
507
527
|
*/
|
|
508
528
|
async deleteDataById(id: string): Promise<void> {
|
|
529
|
+
if (this.dataParams.forbidDelete) {
|
|
530
|
+
await this.deleteThrowMethod(id/* , issuer */);
|
|
531
|
+
}
|
|
532
|
+
|
|
509
533
|
await this.dataModel
|
|
510
534
|
.findByIdAndDelete(id)
|
|
511
535
|
.catch((error): void => {
|
|
@@ -518,11 +542,16 @@ export class DyNTS_DBService<T extends DyFM_Metadata> {
|
|
|
518
542
|
});
|
|
519
543
|
}
|
|
520
544
|
|
|
545
|
+
// TODO: Missing issuer
|
|
521
546
|
/**
|
|
522
547
|
* deleted data by id
|
|
523
548
|
* @param dependencyId id
|
|
524
549
|
*/
|
|
525
550
|
async deleteDataByDependencyId(dependencyIdsFilter: { [key: string]: string }): Promise<void> {
|
|
551
|
+
if (this.dataParams.forbidDelete) {
|
|
552
|
+
await this.deleteThrowMethod(dependencyIdsFilter/* , issuer */);
|
|
553
|
+
}
|
|
554
|
+
|
|
526
555
|
if (!this.depKeys.length) {
|
|
527
556
|
throw new DyFM_Error({
|
|
528
557
|
...this._getDefaultErrorSettings(
|
|
@@ -550,7 +579,12 @@ export class DyNTS_DBService<T extends DyFM_Metadata> {
|
|
|
550
579
|
});
|
|
551
580
|
}
|
|
552
581
|
|
|
582
|
+
// TODO: Missing issuer
|
|
553
583
|
async deleteAllData(): Promise<void> {
|
|
584
|
+
if (this.dataParams.forbidDelete) {
|
|
585
|
+
await this.deleteThrowMethod(null/* , issuer */);
|
|
586
|
+
}
|
|
587
|
+
|
|
554
588
|
await this.dataModel.deleteMany().catch((error): void => {
|
|
555
589
|
throw new DyFM_Error({
|
|
556
590
|
...this._getDefaultErrorSettings('deleteAllData', error),
|
|
@@ -560,6 +594,7 @@ export class DyNTS_DBService<T extends DyFM_Metadata> {
|
|
|
560
594
|
});
|
|
561
595
|
}
|
|
562
596
|
|
|
597
|
+
// TODO: Missing issuer
|
|
563
598
|
/**
|
|
564
599
|
* returns search result for searchBy object params
|
|
565
600
|
* can use lists or xRange values for searchBy obj properties
|
|
@@ -856,6 +891,10 @@ export class DyNTS_DBService<T extends DyFM_Metadata> {
|
|
|
856
891
|
issuer: string,
|
|
857
892
|
dontUpdateModified?: boolean
|
|
858
893
|
): Promise<T> {
|
|
894
|
+
if (this.dataParams.forbidModify) {
|
|
895
|
+
await this.modifyThrowMethod(update, issuer);
|
|
896
|
+
}
|
|
897
|
+
|
|
859
898
|
if (!dontUpdateModified) {
|
|
860
899
|
update.__lastModified = new Date();
|
|
861
900
|
update.__lastModifiedBy = issuer;
|
|
@@ -935,6 +974,10 @@ export class DyNTS_DBService<T extends DyFM_Metadata> {
|
|
|
935
974
|
issuer: string,
|
|
936
975
|
dontUpdateModified?: boolean
|
|
937
976
|
): Promise<void> {
|
|
977
|
+
if (this.dataParams.forbidModify) {
|
|
978
|
+
await this.modifyThrowMethod(update, issuer);
|
|
979
|
+
}
|
|
980
|
+
|
|
938
981
|
if (!dontUpdateModified) {
|
|
939
982
|
update.__lastModified = new Date();
|
|
940
983
|
update.__lastModifiedBy = issuer;
|
|
@@ -1010,6 +1053,10 @@ export class DyNTS_DBService<T extends DyFM_Metadata> {
|
|
|
1010
1053
|
issuer: string,
|
|
1011
1054
|
dontUpdateModified?: boolean
|
|
1012
1055
|
): Promise<void> {
|
|
1056
|
+
if (this.dataParams.forbidModify) {
|
|
1057
|
+
await this.modifyThrowMethod(update, issuer);
|
|
1058
|
+
}
|
|
1059
|
+
|
|
1013
1060
|
if (!dontUpdateModified) {
|
|
1014
1061
|
update.__lastModified = new Date();
|
|
1015
1062
|
update.__lastModifiedBy = issuer;
|
|
@@ -1347,4 +1394,22 @@ export class DyNTS_DBService<T extends DyFM_Metadata> {
|
|
|
1347
1394
|
));
|
|
1348
1395
|
}
|
|
1349
1396
|
}
|
|
1397
|
+
|
|
1398
|
+
private async deleteThrowMethod(data: any, issuer?: string): Promise<void> {
|
|
1399
|
+
throw new DyFM_Error({
|
|
1400
|
+
error: new Error(`Forbidden to delete any data! (${this.dataParams.dataName})`),
|
|
1401
|
+
errorCode: `${DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-CDAD`,
|
|
1402
|
+
additionalContent: { dataParams: this.dataParams, data: data },
|
|
1403
|
+
issuer: issuer,
|
|
1404
|
+
});
|
|
1405
|
+
};
|
|
1406
|
+
|
|
1407
|
+
private async modifyThrowMethod(data: any, issuer?: string): Promise<void> {
|
|
1408
|
+
throw new DyFM_Error({
|
|
1409
|
+
error: new Error(`Forbidden to modify any data! (${this.dataParams.dataName})`),
|
|
1410
|
+
errorCode: `${DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-CDAD`,
|
|
1411
|
+
additionalContent: { dataParams: this.dataParams, data: data },
|
|
1412
|
+
issuer: issuer,
|
|
1413
|
+
});
|
|
1414
|
+
}
|
|
1350
1415
|
}
|
|
@@ -286,7 +286,11 @@ export class DyNTS_ApiService {
|
|
|
286
286
|
} else if (error.config && error.message) {
|
|
287
287
|
|
|
288
288
|
let msg: string = error.message;
|
|
289
|
-
let status: number =
|
|
289
|
+
let status: number = error?.response?.status ||
|
|
290
|
+
error?.status ||
|
|
291
|
+
/* get status from "status code {3 digits}" that might be in the middle of the message */
|
|
292
|
+
+error?.message?.match?.(/status code (\d{3})/)?.[1] ||
|
|
293
|
+
500;
|
|
290
294
|
|
|
291
295
|
if (error.message.includes('status code')) {
|
|
292
296
|
msg += `\nendpoint: ${callParams.baseUrl}${callParams.endpoint}` +
|
|
@@ -130,7 +130,7 @@ export class DyNTS_GlobalService extends DyNTS_SingletonService {
|
|
|
130
130
|
...this.getDefaultErrorSettings(
|
|
131
131
|
'setDBServices',
|
|
132
132
|
new Error(
|
|
133
|
-
`dbModel is not constructed!` +
|
|
133
|
+
`"${dbModel.dataName}" dbModel is not constructed!` +
|
|
134
134
|
`\n use new DyFM_DataModel_Params() to properly construct it.`
|
|
135
135
|
),
|
|
136
136
|
'DyNTS_GlobalService'
|
|
@@ -188,7 +188,7 @@ export class DyNTS_GlobalService extends DyNTS_SingletonService {
|
|
|
188
188
|
|
|
189
189
|
private static async setEmailServices(
|
|
190
190
|
emailServiceCollection?: DyNTS_Service_Collection<DyNTS_EmailService>
|
|
191
|
-
): Promise<void> {
|
|
191
|
+
): Promise<void> {
|
|
192
192
|
try {
|
|
193
193
|
this.instance.emailServiceCollection = emailServiceCollection ?? {};
|
|
194
194
|
|
|
@@ -9,6 +9,8 @@ import { DyNTS_SingletonService } from '../base/singleton.service';
|
|
|
9
9
|
/**
|
|
10
10
|
* Basic controller for endpoint handlings
|
|
11
11
|
*
|
|
12
|
+
* (You'll need to add them to a {@link DyNTS_RoutingModule} through it's constructor)
|
|
13
|
+
*
|
|
12
14
|
* @example
|
|
13
15
|
* export class UserMatchStatisticsController extends DyNTS_Controller {
|
|
14
16
|
*
|
|
@@ -21,6 +21,8 @@ import { DyNTS_Controller } from './controller.service';
|
|
|
21
21
|
* Routing Module
|
|
22
22
|
* Handling route setup and control
|
|
23
23
|
*
|
|
24
|
+
* (You'll need to add them to a {@link DyNTS_App} through the {@link DyNTS_App.getRoutingModules} method)
|
|
25
|
+
*
|
|
24
26
|
* You can add routes and controllers for them
|
|
25
27
|
* @example
|
|
26
28
|
* // Setting up Routes
|
|
@@ -364,6 +364,23 @@ export abstract class DyNTS_App extends DyNTS_SingletonService {
|
|
|
364
364
|
`\n ERROR:`, error
|
|
365
365
|
);
|
|
366
366
|
}
|
|
367
|
+
|
|
368
|
+
const message: string =
|
|
369
|
+
(error as DyFM_Error)?.additionalContent?.constructErrors?.flatMap(
|
|
370
|
+
(errorItem: DyFM_Error): string[] => {
|
|
371
|
+
return errorItem?._messages ?? [];
|
|
372
|
+
}
|
|
373
|
+
)?.join?.('\n') ??
|
|
374
|
+
(error as DyFM_Error)?.errors?.flatMap(
|
|
375
|
+
(errorItem: DyFM_AnyError): string[] =>
|
|
376
|
+
(errorItem as DyFM_Error)?._messages ?? [ (errorItem as Error)?.message ] ?? []
|
|
377
|
+
)?.join?.('\n') ??
|
|
378
|
+
error?.message ??
|
|
379
|
+
'UNKNOWN';
|
|
380
|
+
|
|
381
|
+
DyFM_Log.testError('Application start failed:\n', message);
|
|
382
|
+
|
|
383
|
+
process.exit(1);
|
|
367
384
|
});
|
|
368
385
|
}
|
|
369
386
|
|
|
@@ -427,6 +444,8 @@ export abstract class DyNTS_App extends DyNTS_SingletonService {
|
|
|
427
444
|
}
|
|
428
445
|
|
|
429
446
|
if (this._routingModules?.length) {
|
|
447
|
+
if (this.logSetup) DyFM_Log.log('\nsetting up express routes...');
|
|
448
|
+
|
|
430
449
|
this.setSecurity();
|
|
431
450
|
|
|
432
451
|
await this.initExpresses();
|
|
@@ -781,6 +800,7 @@ export abstract class DyNTS_App extends DyNTS_SingletonService {
|
|
|
781
800
|
*/
|
|
782
801
|
private async startDB(): Promise<void> {
|
|
783
802
|
if (this.fnLogs && this.deepLog) DyFM_Log.log('\nfn:. startDB');
|
|
803
|
+
else if (this.logSetup) DyFM_Log.log('\nstarting DB connection...');
|
|
784
804
|
|
|
785
805
|
if (!this._params.dbUri) {
|
|
786
806
|
throw new DyFM_Error({
|