diff options
author | Shinya Maeda <shinya@gitlab.com> | 2017-07-05 17:55:48 +0900 |
---|---|---|
committer | Shinya Maeda <shinya@gitlab.com> | 2017-07-07 15:35:12 +0900 |
commit | 5cb45b6a44a2cefff4f9cd7d5fd0b98b51416e94 (patch) | |
tree | 7e61820f5d13b39f3f4be554abf348b34330e84a /app/models/group.rb | |
parent | bd846f7d93d1c7fd1d7ffdf097be88cf4ddf6581 (diff) | |
download | gitlab-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.rb | 10 |
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 |