from fastapi import APIRouter, Depends, HTTPException from sqlalchemy.orm import Session from typing import List from app.db.database import get_db from app.models.user import UserModel from app.schemas.user import UserRead, UserRegister from app.core.security import hash_password import pyotp router = APIRouter() @router.get("/users", response_model=List[UserRead]) def get_all_users(db: Session = Depends(get_db)): users = db.query(UserModel).all() if not users: raise HTTPException(status_code=404, detail="No hay usuarios registrados") return users @router.get("/users/{user_id}", response_model=UserRead) def get_user_by_id(user_id: int, db: Session = Depends(get_db)): user = db.query(UserModel).filter(UserModel.user_id == user_id).first() if not user: raise HTTPException(status_code=404, detail="No se ha encontrado el usuario.") return user @router.post("/users", response_model=UserRead) async def create_user(user: UserRegister, db: Session = Depends(get_db)): existing_user = db.query(UserModel).filter(UserModel.user_name == user.user_name).first() if existing_user: raise HTTPException(status_code=400, detail="El nombre de usuario ya existe") hashed_password = hash_password(user.password) new_user = UserModel( user_name=user.user_name, password=hashed_password, ) db.add(new_user) db.commit() db.refresh(new_user) return new_user