from app.storage.base import StorageProvider from app.storage.local import LocalStorageProvider class StorageManager: _instance = None def __new__(cls): if cls._instance is None: cls._instance = super().__new__(cls) cls._instance._initialized = False return cls._instance def __init__(self): if self._initialized: return self.provider: StorageProvider = LocalStorageProvider() self._initialized = True def set_provider(self, provider: StorageProvider): self.provider = provider async def save(self, file_path: str, data: bytes) -> str: return await self.provider.save(file_path, data) async def delete(self, file_path: str) -> bool: return await self.provider.delete(file_path) async def get_url(self, file_path: str) -> str: return await self.provider.get_url(file_path) storage_manager = StorageManager()