mirror of
https://github.com/juspay/hyperswitch.git
synced 2025-11-01 19:42:27 +08:00
refactor(tenant): use tenant id type (#6643)
Co-authored-by: hyperswitch-bot[bot] <148525504+hyperswitch-bot[bot]@users.noreply.github.com>
This commit is contained in:
@ -3,6 +3,7 @@ use std::{
|
||||
sync::{atomic, Arc},
|
||||
};
|
||||
|
||||
use common_utils::id_type;
|
||||
use router_env::tracing::Instrument;
|
||||
use tokio::{
|
||||
sync::{mpsc, oneshot},
|
||||
@ -34,12 +35,15 @@ pub struct HandlerInner {
|
||||
loop_interval: Duration,
|
||||
active_tasks: Arc<atomic::AtomicU64>,
|
||||
conf: DrainerSettings,
|
||||
stores: HashMap<String, Arc<Store>>,
|
||||
stores: HashMap<id_type::TenantId, Arc<Store>>,
|
||||
running: Arc<atomic::AtomicBool>,
|
||||
}
|
||||
|
||||
impl Handler {
|
||||
pub fn from_conf(conf: DrainerSettings, stores: HashMap<String, Arc<Store>>) -> Self {
|
||||
pub fn from_conf(
|
||||
conf: DrainerSettings,
|
||||
stores: HashMap<id_type::TenantId, Arc<Store>>,
|
||||
) -> Self {
|
||||
let shutdown_interval = Duration::from_millis(conf.shutdown_interval.into());
|
||||
let loop_interval = Duration::from_millis(conf.loop_interval.into());
|
||||
|
||||
|
||||
@ -2,7 +2,7 @@ use std::{collections::HashMap, sync::Arc};
|
||||
|
||||
use actix_web::{web, Scope};
|
||||
use async_bb8_diesel::{AsyncConnection, AsyncRunQueryDsl};
|
||||
use common_utils::errors::CustomResult;
|
||||
use common_utils::{errors::CustomResult, id_type};
|
||||
use diesel_models::{Config, ConfigNew};
|
||||
use error_stack::ResultExt;
|
||||
use router_env::{instrument, logger, tracing};
|
||||
@ -20,7 +20,7 @@ pub const TEST_STREAM_DATA: &[(&str, &str)] = &[("data", "sample_data")];
|
||||
pub struct Health;
|
||||
|
||||
impl Health {
|
||||
pub fn server(conf: Settings, stores: HashMap<String, Arc<Store>>) -> Scope {
|
||||
pub fn server(conf: Settings, stores: HashMap<id_type::TenantId, Arc<Store>>) -> Scope {
|
||||
web::scope("health")
|
||||
.app_data(web::Data::new(conf))
|
||||
.app_data(web::Data::new(stores))
|
||||
|
||||
@ -14,7 +14,7 @@ use std::{collections::HashMap, sync::Arc};
|
||||
mod secrets_transformers;
|
||||
|
||||
use actix_web::dev::Server;
|
||||
use common_utils::signals::get_allowed_signals;
|
||||
use common_utils::{id_type, signals::get_allowed_signals};
|
||||
use diesel_models::kv;
|
||||
use error_stack::ResultExt;
|
||||
use hyperswitch_interfaces::secrets_interface::secret_state::RawSecret;
|
||||
@ -31,7 +31,7 @@ use crate::{
|
||||
};
|
||||
|
||||
pub async fn start_drainer(
|
||||
stores: HashMap<String, Arc<Store>>,
|
||||
stores: HashMap<id_type::TenantId, Arc<Store>>,
|
||||
conf: DrainerSettings,
|
||||
) -> errors::DrainerResult<()> {
|
||||
let drainer_handler = handler::Handler::from_conf(conf, stores);
|
||||
@ -62,7 +62,7 @@ pub async fn start_drainer(
|
||||
|
||||
pub async fn start_web_server(
|
||||
conf: Settings,
|
||||
stores: HashMap<String, Arc<Store>>,
|
||||
stores: HashMap<id_type::TenantId, Arc<Store>>,
|
||||
) -> Result<Server, errors::DrainerError> {
|
||||
let server = conf.server.clone();
|
||||
let web_server = actix_web::HttpServer::new(move || {
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
use std::{collections::HashMap, path::PathBuf, sync::Arc};
|
||||
|
||||
use common_utils::{ext_traits::ConfigExt, DbConnectionParams};
|
||||
use common_utils::{ext_traits::ConfigExt, id_type, DbConnectionParams};
|
||||
use config::{Environment, File};
|
||||
use external_services::managers::{
|
||||
encryption_management::EncryptionManagementConfig, secrets_management::SecretsManagementConfig,
|
||||
@ -122,23 +122,23 @@ pub struct Multitenancy {
|
||||
pub tenants: TenantConfig,
|
||||
}
|
||||
impl Multitenancy {
|
||||
pub fn get_tenants(&self) -> &HashMap<String, Tenant> {
|
||||
pub fn get_tenants(&self) -> &HashMap<id_type::TenantId, Tenant> {
|
||||
&self.tenants.0
|
||||
}
|
||||
pub fn get_tenant_ids(&self) -> Vec<String> {
|
||||
pub fn get_tenant_ids(&self) -> Vec<id_type::TenantId> {
|
||||
self.tenants
|
||||
.0
|
||||
.values()
|
||||
.map(|tenant| tenant.tenant_id.clone())
|
||||
.collect()
|
||||
}
|
||||
pub fn get_tenant(&self, tenant_id: &str) -> Option<&Tenant> {
|
||||
pub fn get_tenant(&self, tenant_id: &id_type::TenantId) -> Option<&Tenant> {
|
||||
self.tenants.0.get(tenant_id)
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Default)]
|
||||
pub struct TenantConfig(pub HashMap<String, Tenant>);
|
||||
pub struct TenantConfig(pub HashMap<id_type::TenantId, Tenant>);
|
||||
|
||||
impl<'de> Deserialize<'de> for TenantConfig {
|
||||
fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
|
||||
@ -150,7 +150,7 @@ impl<'de> Deserialize<'de> for TenantConfig {
|
||||
clickhouse_database: String,
|
||||
}
|
||||
|
||||
let hashmap = <HashMap<String, Inner>>::deserialize(deserializer)?;
|
||||
let hashmap = <HashMap<id_type::TenantId, Inner>>::deserialize(deserializer)?;
|
||||
|
||||
Ok(Self(
|
||||
hashmap
|
||||
@ -172,9 +172,9 @@ impl<'de> Deserialize<'de> for TenantConfig {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize, Clone, Default)]
|
||||
#[derive(Debug, Deserialize, Clone)]
|
||||
pub struct Tenant {
|
||||
pub tenant_id: String,
|
||||
pub tenant_id: id_type::TenantId,
|
||||
pub base_url: String,
|
||||
pub schema: String,
|
||||
pub redis_key_prefix: String,
|
||||
|
||||
Reference in New Issue
Block a user