from fastapi import APIRouter, Depends, HTTPException
from sqlalchemy.orm import Session
from ..database import get_db
from ..dependencies import get_current_user, require_owner
from ..models import SystemSetting
from ..schemas import SystemSettingOut, SystemSettingUpdate

router = APIRouter()


@router.get("/settings", response_model=list[SystemSettingOut])
def get_settings(
    db: Session = Depends(get_db),
    _=Depends(get_current_user),
):
    return db.query(SystemSetting).order_by(SystemSetting.setting_key).all()


@router.put("/settings/{key}", response_model=SystemSettingOut)
def update_setting(
    key:  str,
    body: SystemSettingUpdate,
    db:   Session = Depends(get_db),
    user=Depends(require_owner),
):
    s = db.query(SystemSetting).filter(SystemSetting.setting_key == key).first()
    if not s:
        s = SystemSetting(setting_key=key, setting_value=body.setting_value, updated_by=user.id)
        db.add(s)
    else:
        s.setting_value = body.setting_value
        s.updated_by    = user.id
    db.commit()
    db.refresh(s)
    return s
