44 lines
1.3 KiB
Python
44 lines
1.3 KiB
Python
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)
|