Skip to content

Commit 0e4d281

Browse files
Chikke SrujanChikke Srujan
authored andcommitted
resolve comments
1 parent d83b90d commit 0e4d281

File tree

15 files changed

+139
-32
lines changed

15 files changed

+139
-32
lines changed

crates/api_models/src/payments.rs

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -312,7 +312,8 @@ pub struct PaymentsCreateIntentRequest {
312312
pub merchant_connector_details: Option<common_types::domain::MerchantConnectorAuthDetails>,
313313

314314
/// Allow partial authorization for this payment
315-
pub enable_partial_authorization: Option<bool>,
315+
pub enable_partial_authorization:
316+
Option<common_types::primitive_wrappers::EnablePartialAuthorizationBool>,
316317
}
317318
#[cfg(feature = "v2")]
318319
#[derive(Debug, serde::Serialize, serde::Deserialize, Clone, ToSchema)]
@@ -1274,7 +1275,8 @@ pub struct PaymentsRequest {
12741275
pub order_date: Option<PrimitiveDateTime>,
12751276

12761277
/// Allow partial authorization for this payment
1277-
pub enable_partial_authorization: Option<bool>,
1278+
pub enable_partial_authorization:
1279+
Option<common_types::primitive_wrappers::EnablePartialAuthorizationBool>,
12781280

12791281
/// Boolean indicating whether to enable overcapture for this payment
12801282
#[remove_in(PaymentsConfirmRequest)]
@@ -5651,7 +5653,8 @@ pub struct PaymentsResponse {
56515653
pub whole_connector_response: Option<Secret<String>>,
56525654

56535655
/// Allow partial authorization for this payment
5654-
pub enable_partial_authorization: Option<bool>,
5656+
pub enable_partial_authorization:
5657+
Option<common_types::primitive_wrappers::EnablePartialAuthorizationBool>,
56555658

56565659
/// Bool indicating if overcapture must be requested for this payment
56575660
#[schema(value_type = Option<bool>)]
@@ -6085,7 +6088,8 @@ pub struct PaymentsRequest {
60856088
pub return_raw_connector_response: Option<bool>,
60866089

60876090
/// Allow partial authorization for this payment
6088-
pub enable_partial_authorization: Option<bool>,
6091+
pub enable_partial_authorization:
6092+
Option<common_types::primitive_wrappers::EnablePartialAuthorizationBool>,
60896093
}
60906094

60916095
#[cfg(feature = "v2")]
@@ -9772,7 +9776,8 @@ pub struct RecoveryPaymentsCreate {
97729776
pub action: common_payments_types::RecoveryAction,
97739777

97749778
/// Allow partial authorization for this payment
9775-
pub enable_partial_authorization: Option<bool>,
9779+
pub enable_partial_authorization:
9780+
Option<common_types::primitive_wrappers::EnablePartialAuthorizationBool>,
97769781

97779782
/// You can specify up to 50 keys, with key names up to 40 characters long and values up to 500 characters long. Metadata is useful for storing additional, structured information on an object.
97789783
#[schema(value_type = Option<Object>, example = r#"{ "udf1": "some-value", "udf2": "some-value" }"#)]

crates/common_types/src/primitive_wrappers.rs

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,53 @@ mod bool_wrappers {
9292
}
9393
}
9494

95+
/// Bool that represents if Enalbe Partial Authorization is Requested or not
96+
#[derive(
97+
Clone, Copy, Debug, Eq, PartialEq, Serialize, Deserialize, diesel::expression::AsExpression,
98+
)]
99+
#[diesel(sql_type = diesel::sql_types::Bool)]
100+
pub struct EnablePartialAuthorizationBool(bool);
101+
impl Deref for EnablePartialAuthorizationBool {
102+
type Target = bool;
103+
104+
fn deref(&self) -> &Self::Target {
105+
&self.0
106+
}
107+
}
108+
impl From<bool> for EnablePartialAuthorizationBool {
109+
fn from(value: bool) -> Self {
110+
Self(value)
111+
}
112+
}
113+
impl EnablePartialAuthorizationBool {
114+
/// returns the inner bool value
115+
pub fn is_true(&self) -> bool {
116+
self.0
117+
}
118+
}
119+
impl<DB> diesel::serialize::ToSql<diesel::sql_types::Bool, DB> for EnablePartialAuthorizationBool
120+
where
121+
DB: diesel::backend::Backend,
122+
bool: diesel::serialize::ToSql<diesel::sql_types::Bool, DB>,
123+
{
124+
fn to_sql<'b>(
125+
&'b self,
126+
out: &mut diesel::serialize::Output<'b, '_, DB>,
127+
) -> diesel::serialize::Result {
128+
self.0.to_sql(out)
129+
}
130+
}
131+
impl<DB> diesel::deserialize::FromSql<diesel::sql_types::Bool, DB>
132+
for EnablePartialAuthorizationBool
133+
where
134+
DB: diesel::backend::Backend,
135+
bool: diesel::deserialize::FromSql<diesel::sql_types::Bool, DB>,
136+
{
137+
fn from_sql(value: DB::RawValue<'_>) -> diesel::deserialize::Result<Self> {
138+
bool::from_sql(value).map(Self)
139+
}
140+
}
141+
95142
/// Bool that represents if Extended Authorization is always Requested or not
96143
#[derive(
97144
Clone, Copy, Debug, Eq, PartialEq, diesel::expression::AsExpression, Serialize, Deserialize,

crates/common_utils/src/types/primitive_wrappers.rs

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,46 @@ pub(crate) mod bool_wrappers {
7575
}
7676
}
7777

78+
/// Bool that represents if Enable Partial Authorization is Requested or not
79+
#[derive(
80+
Clone, Copy, Debug, Eq, PartialEq, Serialize, Deserialize, diesel::expression::AsExpression,
81+
)]
82+
#[diesel(sql_type = diesel::sql_types::Bool)]
83+
pub struct EnablePartialAuthorizationBool(bool);
84+
impl From<bool> for EnablePartialAuthorizationBool {
85+
fn from(value: bool) -> Self {
86+
Self(value)
87+
}
88+
}
89+
impl EnablePartialAuthorizationBool {
90+
/// returns the inner bool value
91+
pub fn is_true(&self) -> bool {
92+
self.0
93+
}
94+
}
95+
impl<DB> diesel::serialize::ToSql<diesel::sql_types::Bool, DB> for EnablePartialAuthorizationBool
96+
where
97+
DB: diesel::backend::Backend,
98+
bool: diesel::serialize::ToSql<diesel::sql_types::Bool, DB>,
99+
{
100+
fn to_sql<'b>(
101+
&'b self,
102+
out: &mut diesel::serialize::Output<'b, '_, DB>,
103+
) -> diesel::serialize::Result {
104+
self.0.to_sql(out)
105+
}
106+
}
107+
impl<DB> diesel::deserialize::FromSql<diesel::sql_types::Bool, DB>
108+
for EnablePartialAuthorizationBool
109+
where
110+
DB: diesel::backend::Backend,
111+
bool: diesel::deserialize::FromSql<diesel::sql_types::Bool, DB>,
112+
{
113+
fn from_sql(value: DB::RawValue<'_>) -> diesel::deserialize::Result<Self> {
114+
bool::from_sql(value).map(Self)
115+
}
116+
}
117+
78118
/// Bool that represents if Extended Authorization is always Requested or not
79119
#[derive(
80120
Clone, Copy, Debug, Eq, PartialEq, diesel::expression::AsExpression, Serialize, Deserialize,

crates/diesel_models/src/payment_intent.rs

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
use common_enums::{PaymentMethodType, RequestIncrementalAuthorization};
2-
use common_types::primitive_wrappers::RequestExtendedAuthorizationBool;
2+
use common_types::primitive_wrappers::{
3+
EnablePartialAuthorizationBool, RequestExtendedAuthorizationBool,
4+
};
35
use common_utils::{encryption::Encryption, pii, types::MinorUnit};
46
use diesel::{AsChangeset, Identifiable, Insertable, Queryable, Selectable};
57
use masking::ExposeInterface;
@@ -76,7 +78,7 @@ pub struct PaymentIntent {
7678
pub shipping_amount_tax: Option<MinorUnit>,
7779
pub duty_amount: Option<MinorUnit>,
7880
pub order_date: Option<PrimitiveDateTime>,
79-
pub enable_partial_authorization: Option<bool>,
81+
pub enable_partial_authorization: Option<EnablePartialAuthorizationBool>,
8082
pub enable_overcapture: Option<common_types::primitive_wrappers::EnableOvercaptureBool>,
8183
pub merchant_reference_id: Option<common_utils::id_type::PaymentReferenceId>,
8284
pub billing_address: Option<Encryption>,
@@ -178,7 +180,7 @@ pub struct PaymentIntent {
178180
pub shipping_amount_tax: Option<MinorUnit>,
179181
pub duty_amount: Option<MinorUnit>,
180182
pub order_date: Option<PrimitiveDateTime>,
181-
pub enable_partial_authorization: Option<bool>,
183+
pub enable_partial_authorization: Option<EnablePartialAuthorizationBool>,
182184
pub enable_overcapture: Option<common_types::primitive_wrappers::EnableOvercaptureBool>,
183185
}
184186

@@ -357,7 +359,7 @@ pub struct PaymentIntentNew {
357359
pub organization_id: common_utils::id_type::OrganizationId,
358360
pub tax_details: Option<TaxDetails>,
359361
pub skip_external_tax_calculation: Option<bool>,
360-
pub enable_partial_authorization: Option<bool>,
362+
pub enable_partial_authorization: Option<EnablePartialAuthorizationBool>,
361363
pub split_txns_enabled: Option<common_enums::SplitTxnsEnabled>,
362364
pub merchant_reference_id: Option<common_utils::id_type::PaymentReferenceId>,
363365
pub billing_address: Option<Encryption>,
@@ -468,7 +470,7 @@ pub struct PaymentIntentNew {
468470
pub order_date: Option<PrimitiveDateTime>,
469471
pub shipping_amount_tax: Option<MinorUnit>,
470472
pub duty_amount: Option<MinorUnit>,
471-
pub enable_partial_authorization: Option<bool>,
473+
pub enable_partial_authorization: Option<EnablePartialAuthorizationBool>,
472474
pub enable_overcapture: Option<common_types::primitive_wrappers::EnableOvercaptureBool>,
473475
}
474476

@@ -639,7 +641,7 @@ pub struct PaymentIntentUpdateFields {
639641
pub order_date: Option<PrimitiveDateTime>,
640642
pub shipping_amount_tax: Option<MinorUnit>,
641643
pub duty_amount: Option<MinorUnit>,
642-
pub enable_partial_authorization: Option<bool>,
644+
pub enable_partial_authorization: Option<EnablePartialAuthorizationBool>,
643645
pub enable_overcapture: Option<common_types::primitive_wrappers::EnableOvercaptureBool>,
644646
}
645647

@@ -863,7 +865,7 @@ pub struct PaymentIntentUpdateInternal {
863865
pub order_date: Option<PrimitiveDateTime>,
864866
pub shipping_amount_tax: Option<MinorUnit>,
865867
pub duty_amount: Option<MinorUnit>,
866-
pub enable_partial_authorization: Option<bool>,
868+
pub enable_partial_authorization: Option<EnablePartialAuthorizationBool>,
867869
pub enable_overcapture: Option<common_types::primitive_wrappers::EnableOvercaptureBool>,
868870
}
869871

crates/hyperswitch_connectors/src/connectors/nuvei/transformers.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ impl NuveiAuthorizePreprocessingCommon for SetupMandateRequestData {
171171

172172
fn get_is_partial_approval(&self) -> Option<PartialApprovalFlag> {
173173
self.enable_partial_authorization
174-
.map(PartialApprovalFlag::from)
174+
.map(|partial_auth| PartialApprovalFlag::from(partial_auth.is_true()))
175175
}
176176

177177
fn get_email_required(&self) -> Result<Email, error_stack::Report<errors::ConnectorError>> {
@@ -255,7 +255,7 @@ impl NuveiAuthorizePreprocessingCommon for PaymentsAuthorizeData {
255255
}
256256
fn get_is_partial_approval(&self) -> Option<PartialApprovalFlag> {
257257
self.enable_partial_authorization
258-
.map(PartialApprovalFlag::from)
258+
.map(|partial_auth| PartialApprovalFlag::from(partial_auth.is_true()))
259259
}
260260
}
261261

crates/hyperswitch_connectors/src/connectors/worldpayvantiv/transformers.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use common_utils::{
22
ext_traits::Encode,
3-
types::{MinorUnit, StringMajorUnit, StringMajorUnitForConnector, StringMinorUnitForConnector},
3+
types::{MinorUnit, StringMajorUnit, StringMinorUnitForConnector},
44
};
55
use error_stack::ResultExt;
66
use hyperswitch_domain_models::{

crates/hyperswitch_domain_models/src/payments.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ use std::marker::PhantomData;
33

44
#[cfg(feature = "v2")]
55
use api_models::payments::{SessionToken, VaultSessionDetails};
6+
use common_types::primitive_wrappers::EnablePartialAuthorizationBool;
67
#[cfg(feature = "v1")]
78
use common_types::primitive_wrappers::{
89
AlwaysRequestExtendedAuthorization, EnableOvercaptureBool, RequestExtendedAuthorizationBool,
@@ -122,7 +123,7 @@ pub struct PaymentIntent {
122123
pub order_date: Option<PrimitiveDateTime>,
123124
pub shipping_amount_tax: Option<MinorUnit>,
124125
pub duty_amount: Option<MinorUnit>,
125-
pub enable_partial_authorization: Option<bool>,
126+
pub enable_partial_authorization: Option<EnablePartialAuthorizationBool>,
126127
pub enable_overcapture: Option<EnableOvercaptureBool>,
127128
}
128129

@@ -539,7 +540,7 @@ pub struct PaymentIntent {
539540
/// or generated internally by Hyperswitch (false)
540541
pub is_payment_id_from_merchant: Option<bool>,
541542
/// Denotes whether merchant requested for partial authorization to be enabled for this payment.
542-
pub enable_partial_authorization: Option<bool>,
543+
pub enable_partial_authorization: Option<EnablePartialAuthorizationBool>,
543544
}
544545

545546
#[cfg(feature = "v2")]

crates/hyperswitch_domain_models/src/payments/payment_intent.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
use common_types::primitive_wrappers::EnablePartialAuthorizationBool;
12
#[cfg(feature = "v1")]
23
use common_utils::consts::PAYMENTS_LIST_MAX_LIMIT_V2;
34
#[cfg(feature = "v2")]
@@ -250,7 +251,7 @@ pub struct PaymentIntentUpdateFields {
250251
pub is_confirm_operation: bool,
251252
pub payment_channel: Option<common_enums::PaymentChannel>,
252253
pub feature_metadata: Option<Secret<serde_json::Value>>,
253-
pub enable_partial_authorization: Option<bool>,
254+
pub enable_partial_authorization: Option<EnablePartialAuthorizationBool>,
254255
pub enable_overcapture: Option<common_types::primitive_wrappers::EnableOvercaptureBool>,
255256
}
256257

@@ -452,7 +453,7 @@ pub struct PaymentIntentUpdateInternal {
452453
pub order_date: Option<PrimitiveDateTime>,
453454
pub shipping_amount_tax: Option<MinorUnit>,
454455
pub duty_amount: Option<MinorUnit>,
455-
pub enable_partial_authorization: Option<bool>,
456+
pub enable_partial_authorization: Option<EnablePartialAuthorizationBool>,
456457
pub enable_overcapture: Option<common_types::primitive_wrappers::EnableOvercaptureBool>,
457458
}
458459

crates/hyperswitch_domain_models/src/revenue_recovery.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
use api_models::{payments as api_payments, webhooks};
22
use common_enums::enums as common_enums;
3+
use common_types::primitive_wrappers::EnablePartialAuthorizationBool;
34
use common_utils::{id_type, pii, types as util_types};
45
use time::PrimitiveDateTime;
56

@@ -80,7 +81,7 @@ pub struct RevenueRecoveryInvoiceData {
8081
/// metadata of the merchant
8182
pub metadata: Option<pii::SecretSerdeValue>,
8283
/// Allow partial authorization for this payment
83-
pub enable_partial_authorization: Option<bool>,
84+
pub enable_partial_authorization: Option<EnablePartialAuthorizationBool>,
8485
}
8586

8687
#[derive(Clone, Debug)]

crates/hyperswitch_domain_models/src/router_request_types.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,8 @@ pub struct PaymentsAuthorizeData {
8585
pub order_id: Option<String>,
8686
pub locale: Option<String>,
8787
pub payment_channel: Option<common_enums::PaymentChannel>,
88-
pub enable_partial_authorization: Option<bool>,
88+
pub enable_partial_authorization:
89+
Option<common_types::primitive_wrappers::EnablePartialAuthorizationBool>,
8990
pub enable_overcapture: Option<common_types::primitive_wrappers::EnableOvercaptureBool>,
9091
}
9192

@@ -1400,7 +1401,8 @@ pub struct SetupMandateRequestData {
14001401
pub shipping_cost: Option<MinorUnit>,
14011402
pub connector_testing_data: Option<pii::SecretSerdeValue>,
14021403
pub customer_id: Option<id_type::CustomerId>,
1403-
pub enable_partial_authorization: Option<bool>,
1404+
pub enable_partial_authorization:
1405+
Option<common_types::primitive_wrappers::EnablePartialAuthorizationBool>,
14041406
pub payment_channel: Option<storage_enums::PaymentChannel>,
14051407
}
14061408

0 commit comments

Comments
 (0)