Class: Textus::Store::Freshness::TtlEvaluator

Inherits:
Object
  • Object
show all
Defined in:
lib/textus/store/freshness/ttl_evaluator.rb

Instance Method Summary collapse

Constructor Details

#initialize(manifest:, file_stat:, clock:) ⇒ TtlEvaluator

Returns a new instance of TtlEvaluator.



7
8
9
10
11
# File 'lib/textus/store/freshness/ttl_evaluator.rb', line 7

def initialize(manifest:, file_stat:, clock:)
  @manifest  = manifest
  @file_stat = file_stat
  @clock     = clock
end

Instance Method Details

#stale_keys(prefix: nil, lane: nil) ⇒ Object



21
22
23
# File 'lib/textus/store/freshness/ttl_evaluator.rb', line 21

def stale_keys(prefix: nil, lane: nil)
  @manifest.data.entries.select { |m| due?(m, prefix: prefix, lane: lane) }.map(&:key)
end

#verdict(mentry) ⇒ Object



13
14
15
16
17
18
19
# File 'lib/textus/store/freshness/ttl_evaluator.rb', line 13

def verdict(mentry)
  ttl = @manifest.rules.for(mentry.key).retention&.ttl_seconds
  return fresh if ttl.nil?

  stale = age_stale?(file_basis(mentry), ttl)
  Verdict.build(stale: stale, reason: stale ? "ttl exceeded" : nil, fetching: false)
end