mod block;
mod contract;
mod log;
mod receipt;
mod token;
mod token_transfer;
mod trace;
mod transaction;
pub use block::*;
pub use contract::*;
pub use log::*;
pub use receipt::*;
pub use token::*;
pub use token_transfer::*;
pub use trace::*;
pub use transaction::*;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum EntityType {
Block,
Transaction,
Receipt,
Log,
TokenTransfer,
Trace,
Contract,
Token,
}
impl EntityType {
pub fn as_str(&self) -> &'static str {
match self {
EntityType::Block => "block",
EntityType::Transaction => "transaction",
EntityType::Receipt => "receipt",
EntityType::Log => "log",
EntityType::TokenTransfer => "token_transfer",
EntityType::Trace => "trace",
EntityType::Contract => "contract",
EntityType::Token => "token",
}
}
pub fn from_str(s: &str) -> Option<Self> {
match s {
"block" => Some(EntityType::Block),
"transaction" => Some(EntityType::Transaction),
"receipt" => Some(EntityType::Receipt),
"log" => Some(EntityType::Log),
"token_transfer" => Some(EntityType::TokenTransfer),
"trace" => Some(EntityType::Trace),
"contract" => Some(EntityType::Contract),
"token" => Some(EntityType::Token),
_ => None,
}
}
}
impl std::fmt::Display for EntityType {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "{}", self.as_str())
}
}