Files
saas_backend/app/models/system/event_log_model.py
T

35 lines
1.3 KiB
Python
Raw Normal View History

import uuid
from sqlalchemy import Column, String, DateTime, func, Text, Integer, ForeignKey
from sqlalchemy.dialects.postgresql import UUID, JSONB
from app.config.database import Base
import enum
class EventStatus(str, enum.Enum):
PENDING = "PENDING"
COMPLETED = "COMPLETED"
FAILED = "FAILED"
class EventLog(Base):
__tablename__ = "event_logs"
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
2026-08-31 20:39:41 -04:00
event_id = Column(UUID(as_uuid=True), nullable=False, index=True)
event_type = Column(String, nullable=False)
payload = Column(JSONB, nullable=False)
target_module_id = Column(UUID(as_uuid=True), nullable=False)
target_environment_slug = Column(String, nullable=False)
target_url = Column(String, nullable=False)
status = Column(String, default=EventStatus.PENDING, index=True)
retry_count = Column(Integer, default=0)
next_retry_at = Column(DateTime(timezone=True), default=func.now(), index=True)
error_log = Column(Text, nullable=True)
2026-04-09 11:55:58 +05:30
follow_up_event = Column(JSONB, nullable=True)
created_at = Column(DateTime(timezone=True), server_default=func.now())
updated_at = Column(DateTime(timezone=True), server_default=func.now(), onupdate=func.now())
def __repr__(self):
return f"<EventLog {self.event_type} -> {self.target_module_id} ({self.status})>"