Class: Phronomy::Agent::ContextCandidateResolver

Inherits:
Object
  • Object
show all
Defined in:
lib/phronomy/agent/context_candidate_resolver.rb

Instance Method Summary collapse

Constructor Details

#initialize(content_loader:) ⇒ ContextCandidateResolver

Returns a new instance of ContextCandidateResolver.



6
7
8
# File 'lib/phronomy/agent/context_candidate_resolver.rb', line 6

def initialize(content_loader:)
  @content_loader = content_loader
end

Instance Method Details

#resolve(prior_records:, working_records:, excluded_record_ids: []) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/phronomy/agent/context_candidate_resolver.rb', line 10

def resolve(prior_records:, working_records:, excluded_record_ids: [])
  excluded = Array(excluded_record_ids).compact.map(&:to_s).to_h { |id| [id, true] }
  prior = eligible(prior_records, excluded)
  working = eligible(working_records, excluded)
  next_sequence = prior.map(&:sequence).compact.max.to_i

  candidates = []
  prior.each do |record|
    candidates << candidate_for(record, source_kind: :journal, sequence: record.sequence)
  end
  working.each do |record|
    sequence = record.sequence || (next_sequence += 1)
    candidates << candidate_for(record, source_kind: :working, sequence: sequence)
  end
  candidates.sort_by { |candidate| [candidate.sequence || 0, candidate.candidate_id] }.freeze
end