[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"