build(deps-dev): apply updates
[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 // eslint-disable-next-line @typescript-eslint/no-unused-vars
5 import { MikroOrmStorage } from './MikroOrmStorage';
6 import { MongoDBStorage } from './MongoDBStorage';
7 import type { Storage } from './Storage';
8 import { BaseError } from '../../exception';
9 import { StorageType } from '../../types';
10
11 export class StorageFactory {
12 private constructor() {
13 // This is intentional
14 }
15
16 public static getStorage(type: StorageType, connectionUri: string, logPrefix: string): Storage {
17 let storageInstance: Storage | null = null;
18 switch (type) {
19 case StorageType.JSON_FILE:
20 storageInstance = new JsonFileStorage(connectionUri, logPrefix);
21 break;
22 case StorageType.MONGO_DB:
23 storageInstance = new MongoDBStorage(connectionUri, logPrefix);
24 break;
25 // case StorageType.MYSQL:
26 // case StorageType.MARIA_DB:
27 // case StorageType.SQLITE:
28 // storageInstance = new MikroOrmStorage(connectionUri, logPrefix, type);
29 // break;
30 default:
31 throw new BaseError(`${logPrefix} Unknown storage type: ${type}`);
32 }
33 return storageInstance;
34 }
35 }