class Nazrin::DataAccessor
Attributes
model[R]
options[R]
Public Class Methods
accessor_for(clazz)
click to toggle source
# File lib/nazrin/data_accessor.rb, line 29 def accessor_for(clazz) return nil if clazz.name.nil? || clazz.name.empty? if clazz.respond_to?(:nazrin_searchable_config) && clazz.nazrin_searchable_config.domain_name require 'nazrin/data_accessor/struct' return Nazrin::DataAccessor::Struct[clazz.nazrin_searchable_config] elsif defined?(::ActiveRecord::Base) && clazz.ancestors.include?(::ActiveRecord::Base) require 'nazrin/data_accessor/active_record' return Nazrin::DataAccessor::ActiveRecord elsif defined?(::Mongoid::Document) && clazz.ancestors.include?(::Mongoid::Document) require 'nazrin/data_accessor/mongoid' return Nazrin::DataAccessor::Mongoid end nil end
accessors()
click to toggle source
# File lib/nazrin/data_accessor.rb, line 49 def accessors @accessor ||= {} end
for(clazz)
click to toggle source
# File lib/nazrin/data_accessor.rb, line 8 def for(clazz) accessor = registered_accessor_for(clazz) || register_accessor(clazz) return accessor if accessor raise NoAccessorError, "No accessor for #{clazz.name}" end
new(model, options)
click to toggle source
# File lib/nazrin/data_accessor.rb, line 57 def initialize(model, options) @model = model @options = options end
register(accessor, clazz)
click to toggle source
# File lib/nazrin/data_accessor.rb, line 45 def register(accessor, clazz) accessors[clazz.name.to_sym] = accessor end
register_accessor(clazz)
click to toggle source
# File lib/nazrin/data_accessor.rb, line 19 def register_accessor(clazz) clazz.ancestors.each do |ancestor_class| if accessor = accessor_for(ancestor_class) register(accessor, clazz) return accessor end end nil end
registered_accessor_for(clazz)
click to toggle source
# File lib/nazrin/data_accessor.rb, line 14 def registered_accessor_for(clazz) return nil if clazz.name.nil? || clazz.name.empty? accessors[clazz.name.to_sym] end
Public Instance Methods
data_from_response()
click to toggle source
# File lib/nazrin/data_accessor.rb, line 91 def data_from_response raise NotImplementedError end
load_all()
click to toggle source
# File lib/nazrin/data_accessor.rb, line 87 def load_all raise NotImplementedError end
results(client)
click to toggle source
# File lib/nazrin/data_accessor.rb, line 62 def results(client) res = client.search collection = load_all(data_from_response(res)) start = client.parameters[:start] size = client.parameters[:size] if size && start total_count = res.data.hits.found records = Nazrin::PaginationGenerator.generate( collection, current_page: current_page(start, size), per_page: size, total_count: total_count, last_page: last_page(size, total_count)) else records = collection end Result.new( records, res.facets ) end
Private Instance Methods
current_page(start, size)
click to toggle source
# File lib/nazrin/data_accessor.rb, line 101 def current_page(start, size) (start / size.to_f).ceil + 1 end
last_page(size, total_count)
click to toggle source
# File lib/nazrin/data_accessor.rb, line 97 def last_page(size, total_count) (total_count / size.to_f).ceil end