init
This commit is contained in:
44
app/presentation/api/v1/users.py
Normal file
44
app/presentation/api/v1/users.py
Normal file
@@ -0,0 +1,44 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from uuid import UUID
|
||||
|
||||
from fastapi import APIRouter, Depends, HTTPException, status
|
||||
|
||||
from app.application.users.use_cases.create_user import (
|
||||
CreateUserCommand,
|
||||
CreateUserUseCase,
|
||||
)
|
||||
from app.application.users.use_cases.get_user import GetUserQuery, GetUserUseCase
|
||||
from app.domain.users.exceptions import InvalidEmail, UserAlreadyExists, UserNotFound
|
||||
from app.presentation.dependencies.users import get_create_user_uc, get_get_user_uc
|
||||
from app.presentation.schemas.users import CreateUserRequest, UserResponse
|
||||
|
||||
router = APIRouter(prefix="/users", tags=["users"])
|
||||
|
||||
|
||||
@router.post("", response_model=UserResponse, status_code=status.HTTP_201_CREATED)
|
||||
async def create_user(
|
||||
req: CreateUserRequest,
|
||||
uc: CreateUserUseCase = Depends(get_create_user_uc),
|
||||
) -> UserResponse:
|
||||
try:
|
||||
dto = await uc.execute(
|
||||
CreateUserCommand(email=str(req.email), full_name=req.full_name)
|
||||
)
|
||||
return UserResponse(**dto.__dict__)
|
||||
except InvalidEmail as e:
|
||||
raise HTTPException(status_code=400, detail=str(e))
|
||||
except UserAlreadyExists as e:
|
||||
raise HTTPException(status_code=409, detail=str(e))
|
||||
|
||||
|
||||
@router.get("/{user_id}", response_model=UserResponse)
|
||||
async def get_user(
|
||||
user_id: UUID,
|
||||
uc: GetUserUseCase = Depends(get_get_user_uc),
|
||||
) -> UserResponse:
|
||||
try:
|
||||
dto = await uc.execute(GetUserQuery(user_id=user_id))
|
||||
return UserResponse(**dto.__dict__)
|
||||
except UserNotFound as e:
|
||||
raise HTTPException(status_code=404, detail=str(e))
|
||||
Reference in New Issue
Block a user