From ff3b9a2a12cd7f7e6c20f81777f6862b1f229bd4 Mon Sep 17 00:00:00 2001 From: Prajjwal Kumar Date: Wed, 24 Jul 2024 23:01:18 +0530 Subject: [PATCH] refactor(core): patch file for removal of id from schema (#5398) Co-authored-by: Narayan Bhat <48803246+Narayanbhat166@users.noreply.github.com> Co-authored-by: hyperswitch-bot[bot] <148525504+hyperswitch-bot[bot]@users.noreply.github.com> Co-authored-by: Narayan Bhat --- crates/common_utils/src/id_type.rs | 6 +- crates/common_utils/src/id_type/customer.rs | 2 +- crates/diesel_models/remove_id.patch | 108 ++++++++++++++++++ crates/diesel_models/src/address.rs | 1 - crates/diesel_models/src/blocklist.rs | 4 +- crates/diesel_models/src/customers.rs | 4 +- crates/diesel_models/src/dispute.rs | 4 +- crates/diesel_models/src/mandate.rs | 4 +- crates/diesel_models/src/merchant_account.rs | 1 - .../src/merchant_connector_account.rs | 3 +- crates/diesel_models/src/payment_attempt.rs | 2 - crates/diesel_models/src/payment_intent.rs | 2 - crates/diesel_models/src/payment_method.rs | 4 +- crates/diesel_models/src/refund.rs | 4 +- crates/diesel_models/src/role.rs | 3 +- crates/diesel_models/src/schema.rs | 13 --- crates/diesel_models/src/user.rs | 3 +- .../hyperswitch_domain_models/src/customer.rs | 5 - .../src/merchant_account.rs | 6 - .../src/payments/payment_attempt.rs | 1 - crates/router/src/core/admin.rs | 1 - crates/router/src/core/customers.rs | 1 - crates/router/src/core/payments/helpers.rs | 2 - crates/router/src/core/payouts/helpers.rs | 1 - crates/router/src/db/address.rs | 1 - crates/router/src/db/dispute.rs | 7 +- crates/router/src/db/mandate.rs | 2 - .../src/db/merchant_connector_account.rs | 4 +- crates/router/src/db/payment_method.rs | 4 +- crates/router/src/db/refund.rs | 3 - crates/router/src/db/role.rs | 3 +- crates/router/src/db/user.rs | 3 +- crates/router/src/types/domain/address.rs | 4 - .../domain/merchant_connector_account.rs | 5 - crates/router/src/utils.rs | 1 - .../src/payments/payment_attempt.rs | 1 - diesel.toml | 1 + 37 files changed, 127 insertions(+), 97 deletions(-) create mode 100644 crates/diesel_models/remove_id.patch diff --git a/crates/common_utils/src/id_type.rs b/crates/common_utils/src/id_type.rs index 100f7957f5..63f8497cae 100644 --- a/crates/common_utils/src/id_type.rs +++ b/crates/common_utils/src/id_type.rs @@ -36,11 +36,11 @@ fn get_invalid_input_character(input_string: Cow<'static, str>) -> Option .find(|char| !is_valid_id_character(char)) } -#[derive(Debug, PartialEq, Serialize, Clone, Eq, Hash)] +#[derive(Debug, PartialEq, Hash, Serialize, Clone, Eq)] /// A type for alphanumeric ids pub(crate) struct AlphaNumericId(String); -#[derive(Debug, Deserialize, Serialize, Error, Eq, PartialEq)] +#[derive(Debug, Deserialize, Hash, Serialize, Error, Eq, PartialEq)] #[error("value `{0}` contains invalid character `{1}`")] /// The error type for alphanumeric id pub(crate) struct AlphaNumericIdError(String, char); @@ -82,7 +82,7 @@ impl AlphaNumericId { } /// A common type of id that can be used for reference ids with length constraint -#[derive(Debug, Clone, Serialize, PartialEq, Eq, AsExpression, Hash)] +#[derive(Debug, Clone, Serialize, Hash, PartialEq, Eq, AsExpression)] #[diesel(sql_type = sql_types::Text)] pub(crate) struct LengthId(AlphaNumericId); diff --git a/crates/common_utils/src/id_type/customer.rs b/crates/common_utils/src/id_type/customer.rs index f56957025b..00bd565d9e 100644 --- a/crates/common_utils/src/id_type/customer.rs +++ b/crates/common_utils/src/id_type/customer.rs @@ -17,7 +17,7 @@ use crate::{ }; /// A type for customer_id that can be used for customer ids -#[derive(Clone, Serialize, Deserialize, PartialEq, Eq, AsExpression)] +#[derive(Clone, Serialize, Deserialize, Hash, PartialEq, Eq, AsExpression)] #[diesel(sql_type = sql_types::Text)] pub struct CustomerId( LengthId, diff --git a/crates/diesel_models/remove_id.patch b/crates/diesel_models/remove_id.patch new file mode 100644 index 0000000000..5b2e96ded3 --- /dev/null +++ b/crates/diesel_models/remove_id.patch @@ -0,0 +1,108 @@ +diff --git a/crates/diesel_models/src/schema.rs b/crates/diesel_models/src/schema.rs +index 55f8e935b..469ad1d22 100644 +--- a/crates/diesel_models/src/schema.rs ++++ b/crates/diesel_models/src/schema.rs +@@ -5,7 +5,6 @@ diesel::table! { + use crate::enums::diesel_exports::*; + + address (address_id) { +- id -> Nullable, + #[max_length = 64] + address_id -> Varchar, + #[max_length = 128] +@@ -129,7 +128,6 @@ diesel::table! { + use crate::enums::diesel_exports::*; + + blocklist (merchant_id, fingerprint_id) { +- id -> Int4, + #[max_length = 64] + merchant_id -> Varchar, + #[max_length = 64] +@@ -284,7 +282,6 @@ diesel::table! { + use crate::enums::diesel_exports::*; + + customers (customer_id, merchant_id) { +- id -> Int4, + #[max_length = 64] + customer_id -> Varchar, + #[max_length = 64] +@@ -337,7 +334,6 @@ diesel::table! { + use crate::enums::diesel_exports::*; + + dispute (dispute_id) { +- id -> Int4, + #[max_length = 64] + dispute_id -> Varchar, + #[max_length = 255] +@@ -588,7 +584,6 @@ diesel::table! { + use crate::enums::diesel_exports::*; + + mandate (mandate_id) { +- id -> Int4, + #[max_length = 64] + mandate_id -> Varchar, + #[max_length = 64] +@@ -634,7 +629,6 @@ diesel::table! { + use crate::enums::diesel_exports::*; + + merchant_account (merchant_id) { +- id -> Int4, + #[max_length = 64] + merchant_id -> Varchar, + #[max_length = 255] +@@ -678,7 +672,6 @@ diesel::table! { + use crate::enums::diesel_exports::*; + + merchant_connector_account (merchant_connector_id) { +- id -> Int4, + #[max_length = 64] + merchant_id -> Varchar, + #[max_length = 64] +@@ -741,7 +734,6 @@ diesel::table! { + use crate::enums::diesel_exports::*; + + payment_attempt (attempt_id, merchant_id) { +- id -> Nullable, + #[max_length = 64] + payment_id -> Varchar, + #[max_length = 64] +@@ -832,7 +824,6 @@ diesel::table! { + use crate::enums::diesel_exports::*; + + payment_intent (payment_id, merchant_id) { +- id -> Nullable, + #[max_length = 64] + payment_id -> Varchar, + #[max_length = 64] +@@ -935,7 +926,6 @@ diesel::table! { + use crate::enums::diesel_exports::*; + + payment_methods (payment_method_id) { +- id -> Int4, + #[max_length = 64] + customer_id -> Varchar, + #[max_length = 64] +@@ -1100,7 +1090,6 @@ diesel::table! { + use crate::enums::diesel_exports::*; + + refund (merchant_id, refund_id) { +- id -> Int4, + #[max_length = 64] + internal_reference_id -> Varchar, + #[max_length = 64] +@@ -1169,7 +1158,6 @@ diesel::table! { + use crate::enums::diesel_exports::*; + + roles (role_id) { +- id -> Int4, + #[max_length = 64] + role_name -> Varchar, + #[max_length = 64] +@@ -1276,7 +1263,6 @@ diesel::table! { + use crate::enums::diesel_exports::*; + + users (user_id) { +- id -> Int4, + #[max_length = 64] + user_id -> Varchar, + #[max_length = 255] diff --git a/crates/diesel_models/src/address.rs b/crates/diesel_models/src/address.rs index 8de7d8aa19..aaaa7fb747 100644 --- a/crates/diesel_models/src/address.rs +++ b/crates/diesel_models/src/address.rs @@ -39,7 +39,6 @@ pub struct AddressNew { #[derive(Clone, Debug, Queryable, Identifiable, Selectable, Serialize, Deserialize)] #[diesel(table_name = address, primary_key(address_id), check_for_backend(diesel::pg::Pg))] pub struct Address { - pub id: Option, pub address_id: String, pub city: Option, pub country: Option, diff --git a/crates/diesel_models/src/blocklist.rs b/crates/diesel_models/src/blocklist.rs index 0ef7daf009..c4a5b48bad 100644 --- a/crates/diesel_models/src/blocklist.rs +++ b/crates/diesel_models/src/blocklist.rs @@ -16,10 +16,8 @@ pub struct BlocklistNew { #[derive( Clone, Debug, Eq, PartialEq, Identifiable, Queryable, Selectable, Deserialize, Serialize, )] -#[diesel(table_name = blocklist, check_for_backend(diesel::pg::Pg))] +#[diesel(table_name = blocklist, primary_key(merchant_id, fingerprint_id), check_for_backend(diesel::pg::Pg))] pub struct Blocklist { - #[serde(skip)] - pub id: i32, pub merchant_id: common_utils::id_type::MerchantId, pub fingerprint_id: String, pub data_kind: common_enums::BlocklistDataKind, diff --git a/crates/diesel_models/src/customers.rs b/crates/diesel_models/src/customers.rs index ea552e0d39..7219bb9052 100644 --- a/crates/diesel_models/src/customers.rs +++ b/crates/diesel_models/src/customers.rs @@ -33,7 +33,6 @@ impl CustomerNew { impl From for Customer { fn from(customer_new: CustomerNew) -> Self { Self { - id: 0i32, customer_id: customer_new.customer_id, merchant_id: customer_new.merchant_id, name: customer_new.name, @@ -55,9 +54,8 @@ impl From for Customer { #[derive( Clone, Debug, Identifiable, Queryable, Selectable, serde::Deserialize, serde::Serialize, )] -#[diesel(table_name = customers, check_for_backend(diesel::pg::Pg))] +#[diesel(table_name = customers, primary_key(customer_id, merchant_id), check_for_backend(diesel::pg::Pg))] pub struct Customer { - pub id: i32, pub customer_id: common_utils::id_type::CustomerId, pub merchant_id: common_utils::id_type::MerchantId, pub name: Option, diff --git a/crates/diesel_models/src/dispute.rs b/crates/diesel_models/src/dispute.rs index c2ef94e671..704b1781e2 100644 --- a/crates/diesel_models/src/dispute.rs +++ b/crates/diesel_models/src/dispute.rs @@ -33,10 +33,8 @@ pub struct DisputeNew { } #[derive(Clone, Debug, PartialEq, Serialize, Identifiable, Queryable, Selectable)] -#[diesel(table_name = dispute, check_for_backend(diesel::pg::Pg))] +#[diesel(table_name = dispute, primary_key(dispute_id), check_for_backend(diesel::pg::Pg))] pub struct Dispute { - #[serde(skip_serializing)] - pub id: i32, pub dispute_id: String, pub amount: String, pub currency: String, diff --git a/crates/diesel_models/src/mandate.rs b/crates/diesel_models/src/mandate.rs index ec4b572e8e..bfac1849a5 100644 --- a/crates/diesel_models/src/mandate.rs +++ b/crates/diesel_models/src/mandate.rs @@ -9,9 +9,8 @@ use crate::{enums as storage_enums, schema::mandate}; #[derive( Clone, Debug, Identifiable, Queryable, Selectable, serde::Serialize, serde::Deserialize, )] -#[diesel(table_name = mandate, check_for_backend(diesel::pg::Pg))] +#[diesel(table_name = mandate, primary_key(mandate_id), check_for_backend(diesel::pg::Pg))] pub struct Mandate { - pub id: i32, pub mandate_id: String, pub customer_id: common_utils::id_type::CustomerId, pub merchant_id: common_utils::id_type::MerchantId, @@ -209,7 +208,6 @@ impl MandateUpdateInternal { impl From<&MandateNew> for Mandate { fn from(mandate_new: &MandateNew) -> Self { Self { - id: 0i32, mandate_id: mandate_new.mandate_id.clone(), customer_id: mandate_new.customer_id.clone(), merchant_id: mandate_new.merchant_id.clone(), diff --git a/crates/diesel_models/src/merchant_account.rs b/crates/diesel_models/src/merchant_account.rs index 4e99900af2..23bc642c2d 100644 --- a/crates/diesel_models/src/merchant_account.rs +++ b/crates/diesel_models/src/merchant_account.rs @@ -26,7 +26,6 @@ use crate::schema_v2::merchant_account; )] #[diesel(table_name = merchant_account, primary_key(merchant_id), check_for_backend(diesel::pg::Pg))] pub struct MerchantAccount { - pub id: i32, pub merchant_id: id_type::MerchantId, pub return_url: Option, pub enable_payment_response_hash: bool, diff --git a/crates/diesel_models/src/merchant_connector_account.rs b/crates/diesel_models/src/merchant_connector_account.rs index 4b6ab77d8a..eb561f2f9c 100644 --- a/crates/diesel_models/src/merchant_connector_account.rs +++ b/crates/diesel_models/src/merchant_connector_account.rs @@ -16,9 +16,8 @@ use crate::{enums as storage_enums, schema::merchant_connector_account}; Selectable, router_derive::DebugAsDisplay, )] -#[diesel(table_name = merchant_connector_account, check_for_backend(diesel::pg::Pg))] +#[diesel(table_name = merchant_connector_account, primary_key(merchant_connector_id), check_for_backend(diesel::pg::Pg))] pub struct MerchantConnectorAccount { - pub id: i32, pub merchant_id: id_type::MerchantId, pub connector_name: String, pub connector_account_details: Encryption, diff --git a/crates/diesel_models/src/payment_attempt.rs b/crates/diesel_models/src/payment_attempt.rs index 791d4fb26e..525c681a1e 100644 --- a/crates/diesel_models/src/payment_attempt.rs +++ b/crates/diesel_models/src/payment_attempt.rs @@ -86,7 +86,6 @@ pub struct PaymentAttempt { )] #[diesel(table_name = payment_attempt, primary_key(attempt_id, merchant_id), check_for_backend(diesel::pg::Pg))] pub struct PaymentAttempt { - pub id: Option, pub payment_id: String, pub merchant_id: common_utils::id_type::MerchantId, pub attempt_id: String, @@ -1703,7 +1702,6 @@ mod tests { #[test] fn test_backwards_compatibility() { let serialized_payment_attempt = r#"{ - "id": 1, "payment_id": "PMT123456789", "merchant_id": "M123456789", "attempt_id": "ATMPT123456789", diff --git a/crates/diesel_models/src/payment_intent.rs b/crates/diesel_models/src/payment_intent.rs index 012376ae3d..2d390b0b34 100644 --- a/crates/diesel_models/src/payment_intent.rs +++ b/crates/diesel_models/src/payment_intent.rs @@ -74,7 +74,6 @@ pub struct PaymentIntent { #[derive(Clone, Debug, PartialEq, Identifiable, Queryable, Serialize, Deserialize, Selectable)] #[diesel(table_name = payment_intent, primary_key(payment_id, merchant_id), check_for_backend(diesel::pg::Pg))] pub struct PaymentIntent { - pub id: Option, pub payment_id: String, pub merchant_id: common_utils::id_type::MerchantId, pub status: storage_enums::IntentStatus, @@ -1027,7 +1026,6 @@ mod tests { #[test] fn test_backwards_compatibility() { let serialized_payment_intent = r#"{ - "id": 123, "payment_id": "payment_12345", "merchant_id": "merchant_67890", "status": "succeeded", diff --git a/crates/diesel_models/src/payment_method.rs b/crates/diesel_models/src/payment_method.rs index 0121ec5112..b54824ad93 100644 --- a/crates/diesel_models/src/payment_method.rs +++ b/crates/diesel_models/src/payment_method.rs @@ -10,9 +10,8 @@ use crate::{enums as storage_enums, schema::payment_methods}; #[derive( Clone, Debug, Eq, PartialEq, Identifiable, Queryable, Selectable, Serialize, Deserialize, )] -#[diesel(table_name = payment_methods, check_for_backend(diesel::pg::Pg))] +#[diesel(table_name = payment_methods, primary_key(payment_method_id), check_for_backend(diesel::pg::Pg))] pub struct PaymentMethod { - pub id: i32, pub customer_id: common_utils::id_type::CustomerId, pub merchant_id: common_utils::id_type::MerchantId, pub payment_method_id: String, @@ -329,7 +328,6 @@ impl From for PaymentMethodUpdateInternal { impl From<&PaymentMethodNew> for PaymentMethod { fn from(payment_method_new: &PaymentMethodNew) -> Self { Self { - id: 0i32, customer_id: payment_method_new.customer_id.clone(), merchant_id: payment_method_new.merchant_id.clone(), payment_method_id: payment_method_new.payment_method_id.clone(), diff --git a/crates/diesel_models/src/refund.rs b/crates/diesel_models/src/refund.rs index b95ade2df1..e4a74a6d66 100644 --- a/crates/diesel_models/src/refund.rs +++ b/crates/diesel_models/src/refund.rs @@ -19,9 +19,8 @@ use crate::{enums as storage_enums, schema::refund}; serde::Serialize, serde::Deserialize, )] -#[diesel(table_name = refund, check_for_backend(diesel::pg::Pg))] +#[diesel(table_name = refund, primary_key(refund_id), check_for_backend(diesel::pg::Pg))] pub struct Refund { - pub id: i32, pub internal_reference_id: String, pub refund_id: String, //merchant_reference id pub payment_id: String, @@ -341,7 +340,6 @@ mod tests { #[test] fn test_backwards_compatibility() { let serialized_refund = r#"{ - "id": 1, "internal_reference_id": "internal_ref_123", "refund_id": "refund_456", "payment_id": "payment_789", diff --git a/crates/diesel_models/src/role.rs b/crates/diesel_models/src/role.rs index cf38f49aad..713590aded 100644 --- a/crates/diesel_models/src/role.rs +++ b/crates/diesel_models/src/role.rs @@ -5,9 +5,8 @@ use time::PrimitiveDateTime; use crate::{enums, schema::roles}; #[derive(Clone, Debug, Identifiable, Queryable, Selectable)] -#[diesel(table_name = roles, check_for_backend(diesel::pg::Pg))] +#[diesel(table_name = roles, primary_key(role_id), check_for_backend(diesel::pg::Pg))] pub struct Role { - pub id: i32, pub role_name: String, pub role_id: String, pub merchant_id: id_type::MerchantId, diff --git a/crates/diesel_models/src/schema.rs b/crates/diesel_models/src/schema.rs index c6f47a3255..544a99bccb 100644 --- a/crates/diesel_models/src/schema.rs +++ b/crates/diesel_models/src/schema.rs @@ -5,7 +5,6 @@ diesel::table! { use crate::enums::diesel_exports::*; address (address_id) { - id -> Nullable, #[max_length = 64] address_id -> Varchar, #[max_length = 128] @@ -129,7 +128,6 @@ diesel::table! { use crate::enums::diesel_exports::*; blocklist (merchant_id, fingerprint_id) { - id -> Int4, #[max_length = 64] merchant_id -> Varchar, #[max_length = 64] @@ -284,7 +282,6 @@ diesel::table! { use crate::enums::diesel_exports::*; customers (customer_id, merchant_id) { - id -> Int4, #[max_length = 64] customer_id -> Varchar, #[max_length = 64] @@ -337,7 +334,6 @@ diesel::table! { use crate::enums::diesel_exports::*; dispute (dispute_id) { - id -> Int4, #[max_length = 64] dispute_id -> Varchar, #[max_length = 255] @@ -588,7 +584,6 @@ diesel::table! { use crate::enums::diesel_exports::*; mandate (mandate_id) { - id -> Int4, #[max_length = 64] mandate_id -> Varchar, #[max_length = 64] @@ -634,7 +629,6 @@ diesel::table! { use crate::enums::diesel_exports::*; merchant_account (merchant_id) { - id -> Int4, #[max_length = 64] merchant_id -> Varchar, #[max_length = 255] @@ -678,7 +672,6 @@ diesel::table! { use crate::enums::diesel_exports::*; merchant_connector_account (merchant_connector_id) { - id -> Int4, #[max_length = 64] merchant_id -> Varchar, #[max_length = 64] @@ -745,7 +738,6 @@ diesel::table! { use crate::enums::diesel_exports::*; payment_attempt (attempt_id, merchant_id) { - id -> Nullable, #[max_length = 64] payment_id -> Varchar, #[max_length = 64] @@ -836,7 +828,6 @@ diesel::table! { use crate::enums::diesel_exports::*; payment_intent (payment_id, merchant_id) { - id -> Nullable, #[max_length = 64] payment_id -> Varchar, #[max_length = 64] @@ -939,7 +930,6 @@ diesel::table! { use crate::enums::diesel_exports::*; payment_methods (payment_method_id) { - id -> Int4, #[max_length = 64] customer_id -> Varchar, #[max_length = 64] @@ -1104,7 +1094,6 @@ diesel::table! { use crate::enums::diesel_exports::*; refund (merchant_id, refund_id) { - id -> Int4, #[max_length = 64] internal_reference_id -> Varchar, #[max_length = 64] @@ -1173,7 +1162,6 @@ diesel::table! { use crate::enums::diesel_exports::*; roles (role_id) { - id -> Int4, #[max_length = 64] role_name -> Varchar, #[max_length = 64] @@ -1280,7 +1268,6 @@ diesel::table! { use crate::enums::diesel_exports::*; users (user_id) { - id -> Int4, #[max_length = 64] user_id -> Varchar, #[max_length = 255] diff --git a/crates/diesel_models/src/user.rs b/crates/diesel_models/src/user.rs index 8469e4c2ca..582041ec42 100644 --- a/crates/diesel_models/src/user.rs +++ b/crates/diesel_models/src/user.rs @@ -9,9 +9,8 @@ pub mod dashboard_metadata; pub mod sample_data; #[derive(Clone, Debug, Identifiable, Queryable, Selectable)] -#[diesel(table_name = users, check_for_backend(diesel::pg::Pg))] +#[diesel(table_name = users, primary_key(user_id), check_for_backend(diesel::pg::Pg))] pub struct User { - pub id: i32, pub user_id: String, pub email: pii::Email, pub name: Secret, diff --git a/crates/hyperswitch_domain_models/src/customer.rs b/crates/hyperswitch_domain_models/src/customer.rs index 558a8b4469..504c1c2046 100644 --- a/crates/hyperswitch_domain_models/src/customer.rs +++ b/crates/hyperswitch_domain_models/src/customer.rs @@ -22,7 +22,6 @@ pub enum SoftDeleteStatus { #[derive(Clone, Debug)] pub struct Customer { - pub id: Option, pub customer_id: id_type::CustomerId, pub merchant_id: id_type::MerchantId, pub name: crypto::OptionalEncryptableName, @@ -49,9 +48,6 @@ impl super::behaviour::Conversion for Customer { type NewDstType = diesel_models::customers::CustomerNew; async fn convert(self) -> CustomResult { Ok(diesel_models::customers::Customer { - id: self.id.ok_or(ValidationError::MissingRequiredField { - field_name: "id".to_string(), - })?, customer_id: self.customer_id, merchant_id: self.merchant_id, name: self.name.map(|value| value.into()), @@ -98,7 +94,6 @@ impl super::behaviour::Conversion for Customer { })?; Ok(Self { - id: Some(item.id), customer_id: item.customer_id, merchant_id: item.merchant_id, name: encryptable_customer.name, diff --git a/crates/hyperswitch_domain_models/src/merchant_account.rs b/crates/hyperswitch_domain_models/src/merchant_account.rs index eb5905c507..6d311ea2d4 100644 --- a/crates/hyperswitch_domain_models/src/merchant_account.rs +++ b/crates/hyperswitch_domain_models/src/merchant_account.rs @@ -22,7 +22,6 @@ use crate::type_encryption::{decrypt_optional, AsyncLift}; ))] #[derive(Clone, Debug, serde::Serialize)] pub struct MerchantAccount { - pub id: Option, merchant_id: common_utils::id_type::MerchantId, pub return_url: Option, pub enable_payment_response_hash: bool, @@ -95,7 +94,6 @@ pub struct MerchantAccountSetter { impl From for MerchantAccount { fn from(item: MerchantAccountSetter) -> Self { Self { - id: None, merchant_id: item.merchant_id, return_url: item.return_url, enable_payment_response_hash: item.enable_payment_response_hash, @@ -416,9 +414,6 @@ impl super::behaviour::Conversion for MerchantAccount { type NewDstType = diesel_models::merchant_account::MerchantAccountNew; async fn convert(self) -> CustomResult { Ok(diesel_models::merchant_account::MerchantAccount { - id: self.id.ok_or(ValidationError::MissingRequiredField { - field_name: "id".to_string(), - })?, merchant_id: self.merchant_id, return_url: self.return_url, enable_payment_response_hash: self.enable_payment_response_hash, @@ -465,7 +460,6 @@ impl super::behaviour::Conversion for MerchantAccount { })?; async { Ok::>(Self { - id: Some(item.id), merchant_id: item.merchant_id, return_url: item.return_url, enable_payment_response_hash: item.enable_payment_response_hash, diff --git a/crates/hyperswitch_domain_models/src/payments/payment_attempt.rs b/crates/hyperswitch_domain_models/src/payments/payment_attempt.rs index 7e4c552472..9203a33239 100644 --- a/crates/hyperswitch_domain_models/src/payments/payment_attempt.rs +++ b/crates/hyperswitch_domain_models/src/payments/payment_attempt.rs @@ -682,7 +682,6 @@ impl behaviour::Conversion for PaymentIntent { async fn convert(self) -> CustomResult { Ok(DieselPaymentIntent { - id: None, payment_id: self.payment_id, merchant_id: self.merchant_id, status: self.status, diff --git a/crates/router/src/core/admin.rs b/crates/router/src/core/admin.rs index 4dd41bd4e8..e6c132b499 100644 --- a/crates/router/src/core/admin.rs +++ b/crates/router/src/core/admin.rs @@ -1441,7 +1441,6 @@ pub async fn create_payment_connector( business_sub_label: req.business_sub_label.clone(), created_at: date_time::now(), modified_at: date_time::now(), - id: None, connector_webhook_details: match req.connector_webhook_details { Some(connector_webhook_details) => { connector_webhook_details.encode_to_value( diff --git a/crates/router/src/core/customers.rs b/crates/router/src/core/customers.rs index 16f79e375b..4c96f4fbe8 100644 --- a/crates/router/src/core/customers.rs +++ b/crates/router/src/core/customers.rs @@ -170,7 +170,6 @@ impl CustomerCreateBridge for customers::CustomerRequest { description: self.description.clone(), phone_country_code: self.phone_country_code.clone(), metadata: self.metadata.clone(), - id: None, connector_customer: None, address_id: address_from_db.clone().map(|addr| addr.address_id), created_at: common_utils::date_time::now(), diff --git a/crates/router/src/core/payments/helpers.rs b/crates/router/src/core/payments/helpers.rs index 6dd8f19472..f6bdd78fc2 100644 --- a/crates/router/src/core/payments/helpers.rs +++ b/crates/router/src/core/payments/helpers.rs @@ -362,7 +362,6 @@ pub async fn get_domain_address( let encryptable_address = AddressDetailsWithPhone::from_encryptable(encrypted_data) .change_context(common_utils::errors::CryptoError::EncodingFailed)?; Ok(domain::Address { - id: None, phone_number: encryptable_address.phone_number, country_code: address.phone.as_ref().and_then(|a| a.country_code.clone()), merchant_id: merchant_id.to_owned(), @@ -1680,7 +1679,6 @@ pub async fn create_customer_if_not_exist<'a, F: Clone, R>( phone_country_code: request_customer_details.phone_country_code.clone(), description: None, created_at: common_utils::date_time::now(), - id: None, metadata: None, modified_at: common_utils::date_time::now(), connector_customer: None, diff --git a/crates/router/src/core/payouts/helpers.rs b/crates/router/src/core/payouts/helpers.rs index 41229552ad..66ade4ee53 100644 --- a/crates/router/src/core/payouts/helpers.rs +++ b/crates/router/src/core/payouts/helpers.rs @@ -654,7 +654,6 @@ pub async fn get_or_create_customer_details( phone_country_code: customer_details.phone_country_code.to_owned(), metadata: None, connector_customer: None, - id: None, created_at: common_utils::date_time::now(), modified_at: common_utils::date_time::now(), address_id: None, diff --git a/crates/router/src/db/address.rs b/crates/router/src/db/address.rs index f15adbeea6..10ad8ebe80 100644 --- a/crates/router/src/db/address.rs +++ b/crates/router/src/db/address.rs @@ -571,7 +571,6 @@ mod storage { }; let field = format!("add_{}", &address_new.address_id); let created_address = diesel_models::Address { - id: Some(0i32), address_id: address_new.address_id.clone(), city: address_new.city.clone(), country: address_new.country, diff --git a/crates/router/src/db/dispute.rs b/crates/router/src/db/dispute.rs index 4de14057c1..073b725448 100644 --- a/crates/router/src/db/dispute.rs +++ b/crates/router/src/db/dispute.rs @@ -1,4 +1,4 @@ -use error_stack::{report, ResultExt}; +use error_stack::report; use router_env::{instrument, tracing}; use super::{MockDb, Store}; @@ -148,8 +148,6 @@ impl DisputeInterface for MockDb { let now = common_utils::date_time::now(); let new_dispute = storage::Dispute { - id: i32::try_from(locked_disputes.len()) - .change_context(errors::StorageError::MockDbError)?, dispute_id: dispute.dispute_id, amount: dispute.amount, currency: dispute.currency, @@ -674,7 +672,6 @@ mod tests { .await .unwrap(); - assert_eq!(created_dispute.id, updated_dispute.id); assert_eq!(created_dispute.dispute_id, updated_dispute.dispute_id); assert_eq!(created_dispute.amount, updated_dispute.amount); assert_eq!(created_dispute.currency, updated_dispute.currency); @@ -751,7 +748,6 @@ mod tests { .await .unwrap(); - assert_eq!(created_dispute.id, updated_dispute.id); assert_eq!(created_dispute.dispute_id, updated_dispute.dispute_id); assert_eq!(created_dispute.amount, updated_dispute.amount); assert_eq!(created_dispute.currency, updated_dispute.currency); @@ -827,7 +823,6 @@ mod tests { .await .unwrap(); - assert_eq!(created_dispute.id, updated_dispute.id); assert_eq!(created_dispute.dispute_id, updated_dispute.dispute_id); assert_eq!(created_dispute.amount, updated_dispute.amount); assert_eq!(created_dispute.currency, updated_dispute.currency); diff --git a/crates/router/src/db/mandate.rs b/crates/router/src/db/mandate.rs index bdc51c8ad8..c85bb4cb17 100644 --- a/crates/router/src/db/mandate.rs +++ b/crates/router/src/db/mandate.rs @@ -1,5 +1,4 @@ use common_utils::id_type; -use error_stack::ResultExt; use super::MockDb; use crate::{ @@ -614,7 +613,6 @@ impl MandateInterface for MockDb { ) -> CustomResult { let mut mandates = self.mandates.lock().await; let mandate = storage_types::Mandate { - id: i32::try_from(mandates.len()).change_context(errors::StorageError::MockDbError)?, mandate_id: mandate_new.mandate_id.clone(), customer_id: mandate_new.customer_id, merchant_id: mandate_new.merchant_id, diff --git a/crates/router/src/db/merchant_connector_account.rs b/crates/router/src/db/merchant_connector_account.rs index f48007d15b..22f67b3538 100644 --- a/crates/router/src/db/merchant_connector_account.rs +++ b/crates/router/src/db/merchant_connector_account.rs @@ -858,7 +858,6 @@ impl MerchantConnectorAccountInterface for MockDb { ) -> CustomResult { let mut accounts = self.merchant_connector_accounts.lock().await; let account = storage::MerchantConnectorAccount { - id: i32::try_from(accounts.len()).change_context(errors::StorageError::MockDbError)?, merchant_id: t.merchant_id, connector_name: t.connector_name, connector_account_details: t.connector_account_details.into(), @@ -945,7 +944,7 @@ impl MerchantConnectorAccountInterface for MockDb { .lock() .await .iter_mut() - .find(|account| Some(account.id) == this.id) + .find(|account| account.merchant_connector_id == this.merchant_connector_id) .map(|a| { let updated = merchant_connector_account.create_merchant_connector_account(a.clone()); @@ -1097,7 +1096,6 @@ mod merchant_connector_account_cache_tests { .unwrap(); let mca = domain::MerchantConnectorAccount { - id: Some(1), merchant_id: merchant_id.to_owned(), connector_name: "stripe".to_string(), connector_account_details: domain::types::encrypt( diff --git a/crates/router/src/db/payment_method.rs b/crates/router/src/db/payment_method.rs index b0fed03e9b..e182d62c3f 100644 --- a/crates/router/src/db/payment_method.rs +++ b/crates/router/src/db/payment_method.rs @@ -664,8 +664,6 @@ impl PaymentMethodInterface for MockDb { let mut payment_methods = self.payment_methods.lock().await; let payment_method = storage_types::PaymentMethod { - id: i32::try_from(payment_methods.len()) - .change_context(errors::StorageError::MockDbError)?, customer_id: payment_method_new.customer_id, merchant_id: payment_method_new.merchant_id, payment_method_id: payment_method_new.payment_method_id, @@ -784,7 +782,7 @@ impl PaymentMethodInterface for MockDb { .lock() .await .iter_mut() - .find(|pm| pm.id == payment_method.id) + .find(|pm| pm.payment_method_id == payment_method.payment_method_id) .map(|pm| { let payment_method_updated = PaymentMethodUpdateInternal::from(payment_method_update) diff --git a/crates/router/src/db/refund.rs b/crates/router/src/db/refund.rs index 67be1d30e0..1fa7e28cb8 100644 --- a/crates/router/src/db/refund.rs +++ b/crates/router/src/db/refund.rs @@ -4,7 +4,6 @@ use std::collections::HashSet; #[cfg(feature = "olap")] use common_utils::types::MinorUnit; use diesel_models::{errors::DatabaseError, refund::RefundUpdateInternal}; -use error_stack::ResultExt; use super::MockDb; use crate::{ @@ -372,7 +371,6 @@ mod storage { // TODO: need to add an application generated payment attempt id to distinguish between multiple attempts for the same payment id // Check for database presence as well Maybe use a read replica here ? let created_refund = storage_types::Refund { - id: 0i32, refund_id: new.refund_id.clone(), merchant_id: new.merchant_id.clone(), attempt_id: new.attempt_id.clone(), @@ -834,7 +832,6 @@ impl RefundInterface for MockDb { let current_time = common_utils::date_time::now(); let refund = storage_types::Refund { - id: i32::try_from(refunds.len()).change_context(errors::StorageError::MockDbError)?, internal_reference_id: new.internal_reference_id, refund_id: new.refund_id, payment_id: new.payment_id, diff --git a/crates/router/src/db/role.rs b/crates/router/src/db/role.rs index 15dfc14d37..286a85190b 100644 --- a/crates/router/src/db/role.rs +++ b/crates/router/src/db/role.rs @@ -1,7 +1,7 @@ use common_enums::enums; use common_utils::id_type; use diesel_models::role as storage; -use error_stack::{report, ResultExt}; +use error_stack::report; use router_env::{instrument, tracing}; use super::MockDb; @@ -138,7 +138,6 @@ impl RoleInterface for MockDb { })? } let role = storage::Role { - id: i32::try_from(roles.len()).change_context(errors::StorageError::MockDbError)?, role_name: role.role_name, role_id: role.role_id, merchant_id: role.merchant_id, diff --git a/crates/router/src/db/user.rs b/crates/router/src/db/user.rs index 742944bd1e..b8c5001d91 100644 --- a/crates/router/src/db/user.rs +++ b/crates/router/src/db/user.rs @@ -1,5 +1,5 @@ use diesel_models::user as storage; -use error_stack::{report, ResultExt}; +use error_stack::report; use masking::Secret; use router_env::{instrument, tracing}; @@ -152,7 +152,6 @@ impl UserInterface for MockDb { } let time_now = common_utils::date_time::now(); let user = storage::User { - id: i32::try_from(users.len()).change_context(errors::StorageError::MockDbError)?, user_id: user_data.user_id, email: user_data.email, name: user_data.name, diff --git a/crates/router/src/types/domain/address.rs b/crates/router/src/types/domain/address.rs index c7604622f3..55d83679db 100644 --- a/crates/router/src/types/domain/address.rs +++ b/crates/router/src/types/domain/address.rs @@ -17,8 +17,6 @@ use super::{behaviour, types}; #[derive(Clone, Debug, serde::Serialize)] pub struct Address { - #[serde(skip_serializing)] - pub id: Option, pub address_id: String, pub city: Option, pub country: Option, @@ -161,7 +159,6 @@ impl behaviour::Conversion for Address { async fn convert(self) -> CustomResult { Ok(diesel_models::address::Address { - id: self.id, address_id: self.address_id, city: self.city, country: self.country, @@ -206,7 +203,6 @@ impl behaviour::Conversion for Address { message: "Failed while decrypting".to_string(), })?; Ok(Self { - id: other.id, address_id: other.address_id, city: other.city, country: other.country, diff --git a/crates/router/src/types/domain/merchant_connector_account.rs b/crates/router/src/types/domain/merchant_connector_account.rs index 6b0436b6f2..170113c7a2 100644 --- a/crates/router/src/types/domain/merchant_connector_account.rs +++ b/crates/router/src/types/domain/merchant_connector_account.rs @@ -16,7 +16,6 @@ use super::{ }; #[derive(Clone, Debug)] pub struct MerchantConnectorAccount { - pub id: Option, pub merchant_id: common_utils::id_type::MerchantId, pub connector_name: String, pub connector_account_details: Encryptable>, @@ -74,9 +73,6 @@ impl behaviour::Conversion for MerchantConnectorAccount { async fn convert(self) -> CustomResult { Ok( diesel_models::merchant_connector_account::MerchantConnectorAccount { - id: self.id.ok_or(ValidationError::MissingRequiredField { - field_name: "id".to_string(), - })?, merchant_id: self.merchant_id, connector_name: self.connector_name, connector_account_details: self.connector_account_details.into(), @@ -113,7 +109,6 @@ impl behaviour::Conversion for MerchantConnectorAccount { ) -> CustomResult { let identifier = Identifier::Merchant(other.merchant_id.clone()); Ok(Self { - id: Some(other.id), merchant_id: other.merchant_id, connector_name: other.connector_name, connector_account_details: decrypt( diff --git a/crates/router/src/utils.rs b/crates/router/src/utils.rs index ea3a36b518..c86f9240c4 100644 --- a/crates/router/src/utils.rs +++ b/crates/router/src/utils.rs @@ -755,7 +755,6 @@ impl CustomerAddress for api_models::customers::CustomerRequest { let encryptable_address = AddressDetailsWithPhone::from_encryptable(encrypted_data) .change_context(common_utils::errors::CryptoError::EncodingFailed)?; let address = domain::Address { - id: None, city: address_details.city, country: address_details.country, line1: encryptable_address.line1, diff --git a/crates/storage_impl/src/payments/payment_attempt.rs b/crates/storage_impl/src/payments/payment_attempt.rs index f5d28f7698..03a9ac6e45 100644 --- a/crates/storage_impl/src/payments/payment_attempt.rs +++ b/crates/storage_impl/src/payments/payment_attempt.rs @@ -1292,7 +1292,6 @@ impl DataModelExt for PaymentAttempt { fn to_storage_model(self) -> Self::StorageModel { DieselPaymentAttempt { - id: None, payment_id: self.payment_id, merchant_id: self.merchant_id, attempt_id: self.attempt_id, diff --git a/diesel.toml b/diesel.toml index 0496c748c3..9079080b31 100644 --- a/diesel.toml +++ b/diesel.toml @@ -5,3 +5,4 @@ file = "crates/diesel_models/src/schema.rs" import_types = ["diesel::sql_types::*", "crate::enums::diesel_exports::*"] generate_missing_sql_type_definitions = false +patch_file="crates/diesel_models/remove_id.patch"