build(deps-dev): apply updates
[e-mobility-charging-stations-simulator.git] / src / performance / storage / JsonFileStorage.ts
index 31d18537f783067bebd396d40cf19fad34d69b0f..592504a77c73ae104035da36f6415f4bf2986ffb 100644 (file)
@@ -3,19 +3,12 @@
 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<string, Statistics>
-
   private fd?: number
 
   constructor (storageUri: string, logPrefix: string) {
@@ -24,13 +17,13 @@ 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'
       )
@@ -45,7 +38,6 @@ export class JsonFileStorage extends Storage {
   }
 
   public open (): void {
-    JsonFileStorage.performanceRecords = new Map<string, Statistics>()
     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)