194c44c
use export::AppRedis;
pub async fn consume_jti(redis: &AppRedis, jti: &str, ttl_secs: i64) -> bool {
use export::RedisConnection;
let mut conn = redis.connection_clone();
let result: Result<Option<String>, redis::RedisError> = match &mut conn {
RedisConnection::Standalone(c) => {
redis::cmd("SET")
.arg(format!("chat:jwt_used:{jti}"))
.arg("1")
.arg("NX")
.arg("EX")
.arg(ttl_secs.max(1))
.query_async(c)
.await
}
RedisConnection::Cluster(c) => {
redis::cmd("SET")
.arg(format!("chat:jwt_used:{jti}"))
.arg("1")
.arg("NX")
.arg("EX")
.arg(ttl_secs.max(1))
.query_async(c)
.await
}
};
matches!(result, Ok(Some(_)))
}