Initial commit
This commit is contained in:
48
backend/app/crud/settings.py
Normal file
48
backend/app/crud/settings.py
Normal 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()
|
||||
Reference in New Issue
Block a user