from typing import Any from fastapi import APIRouter, Depends, HTTPException from sqlmodel import Session, select from app.api import deps from app.core import security from app.models.user import User from app.schemas.user import UserCreate, UserRead router = APIRouter() @router.post("/", response_model=UserRead) def create_user( *, session: Session = Depends(deps.get_session), user_in: UserCreate, ) -> Any: """ Create new user. """ user = session.exec(select(User).where(User.email == user_in.email)).first() if user: raise HTTPException( status_code=400, detail="The user with this email already exists in the system", ) user = User( email=user_in.email, username=user_in.username, password_hash=security.get_password_hash(user_in.password), ) session.add(user) session.commit() session.refresh(user) return user