jsonapi-resources 0.4.1 → 0.4.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ccc95678a9008bcac7b1b375cd19e684c626effb
4
- data.tar.gz: e7b641e7055f1a88f9673082617812ffe4b8ae25
3
+ metadata.gz: ee2eb1bf17d93331630573c19708775eb1bb5379
4
+ data.tar.gz: 0e230d825047eebc973ad2b3c16a10d47c0ee54a
5
5
  SHA512:
6
- metadata.gz: 77b1fa60f243eb0fe5d62d9a28f6336d613def402e5d933a3e5157be520eb789c8f073630dbe69982c7e2bc8a1f1203a500c74764c46e0c37ce963ef5e86897c
7
- data.tar.gz: af564dac990b904cc6bb4ad8b38fe928043c988d6d7d83619a1f538be8522fa1d72b4c7e2aa4ab01e34e96d3742174c8c70495ef054315b51d195fffab369b42
6
+ metadata.gz: 7ef3d97d1b89d5ceb0e585eddc32c7b69dfd6e3b60b96f4eb401634d4a1f32e65e7f75d11baa3f1a5adc1c66e2aa4a729b18f014bb084a775e9300a9e3ae933f
7
+ data.tar.gz: 7328baee52874231838085886f9d5280932c0f3950a93a9f001d9bdaf341c4a68000a1ae05700b60c7b429f283e53d6863f9bf7d811c9065aa4941a347f36197
@@ -16,7 +16,7 @@ class ActiveRecordOperationsProcessor < JSONAPI::OperationsProcessor
16
16
  end
17
17
 
18
18
  def process_operation(operation)
19
- operation.apply(@context)
19
+ operation.apply
20
20
  rescue ActiveRecord::DeleteRestrictionError => e
21
21
  record_locked_error = JSONAPI::Exceptions::RecordLocked.new(e.message)
22
22
  return JSONAPI::ErrorsOperationResult.new(record_locked_error.errors[0].code, record_locked_error.errors)
@@ -3,12 +3,13 @@ module JSONAPI
3
3
  attr_reader :resource_klass, :options, :transactional
4
4
 
5
5
  def initialize(resource_klass, options = {})
6
+ @context = options[:context]
6
7
  @resource_klass = resource_klass
7
8
  @options = options
8
9
  @transactional = true
9
10
  end
10
11
 
11
- def apply(context)
12
+ def apply
12
13
  end
13
14
  end
14
15
 
@@ -20,7 +21,8 @@ module JSONAPI
20
21
  @include_directives = options[:include_directives]
21
22
  @sort_criteria = options.fetch(:sort_criteria, [])
22
23
  @paginator = options[:paginator]
23
- super(resource_klass, false)
24
+ @transactional = false
25
+ super(resource_klass, options)
24
26
  end
25
27
 
26
28
  def record_count
@@ -39,9 +41,9 @@ module JSONAPI
39
41
  end
40
42
  end
41
43
 
42
- def apply(context)
43
- resource_records = @resource_klass.find(@resource_klass.verify_filters(@filters, context),
44
- context: context,
44
+ def apply
45
+ resource_records = @resource_klass.find(@resource_klass.verify_filters(@filters, @context),
46
+ context: @context,
45
47
  include_directives: @include_directives,
46
48
  sort_criteria: @sort_criteria,
47
49
  paginator: @paginator)
@@ -74,11 +76,11 @@ module JSONAPI
74
76
  super(resource_klass, options)
75
77
  end
76
78
 
77
- def apply(context)
78
- key = @resource_klass.verify_key(@id, context)
79
+ def apply
80
+ key = @resource_klass.verify_key(@id, @context)
79
81
 
80
82
  resource_record = resource_klass.find_by_key(key,
81
- context: context,
83
+ context: @context,
82
84
  include_directives: @include_directives)
83
85
 
84
86
  return JSONAPI::ResourceOperationResult.new(:ok, resource_record)
@@ -98,8 +100,8 @@ module JSONAPI
98
100
  super(resource_klass, options)
99
101
  end
100
102
 
101
- def apply(context)
102
- parent_resource = resource_klass.find_by_key(@parent_key, context: context)
103
+ def apply
104
+ parent_resource = resource_klass.find_by_key(@parent_key, context: @context)
103
105
 
104
106
  return JSONAPI::LinksObjectOperationResult.new(:ok,
105
107
  parent_resource,
@@ -121,8 +123,8 @@ module JSONAPI
121
123
  super(resource_klass, options)
122
124
  end
123
125
 
124
- def apply(context)
125
- source_resource = @source_klass.find_by_key(@source_id, context: context)
126
+ def apply
127
+ source_resource = @source_klass.find_by_key(@source_id, context: @context)
126
128
 
127
129
  related_resource = source_resource.send(@association_type)
128
130
 
@@ -147,8 +149,8 @@ module JSONAPI
147
149
  super(resource_klass, options)
148
150
  end
149
151
 
150
- def apply(context)
151
- source_resource = @source_klass.find_by_key(@source_id, context: context)
152
+ def apply
153
+ source_resource = @source_klass.find_by_key(@source_id, context: @context)
152
154
 
153
155
  related_resource = source_resource.send(@association_type,
154
156
  {
@@ -172,8 +174,8 @@ module JSONAPI
172
174
  super(resource_klass, options)
173
175
  end
174
176
 
175
- def apply(context)
176
- resource = @resource_klass.create(context)
177
+ def apply
178
+ resource = @resource_klass.create(@context)
177
179
  result = resource.replace_fields(@data)
178
180
 
179
181
  return JSONAPI::ResourceOperationResult.new((result == :completed ? :created : :accepted), resource)
@@ -190,8 +192,8 @@ module JSONAPI
190
192
  super(resource_klass, options)
191
193
  end
192
194
 
193
- def apply(context)
194
- resource = @resource_klass.find_by_key(@resource_id, context: context)
195
+ def apply
196
+ resource = @resource_klass.find_by_key(@resource_id, context: @context)
195
197
  result = resource.remove
196
198
 
197
199
  return JSONAPI::OperationResult.new(result == :completed ? :no_content : :accepted)
@@ -210,8 +212,8 @@ module JSONAPI
210
212
  super(resource_klass, options)
211
213
  end
212
214
 
213
- def apply(context)
214
- resource = @resource_klass.find_by_key(@resource_id, context: context)
215
+ def apply
216
+ resource = @resource_klass.find_by_key(@resource_id, context: @context)
215
217
  result = resource.replace_fields(data)
216
218
 
217
219
  return JSONAPI::ResourceOperationResult.new(result == :completed ? :ok : :accepted, resource)
@@ -228,8 +230,8 @@ module JSONAPI
228
230
  super(resource_klass, options)
229
231
  end
230
232
 
231
- def apply(context)
232
- resource = @resource_klass.find_by_key(@resource_id, context: context)
233
+ def apply
234
+ resource = @resource_klass.find_by_key(@resource_id, context: @context)
233
235
  result = resource.replace_has_one_link(@association_type, @key_value)
234
236
 
235
237
  return JSONAPI::OperationResult.new(result == :completed ? :no_content : :accepted)
@@ -246,8 +248,8 @@ module JSONAPI
246
248
  super(resource_klass, options)
247
249
  end
248
250
 
249
- def apply(context)
250
- resource = @resource_klass.find_by_key(@resource_id, context: context)
251
+ def apply
252
+ resource = @resource_klass.find_by_key(@resource_id, context: @context)
251
253
  result = resource.create_has_many_links(@association_type, @data)
252
254
 
253
255
  return JSONAPI::OperationResult.new(result == :completed ? :no_content : :accepted)
@@ -264,8 +266,8 @@ module JSONAPI
264
266
  super(resource_klass, options)
265
267
  end
266
268
 
267
- def apply(context)
268
- resource = @resource_klass.find_by_key(@resource_id, context: context)
269
+ def apply
270
+ resource = @resource_klass.find_by_key(@resource_id, context: @context)
269
271
  result = resource.replace_has_many_links(@association_type, @data)
270
272
 
271
273
  return JSONAPI::OperationResult.new(result == :completed ? :no_content : :accepted)
@@ -282,8 +284,8 @@ module JSONAPI
282
284
  super(resource_klass, options)
283
285
  end
284
286
 
285
- def apply(context)
286
- resource = @resource_klass.find_by_key(@resource_id, context: context)
287
+ def apply
288
+ resource = @resource_klass.find_by_key(@resource_id, context: @context)
287
289
  result = resource.remove_has_many_link(@association_type, @associated_key)
288
290
 
289
291
  return JSONAPI::OperationResult.new(result == :completed ? :no_content : :accepted)
@@ -299,8 +301,8 @@ module JSONAPI
299
301
  super(resource_klass, options)
300
302
  end
301
303
 
302
- def apply(context)
303
- resource = @resource_klass.find_by_key(@resource_id, context: context)
304
+ def apply
305
+ resource = @resource_klass.find_by_key(@resource_id, context: @context)
304
306
  result = resource.remove_has_one_link(@association_type)
305
307
 
306
308
  return JSONAPI::OperationResult.new(result == :completed ? :no_content : :accepted)
@@ -27,7 +27,6 @@ module JSONAPI
27
27
  def process(request)
28
28
  @results = JSONAPI::OperationResults.new
29
29
  @request = request
30
- @context = request.context
31
30
  @operations = request.operations
32
31
 
33
32
  # Use transactions if more than one operation and if one of the operations can be transactional
@@ -82,7 +81,7 @@ module JSONAPI
82
81
  end
83
82
 
84
83
  def process_operation(operation)
85
- operation.apply(@context)
84
+ operation.apply
86
85
  end
87
86
  end
88
87
  end
@@ -264,6 +264,7 @@ module JSONAPI
264
264
  @operations.push JSONAPI::FindOperation.new(
265
265
  @resource_klass,
266
266
  {
267
+ context: @context,
267
268
  filters: @filters,
268
269
  include_directives: @include_directives,
269
270
  sort_criteria: @sort_criteria,
@@ -276,6 +277,7 @@ module JSONAPI
276
277
  @operations.push JSONAPI::ShowOperation.new(
277
278
  @resource_klass,
278
279
  {
280
+ context: @context,
279
281
  id: @id,
280
282
  include_directives: @include_directives
281
283
  }
@@ -286,6 +288,7 @@ module JSONAPI
286
288
  @operations.push JSONAPI::ShowAssociationOperation.new(
287
289
  @resource_klass,
288
290
  {
291
+ context: @context,
289
292
  association_type: association_type,
290
293
  parent_key: @resource_klass.verify_key(parent_key)
291
294
  }
@@ -296,6 +299,7 @@ module JSONAPI
296
299
  @operations.push JSONAPI::ShowRelatedResourceOperation.new(
297
300
  @resource_klass,
298
301
  {
302
+ context: @context,
299
303
  association_type: association_type,
300
304
  source_klass: @source_klass,
301
305
  source_id: @source_id
@@ -307,6 +311,7 @@ module JSONAPI
307
311
  @operations.push JSONAPI::ShowRelatedResourcesOperation.new(
308
312
  @resource_klass,
309
313
  {
314
+ context: @context,
310
315
  association_type: association_type,
311
316
  source_klass: @source_klass,
312
317
  source_id: @source_id,
@@ -336,6 +341,7 @@ module JSONAPI
336
341
  @operations.push JSONAPI::CreateResourceOperation.new(
337
342
  @resource_klass,
338
343
  {
344
+ context: @context,
339
345
  data: data
340
346
  }
341
347
  )
@@ -519,6 +525,7 @@ module JSONAPI
519
525
  @operations.push JSONAPI::CreateHasManyAssociationOperation.new(
520
526
  resource_klass,
521
527
  {
528
+ context: @context,
522
529
  resource_id: parent_key,
523
530
  association_type: association_type,
524
531
  data: verified_param_set[:has_many].values[0]
@@ -537,6 +544,7 @@ module JSONAPI
537
544
  @operations.push JSONAPI::ReplaceHasOneAssociationOperation.new(
538
545
  resource_klass,
539
546
  {
547
+ context: @context,
540
548
  resource_id: parent_key,
541
549
  association_type: association_type,
542
550
  key_value: verified_param_set[:has_one].values[0]
@@ -553,6 +561,7 @@ module JSONAPI
553
561
  @operations.push JSONAPI::ReplaceHasManyAssociationOperation.new(
554
562
  resource_klass,
555
563
  {
564
+ context: @context,
556
565
  resource_id: parent_key,
557
566
  association_type: association_type,
558
567
  data: verified_param_set[:has_many].values[0]
@@ -585,6 +594,7 @@ module JSONAPI
585
594
  @operations.push JSONAPI::ReplaceFieldsOperation.new(
586
595
  @resource_klass,
587
596
  {
597
+ context: @context,
588
598
  resource_id: key,
589
599
  data: parse_params(data, updatable_fields)
590
600
  }
@@ -615,6 +625,7 @@ module JSONAPI
615
625
  @operations.push JSONAPI::RemoveResourceOperation.new(
616
626
  @resource_klass,
617
627
  {
628
+ context: @context,
618
629
  resource_id: key
619
630
  }
620
631
  )
@@ -637,6 +648,7 @@ module JSONAPI
637
648
  @operations.push JSONAPI::RemoveHasManyAssociationOperation.new(
638
649
  resource_klass,
639
650
  {
651
+ context: @context,
640
652
  resource_id: parent_key,
641
653
  association_type: association_type,
642
654
  associated_key: key
@@ -647,6 +659,7 @@ module JSONAPI
647
659
  @operations.push JSONAPI::RemoveHasOneAssociationOperation.new(
648
660
  resource_klass,
649
661
  {
662
+ context: @context,
650
663
  resource_id: parent_key,
651
664
  association_type: association_type
652
665
  }
@@ -278,8 +278,9 @@ module JSONAPI
278
278
 
279
279
  # Methods used in defining a resource class
280
280
  def attributes(*attrs)
281
+ options = attrs.extract_options!.dup
281
282
  attrs.each do |attr|
282
- attribute(attr)
283
+ attribute(attr, options)
283
284
  end
284
285
  end
285
286
 
@@ -1,5 +1,5 @@
1
1
  module JSONAPI
2
2
  module Resources
3
- VERSION = "0.4.1"
3
+ VERSION = "0.4.2"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jsonapi-resources
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dan Gebhardt
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-06-18 00:00:00.000000000 Z
12
+ date: 2015-06-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler