You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

18 lines
686 B

from __future__ import annotations
from typing import Any
from app.adapters.storage.base import StorageAdapter
from app.adapters.storage.local import LocalStorageAdapter
from app.adapters.storage.s3 import S3StorageAdapter
from app.adapters.storage.webdav import WebDAVStorageAdapter
def build_storage_adapter(backend_type: str, config: dict[str, Any]) -> StorageAdapter:
if backend_type == "local_directory":
return LocalStorageAdapter(config["base_path"])
if backend_type == "s3":
return S3StorageAdapter(config)
if backend_type == "webdav":
return WebDAVStorageAdapter(config)
raise ValueError(f"Unsupported backend type: {backend_type}")