42 lines
1.3 KiB
Python
42 lines
1.3 KiB
Python
from fastapi import APIRouter, Depends, HTTPException
|
|
from sqlmodel import Session, select
|
|
from database import get_session
|
|
from models import User, UserPreferences
|
|
from schemas import UserPreferencesRead, UserPreferencesUpdate
|
|
from auth import get_current_user
|
|
|
|
router = APIRouter(prefix="/preferences", tags=["preferences"])
|
|
|
|
@router.get("/", response_model=UserPreferencesRead)
|
|
def read_preferences(
|
|
session: Session = Depends(get_session),
|
|
current_user: User = Depends(get_current_user)
|
|
):
|
|
prefs = current_user.preferences
|
|
if not prefs:
|
|
# Create default preferences if they don't exist
|
|
prefs = UserPreferences(user_id=current_user.id)
|
|
session.add(prefs)
|
|
session.commit()
|
|
session.refresh(prefs)
|
|
return prefs
|
|
|
|
@router.put("/", response_model=UserPreferencesRead)
|
|
def update_preferences(
|
|
preferences: UserPreferencesUpdate,
|
|
session: Session = Depends(get_session),
|
|
current_user: User = Depends(get_current_user)
|
|
):
|
|
prefs = current_user.preferences
|
|
if not prefs:
|
|
prefs = UserPreferences(user_id=current_user.id)
|
|
session.add(prefs)
|
|
|
|
prefs_data = preferences.model_dump(exclude_unset=True)
|
|
for key, value in prefs_data.items():
|
|
setattr(prefs, key, value)
|
|
|
|
session.add(prefs)
|
|
session.commit()
|
|
session.refresh(prefs)
|
|
return prefs
|