| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- # backend/app/models.py
- from sqlalchemy import Column, Integer, String, Text, Boolean, DateTime, ForeignKey
- from sqlalchemy.orm import relationship
- from sqlalchemy.sql import func
- from .database import Base
- class Category(Base):
- __tablename__ = "categories"
-
- id = Column(Integer, primary_key=True, index=True)
- name = Column(String(100), unique=True, nullable=False, index=True)
- description = Column(Text, nullable=True)
- color = Column(String(20), nullable=True, default="#3498DB")
- icon = Column(String(50), nullable=True, default="el-icon-DataBoard")
- created_at = Column(DateTime, default=func.now())
-
- spiders = relationship("Spider", back_populates="category", cascade="all, delete-orphan")
- class Spider(Base):
- __tablename__ = "spiders"
-
- id = Column(Integer, primary_key=True, index=True)
- name = Column(String(100), nullable=False, index=True)
- description = Column(Text, nullable=True)
- filename = Column(String(255), nullable=False)
- file_path = Column(String(500), nullable=False)
- code_content = Column(Text, nullable=True)
- cron_expression = Column(String(50), nullable=False, default="0 0 * * *")
- enabled = Column(Boolean, default=True)
- timeout = Column(Integer, default=300)
- created_at = Column(DateTime, default=func.now())
- category_id = Column(Integer, ForeignKey("categories.id"), nullable=False)
-
- category = relationship("Category", back_populates="spiders")
- executions = relationship("TaskExecutionLog", back_populates="spider")
- class TaskExecutionLog(Base):
- __tablename__ = "task_execution_logs"
-
- id = Column(Integer, primary_key=True, index=True)
- spider_id = Column(Integer, ForeignKey("spiders.id"), nullable=False)
- status = Column(String(20), nullable=False)
- started_at = Column(DateTime, default=func.now())
- finished_at = Column(DateTime, nullable=True)
- log_content = Column(Text, nullable=True)
- trigger_method = Column(String(20), nullable=False)
-
- spider = relationship("Spider", back_populates="executions")
|