From c355c425846efd235ef27aca003278667cac872f Mon Sep 17 00:00:00 2001 From: Christopher Baines Date: Sat, 15 Feb 2020 21:28:09 +0000 Subject: Enhance ensure-build-exists Support calling it with derivation-output-details-set-id, which can be used when querying for builds. --- guix-data-service/model/build.scm | 34 ++++++++++++++++++++++++---------- 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/guix-data-service/model/build.scm b/guix-data-service/model/build.scm index 891e491..4e6e032 100644 --- a/guix-data-service/model/build.scm +++ b/guix-data-service/model/build.scm @@ -374,7 +374,8 @@ UPDATE builds SET derivation_output_details_set_id = ( build-ids)) -(define (insert-build conn build-server-id derivation-file-name) +(define* (insert-build conn build-server-id derivation-file-name + #:key derivation-output-details-set-id) (match (exec-query conn (string-append @@ -388,9 +389,11 @@ VALUES (" ", " (or (and=> - (select-derivations-by-output-details-set-id-by-derivation-file-name - conn - derivation-file-name) + (or + derivation-output-details-set-id + (select-derivations-by-output-details-set-id-by-derivation-file-name + conn + derivation-file-name)) number->string) "NULL") ") @@ -398,16 +401,27 @@ RETURNING (id)")) (((id)) (string->number id)))) -(define (ensure-build-exists conn - build-server-id - derivation-file-name) +(define* (ensure-build-exists conn + build-server-id + derivation-file-name + #:key derivation-output-details-set-id) (let ((existing-build-id (select-build-id-by-build-server-and-derivation-file-name conn build-server-id derivation-file-name))) (if existing-build-id - existing-build-id + (begin + (exec-query + conn + " +UPDATE builds SET derivation_output_details_set_id = $2 +WHERE builds.id = $1 AND derivation_output_details_set_id IS NULL" + (list (number->string existing-build-id) + (number->string derivation-output-details-set-id))) + + existing-build-id) (insert-build conn build-server-id - derivation-file-name)))) - + derivation-file-name + #:derivation-output-details-set-id + derivation-output-details-set-id)))) -- cgit v1.2.3