class Endymion::Memory
Attributes
store[R]
Public Class Methods
new(opts={})
click to toggle source
# File lib/endymion/memory.rb, line 8 def initialize(opts={}) @store = {} end
Public Instance Methods
count(query)
click to toggle source
# File lib/endymion/memory.rb, line 57 def count(query) find(query).length end
create(records)
click to toggle source
# File lib/endymion/memory.rb, line 21 def create(records) records.map do |record| raise 'duplicate key' if record[:key] && store.key?(record[:key]) record[:key] ||= generate_key store[record[:key]] = record record end end
delete(query)
click to toggle source
# File lib/endymion/memory.rb, line 49 def delete(query) records = find(query) store.delete_if do |key, record| records.include?(record) end nil end
delete_by_key(kind, key)
click to toggle source
# File lib/endymion/memory.rb, line 44 def delete_by_key(kind, key) store.delete(key) nil end
find(query)
click to toggle source
# File lib/endymion/memory.rb, line 34 def find(query) records = store.values records = filter_kind(query.kind, records) records = Helper.apply_filters(query.filters, records) records = Helper.apply_sorts(query.sorts, records) records = Helper.apply_offset(query.offset, records) records = Helper.apply_limit(query.limit, records) records end
find_by_key(kind, key)
click to toggle source
# File lib/endymion/memory.rb, line 30 def find_by_key(kind, key) store[key] end
save(records)
click to toggle source
# File lib/endymion/memory.rb, line 12 def save(records) records.map do |record| key = Endymion.new?(record) ? generate_key : record[:key] record[:key] = key store[key] = record record end end
Private Instance Methods
filter_kind(kind, records)
click to toggle source
# File lib/endymion/memory.rb, line 65 def filter_kind(kind, records) records.select do |record| record[:kind] == kind end end
generate_key()
click to toggle source
# File lib/endymion/memory.rb, line 71 def generate_key Endymion::Key.generate_id end