26 lines
779 B
Python
26 lines
779 B
Python
import datetime
|
|
from typing import Annotated
|
|
|
|
from fastapi import Depends, HTTPException, status
|
|
|
|
|
|
def date_parser(date: str) -> datetime.date:
|
|
if date == "today":
|
|
return datetime.date.today()
|
|
elif date == "tomorrow":
|
|
return datetime.date.today() + datetime.timedelta(days=1)
|
|
elif date.startswith("day-"):
|
|
days = int(date.split("-")[-1])
|
|
return datetime.date.today() + datetime.timedelta(days=days)
|
|
else:
|
|
try:
|
|
return datetime.date.strptime(date, "%Y-%m-%d")
|
|
except ValueError as exc:
|
|
raise HTTPException(
|
|
status_code=status.HTTP_400_BAD_REQUEST,
|
|
detail={"date": f"{exc}"},
|
|
) from exc
|
|
|
|
|
|
DateDepends = Annotated[datetime.date, Depends(date_parser)]
|