from fastapi import APIRouter, Depends
from sqlalchemy.orm import Session
from src.core.database import get_db
from src.apps.auth.utils.auth import get_current_active_user
from src.apps.settings import services
from src.apps.settings.schemas.preferences import UserPreferencesResponse, UserPreferencesUpdate

router = APIRouter()


@router.get("", response_model=UserPreferencesResponse)
async def get_preferences(
    current_user=Depends(get_current_active_user),
    db: Session = Depends(get_db),
):
    prefs = services.get_user_preferences(current_user.id, db)
    db.commit()  # commit needed: get_or_create may INSERT a new preferences row
    return prefs


@router.put("", response_model=UserPreferencesResponse)
async def update_preferences(
    data: UserPreferencesUpdate,
    current_user=Depends(get_current_active_user),
    db: Session = Depends(get_db),
):
    prefs = services.update_user_preferences(
        current_user.id, data.model_dump(exclude_none=True), db
    )
    db.commit()
    return prefs
