diff options
author | Christopher Baines <mail@cbaines.net> | 2020-02-15 21:28:09 +0000 |
---|---|---|
committer | Christopher Baines <mail@cbaines.net> | 2020-02-15 21:28:09 +0000 |
commit | c355c425846efd235ef27aca003278667cac872f (patch) | |
tree | 1a717b0b765fbd9f7f6832a6df1ad464e308277e | |
parent | 575879577701f6b1aed30a3e598cbddc68aa7480 (diff) | |
download | data-service-c355c425846efd235ef27aca003278667cac872f.tar data-service-c355c425846efd235ef27aca003278667cac872f.tar.gz |
Enhance ensure-build-exists
Support calling it with derivation-output-details-set-id, which can be used
when querying for builds.
-rw-r--r-- | guix-data-service/model/build.scm | 34 |
1 files 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)))) |