27 lines
724 B
Python
27 lines
724 B
Python
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()]
|