From ce521f0277c8db6ff8193b7d1b8fcff74b440024 Mon Sep 17 00:00:00 2001 From: Konstantin Haase Date: Thu, 21 May 2015 17:49:37 +0200 Subject: [PATCH] v3: start working on jobs api --- lib/travis/api/v3/queries/jobs.rb | 14 ++++++++++++++ lib/travis/api/v3/routes.rb | 1 + lib/travis/api/v3/services/owner/pending_jobs.rb | 11 +++++++++++ 3 files changed, 26 insertions(+) create mode 100644 lib/travis/api/v3/queries/jobs.rb create mode 100644 lib/travis/api/v3/services/owner/pending_jobs.rb diff --git a/lib/travis/api/v3/queries/jobs.rb b/lib/travis/api/v3/queries/jobs.rb new file mode 100644 index 00000000..5788f00b --- /dev/null +++ b/lib/travis/api/v3/queries/jobs.rb @@ -0,0 +1,14 @@ +module Travis::API::V3 + class Queries::Jobs < Query + PENDING = %w[started queued created] + private_constant :PENDING + + def pending(*repos) + for_owner(owner, state: PENDING) + end + + def for_repos(*repos, **filters) + Models::Job.where(repository_id: repos.map(&:id), **filters) + end + end +end diff --git a/lib/travis/api/v3/routes.rb b/lib/travis/api/v3/routes.rb index a828f295..43302712 100644 --- a/lib/travis/api/v3/routes.rb +++ b/lib/travis/api/v3/routes.rb @@ -12,6 +12,7 @@ module Travis::API::V3 route '/owner/({owner.login}|{user.login}|{organization.login})' get :find get :repositories, '/repos' + get :pending_jobs, '/queue' end resource :repository do diff --git a/lib/travis/api/v3/services/owner/pending_jobs.rb b/lib/travis/api/v3/services/owner/pending_jobs.rb new file mode 100644 index 00000000..69ea7eb0 --- /dev/null +++ b/lib/travis/api/v3/services/owner/pending_jobs.rb @@ -0,0 +1,11 @@ +module Travis::API::V3 + class Services::Owner::PendingJobs < Service + result_type :jobs + + def run! + unfiltered = query(:repositories).for_owner(find(:owner)) + repositories = access_control.visible_repositories(unfiltered) + query(:jobs).pending(*repositories) + end + end +end