33 lines
1.0 KiB
Python
33 lines
1.0 KiB
Python
"""任务模型"""
|
|
from sqlalchemy import Column, String, Integer, DateTime, JSON, Enum, Text
|
|
from sqlalchemy.sql import func
|
|
import enum
|
|
|
|
from ..database import Base
|
|
|
|
class JobStatus(str, enum.Enum):
|
|
PENDING = "pending"
|
|
RUNNING = "running"
|
|
COMPLETED = "completed"
|
|
FAILED = "failed"
|
|
|
|
class Job(Base):
|
|
__tablename__ = "jobs"
|
|
|
|
id = Column(String, primary_key=True, index=True)
|
|
celery_task_id = Column(String, nullable=True)
|
|
status = Column(Enum(JobStatus), default=JobStatus.PENDING)
|
|
|
|
input_files = Column(JSON)
|
|
sequence_type = Column(String, default="nucl")
|
|
scaf_suffix = Column(String, default=".fna")
|
|
threads = Column(Integer, default=4)
|
|
|
|
result_url = Column(String, nullable=True)
|
|
logs = Column(Text, nullable=True)
|
|
error_message = Column(Text, nullable=True)
|
|
|
|
created_at = Column(DateTime(timezone=True), server_default=func.now())
|
|
updated_at = Column(DateTime(timezone=True), onupdate=func.now())
|
|
completed_at = Column(DateTime(timezone=True), nullable=True)
|