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 117 RecordData.new(self, record).document_type
118 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 120 def similar_record(record, **options)
145 121 like_text = retrieve(record).to_hash
146 122 .keep_if { |k, _| !options[:fields] || options[:fields].map(&:to_s).include?(k) }
... ...
lib/searchkick/record_indexer.rb
1 1 module Searchkick
2 2 class RecordIndexer
3   - attr_reader :record
  3 + attr_reader :record, :index
4 4  
5 5 def initialize(record)
6 6 @record = record
  7 + @index = record.class.searchkick_index
7 8 end
8 9  
9 10 def reindex(method_name = nil, refresh: false, mode: nil)
... ... @@ -13,8 +14,6 @@ module Searchkick
13 14 raise ArgumentError, "Invalid value for mode"
14 15 end
15 16  
16   - index = record.class.searchkick_index
17   -
18 17 klass_options = index.options
19 18  
20 19 if mode.nil?
... ... @@ -42,16 +41,42 @@ module Searchkick
42 41 method_name: method_name ? method_name.to_s : nil
43 42 )
44 43 else
45   - index.reindex_record_async(record)
  44 + reindex_record_async
46 45 end
47 46 else
48 47 if method_name
49 48 index.update_record(record, method_name)
50 49 else
51   - index.reindex_record(record)
  50 + reindex_record
52 51 end
53 52 index.refresh if refresh
54 53 end
55 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 81 end
57 82 end
... ...