Class: Quiver::Mapper::SimpleQueryBuilder
- Inherits:
-
Object
- Object
- Quiver::Mapper::SimpleQueryBuilder
- Defined in:
- lib/quiver/mapper/simple_query_builder.rb
Instance Method Summary collapse
- #filter(params) ⇒ Object
-
#initialize(mapper) ⇒ SimpleQueryBuilder
constructor
A new instance of SimpleQueryBuilder.
- #paginate(params) ⇒ Object
- #sort(params) ⇒ Object
- #to_result ⇒ Object
Constructor Details
#initialize(mapper) ⇒ SimpleQueryBuilder
Returns a new instance of SimpleQueryBuilder.
4 5 6 7 8 9 10 |
# File 'lib/quiver/mapper/simple_query_builder.rb', line 4 def initialize(mapper) self.mapper = mapper self._filter = {} self._sort = {} self._paginate = {} end |
Instance Method Details
#filter(params) ⇒ Object
34 35 36 37 |
# File 'lib/quiver/mapper/simple_query_builder.rb', line 34 def filter(params) self._filter = params.to_h self end |
#paginate(params) ⇒ Object
52 53 54 55 |
# File 'lib/quiver/mapper/simple_query_builder.rb', line 52 def paginate(params) self._paginate = params.to_h.slice('limit', 'offset') self end |
#sort(params) ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/quiver/mapper/simple_query_builder.rb', line 39 def sort(params) params ||= '' self._sort = params.split(',').map do |k| asc = k[0] != '-' k = k[1..-1] if !asc [k, asc] end.reject do |(k, _)| !allowed_sorts.include?(k.to_sym) end self end |
#to_result ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/quiver/mapper/simple_query_builder.rb', line 12 def to_result filter_errors = _filter.reduce(Quiver::ErrorCollection.new) do |errors, (k, v)| if v errors + v.errors.each_with_object(Quiver::ErrorCollection.new) do |error, collection| collection << Quiver::Action::FilterError.new("#{k}: #{error.detail}") end else errors end end if filter_errors.any? return Quiver::Mapper::MapperResult.new([], filter_errors) end mapper.send(:query, filter: mapper.class.send(:default_filter).merge(_filter), sort: _sort, page: _paginate ) end |