from fastapi import APIRouter, Depends, HTTPException
from sqlmodel import Session

from database import get_session
from models.translationlog import TranslationLog
from repositories.translationlog_repository import TranslationLogRepository

router = APIRouter(prefix="/logs", tags=["Translation Logs"])


def get_repo(db: Session = Depends(get_session)):
    return TranslationLogRepository(db)


# CREATE LOG (this is your sensor input endpoint)
@router.post("/", response_model=TranslationLog)
def create_log(
    log: TranslationLog,
    repo: TranslationLogRepository = Depends(get_repo)
):
    return repo.create(log)


# GET ALL LOGS
@router.get("/", response_model=list[TranslationLog])
def get_all(repo: TranslationLogRepository = Depends(get_repo)):
    return repo.get_all()


# GET LOGS BY SESSION (VERY IMPORTANT)
@router.get("/session/{session_id}")
def get_by_session(session_id: int, repo: TranslationLogRepository = Depends(get_repo)):
    return repo.get_by_session(session_id)


# GET ONE LOG
@router.get("/{log_id}", response_model=TranslationLog)
def get_one(log_id: int, repo: TranslationLogRepository = Depends(get_repo)):
    log = repo.get_one(log_id)
    if not log:
        raise HTTPException(status_code=404, detail="Log not found")
    return log