| import { CloudflareStorage } from './cloudflare.storage'; | |
| import { IUploadProvider } from './upload.interface'; | |
| import { LocalStorage } from './local.storage'; | |
| export class UploadFactory { | |
| static createStorage(): IUploadProvider { | |
| const storageProvider = process.env.STORAGE_PROVIDER || 'local'; | |
| switch (storageProvider) { | |
| case 'local': | |
| return new LocalStorage(process.env.UPLOAD_DIRECTORY!); | |
| case 'cloudflare': | |
| return new CloudflareStorage( | |
| process.env.CLOUDFLARE_ACCOUNT_ID!, | |
| process.env.CLOUDFLARE_ACCESS_KEY!, | |
| process.env.CLOUDFLARE_SECRET_ACCESS_KEY!, | |
| process.env.CLOUDFLARE_REGION!, | |
| process.env.CLOUDFLARE_BUCKETNAME!, | |
| process.env.CLOUDFLARE_BUCKET_URL! | |
| ); | |
| default: | |
| throw new Error(`Invalid storage type ${storageProvider}`); | |
| } | |
| } | |
| } | |