from fastapi import APIRouter, Depends, status

from app.deps import verify_internal_token
from app.schemas.assessments import (
    AssessmentGenerateRequest,
    AssessmentGenerateResponse,
    AssessmentGradeRequest,
    AssessmentGradeResponse,
)
from app.services.assessments import AssessmentsService

router = APIRouter(prefix="/assessments")
_service = AssessmentsService()


@router.post(
    "/generate",
    response_model=AssessmentGenerateResponse,
    status_code=status.HTTP_200_OK,
    summary="Assessment Builder (Generate)",
    dependencies=[Depends(verify_internal_token)],
)
async def generate_assessment(
    payload: AssessmentGenerateRequest,
) -> AssessmentGenerateResponse:
    return await _service.generate(payload)


@router.post(
    "/grade",
    response_model=AssessmentGradeResponse,
    status_code=status.HTTP_200_OK,
    summary="Assessment Grading",
    dependencies=[Depends(verify_internal_token)],
)
async def grade_assessment(payload: AssessmentGradeRequest) -> AssessmentGradeResponse:
    return await _service.grade(payload)
