Commit 1d0702a63c79628aa070f09de95cd03ceca39cb8

Authored by Andrew Kane
1 parent 3d8bfbd3

Restore notifications

lib/searchkick/index.rb
... ... @@ -66,26 +66,31 @@ module Searchkick
66 66 alias_method :swap, :promote
67 67  
68 68 # record based
  69 + # use helpers for notifications
69 70  
70 71 def store(record)
71   - bulk_index([record])
  72 + bulk_index_helper([record])
72 73 end
73 74  
74 75 def remove(record)
75   - bulk_delete([record])
  76 + bulk_delete_helper([record])
  77 + end
  78 +
  79 + def update_record(record, method_name)
  80 + bulk_update_helper([record], method_name)
76 81 end
77 82  
78 83 def bulk_delete(records)
79   - bulk_delete_helper(records.reject { |r| r.id.blank? })
  84 + bulk_delete_helper(records)
80 85 end
81 86  
82 87 def bulk_index(records)
83   - Searchkick.indexer.queue(records.map { |r| {index: record_data(r).merge(data: search_data(r))} })
  88 + bulk_index_helper(records)
84 89 end
85 90 alias_method :import, :bulk_index
86 91  
87 92 def bulk_update(records, method_name)
88   - Searchkick.indexer.queue(records.map { |r| {update: record_data(r).merge(data: {doc: search_data(r, method_name)})} })
  93 + bulk_update_helper(records, method_name)
89 94 end
90 95  
91 96 def record_data(r)
... ... @@ -475,8 +480,16 @@ module Searchkick
475 480 end
476 481 end
477 482  
  483 + def bulk_index_helper(records)
  484 + Searchkick.indexer.queue(records.map { |r| {index: record_data(r).merge(data: search_data(r))} })
  485 + end
  486 +
478 487 def bulk_delete_helper(records)
479   - Searchkick.indexer.queue(records.map { |r| {delete: record_data(r)} })
  488 + Searchkick.indexer.queue(records.reject { |r| r.id.blank? }.map { |r| {delete: record_data(r)} })
  489 + end
  490 +
  491 + def bulk_update_helper(records, method_name)
  492 + Searchkick.indexer.queue(records.map { |r| {update: record_data(r).merge(data: {doc: search_data(r, method_name)})} })
480 493 end
481 494  
482 495 def redis
... ...
lib/searchkick/logging.rb
... ... @@ -16,10 +16,53 @@ module Searchkick
16 16 end
17 17  
18 18 module IndexWithInstrumentation
  19 + def store(record)
  20 + event = {
  21 + name: "#{record.searchkick_klass.name} Store",
  22 + id: search_id(record)
  23 + }
  24 + if Searchkick.callbacks_value == :bulk
  25 + super
  26 + else
  27 + ActiveSupport::Notifications.instrument("request.searchkick", event) do
  28 + super
  29 + end
  30 + end
  31 + end
  32 +
  33 + def remove(record)
  34 + name = record && record.searchkick_klass ? "#{record.searchkick_klass.name} Remove" : "Remove"
  35 + event = {
  36 + name: name,
  37 + id: search_id(record)
  38 + }
  39 + if Searchkick.callbacks_value == :bulk
  40 + super
  41 + else
  42 + ActiveSupport::Notifications.instrument("request.searchkick", event) do
  43 + super
  44 + end
  45 + end
  46 + end
  47 +
  48 + def update_record(record, method_name)
  49 + event = {
  50 + name: "#{record.searchkick_klass.name} Update",
  51 + id: search_id(record)
  52 + }
  53 + if Searchkick.callbacks_value == :bulk
  54 + super
  55 + else
  56 + ActiveSupport::Notifications.instrument("request.searchkick", event) do
  57 + super
  58 + end
  59 + end
  60 + end
  61 +
19 62 def bulk_index(records)
20 63 if records.any?
21 64 event = {
22   - name: "#{records.first.searchkick_klass.name} Index",
  65 + name: "#{records.first.searchkick_klass.name} Import",
23 66 count: records.size
24 67 }
25 68 event[:id] = search_id(records.first) if records.size == 1
... ... @@ -51,7 +94,7 @@ module Searchkick
51 94 end
52 95 end
53 96  
54   - def bulk_delete_helper(records)
  97 + def bulk_delete(records)
55 98 if records.any?
56 99 event = {
57 100 name: "#{records.first.searchkick_klass.name} Delete",
... ...
lib/searchkick/model.rb
... ... @@ -120,7 +120,7 @@ module Searchkick
120 120 end
121 121 else
122 122 if method_name
123   - self.class.searchkick_index.bulk_update([self], method_name)
  123 + self.class.searchkick_index.update_record(self, method_name)
124 124 else
125 125 self.class.searchkick_index.reindex_record(self)
126 126 end
... ...