Class: Litequeue
- Inherits:
-
Object
- Object
- Litequeue
- Includes:
- Singleton
- Defined in:
- lib/litequeue.rb,
lib/litequeue/version.rb
Defined Under Namespace
Classes: Configuration
Constant Summary collapse
- DEFAULT_QUEUE =
"default"
- VERSION =
"0.2.1"
Class Method Summary collapse
- .configuration ⇒ Object
- .configure {|configuration| ... } ⇒ Object
- .migrations ⇒ Object
- .statements ⇒ Object
Instance Method Summary collapse
- #clear(queue: nil) ⇒ Object
- #count(queue: nil) ⇒ Object
- #delete(id) ⇒ Object
- #empty? ⇒ Boolean
-
#initialize ⇒ Litequeue
constructor
A new instance of Litequeue.
- #pop(queue: DEFAULT_QUEUE, limit: 1) ⇒ Object
- #push(value, queue: DEFAULT_QUEUE, delay: 0) ⇒ Object
- #repush(id, value, queue: DEFAULT_QUEUE, delay: 0) ⇒ Object
Constructor Details
#initialize ⇒ Litequeue
Returns a new instance of Litequeue.
36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/litequeue.rb', line 36 def initialize configuration = self.class.configuration file = configuration.path = configuration.to_h .slice(:synchronous, :mmap_size, :journal_size_limit) .merge(migrations: self.class.migrations, statements: self.class.statements) @db = Litedb::Connection.new(file, ) # Once the instance has been initialized, don't allow the configuration to be changed # as it won't have any effect. configuration.freeze end |
Class Method Details
.configuration ⇒ Object
16 17 18 19 20 21 22 |
# File 'lib/litequeue.rb', line 16 def self.configuration @configuration ||= Configuration.new( _path = "queue.sqlite3", _synchronous = :OFF, _mmap_size = 32 * 1024 ) end |
.configure {|configuration| ... } ⇒ Object
24 25 26 |
# File 'lib/litequeue.rb', line 24 def self.configure yield(configuration) end |
.migrations ⇒ Object
28 29 30 |
# File 'lib/litequeue.rb', line 28 def self.migrations YAML.load_file("#{__dir__}/litequeue/migrations.sql.yml") end |
.statements ⇒ Object
32 33 34 |
# File 'lib/litequeue.rb', line 32 def self.statements YAML.load_file("#{__dir__}/litequeue/statements.sql.yml") end |
Instance Method Details
#clear(queue: nil) ⇒ Object
78 79 80 81 |
# File 'lib/litequeue.rb', line 78 def clear(queue: nil) results = @db.run_statement(:clear, queue) results.count end |
#count(queue: nil) ⇒ Object
73 74 75 76 |
# File 'lib/litequeue.rb', line 73 def count(queue: nil) results = @db.run_statement(:count, queue) extract_value(results) end |
#delete(id) ⇒ Object
68 69 70 71 |
# File 'lib/litequeue.rb', line 68 def delete(id) results = @db.run_statement(:delete, id) extract_value(results) end |
#empty? ⇒ Boolean
83 84 85 |
# File 'lib/litequeue.rb', line 83 def empty? count.zero? end |
#pop(queue: DEFAULT_QUEUE, limit: 1) ⇒ Object
55 56 57 58 59 60 61 |
# File 'lib/litequeue.rb', line 55 def pop(queue: DEFAULT_QUEUE, limit: 1) results = @db.run_statement(:pop, queue, limit) return extract_row(results) if limit == 1 results end |
#push(value, queue: DEFAULT_QUEUE, delay: 0) ⇒ Object
50 51 52 53 |
# File 'lib/litequeue.rb', line 50 def push(value, queue: DEFAULT_QUEUE, delay: 0) results = @db.run_statement(:push, queue, delay, value) # [["{id}", "{name}"]] extract_row(results) end |
#repush(id, value, queue: DEFAULT_QUEUE, delay: 0) ⇒ Object
63 64 65 66 |
# File 'lib/litequeue.rb', line 63 def repush(id, value, queue: DEFAULT_QUEUE, delay: 0) results = @db.run_statement(:repush, id, queue, delay, value) extract_value(results) end |