use crate::KafkaError;
use crate::mail::SendMail;
use crate::util::smail_to_kafka_record;
use rdkafka::producer::FutureProducer;
use std::time::Duration;
pub struct Writer {
producer: FutureProducer,
}
impl Writer {
pub(crate) fn new(producer: FutureProducer) -> Self {
Writer { producer }
}
pub async fn write<'a>(&self, name: &str, mut mail: SendMail<'a>) -> Result<(), KafkaError> {
let record = smail_to_kafka_record(name, &mut mail);
self.producer
.send(record, Duration::from_secs(3))
.await
.map(|_| ())
.map_err(|e| e.0)
}
}