Class: Search::GlobalService

Inherits:
Object
  • Object
show all
Includes:
Gitlab::Utils::StrongMemoize, Filter
Defined in:
app/services/search/global_service.rb

Direct Known Subclasses

GroupService, SnippetService

Constant Summary collapse

DEFAULT_SCOPE =
'projects'
LEGACY_ALLOWED_SCOPES =
%w[projects issues merge_requests milestones users].freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(user, params) ⇒ GlobalService

Returns a new instance of GlobalService.



13
14
15
16
# File 'app/services/search/global_service.rb', line 13

def initialize(user, params)
  @current_user = user
  @params = params.dup
end

Instance Attribute Details

#current_userObject

Returns the value of attribute current_user.



11
12
13
# File 'app/services/search/global_service.rb', line 11

def current_user
  @current_user
end

#paramsObject

Returns the value of attribute params.



11
12
13
# File 'app/services/search/global_service.rb', line 11

def params
  @params
end

Instance Method Details

#allowed_scopesObject



33
34
35
36
37
38
39
40
41
# File 'app/services/search/global_service.rb', line 33

def allowed_scopes
  return legacy_allowed_scopes unless Feature.enabled?(:search_scope_registry, :instance)

  Search::Scopes.available_for_context(
    context: :global,
    container: searched_container,
    requested_search_type: params[:search_type]
  )
end

#executeObject



18
19
20
21
22
23
24
25
26
# File 'app/services/search/global_service.rb', line 18

def execute
  Gitlab::SearchResults.new(current_user,
    params[:search],
    projects,
    order_by: params[:order_by],
    sort: params[:sort],
    filters: filters
  )
end

#projectsObject

rubocop: disable CodeReuse/ActiveRecord



29
30
31
# File 'app/services/search/global_service.rb', line 29

def projects
  @projects ||= ::ProjectsFinder.new(current_user: current_user).execute.preload(:topics, :project_topics, :route)
end

#scopeObject



43
44
45
# File 'app/services/search/global_service.rb', line 43

def scope
  allowed_scopes.include?(params[:scope]) ? params[:scope] : default_search_scope
end