Commit 597345bdbefbfd83eb6086afdcb327b5f32e05e9

Authored by Andrew
1 parent b7e9b5bc

Moved logic out of Searchkick::Index [skip ci]

lib/searchkick/index.rb
@@ -117,30 +117,6 @@ module Searchkick @@ -117,30 +117,6 @@ module Searchkick
117 RecordData.new(self, record).document_type 117 RecordData.new(self, record).document_type
118 end 118 end
119 119
120 - def reindex_record(record)  
121 - if record.destroyed? || !record.should_index?  
122 - begin  
123 - remove(record)  
124 - rescue Elasticsearch::Transport::Transport::Errors::NotFound  
125 - # do nothing  
126 - end  
127 - else  
128 - store(record)  
129 - end  
130 - end  
131 -  
132 - def reindex_record_async(record)  
133 - if Searchkick.callbacks_value.nil?  
134 - if defined?(Searchkick::ReindexV2Job)  
135 - Searchkick::ReindexV2Job.perform_later(record.class.name, record.id.to_s)  
136 - else  
137 - raise Searchkick::Error, "Active Job not found"  
138 - end  
139 - else  
140 - reindex_record(record)  
141 - end  
142 - end  
143 -  
144 def similar_record(record, **options) 120 def similar_record(record, **options)
145 like_text = retrieve(record).to_hash 121 like_text = retrieve(record).to_hash
146 .keep_if { |k, _| !options[:fields] || options[:fields].map(&:to_s).include?(k) } 122 .keep_if { |k, _| !options[:fields] || options[:fields].map(&:to_s).include?(k) }
lib/searchkick/record_indexer.rb
1 module Searchkick 1 module Searchkick
2 class RecordIndexer 2 class RecordIndexer
3 - attr_reader :record 3 + attr_reader :record, :index
4 4
5 def initialize(record) 5 def initialize(record)
6 @record = record 6 @record = record
  7 + @index = record.class.searchkick_index
7 end 8 end
8 9
9 def reindex(method_name = nil, refresh: false, mode: nil) 10 def reindex(method_name = nil, refresh: false, mode: nil)
@@ -13,8 +14,6 @@ module Searchkick @@ -13,8 +14,6 @@ module Searchkick
13 raise ArgumentError, "Invalid value for mode" 14 raise ArgumentError, "Invalid value for mode"
14 end 15 end
15 16
16 - index = record.class.searchkick_index  
17 -  
18 klass_options = index.options 17 klass_options = index.options
19 18
20 if mode.nil? 19 if mode.nil?
@@ -42,16 +41,42 @@ module Searchkick @@ -42,16 +41,42 @@ module Searchkick
42 method_name: method_name ? method_name.to_s : nil 41 method_name: method_name ? method_name.to_s : nil
43 ) 42 )
44 else 43 else
45 - index.reindex_record_async(record) 44 + reindex_record_async
46 end 45 end
47 else 46 else
48 if method_name 47 if method_name
49 index.update_record(record, method_name) 48 index.update_record(record, method_name)
50 else 49 else
51 - index.reindex_record(record) 50 + reindex_record
52 end 51 end
53 index.refresh if refresh 52 index.refresh if refresh
54 end 53 end
55 end 54 end
  55 +
  56 + private
  57 +
  58 + def reindex_record
  59 + if record.destroyed? || !record.should_index?
  60 + begin
  61 + index.remove(record)
  62 + rescue Elasticsearch::Transport::Transport::Errors::NotFound
  63 + # do nothing
  64 + end
  65 + else
  66 + index.store(record)
  67 + end
  68 + end
  69 +
  70 + def reindex_record_async
  71 + if Searchkick.callbacks_value.nil?
  72 + if defined?(Searchkick::ReindexV2Job)
  73 + Searchkick::ReindexV2Job.perform_later(record.class.name, record.id.to_s)
  74 + else
  75 + raise Searchkick::Error, "Active Job not found"
  76 + end
  77 + else
  78 + reindex_record
  79 + end
  80 + end
56 end 81 end
57 end 82 end