|
| 1 | +from fastapi import APIRouter, Depends, HTTPException |
| 2 | + |
| 3 | +from app.db.schema import SessionLocal |
| 4 | +from app.models.user import UserCreate, UserRead |
| 5 | +from app.services.user_service import UserService |
| 6 | + |
| 7 | +router = APIRouter() |
| 8 | + |
| 9 | + |
| 10 | +def get_user_service() -> UserService: |
| 11 | + return UserService(session=SessionLocal()) |
| 12 | + |
| 13 | + |
| 14 | +@router.get("/users", response_model=list[UserRead]) |
| 15 | +def get_users(service: UserService = Depends(get_user_service)): |
| 16 | + return service.list_users() |
| 17 | + |
| 18 | + |
| 19 | +@router.post("/users", response_model=UserRead) |
| 20 | +def create_user(user: UserCreate, service: UserService = Depends(get_user_service)): |
| 21 | + return service.create_user(user.name) |
| 22 | + |
| 23 | + |
| 24 | +@router.get("/users/{user_id}", response_model=UserRead) |
| 25 | +def get_user(user_id: int, service: UserService = Depends(get_user_service)): |
| 26 | + user = service.get_user(user_id) |
| 27 | + if not user: |
| 28 | + raise HTTPException(status_code=404, detail="User not found") |
| 29 | + return user |
| 30 | + |
| 31 | + |
| 32 | +@router.put("/users/{user_id}", response_model=UserRead) |
| 33 | +def update_user( |
| 34 | + user_id: int, user: UserCreate, service: UserService = Depends(get_user_service) |
| 35 | +): |
| 36 | + updated = service.update_user(user_id, user.name) |
| 37 | + if not updated: |
| 38 | + raise HTTPException(status_code=404, detail="User not found") |
| 39 | + return updated |
| 40 | + |
| 41 | + |
| 42 | +@router.delete("/users/{user_id}") |
| 43 | +def delete_user(user_id: int, service: UserService = Depends(get_user_service)): |
| 44 | + success = service.delete_user(user_id) |
| 45 | + if not success: |
| 46 | + raise HTTPException(status_code=404, detail="User not found") |
| 47 | + return {"success": True} |
0 commit comments