Class: HasHelpers::Cards::OrphanCardSweeper

Inherits:
HasUtils::GoodJob::BaseWorker
  • Object
show all
Defined in:
app/workers/has_helpers/cards/orphan_card_sweeper.rb

Instance Method Summary collapse

Instance Method Details

#performObject



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'app/workers/has_helpers/cards/orphan_card_sweeper.rb', line 9

def perform
  return unless HasHelpers::Cards.config.mode == :client

  valid_ids = HasHelpers::Cards::Roles.all(force: true).map(&:id).map(&:to_s).to_set
  if valid_ids.empty?
    Rails.logger.warn("HasHelpers::Cards::OrphanCardSweeper: upstream returned no roles; skipping sweep to avoid disabling everything")
    return
  end

  scope = HasHelpers::Cards::RoleResourceCard.where(disabled_at: nil).where.not(role_id: valid_ids.to_a)

  scope.find_each(batch_size: 1000) do |card|
    # rubocop:disable Rails/SkipsModelValidations
    card.update_columns(disabled_at: Time.current)
    # rubocop:enable Rails/SkipsModelValidations
  end
end