Class: SesDashboard::Email

Inherits:
ApplicationRecord show all
Defined in:
app/models/ses_dashboard/email.rb

Constant Summary collapse

STATUSES =
%w[sent delivered bounced complained rejected failed].freeze
TRANSITIONS =

State-machine transitions applied when SNS events arrive. Only advance; never move backward (e.g., a late delivery event doesn’t overwrite a bounce).

{
  "sent"       => %w[delivered bounced complained rejected failed],
  "delivered"  => %w[complained],
  "bounced"    => [],
  "complained" => [],
  "rejected"   => [],
  "failed"     => []
}.freeze

Instance Method Summary collapse

Instance Method Details

#apply_status!(new_status) ⇒ Object



41
42
43
44
45
46
# File 'app/models/ses_dashboard/email.rb', line 41

def apply_status!(new_status)
  return if status == new_status
  return unless TRANSITIONS.fetch(status, []).include?(new_status)

  update_column(:status, new_status)
end