47 lines
1.7 KiB
Python
47 lines
1.7 KiB
Python
"""
|
|
Scheduled Task Model
|
|
"""
|
|
|
|
from app.extensions import db
|
|
from datetime import datetime
|
|
import pytz
|
|
|
|
# Get local timezone
|
|
LOCAL_TZ = pytz.timezone('Europe/Bucharest') # Adjust this to your local timezone
|
|
|
|
def get_local_time():
|
|
"""Get current local time"""
|
|
return datetime.now(LOCAL_TZ).replace(tzinfo=None)
|
|
|
|
class ScheduledTask(db.Model):
|
|
"""Model for scheduled maintenance tasks"""
|
|
|
|
__tablename__ = 'scheduled_task'
|
|
|
|
id = db.Column(db.Integer, primary_key=True)
|
|
name = db.Column(db.String(100), nullable=False)
|
|
task_type = db.Column(db.String(50), nullable=False) # cleanup_files, clear_logs, optimize_db, backup_db
|
|
schedule = db.Column(db.String(100), nullable=False) # Cron expression
|
|
enabled = db.Column(db.Boolean, default=True, nullable=False)
|
|
created_at = db.Column(db.DateTime, default=get_local_time, nullable=False)
|
|
last_run = db.Column(db.DateTime, nullable=True)
|
|
next_run = db.Column(db.DateTime, nullable=True)
|
|
run_count = db.Column(db.Integer, default=0, nullable=False)
|
|
|
|
def __repr__(self):
|
|
return f'<ScheduledTask {self.name}>'
|
|
|
|
def to_dict(self):
|
|
"""Convert to dictionary for JSON serialization"""
|
|
return {
|
|
'id': self.id,
|
|
'name': self.name,
|
|
'task_type': self.task_type,
|
|
'schedule': self.schedule,
|
|
'enabled': self.enabled,
|
|
'created_at': self.created_at.isoformat() if self.created_at else None,
|
|
'last_run': self.last_run.isoformat() if self.last_run else None,
|
|
'next_run': self.next_run.isoformat() if self.next_run else None,
|
|
'run_count': self.run_count
|
|
}
|