Add a function to select channel instances for a revision
This commit is contained in:
parent
7326e8b3bb
commit
7306df0a0f
1 changed files with 49 additions and 1 deletions
|
|
@ -23,7 +23,8 @@
|
|||
#:use-module (guix utils)
|
||||
#:use-module (guix-data-service model utils)
|
||||
#:use-module (guix-data-service model derivation)
|
||||
#:export (insert-channel-instances))
|
||||
#:export (insert-channel-instances
|
||||
select-channel-instances-for-guix-revision))
|
||||
|
||||
(define (insert-channel-instances conn
|
||||
guix-revision-id
|
||||
|
|
@ -50,3 +51,50 @@ VALUES "
|
|||
derivation-ids)
|
||||
", "))))
|
||||
#t)
|
||||
|
||||
(define (select-channel-instances-for-guix-revision conn
|
||||
commit-hash)
|
||||
(define query
|
||||
"
|
||||
SELECT channel_instances.system,
|
||||
derivations.file_name,
|
||||
JSON_AGG(
|
||||
json_build_object(
|
||||
'build_server_id', builds.build_server_id,
|
||||
'status', latest_build_status.status,
|
||||
'timestamp', latest_build_status.timestamp,
|
||||
'build_for_equivalent_derivation',
|
||||
builds.derivation_file_name != derivations.file_name
|
||||
)
|
||||
ORDER BY latest_build_status.timestamp
|
||||
) AS builds
|
||||
FROM channel_instances
|
||||
INNER JOIN derivations
|
||||
ON channel_instances.derivation_id = derivations.id
|
||||
INNER JOIN derivations_by_output_details_set
|
||||
ON derivations.id = derivations_by_output_details_set.derivation_id
|
||||
LEFT OUTER JOIN builds
|
||||
ON derivations_by_output_details_set.derivation_output_details_set_id =
|
||||
builds.derivation_output_details_set_id
|
||||
LEFT OUTER JOIN (
|
||||
SELECT DISTINCT ON (build_id) *
|
||||
FROM build_status
|
||||
ORDER BY build_id, timestamp DESC
|
||||
) AS latest_build_status
|
||||
ON builds.id = latest_build_status.build_id
|
||||
INNER JOIN guix_revisions
|
||||
ON guix_revisions.id = channel_instances.guix_revision_id
|
||||
WHERE guix_revisions.commit = $1
|
||||
GROUP BY channel_instances.system, derivations.file_name
|
||||
ORDER BY channel_instances.system DESC")
|
||||
|
||||
(map
|
||||
(match-lambda
|
||||
((system derivation_file_name builds-json)
|
||||
(list system
|
||||
derivation_file_name
|
||||
(filter (lambda (build)
|
||||
(assoc-ref build "status"))
|
||||
(vector->list
|
||||
(json-string->scm builds-json))))))
|
||||
(exec-query conn query (list commit-hash))))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue