Class: Juno::Adapters::Sequel
Overview
Sequel backend
Instance Method Summary collapse
- #clear(options = {}) ⇒ Object
- #delete(key, options = {}) ⇒ Object
-
#initialize(options = {}) ⇒ Sequel
constructor
Constructor.
- #key?(key, options = {}) ⇒ Boolean
- #load(key, options = {}) ⇒ Object
- #store(key, value, options = {}) ⇒ Object
Methods inherited from Base
Constructor Details
#initialize(options = {}) ⇒ Sequel
Constructor
Options:
-
:db - Sequel database
-
:table - Table name (default :juno)
-
All other options passed to Sequel#connect
16 17 18 19 20 21 22 23 24 |
# File 'lib/juno/adapters/sequel.rb', line 16 def initialize( = {}) raise ArgumentError, 'Option :db is required' unless db = .delete(:db) @table = .delete(:table) || :juno @db = ::Sequel.connect(db, ) @db.create_table?(@table) do String :k, :null => false, :primary_key => true String :v end end |
Instance Method Details
#clear(options = {}) ⇒ Object
55 56 57 58 |
# File 'lib/juno/adapters/sequel.rb', line 55 def clear( = {}) sequel_table.delete self end |
#delete(key, options = {}) ⇒ Object
46 47 48 49 50 51 52 53 |
# File 'lib/juno/adapters/sequel.rb', line 46 def delete(key, = {}) @db.transaction do if value = load(key, ) sequel_table.filter(:k => key).delete value end end end |
#key?(key, options = {}) ⇒ Boolean
26 27 28 |
# File 'lib/juno/adapters/sequel.rb', line 26 def key?(key, = {}) !!sequel_table[:k => key] end |
#load(key, options = {}) ⇒ Object
30 31 32 33 |
# File 'lib/juno/adapters/sequel.rb', line 30 def load(key, = {}) result = sequel_table[:k => key] result ? result[:v] : nil end |
#store(key, value, options = {}) ⇒ Object
35 36 37 38 39 40 41 42 43 44 |
# File 'lib/juno/adapters/sequel.rb', line 35 def store(key, value, = {}) @db.transaction do if key?(key, ) sequel_table.update(:k => key, :v => value) else sequel_table.insert(:k => key, :v => value) end value end end |