"""Endpoints module.""" from fastapi import APIRouter, Depends, Response, status from dependency_injector.wiring import inject, Provide from .containers import Container from .services import UserService from .repositories import NotFoundError router = APIRouter() @router.get('/users') @inject def get_list( user_service: UserService = Depends(Provide[Container.user_service]), ): return user_service.get_users() @router.get('/users/{user_id}') @inject def get_by_id( user_id: int, user_service: UserService = Depends(Provide[Container.user_service]), ): try: return user_service.get_user_by_id(user_id) except NotFoundError: return Response(status_code=status.HTTP_404_NOT_FOUND) @router.post('/users', status_code=status.HTTP_201_CREATED) @inject def add( user_service: UserService = Depends(Provide[Container.user_service]), ): return user_service.create_user() @router.delete('/users/{user_id}', status_code=status.HTTP_204_NO_CONTENT) @inject def remove( user_id: int, user_service: UserService = Depends(Provide[Container.user_service]), ): try: user_service.delete_user_by_id(user_id) except NotFoundError: return Response(status_code=status.HTTP_404_NOT_FOUND) else: return Response(status_code=status.HTTP_204_NO_CONTENT) @router.get('/status') def get_status(): return {'status': 'OK'}