mirror of
https://github.com/juspay/hyperswitch.git
synced 2025-10-27 19:46:48 +08:00
refactor(cache): remove deref impl on Cache type (#4671)
This commit is contained in:
@ -88,7 +88,7 @@ where
|
|||||||
Fut: futures::Future<Output = CustomResult<T, errors::StorageError>> + Send,
|
Fut: futures::Future<Output = CustomResult<T, errors::StorageError>> + Send,
|
||||||
{
|
{
|
||||||
let data = fun().await?;
|
let data = fun().await?;
|
||||||
in_memory.async_map(|cache| cache.invalidate(key)).await;
|
in_memory.async_map(|cache| cache.remove(key)).await;
|
||||||
|
|
||||||
let redis_conn = store
|
let redis_conn = store
|
||||||
.get_redis_conn()
|
.get_redis_conn()
|
||||||
|
|||||||
@ -50,8 +50,14 @@ async fn invalidate_existing_cache_success() {
|
|||||||
let response_body = response.body().await;
|
let response_body = response.body().await;
|
||||||
println!("invalidate Cache: {response:?} : {response_body:?}");
|
println!("invalidate Cache: {response:?} : {response_body:?}");
|
||||||
assert_eq!(response.status(), awc::http::StatusCode::OK);
|
assert_eq!(response.status(), awc::http::StatusCode::OK);
|
||||||
assert!(cache::CONFIG_CACHE.get(&cache_key).await.is_none());
|
assert!(cache::CONFIG_CACHE
|
||||||
assert!(cache::ACCOUNTS_CACHE.get(&cache_key).await.is_none());
|
.get_val::<String>(&cache_key)
|
||||||
|
.await
|
||||||
|
.is_none());
|
||||||
|
assert!(cache::ACCOUNTS_CACHE
|
||||||
|
.get_val::<String>(&cache_key)
|
||||||
|
.await
|
||||||
|
.is_none());
|
||||||
}
|
}
|
||||||
|
|
||||||
#[actix_web::test]
|
#[actix_web::test]
|
||||||
|
|||||||
@ -94,13 +94,6 @@ pub struct Cache {
|
|||||||
inner: MokaCache<String, Arc<dyn Cacheable>>,
|
inner: MokaCache<String, Arc<dyn Cacheable>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl std::ops::Deref for Cache {
|
|
||||||
type Target = MokaCache<String, Arc<dyn Cacheable>>;
|
|
||||||
fn deref(&self) -> &Self::Target {
|
|
||||||
&self.inner
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl Cache {
|
impl Cache {
|
||||||
/// With given `time_to_live` and `time_to_idle` creates a moka cache.
|
/// With given `time_to_live` and `time_to_idle` creates a moka cache.
|
||||||
///
|
///
|
||||||
@ -122,16 +115,16 @@ impl Cache {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub async fn push<T: Cacheable>(&self, key: String, val: T) {
|
pub async fn push<T: Cacheable>(&self, key: String, val: T) {
|
||||||
self.insert(key, Arc::new(val)).await;
|
self.inner.insert(key, Arc::new(val)).await;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn get_val<T: Clone + Cacheable>(&self, key: &str) -> Option<T> {
|
pub async fn get_val<T: Clone + Cacheable>(&self, key: &str) -> Option<T> {
|
||||||
let val = self.get(key).await?;
|
let val = self.inner.get(key).await?;
|
||||||
(*val).as_any().downcast_ref::<T>().cloned()
|
(*val).as_any().downcast_ref::<T>().cloned()
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn remove(&self, key: &str) {
|
pub async fn remove(&self, key: &str) {
|
||||||
self.invalidate(key).await;
|
self.inner.invalidate(key).await;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -208,7 +201,7 @@ where
|
|||||||
Fut: futures::Future<Output = CustomResult<T, StorageError>> + Send,
|
Fut: futures::Future<Output = CustomResult<T, StorageError>> + Send,
|
||||||
{
|
{
|
||||||
let data = fun().await?;
|
let data = fun().await?;
|
||||||
in_memory.async_map(|cache| cache.invalidate(key)).await;
|
in_memory.async_map(|cache| cache.remove(key)).await;
|
||||||
|
|
||||||
let redis_conn = store
|
let redis_conn = store
|
||||||
.get_redis_conn()
|
.get_redis_conn()
|
||||||
|
|||||||
@ -60,16 +60,16 @@ impl PubSubInterface for redis_interface::RedisConnectionPool {
|
|||||||
|
|
||||||
let key = match key {
|
let key = match key {
|
||||||
CacheKind::Config(key) => {
|
CacheKind::Config(key) => {
|
||||||
CONFIG_CACHE.invalidate(key.as_ref()).await;
|
CONFIG_CACHE.remove(key.as_ref()).await;
|
||||||
key
|
key
|
||||||
}
|
}
|
||||||
CacheKind::Accounts(key) => {
|
CacheKind::Accounts(key) => {
|
||||||
ACCOUNTS_CACHE.invalidate(key.as_ref()).await;
|
ACCOUNTS_CACHE.remove(key.as_ref()).await;
|
||||||
key
|
key
|
||||||
}
|
}
|
||||||
CacheKind::All(key) => {
|
CacheKind::All(key) => {
|
||||||
CONFIG_CACHE.invalidate(key.as_ref()).await;
|
CONFIG_CACHE.remove(key.as_ref()).await;
|
||||||
ACCOUNTS_CACHE.invalidate(key.as_ref()).await;
|
ACCOUNTS_CACHE.remove(key.as_ref()).await;
|
||||||
key
|
key
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user