Class: Airview::Query

Inherits:
Object
  • Object
show all
Defined in:
lib/airview/query.rb

Constant Summary collapse

DEFAULT_LIMIT =
50
MAX_LIMIT =
200

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(resource, params = {}) ⇒ Query

Returns a new instance of Query.



10
11
12
13
# File 'lib/airview/query.rb', line 10

def initialize(resource, params = {})
  @resource = resource
  @params = params || {}
end

Instance Attribute Details

#paramsObject (readonly)

Returns the value of attribute params.



8
9
10
# File 'lib/airview/query.rb', line 8

def params
  @params
end

#resourceObject (readonly)

Returns the value of attribute resource.



8
9
10
# File 'lib/airview/query.rb', line 8

def resource
  @resource
end

Instance Method Details

#countObject



23
24
25
# File 'lib/airview/query.rb', line 23

def count
  apply_filters(apply_search(resource.model_class.all)).count
end

#limitObject



27
28
29
30
# File 'lib/airview/query.rb', line 27

def limit
  value = params[:limit].presence || DEFAULT_LIMIT
  [[value.to_i, 1].max, MAX_LIMIT].min
end

#offsetObject



36
37
38
# File 'lib/airview/query.rb', line 36

def offset
  (page - 1) * limit
end

#pageObject



32
33
34
# File 'lib/airview/query.rb', line 32

def page
  [params[:page].to_i, 1].max
end

#recordsObject



15
16
17
18
19
20
21
# File 'lib/airview/query.rb', line 15

def records
  scope = resource.model_class.all
  scope = apply_search(scope)
  scope = apply_filters(scope)
  scope = apply_sort(scope)
  scope.limit(limit).offset(offset)
end