Class: SolidQueueWeb::Jobs::SelectionsController

Inherits:
ApplicationController show all
Defined in:
app/controllers/solid_queue_web/jobs/selections_controller.rb

Constant Summary

Constants inherited from ApplicationController

ApplicationController::PERIOD_DURATIONS

Instance Method Summary collapse

Instance Method Details

#destroyObject



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# File 'app/controllers/solid_queue_web/jobs/selections_controller.rb', line 4

def destroy
  status = params[:status]
  period = params[:period].presence_in(PERIOD_DURATIONS.keys)
  raise ArgumentError, "Cannot discard #{status} jobs." unless Job::DISCARDABLE.include?(status)
  model = Job::EXECUTION_MODELS[status]
  ids = Array(params[:ids]).map(&:to_i).reject(&:zero?)
  jobs = model.where(id: ids).includes(:job).map(&:job)
  model.discard_all_from_jobs(jobs)
  redirect_to jobs_path(status: status, period: period),
    notice: "#{jobs.size} #{"job".pluralize(jobs.size)} discarded."
rescue ArgumentError => e
  redirect_to jobs_path(status: status), alert: e.message
rescue => e
  redirect_to jobs_path(status: status), alert: "Could not discard jobs: #{e.message}"
end