Commit 1d0702a63c79628aa070f09de95cd03ceca39cb8

Authored by Andrew Kane
1 parent 3d8bfbd3

Restore notifications

lib/searchkick/index.rb
@@ -66,26 +66,31 @@ module Searchkick @@ -66,26 +66,31 @@ module Searchkick
66 alias_method :swap, :promote 66 alias_method :swap, :promote
67 67
68 # record based 68 # record based
  69 + # use helpers for notifications
69 70
70 def store(record) 71 def store(record)
71 - bulk_index([record]) 72 + bulk_index_helper([record])
72 end 73 end
73 74
74 def remove(record) 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 end 81 end
77 82
78 def bulk_delete(records) 83 def bulk_delete(records)
79 - bulk_delete_helper(records.reject { |r| r.id.blank? }) 84 + bulk_delete_helper(records)
80 end 85 end
81 86
82 def bulk_index(records) 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 end 89 end
85 alias_method :import, :bulk_index 90 alias_method :import, :bulk_index
86 91
87 def bulk_update(records, method_name) 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 end 94 end
90 95
91 def record_data(r) 96 def record_data(r)
@@ -475,8 +480,16 @@ module Searchkick @@ -475,8 +480,16 @@ module Searchkick
475 end 480 end
476 end 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 def bulk_delete_helper(records) 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 end 493 end
481 494
482 def redis 495 def redis
lib/searchkick/logging.rb
@@ -16,10 +16,53 @@ module Searchkick @@ -16,10 +16,53 @@ module Searchkick
16 end 16 end
17 17
18 module IndexWithInstrumentation 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 def bulk_index(records) 62 def bulk_index(records)
20 if records.any? 63 if records.any?
21 event = { 64 event = {
22 - name: "#{records.first.searchkick_klass.name} Index", 65 + name: "#{records.first.searchkick_klass.name} Import",
23 count: records.size 66 count: records.size
24 } 67 }
25 event[:id] = search_id(records.first) if records.size == 1 68 event[:id] = search_id(records.first) if records.size == 1
@@ -51,7 +94,7 @@ module Searchkick @@ -51,7 +94,7 @@ module Searchkick
51 end 94 end
52 end 95 end
53 96
54 - def bulk_delete_helper(records) 97 + def bulk_delete(records)
55 if records.any? 98 if records.any?
56 event = { 99 event = {
57 name: "#{records.first.searchkick_klass.name} Delete", 100 name: "#{records.first.searchkick_klass.name} Delete",
lib/searchkick/model.rb
@@ -120,7 +120,7 @@ module Searchkick @@ -120,7 +120,7 @@ module Searchkick
120 end 120 end
121 else 121 else
122 if method_name 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 else 124 else
125 self.class.searchkick_index.reindex_record(self) 125 self.class.searchkick_index.reindex_record(self)
126 end 126 end