@futdevpro/nts-dynamo 1.10.2 → 1.10.4

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 (131) hide show
  1. package/build/_collections/global-settings.const.d.ts.map +1 -1
  2. package/build/_collections/global-settings.const.js +2 -0
  3. package/build/_collections/global-settings.const.js.map +1 -1
  4. package/build/_models/control-models/api-call-params.control-model.d.ts +5 -6
  5. package/build/_models/control-models/api-call-params.control-model.d.ts.map +1 -1
  6. package/build/_models/control-models/api-call-params.control-model.js.map +1 -1
  7. package/build/_models/control-models/api-call-params.control-model.spec.js +8 -10
  8. package/build/_models/control-models/api-call-params.control-model.spec.js.map +1 -1
  9. package/build/_models/control-models/endpoint-params.control-model.d.ts +3 -3
  10. package/build/_models/control-models/endpoint-params.control-model.d.ts.map +1 -1
  11. package/build/_models/control-models/endpoint-params.control-model.js +1 -1
  12. package/build/_models/control-models/endpoint-params.control-model.js.map +1 -1
  13. package/build/_models/interfaces/global-log-settings.interface.d.ts +4 -0
  14. package/build/_models/interfaces/global-log-settings.interface.d.ts.map +1 -1
  15. package/build/_models/interfaces/global-settings.interface.d.ts +4 -0
  16. package/build/_models/interfaces/global-settings.interface.d.ts.map +1 -1
  17. package/build/_modules/custom-data/custom-data.controller.js +3 -3
  18. package/build/_modules/custom-data/custom-data.controller.js.map +1 -1
  19. package/build/_modules/mock/app-extended-server.mock.d.ts +3 -3
  20. package/build/_modules/mock/app-extended-server.mock.d.ts.map +1 -1
  21. package/build/_modules/mock/app-extended-server.mock.js +8 -8
  22. package/build/_modules/mock/app-extended-server.mock.js.map +1 -1
  23. package/build/_modules/mock/app-server.mock.d.ts +2 -2
  24. package/build/_modules/mock/app-server.mock.d.ts.map +1 -1
  25. package/build/_modules/mock/app-server.mock.js +6 -6
  26. package/build/_modules/mock/app-server.mock.js.map +1 -1
  27. package/build/_modules/mock/endpoint.mock.d.ts.map +1 -1
  28. package/build/_modules/mock/endpoint.mock.js +7 -7
  29. package/build/_modules/mock/endpoint.mock.js.map +1 -1
  30. package/build/_modules/socket/{_services/app-extended.server.d.ts → app-extended.server.d.ts} +2 -2
  31. package/build/_modules/socket/app-extended.server.d.ts.map +1 -0
  32. package/build/_modules/socket/{_services/app-extended.server.js → app-extended.server.js} +6 -6
  33. package/build/_modules/socket/app-extended.server.js.map +1 -0
  34. package/build/_modules/socket/app-extended.server.spec.d.ts.map +1 -0
  35. package/build/_modules/socket/{_services/app-extended.server.spec.js → app-extended.server.spec.js} +5 -5
  36. package/build/_modules/socket/app-extended.server.spec.js.map +1 -0
  37. package/build/_modules/socket/index.d.ts +1 -1
  38. package/build/_modules/socket/index.d.ts.map +1 -1
  39. package/build/_modules/socket/index.js +1 -1
  40. package/build/_modules/socket/index.js.map +1 -1
  41. package/build/_modules/test/test.controller.d.ts.map +1 -1
  42. package/build/_modules/test/test.controller.js +8 -8
  43. package/build/_modules/test/test.controller.js.map +1 -1
  44. package/build/_modules/usage/usage.controller.d.ts.map +1 -1
  45. package/build/_modules/usage/usage.controller.js +5 -5
  46. package/build/_modules/usage/usage.controller.js.map +1 -1
  47. package/build/_services/base/data.service.d.ts +9 -5
  48. package/build/_services/base/data.service.d.ts.map +1 -1
  49. package/build/_services/base/data.service.js +48 -32
  50. package/build/_services/base/data.service.js.map +1 -1
  51. package/build/_services/base/db.service.d.ts +6 -1
  52. package/build/_services/base/db.service.d.ts.map +1 -1
  53. package/build/_services/base/db.service.js +54 -14
  54. package/build/_services/base/db.service.js.map +1 -1
  55. package/build/_services/core/api.service.d.ts.map +1 -1
  56. package/build/_services/core/api.service.js +15 -18
  57. package/build/_services/core/api.service.js.map +1 -1
  58. package/build/_services/core/api.service.spec.js +6 -8
  59. package/build/_services/core/api.service.spec.js.map +1 -1
  60. package/build/_services/core/global.service.d.ts.map +1 -1
  61. package/build/_services/core/global.service.js +9 -1
  62. package/build/_services/core/global.service.js.map +1 -1
  63. package/build/_services/route/controller.service.d.ts +3 -3
  64. package/build/_services/route/controller.service.js +2 -2
  65. package/build/_services/route/controller.service.spec.js +2 -2
  66. package/build/_services/route/controller.service.spec.js.map +1 -1
  67. package/build/_services/route/routing-module.service.d.ts +1 -1
  68. package/build/_services/route/routing-module.service.d.ts.map +1 -1
  69. package/build/_services/route/routing-module.service.js +10 -11
  70. package/build/_services/route/routing-module.service.js.map +1 -1
  71. package/build/_services/route/routing-module.service.spec.js +1 -2
  72. package/build/_services/route/routing-module.service.spec.js.map +1 -1
  73. package/build/_services/server/app.server.d.ts +25 -0
  74. package/build/_services/server/app.server.d.ts.map +1 -1
  75. package/build/_services/server/app.server.js +1 -4
  76. package/build/_services/server/app.server.js.map +1 -1
  77. package/build/_services/server/app.server.spec.js +4 -1
  78. package/build/_services/server/app.server.spec.js.map +1 -1
  79. package/build/_services/server/env-set.d.ts +2 -0
  80. package/build/_services/server/env-set.d.ts.map +1 -0
  81. package/build/_services/server/env-set.js +20 -0
  82. package/build/_services/server/env-set.js.map +1 -0
  83. package/build/index.d.ts +1 -2
  84. package/build/index.d.ts.map +1 -1
  85. package/build/index.js +1 -3
  86. package/build/index.js.map +1 -1
  87. package/package.json +14 -18
  88. package/src/_collections/global-settings.const.ts +2 -0
  89. package/src/_models/control-models/api-call-params.control-model.spec.ts +10 -11
  90. package/src/_models/control-models/api-call-params.control-model.ts +5 -7
  91. package/src/_models/control-models/endpoint-params.control-model.ts +6 -5
  92. package/src/_models/interfaces/global-log-settings.interface.ts +5 -0
  93. package/src/_models/interfaces/global-settings.interface.ts +5 -0
  94. package/src/_modules/custom-data/custom-data.controller.ts +3 -3
  95. package/src/_modules/mock/app-extended-server.mock.ts +13 -13
  96. package/src/_modules/mock/app-server.mock.ts +10 -10
  97. package/src/_modules/mock/endpoint.mock.ts +8 -8
  98. package/src/_modules/socket/{_services/app-extended.server.spec.ts → app-extended.server.spec.ts} +7 -7
  99. package/src/_modules/socket/{_services/app-extended.server.ts → app-extended.server.ts} +18 -13
  100. package/src/_modules/socket/index.ts +1 -1
  101. package/src/_modules/test/test.controller.ts +10 -10
  102. package/src/_modules/usage/usage.controller.ts +5 -6
  103. package/src/_services/base/data.service.ts +81 -35
  104. package/src/_services/base/db.service.ts +63 -11
  105. package/src/_services/core/api.service.spec.ts +17 -10
  106. package/src/_services/core/api.service.ts +16 -16
  107. package/src/_services/core/global.service.ts +9 -1
  108. package/src/_services/route/controller.service.spec.ts +3 -2
  109. package/src/_services/route/controller.service.ts +3 -3
  110. package/src/_services/route/routing-module.service.spec.ts +5 -5
  111. package/src/_services/route/routing-module.service.ts +20 -19
  112. package/src/_services/server/app.server.spec.ts +7 -2
  113. package/src/_services/server/app.server.ts +2 -2
  114. package/src/_services/server/env-set.ts +21 -0
  115. package/src/index.ts +1 -4
  116. package/tsconfig.json +1 -1
  117. package/build/_enums/http/http-call-type.enum.d.ts +0 -12
  118. package/build/_enums/http/http-call-type.enum.d.ts.map +0 -1
  119. package/build/_enums/http/http-call-type.enum.js +0 -16
  120. package/build/_enums/http/http-call-type.enum.js.map +0 -1
  121. package/build/_enums/http/http-response-type.enum.d.ts +0 -7
  122. package/build/_enums/http/http-response-type.enum.d.ts.map +0 -1
  123. package/build/_enums/http/http-response-type.enum.js +0 -11
  124. package/build/_enums/http/http-response-type.enum.js.map +0 -1
  125. package/build/_modules/socket/_services/app-extended.server.d.ts.map +0 -1
  126. package/build/_modules/socket/_services/app-extended.server.js.map +0 -1
  127. package/build/_modules/socket/_services/app-extended.server.spec.d.ts.map +0 -1
  128. package/build/_modules/socket/_services/app-extended.server.spec.js.map +0 -1
  129. package/src/_enums/http/http-call-type.enum.ts +0 -12
  130. package/src/_enums/http/http-response-type.enum.ts +0 -7
  131. /package/build/_modules/socket/{_services/app-extended.server.spec.d.ts → app-extended.server.spec.d.ts} +0 -0
@@ -163,6 +163,9 @@ export class DyNTS_DataService<T extends DyFM_Metadata> {
163
163
  * also if dontSetToService is false or not setted,
164
164
  * the data will be saved to the service, even if its not found
165
165
  *
166
+ * if the data is not found, it will try to find it from the archive
167
+ * unless skipArchiveLoad is set to true
168
+ *
166
169
  * @remarks
167
170
  * If you need to get-save a data, if possible,
168
171
  * use db-service update instead.
@@ -173,9 +176,15 @@ export class DyNTS_DataService<T extends DyFM_Metadata> {
173
176
  *
174
177
  * @return {T} data: T
175
178
  */
176
- async getDataById(id?: string, dontSetToService?: boolean): Promise<T> {
179
+ async getDataById(
180
+ id?: string,
181
+ dontSetToService?: boolean,
182
+ skipArchiveLoad?: boolean
183
+ ): Promise<T> {
177
184
  try {
178
- if (!id && !this.data._id) {
185
+ id = id ?? this.data?._id;
186
+
187
+ if (!id) {
179
188
  throw new DyFM_Error({
180
189
  ...this._getDefaultErrorSettings(
181
190
  'getDataById',
@@ -190,7 +199,13 @@ export class DyNTS_DataService<T extends DyFM_Metadata> {
190
199
  });
191
200
  }
192
201
 
193
- const dataExists: T = await this.dataDBService.getDataById(id ?? this.data._id);
202
+ let dataExists: T = await this.dataDBService.getDataById(id);
203
+
204
+ if (this.haveArchiveDataService && !skipArchiveLoad) {
205
+ const archiveDataService: DyNTS_ArchiveDataService<T> = this.getArchiveDataService();
206
+
207
+ dataExists = await archiveDataService.getDataByOriginalId(id, true);
208
+ }
194
209
 
195
210
  if (!dontSetToService) {
196
211
  this.data = dataExists;
@@ -875,6 +890,17 @@ export class DyNTS_DataService<T extends DyFM_Metadata> {
875
890
 
876
891
  this.data = await this.getDataById(id, true);
877
892
 
893
+ if (!this.data) {
894
+ throw new DyFM_Error({
895
+ ...this._getDefaultErrorSettings(
896
+ 'deleteData',
897
+ new Error(`deleteData failed, data not found! (${this.dataParams.dataName})`)
898
+ ),
899
+
900
+ errorCode: 'NTS-DS0-DD2',
901
+ });
902
+ }
903
+
878
904
  if (this.haveArchiveDataService) {
879
905
  const archive_DS: DyNTS_DataService<T> = this.getArchiveDataService();
880
906
 
@@ -1088,38 +1114,44 @@ export class DyNTS_DataService<T extends DyFM_Metadata> {
1088
1114
  }
1089
1115
  }
1090
1116
 
1091
- async searchData(query?: DyFM_SearchQuery<T>): Promise<DyFM_SearchResult<T>> {
1117
+ async searchData(query?: DyFM_SearchQuery<T>, dataList?: T[]): Promise<DyFM_SearchResult<T>> {
1092
1118
  try {
1093
- /* if (!query || Object.keys(query).length === 0) {
1094
- console.log('T1');
1095
- const allData: T[] = await this.getAll();
1119
+ const searchResult = await this.sortAndFilterDataList(query, dataList);
1096
1120
 
1097
- return {
1098
- results: allData,
1099
- totalItems: allData.length,
1100
- };
1101
- } */
1121
+ if (query.page !== undefined && query.pageSize !== undefined) {
1122
+ const start = query.page * query.pageSize;
1123
+ const end = start + query.pageSize;
1124
+
1125
+ searchResult.results = searchResult.results.slice(start, end);
1126
+ }
1102
1127
 
1128
+ return searchResult;
1129
+ } catch (error) {
1130
+ throw new DyFM_Error({
1131
+ ...this._getDefaultErrorSettings('searchData', error),
1132
+
1133
+ errorCode: 'NTS-DS0-SD0',
1134
+ });
1135
+ }
1136
+ }
1137
+
1138
+ async sortAndFilterDataList(
1139
+ query: DyFM_SearchQuery<T>,
1140
+ dataList?: T[]
1141
+ ): Promise<DyFM_SearchResult<T>> {
1142
+ try {
1103
1143
  if (!query.filterBy) {
1104
1144
  query.filterBy = {};
1105
1145
  }
1106
-
1107
- /* if (!query.page && !query.pageSize && !query.sortBy) {
1108
- console.log('T2');
1109
- const dataFindResult: T[] = await this.dataDBService.find(query.filterBy);
1110
-
1111
- return {
1112
- results: dataFindResult,
1113
- totalItems: dataFindResult.length,
1114
- };
1115
- } */
1116
1146
 
1117
1147
  if (!query.page) {
1118
1148
  query.page = 0;
1119
1149
  }
1120
1150
 
1121
1151
  if (!query.pageSize) {
1122
- DyFM_Log.warn('searchData pageSize is not setted, setting to 10.');
1152
+ DyFM_Log.warn(
1153
+ `searchData pageSize is not setted, setting to ${DyNTS_global_settings.defaultPageSize}.`
1154
+ );
1123
1155
  query.pageSize = DyNTS_global_settings.defaultPageSize;
1124
1156
  }
1125
1157
 
@@ -1127,16 +1159,12 @@ export class DyNTS_DataService<T extends DyFM_Metadata> {
1127
1159
  query.sortBy = [{ key: '__lastModified', order: -1 }];
1128
1160
  }
1129
1161
 
1130
- console.log('T3');
1131
- /* const dataFindWithPagingResult: T[] = await this.dataDBService.findWithPaging(
1132
- query.filterBy,
1133
- query.page,
1134
- query.pageSize,
1135
- query.sortBy
1136
- ); */
1137
1162
  query.sortBy.reverse();
1138
-
1139
- let dataList: T[] = await this.getAll();
1163
+
1164
+ if (!dataList) {
1165
+ dataList = await this.getAll();
1166
+ }
1167
+
1140
1168
  const filterKeys = Object.keys(query.filterBy);
1141
1169
  const filterFunctionsByKey: { [key: string]: (dataProperty) => boolean } = {};
1142
1170
 
@@ -1169,7 +1197,7 @@ export class DyNTS_DataService<T extends DyFM_Metadata> {
1169
1197
  }
1170
1198
  }
1171
1199
 
1172
- private getFilterFunctionForKey<T>(
1200
+ protected getFilterFunctionForKey<T>(
1173
1201
  key: string,
1174
1202
  searchValue: T | T[] | DyFM_RangeValue<T>,
1175
1203
  ): (dataProperty) => boolean {
@@ -1201,9 +1229,27 @@ export class DyNTS_DataService<T extends DyFM_Metadata> {
1201
1229
  });
1202
1230
  }
1203
1231
 
1232
+
1204
1233
  switch (this.dataParams.properties[key].type) {
1205
1234
  case 'String':
1206
- return (dataProperty): boolean => dataProperty.includes(searchValue);
1235
+ if (typeof searchValue !== 'string') {
1236
+ throw new DyFM_Error({
1237
+ ...this._getDefaultErrorSettings(
1238
+ 'getFilterFunctionForKey',
1239
+ new Error(
1240
+ `getFilterFunctionForKey failed, searchValue is not a string! ` +
1241
+ `(${this.dataParams.dataName})`
1242
+ )
1243
+ ),
1244
+
1245
+ errorCode: 'NTS-DS0-GFF3',
1246
+ });
1247
+ }
1248
+
1249
+ const lowerCaseSearchValue: string = (searchValue as string).toLowerCase();
1250
+
1251
+ return (dataProperty): boolean =>
1252
+ (dataProperty as string).toLowerCase().includes(lowerCaseSearchValue);
1207
1253
 
1208
1254
  case 'Date':
1209
1255
  if ((searchValue as DyFM_RangeValue).isRange) {
@@ -1268,7 +1314,7 @@ export class DyNTS_DataService<T extends DyFM_Metadata> {
1268
1314
  }
1269
1315
  }
1270
1316
 
1271
- private getSortFunctionForKey<T>(
1317
+ protected getSortFunctionForKey<T>(
1272
1318
  key: string,
1273
1319
  sortDirection: 1 | -1 | 'asc' | 'desc' | 'ascending' | 'descending'
1274
1320
  ): (a: T, b: T) => number {
@@ -1009,14 +1009,18 @@ export class DyNTS_DBService<T extends DyFM_Metadata> {
1009
1009
  */
1010
1010
  private getSchema(): mongoose.Schema {
1011
1011
  this.dataParams.properties = this.addMetadataToProperties(this.dataParams.properties);
1012
+
1013
+ if (this.dataParams.dataName.includes(DyNTS_archiveSuffix)) {
1014
+ this.dataParams.properties = this.addArchiveMetadataToProperties(this.dataParams.properties);
1015
+ }
1012
1016
 
1013
- let schema: any = this.buildMongooseSchemaByModelParams(this.dataParams.properties);
1017
+ const schema: any = this.buildMongooseSchemaByModelParams(this.dataParams.properties);
1014
1018
 
1015
1019
  /* schema = this.addMetadataToSchema(schema); */
1016
1020
 
1017
- if (this.dataParams.dataName.includes(DyNTS_archiveSuffix)) {
1021
+ /* if (this.dataParams.dataName.includes(DyNTS_archiveSuffix)) {
1018
1022
  schema = this.addArchiveMetadataToSchema(schema);
1019
- }
1023
+ } */
1020
1024
 
1021
1025
  if (schema['_id']) {
1022
1026
  delete schema['_id'];
@@ -1044,12 +1048,34 @@ export class DyNTS_DBService<T extends DyFM_Metadata> {
1044
1048
  return;
1045
1049
  }
1046
1050
 
1051
+ if (!property.key) {
1052
+ throw new DyFM_Error({
1053
+ ...this._getDefaultErrorSettings(
1054
+ 'buildMongooseSchemaByModelParams',
1055
+ new Error(
1056
+ `property.key is undefined on ${this.dataParams.dbName} (NTS DB)` +
1057
+ `(keys: ${Object.keys(properties)})`
1058
+ )
1059
+ ),
1060
+ errorCode: 'NTS-DBS-BMSBP0',
1061
+ additionalContent: {
1062
+ property,
1063
+ dataParams: this.dataParams,
1064
+ },
1065
+ });
1066
+ }
1067
+
1047
1068
  const beType = this.getBEType(property.type);
1048
1069
 
1070
+ /* TODO if (beType === Array && property.archiveable && !property.archiveListAfter) {
1071
+ property.archiveListAfter = DyNTS_global_settings.archiveListAfter;
1072
+ } */
1073
+
1049
1074
  if (
1050
1075
  beType !== Object ||
1051
1076
  !property?.subObjectParams ||
1052
- (property?.subObjectParams && Object.keys(property.subObjectParams).length == 0)
1077
+ (property?.subObjectParams &&
1078
+ Object.keys(property.subObjectParams).length == 0)
1053
1079
  ) {
1054
1080
  schemaSettingsObj[property.key] = {
1055
1081
  type: beType,
@@ -1132,39 +1158,65 @@ export class DyNTS_DBService<T extends DyFM_Metadata> {
1132
1158
  return schema;
1133
1159
  } */
1134
1160
 
1161
+ /**
1162
+ * adds dynamo metadata settings to any mongoose schema building settings object
1163
+ * @param properties properties to update
1164
+ * @returns updated properties
1165
+ */
1135
1166
  private addMetadataToProperties(properties: DyFM_DataProperties<T>): DyFM_DataProperties<T> {
1167
+ // TOD: ezek a kikommentelt "required: true"-k kellenek, csak félő, hogy gondokat okoznak a
1168
+ // jelenlegi rendszerekben, ezért akkor kell majd visszarakni, ha lesz tesztelői ÉS fejlesztői kapacitás rá
1136
1169
  if (!properties.__created) {
1137
- properties.__created = { type: 'Date' };
1170
+ properties.__created = { key: '__created', type: 'Date'/* , required: true */ };
1138
1171
  }
1139
1172
 
1140
1173
  if (!properties.__createdBy) {
1141
- properties.__createdBy = { type: 'String' };
1174
+ properties.__createdBy = { key: '__createdBy', type: 'string'/* , required: true */ };
1142
1175
  }
1143
1176
 
1144
1177
  if (!properties.__lastModified) {
1145
- properties.__lastModified = { type: 'Date' };
1178
+ properties.__lastModified = { key: '__lastModified', type: 'Date'/* , required: true */ };
1146
1179
  }
1147
1180
 
1148
1181
  if (!properties.__lastModifiedBy) {
1149
- properties.__lastModifiedBy = { type: 'String' };
1182
+ properties.__lastModifiedBy = { key: '__lastModifiedBy', type: 'string'/* , required: true */ };
1150
1183
  }
1151
1184
 
1152
1185
  if (!properties._deleted) {
1153
- properties._deleted = { type: 'Date' };
1186
+ properties._deleted = { key: '_deleted', type: 'Date' };
1154
1187
  }
1155
1188
 
1156
1189
  if (!properties._deletedBy) {
1157
- properties._deletedBy = { type: 'String' };
1190
+ properties._deletedBy = { key: '_deletedBy', type: 'string' };
1158
1191
  }
1159
1192
 
1160
1193
  return properties;
1161
1194
  }
1162
1195
 
1163
- private addArchiveMetadataToSchema(schema: any): any {
1196
+ /* private addArchiveMetadataToSchema(schema: any): any {
1164
1197
  schema._originalId = { type: String, required: true, index: true, unique: true };
1165
1198
  schema._archived = { type: Date, required: true };
1166
1199
 
1167
1200
  return schema;
1201
+ } */
1202
+
1203
+ private addArchiveMetadataToProperties(
1204
+ properties: DyFM_DataProperties<T>
1205
+ ): DyFM_DataProperties<T> {
1206
+ if (!properties._originalId) {
1207
+ properties._originalId = {
1208
+ key: '_originalId', type: 'string',
1209
+ required: true, index: true, unique: true,
1210
+ };
1211
+ }
1212
+
1213
+ if (!properties._archived) {
1214
+ properties._archived = {
1215
+ key: '_archived', type: 'Date', required: true,
1216
+ };
1217
+ }
1218
+
1219
+ return properties;
1168
1220
  }
1169
1221
 
1170
1222
  /**
@@ -1,11 +1,11 @@
1
1
 
2
- import { DyNTS_ApiService, DyNTS_ApiCallInput_Params } from './api.service';
3
- import { DyNTS_ApiCall_Params } from '../../_models/control-models/api-call-params.control-model';
4
- import { DyNTS_HttpCallType } from '../../_enums/http/http-call-type.enum';
5
- import { DyNTS_HttpResponseType } from '../../_enums/http/http-response-type.enum';
6
- import { DyFM_Error } from '@futdevpro/fsm-dynamo';
7
2
  import Axios from 'axios';
8
3
 
4
+ import { DyFM_Error, DyFM_HttpCallType, DyFM_HttpResponseType } from '@futdevpro/fsm-dynamo';
5
+
6
+ import { DyNTS_ApiCall_Params } from '../../_models/control-models/api-call-params.control-model';
7
+ import { DyNTS_ApiCallInput_Params, DyNTS_ApiService } from './api.service';
8
+
9
9
  describe('DyNTS_ApiService', () => {
10
10
  let callParams: DyNTS_ApiCall_Params;
11
11
  let inputParams: DyNTS_ApiCallInput_Params;
@@ -14,10 +14,10 @@ describe('DyNTS_ApiService', () => {
14
14
  callParams = {
15
15
  baseUrl: 'http://example.com',
16
16
  endPoint: '/api/test',
17
- type: DyNTS_HttpCallType.get,
17
+ type: DyFM_HttpCallType.get,
18
18
  httpOptions: {
19
19
  headers: {},
20
- responseType: DyNTS_HttpResponseType.json,
20
+ responseType: DyFM_HttpResponseType.json,
21
21
  },
22
22
  name: 'Test API Call',
23
23
  getFullResponse: false,
@@ -30,29 +30,33 @@ describe('DyNTS_ApiService', () => {
30
30
  });
31
31
 
32
32
  it('should make a GET request successfully', async () => {
33
- callParams.type = DyNTS_HttpCallType.get;
33
+ callParams.type = DyFM_HttpCallType.get;
34
34
  const response = { data: { success: true } };
35
+
35
36
  spyOn(Axios, 'create').and.returnValue({
36
37
  get: jasmine.createSpy().and.returnValue(Promise.resolve(response)),
37
38
  } as any);
38
39
 
39
40
  const result = await DyNTS_ApiService.startApiCall(callParams, inputParams);
41
+
40
42
  expect(result).toEqual(response.data);
41
43
  });
42
44
 
43
45
  it('should handle a POST request successfully', async () => {
44
- callParams.type = DyNTS_HttpCallType.post;
46
+ callParams.type = DyFM_HttpCallType.post;
45
47
  const response = { data: { success: true } };
48
+
46
49
  spyOn(Axios, 'create').and.returnValue({
47
50
  post: jasmine.createSpy().and.returnValue(Promise.resolve(response)),
48
51
  } as any);
49
52
 
50
53
  const result = await DyNTS_ApiService.startApiCall(callParams, inputParams);
54
+
51
55
  expect(result).toEqual(response.data);
52
56
  });
53
57
 
54
58
  it('should throw an error for unsupported HTTP method', async () => {
55
- callParams.type = 'unsupported' as DyNTS_HttpCallType;
59
+ callParams.type = 'unsupported' as DyFM_HttpCallType;
56
60
 
57
61
  await expectAsync(DyNTS_ApiService.startApiCall(callParams, inputParams)).toBeRejectedWith(
58
62
  jasmine.any(DyFM_Error)
@@ -63,6 +67,7 @@ describe('DyNTS_ApiService', () => {
63
67
  const errorResponse = {
64
68
  response: { data: { flag: 'DYNAMO', message: 'Error' } },
65
69
  };
70
+
66
71
  spyOn(Axios, 'create').and.returnValue({
67
72
  get: jasmine.createSpy().and.returnValue(Promise.reject(errorResponse)),
68
73
  } as any);
@@ -74,6 +79,7 @@ describe('DyNTS_ApiService', () => {
74
79
 
75
80
  it('should handle DNS error', async () => {
76
81
  const error = { code: 'ENOTFOUND' };
82
+
77
83
  spyOn(Axios, 'create').and.returnValue({
78
84
  get: jasmine.createSpy().and.returnValue(Promise.reject(error)),
79
85
  } as any);
@@ -85,6 +91,7 @@ describe('DyNTS_ApiService', () => {
85
91
 
86
92
  it('should handle connection refused error', async () => {
87
93
  const error = { code: 'ECONNREFUSED' };
94
+
88
95
  spyOn(Axios, 'create').and.returnValue({
89
96
  get: jasmine.createSpy().and.returnValue(Promise.reject(error)),
90
97
  } as any);
@@ -1,12 +1,13 @@
1
1
 
2
+ import * as Axios from 'axios';
3
+
2
4
  import {
3
- DyFM_AnyError, DyFM_Error, DyFM_Error_Settings, DyFM_Log
5
+ DyFM_AnyError, DyFM_Error, DyFM_Error_Settings,
6
+ DyFM_HttpCallType, DyFM_HttpResponseType,
7
+ DyFM_Log
4
8
  } from '@futdevpro/fsm-dynamo';
5
- import * as Axios from 'axios';
6
9
 
7
10
  import { DyNTS_global_settings } from '../../_collections/global-settings.const';
8
- import { DyNTS_HttpCallType } from '../../_enums/http/http-call-type.enum';
9
- import { DyNTS_HttpResponseType } from '../../_enums/http/http-response-type.enum';
10
11
  import {
11
12
  DyNTS_ApiCall_Params
12
13
  } from '../../_models/control-models/api-call-params.control-model';
@@ -75,7 +76,7 @@ export class DyNTS_ApiService {
75
76
  }
76
77
 
77
78
  switch (callParams.type) {
78
- case DyNTS_HttpCallType.get:
79
+ case DyFM_HttpCallType.get:
79
80
  if (inputParams?.body) {
80
81
  DyFM_Log.warn(`WARNING you cant send body in get calls (${callParams.name})`);
81
82
  }
@@ -83,7 +84,7 @@ export class DyNTS_ApiService {
83
84
  a = await this.get<T_Response>(axios, url, callParams);
84
85
  break;
85
86
 
86
- case DyNTS_HttpCallType.delete:
87
+ case DyFM_HttpCallType.delete:
87
88
  if (inputParams?.body) {
88
89
  DyFM_Log.warn('WARNING you cant send body in delete calls');
89
90
  }
@@ -91,9 +92,9 @@ export class DyNTS_ApiService {
91
92
  a = await this.delete<T_Response>(axios, url, callParams);
92
93
  break;
93
94
 
94
- case DyNTS_HttpCallType.post:
95
- case DyNTS_HttpCallType.put:
96
- case DyNTS_HttpCallType.patch:
95
+ case DyFM_HttpCallType.post:
96
+ case DyFM_HttpCallType.put:
97
+ case DyFM_HttpCallType.patch:
97
98
  if (!inputParams?.body) {
98
99
  if (!inputParams) {
99
100
  inputParams = {};
@@ -109,7 +110,7 @@ export class DyNTS_ApiService {
109
110
  throw new DyFM_Error({
110
111
  ...this._getDefaultErrorSettings(
111
112
  'startApiCall',
112
- new Error('wrong api call type')
113
+ new Error(`unknown api call type: ${callParams.type}`)
113
114
  ),
114
115
  errorCode: 'NTS-API-SAC0',
115
116
  additionalContent: {
@@ -117,16 +118,15 @@ export class DyNTS_ApiService {
117
118
  inputParams,
118
119
  },
119
120
  });
120
- //DyFM_Log.error('DYNAMO-NTS ERROR: \n wrong api call type'/* , '\n\n', new Error() */);
121
- break;
122
121
  }
123
122
 
124
- if (callParams.getFullResponse) {
125
- return a as T_Response /* Axios.AxiosResponse */;
123
+ return a;
124
+ /* if (callParams.getFullResponse) {
125
+ return a as T_Response Axios.AxiosResponse;
126
126
 
127
127
  } else {
128
128
  return a as T_Response;
129
- }
129
+ } */
130
130
  } catch (error) {
131
131
  this.handleError<T_Body>(callParams, error, inputParams);
132
132
  }
@@ -176,7 +176,7 @@ export class DyNTS_ApiService {
176
176
  DyFM_Log.error(`\ncallParams:`, callParams);
177
177
  }
178
178
 
179
- if (error && callParams?.httpOptions?.responseType === DyNTS_HttpResponseType.text) {
179
+ if (error && callParams?.httpOptions?.responseType === DyFM_HttpResponseType.text) {
180
180
  error.error = JSON.parse(error?.error);
181
181
  }
182
182
 
@@ -7,6 +7,7 @@ import {
7
7
  DyFM_DataModel_Params,
8
8
  DyFM_Error,
9
9
  DyFM_Error_Settings,
10
+ DyFM_global_settings,
10
11
  DyFM_Log,
11
12
  DyFM_Metadata
12
13
  } from '@futdevpro/fsm-dynamo';
@@ -111,6 +112,9 @@ export class DyNTS_GlobalService extends DyNTS_SingletonService {
111
112
  const archiveModel: DyFM_DataModel_Params<any> = new DyFM_DataModel_Params<any>({
112
113
  ...dbModel,
113
114
  dataName: DyNTS_getArchivedDBName(dbModel.dataName),
115
+ properties: {
116
+ ...dbModel.properties,
117
+ },
114
118
  });
115
119
 
116
120
  dbModels.push(archiveModel);
@@ -136,7 +140,11 @@ export class DyNTS_GlobalService extends DyNTS_SingletonService {
136
140
  try {
137
141
  this.instance.dbServiceCollection[dbModel.dataName] = new DyNTS_DBService(dbModel);
138
142
  } catch (error) {
139
- DyFM_Log.error(`Failed to create DyNTS_DBService (${dbModel.dataName}).`, error);
143
+ if (error instanceof DyFM_Error && !DyFM_global_settings.log_settings.highDetailedLogs) {
144
+ error.logSimple(`Failed to create DyNTS_DBService (${dbModel.dataName}).`);
145
+ } else {
146
+ DyFM_Log.error(`Failed to create DyNTS_DBService (${dbModel.dataName}).`, error);
147
+ }
140
148
 
141
149
  throw new DyFM_Error({
142
150
  ...this.getDefaultErrorSettings('setDBServices', error, 'DyNTS_GlobalService'),
@@ -1,5 +1,6 @@
1
1
 
2
- import { DyNTS_HttpCallType } from '../../_enums/http/http-call-type.enum';
2
+ import { DyFM_HttpCallType } from '@futdevpro/fsm-dynamo';
3
+
3
4
  import { DyNTS_Endpoint_Params } from '../../_models/control-models/endpoint-params.control-model';
4
5
  import { DyNTS_Controller } from './controller.service';
5
6
 
@@ -8,7 +9,7 @@ class TestController extends DyNTS_Controller {
8
9
  this.endpoints = [
9
10
  new DyNTS_Endpoint_Params({
10
11
  name: 'testEndpoint',
11
- type: DyNTS_HttpCallType.get,
12
+ type: DyFM_HttpCallType.get,
12
13
  endpoint: '/test-endpoint',
13
14
  preProcesses: [],
14
15
  tasks: [
@@ -25,7 +25,7 @@ import { DyNTS_SingletonService } from '../base/singleton.service';
25
25
  * this.endpoints = [
26
26
  * new DyNTS_Endpoint_Params({
27
27
  * name: 'getUserMatchStatistics',
28
- * type: DyNX_HttpCallType.get,
28
+ * type: DyFM_HttpCallType.get,
29
29
  * endpoint: '/get/user-match-statistics/:userId',
30
30
  * preProcesses: [ this.authService.authenticate_tokenSelf ],
31
31
  * tasks: [
@@ -56,7 +56,7 @@ export abstract class DyNTS_Controller extends DyNTS_SingletonService {
56
56
  * this.endpoints = [
57
57
  * new DyNTS_Endpoint_Params({
58
58
  * name: 'getUserMatchStatistics',
59
- * type: DyNX_HttpCallType.get,
59
+ * type: DyFM_HttpCallType.get,
60
60
  * endpoint: '/get/user-match-statistics/:userId',
61
61
  * preProcesses: [ this.authService.authenticate_tokenSelf ],
62
62
  * tasks: [
@@ -104,7 +104,7 @@ export abstract class DyNTS_Controller extends DyNTS_SingletonService {
104
104
  * this.endpoints = [
105
105
  * new DyNTS_Endpoint_Params({
106
106
  * name: 'getUserMatchStatistics',
107
- * type: DyNX_HttpCallType.get,
107
+ * type: DyFM_HttpCallType.get,
108
108
  * endpoint: '/get/user-match-statistics/:userId',
109
109
  * preProcesses: [ this.authService.authenticate_tokenSelf ],
110
110
  * tasks: [
@@ -1,6 +1,6 @@
1
1
 
2
- import { DyFM_Error } from '@futdevpro/fsm-dynamo';
3
- import { DyNTS_HttpCallType } from '../../_enums/http/http-call-type.enum';
2
+ import { DyFM_Error, DyFM_HttpCallType } from '@futdevpro/fsm-dynamo';
3
+
4
4
  import { DyNTS_RouteSecurity } from '../../_enums/route-security.enum';
5
5
  import { DyNTS_Endpoint_Params } from '../../_models/control-models/endpoint-params.control-model';
6
6
  import {
@@ -22,7 +22,7 @@ describe('DyNTS_RoutingModule', () => {
22
22
 
23
23
  mockEndpoint = {
24
24
  endpoint: '/test',
25
- type: DyNTS_HttpCallType.get,
25
+ type: DyFM_HttpCallType.get,
26
26
  getFullExecution: jasmine.createSpy('getFullExecution'),
27
27
  security: DyNTS_RouteSecurity.open,
28
28
  } as any as DyNTS_Endpoint_Params;
@@ -65,12 +65,12 @@ describe('DyNTS_RoutingModule', () => {
65
65
  });
66
66
 
67
67
  xit('should throw error for invalid route type in open route', () => {
68
- mockEndpoint.type = 'invalid' as DyNTS_HttpCallType;
68
+ mockEndpoint.type = 'invalid' as DyFM_HttpCallType;
69
69
  expect(() => routingModule['mountOpenRoute'](mockEndpoint)).toThrow(DyFM_Error);
70
70
  });
71
71
 
72
72
  xit('should throw error for invalid route type in secure route', () => {
73
- mockEndpoint.type = 'invalid' as DyNTS_HttpCallType;
73
+ mockEndpoint.type = 'invalid' as DyFM_HttpCallType;
74
74
  expect(() => routingModule['mountSecureRoute'](mockEndpoint)).toThrow(DyFM_Error);
75
75
  });
76
76