mirror of
https://github.com/juspay/hyperswitch.git
synced 2025-11-02 12:06:56 +08:00
refactor: wrap the encryption and file storage interface client in appstate with Arc as opposed to Box (#4949)
This commit is contained in:
@ -31,7 +31,7 @@ pub struct CmdLineConf {
|
|||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
pub struct AppState {
|
pub struct AppState {
|
||||||
pub conf: Arc<Settings<RawSecret>>,
|
pub conf: Arc<Settings<RawSecret>>,
|
||||||
pub encryption_client: Box<dyn EncryptionManagementInterface>,
|
pub encryption_client: Arc<dyn EncryptionManagementInterface>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl AppState {
|
impl AppState {
|
||||||
|
|||||||
@ -2,7 +2,10 @@
|
|||||||
//! Module for managing file storage operations with support for multiple storage schemes.
|
//! Module for managing file storage operations with support for multiple storage schemes.
|
||||||
//!
|
//!
|
||||||
|
|
||||||
use std::fmt::{Display, Formatter};
|
use std::{
|
||||||
|
fmt::{Display, Formatter},
|
||||||
|
sync::Arc,
|
||||||
|
};
|
||||||
|
|
||||||
use common_utils::errors::CustomResult;
|
use common_utils::errors::CustomResult;
|
||||||
|
|
||||||
@ -39,11 +42,11 @@ impl FileStorageConfig {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Retrieves the appropriate file storage client based on the file storage configuration.
|
/// Retrieves the appropriate file storage client based on the file storage configuration.
|
||||||
pub async fn get_file_storage_client(&self) -> Box<dyn FileStorageInterface> {
|
pub async fn get_file_storage_client(&self) -> Arc<dyn FileStorageInterface> {
|
||||||
match self {
|
match self {
|
||||||
#[cfg(feature = "aws_s3")]
|
#[cfg(feature = "aws_s3")]
|
||||||
Self::AwsS3 { aws_s3 } => Box::new(aws_s3::AwsFileStorageClient::new(aws_s3).await),
|
Self::AwsS3 { aws_s3 } => Arc::new(aws_s3::AwsFileStorageClient::new(aws_s3).await),
|
||||||
Self::FileSystem => Box::new(file_system::FileSystem),
|
Self::FileSystem => Arc::new(file_system::FileSystem),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,6 +2,8 @@
|
|||||||
//! Encryption management util module
|
//! Encryption management util module
|
||||||
//!
|
//!
|
||||||
|
|
||||||
|
use std::sync::Arc;
|
||||||
|
|
||||||
use common_utils::errors::CustomResult;
|
use common_utils::errors::CustomResult;
|
||||||
use hyperswitch_interfaces::encryption_interface::{
|
use hyperswitch_interfaces::encryption_interface::{
|
||||||
EncryptionError, EncryptionManagementInterface,
|
EncryptionError, EncryptionManagementInterface,
|
||||||
@ -42,12 +44,12 @@ impl EncryptionManagementConfig {
|
|||||||
/// Retrieves the appropriate encryption client based on the configuration.
|
/// Retrieves the appropriate encryption client based on the configuration.
|
||||||
pub async fn get_encryption_management_client(
|
pub async fn get_encryption_management_client(
|
||||||
&self,
|
&self,
|
||||||
) -> CustomResult<Box<dyn EncryptionManagementInterface>, EncryptionError> {
|
) -> CustomResult<Arc<dyn EncryptionManagementInterface>, EncryptionError> {
|
||||||
Ok(match self {
|
Ok(match self {
|
||||||
#[cfg(feature = "aws_kms")]
|
#[cfg(feature = "aws_kms")]
|
||||||
Self::AwsKms { aws_kms } => Box::new(aws_kms::core::AwsKmsClient::new(aws_kms).await),
|
Self::AwsKms { aws_kms } => Arc::new(aws_kms::core::AwsKmsClient::new(aws_kms).await),
|
||||||
|
|
||||||
Self::NoEncryption => Box::new(NoEncryption),
|
Self::NoEncryption => Arc::new(NoEncryption),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -82,7 +82,7 @@ pub struct SessionState {
|
|||||||
pub email_client: Arc<dyn EmailService>,
|
pub email_client: Arc<dyn EmailService>,
|
||||||
#[cfg(feature = "olap")]
|
#[cfg(feature = "olap")]
|
||||||
pub pool: AnalyticsProvider,
|
pub pool: AnalyticsProvider,
|
||||||
pub file_storage_client: Box<dyn FileStorageInterface>,
|
pub file_storage_client: Arc<dyn FileStorageInterface>,
|
||||||
pub request_id: Option<RequestId>,
|
pub request_id: Option<RequestId>,
|
||||||
pub base_url: String,
|
pub base_url: String,
|
||||||
pub tenant: String,
|
pub tenant: String,
|
||||||
@ -144,8 +144,8 @@ pub struct AppState {
|
|||||||
#[cfg(feature = "olap")]
|
#[cfg(feature = "olap")]
|
||||||
pub opensearch_client: Arc<OpenSearchClient>,
|
pub opensearch_client: Arc<OpenSearchClient>,
|
||||||
pub request_id: Option<RequestId>,
|
pub request_id: Option<RequestId>,
|
||||||
pub file_storage_client: Box<dyn FileStorageInterface>,
|
pub file_storage_client: Arc<dyn FileStorageInterface>,
|
||||||
pub encryption_client: Box<dyn EncryptionManagementInterface>,
|
pub encryption_client: Arc<dyn EncryptionManagementInterface>,
|
||||||
}
|
}
|
||||||
impl scheduler::SchedulerAppState for AppState {
|
impl scheduler::SchedulerAppState for AppState {
|
||||||
fn get_tenants(&self) -> Vec<String> {
|
fn get_tenants(&self) -> Vec<String> {
|
||||||
|
|||||||
Reference in New Issue
Block a user