Fix incoming message error handling
[e-mobility-charging-stations-simulator.git] / src / performance / storage / Storage.ts
index 80906699dff10ce6667f05a8c73eb59e53de6208..c4a0ce9c5669d2516554d161b11f8234a8e08c09 100644 (file)
@@ -2,10 +2,12 @@
 
 import { DBName, StorageType } from '../../types/Storage';
 
+import { EmptyObject } from '../../types/EmptyObject';
+import { HandleErrorParams } from '../../types/Error';
 import Statistics from '../../types/Statistics';
 import { URL } from 'url';
 import Utils from '../../utils/Utils';
-import getLogger from '../../utils/Logger';
+import logger from '../../utils/Logger';
 
 export abstract class Storage {
   protected readonly storageUri: URL;
@@ -17,8 +19,11 @@ export abstract class Storage {
     this.logPrefix = logPrefix;
   }
 
-  protected handleDBError(type: StorageType, error: Error, table?: string): void {
-    getLogger().error(`${this.logPrefix} ${this.getDBNameFromStorageType(type)} error '${error.message}'${(!Utils.isNullOrUndefined(table) || !table) && ` in table or collection '${table}'`}: %j`, error);
+  protected handleDBError(type: StorageType, error: Error, table?: string, params: HandleErrorParams<EmptyObject> = { throwError: false }): void {
+    logger.error(`${this.logPrefix} ${this.getDBNameFromStorageType(type)} error '${error.message}'${(!Utils.isNullOrUndefined(table) || !table) && ` in table or collection '${table}'`}: %j`, error);
+    if (params?.throwError) {
+      throw error;
+    }
   }
 
   protected getDBNameFromStorageType(type: StorageType): DBName {