cloudproof_findex 6.0.2

Cosmian Findex Cloudproof library
Documentation
use std::fmt::Display;

use crate::db_interfaces::DbInterfaceError;

#[derive(Debug, Clone, Hash, PartialEq, Eq, Copy)]
#[repr(u8)]
pub enum CallbackPrefix {
    FetchEntry = 0,
    FetchChain = 1,
    Insert = 2,
    Upsert = 3,
    DeleteEntry = 4,
    DeleteChain = 5,
    DumpTokens = 6,
}

impl CallbackPrefix {
    #[cfg(feature = "rest-interface")]
    #[must_use]
    pub fn get_uri(self) -> &'static str {
        match self {
            Self::FetchEntry => "fetch_entries",
            Self::FetchChain => "fetch_chains",
            Self::Insert => "insert_chains",
            Self::Upsert => "upsert_entries",
            Self::DeleteEntry => "delete_entries",
            Self::DeleteChain => "delete_chains",
            Self::DumpTokens => "dump_tokens",
        }
    }
}

impl TryFrom<u8> for CallbackPrefix {
    type Error = DbInterfaceError;

    fn try_from(value: u8) -> Result<Self, Self::Error> {
        match value {
            0 => Ok(Self::FetchEntry),
            1 => Ok(Self::FetchChain),
            2 => Ok(Self::Insert),
            3 => Ok(Self::Upsert),
            4 => Ok(Self::DeleteEntry),
            5 => Ok(Self::DeleteChain),
            6 => Ok(Self::DumpTokens),
            _ => Err(Self::Error::MissingCallback(format!(
                "no callback associated to code {value}"
            ))),
        }
    }
}

impl Display for CallbackPrefix {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        match self {
            Self::FetchEntry => write!(f, "fetch entry"),
            Self::FetchChain => write!(f, "fetch chain"),
            Self::Insert => write!(f, "insert"),
            Self::Upsert => write!(f, "upsert"),
            Self::DeleteEntry => write!(f, "delete entry"),
            Self::DeleteChain => write!(f, "delete chain"),
            Self::DumpTokens => write!(f, "dump tokens"),
        }
    }
}