add status to user with loads
This commit is contained in:
@@ -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
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -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):
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user