lib/restpack_serializer/serializable/paging.rb in restpack_serializer-0.4.9 vs lib/restpack_serializer/serializable/paging.rb in restpack_serializer-0.4.10

- old
+ new

@@ -10,28 +10,25 @@ page = options.scope_with_filters.paginate( page: options.page, per_page: options.page_size ) - result = { - self.key => serialize_page(page), - :meta => { - self.key => serialize_meta(page, options) - } - } + result = RestPack::Serializer::Result.new + result.resources[self.key] = serialize_page(page) + result.meta[self.key] = serialize_meta(page, options) if options.include_links - result[:links] = self.links + result.links = self.links Array(RestPack::Serializer::Factory.create(*options.include)).each do |serializer| - result[:links].merge! serializer.class.links + result.links.merge! serializer.class.links end end side_load_data = side_loads(page, options) - result[:meta].merge!(side_load_data[:meta] || {}) - result = result.merge side_load_data.except(:meta) - inject_to_many_links result + result.meta.merge!(side_load_data[:meta] || {}) + result.resources.merge! side_load_data.except(:meta) + result.serialize end private def serialize_page(page) @@ -66,35 +63,8 @@ params << "include=#{options.include.join(',')}" if options.include.any? params << options.filters_as_url_params if options.filters.any? url += '?' + params.join('&') if params.any? url - end - - def inject_to_many_links(result) #TODO: GJ: extract this into a result class and refactor - keys = result.keys - [:meta, :links] - - keys.each do |key| - result[key].each do |item| - if item[:links] - item[:links].each do |link_key, link_value| - unless link_value.is_a? Array - plural_linked_key = "#{link_key}s".to_sym - - if result[plural_linked_key] - linked_resource = result[plural_linked_key].find { |i| i[:id] == link_value } - if linked_resource - linked_resource[:links] ||= {} - linked_resource[:links][key] ||= [] - linked_resource[:links][key] << item[:id] - end - end - end - end - end - end - end - - result end end end