Class: JSONAPIonify::Api::Resource::Builders::ResourceBuilder

Inherits:
ResourceIdentiferBuilder show all
Defined in:
lib/jsonapionify/api/resource/builders/resource_builder.rb

Constant Summary

Constants included from Structure

Structure::ValidationError

Instance Attribute Summary collapse

Attributes inherited from ResourceIdentiferBuilder

#example_id, #instance

Attributes inherited from BaseBuilder

#resource

Instance Method Summary collapse

Methods included from IdentityHelper

#build_id, #build_url

Methods inherited from BaseBuilder

build

Constructor Details

#initialize(resource, context:, links: true, include_cursor: false, write: false, **opts, &block) ⇒ ResourceBuilder

Returns a new instance of ResourceBuilder.



9
10
11
12
13
14
15
16
# File 'lib/jsonapionify/api/resource/builders/resource_builder.rb', line 9

def initialize(resource, context:, links: true, include_cursor: false, write: false, **opts, &block)
  super(resource, **opts)
  @context = context
  @links = links
  @include_cursor = include_cursor
  @write = write
  @block = block
end

Instance Attribute Details

#blockObject (readonly)

Returns the value of attribute block.



7
8
9
# File 'lib/jsonapionify/api/resource/builders/resource_builder.rb', line 7

def block
  @block
end

#contextObject (readonly)

Returns the value of attribute context.



7
8
9
# File 'lib/jsonapionify/api/resource/builders/resource_builder.rb', line 7

def context
  @context
end

#include_cursorObject (readonly)

Returns the value of attribute include_cursor.



7
8
9
# File 'lib/jsonapionify/api/resource/builders/resource_builder.rb', line 7

def include_cursor
  @include_cursor
end

Returns the value of attribute links.



7
8
9
# File 'lib/jsonapionify/api/resource/builders/resource_builder.rb', line 7

def links
  @links
end

#writeObject (readonly)

Returns the value of attribute write.



7
8
9
# File 'lib/jsonapionify/api/resource/builders/resource_builder.rb', line 7

def write
  @write
end

Instance Method Details

#buildObject



18
19
20
21
22
23
24
25
26
27
28
# File 'lib/jsonapionify/api/resource/builders/resource_builder.rb', line 18

def build
  return nil unless instance
  Objects::Resource.new.tap do |resource|
    resource[:type] = resource_type
    (id = build_id) && resource[:id] = id
    (attributes = build_attributes).present? && resource[:attributes] = attributes
    (relationships = build_relationships).present? && resource[:relationships] = relationships
    (links = build_links).present? && resource[:links] = links
    (meta = build_meta).present? && resource[:meta] = meta
  end
end