Class: JsonapiCompliable::Query
- Inherits:
-
Object
- Object
- JsonapiCompliable::Query
- Defined in:
- lib/jsonapi_compliable/query.rb
Instance Attribute Summary collapse
-
#params ⇒ Object
readonly
Returns the value of attribute params.
-
#resource ⇒ Object
readonly
Returns the value of attribute resource.
Class Method Summary collapse
Instance Method Summary collapse
- #association_names ⇒ Object
- #include_directive ⇒ Object
- #include_hash ⇒ Object
-
#initialize(resource, params) ⇒ Query
constructor
A new instance of Query.
- #to_hash ⇒ Object
- #zero_results? ⇒ Boolean
Constructor Details
#initialize(resource, params) ⇒ Query
Returns a new instance of Query.
19 20 21 22 |
# File 'lib/jsonapi_compliable/query.rb', line 19 def initialize(resource, params) @resource = resource @params = params end |
Instance Attribute Details
#params ⇒ Object (readonly)
Returns the value of attribute params.
5 6 7 |
# File 'lib/jsonapi_compliable/query.rb', line 5 def params @params end |
#resource ⇒ Object (readonly)
Returns the value of attribute resource.
5 6 7 |
# File 'lib/jsonapi_compliable/query.rb', line 5 def resource @resource end |
Class Method Details
.default_hash ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 |
# File 'lib/jsonapi_compliable/query.rb', line 7 def self.default_hash { filter: {}, sort: [], page: {}, include: {}, stats: {}, fields: {}, extra_fields: {} } end |
Instance Method Details
#association_names ⇒ Object
39 40 41 |
# File 'lib/jsonapi_compliable/query.rb', line 39 def association_names @association_names ||= Util::Hash.keys(include_hash) end |
#include_directive ⇒ Object
24 25 26 |
# File 'lib/jsonapi_compliable/query.rb', line 24 def include_directive @include_directive ||= JSONAPI::IncludeDirective.new(params[:include]) end |
#include_hash ⇒ Object
28 29 30 31 32 33 34 35 36 37 |
# File 'lib/jsonapi_compliable/query.rb', line 28 def include_hash @include_hash ||= begin requested = include_directive.to_hash all_allowed = resource.sideloading.to_hash[:base] whitelist = resource.sideload_whitelist.values.reduce(:merge) allowed = whitelist ? Util::IncludeParams.scrub(all_allowed, whitelist) : all_allowed Util::IncludeParams.scrub(requested, allowed) end end |
#to_hash ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/jsonapi_compliable/query.rb', line 43 def to_hash hash = { resource.type => self.class.default_hash } association_names.each do |name| hash[name] = self.class.default_hash end fields = parse_fields({}, :fields) extra_fields = parse_fields({}, :extra_fields) hash.each_pair do |type, query_hash| hash[type][:fields] = fields hash[type][:extra_fields] = extra_fields end parse_filter(hash) parse_sort(hash) parse_pagination(hash) parse_include(hash, include_hash, resource.type) parse_stats(hash) hash end |
#zero_results? ⇒ Boolean
67 68 69 70 71 |
# File 'lib/jsonapi_compliable/query.rb', line 67 def zero_results? !@params[:page].nil? && !@params[:page][:size].nil? && @params[:page][:size].to_i == 0 end |