mirror of
https://github.com/juspay/hyperswitch.git
synced 2025-10-29 00:49:42 +08:00
fix(router): fix refunds and payment_attempts kv flow (#2362)
This commit is contained in:
committed by
GitHub
parent
3d7e22a4f1
commit
ef0df7195d
@ -629,13 +629,9 @@ mod storage {
|
|||||||
}
|
}
|
||||||
enums::MerchantStorageScheme::RedisKv => {
|
enums::MerchantStorageScheme::RedisKv => {
|
||||||
let key = format!("{merchant_id}_{payment_id}");
|
let key = format!("{merchant_id}_{payment_id}");
|
||||||
let lookup = self.get_lookup_by_lookup_id(&key).await?;
|
|
||||||
|
|
||||||
let pattern = db_utils::generate_hscan_pattern_for_refund(&lookup.sk_id);
|
|
||||||
|
|
||||||
self.get_redis_conn()
|
self.get_redis_conn()
|
||||||
.map_err(Into::<errors::StorageError>::into)?
|
.map_err(Into::<errors::StorageError>::into)?
|
||||||
.hscan_and_deserialize(&key, &pattern, None)
|
.hscan_and_deserialize(&key, "pa_*_ref_*", None)
|
||||||
.await
|
.await
|
||||||
.change_context(errors::StorageError::KVError)
|
.change_context(errors::StorageError::KVError)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -29,10 +29,7 @@ use crate::{
|
|||||||
diesel_error_to_data_error,
|
diesel_error_to_data_error,
|
||||||
lookup::ReverseLookupInterface,
|
lookup::ReverseLookupInterface,
|
||||||
redis::kv_store::{PartitionKey, RedisConnInterface},
|
redis::kv_store::{PartitionKey, RedisConnInterface},
|
||||||
utils::{
|
utils::{pg_connection_read, pg_connection_write, try_redis_get_else_try_database_get},
|
||||||
generate_hscan_pattern_for_attempt, pg_connection_read, pg_connection_write,
|
|
||||||
try_redis_get_else_try_database_get,
|
|
||||||
},
|
|
||||||
DataModelExt, DatabaseStore, KVRouterStore, RouterStore,
|
DataModelExt, DatabaseStore, KVRouterStore, RouterStore,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -800,16 +797,13 @@ impl<T: DatabaseStore> PaymentAttemptInterface for KVRouterStore<T> {
|
|||||||
}
|
}
|
||||||
MerchantStorageScheme::RedisKv => {
|
MerchantStorageScheme::RedisKv => {
|
||||||
let key = format!("{merchant_id}_{payment_id}");
|
let key = format!("{merchant_id}_{payment_id}");
|
||||||
let lookup = self.get_lookup_by_lookup_id(&key).await?;
|
|
||||||
|
|
||||||
let pattern = generate_hscan_pattern_for_attempt(&lookup.sk_id);
|
|
||||||
|
|
||||||
self.get_redis_conn()
|
self.get_redis_conn()
|
||||||
.map_err(|er| {
|
.map_err(|er| {
|
||||||
let error = format!("{}", er);
|
let error = format!("{}", er);
|
||||||
er.change_context(errors::StorageError::RedisError(error))
|
er.change_context(errors::StorageError::RedisError(error))
|
||||||
})?
|
})?
|
||||||
.hscan_and_deserialize(&key, &pattern, None)
|
.hscan_and_deserialize(&key, "pa_*", None)
|
||||||
.await
|
.await
|
||||||
.change_context(errors::StorageError::KVError)
|
.change_context(errors::StorageError::KVError)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -68,13 +68,3 @@ where
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Generates hscan field pattern. Suppose the field is pa_1234 it will generate
|
|
||||||
/// pa_*
|
|
||||||
pub fn generate_hscan_pattern_for_attempt(sk: &str) -> String {
|
|
||||||
sk.split('_')
|
|
||||||
.take(1)
|
|
||||||
.chain(["*"])
|
|
||||||
.collect::<Vec<&str>>()
|
|
||||||
.join("_")
|
|
||||||
}
|
|
||||||
|
|||||||
Reference in New Issue
Block a user