diff --git a/Cargo.lock b/Cargo.lock index 2ee99478..68e7527b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2615,6 +2615,43 @@ dependencies = [ "serde", ] +[[package]] +name = "erltf" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4882da31a311a37fbc2a1cefd6162decd3fce8d2339d275465dd820e849db3e" +dependencies = [ + "bytes", + "flate2", + "log", + "nom 8.0.0", + "serde", + "thiserror 2.0.18", +] + +[[package]] +name = "erltf_serde" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c208fe76b4a4045f30caf1dabc7c1ad4cf297bcb47e1b97bb250ebd44a9e817" +dependencies = [ + "erltf", + "erltf_serde_derive", + "serde", + "thiserror 2.0.18", +] + +[[package]] +name = "erltf_serde_derive" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4d2b684bfcc1ec8f801c0793f529fd60a138cd42e323f4f0cb8ba20f80eab3b" +dependencies = [ + "proc-macro2", + "quote 1.0.46", + "syn 2.0.118", +] + [[package]] name = "errno" version = "0.3.14" @@ -7293,6 +7330,7 @@ dependencies = [ "bson", "deadqueue", "decancer", + "erltf_serde", "futures", "handlebars", "indexmap 2.14.0", diff --git a/Cargo.toml b/Cargo.toml index 7547c893..6c8d23cc 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -98,6 +98,7 @@ serde_json = "1.0.79" rmp-serde = "1.0.0" serde = { version = "1", features = ["derive"] } strum_macros = "0.26.4" +erltf_serde = "0.16.0" # MongoDB bson = { version = "2.1.0" } diff --git a/crates/core/database/Cargo.toml b/crates/core/database/Cargo.toml index 55368338..047c814f 100644 --- a/crates/core/database/Cargo.toml +++ b/crates/core/database/Cargo.toml @@ -62,6 +62,7 @@ serde_json = { workspace = true } revolt_optional_struct = { workspace = true } serde = { workspace = true } iso8601-timestamp = { workspace = true, features = ["serde", "bson"] } +erltf_serde = { workspace = true, features = ["elixir-interop"] } # Events redis-kiss = { workspace = true, default-features = false, features = ["tokio-runtime"] } diff --git a/crates/core/database/src/amqp/amqp.rs b/crates/core/database/src/amqp/amqp.rs index c29c4975..3ab05f26 100644 --- a/crates/core/database/src/amqp/amqp.rs +++ b/crates/core/database/src/amqp/amqp.rs @@ -406,7 +406,7 @@ impl AMQP { config.rabbit.default_exchange.clone().into(), config.rabbit.queues.events.into(), BasicPublishOptions::default(), - &serde_json::to_vec(event).unwrap(), + &erltf_serde::to_bytes(event).unwrap(), BasicProperties::default().with_headers(headers), ) .await?; @@ -438,7 +438,7 @@ impl AMQP { config.rabbit.default_exchange.clone().into(), config.rabbit.queues.events.into(), BasicPublishOptions::default(), - &serde_json::to_vec(event).unwrap(), + &erltf_serde::to_bytes(event).unwrap(), BasicProperties::default().with_headers(headers), ) .await?;