Skip to content

Commit

Permalink
Добавляет api для вопросов
Browse files Browse the repository at this point in the history
  • Loading branch information
codEnjoyer committed Nov 20, 2023
1 parent 78a40e9 commit 1bd8a49
Show file tree
Hide file tree
Showing 7 changed files with 79 additions and 36 deletions.
5 changes: 3 additions & 2 deletions backend/src/game/units/tasks/questions/answers/schemas.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,14 @@ class __AnswerBase(BaseModel):


class AnswerOptionRead(__AnswerBase):
id: UUID
question_id: UUID


class AnswerOptionCreate(__AnswerBase):
pass
is_correct: bool


class AnswerOptionUpdate(__AnswerBase):
answer: str | None = None
question_id: UUID | None = None
is_correct: bool | None = None
4 changes: 2 additions & 2 deletions backend/src/game/units/tasks/questions/enums.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from enum import Enum, auto
from enum import auto, StrEnum


class QuestionTypes(Enum):
class QuestionTypes(StrEnum):
SingleChoice = auto()
MultipleChoice = auto()
40 changes: 40 additions & 0 deletions backend/src/game/units/tasks/questions/router.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
from uuid import UUID

from fastapi import APIRouter

from game.units.tasks.questions.schemas import QuestionRead, QuestionCreate, QuestionUpdate

router = APIRouter(tags=["Questions"])


@router.get('/questions/', tags=["Dev"])
async def root() -> list[QuestionRead]:
return []


@router.post('/maps/{map_id}/modules/{module_id}/levels/{level_id}/tasks/{task_id}/')
async def post_question_to_task_unit(map_id: UUID,
module_id: UUID,
level_id: UUID,
task_id: UUID,
question_create: QuestionCreate) -> QuestionRead:
return QuestionRead()


@router.delete("/maps/{map_id}/modules/{module_id}/levels/{level_id}/tasks/{task_id}/questions/{question_id}/")
async def delete_question_from_task_unit(map_id: UUID,
module_id: UUID,
level_id: UUID,
task_id: UUID,
question_id: UUID) -> QuestionRead:
return QuestionRead()


@router.patch("/maps/{map_id}/modules/{module_id}/levels/{level_id}/tasks/{task_id}/questions/{question_id}/")
async def update_question_in_task_unit(map_id: UUID,
module_id: UUID,
level_id: UUID,
task_id: UUID,
question_id: UUID,
question_update: QuestionUpdate) -> QuestionRead:
return QuestionRead()
2 changes: 1 addition & 1 deletion backend/src/game/units/tasks/questions/schemas.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ class QuestionRead(__QuestionBase):


class QuestionCreate(__QuestionBase):
correct_answer: AnswerOptionCreate
type: QuestionTypes = QuestionTypes.SingleChoice
possible_answers: list[AnswerOptionCreate]


Expand Down
46 changes: 23 additions & 23 deletions backend/src/game/units/tasks/router.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,38 +13,38 @@ async def root(task_unit_service: TaskUnitServiceType) -> list[TaskUnitRead]:
return await task_unit_service.get_all()


@router.get("/maps/{map_id}/modules/{module_id}/levels/{level_id}/tasks/{task_id}/")
async def get_task_in_level(map_id: UUID,
module_id: UUID,
level_id: UUID,
task_id: UUID,
task_unit_service: TaskUnitServiceType) -> TaskUnitRead:
return await task_unit_service.get_one(task_id)
# @router.get("/maps/{map_id}/modules/{module_id}/levels/{level_id}/tasks/{task_id}/")
# async def get_task_in_level(map_id: UUID,
# module_id: UUID,
# level_id: UUID,
# task_id: UUID,
# task_unit_service: TaskUnitServiceType) -> TaskUnitRead:
# return await task_unit_service.get_one(task_id)


@router.post("/maps/{map_id}/modules/{module_id}/levels/{level_id}/tasks/")
async def post_task_to_level(map_id: UUID,
module_id: UUID,
level_id: UUID,
task_create: TaskUnitCreate,
task_unit_service: TaskUnitServiceType) -> TaskUnitRead:
async def post_task_unit_to_level(map_id: UUID,
module_id: UUID,
level_id: UUID,
task_create: TaskUnitCreate,
task_unit_service: TaskUnitServiceType) -> TaskUnitRead:
return await task_unit_service.create_one(level_id, task_create)


@router.delete("/maps/{map_id}/modules/{module_id}/levels/{level_id}/tasks/{task_id}/")
async def delete_task_from_level(map_id: UUID,
module_id: UUID,
level_id: UUID,
task_id: UUID,
task_unit_service: TaskUnitServiceType) -> TaskUnitRead:
async def delete_task_unit_from_level(map_id: UUID,
module_id: UUID,
level_id: UUID,
task_id: UUID,
task_unit_service: TaskUnitServiceType) -> TaskUnitRead:
return await task_unit_service.delete_one(task_id)


@router.patch("/maps/{map_id}/modules/{module_id}/levels/{level_id}/tasks/{task_id}/")
async def update_task_in_level(map_id: UUID,
module_id: UUID,
level_id: UUID,
task_id: UUID,
task_update: TaskUnitUpdate,
task_unit_service: TaskUnitServiceType) -> TaskUnitRead:
async def update_task_unit_in_level(map_id: UUID,
module_id: UUID,
level_id: UUID,
task_id: UUID,
task_update: TaskUnitUpdate,
task_unit_service: TaskUnitServiceType) -> TaskUnitRead:
return await task_unit_service.update_one(task_id, task_update)
14 changes: 7 additions & 7 deletions backend/src/game/units/theory/router.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,13 @@ async def root(theory_unit_service: TheoryUnitServiceType) -> list[TheoryUnitRea
return await theory_unit_service.get_all()


@router.get("/maps/{map_id}/modules/{module_id}/levels/{level_id}/theory/{theory_id}/")
async def get_level_theory_unit(map_id: UUID,
module_id: UUID,
level_id: UUID,
theory_id: UUID,
theory_unit_service: TheoryUnitServiceType) -> TheoryUnitRead:
return await theory_unit_service.get_one(theory_id)
# @router.get("/maps/{map_id}/modules/{module_id}/levels/{level_id}/theory/{theory_id}/")
# async def get_level_theory_unit(map_id: UUID,
# module_id: UUID,
# level_id: UUID,
# theory_id: UUID,
# theory_unit_service: TheoryUnitServiceType) -> TheoryUnitRead:
# return await theory_unit_service.get_one(theory_id)


@router.post("/maps/{map_id}/modules/{module_id}/levels/{level_id}/theory/")
Expand Down
4 changes: 3 additions & 1 deletion backend/src/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,9 @@
from game.modules.router import router as modules_router
from game.map.router import router as map_router
from game.units.tasks.router import router as tasks_router
from game.units.tasks.questions.router import router as questions_router
from game.units.theory.router import router as theory_router
#

# from users.router import router as users_router
# from users.tutors.router import router as tutors_router
# from users.employees.router import router as employees_router
Expand Down Expand Up @@ -58,6 +59,7 @@ async def unprotected_route():
modules_router,
map_router,
tasks_router,
questions_router,
theory_router,
# users_router,
# tutors_router,
Expand Down

0 comments on commit 1bd8a49

Please sign in to comment.