Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(core): implement NameType for name validation #6734

Open
wants to merge 27 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 25 commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
1d18cce
feat: add card_holder_name validation
Sakilmostak Dec 3, 2024
6bfa78e
refactor: spell check
Sakilmostak Dec 3, 2024
8d5c164
feat: add unit test cases
Sakilmostak Dec 4, 2024
0793d2b
refactor: use unified billing address for payment confirm test
Sakilmostak Dec 4, 2024
8cadc2f
refactor: resolve ci checks
Sakilmostak Dec 4, 2024
62b63b6
feat: add nametype and implement in domain crate
Sakilmostak Dec 15, 2024
4397e27
feat: add nametype to router crate
Sakilmostak Dec 16, 2024
f8980db
refactor: unit tests
Sakilmostak Dec 20, 2024
998f990
refactor: nametype implementation for v2
Sakilmostak Dec 20, 2024
d06e84b
refactor: resolve merge main
Sakilmostak Dec 23, 2024
5199422
refactor: conversion
Sakilmostak Dec 30, 2024
53e92b4
refactor: resolve comment
Sakilmostak Jan 14, 2025
7aef96e
refactor: resolve comments
Sakilmostak Jan 14, 2025
e377b2b
refactor: minimum allowed size is zero
Sakilmostak Jan 15, 2025
56a0254
Merge branch 'main' into card_holder_name_validator
Sakilmostak Jan 17, 2025
8ebd788
refactor: resolve conflict with main
Sakilmostak Jan 17, 2025
6ae7480
refactor: resolve comments
Sakilmostak Jan 20, 2025
4ead56c
refactor: resolve comments
Sakilmostak Jan 23, 2025
f5406ea
Merge branch 'main' into card_holder_name_validator
Sakilmostak Jan 27, 2025
dc70eca
refactor: resolve comments
Sakilmostak Feb 5, 2025
b9cb94c
Merge branch 'main' into card_holder_name_validator
Sakilmostak Feb 6, 2025
f04391a
refactor: resolve conflict with main
Sakilmostak Feb 6, 2025
a3ef9d6
Merge branch 'main' into card_holder_name_validator
Sakilmostak Feb 7, 2025
3e58bdd
Merge branch 'main' into card_holder_name_validator
Sakilmostak Feb 10, 2025
170ed95
Merge branch 'main' into card_holder_name_validator
Sakilmostak Feb 14, 2025
8b7319e
refactor(utils): use to_state_code of hyperswitch_connectors in route…
Sakilmostak Feb 19, 2025
e565311
refactor: resolve conflct with main
Sakilmostak Feb 21, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions crates/api_models/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ common_utils = { version = "0.1.0", path = "../common_utils" }
euclid = { version = "0.1.0", path = "../euclid" }
masking = { version = "0.1.0", path = "../masking", default-features = false, features = ["alloc", "serde"] }
router_derive = { version = "0.1.0", path = "../router_derive" }
router_env = { version = "0.1.0", path = "../router_env", features = ["log_extra_implicit_fields", "log_custom_entries_to_extra"] }

[lints]
workspace = true
2 changes: 1 addition & 1 deletion crates/api_models/src/customers.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ pub struct CustomerRequest {
pub merchant_id: id_type::MerchantId,
/// The customer's name
#[schema(max_length = 255, value_type = Option<String>, example = "Jon Test")]
pub name: Option<Secret<String>>,
pub name: Option<common_utils::types::NameType>,
/// The customer's email address
#[schema(value_type = Option<String>, max_length = 255, example = "[email protected]")]
pub email: Option<pii::Email>,
Expand Down
8 changes: 4 additions & 4 deletions crates/api_models/src/mandates.rs
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ pub struct MandateCardDetails {
pub card_exp_year: Option<Secret<String>>,
/// The card holder name
#[schema(value_type = Option<String>)]
pub card_holder_name: Option<Secret<String>>,
pub card_holder_name: Option<common_utils::types::NameType>,
/// The token from card locker
#[schema(value_type = Option<String>)]
pub card_token: Option<Secret<String>>,
Expand All @@ -79,7 +79,7 @@ pub struct MandateCardDetails {
pub card_type: Option<String>,
/// The nick_name of the card holder
#[schema(value_type = Option<String>)]
pub nick_name: Option<Secret<String>>,
pub nick_name: Option<common_utils::types::NameType>,
}

#[derive(Clone, Debug, Deserialize, ToSchema, Serialize)]
Expand Down Expand Up @@ -151,7 +151,7 @@ pub struct NetworkTransactionIdAndCardDetails {

/// The card holder's name
#[schema(value_type = String, example = "John Test")]
pub card_holder_name: Option<Secret<String>>,
pub card_holder_name: Option<common_utils::types::NameType>,

/// The name of the issuer of card
#[schema(example = "chase")]
Expand All @@ -172,7 +172,7 @@ pub struct NetworkTransactionIdAndCardDetails {

/// The card holder's nick name
#[schema(value_type = Option<String>, example = "John Test")]
pub nick_name: Option<Secret<String>>,
pub nick_name: Option<common_utils::types::NameType>,

/// The network transaction ID provided by the card network during a CIT (Customer Initiated Transaction),
/// where `setup_future_usage` is set to `off_session`.
Expand Down
62 changes: 28 additions & 34 deletions crates/api_models/src/payment_methods.rs
Original file line number Diff line number Diff line change
Expand Up @@ -525,11 +525,11 @@ pub struct CardDetail {

/// Card Holder Name
#[schema(value_type = String,example = "John Doe")]
pub card_holder_name: Option<masking::Secret<String>>,
pub card_holder_name: Option<common_utils::types::NameType>,

/// Card Holder's Nick Name
#[schema(value_type = Option<String>,example = "John Doe")]
pub nick_name: Option<masking::Secret<String>>,
pub nick_name: Option<common_utils::types::NameType>,

/// Card Issuing Country
pub card_issuing_country: Option<String>,
Expand Down Expand Up @@ -573,11 +573,11 @@ pub struct CardDetail {

/// Card Holder Name
#[schema(value_type = String,example = "John Doe")]
pub card_holder_name: Option<masking::Secret<String>>,
pub card_holder_name: Option<common_utils::types::NameType>,

/// Card Holder's Nick Name
#[schema(value_type = Option<String>,example = "John Doe")]
pub nick_name: Option<masking::Secret<String>>,
pub nick_name: Option<common_utils::types::NameType>,

/// Card Issuing Country
#[schema(value_type = CountryAlpha2)]
Expand Down Expand Up @@ -611,11 +611,11 @@ pub struct MigrateCardDetail {

/// Card Holder Name
#[schema(value_type = String,example = "John Doe")]
pub card_holder_name: Option<masking::Secret<String>>,
pub card_holder_name: Option<common_utils::types::NameType>,

/// Card Holder's Nick Name
#[schema(value_type = Option<String>,example = "John Doe")]
pub nick_name: Option<masking::Secret<String>>,
pub nick_name: Option<common_utils::types::NameType>,

/// Card Issuing Country
pub card_issuing_country: Option<String>,
Expand Down Expand Up @@ -648,11 +648,11 @@ pub struct MigrateNetworkTokenData {

/// Card Holder Name
#[schema(value_type = String,example = "John Doe")]
pub card_holder_name: Option<masking::Secret<String>>,
pub card_holder_name: Option<common_utils::types::NameType>,

/// Card Holder's Nick Name
#[schema(value_type = Option<String>,example = "John Doe")]
pub nick_name: Option<masking::Secret<String>>,
pub nick_name: Option<common_utils::types::NameType>,

/// Card Issuing Country
pub card_issuing_country: Option<String>,
Expand Down Expand Up @@ -695,11 +695,11 @@ pub struct CardDetailUpdate {

/// Card Holder Name
#[schema(value_type = String,example = "John Doe")]
pub card_holder_name: Option<masking::Secret<String>>,
pub card_holder_name: Option<common_utils::types::NameType>,

/// Card Holder's Nick Name
#[schema(value_type = Option<String>,example = "John Doe")]
pub nick_name: Option<masking::Secret<String>>,
pub nick_name: Option<common_utils::types::NameType>,
}

#[cfg(all(
Expand All @@ -722,10 +722,7 @@ impl CardDetailUpdate {
.card_holder_name
.clone()
.or(card_data_from_locker.name_on_card),
nick_name: self
.nick_name
.clone()
.or(card_data_from_locker.nick_name.map(masking::Secret::new)),
nick_name: self.nick_name.clone().or(card_data_from_locker.nick_name),
card_issuing_country: None,
card_network: None,
card_issuer: None,
Expand All @@ -740,11 +737,11 @@ impl CardDetailUpdate {
pub struct CardDetailUpdate {
/// Card Holder Name
#[schema(value_type = String,example = "John Doe")]
pub card_holder_name: Option<masking::Secret<String>>,
pub card_holder_name: Option<common_utils::types::NameType>,

/// Card Holder's Nick Name
#[schema(value_type = Option<String>,example = "John Doe")]
pub nick_name: Option<masking::Secret<String>>,
pub nick_name: Option<common_utils::types::NameType>,
}

#[cfg(all(feature = "v2", feature = "payment_methods_v2"))]
Expand All @@ -758,10 +755,7 @@ impl CardDetailUpdate {
.card_holder_name
.clone()
.or(card_data_from_locker.name_on_card),
nick_name: self
.nick_name
.clone()
.or(card_data_from_locker.nick_name.map(masking::Secret::new)),
nick_name: self.nick_name.clone().or(card_data_from_locker.nick_name),
card_issuing_country: None,
card_network: None,
card_issuer: None,
Expand Down Expand Up @@ -901,8 +895,8 @@ pub struct CardDetailsPaymentMethod {
pub issuer_country: Option<String>,
pub expiry_month: Option<masking::Secret<String>>,
pub expiry_year: Option<masking::Secret<String>>,
pub nick_name: Option<masking::Secret<String>>,
pub card_holder_name: Option<masking::Secret<String>>,
pub nick_name: Option<common_utils::types::NameType>,
pub card_holder_name: Option<common_utils::types::NameType>,
pub card_isin: Option<String>,
pub card_issuer: Option<String>,
pub card_network: Option<api_enums::CardNetwork>,
Expand Down Expand Up @@ -975,12 +969,12 @@ pub enum BankAccountAccessCreds {
#[derive(Debug, serde::Deserialize, serde::Serialize, Clone)]
pub struct Card {
pub card_number: CardNumber,
pub name_on_card: Option<masking::Secret<String>>,
pub name_on_card: Option<common_utils::types::NameType>,
pub card_exp_month: masking::Secret<String>,
pub card_exp_year: masking::Secret<String>,
pub card_brand: Option<String>,
pub card_isin: Option<String>,
pub nick_name: Option<String>,
pub nick_name: Option<common_utils::types::NameType>,
}

#[cfg(all(
Expand All @@ -1006,13 +1000,13 @@ pub struct CardDetailFromLocker {
pub card_token: Option<masking::Secret<String>>,

#[schema(value_type=Option<String>)]
pub card_holder_name: Option<masking::Secret<String>>,
pub card_holder_name: Option<common_utils::types::NameType>,

#[schema(value_type=Option<String>)]
pub card_fingerprint: Option<masking::Secret<String>>,

#[schema(value_type=Option<String>)]
pub nick_name: Option<masking::Secret<String>>,
pub nick_name: Option<common_utils::types::NameType>,

#[schema(value_type = Option<CardNetwork>)]
pub card_network: Option<api_enums::CardNetwork>,
Expand Down Expand Up @@ -1040,13 +1034,13 @@ pub struct CardDetailFromLocker {
pub expiry_year: Option<masking::Secret<String>>,

#[schema(value_type=Option<String>)]
pub card_holder_name: Option<masking::Secret<String>>,
pub card_holder_name: Option<common_utils::types::NameType>,

#[schema(value_type=Option<String>)]
pub card_fingerprint: Option<masking::Secret<String>>,

#[schema(value_type=Option<String>)]
pub nick_name: Option<masking::Secret<String>>,
pub nick_name: Option<common_utils::types::NameType>,

#[schema(value_type = Option<CardNetwork>)]
pub card_network: Option<api_enums::CardNetwork>,
Expand Down Expand Up @@ -2171,8 +2165,8 @@ pub struct TokenizedCardValue1 {
pub card_number: String,
pub exp_year: String,
pub exp_month: String,
pub name_on_card: Option<String>,
pub nickname: Option<String>,
pub name_on_card: Option<common_utils::types::NameType>,
pub nickname: Option<common_utils::types::NameType>,
pub card_last_four: Option<String>,
pub card_token: Option<String>,
}
Expand Down Expand Up @@ -2240,14 +2234,14 @@ pub struct TokenizedBankRedirectValue2 {
#[derive(Debug, Clone, serde::Deserialize, serde::Serialize)]
pub struct PaymentMethodRecord {
pub customer_id: id_type::CustomerId,
pub name: Option<masking::Secret<String>>,
pub name: Option<common_utils::types::NameType>,
pub email: Option<pii::Email>,
pub phone: Option<masking::Secret<String>>,
pub phone_country_code: Option<String>,
pub merchant_id: Option<id_type::MerchantId>,
pub payment_method: Option<api_enums::PaymentMethod>,
pub payment_method_type: Option<api_enums::PaymentMethodType>,
pub nick_name: masking::Secret<String>,
pub nick_name: common_utils::types::NameType,
pub payment_instrument_id: Option<masking::Secret<String>>,
pub card_number_masked: masking::Secret<String>,
pub card_expiry_month: masking::Secret<String>,
Expand All @@ -2256,8 +2250,8 @@ pub struct PaymentMethodRecord {
pub original_transaction_id: Option<String>,
pub billing_address_zip: masking::Secret<String>,
pub billing_address_state: masking::Secret<String>,
pub billing_address_first_name: masking::Secret<String>,
pub billing_address_last_name: masking::Secret<String>,
pub billing_address_first_name: common_utils::types::NameType,
pub billing_address_last_name: common_utils::types::NameType,
pub billing_address_city: String,
pub billing_address_country: Option<api_enums::CountryAlpha2>,
pub billing_address_line1: masking::Secret<String>,
Expand Down
Loading
Loading