aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2020-09-27 11:11:02 +0100
committerChristopher Baines <mail@cbaines.net>2020-09-27 11:11:02 +0100
commit5b13ee22518df33c42ed04ee299a7c94b78fbb81 (patch)
tree9b1faca3739f103bdd47da0a1cd7070854a879f1
parent52a23a53335c979211f46ed4426cc7b1469a9892 (diff)
downloaddata-service-5b13ee22518df33c42ed04ee299a7c94b78fbb81.tar
data-service-5b13ee22518df33c42ed04ee299a7c94b78fbb81.tar.gz
Delete builds for unreferenced derivations
-rw-r--r--guix-data-service/data-deletion.scm34
1 files changed, 34 insertions, 0 deletions
diff --git a/guix-data-service/data-deletion.scm b/guix-data-service/data-deletion.scm
index dbb94e5..4bca68d 100644
--- a/guix-data-service/data-deletion.scm
+++ b/guix-data-service/data-deletion.scm
@@ -268,6 +268,36 @@ FROM (
WHERE commit = ''")))))
(define (delete-unreferenced-derivations)
+ (define (delete-builds-for-derivation-output-details-set
+ conn
+ derivation-output-details-set-id)
+ (let ((build-ids
+ (map car
+ (exec-query
+ conn
+ "
+SELECT id
+FROM builds
+WHERE derivation_output_details_set_id = $1"
+ derivation-output-details-set-id))))
+
+ (unless (null? build-ids)
+ (exec-query
+ conn
+ (string-append
+ "
+DELETE FROM build_status WHERE build_id IN ("
+ (string-join build-ids ",")
+ ")"))
+
+ (exec-query
+ conn
+ (string-append
+ "
+DELETE FROM builds WHERE id IN ("
+ (string-join build-ids ",")
+ ")")))))
+
(define (maybe-delete-derivation conn id file-name)
(match (map
car
@@ -348,6 +378,10 @@ WHERE derivation_id = $1"
(when (<= (string->number count)
1)
+ (delete-builds-for-derivation-output-details-set
+ conn
+ derivation-output-details-set-id)
+
(exec-query
conn
"