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