"""CRUD operations for Settings.""" from typing import Optional from sqlalchemy.orm import Session from app.models.settings import Settings def get_setting(db: Session, key: str) -> Optional[Settings]: """Get a setting by key.""" return db.query(Settings).filter(Settings.key == key).first() def get_setting_value(db: Session, key: str, default: any = None) -> any: """Get a setting value by key, with optional default.""" setting = get_setting(db, key) if setting: return setting.get_value() return default def update_setting(db: Session, key: str, value: any) -> Settings: """Update or create a setting.""" setting = get_setting(db, key) if setting is None: setting = Settings(key=key) db.add(setting) # Determine if value is bool or string if isinstance(value, bool): setting.value_bool = value setting.value_str = None elif isinstance(value, str) and value.lower() in ('true', 'false'): setting.value_bool = value.lower() == 'true' setting.value_str = None else: setting.value_str = str(value) setting.value_bool = None db.commit() db.refresh(setting) return setting def get_all_settings(db: Session) -> list[Settings]: """Get all settings.""" return db.query(Settings).all()