Class: FactDb::QueryResult
- Inherits:
-
Object
- Object
- FactDb::QueryResult
- Defined in:
- lib/fact_db/query_result.rb
Overview
Holds the results of a query and provides a unified interface for transformers to work with.
Instance Attribute Summary collapse
-
#entities ⇒ Object
readonly
Returns the value of attribute entities.
-
#facts ⇒ Object
readonly
Returns the value of attribute facts.
-
#metadata ⇒ Object
readonly
Returns the value of attribute metadata.
-
#query ⇒ Object
readonly
Returns the value of attribute query.
-
#raw_facts ⇒ Object
readonly
Returns the value of attribute raw_facts.
Instance Method Summary collapse
-
#[](key) ⇒ Object
Hash-like access for backward compatibility.
-
#add_facts(facts) ⇒ void
Add facts to the result set.
-
#each_entity {|Hash| ... } ⇒ void
Iterate over all entities.
-
#each_fact {|Hash| ... } ⇒ void
Iterate over all facts.
-
#empty? ⇒ Boolean
Check if results are empty.
-
#entity_count ⇒ Integer
Get count of entities.
-
#fact_count ⇒ Integer
Get count of facts.
-
#initialize(query:) ⇒ QueryResult
constructor
A new instance of QueryResult.
-
#items ⇒ Array<Hash>
Get all items for comparison operations.
-
#resolve_entities(entity_service = nil) ⇒ void
Resolve and cache entities mentioned in facts.
-
#to_h ⇒ Hash
Convert to hash for JSON serialization.
Constructor Details
#initialize(query:) ⇒ QueryResult
Returns a new instance of QueryResult.
16 17 18 19 20 21 22 23 24 25 |
# File 'lib/fact_db/query_result.rb', line 16 def initialize(query:) @query = query @facts = [] @raw_facts = [] @entities = {} @metadata = { retrieved_at: Time.now, stores_queried: [:fact_db] } end |
Instance Attribute Details
#entities ⇒ Object (readonly)
Returns the value of attribute entities.
14 15 16 |
# File 'lib/fact_db/query_result.rb', line 14 def entities @entities end |
#facts ⇒ Object (readonly)
Returns the value of attribute facts.
14 15 16 |
# File 'lib/fact_db/query_result.rb', line 14 def facts @facts end |
#metadata ⇒ Object (readonly)
Returns the value of attribute metadata.
14 15 16 |
# File 'lib/fact_db/query_result.rb', line 14 def @metadata end |
#query ⇒ Object (readonly)
Returns the value of attribute query.
14 15 16 |
# File 'lib/fact_db/query_result.rb', line 14 def query @query end |
#raw_facts ⇒ Object (readonly)
Returns the value of attribute raw_facts.
14 15 16 |
# File 'lib/fact_db/query_result.rb', line 14 def raw_facts @raw_facts end |
Instance Method Details
#[](key) ⇒ Object
Hash-like access for backward compatibility.
84 85 86 |
# File 'lib/fact_db/query_result.rb', line 84 def [](key) to_h[key.to_sym] end |
#add_facts(facts) ⇒ void
This method returns an undefined value.
Add facts to the result set.
31 32 33 34 35 36 |
# File 'lib/fact_db/query_result.rb', line 31 def add_facts(facts) return if facts.nil? || facts.empty? @raw_facts += Array(facts) @facts += normalize_facts(facts) end |
#each_entity {|Hash| ... } ⇒ void
This method returns an undefined value.
Iterate over all entities.
100 101 102 |
# File 'lib/fact_db/query_result.rb', line 100 def each_entity(&block) @entities.values.each(&block) end |
#each_fact {|Hash| ... } ⇒ void
This method returns an undefined value.
Iterate over all facts.
92 93 94 |
# File 'lib/fact_db/query_result.rb', line 92 def each_fact(&block) @facts.each(&block) end |
#empty? ⇒ Boolean
Check if results are empty.
57 58 59 |
# File 'lib/fact_db/query_result.rb', line 57 def empty? @facts.empty? end |
#entity_count ⇒ Integer
Get count of entities.
114 115 116 |
# File 'lib/fact_db/query_result.rb', line 114 def entity_count @entities.size end |
#fact_count ⇒ Integer
Get count of facts.
107 108 109 |
# File 'lib/fact_db/query_result.rb', line 107 def fact_count @facts.size end |
#items ⇒ Array<Hash>
Get all items for comparison operations.
64 65 66 |
# File 'lib/fact_db/query_result.rb', line 64 def items @facts.map { |f| normalize_for_comparison(f) } end |
#resolve_entities(entity_service = nil) ⇒ void
This method returns an undefined value.
Resolve and cache entities mentioned in facts.
42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/fact_db/query_result.rb', line 42 def resolve_entities(entity_service = nil) entity_ids = collect_entity_ids return if entity_ids.empty? entity_ids.each do |id| next if @entities[id] entity = resolve_entity(entity_service, id) @entities[id] = normalize_entity(entity) if entity end end |
#to_h ⇒ Hash
Convert to hash for JSON serialization.
71 72 73 74 75 76 77 78 |
# File 'lib/fact_db/query_result.rb', line 71 def to_h { query: @query, facts: @facts, entities: @entities, metadata: @metadata } end |