Graphql::Searchkick
Integrate Searchkick with GraphQL Connections easily.
Note
The current version of the gem only works with GraphQL::Pagination::Connection . If you need support for the older GraphQL::Relay::BaseConnection version use v0.1.0.
Considerations & Limits
- This will run every usage of this field through Searchkick.
- The current implementation doesn't support suggestions or aggregations.
If you find any of these undesirable, open an issue or PR.
Installation
Add this line to your application's Gemfile:
gem 'graphql-searchkick'And then execute:
$ bundle install
Or install it yourself as:
$ gem install graphql-searchkick
Setup
Include the field integration into your field class.
class BaseField < GraphQL::Schema::Field
include GraphQL::Searchkick::FieldIntegration
endAdd the connection to your schema.
class Schema < GraphQL::Schema
use GraphQL::Pagination::Connections
connections.add(GraphQL::Searchkick::LazySearch, GraphQL::Searchkick::ResultConnection)
endUsage
Add search: ModelClass to any connection field that you want to allow querying.
field :projects, Types::ProjectType.connection_type, null: false, search: ProjectYour field will now have an optional query argument of type String as part of it's definition.
If query is nil? or empty? the default value '*' is used.
Search Arguments
If you would like to pass options to the search method, override the resolver for the field that returns a Hash.
def projects(arguments)
{
where: {
active: arguments[:active],
coordinates: {
near: arguments[:coords],
within: '1km'
}
}
}
endThis will translate into:
Project.search('*', where: { active: true, coordinates: { near: { lat: 40.815110, lon: -96.709523 }, within: '1km' } })Development
After checking out the repo, run bin/setup to install dependencies. Then run docker-compose up to start Elasticsearch. Finally, run bundle exec appraisal rake spec to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.
To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.
Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/CompanyCam/graphql-searchkick.
License
The gem is available as open source under the terms of the MIT License.