Class: Que::Web

Inherits:
Sinatra::Base
  • Object
show all
Defined in:
lib/que/web.rb

Defined Under Namespace

Modules: Viewmodels Classes: Pager

Constant Summary collapse

PAGE_SIZE =
10
FLASH_KEY =
'que.web.flash'.freeze
SQL =
{
  dashboard_stats: "    SELECT count(*)                    AS total,\n           count(locks.job_id)         AS running,\n           coalesce(sum((error_count > 0 AND locks.job_id IS NULL)::int), 0) AS failing,\n           coalesce(sum((error_count = 0 AND locks.job_id IS NULL)::int), 0) AS scheduled\n    FROM que_jobs\n    LEFT JOIN (\n      SELECT (classid::bigint << 32) + objid::bigint AS job_id\n      FROM pg_locks\n      WHERE locktype = 'advisory'\n    ) locks USING (job_id)\n    WHERE\n      job_class LIKE ($1)\n  SQL\n  failing_jobs: <<-SQL.freeze,\n    SELECT que_jobs.*\n    FROM que_jobs\n    LEFT JOIN (\n      SELECT (classid::bigint << 32) + objid::bigint AS job_id\n      FROM pg_locks\n      WHERE locktype = 'advisory'\n    ) locks USING (job_id)\n    WHERE locks.job_id IS NULL AND error_count > 0 AND job_class LIKE ($3)\n    ORDER BY run_at\n    LIMIT $1::int\n    OFFSET $2::int\n  SQL\n  scheduled_jobs: <<-SQL.freeze,\n    SELECT que_jobs.*\n    FROM que_jobs\n    LEFT JOIN (\n      SELECT (classid::bigint << 32) + objid::bigint AS job_id\n      FROM pg_locks\n      WHERE locktype = 'advisory'\n    ) locks USING (job_id)\n    WHERE locks.job_id IS NULL AND error_count = 0 AND job_class LIKE ($3)\n    ORDER BY run_at\n    LIMIT $1::int\n    OFFSET $2::int\n  SQL\n  delete_job: <<-SQL.freeze,\n    DELETE\n    FROM que_jobs\n    WHERE job_id = $1::bigint\n    AND pg_try_advisory_lock(job_id)\n    RETURNING pg_advisory_unlock(job_id)\n  SQL\n  reschedule_job: <<-SQL.freeze,\n    UPDATE que_jobs\n    SET run_at = $2::timestamptz\n    WHERE job_id = $1::bigint\n    AND pg_try_advisory_lock(job_id)\n    RETURNING pg_advisory_unlock(job_id)\n  SQL\n  fetch_job: <<-SQL.freeze,\n    SELECT *\n    FROM que_jobs\n    WHERE job_id = $1::bigint\n    LIMIT 1\n  SQL\n}.freeze\n".freeze,

Instance Method Summary collapse

Instance Method Details

#get_pager(record_count) ⇒ Object



95
96
97
98
# File 'lib/que/web.rb', line 95

def get_pager(record_count)
  page = (params[:page] || 1).to_i
  Pager.new(page, PAGE_SIZE, record_count)
end

#searchObject



100
101
102
103
# File 'lib/que/web.rb', line 100

def search
  return '%' unless search_param.present?
  "%#{search_param}%"
end

#search_paramObject



110
111
112
113
# File 'lib/que/web.rb', line 110

def search_param
  return unless params['search'].present?
  params['search'].gsub(/[^0-9A-Za-z:]/, '')
end

#search_running(jobs) ⇒ Object



105
106
107
108
# File 'lib/que/web.rb', line 105

def search_running(jobs)
  return jobs unless search_param.present?
  jobs.select { |job| job.job_class.include? search_param }
end