simple_redis_wrapper/
lib.rs

1pub mod client;
2pub use client::*;
3
4#[cfg(test)]
5mod tests {
6    use crate::client::redis_async_client::RedisAsyncClient;
7    use crate::client::types::{EvictionPolicy, Key, Namespace, Prefix};
8    use chrono::{DateTime, Utc};
9    use serde::{Deserialize, Serialize};
10    use uuid::Uuid;
11
12    #[tokio::test]
13    async fn init_client() {
14        let client = RedisAsyncClient::new(None, Namespace("Test".to_string()))
15            .await
16            .unwrap();
17        let eviction_policy = client.get_eviction_policy().await.unwrap();
18        assert_eq!(eviction_policy, "maxmemory-policynoeviction");
19        println!("eviction_policy => {}", eviction_policy);
20        let eviction_policy = client
21            .set_eviction_policy(EvictionPolicy::AllKeysLFU)
22            .await
23            .unwrap();
24        assert_eq!(eviction_policy, "maxmemory-policyallkeys-lfu");
25    }
26
27    #[tokio::test]
28    async fn entity_test() {
29        #[derive(Serialize, Deserialize)]
30        struct TestEntity {
31            pub date: DateTime<Utc>,
32            pub id: Uuid,
33        }
34
35        let entity = TestEntity {
36            date: Utc::now(),
37            id: Uuid::new_v4(),
38        };
39        let prefix = Prefix("TestEntity".to_string());
40        let key = Key(entity.id.to_string());
41        let client = RedisAsyncClient::new(None, Namespace("Test".to_string()))
42            .await
43            .unwrap();
44        client
45            .save_entity(&prefix, &key, &entity, None)
46            .await
47            .unwrap();
48
49        let from_redis = client
50            .get_entity::<TestEntity>(&prefix, &key)
51            .await
52            .unwrap();
53        assert_eq!(entity.id, from_redis.id);
54        assert_eq!(entity.date, from_redis.date);
55    }
56
57    #[tokio::test]
58    async fn scan_test() {
59        #[derive(Serialize, Deserialize, Debug)]
60        struct TestEntity {
61            pub date: DateTime<Utc>,
62            pub id: Uuid,
63        }
64        let entity = TestEntity {
65            date: Utc::now(),
66            id: Uuid::new_v4(),
67        };
68        let prefix = Prefix("TestEntity".to_string());
69        let key = Key(entity.id.to_string());
70        let client = RedisAsyncClient::new(None, Namespace("Test".to_string()))
71            .await
72            .unwrap();
73        client
74            .save_entity(&prefix, &key, &entity, None)
75            .await
76            .unwrap();
77        let _scan_results = client.scan::<TestEntity>("Test*", 4).await.unwrap();
78    }
79}