aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2025-03-17 10:34:06 +0000
committerChristopher Baines <mail@cbaines.net>2025-03-17 14:59:42 +0000
commit7fe042498f44805a03076bd1d63fe25b3940979e (patch)
tree7c40801dc9903f6bacd6421c57d9dca798ace7f5
parentb904fdb16108da1d604ba9c2c46811e41d4736b4 (diff)
downloaddata-service-7fe042498f44805a03076bd1d63fe25b3940979e.tar
data-service-7fe042498f44805a03076bd1d63fe25b3940979e.tar.gz
Tweak using vectors in insert-derivation-outputs
-rw-r--r--guix-data-service/model/derivation.scm73
1 files changed, 37 insertions, 36 deletions
diff --git a/guix-data-service/model/derivation.scm b/guix-data-service/model/derivation.scm
index 6ee7de1..53aaa40 100644
--- a/guix-data-service/model/derivation.scm
+++ b/guix-data-service/model/derivation.scm
@@ -1048,46 +1048,47 @@ ON CONFLICT DO NOTHING"
(number->string derivation_output_details_set_id))))
(let* ((derivation-outputs
- (map cdr names-and-derivation-outputs))
- (derivation-output-paths
- (map derivation-output-path
- derivation-outputs))
- (derivation-output-names
- (map car names-and-derivation-outputs))
-
- (derivation-output-details-ids
- (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))))
-
- (insert-missing-data
- 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))))
+ (map cdr names-and-derivation-outputs))
+ (derivation-output-paths
+ (map derivation-output-path
+ derivation-outputs))
+ (derivation-output-details-ids
+ (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))))
- (insert-into-derivations-by-output-details-set
- (derivation-output-details-ids->derivation-output-details-set-id
- conn
- derivation-output-details-ids))
+ (insert-missing-data
+ conn
+ "derivation_outputs"
+ '(derivation_id name derivation_output_details_id)
+ (let ((vec
+ (list->vector
+ (map car names-and-derivation-outputs))))
+ (vector-map!
+ (lambda (_ output-name derivation-output-details-id)
+ (list derivation-id
+ output-name
+ derivation-output-details-id))
+ vec
+ derivation-output-details-ids)
+ vec))
+ (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))
+
(define (select-derivation-by-file-name-hash conn file-name-hash)
(define query
(string-append