Skip to content

Commit

Permalink
Merge branch 'refactor-pm-db' of https://github.com/juspay/hyperswitch
Browse files Browse the repository at this point in the history
…into refactor-pm-db
  • Loading branch information
jagan-jaya committed Feb 25, 2025
2 parents 31c0427 + f9af11e commit 50f9902
Show file tree
Hide file tree
Showing 15 changed files with 58 additions and 64 deletions.
26 changes: 12 additions & 14 deletions crates/hyperswitch_domain_models/src/payment_methods.rs
Original file line number Diff line number Diff line change
@@ -1,25 +1,23 @@
#[cfg(feature = "v2")]
use api_models::payment_methods::PaymentMethodsData;
// specific imports because of using the macro
use common_enums::enums::MerchantStorageScheme;
#[cfg(feature = "v2")]
use common_utils::{
crypto::Encryptable, encryption::Encryption, ext_traits::ValueExt,
types::keymanager::ToEncryptable,
};
#[cfg(all(feature = "v2", feature = "payment_methods_v2"))]
use common_utils::{crypto::Encryptable, encryption::Encryption, types::keymanager::ToEncryptable};
use common_utils::{
crypto::OptionalEncryptableValue,
errors::{CustomResult, ParsingError, ValidationError},
pii, type_name,
types::keymanager,
id_type, pii, type_name,
types::{keymanager, keymanager::KeyManagerState},
};
use diesel_models::enums as storage_enums;
use diesel_models::{enums as storage_enums, PaymentMethodUpdate};
use error_stack::ResultExt;
use masking::{PeekInterface, Secret};
// specific imports because of using the macro
use common_enums::enums::MerchantStorageScheme;
#[cfg(feature = "v2")]
use common_utils::{
crypto::Encryptable, encryption::Encryption, ext_traits::ValueExt,
types::keymanager::ToEncryptable,
};
use common_utils::{id_type, types::keymanager::KeyManagerState};
use diesel_models::PaymentMethodUpdate;
#[cfg(feature = "v2")]
use rustc_hash::FxHashMap;
#[cfg(feature = "v2")]
Expand All @@ -36,12 +34,12 @@ use crate::{
consts, router_response_types,
type_encryption::{crypto_operation, CryptoOperation},
};
use crate::{errors, merchant_key_store::MerchantKeyStore};

#[cfg(all(feature = "v2", feature = "payment_methods_v2"))]
use crate::{address::Address, type_encryption::OptionalEncryptableJsonType};
use crate::{
errors,
mandates::{CommonMandateReference, PaymentsMandateReference},
merchant_key_store::MerchantKeyStore,
type_encryption::{crypto_operation, AsyncLift, CryptoOperation},
};

Expand Down
3 changes: 1 addition & 2 deletions crates/payment_methods/src/client.rs
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
use storage_impl::{kv_router_store::KVRouterStore, DatabaseStore, MockDb, RouterStore};

use common_utils::{errors::CustomResult, id_type, types::keymanager::KeyManagerState};
use hyperswitch_domain_models::{
errors,
merchant_account::MerchantAccount,
merchant_key_store::MerchantKeyStore,
payment_methods::{PaymentMethod, PaymentMethodInterface},
};
use storage_impl::{kv_router_store::KVRouterStore, DatabaseStore, MockDb, RouterStore};

#[async_trait::async_trait]
pub trait PaymentMethodsStorageInterface:
Expand Down
4 changes: 2 additions & 2 deletions crates/router/src/configs/settings.rs
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,13 @@ use hyperswitch_interfaces::secrets_interface::secret_state::{
RawSecret, SecretState, SecretStateContainer, SecuredSecret,
};
use masking::Secret;
use payment_methods::client::PaymentMethodsStorageInterface;
use redis_interface::RedisSettings;
pub use router_env::config::{Log, LogConsole, LogFile, LogTelemetry};
use rust_decimal::Decimal;
use scheduler::SchedulerSettings;
use serde::Deserialize;
use storage_impl::config::QueueStrategy;
use payment_methods::client::PaymentMethodsStorageInterface;

#[cfg(feature = "olap")]
use crate::analytics::{AnalyticsConfig, AnalyticsProvider};
Expand Down Expand Up @@ -243,7 +243,7 @@ impl TenantConfig {
.into_iter()
.collect()
}

/// # Panics
///
/// Panics if Failed to create event handler
Expand Down
5 changes: 2 additions & 3 deletions crates/router/src/routes/app.rs
Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
use ::payment_methods::client::{PaymentMethodsClient, PaymentMethodsStorageInterface};
use std::{collections::HashMap, sync::Arc};

use ::payment_methods::client::{PaymentMethodsClient, PaymentMethodsStorageInterface};
use actix_web::{web, Scope};
#[cfg(all(feature = "olap", feature = "v1"))]
use api_models::routing::RoutingRetrieveQuery;
#[cfg(feature = "olap")]
use common_enums::TransactionType;
#[cfg(feature = "partial-auth")]
use common_utils::crypto::Blake3;
use common_utils::id_type;
use common_utils::types::keymanager::KeyManagerState;
use common_utils::{id_type, types::keymanager::KeyManagerState};
#[cfg(feature = "email")]
use external_services::email::{
no_email::NoEmailClient, ses::AwsSes, smtp::SmtpServer, EmailClientConfigs, EmailService,
Expand Down
5 changes: 3 additions & 2 deletions crates/router/src/workflows/payment_method_status_update.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
use common_utils::ext_traits::ValueExt;
use error_stack::ResultExt;
use scheduler::{
consumer::types::process_data, utils as pt_utils, workflows::ProcessTrackerWorkflow,
};
Expand All @@ -9,7 +10,6 @@ use crate::{
routes::SessionState,
types::storage::{self, PaymentMethodStatusTrackingData},
};
use error_stack::ResultExt;
pub struct PaymentMethodStatusUpdateWorkflow;

#[async_trait::async_trait]
Expand Down Expand Up @@ -55,7 +55,8 @@ impl ProcessTrackerWorkflow<SessionState> for PaymentMethodStatusUpdateWorkflow
&pm_id,
merchant_account.storage_scheme,
)
.await.change_context(errors::ApiErrorResponse::InternalServerError)
.await
.change_context(errors::ApiErrorResponse::InternalServerError)
.attach_printable("Unable to decode billing address")?;

if payment_method.status != prev_pm_status {
Expand Down
2 changes: 1 addition & 1 deletion crates/scheduler/src/scheduler.rs
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
use std::sync::Arc;

use common_utils::{errors::CustomResult, id_type};
use storage_impl::mock_db::MockDb;
#[cfg(feature = "kv_store")]
use storage_impl::kv_router_store::KVRouterStore;
use storage_impl::mock_db::MockDb;
#[cfg(not(feature = "kv_store"))]
use storage_impl::RouterStore;
use tokio::sync::mpsc;
Expand Down
39 changes: 19 additions & 20 deletions crates/storage_impl/src/kv_router_store.rs
Original file line number Diff line number Diff line change
@@ -1,14 +1,5 @@
use std::sync::Arc;
use std::{fmt::Debug, sync::Arc};

use crate::config::TenantConfig;
use crate::errors::RedisErrorExt;
use crate::redis::kv_store::decide_storage_scheme;
use crate::redis::kv_store::kv_wrapper;
use crate::redis::kv_store::KvOperation;
use crate::redis::kv_store::Op;
use crate::redis::kv_store::{KvStorePartition, PartitionKey, RedisConnInterface};
use crate::utils::find_all_combined_kv_database;
use crate::utils::try_redis_get_else_try_database_get;
use common_enums::enums::MerchantStorageScheme;
use common_utils::{fallback_reverse_lookup_not_found, types::keymanager::KeyManagerState};
use diesel_models::{errors::DatabaseError, kv};
Expand All @@ -18,23 +9,31 @@ use hyperswitch_domain_models::{
errors::{self, StorageResult},
merchant_key_store::MerchantKeyStore,
};
use masking::StrongSecret;
use serde::de;
use std::fmt::Debug;

pub use crate::mock_db::MockDb;
use crate::{database::store::PgPool, RouterStore};
use crate::{
diesel_error_to_data_error, lookup::ReverseLookupInterface, metrics, UniqueConstraints,
};
#[cfg(not(feature = "payouts"))]
use hyperswitch_domain_models::{PayoutAttemptInterface, PayoutsInterface};
use masking::StrongSecret;
use redis_interface::{errors::RedisError, types::HsetnxReply, RedisConnectionPool};
use router_env::logger;
use serde::de;

pub use crate::database::store::DatabaseStore;
#[cfg(not(feature = "payouts"))]
pub use crate::database::store::Store;
use router_env::logger;
use crate::{
config::TenantConfig,
database::store::PgPool,
diesel_error_to_data_error,
errors::RedisErrorExt,
lookup::ReverseLookupInterface,
metrics,
redis::kv_store::{
decide_storage_scheme, kv_wrapper, KvOperation, KvStorePartition, Op, PartitionKey,
RedisConnInterface,
},
utils::{find_all_combined_kv_database, try_redis_get_else_try_database_get},
RouterStore, UniqueConstraints,
};
pub use crate::{database::store::DatabaseStore, mock_db::MockDb};

#[derive(Debug, Clone)]
pub struct KVRouterStore<T: DatabaseStore> {
Expand Down
3 changes: 1 addition & 2 deletions crates/storage_impl/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use std::sync::Arc;
use std::{fmt::Debug, sync::Arc};

use diesel_models as store;
use error_stack::ResultExt;
Expand All @@ -9,7 +9,6 @@ use hyperswitch_domain_models::{
};
use masking::StrongSecret;
use redis::{kv_store::RedisConnInterface, pub_sub::PubSubInterface, RedisStore};
use std::fmt::Debug;
mod address;
pub mod callback_mapper;
pub mod config;
Expand Down
3 changes: 2 additions & 1 deletion crates/storage_impl/src/lookup.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,10 @@ use redis_interface::SetnxReply;
use crate::{
diesel_error_to_data_error,
errors::RedisErrorExt,
kv_router_store::KVRouterStore,
redis::kv_store::{decide_storage_scheme, kv_wrapper, KvOperation, Op, PartitionKey},
utils::{self, try_redis_get_else_try_database_get},
DatabaseStore, kv_router_store::KVRouterStore, RouterStore,
DatabaseStore, RouterStore,
};

#[async_trait::async_trait]
Expand Down
20 changes: 8 additions & 12 deletions crates/storage_impl/src/payment_method.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,26 +11,22 @@ use diesel_models::{
payment_method::{PaymentMethodUpdate, PaymentMethodUpdateInternal},
};
use error_stack::ResultExt;
use hyperswitch_domain_models::behaviour::{Conversion, ReverseConversion};
use hyperswitch_domain_models::{
behaviour::{Conversion, ReverseConversion},
errors,
merchant_key_store::MerchantKeyStore,
payment_methods::{PaymentMethod as DomainPaymentMethod, PaymentMethodInterface},
};
use router_env::{instrument, tracing};

use super::MockDb;
use crate::{
diesel_error_to_data_error,
kv_router_store::{InsertResourceParams, FilterResourceParams, KVRouterStore, UpdateResourceParams},
redis::kv_store::{Op, PartitionKey},
utils::{pg_connection_read, pg_connection_write},
};
use crate::{
kv_router_store::{
FilterResourceParams, InsertResourceParams, KVRouterStore, UpdateResourceParams,
},
DatabaseStore, RouterStore,
};
use hyperswitch_domain_models::{
errors,
merchant_key_store::MerchantKeyStore,
payment_methods::{PaymentMethod as DomainPaymentMethod, PaymentMethodInterface},
};
use router_env::{instrument, tracing};

#[async_trait::async_trait]
impl<T: DatabaseStore> PaymentMethodInterface for KVRouterStore<T> {
Expand Down
3 changes: 2 additions & 1 deletion crates/storage_impl/src/payments/payment_intent.rs
Original file line number Diff line number Diff line change
Expand Up @@ -51,9 +51,10 @@ use crate::connection;
use crate::{
diesel_error_to_data_error,
errors::RedisErrorExt,
kv_router_store::KVRouterStore,
redis::kv_store::{decide_storage_scheme, kv_wrapper, KvOperation, Op, PartitionKey},
utils::{self, pg_connection_read, pg_connection_write},
DatabaseStore, kv_router_store::KVRouterStore,
DatabaseStore,
};

#[async_trait::async_trait]
Expand Down
3 changes: 2 additions & 1 deletion crates/storage_impl/src/payouts/payout_attempt.rs
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,11 @@ use router_env::{instrument, logger, tracing};
use crate::{
diesel_error_to_data_error,
errors::RedisErrorExt,
kv_router_store::KVRouterStore,
lookup::ReverseLookupInterface,
redis::kv_store::{decide_storage_scheme, kv_wrapper, KvOperation, Op, PartitionKey},
utils::{self, pg_connection_read, pg_connection_write},
DataModelExt, DatabaseStore, kv_router_store::KVRouterStore,
DataModelExt, DatabaseStore,
};

#[async_trait::async_trait]
Expand Down
3 changes: 2 additions & 1 deletion crates/storage_impl/src/payouts/payouts.rs
Original file line number Diff line number Diff line change
Expand Up @@ -69,9 +69,10 @@ use crate::store::schema::{
use crate::{
diesel_error_to_data_error,
errors::RedisErrorExt,
kv_router_store::KVRouterStore,
redis::kv_store::{decide_storage_scheme, kv_wrapper, KvOperation, Op, PartitionKey},
utils::{self, pg_connection_read, pg_connection_write},
DataModelExt, DatabaseStore, kv_router_store::KVRouterStore,
DataModelExt, DatabaseStore,
};

#[async_trait::async_trait]
Expand Down
2 changes: 1 addition & 1 deletion crates/storage_impl/src/redis/kv_store.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ use router_derive::TryGetEnumVariant;
use router_env::logger;
use serde::de;

use crate::{metrics, store::kv::TypedSql, kv_router_store::KVRouterStore, UniqueConstraints};
use crate::{kv_router_store::KVRouterStore, metrics, store::kv::TypedSql, UniqueConstraints};

pub trait KvStorePartition {
fn partition_number(key: PartitionKey<'_>, num_partitions: u8) -> u32 {
Expand Down
1 change: 0 additions & 1 deletion crates/storage_impl/src/utils.rs
Original file line number Diff line number Diff line change
Expand Up @@ -137,4 +137,3 @@ where
},
}
}

0 comments on commit 50f9902

Please sign in to comment.