Commit 202df2fb authored by Kamil Trzciński's avatar Kamil Trzciński

Backport support project security dashboard changes

parent ec37e707
...@@ -181,22 +181,31 @@ module Ci ...@@ -181,22 +181,31 @@ module Ci
# #
# ref - The name (or names) of the branch(es)/tag(s) to limit the list of # ref - The name (or names) of the branch(es)/tag(s) to limit the list of
# pipelines to. # pipelines to.
def self.newest_first(ref = nil) # limit - This limits a backlog search, default to 100.
def self.newest_first(ref: nil, limit: 100)
relation = order(id: :desc) relation = order(id: :desc)
relation = relation.where(ref: ref) if ref
if limit
ids = relation.limit(limit).select(:id)
# MySQL does not support limit in subquery
ids = ids.pluck(:id) if Gitlab::Database.mysql?
relation = relation.where(id: ids)
end
ref ? relation.where(ref: ref) : relation relation
end end
def self.latest_status(ref = nil) def self.latest_status(ref = nil)
newest_first(ref).pluck(:status).first newest_first(ref: ref).pluck(:status).first
end end
def self.latest_successful_for(ref) def self.latest_successful_for(ref)
newest_first(ref).success.take newest_first(ref: ref).success.take
end end
def self.latest_successful_for_refs(refs) def self.latest_successful_for_refs(refs)
relation = newest_first(refs).success relation = newest_first(ref: refs).success
relation.each_with_object({}) do |pipeline, hash| relation.each_with_object({}) do |pipeline, hash|
hash[pipeline.ref] ||= pipeline hash[pipeline.ref] ||= pipeline
......
...@@ -1043,6 +1043,11 @@ describe Ci::Pipeline, :mailer do ...@@ -1043,6 +1043,11 @@ describe Ci::Pipeline, :mailer do
expect(described_class.newest_first.pluck(:status)) expect(described_class.newest_first.pluck(:status))
.to eq(%w[skipped failed success canceled]) .to eq(%w[skipped failed success canceled])
end end
it 'searches limited backlog' do
expect(described_class.newest_first(limit: 1).pluck(:status))
.to eq(%w[skipped])
end
end end
describe '.latest_status' do describe '.latest_status' do
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment