diff options
author | Christopher Baines <mail@cbaines.net> | 2020-04-27 22:21:55 +0100 |
---|---|---|
committer | Christopher Baines <mail@cbaines.net> | 2020-04-27 22:24:54 +0100 |
commit | 5d953a046d421851b915278cc377ae03f059d8a7 (patch) | |
tree | d69216fb0b8167c6bf19db7273ddb357da503ad5 | |
parent | c73d64fc809e486c87e554d27dcba250d9519a15 (diff) | |
download | build-coordinator-5d953a046d421851b915278cc377ae03f059d8a7.tar build-coordinator-5d953a046d421851b915278cc377ae03f059d8a7.tar.gz |
Add datastore-find-build-result
-rw-r--r-- | guix-build-coordinator/datastore.scm | 1 | ||||
-rw-r--r-- | guix-build-coordinator/datastore/sqlite.scm | 29 |
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) |