module Hypostasis::ColumnGroup::Findable::ClassMethods
Public Instance Methods
find(id)
click to toggle source
# File lib/hypostasis/column_group/findable.rb, line 6 def find(id) document_keys = namespace.transact do |tr| tr.get_range_start_with(namespace.for_column_group(self, id), {:streaming_mode => :want_all}).to_a end raise Hypostasis::Errors::ColumnGroupNotFound if document_keys.empty? reconstitute_column_group(document_keys) end
find_where(field_value_pairs)
click to toggle source
# File lib/hypostasis/column_group/findable.rb, line 14 def find_where(field_value_pairs) results = [] namespace.transact do |tr| field_value_pairs.each do |field, value| results << tr.get_range_start_with(namespace.for_index(self, field, value), {:streaming_mode => :want_all}).to_a end end results.flatten! results.collect! {|result| Hypostasis::Tuple.unpack(result.key.split('\\').last).to_a.last }.compact! results.select! {|e| results.count(e) == field_value_pairs.size} results.uniq! results.collect! {|result| find(result) } end
Private Instance Methods
parse_key(key)
click to toggle source
# File lib/hypostasis/column_group/findable.rb, line 38 def parse_key(key) attribute_tuple = key.key.split('\\')[2] return {} if attribute_tuple.nil? unpacked_key = Hypostasis::Tuple.unpack(attribute_tuple) {unpacked_key.to_a[0].to_sym => reconstitute_value(unpacked_key, key.value)} end
reconstitute_column_group(keys)
click to toggle source
# File lib/hypostasis/column_group/findable.rb, line 30 def reconstitute_column_group(keys) attributes = {} keys.each {|key| attributes.merge(parse_key(key))} document = self.new(attributes) document.set_id(Hypostasis::Tuple.unpack(keys.first.key.split('\\')[1]).to_a[1]) document end