1 // Copyright Jerome Benoit. 2021-2023. All Rights Reserved.
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';
11 export class StorageFactory
{
12 private constructor() {
13 // This is intentional
16 public static getStorage(
18 connectionUri
: string,
20 ): Storage
| undefined {
21 let storageInstance
: Storage
;
23 case StorageType
.JSON_FILE
:
24 storageInstance
= new JsonFileStorage(connectionUri
, logPrefix
);
26 case StorageType
.MONGO_DB
:
27 storageInstance
= new MongoDBStorage(connectionUri
, logPrefix
);
29 // case StorageType.MYSQL:
30 // case StorageType.MARIA_DB:
31 // case StorageType.SQLITE:
32 // storageInstance = new MikroOrmStorage(connectionUri, logPrefix, type);
35 throw new BaseError(`${logPrefix} Unknown storage type: ${type}`);
37 return storageInstance
;