from fastapi import APIRouter, Depends from sqlalchemy.orm import Session from app.auth import current_user, has_write_scope from app.db import get_db from app.models import User router = APIRouter(prefix="/api/me", tags=["me"]) @router.get("") def get_me(user: User = Depends(current_user)) -> dict: return { "id": user.id, "email": user.email, "display_name": user.display_name, "avatar_url": user.avatar_url, "role": user.role, "can_write": has_write_scope(user), "preferences": user.preferences or {}, } @router.put("/preferences") def update_preferences( preferences: dict, user: User = Depends(current_user), db: Session = Depends(get_db), ) -> dict: # Merge so partial updates don't wipe other keys. merged = dict(user.preferences or {}) merged.update(preferences) user.preferences = merged db.add(user) db.commit() return {"preferences": merged}