diff options
author | ZJ van de Weg <zegerjan@gitlab.com> | 2016-05-25 15:41:25 +0300 |
---|---|---|
committer | ZJ van de Weg <zegerjan@gitlab.com> | 2016-05-25 15:41:25 +0300 |
commit | 7ae536002ac981b3d18aae8851d8d70731db29dc (patch) | |
tree | 5d0c660df87be8d8d7ac4c50bab9ce1c27cbd876 /app/finders | |
parent | 20e6e0dbe609f7b0fdd480281223a1a98d645f34 (diff) | |
parent | 318b22459bfff1cecfb1f38e381faaca3bc29bbb (diff) |
Merge branch 'master' into awardables
Diffstat (limited to 'app/finders')
-rw-r--r-- | app/finders/pipelines_finder.rb | 38 | ||||
-rw-r--r-- | app/finders/todos_finder.rb | 2 |
2 files changed, 39 insertions, 1 deletions
diff --git a/app/finders/pipelines_finder.rb b/app/finders/pipelines_finder.rb new file mode 100644 index 00000000000..c19a795d467 --- /dev/null +++ b/app/finders/pipelines_finder.rb @@ -0,0 +1,38 @@ +class PipelinesFinder + attr_reader :project + + def initialize(project) + @project = project + end + + def execute(pipelines, scope) + case scope + when 'running' + pipelines.running_or_pending + when 'branches' + from_ids(pipelines, ids_for_ref(pipelines, branches)) + when 'tags' + from_ids(pipelines, ids_for_ref(pipelines, tags)) + else + pipelines + end + end + + private + + def ids_for_ref(pipelines, refs) + pipelines.where(ref: refs).group(:ref).select('max(id)') + end + + def from_ids(pipelines, ids) + pipelines.unscoped.where(id: ids) + end + + def branches + project.repository.branches.map(&:name) + end + + def tags + project.repository.tags.map(&:name) + end +end diff --git a/app/finders/todos_finder.rb b/app/finders/todos_finder.rb index 3ba27c40504..4bd46a76087 100644 --- a/app/finders/todos_finder.rb +++ b/app/finders/todos_finder.rb @@ -36,7 +36,7 @@ class TodosFinder private def action_id? - action_id.present? && [Todo::ASSIGNED, Todo::MENTIONED].include?(action_id.to_i) + action_id.present? && [Todo::ASSIGNED, Todo::MENTIONED, Todo::BUILD_FAILED].include?(action_id.to_i) end def action_id |