import fastapi import pydantic from app.storage.mongo import staff class RequestPutBody(pydantic.BaseModel): platform_id: int vk_id: int|None yandex_id: int|None telegram_id: int|None email: str|None class RequestPostBody(pydantic.BaseModel): platform_id: int email: str|None class RequestDeleteBody(pydantic.BaseModel): platform_id: int router = fastapi.APIRouter() @router.post('/api/v1/staff', status_code=fastapi.status.HTTP_202_ACCEPTED) async def post(body: RequestPostBody): await staff.create(staff=staff.Staff(platform_id=body.platform_id, email=body.email)) @router.put('/api/v1/staff', status_code=fastapi.status.HTTP_202_ACCEPTED, responses={404: {'description': 'Not found'}}) async def put(body: RequestPutBody): changed = await staff.update(platform_id=body.platform_id, email=body.email, vk_id=body.vk_id, yandex_id=body.yandex_id, telegram_id=body.telegram_id) if not changed: raise fastapi.HTTPException(404) @router.delete('/api/v1/staff', status_code=fastapi.status.HTTP_202_ACCEPTED, responses={404: {'description': 'Not found'}}) async def delete(body: RequestDeleteBody): changed = await staff.delete(platform_id=body.platform_id) if not changed: raise fastapi.HTTPException(404)