diff --git a/src/api/dependacies/task_dep.py b/src/api/dependacies/task_dep.py index a516d7b..64212b7 100644 --- a/src/api/dependacies/task_dep.py +++ b/src/api/dependacies/task_dep.py @@ -5,9 +5,7 @@ from fastapi import Depends, Query from fastapi.exceptions import HTTPException from pydantic import BaseModel, model_validator -from src.schemas.tasks import TaskFilter - -TaskFilterDep = Annotated[TaskFilter, Depends()] +from src.schemas.tasks import StatusEnum class Date(BaseModel): @@ -24,11 +22,15 @@ class Date(BaseModel): class Page(BaseModel): - limit: int | None = Query(default=30, ge=1, le=100) - page: int | None = Query(default=0, ge=0) + limit: int = Query(default=30, ge=1, le=100) + page: int | None = Query(default=1, ge=1) -class Filters(Page, Date): +class Status(BaseModel): + status: StatusEnum | None = Query(default=None) + + +class Filters(Date, Status, Page): pass diff --git a/src/schemas/tasks.py b/src/schemas/tasks.py index 2b2bbb2..7c440cb 100644 --- a/src/schemas/tasks.py +++ b/src/schemas/tasks.py @@ -50,11 +50,3 @@ class Task(TaskADDRequest): time_spent: int model_config = ConfigDict(from_attributes=True) - - -class TaskFilter(BaseModel): - status: StatusEnum | None = None - limit: int | None = 30 - offset: int | None = None - date_from: date | None = None - date_to: date | None = None diff --git a/src/services/users.py b/src/services/users.py index 4bb78fd..ba7b1e0 100644 --- a/src/services/users.py +++ b/src/services/users.py @@ -1,5 +1,3 @@ -from datetime import date - from fastapi import HTTPException from src.schemas.users import User, UserUpdate, UserWithTasks @@ -43,7 +41,7 @@ class UserService(BaseService): async def get_user_with_tasks(self, user_id: int, **attrs): if attrs.get("page") and attrs.get("limit"): - tasks_offset = attrs.get("page", 0) * attrs.get("limit") + tasks_offset = (attrs.get("page", 0) - 1) * attrs.get("limit") else: tasks_offset = None user = await self.session.user.get_one_with_load(