Files
settlements-admin/backend/code/modules/users/router.py
T
2026-11-05 08:28:15 +00:00

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)