fix: fetch data directly from DB in OLAP functions (#2475)

This commit is contained in:
Kartikeya Hegde
2023-10-09 12:03:40 +05:30
committed by GitHub
parent 3f1e7c2152
commit 12b5341972
2 changed files with 46 additions and 74 deletions

View File

@ -638,21 +638,21 @@ mod storage {
&self, &self,
merchant_id: &str, merchant_id: &str,
refund_details: &api_models::refunds::RefundListRequest, refund_details: &api_models::refunds::RefundListRequest,
storage_scheme: enums::MerchantStorageScheme, _storage_scheme: enums::MerchantStorageScheme,
limit: i64, limit: i64,
offset: i64, offset: i64,
) -> CustomResult<Vec<diesel_models::refund::Refund>, errors::StorageError> { ) -> CustomResult<Vec<diesel_models::refund::Refund>, errors::StorageError> {
match storage_scheme { let conn = connection::pg_connection_read(self).await?;
enums::MerchantStorageScheme::PostgresOnly => { <diesel_models::refund::Refund as storage_types::RefundDbExt>::filter_by_constraints(
let conn = connection::pg_connection_read(self).await?; &conn,
<diesel_models::refund::Refund as storage_types::RefundDbExt>::filter_by_constraints(&conn, merchant_id, refund_details, limit, offset) merchant_id,
.await refund_details,
.map_err(Into::into) limit,
.into_report() offset,
} )
.await
enums::MerchantStorageScheme::RedisKv => Err(errors::StorageError::KVError.into()), .map_err(Into::into)
} .into_report()
} }
#[cfg(feature = "olap")] #[cfg(feature = "olap")]
@ -660,19 +660,13 @@ mod storage {
&self, &self,
merchant_id: &str, merchant_id: &str,
refund_details: &api_models::refunds::TimeRange, refund_details: &api_models::refunds::TimeRange,
storage_scheme: enums::MerchantStorageScheme, _storage_scheme: enums::MerchantStorageScheme,
) -> CustomResult<api_models::refunds::RefundListMetaData, errors::StorageError> { ) -> CustomResult<api_models::refunds::RefundListMetaData, errors::StorageError> {
match storage_scheme { let conn = connection::pg_connection_read(self).await?;
enums::MerchantStorageScheme::PostgresOnly => { <diesel_models::refund::Refund as storage_types::RefundDbExt>::filter_by_meta_constraints(&conn, merchant_id, refund_details)
let conn = connection::pg_connection_read(self).await?;
<diesel_models::refund::Refund as storage_types::RefundDbExt>::filter_by_meta_constraints(&conn, merchant_id, refund_details)
.await .await
.map_err(Into::into) .map_err(Into::into)
.into_report() .into_report()
}
enums::MerchantStorageScheme::RedisKv => Err(errors::StorageError::KVError.into()),
}
} }
#[cfg(feature = "olap")] #[cfg(feature = "olap")]
@ -680,19 +674,17 @@ mod storage {
&self, &self,
merchant_id: &str, merchant_id: &str,
refund_details: &api_models::refunds::RefundListRequest, refund_details: &api_models::refunds::RefundListRequest,
storage_scheme: enums::MerchantStorageScheme, _storage_scheme: enums::MerchantStorageScheme,
) -> CustomResult<i64, errors::StorageError> { ) -> CustomResult<i64, errors::StorageError> {
match storage_scheme { let conn = connection::pg_connection_read(self).await?;
enums::MerchantStorageScheme::PostgresOnly => { <diesel_models::refund::Refund as storage_types::RefundDbExt>::get_refunds_count(
let conn = connection::pg_connection_read(self).await?; &conn,
<diesel_models::refund::Refund as storage_types::RefundDbExt>::get_refunds_count(&conn, merchant_id, refund_details) merchant_id,
.await refund_details,
.map_err(Into::into) )
.into_report() .await
} .map_err(Into::into)
.into_report()
enums::MerchantStorageScheme::RedisKv => Err(errors::StorageError::KVError.into()),
}
} }
} }
} }

View File

@ -224,15 +224,11 @@ impl<T: DatabaseStore> PaymentIntentInterface for KVRouterStore<T> {
filters: &PaymentIntentFetchConstraints, filters: &PaymentIntentFetchConstraints,
storage_scheme: MerchantStorageScheme, storage_scheme: MerchantStorageScheme,
) -> error_stack::Result<Vec<PaymentIntent>, StorageError> { ) -> error_stack::Result<Vec<PaymentIntent>, StorageError> {
match storage_scheme { self.router_store
MerchantStorageScheme::PostgresOnly => { .filter_payment_intent_by_constraints(merchant_id, filters, storage_scheme)
self.router_store .await
.filter_payment_intent_by_constraints(merchant_id, filters, storage_scheme)
.await
}
MerchantStorageScheme::RedisKv => Err(StorageError::KVError.into()),
}
} }
#[cfg(feature = "olap")] #[cfg(feature = "olap")]
async fn filter_payment_intents_by_time_range_constraints( async fn filter_payment_intents_by_time_range_constraints(
&self, &self,
@ -240,18 +236,13 @@ impl<T: DatabaseStore> PaymentIntentInterface for KVRouterStore<T> {
time_range: &api_models::payments::TimeRange, time_range: &api_models::payments::TimeRange,
storage_scheme: MerchantStorageScheme, storage_scheme: MerchantStorageScheme,
) -> error_stack::Result<Vec<PaymentIntent>, StorageError> { ) -> error_stack::Result<Vec<PaymentIntent>, StorageError> {
match storage_scheme { self.router_store
MerchantStorageScheme::PostgresOnly => { .filter_payment_intents_by_time_range_constraints(
self.router_store merchant_id,
.filter_payment_intents_by_time_range_constraints( time_range,
merchant_id, storage_scheme,
time_range, )
storage_scheme, .await
)
.await
}
MerchantStorageScheme::RedisKv => Err(StorageError::KVError.into()),
}
} }
#[cfg(feature = "olap")] #[cfg(feature = "olap")]
@ -261,14 +252,9 @@ impl<T: DatabaseStore> PaymentIntentInterface for KVRouterStore<T> {
filters: &PaymentIntentFetchConstraints, filters: &PaymentIntentFetchConstraints,
storage_scheme: MerchantStorageScheme, storage_scheme: MerchantStorageScheme,
) -> error_stack::Result<Vec<(PaymentIntent, PaymentAttempt)>, StorageError> { ) -> error_stack::Result<Vec<(PaymentIntent, PaymentAttempt)>, StorageError> {
match storage_scheme { self.router_store
MerchantStorageScheme::PostgresOnly => { .get_filtered_payment_intents_attempt(merchant_id, filters, storage_scheme)
self.router_store .await
.get_filtered_payment_intents_attempt(merchant_id, filters, storage_scheme)
.await
}
MerchantStorageScheme::RedisKv => Err(StorageError::KVError.into()),
}
} }
#[cfg(feature = "olap")] #[cfg(feature = "olap")]
@ -278,19 +264,13 @@ impl<T: DatabaseStore> PaymentIntentInterface for KVRouterStore<T> {
constraints: &PaymentIntentFetchConstraints, constraints: &PaymentIntentFetchConstraints,
storage_scheme: MerchantStorageScheme, storage_scheme: MerchantStorageScheme,
) -> error_stack::Result<Vec<String>, StorageError> { ) -> error_stack::Result<Vec<String>, StorageError> {
match storage_scheme { self.router_store
MerchantStorageScheme::PostgresOnly => { .get_filtered_active_attempt_ids_for_total_count(
self.router_store merchant_id,
.get_filtered_active_attempt_ids_for_total_count( constraints,
merchant_id, storage_scheme,
constraints, )
storage_scheme, .await
)
.await
}
MerchantStorageScheme::RedisKv => Err(StorageError::KVError.into()),
}
} }
} }