Skip to content

Commit e6094f5

Browse files
committed
refactor: adopt redis-macros
1 parent 3abc7fc commit e6094f5

File tree

3 files changed

+32
-7
lines changed

3 files changed

+32
-7
lines changed

Cargo.lock

Lines changed: 24 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ once_cell = "1.18.0"
2020
owo-colors = { version = "3.5.0", features = ["supports-colors"] }
2121
poise = { git = "https://github.com/serenity-rs/poise.git", branch = "serenity-next" }
2222
redis = { version = "0.23.3", features = ["tokio-comp", "tokio-rustls-comp"] }
23+
redis-macros = "0.2.1"
2324
regex = "1.10.2"
2425
reqwest = { version = "0.11.22", default-features = false, features = ["rustls-tls", "json", "brotli"] }
2526
serde = { version = "1.0.189", features = ["derive"] }

src/commands/presence.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
1-
use owo_colors::OwoColorize;
1+
use crate::Context;
22
use poise::{serenity_prelude as serenity, CreateReply};
3+
34
use redis::AsyncCommands;
5+
use redis_macros::{FromRedisValue, ToRedisArgs};
46

5-
use crate::Context;
67
use anyhow::Result;
8+
use owo_colors::OwoColorize;
79

810
#[derive(poise::ChoiceParameter, serde::Serialize, serde::Deserialize, Clone, Copy, Debug)]
911
#[serde(rename_all = "lowercase")]
@@ -49,7 +51,7 @@ impl std::fmt::Display for PresenceChoice {
4951
}
5052
}
5153

52-
#[derive(serde::Serialize, serde::Deserialize, Clone, Debug)]
54+
#[derive(serde::Serialize, serde::Deserialize, FromRedisValue, ToRedisArgs, Clone, Debug)]
5355
struct PresenceData {
5456
content: String,
5557
#[serde(rename = "type")]
@@ -98,19 +100,17 @@ pub async fn presence(
98100

99101
if let Some(redis) = &ctx.data().redis {
100102
let mut conn = redis.get_async_connection().await?;
101-
conn.set("presence-v1", serde_json::to_string(&presence_data)?)
102-
.await?;
103+
conn.set("presence-v1", presence_data).await?;
103104
}
104105

105106
Ok(())
106107
}
107108

108109
pub async fn restore(ctx: &serenity::Context, redis_client: &redis::Client) -> Result<()> {
109110
let mut conn = redis_client.get_async_connection().await?;
110-
let data: Option<String> = conn.get("presence-v1").await?;
111+
let data: Option<PresenceData> = conn.get("presence-v1").await?;
111112

112113
if let Some(data) = data {
113-
let data: PresenceData = serde_json::from_str(&data)?;
114114
ctx.set_presence(Some(data.make_activity()), serenity::OnlineStatus::Online);
115115
println!("{} presence from Redis", "Restored".cyan());
116116
}

0 commit comments

Comments
 (0)