Module: Jei::Builder::RelationshipNodeBuilder

Defined in:
lib/jei/builders/relationship_node_builder.rb

Class Method Summary collapse

Class Method Details

.build(relationship, serializer) ⇒ RelationshipNode

Parameters:

Returns:



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/jei/builders/relationship_node_builder.rb', line 7

def self.build(relationship, serializer)
  node = RelationshipNode.new(relationship)

  if !relationship.options[:no_data]
    node.children <<
      case relationship
      when BelongsToRelationship
        build_data_node(relationship, serializer)
      when HasManyRelationship
        build_collection_data_node(relationship, serializer)
      else
        raise ArgumentError, 'invalid relationship type'
      end
  end

  if relationship.options[:links]
    node.children << build_links_node(relationship, serializer)
  end

  node
end

.build_collection_data_node(relationship, serializer) ⇒ CollectionDataNode

Parameters:

Returns:



45
46
47
48
49
50
51
52
53
54
55
# File 'lib/jei/builders/relationship_node_builder.rb', line 45

def self.build_collection_data_node(relationship, serializer)
  node = CollectionDataNode.new
  resources = relationship.evaluate(serializer)

  resources.each do |resource|
    serializer = Serializer.factory(resource)
    node.children << ResourceIdentifierNode.new(serializer)
  end

  node
end

.build_data_node(relationship, serializer) ⇒ DataNode

Parameters:

Returns:



32
33
34
35
36
37
38
39
40
# File 'lib/jei/builders/relationship_node_builder.rb', line 32

def self.build_data_node(relationship, serializer)
  node = DataNode.new
  resource = relationship.evaluate(serializer)

  serializer = Serializer.factory(resource)
  node.children << ResourceIdentifierNode.new(serializer)

  node
end

Parameters:

Returns:



60
61
62
63
# File 'lib/jei/builders/relationship_node_builder.rb', line 60

def self.build_links_node(relationship, serializer)
  links = relationship.links(serializer)
  LinksNodeBuilder.build(links)
end