diff options
author | Christopher Baines <mail@cbaines.net> | 2020-04-27 22:13:24 +0100 |
---|---|---|
committer | Christopher Baines <mail@cbaines.net> | 2020-04-27 22:13:24 +0100 |
commit | c73d64fc809e486c87e554d27dcba250d9519a15 (patch) | |
tree | b9dde5ec9ba03a84cebb02fb57fa162ed7227d3d | |
parent | c894a5ebdd9b8a0b37e7f140eac8421f3ec09089 (diff) | |
download | build-coordinator-c73d64fc809e486c87e554d27dcba250d9519a15.tar build-coordinator-c73d64fc809e486c87e554d27dcba250d9519a15.tar.gz |
Support listing processed builds
-rw-r--r-- | guix-build-coordinator/datastore.scm | 1 | ||||
-rw-r--r-- | guix-build-coordinator/datastore/sqlite.scm | 23 |
2 files changed, 24 insertions, 0 deletions
diff --git a/guix-build-coordinator/datastore.scm b/guix-build-coordinator/datastore.scm index 389bc7c..c636d1d 100644 --- a/guix-build-coordinator/datastore.scm +++ b/guix-build-coordinator/datastore.scm @@ -27,6 +27,7 @@ (re-export datastore-count-builds) (re-export datastore-find-build) (re-export datastore-list-builds-for-derivation) +(re-export datastore-list-processed-builds) (re-export datastore-list-unprocessed-builds) (re-export datastore-list-agent-builds) (re-export datastore-find-derivation-outputs) diff --git a/guix-build-coordinator/datastore/sqlite.scm b/guix-build-coordinator/datastore/sqlite.scm index aede98c..e691d57 100644 --- a/guix-build-coordinator/datastore/sqlite.scm +++ b/guix-build-coordinator/datastore/sqlite.scm @@ -33,6 +33,7 @@ datastore-list-builds-for-output datastore-new-agent-password datastore-agent-password-exists? + datastore-list-processed-builds datastore-list-unprocessed-builds datastore-list-agent-builds datastore-agent-for-build @@ -656,6 +657,28 @@ SELECT id, build_id, agent_id, failure_reason FROM setup_failures"))) result))))) +(define-method (datastore-list-processed-builds + (datastore <sqlite-datastore>)) + (call-with-worker-thread + (slot-ref datastore 'worker-thread-channel) + (lambda (db) + (let ((statement + (sqlite-prepare + db + " +SELECT uuid, derivation_name, priority FROM builds WHERE processed = 1"))) + + (let ((builds (sqlite-map + (match-lambda + (#(uuid derivation_name priority) + `((uuid . ,uuid) + (derivation-name . ,derivation_name) + (priority . ,priority)))) + statement))) + (sqlite-reset statement) + + builds))))) + (define-method (datastore-list-unprocessed-builds (datastore <sqlite-datastore>)) (call-with-worker-thread |