From 2fac9eb5f8eafb2d281c6fcf90c4116f75992595 Mon Sep 17 00:00:00 2001 From: KevinRawal Date: Mon, 1 Sep 2025 08:14:12 +0530 Subject: [PATCH 1/2] added questions endpoint --- app/api/routes/questions.py | 21 +++++++++++++++++++++ app/schemas/questions.py | 23 +++++++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 app/schemas/questions.py diff --git a/app/api/routes/questions.py b/app/api/routes/questions.py index 145c953..daddb15 100644 --- a/app/api/routes/questions.py +++ b/app/api/routes/questions.py @@ -3,6 +3,7 @@ from app.rbac import check_for_permission from app.settings import settings from app.utils.http_client import make_request +from app.schemas.questions import TechDescription router = APIRouter() @@ -17,3 +18,23 @@ 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) \ No newline at end of file diff --git a/app/schemas/questions.py b/app/schemas/questions.py new file mode 100644 index 0000000..5059453 --- /dev/null +++ b/app/schemas/questions.py @@ -0,0 +1,23 @@ +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 From 0b20aaedf9113fe081b0fa7f45b1c259e6bbe689 Mon Sep 17 00:00:00 2001 From: KevinRawal Date: Mon, 1 Sep 2025 08:15:18 +0530 Subject: [PATCH 2/2] lint fix --- app/api/routes/questions.py | 7 +++++-- app/schemas/questions.py | 1 + 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/app/api/routes/questions.py b/app/api/routes/questions.py index daddb15..790b909 100644 --- a/app/api/routes/questions.py +++ b/app/api/routes/questions.py @@ -1,9 +1,9 @@ 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 -from app.schemas.questions import TechDescription router = APIRouter() @@ -19,6 +19,7 @@ def get_daily_questions( 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, @@ -26,9 +27,11 @@ def generate_question( ): """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, @@ -37,4 +40,4 @@ def add_tech_description( """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) \ No newline at end of file + return make_request("POST", url, json=payload) diff --git a/app/schemas/questions.py b/app/schemas/questions.py index 5059453..aaa7357 100644 --- a/app/schemas/questions.py +++ b/app/schemas/questions.py @@ -13,6 +13,7 @@ class TechDescriptionMetadata(BaseModel): topic: str tech_stack: str difficulty: str + tags: str