Commit | Line | Data |
---|---|---|
edd13439 | 1 | // Copyright Jerome Benoit. 2021-2023. All Rights Reserved. |
c27c3eee | 2 | |
268a74bb | 3 | import { StorageType } from '../../types'; |
2896e06d | 4 | import { JsonFileStorage, MikroOrmStorage, MongoDBStorage, type Storage } from '../internal'; |
72f041bd JB |
5 | |
6 | export class StorageFactory { | |
6c3cfef8 JB |
7 | private constructor() { |
8 | // This is intentional | |
9 | } | |
72f041bd | 10 | |
1f5df42a | 11 | public static getStorage(type: StorageType, connectionUri: string, logPrefix: string): Storage { |
1895299d | 12 | let storageInstance: Storage | null = null; |
72f041bd JB |
13 | switch (type) { |
14 | case StorageType.JSON_FILE: | |
100a5301 | 15 | storageInstance = new JsonFileStorage(connectionUri, logPrefix); |
72f041bd JB |
16 | break; |
17 | case StorageType.MONGO_DB: | |
1f5df42a | 18 | storageInstance = new MongoDBStorage(connectionUri, logPrefix); |
72f041bd | 19 | break; |
a6b3c6c3 JB |
20 | // case StorageType.MYSQL: |
21 | // case StorageType.MARIA_DB: | |
22 | // case StorageType.SQLITE: | |
7f61131f | 23 | // storageInstance = new MikroOrmStorage(connectionUri, logPrefix, type); |
a6b3c6c3 | 24 | // break; |
72f041bd | 25 | default: |
fb226c9b | 26 | throw new Error(`${logPrefix} Unknown storage type: ${type}`); |
72f041bd JB |
27 | } |
28 | return storageInstance; | |
29 | } | |
30 | } |