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