diff options
author | Christopher Baines <mail@cbaines.net> | 2020-04-23 23:01:56 +0100 |
---|---|---|
committer | Christopher Baines <mail@cbaines.net> | 2020-04-23 23:01:56 +0100 |
commit | dbf043ccfea619ec10512b85c9136eb23b614c35 (patch) | |
tree | ab66115d5b2f1b3ed6f387da45c4e7ee5a968134 | |
parent | 7c65246492183d19c25f09b27b084cb4f6fc46bb (diff) | |
download | build-coordinator-dbf043ccfea619ec10512b85c9136eb23b614c35.tar build-coordinator-dbf043ccfea619ec10512b85c9136eb23b614c35.tar.gz |
Add datastore-list-build-outputs
-rw-r--r-- | guix-build-coordinator/datastore.scm | 1 | ||||
-rw-r--r-- | guix-build-coordinator/datastore/sqlite.scm | 39 |
2 files changed, 40 insertions, 0 deletions
diff --git a/guix-build-coordinator/datastore.scm b/guix-build-coordinator/datastore.scm index 3de6fbd..e59197a 100644 --- a/guix-build-coordinator/datastore.scm +++ b/guix-build-coordinator/datastore.scm @@ -15,6 +15,7 @@ (re-export datastore-find-agent) (re-export datastore-store-build-result) (re-export datastore-fetch-setup-failures) +(re-export datastore-list-build-outputs) (re-export datastore-store-setup-failure) (re-export datastore-store-setup-failure/missing-inputs) (re-export datastore-list-setup-failure-missing-inputs) diff --git a/guix-build-coordinator/datastore/sqlite.scm b/guix-build-coordinator/datastore/sqlite.scm index 109e162..9ca552d 100644 --- a/guix-build-coordinator/datastore/sqlite.scm +++ b/guix-build-coordinator/datastore/sqlite.scm @@ -14,6 +14,7 @@ datastore-store-build datastore-find-build datastore-store-build-result + datastore-list-build-outputs datastore-new-agent datastore-list-agents datastore-find-agent @@ -831,6 +832,44 @@ WHERE derivation_name = :derivation_name"))) result))))) +(define-method (datastore-list-build-outputs + (datastore <sqlite-datastore>) + build-id) + (call-with-worker-thread + (slot-ref datastore 'worker-thread-channel) + (lambda (db) + (let ((statement + (sqlite-prepare + db + " +SELECT name, output, hash, size, store_references +FROM builds +INNER JOIN derivation_outputs + ON builds.derivation_name = derivation_outputs.derivation_name +INNER JOIN output_metadata + ON output_metadata.derivation_output_id = derivation_outputs.id + AND output_metadata.build_id = builds.uuid +WHERE builds.uuid = :build_id"))) + + (sqlite-bind-arguments + statement + #:build_id build-id) + + (let ((result + (sqlite-map + (match-lambda + (#(name output hash size store_references) + `((name . ,name) + (output . ,output) + (hash . ,hash) + (size . ,size) + (references . ,(list->vector + (string-split store_references #\space)))))) + statement))) + (sqlite-reset statement) + + result))))) + (define-method (datastore-find-derivation-system (datastore <sqlite-datastore>) derivation-name) |