app/api/search_endpoints.rb

Summary

Maintainability
A
0 mins
Test Coverage
require 'api_helper'
require 'corefines'
require 'search_results_representer'
require 'models/multi_search_index'

module API
  class SearchEndpoints < Grape::API

    using Corefines::Hash::only
    helpers ApiHelper

    before { authenticate! }

    resource :search do
      params do
        requires :q, type: String, desc: 'Search query'
        use :pagination
      end

      get do
        results = MultiSearchIndex.search(params.q, **params_h.only(:limit, :offset))
        SearchResultsRepresenter.for_collection
          .new(results).to_hash('meta' => results.page_meta)
      end
    end
  end
end