use anyhow::{Context, Result};
use rusqlite::OptionalExtension;
use crate::store::Store;
pub fn record_query_success(store: &Store, chunk_id: &str) -> Result<i64> {
let conn = store.conn();
let rows = conn
.execute(
"UPDATE chunks SET query_success_count = query_success_count + 1 WHERE id = ?1",
rusqlite::params![chunk_id],
)
.with_context(|| format!("recording query success for chunk {chunk_id}"))?;
if rows == 0 {
anyhow::bail!("no chunk with id {chunk_id}");
}
get_query_success_count(store, chunk_id)?
.ok_or_else(|| anyhow::anyhow!("chunk {chunk_id} disappeared after query-success update"))
}
pub fn get_query_success_count(store: &Store, chunk_id: &str) -> Result<Option<i64>> {
let conn = store.conn();
let count = conn
.query_row(
"SELECT query_success_count FROM chunks WHERE id = ?1",
rusqlite::params![chunk_id],
|row| row.get::<_, i64>(0),
)
.optional()?;
Ok(count)
}