Split out inserting derivation output details sets

So that this can be used when inserting builds.
This commit is contained in:
Christopher Baines 2022-07-08 12:04:31 +01:00
parent 811256a920
commit db37d9f6a8

View file

@ -54,6 +54,7 @@
select-derivation-outputs-in-revision select-derivation-outputs-in-revision
fix-derivation-output-details-hash-encoding fix-derivation-output-details-hash-encoding
derivation-output-details->derivation-output-details-ids derivation-output-details->derivation-output-details-ids
derivation-output-details-ids->derivation-output-details-set-id
select-derivations-by-revision-name-and-version select-derivations-by-revision-name-and-version
select-derivation-inputs-by-derivation-id select-derivation-inputs-by-derivation-id
select-serialized-derivation-by-file-name select-serialized-derivation-by-file-name
@ -985,6 +986,42 @@ LOCK TABLE ONLY derivation_output_details
(assq-ref details 'recursive))) (assq-ref details 'recursive)))
derivation-output-details))) derivation-output-details)))
(define (derivation-output-details-ids->derivation-output-details-set-id
conn
derivation-output-details-ids)
(define (select-derivation-output-details-sets-id)
(match (exec-query
conn
(string-append
"
SELECT id
FROM derivation_output_details_sets
WHERE derivation_output_details_ids = ARRAY["
(string-join (map number->string
derivation-output-details-ids)
",")
"]"))
(((id))
(string->number id))
(_ #f)))
(define (insert-into-derivation-output-details-sets)
(match (exec-query
conn
(string-append
"
INSERT INTO derivation_output_details_sets (derivation_output_details_ids)
VALUES (ARRAY["
(string-join (map number->string derivation-output-details-ids)
",")
"])
RETURNING id"))
(((id))
(string->number id))))
(or (select-derivation-output-details-sets-id)
(insert-into-derivation-output-details-sets)))
(define (insert-derivation-outputs conn (define (insert-derivation-outputs conn
derivation-id derivation-id
names-and-derivation-outputs) names-and-derivation-outputs)
@ -1004,37 +1041,6 @@ LOCK TABLE ONLY derivation_output_details
",") ",")
";")) ";"))
(define (select-derivation-output-details-sets-id derivation-output-details-ids)
(match (exec-query
conn
(string-append
"
SELECT id
FROM derivation_output_details_sets
WHERE derivation_output_details_ids = ARRAY["
(string-join (map number->string
derivation-output-details-ids)
",")
"]"))
(((id))
(string->number id))
(_ #f)))
(define (insert-into-derivation-output-details-sets
derivation-output-details-ids)
(match (exec-query
conn
(string-append
"
INSERT INTO derivation_output_details_sets (derivation_output_details_ids)
VALUES (ARRAY["
(string-join (map number->string derivation-output-details-ids)
",")
"])
RETURNING id"))
(((id))
(string->number id))))
(define (insert-into-derivations-by-output-details-set (define (insert-into-derivations-by-output-details-set
derivation_output_details_set_id) derivation_output_details_set_id)
(exec-query (exec-query
@ -1072,9 +1078,9 @@ VALUES ($1, $2)"
derivation-output-details-ids)) derivation-output-details-ids))
(insert-into-derivations-by-output-details-set (insert-into-derivations-by-output-details-set
(or (derivation-output-details-ids->derivation-output-details-set-id
(select-derivation-output-details-sets-id derivation-output-details-ids) conn
(insert-into-derivation-output-details-sets derivation-output-details-ids))) derivation-output-details-ids))
derivation-output-details-ids)) derivation-output-details-ids))