1use async_trait::async_trait;
2use bb8::PooledConnection;
3use sidekiq::redis_rs::ToRedisArgs;
4use sidekiq::{RedisConnection, RedisConnectionManager, RedisError};
5
6#[cfg_attr(test, mockall::automock)]
8#[async_trait]
9pub(crate) trait RedisCommands {
10 async fn zrange(
11 &mut self,
12 key: String,
13 lower: isize,
14 upper: isize,
15 ) -> Result<Vec<String>, RedisError>;
16
17 async fn zrem<V>(&mut self, key: String, value: V) -> Result<usize, RedisError>
18 where
19 V: ToRedisArgs + Send + Sync + 'static;
20}
21
22#[async_trait]
23impl RedisCommands for PooledConnection<'_, RedisConnectionManager> {
24 async fn zrange(
25 &mut self,
26 key: String,
27 lower: isize,
28 upper: isize,
29 ) -> Result<Vec<String>, RedisError> {
30 RedisConnection::zrange(self, key, lower, upper).await
31 }
32
33 async fn zrem<V>(&mut self, key: String, value: V) -> Result<usize, RedisError>
34 where
35 V: ToRedisArgs + Send + Sync + 'static,
36 {
37 RedisConnection::zrem(self, key, value).await
38 }
39}