@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
@@ -1,13 +1,19 @@
1
1
 
2
- import {
3
- DyFM_Metadata, DyFM_DataModel_Params, DyFM_DataProperty_Params, DyFM_Error,
4
- DyFM_Log, DyFM_AnyError, DyFM_Error_Settings, DyFM_ErrorLevel
2
+ import {
3
+ DyFM_AnyError,
4
+ DyFM_Array,
5
+ DyFM_DataModel_Params, DyFM_DataProperty_Params, DyFM_Error,
6
+ DyFM_Error_Settings, DyFM_ErrorLevel,
7
+ DyFM_Log,
8
+ DyFM_Metadata
5
9
  } from '@futdevpro/fsm-dynamo';
6
10
 
11
+ import { DyNTS_getArchivedDBName } from '../../_collections/archive.util';
12
+ import { DyNTS_global_settings } from '../../_collections/global-settings.const';
7
13
  import { DyNTS_DBFilter } from '../../_models/types/db-filter.type';
8
14
  import { DyNTS_DBUpdate } from '../../_models/types/db-update.type';
9
- import { DyNTS_global_settings } from '../../_collections/global-settings.const';
10
15
  import { DyNTS_GlobalService } from '../core/global.service';
16
+ import { DyNTS_ArchiveDataService } from './archive-data.service';
11
17
  import { DyNTS_DBService } from './db.service';
12
18
 
13
19
  // TODO: 2 type of archiving service system: within list, or separate db elements
@@ -36,6 +42,8 @@ export class DyNTS_DataService<T extends DyFM_Metadata> {
36
42
  serviceName: string;
37
43
 
38
44
  dataDBService: DyNTS_DBService<T>;
45
+ haveArchiveDataService: boolean;
46
+
39
47
  data: T;
40
48
  dataList: T[] = [];
41
49
  issuer: string;
@@ -74,8 +82,10 @@ export class DyNTS_DataService<T extends DyFM_Metadata> {
74
82
  this.dataDBService = DyNTS_GlobalService.getDBService<T>(dataParams);
75
83
  this.data = data;
76
84
  this.dataParams = dataParams;
85
+ this.haveArchiveDataService = dataParams.addArchive;
77
86
  this.lookForDependencyDataSettings();
78
87
  this.issuer = issuer;
88
+ /* DyNTS_GlobalService.addDataService(this); */
79
89
  } catch (error) {
80
90
  throw new DyFM_Error({
81
91
  ...this._getDefaultErrorSettings('constructor', error),
@@ -98,6 +108,17 @@ export class DyNTS_DataService<T extends DyFM_Metadata> {
98
108
  }
99
109
  }
100
110
 
111
+ getArchiveDataService(): DyNTS_ArchiveDataService<T> {
112
+ throw new DyFM_Error({
113
+ ...this._getDefaultErrorSettings(
114
+ 'getArchiveDataService',
115
+ new Error('getArchiveDataService is not implemented!')
116
+ ),
117
+
118
+ errorCode: 'NTS-DS0-GAD0',
119
+ });
120
+ }
121
+
101
122
  /**
102
123
  * returns all data from database to service dataList
103
124
  */
@@ -146,7 +167,7 @@ export class DyNTS_DataService<T extends DyFM_Metadata> {
146
167
  async getDataById(id?: string, dontSetToService?: boolean): Promise<T> {
147
168
  try {
148
169
  if (!id && !this.data._id) {
149
- throw new DyFM_Error({
170
+ throw new DyFM_Error({
150
171
  ...this._getDefaultErrorSettings(
151
172
  'getDataById',
152
173
  new Error(
@@ -797,9 +818,10 @@ export class DyNTS_DataService<T extends DyFM_Metadata> {
797
818
  }
798
819
 
799
820
  /**
800
- * permanently deletes data from database by data._id
821
+ * markes data as deleted, if can be archived, will be archived as well
822
+ * if absolute is true, permanently deletes data from database by data._id
801
823
  */
802
- async deleteData(id?: string): Promise<void> {
824
+ async deleteData(id?: string, absolute?: boolean): Promise<void> {
803
825
  try {
804
826
  if (!id && this.data._id) {
805
827
  id = this.data._id;
@@ -816,10 +838,26 @@ export class DyNTS_DataService<T extends DyFM_Metadata> {
816
838
  });
817
839
  }
818
840
 
819
- await this.dataDBService.deleteDataById(id);
841
+ this.data = await this.getDataById(id, true);
842
+
843
+ if (this.haveArchiveDataService) {
844
+ const archive_DS: DyNTS_DataService<T> = this.getArchiveDataService();
845
+
846
+ await this.dataDBService.deleteDataById(id);
820
847
 
821
- if (this.data._id === id) {
848
+ this.data._deleted = new Date();
849
+ this.data._deletedBy = this.issuer;
850
+ this.data._originalId = this.data._id;
851
+ this.data._archived = new Date();
822
852
  delete this.data._id;
853
+
854
+ await archive_DS.saveData(this.data, true);
855
+ } else if (absolute) {
856
+ await this.dataDBService.deleteDataById(id);
857
+
858
+ delete this.data._id;
859
+ } else {
860
+ await this.dataDBService.markDeletedById(id, this.issuer);
823
861
  }
824
862
  } catch (error) {
825
863
  if (error?.errorCode == 'NTS-DS0-DD1') {
@@ -834,6 +872,104 @@ export class DyNTS_DataService<T extends DyFM_Metadata> {
834
872
  }
835
873
  }
836
874
 
875
+ async deleteAllData(absolute?: boolean): Promise<void> {
876
+ try {
877
+ this.dataList = await this.getAll(true);
878
+
879
+ if (this.haveArchiveDataService) {
880
+ const archive_DS: DyNTS_DataService<T> = this.getArchiveDataService();
881
+
882
+ await this.dataDBService.deleteAllData();
883
+
884
+ await DyFM_Array.asyncForEachAllAtOnce(
885
+ this.dataList,
886
+ async (data: T) => {
887
+ data._deleted = new Date();
888
+ data._deletedBy = this.issuer;
889
+ data._originalId = data._id;
890
+ data._archived = new Date();
891
+ delete data._id;
892
+
893
+ await archive_DS.saveData(data, true);
894
+ }
895
+ );
896
+ } else if (absolute) {
897
+ await this.dataDBService.deleteAllData();
898
+
899
+ this.dataList.forEach((data: T) => {
900
+ delete data._id;
901
+ });
902
+ } else {
903
+ await DyFM_Array.asyncForEachAllAtOnce(
904
+ this.dataList,
905
+ async (data: T) => {
906
+ await this.dataDBService.markDeletedById(data._id, this.issuer);
907
+ }
908
+ );
909
+ }
910
+ } catch (error) {
911
+ throw new DyFM_Error({
912
+ ...this._getDefaultErrorSettings('deleteAllData', error),
913
+
914
+ errorCode: 'NTS-DS0-DAD0',
915
+ });
916
+ }
917
+ }
918
+
919
+ restoreDeletedData(id?: string): Promise<void> {
920
+ try {
921
+ if (!id && this.data._id) {
922
+ id = this.data._id;
923
+ }
924
+
925
+ if (!id) {
926
+ throw new DyFM_Error({
927
+ ...this._getDefaultErrorSettings(
928
+ 'restoreDeletedData',
929
+ new Error(`restoreDeletedData failed, ID is missing! (${this.dataParams.dataName})`)
930
+ ),
931
+
932
+ errorCode: 'NTS-DS0-RD1',
933
+ });
934
+ }
935
+
936
+ let archive_DS;
937
+
938
+ try {
939
+ archive_DS = DyNTS_GlobalService.getDBServiceByKey(
940
+ DyNTS_getArchivedDBName(this.dataParams.dataName),
941
+ );
942
+ } catch (error) {}
943
+
944
+ if (archive_DS) {
945
+ throw new DyFM_Error({
946
+ ...this._getDefaultErrorSettings(
947
+ 'restoreDeletedData',
948
+ new Error(
949
+ `restoreDeletedData failed, archive service is setted up, ` +
950
+ `archived restoration not implemented yet! ` +
951
+ `(request implementation, and restore by yourself)`
952
+ )
953
+ ),
954
+
955
+ errorCode: 'NTS-DS0-RD2',
956
+ });
957
+ }
958
+
959
+ return this.dataDBService.restoreDeletedById(id, this.issuer);
960
+ } catch (error) {
961
+ if (error?.errorCode == 'NTS-DS0-RD1') {
962
+ throw error;
963
+ } else {
964
+ throw new DyFM_Error({
965
+ ...this._getDefaultErrorSettings('restoreDeletedData', error),
966
+
967
+ errorCode: 'NTS-DS0-RD0',
968
+ });
969
+ }
970
+ }
971
+ }
972
+
837
973
  /**
838
974
  * validation of data, for modify and create, by the ModelParams
839
975
  */
@@ -975,8 +1111,7 @@ export class DyNTS_DataService<T extends DyFM_Metadata> {
975
1111
  ): DyFM_Error_Settings {
976
1112
  return {
977
1113
  status: (error as DyFM_Error)?.___status ?? 500,
978
- message: (error as Error)?.message ??
979
- (error as DyFM_Error)?._message ??
1114
+ message: (error as Error)?.message ??
980
1115
  `${fnName} was UNSUCCESSFUL (NTS; ${this.dataParams.dataName})`,
981
1116
  addECToUserMsg: !(error as DyFM_Error)?.__userMessage,
982
1117
  userMessage: (error as DyFM_Error)?.__userMessage ?? this.defaultErrorUserMsg,
@@ -992,8 +1127,7 @@ export class DyNTS_DataService<T extends DyFM_Metadata> {
992
1127
  ): DyFM_Error_Settings {
993
1128
  return {
994
1129
  status: (error as DyFM_Error)?.___status ?? 500,
995
- message: (error as Error)?.message ??
996
- (error as DyFM_Error)?._message ??
1130
+ message: (error as Error)?.message ??
997
1131
  `${fnName} was UNSUCCESSFUL (${DyNTS_global_settings.systemShortCodeName})`,
998
1132
  addECToUserMsg: !(error as DyFM_Error)?.__userMessage,
999
1133
  userMessage: (error as DyFM_Error)?.__userMessage ?? this.defaultErrorUserMsg,