users.py 1.1 KB

1234567891011121314151617181920212223242526
  1. from fastapi import APIRouter, Depends, HTTPException, status
  2. from typing import Annotated, Any
  3. from app.db.session import get_db
  4. from app.schemas import UserCreate, UserResponse
  5. from app.crud import get_user_by_username, create_user
  6. from app.api.deps import get_current_user
  7. router = APIRouter()
  8. @router.post("/", response_model=UserResponse)
  9. def create_new_user(user: UserCreate, db: Any = Depends(get_db)):
  10. db_user = get_user_by_username(db, username=user.username)
  11. if db_user:
  12. raise HTTPException(status_code=400, detail="Username already registered")
  13. return create_user(db=db, user=user.model_copy(update={"role": "user"}))
  14. @router.get("/me", response_model=UserResponse)
  15. def read_users_me(current_user: Annotated[Any, Depends(get_current_user)]):
  16. return current_user
  17. @router.get("/{username}", response_model=UserResponse)
  18. def read_user(username: str, db: Any = Depends(get_db)):
  19. db_user = get_user_by_username(db, username=username)
  20. if db_user is None:
  21. raise HTTPException(status_code=404, detail="User not found")
  22. return db_user