import shutil from pathlib import Path from fastapi import UploadFile from backend.config import settings def ensure_upload_dir() -> Path: target = Path(settings.upload_dir) target.mkdir(parents=True, exist_ok=True) return target def save_upload(upload_file: UploadFile) -> Path: target_dir = ensure_upload_dir() target_path = target_dir / upload_file.filename with target_path.open("wb") as buffer: shutil.copyfileobj(upload_file.file, buffer) return target_path def save_upload_for_job(job_id: int, seq: int, upload_file: UploadFile) -> Path: """Save file with unique path under upload_dir/job_id/ to avoid overwrites.""" base = ensure_upload_dir() / str(job_id) base.mkdir(parents=True, exist_ok=True) name = upload_file.filename or "file" target_path = base / f"{seq}_{name}" with target_path.open("wb") as buffer: shutil.copyfileobj(upload_file.file, buffer) return target_path