Class: UpscaleProposalCleanupWorker

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

Overview

Cleans up stale UpscaleProposal records and their orphaned ImageKit assets.

A proposal is considered stale when it has been pending for longer than
UpscaleProposal::STALE_AFTER (default 48 hours) — meaning the user never
acted on the compare slider. The embryonic ImageKit file is deleted first,
then the DB record is destroyed.

Scheduled daily via sidekiq_production_schedule.yml.

Instance Method Summary collapse

Instance Method Details

#performObject



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'app/workers/upscale_proposal_cleanup_worker.rb', line 17

def perform
  stale = UpscaleProposal.stale.to_a

  if stale.empty?
    Rails.logger.info '[UpscaleProposalCleanupWorker] No stale proposals to clean up'
    return
  end

  Rails.logger.info "[UpscaleProposalCleanupWorker] Cleaning #{stale.size} stale proposal(s)"

  deleted  = 0
  errored  = 0

  stale.each do |proposal|
    proposal.delete_ik_asset!
    proposal.destroy
    deleted += 1
  rescue StandardError => e
    errored += 1
    Rails.logger.error "[UpscaleProposalCleanupWorker] Failed to clean proposal #{proposal.id}: #{e.message}"
    ErrorReporting.warning(e) if defined?(ErrorReporting)
  end

  Rails.logger.info "[UpscaleProposalCleanupWorker] Done — deleted: #{deleted}, errors: #{errored}"
end