Class: SqlcachedClient::Resultset
- Inherits:
-
Object
- Object
- SqlcachedClient::Resultset
- Includes:
- Enumerable
- Defined in:
- lib/sqlcached_client/resultset.rb
Instance Attribute Summary collapse
-
#count ⇒ Object
readonly
Returns the value of attribute count.
-
#entities ⇒ Object
readonly
Returns the value of attribute entities.
-
#entity_class ⇒ Object
readonly
Returns the value of attribute entity_class.
Class Method Summary collapse
Instance Method Summary collapse
- #[](i) ⇒ Object
- #_fill_associations(data) ⇒ Object
- #_get_entities_association_requests ⇒ Object
- #build_associations(max_depth = false) ⇒ Object
-
#each(&block) ⇒ Object
class << self.
-
#initialize(entity_class, entities) ⇒ Resultset
constructor
A new instance of Resultset.
Constructor Details
#initialize(entity_class, entities) ⇒ Resultset
Returns a new instance of Resultset.
9 10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/sqlcached_client/resultset.rb', line 9 def initialize(entity_class, entities) @entity_class = entity_class @entities = (entities || []).map do |item| if item.is_a?(Hash) entity_class.new(item) elsif item.is_a?(entity_class) item else raise "Cannot handle: #{item.inspect}" end end @count = @entities.size end |
Instance Attribute Details
#count ⇒ Object (readonly)
Returns the value of attribute count.
5 6 7 |
# File 'lib/sqlcached_client/resultset.rb', line 5 def count @count end |
#entities ⇒ Object (readonly)
Returns the value of attribute entities.
5 6 7 |
# File 'lib/sqlcached_client/resultset.rb', line 5 def entities @entities end |
#entity_class ⇒ Object (readonly)
Returns the value of attribute entity_class.
5 6 7 |
# File 'lib/sqlcached_client/resultset.rb', line 5 def entity_class @entity_class end |
Class Method Details
.build_associations(resultsets, server, session, max_depth, current_depth = 0) ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/sqlcached_client/resultset.rb', line 25 def build_associations(resultsets, server, session, max_depth, current_depth = 0) if resultsets.any? batch = resultsets.map { |r| r._get_entities_association_requests } if batch.flatten.any? next_batch = server.run_query( session, server.build_request_body( batch ) ).map.with_index do |resultset_data, i| resultsets[i]._fill_associations(resultset_data) end.flatten! if !max_depth || current_depth < max_depth build_associations(next_batch, server, session, max_depth, current_depth + 1) end end end end |
Instance Method Details
#[](i) ⇒ Object
51 52 53 |
# File 'lib/sqlcached_client/resultset.rb', line 51 def [](i) entities[i] end |
#_fill_associations(data) ⇒ Object
61 62 63 64 65 |
# File 'lib/sqlcached_client/resultset.rb', line 61 def _fill_associations(data) data.map.with_index do |entity_assoc_data, i| entities[i].set_associations_data(entity_assoc_data) end end |
#_get_entities_association_requests ⇒ Object
67 68 69 70 71 |
# File 'lib/sqlcached_client/resultset.rb', line 67 def _get_entities_association_requests entities.map do |entity| entity.get_association_requests end end |
#build_associations(max_depth = false) ⇒ Object
55 56 57 58 59 |
# File 'lib/sqlcached_client/resultset.rb', line 55 def build_associations(max_depth = false) entity_class.server_session do |server, session| self.class.build_associations([self], server, session, max_depth) end end |
#each(&block) ⇒ Object
class << self
47 48 49 |
# File 'lib/sqlcached_client/resultset.rb', line 47 def each(&block) block ? entities.each(&block) : entities.each end |