summaryrefslogtreecommitdiff
path: root/app/finders/environment_names_finder.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/finders/environment_names_finder.rb')
-rw-r--r--app/finders/environment_names_finder.rb57
1 files changed, 0 insertions, 57 deletions
diff --git a/app/finders/environment_names_finder.rb b/app/finders/environment_names_finder.rb
deleted file mode 100644
index e9063ef4c90..00000000000
--- a/app/finders/environment_names_finder.rb
+++ /dev/null
@@ -1,57 +0,0 @@
-# frozen_string_literal: true
-
-# Finder for obtaining the unique environment names of a project or group.
-#
-# This finder exists so that the merge requests "environments" filter can be
-# populated with a unique list of environment names. If we retrieve _just_ the
-# environments, duplicates may be present (e.g. multiple projects in a group
-# having a "staging" environment).
-#
-# In addition, this finder only produces unfoldered environments. We do this
-# because when searching for environments we want to exclude review app
-# environments.
-class EnvironmentNamesFinder
- attr_reader :project_or_group, :current_user
-
- def initialize(project_or_group, current_user = nil)
- @project_or_group = project_or_group
- @current_user = current_user
- end
-
- def execute
- all_environments.unfoldered.order_by_name.pluck_unique_names
- end
-
- def all_environments
- if project_or_group.is_a?(Namespace)
- namespace_environments
- else
- project_environments
- end
- end
-
- def namespace_environments
- # We assume reporter access is needed for the :read_environment permission
- # here. This expection is also present in
- # IssuableFinder::Params#min_access_level, which is used for filtering out
- # merge requests that don't have the right permissions.
- #
- # We use this approach so we don't need to load every project into memory
- # just to verify if we can see their environments. Doing so would not be
- # efficient, and possibly mess up pagination if certain projects are not
- # meant to be visible.
- projects = project_or_group
- .all_projects
- .public_or_visible_to_user(current_user, Gitlab::Access::REPORTER)
-
- Environment.for_project(projects)
- end
-
- def project_environments
- if Ability.allowed?(current_user, :read_environment, project_or_group)
- project_or_group.environments
- else
- Environment.none
- end
- end
-end