from enum import Enum from app import db class Setting(db.Model): class Keys(Enum): HASSCALL_USERNAME = "username" HASSCALL_PASSWORD = "password" HASSCALL_LOGIN_REQUIRED = "login_required" HASS_URL = "hass_url" HASS_TOKEN = "hass_token" FEEDBACK = "feedback_level" # Table structure __tablename__ = "settings" key = db.Column(db.String(64), primary_key=True ) value = db.Column(db.String(256) ) def __init__(self, key:Keys, value:str) -> None: self.key = key.value self.value = value def __repr__(self) -> str: return str(self.key) + ' = ' + str(self.value) @classmethod def get_entry_or_default(cls, key:Keys, default:str) -> str: result = cls.query.filter_by(key=key.value).first() if result is not None: return result result = Setting(key, default) db.session.add (result) db.session.commit( ) return result @classmethod def get_value(cls, key:Keys, default:str = "") -> str: return cls.get_entry_or_default(key, default).value @classmethod def set_value(cls, key:Keys, value:str) -> None: setting = cls.get_entry_or_default(key, value) setting.value = value db.session.commit( )