guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

01/03: Actually delete more of the data for a revision


From: Christopher Baines
Subject: 01/03: Actually delete more of the data for a revision
Date: Sun, 4 Oct 2020 10:38:49 -0400 (EDT)

cbaines pushed a commit to branch master
in repository data-service.

commit f68166514f5aeea3c8af0e47c056bb7a090ee46f
Author: Christopher Baines <mail@cbaines.net>
AuthorDate: Sun Oct 4 15:11:21 2020 +0100

    Actually delete more of the data for a revision
    
    Previously the package_derivations table wasn't considered, which would mean
    derivations would still be referenced. This commit fixes that, along with 
also
    deleting unreferenced entries in some linter related tables.
---
 guix-data-service/data-deletion.scm | 42 ++++++++++++++++++++++++++++++++++++-
 1 file changed, 41 insertions(+), 1 deletion(-)

diff --git a/guix-data-service/data-deletion.scm 
b/guix-data-service/data-deletion.scm
index 775db6b..7387802 100644
--- a/guix-data-service/data-deletion.scm
+++ b/guix-data-service/data-deletion.scm
@@ -33,6 +33,42 @@
             delete-unreferenced-derivations))
 
 (define (delete-guix-revisions conn git-repository-id commits)
+  (define (delete-unreferenced-package-derivations)
+    (exec-query
+     conn
+     "
+DELETE FROM package_derivations
+WHERE NOT EXISTS (
+  SELECT 1
+  FROM guix_revision_package_derivations
+  WHERE guix_revision_package_derivations.package_derivation_id =
+        package_derivations.id
+)"))
+
+  (define (delete-unreferenced-lint-warnings)
+    (exec-query
+     conn
+     "
+DELETE FROM lint_warnings
+WHERE NOT EXISTS (
+  SELECT 1
+  FROM guix_revision_lint_warnings
+  WHERE guix_revision_lint_warnings.lint_warning_id =
+        lint_warnings.id
+)"))
+
+  (define (delete-unreferenced-lint-checkers)
+    (exec-query
+     conn
+     "
+DELETE FROM lint_checkers
+WHERE NOT EXISTS (
+  SELECT 1
+  FROM guix_revision_lint_checkers
+  WHERE guix_revision_lint_checkers.lint_checker_id =
+        lint_checkers.id
+)"))
+
   (let ((guix-revision-ids
          (map
           car
@@ -96,7 +132,11 @@ AND id NOT IN (
   INNER JOIN git_branches ON
     git_branches.commit = guix_revisions.commit AND
     git_branches.git_repository_id = guix_revisions.git_repository_id
-)")))))
+)"))
+
+      (delete-unreferenced-package-derivations)
+      (delete-unreferenced-lint-warnings)
+      (delete-unreferenced-lint-checkers))))
 
 (define (delete-revisions-from-branch conn git-repository-id branch-name 
commits)
   (define (delete-jobs conn)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]