Spaces:
Running
Running
File size: 1,333 Bytes
5a0e691 f42f5a6 5a0e691 f8dfa58 f42f5a6 5a0e691 f8dfa58 5a0e691 f8dfa58 5a0e691 f42f5a6 f8dfa58 5a0e691 bac1801 5a0e691 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | from fastapi import APIRouter, HTTPException, Depends
from pydantic import BaseModel
from typing import Any, Optional
from app.services.supabase import get_supabase
from app.services.auth import get_user_id, require_user_id
from app.models.responses import ProfileUpdateResponse
router = APIRouter()
class ProfileUpdate(BaseModel):
full_name: str = ""
institution: str = ""
@router.get("")
async def get_profile(user_id: str = Depends(require_user_id)):
supabase = get_supabase()
result = supabase.table("profiles").select("*").eq("id", user_id).execute()
if result.data:
return result.data[0]
return {"error": "Profile not found"}
@router.put("", response_model=ProfileUpdateResponse)
async def update_profile(profile: ProfileUpdate, user_id: str = Depends(require_user_id)):
supabase = get_supabase()
data = {}
if "full_name" in profile.model_dump() and profile.full_name is not None:
data["full_name"] = profile.full_name
if "institution" in profile.model_dump() and profile.institution is not None:
data["institution"] = profile.institution
if data:
result = supabase.table("profiles").update(data).eq("id", user_id).execute()
return {"status": "updated", "data": result.data[0] if result.data else data}
return {"status": "no changes"}
|