plok 1.1.1 → 1.1.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7801b68f7ae1a30624a95fcf9713bb1251f2e7831960ddd173e64b152ba24f94
4
- data.tar.gz: 057c7d13a8922bdeba6150e6d2df6ecec65d0f8af169a50b879ccadbee3688b3
3
+ metadata.gz: 6267c2e65f2bdf7db8fcefb866007f1dbfa6f283ad481facb47017bad424a05d
4
+ data.tar.gz: ded3e9ac5159983bd1560b693ba02b312ae7b5f3fce0b100774df30e5e42a18a
5
5
  SHA512:
6
- metadata.gz: '087677f2caccca0fc4d2e342790860f8514aa002447f2555e018aa4e60e5bb817111209c7cea3c84452ec24b717291fe1e05dc061623cc7b5dd2cd5791271f4b'
7
- data.tar.gz: 394542cf38ab37c5740622fee0fc6de8c0b9bd9697e91b94323a3b0edd84ce60aa750af2daf14ccdaaa5782282d548c5ac7a9a77fd56567e936f9164c9a631c2
6
+ metadata.gz: 540e8f264ea10b8448edd0547edf00bdd1e807b85182be10c8f5a9a0543c83ca00ed3f56371ee5c34ff6fb268caf287f00673b994c2fc8e093c7fa5eaf7aab05
7
+ data.tar.gz: 895fb179a873f3789959a36f65c9b0cfddfe83f9003d3320e372545d020baf340ff0464184f6922428748e4a7213c6b2a364dfed4248ebd9ddd04b428f8be643
@@ -16,17 +16,17 @@ module Plok::Searchable
16
16
  end
17
17
 
18
18
  def trigger_indices_save!
19
- self.class.searchable_fields_list.each do |namespace, keys|
20
- keys.each do |key|
21
- if key == :flexible_content
19
+ self.class.searchable_fields_list.each do |namespace, fields|
20
+ fields.each do |field|
21
+ if field[:name] == :flexible_content
22
22
  save_flexible_content_search_indices!(namespace) && next
23
23
  end
24
24
 
25
- if respond_to?(:translatable?) && self.class.translatable_fields_list.include?(key)
26
- save_translatable_search_index!(namespace, key) && next
25
+ if respond_to?(:translatable?) && self.class.translatable_fields_list.include?(field[:name])
26
+ save_translatable_search_index!(namespace, field[:name]) && next
27
27
  end
28
28
 
29
- save_search_index!(namespace, key)
29
+ save_search_index!(namespace, field[:name], conditions: field[:conditions])
30
30
  end
31
31
  end
32
32
  end
@@ -51,7 +51,11 @@ module Plok::Searchable
51
51
  end
52
52
  end
53
53
 
54
- def save_search_index!(namespace, key, value: nil, locale: nil)
54
+ def save_search_index!(namespace, key, value: nil, locale: nil, conditions: [])
55
+ if conditions.any?
56
+ return unless conditions.map { |c| send(c) }.all?
57
+ end
58
+
55
59
  value = if value.present?
56
60
  value
57
61
  elsif ActiveRecord::Base.connection.column_exists?(self.class.table_name, key)
@@ -81,18 +85,23 @@ module Plok::Searchable
81
85
  end
82
86
 
83
87
  module ClassMethods
84
- def searchable_field(namespace, key)
85
- return if searchable_fields_list.dig(namespace.to_sym)&.include?(key.to_sym)
88
+ def searchable_field(namespace, key, conditions)
89
+ return if !!searchable_fields_list.dig(namespace.to_sym)&.detect do |field|
90
+ field[:name] == key.to_sym
91
+ end
86
92
 
87
93
  if searchable_fields_list[namespace.to_sym].blank?
88
94
  searchable_fields_list[namespace.to_sym] = []
89
95
  end
90
96
 
91
- searchable_fields_list[namespace.to_sym] << key.to_sym
97
+ searchable_fields_list[namespace.to_sym] << {
98
+ name: key.to_sym,
99
+ conditions: conditions
100
+ }
92
101
  end
93
102
 
94
103
  def plok_searchable(namespace: nil, fields: [], conditions: [])
95
- fields.each { |key| searchable_field(namespace, key) }
104
+ fields.each { |key| searchable_field(namespace, key, conditions) }
96
105
  end
97
106
 
98
107
  def searchable_fields_list
data/lib/plok/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Plok
2
- VERSION = '1.1.1'
2
+ VERSION = '1.1.3'
3
3
  end
@@ -9,10 +9,18 @@ shared_examples_for :searchable do
9
9
  # Because this is a spec/support included through it_behaves_like,
10
10
  # we have to mock the entry points of the data used in
11
11
  # Plok::Searchable.
12
- allow(described_class).to receive(:searchable_fields_list) { [:foo] }
12
+ allow(described_class).to receive(:searchable_fields_list) do
13
+ {
14
+ backend: [
15
+ { name: :foo, conditions: [] }
16
+ ]
17
+ }
18
+ end
19
+
13
20
  if described_class.respond_to?(:translatable_fields_list)
14
21
  allow(described_class).to receive(:translatable_fields_list) { [] }
15
22
  end
23
+
16
24
  described_class.define_method(:foo) { 'bar' }
17
25
  end
18
26
 
@@ -27,7 +35,13 @@ shared_examples_for :searchable do
27
35
 
28
36
  if described_class.respond_to?(:translatable_fields)
29
37
  before do
30
- allow(described_class).to receive(:searchable_fields_list) { [:foo] }
38
+ allow(described_class).to receive(:searchable_fields_list) do
39
+ {
40
+ backend: [
41
+ { name: :foo, conditions: [] }
42
+ ]
43
+ }
44
+ end
31
45
  end
32
46
 
33
47
  context 'translatable model' do
@@ -62,7 +76,14 @@ shared_examples_for :searchable do
62
76
  # Because this is a spec/support included through it_behaves_like,
63
77
  # we have to mock the entry points of the data used in
64
78
  # Plok::Searchable.
65
- allow(described_class).to receive(:searchable_fields_list) { [:foo] }
79
+ allow(described_class).to receive(:searchable_fields_list) do
80
+ {
81
+ backend: [
82
+ { name: :foo, conditions: [] }
83
+ ]
84
+ }
85
+ end
86
+
66
87
  allow_any_subject_of(described_class).to receive(:foo) { 'bar' }
67
88
  allow_any_subject_of(Concerns::Storable::Collection).to receive(:foo) { 'bar' }
68
89
 
@@ -90,7 +111,7 @@ shared_examples_for :searchable do
90
111
 
91
112
  it '.respond_to?' do
92
113
  expect(described_class).to respond_to(
93
- :searchable_field, :searchable_fields, :searchable_fields_list
114
+ :plok_searchable, :searchable_field, :searchable_fields_list
94
115
  )
95
116
  end
96
117
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: plok
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Davy Hellemans
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2022-11-05 00:00:00.000000000 Z
12
+ date: 2022-11-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails