Class: Textus::Domain::Policy::Retention

Inherits:
Object
  • Object
show all
Defined in:
lib/textus/domain/policy/retention.rb

Overview

Lifetime policy for queue/quarantine leaves. Both windows are optional durations (see Domain::Duration). ‘expire_after` deletes; `archive_after` moves the leaf aside. When both are set, expire wins once its (longer) window is exceeded.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(expire_after: nil, archive_after: nil) ⇒ Retention

Returns a new instance of Retention.



11
12
13
14
# File 'lib/textus/domain/policy/retention.rb', line 11

def initialize(expire_after: nil, archive_after: nil)
  @expire_after  = Textus::Domain::Duration.seconds(expire_after)
  @archive_after = Textus::Domain::Duration.seconds(archive_after)
end

Instance Attribute Details

#archive_afterObject (readonly)

Returns the value of attribute archive_after.



9
10
11
# File 'lib/textus/domain/policy/retention.rb', line 9

def archive_after
  @archive_after
end

#expire_afterObject (readonly)

Returns the value of attribute expire_after.



9
10
11
# File 'lib/textus/domain/policy/retention.rb', line 9

def expire_after
  @expire_after
end

Instance Method Details

#action_for(age_seconds) ⇒ Object

:expire | :archive | nil for a leaf of the given age (seconds).



17
18
19
20
21
22
# File 'lib/textus/domain/policy/retention.rb', line 17

def action_for(age_seconds)
  return :expire  if @expire_after  && age_seconds > @expire_after
  return :archive if @archive_after && age_seconds > @archive_after

  nil
end