mirror of
https://github.com/juspay/hyperswitch.git
synced 2025-10-31 01:57:45 +08:00
refactor(storage_impl): split payment attempt models to domain + diesel (#2010)
Signed-off-by: chikke srujan <121822803+srujanchikke@users.noreply.github.com> Co-authored-by: Mani Chandra <84711804+ThisIsMani@users.noreply.github.com> Co-authored-by: Arjun Karthik <m.arjunkarthik@gmail.com> Co-authored-by: Sai Harsha Vardhan <56996463+sai-harsha-vardhan@users.noreply.github.com> Co-authored-by: Sanchith Hegde <22217505+SanchithHegde@users.noreply.github.com> Co-authored-by: chikke srujan <121822803+srujanchikke@users.noreply.github.com> Co-authored-by: Prasunna Soppa <prasunna.soppa@juspay.in> Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: DEEPANSHU BANSAL <41580413+deepanshu-iiitu@users.noreply.github.com> Co-authored-by: Arvind Patel <52006565+arvindpatel24@users.noreply.github.com> Co-authored-by: Jagan Elavarasan <jaganelavarasan@gmail.com> Co-authored-by: arvindpatel24 <arvind.patel@juspay.in> Co-authored-by: anji-reddy-j <125157119+anji-reddy-j@users.noreply.github.com> Co-authored-by: Hrithikesh <61539176+hrithikesh026@users.noreply.github.com> Co-authored-by: Apoorv Dixit <64925866+apoorvdixit88@users.noreply.github.com> Co-authored-by: Pa1NarK <69745008+pixincreate@users.noreply.github.com>
This commit is contained in:
72
crates/storage_impl/src/lookup.rs
Normal file
72
crates/storage_impl/src/lookup.rs
Normal file
@ -0,0 +1,72 @@
|
||||
use common_utils::errors::CustomResult;
|
||||
use data_models::errors;
|
||||
use diesel_models::reverse_lookup::{
|
||||
ReverseLookup as DieselReverseLookup, ReverseLookupNew as DieselReverseLookupNew,
|
||||
};
|
||||
use error_stack::{IntoReport, ResultExt};
|
||||
|
||||
use crate::{redis::cache::get_or_populate_redis, DatabaseStore, KVRouterStore, RouterStore};
|
||||
|
||||
#[async_trait::async_trait]
|
||||
pub trait ReverseLookupInterface {
|
||||
async fn insert_reverse_lookup(
|
||||
&self,
|
||||
_new: DieselReverseLookupNew,
|
||||
) -> CustomResult<DieselReverseLookup, errors::StorageError>;
|
||||
async fn get_lookup_by_lookup_id(
|
||||
&self,
|
||||
_id: &str,
|
||||
) -> CustomResult<DieselReverseLookup, errors::StorageError>;
|
||||
}
|
||||
|
||||
#[async_trait::async_trait]
|
||||
impl<T: DatabaseStore> ReverseLookupInterface for RouterStore<T> {
|
||||
async fn insert_reverse_lookup(
|
||||
&self,
|
||||
new: DieselReverseLookupNew,
|
||||
) -> CustomResult<DieselReverseLookup, errors::StorageError> {
|
||||
let conn = self
|
||||
.get_master_pool()
|
||||
.get()
|
||||
.await
|
||||
.into_report()
|
||||
.change_context(errors::StorageError::DatabaseConnectionError)?;
|
||||
new.insert(&conn).await.map_err(|er| {
|
||||
let new_err = crate::diesel_error_to_data_error(er.current_context());
|
||||
er.change_context(new_err)
|
||||
})
|
||||
}
|
||||
|
||||
async fn get_lookup_by_lookup_id(
|
||||
&self,
|
||||
id: &str,
|
||||
) -> CustomResult<DieselReverseLookup, errors::StorageError> {
|
||||
let database_call = || async {
|
||||
let conn = crate::utils::pg_connection_read(self).await?;
|
||||
DieselReverseLookup::find_by_lookup_id(id, &conn)
|
||||
.await
|
||||
.map_err(|er| {
|
||||
let new_err = crate::diesel_error_to_data_error(er.current_context());
|
||||
er.change_context(new_err)
|
||||
})
|
||||
};
|
||||
get_or_populate_redis(self, id, database_call).await
|
||||
}
|
||||
}
|
||||
|
||||
#[async_trait::async_trait]
|
||||
impl<T: DatabaseStore> ReverseLookupInterface for KVRouterStore<T> {
|
||||
async fn insert_reverse_lookup(
|
||||
&self,
|
||||
new: DieselReverseLookupNew,
|
||||
) -> CustomResult<DieselReverseLookup, errors::StorageError> {
|
||||
self.router_store.insert_reverse_lookup(new).await
|
||||
}
|
||||
|
||||
async fn get_lookup_by_lookup_id(
|
||||
&self,
|
||||
id: &str,
|
||||
) -> CustomResult<DieselReverseLookup, errors::StorageError> {
|
||||
self.router_store.get_lookup_by_lookup_id(id).await
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user