From 65e8bf3f8da8f51ed8986da8ba5cff3948920f41 Mon Sep 17 00:00:00 2001 From: Christopher Baines Date: Sat, 26 Sep 2020 19:03:02 +0100 Subject: [PATCH] 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"