Class: Workarea::BuildReleaseUndoChangesets

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

Instance Method Summary collapse

Instance Method Details

#perform(undo_release_id, release_id) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'app/workers/workarea/build_release_undo_changesets.rb', line 5

def perform(undo_release_id, release_id)
  release = Release.find(release_id)
  undo_release = Release.find(undo_release_id)

  existing_changesets = undo_release.changesets.to_a
  matching_changeset = ->(changeset, existing_changesets) do
    existing_changesets.any? do |cs|
      changeset.releasable_type == cs.releasable_type &&
      changeset.releasable_id == cs.releasable_id
    end
  end

  release.changesets.each_by(500) do |changeset|
    next if matching_changeset.call(changeset, existing_changesets)
    changeset.build_undo(release: undo_release).save!
  end
end