guix-commits
[Top][All Lists]
Advanced

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

[no subject]


From: Mathieu Othacehe
Date: Mon, 7 Dec 2020 10:14:56 -0500 (EST)

branch: master
commit ac2187ff6b10c7a1e974b21e27ddea51b5e112e2
Author: Mathieu Othacehe <othacehe@gnu.org>
AuthorDate: Mon Dec 7 15:34:29 2020 +0100

    http: Add /api/evaluation route.
    
    * src/cuirass/database.scm (db-get-evaluation): New procedure.
    * src/cuirass/http.scm (url-handler): Add "/api/evaluation" route.
---
 src/cuirass/database.scm | 16 ++++++++++++++++
 src/cuirass/http.scm     |  8 ++++++++
 2 files changed, 24 insertions(+)

diff --git a/src/cuirass/database.scm b/src/cuirass/database.scm
index 3d86c1b..c160692 100644
--- a/src/cuirass/database.scm
+++ b/src/cuirass/database.scm
@@ -73,6 +73,7 @@
             db-add-event
             db-get-events
             db-delete-events-with-ids-<=-to
+            db-get-evaluation
             db-get-evaluations
             db-get-evaluations-build-summary
             db-get-evaluations-id-min
@@ -1190,6 +1191,21 @@ WHERE evaluation =" eval-id ";"))
                        (#:directory . ,directory))
                      checkouts)))))))
 
+(define (db-get-evaluation id)
+  (with-db-worker-thread db
+    (match (sqlite-exec db "SELECT id, specification, status,
+timestamp, checkouttime, evaltime
+FROM Evaluations WHERE id = " id)
+      (() #f)
+      ((#(id specification status timestamp checkouttime evaltime))
+       `((#:id . ,id)
+         (#:specification . ,specification)
+         (#:status . ,status)
+         (#:timestamp . ,timestamp)
+         (#:checkouttime . ,checkouttime)
+         (#:evaltime . ,evaltime)
+         (#:checkouts . ,(db-get-checkouts id)))))))
+
 (define (db-get-evaluations limit)
   (with-db-worker-thread db
     (let loop ((rows  (sqlite-exec db "SELECT id, specification, status,
diff --git a/src/cuirass/http.scm b/src/cuirass/http.scm
index f721917..99dc2ce 100644
--- a/src/cuirass/http.scm
+++ b/src/cuirass/http.scm
@@ -476,6 +476,14 @@ Hydra format."
                (append output
                        `((#:build . ,(or build #nil)))))))
            (respond-output-not-found id))))
+    (('GET "api" "evaluation")
+     (let* ((params (request-parameters request))
+            (id (assq-ref params 'id)))
+       (if id
+           (respond-json (object->json-string
+                          (evaluation->json-object
+                           (db-get-evaluation id))))
+           (respond-json-with-error 500 "Parameter not defined!"))))
     (('GET "api" "evaluations")
      (let* ((params (request-parameters request))
             ;; 'nr parameter is mandatory to limit query size.



reply via email to

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