diff --git a/guix-data-service/model/derivation.scm b/guix-data-service/model/derivation.scm index f6a2d0d..801a9b8 100644 --- a/guix-data-service/model/derivation.scm +++ b/guix-data-service/model/derivation.scm @@ -1456,18 +1456,6 @@ ON CONFLICT DO NOTHING"))) query-parts))) (define (insert-derivation-sources conn derivation-id sources) - (define (insert-into-derivation-sources derivation-source-file-ids) - (string-append - "INSERT INTO derivation_sources " - "(derivation_id, derivation_source_file_id) VALUES " - (string-join - (map (lambda (derivation-source-file-id) - (simple-format - #f "(~A, ~A)" derivation-id derivation-source-file-id)) - (vector->list derivation-source-file-ids)) - ",") - "ON CONFLICT DO NOTHING;")) - (let ((sources-ids (insert-missing-data-and-return-all-ids conn @@ -1476,8 +1464,19 @@ ON CONFLICT DO NOTHING"))) (list->vector (map list sources))))) - (exec-query conn - (insert-into-derivation-sources sources-ids)) + (bulk-insert + conn + "derivation_sources" + '(derivation_id derivation_source_file_id) + (vector-fold + (lambda (_ result derivation-source-file-id) + (cons + (list derivation-id + derivation-source-file-id) + result)) + '() + sources-ids) + #:returning #f) sources-ids))