diff options
author | Christopher Baines <mail@cbaines.net> | 2024-03-27 10:48:59 +0000 |
---|---|---|
committer | Christopher Baines <mail@cbaines.net> | 2024-03-27 10:48:59 +0000 |
commit | 2eea6e7f8ff823c47d611c6ceefea33f5bac67b5 (patch) | |
tree | 35b76d2c41a390d8b101cbded0298f0164e5e171 /nar-herder/database.scm | |
parent | 8c37b07acd7f31622168fda673962721c4361638 (diff) | |
download | nar-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.scm | 28 |
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) |