From 9c5803812af379a5265946afe4c177d3fcd0370e Mon Sep 17 00:00:00 2001 From: Julian Wiesler Date: Mon, 29 Jan 2024 11:18:08 +0100 Subject: [PATCH] fix: fixes an issue with missing renames of Self_ --- openapi/src/codegen.rs | 20 +++++++++++++++++-- src/resources/generated/checkout_session.rs | 3 +++ .../generated/connect_account_reference.rs | 1 + src/resources/generated/invoice.rs | 2 ++ src/resources/generated/issuing_card.rs | 2 -- src/resources/generated/issuing_cardholder.rs | 2 -- src/resources/generated/payment_link.rs | 6 ++++++ src/resources/generated/subscription.rs | 4 ++++ .../generated/subscription_schedule.rs | 4 ++++ 9 files changed, 38 insertions(+), 6 deletions(-) diff --git a/openapi/src/codegen.rs b/openapi/src/codegen.rs index f3ba27340..12cf4eb72 100644 --- a/openapi/src/codegen.rs +++ b/openapi/src/codegen.rs @@ -657,7 +657,7 @@ pub fn gen_unions(out: &mut String, unions: &BTreeMap, me .unwrap_or_else(|| schema.schema_data.title.clone().unwrap()); let variant_name = meta.schema_to_rust_type(&object_name); let type_name = meta.schema_to_rust_type(variant_schema); - if variant_name.to_snake_case() != object_name { + if variant_to_serde_snake_case(&variant_name) != object_name { write_serde_rename(out, &object_name); } out.push_str(" "); @@ -694,6 +694,22 @@ pub fn gen_unions(out: &mut String, unions: &BTreeMap, me } } +/// This code is taken from serde RenameRule::apply_to_variant +/// It differs in some cases from heck, so we need to make sure we +/// do exactly the same when figuring out whether we need a serde(rename) +/// e.g. heck_snake(Self_) = self +/// serde_snake(Self_) = self_ +pub fn variant_to_serde_snake_case(variant: &str) -> String { + let mut snake = String::new(); + for (i, ch) in variant.char_indices() { + if i > 0 && ch.is_uppercase() { + snake.push('_'); + } + snake.push(ch.to_ascii_lowercase()); + } + snake +} + #[tracing::instrument(skip_all)] pub fn gen_variant_name(wire_name: &str, meta: &Metadata) -> String { match wire_name { @@ -732,7 +748,7 @@ pub fn gen_enums(out: &mut String, enums: &BTreeMap, meta: if variant_name.trim().is_empty() { panic!("unhandled enum variant: {:?}", wire_name) } - if &variant_name.to_snake_case() != wire_name { + if &variant_to_serde_snake_case(&variant_name) != wire_name { write_serde_rename(out, wire_name); } out.push_str(" "); diff --git a/src/resources/generated/checkout_session.rs b/src/resources/generated/checkout_session.rs index 6bdf65f8b..01696341e 100644 --- a/src/resources/generated/checkout_session.rs +++ b/src/resources/generated/checkout_session.rs @@ -4699,6 +4699,7 @@ impl std::default::Default for CheckoutUsBankAccountPaymentMethodOptionsVerifica #[serde(rename_all = "snake_case")] pub enum CreateCheckoutSessionAutomaticTaxLiabilityType { Account, + #[serde(rename = "self")] Self_, } @@ -5013,6 +5014,7 @@ impl std::default::Default for CreateCheckoutSessionCustomerUpdateShipping { #[serde(rename_all = "snake_case")] pub enum CreateCheckoutSessionInvoiceCreationInvoiceDataIssuerType { Account, + #[serde(rename = "self")] Self_, } @@ -7833,6 +7835,7 @@ impl std::default::Default for CreateCheckoutSessionShippingOptionsShippingRateD #[serde(rename_all = "snake_case")] pub enum CreateCheckoutSessionSubscriptionDataInvoiceSettingsIssuerType { Account, + #[serde(rename = "self")] Self_, } diff --git a/src/resources/generated/connect_account_reference.rs b/src/resources/generated/connect_account_reference.rs index d7278b120..c54d9d7b8 100644 --- a/src/resources/generated/connect_account_reference.rs +++ b/src/resources/generated/connect_account_reference.rs @@ -24,6 +24,7 @@ pub struct ConnectAccountReference { #[serde(rename_all = "snake_case")] pub enum ConnectAccountReferenceType { Account, + #[serde(rename = "self")] Self_, } diff --git a/src/resources/generated/invoice.rs b/src/resources/generated/invoice.rs index 2f5dea1de..acbff7de5 100644 --- a/src/resources/generated/invoice.rs +++ b/src/resources/generated/invoice.rs @@ -1555,6 +1555,7 @@ impl std::default::Default for CollectionMethod { #[serde(rename_all = "snake_case")] pub enum CreateInvoiceAutomaticTaxLiabilityType { Account, + #[serde(rename = "self")] Self_, } @@ -1621,6 +1622,7 @@ impl std::default::Default for CreateInvoiceFromInvoiceAction { #[serde(rename_all = "snake_case")] pub enum CreateInvoiceIssuerType { Account, + #[serde(rename = "self")] Self_, } diff --git a/src/resources/generated/issuing_card.rs b/src/resources/generated/issuing_card.rs index 87f07660d..d05ad9820 100644 --- a/src/resources/generated/issuing_card.rs +++ b/src/resources/generated/issuing_card.rs @@ -608,7 +608,6 @@ pub enum IssuingCardSpendingLimitCategories { HardwareStores, HealthAndBeautySpas, HearingAidsSalesAndSupplies, - #[serde(rename = "heating_plumbing_a_c")] HeatingPlumbingAC, HobbyToyAndGameShops, HomeSupplyWarehouseStores, @@ -737,7 +736,6 @@ pub enum IssuingCardSpendingLimitCategories { TruckUtilityTrailerRentals, TypesettingPlateMakingAndRelatedServices, TypewriterStores, - #[serde(rename = "u_s_federal_government_agencies_or_departments")] USFederalGovernmentAgenciesOrDepartments, UniformsCommercialClothing, UsedMerchandiseAndSecondhandStores, diff --git a/src/resources/generated/issuing_cardholder.rs b/src/resources/generated/issuing_cardholder.rs index 2f92216b9..a992b662c 100644 --- a/src/resources/generated/issuing_cardholder.rs +++ b/src/resources/generated/issuing_cardholder.rs @@ -510,7 +510,6 @@ pub enum IssuingCardholderSpendingLimitCategories { HardwareStores, HealthAndBeautySpas, HearingAidsSalesAndSupplies, - #[serde(rename = "heating_plumbing_a_c")] HeatingPlumbingAC, HobbyToyAndGameShops, HomeSupplyWarehouseStores, @@ -639,7 +638,6 @@ pub enum IssuingCardholderSpendingLimitCategories { TruckUtilityTrailerRentals, TypesettingPlateMakingAndRelatedServices, TypewriterStores, - #[serde(rename = "u_s_federal_government_agencies_or_departments")] USFederalGovernmentAgenciesOrDepartments, UniformsCommercialClothing, UsedMerchandiseAndSecondhandStores, diff --git a/src/resources/generated/payment_link.rs b/src/resources/generated/payment_link.rs index 6cfa2e234..70d1a241d 100644 --- a/src/resources/generated/payment_link.rs +++ b/src/resources/generated/payment_link.rs @@ -1788,6 +1788,7 @@ impl std::default::Default for CreatePaymentLinkAfterCompletionType { #[serde(rename_all = "snake_case")] pub enum CreatePaymentLinkAutomaticTaxLiabilityType { Account, + #[serde(rename = "self")] Self_, } @@ -1996,6 +1997,7 @@ impl std::default::Default for CreatePaymentLinkCustomFieldsType { #[serde(rename_all = "snake_case")] pub enum CreatePaymentLinkInvoiceCreationInvoiceDataIssuerType { Account, + #[serde(rename = "self")] Self_, } @@ -2965,6 +2967,7 @@ impl std::default::Default for CreatePaymentLinkShippingAddressCollectionAllowed #[serde(rename_all = "snake_case")] pub enum CreatePaymentLinkSubscriptionDataInvoiceSettingsIssuerType { Account, + #[serde(rename = "self")] Self_, } @@ -4314,6 +4317,7 @@ impl std::default::Default for UpdatePaymentLinkAfterCompletionType { #[serde(rename_all = "snake_case")] pub enum UpdatePaymentLinkAutomaticTaxLiabilityType { Account, + #[serde(rename = "self")] Self_, } @@ -4416,6 +4420,7 @@ impl std::default::Default for UpdatePaymentLinkCustomFieldsType { #[serde(rename_all = "snake_case")] pub enum UpdatePaymentLinkInvoiceCreationInvoiceDataIssuerType { Account, + #[serde(rename = "self")] Self_, } @@ -5315,6 +5320,7 @@ impl std::default::Default for UpdatePaymentLinkShippingAddressCollectionAllowed #[serde(rename_all = "snake_case")] pub enum UpdatePaymentLinkSubscriptionDataInvoiceSettingsIssuerType { Account, + #[serde(rename = "self")] Self_, } diff --git a/src/resources/generated/subscription.rs b/src/resources/generated/subscription.rs index 45670e784..0d4102686 100644 --- a/src/resources/generated/subscription.rs +++ b/src/resources/generated/subscription.rs @@ -1946,6 +1946,7 @@ impl std::default::Default for CancellationDetailsReason { #[serde(rename_all = "snake_case")] pub enum CreateSubscriptionAutomaticTaxLiabilityType { Account, + #[serde(rename = "self")] Self_, } @@ -1980,6 +1981,7 @@ impl std::default::Default for CreateSubscriptionAutomaticTaxLiabilityType { #[serde(rename_all = "snake_case")] pub enum CreateSubscriptionInvoiceSettingsIssuerType { Account, + #[serde(rename = "self")] Self_, } @@ -3161,6 +3163,7 @@ impl std::default::Default for SubscriptionsResourcePaymentSettingsSaveDefaultPa #[serde(rename_all = "snake_case")] pub enum UpdateSubscriptionAutomaticTaxLiabilityType { Account, + #[serde(rename = "self")] Self_, } @@ -3241,6 +3244,7 @@ impl std::default::Default for UpdateSubscriptionCancellationDetailsFeedback { #[serde(rename_all = "snake_case")] pub enum UpdateSubscriptionInvoiceSettingsIssuerType { Account, + #[serde(rename = "self")] Self_, } diff --git a/src/resources/generated/subscription_schedule.rs b/src/resources/generated/subscription_schedule.rs index 3fdb800f6..f68eca624 100644 --- a/src/resources/generated/subscription_schedule.rs +++ b/src/resources/generated/subscription_schedule.rs @@ -1274,6 +1274,7 @@ pub struct UpdateSubscriptionSchedulePhasesItemsPriceDataRecurring { #[serde(rename_all = "snake_case")] pub enum CreateSubscriptionSchedulePhasesAutomaticTaxLiabilityType { Account, + #[serde(rename = "self")] Self_, } @@ -1558,6 +1559,7 @@ impl std::default::Default for SubscriptionScheduleDefaultSettingsCollectionMeth #[serde(rename_all = "snake_case")] pub enum SubscriptionScheduleDefaultSettingsParamsAutomaticTaxLiabilityType { Account, + #[serde(rename = "self")] Self_, } @@ -1668,6 +1670,7 @@ impl std::default::Default for SubscriptionScheduleEndBehavior { #[serde(rename_all = "snake_case")] pub enum SubscriptionScheduleInvoiceSettingsIssuerType { Account, + #[serde(rename = "self")] Self_, } @@ -1776,6 +1779,7 @@ impl std::default::Default for SubscriptionScheduleStatus { #[serde(rename_all = "snake_case")] pub enum UpdateSubscriptionSchedulePhasesAutomaticTaxLiabilityType { Account, + #[serde(rename = "self")] Self_, }