aboutsummaryrefslogtreecommitdiff
path: root/guix-data-service/model/derivation.scm
diff options
context:
space:
mode:
Diffstat (limited to 'guix-data-service/model/derivation.scm')
-rw-r--r--guix-data-service/model/derivation.scm16
1 files changed, 13 insertions, 3 deletions
diff --git a/guix-data-service/model/derivation.scm b/guix-data-service/model/derivation.scm
index 5d900fc..49973be 100644
--- a/guix-data-service/model/derivation.scm
+++ b/guix-data-service/model/derivation.scm
@@ -605,8 +605,13 @@ VALUES ($1, $2)"
(define query
(string-append
"
-SELECT derivations.file_name, derivation_outputs.name,
- derivation_output_details.path
+SELECT derivations.file_name,
+ JSON_AGG(
+ json_build_object(
+ 'output_name', derivation_outputs.name,
+ 'store_filename', derivation_output_details.path
+ )
+ )
FROM derivation_inputs
INNER JOIN derivation_outputs
ON derivation_outputs.id = derivation_inputs.derivation_output_id
@@ -615,9 +620,14 @@ INNER JOIN derivation_output_details
INNER JOIN derivations
ON derivation_outputs.derivation_id = derivations.id
WHERE derivation_inputs.derivation_id = $1
+GROUP BY derivations.file_name
ORDER BY derivations.file_name"))
- (exec-query conn query (list (number->string id))))
+ (map (match-lambda
+ ((derivation-file-name outputs-json)
+ (list derivation-file-name
+ (json-string->scm outputs-json))))
+ (exec-query conn query (list (number->string id)))))
(define (select-derivation-sources-by-derivation-id conn id)
(define query