meilisearch-rails 0.14.2 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: meilisearch-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.14.2
4
+ version: 0.15.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Meili
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-01-15 00:00:00.000000000 Z
11
+ date: 2025-03-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: meilisearch
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.28.4
19
+ version: 0.31.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 0.28.4
26
+ version: 0.31.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: mutex_m
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -57,7 +57,8 @@ files:
57
57
  - lib/meilisearch/rails/ms_clean_up_job.rb
58
58
  - lib/meilisearch/rails/ms_job.rb
59
59
  - lib/meilisearch/rails/multi_search.rb
60
- - lib/meilisearch/rails/multi_search/result.rb
60
+ - lib/meilisearch/rails/multi_search/federated_search_result.rb
61
+ - lib/meilisearch/rails/multi_search/multi_search_result.rb
61
62
  - lib/meilisearch/rails/null_object.rb
62
63
  - lib/meilisearch/rails/pagination.rb
63
64
  - lib/meilisearch/rails/pagination/kaminari.rb
@@ -1,84 +0,0 @@
1
- module MeiliSearch
2
- module Rails
3
- class MultiSearchResult
4
- attr_reader :metadata
5
-
6
- def initialize(searches, raw_results)
7
- @results = {}
8
- @metadata = {}
9
-
10
- searches.zip(raw_results['results']).each do |(index_target, search_options), result|
11
- index_target = search_options[:class_name].constantize if search_options[:class_name]
12
-
13
- @results[index_target] = case index_target
14
- when String, Symbol
15
- result['hits']
16
- else
17
- load_results(index_target, result)
18
- end
19
-
20
- @metadata[index_target] = result.except('hits')
21
- end
22
- end
23
-
24
- include Enumerable
25
-
26
- def each_hit(&block)
27
- @results.each do |_index_target, results|
28
- results.each(&block)
29
- end
30
- end
31
- alias each each_hit
32
-
33
- def each_result(&block)
34
- @results.each(&block)
35
- end
36
-
37
- def to_a
38
- @results.values.flatten(1)
39
- end
40
- alias to_ary to_a
41
-
42
- def to_h
43
- @results
44
- end
45
- alias to_hash to_h
46
-
47
- private
48
-
49
- def load_results(klass, result)
50
- pk_method = klass.ms_primary_key_method
51
- pk_method = pk_method.in if Utilities.mongo_model?(klass)
52
-
53
- condition_key = pk_is_virtual?(klass, pk_method) ? klass.primary_key : pk_method
54
-
55
- hits_by_id =
56
- result['hits'].index_by { |hit| hit[condition_key.to_s] }
57
-
58
- records = klass.where(condition_key => hits_by_id.keys)
59
-
60
- if records.respond_to? :in_order_of
61
- records.in_order_of(condition_key, hits_by_id.keys).each do |record|
62
- record.formatted = hits_by_id[record.send(condition_key).to_s]['_formatted']
63
- end
64
- else
65
- results_by_id = records.index_by do |hit|
66
- hit.send(condition_key).to_s
67
- end
68
-
69
- result['hits'].filter_map do |hit|
70
- record = results_by_id[hit[condition_key.to_s].to_s]
71
- record&.formatted = hit['_formatted']
72
- record
73
- end
74
- end
75
- end
76
-
77
- def pk_is_virtual?(model_class, pk_method)
78
- model_class.columns
79
- .map(&(Utilities.sequel_model?(model_class) ? :to_s : :name))
80
- .exclude?(pk_method.to_s)
81
- end
82
- end
83
- end
84
- end