Spaces:
Running
Running
File size: 1,572 Bytes
227930f | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
class ProcessingTask(Base):
"""Background processing tasks table"""
__tablename__ = 'processing_tasks'
task_id = Column(String(36), primary_key=True) # UUID
status = Column(String(20), default='queued') # queued, processing, completed, failed
progress = Column(Float, default=0.0)
filename = Column(String(255), nullable=False)
created_at = Column(DateTime, default=datetime.now)
updated_at = Column(DateTime, default=datetime.now, onupdate=datetime.now)
completion_time = Column(DateTime, nullable=True)
# Task metadata/results
user_email = Column(String(100), nullable=True)
user_department = Column(String(100), nullable=True)
# Store results/errors as JSON
results = Column(JSON, nullable=True)
error = Column(String, nullable=True)
# Execution stats
current_frame = Column(Integer, default=0)
total_frames = Column(Integer, default=0)
def to_dict(self):
return {
'task_id': self.task_id,
'status': self.status,
'progress': self.progress,
'filename': self.filename,
'created_at': self.created_at.isoformat() if self.created_at else None,
'updated_at': self.updated_at.isoformat() if self.updated_at else None,
'completion_time': self.completion_time.isoformat() if self.completion_time else None,
'results': self.results,
'error': self.error,
'current_frame': self.current_frame,
'total_frames': self.total_frames
}
|