lib/jsonapi_mapper.rb in jsonapi_mapper-0.1.0 vs lib/jsonapi_mapper.rb in jsonapi_mapper-0.1.1

- old
+ new

@@ -26,26 +26,26 @@ self.unscoped = unscoped.map(&:to_sym) self.resources = {} setup_types(rules) - main = if data = document[:data] + main = if data = self.document[:data] if data.is_a?(Array) data.map{|r| build_resource(r) }.compact else - build_resource(data) + [ build_resource(data) ].compact end end - rest = if included = document[:included] + rest = if included = self.document[:included] included.map{|r| build_resource(r) }.compact end resources.each{|_,r| assign_relationships(r) } - self.data = main.is_a?(Array) ? main.map(&:object) : main.try(:object) - self.included = rest.try(:map, &:object) + self.data = main.try(:map, &:object) || [] + self.included = rest.try(:map, &:object) || [] end def setup_types(rules) self.types = {} rules.each do |type_name, ruleset| @@ -152,15 +152,32 @@ def renamed(type, attr) renames.fetch(:attributes, {}).fetch(type, {}).fetch(attr, attr) end + def all + (data + included) + end + def save_all - data.is_a?(Array) ? data.each(&:save) : data.try(:save) - included.try(:each, &:save) + return false unless all.all?(&:valid?) + all.each(&:save) + true end def collection? - data.is_a?(Array) + data.size > 1 + end + + def single? + !collection? + end + + def map_data(cls, &blk) + data.select{|o| o.is_a?(cls)}.map(&blk) + end + + def map_all(cls, &blk) + all.select{|o| o.is_a?(cls)}.map(&blk) end end end