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