Add ArvadosModel.filter() to support filters API
authorTom Clegg <tom@curoverse.com>
Sun, 9 Mar 2014 08:18:27 +0000 (04:18 -0400)
committerTom Clegg <tom@curoverse.com>
Sun, 9 Mar 2014 08:18:27 +0000 (04:18 -0400)
apps/workbench/app/models/arvados_base.rb
apps/workbench/app/models/arvados_resource_list.rb

index 72b76a522982d8e04b595b4ecda9dc0a01523504..09e3d8cea286f4ff8695b74f02f449536bb658f2 100644 (file)
@@ -87,6 +87,9 @@ class ArvadosBase < ActiveRecord::Base
   def self.order(*args)
     ArvadosResourceList.new(self).order(*args)
   end
+  def self.filter(*args)
+    ArvadosResourceList.new(self).filter(*args)
+  end
   def self.where(*args)
     ArvadosResourceList.new(self).where(*args)
   end
index 72495cfdb99caec2269d5fc681e5cbb3944cea6f..ebea76cb835e98f301d574b34246eed1fd0328c0 100644 (file)
@@ -20,6 +20,12 @@ class ArvadosResourceList
     self
   end
 
+  def filter _filters
+    @filters ||= []
+    @filters += _filters
+    self
+  end
+
   def where(cond)
     cond = cond.dup
     cond.keys.each do |uuid_key|
@@ -52,6 +58,7 @@ class ArvadosResourceList
     api_params[:eager] = '1' if @eager
     api_params[:limit] = @limit if @limit
     api_params[:order] = @orderby_spec if @orderby_spec
+    api_params[:filters] = @filters if @filters
     res = $arvados_api_client.api @resource_class, '', api_params
     @results = $arvados_api_client.unpack_api_response res
     self