import enum from sqlalchemy import Column, String, Integer, DateTime, Enum, Text, JSON from sqlalchemy.sql import func from app.db.session import Base class JobStatus(str, enum.Enum): PENDING = "pending" IN_PROGRESS = "in_progress" COMPLETED = "completed" FAILED = "failed" class ScrapeJob(Base): """ Model for a web scraping job. """ __tablename__ = "scrape_jobs" id = Column(Integer, primary_key=True, index=True) url = Column(String(2048), nullable=False, index=True) status = Column(Enum(JobStatus), default=JobStatus.PENDING, nullable=False) created_at = Column(DateTime, default=func.now(), nullable=False) updated_at = Column( DateTime, default=func.now(), onupdate=func.now(), nullable=False ) started_at = Column(DateTime, nullable=True) completed_at = Column(DateTime, nullable=True) selector = Column(String(255), nullable=True) error = Column(Text, nullable=True) result = Column(JSON, nullable=True) user_agent = Column(String(255), nullable=True) timeout = Column(Integer, nullable=True) def __repr__(self): return ( f"" )