27 lines
786 B
Elixir
27 lines
786 B
Elixir
defmodule Towerops.Billing.StripeWebhookEvent do
|
|
@moduledoc """
|
|
Schema for tracking processed Stripe webhook events.
|
|
|
|
Used for idempotency checking to prevent duplicate processing
|
|
when Stripe retries webhook delivery.
|
|
"""
|
|
use Ecto.Schema
|
|
|
|
import Ecto.Changeset
|
|
|
|
@primary_key {:id, :string, autogenerate: false}
|
|
schema "stripe_webhook_events" do
|
|
field :event_type, :string
|
|
field :processed_at, :utc_datetime
|
|
field :created_at, :utc_datetime
|
|
|
|
belongs_to :organization, Towerops.Organizations.Organization, type: :binary_id
|
|
end
|
|
|
|
@doc false
|
|
def changeset(event, attrs) do
|
|
event
|
|
|> cast(attrs, [:id, :event_type, :organization_id, :processed_at, :created_at])
|
|
|> validate_required([:id, :event_type, :processed_at, :created_at])
|
|
end
|
|
end
|