Method: QueueLite::Queue#pop

Defined in:
lib/queue_lite/queue.rb

#popObject



51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/queue_lite/queue.rb', line 51

def pop
  row = db.get_first_row(<<~SQL, [LOCKED_STATUS, READY_STATUS])
    UPDATE queue
    SET status = ?
    WHERE rowid = (SELECT rowid
                   FROM queue
                   WHERE status = ?
                   ORDER BY id
                   LIMIT 1)
    RETURNING id, data
  SQL

  return if row.nil?

  Task.new(*row)
end