# -*- coding: utf-8 -*- from datetime import datetime, time, timedelta from typing import Optional from uuid import UUID from fastapi import APIRouter, HTTPException, Path, Query, Body router = APIRouter() @router.get('/{item_id}') async def read_items( item_id: int = Path(..., title='The ID of the item to get'), q: Optional[str] = Query(None, alias='item-query'), ): results = {'item_id': item_id} if q: results.update({'q': q}) return results @router.put('/{item_id}') async def update_item( item_id: UUID, start_datetime: Optional[datetime] = Body(None), end_datetime: Optional[datetime] = Body(None), repeat_at: Optional[time] = Body(None), process_after: Optional[timedelta] = Body(None), ): start_process = start_datetime + process_after duration = end_datetime - start_process return { "item_id": item_id, "start_datetime": start_datetime, "end_datetime": end_datetime, "repeat_at": repeat_at, "process_after": process_after, "start_process": start_process, "duration": duration, }