guix-commits
[Top][All Lists]
Advanced

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

03/03: Improve the parse-commit invalid parameter handling


From: Christopher Baines
Subject: 03/03: Improve the parse-commit invalid parameter handling
Date: Sat, 28 Nov 2020 14:40:06 -0500 (EST)

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

commit de3ca9d07423b33cf7441df7374f798df3eb4c67
Author: Christopher Baines <mail@cbaines.net>
AuthorDate: Sat Nov 28 19:36:47 2020 +0000

    Improve the parse-commit invalid parameter handling
---
 guix-data-service/web/compare/controller.scm | 34 ++++++++++++++++++++++------
 1 file changed, 27 insertions(+), 7 deletions(-)

diff --git a/guix-data-service/web/compare/controller.scm 
b/guix-data-service/web/compare/controller.scm
index 17da52c..b970904 100644
--- a/guix-data-service/web/compare/controller.scm
+++ b/guix-data-service/web/compare/controller.scm
@@ -53,13 +53,33 @@
   s)
 
 (define (parse-commit s)
-  (if (parallel-via-thread-pool-channel
-       (with-thread-postgresql-connection
-        (lambda (conn)
-          (guix-commit-exists? conn s))))
-      s
-      (make-invalid-query-parameter
-       s "unknown commit")))
+  (parallel-via-thread-pool-channel
+   (with-thread-postgresql-connection
+    (lambda (conn)
+      (if (guix-commit-exists? conn s)
+          s
+          (let* ((job-details
+                  (select-job-for-commit conn s))
+                 (job-state
+                  (assq-ref job-details 'state)))
+            (if job-details
+                (make-invalid-query-parameter
+                 s
+                 (cond
+                  ((string=? job-state "queued")
+                   `("data unavailable, "
+                     (a (@ (href ,(string-append
+                                   "/revision/" s)))
+                        "yet to process revision")))
+                  ((string=? job-state "failed")
+                   `("data unavailable, "
+                     (a (@ (href ,(string-append
+                                   "/revision/" s)))
+                        "failed to process revision")))
+                  (else
+                   "unknown job state")))
+                (make-invalid-query-parameter
+                 s "unknown commit"))))))))
 
 (define (parse-derivation file-name)
   (if (parallel-via-thread-pool-channel



reply via email to

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