use klauthed_core::config::MessagingConfig;
use lapin::{Connection, ConnectionProperties};
use crate::error::DataError;
pub async fn connect_rabbitmq(config: &MessagingConfig) -> Result<Connection, DataError> {
let MessagingConfig::RabbitMq(rabbit) = config else {
return Err(DataError::UnsupportedMessagingBackend(config.backend()));
};
let uri = rabbit.connection_url();
tracing::debug!("connecting to RabbitMQ");
let connection = Connection::connect(&uri, ConnectionProperties::default()).await?;
Ok(connection)
}
#[cfg(test)]
mod tests {
use super::*;
use klauthed_core::config::NatsConfig;
#[tokio::test]
async fn rejects_non_rabbitmq_backend() {
let config = MessagingConfig::Nats(NatsConfig::default());
let err = connect_rabbitmq(&config).await.unwrap_err();
assert!(matches!(err, DataError::UnsupportedMessagingBackend(_)));
}
}