X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/4177bcc9b935391630c874a2abcedb81efa350f0..4f552c0187f8c31d94ff74485c57ef7f9888597e:/services/api/app/controllers/application_controller.rb diff --git a/services/api/app/controllers/application_controller.rb b/services/api/app/controllers/application_controller.rb index 70a2a4c9c0..94ef19c879 100644 --- a/services/api/app/controllers/application_controller.rb +++ b/services/api/app/controllers/application_controller.rb @@ -120,7 +120,7 @@ class ApplicationController < ActionController::Base def load_filters_param if params[:filters].is_a? Array @filters = params[:filters] - elsif params[:filters].is_a? String + elsif params[:filters].is_a? String and !params[:filters].empty? begin @filters = Oj.load params[:filters] raise unless @filters.is_a? Array @@ -140,7 +140,7 @@ class ApplicationController < ActionController::Base cond_out = [] param_out = [] @filters.each do |attr, operator, operand| - if !model_class.searchable_columns.index attr.to_s + if !model_class.searchable_columns(operator).index attr.to_s raise ArgumentError.new("Invalid attribute '#{attr}' in condition") end case operator.downcase @@ -182,13 +182,12 @@ class ApplicationController < ActionController::Base if @where.is_a? Hash and @where.any? conditions = ['1=1'] @where.each do |attr,value| - if attr == :any + if attr.to_s == 'any' if value.is_a?(Array) and value.length == 2 and - value[0] == 'contains' and - model_class.columns.collect(&:name).index('name') then + value[0] == 'contains' then ilikes = [] - model_class.searchable_columns.each do |column| + model_class.searchable_columns('ilike').each do |column| ilikes << "#{table_name}.#{column} ilike ?" conditions << "%#{value[1]}%" end @@ -441,7 +440,9 @@ class ApplicationController < ActionController::Base :items => @objects.as_api_response(nil) } if @objects.respond_to? :except - @object_list[:items_available] = @objects.except(:limit).except(:offset).count + @object_list[:items_available] = @objects. + except(:limit).except(:offset). + count(:id, distinct: true) end render json: @object_list end