Validate response PDU (#137)
[e-mobility-charging-stations-simulator.git] / src / performance / storage / MongoDBStorage.ts
index 5a3783818cba77bcb16bf25e622ae81015f77fe8..d941d7c188ad920a036f804838056f26ae13b887 100644 (file)
@@ -1,28 +1,34 @@
 // Copyright Jerome Benoit. 2021. All Rights Reserved.
 
-import Constants from '../../utils/Constants';
 import { MongoClient } from 'mongodb';
+
 import Statistics from '../../types/Statistics';
-import { Storage } from './Storage';
 import { StorageType } from '../../types/Storage';
+import Constants from '../../utils/Constants';
+import { Storage } from './Storage';
 
 export class MongoDBStorage extends Storage {
-  private client: MongoClient | null;
+  private readonly client: MongoClient | null;
   private connected: boolean;
 
-  constructor(storageURI: string, logPrefix: string) {
-    super(storageURI, logPrefix);
-    this.client = new MongoClient(this.storageURI.toString());
+  constructor(storageUri: string, logPrefix: string) {
+    super(storageUri, logPrefix);
+    this.client = new MongoClient(this.storageUri.toString());
     this.connected = false;
-    this.dbName = this.storageURI.pathname.replace(/(?:^\/)|(?:\/$)/g, '') ?? Constants.DEFAULT_PERFORMANCE_RECORDS_DB_NAME;
+    this.dbName =
+      this.storageUri.pathname.replace(/(?:^\/)|(?:\/$)/g, '') ??
+      Constants.DEFAULT_PERFORMANCE_RECORDS_DB_NAME;
   }
 
   public async storePerformanceStatistics(performanceStatistics: Statistics): Promise<void> {
     try {
       this.checkDBConnection();
-      await this.client.db(this.dbName).collection<Statistics>(Constants.PERFORMANCE_RECORDS_TABLE).insertOne(performanceStatistics);
+      await this.client
+        .db(this.dbName)
+        .collection<Statistics>(Constants.PERFORMANCE_RECORDS_TABLE)
+        .insertOne(performanceStatistics);
     } catch (error) {
-      this.handleDBError(StorageType.MONGO_DB, error, Constants.PERFORMANCE_RECORDS_TABLE);
+      this.handleDBError(StorageType.MONGO_DB, error as Error, Constants.PERFORMANCE_RECORDS_TABLE);
     }
   }
 
@@ -33,7 +39,7 @@ export class MongoDBStorage extends Storage {
         this.connected = true;
       }
     } catch (error) {
-      this.handleDBError(StorageType.MONGO_DB, error);
+      this.handleDBError(StorageType.MONGO_DB, error as Error);
     }
   }
 
@@ -44,16 +50,24 @@ export class MongoDBStorage extends Storage {
         this.connected = false;
       }
     } catch (error) {
-      this.handleDBError(StorageType.MONGO_DB, error);
+      this.handleDBError(StorageType.MONGO_DB, error as Error);
     }
   }
 
   private checkDBConnection() {
     if (!this?.client) {
-      throw new Error(`${this.logPrefix} ${this.getDBNameFromStorageType(StorageType.MONGO_DB)} client initialization failed while trying to issue a request`);
+      throw new Error(
+        `${this.logPrefix} ${this.getDBNameFromStorageType(
+          StorageType.MONGO_DB
+        )} client initialization failed while trying to issue a request`
+      );
     }
     if (!this.connected) {
-      throw new Error(`${this.logPrefix} ${this.getDBNameFromStorageType(StorageType.MONGO_DB)} connection not opened while trying to issue a request`);
+      throw new Error(
+        `${this.logPrefix} ${this.getDBNameFromStorageType(
+          StorageType.MONGO_DB
+        )} connection not opened while trying to issue a request`
+      );
     }
   }
 }