from fastapi import APIRouter, Depends, File, UploadFile
from sqlalchemy.orm import Session

from app.core.database import get_db
from app.schemas.conversation import (
    AudioConversationResponse,
    ConversationCreate,
    ConversationOut,
)
from app.services.conversation_service import ConversationService

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


@router.post("", response_model=ConversationOut)
def create_conversation(
    payload: ConversationCreate,
    db: Session = Depends(get_db),
) -> ConversationOut:
    return ConversationService(db).create(payload)


@router.get("/{conversation_id}", response_model=ConversationOut)
def get_conversation(
    conversation_id: str,
    db: Session = Depends(get_db),
) -> ConversationOut:
    return ConversationService(db).get(conversation_id)


@router.post("/{conversation_id}/audio", response_model=AudioConversationResponse)
async def process_conversation_audio(
    conversation_id: str,
    audio: UploadFile = File(...),
    db: Session = Depends(get_db),
) -> AudioConversationResponse:
    content = await audio.read()
    return await ConversationService(db).process_audio(conversation_id, content)
