Class: SolidStackWeb::Jobs::SelectionsController

Inherits:
ApplicationController show all
Defined in:
app/controllers/solid_stack_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
19
20
21
22
23
# File 'app/controllers/solid_stack_web/jobs/selections_controller.rb', line 4

def destroy
  status = params[:status].presence_in(Job::STATUSES) || "ready"
  raise ArgumentError, "Cannot discard #{status} jobs." unless Job::DISCARDABLE.include?(status)

  ids     = Array(params[:job_ids]).map(&:to_i).reject(&:zero?)
  job_ids = Job::EXECUTION_MODELS[status].where(id: ids).pluck(:job_id)
  count   = SolidQueue::Job.where(id: job_ids).destroy_all.size

  redirect_to jobs_path(
    status:    status,
    q:         params[:q].presence,
    queue:     params[:queue].presence,
    period:    params[:period].presence_in(PERIOD_DURATIONS.keys),
    priority:  params[:priority].presence,
    sort:      params[:sort].presence,
    direction: params[:direction].presence
  ), notice: "#{count} #{count == 1 ? "job" : "jobs"} discarded."
rescue ArgumentError => e
  redirect_to jobs_path(status: params[:status]), alert: e.message
end