From f6fccafb3d43ce4b2865cf4b3cba7ad8a9619e5b Mon Sep 17 00:00:00 2001 From: Riddhiagrawal001 <50551695+Riddhiagrawal001@users.noreply.github.com> Date: Fri, 19 Apr 2024 16:53:38 +0530 Subject: [PATCH] fix(user): add onboarding_survey enum in dashboard metadata type (#4353) --- .../api_models/src/user/dashboard_metadata.rs | 17 +++++++++++++++++ crates/diesel_models/src/enums.rs | 1 + .../src/core/user/dashboard_metadata.rs | 19 +++++++++++++++++++ .../types/domain/user/dashboard_metadata.rs | 2 ++ .../src/utils/user/dashboard_metadata.rs | 1 + .../down.sql | 2 ++ .../up.sql | 3 +++ 7 files changed, 45 insertions(+) create mode 100644 migrations/2024-04-12-100908_add_dashboard_metadata_key_onboarding_survey/down.sql create mode 100644 migrations/2024-04-12-100908_add_dashboard_metadata_key_onboarding_survey/up.sql diff --git a/crates/api_models/src/user/dashboard_metadata.rs b/crates/api_models/src/user/dashboard_metadata.rs index 66831c7aeb..b547a61d45 100644 --- a/crates/api_models/src/user/dashboard_metadata.rs +++ b/crates/api_models/src/user/dashboard_metadata.rs @@ -26,6 +26,7 @@ pub enum SetMetaDataRequest { IsMultipleConfiguration, #[serde(skip)] IsChangePasswordRequired, + OnboardingSurvey(OnboardingSurvey), } #[derive(Debug, serde::Deserialize, serde::Serialize)] @@ -46,6 +47,20 @@ pub struct ProcessorConnected { pub processor_name: String, } +#[derive(Debug, serde::Deserialize, serde::Serialize)] +pub struct OnboardingSurvey { + pub designation: Option, + pub about_business: Option, + pub business_website: Option, + pub hyperswitch_req: Option, + pub major_markets: Option>, + pub business_size: Option, + pub required_features: Option>, + pub required_processors: Option>, + pub planned_live_date: Option, + pub miscellaneous: Option, +} + #[derive(Debug, serde::Deserialize, serde::Serialize)] pub struct ConfiguredRouting { pub routing_id: String, @@ -113,6 +128,7 @@ pub enum GetMetaDataRequest { SetupWoocomWebhook, IsMultipleConfiguration, IsChangePasswordRequired, + OnboardingSurvey, } #[derive(Debug, serde::Deserialize, serde::Serialize)] @@ -150,4 +166,5 @@ pub enum GetMetaDataResponse { SetupWoocomWebhook(bool), IsMultipleConfiguration(bool), IsChangePasswordRequired(bool), + OnboardingSurvey(Option), } diff --git a/crates/diesel_models/src/enums.rs b/crates/diesel_models/src/enums.rs index 7d9b6eb57e..85a7e3d92d 100644 --- a/crates/diesel_models/src/enums.rs +++ b/crates/diesel_models/src/enums.rs @@ -348,4 +348,5 @@ pub enum DashboardMetadata { SetupWoocomWebhook, IsMultipleConfiguration, IsChangePasswordRequired, + OnboardingSurvey, } diff --git a/crates/router/src/core/user/dashboard_metadata.rs b/crates/router/src/core/user/dashboard_metadata.rs index bd4b2c3a10..c3512c32f4 100644 --- a/crates/router/src/core/user/dashboard_metadata.rs +++ b/crates/router/src/core/user/dashboard_metadata.rs @@ -112,6 +112,9 @@ fn parse_set_request(data_enum: api::SetMetaDataRequest) -> UserResult { Ok(types::MetaData::IsChangePasswordRequired(true)) } + api::SetMetaDataRequest::OnboardingSurvey(req) => { + Ok(types::MetaData::OnboardingSurvey(req)) + } } } @@ -139,6 +142,7 @@ fn parse_get_request(data_enum: api::GetMetaDataRequest) -> DBEnum { api::GetMetaDataRequest::SetupWoocomWebhook => DBEnum::SetupWoocomWebhook, api::GetMetaDataRequest::IsMultipleConfiguration => DBEnum::IsMultipleConfiguration, api::GetMetaDataRequest::IsChangePasswordRequired => DBEnum::IsChangePasswordRequired, + api::GetMetaDataRequest::OnboardingSurvey => DBEnum::OnboardingSurvey, } } @@ -218,6 +222,10 @@ fn into_response( DBEnum::IsChangePasswordRequired => Ok(api::GetMetaDataResponse::IsChangePasswordRequired( data.is_some(), )), + DBEnum::OnboardingSurvey => { + let resp = utils::deserialize_to_response(data)?; + Ok(api::GetMetaDataResponse::OnboardingSurvey(resp)) + } } } @@ -548,6 +556,17 @@ async fn insert_metadata( ) .await } + types::MetaData::OnboardingSurvey(data) => { + utils::insert_merchant_scoped_metadata_to_db( + state, + user.user_id, + user.merchant_id, + user.org_id, + metadata_key, + data, + ) + .await + } } } diff --git a/crates/router/src/types/domain/user/dashboard_metadata.rs b/crates/router/src/types/domain/user/dashboard_metadata.rs index 9c00809238..665ee1ab02 100644 --- a/crates/router/src/types/domain/user/dashboard_metadata.rs +++ b/crates/router/src/types/domain/user/dashboard_metadata.rs @@ -26,6 +26,7 @@ pub enum MetaData { SetupWoocomWebhook(bool), IsMultipleConfiguration(bool), IsChangePasswordRequired(bool), + OnboardingSurvey(api::OnboardingSurvey), } impl From<&MetaData> for DBEnum { @@ -53,6 +54,7 @@ impl From<&MetaData> for DBEnum { MetaData::SetupWoocomWebhook(_) => Self::SetupWoocomWebhook, MetaData::IsMultipleConfiguration(_) => Self::IsMultipleConfiguration, MetaData::IsChangePasswordRequired(_) => Self::IsChangePasswordRequired, + MetaData::OnboardingSurvey(_) => Self::OnboardingSurvey, } } } diff --git a/crates/router/src/utils/user/dashboard_metadata.rs b/crates/router/src/utils/user/dashboard_metadata.rs index e18a640117..3979a86494 100644 --- a/crates/router/src/utils/user/dashboard_metadata.rs +++ b/crates/router/src/utils/user/dashboard_metadata.rs @@ -214,6 +214,7 @@ pub fn separate_metadata_type_based_on_scope( | DBEnum::DownloadWoocom | DBEnum::ConfigureWoocom | DBEnum::SetupWoocomWebhook + | DBEnum::OnboardingSurvey | DBEnum::IsMultipleConfiguration => merchant_scoped.push(key), DBEnum::Feedback | DBEnum::ProdIntent | DBEnum::IsChangePasswordRequired => { user_scoped.push(key) diff --git a/migrations/2024-04-12-100908_add_dashboard_metadata_key_onboarding_survey/down.sql b/migrations/2024-04-12-100908_add_dashboard_metadata_key_onboarding_survey/down.sql new file mode 100644 index 0000000000..c7c9cbeb40 --- /dev/null +++ b/migrations/2024-04-12-100908_add_dashboard_metadata_key_onboarding_survey/down.sql @@ -0,0 +1,2 @@ +-- This file should undo anything in `up.sql` +SELECT 1; \ No newline at end of file diff --git a/migrations/2024-04-12-100908_add_dashboard_metadata_key_onboarding_survey/up.sql b/migrations/2024-04-12-100908_add_dashboard_metadata_key_onboarding_survey/up.sql new file mode 100644 index 0000000000..6c69d26481 --- /dev/null +++ b/migrations/2024-04-12-100908_add_dashboard_metadata_key_onboarding_survey/up.sql @@ -0,0 +1,3 @@ +-- Your SQL goes here +ALTER TYPE "DashboardMetadata" +ADD VALUE IF NOT EXISTS 'onboarding_survey'; \ No newline at end of file