from datetime import date from typing import Annotated 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()] 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()]