refactor: use native node random integer generator
[e-mobility-charging-stations-simulator.git] / src / performance / storage / Storage.ts
index c6cf28963cfda14dbce33507d5a8e914036edb6d..aee3ae9efbb5ca86b17a8a7ddf3fcd01b7b80684 100644 (file)
@@ -15,6 +15,7 @@ export abstract class Storage {
   protected readonly storageUri: URL
   protected readonly logPrefix: string
   protected dbName!: string
+  private static readonly performanceStatistics = new Map<string, Statistics>()
 
   constructor (storageUri: string, logPrefix: string) {
     this.storageUri = new URL(storageUri)
@@ -42,17 +43,29 @@ export abstract class Storage {
 
   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
       case StorageType.MYSQL:
         return DBName.MYSQL
-      case StorageType.SQLITE:
-        return DBName.SQLITE
+      case StorageType.MONGO_DB:
+        return DBName.MONGO_DB
     }
   }
 
+  public getPerformanceStatistics (): IterableIterator<Statistics> {
+    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<void>
   public abstract close (): void | Promise<void>
   public abstract storePerformanceStatistics (