X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fperformance%2Fstorage%2FStorage.ts;h=aee3ae9efbb5ca86b17a8a7ddf3fcd01b7b80684;hb=fcda9151b9eb6d13f06f7a5db45c89a77bda9eb8;hp=565c15df2e21b4160f74ad6d6d5ea356a57192cc;hpb=8114d10e3893e96bb725ce2fca9744429ee4b75b;p=e-mobility-charging-stations-simulator.git diff --git a/src/performance/storage/Storage.ts b/src/performance/storage/Storage.ts index 565c15df..aee3ae9e 100644 --- a/src/performance/storage/Storage.ts +++ b/src/performance/storage/Storage.ts @@ -1,59 +1,74 @@ -// Copyright Jerome Benoit. 2021. All Rights Reserved. +// Copyright Jerome Benoit. 2021-2024. All Rights Reserved. -import { URL } from 'url'; +import { URL } from 'node:url' -import { EmptyObject } from '../../types/EmptyObject'; -import { HandleErrorParams } from '../../types/Error'; -import Statistics from '../../types/Statistics'; -import { DBName, StorageType } from '../../types/Storage'; -import logger from '../../utils/Logger'; -import Utils from '../../utils/Utils'; +import { + DBName, + type EmptyObject, + type HandleErrorParams, + type Statistics, + StorageType +} from '../../types/index.js' +import { logger, setDefaultErrorParams } from '../../utils/index.js' export abstract class Storage { - protected readonly storageUri: URL; - protected readonly logPrefix: string; - protected dbName: string; + protected readonly storageUri: URL + protected readonly logPrefix: string + protected dbName!: string + private static readonly performanceStatistics = new Map() - constructor(storageUri: string, logPrefix: string) { - this.storageUri = new URL(storageUri); - this.logPrefix = logPrefix; + constructor (storageUri: string, logPrefix: string) { + this.storageUri = new URL(storageUri) + this.logPrefix = logPrefix } - protected handleDBError( + protected handleDBError ( type: StorageType, error: Error, table?: string, - params: HandleErrorParams = { throwError: false } + params: HandleErrorParams = { throwError: false, consoleOut: false } ): void { - const inTableOrCollectionStr = - (!Utils.isNullOrUndefined(table) || !table) && ` in table or collection '${table}'`; + setDefaultErrorParams(params, { throwError: false, consoleOut: false }) + const inTableOrCollectionStr = table != null && ` in table or collection '${table}'` logger.error( `${this.logPrefix} ${this.getDBNameFromStorageType(type)} error '${ error.message - }'${inTableOrCollectionStr}: %j`, + }'${inTableOrCollectionStr}:`, error - ); - if (params?.throwError) { - throw error; + ) + if (params.throwError === true) { + throw error } } - protected getDBNameFromStorageType(type: StorageType): DBName { + protected getDBNameFromStorageType (type: StorageType): DBName | undefined { switch (type) { + case StorageType.SQLITE: + return DBName.SQLITE case StorageType.MARIA_DB: - return DBName.MARIA_DB; - case StorageType.MONGO_DB: - return DBName.MONGO_DB; + return DBName.MARIA_DB case StorageType.MYSQL: - return DBName.MYSQL; - case StorageType.SQLITE: - return DBName.SQLITE; + return DBName.MYSQL + case StorageType.MONGO_DB: + return DBName.MONGO_DB } } - public abstract open(): void | Promise; - public abstract close(): void | Promise; - public abstract storePerformanceStatistics( + public getPerformanceStatistics (): IterableIterator { + return Storage.performanceStatistics.values() + } + + protected setPerformanceStatistics (performanceStatistics: Statistics): void { + Storage.performanceStatistics.set(performanceStatistics.id, performanceStatistics) + } + + protected clearPerformanceStatistics (): void { + Storage.performanceStatistics.clear() + } + + public abstract open (): void | Promise + public abstract close (): void | Promise + public abstract storePerformanceStatistics ( performanceStatistics: Statistics - ): void | Promise; + ): void | Promise }