aboutsummaryrefslogtreecommitdiff
path: root/guix-build-coordinator/datastore
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2020-11-24 20:46:18 +0000
committerChristopher Baines <mail@cbaines.net>2020-11-24 21:24:32 +0000
commit4b6c97e71cffa99083990d77d958108a052e4681 (patch)
tree412a4f6565445be04f15f4e9c7780c53a811f5a9 /guix-build-coordinator/datastore
parent037bd18464f00d72affff442fa7a7fa8107f52e3 (diff)
downloadbuild-coordinator-4b6c97e71cffa99083990d77d958108a052e4681.tar
build-coordinator-4b6c97e71cffa99083990d77d958108a052e4681.tar.gz
Add datastore-fetch-build-tags
Diffstat (limited to 'guix-build-coordinator/datastore')
-rw-r--r--guix-build-coordinator/datastore/sqlite.scm35
1 files changed, 35 insertions, 0 deletions
diff --git a/guix-build-coordinator/datastore/sqlite.scm b/guix-build-coordinator/datastore/sqlite.scm
index c51624e..430b668 100644
--- a/guix-build-coordinator/datastore/sqlite.scm
+++ b/guix-build-coordinator/datastore/sqlite.scm
@@ -21,6 +21,7 @@
datastore-count-builds
datastore-for-each-build
datastore-find-build
+ datastore-fetch-build-tags
datastore-find-build-result
datastore-find-build-derivation-system
datastore-list-builds-for-derivation
@@ -911,6 +912,40 @@ WHERE uuid = :uuid"
result)))))
+(define-method (datastore-fetch-build-tags
+ (datastore <sqlite-datastore>)
+ build-id)
+ (call-with-worker-thread
+ (slot-ref datastore 'worker-reader-thread-channel)
+ (lambda (db)
+ (let ((statement
+ (sqlite-prepare
+ db
+ "
+SELECT key, value
+FROM tags
+INNER JOIN build_tags
+ ON tags.id = build_tags.tag_id
+WHERE build_tags.build_id = :build_id"
+ #:cache? #t)))
+
+ (sqlite-bind-arguments
+ statement
+ #:build_id build-id)
+
+ (let ((result
+ (sqlite-fold
+ (lambda (row result)
+ (match row
+ (#(key value)
+ `((,key . ,value)
+ ,@result))))
+ '()
+ statement)))
+ (sqlite-reset statement)
+
+ result)))))
+
(define-method (datastore-find-build-result
(datastore <sqlite-datastore>)
build-id)