Method: JSONAPI::Processor#find

Defined in:
lib/jsonapi/processor.rb

#findObject



66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
# File 'lib/jsonapi/processor.rb', line 66

def find
  filters = params[:filters]
  include_directives = params[:include_directives]
  sort_criteria = params.fetch(:sort_criteria, [])
  paginator = params[:paginator]
  fields = params[:fields]

  verified_filters = resource_klass.verify_filters(filters, context)
  resource_records = resource_klass.find(verified_filters,
                                         context: context,
                                         include_directives: include_directives,
                                         sort_criteria: sort_criteria,
                                         paginator: paginator,
                                         fields: fields)

  page_options = {}
  if (JSONAPI.configuration.top_level_meta_include_record_count ||
    (paginator && paginator.class.requires_record_count))
    page_options[:record_count] = resource_klass.find_count(verified_filters,
                                                            context: context,
                                                            include_directives: include_directives)
  end

  if (JSONAPI.configuration.top_level_meta_include_page_count && page_options[:record_count])
    page_options[:page_count] = paginator.calculate_page_count(page_options[:record_count])
  end

  if JSONAPI.configuration.top_level_links_include_pagination && paginator
    page_options[:pagination_params] = paginator.links_page_params(page_options)
  end

  return JSONAPI::ResourcesOperationResult.new(:ok, resource_records, page_options)
end