aboutsummaryrefslogtreecommitdiffstats
path: root/lib/warden-core/build.rs
diff options
context:
space:
mode:
Diffstat (limited to 'lib/warden-core/build.rs')
-rw-r--r--lib/warden-core/build.rs19
1 files changed, 19 insertions, 0 deletions
diff --git a/lib/warden-core/build.rs b/lib/warden-core/build.rs
index be4f8f2..7ae6b6a 100644
--- a/lib/warden-core/build.rs
+++ b/lib/warden-core/build.rs
@@ -50,6 +50,12 @@ fn build_proto(package: &str, entity: Entity) -> Result<(), Box<dyn std::error::
format!("#[cfg(feature = \"rpc-client-{package}\")] #[cfg_attr(docsrs, doc(cfg(feature = \"rpc-client-{package}\")))]"),
);
+ #[cfg(feature = "serde")]
+ let config = add_serde(config);
+
+ #[cfg(feature = "openapi")]
+ let config = add_openapi(config);
+
config
.file_descriptor_set_path(out_dir.join(format!("{package}_descriptor.bin")))
.server_mod_attribute(
@@ -69,3 +75,16 @@ fn build_proto(package: &str, entity: Entity) -> Result<(), Box<dyn std::error::
Ok(())
}
+
+#[cfg(all(feature = "serde", feature = "iso20022"))]
+fn add_serde(config: tonic_prost_build::Builder) -> tonic_prost_build::Builder {
+ config.type_attribute(
+ ".",
+ "#[derive(serde::Serialize, serde::Deserialize)] #[serde(rename_all = \"snake_case\")]",
+ )
+}
+
+#[cfg(all(feature = "openapi", feature = "iso20022"))]
+fn add_openapi(config: tonic_prost_build::Builder) -> tonic_prost_build::Builder {
+ config.type_attribute(".", "#[derive(utoipa::ToSchema)]")
+}