aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2020-04-27 22:21:55 +0100
committerChristopher Baines <mail@cbaines.net>2020-04-27 22:24:54 +0100
commit5d953a046d421851b915278cc377ae03f059d8a7 (patch)
treed69216fb0b8167c6bf19db7273ddb357da503ad5
parentc73d64fc809e486c87e554d27dcba250d9519a15 (diff)
downloadbuild-coordinator-5d953a046d421851b915278cc377ae03f059d8a7.tar
build-coordinator-5d953a046d421851b915278cc377ae03f059d8a7.tar.gz
Add datastore-find-build-result
-rw-r--r--guix-build-coordinator/datastore.scm1
-rw-r--r--guix-build-coordinator/datastore/sqlite.scm29
2 files changed, 30 insertions, 0 deletions
diff --git a/guix-build-coordinator/datastore.scm b/guix-build-coordinator/datastore.scm
index c636d1d..7e5f502 100644
--- a/guix-build-coordinator/datastore.scm
+++ b/guix-build-coordinator/datastore.scm
@@ -26,6 +26,7 @@
(re-export datastore-agent-password-exists?)
(re-export datastore-count-builds)
(re-export datastore-find-build)
+(re-export datastore-find-build-result)
(re-export datastore-list-builds-for-derivation)
(re-export datastore-list-processed-builds)
(re-export datastore-list-unprocessed-builds)
diff --git a/guix-build-coordinator/datastore/sqlite.scm b/guix-build-coordinator/datastore/sqlite.scm
index e691d57..95e4101 100644
--- a/guix-build-coordinator/datastore/sqlite.scm
+++ b/guix-build-coordinator/datastore/sqlite.scm
@@ -15,6 +15,7 @@
datastore-store-build
datastore-count-builds
datastore-find-build
+ datastore-find-build-result
datastore-list-builds-for-derivation
datastore-count-build-results
datastore-store-build-result
@@ -534,6 +535,34 @@ WHERE uuid = :uuid")))
result)))))
+(define-method (datastore-find-build-result
+ (datastore <sqlite-datastore>)
+ build-id)
+ (call-with-worker-thread
+ (slot-ref datastore 'worker-thread-channel)
+ (lambda (db)
+ (let ((statement
+ (sqlite-prepare
+ db
+ "
+SELECT agent_id, result, failure_reason
+FROM build_results
+WHERE build_id = :build_id")))
+
+ (sqlite-bind-arguments
+ statement
+ #:build_id build-id)
+
+ (let ((result
+ (match (sqlite-step statement)
+ (#(agent_id result failure_reason)
+ `((agent_id . ,agent_id)
+ (result . ,result)
+ (failure_reason . ,failure_reason))))))
+ (sqlite-reset statement)
+
+ result)))))
+
(define-method (datastore-list-builds-for-output
(datastore <sqlite-datastore>)
output)