Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions app/api/routes/questions.py
Original file line number Diff line number Diff line change
@@ -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

Expand All @@ -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)
24 changes: 24 additions & 0 deletions app/schemas/questions.py
Original file line number Diff line number Diff line change
@@ -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