Dish_Recognition/models/Upload_queue.py

51 lines
1.8 KiB
Python

# coding=utf-8
"""本地离线上传队列表(主要用于 SQLite 缓存侧)。"""
from datetime import datetime
from sqlalchemy import Column, DateTime, Index, Integer, String, Text
from sqlalchemy.sql import func
from dao.db import Base
class UploadQueue(Base):
__tablename__ = 'upload_queue'
id = Column(Integer, primary_key=True, autoincrement=True, comment='主键ID')
action = Column(String(40), nullable=False, comment='insert / delete_template / delete_category / clear_all / set_threshold')
payload_json = Column(Text, nullable=False, comment='动作参数 JSON')
status = Column(String(20), nullable=False, default='pending', server_default='pending', comment='pending / done / failed')
retry_count = Column(Integer, nullable=False, default=0, server_default='0', comment='重试次数')
create_time = Column(
DateTime,
nullable=False,
default=datetime.now,
server_default=func.now(),
comment='创建时间',
)
update_time = Column(
DateTime,
nullable=False,
default=datetime.now,
server_default=func.now(),
onupdate=datetime.now,
comment='更新时间',
)
error_msg = Column(Text, nullable=True, comment='失败原因')
__table_args__ = (
Index('idx_upload_queue_status', 'status'),
)
def to_dict(self):
return {
'id': self.id,
'action': self.action,
'payload_json': self.payload_json,
'status': self.status,
'retry_count': self.retry_count,
'error_msg': self.error_msg,
'create_time': self.create_time.strftime('%Y-%m-%d %H:%M:%S') if self.create_time else None,
'update_time': self.update_time.strftime('%Y-%m-%d %H:%M:%S') if self.update_time else None,
}