Skip to content

Commit 69e5b00

Browse files
amitsuryavanshirichmolj
authored andcommitted
allowing for extension of Scoping::Filter class (#74)
* allowing for extension of Scoping::Filter class * further refactoring on JsonapiCompliable::Scope#apply_scoping
1 parent 0e73838 commit 69e5b00

File tree

1 file changed

+11
-7
lines changed

1 file changed

+11
-7
lines changed

lib/jsonapi_compliable/scope.rb

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -118,13 +118,17 @@ def sideload(results, includes)
118118
end
119119
end
120120

121-
def apply_scoping(opts)
122-
@object = JsonapiCompliable::Scoping::DefaultFilter.new(@resource, query_hash, @object).apply
123-
@object = JsonapiCompliable::Scoping::Filter.new(@resource, query_hash, @object).apply unless opts[:filter] == false
124-
@object = JsonapiCompliable::Scoping::ExtraFields.new(@resource, query_hash, @object).apply unless opts[:extra_fields] == false
125-
@object = JsonapiCompliable::Scoping::Sort.new(@resource, query_hash, @object).apply unless opts[:sort] == false
126-
@unpaginated_object = @object
127-
@object = JsonapiCompliable::Scoping::Paginate.new(@resource, query_hash, @object, default: opts[:default_paginate]).apply unless opts[:paginate] == false
121+
def apply_scoping(opts)
122+
add_scoping(nil, JsonapiCompliable::Scoping::DefaultFilter, opts)
123+
add_scoping(:filter, JsonapiCompliable::Scoping::Filter, opts)
124+
add_scoping(:extra_fields, JsonapiCompliable::Scoping::ExtraFields, opts)
125+
add_scoping(:sort, JsonapiCompliable::Scoping::Sort, opts)
126+
add_scoping(:paginate, JsonapiCompliable::Scoping::Paginate, opts, default: opts[:default_paginate])
127+
end
128+
129+
def add_scoping(key, scoping_class, opts, default = {})
130+
@object = scoping_class.new(@resource, query_hash, @object, default).apply unless opts[key] == false
131+
@unpaginated_object = @object unless key == :paginate
128132
end
129133
end
130134
end

0 commit comments

Comments
 (0)