Module: Legion::Extensions::Assessor::Helpers::Dedup
Constant Summary collapse
- CACHE_PREFIX =
'fleet:active:'
Instance Method Summary collapse
- #cache_key(fingerprint) ⇒ Object
- #claim!(fingerprint:, ttl: default_ttl) ⇒ Object
- #default_ttl ⇒ Object
- #duplicate?(fingerprint:) ⇒ Boolean
- #fingerprint(source:, source_ref:, title:) ⇒ Object
- #release!(fingerprint:) ⇒ Object
Instance Method Details
#cache_key(fingerprint) ⇒ Object
34 35 36 |
# File 'lib/legion/extensions/assessor/helpers/dedup.rb', line 34 def cache_key(fingerprint) "#{CACHE_PREFIX}#{fingerprint}" end |
#claim!(fingerprint:, ttl: default_ttl) ⇒ Object
26 27 28 |
# File 'lib/legion/extensions/assessor/helpers/dedup.rb', line 26 def claim!(fingerprint:, ttl: default_ttl) cache_set_nx(cache_key(fingerprint), '1', ttl: ttl) end |
#default_ttl ⇒ Object
22 23 24 |
# File 'lib/legion/extensions/assessor/helpers/dedup.rb', line 22 def default_ttl Legion::Settings.dig(:fleet, :cache, :dedup_ttl_seconds)&.to_i || 86_400 end |
#duplicate?(fingerprint:) ⇒ Boolean
18 19 20 |
# File 'lib/legion/extensions/assessor/helpers/dedup.rb', line 18 def duplicate?(fingerprint:) !cache_get(cache_key(fingerprint)).nil? end |
#fingerprint(source:, source_ref:, title:) ⇒ Object
14 15 16 |
# File 'lib/legion/extensions/assessor/helpers/dedup.rb', line 14 def fingerprint(source:, source_ref:, title:) Digest::SHA256.hexdigest("#{source}:#{source_ref}:#{title}") end |
#release!(fingerprint:) ⇒ Object
30 31 32 |
# File 'lib/legion/extensions/assessor/helpers/dedup.rb', line 30 def release!(fingerprint:) cache_delete(cache_key(fingerprint)) end |