Initial commit

This commit is contained in:
2025-12-04 22:24:47 +01:00
commit 453ce10494
106 changed files with 17145 additions and 0 deletions

View File

@@ -0,0 +1,48 @@
"""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()