search-engine-for-typesense 30.1.8.8 → 30.1.8.10

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3c4dd0df9e18af6be9ce015ca612f5c76bf45bd91c1c1401a88194f9fe3c9bb1
4
- data.tar.gz: fba31980bd2ec4bb795772a3a33fb0dea9e643847aa575cb992c0d4eaf6b828e
3
+ metadata.gz: 384ef1b163431fc5ed44e94b039ed6c63475d03eac7beb021895f3707c2ed68b
4
+ data.tar.gz: 8a138c55d4de91d43d4d99ccff25c3b0be6c514660b5afd8d94d04384e7a815a
5
5
  SHA512:
6
- metadata.gz: 86d4bae298d276f874ff49912fbbc000e1666abf05457ef7597c2d460ebb7b98d4c6f6ad0c74cd5132760a1632f8715bc72865ed516a76e5f8ae52b749072bf5
7
- data.tar.gz: 1d5ccb1b6095c811f21c5b9ec61c434f42b2acec232b35bdaa8809b5251c0b618dd836438617be95bf31ac3c008217d5293dd94efc941ce9a1e52aa478c30b18
6
+ metadata.gz: af0f76bc2e13c1a14685a5cd9f50efa6a1493c57a697c14534a053668549393906f2ad22b87e2efe27ccf7c1b45cf7b8d0bf2d7298280bddad53048239618ce6
7
+ data.tar.gz: abafcd224584bb4ac206de5e95959c3a22102560f97bd6d3ea6122045377e2b0e3c397a699a813ec83d428df1d80003b8eb490581af98e01b8090067f78e08cb
@@ -14,6 +14,7 @@ module SearchEngine
14
14
  # @return [Hash, nil]
15
15
  def perform(limit: nil, target_key: nil)
16
16
  return nil unless SearchEngine.config.postgres_outbox.enabled
17
+ return enqueue_target_drains(limit: limit) if target_key.nil? && delivery_targets.any?
17
18
 
18
19
  effective_limit = limit || SearchEngine.config.postgres_outbox.batch_size
19
20
  drainer = drainer_for(target_key)
@@ -25,6 +26,11 @@ module SearchEngine
25
26
 
26
27
  private
27
28
 
29
+ def enqueue_target_drains(limit:)
30
+ SearchEngine::PostgresOutbox::DrainEnqueuer.enqueue_all(limit: limit)
31
+ { claimed: 0, processed: 0, enqueued_targets: delivery_targets.size }
32
+ end
33
+
28
34
  def drainer_for(target_key)
29
35
  return SearchEngine::PostgresOutbox::Drainer.new if target_key.nil?
30
36
 
@@ -93,6 +93,7 @@ module SearchEngine
93
93
  next unless entry[:document]
94
94
 
95
95
  obj = hydrate(entry[:document])
96
+ attach_curation!(obj, entry)
96
97
  attach_highlighting!(obj, entry)
97
98
  attach_geo_distance!(obj, entry)
98
99
  hydrated << obj
@@ -295,6 +296,15 @@ module SearchEngine
295
296
  end
296
297
  end
297
298
 
299
+ # Per-hit curation mixin: added onto hydrated objects when Typesense
300
+ # returns curated metadata for the hit.
301
+ module HitCuration
302
+ # @return [Boolean] whether Typesense marked this search hit as curated
303
+ def curated_hit?
304
+ instance_variable_get(:@__se_curated_hit__) == true
305
+ end
306
+ end
307
+
298
308
  def parse_facets
299
309
  @__facets_parsed_memo || {}.freeze
300
310
  end
@@ -401,6 +411,7 @@ module SearchEngine
401
411
 
402
412
  obj = hydrate(doc)
403
413
  sym_sub = symbolize_hit(sub)
414
+ attach_curation!(obj, sym_sub)
404
415
  attach_highlighting!(obj, sym_sub)
405
416
  attach_geo_distance!(obj, sym_sub)
406
417
  hydrated << obj
@@ -546,6 +557,18 @@ module SearchEngine
546
557
  obj
547
558
  end
548
559
 
560
+ def attach_curation!(obj, hit_entry)
561
+ return obj unless hit_entry.key?(:curated)
562
+
563
+ value = hit_entry[:curated]
564
+ curated = value == true || value.to_s == 'true'
565
+ obj.extend(HitCuration) unless obj.singleton_class.included_modules.include?(HitCuration)
566
+ obj.instance_variable_set(:@__se_curated_hit__, curated)
567
+ obj
568
+ rescue StandardError
569
+ obj
570
+ end
571
+
549
572
  def attach_geo_distance!(obj, hit_entry)
550
573
  raw_geo = hit_entry[:geo_distance_meters]
551
574
  return obj unless raw_geo.is_a?(Hash) && !raw_geo.empty?
@@ -3,5 +3,5 @@
3
3
  module SearchEngine
4
4
  # Current gem version.
5
5
  # @return [String]
6
- VERSION = '30.1.8.8'
6
+ VERSION = '30.1.8.10'
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: search-engine-for-typesense
3
3
  version: !ruby/object:Gem::Version
4
- version: 30.1.8.8
4
+ version: 30.1.8.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nikita Shkoda