module Nazrin::Searchable::ClassMethods
Public Class Methods
extended(base)
click to toggle source
# File lib/nazrin/searchable.rb, line 28 def self.extended(base) class << base alias_method :search, :nazrin_search unless method_defined? :search alias_method :searchable, :nazrin_searchable unless method_defined? :searchable alias_method :batch_operation, :nazrin_batch_operation unless method_defined? :batch_operation alias_method :fields, :nazrin_fields unless method_defined? :fields alias_method :field, :nazrin_field unless method_defined? :field alias_method :searchable_configure, :nazrin_searchable_configure unless method_defined? :searchable_configure end end
Public Instance Methods
nazrin_add_document(obj)
click to toggle source
# File lib/nazrin/searchable.rb, line 104 def nazrin_add_document(obj) nazrin_doc_client.add_document( obj.send(:id), nazrin_eval_field_data(obj)) end
nazrin_batch_operation(type_objects_mapping)
click to toggle source
# File lib/nazrin/searchable.rb, line 53 def nazrin_batch_operation(type_objects_mapping) operations = type_objects_mapping.each_with_object({}) do |(type, objects), hash| case type.to_sym when :add hash[:add] = objects.map do |obj| [obj.send(:id), nazrin_eval_field_data(obj)] end when :delete hash[:delete] = objects.map do |obj| obj.send(:id) end else raise( InvalidBatchOperationError, "`#{type}` is not a valid batch operation" ) end end nazrin_doc_client.batch(operations) end
nazrin_delete_document(obj)
click to toggle source
# File lib/nazrin/searchable.rb, line 113 def nazrin_delete_document(obj) nazrin_doc_client.delete_document(obj.send(:id)) end
nazrin_doc_client()
click to toggle source
# File lib/nazrin/searchable.rb, line 89 def nazrin_doc_client class_variable_get(:@@nazrin_doc_client) end
nazrin_eval_field_data(obj)
click to toggle source
# File lib/nazrin/searchable.rb, line 93 def nazrin_eval_field_data(obj) data = {} class_variable_get( :@@nazrin_search_field_data).each do |field, block| data[field] = obj.instance_eval(&block) data[field] = data[field].remove( /[[:cntrl:]]/) if data[field].is_a?(String) end data end
nazrin_field(field, &block)
click to toggle source
# File lib/nazrin/searchable.rb, line 83 def nazrin_field(field, &block) field_data = class_variable_get(:@@nazrin_search_field_data) field_data[field] = block class_variable_set(:@@nazrin_search_field_data, field_data) end
nazrin_fields(fields)
click to toggle source
# File lib/nazrin/searchable.rb, line 75 def nazrin_fields(fields) field_data = class_variable_get(:@@nazrin_search_field_data) fields.each do |field| field_data[field] = proc { public_send(field) } end class_variable_set(:@@nazrin_search_field_data, field_data) end
nazrin_search(options = {})
click to toggle source
# File lib/nazrin/searchable.rb, line 39 def nazrin_search(options = {}) client = Nazrin::SearchClient.new(nazrin_searchable_config) client.data_accessor = Nazrin::DataAccessor.for(self).new(self, options) client end
nazrin_searchable(&block)
click to toggle source
# File lib/nazrin/searchable.rb, line 45 def nazrin_searchable(&block) class_variable_set( :@@nazrin_doc_client, Nazrin::DocumentClient.new(nazrin_searchable_config)) class_variable_set(:@@nazrin_search_field_data, {}) block.call end
nazrin_searchable_config()
click to toggle source
# File lib/nazrin/searchable.rb, line 117 def nazrin_searchable_config @nazrin_searchable_config ||= Nazrin::Searchable::Configuration.new end
nazrin_searchable_configure() { |nazrin_searchable_config| ... }
click to toggle source
# File lib/nazrin/searchable.rb, line 121 def nazrin_searchable_configure yield nazrin_searchable_config end
nazrin_update_document(obj)
click to toggle source
# File lib/nazrin/searchable.rb, line 109 def nazrin_update_document(obj) nazrin_add_document(obj) end