aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--guix-build-coordinator/datastore.scm1
-rw-r--r--guix-build-coordinator/datastore/sqlite.scm23
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