aboutsummaryrefslogtreecommitdiff
path: root/nar-herder/database.scm
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2021-12-14 23:58:40 +0000
committerChristopher Baines <mail@cbaines.net>2021-12-14 23:58:40 +0000
commitff809dcba6dd5da637a1a371dcf68b22bc9375ed (patch)
tree2812409612cfaaacedaae1ba6733fd026f5cea5b /nar-herder/database.scm
parent36958a58bb61faf54375b92d54a521cdb5c98e66 (diff)
downloadnar-herder-ff809dcba6dd5da637a1a371dcf68b22bc9375ed.tar
nar-herder-ff809dcba6dd5da637a1a371dcf68b22bc9375ed.tar.gz
Fix and test removing nars
Diffstat (limited to 'nar-herder/database.scm')
-rw-r--r--nar-herder/database.scm32
1 files changed, 32 insertions, 0 deletions
diff --git a/nar-herder/database.scm b/nar-herder/database.scm
index 31fe5e7..060d2ba 100644
--- a/nar-herder/database.scm
+++ b/nar-herder/database.scm
@@ -45,6 +45,7 @@
database-select-recent-changes
database-select-latest-recent-change-datetime
+ database-select-narinfo-for-file
database-select-narinfo-files
database-map-all-narinfo-files))
@@ -479,6 +480,37 @@ SELECT datetime FROM recent_changes ORDER BY datetime DESC LIMIT 1"
result)))))
+(define (database-select-narinfo-for-file database narinfo-file-url)
+ (call-with-worker-thread
+ (database-reader-thread-channel database)
+ (lambda (db)
+ (let ((statement
+ (sqlite-prepare
+ db
+ "
+SELECT narinfos.store_path, narinfos.nar_hash, narinfos.nar_size,
+ narinfos.deriver, narinfos.system, narinfos.contents
+FROM narinfos
+INNER JOIN narinfo_files
+ ON narinfos.id = narinfo_files.narinfo_id
+WHERE narinfo_files.url = :url"
+ #:cache? #t)))
+
+ (sqlite-bind-arguments
+ statement
+ #:url narinfo-file-url)
+
+ (match (sqlite-step statement)
+ (#(store-path nar-hash nar-size deriver system contents)
+ (sqlite-reset statement)
+
+ `((store-path . ,store-path)
+ (nar-hash . ,nar-hash)
+ (nar-size . ,nar-size)
+ (deriver . ,deriver)
+ (system . ,system)
+ (contents . ,contents))))))))
+
(define (database-select-narinfo-files database hash)
(call-with-worker-thread
(database-reader-thread-channel database)