import uuid import enum from sqlalchemy import Column, String, Text, DateTime, ForeignKey, Enum, JSON from sqlalchemy.sql import func from sqlalchemy.orm import relationship from app.core.database import Base class ReportHistoryStatus(str, enum.Enum): SENT = "sent" FAILED = "failed" class ReportHistory(Base): __tablename__ = "pjctrl_report_history" id = Column(String(36), primary_key=True, default=lambda: str(uuid.uuid4())) report_id = Column(String(36), ForeignKey("pjctrl_scheduled_reports.id", ondelete="CASCADE"), nullable=False) generated_at = Column(DateTime, server_default=func.now(), nullable=False) content = Column(JSON, nullable=False) status = Column( Enum("sent", "failed", name="report_history_status_enum"), nullable=False ) error_message = Column(Text, nullable=True) # Relationships report = relationship("ScheduledReport", back_populates="history")