use redis::Commands;
use redis::{Connection, RedisResult};
use std::str::FromStr;
pub struct RedisFacade(Connection);
impl RedisFacade {
pub fn new(redis: Connection) -> RedisFacade {
RedisFacade(redis)
}
pub fn get_string(&self, key: &str) -> RedisResult<String> {
self.0.get::<_, String>(key)
}
pub fn get_bool(&self, key: &str) -> RedisResult<bool> {
self.get_string(key)
.map(|value| FromStr::from_str(&value).unwrap_or(false))
.or(Ok(false))
}
pub fn exists(&self, key: &str) -> RedisResult<bool> {
self.0.exists::<_, bool>(key)
}
pub fn increment(&self, key: &str) -> RedisResult<i64> {
self.0.incr::<_, _, i64>(key, 1)
}
pub fn expire(&self, key: &str, period: usize) -> RedisResult<()> {
self.0.expire::<_, ()>(key, period)
}
pub fn set(&self, key: &str, value: &str) -> RedisResult<()> {
self.0.set::<_, _, ()>(key, value)
}
}