@@ -21,6 +21,35 @@ def to_hash(serializer = nil)
2121 end
2222 end
2323
24+ # Backward compatibility module for 0.9.x result.resource access
25+ # In 0.9.x, OperationResult had a `resource` accessor that returned the single resource.
26+ # This module provides the same interface for code that relied on `result.resource`.
27+ module ResourceSetResultMethods
28+ # Returns the first resource from the resource_set
29+ def resource
30+ each_resource { |r | return r }
31+ nil
32+ end
33+
34+ # Returns all resources from the resource_set
35+ def resources
36+ result = [ ]
37+ each_resource { |r | result << r }
38+ result
39+ end
40+
41+ private
42+
43+ def each_resource
44+ return unless resource_set &.resource_klasses
45+ resource_set . resource_klasses . each_value do |identities |
46+ identities . each_value do |data |
47+ yield data [ :resource ] if data [ :resource ]
48+ end
49+ end
50+ end
51+ end
52+
2453 class ErrorsOperationResult < OperationResult
2554 attr_accessor :errors
2655
@@ -41,6 +70,8 @@ def to_hash(serializer = nil)
4170 end
4271
4372 class ResourceSetOperationResult < OperationResult
73+ include ResourceSetResultMethods
74+
4475 attr_accessor :resource_set , :pagination_params
4576
4677 def initialize ( code , resource_set , options = { } )
@@ -58,35 +89,11 @@ def to_hash(serializer)
5889 # :nocov:
5990 end
6091 end
61-
62- # Returns the first resource from the resource_set for backward compatibility with 0.9.x
63- # In 0.9.x, OperationResult had a `resource` accessor that returned the single resource.
64- # This method provides the same interface for code that relied on `result.resource`.
65- def resource
66- return nil unless resource_set &.resource_klasses
67- resource_set . resource_klasses . each_value do |identities |
68- identities . each_value do |data |
69- return data [ :resource ] if data [ :resource ]
70- end
71- end
72- nil
73- end
74-
75- # Returns all resources from the resource_set for backward compatibility with 0.9.x
76- # Useful when the result contains multiple resources.
77- def resources
78- return [ ] unless resource_set &.resource_klasses
79- result = [ ]
80- resource_set . resource_klasses . each_value do |identities |
81- identities . each_value do |data |
82- result << data [ :resource ] if data [ :resource ]
83- end
84- end
85- result
86- end
8792 end
8893
8994 class ResourcesSetOperationResult < OperationResult
95+ include ResourceSetResultMethods
96+
9097 attr_accessor :resource_set , :pagination_params , :record_count , :page_count
9198
9299 def initialize ( code , resource_set , options = { } )
@@ -106,29 +113,6 @@ def to_hash(serializer)
106113 # :nocov:
107114 end
108115 end
109-
110- # Returns the first resource from the resource_set for backward compatibility with 0.9.x
111- def resource
112- return nil unless resource_set &.resource_klasses
113- resource_set . resource_klasses . each_value do |identities |
114- identities . each_value do |data |
115- return data [ :resource ] if data [ :resource ]
116- end
117- end
118- nil
119- end
120-
121- # Returns all resources from the resource_set for backward compatibility with 0.9.x
122- def resources
123- return [ ] unless resource_set &.resource_klasses
124- result = [ ]
125- resource_set . resource_klasses . each_value do |identities |
126- identities . each_value do |data |
127- result << data [ :resource ] if data [ :resource ]
128- end
129- end
130- result
131- end
132116 end
133117
134118 class RelatedResourcesSetOperationResult < ResourcesSetOperationResult
0 commit comments