from fastapi import APIRouter, Depends, HTTPException, status from sqlalchemy.orm import Session from typing import Optional from models import User from schemas import UserCreate from database import get_db from utils import hash_password router = APIRouter() @router.post("/signup", response_model=UserCreate, status_code=status.HTTP_201_CREATED) async def create_user(user: UserCreate, db: Session = Depends(get_db)): """ Create a new user account """ existing_user = db.query(User).filter(User.email == user.email).first() if existing_user: raise HTTPException(status_code=status.HTTP_409_CONFLICT, detail="Email already registered") hashed_password = hash_password(user.password) new_user = User(email=user.email, hashed_password=hashed_password) db.add(new_user) db.commit() db.refresh(new_user) return new_user