09b58a15ffcda6b84363216bc2868eb84e6eb09f
[e-mobility-charging-stations-simulator.git] / src / performance / storage / StorageFactory.ts
1 // Copyright Jerome Benoit. 2021-2023. All Rights Reserved.
2
3 import { JsonFileStorage } from './JsonFileStorage';
4 import { MikroOrmStorage } from './MikroOrmStorage';
5 import { MongoDBStorage } from './MongoDBStorage';
6 import type { Storage } from './Storage';
7 import { StorageType } from '../../types';
8
9 export class StorageFactory {
10 private constructor() {
11 // This is intentional
12 }
13
14 public static getStorage(type: StorageType, connectionUri: string, logPrefix: string): Storage {
15 let storageInstance: Storage | null = null;
16 switch (type) {
17 case StorageType.JSON_FILE:
18 storageInstance = new JsonFileStorage(connectionUri, logPrefix);
19 break;
20 case StorageType.MONGO_DB:
21 storageInstance = new MongoDBStorage(connectionUri, logPrefix);
22 break;
23 // case StorageType.MYSQL:
24 // case StorageType.MARIA_DB:
25 // case StorageType.SQLITE:
26 // storageInstance = new MikroOrmStorage(connectionUri, logPrefix, type);
27 // break;
28 default:
29 throw new Error(`${logPrefix} Unknown storage type: ${type}`);
30 }
31 return storageInstance;
32 }
33 }