from fastapi import APIRouter, Depends, BackgroundTasks, HTTPException from sqlalchemy.orm import Session from ..config import settings, Settings from ..samba_manager import SambaManager from ..database import get_db import os import logging router = APIRouter() logger = logging.getLogger(__name__) def sync_stash_db_task(): samba_manager = SambaManager( settings.samba_server_ip, settings.stash_share, settings.samba_username, settings.samba_password, ) try: logger.info(f"Syncing Stash DB from {settings.stash_remote_db_path}") with open(settings.stash_db_path, "wb") as f: samba_manager.download_file(settings.stash_remote_db_path, f) logger.info("Stash DB synced successfully") except Exception as e: logger.error(f"Stash DB sync failed: {e}") finally: samba_manager.close() @router.post("/sync") def sync_stash(background_tasks: BackgroundTasks): background_tasks.add_task(sync_stash_db_task) return {"message": "Stash sync started"} @router.get("/status") def get_stash_status(): exists = os.path.exists(settings.stash_db_path) size = os.path.getsize(settings.stash_db_path) if exists else 0 mtime = os.path.getmtime(settings.stash_db_path) if exists else 0 return { "enabled": settings.stash_enabled, "db_exists": exists, "db_size": size, "db_mtime": mtime }