From b74f517afb70dacd8bdf5bc51517ef2b0534ab5a Mon Sep 17 00:00:00 2001 From: Backend IM Bot Date: Tue, 11 Mar 2025 08:36:51 +0000 Subject: [PATCH] feat: Update endpoint signup --- app/api/endpoints/signup.py | 31 ++++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/app/api/endpoints/signup.py b/app/api/endpoints/signup.py index 4c6f9bc..cd07fc4 100644 --- a/app/api/endpoints/signup.py +++ b/app/api/endpoints/signup.py @@ -1,13 +1,26 @@ -from fastapi import APIRouter, HTTPException -from pydantic import BaseModel +from fastapi import APIRouter, Depends, HTTPException, status +from sqlalchemy.orm import Session +from typing import Optional +from database import get_db +from models import User +from schemas import UserCreate +from utils import hash_password router = APIRouter() -class UserRegistration(BaseModel): - username: str - password: str - email: str +@router.post("/signup", response_model=UserCreate, status_code=status.HTTP_201_CREATED) +async def signup(user_data: UserCreate, db: Session = Depends(get_db)): + """ + Create a new user account + """ + existing_user = db.query(User).filter(User.email == user_data.email).first() + if existing_user: + raise HTTPException(status_code=status.HTTP_409_CONFLICT, detail="Email already registered") -@router.post("/signup") -async def signup(user: UserRegistration): - return {"message": "User registered successfully", "user": user.username} \ No newline at end of file + hashed_password = hash_password(user_data.password) + new_user = User(email=user_data.email, password=hashed_password) + db.add(new_user) + db.commit() + db.refresh(new_user) + + return new_user \ No newline at end of file