add limit page date to date from
This commit is contained in:
@@ -23,4 +23,13 @@ class Date(BaseModel):
|
|||||||
return self
|
return self
|
||||||
|
|
||||||
|
|
||||||
DateDep = Annotated[Date, Depends()]
|
class Page(BaseModel):
|
||||||
|
limit: int | None = Query(default=30, ge=1, le=100)
|
||||||
|
page: int | None = Query(default=0, ge=0)
|
||||||
|
|
||||||
|
|
||||||
|
class Filters(Page, Date):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
FilterDep = Annotated[Filters, Depends()]
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
from fastapi import APIRouter, Body, HTTPException
|
from fastapi import APIRouter, Body, HTTPException
|
||||||
|
|
||||||
from src.api.dependacies.db_dep import sessionDep
|
from src.api.dependacies.db_dep import sessionDep
|
||||||
|
from src.api.dependacies.task_dep import FilterDep
|
||||||
from src.api.dependacies.user_dep import (
|
from src.api.dependacies.user_dep import (
|
||||||
ActiveUser,
|
ActiveUser,
|
||||||
AdminUser,
|
AdminUser,
|
||||||
@@ -25,12 +26,12 @@ async def get_user_by_id(session: sessionDep, id: int, _: AdminUser):
|
|||||||
|
|
||||||
|
|
||||||
@router.get("/{id}/tasks")
|
@router.get("/{id}/tasks")
|
||||||
async def get_user_tasks(session: sessionDep, id: int, user: ActiveUser):
|
async def get_user_tasks(
|
||||||
|
session: sessionDep, id: int, user: ActiveUser, filters: FilterDep
|
||||||
|
):
|
||||||
if user.id != id and user.is_superuser is False:
|
if user.id != id and user.is_superuser is False:
|
||||||
raise HTTPException(status_code=403, detail="Forbidden")
|
raise HTTPException(status_code=403, detail="Forbidden")
|
||||||
tasks = await UserService(session).get_user_with_tasks(
|
tasks = await UserService(session).get_user_with_tasks(id, **filters.model_dump())
|
||||||
user_id=id, status=None, limit=None, offset=None, date_to=None, date_from=None
|
|
||||||
)
|
|
||||||
return tasks.tasks
|
return tasks.tasks
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -41,22 +41,18 @@ class UserService(BaseService):
|
|||||||
await self.session.commit()
|
await self.session.commit()
|
||||||
return User.model_validate(user)
|
return User.model_validate(user)
|
||||||
|
|
||||||
async def get_user_with_tasks(
|
async def get_user_with_tasks(self, user_id: int, **attrs):
|
||||||
self,
|
if attrs.get("page") and attrs.get("limit"):
|
||||||
user_id: int,
|
tasks_offset = attrs.get("page", 0) * attrs.get("limit")
|
||||||
status: str | None,
|
else:
|
||||||
limit: int | None,
|
tasks_offset = None
|
||||||
offset: int | None,
|
|
||||||
date_to: date | None,
|
|
||||||
date_from: date | None,
|
|
||||||
):
|
|
||||||
user = await self.session.user.get_one_with_load(
|
user = await self.session.user.get_one_with_load(
|
||||||
user_id=user_id,
|
user_id=user_id,
|
||||||
status=status,
|
status=attrs.get("status"),
|
||||||
tasks_limit=limit,
|
tasks_limit=attrs.get("limit"),
|
||||||
tasks_offset=offset,
|
tasks_offset=tasks_offset,
|
||||||
date_from=date_from,
|
date_from=attrs.get("date_from"),
|
||||||
date_to=date_to,
|
date_to=attrs.get("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.")
|
||||||
|
|||||||
Reference in New Issue
Block a user