diff options
Diffstat (limited to 'guix-data-service/jobs/load-new-guix-revision.scm')
-rw-r--r-- | guix-data-service/jobs/load-new-guix-revision.scm | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/guix-data-service/jobs/load-new-guix-revision.scm b/guix-data-service/jobs/load-new-guix-revision.scm index c741f55..2d1fe09 100644 --- a/guix-data-service/jobs/load-new-guix-revision.scm +++ b/guix-data-service/jobs/load-new-guix-revision.scm @@ -2,6 +2,7 @@ #:use-module (srfi srfi-1) #:use-module (ice-9 match) #:use-module (ice-9 hash-table) + #:use-module (json) #:use-module (squee) #:use-module (guix monads) #:use-module (guix store) @@ -23,6 +24,7 @@ #:use-module (guix-data-service model derivation) #:export (process-next-load-new-guix-revision-job select-job-for-commit + select-jobs-and-events enqueue-load-new-guix-revision-job most-recent-n-load-new-guix-revision-jobs)) @@ -459,6 +461,36 @@ RETURNING id;") (list commit)))) result)) +(define (select-jobs-and-events conn) + (define query + " +SELECT + load_new_guix_revision_jobs.id, + load_new_guix_revision_jobs.commit, + load_new_guix_revision_jobs.source, + load_new_guix_revision_jobs.git_repository_id, + load_new_guix_revision_jobs.created_at, + load_new_guix_revision_jobs.succeeded_at, + ( + SELECT JSON_AGG( + json_build_object('event', event, 'occurred_at', occurred_at) ORDER BY occurred_at ASC + ) + FROM load_new_guix_revision_job_events + WHERE job_id = load_new_guix_revision_jobs.id + ) + FROM load_new_guix_revision_jobs +ORDER BY load_new_guix_revision_jobs.id DESC") + + (map + (match-lambda + ((id commit source git-repository-id created-at succeeded-at + events-json) + (list id commit source git-repository-id created-at succeeded-at + (if (string-null? events-json) + #() + (json-string->scm events-json))))) + (exec-query conn query))) + (define (most-recent-n-load-new-guix-revision-jobs conn n) (let ((result (exec-query |