from app import db from datetime import datetime class SystemSetting(db.Model): """ Parámetros de configuración del sistema persistentes en base de datos. Permite almacenar enlaces de integración (e.g. Google Sheets), flags globales y metadatos. """ __tablename__ = 'system_settings' id = db.Column(db.Integer, primary_key=True) key = db.Column(db.String(100), unique=True, nullable=False, index=True) value = db.Column(db.Text, nullable=True) description = db.Column(db.String(255), nullable=True) updated_at = db.Column(db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow) @classmethod def get_value(cls, key, default=None): try: record = cls.query.filter_by(key=key).first() if record and record.value is not None and record.value.strip() != '': return record.value except Exception: pass return default @classmethod def set_value(cls, key, value, description=None): record = cls.query.filter_by(key=key).first() if not record: record = cls(key=key, value=value, description=description) db.session.add(record) else: record.value = value if description: record.description = description record.updated_at = datetime.utcnow() db.session.commit() return record def to_dict(self): return { 'key': self.key, 'value': self.value, 'description': self.description, 'updated_at': self.updated_at.isoformat() if self.updated_at else None } def __repr__(self): return f''