hummingbird-me/kitsu-server

View on GitHub
app/services/algolia_graphql_search_service.rb

Summary

Maintainability
A
0 mins
Test Coverage
F
41%
# frozen_string_literal: true

class AlgoliaGraphqlSearchService
  def initialize(model, token)
    @model = model
    @index = model.algolia_index.safe_constantize
    @token = token
  end

  def search(query, restrict_searchable_attributes: nil, filters: nil, **opts)
    opts[:filters] = filters if filters.present?
    opts[:restrict_searchable_attributes] = format_attributes(restrict_searchable_attributes)

    @index.search(query, opts.compact)
  end

  private

  def format_attributes(attributes)
    attributes.map { |attribute| attribute.camelize(:lower) }
  end
end