from typing import List from fastapi import APIRouter, HTTPException, Depends from sqlalchemy.orm import Session from app.infrastructure.database.dependencies import get_db from app.core.entities.user import UserEntity from app.core.usecases.user_service import UsersService router = APIRouter() @router.get("/users", response_model=List[UserEntity]) def read_users(db: Session = Depends(get_db)): service = UsersService(db) return service.get_all_users() @router.get("/users/{user_id}", response_model=UserEntity) def read_user(user_id: int, db: Session = Depends(get_db)): service = UsersService(db) user = service.get_user_by_id(user_id) if user is None: raise HTTPException(status_code=404, detail="User not found") return user @router.post("/users", response_model=UserEntity) def create_user(user: UserEntity, db: Session = Depends(get_db)): service = UsersService(db) return service.create_user(user) @router.put("/users/{user_id}", response_model=UserEntity) def update_user(user_id: int, user: UserEntity, db: Session = Depends(get_db)): service = UsersService(db) updated_user = service.update_user(user_id, user) if updated_user is None: raise HTTPException(status_code=404, detail="User not found") return updated_user @router.delete("/users/{user_id}", response_model=bool) def delete_user(user_id: int, db: Session = Depends(get_db)): service = UsersService(db) success = service.delete_user(user_id) if not success: raise HTTPException(status_code=404, detail="User not found") return success