class WCC::API::BaseQuery
Constants
- MAX_LIMIT
Attributes
filter[RW]
limit[R]
offset[R]
paging[R]
scope[R]
Public Class Methods
new(params, scope: default_scope, paging: true)
click to toggle source
# File lib/wcc/api/base_query.rb, line 26 def initialize(params, scope: default_scope, paging: true) @scope = scope @paging = paging set_defaults permitted_keys.each do |key| public_send("#{key}=", params[key]) if params.key?(key) end end
Public Instance Methods
call(scope = self.scope)
click to toggle source
# File lib/wcc/api/base_query.rb, line 35 def call(scope = self.scope) scope = scope.dup scope = paged(scope) scope = ordered(scope) scope = filtered(scope) scope end
default()
click to toggle source
# File lib/wcc/api/base_query.rb, line 10 def default { limit: 20, offset: 0, filter: {} } end
default_scope()
click to toggle source
# File lib/wcc/api/base_query.rb, line 22 def default_scope raise NotImplementedError end
filtered(scope = self.scope)
click to toggle source
# File lib/wcc/api/base_query.rb, line 57 def filtered(scope = self.scope) scope end
limit=(new_limit)
click to toggle source
# File lib/wcc/api/base_query.rb, line 67 def limit=(new_limit) new_limit = new_limit.to_i @limit = new_limit > MAX_LIMIT ? MAX_LIMIT : new_limit end
offset=(new_offset)
click to toggle source
# File lib/wcc/api/base_query.rb, line 72 def offset=(new_offset) @offset = new_offset.to_i end
ordered(scope = self.scope)
click to toggle source
# File lib/wcc/api/base_query.rb, line 53 def ordered(scope = self.scope) scope end
paged(scope = self.scope)
click to toggle source
# File lib/wcc/api/base_query.rb, line 43 def paged(scope = self.scope) if paging scope .limit(limit) .offset(offset) else scope end end
permitted_keys()
click to toggle source
# File lib/wcc/api/base_query.rb, line 18 def permitted_keys %i[limit offset filter] end
set_defaults()
click to toggle source
# File lib/wcc/api/base_query.rb, line 61 def set_defaults default.each do |key, value| public_send("#{key}=", value) end end
size()
click to toggle source
# File lib/wcc/api/base_query.rb, line 80 def size if total - offset < limit total - offset else limit end end
total()
click to toggle source
# File lib/wcc/api/base_query.rb, line 76 def total @total ||= filtered.count end