Extract out some functions from update-package-derivations-table

To allow these to be used independently.
This commit is contained in:
Christopher Baines 2019-12-22 16:20:08 +00:00
parent 639f24bb22
commit 69d95b133f

View file

@ -29,27 +29,13 @@
action time-taken) action time-taken)
result)) result))
(define (update-package-derivations-table conn (define (delete-guix-revision-package-derivation-entries conn
git-repository-id git-repository-id
guix-revision-id guix-revision-id
commit) branch-name)
;; Lock the table to wait for other transactions to commit before updating
;; the table
(exec-query (exec-query
conn conn
" "
LOCK TABLE ONLY package_derivations_by_guix_revision_range
IN SHARE ROW EXCLUSIVE MODE")
(for-each
(match-lambda
((branch-name)
(log-time
(simple-format #f "deleting package derivation entries for ~A" branch-name)
(lambda ()
(exec-query
conn
"
DELETE FROM package_derivations_by_guix_revision_range DELETE FROM package_derivations_by_guix_revision_range
WHERE git_repository_id = $1 AND WHERE git_repository_id = $1 AND
branch_name = $2 AND branch_name = $2 AND
@ -60,15 +46,18 @@ WHERE git_repository_id = $1 AND
ON package_derivations.id = guix_revision_package_derivations.package_derivation_id ON package_derivations.id = guix_revision_package_derivations.package_derivation_id
WHERE revision_id = $3 WHERE revision_id = $3
)" )"
(list git-repository-id (list git-repository-id
branch-name branch-name
guix-revision-id)))) guix-revision-id
(log-time branch-name)))
(simple-format #f "inserting package derivation entries for ~A" branch-name)
(lambda () (define (insert-guix-revision-package-derivation-entries conn
(exec-query git-repository-id
conn guix-revision-id
" branch-name)
(exec-query
conn
"
INSERT INTO package_derivations_by_guix_revision_range INSERT INTO package_derivations_by_guix_revision_range
SELECT DISTINCT SELECT DISTINCT
$1::integer AS git_repository_id, $1::integer AS git_repository_id,
@ -109,7 +98,39 @@ WINDOW package_version AS (
RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
) )
ORDER BY packages.name, packages.version" ORDER BY packages.name, packages.version"
(list git-repository-id branch-name guix-revision-id)))))) (list git-repository-id
branch-name
guix-revision-id)))
(define (update-package-derivations-table conn
git-repository-id
guix-revision-id
commit)
;; Lock the table to wait for other transactions to commit before updating
;; the table
(exec-query
conn
"
LOCK TABLE ONLY package_derivations_by_guix_revision_range
IN SHARE ROW EXCLUSIVE MODE")
(for-each
(match-lambda
((branch-name)
(log-time
(simple-format #f "deleting package derivation entries for ~A" branch-name)
(lambda ()
(delete-guix-revision-package-derivation-entries conn
git-repository-id
guix-revision-id
branch-name)))
(log-time
(simple-format #f "inserting package derivation entries for ~A" branch-name)
(lambda ()
(insert-guix-revision-package-derivation-entries conn
git-repository-id
guix-revision-id
branch-name)))))
(exec-query (exec-query
conn conn
"SELECT name FROM git_branches WHERE commit = $1 AND git_repository_id = $2" "SELECT name FROM git_branches WHERE commit = $1 AND git_repository_id = $2"