Source code for sqlspec.extensions.events._models

"""Shared data models for the events subsystem."""

from dataclasses import dataclass
from datetime import datetime
from typing import Any

from typing_extensions import final

__all__ = ("EventMessage",)


@final
@dataclass(slots=True)
class EventMessage:
    """Structured payload delivered to event handlers."""

    event_id: str
    channel: str
    payload: dict[str, Any]
    metadata: dict[str, Any] | None
    attempts: int
    available_at: datetime
    lease_expires_at: datetime | None
    created_at: datetime