use async_trait::async_trait;
use crate::core::context::Context;
use crate::core::link::LegacyLink;
#[async_trait]
pub trait Middleware: Send + Sync {
async fn before(&self, _link: Option<&dyn LegacyLink>, _ctx: &Context) -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
Ok(())
}
async fn after(&self, _link: Option<&dyn LegacyLink>, _ctx: &Context) -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
Ok(())
}
async fn on_error(&self, _link: Option<&dyn LegacyLink>, _error: &Box<dyn std::error::Error + Send + Sync>, _ctx: &Context) -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
Ok(())
}
}