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
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}")
|
|
|