search_controller.rb 1.58 KB
Newer Older
1
class SearchController < ApplicationController
2 3
  include SearchHelper

4
  def show
skv's avatar
skv committed
5 6
    @project = Project.find_by(id: params[:project_id]) if params[:project_id].present?
    @group = Group.find_by(id: params[:group_id]) if params[:group_id].present?
7
    @scope = params[:scope]
8
    @show_snippets = params[:snippets].eql? 'true'
9

10 11
    @search_results = if @project
                        return access_denied! unless can?(current_user, :download_code, @project)
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
12

13 14 15 16 17
                        unless %w(blobs notes issues merge_requests).include?(@scope)
                          @scope = 'blobs'
                        end

                        Search::ProjectService.new(@project, current_user, params).execute
18
                      elsif @show_snippets
19 20 21 22 23
                        unless %w(snippet_blobs snippet_titles).include?(@scope)
                          @scope = 'snippet_blobs'
                        end

                        Search::SnippetService.new(current_user, params).execute
24 25 26 27 28 29 30 31 32
                      else
                        unless %w(projects issues merge_requests).include?(@scope)
                          @scope = 'projects'
                        end

                        Search::GlobalService.new(current_user, params).execute
                      end

    @objects = @search_results.objects(@scope, params[:page])
Izaak Alpert's avatar
Izaak Alpert committed
33
  end
34 35 36 37 38 39 40 41

  def autocomplete
    term = params[:term]
    @project = Project.find(params[:project_id]) if params[:project_id].present?
    @ref = params[:project_ref] if params[:project_ref].present?

    render json: search_autocomplete_opts(term).to_json
  end
42
end