Skip to content

Commit

Permalink
make the redis command to for using scripts to write into redis Generic
Browse files Browse the repository at this point in the history
  • Loading branch information
Aprabhat19 committed Jan 2, 2025
1 parent 7d00583 commit 01dfaf5
Showing 1 changed file with 12 additions and 8 deletions.
20 changes: 12 additions & 8 deletions crates/redis_interface/src/commands.rs
Original file line number Diff line number Diff line change
Expand Up @@ -854,20 +854,23 @@ impl super::RedisConnectionPool {
}

#[instrument(level = "DEBUG", skip(self))]
pub async fn incr_keys_using_script<V>(
pub async fn incr_keys_using_script<V, T>(
&self,
lua_script: &'static str,
key: Vec<String>,
values: V,
) -> CustomResult<(), errors::RedisError>
) -> CustomResult<T, errors::RedisError>
where
V: TryInto<MultipleValues> + Debug + Send + Sync,
V::Error: Into<fred::error::RedisError> + Send + Sync,
T: serde::de::DeserializeOwned + FromRedis,
{
self.pool
let val: T = self
.pool
.eval(lua_script, key, values)
.await
.change_context(errors::RedisError::IncrementHashFieldFailed)
.change_context(errors::RedisError::IncrementHashFieldFailed)?;
Ok(val)
}
}

Expand Down Expand Up @@ -960,11 +963,10 @@ mod tests {
.await
.expect("failed to create redis connection pool");
let lua_script = r#"
local results = {}
for i = 1, #KEYS do
results[i] = redis.call("INCRBY", KEYS[i], ARGV[i])
redis.call("INCRBY", KEYS[i], ARGV[i])
end
return results
return
"#;
let mut keys_and_values = HashMap::new();
for i in 0..10 {
Expand All @@ -978,7 +980,9 @@ mod tests {
.collect::<Vec<String>>();

// Act
let result = pool.incr_keys_using_script(lua_script, key, values).await;
let result = pool
.incr_keys_using_script::<_, ()>(lua_script, key, values)
.await;

// Assert Setup
result.is_ok()
Expand Down

0 comments on commit 01dfaf5

Please sign in to comment.