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;
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 {
+ const inTableOrCollectionStr =
+ (!Utils.isNullOrUndefined(table) || !table) && ` in table or collection '${table}'`;
+ logger.error(
+ `${this.logPrefix} ${this.getDBNameFromStorageType(type)} error '${
+ error.message
+ }'${inTableOrCollectionStr}: %j`,
+ 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>;
}