|
@@ -0,0 +1,41 @@
|
|
|
+# -*- 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,
|
|
|
+ }
|