From 73ec1d496e53efff5d1d0dfcc2ddcbc2b9ae695d Mon Sep 17 00:00:00 2001 From: Konstantin Haase Date: Fri, 21 Aug 2015 18:46:42 +0200 Subject: [PATCH] v3: allow filtering builds by event_type, state and previous_state --- lib/travis/api/v3/queries/builds.rb | 7 ++++++- lib/travis/api/v3/query.rb | 4 ++++ lib/travis/api/v3/services/builds/find.rb | 1 + 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/lib/travis/api/v3/queries/builds.rb b/lib/travis/api/v3/queries/builds.rb index 4a533ce1..286fa347 100644 --- a/lib/travis/api/v3/queries/builds.rb +++ b/lib/travis/api/v3/queries/builds.rb @@ -1,11 +1,16 @@ module Travis::API::V3 class Queries::Builds < Query + params :state, :event_type, :previous_state, prefix: :build + def find(repository) filter(repository.builds) end def filter(list) - # filtering by branch, type, etc would go here + list = list.where(state: list(state)) if state + list = list.where(previous_state: list(previous_state)) if previous_state + list = list.where(event_type: list(state)) if event_type + list = list.includes(:commit).includes(branch: :last_build).includes(:repository) list = list.includes(branch: { last_build: :commit }) if includes? 'build.commit'.freeze list diff --git a/lib/travis/api/v3/query.rb b/lib/travis/api/v3/query.rb index 5c89da27..ae8d1efc 100644 --- a/lib/travis/api/v3/query.rb +++ b/lib/travis/api/v3/query.rb @@ -51,6 +51,10 @@ module Travis::API::V3 !!value end + def list(value) + value.split(?,.freeze) + end + def user_condition(value) case value when String then { login: value } diff --git a/lib/travis/api/v3/services/builds/find.rb b/lib/travis/api/v3/services/builds/find.rb index 9c2a69f9..720fe8a1 100644 --- a/lib/travis/api/v3/services/builds/find.rb +++ b/lib/travis/api/v3/services/builds/find.rb @@ -1,5 +1,6 @@ module Travis::API::V3 class Services::Builds::Find < Service + params :state, :event_type, :previous_state, prefix: :build paginate def run!