diff --git a/app/api/routes/questions.py b/app/api/routes/questions.py index 145c953..790b909 100644 --- a/app/api/routes/questions.py +++ b/app/api/routes/questions.py @@ -1,6 +1,7 @@ from fastapi import APIRouter, Depends from app.rbac import check_for_permission +from app.schemas.questions import TechDescription from app.settings import settings from app.utils.http_client import make_request @@ -17,3 +18,26 @@ def get_daily_questions( """Fetch daily questions from the external generator service.""" url = f"{GENERATOR_SERVICE_URL}/api/v1/questions/get_daily_question" return make_request("GET", url) + + +@router.post("/generate_question") +def generate_question( + user_prompt: str, + _check_permission=Depends(check_for_permission("VIEW_QUESTIONS")), +): + """Generate a new question based on topic and difficulty.""" + url = f"{GENERATOR_SERVICE_URL}/api/v1/questions/generate_question" + + payload = {"user_prompt": user_prompt} + return make_request("POST", url, json=payload) + + +@router.post("/add_tech_description") +def add_tech_description( + request: TechDescription, + _check_permission=Depends(check_for_permission("VIEW_QUESTIONS")), +): + """Add a technical description to a question.""" + url = f"{GENERATOR_SERVICE_URL}/api/v1/questions/add_tech_description" + payload = request.model_dump() + return make_request("POST", url, json=payload) diff --git a/app/schemas/questions.py b/app/schemas/questions.py new file mode 100644 index 0000000..aaa7357 --- /dev/null +++ b/app/schemas/questions.py @@ -0,0 +1,24 @@ +from pydantic import BaseModel + + +class UserPrompt(BaseModel): + """Schema for user prompt input.""" + + user_prompt: str | None = None + + +class TechDescriptionMetadata(BaseModel): + """Schema for tech description metadata.""" + + topic: str + tech_stack: str + difficulty: str + + tags: str + + +class TechDescription(BaseModel): + """Schema for tech description input.""" + + description: str + metadata: TechDescriptionMetadata