from fastapi import APIRouter, Depends, Request, status from sqlalchemy.orm import Session from app.database import get_db from app.responses import created_response from app.schemas.user import ( UserCreate, UserDetailResponse, UserResponse, UserUpdate, ) from app.services.user_service import ( create_user, delete_user, get_user_by_id, get_user_list, update_user, ) router = APIRouter(prefix="/users", tags=["users"]) @router.get("/", response_model=list[UserDetailResponse]) def list_users(status: str = None, db: Session = Depends(get_db)): return get_user_list(db, status=status) @router.get("/{id}", response_model=UserDetailResponse) def get_user(id: str, db: Session = Depends(get_db)): return get_user_by_id(db, id) @router.post("/", status_code=status.HTTP_201_CREATED) def create_user_route(request: Request, data: UserCreate, db: Session = Depends(get_db)): user = create_user(db, data) location = f"{request.url.path}{user.id}" return created_response(location) @router.put("/{id}", response_model=UserDetailResponse) def update_user_route(id: str, data: UserUpdate, db: Session = Depends(get_db)): return update_user(db, id, data) @router.delete("/{id}", status_code=status.HTTP_204_NO_CONTENT) def delete_user_route(id: str, db: Session = Depends(get_db)): delete_user(db, id)