module Grape::Roar::Extensions::Relations::DSLMethods

Attributes

relations_mapped[R]

Public Instance Methods

map_base_url(&block) click to toggle source
# File lib/grape/roar/extensions/relations/dsl_methods.rb, line 27
def map_base_url(&block)
  @map_base_url ||= if block.nil?
                      proc do |opts|
                        request = Grape::Request.new(opts[:env])
                        "#{request.base_url}#{request.script_name}"
                      end
                    else
                      block
                    end
end
map_resource_path(&block) click to toggle source
# File lib/grape/roar/extensions/relations/dsl_methods.rb, line 46
def map_resource_path(&block)
  @map_resource_path ||= if block.nil?
                           proc do |_opts, object, relation_name|
                             "#{relation_name}/#{object.id}"
                           end
                         else
                           block
                         end
end
map_self_url(dsl = self) click to toggle source
# File lib/grape/roar/extensions/relations/dsl_methods.rb, line 38
def map_self_url(dsl = self)
  link :self do |opts|
    resource_path = dsl.name_for_represented(represented)
    [dsl.map_base_url.call(opts),
     "#{resource_path}/#{represented.try(:id)}"].join('/')
  end
end
name_for_represented(represented) click to toggle source
# File lib/grape/roar/extensions/relations/dsl_methods.rb, line 56
def name_for_represented(represented)
  relational_mapper.adapter.name_for_represented(represented)
end
relation(relation_kind, rname, opts = {}) click to toggle source
# File lib/grape/roar/extensions/relations/dsl_methods.rb, line 60
def relation(relation_kind, rname, opts = {})
  relational_mapper[rname] = opts.merge(relation_kind: relation_kind)
end
represent(object, _options) click to toggle source
Calls superclass method
# File lib/grape/roar/extensions/relations/dsl_methods.rb, line 64
def represent(object, _options)
  object.extend(self) unless is_a?(Class)
  map_relations(object) unless relations_mapped
  is_a?(Class) ? super : object
end

Private Instance Methods

map_relations(object) click to toggle source
# File lib/grape/roar/extensions/relations/dsl_methods.rb, line 74
def map_relations(object)
  relational_mapper.decorate(object.class)
  @relations_mapped = true
end
relational_mapper() click to toggle source
# File lib/grape/roar/extensions/relations/dsl_methods.rb, line 79
def relational_mapper
  @relational_mapper ||= Mapper.new(self)
end