myc_adapters_shared_lib/models/
redis.rs

1use super::SharedClientProvider;
2use crate::models::RedisConfig;
3
4use redis::Client;
5use shaku::Component;
6use std::sync::Arc;
7
8#[derive(Component)]
9#[shaku(interface = SharedClientProvider)]
10pub struct RedisClientWrapper {
11    client: Client,
12    config: RedisConfig,
13}
14
15impl RedisClientWrapper {
16    pub fn new(client: Client, config: RedisConfig) -> Self {
17        Self { client, config }
18    }
19}
20
21impl SharedClientProvider for RedisClientWrapper {
22    fn get_redis_config(&self) -> Arc<RedisConfig> {
23        Arc::new(self.config.clone())
24    }
25
26    fn get_redis_client(&self) -> Arc<Client> {
27        Arc::new(self.client.clone())
28    }
29}