# Copyright (C) The Arvados Authors. All rights reserved.
#
# SPDX-License-Identifier: AGPL-3.0

class SearchController < ApplicationController
  skip_before_action :ensure_arvados_api_exists

  def find_objects_for_index
    search_what = Group
    if params[:project_uuid]
      # Special case for "search all things in project":
      @filters = @filters.select do |attr, operator, operand|
        not (attr == 'owner_uuid' and operator == '=')
      end
      # Special case for project_uuid is a user uuid:
      if ArvadosBase::resource_class_for_uuid(params[:project_uuid]) == User
        search_what = User.find params[:project_uuid]
      else
        search_what = Group.find params[:project_uuid]
      end
    end
    @objects = search_what.contents(limit: @limit,
                                    offset: @offset,
                                    recursive: true,
                                    count: 'none',
                                    last_object_class: params["last_object_class"],
                                    filters: @filters)
    super
  end

  def next_page_href with_params={}
    super with_params.merge(last_object_class: @objects.last.class.to_s,
                            project_uuid: params[:project_uuid],
                            recursive: true,
                            count: 'none',
                            filters: @filters.to_json)
  end
end
