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 TriggerLogStatus(str, enum.Enum): SUCCESS = "success" FAILED = "failed" class TriggerLog(Base): __tablename__ = "pjctrl_trigger_logs" id = Column(String(36), primary_key=True, default=lambda: str(uuid.uuid4())) trigger_id = Column(String(36), ForeignKey("pjctrl_triggers.id", ondelete="CASCADE"), nullable=False) task_id = Column(String(36), ForeignKey("pjctrl_tasks.id", ondelete="SET NULL"), nullable=True) executed_at = Column(DateTime, server_default=func.now(), nullable=False) status = Column( Enum("success", "failed", name="trigger_log_status_enum"), nullable=False ) details = Column(JSON, nullable=True) error_message = Column(Text, nullable=True) # Relationships trigger = relationship("Trigger", back_populates="logs") task = relationship("Task", back_populates="trigger_logs")