jsonapi-resources 0.4.1 → 0.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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