X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fperformance%2Fstorage%2FJsonFileStorage.ts;h=97ab104ccfb73a11fb52aafd8ca408eeaf1ff84f;hb=a629e6fcfeb952d77da280e69d645b17d94b2e4c;hp=f4a888143ff60c23b682b0be9b6215c5af779beb;hpb=a974c8e4b8a98c9450be49546a77be0d03e9f512;p=e-mobility-charging-stations-simulator.git diff --git a/src/performance/storage/JsonFileStorage.ts b/src/performance/storage/JsonFileStorage.ts index f4a88814..97ab104c 100644 --- a/src/performance/storage/JsonFileStorage.ts +++ b/src/performance/storage/JsonFileStorage.ts @@ -1,21 +1,14 @@ -// Copyright Jerome Benoit. 2021-2023. All Rights Reserved. +// Copyright Jerome Benoit. 2021-2024. All Rights Reserved. import { closeSync, existsSync, mkdirSync, openSync, writeSync } from 'node:fs' import { dirname } from 'node:path' -import { Storage } from './Storage.js' import { BaseError } from '../../exception/index.js' -import { FileType, type Statistics } from '../../types/index.js' -import { - AsyncLock, - AsyncLockType, - JSONStringifyWithMapSupport, - handleFileException -} from '../../utils/index.js' +import { FileType, MapStringifyFormat, type Statistics } from '../../types/index.js' +import { AsyncLock, AsyncLockType, handleFileException, JSONStringify } from '../../utils/index.js' +import { Storage } from './Storage.js' export class JsonFileStorage extends Storage { - private static performanceRecords: Map - private fd?: number constructor (storageUri: string, logPrefix: string) { @@ -24,17 +17,17 @@ export class JsonFileStorage extends Storage { } public storePerformanceStatistics (performanceStatistics: Statistics): void { + this.setPerformanceStatistics(performanceStatistics) this.checkPerformanceRecordsFile() - JsonFileStorage.performanceRecords.set(performanceStatistics.id, performanceStatistics) AsyncLock.runExclusive(AsyncLockType.performance, () => { writeSync( // eslint-disable-next-line @typescript-eslint/no-non-null-assertion this.fd!, - JSONStringifyWithMapSupport([...JsonFileStorage.performanceRecords.values()], 2), + JSONStringify([...this.getPerformanceStatistics()], 2, MapStringifyFormat.object), 0, 'utf8' ) - }).catch(error => { + }).catch((error: unknown) => { handleFileException( this.dbName, FileType.PerformanceRecords, @@ -45,7 +38,6 @@ export class JsonFileStorage extends Storage { } public open (): void { - JsonFileStorage.performanceRecords = new Map() try { if (this.fd == null) { if (!existsSync(dirname(this.dbName))) { @@ -64,7 +56,7 @@ export class JsonFileStorage extends Storage { } public close (): void { - JsonFileStorage.performanceRecords.clear() + this.clearPerformanceStatistics() try { if (this.fd != null) { closeSync(this.fd)