33 lines
952 B
Python
33 lines
952 B
Python
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() |