from fastapi import APIRouter, Depends from sqlalchemy.orm import Session from auth import get_current_user from database import get_db from models import Settings, User from schemas import SettingsOut, SettingsUpdate router = APIRouter(prefix="/settings", tags=["settings"]) def _get_or_create(db: Session, user_id: int) -> Settings: s = db.query(Settings).filter(Settings.user_id == user_id).first() if not s: s = Settings(user_id=user_id) db.add(s) db.commit() db.refresh(s) return s @router.get("/", response_model=SettingsOut) def get_settings(db: Session = Depends(get_db), current_user: User = Depends(get_current_user)): return _get_or_create(db, current_user.id) @router.put("/", response_model=SettingsOut) def update_settings(data: SettingsUpdate, db: Session = Depends(get_db), current_user: User = Depends(get_current_user)): s = _get_or_create(db, current_user.id) for field, value in data.model_dump(exclude_unset=True).items(): setattr(s, field, value) db.commit() db.refresh(s) return s