AaI_Spirit_Kings_2 / models.py
16dvnk's picture
fix
dd0c281
from extensions import db
from datetime import datetime
class BotLog(db.Model):
id = db.Column(db.Integer, primary_key=True)
level = db.Column(db.String(20), nullable=False)
message = db.Column(db.Text, nullable=False)
timestamp = db.Column(db.DateTime, default=datetime.utcnow)
def to_dict(self):
return {
'id': self.id,
'level': self.level,
'message': self.message,
'timestamp': self.timestamp.isoformat()
}
class BotStatus(db.Model):
id = db.Column(db.Integer, primary_key=True)
is_running = db.Column(db.Boolean, default=False)
started_at = db.Column(db.DateTime)
last_error = db.Column(db.Text)
restart_count = db.Column(db.Integer, default=0)
updated_at = db.Column(db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
@staticmethod
def get_current_status():
status = BotStatus.query.first()
if not status:
status = BotStatus()
db.session.add(status)
db.session.commit()
return status
def to_dict(self):
return {
'is_running': self.is_running,
'started_at': self.started_at.isoformat() if self.started_at else None,
'last_error': self.last_error,
'restart_count': self.restart_count,
'updated_at': self.updated_at.isoformat()
}
class EnvironmentVariable(db.Model):
id = db.Column(db.Integer, primary_key=True)
key = db.Column(db.String(255), unique=True, nullable=False)
value = db.Column(db.Text)
is_secret = db.Column(db.Boolean, default=False)
created_at = db.Column(db.DateTime, default=datetime.utcnow)
updated_at = db.Column(db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
def to_dict(self, include_value=True):
data = {
'id': self.id,
'key': self.key,
'is_secret': self.is_secret,
'created_at': self.created_at.isoformat(),
'updated_at': self.updated_at.isoformat()
}
if include_value and not self.is_secret:
data['value'] = self.value
elif include_value and self.is_secret:
data['value'] = '***HIDDEN***' if self.value else ''
return data