Class: Phronomy::Agent::ContextCandidateResolver
- Inherits:
-
Object
- Object
- Phronomy::Agent::ContextCandidateResolver
- Defined in:
- lib/phronomy/agent/context_candidate_resolver.rb
Instance Method Summary collapse
-
#initialize(content_loader:) ⇒ ContextCandidateResolver
constructor
A new instance of ContextCandidateResolver.
- #resolve(prior_records:, working_records:, excluded_record_ids: []) ⇒ Object
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 |