guix-commits
[Top][All Lists]
Advanced

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

03/05: Add delete-revisions-from-branch-except-most-recent-n


From: Christopher Baines
Subject: 03/05: Add delete-revisions-from-branch-except-most-recent-n
Date: Sun, 27 Sep 2020 06:11:26 -0400 (EDT)

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

commit 65e8bf3f8da8f51ed8986da8ba5cff3948920f41
Author: Christopher Baines <mail@cbaines.net>
AuthorDate: Sat Sep 26 19:03:02 2020 +0100

    Add delete-revisions-from-branch-except-most-recent-n
---
 guix-data-service/data-deletion.scm | 33 ++++++++++++++++++++++++++++++++-
 1 file changed, 32 insertions(+), 1 deletion(-)

diff --git a/guix-data-service/data-deletion.scm 
b/guix-data-service/data-deletion.scm
index ebde3f3..a8a2fc2 100644
--- a/guix-data-service/data-deletion.scm
+++ b/guix-data-service/data-deletion.scm
@@ -22,6 +22,7 @@
   #:use-module (guix-data-service database)
   #:use-module (guix-data-service model 
package-derivation-by-guix-revision-range)
   #:export (delete-data-for-branch
+            delete-revisions-from-branch-except-most-recent-n
             delete-data-for-all-deleted-branches))
 
 (define (delete-revisions-from-branch conn git-repository-id branch-name 
commits)
@@ -114,7 +115,7 @@ WHERE guix_revisions.git_repository_id = "
          (for-each (lambda (guix-revision-id)
                      (delete-guix-revision-package-derivation-entries
                       conn
-                      git-repository-id
+                      (number->string git-repository-id)
                       guix-revision-id
                       branch-name))
                    guix-revision-ids)
@@ -169,6 +170,36 @@ WHERE git_repository_id = $1 AND name = $2"
                                 branch-name
                                 commits))
 
+(define (delete-revisions-from-branch-except-most-recent-n conn
+                                                           git-repository-id
+                                                           branch-name
+                                                           n)
+  (define commits
+    (map car
+         (exec-query conn
+                     "
+SELECT commit
+FROM git_branches
+WHERE git_repository_id = $1 AND name = $2
+ORDER BY datetime DESC
+OFFSET $3"
+                     (list (number->string git-repository-id)
+                           branch-name
+                           (number->string n)))))
+
+  (unless (null? commits)
+    (simple-format #t "deleting ~A commits\n" (length commits))
+    (delete-revisions-from-branch conn
+                                  git-repository-id
+                                  branch-name
+                                  commits)
+
+    (simple-format #t "repopulating 
package_derivations_by_guix_revision_range\n")
+    (insert-guix-revision-package-derivation-entries conn
+                                                     (number->string
+                                                      git-repository-id)
+                                                     branch-name)))
+
 (define (delete-data-for-all-branches-but-master)
   (with-postgresql-connection
    "data-deletion"



reply via email to

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