Use eslint extension for import sorting instead of unmaintained external ones
[e-mobility-charging-stations-simulator.git] / src / performance / storage / StorageFactory.ts
CommitLineData
c27c3eee
JB
1// Copyright Jerome Benoit. 2021. All Rights Reserved.
2
8114d10e 3import { StorageType } from '../../types/Storage';
100a5301
JB
4import { JsonFileStorage } from './JsonFileStorage';
5import { MikroOrmStorage } from './MikroOrmStorage';
72f041bd
JB
6import { MongoDBStorage } from './MongoDBStorage';
7import { Storage } from './Storage';
72f041bd
JB
8
9export class StorageFactory {
6c3cfef8
JB
10 private constructor() {
11 // This is intentional
12 }
72f041bd 13
1f5df42a 14 public static getStorage(type: StorageType, connectionUri: string, logPrefix: string): Storage {
72f041bd
JB
15 let storageInstance: Storage = null;
16 switch (type) {
17 case StorageType.JSON_FILE:
100a5301 18 storageInstance = new JsonFileStorage(connectionUri, logPrefix);
72f041bd
JB
19 break;
20 case StorageType.MONGO_DB:
1f5df42a 21 storageInstance = new MongoDBStorage(connectionUri, logPrefix);
72f041bd 22 break;
a6b3c6c3
JB
23 // case StorageType.MYSQL:
24 // case StorageType.MARIA_DB:
25 // case StorageType.SQLITE:
7f61131f 26 // storageInstance = new MikroOrmStorage(connectionUri, logPrefix, type);
a6b3c6c3 27 // break;
72f041bd 28 default:
fb226c9b 29 throw new Error(`${logPrefix} Unknown storage type: ${type}`);
72f041bd
JB
30 }
31 return storageInstance;
32 }
33}