class SqlcachedClient::Resultset
Attributes
count[R]
entities[R]
entity_class[R]
Public Class Methods
build_associations(resultsets, server, session, max_depth, current_depth = 0)
click to toggle source
# File lib/sqlcached_client/resultset.rb, line 31 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( 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
new(entity_class, data, attachments = nil)
click to toggle source
@param entity_class
[Class] @param data [Array] or [ServerResponse]
# File lib/sqlcached_client/resultset.rb, line 9 def initialize(entity_class, data, attachments = nil) # set entity class @entity_class = entity_class # build the entities ents = data.respond_to?(:entities) ? data.entities : data @entities = (ents || []).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 # record collection size @count = @entities.size # set up attachments set_entities_attachments(@entities, attachments, data.try(:attachments)) end
Public Instance Methods
[](i)
click to toggle source
# File lib/sqlcached_client/resultset.rb, line 57 def [](i) entities[i] end
_fill_associations(data)
click to toggle source
# File lib/sqlcached_client/resultset.rb, line 67 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()
click to toggle source
# File lib/sqlcached_client/resultset.rb, line 73 def _get_entities_association_requests entities.map do |entity| entity.get_association_requests end end
build_associations(max_depth = false)
click to toggle source
# File lib/sqlcached_client/resultset.rb, line 61 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)
click to toggle source
# File lib/sqlcached_client/resultset.rb, line 53 def each(&block) block ? entities.each(&block) : entities.each end
set_entities_attachments(entities, attachments, contents)
click to toggle source
# File lib/sqlcached_client/resultset.rb, line 79 def set_entities_attachments(entities, attachments, contents) if attachments.is_a?(Array) && contents.is_a?(Array) entities.each_with_index do |entity, i| attachment = attachments[i] entity.send("#{attachment.name}=", attachment) attachment.content = contents[i] if attachment.respond_to?(:content=) end end end
store_attachments(attachment_name, server, session)
click to toggle source
# File lib/sqlcached_client/resultset.rb, line 89 def store_attachments(attachment_name, server, session) entities_with_a = entities.select do |entity| !entity.send(attachment_name).nil? end server.store_attachments( session, server.build_store_attachments_request( entities_with_a.map { |e| e.attributes }, entities_with_a.map { |e| e.send(attachment_name).to_save_format } ) ) end