use crate::models::dht::ChainOpPublishRow;
use holo_hash::DhtOpHash;
use holochain_timestamp::Timestamp;
use sqlx::{Executor, Sqlite};
pub(crate) async fn insert_chain_op_publish<'e, E>(
executor: E,
op_hash: &DhtOpHash,
last_publish_time: Option<Timestamp>,
receipts_complete: Option<bool>,
) -> sqlx::Result<()>
where
E: Executor<'e, Database = Sqlite>,
{
sqlx::query(
"INSERT INTO ChainOpPublish (op_hash, last_publish_time, receipts_complete)
VALUES (?, ?, ?)",
)
.bind(op_hash.get_raw_36())
.bind(last_publish_time.map(|t| t.as_micros()))
.bind(receipts_complete.map(|b| b as i64))
.execute(executor)
.await?;
Ok(())
}
pub(crate) async fn get_chain_op_publish<'e, E>(
executor: E,
op_hash: DhtOpHash,
) -> sqlx::Result<Option<ChainOpPublishRow>>
where
E: Executor<'e, Database = Sqlite>,
{
sqlx::query_as(
"SELECT op_hash, last_publish_time, receipts_complete
FROM ChainOpPublish WHERE op_hash = ?",
)
.bind(op_hash.get_raw_36())
.fetch_optional(executor)
.await
}