aboutsummaryrefslogtreecommitdiff
path: root/guix-data-service/model/git-branch.scm
diff options
context:
space:
mode:
Diffstat (limited to 'guix-data-service/model/git-branch.scm')
-rw-r--r--guix-data-service/model/git-branch.scm66
1 files changed, 52 insertions, 14 deletions
diff --git a/guix-data-service/model/git-branch.scm b/guix-data-service/model/git-branch.scm
index 43774ed..985fd0d 100644
--- a/guix-data-service/model/git-branch.scm
+++ b/guix-data-service/model/git-branch.scm
@@ -1,5 +1,6 @@
(define-module (guix-data-service model git-branch)
#:use-module (ice-9 match)
+ #:use-module (json)
#:use-module (squee)
#:use-module (srfi srfi-19)
#:use-module (guix-data-service model utils)
@@ -55,7 +56,15 @@ WHERE git_branches.commit = $1")
(define query
(string-append
"SELECT git_branches.commit, datetime, "
- "(guix_revisions.id IS NOT NULL) as guix_revision_exists "
+ "(guix_revisions.id IS NOT NULL) as guix_revision_exists, "
+ "(
+ SELECT json_agg(event)
+ FROM load_new_guix_revision_job_events
+ INNER JOIN load_new_guix_revision_jobs ON
+ load_new_guix_revision_jobs.id = load_new_guix_revision_job_events.job_id
+ WHERE load_new_guix_revision_jobs.commit = git_branches.commit AND
+ git_branches.git_repository_id = load_new_guix_revision_jobs.git_repository_id
+ ) AS job_events "
"FROM git_branches "
"LEFT OUTER JOIN guix_revisions ON git_branches.commit = guix_revisions.commit "
"WHERE name = $1 "
@@ -72,10 +81,19 @@ WHERE git_branches.commit = $1")
(simple-format #f " LIMIT ~A;" limit)
"")))
- (exec-query
- conn
- query
- (list branch-name)))
+ (map
+ (match-lambda
+ ((commit datetime guix_revision_exists job_events)
+ (list commit
+ datetime
+ (string=? guix_revision_exists "t")
+ (if (string=? job_events "")
+ '()
+ (vector->list (json-string->scm job_events))))))
+ (exec-query
+ conn
+ query
+ (list branch-name))))
(define* (latest-processed-commit-for-branch conn branch-name)
(define query
@@ -99,14 +117,34 @@ WHERE git_branches.commit = $1")
(define (all-branches-with-most-recent-commit conn)
(define query
(string-append
- "SELECT DISTINCT ON (name) name, git_branches.commit, "
- "datetime, (guix_revisions.id IS NOT NULL) guix_revision_exists "
- "FROM git_branches "
- "LEFT OUTER JOIN guix_revisions ON git_branches.commit = guix_revisions.commit "
- "WHERE git_branches.commit IS NOT NULL "
- "ORDER BY name, datetime DESC;"))
+ "
+SELECT DISTINCT ON (name)
+ name, git_branches.commit,
+ datetime, (guix_revisions.id IS NOT NULL) guix_revision_exists,
+ (
+ SELECT json_agg(event)
+ FROM load_new_guix_revision_job_events
+ INNER JOIN load_new_guix_revision_jobs ON
+ load_new_guix_revision_jobs.id = load_new_guix_revision_job_events.job_id
+ WHERE load_new_guix_revision_jobs.commit = git_branches.commit AND
+ git_branches.git_repository_id = load_new_guix_revision_jobs.git_repository_id
+ ) AS job_events
+FROM git_branches
+LEFT OUTER JOIN guix_revisions ON git_branches.commit = guix_revisions.commit
+WHERE git_branches.commit IS NOT NULL
+ORDER BY name, datetime DESC;"))
- (exec-query
- conn
- query))
+ (map
+ (match-lambda
+ ((name commit datetime guix_revision_exists job_events)
+ (list name
+ commit
+ datetime
+ (string=? guix_revision_exists "t")
+ (if (string=? job_events "")
+ '()
+ (vector->list (json-string->scm job_events))))))
+ (exec-query
+ conn
+ query)))