Skip to content

Commit 09b5f2c

Browse files
committed
Merge pull request #711 from senid231/provide_fields_to_operation
provide fields parameter from request to operation
2 parents 4015be1 + 855466a commit 09b5f2c

2 files changed

Lines changed: 24 additions & 12 deletions

File tree

lib/jsonapi/processor.rb

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -68,13 +68,15 @@ def find
6868
include_directives = params[:include_directives]
6969
sort_criteria = params.fetch(:sort_criteria, [])
7070
paginator = params[:paginator]
71+
fields = params[:fields]
7172

7273
verified_filters = resource_klass.verify_filters(filters, context)
7374
resource_records = resource_klass.find(verified_filters,
7475
context: context,
7576
include_directives: include_directives,
7677
sort_criteria: sort_criteria,
77-
paginator: paginator)
78+
paginator: paginator,
79+
fields: fields)
7880

7981
page_options = {}
8082
if (JSONAPI.configuration.top_level_meta_include_record_count ||
@@ -97,13 +99,15 @@ def find
9799

98100
def show
99101
include_directives = params[:include_directives]
102+
fields = params[:fields]
100103
id = params[:id]
101104

102105
key = resource_klass.verify_key(id, context)
103106

104107
resource_record = resource_klass.find_by_key(key,
105108
context: context,
106-
include_directives: include_directives)
109+
include_directives: include_directives,
110+
fields: fields)
107111

108112
return JSONAPI::ResourceOperationResult.new(:ok, resource_record)
109113
end
@@ -123,8 +127,9 @@ def show_related_resource
123127
source_klass = params[:source_klass]
124128
source_id = params[:source_id]
125129
relationship_type = params[:relationship_type].to_sym
130+
fields = params[:fields]
126131

127-
source_resource = source_klass.find_by_key(source_id, context: context)
132+
source_resource = source_klass.find_by_key(source_id, context: context, fields: fields)
128133

129134
related_resource = source_resource.public_send(relationship_type)
130135

@@ -138,13 +143,15 @@ def show_related_resources
138143
filters = params[:filters]
139144
sort_criteria = params[:sort_criteria]
140145
paginator = params[:paginator]
146+
fields = params[:fields]
141147

142-
source_resource ||= source_klass.find_by_key(source_id, context: context)
148+
source_resource ||= source_klass.find_by_key(source_id, context: context, fields: fields)
143149

144150
related_resources = source_resource.public_send(relationship_type,
145151
filters: filters,
146152
sort_criteria: sort_criteria,
147-
paginator: paginator)
153+
paginator: paginator,
154+
fields: fields)
148155

149156
if ((JSONAPI.configuration.top_level_meta_include_record_count) ||
150157
(paginator && paginator.class.requires_record_count) ||
@@ -182,7 +189,6 @@ def show_related_resources
182189

183190
def create_resource
184191
data = params[:data]
185-
186192
resource = resource_klass.create(context)
187193
result = resource.replace_fields(data)
188194

lib/jsonapi/request_parser.rb

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -295,7 +295,8 @@ def add_find_operation
295295
filters: @filters,
296296
include_directives: @include_directives,
297297
sort_criteria: @sort_criteria,
298-
paginator: @paginator
298+
paginator: @paginator,
299+
fields: @fields
299300
)
300301
end
301302

@@ -304,7 +305,8 @@ def add_show_operation
304305
@resource_klass,
305306
context: @context,
306307
id: @id,
307-
include_directives: @include_directives
308+
include_directives: @include_directives,
309+
fields: @fields
308310
)
309311
end
310312

@@ -323,7 +325,8 @@ def add_show_related_resource_operation(relationship_type)
323325
context: @context,
324326
relationship_type: relationship_type,
325327
source_klass: @source_klass,
326-
source_id: @source_id
328+
source_id: @source_id,
329+
fields: @fields
327330
)
328331
end
329332

@@ -336,7 +339,8 @@ def add_show_related_resources_operation(relationship_type)
336339
source_id: @source_id,
337340
filters: @source_klass.verify_filters(@filters, @context),
338341
sort_criteria: @sort_criteria,
339-
paginator: @paginator
342+
paginator: @paginator,
343+
fields: @fields
340344
)
341345
end
342346

@@ -359,7 +363,8 @@ def parse_add_operation(data)
359363
@operations.push JSONAPI::Operation.new(:create_resource,
360364
@resource_klass,
361365
context: @context,
362-
data: data
366+
data: data,
367+
fields: @fields
363368
)
364369
end
365370
rescue JSONAPI::Exceptions::Error => e
@@ -619,7 +624,8 @@ def parse_single_replace_operation(data, keys, id_key_presence_check_required: t
619624
@resource_klass,
620625
context: @context,
621626
resource_id: key,
622-
data: parse_params(data, updatable_fields)
627+
data: parse_params(data, updatable_fields),
628+
fields: @fields
623629
)
624630
end
625631

0 commit comments

Comments
 (0)