Extract management of package_derivations_by_guix_revision_range
... entries in to a separate module, to split the code up a little further.
This commit is contained in:
parent
ebefc7815e
commit
639f24bb22
3 changed files with 170 additions and 138 deletions
|
|
@ -20,6 +20,7 @@
|
|||
#:use-module (guix-data-service model build)
|
||||
#:use-module (guix-data-service model channel-news)
|
||||
#:use-module (guix-data-service model package)
|
||||
#:use-module (guix-data-service model package-derivation-by-guix-revision-range)
|
||||
#:use-module (guix-data-service model git-repository)
|
||||
#:use-module (guix-data-service model guix-revision)
|
||||
#:use-module (guix-data-service model package-derivation)
|
||||
|
|
@ -961,94 +962,6 @@ ORDER BY packages.name, packages.version"
|
|||
|
||||
#t)
|
||||
|
||||
(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 ()
|
||||
(exec-query
|
||||
conn
|
||||
"
|
||||
DELETE FROM package_derivations_by_guix_revision_range
|
||||
WHERE git_repository_id = $1 AND
|
||||
branch_name = $2 AND
|
||||
derivation_id IN (
|
||||
SELECT package_derivations.derivation_id
|
||||
FROM package_derivations
|
||||
INNER JOIN guix_revision_package_derivations
|
||||
ON package_derivations.id = guix_revision_package_derivations.package_derivation_id
|
||||
WHERE revision_id = $3
|
||||
)"
|
||||
(list git-repository-id
|
||||
branch-name
|
||||
guix-revision-id))))
|
||||
(log-time
|
||||
(simple-format #f "inserting package derivation entries for ~A" branch-name)
|
||||
(lambda ()
|
||||
(exec-query
|
||||
conn
|
||||
"
|
||||
INSERT INTO package_derivations_by_guix_revision_range
|
||||
SELECT DISTINCT
|
||||
$1::integer AS git_repository_id,
|
||||
$2 AS branch_name,
|
||||
packages.name AS package_name,
|
||||
packages.version AS package_version,
|
||||
revision_packages.derivation_id AS derivation_id,
|
||||
revision_packages.system AS system,
|
||||
revision_packages.target AS target,
|
||||
first_value(guix_revisions.id)
|
||||
OVER package_version AS first_guix_revision_id,
|
||||
last_value(guix_revisions.id)
|
||||
OVER package_version AS last_guix_revision_id
|
||||
FROM packages
|
||||
INNER JOIN (
|
||||
SELECT DISTINCT package_derivations.package_id,
|
||||
package_derivations.derivation_id,
|
||||
package_derivations.system,
|
||||
package_derivations.target,
|
||||
guix_revision_package_derivations.revision_id
|
||||
FROM package_derivations
|
||||
INNER JOIN guix_revision_package_derivations
|
||||
ON package_derivations.id = guix_revision_package_derivations.package_derivation_id
|
||||
) AS revision_packages ON packages.id = revision_packages.package_id
|
||||
INNER JOIN guix_revisions ON revision_packages.revision_id = guix_revisions.id
|
||||
INNER JOIN git_branches ON guix_revisions.commit = git_branches.commit
|
||||
WHERE git_branches.name = $2 AND
|
||||
revision_packages.derivation_id IN (
|
||||
SELECT package_derivations.derivation_id
|
||||
FROM package_derivations
|
||||
INNER JOIN guix_revision_package_derivations
|
||||
ON package_derivations.id = guix_revision_package_derivations.package_derivation_id
|
||||
WHERE revision_id = $3
|
||||
)
|
||||
WINDOW package_version AS (
|
||||
PARTITION BY packages.name, packages.version, revision_packages.derivation_id
|
||||
ORDER BY git_branches.datetime
|
||||
RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
|
||||
)
|
||||
ORDER BY packages.name, packages.version"
|
||||
(list git-repository-id branch-name guix-revision-id))))))
|
||||
(exec-query
|
||||
conn
|
||||
"SELECT name FROM git_branches WHERE commit = $1 AND git_repository_id = $2"
|
||||
(list commit git-repository-id)))
|
||||
|
||||
#t)
|
||||
|
||||
(define (store-item-for-channel conn channel)
|
||||
(with-store store
|
||||
(set-build-options store #:fallback? #t)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue