guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

03/03: Add a JSON page for repository branches


From: Christopher Baines
Subject: 03/03: Add a JSON page for repository branches
Date: Sun, 27 Sep 2020 11:33:21 -0400 (EDT)

cbaines pushed a commit to branch master
in repository data-service.

commit 033858410bed1dfa1efbb5c48a900eb59fcfc813
Author: Christopher Baines <mail@cbaines.net>
AuthorDate: Sun Sep 27 16:32:56 2020 +0100

    Add a JSON page for repository branches
---
 guix-data-service/web/repository/controller.scm | 50 +++++++++++++++++++------
 scripts/guix-data-service-process-job.in        | 14 +++++--
 2 files changed, 49 insertions(+), 15 deletions(-)

diff --git a/guix-data-service/web/repository/controller.scm 
b/guix-data-service/web/repository/controller.scm
index e8e1b52..d3c6ab5 100644
--- a/guix-data-service/web/repository/controller.scm
+++ b/guix-data-service/web/repository/controller.scm
@@ -64,19 +64,45 @@
     (('GET "repository" id)
      (match (select-git-repository conn id)
        ((label url cgit-url-base)
-        (render-html
-         #:sxml
-         (view-git-repository
-          (string->number id)
-          label url cgit-url-base
-          (all-branches-with-most-recent-commit conn
-                                                (string->number id)))))
+        (let ((branches
+               (all-branches-with-most-recent-commit conn
+                                                     (string->number id))))
+          (case (most-appropriate-mime-type
+                 '(application/json text/html)
+                 mime-types)
+            ((application/json)
+             (render-json
+              `((id . ,id)
+                (label . ,label)
+                (url . ,url)
+                (branches
+                 . ,(list->vector
+                     (map (match-lambda
+                            ((name commit date revision-exists? job-events)
+                             `((name . ,name)
+                               (commit . ,commit))))
+                          branches))))))
+            (else
+             (render-html
+              #:sxml
+              (view-git-repository
+               (string->number id)
+               label url cgit-url-base
+               branches))))))
        (#f
-        (render-html
-         #:sxml (general-not-found
-                 "Repository not found"
-                 "")
-         #:code 404))))
+        (case (most-appropriate-mime-type
+               '(application/json text/html)
+               mime-types)
+          ((application/json)
+           (render-json
+            '((error . "Repository not found"))
+            #:code 404))
+          (else
+           (render-html
+            #:sxml (general-not-found
+                    "Repository not found"
+                    "")
+            #:code 404))))))
     (('GET "repository" repository-id "branch" branch-name)
      (let ((parsed-query-parameters
             (parse-query-parameters
diff --git a/scripts/guix-data-service-process-job.in 
b/scripts/guix-data-service-process-job.in
index 3572cdb..04b9881 100644
--- a/scripts/guix-data-service-process-job.in
+++ b/scripts/guix-data-service-process-job.in
@@ -26,6 +26,8 @@
              (srfi srfi-37)
              (ice-9 match)
              (guix-data-service database)
+             (guix-data-service data-deletion)
+             (guix-data-service model 
package-derivation-by-guix-revision-range)
              (guix-data-service jobs load-new-guix-revision))
 
 (setvbuf (current-output-port) 'line)
@@ -36,6 +38,12 @@
 ;; Make stack traces more useful
 (setenv "COLUMNS" "256")
 
-(match (command-line)
-  ((name job)
-   (process-load-new-guix-revision-job job)))
+;; (with-postgresql-connection
+;;  "foo"
+;;  rebuild-package-derivations-table)
+;;(delete-revisions-for-all-branches-except-most-recent-n 100)
+(delete-unreferenced-derivations)
+
+;; (match (command-line)
+;;   ((name job)
+;;    (process-load-new-guix-revision-job job)))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]