Reduce code duplication in the package-derivation module
Through using insert-missing-data-and-return-all-ids.
This commit is contained in:
parent
fc6bbf3e3c
commit
f1a9495727
1 changed files with 5 additions and 70 deletions
|
|
@ -7,50 +7,9 @@
|
||||||
#:export (insert-package-derivations
|
#:export (insert-package-derivations
|
||||||
count-packages-derivations-in-revision))
|
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
|
(define (insert-package-derivations conn
|
||||||
package-ids-systems-and-targets
|
package-ids-systems-and-targets
|
||||||
derivation-ids)
|
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
|
(define data-4-tuples
|
||||||
(map (match-lambda*
|
(map (match-lambda*
|
||||||
(((package-id system target) derivation-id)
|
(((package-id system target) derivation-id)
|
||||||
|
|
@ -63,35 +22,11 @@
|
||||||
|
|
||||||
(if (null? data-4-tuples)
|
(if (null? data-4-tuples)
|
||||||
'()
|
'()
|
||||||
(begin
|
(insert-missing-data-and-return-all-ids
|
||||||
(let* ((existing-entries
|
|
||||||
(exec-query->vhash
|
|
||||||
conn
|
conn
|
||||||
select-existing-package-derivation-entries
|
"package_derivations"
|
||||||
cdr
|
'(package_id derivation_id system target)
|
||||||
first)) ;; id
|
data-4-tuples)))
|
||||||
|
|
||||||
(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)))))
|
|
||||||
|
|
||||||
(define (count-packages-derivations-in-revision conn commit-hash)
|
(define (count-packages-derivations-in-revision conn commit-hash)
|
||||||
(define query
|
(define query
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue