AI platform insights monitoring and website analysis monitoring services added
This commit is contained in:
48
backend/models/scheduler_cumulative_stats_model.py
Normal file
48
backend/models/scheduler_cumulative_stats_model.py
Normal file
@@ -0,0 +1,48 @@
|
||||
"""
|
||||
Scheduler Cumulative Stats Model
|
||||
Model for storing persistent cumulative scheduler metrics that survive restarts.
|
||||
"""
|
||||
|
||||
from sqlalchemy import Column, Integer, DateTime, Index
|
||||
from datetime import datetime
|
||||
from models.enhanced_strategy_models import Base
|
||||
|
||||
|
||||
class SchedulerCumulativeStats(Base):
|
||||
"""Model for storing cumulative scheduler metrics that persist across restarts"""
|
||||
__tablename__ = "scheduler_cumulative_stats"
|
||||
|
||||
id = Column(Integer, primary_key=True, index=True, default=1) # Always use id=1
|
||||
total_check_cycles = Column(Integer, default=0, nullable=False)
|
||||
cumulative_tasks_found = Column(Integer, default=0, nullable=False)
|
||||
cumulative_tasks_executed = Column(Integer, default=0, nullable=False)
|
||||
cumulative_tasks_failed = Column(Integer, default=0, nullable=False)
|
||||
cumulative_tasks_skipped = Column(Integer, default=0, nullable=False)
|
||||
cumulative_job_completed = Column(Integer, default=0, nullable=False)
|
||||
cumulative_job_failed = Column(Integer, default=0, nullable=False)
|
||||
|
||||
last_updated = Column(DateTime, default=datetime.utcnow, nullable=False, onupdate=datetime.utcnow)
|
||||
last_check_cycle_id = Column(Integer, nullable=True) # Reference to last check_cycle event log ID
|
||||
|
||||
created_at = Column(DateTime, default=datetime.utcnow, nullable=False)
|
||||
updated_at = Column(DateTime, default=datetime.utcnow, nullable=False, onupdate=datetime.utcnow)
|
||||
|
||||
__table_args__ = (
|
||||
Index('idx_scheduler_cumulative_stats_single_row', 'id', unique=True),
|
||||
)
|
||||
|
||||
@classmethod
|
||||
def get_or_create(cls, db_session):
|
||||
"""
|
||||
Get the cumulative stats row (id=1) or create it if it doesn't exist.
|
||||
|
||||
Returns:
|
||||
SchedulerCumulativeStats instance
|
||||
"""
|
||||
stats = db_session.query(cls).filter(cls.id == 1).first()
|
||||
if not stats:
|
||||
stats = cls(id=1)
|
||||
db_session.add(stats)
|
||||
db_session.commit()
|
||||
return stats
|
||||
|
||||
Reference in New Issue
Block a user