add status to user with loads

This commit is contained in:
IluaAir
2025-08-31 23:27:02 +03:00
parent bd9786c14c
commit a9fc764c38
3 changed files with 15 additions and 5 deletions

View File

@@ -26,18 +26,19 @@ class UsersRepo(BaseRepo):
async def get_one_with_load( async def get_one_with_load(
self, self,
user_id: int, user_id: int,
status: str | None = None,
tasks_limit: Optional[int] = None, tasks_limit: Optional[int] = None,
tasks_offset: int = 0, tasks_offset: Optional[int] = 0,
date_to: Optional[date] = None, date_to: Optional[date] = None,
date_from: Optional[date] = None, date_from: Optional[date] = None,
) -> UsersORM | None: ) -> UsersORM | None:
tasks_subquery = self._tasks_subquary( 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: if tasks_limit is not None:
tasks_subquery = tasks_subquery.limit(tasks_limit) 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) tasks_subquery = tasks_subquery.offset(tasks_offset)
query = ( query = (
select(self.model) select(self.model)
@@ -46,7 +47,7 @@ class UsersRepo(BaseRepo):
selectinload( selectinload(
self.model.tasks.and_(TasksORM.id.in_(tasks_subquery)) self.model.tasks.and_(TasksORM.id.in_(tasks_subquery))
).load_only( ).load_only(
TasksORM.id, TasksORM.title, TasksORM.due_date, TasksORM.priority TasksORM.id, TasksORM.title, TasksORM.due_date, TasksORM.priority, TasksORM.status
) )
) )
) )

View File

@@ -13,6 +13,7 @@ class TaskShort(BaseModel):
class TaskWithId(TaskShort): class TaskWithId(TaskShort):
id: int id: int
status: str
class TaskADDRequest(TaskShort): class TaskADDRequest(TaskShort):

View File

@@ -1,4 +1,5 @@
from datetime import date from datetime import date
import enum
from fastapi import HTTPException from fastapi import HTTPException
from src.schemas.users import User, UserUpdate, UserWithTasks from src.schemas.users import User, UserUpdate, UserWithTasks
@@ -50,7 +51,14 @@ class UserService(BaseService):
date_from: date | None, date_from: date | None,
): ):
print(type(status), status) 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: if user is None:
raise HTTPException(status_code=404, detail="User not found.") raise HTTPException(status_code=404, detail="User not found.")
return UserWithTasks.model_validate(user) return UserWithTasks.model_validate(user)