diff options
author | Christopher Baines <mail@cbaines.net> | 2023-02-03 18:09:40 +0100 |
---|---|---|
committer | Christopher Baines <mail@cbaines.net> | 2023-02-03 18:09:40 +0100 |
commit | 050a40e7a3c748eb3b1e82560627a58535fbcfce (patch) | |
tree | 391e95d848d71498bf0bd85c78a07bda04b5abdf | |
parent | 550e6aa414ec143435a8ace061c17e34dcfb4eec (diff) | |
download | nar-herder-050a40e7a3c748eb3b1e82560627a58535fbcfce.tar nar-herder-050a40e7a3c748eb3b1e82560627a58535fbcfce.tar.gz |
Add procedure to select narinfo details by hash
-rw-r--r-- | nar-herder/database.scm | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/nar-herder/database.scm b/nar-herder/database.scm index 1730595..c4d20f2 100644 --- a/nar-herder/database.scm +++ b/nar-herder/database.scm @@ -42,6 +42,7 @@ database-insert-narinfo database-remove-narinfo + database-select-narinfo-by-hash database-select-narinfo-contents-by-hash database-select-recent-changes @@ -748,6 +749,39 @@ DELETE FROM narinfo_tags WHERE narinfo_id = :narinfo_id" #t)))) +(define (database-select-narinfo-by-hash database hash) + (call-with-time-tracking + database + "select_narinfo_by_hash" + (lambda () + (call-with-worker-thread + (database-reader-thread-channel database) + (lambda (db) + (let ((statement + (sqlite-prepare + db + " +SELECT id, store_path, nar_hash, nar_size, deriver, system +FROM narinfos +WHERE substr(store_path, 12, 32) = :hash" + #:cache? #t))) + (sqlite-bind-arguments + statement + #:hash hash) + + (match (let ((result (sqlite-step statement))) + (sqlite-reset statement) + result) + (#(id store_path nar_hash nar_size deriver system) + `((id . ,id) + (store-path . ,store_path) + (nar-hash . ,nar_hash) + (nar-size . ,nar_size) + (deriver . ,deriver) + (system . ,system))) + (_ + #f)))))))) + (define (database-select-narinfo-contents-by-hash database hash) (call-with-time-tracking database |