-// Copyright Jerome Benoit. 2021. All Rights Reserved.
+// Copyright Jerome Benoit. 2021-2023. All Rights Reserved.
-import { DBName, StorageType } from '../../types/Storage';
+import { URL } from 'node:url';
-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 logger from '../../utils/Logger';
+import {
+ DBName,
+ type EmptyObject,
+ type HandleErrorParams,
+ type Statistics,
+ StorageType,
+} from '../../types';
+import { ErrorUtils, Utils, logger } from '../../utils';
export abstract class Storage {
protected readonly storageUri: URL;
protected readonly logPrefix: string;
- protected dbName: string;
+ protected dbName!: string;
constructor(storageUri: string, logPrefix: string) {
this.storageUri = new URL(storageUri);
this.logPrefix = logPrefix;
}
- 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);
+ protected handleDBError(
+ type: StorageType,
+ error: Error,
+ table?: string,
+ params: HandleErrorParams<EmptyObject> = { throwError: false, consoleOut: false }
+ ): void {
+ ErrorUtils.handleErrorParams(params, { throwError: false, consoleOut: false });
+ 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 {
+ protected getDBNameFromStorageType(type: StorageType): DBName | undefined {
switch (type) {
case StorageType.MARIA_DB:
return DBName.MARIA_DB;
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>;
}