62 lines
2.1 KiB
Python
62 lines
2.1 KiB
Python
from asyncreq import request
|
|
from fastapi import APIRouter, HTTPException, Request
|
|
|
|
from src.api.config import API_USERS
|
|
from src.api.schemas.user import User, UserRegister
|
|
|
|
router = APIRouter()
|
|
|
|
|
|
@router.get("", response_model=list[User])
|
|
async def get_users(req: Request):
|
|
request_id = req.state.request_id
|
|
header = {"x-api-request-id": request_id}
|
|
(response, status, _) = await request(f"{API_USERS}", "GET", headers=header)
|
|
if status < 200 or status > 204:
|
|
raise HTTPException(status_code=status, detail=response)
|
|
return response
|
|
|
|
|
|
@router.post("", response_model=User)
|
|
async def create_users(user: UserRegister, req: Request):
|
|
request_id = req.state.request_id
|
|
header = {"x-api-request-id": request_id}
|
|
(response, status, _) = await request(
|
|
f"{API_USERS}", "POST", json=user.dump_model(), headers=header
|
|
)
|
|
if status < 200 or status > 204:
|
|
raise HTTPException(status_code=status, detail=response)
|
|
return response
|
|
|
|
|
|
@router.get("/{id}", response_model=User)
|
|
async def get_user(id: str, req: Request):
|
|
request_id = req.state.request_id
|
|
header = {"x-api-request-id": request_id}
|
|
(response, status, _) = await request(f"{API_USERS}/{id}", "GET", headers=header)
|
|
if status < 200 or status > 204:
|
|
raise HTTPException(status_code=status, detail=response)
|
|
return response
|
|
|
|
|
|
@router.put("/{id}", response_model=User)
|
|
async def update_user(user: UserRegister, req: Request):
|
|
request_id = req.state.request_id
|
|
header = {"x-api-request-id": request_id}
|
|
(response, status, _) = await request(
|
|
f"{API_USERS}/{id}", "PUT", json=user.model_dump(), headers=header
|
|
)
|
|
if status < 200 or status > 204:
|
|
raise HTTPException(status_code=status, detail=response)
|
|
return response
|
|
|
|
|
|
@router.delete("/{id}", response_model=User)
|
|
async def delete_user(req: Request):
|
|
request_id = req.state.request_id
|
|
header = {"x-api-request-id": request_id}
|
|
(response, status, _) = await request(f"{API_USERS}/{id}", "DELETE", headers=header)
|
|
if status < 200 or status > 204:
|
|
raise HTTPException(status_code=status, detail=response)
|
|
return response
|