from fastapi import APIRouter, Depends, HTTPException from pydantic import BaseModel, EmailStr from app.core.deps import get_current_user from app.core.supabase_client import supabase_admin from gotrue.types import User router = APIRouter(prefix="/users", tags=["users"]) class UserUpdate(BaseModel): name: str | None = None email: EmailStr | None = None @router.patch("/me", status_code=204) def update_user_profile( update_data: UserUpdate, current_user: User = Depends(get_current_user), ): """ Actualiza el perfil del usuario autenticado (nombre, email). """ user_id = current_user.id update_payload = {} if update_data.name: # El nombre no está en Supabase Auth, sino en nuestra tabla `users` try: supabase_admin.table("users").update({"name": update_data.name}).eq( "id", user_id ).execute() except Exception as e: raise HTTPException(status_code=500, detail=f"Error al actualizar el nombre: {e}") if update_data.email: # El email sí está en Supabase Auth try: supabase_admin.auth.admin.update_user_by_id( user_id, {"email": update_data.email} ) except Exception as e: raise HTTPException(status_code=500, detail=f"Error al actualizar el email: {e}") return