lib

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

commit 8c9f1a73d8c40841d46ce96491afd830482d5e71
parent ab8cc47b6b29989767c1b1ecb46c41f9a94afcc8
Author: triesap <tyson@radroots.org>
Date:   Sun, 14 Jun 2026 18:28:36 -0700

trade: make canonical listing fields private

Diffstat:
Mcrates/trade/src/listing/draft.rs | 40++++++++++++++++++++++++++++------------
Mcrates/trade/src/listing/mutation.rs | 35++++++++++++++++++++++++++---------
2 files changed, 54 insertions(+), 21 deletions(-)

diff --git a/crates/trade/src/listing/draft.rs b/crates/trade/src/listing/draft.rs @@ -39,10 +39,10 @@ impl RadrootsListingDraftDocumentV1 { #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] #[derive(Clone, Debug)] pub struct RadrootsCanonicalListingDraft { - pub listing: RadrootsListing, - pub seller_pubkey: RadrootsPublicKey, - pub public_listing_addr: RadrootsListingAddress, - pub draft_listing_addr: RadrootsListingAddress, + listing: RadrootsListing, + seller_pubkey: RadrootsPublicKey, + public_listing_addr: RadrootsListingAddress, + draft_listing_addr: RadrootsListingAddress, } impl RadrootsCanonicalListingDraft { @@ -73,6 +73,22 @@ impl RadrootsCanonicalListingDraft { draft_listing_addr, }) } + + pub fn listing(&self) -> &RadrootsListing { + &self.listing + } + + pub fn seller_pubkey(&self) -> &RadrootsPublicKey { + &self.seller_pubkey + } + + pub fn public_listing_addr(&self) -> &RadrootsListingAddress { + &self.public_listing_addr + } + + pub fn draft_listing_addr(&self) -> &RadrootsListingAddress { + &self.draft_listing_addr + } } #[derive(Clone, Debug, Error, PartialEq, Eq)] @@ -257,16 +273,16 @@ mod tests { let canonical = RadrootsCanonicalListingDraft::new(listing, seller_pubkey.clone()).expect("canonical"); - assert_eq!(canonical.seller_pubkey, seller_pubkey); + assert_eq!(canonical.seller_pubkey(), &seller_pubkey); assert_eq!( - canonical.public_listing_addr.as_str(), + canonical.public_listing_addr().as_str(), format!("{KIND_LISTING}:{SELLER}:AAAAAAAAAAAAAAAAAAAAAg") ); assert_eq!( - canonical.draft_listing_addr.as_str(), + canonical.draft_listing_addr().as_str(), format!("{KIND_LISTING_DRAFT}:{SELLER}:AAAAAAAAAAAAAAAAAAAAAg") ); - assert_eq!(canonical.listing.d_tag.as_str(), "AAAAAAAAAAAAAAAAAAAAAg"); + assert_eq!(canonical.listing().d_tag.as_str(), "AAAAAAAAAAAAAAAAAAAAAg"); } #[test] @@ -294,16 +310,16 @@ mod tests { let canonical = canonicalize_listing_draft(&seller_actor(), document).expect("canonical draft"); - assert_eq!(canonical.seller_pubkey.as_str(), SELLER); + assert_eq!(canonical.seller_pubkey().as_str(), SELLER); assert_eq!( - canonical.public_listing_addr.as_str(), + canonical.public_listing_addr().as_str(), format!("{KIND_LISTING}:{SELLER}:AAAAAAAAAAAAAAAAAAAAAg") ); assert_eq!( - canonical.draft_listing_addr.as_str(), + canonical.draft_listing_addr().as_str(), format!("{KIND_LISTING_DRAFT}:{SELLER}:AAAAAAAAAAAAAAAAAAAAAg") ); - assert_eq!(canonical.listing.farm.pubkey, SELLER); + assert_eq!(canonical.listing().farm.pubkey, SELLER); } #[test] diff --git a/crates/trade/src/listing/mutation.rs b/crates/trade/src/listing/mutation.rs @@ -108,8 +108,8 @@ impl RadrootsListingMutation { pub fn listing_addr(&self) -> Result<&RadrootsListingAddress, RadrootsListingMutationError> { match self { - Self::Publish { draft } | Self::Update { draft } => Ok(&draft.public_listing_addr), - Self::SaveDraft { draft } => Ok(&draft.draft_listing_addr), + Self::Publish { draft } | Self::Update { draft } => Ok(draft.public_listing_addr()), + Self::SaveDraft { draft } => Ok(draft.draft_listing_addr()), Self::Archive { .. } => Err(RadrootsListingMutationError::UnsupportedMutation), } } @@ -131,10 +131,15 @@ pub fn build_listing_mutation_draft( return Err(RadrootsListingMutationError::UnsupportedMutation); } }; - let parts = to_wire_parts_with_kind(&draft.listing, kind) + let parts = to_wire_parts_with_kind(draft.listing(), kind) .map_err(|error| RadrootsListingMutationError::EncodeListing(error.to_string()))?; - to_frozen_draft(parts, contract_id, draft.seller_pubkey.as_str(), created_at) - .map_err(RadrootsListingMutationError::FrozenDraft) + to_frozen_draft( + parts, + contract_id, + draft.seller_pubkey().as_str(), + created_at, + ) + .map_err(RadrootsListingMutationError::FrozenDraft) } #[cfg(test)] @@ -273,22 +278,34 @@ mod tests { let save_draft = RadrootsListingMutation::save_draft(canonical_draft()); assert_eq!( - publish.canonical_draft().expect("draft").seller_pubkey, + publish + .canonical_draft() + .expect("draft") + .seller_pubkey() + .as_str(), SELLER ); assert_eq!( - update.canonical_draft().expect("draft").seller_pubkey, + update + .canonical_draft() + .expect("draft") + .seller_pubkey() + .as_str(), SELLER ); assert_eq!( - save_draft.canonical_draft().expect("draft").seller_pubkey, + save_draft + .canonical_draft() + .expect("draft") + .seller_pubkey() + .as_str(), SELLER ); assert_eq!( publish .canonical_draft() .expect("draft") - .listing + .listing() .d_tag .as_str(), "AAAAAAAAAAAAAAAAAAAAAg"