from fastapi import APIRouter, HTTPException
from pydantic import BaseModel, Field
from services.translator import TranslatorService

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


class TranslateRequest(BaseModel):
    text: str        = Field(..., min_length=1, max_length=5000)
    target_lang: str = Field(..., min_length=2, max_length=5)
    source_lang: str | None = Field(default=None, min_length=2, max_length=5)


class TranslateResponse(BaseModel):
    translated_text: str
    source_lang: str
    target_lang: str
    confidence: float | None = None


@router.post("/", response_model=TranslateResponse)
async def translate_text(req: TranslateRequest):
    try:
        translator = TranslatorService()
        result = await translator.translate(
            text=req.text,
            source=req.source_lang,
            target=req.target_lang,
        )
        return TranslateResponse(**result)
    except ValueError as e:
        raise HTTPException(status_code=400, detail=str(e))
    except Exception as e:
        raise HTTPException(status_code=500, detail=f"Translation failed: {str(e)}")
