X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/f965ac6ef1176c985fcc278d6501c4c72f58029c..cec011b7718536de42ebd683aa96bee92cbca06c:/services/api/lib/trashable.rb diff --git a/services/api/lib/trashable.rb b/services/api/lib/trashable.rb index 1e2f466fb7..9687962964 100644 --- a/services/api/lib/trashable.rb +++ b/services/api/lib/trashable.rb @@ -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