UNPKG

@b2y/document-module

Version:

A flexible multi-provider storage adapter for file operations across S3, Azure Blob, Google Drive, and local storage

41 lines (37 loc) 1.68 kB
// src/StorageFactory.js const STORAGE_TYPES = require('./constants/StorageTypes'); const AmazonS3StorageProvider = require('./providers/AmazonS3StorageProvider'); const AzureBlobStorageProvider = require('./providers/AzureBlobStorageProvider'); const LocalFileStorageProvider = require('./providers/LocalFileStorageProvider'); const GoogleDriveStorageProvider = require('./providers/GoogleDriveStorageProvider'); const logger = require('../logger'); class StorageFactory { /** * Create a storage provider based on type * * @param {string} storageType - Type of storage provider to create * @param {object} config - Configuration options for the provider * @returns {BaseStorageProvider} - An instance of the storage provider */ static createStorageProvider(storageType = null, config = {}) { // Use provided storageType or fall back to environment variable const storage = storageType || process.env.DOCUMENT_STORAGE_TYPE; if (!storage) { throw new Error("Storage type must be specified"); } switch (storage.toUpperCase()) { case STORAGE_TYPES.AMAZON_S3: return new AmazonS3StorageProvider(config); case STORAGE_TYPES.AZURE_BLOB: return new AzureBlobStorageProvider(config); case STORAGE_TYPES.LOCAL_DRIVE: return new LocalFileStorageProvider(config); case STORAGE_TYPES.GOOGLE_DRIVE: return new GoogleDriveStorageProvider(config); default: logger.error(`Unsupported storage type: ${storage}`); throw new Error(`Unsupported storage type: ${storage}`); } } } module.exports = StorageFactory;