use crate::types::event_callback::{EventCallback, EventData, EventType};
use async_trait::async_trait;
pub struct UserDefinedEventCallback {
pub enable: bool,
}
impl UserDefinedEventCallback {
#[allow(clippy::new_without_default)]
pub fn new() -> Self {
Self { enable: false }
}
pub fn is_enabled(&self) -> bool {
self.enable
}
}
#[async_trait]
impl EventCallback for UserDefinedEventCallback {
async fn on_event(&mut self, event_data: EventData) {
match event_data.event_type {
EventType::PIPELINE_START => {
println!("Pipeline started: {event_data:?}");
}
EventType::PIPELINE_END => {
println!("Pipeline ended: {event_data:?}");
}
EventType::DELETE_COMPLETE => {
println!("Delete complete: {event_data:?}");
}
EventType::DELETE_FAILED => {
println!("Delete failed: {event_data:?}");
}
EventType::DELETE_FILTERED => {
println!("Delete filtered: {event_data:?}");
}
EventType::PIPELINE_ERROR => {
println!("Pipeline error: {event_data:?}");
}
EventType::DELETE_CANCEL => {
println!("Delete cancelled: {event_data:?}");
}
EventType::STATS_REPORT => {
println!("Stats report: {event_data:?}");
}
_ => {
println!("Other events: {event_data:?}");
}
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn new_creates_disabled_callback() {
let callback = UserDefinedEventCallback::new();
assert!(!callback.enable);
assert!(!callback.is_enabled());
}
#[test]
fn enable_field_controls_is_enabled() {
let mut callback = UserDefinedEventCallback::new();
callback.enable = true;
assert!(callback.is_enabled());
}
}