diff options
author | Mathieu Othacehe <m.othacehe@gmail.com> | 2018-04-19 11:17:42 +0200 |
---|---|---|
committer | Mathieu Othacehe <m.othacehe@gmail.com> | 2018-04-19 11:17:42 +0200 |
commit | c40e61bd3e9c4d1ceca53002c7bc21ff0754cfff (patch) | |
tree | 7fe7a78cfa153afeb5e44cd4e6a976e8bac0d220 /src | |
parent | 238f856e48ee333ed3e19fa32ce5e1742c650c67 (diff) | |
download | cuirass-c40e61bd3e9c4d1ceca53002c7bc21ff0754cfff.tar cuirass-c40e61bd3e9c4d1ceca53002c7bc21ff0754cfff.tar.gz |
http: Add /api/evaluations route.
* src/cuirass/database.scm (db-get-evaluations): New exported procedure.
* src/cuirass/http.scm (url-handler): Add /api/evaluations route.
* tests/http.scm ("http"): Add /api/evaluations test route.
Diffstat (limited to 'src')
-rw-r--r-- | src/cuirass/database.scm | 15 | ||||
-rw-r--r-- | src/cuirass/http.scm | 11 |
2 files changed, 26 insertions, 0 deletions
diff --git a/src/cuirass/database.scm b/src/cuirass/database.scm index 4dda862..8437475 100644 --- a/src/cuirass/database.scm +++ b/src/cuirass/database.scm @@ -45,6 +45,7 @@ db-update-build-status! db-get-build db-get-builds + db-get-evaluations read-sql-file read-quoted-string sqlite-exec @@ -541,3 +542,17 @@ INSERT INTO Stamps (specification, stamp) VALUES (" (assq-ref spec #:name) ", " commit ");") (sqlite-exec db "UPDATE Stamps SET stamp=" commit "WHERE specification=" (assq-ref spec #:name) ";"))) + +(define (db-get-evaluations db limit) + (let loop ((rows (sqlite-exec db "SELECT id, specification, revision +FROM Evaluations ORDER BY id DESC LIMIT " limit ";")) + (evaluations '())) + (match rows + (() evaluations) + ((#(id specification revision) + . rest) + (loop rest + (cons `((#:id . ,id) + (#:specification . ,specification) + (#:revision . ,revision)) + evaluations)))))) diff --git a/src/cuirass/http.scm b/src/cuirass/http.scm index 31960ac..e911b9b 100644 --- a/src/cuirass/http.scm +++ b/src/cuirass/http.scm @@ -186,6 +186,17 @@ Hydra format." (#f (respond-build-not-found build-id))) (respond-build-not-found build-id)))) + (("api" "evaluations") + (let* ((params (request-parameters request)) + ;; 'nr parameter is mandatory to limit query size. + (nr (match (assq-ref params 'nr) + ((val) val) + (_ #f)))) + (if nr + (respond-json (object->json-string + (with-critical-section db-channel (db) + (db-get-evaluations db nr)))) + (respond-json-with-error 500 "Parameter not defined!")))) (("api" "latestbuilds") (let* ((params (request-parameters request)) ;; 'nr parameter is mandatory to limit query size. |