Class: Clickwrap::Retention::Planner::HoldIndex

Inherits:
Object
  • Object
show all
Defined in:
lib/clickwrap/retention/planner.rb

Overview

Every legal hold currently in effect, loaded once.

Holds are few and disposition runs touch many rows, so the alternative — three existence queries per candidate — would make the safety check the expensive part of the job, and an expensive safety check is one someone eventually turns off.

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(event_ids:, actor_references:, policy_keys:) ⇒ HoldIndex

Returns a new instance of HoldIndex.



494
495
496
497
498
# File 'lib/clickwrap/retention/planner.rb', line 494

def initialize(event_ids:, actor_references:, policy_keys:)
  @event_ids = event_ids
  @actor_references = actor_references
  @policy_keys = policy_keys
end

Class Method Details

.loadObject



484
485
486
487
488
489
490
491
492
# File 'lib/clickwrap/retention/planner.rb', line 484

def self.load
  holds = LegalHold.in_effect.to_a

  new(
    event_ids: holds.select { |hold| hold.hold_scope == "event" }.map(&:event_id).compact.to_set,
    actor_references: holds.select { |hold| hold.hold_scope == "actor" }.map(&:actor_reference).compact.to_set,
    policy_keys: holds.select { |hold| hold.hold_scope == "policy" }.map(&:policy_key).compact.to_set
  )
end

Instance Method Details

#held?(event) ⇒ Boolean

Returns:

  • (Boolean)


500
501
502
503
504
505
506
507
# File 'lib/clickwrap/retention/planner.rb', line 500

def held?(event)
  return false if event.nil?

  event.on_legal_hold? ||
    @event_ids.include?(event.id) ||
    @actor_references.include?(event.actor_reference) ||
    @policy_keys.include?(event.policy_key)
end