Files
MAIA/backend/modules/auth/services.py
2025-04-26 12:43:19 +02:00

32 lines
1.1 KiB
Python

from sqlalchemy.orm import Session
from modules.auth.models import User
from modules.auth.schemas import UserResponse
from modules.auth.security import hash_password
from core.exceptions import conflict_exception
import uuid
def create_user(username: str, password: str, name: str, db: Session) -> UserResponse:
"""
Create a new user in the database.
Hashes the password before storing it.
Returns the created user object.
"""
if db is None:
raise ValueError("Database session is required")
# Check if the user already exists
existing_user = db.query(User).filter(User.username == username).first()
if existing_user:
raise conflict_exception("Username already exists")
hashed_password = hash_password(password)
user_uuid = str(uuid.uuid4())
user = User(
username=username, hashed_password=hashed_password, name=name, uuid=user_uuid
)
db.add(user)
db.commit()
db.refresh(user) # Loads the generated ID
return UserResponse.model_validate(user) # Converts SQLAlchemy model -> Pydantic