From 2dd0a255fa327b5a52fca65bfff883e3ffab5fb2 Mon Sep 17 00:00:00 2001 From: Tsiry Sandratraina Date: Sun, 21 Sep 2025 10:31:30 +0300 Subject: [PATCH] feat: add delete functionality to cache and integrate with submit_listens --- crates/scrobbler/src/cache.rs | 6 +++++ .../scrobbler/src/listenbrainz/core/submit.rs | 24 +++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/crates/scrobbler/src/cache.rs b/crates/scrobbler/src/cache.rs index d13dcb2b..8824da4e 100644 --- a/crates/scrobbler/src/cache.rs +++ b/crates/scrobbler/src/cache.rs @@ -39,6 +39,12 @@ impl Cache { Ok(()) } + pub fn del(&self, key: &str) -> Result<(), Error> { + let mut con = self.client.get_connection()?; + redis::cmd("DEL").arg(key).query::<()>(&mut con)?; + Ok(()) + } + pub fn exists(&self, key: &str) -> Result { let mut con = self.client.get_connection()?; let result: bool = redis::cmd("EXISTS").arg(key).query(&mut con)?; diff --git a/crates/scrobbler/src/listenbrainz/core/submit.rs b/crates/scrobbler/src/listenbrainz/core/submit.rs index 9000d07b..0ba90c62 100644 --- a/crates/scrobbler/src/listenbrainz/core/submit.rs +++ b/crates/scrobbler/src/listenbrainz/core/submit.rs @@ -4,6 +4,8 @@ use owo_colors::OwoColorize; use serde_json::json; use std::sync::Arc; +use crate::auth::decode_token; +use crate::repo; use crate::{cache::Cache, scrobbler::scrobble_listenbrainz}; use crate::listenbrainz::types::SubmitListensRequest; @@ -38,6 +40,28 @@ pub async fn submit_listens( }))); } Err(e) => { + let artist = payload.payload[0].track_metadata.artist_name.clone(); + let track = payload.payload[0].track_metadata.track_name.clone(); + + let did = match decode_token(token) { + Ok(claims) => claims.did, + Err(e) => { + let user = repo::user::get_user_by_apikey(pool, token) + .await? + .map(|user| user.did); + if let Some(did) = user { + did + } else { + return Err(Error::msg(format!( + "Failed to decode token: {} {}", + e, token + ))); + } + } + }; + + cache.del(&format!("listenbrainz:cache:{}:{}:{}", artist, track, did))?; + println!( "Retryable error on attempt {}/{}: {}", attempt, -- 2.51.2