60 lines
2.4 KiB
Python
60 lines
2.4 KiB
Python
from fastapi import Query, APIRouter, status, Depends, Response, HTTPException
|
|
from backend.code.modules.users.controller import UserController
|
|
|
|
from backend.code.models.requests.user_register import UserRegisterRequest
|
|
from backend.code.models.requests.user_edit import UserEditRequest
|
|
from backend.code.models.responses.user_detail import UserDetailResponse
|
|
from backend.code.models.responses.user_created import UserCreatedResponse
|
|
|
|
routes = APIRouter(prefix="/users", tags=["User"])
|
|
controller = UserController()
|
|
|
|
@routes.get('', status_code = status.HTTP_200_OK, response_model = list[UserDetailResponse])
|
|
def ListUsers(params: str | None = Query(default = None, alias = "query")):
|
|
users = controller.ListUsers(params)
|
|
if users is None:
|
|
raise HTTPException(status_code = status.HTTP_400_BAD_REQUEST)
|
|
|
|
if len(users) == 0:
|
|
return Response(status_code = status.HTTP_204_NO_CONTENT)
|
|
|
|
return users
|
|
|
|
@routes.get('/{id}', status_code = status.HTTP_200_OK, response_model = UserDetailResponse)
|
|
def GetUser(id: int):
|
|
user = controller.SelectUser(id)
|
|
if user is None:
|
|
raise HTTPException(status_code = status.HTTP_404_NOT_FOUND)
|
|
|
|
return user
|
|
|
|
@routes.post('', status_code = status.HTTP_201_CREATED, response_model = UserCreatedResponse)
|
|
def RegisterUser(data: UserRegisterRequest):
|
|
created = controller.RegisterUser(data.Name, data.Surnames, data.Email, data.Username, data.Locked, data.Active)
|
|
if created is None:
|
|
raise HTTPException(status_code = status.HTTP_400_BAD_REQUEST)
|
|
|
|
if created == -1:
|
|
raise HTTPException(status_code = status.HTTP_409_CONFLICT, detail = 'Email exists')
|
|
elif created == -2:
|
|
raise HTTPException(status_code = status.HTTP_409_CONFLICT, detail = 'Username exists')
|
|
|
|
return created
|
|
|
|
@routes.put('/{id}', status_code = status.HTTP_204_NO_CONTENT)
|
|
def EditUser(id: int, data: UserEditRequest):
|
|
edited = controller.EditUser(id, data.Name, data.Surnames, data.Email)
|
|
if edited is None:
|
|
raise HTTPException(status_code = status.HTTP_400_BAD_REQUEST)
|
|
|
|
if deleted == -3:
|
|
raise HTTPException(status_code = status.HTTP_404_NOT_FOUND)
|
|
|
|
@routes.delete('/{id}', status_code = status.HTTP_204_NO_CONTENT)
|
|
def DeleteUser(id: int):
|
|
deleted = controller.DeleteUser(id)
|
|
if deleted is None:
|
|
raise HTTPException(status_code = status.HTTP_400_BAD_REQUEST)
|
|
|
|
if deleted == -3:
|
|
raise HTTPException(status_code = status.HTTP_404_NOT_FOUND) |