use miden_node_db::DatabaseError;
use miden_node_db::sqlite::{ReadTx, WriteTx};
use miden_protocol::Word;
use miden_protocol::block::BlockNumber;
use miden_protocol::protocol_config::ProtocolConfig;
const INSERT_SQL: &str = include_str!("insert.sql");
const SELECT_SQL: &str = include_str!("select.sql");
const SELECT_BEFORE_SQL: &str = include_str!("select_before.sql");
pub fn load(tx: &ReadTx<'_>, commitment: Word) -> Result<Option<ProtocolConfig>, DatabaseError> {
Ok(tx
.query(SELECT_SQL, &[&commitment], |row| row.get::<ProtocolConfig>(0))?
.into_iter()
.next())
}
pub fn insert(
tx: &WriteTx<'_>,
config: &ProtocolConfig,
block_number: BlockNumber,
) -> Result<(), DatabaseError> {
let commitment = config.to_commitment();
tx.execute(INSERT_SQL, &[&commitment, &block_number, &config])?;
Ok(())
}
pub fn load_before(
tx: &ReadTx<'_>,
block_number: BlockNumber,
) -> Result<Option<Word>, DatabaseError> {
Ok(tx
.query(SELECT_BEFORE_SQL, &[&block_number], |row| row.get(0))?
.into_iter()
.next())
}