13493: Update CORS OPTIONS test.
[arvados.git] / services / api / lib / trashable.rb
index 1e2f466fb7cbd928a8ddeef3dfa7685f0fd623f5..96879629646b7e413e3c1e6c3e2110d7de0d7173 100644 (file)
@@ -89,3 +89,40 @@ module Trashable
     true
   end
 end
+
+module TrashableController
+  def destroy
+    if !@object.is_trashed
+      @object.update_attributes!(trash_at: db_current_time)
+    end
+    earliest_delete = (@object.trash_at +
+                       Rails.configuration.blob_signature_ttl.seconds)
+    if @object.delete_at > earliest_delete
+      @object.update_attributes!(delete_at: earliest_delete)
+    end
+    show
+  end
+
+  def trash
+    if !@object.is_trashed
+      @object.update_attributes!(trash_at: db_current_time)
+    end
+    show
+  end
+
+  def untrash
+    if @object.is_trashed
+      @object.trash_at = nil
+
+      if params[:ensure_unique_name]
+        @object.save_with_unique_name!
+      else
+        @object.save!
+      end
+    else
+      raise ArvadosModel::InvalidStateTransitionError.new("Item is not trashed, cannot untrash")
+    end
+    show
+  end
+
+end