@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.
- package/build/_models/types/db-filter.type.d.ts +1 -1
- package/build/_models/types/db-filter.type.d.ts.map +1 -1
- package/build/_modules/socket/_models/socket-presence.control-model.d.ts.map +1 -1
- package/build/_modules/socket/_models/socket-presence.control-model.js +13 -5
- package/build/_modules/socket/_models/socket-presence.control-model.js.map +1 -1
- package/build/_modules/socket/_services/socket-server.service.d.ts +2 -2
- package/build/_modules/socket/_services/socket-server.service.d.ts.map +1 -1
- package/build/_modules/socket/_services/socket-server.service.js +17 -23
- package/build/_modules/socket/_services/socket-server.service.js.map +1 -1
- package/build/_services/base/archive-data.service.d.ts.map +1 -1
- package/build/_services/base/archive-data.service.js +3 -0
- package/build/_services/base/archive-data.service.js.map +1 -1
- package/build/_services/base/data.service.d.ts +9 -3
- package/build/_services/base/data.service.d.ts.map +1 -1
- package/build/_services/base/data.service.js +101 -6
- package/build/_services/base/data.service.js.map +1 -1
- package/build/_services/base/db.service.d.ts +6 -1
- package/build/_services/base/db.service.d.ts.map +1 -1
- package/build/_services/base/db.service.js +133 -114
- package/build/_services/base/db.service.js.map +1 -1
- package/build/_services/base/singleton.service.d.ts.map +1 -1
- package/build/_services/base/singleton.service.js +0 -1
- package/build/_services/base/singleton.service.js.map +1 -1
- package/build/_services/core/global.service.d.ts.map +1 -1
- package/build/_services/core/global.service.js +1 -0
- package/build/_services/core/global.service.js.map +1 -1
- package/package.json +3 -3
- package/src/_models/types/db-filter.type.ts +1 -1
- package/src/_modules/socket/_models/socket-presence.control-model.ts +19 -7
- package/src/_modules/socket/_services/socket-server.service.ts +27 -39
- package/src/_services/base/archive-data.service.ts +4 -0
- package/src/_services/base/data.service.ts +147 -13
- package/src/_services/base/db.service.ts +165 -140
- package/src/_services/base/singleton.service.ts +2 -3
- package/src/_services/core/global.service.ts +1 -0
|
@@ -1,13 +1,19 @@
|
|
|
1
1
|
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
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
|
-
*
|
|
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.
|
|
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
|
-
|
|
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,
|