mirror of
https://github.com/juspay/hyperswitch.git
synced 2025-11-01 19:42:27 +08:00
feat(merchant_account_v2): add merchant_account_v2 domain and diesel models (#5365)
Co-authored-by: hrithikesh026 <hrithikesh.vm@juspay.in> Co-authored-by: Prajjwal Kumar <prajjwal.kumar@juspay.in> Co-authored-by: Sanchith Hegde <sanchith.hegde@juspay.in> Co-authored-by: hyperswitch-bot[bot] <148525504+hyperswitch-bot[bot]@users.noreply.github.com>
This commit is contained in:
@ -1135,6 +1135,148 @@ impl DataModelExt for MandateDataType {
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(all(feature = "v2", feature = "payment_v2"))]
|
||||
impl DataModelExt for PaymentAttempt {
|
||||
type StorageModel = DieselPaymentAttempt;
|
||||
|
||||
fn to_storage_model(self) -> Self::StorageModel {
|
||||
DieselPaymentAttempt {
|
||||
payment_id: self.payment_id,
|
||||
merchant_id: self.merchant_id,
|
||||
attempt_id: self.attempt_id,
|
||||
status: self.status,
|
||||
amount: self.amount.get_amount_as_i64(),
|
||||
net_amount: Some(self.net_amount.get_amount_as_i64()),
|
||||
currency: self.currency,
|
||||
save_to_locker: self.save_to_locker,
|
||||
connector: self.connector,
|
||||
error_message: self.error_message,
|
||||
offer_amount: self
|
||||
.offer_amount
|
||||
.map(|offer_amt| offer_amt.get_amount_as_i64()),
|
||||
surcharge_amount: self
|
||||
.surcharge_amount
|
||||
.map(|surcharge_amt| surcharge_amt.get_amount_as_i64()),
|
||||
tax_amount: self.tax_amount.map(|tax_amt| tax_amt.get_amount_as_i64()),
|
||||
payment_method_id: self.payment_method_id,
|
||||
payment_method: self.payment_method,
|
||||
connector_transaction_id: self.connector_transaction_id,
|
||||
capture_method: self.capture_method,
|
||||
capture_on: self.capture_on,
|
||||
confirm: self.confirm,
|
||||
authentication_type: self.authentication_type,
|
||||
created_at: self.created_at,
|
||||
modified_at: self.modified_at,
|
||||
last_synced: self.last_synced,
|
||||
cancellation_reason: self.cancellation_reason,
|
||||
amount_to_capture: self
|
||||
.amount_to_capture
|
||||
.map(|capture_amt| capture_amt.get_amount_as_i64()),
|
||||
mandate_id: self.mandate_id,
|
||||
browser_info: self.browser_info,
|
||||
error_code: self.error_code,
|
||||
payment_token: self.payment_token,
|
||||
connector_metadata: self.connector_metadata,
|
||||
payment_experience: self.payment_experience,
|
||||
payment_method_type: self.payment_method_type,
|
||||
payment_method_data: self.payment_method_data,
|
||||
business_sub_label: self.business_sub_label,
|
||||
straight_through_algorithm: self.straight_through_algorithm,
|
||||
preprocessing_step_id: self.preprocessing_step_id,
|
||||
mandate_details: self.mandate_details.map(|d| d.to_storage_model()),
|
||||
error_reason: self.error_reason,
|
||||
multiple_capture_count: self.multiple_capture_count,
|
||||
connector_response_reference_id: self.connector_response_reference_id,
|
||||
amount_capturable: self.amount_capturable.get_amount_as_i64(),
|
||||
updated_by: self.updated_by,
|
||||
authentication_data: self.authentication_data,
|
||||
encoded_data: self.encoded_data,
|
||||
merchant_connector_id: self.merchant_connector_id,
|
||||
unified_code: self.unified_code,
|
||||
unified_message: self.unified_message,
|
||||
external_three_ds_authentication_attempted: self
|
||||
.external_three_ds_authentication_attempted,
|
||||
authentication_connector: self.authentication_connector,
|
||||
authentication_id: self.authentication_id,
|
||||
mandate_data: self.mandate_data.map(|d| d.to_storage_model()),
|
||||
payment_method_billing_address_id: self.payment_method_billing_address_id,
|
||||
fingerprint_id: self.fingerprint_id,
|
||||
charge_id: self.charge_id,
|
||||
client_source: self.client_source,
|
||||
client_version: self.client_version,
|
||||
customer_acceptance: self.customer_acceptance,
|
||||
}
|
||||
}
|
||||
|
||||
fn from_storage_model(storage_model: Self::StorageModel) -> Self {
|
||||
Self {
|
||||
net_amount: MinorUnit::new(storage_model.get_or_calculate_net_amount()),
|
||||
payment_id: storage_model.payment_id,
|
||||
merchant_id: storage_model.merchant_id,
|
||||
attempt_id: storage_model.attempt_id,
|
||||
status: storage_model.status,
|
||||
amount: MinorUnit::new(storage_model.amount),
|
||||
currency: storage_model.currency,
|
||||
save_to_locker: storage_model.save_to_locker,
|
||||
connector: storage_model.connector,
|
||||
error_message: storage_model.error_message,
|
||||
offer_amount: storage_model.offer_amount.map(MinorUnit::new),
|
||||
surcharge_amount: storage_model.surcharge_amount.map(MinorUnit::new),
|
||||
tax_amount: storage_model.tax_amount.map(MinorUnit::new),
|
||||
payment_method_id: storage_model.payment_method_id,
|
||||
payment_method: storage_model.payment_method,
|
||||
connector_transaction_id: storage_model.connector_transaction_id,
|
||||
capture_method: storage_model.capture_method,
|
||||
capture_on: storage_model.capture_on,
|
||||
confirm: storage_model.confirm,
|
||||
authentication_type: storage_model.authentication_type,
|
||||
created_at: storage_model.created_at,
|
||||
modified_at: storage_model.modified_at,
|
||||
last_synced: storage_model.last_synced,
|
||||
cancellation_reason: storage_model.cancellation_reason,
|
||||
amount_to_capture: storage_model.amount_to_capture.map(MinorUnit::new),
|
||||
mandate_id: storage_model.mandate_id,
|
||||
browser_info: storage_model.browser_info,
|
||||
error_code: storage_model.error_code,
|
||||
payment_token: storage_model.payment_token,
|
||||
connector_metadata: storage_model.connector_metadata,
|
||||
payment_experience: storage_model.payment_experience,
|
||||
payment_method_type: storage_model.payment_method_type,
|
||||
payment_method_data: storage_model.payment_method_data,
|
||||
business_sub_label: storage_model.business_sub_label,
|
||||
straight_through_algorithm: storage_model.straight_through_algorithm,
|
||||
preprocessing_step_id: storage_model.preprocessing_step_id,
|
||||
mandate_details: storage_model
|
||||
.mandate_details
|
||||
.map(MandateDataType::from_storage_model),
|
||||
error_reason: storage_model.error_reason,
|
||||
multiple_capture_count: storage_model.multiple_capture_count,
|
||||
connector_response_reference_id: storage_model.connector_response_reference_id,
|
||||
amount_capturable: MinorUnit::new(storage_model.amount_capturable),
|
||||
updated_by: storage_model.updated_by,
|
||||
authentication_data: storage_model.authentication_data,
|
||||
encoded_data: storage_model.encoded_data,
|
||||
merchant_connector_id: storage_model.merchant_connector_id,
|
||||
unified_code: storage_model.unified_code,
|
||||
unified_message: storage_model.unified_message,
|
||||
external_three_ds_authentication_attempted: storage_model
|
||||
.external_three_ds_authentication_attempted,
|
||||
authentication_connector: storage_model.authentication_connector,
|
||||
authentication_id: storage_model.authentication_id,
|
||||
mandate_data: storage_model
|
||||
.mandate_data
|
||||
.map(MandateDetails::from_storage_model),
|
||||
payment_method_billing_address_id: storage_model.payment_method_billing_address_id,
|
||||
fingerprint_id: storage_model.fingerprint_id,
|
||||
charge_id: storage_model.charge_id,
|
||||
client_source: storage_model.client_source,
|
||||
client_version: storage_model.client_version,
|
||||
customer_acceptance: storage_model.customer_acceptance,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(all(any(feature = "v1", feature = "v2"), not(feature = "payment_v2")))]
|
||||
impl DataModelExt for PaymentAttempt {
|
||||
type StorageModel = DieselPaymentAttempt;
|
||||
|
||||
|
||||
@ -10,6 +10,22 @@ use common_utils::{
|
||||
};
|
||||
#[cfg(feature = "olap")]
|
||||
use diesel::{associations::HasTable, ExpressionMethods, JoinOnDsl, QueryDsl};
|
||||
#[cfg(feature = "olap")]
|
||||
use diesel_models::query::generics::db_metrics;
|
||||
#[cfg(all(
|
||||
any(feature = "v1", feature = "v2"),
|
||||
not(feature = "payment_v2"),
|
||||
feature = "olap"
|
||||
))]
|
||||
use diesel_models::schema::{
|
||||
payment_attempt::{self as payment_attempt_schema, dsl as pa_dsl},
|
||||
payment_intent::dsl as pi_dsl,
|
||||
};
|
||||
#[cfg(all(feature = "v2", feature = "payment_v2", feature = "olap"))]
|
||||
use diesel_models::schema_v2::{
|
||||
payment_attempt::{self as payment_attempt_schema, dsl as pa_dsl},
|
||||
payment_intent::dsl as pi_dsl,
|
||||
};
|
||||
use diesel_models::{
|
||||
enums::MerchantStorageScheme,
|
||||
kv,
|
||||
@ -18,11 +34,6 @@ use diesel_models::{
|
||||
PaymentIntent as DieselPaymentIntent, PaymentIntentUpdate as DieselPaymentIntentUpdate,
|
||||
},
|
||||
};
|
||||
#[cfg(feature = "olap")]
|
||||
use diesel_models::{
|
||||
query::generics::db_metrics,
|
||||
schema::{payment_attempt::dsl as pa_dsl, payment_intent::dsl as pi_dsl},
|
||||
};
|
||||
use error_stack::ResultExt;
|
||||
#[cfg(feature = "olap")]
|
||||
use hyperswitch_domain_models::payments::payment_intent::PaymentIntentFetchConstraints;
|
||||
@ -660,8 +671,7 @@ impl<T: DatabaseStore> PaymentIntentInterface for crate::RouterStore<T> {
|
||||
let conn = async_bb8_diesel::Connection::as_async_conn(&conn);
|
||||
let mut query = DieselPaymentIntent::table()
|
||||
.inner_join(
|
||||
diesel_models::schema::payment_attempt::table
|
||||
.on(pa_dsl::attempt_id.eq(pi_dsl::active_attempt_id)),
|
||||
payment_attempt_schema::table.on(pa_dsl::attempt_id.eq(pi_dsl::active_attempt_id)),
|
||||
)
|
||||
.filter(pi_dsl::merchant_id.eq(merchant_id.to_owned()))
|
||||
.order(pi_dsl::created_at.desc())
|
||||
|
||||
Reference in New Issue
Block a user