aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2020-02-15 21:28:09 +0000
committerChristopher Baines <mail@cbaines.net>2020-02-15 21:28:09 +0000
commitc355c425846efd235ef27aca003278667cac872f (patch)
tree1a717b0b765fbd9f7f6832a6df1ad464e308277e
parent575879577701f6b1aed30a3e598cbddc68aa7480 (diff)
downloaddata-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.scm34
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))))