@futdevpro/nts-dynamo 1.9.41 → 1.9.43

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 (35) hide show
  1. package/build/_models/types/db-filter.type.d.ts +1 -1
  2. package/build/_models/types/db-filter.type.d.ts.map +1 -1
  3. package/build/_modules/socket/_models/socket-presence.control-model.d.ts.map +1 -1
  4. package/build/_modules/socket/_models/socket-presence.control-model.js +13 -5
  5. package/build/_modules/socket/_models/socket-presence.control-model.js.map +1 -1
  6. package/build/_modules/socket/_services/socket-server.service.d.ts +2 -2
  7. package/build/_modules/socket/_services/socket-server.service.d.ts.map +1 -1
  8. package/build/_modules/socket/_services/socket-server.service.js +17 -23
  9. package/build/_modules/socket/_services/socket-server.service.js.map +1 -1
  10. package/build/_services/base/archive-data.service.d.ts.map +1 -1
  11. package/build/_services/base/archive-data.service.js +3 -0
  12. package/build/_services/base/archive-data.service.js.map +1 -1
  13. package/build/_services/base/data.service.d.ts +9 -3
  14. package/build/_services/base/data.service.d.ts.map +1 -1
  15. package/build/_services/base/data.service.js +101 -6
  16. package/build/_services/base/data.service.js.map +1 -1
  17. package/build/_services/base/db.service.d.ts +6 -1
  18. package/build/_services/base/db.service.d.ts.map +1 -1
  19. package/build/_services/base/db.service.js +133 -114
  20. package/build/_services/base/db.service.js.map +1 -1
  21. package/build/_services/base/singleton.service.d.ts.map +1 -1
  22. package/build/_services/base/singleton.service.js +0 -1
  23. package/build/_services/base/singleton.service.js.map +1 -1
  24. package/build/_services/core/global.service.d.ts.map +1 -1
  25. package/build/_services/core/global.service.js +1 -0
  26. package/build/_services/core/global.service.js.map +1 -1
  27. package/package.json +3 -3
  28. package/src/_models/types/db-filter.type.ts +1 -1
  29. package/src/_modules/socket/_models/socket-presence.control-model.ts +19 -7
  30. package/src/_modules/socket/_services/socket-server.service.ts +27 -39
  31. package/src/_services/base/archive-data.service.ts +4 -0
  32. package/src/_services/base/data.service.ts +147 -13
  33. package/src/_services/base/db.service.ts +165 -140
  34. package/src/_services/base/singleton.service.ts +2 -3
  35. package/src/_services/core/global.service.ts +1 -0
@@ -6,7 +6,7 @@ import {
6
6
  DyFM_Metadata, DyFM_DataModel_Params, DyFM_DataProperty_Params, DyFM_Error,
7
7
  DyFM_Log, DyFM_AnyError, DyFM_Error_Settings, DyFM_ErrorLevel
8
8
  } from '@futdevpro/fsm-dynamo';
9
- import { DyNTS_DBFilter } from '../../_models/types/db-filter.type';
9
+ import { DyNTS_DBFilter, DyNTS_DBFilterNOR, DyNTS_DBFilterOR, DyNTS_DBFilterSimple } from '../../_models/types/db-filter.type';
10
10
  import { DyNTS_DBUpdate } from '../../_models/types/db-update.type';
11
11
  import { DyNTS_archiveSuffix } from '../../_collections/archive.util';
12
12
 
@@ -57,12 +57,6 @@ export class DyNTS_DBService<T extends DyFM_Metadata> {
57
57
  additionalContent: { dataParams: this.dataParams },
58
58
  error,
59
59
  });
60
- /* DyFM_Log.error(
61
- `\nDyNTS_DBService ERROR, ` +
62
- `The dbService construction failed for ${dataParams.dataName}. ${this.serviceName}` +
63
- `\nERROR: `, error,
64
- new Error()
65
- ); */
66
60
  }
67
61
  }
68
62
 
@@ -78,7 +72,7 @@ export class DyNTS_DBService<T extends DyFM_Metadata> {
78
72
  data.__lastModifiedBy = issuer;
79
73
 
80
74
  const dataModel = new this.dataModel(data);
81
- let newData: T = await dataModel.save().then((res): T => {
75
+ const newData: T = await dataModel.save().then((res): T => {
82
76
  if (res) {
83
77
  return res?.toObject() as T;
84
78
 
@@ -91,8 +85,6 @@ export class DyNTS_DBService<T extends DyFM_Metadata> {
91
85
  ),
92
86
  issuer
93
87
  ),
94
-
95
- status: 544,
96
88
  errorCode: 'NTS-DBS-CD1',
97
89
  additionalContent: { data },
98
90
  issuer,
@@ -105,8 +97,6 @@ export class DyNTS_DBService<T extends DyFM_Metadata> {
105
97
  } else {
106
98
  throw new DyFM_Error({
107
99
  ...this._getDefaultErrorSettings('createData', error, issuer),
108
-
109
- status: 522,
110
100
  errorCode: 'NTS-DBS-CD0',
111
101
  additionalContent: { data, dataModel },
112
102
  message:
@@ -116,9 +106,7 @@ export class DyNTS_DBService<T extends DyFM_Metadata> {
116
106
  }
117
107
  });
118
108
 
119
- newData = this.stringifyDataId(newData, 'createData');
120
-
121
- return newData;
109
+ return this.stringifyDataId(newData, 'createData');
122
110
  }
123
111
 
124
112
  /**
@@ -136,8 +124,9 @@ export class DyNTS_DBService<T extends DyFM_Metadata> {
136
124
  * EZ A SZAR TELJESEN SZAR, nem friss, nem a db-be mentett adatokat ad vissza,
137
125
  * átír random value-kat össze vissza, WTF
138
126
  * */
139
- /* let newData: T = */ await this.dataModel.findByIdAndUpdate(data._id, data).then((res) => {
140
- /* if (res) {
127
+ /* let newData: T = */
128
+ await this.dataModel.findByIdAndUpdate(data._id, data)/* .then((res) => {
129
+ if (res) {
141
130
  //return res?.toObject() as T;
142
131
  } else {
143
132
  throw new DyFM_Error({
@@ -152,21 +141,18 @@ export class DyNTS_DBService<T extends DyFM_Metadata> {
152
141
  additionalContent: { data },
153
142
  issuer,
154
143
  });
155
- } */
156
- }).catch((error): void => {
157
- throw new DyFM_Error({
158
- ...this._getDefaultErrorSettings('modifyData', error, issuer),
159
-
160
- errorCode: 'NTS-DBS-FU0',
161
- additionalContent: { data },
162
- message: `modifyData "${this.dataParams.dbName}" was unsuccessful (NTS DB)`,
163
- issuer,
144
+ }
145
+ }) */.catch((error): void => {
146
+ throw new DyFM_Error({
147
+ ...this._getDefaultErrorSettings('modifyData', error, issuer),
148
+ errorCode: 'NTS-DBS-FU0',
149
+ additionalContent: { data },
150
+ message: `modifyData "${this.dataParams.dbName}" was unsuccessful (NTS DB)`,
151
+ issuer,
152
+ });
164
153
  });
165
- });
166
154
 
167
- /* newData = this.stringifyDataId(newData, 'modifyData'); */
168
-
169
- return data;
155
+ return this.stringifyDataId(data, 'modifyData');
170
156
  }
171
157
 
172
158
  /**
@@ -184,22 +170,19 @@ export class DyNTS_DBService<T extends DyFM_Metadata> {
184
170
  });
185
171
  }
186
172
 
187
- let data: T = await this.dataModel
173
+ const data: T = await this.dataModel
188
174
  .findById(id)
189
175
  .then((res): T => res?.toObject() as T ?? null)
190
176
  .catch((error): void => {
191
177
  throw new DyFM_Error({
192
178
  ...this._getDefaultErrorSettings('getDataById', error),
193
-
194
179
  errorCode: 'NTS-DBS-GI0',
195
180
  additionalContent: { id },
196
181
  message: `get "${this.dataParams.dbName}" by ID was unsuccessful (NTS DB)`,
197
182
  });
198
183
  });
199
184
 
200
- data = this.stringifyDataId(data, 'getDataById');
201
-
202
- return data;
185
+ return this.stringifyDataId(data, 'getDataById');
203
186
  }
204
187
 
205
188
  /**
@@ -219,13 +202,11 @@ export class DyNTS_DBService<T extends DyFM_Metadata> {
219
202
  `(NTS DB)`
220
203
  )
221
204
  ),
222
-
223
- status: 500,
224
205
  errorCode: 'NTS-DBS-GD0',
225
206
  });
226
207
  }
227
208
 
228
- let data: T = await this.dataModel
209
+ const data: T = await this.dataModel
229
210
  .findOne({ [this.depDataName]: dependencyId })
230
211
  .then((res): T => res?.toObject() as T ?? null)
231
212
  .catch((error): void => {
@@ -239,9 +220,7 @@ export class DyNTS_DBService<T extends DyFM_Metadata> {
239
220
  });
240
221
  });
241
222
 
242
- data = this.stringifyDataId(data, 'getDataByDependencyId');
243
-
244
- return data;
223
+ return this.stringifyDataId(data, 'getDataByDependencyId');
245
224
  }
246
225
 
247
226
  /**
@@ -261,8 +240,6 @@ export class DyNTS_DBService<T extends DyFM_Metadata> {
261
240
  `(NTS DB)`
262
241
  )
263
242
  ),
264
-
265
- status: 500,
266
243
  errorCode: 'NTS-DBS-GLD0',
267
244
  additionalContent: {
268
245
  dataModel: this.dataModel,
@@ -271,12 +248,13 @@ export class DyNTS_DBService<T extends DyFM_Metadata> {
271
248
  }
272
249
 
273
250
  const dataList: T[] = await this.dataModel
274
- .find({ [this.depDataName]: dependencyId })
251
+ .find({
252
+ [this.depDataName]: dependencyId,
253
+ })
275
254
  .then((res): T[] => res as T[] ?? [])
276
255
  .catch((error): void => {
277
256
  throw new DyFM_Error({
278
257
  ...this._getDefaultErrorSettings('getDataListByDependencyId', error),
279
-
280
258
  errorCode: 'NTS-DBS-GLD1',
281
259
  additionalContent: { dependencyId },
282
260
  message:
@@ -284,11 +262,11 @@ export class DyNTS_DBService<T extends DyFM_Metadata> {
284
262
  });
285
263
  });
286
264
 
287
- dataList.forEach((data: T): void => {
288
- data = this.stringifyDataId(data, 'getDataListByDependencyId');
289
- });
290
-
291
- return dataList;
265
+ return dataList.filter(
266
+ (data: T): boolean => !data._deleted
267
+ ).map(
268
+ (data: T): T => this.stringifyDataId(data, 'getDataListByDependencyId')
269
+ );
292
270
  }
293
271
 
294
272
  /**
@@ -308,68 +286,31 @@ export class DyNTS_DBService<T extends DyFM_Metadata> {
308
286
  `(${this.dataParams.dbName}) (NTS DB)`
309
287
  )
310
288
  ),
311
-
312
- status: 500,
313
289
  errorCode: 'NTS-DBS-GLDS0',
314
290
  });
315
291
  }
316
292
 
317
293
  const dataList: T[] = await this.dataModel
318
- .find({ [this.depDataName]: { $in: dependencyIds }})
294
+ .find({
295
+ [this.depDataName]: { $in: dependencyIds },
296
+ })
319
297
  .then((res): T[] => res as T[] ?? [])
320
298
  .catch((error): void => {
321
299
  throw new DyFM_Error({
322
300
  ...this._getDefaultErrorSettings('getDataListByDependencyIds', error),
323
-
324
301
  errorCode: 'NTS-DBS-GLDS1',
325
302
  additionalContent: { dependencyIds },
326
- message: `get "${this.dataParams.dbName}" by ${this.depDataName} was unsuccessful (NTS DB)`,
327
- });
328
- });
329
-
330
- dataList.forEach((data: T): void => {
331
- data = this.stringifyDataId(data, 'getDataListByDependencyIds');
332
- });
333
-
334
- return dataList;
335
- }
336
-
337
- /* async getDataListByDependencyIds(ids: string[]): Promise<T[]> {
338
- if (!this.depDataName) {
339
- throw new DyFM_Error({
340
- ...this._getDefaultErrorSettings(
341
- 'getDataListByDependencyIds',
342
- new Error(
343
- `dependencyDataIdKey not setted up for this db-service (${this.dataParams.dbName}) ` +
344
- `(NTS DB)`
345
- )
346
- ),
347
-
348
- status: 500,
349
- errorCode: 'NTS-DBS-GLDS0',
350
- });
351
- }
352
-
353
- const dataList: T[] = await this.dataModel
354
- .find({ [this.depDataName]: { $in: ids } })
355
- .then((res): T[] => res as T[] ?? [])
356
- .catch((error): void => {
357
- throw new DyFM_Error({
358
- ...this._getDefaultErrorSettings('getDataListByDependencyIds', error),
359
-
360
- errorCode: 'NTS-DBS-GLDS1',
361
- additionalContent: { ids },
362
303
  message:
363
- `get ${this.dataParams.dbName}s by ${this.depDataName}s was unsuccessful (NTS DB)`,
304
+ `get "${this.dataParams.dbName}" by ${this.depDataName} was unsuccessful (NTS DB)`,
364
305
  });
365
306
  });
366
307
 
367
- dataList.forEach((data: T): void => {
368
- data = this.stringifyDataId(data, 'getDataListByDependencyIds');
369
- });
370
-
371
- return dataList;
372
- } */
308
+ return dataList.filter(
309
+ (data: T): boolean => !data._deleted
310
+ ).map(
311
+ (data: T): T => this.stringifyDataId(data, 'getDataListByDependencyIds')
312
+ );
313
+ }
373
314
 
374
315
  /**
375
316
  * returns all data from database,
@@ -379,7 +320,7 @@ export class DyNTS_DBService<T extends DyFM_Metadata> {
379
320
  */
380
321
  async getAll(): Promise<T[]> {
381
322
  const dataList: T[] = await this.dataModel
382
- .find({})
323
+ .find()
383
324
  .then((res): T[] => res as T[] ?? [])
384
325
  .catch((error): void => {
385
326
  throw new DyFM_Error({
@@ -390,11 +331,97 @@ export class DyNTS_DBService<T extends DyFM_Metadata> {
390
331
  });
391
332
  });
392
333
 
393
- dataList.forEach((data: T): void => {
394
- data = this.stringifyDataId(data, 'getAll');
334
+ return dataList.filter(
335
+ (data: T): boolean => !data._deleted
336
+ ).map(
337
+ (data: T): T => this.stringifyDataId(data, 'getAll')
338
+ );
339
+ }
340
+
341
+ async markDeletedById(id: string, issuer: string): Promise<void> {
342
+ await this.dataModel.findByIdAndUpdate(id, { _deleted: true }, issuer).catch((error): void => {
343
+ throw new DyFM_Error({
344
+ ...this._getDefaultErrorSettings('markDeletedById', error, issuer),
345
+
346
+ errorCode: 'NTS-DBS-MD0',
347
+ additionalContent: { id },
348
+ message: `mark deleted "${this.dataParams.dbName}" was unsuccessful (NTS DB)`,
349
+ issuer,
350
+ });
351
+ });
352
+ }
353
+
354
+ async markDeletedByDependencyId(dependencyId: string, issuer: string): Promise<void> {
355
+ await this.dataModel.updateMany(
356
+ { [this.depDataName]: dependencyId },
357
+ { _deleted: true }
358
+ ).catch((error): void => {
359
+ throw new DyFM_Error({
360
+ ...this._getDefaultErrorSettings('markDeletedByDependencyId', error, issuer),
361
+ errorCode: 'NTS-DBS-MDD0',
362
+ additionalContent: { dependencyId },
363
+ message:
364
+ `markDeleted "${this.dataParams.dbName}" by ${this.depDataName} was unsuccessful ` +
365
+ `(NTS DB)`,
366
+ issuer,
367
+ });
368
+ });
369
+ }
370
+
371
+ async restoreDeletedById(id: string, issuer: string): Promise<void> {
372
+ await this.dataModel.findByIdAndUpdate(
373
+ id,
374
+ {
375
+ _deleted: null,
376
+ __lastModified: new Date(),
377
+ __lastModifiedBy: issuer,
378
+ },
379
+ issuer
380
+ ).catch((error): void => {
381
+ throw new DyFM_Error({
382
+ ...this._getDefaultErrorSettings('restoreDeletedById', error, issuer),
383
+ errorCode: 'NTS-DBS-RD0',
384
+ additionalContent: { id },
385
+ message: `restoreDeleted "${this.dataParams.dbName}" was unsuccessful (NTS DB)`,
386
+ issuer,
387
+ });
395
388
  });
389
+ }
390
+
391
+ async restoreDeletedByDependencyId(dependencyId: string, issuer: string): Promise<void> {
392
+ await this.dataModel.updateMany(
393
+ { [this.depDataName]: dependencyId },
394
+ {
395
+ _deleted: null,
396
+ __lastModified: new Date(),
397
+ __lastModifiedBy: issuer,
398
+ }
399
+ ).catch((error): void => {
400
+ throw new DyFM_Error({
401
+ ...this._getDefaultErrorSettings('restoreDeletedByDependencyId', error, issuer),
402
+ errorCode: 'NTS-DBS-RDD0',
403
+ additionalContent: { dependencyId },
404
+ message:
405
+ `restoreDeleted "${this.dataParams.dbName}" by ${this.depDataName} was unsuccessful ` +
406
+ `(NTS DB)`,
407
+ issuer,
408
+ });
409
+ });
410
+ }
411
+
412
+ async getDeletedDataList(): Promise<T[]> {
413
+ const dataList: T[] = await this.dataModel
414
+ .find({ _deleted: true })
415
+ .then((res): T[] => res as T[] ?? [])
416
+ .catch((error): void => {
417
+ throw new DyFM_Error({
418
+ ...this._getDefaultErrorSettings('getDeletedData', error),
419
+ errorCode: 'NTS-DBS-GDD0',
420
+ message: `get deleted "${this.dataParams.dbName}" was unsuccessful (NTS DB)`,
421
+ });
422
+ });
396
423
 
397
- return dataList as T[];
424
+ return dataList.map((data: T): T => this.stringifyDataId(data, 'getDeletedData'));
398
425
  }
399
426
 
400
427
  /**
@@ -407,7 +434,6 @@ export class DyNTS_DBService<T extends DyFM_Metadata> {
407
434
  .catch((error): void => {
408
435
  throw new DyFM_Error({
409
436
  ...this._getDefaultErrorSettings('deleteDataById', error),
410
-
411
437
  errorCode: 'NTS-DBS-DD0',
412
438
  additionalContent: { id },
413
439
  message: `delete "${this.dataParams.dbName}" was unsuccessful (NTS DB)`,
@@ -429,8 +455,6 @@ export class DyNTS_DBService<T extends DyFM_Metadata> {
429
455
  `(NTS DB)`
430
456
  )
431
457
  ),
432
-
433
- status: 500,
434
458
  errorCode: 'NTS-DBS-DDD0',
435
459
  });
436
460
  }
@@ -440,7 +464,6 @@ export class DyNTS_DBService<T extends DyFM_Metadata> {
440
464
  .catch((error): void => {
441
465
  throw new DyFM_Error({
442
466
  ...this._getDefaultErrorSettings('deleteDataByDependencyId', error),
443
-
444
467
  errorCode: 'NTS-DBS-DDD1',
445
468
  additionalContent: { dependencyId },
446
469
  message:
@@ -449,6 +472,16 @@ export class DyNTS_DBService<T extends DyFM_Metadata> {
449
472
  });
450
473
  }
451
474
 
475
+ async deleteAllData(): Promise<void> {
476
+ await this.dataModel.deleteMany().catch((error): void => {
477
+ throw new DyFM_Error({
478
+ ...this._getDefaultErrorSettings('deleteAllData', error),
479
+ errorCode: 'NTS-DBS-DAD0',
480
+ message: `delete all "${this.dataParams.dbName}" was unsuccessful (NTS DB)`,
481
+ });
482
+ });
483
+ }
484
+
452
485
  /**
453
486
  * returns search result for searchBy object params
454
487
  * can use lists or xRange values for searchBy obj properties
@@ -473,8 +506,6 @@ export class DyNTS_DBService<T extends DyFM_Metadata> {
473
506
  `(NTS DB)`
474
507
  )
475
508
  ),
476
-
477
- status: 500,
478
509
  errorCode: 'NTS-DBS-SD0',
479
510
  });
480
511
  }
@@ -482,7 +513,7 @@ export class DyNTS_DBService<T extends DyFM_Metadata> {
482
513
  filter[this.depDataName] = { $in: narrowByDependencyIds };
483
514
  }
484
515
 
485
- await this.dataParams.properties.forEach((modelParam: DyFM_DataProperty_Params): void => {
516
+ this.dataParams.properties.forEach((modelParam: DyFM_DataProperty_Params): void => {
486
517
  if (
487
518
  (filterBy[modelParam.key] !== null && filterBy[modelParam.key] !== undefined) ||
488
519
  filterBy[modelParam.key + 'Range']
@@ -532,24 +563,23 @@ export class DyNTS_DBService<T extends DyFM_Metadata> {
532
563
  }
533
564
  });
534
565
 
535
- const dataList: T[] = await this.dataModel
566
+ let dataList: T[] = await this.dataModel
536
567
  .find(filter)
537
568
  .then((res): T[] => res as T[] ?? [])
538
569
  .catch((error): void => {
539
570
  throw new DyFM_Error({
540
571
  ...this._getDefaultErrorSettings('searchData', error),
541
-
542
572
  errorCode: 'NTS-DBS-SD1',
543
573
  additionalContent: { filterBy, narrowByDependencyIds },
544
574
  message: `search "${this.dataParams.dbName}" was unsuccessful (NTS DB)`,
545
575
  });
546
576
  });
577
+
578
+ if ((filterBy as DyNTS_DBFilterSimple<T>)._deleted === undefined) {
579
+ dataList = dataList.filter((data: T): boolean => !data._deleted);
580
+ }
547
581
 
548
- dataList.forEach((data: T): void => {
549
- data = this.stringifyDataId(data, 'searchData');
550
- });
551
-
552
- return dataList;
582
+ return dataList.map((data: T): T => this.stringifyDataId(data, 'searchData'));
553
583
  }
554
584
 
555
585
  // ----------------------------------------------------------------------------------
@@ -584,22 +614,19 @@ export class DyNTS_DBService<T extends DyFM_Metadata> {
584
614
  * @returns {T} data: T
585
615
  */
586
616
  async findOne(filterBy: DyNTS_DBFilter<T>): Promise<T> {
587
- let data: T = await this.dataModel
617
+ const data: T = await this.dataModel
588
618
  .findOne(filterBy)
589
619
  .then((res): T => res as T ?? null)
590
620
  .catch((error): void => {
591
621
  throw new DyFM_Error({
592
622
  ...this._getDefaultErrorSettings('findOne', error),
593
-
594
623
  errorCode: 'NTS-DBS-FO0',
595
624
  additionalContent: { filterBy },
596
625
  message: `findOne "${this.dataParams.dbName}" was unsuccessful (NTS DB)`,
597
626
  });
598
627
  });
599
628
 
600
- data = this.stringifyDataId(data, 'findOne');
601
-
602
- return data;
629
+ return this.stringifyDataId(data, 'findOne');
603
630
  }
604
631
 
605
632
  /**
@@ -630,24 +657,26 @@ export class DyNTS_DBService<T extends DyFM_Metadata> {
630
657
  * @returns {T[]} dataList: T[]
631
658
  */
632
659
  async find(filterBy: DyNTS_DBFilter<T>): Promise<T[]> {
633
- const dataList: T[] = await this.dataModel
660
+
661
+ let dataList: T[] = await this.dataModel
634
662
  .find(filterBy)
635
663
  .then((res): T[] => res as T[] ?? [])
636
664
  .catch((error): void => {
637
665
  throw new DyFM_Error({
638
666
  ...this._getDefaultErrorSettings('find', error),
639
-
640
667
  errorCode: 'NTS-DBS-F0',
641
668
  additionalContent: { filterBy },
642
669
  message: `find "${this.dataParams.dbName}" was unsuccessful (NTS DB)`,
643
670
  });
644
671
  });
645
672
 
646
- dataList.forEach((data: T): void => {
647
- data = this.stringifyDataId(data, 'find');
648
- });
673
+ if (
674
+ (filterBy as DyNTS_DBFilterSimple<T>)._deleted === undefined
675
+ ) {
676
+ dataList = dataList.filter((data: T): boolean => !data._deleted);
677
+ }
649
678
 
650
- return dataList as T[];
679
+ return dataList.map((data: T): T => this.stringifyDataId(data, 'find'));
651
680
  }
652
681
 
653
682
  /**
@@ -689,7 +718,7 @@ export class DyNTS_DBService<T extends DyFM_Metadata> {
689
718
  pageSize: number,
690
719
  sort?: any
691
720
  ): Promise<T[]> {
692
- const dataList: T[] = await this.dataModel
721
+ let dataList: T[] = await this.dataModel
693
722
  .find(filterBy)
694
723
  .sort(sort)
695
724
  .skip(page * pageSize)
@@ -698,24 +727,22 @@ export class DyNTS_DBService<T extends DyFM_Metadata> {
698
727
  .catch((error): void => {
699
728
  throw new DyFM_Error({
700
729
  ...this._getDefaultErrorSettings('findWithPaging', error),
701
-
702
730
  errorCode: 'NTS-DBS-WP0',
703
731
  additionalContent: { filterBy, page, pageSize, sort },
704
732
  message: `findWithPaging "${this.dataParams.dbName}" was unsuccessful (NTS DB)`,
705
733
  });
706
734
  });
707
735
 
708
- dataList.forEach((data: T): void => {
709
- data = this.stringifyDataId(data, 'findWithPaging');
710
- });
736
+ if ((filterBy as DyNTS_DBFilterSimple<T>)._deleted === undefined) {
737
+ dataList = dataList.filter((data: T): boolean => !data._deleted);
738
+ }
711
739
 
712
- return dataList;
740
+ return dataList.map((data: T): T => this.stringifyDataId(data, 'find'));
713
741
  }
714
742
 
715
743
  /**
716
744
  * #MONGOOSE FUNCTION
717
745
  * Find data by _id and update
718
- * !!!: throws error if not found (errorCode on not found: )
719
746
  *
720
747
  * @param id id
721
748
  * @param update update
@@ -732,13 +759,12 @@ export class DyNTS_DBService<T extends DyFM_Metadata> {
732
759
  update.__lastModifiedBy = issuer;
733
760
  }
734
761
 
735
- let newData: T = await this.dataModel
762
+ const data: T = await this.dataModel
736
763
  .findByIdAndUpdate(id, update)
737
764
  .then((res): T => res?.toObject() as T ?? null)
738
765
  .catch((error): void => {
739
766
  throw new DyFM_Error({
740
767
  ...this._getDefaultErrorSettings('findByIdAndUpdate', error, issuer),
741
-
742
768
  errorCode: 'NTS-DBS-FIU0',
743
769
  additionalContent: { id, update },
744
770
  message: `findByIdAndUpdate "${this.dataParams.dbName}" was unsuccessful (NTS DB)`,
@@ -746,9 +772,7 @@ export class DyNTS_DBService<T extends DyFM_Metadata> {
746
772
  });
747
773
  });
748
774
 
749
- newData = this.stringifyDataId(newData, 'findByIdAndUpdate');
750
-
751
- return newData;
775
+ return this.stringifyDataId(data, 'findByIdAndUpdate');
752
776
  }
753
777
 
754
778
  /**
@@ -819,7 +843,6 @@ export class DyNTS_DBService<T extends DyFM_Metadata> {
819
843
  .catch((error): void => {
820
844
  throw new DyFM_Error({
821
845
  ...this._getDefaultErrorSettings('updateOne', error, issuer),
822
-
823
846
  errorCode: 'NTS-DBS-UO0',
824
847
  additionalContent: { filterBy, update },
825
848
  message: `updateOne "${this.dataParams.dbName}" was unsuccessful (NTS DB)`,
@@ -895,7 +918,6 @@ export class DyNTS_DBService<T extends DyFM_Metadata> {
895
918
  .catch((error): void => {
896
919
  throw new DyFM_Error({
897
920
  ...this._getDefaultErrorSettings('updateMany', error, issuer),
898
-
899
921
  errorCode: 'NTS-DBS-UM0',
900
922
  additionalContent: { filterBy, update },
901
923
  message: `updateMany "${this.dataParams.dbName}" was unsuccessful (NTS DB)`,
@@ -1064,6 +1086,9 @@ export class DyNTS_DBService<T extends DyFM_Metadata> {
1064
1086
  schema.__createdBy = { type: String };
1065
1087
  schema.__lastModified = { type: Date };
1066
1088
  schema.__lastModifiedBy = { type: String };
1089
+
1090
+ schema._deleted = { type: Date };
1091
+ schema._deletedBy = { type: String };
1067
1092
 
1068
1093
  return schema;
1069
1094
  }
@@ -1,4 +1,4 @@
1
- import { DyFM_AnyError, DyFM_Error_Settings, DyFM_Error } from '@futdevpro/fsm-dynamo';
1
+ import { DyFM_AnyError, DyFM_Error, DyFM_Error_Settings } from '@futdevpro/fsm-dynamo';
2
2
 
3
3
  import { DyNTS_global_settings } from '../../_collections/global-settings.const';
4
4
  import { DyNTS_SingletonServiceBase } from './singleton.service-base';
@@ -19,8 +19,7 @@ export class DyNTS_SingletonService extends DyNTS_SingletonServiceBase {
19
19
  ): DyFM_Error_Settings {
20
20
  return {
21
21
  status: (error as DyFM_Error)?.___status ?? 500,
22
- message: (error as Error)?.message ??
23
- (error as DyFM_Error)?._message ??
22
+ message: (error as Error)?.message ??
24
23
  `${fnName} was UNSUCCESSFUL (${DyNTS_global_settings.systemShortCodeName})`,
25
24
  addECToUserMsg: !(error as DyFM_Error)?.__userMessage,
26
25
  userMessage: (error as DyFM_Error)?.__userMessage ?? this.defaultErrorUserMsg,
@@ -52,6 +52,7 @@ export class DyNTS_GlobalService extends DyNTS_SingletonService {
52
52
 
53
53
  authService: DyNTS_AuthService;
54
54
  dbServiceCollection: DyNTS_Service_Collection<DyNTS_DBService<any>>;
55
+ /* dataServiceCollection: DyNTS_Service_Collection<any>; */
55
56
  emailServiceCollection: DyNTS_Service_Collection<DyNTS_EmailService>;
56
57
 
57
58
  static readonly defaultErrorUserMsg: string =