diff options
author | Christopher Baines <mail@cbaines.net> | 2020-09-26 18:20:26 +0100 |
---|---|---|
committer | Christopher Baines <mail@cbaines.net> | 2020-09-26 18:23:21 +0100 |
commit | 992a0af63edc2524da4eeab3c6d093c3bbcbf7ed (patch) | |
tree | 23d72069ecfaa3c09aa5d5b6879a6dc643eadbc4 /guix-data-service | |
parent | fb180e1ebd3662ff712f7c888c5f0bb7973d0c43 (diff) | |
download | data-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.
Diffstat (limited to 'guix-data-service')
-rw-r--r-- | guix-data-service/data-deletion.scm | 125 | ||||
-rw-r--r-- | guix-data-service/model/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 |