Commit | Line | Data |
---|---|---|
edd13439 | 1 | // Copyright Jerome Benoit. 2021-2023. All Rights Reserved. |
c27c3eee | 2 | |
a6ef1ece | 3 | import { JsonFileStorage } from './JsonFileStorage.js'; |
e1d9a0f4 | 4 | // eslint-disable-next-line @typescript-eslint/no-unused-vars |
a6ef1ece JB |
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'; | |
72f041bd JB |
10 | |
11 | export class StorageFactory { | |
6c3cfef8 JB |
12 | private constructor() { |
13 | // This is intentional | |
14 | } | |
72f041bd | 15 | |
6d2b7d01 JB |
16 | public static getStorage( |
17 | type: StorageType, | |
18 | connectionUri: string, | |
19 | logPrefix: string, | |
20 | ): Storage | undefined { | |
21 | let storageInstance: Storage; | |
72f041bd JB |
22 | switch (type) { |
23 | case StorageType.JSON_FILE: | |
100a5301 | 24 | storageInstance = new JsonFileStorage(connectionUri, logPrefix); |
72f041bd JB |
25 | break; |
26 | case StorageType.MONGO_DB: | |
1f5df42a | 27 | storageInstance = new MongoDBStorage(connectionUri, logPrefix); |
72f041bd | 28 | break; |
a6b3c6c3 JB |
29 | // case StorageType.MYSQL: |
30 | // case StorageType.MARIA_DB: | |
31 | // case StorageType.SQLITE: | |
7f61131f | 32 | // storageInstance = new MikroOrmStorage(connectionUri, logPrefix, type); |
a6b3c6c3 | 33 | // break; |
72f041bd | 34 | default: |
7b5dbe91 | 35 | throw new BaseError(`${logPrefix} Unknown storage type: ${type}`); |
72f041bd JB |
36 | } |
37 | return storageInstance; | |
38 | } | |
39 | } |