// Copyright Jerome Benoit. 2021. All Rights Reserved.
-import { DBName, StorageType } from '../../types/Storage';
-
-import Statistics from '../../types/Statistics';
import { URL } from 'url';
-import Utils from '../../utils/Utils';
+
+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';
export abstract class Storage {
protected readonly storageUri: URL;
this.logPrefix = logPrefix;
}
- protected handleDBError(type: StorageType, error: Error, table?: string): void {
- logger.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 {
+ 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 {
public abstract open(): void | Promise<void>;
public abstract close(): void | Promise<void>;
- public abstract storePerformanceStatistics(performanceStatistics: Statistics): void | Promise<void>;
+ public abstract storePerformanceStatistics(
+ performanceStatistics: Statistics
+ ): void | Promise<void>;
}