fix: commit redb update state

This commit is contained in:
thesimplekid
2024-07-19 00:13:46 +01:00
parent fb014573c1
commit c880a623cb

View File

@@ -90,6 +90,16 @@ impl MintRedbDatabase {
);
return Err(Error::UnknownDatabaseVersion);
}
let write_txn = db.begin_write()?;
{
let mut table = write_txn.open_table(CONFIG_TABLE)?;
table
.insert("db_version", DATABASE_VERSION.to_string().as_str())?;
}
write_txn.commit()?;
}
Ordering::Equal => {
tracing::info!("Database is at current version {}", DATABASE_VERSION);
@@ -507,12 +517,14 @@ impl MintDatabase for MintRedbDatabase {
let mut table = write_txn.open_table(PROOFS_TABLE).map_err(Error::from)?;
for proof in proofs {
let y: PublicKey = hash_to_curve(&proof.secret.to_bytes()).map_err(Error::from)?;
table
.insert(
y.to_bytes(),
serde_json::to_string(&proof).map_err(Error::from)?.as_str(),
)
.map_err(Error::from)?;
if table.get(y.to_bytes()).map_err(Error::from)?.is_none() {
table
.insert(
y.to_bytes(),
serde_json::to_string(&proof).map_err(Error::from)?.as_str(),
)
.map_err(Error::from)?;
}
}
}
write_txn.commit().map_err(Error::from)?;
@@ -567,26 +579,31 @@ impl MintDatabase for MintRedbDatabase {
) -> Result<Vec<Option<State>>, Self::Err> {
let db = self.db.lock().await;
let write_txn = db.begin_write().map_err(Error::from)?;
let mut table = write_txn
.open_table(PROOFS_STATE_TABLE)
.map_err(Error::from)?;
let mut states = Vec::with_capacity(ys.len());
let state_str = serde_json::to_string(&proofs_state).map_err(Error::from)?;
for y in ys {
match table
.insert(y.to_bytes(), state_str.as_str())
.map_err(Error::from)?
{
Some(state) => states.push(Some(
serde_json::from_str(state.value()).map_err(Error::from)?,
)),
None => states.push(None),
{
let mut table = write_txn
.open_table(PROOFS_STATE_TABLE)
.map_err(Error::from)?;
for y in ys {
match table
.insert(y.to_bytes(), state_str.as_str())
.map_err(Error::from)?
{
Some(state) => states.push(Some(
serde_json::from_str(state.value()).map_err(Error::from)?,
)),
None => states.push(None),
}
}
}
write_txn.commit().map_err(Error::from)?;
Ok(states)
}