Tweak using vectors in insert-derivation-outputs

This commit is contained in:
Christopher Baines 2025-03-17 10:34:06 +00:00
parent b904fdb161
commit 7fe042498f

View file

@ -1048,46 +1048,47 @@ ON CONFLICT DO NOTHING"
(number->string derivation_output_details_set_id)))) (number->string derivation_output_details_set_id))))
(let* ((derivation-outputs (let* ((derivation-outputs
(map cdr names-and-derivation-outputs)) (map cdr names-and-derivation-outputs))
(derivation-output-paths (derivation-output-paths
(map derivation-output-path (map derivation-output-path
derivation-outputs)) derivation-outputs))
(derivation-output-names (derivation-output-details-ids
(map car names-and-derivation-outputs)) (derivation-output-details->derivation-output-details-ids
conn
(map
(match-lambda
(($ <derivation-output> path hash-algo hash recursive?)
`((path . ,path)
(hash_algorithm . ,(or (and=> hash-algo symbol->string)
NULL))
(hash . ,(or (and=> hash bytevector->base16-string)
NULL))
(recursive . ,recursive?))))
derivation-outputs))))
(derivation-output-details-ids (insert-missing-data
(derivation-output-details->derivation-output-details-ids conn
conn "derivation_outputs"
(map '(derivation_id name derivation_output_details_id)
(match-lambda (let ((vec
(($ <derivation-output> path hash-algo hash recursive?) (list->vector
`((path . ,path) (map car names-and-derivation-outputs))))
(hash_algorithm . ,(or (and=> hash-algo symbol->string) (vector-map!
NULL)) (lambda (_ output-name derivation-output-details-id)
(hash . ,(or (and=> hash bytevector->base16-string) (list derivation-id
NULL)) output-name
(recursive . ,recursive?)))) derivation-output-details-id))
derivation-outputs)))) vec
derivation-output-details-ids)
(insert-missing-data vec))
conn
"derivation_outputs"
'(derivation_id name derivation_output_details_id)
(list->vector
(map (lambda (output-name derivation-output-details-id)
(list derivation-id
output-name
derivation-output-details-id))
derivation-output-names
(vector->list derivation-output-details-ids))))
(insert-into-derivations-by-output-details-set
(derivation-output-details-ids->derivation-output-details-set-id
conn
derivation-output-details-ids))
(insert-into-derivations-by-output-details-set
(derivation-output-details-ids->derivation-output-details-set-id
conn
derivation-output-details-ids)) derivation-output-details-ids))
derivation-output-details-ids))
(define (select-derivation-by-file-name-hash conn file-name-hash) (define (select-derivation-by-file-name-hash conn file-name-hash)
(define query (define query
(string-append (string-append