lib

Core libraries for Radroots
git clone https://radroots.dev/git/lib.git
Log | Files | Refs | README

commit b9b7119eb25208a8d41e2cbe24a3e1f4c7aabc12
parent fa9e16bf6c575455156e409c1490bfd6f9af4fad
Author: triesap <tyson@radroots.org>
Date:   Sat, 27 Jun 2026 10:03:37 +0000

events: remove dto descriptor internals

Drop dto_bindgen_core from radroots_events and keep DTO registry assertions on the public dto_bindgen export API.

Diffstat:
MCargo.lock | 11+++++------
MCargo.toml | 4++--
Mcrates/events/Cargo.toml | 3+--
Mcrates/events/src/dto.rs | 73+++++++++++++++++--------------------------------------------------------
4 files changed, 25 insertions(+), 66 deletions(-)

diff --git a/Cargo.lock b/Cargo.lock @@ -1502,7 +1502,7 @@ checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" [[package]] name = "dto_bindgen" version = "0.1.0" -source = "git+https://github.com/triesap/dto_bindgen?rev=b338642d7921e9989c96b63777a7e66b18ee22c5#b338642d7921e9989c96b63777a7e66b18ee22c5" +source = "git+https://github.com/triesap/dto_bindgen?rev=d722db31f56e4c62c423adcf19eaf9029780a017#d722db31f56e4c62c423adcf19eaf9029780a017" dependencies = [ "dto_bindgen_backend_python", "dto_bindgen_backend_ts", @@ -1514,7 +1514,7 @@ dependencies = [ [[package]] name = "dto_bindgen_backend_python" version = "0.1.0" -source = "git+https://github.com/triesap/dto_bindgen?rev=b338642d7921e9989c96b63777a7e66b18ee22c5#b338642d7921e9989c96b63777a7e66b18ee22c5" +source = "git+https://github.com/triesap/dto_bindgen?rev=d722db31f56e4c62c423adcf19eaf9029780a017#d722db31f56e4c62c423adcf19eaf9029780a017" dependencies = [ "dto_bindgen_core", ] @@ -1522,7 +1522,7 @@ dependencies = [ [[package]] name = "dto_bindgen_backend_ts" version = "0.1.0" -source = "git+https://github.com/triesap/dto_bindgen?rev=b338642d7921e9989c96b63777a7e66b18ee22c5#b338642d7921e9989c96b63777a7e66b18ee22c5" +source = "git+https://github.com/triesap/dto_bindgen?rev=d722db31f56e4c62c423adcf19eaf9029780a017#d722db31f56e4c62c423adcf19eaf9029780a017" dependencies = [ "dto_bindgen_core", ] @@ -1530,7 +1530,7 @@ dependencies = [ [[package]] name = "dto_bindgen_core" version = "0.1.0" -source = "git+https://github.com/triesap/dto_bindgen?rev=b338642d7921e9989c96b63777a7e66b18ee22c5#b338642d7921e9989c96b63777a7e66b18ee22c5" +source = "git+https://github.com/triesap/dto_bindgen?rev=d722db31f56e4c62c423adcf19eaf9029780a017#d722db31f56e4c62c423adcf19eaf9029780a017" dependencies = [ "proc-macro2", "quote", @@ -1544,7 +1544,7 @@ dependencies = [ [[package]] name = "dto_bindgen_macros" version = "0.1.0" -source = "git+https://github.com/triesap/dto_bindgen?rev=b338642d7921e9989c96b63777a7e66b18ee22c5#b338642d7921e9989c96b63777a7e66b18ee22c5" +source = "git+https://github.com/triesap/dto_bindgen?rev=d722db31f56e4c62c423adcf19eaf9029780a017#d722db31f56e4c62c423adcf19eaf9029780a017" dependencies = [ "proc-macro2", "quote", @@ -4300,7 +4300,6 @@ name = "radroots_events" version = "0.1.0-alpha.2" dependencies = [ "dto_bindgen", - "dto_bindgen_core", "hex", "radroots_core", "serde", diff --git a/Cargo.toml b/Cargo.toml @@ -58,8 +58,8 @@ homepage = "https://radroots.org" readme = "README" [workspace.dependencies] -dto_bindgen = { git = "https://github.com/triesap/dto_bindgen", rev = "b338642d7921e9989c96b63777a7e66b18ee22c5", package = "dto_bindgen" } -dto_bindgen_core = { git = "https://github.com/triesap/dto_bindgen", rev = "b338642d7921e9989c96b63777a7e66b18ee22c5", package = "dto_bindgen_core" } +dto_bindgen = { git = "https://github.com/triesap/dto_bindgen", rev = "d722db31f56e4c62c423adcf19eaf9029780a017", package = "dto_bindgen" } +dto_bindgen_core = { git = "https://github.com/triesap/dto_bindgen", rev = "d722db31f56e4c62c423adcf19eaf9029780a017", package = "dto_bindgen_core" } radroots_core = { path = "crates/core", version = "0.1.0-alpha.2", default-features = false } radroots_events = { path = "crates/events", version = "0.1.0-alpha.2", default-features = false } radroots_event_store = { path = "crates/event_store", version = "0.1.0-alpha.2", default-features = false } diff --git a/crates/events/Cargo.toml b/crates/events/Cargo.toml @@ -13,13 +13,12 @@ readme = "README" [features] default = ["std", "serde"] -dto-bindgen = ["std", "serde", "dep:dto_bindgen", "dep:dto_bindgen_core", "radroots_core/dto-bindgen"] +dto-bindgen = ["std", "serde", "dep:dto_bindgen", "radroots_core/dto-bindgen"] std = ["radroots_core/std"] serde = ["dep:serde", "radroots_core/serde"] [dependencies] dto_bindgen = { workspace = true, optional = true } -dto_bindgen_core = { workspace = true, optional = true } radroots_core = { workspace = true, default-features = false } hex = { version = "0.4", default-features = false, features = ["alloc"] } serde = { workspace = true, default-features = false, features = [ diff --git a/crates/events/src/dto.rs b/crates/events/src/dto.rs @@ -7,7 +7,7 @@ pub use generated_roots::dto_bindgen_roots as dto_roots; mod tests { use std::collections::BTreeSet; - use dto_bindgen_core::{TypeDef, build_registry}; + use dto_bindgen::export::{Registry, build_registry}; use super::dto_roots; @@ -17,52 +17,27 @@ mod tests { assert!(!registry.has_errors()); assert_eq!(registry.roots.len(), dto_roots().len()); - assert!(registry.types_by_id.values().any( - |def| matches!(def, TypeDef::Struct(def) if def.export_name == "RadrootsNostrEvent") - )); - assert!( - registry - .types_by_id - .values() - .any(|def| matches!(def, TypeDef::Struct(def) if def.export_name == "RadrootsListingImageSize")) - ); + let export_names = registry_export_names(&registry); + + assert!(export_names.contains("RadrootsNostrEvent")); + assert!(export_names.contains("RadrootsListingImageSize")); } #[test] fn option_fields_are_optional_nullable() { let registry = build_registry(dto_roots()); - let product = registry - .types_by_id - .values() - .find_map(|def| match def { - TypeDef::Struct(def) if def.export_name == "RadrootsListingProduct" => Some(def), - _ => None, - }) - .expect("listing product descriptor exists"); - let summary = product - .fields - .iter() - .find(|field| field.rust_name.as_str() == "summary") + let summary = registry + .struct_field_presence("RadrootsListingProduct", "summary") .expect("summary field exists"); - assert!(!summary.presence.required_on_deserialize); - assert!(summary.presence.nullable); + assert!(!summary.required_on_deserialize); + assert!(summary.nullable); - let event_ref = registry - .types_by_id - .values() - .find_map(|def| match def { - TypeDef::Struct(def) if def.export_name == "RadrootsNostrEventRef" => Some(def), - _ => None, - }) - .expect("event ref descriptor exists"); - let d_tag = event_ref - .fields - .iter() - .find(|field| field.rust_name.as_str() == "d_tag") + let d_tag = registry + .struct_field_presence("RadrootsNostrEventRef", "d_tag") .expect("d_tag field exists"); - assert!(!d_tag.presence.required_on_deserialize); - assert!(d_tag.presence.nullable); + assert!(!d_tag.required_on_deserialize); + assert!(d_tag.nullable); } #[test] @@ -114,25 +89,11 @@ mod tests { } } - fn registry_export_names(registry: &dto_bindgen_core::Registry) -> BTreeSet<&str> { - registry - .types_by_id - .values() - .map(|def| match def { - TypeDef::Struct(def) => def.export_name.as_str(), - TypeDef::Enum(def) => def.export_name.as_str(), - }) - .collect() + fn registry_export_names(registry: &Registry) -> BTreeSet<&str> { + registry.type_export_names().collect() } - fn registry_rust_names(registry: &dto_bindgen_core::Registry) -> BTreeSet<&str> { - registry - .types_by_id - .values() - .map(|def| match def { - TypeDef::Struct(def) => def.rust_name.as_str(), - TypeDef::Enum(def) => def.rust_name.as_str(), - }) - .collect() + fn registry_rust_names(registry: &Registry) -> BTreeSet<&str> { + registry.type_rust_names().collect() } }