aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2020-09-26 18:20:26 +0100
committerChristopher Baines <mail@cbaines.net>2020-09-26 18:23:21 +0100
commit992a0af63edc2524da4eeab3c6d093c3bbcbf7ed (patch)
tree23d72069ecfaa3c09aa5d5b6879a6dc643eadbc4
parentfb180e1ebd3662ff712f7c888c5f0bb7973d0c43 (diff)
downloaddata-service-992a0af63edc2524da4eeab3c6d093c3bbcbf7ed.tar
data-service-992a0af63edc2524da4eeab3c6d093c3bbcbf7ed.tar.gz
Split off delete-revisions-from-branch from delete-data-for-branch
To support not deleting all of the revisions.
-rw-r--r--guix-data-service/data-deletion.scm125
-rw-r--r--guix-data-service/model/package-derivation-by-guix-revision-range.scm4
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