fediversion/backend/routers/preferences.py
fullsizemalt b4cddf41ea feat: Initialize Fediversion multi-band platform
- Fork elmeg-demo codebase for multi-band support
- Add data importer infrastructure with base class
- Create band-specific importers:
  - phish.py: Phish.net API v5
  - grateful_dead.py: Grateful Stats API
  - setlistfm.py: Dead & Company, Billy Strings (Setlist.fm)
- Add spec-kit configuration for Gemini
- Update README with supported bands and architecture
2025-12-28 12:39:28 -08:00

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