use crate::db::get_redis_conn;
use crate::types::DynError;
use deadpool_redis::redis::AsyncCommands;
pub async fn put(prefix: &str, key: &str, values: &[&str]) -> Result<(), DynError> {
if values.is_empty() {
return Ok(());
}
let index_key = format!("{prefix}:{key}");
let mut redis_conn = get_redis_conn().await?;
let _: () = redis_conn.rpush(index_key, values).await?;
Ok(())
}
pub async fn get_range(
prefix: &str,
key: &str,
skip: Option<usize>,
limit: Option<usize>,
) -> Result<Option<Vec<String>>, DynError> {
let mut redis_conn = get_redis_conn().await?;
let index_key = format!("{prefix}:{key}");
let skip = skip.unwrap_or(0);
let limit = limit.unwrap_or(usize::MAX);
let start = skip as isize;
let end = start + (limit as isize) - 1;
let result: Vec<String> = redis_conn.lrange(index_key, start, end).await?;
match result.len() {
0 => Ok(None),
_ => Ok(Some(result)),
}
}