summaryrefslogtreecommitdiff
path: root/app/models/group.rb
diff options
context:
space:
mode:
authorShinya Maeda <shinya@gitlab.com>2017-07-05 17:55:48 +0900
committerShinya Maeda <shinya@gitlab.com>2017-07-07 15:35:12 +0900
commit5cb45b6a44a2cefff4f9cd7d5fd0b98b51416e94 (patch)
tree7e61820f5d13b39f3f4be554abf348b34330e84a /app/models/group.rb
parentbd846f7d93d1c7fd1d7ffdf097be88cf4ddf6581 (diff)
downloadgitlab-ce-5cb45b6a44a2cefff4f9cd7d5fd0b98b51416e94.tar.gz
Add CASE When Clause for saving order when using where IN
Diffstat (limited to 'app/models/group.rb')
-rw-r--r--app/models/group.rb10
1 files changed, 9 insertions, 1 deletions
diff --git a/app/models/group.rb b/app/models/group.rb
index 480b90b279e..ece68cd3753 100644
--- a/app/models/group.rb
+++ b/app/models/group.rb
@@ -251,7 +251,15 @@ class Group < Namespace
def secret_variables_for(ref, project)
list_of_ids = ([self] + ancestors).map { |l| l.id }
- variables = Ci::GroupVariable.where("group_id IN (#{list_of_ids.join(", ")})")
+
+ order = list_of_ids.map.with_index do |id, index|
+ "WHEN #{id} THEN #{index}"
+ end.join("\n")
+
+ variables = Ci::GroupVariable
+ .where("group_id IN (#{list_of_ids.join(", ")})")
+ .order("CASE group_id #{order} END DESC")
+
project.protected_for?(ref) ? variables : variables.unprotected
end