aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2019-07-29 20:39:57 +0100
committerChristopher Baines <mail@cbaines.net>2019-07-29 20:39:57 +0100
commitb075a71d1e077e644942fbc74e7200e3e81ff9be (patch)
tree6878c8db998c5d90413596e805c5410af6bbd35c
parentf2c7cc83ed28b6857e07cb6c58a4c9fee22802eb (diff)
downloaddata-service-b075a71d1e077e644942fbc74e7200e3e81ff9be.tar
data-service-b075a71d1e077e644942fbc74e7200e3e81ff9be.tar.gz
Add a function to get the cgit URL bases for revisions
To enable adding a link to cgit to the comparison page.
-rw-r--r--guix-data-service/model/guix-revision.scm21
1 files changed, 20 insertions, 1 deletions
diff --git a/guix-data-service/model/guix-revision.scm b/guix-data-service/model/guix-revision.scm
index 6966bff..85ae9b7 100644
--- a/guix-data-service/model/guix-revision.scm
+++ b/guix-data-service/model/guix-revision.scm
@@ -7,7 +7,8 @@
commit->revision-id
insert-guix-revision
guix-commit-exists?
- guix-revision-exists?))
+ guix-revision-exists?
+ guix-revisions-cgit-url-bases))
(define (count-guix-revisions conn)
(first
@@ -56,3 +57,21 @@
(let ((result (caar
(exec-query conn query))))
(string=? result "t")))
+
+(define (guix-revisions-cgit-url-bases conn guix-revision-ids)
+ (map
+ car
+ (exec-query
+ conn
+ (simple-format #f "
+SELECT cgit_url_base
+FROM git_repositories
+WHERE cgit_url_base IS NOT NULL AND id IN (
+ SELECT git_repository_id
+ FROM guix_revisions
+ WHERE id IN (VALUES ~A));"
+ (string-join
+ (map (lambda (id)
+ (string-append "(" id ")"))
+ guix-revision-ids)
+ ",")))))