Commit 1d0702a63c79628aa070f09de95cd03ceca39cb8
1 parent
3d8bfbd3
Exists in
master
and in
19 other branches
Restore notifications
Showing
3 changed files
with
65 additions
and
9 deletions
Show diff stats
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 |