use crate::cache_redis::{RedisCacheConfig, RedisCacheError, RedisCacheResult};
#[derive(Debug, Clone)]
pub struct RedisClientFactory {
config: RedisCacheConfig,
}
impl RedisClientFactory {
pub fn new(config: RedisCacheConfig) -> RedisCacheResult<Self> {
if !config.url.starts_with("redis://") && !config.url.starts_with("rediss://") {
return Err(RedisCacheError::InvalidUrl { url: config.url });
}
Ok(Self { config })
}
pub fn url(&self) -> &str {
&self.config.url
}
#[cfg(feature = "cache-redis")]
pub fn create_client(&self) -> RedisCacheResult<redis::Client> {
redis::Client::open(self.config.url.as_str())
.map_err(|error| RedisCacheError::Backend(error.to_string()))
}
}