X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/f965ac6ef1176c985fcc278d6501c4c72f58029c..c3872e7a1c817cd39b702f694f70d34f28f7f472:/services/api/lib/trashable.rb diff --git a/services/api/lib/trashable.rb b/services/api/lib/trashable.rb index 1e2f466fb7..50611c305d 100644 --- a/services/api/lib/trashable.rb +++ b/services/api/lib/trashable.rb @@ -50,7 +50,7 @@ module Trashable if trash_at.nil? self.delete_at = nil else - self.delete_at = trash_at + Rails.configuration.default_trash_lifetime.seconds + self.delete_at = trash_at + Rails.configuration.Collections.DefaultTrashLifetime.seconds end elsif !trash_at || !delete_at || trash_at > delete_at # Not trash, or bogus arguments? Just validate in @@ -65,7 +65,7 @@ module Trashable earliest_delete = [ @validation_timestamp, trash_at_was, - ].compact.min + Rails.configuration.blob_signature_ttl.seconds + ].compact.min + Rails.configuration.Collections.BlobSigningTTL # The previous value of delete_at is also an upper bound on the # longest-lived permission token. For example, if TTL=14, @@ -89,3 +89,40 @@ module Trashable true end end + +module TrashableController + def destroy + if !@object.is_trashed + @object.update!(trash_at: db_current_time) + end + earliest_delete = (@object.trash_at + + Rails.configuration.Collections.BlobSigningTTL) + if @object.delete_at > earliest_delete + @object.update!(delete_at: earliest_delete) + end + show + end + + def trash + if !@object.is_trashed + @object.update!(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