from pathlib import Path
from fastapi import APIRouter
from sqlmodel import Session, select

from app.core.config import get_settings
from app.db.session import get_engine
from app.models.core import ImportLog
from app.services.importers.prepared_package import PreparedPackageImporter

router=APIRouter(prefix="/imports", tags=["imports"])

@router.post("/scan")
def scan_imports():
    result=PreparedPackageImporter(settings=get_settings(), engine=get_engine()).scan_once()
    return result.__dict__

@router.post("/packages")
def package_import(payload: dict):
    video_path=payload.pop("video_path", None)
    if not video_path:
        return {"accepted": False, "error": "video_path required for MVP direct import"}
    video_id=PreparedPackageImporter(settings=get_settings(), engine=get_engine()).import_manifest_payload(payload, Path(video_path))
    return {"accepted": True, "video_id": video_id}

@router.post("/jarvis")
def legacy_internal_import(payload: dict):
    return package_import(payload)

@router.get("/logs")
def import_logs():
    with Session(get_engine()) as session:
        logs=session.exec(select(ImportLog).order_by(ImportLog.created_at.desc())).all()
        return {"items":[log.model_dump(mode="json") for log in logs]}
