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"}