Module: Legion::Extensions::Assessor::Helpers::Dedup

Extended by:
Dedup
Included in:
Dedup
Defined in:
lib/legion/extensions/assessor/helpers/dedup.rb

Constant Summary collapse

CACHE_PREFIX =
'fleet:active:'

Instance Method Summary collapse

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_ttlObject



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

Returns:

  • (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