Class: Workarea::IndexReleaseScheduleChange

Inherits:
Object
  • Object
show all
Includes:
Sidekiq::CallbacksWorker, Sidekiq::Worker
Defined in:
app/workers/workarea/index_release_schedule_change.rb

Instance Method Summary collapse

Instance Method Details

#perform(id, previous_publish_at, new_publish_at) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'app/workers/workarea/index_release_schedule_change.rb', line 15

def perform(id, previous_publish_at, new_publish_at)
  # When destroyed, changesets for the release ID will still exist and be used to update the index
  rescheduled_release = Release.find_or_initialize_by(id: id)

  earlier, later = if rescheduled_release.persisted? && previous_publish_at.present? && new_publish_at.present?
    [previous_publish_at, new_publish_at].sort
  elsif previous_publish_at.present?
    [previous_publish_at, nil]
  else
    [new_publish_at, nil]
  end

  IndexReleaseSchedulePreviews
    .new(release: rescheduled_release, starts_at: earlier, ends_at: later)
    .perform
end