module Praxis::Plugins::MapperPlugin::Controller

Public Instance Methods

build_query(base_query) click to toggle source
# File lib/praxis/plugins/mapper_plugin.rb, line 50
def build_query(base_query)
  domain_model = media_type&.domain_model
  raise "No domain model defined for #{name}. Cannot use the attribute filtering helpers without it" unless domain_model

  filters = request.params.filters if request.params.respond_to?(:filters)
  # Handle filters
  base_query = domain_model.craft_filter_query(base_query, filters: filters)

  selectors = selector_generator.selectors
  base_query = domain_model.craft_field_selection_query(base_query, selectors: selectors)
  # handle pagination and ordering if the pagination extention is included
  base_query = domain_model.craft_pagination_query(base_query, pagination: _pagination, selectors: selectors) if respond_to?(:_pagination)

  base_query
end
selector_generator() click to toggle source
# File lib/praxis/plugins/mapper_plugin.rb, line 66
def selector_generator
  return unless media_type.respond_to?(:domain_model) &&
                media_type.domain_model < Praxis::Mapper::Resource

  @selector_generator ||= \
    Praxis::Mapper::SelectorGenerator.new.add(media_type.domain_model, expanded_fields)
end