aboutsummaryrefslogtreecommitdiff
path: root/nar-herder/database.scm
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2024-03-27 10:48:59 +0000
committerChristopher Baines <mail@cbaines.net>2024-03-27 10:48:59 +0000
commit2eea6e7f8ff823c47d611c6ceefea33f5bac67b5 (patch)
tree35b76d2c41a390d8b101cbded0298f0164e5e171 /nar-herder/database.scm
parent8c37b07acd7f31622168fda673962721c4361638 (diff)
downloadnar-herder-2eea6e7f8ff823c47d611c6ceefea33f5bac67b5.tar
nar-herder-2eea6e7f8ff823c47d611c6ceefea33f5bac67b5.tar.gz
Track the number of cached nars scheduled for removal
Diffstat (limited to 'nar-herder/database.scm')
-rw-r--r--nar-herder/database.scm28
1 files changed, 24 insertions, 4 deletions
diff --git a/nar-herder/database.scm b/nar-herder/database.scm
index 666c497..75cd049 100644
--- a/nar-herder/database.scm
+++ b/nar-herder/database.scm
@@ -72,6 +72,7 @@
database-select-scheduled-cached-narinfo-removal
database-delete-scheduled-cached-narinfo-removal
database-select-oldest-scheduled-cached-narinfo-removal
+ database-count-scheduled-cached-narinfo-removal
database-insert-scheduled-cached-narinfo-removal))
(define-record-type <database>
@@ -1484,16 +1485,17 @@ WHERE cached_narinfo_file_id = :cached_narinfo_file_id"
db
"
DELETE FROM scheduled_cached_narinfo_removal
-WHERE cached_narinfo_file_id = :cached_narinfo_file_id"
+WHERE cached_narinfo_file_id = :cached_narinfo_file_id
+RETURNING 1"
#:cache? #t)))
(sqlite-bind-arguments
statement
#:cached_narinfo_file_id cached-narinfo-file-id)
- (sqlite-step statement)
- (sqlite-reset statement)
+ (let ((result (->bool (sqlite-step statement))))
+ (sqlite-reset statement)
- #t))))
+ result)))))
(define (database-select-oldest-scheduled-cached-narinfo-removal database)
(call-with-worker-thread
@@ -1535,6 +1537,24 @@ LIMIT 1"
(sqlite-reset statement)
result)))))
+(define (database-count-scheduled-cached-narinfo-removal database)
+ (call-with-worker-thread
+ (database-reader-thread-channel database)
+ (lambda (db)
+ (let ((statement
+ (sqlite-prepare
+ db
+ "
+SELECT COUNT(*) FROM scheduled_cached_narinfo_removal"
+ #:cache? #t)))
+
+ (let ((result
+ (vector-ref (sqlite-step statement)
+ 0)))
+ (sqlite-reset statement)
+
+ result)))))
+
(define (database-insert-scheduled-cached-narinfo-removal database
cached-narinfo-file-id
removal-datetime)