1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
use engine_shared::{newtypes::Blake2bHash, stored_value::StoredValue}; use types::Key; use crate::tracking_copy::TrackingCopyQueryResult; pub enum QueryResult { RootNotFound, ValueNotFound(String), CircularReference(String), Success(StoredValue), } #[derive(Debug, Clone, PartialEq, Eq)] pub struct QueryRequest { state_hash: Blake2bHash, key: Key, path: Vec<String>, } impl QueryRequest { pub fn new(state_hash: Blake2bHash, key: Key, path: Vec<String>) -> Self { QueryRequest { state_hash, key, path, } } pub fn state_hash(&self) -> Blake2bHash { self.state_hash } pub fn key(&self) -> Key { self.key } pub fn path(&self) -> &[String] { &self.path } } impl From<TrackingCopyQueryResult> for QueryResult { fn from(tracking_copy_query_result: TrackingCopyQueryResult) -> Self { match tracking_copy_query_result { TrackingCopyQueryResult::ValueNotFound(message) => QueryResult::ValueNotFound(message), TrackingCopyQueryResult::CircularReference(message) => { QueryResult::CircularReference(message) } TrackingCopyQueryResult::Success(value) => QueryResult::Success(value), } } }