diff options
author | Krasimir Angelov <kangelov@gitlab.com> | 2019-07-08 17:51:07 +0300 |
---|---|---|
committer | Krasimir Angelov <kangelov@gitlab.com> | 2019-07-08 17:51:07 +0300 |
commit | d68b0d43c05abbde0742c426022978b343c59fcb (patch) | |
tree | 3f07c5444cc30f40cac899fea3748a606920974d | |
parent | 99dde37070083f1440588d0abec0f6c23e9e9f7e (diff) | |
download | gitlab-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.rb | 8 | ||||
-rw-r--r-- | app/models/environment.rb | 1 |
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 |