Module: Async::Background::Web::SQL

Defined in:
lib/async/background/web/sql.rb

Constant Summary collapse

BEGIN_READ_TRANSACTION =
'BEGIN'.freeze
COMMIT =
'COMMIT'.freeze
ROLLBACK =
'ROLLBACK'.freeze
QUERY_ONLY =
'PRAGMA query_only = ON'.freeze
BUSY_TIMEOUT =
'PRAGMA busy_timeout = 2000'.freeze
OVERVIEW_EXECUTING =
"SELECT COUNT(*) FROM jobs WHERE status = 'running' AND started_at IS NOT NULL".freeze
OVERVIEW_CLAIMED =
"SELECT COUNT(*) FROM jobs WHERE status = 'running' AND started_at IS NULL".freeze
OVERVIEW_PENDING =
"SELECT COUNT(*) FROM jobs WHERE status = 'pending'".freeze
OVERVIEW_DONE =
"SELECT COUNT(*) FROM jobs WHERE status = 'done'".freeze
OVERVIEW_FAILED =
"SELECT COUNT(*) FROM jobs WHERE status = 'failed'".freeze
OVERVIEW_NEXT_PENDING =
"SELECT MIN(run_at) FROM jobs WHERE status = 'pending'".freeze
EXECUTING =
<<~SQL.freeze
  SELECT id, class_name, args, options, started_at, locked_by, locked_at
  FROM jobs
  WHERE status = 'running' AND started_at IS NOT NULL
  ORDER BY started_at, id
  LIMIT ?
SQL
CLAIMED =
<<~SQL.freeze
  SELECT id, class_name, args, options, locked_at, locked_by
  FROM jobs
  WHERE status = 'running' AND started_at IS NULL
  ORDER BY locked_at, id
  LIMIT ?
SQL
DONE =
<<~SQL.freeze
  SELECT id, class_name, args, options, finished_at, duration_ms
  FROM jobs
  WHERE status = 'done'
  ORDER BY finished_at DESC, id DESC
  LIMIT ?
SQL
DONE_AFTER =
<<~SQL.freeze
  SELECT id, class_name, args, options, finished_at, duration_ms
  FROM jobs
  WHERE status = 'done' AND (finished_at, id) < (?, ?)
  ORDER BY finished_at DESC, id DESC
  LIMIT ?
SQL
FAILED =
<<~SQL.freeze
  SELECT id, class_name, args, options, finished_at, duration_ms,
         last_error_class, last_error_message
  FROM jobs
  WHERE status = 'failed'
  ORDER BY finished_at DESC, id DESC
  LIMIT ?
SQL
FAILED_AFTER =
<<~SQL.freeze
  SELECT id, class_name, args, options, finished_at, duration_ms,
         last_error_class, last_error_message
  FROM jobs
  WHERE status = 'failed' AND (finished_at, id) < (?, ?)
  ORDER BY finished_at DESC, id DESC
  LIMIT ?
SQL
PENDING =
<<~SQL.freeze
  SELECT id, class_name, args, options, created_at, run_at
  FROM jobs
  WHERE status = 'pending'
  ORDER BY run_at, id
  LIMIT ?
SQL
PENDING_AFTER =
<<~SQL.freeze
  SELECT id, class_name, args, options, created_at, run_at
  FROM jobs
  WHERE status = 'pending' AND (run_at, id) > (?, ?)
  ORDER BY run_at, id
  LIMIT ?
SQL