From a9fc764c388a0b67db554d68f5f9e3b9e88eec2e Mon Sep 17 00:00:00 2001 From: IluaAir Date: Sun, 31 Aug 2025 23:27:02 +0300 Subject: [PATCH] add status to user with loads --- src/repository/users.py | 9 +++++---- src/schemas/tasks.py | 1 + src/services/users.py | 10 +++++++++- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/repository/users.py b/src/repository/users.py index 5b6f8d8..4ea65ea 100644 --- a/src/repository/users.py +++ b/src/repository/users.py @@ -26,18 +26,19 @@ class UsersRepo(BaseRepo): async def get_one_with_load( self, user_id: int, + status: str | None = None, tasks_limit: Optional[int] = None, - tasks_offset: int = 0, + tasks_offset: Optional[int] = 0, date_to: Optional[date] = None, date_from: Optional[date] = None, ) -> UsersORM | None: tasks_subquery = self._tasks_subquary( - date_from=date_from, date_to=date_to, user_id=user_id + date_from=date_from, date_to=date_to, user_id=user_id, status=status ) if tasks_limit is not None: tasks_subquery = tasks_subquery.limit(tasks_limit) - if tasks_offset > 0: + if tasks_offset is not None and tasks_offset > 0: tasks_subquery = tasks_subquery.offset(tasks_offset) query = ( select(self.model) @@ -46,7 +47,7 @@ class UsersRepo(BaseRepo): selectinload( self.model.tasks.and_(TasksORM.id.in_(tasks_subquery)) ).load_only( - TasksORM.id, TasksORM.title, TasksORM.due_date, TasksORM.priority + TasksORM.id, TasksORM.title, TasksORM.due_date, TasksORM.priority, TasksORM.status ) ) ) diff --git a/src/schemas/tasks.py b/src/schemas/tasks.py index a446467..f32e946 100644 --- a/src/schemas/tasks.py +++ b/src/schemas/tasks.py @@ -13,6 +13,7 @@ class TaskShort(BaseModel): class TaskWithId(TaskShort): id: int + status: str class TaskADDRequest(TaskShort): diff --git a/src/services/users.py b/src/services/users.py index 242b776..6629787 100644 --- a/src/services/users.py +++ b/src/services/users.py @@ -1,4 +1,5 @@ from datetime import date +import enum from fastapi import HTTPException from src.schemas.users import User, UserUpdate, UserWithTasks @@ -50,7 +51,14 @@ class UserService(BaseService): date_from: date | None, ): print(type(status), status) - user = await self.session.user.get_one_with_load(user_id) + user = await self.session.user.get_one_with_load( + user_id=user_id, + status=status, + tasks_limit=limit, + tasks_offset=offset, + date_from=date_from, + date_to=date_to, + ) if user is None: raise HTTPException(status_code=404, detail="User not found.") return UserWithTasks.model_validate(user)