cbaines pushed a commit to branch trunk
in repository data-service.

commit 7fe042498f44805a03076bd1d63fe25b3940979e
Author: Christopher Baines <m...@cbaines.net>
AuthorDate: Mon Mar 17 10:34:06 2025 +0000

    Tweak using vectors in insert-derivation-outputs
---
 guix-data-service/model/derivation.scm | 77 +++++++++++++++++-----------------
 1 file changed, 39 insertions(+), 38 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))))
-
-    (insert-into-derivations-by-output-details-set
-     (derivation-output-details-ids->derivation-output-details-set-id
-      conn
-      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-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

Reply via email to