Merge dependabot/npm_and_yarn/types/tar-6.1.12 into combined-prs-branch
[e-mobility-charging-stations-simulator.git] / src / performance / storage / StorageFactory.ts
index 61fce12bacc0de18850830f2106f8931ae6c8d92..2b6b84ffe5b8ad75da53fc7c5fa9687b0e0089cd 100644 (file)
@@ -1,33 +1,44 @@
-// Copyright Jerome Benoit. 2021. All Rights Reserved.
+// Copyright Jerome Benoit. 2021-2024. All Rights Reserved.
 
-import { JsonFileStorage } from './JsonFileStorage';
-import { MikroOrmStorage } from './MikroOrmStorage';
-import { MongoDBStorage } from './MongoDBStorage';
-import { Storage } from './Storage';
-import { StorageType } from '../../types/Storage';
+import { BaseError } from '../../exception/index.js'
+import { StorageType } from '../../types/index.js'
+import { JsonFileStorage } from './JsonFileStorage.js'
+import { MikroOrmStorage } from './MikroOrmStorage.js'
+import { MongoDBStorage } from './MongoDBStorage.js'
+import { None } from './None.js'
+import type { Storage } from './Storage.js'
 
+// eslint-disable-next-line @typescript-eslint/no-extraneous-class
 export class StorageFactory {
-  private constructor() {
+  private constructor () {
     // This is intentional
   }
 
-  public static getStorage(type: StorageType, connectionUri: string, logPrefix: string): Storage {
-    let storageInstance: Storage = null;
+  public static getStorage (
+    type: StorageType,
+    connectionUri: string,
+    logPrefix: string
+  ): Storage | undefined {
+    let storageInstance: Storage
     switch (type) {
       case StorageType.JSON_FILE:
-        storageInstance = new JsonFileStorage(connectionUri, logPrefix);
-        break;
+        storageInstance = new JsonFileStorage(connectionUri, logPrefix)
+        break
       case StorageType.MONGO_DB:
-        storageInstance = new MongoDBStorage(connectionUri, logPrefix);
-        break;
-      // case StorageType.MYSQL:
-      // case StorageType.MARIA_DB:
-      // case StorageType.SQLITE:
-      //   storageInstance = new MikroOrmStorage(connectionURI, logPrefix, type);
-      //   break;
+        storageInstance = new MongoDBStorage(connectionUri, logPrefix)
+        break
+      case StorageType.SQLITE:
+      case StorageType.MARIA_DB:
+      case StorageType.MYSQL:
+        storageInstance = new MikroOrmStorage(connectionUri, logPrefix, type)
+        break
+      case StorageType.NONE:
+        storageInstance = new None()
+        break
       default:
-        throw new Error(`${logPrefix} Unknown storage type: ${type}`);
+        // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
+        throw new BaseError(`${logPrefix} Unknown storage type: ${type}`)
     }
-    return storageInstance;
+    return storageInstance
   }
 }