# frozen_string_literal: true # Command class for carrying out the actual incineration of the `InboundMail` that's been scheduled # for removal. Before the incineration – which really is just a call to `#destroy!` – is run, we verify # that it's both eligible (by virtue of having already been processed) and time to do so (that is, # the `InboundEmail` was processed after the `incinerate_after` time). class ActionMailbox::InboundEmail::Incineratable::Incineration def initialize(inbound_email) @inbound_email = inbound_email end def run @inbound_email.destroy! if due? && processed? end private def due? @inbound_email.updated_at < ActionMailbox.incinerate_after.ago.end_of_day end def processed? @inbound_email.processed? end end