diff options
author | Christopher Baines <mail@cbaines.net> | 2020-11-24 20:46:18 +0000 |
---|---|---|
committer | Christopher Baines <mail@cbaines.net> | 2020-11-24 21:24:32 +0000 |
commit | 4b6c97e71cffa99083990d77d958108a052e4681 (patch) | |
tree | 412a4f6565445be04f15f4e9c7780c53a811f5a9 /guix-build-coordinator/datastore | |
parent | 037bd18464f00d72affff442fa7a7fa8107f52e3 (diff) | |
download | build-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.scm | 35 |
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) |