diff options
Diffstat (limited to 'libs/shared/src/redis.rs')
| -rw-r--r-- | libs/shared/src/redis.rs | 19 |
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) + }) + } +} |
