Skip to content

Commit e81389e

Browse files
committed
Remove response codes from resources
Resources now just return if the action was completed or deferred. The operation determines the proper response code.
1 parent 4052c9d commit e81389e

3 files changed

Lines changed: 23 additions & 24 deletions

File tree

lib/jsonapi/operation.rb

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ def apply(context)
149149
resource = @resource_klass.create(context)
150150
result = resource.replace_fields(@data)
151151

152-
return JSONAPI::ResourceOperationResult.new((result ? result : :created), resource)
152+
return JSONAPI::ResourceOperationResult.new((result == :deferred ? :accepted : :created), resource)
153153

154154
rescue JSONAPI::Exceptions::Error => e
155155
return JSONAPI::ErrorsOperationResult.new(e.errors[0].code, e.errors)
@@ -165,9 +165,9 @@ def initialize(resource_klass, options = {})
165165

166166
def apply(context)
167167
resource = @resource_klass.find_by_key(@resource_id, context: context)
168-
resource.remove
168+
result = resource.remove
169169

170-
return JSONAPI::OperationResult.new(:no_content)
170+
return JSONAPI::OperationResult.new(result == :deferred ? :accepted : :no_content)
171171

172172
rescue JSONAPI::Exceptions::Error => e
173173
return JSONAPI::ErrorsOperationResult.new(e.errors[0].code, e.errors)
@@ -187,7 +187,7 @@ def apply(context)
187187
resource = @resource_klass.find_by_key(@resource_id, context: context)
188188
result = resource.replace_fields(data)
189189

190-
return JSONAPI::ResourceOperationResult.new(result ? result : :ok, resource)
190+
return JSONAPI::ResourceOperationResult.new(result == :deferred ? :accepted : :ok, resource)
191191
end
192192
end
193193

@@ -205,7 +205,7 @@ def apply(context)
205205
resource = @resource_klass.find_by_key(@resource_id, context: context)
206206
result = resource.replace_has_one_link(@association_type, @key_value)
207207

208-
return JSONAPI::OperationResult.new(result ? result : :no_content)
208+
return JSONAPI::OperationResult.new(result == :deferred ? :accepted : :no_content)
209209
end
210210
end
211211

@@ -223,7 +223,7 @@ def apply(context)
223223
resource = @resource_klass.find_by_key(@resource_id, context: context)
224224
result = resource.create_has_many_links(@association_type, @data)
225225

226-
return JSONAPI::OperationResult.new(result ? result : :no_content)
226+
return JSONAPI::OperationResult.new(result == :deferred ? :accepted : :no_content)
227227
end
228228
end
229229

@@ -241,7 +241,7 @@ def apply(context)
241241
resource = @resource_klass.find_by_key(@resource_id, context: context)
242242
result = resource.replace_has_many_links(@association_type, @data)
243243

244-
return JSONAPI::OperationResult.new(result ? result : :no_content)
244+
return JSONAPI::OperationResult.new(result == :deferred ? :accepted : :no_content)
245245
end
246246
end
247247

@@ -259,7 +259,7 @@ def apply(context)
259259
resource = @resource_klass.find_by_key(@resource_id, context: context)
260260
result = resource.remove_has_many_link(@association_type, @associated_key)
261261

262-
return JSONAPI::OperationResult.new(result ? result : :no_content)
262+
return JSONAPI::OperationResult.new(result == :deferred ? :accepted : :no_content)
263263
end
264264
end
265265

@@ -276,7 +276,7 @@ def apply(context)
276276
resource = @resource_klass.find_by_key(@resource_id, context: context)
277277
result = resource.remove_has_one_link(@association_type)
278278

279-
return JSONAPI::OperationResult.new(result ? result : :no_content)
279+
return JSONAPI::OperationResult.new(result == :deferred ? :accepted : :no_content)
280280
end
281281
end
282282
end

lib/jsonapi/resource.rb

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -35,28 +35,27 @@ def is_new?
3535
end
3636

3737
def change(callback)
38-
result = nil
38+
deferred = false
3939

4040
if @changing
4141
run_callbacks callback do
42-
yield
42+
deferred = true if yield == :deferred
4343
end
4444
else
4545
run_callbacks is_new? ? :create : :update do
4646
@changing = true
4747
run_callbacks callback do
48-
result = yield
48+
deferred = true if yield == :deferred
4949
end
5050

5151
if @save_needed || is_new?
52-
save_result = save
53-
result = save_result if save_result
52+
deferred = true if save == :deferred
5453
end
5554

5655
end
5756
end
5857

59-
return result
58+
return deferred ? :deferred : :completed
6059
end
6160

6261
def remove
@@ -127,13 +126,13 @@ def _save
127126
saved = @model.save
128127
@save_needed = !saved
129128

130-
return
129+
return :completed
131130
end
132131

133132
def _remove
134133
@model.destroy
135134

136-
return
135+
return :completed
137136
end
138137

139138
def _create_has_many_links(association_type, association_key_values)
@@ -151,7 +150,7 @@ def _create_has_many_links(association_type, association_key_values)
151150
end
152151
end
153152

154-
return
153+
return :completed
155154
end
156155

157156
def _replace_has_many_links(association_type, association_key_values)
@@ -160,7 +159,7 @@ def _replace_has_many_links(association_type, association_key_values)
160159
send("#{association.foreign_key}=", association_key_values)
161160
@save_needed = true
162161

163-
return
162+
return :completed
164163
end
165164

166165
def _replace_has_one_link(association_type, association_key_value)
@@ -169,15 +168,15 @@ def _replace_has_one_link(association_type, association_key_value)
169168
send("#{association.foreign_key}=", association_key_value)
170169
@save_needed = true
171170

172-
return
171+
return :completed
173172
end
174173

175174
def _remove_has_many_link(association_type, key)
176175
association = self.class._associations[association_type]
177176

178177
@model.send(association.type).delete(key)
179178

180-
return
179+
return :completed
181180
end
182181

183182
def _remove_has_one_link(association_type)
@@ -186,7 +185,7 @@ def _remove_has_one_link(association_type)
186185
send("#{association.foreign_key}=", nil)
187186
@save_needed = true
188187

189-
return
188+
return :completed
190189
end
191190

192191
def _replace_fields(field_data)
@@ -213,7 +212,7 @@ def _replace_fields(field_data)
213212
replace_has_many_links(association_type, values)
214213
end if field_data[:has_many]
215214

216-
return
215+
return :completed
217216
end
218217

219218
class << self

test/fixtures/active_record.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -704,7 +704,7 @@ def self.find_by_key(id, options = {})
704704

705705
def _save
706706
super
707-
return :accepted
707+
return :deferred
708708
end
709709
end
710710

0 commit comments

Comments
 (0)