Sha256: 25960fffc50f6c97c408f6e0b5a75f390378c0cb40856f324242ed1acfdc591f
Contents?: true
Size: 1018 Bytes
Versions: 68
Compression:
Stored size: 1018 Bytes
Contents
# frozen_string_literal: true module Motor module ApiQuery module ApplyScope module_function def call(rel, scope) return rel if scope.blank? scope_symbol = scope.to_sym if rel.klass.defined_scopes.include?(scope_symbol) rel.public_send(scope_symbol) else apply_filter_scope(rel, scope) end end def apply_filter_scope(rel, scope) configs = Motor::Resource.find_by(name: rel.klass.name.underscore) return rel unless configs scope_configs = configs.preferences[:scopes].find { |s| s[:name] == scope } return rel unless scope_configs rel = ApiQuery::Filter.call(rel, scope_configs[:preferences][:filter]) apply_order(rel, scope_configs[:preferences][:sort]) end def apply_order(rel, params) return rel if params.blank? sort_key, sort_order = params.values_at(:key, :order) rel.order(sort_key => sort_order) end end end end
Version data entries
68 entries across 68 versions & 2 rubygems