guix-commits
[Top][All Lists]
Advanced

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

02/05: Split off delete-revisions-from-branch from delete-data-for-branc


From: Christopher Baines
Subject: 02/05: Split off delete-revisions-from-branch from delete-data-for-branch
Date: Sun, 27 Sep 2020 06:11:26 -0400 (EDT)

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

commit 992a0af63edc2524da4eeab3c6d093c3bbcbf7ed
Author: Christopher Baines <mail@cbaines.net>
AuthorDate: Sat Sep 26 18:20:26 2020 +0100

    Split off delete-revisions-from-branch from delete-data-for-branch
    
    To support not deleting all of the revisions.
---
 guix-data-service/data-deletion.scm                | 125 +++++++++++----------
 .../package-derivation-by-guix-revision-range.scm  |   4 +-
 2 files changed, 68 insertions(+), 61 deletions(-)

diff --git a/guix-data-service/data-deletion.scm 
b/guix-data-service/data-deletion.scm
index 5d127c9..ebde3f3 100644
--- a/guix-data-service/data-deletion.scm
+++ b/guix-data-service/data-deletion.scm
@@ -20,61 +20,18 @@
   #:use-module (ice-9 match)
   #:use-module (squee)
   #:use-module (guix-data-service database)
+  #:use-module (guix-data-service model 
package-derivation-by-guix-revision-range)
   #:export (delete-data-for-branch
             delete-data-for-all-deleted-branches))
 
-(define (delete-data-for-branch conn git-repository-id branch-name)
-  (define commits
-    (map car
-         (exec-query conn
-                     "
-SELECT commit
-FROM git_branches
-WHERE git_repository_id = $1 AND name = $2"
-                     (list (number->string git-repository-id)
-                           branch-name))))
-
-
-  (with-postgresql-transaction
-   conn
-   (lambda (conn)
-     (exec-query
-      conn
-      (simple-format
-       #f
-       "
-DELETE FROM git_branches
-WHERE git_repository_id = ~A AND
-  name = '~A' AND
-  commit IN (~A)"
-       git-repository-id
-       branch-name
-       (string-join
-        (map (lambda (commit)
-               (string-append "'" commit "'"))
-             commits)
-        ", ")))
-
-     (for-each
-      (lambda (table)
-        (exec-query
-         conn
-         (simple-format
-          #f
-          "
-DELETE FROM ~A
-WHERE branch_name = $1 AND git_repository_id = $2"
-          table)
-         (list branch-name
-               (number->string git-repository-id))))
-      '("package_derivations_by_guix_revision_range"))
-
-     (for-each
-      (lambda (table)
-        (exec-query
-         conn
-         (string-append
-          "
+(define (delete-revisions-from-branch conn git-repository-id branch-name 
commits)
+  (define (delete-jobs conn)
+    (for-each
+     (lambda (table)
+       (exec-query
+        conn
+        (string-append
+         "
 DELETE FROM " table "
 WHERE job_id IN (
   SELECT id
@@ -88,22 +45,46 @@ WHERE job_id IN (
    ", ")
   ")
 )")))
-      '("load_new_guix_revision_job_events"
-        "load_new_guix_revision_job_logs"))
+     '("load_new_guix_revision_job_events"
+       "load_new_guix_revision_job_logs"))
 
-     (exec-query
-      conn
-      (string-append
-       "
+    (exec-query
+     conn
+     (string-append
+      "
 DELETE FROM load_new_guix_revision_jobs
 WHERE git_repository_id = " (number->string git-repository-id) " AND
   commit IN ("
+(string-join
+ (map (lambda (commit)
+        (string-append "'" commit "'"))
+      commits)
+ ", ")
+")")))
+
+  (define (delete-from-git-branches conn)
+    (exec-query
+     conn
+     (simple-format
+      #f
+      "
+DELETE FROM git_branches
+WHERE git_repository_id = ~A AND
+  name = '~A' AND
+  commit IN (~A)"
+      git-repository-id
+      branch-name
       (string-join
        (map (lambda (commit)
               (string-append "'" commit "'"))
             commits)
-       ", ")
-      ")"))
+       ", "))))
+
+  (with-postgresql-transaction
+   conn
+   (lambda (conn)
+     (delete-from-git-branches conn)
+     (delete-jobs conn)
 
      (let ((guix-revision-ids
             (map
@@ -130,6 +111,14 @@ WHERE guix_revisions.git_repository_id = "
 )")))))
 
        (unless (null? guix-revision-ids)
+         (for-each (lambda (guix-revision-id)
+                     (delete-guix-revision-package-derivation-entries
+                      conn
+                      git-repository-id
+                      guix-revision-id
+                      branch-name))
+                   guix-revision-ids)
+
          (for-each
           (lambda (table)
             (exec-query
@@ -164,6 +153,22 @@ WHERE id IN ("
            (string-join guix-revision-ids ", ")
            ")")))))))
 
+(define (delete-data-for-branch conn git-repository-id branch-name)
+  (define commits
+    (map car
+         (exec-query conn
+                     "
+SELECT commit
+FROM git_branches
+WHERE git_repository_id = $1 AND name = $2"
+                     (list (number->string git-repository-id)
+                           branch-name))))
+
+  (delete-revisions-from-branch conn
+                                git-repository-id
+                                branch-name
+                                commits))
+
 (define (delete-data-for-all-branches-but-master)
   (with-postgresql-connection
    "data-deletion"
diff --git 
a/guix-data-service/model/package-derivation-by-guix-revision-range.scm 
b/guix-data-service/model/package-derivation-by-guix-revision-range.scm
index 84bf743..32e91b9 100644
--- a/guix-data-service/model/package-derivation-by-guix-revision-range.scm
+++ b/guix-data-service/model/package-derivation-by-guix-revision-range.scm
@@ -20,7 +20,9 @@
   #:use-module (squee)
   #:use-module (guix-data-service database)
   #:use-module (guix-data-service utils)
-  #:export (update-package-derivations-table
+  #:export (delete-guix-revision-package-derivation-entries
+            insert-guix-revision-package-derivation-entries
+            update-package-derivations-table
             rebuild-package-derivations-table))
 
 (define (delete-guix-revision-package-derivation-entries conn



reply via email to

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