from datetime import datetime, timezone from sqlalchemy import String, DateTime, Index from sqlalchemy.orm import Mapped, mapped_column from sqlalchemy.dialects.postgresql import JSONB from app.core.database import Base class StripeEvent(Base): __tablename__ = "stripe_events" __table_args__ = (Index("ix_stripe_events_event_type", "event_type"),) id: Mapped[str] = mapped_column(String(255), primary_key=True) # Stripe event id event_type: Mapped[str] = mapped_column(String(100), nullable=False) processed_at: Mapped[datetime] = mapped_column( DateTime(timezone=True), default=lambda: datetime.now(timezone.utc) ) payload_excerpt: Mapped[dict] = mapped_column(JSONB, nullable=False, default=dict)