X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/17b80c32a5b177ee8c5f32b81dd0889f3399eee8..068e72307f9ce91538e45cb461b99cf92d2f5666:/apps/workbench/app/models/arvados_resource_list.rb diff --git a/apps/workbench/app/models/arvados_resource_list.rb b/apps/workbench/app/models/arvados_resource_list.rb index 35dcde38da..cbd544ebb7 100644 --- a/apps/workbench/app/models/arvados_resource_list.rb +++ b/apps/workbench/app/models/arvados_resource_list.rb @@ -1,3 +1,7 @@ +# Copyright (C) The Arvados Authors. All rights reserved. +# +# SPDX-License-Identifier: AGPL-3.0 + class ArvadosResourceList include ArvadosApiClientHelper include Enumerable @@ -9,6 +13,17 @@ class ArvadosResourceList @fetch_multiple_pages = true @arvados_api_token = Thread.current[:arvados_api_token] @reader_tokens = Thread.current[:reader_tokens] + @results = nil + @count = nil + @offset = 0 + @cond = nil + @eager = nil + @select = nil + @orderby_spec = nil + @filters = nil + @distinct = nil + @include_trash = nil + @limit = nil end def eager(bool=true) @@ -21,6 +36,16 @@ class ArvadosResourceList self end + def include_trash(option=nil) + @include_trash = option + self + end + + def recursive(option=nil) + @recursive = option + self + end + def limit(max_results) if not max_results.nil? and not max_results.is_a? Integer raise ArgumentError("argument to limit() must be an Integer or nil") @@ -76,7 +101,7 @@ class ArvadosResourceList end end end - @cond.keys.select { |x| x.match /_kind$/ }.each do |kind_key| + @cond.keys.select { |x| x.match(/_kind$/) }.each do |kind_key| if @cond[kind_key].is_a? Class @cond = @cond.merge({ kind_key => 'arvados#' + arvados_api_client.class_kind(@cond[kind_key]) }) end @@ -120,7 +145,7 @@ class ArvadosResourceList def each(&block) if not @results.nil? - @results.each &block + @results.each(&block) else self.each_page do |items| items.each do |i| @@ -192,6 +217,7 @@ class ArvadosResourceList api_params[:order] = @orderby_spec if @orderby_spec api_params[:filters] = @filters if @filters api_params[:distinct] = @distinct if @distinct + api_params[:include_trash] = @include_trash if @include_trash if @fetch_multiple_pages # Default limit to (effectively) api server's MAX_LIMIT api_params[:limit] = 2**(0.size*8 - 1) - 1