summaryrefslogtreecommitdiff
path: root/libs/shared/src/redis.rs
diff options
context:
space:
mode:
Diffstat (limited to 'libs/shared/src/redis.rs')
-rw-r--r--libs/shared/src/redis.rs19
1 files changed, 17 insertions, 2 deletions
diff --git a/libs/shared/src/redis.rs b/libs/shared/src/redis.rs
index a196f8d..5753fb6 100644
--- a/libs/shared/src/redis.rs
+++ b/libs/shared/src/redis.rs
@@ -1,6 +1,6 @@
-use redis::Client;
+use redis::{aio::MultiplexedConnection, Client};
use serde::Deserialize;
-
+use std::{future::Future, pin::Pin};
#[derive(Clone, Debug, Deserialize)]
pub struct RedisConfiguration {
@@ -13,3 +13,18 @@ impl Into<Client> for RedisConfiguration {
redis::Client::open(self.url).unwrap()
}
}
+
+impl From<RedisConfiguration>
+ for Pin<Box<dyn Future<Output = anyhow::Result<MultiplexedConnection>>>>
+{
+ fn from(value: RedisConfiguration) -> Self {
+ Box::pin(async move {
+ let con = Client::open(value.url)?;
+ let (multiplex, ready) = con.create_multiplexed_tokio_connection().await?;
+
+ tokio::spawn(ready);
+
+ Ok(multiplex)
+ })
+ }
+}