Class: Litequeue

Inherits:
Object
  • Object
show all
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

Instance Method Summary collapse

Constructor Details

#initializeLitequeue

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
  options = configuration.to_h
    .slice(:synchronous, :mmap_size, :journal_size_limit)
    .merge(migrations: self.class.migrations,
      statements: self.class.statements)

  @db = Litedb::Connection.new(file, options)
  # 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

.configurationObject



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

Yields:



24
25
26
# File 'lib/litequeue.rb', line 24

def self.configure
  yield(configuration)
end

.migrationsObject



28
29
30
# File 'lib/litequeue.rb', line 28

def self.migrations
  YAML.load_file("#{__dir__}/litequeue/migrations.sql.yml")
end

.statementsObject



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

Returns:

  • (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