Files
taskncoffee/src/api/dependacies/task_dep.py
2025-08-29 22:10:15 +03:00

46 lines
1.1 KiB
Python

from datetime import date
from enum import Enum
from typing import Annotated
from fastapi import Depends, Query
from fastapi.exceptions import HTTPException
from pydantic import BaseModel, model_validator
class StatEnum(str, Enum):
open = "open"
closed = "closed"
in_progress = "in_progress"
todo = "todo"
class Pagination(BaseModel):
page: int | None = Query(default=0, ge=0)
limit: int | None = Query(default=30, ge=0, le=50)
PaginationTasksDep = Annotated[Pagination, Depends()]
class Status(BaseModel):
status: StatEnum | None = Query(default=None)
StatusTaskDep = Annotated[Status, Depends()]
class Date(BaseModel):
date_from: date | None = Query(default=None)
date_to: date | None = Query(default=None)
@model_validator(mode="after")
def check_dates(self):
if self.date_from and self.date_to and self.date_to < self.date_from:
raise HTTPException(
status_code=422, detail="date_to cannot be less than date_from"
)
return self
DateDep = Annotated[Date, Depends()]