module Risky::SecondaryIndexes
Public Class Methods
included(base)
click to toggle source
# File lib/risky/secondary_indexes.rb, line 3 def self.included(base) base.extend ClassMethods end
new(key = nil, values = {}, indexes2i = {})
click to toggle source
Instance methods
Calls superclass method
# File lib/risky/secondary_indexes.rb, line 129 def initialize(key = nil, values = {}, indexes2i = {}) super((key.nil? ? nil : key.to_s), values) # Parse anything not parsed correctly by Yajl (no support for json_create) self.class.values.each do |k,v| if self[k].is_a?(Hash) && self[k]['json_class'] klass = Risky::Inflector.constantize(self[k]['json_class']) self[k] = klass.send(:json_create, self[k]) end end @indexes2i = {} indexes2i.each do |k,v| send(k.to_s + '=', v) end end
Public Instance Methods
indexes2i()
click to toggle source
# File lib/risky/secondary_indexes.rb, line 189 def indexes2i @indexes2i end
inspect()
click to toggle source
# File lib/risky/secondary_indexes.rb, line 193 def inspect "#<#{self.class} #{key} #{@indexes2i.inspect} #{@values.inspect}>" end
load_riak_object(riak_object, opts = {:merge => true})
click to toggle source
Calls superclass method
# File lib/risky/secondary_indexes.rb, line 164 def load_riak_object(riak_object, opts = {:merge => true}) super(riak_object, opts) # Parse anything not parsed correctly by Yajl (no support for json_create) self.class.values.each do |k,v| if self[k].is_a?(Hash) && self[k]['json_class'] klass = Risky::Inflector.constantize(self[k]['json_class']) self[k] = klass.send(:json_create, self[k]) end end self.class.indexes2i.each do |k, v| case v[:type] when :int @indexes2i[k] = v[:multi] ? @riak_object.indexes["#{k}_int"].map(&:to_i) : @riak_object.indexes["#{k}_int"].first.to_i when :bin @indexes2i[k] = v[:multi] ? @riak_object.indexes["#{k}_bin"].map(&:to_s) : @riak_object.indexes["#{k}_bin"].first.to_s else raise TypeError, "Invalid 2i type '#{v[:type]}' for index #{k} on #{self.class.name}" end end self end
save(opts = {})
click to toggle source
Calls superclass method
# File lib/risky/secondary_indexes.rb, line 147 def save(opts = {}) self.class.indexes2i.each do |k, v| raise ArgumentError, "Nil for index #{k} on #{self.class.name}" if (v[:multi] ? @indexes2i[k].nil? : @indexes2i[k].blank?) && !v[:allow_nil] case v[:type] when :int @riak_object.indexes["#{k}_int"] = v[:multi] && @indexes2i[k].respond_to?(:map) ? @indexes2i[k].map(&:to_i) : [ @indexes2i[k].to_i ] when :bin @riak_object.indexes["#{k}_bin"] = v[:multi] && @indexes2i[k].respond_to?(:map) ? @indexes2i[k].map(&:to_s) : [ @indexes2i[k].to_s ] else raise TypeError, "Invalid 2i type '#{v[:type]}' for index #{k} on #{self.class.name}" end end super(opts) end