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:
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(®istry);
+
+ 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()
}
}