from sqlalchemy import Column, String, Text, TIMESTAMP, Integer, JSON from sqlalchemy.dialects.postgresql import UUID import uuid from datetime import datetime from .base import Base class BulkProcessingJob(Base): __tablename__ = "bulk_processing_jobs" id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) job_type = Column(String(50), nullable=False) # 'nvd_bulk_seed', 'nomi_sec_sync', 'incremental_update' status = Column(String(20), default='pending') # 'pending', 'running', 'completed', 'failed', 'cancelled' year = Column(Integer) # For year-based processing total_items = Column(Integer, default=0) processed_items = Column(Integer, default=0) failed_items = Column(Integer, default=0) error_message = Column(Text) job_metadata = Column(JSON) # Additional job-specific data started_at = Column(TIMESTAMP) completed_at = Column(TIMESTAMP) cancelled_at = Column(TIMESTAMP) created_at = Column(TIMESTAMP, default=datetime.utcnow)