summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKrasimir Angelov <kangelov@gitlab.com>2019-07-08 17:51:07 +0300
committerKrasimir Angelov <kangelov@gitlab.com>2019-07-08 17:51:07 +0300
commitd68b0d43c05abbde0742c426022978b343c59fcb (patch)
tree3f07c5444cc30f40cac899fea3748a606920974d
parent99dde37070083f1440588d0abec0f6c23e9e9f7e (diff)
downloadgitlab-ce-27644-list-only-environments-with-deployments.tar.gz
List only environments that have deployments27644-list-only-environments-with-deployments
[skip ci]
-rw-r--r--app/controllers/projects/environments_controller.rb8
-rw-r--r--app/models/environment.rb1
2 files changed, 5 insertions, 4 deletions
diff --git a/app/controllers/projects/environments_controller.rb b/app/controllers/projects/environments_controller.rb
index ecf05e6ea64..1b578604d65 100644
--- a/app/controllers/projects/environments_controller.rb
+++ b/app/controllers/projects/environments_controller.rb
@@ -17,7 +17,7 @@ class Projects::EnvironmentsController < Projects::ApplicationController
end
def index
- @environments = project.environments
+ @environments = project.environments.with_successfull_deployment
.with_state(params[:scope] || :available)
respond_to do |format|
@@ -27,8 +27,8 @@ class Projects::EnvironmentsController < Projects::ApplicationController
render json: {
environments: serialize_environments(request, response, params[:nested]),
- available_count: project.environments.available.count,
- stopped_count: project.environments.stopped.count
+ available_count: project.environments.with_successfull_deployment.available.count,
+ stopped_count: project.environments.with_successfull_deployment.stopped.count
}
end
end
@@ -37,7 +37,7 @@ class Projects::EnvironmentsController < Projects::ApplicationController
# Returns all environments for a given folder
# rubocop: disable CodeReuse/ActiveRecord
def folder
- folder_environments = project.environments.where(environment_type: params[:id])
+ folder_environments = project.environments.with_successfull_deployment.where(environment_type: params[:id])
@environments = folder_environments.with_state(params[:scope] || :available)
.order(:name)
@folder = params[:id]
diff --git a/app/models/environment.rb b/app/models/environment.rb
index b8ee54c1696..8cc90bac609 100644
--- a/app/models/environment.rb
+++ b/app/models/environment.rb
@@ -63,6 +63,7 @@ class Environment < ApplicationRecord
scope :for_project, -> (project) { where(project_id: project) }
scope :with_deployment, -> (sha) { where('EXISTS (?)', Deployment.select(1).where('deployments.environment_id = environments.id').where(sha: sha)) }
+ scope :with_successfull_deployment, -> { where('EXISTS (?)', Deployment.select(1).success.where('deployments.environment_id = environments.id')) }
state_machine :state, initial: :available do
event :start do