Merge pull request #813 from SAP/combined-prs-branch
[e-mobility-charging-stations-simulator.git] / src / performance / storage / MongoDBStorage.ts
index 9e5c06623830e3328979f88637ecc55571a012c7..568f70953edc4a2a6db290dae0e51a1634e7cb68 100644 (file)
@@ -3,12 +3,12 @@
 import { MongoClient } from 'mongodb';
 
 import { Storage } from './Storage';
-import type { Statistics } from '../../types/Statistics';
-import { StorageType } from '../../types/Storage';
-import Constants from '../../utils/Constants';
+import { BaseError } from '../../exception';
+import { type Statistics, StorageType } from '../../types';
+import { Constants } from '../../utils';
 
 export class MongoDBStorage extends Storage {
-  private readonly client: MongoClient | null;
+  private readonly client?: MongoClient;
   private connected: boolean;
 
   constructor(storageUri: string, logPrefix: string) {
@@ -26,7 +26,7 @@ export class MongoDBStorage extends Storage {
       await this.client
         ?.db(this.dbName)
         .collection<Statistics>(Constants.PERFORMANCE_RECORDS_TABLE)
-        .insertOne(performanceStatistics);
+        .replaceOne({ id: performanceStatistics.id }, performanceStatistics, { upsert: true });
     } catch (error) {
       this.handleDBError(StorageType.MONGO_DB, error as Error, Constants.PERFORMANCE_RECORDS_TABLE);
     }
@@ -56,17 +56,17 @@ export class MongoDBStorage extends Storage {
 
   private checkDBConnection() {
     if (!this?.client) {
-      throw new Error(
+      throw new BaseError(
         `${this.logPrefix} ${this.getDBNameFromStorageType(
-          StorageType.MONGO_DB
-        )} client initialization failed while trying to issue a request`
+          StorageType.MONGO_DB,
+        )} client initialization failed while trying to issue a request`,
       );
     }
     if (!this.connected) {
-      throw new Error(
+      throw new BaseError(
         `${this.logPrefix} ${this.getDBNameFromStorageType(
-          StorageType.MONGO_DB
-        )} connection not opened while trying to issue a request`
+          StorageType.MONGO_DB,
+        )} connection not opened while trying to issue a request`,
       );
     }
   }