from app.models.auth import User from argon2 import PasswordHasher from fastapi import APIRouter, Depends, HTTPException, status from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.future import select from app.schemas.auth import RegisterSchema from app.utils.db import get_db router = APIRouter() ph = PasswordHasher() @router.post("/register") async def register(user: RegisterSchema, db: AsyncSession = Depends(get_db)): result = await db.execute( select(User).where( (User.username == user.username) | (User.email == user.email) ) ) existing = result.scalar_one_or_none() if existing: raise HTTPException( status_code=status.HTTP_400_BAD_REQUEST, detail="Username or email already exists", ) hashed = ph.hash(user.password) new_user = User(username=user.username, email=user.email, password_hash=hashed) db.add(new_user) await db.commit() return {"message": "User registered successfully"}