aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2020-07-03 09:17:14 +0100
committerChristopher Baines <mail@cbaines.net>2020-07-03 09:21:22 +0100
commit8bb64fd8f5479a4d3e7f6689340ef43c5da88d53 (patch)
treefff538525a3a4f118605685e4bd8a3d971696c2d
parent8a7e7b537eeb99e341917b14af87146cf74f96fe (diff)
downloadbuild-coordinator-8bb64fd8f5479a4d3e7f6689340ef43c5da88d53.tar
build-coordinator-8bb64fd8f5479a4d3e7f6689340ef43c5da88d53.tar.gz
Add datastore-find-build-derivation-system
-rw-r--r--guix-build-coordinator/datastore.scm1
-rw-r--r--guix-build-coordinator/datastore/sqlite.scm27
2 files changed, 28 insertions, 0 deletions
diff --git a/guix-build-coordinator/datastore.scm b/guix-build-coordinator/datastore.scm
index 547d56b..1c3a458 100644
--- a/guix-build-coordinator/datastore.scm
+++ b/guix-build-coordinator/datastore.scm
@@ -35,6 +35,7 @@
(re-export datastore-for-each-build)
(re-export datastore-find-build)
(re-export datastore-find-build-result)
+(re-export datastore-find-build-derivation-system)
(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 c1a0836..960b49c 100644
--- a/guix-build-coordinator/datastore/sqlite.scm
+++ b/guix-build-coordinator/datastore/sqlite.scm
@@ -21,6 +21,7 @@
datastore-for-each-build
datastore-find-build
datastore-find-build-result
+ datastore-find-build-derivation-system
datastore-list-builds-for-derivation
datastore-count-build-results
datastore-store-build-result
@@ -903,6 +904,32 @@ WHERE build_id = :build_id")))
result)))))
+(define-method (datastore-find-build-derivation-system
+ (datastore <sqlite-datastore>)
+ build-id)
+ (call-with-worker-thread
+ (slot-ref datastore 'worker-reader-thread-channel)
+ (lambda (db)
+ (let ((statement
+ (sqlite-prepare
+ db
+ "
+SELECT derivations.system
+FROM builds
+INNER JOIN derivations ON builds.derivation_name = derivations.name
+WHERE builds.uuid = :build_id")))
+
+ (sqlite-bind-arguments
+ statement
+ #:build_id build-id)
+
+ (let ((system
+ (match (sqlite-step statement)
+ (#(system) system))))
+ (sqlite-reset statement)
+
+ system)))))
+
(define-method (datastore-list-builds-for-output
(datastore <sqlite-datastore>)
output)