+# 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
-
- def self.limit_index_columns_read
- ["manifest_text"]
+ 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
end
def find_objects_for_index
- if params[:include_trash] || ['destroy', 'trash'].include?(action_name)
- @objects = Collection.unscoped.readable_by(*@read_users)
+ if params[:include_trash] || ['destroy', 'trash', 'untrash'].include?(action_name)
+ @objects = Collection.readable_by(*@read_users, {include_trash: true, query_on: Collection.unscoped})
end
super
end
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 find_collections(visited, sp, &b)
case sp