aboutsummaryrefslogtreecommitdiff
path: root/guix-data-service
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2019-09-04 13:20:07 +0200
committerChristopher Baines <mail@cbaines.net>2019-09-04 19:27:48 +0200
commitf1a9495727add78bdf53fb5547b317d7fba242a6 (patch)
tree0634d6d56183c3a94be1bc7bdf0518d6b89b2c20 /guix-data-service
parentfc6bbf3e3cbfd7288715833af8154ee5f0fc554c (diff)
downloaddata-service-f1a9495727add78bdf53fb5547b317d7fba242a6.tar
data-service-f1a9495727add78bdf53fb5547b317d7fba242a6.tar.gz
Reduce code duplication in the package-derivation module
Through using insert-missing-data-and-return-all-ids.
Diffstat (limited to 'guix-data-service')
-rw-r--r--guix-data-service/model/package-derivation.scm75
1 files changed, 5 insertions, 70 deletions
diff --git a/guix-data-service/model/package-derivation.scm b/guix-data-service/model/package-derivation.scm
index 6e87765..5c4deb3 100644
--- a/guix-data-service/model/package-derivation.scm
+++ b/guix-data-service/model/package-derivation.scm
@@ -7,50 +7,9 @@
#:export (insert-package-derivations
count-packages-derivations-in-revision))
-(define (insert-missing-package-derivations conn entries)
- (define query
- (string-append
- "INSERT INTO package_derivations "
- "(package_id, derivation_id, system, target) VALUES "
- (string-join
- (map
- (lambda (entry)
- (apply simple-format
- #f "(~A, ~A, '~A', '~A')"
- entry))
- entries)
- ", ")
- " RETURNING id"))
-
- (exec-query conn query))
-
(define (insert-package-derivations conn
package-ids-systems-and-targets
derivation-ids)
- (define select-existing-package-derivation-entries
- (string-append
- "SELECT id, package_derivations.package_id,"
- " package_derivations.derivation_id, package_derivations.system,"
- " package_derivations.target "
- "FROM package_derivations "
- "JOIN (VALUES "
- (string-join (map (match-lambda*
- (((package-id system target) derivation-id)
- (simple-format
- #f "(~A, ~A, '~A', '~A')"
- package-id
- derivation-id
- system
- target)))
- package-ids-systems-and-targets
- derivation-ids)
- ", ")
- ") AS vals (package_id, derivation_id, system, target) "
- "ON package_derivations.package_id = vals.package_id "
- "AND package_derivations.derivation_id = vals.derivation_id "
- "AND package_derivations.system = vals.system "
- "AND package_derivations.target = vals.target"))
-
(define data-4-tuples
(map (match-lambda*
(((package-id system target) derivation-id)
@@ -63,35 +22,11 @@
(if (null? data-4-tuples)
'()
- (begin
- (let* ((existing-entries
- (exec-query->vhash
- conn
- select-existing-package-derivation-entries
- cdr
- first)) ;; id
-
- (missing-entries
- (filter (lambda (4-tuple)
- (not (vhash-assoc 4-tuple existing-entries)))
- data-4-tuples))
-
- (new-entry-ids
- (if (null? missing-entries)
- '()
- (begin
- (vlist->list existing-entries)
- (insert-missing-package-derivations conn missing-entries))))
-
- (new-entries-id-lookup-vhash
- (two-lists->vhash missing-entries
- new-entry-ids)))
- (map (lambda (4-tuple)
- (cdr
- (or (vhash-assoc 4-tuple existing-entries)
- (vhash-assoc 4-tuple new-entries-id-lookup-vhash)
- (error "Missing entry"))))
- data-4-tuples)))))
+ (insert-missing-data-and-return-all-ids
+ conn
+ "package_derivations"
+ '(package_id derivation_id system target)
+ data-4-tuples)))
(define (count-packages-derivations-in-revision conn commit-hash)
(define query