45 lines
1.4 KiB
Python
45 lines
1.4 KiB
Python
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
|
|
}
|