from pathlib import Path from uuid import uuid4 from fastapi import UploadFile from app.core.config import settings class StorageService: def __init__(self, base_dir: str) -> None: self.base_dir = Path(base_dir) self.base_dir.mkdir(parents=True, exist_ok=True) async def save_upload(self, file: UploadFile) -> tuple[str, str, str]: extension = Path(file.filename or "capture.png").suffix or ".png" image_id = str(uuid4()) stored_name = f"{image_id}{extension}" target_path = self.base_dir / stored_name content = await file.read() target_path.write_bytes(content) return image_id, str(target_path), stored_name def delete(self, absolute_path: str) -> None: target = Path(absolute_path) if target.exists(): target.unlink() storage_service = StorageService(settings.storage_dir)