from typing import Any from fastapi import APIRouter, Depends, HTTPException from sqlalchemy.orm import Session from app import crud from app.api import deps from app.schemas.user import User, UserCreate router = APIRouter() @router.get("/{user_id}", response_model=User) def read_user( user_id: int, db: Session = Depends(deps.get_db), current_user: User = Depends(deps.get_current_user) ) -> Any: """ Get user by ID. """ user = crud.user.get_user(db, user_id=user_id) if user is None: raise HTTPException( status_code=404, detail="User not found" ) return user @router.post("/", response_model=User) def create_user( *, db: Session = Depends(deps.get_db), user_in: UserCreate, ) -> Any: """ Create new user. """ user = crud.user.get_user_by_email(db, email=user_in.email) if user: raise HTTPException( status_code=400, detail="Email already registered" ) user = crud.user.create_user(db, user=user_in) return user