X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/55315b668b8fa04572a44fd7db6598478f54130a..68bdf4cbb1d2c22d689b1d74a1c2a77415921b4d:/services/api/app/controllers/arvados/v1/collections_controller.rb diff --git a/services/api/app/controllers/arvados/v1/collections_controller.rb b/services/api/app/controllers/arvados/v1/collections_controller.rb index 73a7e09c5e..3803d37691 100644 --- a/services/api/app/controllers/arvados/v1/collections_controller.rb +++ b/services/api/app/controllers/arvados/v1/collections_controller.rb @@ -1,7 +1,22 @@ +# Copyright (C) The Arvados Authors. All rights reserved. +# +# SPDX-License-Identifier: AGPL-3.0 + require "arvados/keep" +require "trashable" class Arvados::V1::CollectionsController < ApplicationController include DbCurrentTime + include TrashableController + + def self._index_requires_parameters + (super rescue {}). + merge({ + include_trash: { + type: 'boolean', required: false, description: "Include collections whose is_trashed attribute is true." + }, + }) + end def create if resource_attrs[:uuid] and (loc = Keep::Locator.parse(resource_attrs[:uuid])) @@ -13,7 +28,7 @@ class Arvados::V1::CollectionsController < ApplicationController def find_objects_for_index if params[:include_trash] || ['destroy', 'trash', 'untrash'].include?(action_name) - @objects = Collection.readable_by(*@read_users).unscoped + @objects = Collection.readable_by(*@read_users, {include_trash: true, query_on: Collection.unscoped}) end super end @@ -44,33 +59,6 @@ class Arvados::V1::CollectionsController < ApplicationController end end - 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.update_attributes!(trash_at: nil) - else - raise InvalidStateTransitionError - end - show - end def find_collections(visited, sp, &b) case sp