Files
taskncoffee/src/api/v1/tasks.py
2025-09-28 22:18:23 +03:00

60 lines
1.7 KiB
Python

from typing import Annotated
from fastapi import APIRouter, Body, Depends, HTTPException
from src.api.dependacies.db_dep import sessionDep
from src.api.dependacies.user_dep import ActiveUser
from src.schemas.tasks import TaskADDRequest, TaskPATCHRequest
from src.services.tasks import TaskService
router = APIRouter(prefix="/tasks", tags=["Tasks"])
@router.get("/{id}")
async def get_task_id(session: sessionDep, id: int, user: ActiveUser):
task = await TaskService(session).get_task(id)
if task.user_id != user.id and user.is_superuser is False:
raise HTTPException(status_code=403, detail="Forbidden")
return task
@router.post("/")
async def post_task(
task_data: Annotated[TaskADDRequest, Depends()],
session: sessionDep,
user: ActiveUser,
):
result = await TaskService(session).create_task(
user_id=user.id, task_data=task_data
)
return result
@router.patch("/{id}")
async def patch_task(
session: sessionDep,
id: int,
user: ActiveUser,
task_data: TaskPATCHRequest = Body(),
):
if user.is_superuser is False:
task = await TaskService(session).get_task(id)
if task.user_id != user.id:
raise HTTPException(status_code=403, detail="Forbidden")
updated_task = await TaskService(session).update_task(id, task_data)
return updated_task
@router.delete("/{id}")
async def delete_task(
session: sessionDep,
id: int,
user: ActiveUser,
):
if user.is_superuser is False:
task = await TaskService(session).get_task(id)
if task.user_id != user.id:
raise HTTPException(status_code=403, detail="Forbidden")
await TaskService(session).delete_task(id)
return {"message": "Task deleted successfully"}