summaryrefslogtreecommitdiff
path: root/libs/shared/src/redis.rs
diff options
context:
space:
mode:
authorMatthieuCoder <matthieu@matthieu-dev.xyz>2023-01-02 18:59:03 +0400
committerMatthieuCoder <matthieu@matthieu-dev.xyz>2023-01-02 18:59:03 +0400
commitf8c2a144e2f3e47371f5e8352e7a7a0b6707bf88 (patch)
tree8c1e6bd157ac599429c806f9aa9bc9dbc28140ed /libs/shared/src/redis.rs
parent46fd26962ef55f8b557f7e36d3aee915a819c88c (diff)
restructure project
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)
+ })
+ }
+}