-
Notifications
You must be signed in to change notification settings - Fork 9
Nested operation Filtering
Vladislav Trotsenko edited this page Sep 30, 2019
·
5 revisions
Provides JSON API filtering with all_filters
as default matcher.
HTTP request example: GET /users?filter[email-eq][email protected]&filter[name-cont]=son&match=any_filters
Before using this nested operation you should set ctx[:available_columns]
with ColumnsBuilder
:
module Api::V1::Lib::Operation
class Filtering < ApplicationOperation
step :filter_params_passed?, Output(:failure) => End(:success)
step Macro::Contract::Schema(Api::V1::Lib::Contract::FilteringPreValidation, name: :uri_query)
step Contract::Validate(name: :uri_query)
step :matcher_options # if match param empty ctx[:matcher_options] = 'all_filters'
step :set_validation_dependencies
step Macro::Contract::Schema(
Api::V1::Lib::Contract::FilteringValidation,
inject: %i[available_filtering_columns column_type_dict],
name: :uri_query
)
step Contract::Validate(name: :uri_query), id: :filtering_validation
step :filter_options
end
end
RubyGarage is a leading software development and consulting company in Eastern Europe. Our main expertise includes Ruby and Ruby on Rails, but we successfully employ other technologies to deliver the best results to our clients. Check out our portfolio for even more exciting works!