Module: Chronicle::Filterable

Extended by:
ActiveSupport::Concern
Included in:
ApiLogs::Metrics, ResourceController
Defined in:
app/controllers/concerns/chronicle/filterable.rb

Instance Method Summary collapse

Instance Method Details

#build_query(model, filter_definition: {}, filters: {}, group_by: nil, date_column: :created_at) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'app/controllers/concerns/chronicle/filterable.rb', line 5

def build_query(model, filter_definition: {}, filters: {}, group_by: nil, date_column: :created_at)
  scope = model.all
  params_to_hash = filters.present? ? Util.coerce_to_hash(filters).symbolize_keys : {}

  filter_definition.each do |key, filter_type|
    param_value = params_to_hash[key]
    next if param_value.blank?

    scope = apply_filter(scope, key, filter_type, param_value, date_column)
  end

  scope = scope.group(group_by) if group_by.present?

  scope
end