Extend select-build-stats to allow filtering by revision
This commit is contained in:
parent
633e757fe8
commit
a84fc954d1
1 changed files with 39 additions and 8 deletions
|
|
@ -11,12 +11,39 @@
|
||||||
insert-build
|
insert-build
|
||||||
ensure-build-exists))
|
ensure-build-exists))
|
||||||
|
|
||||||
(define (select-build-stats conn build-servers)
|
(define* (select-build-stats conn build-servers #:key revision-commit)
|
||||||
|
(define criteria
|
||||||
|
`(,@(if build-servers
|
||||||
|
(list
|
||||||
|
(string-append
|
||||||
|
"builds.build_server_id IN ("
|
||||||
|
(string-join (map number->string build-servers)
|
||||||
|
", ")
|
||||||
|
")"))
|
||||||
|
'())
|
||||||
|
,@(if revision-commit
|
||||||
|
'("guix_revisions.commit = $1")
|
||||||
|
'())))
|
||||||
|
|
||||||
(define query
|
(define query
|
||||||
(string-append
|
(string-append
|
||||||
"
|
"
|
||||||
SELECT latest_build_status.status AS build_status, builds.build_server_id, COUNT(*)
|
SELECT latest_build_status.status AS build_status, builds.build_server_id, COUNT(*)
|
||||||
FROM derivation_output_details_sets
|
FROM derivation_output_details_sets
|
||||||
|
"
|
||||||
|
(if revision-commit
|
||||||
|
"
|
||||||
|
INNER JOIN derivations_by_output_details_set
|
||||||
|
ON derivation_output_details_sets.id =
|
||||||
|
derivations_by_output_details_set.derivation_output_details_set_id
|
||||||
|
INNER JOIN package_derivations
|
||||||
|
ON derivations_by_output_details_set.derivation_id = package_derivations.derivation_id
|
||||||
|
INNER JOIN guix_revision_package_derivations
|
||||||
|
ON guix_revision_package_derivations.package_derivation_id = package_derivations.id
|
||||||
|
INNER JOIN guix_revisions
|
||||||
|
ON guix_revision_package_derivations.revision_id = guix_revisions.id"
|
||||||
|
"")
|
||||||
|
"
|
||||||
LEFT JOIN builds
|
LEFT JOIN builds
|
||||||
ON builds.derivation_output_details_set_id =
|
ON builds.derivation_output_details_set_id =
|
||||||
derivation_output_details_sets.id
|
derivation_output_details_sets.id
|
||||||
|
|
@ -28,13 +55,11 @@ LEFT JOIN
|
||||||
) AS latest_build_status
|
) AS latest_build_status
|
||||||
ON builds.id = latest_build_status.build_id
|
ON builds.id = latest_build_status.build_id
|
||||||
"
|
"
|
||||||
(if build-servers
|
(if (null? criteria)
|
||||||
|
""
|
||||||
(string-append
|
(string-append
|
||||||
"WHERE builds.build_server_id IN ("
|
"WHERE "
|
||||||
(string-join (map number->string build-servers)
|
(string-join criteria " AND ")))
|
||||||
", ")
|
|
||||||
")")
|
|
||||||
"")
|
|
||||||
"
|
"
|
||||||
GROUP BY latest_build_status.status, builds.build_server_id
|
GROUP BY latest_build_status.status, builds.build_server_id
|
||||||
ORDER BY status"))
|
ORDER BY status"))
|
||||||
|
|
@ -47,7 +72,13 @@ ORDER BY status"))
|
||||||
(cons (string->number build-server-id)
|
(cons (string->number build-server-id)
|
||||||
(string->number count))))
|
(string->number count))))
|
||||||
data))))
|
data))))
|
||||||
(group-list-by-first-n-fields 1 (exec-query conn query))))
|
(group-list-by-first-n-fields
|
||||||
|
1
|
||||||
|
(exec-query conn
|
||||||
|
query
|
||||||
|
`(,@(if revision-commit
|
||||||
|
(list revision-commit)
|
||||||
|
'()))))))
|
||||||
|
|
||||||
(define (select-builds-with-context conn build-statuses build-server-ids)
|
(define (select-builds-with-context conn build-statuses build-server-ids)
|
||||||
(define where-conditions
|
(define where-conditions
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue