"""Thin wrapper for backward compatibility. Delegates to SessionRepository."""

import time
from typing import Dict, List, Any

from loguru import logger
from sqlmodel import Session as DBSession

from app.database import engine
from app.repositories.session import SessionRepository


async def save_session_complete(
    session_id: str,
    user_id: str,
    session_data: Dict[str, Any],
    images: List[Dict[str, Any]] = None,
    videos: List[Dict[str, Any]] = None,
) -> bool:
    """Save session + images + videos to DB."""
    images = images or []
    videos = videos or []
    start_time = time.time()

    try:
        with DBSession(engine) as db:
            SessionRepository(db).save_complete(
                session_id=session_id,
                user_id=user_id,
                session_data=session_data,
                images=images,
                videos=videos,
            )

        duration_ms = (time.time() - start_time) * 1000
        logger.info(
            f"DB_SESSION_SAVED: session_id={session_id} images={len(images)} "
            f"videos={len(videos)} duration_ms={duration_ms:.2f}"
        )
        return True

    except Exception as e:
        duration_ms = (time.time() - start_time) * 1000
        logger.error(
            f"DB_SESSION_SAVE_FAILED: session_id={session_id} "
            f"duration_ms={duration_ms:.2f} error={str(e)}"
        )
        return False
