Query for outputs when build events arrive

This will keep the substitute information more up to date.
This commit is contained in:
Christopher Baines 2023-06-09 11:48:27 +01:00
parent 7524d23b44
commit 5c9ec28cb5
4 changed files with 104 additions and 4 deletions

View file

@ -26,6 +26,7 @@
#:use-module (guix-data-service model derivation)
#:use-module (guix-data-service model system)
#:export (select-build-stats
select-build-outputs
select-builds-with-context
select-builds-with-context-by-derivation-file-name
select-builds-with-context-by-derivation-output
@ -121,6 +122,40 @@ ORDER BY status"))
((sql . value) value))
(filter pair? criteria))))))
(define (select-build-outputs conn build-id)
(match (exec-query
conn
"
SELECT derivation_file_name, derivation_output_details_set_id
FROM builds
WHERE builds.id = $1"
(list (number->string build-id)))
(((derivation-file-name output-details-set-id))
(if output-details-set-id
(exec-query
conn
"
SELECT derivation_output_details.path
FROM derivation_output_details
INNER JOIN derivation_output_details_sets
ON ARRAY[derivation_output_details.id] &&
derivation_output_details_sets.derivation_output_details_ids
WHERE derivation_output_details_sets.id = $1"
(list output-details-set-id))
(exec-query
conn
"
SELECT derivation_output_details.path
FROM derivations
INNER JOIN derivation_outputs
ON derivations.id = derivation_outputs.derivation_id
INNER JOIN derivation_output_details
ON derivation_outputs.derivation_output_details_id
= derivation_output_details.id
WHERE derivations.file_name = $1"
(list derivation-file-name))))))
(define* (select-builds-with-context conn build-statuses build-server-ids
#:key revision-commit
system target