11from __future__ import annotations
22
3+ from typing import Annotated
4+
35from fastapi import APIRouter , Depends , HTTPException , status
46from sqlalchemy .ext .asyncio import AsyncSession
57
1214from app .services .task import InvalidDueDate
1315
1416router = APIRouter (prefix = "/tasks" , tags = ["tasks" ])
17+ DbSession = Annotated [AsyncSession , Depends (get_db )]
1518
1619_DUE_DATE_ERROR = HTTPException (
1720 status_code = status .HTTP_400_BAD_REQUEST ,
2124
2225@router .post (
2326 "" ,
24- response_model = TaskRead ,
2527 status_code = status .HTTP_201_CREATED ,
2628 summary = "Создать задачу" ,
2729)
2830async def create_task (
2931 payload : TaskCreate ,
3032 current_user : CurrentUser ,
31- session : AsyncSession = Depends ( get_db ) ,
33+ session : DbSession ,
3234) -> TaskRead :
3335 try :
3436 task = await task_service .create_task (session , current_user , payload )
@@ -39,20 +41,18 @@ async def create_task(
3941
4042@router .get (
4143 "" ,
42- response_model = list [TaskRead ],
4344 summary = "Список задач текущего пользователя" ,
4445)
4546async def list_tasks (
4647 current_user : CurrentUser ,
47- session : AsyncSession = Depends ( get_db ) ,
48+ session : DbSession ,
4849) -> list [TaskRead ]:
4950 tasks = await task_service .get_user_tasks (session , current_user )
5051 return [TaskRead .model_validate (t ) for t in tasks ]
5152
5253
5354@router .get (
5455 "/{task_id}" ,
55- response_model = TaskRead ,
5656 summary = "Получить задачу по id" ,
5757)
5858async def get_task (task : TaskDep ) -> TaskRead :
@@ -61,13 +61,12 @@ async def get_task(task: TaskDep) -> TaskRead:
6161
6262@router .patch (
6363 "/{task_id}" ,
64- response_model = TaskRead ,
6564 summary = "Обновить задачу" ,
6665)
6766async def update_task (
6867 payload : TaskUpdate ,
6968 task : TaskDep ,
70- session : AsyncSession = Depends ( get_db ) ,
69+ session : DbSession ,
7170) -> TaskRead :
7271 try :
7372 updated = await task_service .update_task (session , task , payload )
@@ -78,41 +77,38 @@ async def update_task(
7877
7978@router .delete (
8079 "/{task_id}" ,
81- response_model = TaskDeleted ,
8280 summary = "Удалить задачу" ,
8381)
8482async def delete_task (
8583 task : TaskDep ,
86- session : AsyncSession = Depends ( get_db ) ,
84+ session : DbSession ,
8785) -> TaskDeleted :
8886 task_id = await task_service .delete_task (session , task )
8987 return TaskDeleted (id = task_id )
9088
9189
9290@router .post (
9391 "/{task_id}/tags/{tag_id}" ,
94- response_model = TaskTagLink ,
9592 status_code = status .HTTP_201_CREATED ,
9693 summary = "Привязать тег к задаче" ,
9794)
9895async def attach_tag_to_task (
9996 task : TaskDep ,
10097 tag : TagDep ,
101- session : AsyncSession = Depends ( get_db ) ,
98+ session : DbSession ,
10299) -> TaskTagLink :
103100 await tag_service .attach_tag_to_task (session , task , tag )
104101 return TaskTagLink (task_id = task .id , tag_id = tag .id )
105102
106103
107104@router .delete (
108105 "/{task_id}/tags/{tag_id}" ,
109- response_model = TaskTagLink ,
110106 summary = "Отвязать тег от задачи" ,
111107)
112108async def detach_tag_from_task (
113109 task : TaskDep ,
114110 tag : TagDep ,
115- session : AsyncSession = Depends ( get_db ) ,
111+ session : DbSession ,
116112) -> TaskTagLink :
117113 await tag_service .detach_tag_from_task (session , task , tag )
118114 return TaskTagLink (task_id = task .id , tag_id = tag .id )
0 commit comments