class SimpleJsonapi::Node::Included
Public Class Methods
new(**options)
click to toggle source
@param options see {Node::Base#initialize} for additional parameters
Calls superclass method
SimpleJsonapi::Node::Base::new
# File lib/simple_jsonapi/node/included.rb, line 4 def initialize(**options) super @resource_nodes = {} end
Public Instance Methods
append_included_resource(resource_node)
click to toggle source
@param resource_node [Node::Resource::Full] @return [Node::Resource::Full]
# File lib/simple_jsonapi/node/included.rb, line 17 def append_included_resource(resource_node) if included_resource?(resource_node) raise DuplicateResourceError.new(resource_node.resource_type, resource_node.resource_id) end @resource_nodes[hash_key(resource_node)] = resource_node end
as_jsonapi()
click to toggle source
@return [Hash{Symbol => Hash}]
# File lib/simple_jsonapi/node/included.rb, line 26 def as_jsonapi if @resource_nodes.any? resources_json = @resource_nodes .each_value .sort_by { |node| [node.resource_type, node.resource_id] } .map(&:as_jsonapi) { included: resources_json } else {} end end
included_resource?(resource_node)
click to toggle source
@param resource_node [Node::Resource::Base]
# File lib/simple_jsonapi/node/included.rb, line 11 def included_resource?(resource_node) @resource_nodes.key?(hash_key(resource_node)) end
Private Instance Methods
hash_key(resource_node)
click to toggle source
# File lib/simple_jsonapi/node/included.rb, line 41 def hash_key(resource_node) [resource_node.resource_type, resource_node.resource_id] end