mirror of
https://github.com/juspay/hyperswitch.git
synced 2025-10-28 12:15:40 +08:00
refactor(scheduler): move scheduler to new crate to support workflows in multiple crates (#1681)
This commit is contained in:
@ -1,11 +1,19 @@
|
||||
use std::sync::Arc;
|
||||
|
||||
use data_models::errors::{StorageError, StorageResult};
|
||||
use common_utils::errors::CustomResult;
|
||||
use data_models::{
|
||||
errors::{StorageError, StorageResult},
|
||||
payments::payment_intent::PaymentIntent,
|
||||
};
|
||||
use diesel_models::{self as store};
|
||||
use error_stack::ResultExt;
|
||||
use futures::lock::Mutex;
|
||||
use masking::StrongSecret;
|
||||
use redis::{kv_store::RedisConnInterface, RedisStore};
|
||||
pub mod config;
|
||||
pub mod connection;
|
||||
pub mod database;
|
||||
pub mod errors;
|
||||
pub mod metrics;
|
||||
pub mod payments;
|
||||
pub mod redis;
|
||||
@ -206,6 +214,58 @@ impl<T: DatabaseStore> KVRouterStore<T> {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct MockDb {
|
||||
pub addresses: Arc<Mutex<Vec<store::Address>>>,
|
||||
pub configs: Arc<Mutex<Vec<store::Config>>>,
|
||||
pub merchant_accounts: Arc<Mutex<Vec<store::MerchantAccount>>>,
|
||||
pub merchant_connector_accounts: Arc<Mutex<Vec<store::MerchantConnectorAccount>>>,
|
||||
pub payment_attempts: Arc<Mutex<Vec<store::PaymentAttempt>>>,
|
||||
pub payment_intents: Arc<Mutex<Vec<PaymentIntent>>>,
|
||||
pub payment_methods: Arc<Mutex<Vec<store::PaymentMethod>>>,
|
||||
pub customers: Arc<Mutex<Vec<store::Customer>>>,
|
||||
pub refunds: Arc<Mutex<Vec<store::Refund>>>,
|
||||
pub processes: Arc<Mutex<Vec<store::ProcessTracker>>>,
|
||||
pub connector_response: Arc<Mutex<Vec<store::ConnectorResponse>>>,
|
||||
// pub redis: Arc<redis_interface::RedisConnectionPool>,
|
||||
pub api_keys: Arc<Mutex<Vec<store::ApiKey>>>,
|
||||
pub ephemeral_keys: Arc<Mutex<Vec<store::EphemeralKey>>>,
|
||||
pub cards_info: Arc<Mutex<Vec<store::CardInfo>>>,
|
||||
pub events: Arc<Mutex<Vec<store::Event>>>,
|
||||
pub disputes: Arc<Mutex<Vec<store::Dispute>>>,
|
||||
pub lockers: Arc<Mutex<Vec<store::LockerMockUp>>>,
|
||||
pub mandates: Arc<Mutex<Vec<store::Mandate>>>,
|
||||
pub captures: Arc<Mutex<Vec<crate::store::capture::Capture>>>,
|
||||
pub merchant_key_store: Arc<Mutex<Vec<crate::store::merchant_key_store::MerchantKeyStore>>>,
|
||||
}
|
||||
|
||||
impl MockDb {
|
||||
pub async fn new() -> Self {
|
||||
Self {
|
||||
addresses: Default::default(),
|
||||
configs: Default::default(),
|
||||
merchant_accounts: Default::default(),
|
||||
merchant_connector_accounts: Default::default(),
|
||||
payment_attempts: Default::default(),
|
||||
payment_intents: Default::default(),
|
||||
payment_methods: Default::default(),
|
||||
customers: Default::default(),
|
||||
refunds: Default::default(),
|
||||
processes: Default::default(),
|
||||
connector_response: Default::default(),
|
||||
// redis: Arc::new(crate::connection::redis_connection(&redis).await),
|
||||
api_keys: Default::default(),
|
||||
ephemeral_keys: Default::default(),
|
||||
cards_info: Default::default(),
|
||||
events: Default::default(),
|
||||
disputes: Default::default(),
|
||||
lockers: Default::default(),
|
||||
mandates: Default::default(),
|
||||
captures: Default::default(),
|
||||
merchant_key_store: Default::default(),
|
||||
}
|
||||
}
|
||||
}
|
||||
// TODO: This should not be used beyond this crate
|
||||
// Remove the pub modified once StorageScheme usage is completed
|
||||
pub trait DataModelExt {
|
||||
@ -232,6 +292,14 @@ impl DataModelExt for data_models::MerchantStorageScheme {
|
||||
}
|
||||
}
|
||||
|
||||
impl RedisConnInterface for MockDb {
|
||||
fn get_redis_conn(
|
||||
&self,
|
||||
) -> Result<Arc<redis_interface::RedisConnectionPool>, error_stack::Report<RedisError>> {
|
||||
Err(RedisError::RedisConnectionError.into())
|
||||
}
|
||||
}
|
||||
|
||||
pub(crate) fn diesel_error_to_data_error(
|
||||
diesel_error: &diesel_models::errors::DatabaseError,
|
||||
) -> StorageError {
|
||||
|
||||
Reference in New Issue
Block a user