use vantage_dataset::mocks::{MockQueue, Topic};
use serde::{Deserialize, Serialize};
use vantage_dataset::traits::InsertableDataSet;
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
struct Signup {
email: String,
password: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
struct ResetPassword {
email: String,
}
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let queue = MockQueue::init();
let new_signup = Topic::<Signup>::new(&queue);
let reset_password = Topic::<ResetPassword>::new(&queue);
new_signup
.insert_return_id(&Signup {
email: "john".to_string(),
password: "secret".to_string(),
})
.await?;
new_signup
.insert_return_id(&Signup {
email: "jane".to_string(),
password: "password123".to_string(),
})
.await?;
reset_password
.insert_return_id(&ResetPassword {
email: "john".to_string(),
})
.await?;
println!("Queue Statistics:");
println!(" Signup messages: {}", queue.message_count("Signup"));
println!(
" Reset password messages: {}",
queue.message_count("ResetPassword")
);
println!("\nAll messages in queue:");
for (topic, messages) in queue.get_all_messages() {
println!("Topic '{}': {} messages", topic, messages.len());
for (i, message) in messages.iter().enumerate() {
println!(" {}: {}", i + 1, message);
}
}
println!("\nSignup topic messages:");
for message in queue.get_messages("Signup") {
println!(" {}", message);
}
println!("\nReset password topic messages:");
for message in queue.get_messages("ResetPassword") {
println!(" {}", message);
}
Ok(())
}