Module: Nazrin::Searchable::ClassMethods
- Defined in:
- lib/nazrin/searchable.rb
Class Method Summary collapse
Instance Method Summary collapse
- #nazrin_add_document(obj) ⇒ Object
- #nazrin_batch_operation(type_objects_mapping) ⇒ Object
- #nazrin_delete_document(obj) ⇒ Object
- #nazrin_doc_client ⇒ Object
- #nazrin_eval_field_data(obj) ⇒ Object
- #nazrin_field(field, &block) ⇒ Object
- #nazrin_fields(fields) ⇒ Object
- #nazrin_search(options = {}) ⇒ Object
- #nazrin_searchable(&block) ⇒ Object
- #nazrin_searchable_config ⇒ Object
- #nazrin_searchable_configure {|nazrin_searchable_config| ... } ⇒ Object
- #nazrin_update_document(obj) ⇒ Object
Class Method Details
.extended(base) ⇒ Object
28 29 30 31 32 33 34 35 36 37 |
# 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 |
Instance Method Details
#nazrin_add_document(obj) ⇒ Object
104 105 106 107 |
# 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) ⇒ Object
53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# 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) ⇒ Object
113 114 115 |
# File 'lib/nazrin/searchable.rb', line 113 def nazrin_delete_document(obj) nazrin_doc_client.delete_document(obj.send(:id)) end |
#nazrin_doc_client ⇒ Object
89 90 91 |
# File 'lib/nazrin/searchable.rb', line 89 def nazrin_doc_client class_variable_get(:@@nazrin_doc_client) end |
#nazrin_eval_field_data(obj) ⇒ Object
93 94 95 96 97 98 99 100 101 102 |
# 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) ⇒ Object
83 84 85 86 87 |
# 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) ⇒ Object
75 76 77 78 79 80 81 |
# 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 = {}) ⇒ Object
39 40 41 42 43 |
# File 'lib/nazrin/searchable.rb', line 39 def nazrin_search( = {}) client = Nazrin::SearchClient.new(nazrin_searchable_config) client.data_accessor = Nazrin::DataAccessor.for(self).new(self, ) client end |
#nazrin_searchable(&block) ⇒ Object
45 46 47 48 49 50 51 |
# 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 ⇒ Object
117 118 119 |
# 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| ... } ⇒ Object
121 122 123 |
# File 'lib/nazrin/searchable.rb', line 121 def nazrin_searchable_configure yield nazrin_searchable_config end |
#nazrin_update_document(obj) ⇒ Object
109 110 111 |
# File 'lib/nazrin/searchable.rb', line 109 def nazrin_update_document(obj) nazrin_add_document(obj) end |