use crate::{
global_state::trie_store::operations::TriePruneResult, tracking_copy::TrackingCopyError,
};
use casper_types::{execution::Effects, Digest, Key};
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct PruneRequest {
state_hash: Digest,
keys_to_prune: Vec<Key>,
}
impl PruneRequest {
pub fn new(state_hash: Digest, keys_to_prune: Vec<Key>) -> Self {
PruneRequest {
state_hash,
keys_to_prune,
}
}
pub fn state_hash(&self) -> Digest {
self.state_hash
}
pub fn keys_to_prune(&self) -> &[Key] {
&self.keys_to_prune
}
}
#[derive(Debug, Clone)]
pub enum PruneResult {
RootNotFound,
MissingKey,
Failure(TrackingCopyError),
Success {
post_state_hash: Digest,
effects: Effects,
},
}
impl From<TriePruneResult> for PruneResult {
fn from(value: TriePruneResult) -> Self {
match value {
TriePruneResult::Pruned(post_state_hash) => PruneResult::Success {
post_state_hash,
effects: Effects::default(),
},
TriePruneResult::MissingKey => PruneResult::MissingKey,
TriePruneResult::RootNotFound => PruneResult::RootNotFound,
TriePruneResult::Failure(gse) => PruneResult::Failure(TrackingCopyError::Storage(gse)),
}
}
}