diff --git a/backend/src/backend/dependencies/__init__.py b/backend/src/backend/dependencies/__init__.py new file mode 100644 index 00000000..fe766e90 --- /dev/null +++ b/backend/src/backend/dependencies/__init__.py @@ -0,0 +1 @@ +"""Dependencies for the Numinar coding project backend.""" diff --git a/backend/src/backend/routes/__init__.py b/backend/src/backend/routes/__init__.py new file mode 100644 index 00000000..0643ad7a --- /dev/null +++ b/backend/src/backend/routes/__init__.py @@ -0,0 +1 @@ +"""Routes for the Numinar coding project backend.""" diff --git a/backend/src/backend/routes/users.py b/backend/src/backend/routes/users.py new file mode 100644 index 00000000..6d4b65d4 --- /dev/null +++ b/backend/src/backend/routes/users.py @@ -0,0 +1,32 @@ +"""Routes for user-related operations in the Numinar coding project backend.""" + +from fastapi import APIRouter +from fastapi import HTTPException +from sqlalchemy.exc import NoResultFound + +from backend.dependencies.db import SessionDep +from backend.schemas.users import UserResponse +from backend.services.users import get_user +from backend.services.users import get_users + + +router = APIRouter(prefix="/users", tags=["users"]) + + +@router.get("/", response_model=list[UserResponse]) +async def read_users(session: SessionDep): + """Endpoint to retrieve all users.""" + users = await get_users(session) + return users + + +@router.get("/{email}", response_model=UserResponse) +async def read_user(email: str, session: SessionDep): + """Endpoint to retrieve a user by email.""" + try: + user = await get_user(session, email) + except NoResultFound as e: + raise HTTPException( + status_code=404, detail=f"User with email {email} not found" + ) from e + return user