class Schdlr::Queue::Sqlite

Constants

FAILED_STATUS
INITIAL_STATUS

Public Class Methods

new(name='test.db') click to toggle source
# File lib/schdlr/queue/sqlite.rb, line 10
def initialize(name='test.db')
  @db = SQLite3::Database.new(name)
  @db.execute %(
    create table if not exists tasks (
      id integer PRIMARY KEY,
      scheduled_at integer,
      status varchar(30),
      name varchar(30)
    );)
end

Public Instance Methods

del(*keys) click to toggle source
# File lib/schdlr/queue/sqlite.rb, line 38
def del(*keys)
  @db.execute("DELETE FROM tasks WHERE id IN (?)", keys)
end
drop_all!() click to toggle source
# File lib/schdlr/queue/sqlite.rb, line 46
def drop_all!
  @db.execute("DELETE FROM tasks")
end
fail(*keys) click to toggle source
# File lib/schdlr/queue/sqlite.rb, line 42
def fail(*keys)
  @db.execute("UPDATE tasks SET status = '#{FAILED_STATUS}' WHERE id IN (?)", keys)
end
get(key) click to toggle source
# File lib/schdlr/queue/sqlite.rb, line 26
def get(key)
  @db.execute("SELECT * FROM tasks WHERE id IN (?)", key)
end
set(timestamp, task_spec) click to toggle source
# File lib/schdlr/queue/sqlite.rb, line 21
def set(timestamp, task_spec)
  #TODO: should raise if timestamp is not a proper date
  @db.execute("INSERT INTO tasks (scheduled_at, name, status) VALUES (?, ?, ?)", [timestamp.to_i, task_spec.to_yaml, INITIAL_STATUS])
end
tasks(at_time=nil) click to toggle source
# File lib/schdlr/queue/sqlite.rb, line 30
def tasks(at_time=nil)
  if at_time
    @db.execute("SELECT * FROM tasks WHERE scheduled_at <= ? and status = ?", [at_time.to_i, INITIAL_STATUS])
  else
    @db.execute("SELECT * FROM tasks")
  end
end