Files

41 lines
1.4 KiB
Python

from sqlalchemy import Column, Integer, String, Text, DateTime, Boolean, Enum as SAEnum
from sqlalchemy.sql import func
from app.core.config import Base
import enum
class WebhookEvent(str, enum.Enum):
TASK_CREATED = "task.created"
TASK_UPDATED = "task.updated"
TASK_CLOSED = "task.closed"
TASK_DELETED = "task.deleted"
COMMENT_CREATED = "comment.created"
RESOLUTION_CREATED = "resolution.created"
MEMBER_ADDED = "member.added"
MEMBER_REMOVED = "member.removed"
class Webhook(Base):
__tablename__ = "webhooks"
id = Column(Integer, primary_key=True, index=True)
url = Column(String(500), nullable=False)
secret = Column(String(255), nullable=True)
events = Column(Text, nullable=False) # comma-separated events
project_id = Column(Integer, nullable=True) # null = global
is_active = Column(Boolean, default=True)
created_at = Column(DateTime(timezone=True), server_default=func.now())
class WebhookLog(Base):
__tablename__ = "webhook_logs"
id = Column(Integer, primary_key=True, index=True)
webhook_id = Column(Integer, nullable=False)
event = Column(String(50), nullable=False)
payload = Column(Text, nullable=False)
response_status = Column(Integer, nullable=True)
response_body = Column(Text, nullable=True)
success = Column(Boolean, default=False)
created_at = Column(DateTime(timezone=True), server_default=func.now())