X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Fperformance%2Fstorage%2FStorage.ts;h=d85d8c415efdd1b254694976597bfd722af4c42d;hb=6c1761d470507ea23d186be61b94ca7375c5144a;hp=80906699dff10ce6667f05a8c73eb59e53de6208;hpb=bc464bb1fb95c50a14b25478d35be76b7d8e5498;p=e-mobility-charging-stations-simulator.git diff --git a/src/performance/storage/Storage.ts b/src/performance/storage/Storage.ts index 80906699..d85d8c41 100644 --- a/src/performance/storage/Storage.ts +++ b/src/performance/storage/Storage.ts @@ -1,11 +1,13 @@ // Copyright Jerome Benoit. 2021. All Rights Reserved. -import { DBName, StorageType } from '../../types/Storage'; - -import Statistics from '../../types/Statistics'; import { URL } from 'url'; + +import type { EmptyObject } from '../../types/EmptyObject'; +import type { HandleErrorParams } from '../../types/Error'; +import type Statistics from '../../types/Statistics'; +import { DBName, StorageType } from '../../types/Storage'; +import logger from '../../utils/Logger'; import Utils from '../../utils/Utils'; -import getLogger from '../../utils/Logger'; export abstract class Storage { protected readonly storageUri: URL; @@ -17,8 +19,23 @@ 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 = { throwError: false } + ): void { + const inTableOrCollectionStr = + (!Utils.isNullOrUndefined(table) || !table) && ` in table or collection '${table}'`; + logger.error( + `${this.logPrefix} ${this.getDBNameFromStorageType(type)} error '${ + error.message + }'${inTableOrCollectionStr}:`, + error + ); + if (params?.throwError) { + throw error; + } } protected getDBNameFromStorageType(type: StorageType): DBName { @@ -36,5 +53,7 @@ export abstract class Storage { public abstract open(): void | Promise; public abstract close(): void | Promise; - public abstract storePerformanceStatistics(performanceStatistics: Statistics): void | Promise; + public abstract storePerformanceStatistics( + performanceStatistics: Statistics + ): void | Promise; }