From af7c86eea800b347c245aec9f54548992e9ac273 Mon Sep 17 00:00:00 2001 From: quexeky Date: Mon, 25 Aug 2025 08:41:24 +1000 Subject: [PATCH] feat: Add logging Signed-off-by: quexeky --- libraries/native_model/Cargo.toml | 1 + .../native_model_macro/Cargo.toml | 1 + .../native_model_macro/src/lib.rs | 5 +- .../src/method/decode_upgrade_body.rs | 8 ++- .../src/method/encode_downgrade_body.rs | 54 ------------------- .../native_model_macro/src/method/mod.rs | 2 - 6 files changed, 11 insertions(+), 60 deletions(-) delete mode 100644 libraries/native_model/native_model_macro/src/method/encode_downgrade_body.rs diff --git a/libraries/native_model/Cargo.toml b/libraries/native_model/Cargo.toml index a943121a..413eb9ca 100644 --- a/libraries/native_model/Cargo.toml +++ b/libraries/native_model/Cargo.toml @@ -26,6 +26,7 @@ bincode_2 = { package = "bincode", version = "2.0", features = ["serde"], option postcard_1_0 = { package = "postcard", version = "1.0.8", features = ["alloc"], optional = true } rmp_serde_1_3 = { package = "rmp-serde", version = "1.3", optional = true } doc-comment = "0.3.3" +log = "0.4.27" [dev-dependencies] serde_json = "1.0.116" diff --git a/libraries/native_model/native_model_macro/Cargo.toml b/libraries/native_model/native_model_macro/Cargo.toml index 17f64965..c7349663 100644 --- a/libraries/native_model/native_model_macro/Cargo.toml +++ b/libraries/native_model/native_model_macro/Cargo.toml @@ -17,3 +17,4 @@ proc-macro = true syn = { version = "2.0.60", features = ["full"] } quote = "1.0.36" proc-macro2 = "1.0.81" +log = "0.4.27" diff --git a/libraries/native_model/native_model_macro/src/lib.rs b/libraries/native_model/native_model_macro/src/lib.rs index b416a148..e46b6595 100644 --- a/libraries/native_model/native_model_macro/src/lib.rs +++ b/libraries/native_model/native_model_macro/src/lib.rs @@ -4,7 +4,7 @@ mod method; use crate::method::{ generate_native_model_decode_body, generate_native_model_decode_upgrade_body, - generate_native_model_encode_body, generate_native_model_encode_downgrade_body, + generate_native_model_encode_body, generate_native_model_id, generate_native_model_version, }; use proc_macro::TokenStream; @@ -107,7 +107,8 @@ pub fn native_model(args: TokenStream, input: TokenStream) -> TokenStream { let native_model_version_fn = generate_native_model_version(&attrs); let native_model_encode_body_fn = generate_native_model_encode_body(&attrs); let native_model_decode_body_fn = generate_native_model_decode_body(&attrs); - let native_model_decode_upgrade_body_fn = generate_native_model_decode_upgrade_body(&attrs); + let native_model_decode_upgrade_body_fn = generate_native_model_decode_upgrade_body(&attrs, struct_name); + let gen = quote! { #ast diff --git a/libraries/native_model/native_model_macro/src/method/decode_upgrade_body.rs b/libraries/native_model/native_model_macro/src/method/decode_upgrade_body.rs index 9e0d4490..2ca28162 100644 --- a/libraries/native_model/native_model_macro/src/method/decode_upgrade_body.rs +++ b/libraries/native_model/native_model_macro/src/method/decode_upgrade_body.rs @@ -1,17 +1,21 @@ use crate::ModelAttributes; use proc_macro2::TokenStream; use quote::quote; +use syn::Ident; -pub(crate) fn generate_native_model_decode_upgrade_body(attrs: &ModelAttributes) -> TokenStream { +pub(crate) fn generate_native_model_decode_upgrade_body(attrs: &ModelAttributes, struct_name: &Ident) -> TokenStream { let native_model_from = attrs.from.clone(); let native_model_try_from = attrs.try_from.clone(); let model_from_or_try_from = if let Some(from) = native_model_from { quote! { + log::info!("Upgrading database {} from version {} to version {}", #struct_name, #from::native_model_version(), Self::native_model_version()); + #from::native_model_decode_upgrade_body(data, id, version).map(|a| a.into()) } } else if let Some((try_from, error_try_from)) = native_model_try_from { quote! { + log::info!("Attempting to upgrade database {} from version {} to version {}", #struct_name, #try_from::native_model_version(), Self::native_model_version()); let result = #try_from::native_model_decode_upgrade_body(data, id, version).map(|b| { b.try_into() .map_err(|e: #error_try_from| native_model::UpgradeError { @@ -29,7 +33,7 @@ pub(crate) fn generate_native_model_decode_upgrade_body(attrs: &ModelAttributes) }) } }; - + let gen = quote! { fn native_model_decode_upgrade_body(data: Vec, id: u32, version: u32) -> native_model::Result { if version == Self::native_model_version() { diff --git a/libraries/native_model/native_model_macro/src/method/encode_downgrade_body.rs b/libraries/native_model/native_model_macro/src/method/encode_downgrade_body.rs deleted file mode 100644 index 76b824bf..00000000 --- a/libraries/native_model/native_model_macro/src/method/encode_downgrade_body.rs +++ /dev/null @@ -1,54 +0,0 @@ -use crate::ModelAttributes; -use proc_macro2::TokenStream; -use quote::quote; - -pub(crate) fn generate_native_model_encode_downgrade_body(attrs: &ModelAttributes) -> TokenStream { - let native_model_from = attrs.from.clone(); - let native_model_try_from = attrs.try_from.clone(); - - let model_from_or_try_from = if let Some(from) = native_model_from { - quote! { - #from::native_model_encode_downgrade_body(self.into(), version) - } - } else if let Some((try_from, error_try_from)) = native_model_try_from { - quote! { - let result = #try_from::native_model_encode_downgrade_body( - self.try_into() - .map_err(|e: #error_try_from| native_model::DowngradeError { - msg: format!("{}", e), - source: e.into(), - })?, - version, - )?; - Ok(result) - } - } else { - quote! { - Err(native_model::Error::DowngradeNotSupported { - from: version, - to: Self::native_model_version(), - }) - } - }; - - let gen = quote! { - fn native_model_encode_downgrade_body(self, version: u32) -> native_model::Result> { - if version == Self::native_model_version() { - let result = self.native_model_encode_body()?; - Ok(result) - } else if version < Self::native_model_version() { - #model_from_or_try_from - } else { - Err(native_model::Error::DowngradeNotSupported { - from: version, - to: Self::native_model_version(), - }) - } - } - }; - - gen -} - -// #[error("Wrong type id expected: {}, actual: {}", expected, actual)] -// WrongTypeId { expected: u32, actual: u32 }, diff --git a/libraries/native_model/native_model_macro/src/method/mod.rs b/libraries/native_model/native_model_macro/src/method/mod.rs index 1eb669ea..fedf220a 100644 --- a/libraries/native_model/native_model_macro/src/method/mod.rs +++ b/libraries/native_model/native_model_macro/src/method/mod.rs @@ -1,13 +1,11 @@ mod decode_body; mod decode_upgrade_body; mod encode_body; -mod encode_downgrade_body; mod id; mod version; pub(crate) use decode_body::*; pub(crate) use decode_upgrade_body::*; pub(crate) use encode_body::*; -pub(crate) use encode_downgrade_body::*; pub(crate) use id::*; pub(crate) use version::*;